<?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>51583</bug_id>
          
          <creation_ts>2010-12-23 22:40:04 -0800</creation_ts>
          <short_desc>Move JavaScriptGlue into Sources</short_desc>
          <delta_ts>2010-12-25 01:02:14 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>51606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wsiegrist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>326480</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 22:40:04 -0800</bug_when>
    <thetext>Create Sources directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326481</commentid>
    <comment_count>1</comment_count>
      <attachid>77403</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 22:41:06 -0800</bug_when>
    <thetext>Created attachment 77403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326484</commentid>
    <comment_count>2</comment_count>
      <attachid>77405</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 23:32:46 -0800</bug_when>
    <thetext>Created attachment 77405
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326490</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-24 00:27:54 -0800</bug_when>
    <thetext>Attachment 77405 did not build on mac:
Build output: http://queues.webkit.org/results/7317120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326492</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-24 00:30:05 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 77405 [details] did not build on mac:
&gt; Build output: http://queues.webkit.org/results/7317120

It build locally more me.  I suspect the bot is confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326496</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 00:38:01 -0800</bug_when>
    <thetext>Or that the patch doesn&apos;t handle renames?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326497</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 00:40:08 -0800</bug_when>
    <thetext>Says it died on this chdir:
# Build, and abort if the build fails.
for my $dir (@projects) {
    chdir $dir or die;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326500</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-24 00:44:14 -0800</bug_when>
    <thetext>&gt; Says it died on this chdir:

Right.  I bet the directory it&apos;s chdiring into (Sources/JavaScriptGlue) doesn&apos;t exist on the bot.  It does exit locally and seems to build fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326502</commentid>
    <comment_count>8</comment_count>
      <attachid>77405</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 00:54:49 -0800</bug_when>
    <thetext>Comment on attachment 77405
patch

rs-me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326695</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-24 11:29:04 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74618
http://trac.webkit.org/changeset/74644</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326696</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-24 11:32:31 -0800</bug_when>
    <thetext>Thanks Darin.  I tried to edit those Makefiles but didn&apos;t do it correctly.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77403</attachid>
            <date>2010-12-23 22:41:06 -0800</date>
            <delta_ts>2010-12-23 23:14:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51583-20101223224105.patch</filename>
            <type>text/plain</type>
            <size>539</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDc0NjE2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMTIt
MjMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGUgU291cmNlcyBkaXJlY3RvcnkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNTgzCisKKyAg
ICAgICAgVGhpcyBkaXJlY3Rvcnkgd2lsbCBob3VzZSBhbGwgdGhlIHNvdXJjZSBjb2RlLgorCisg
ICAgICAgICogU291cmNlczogQWRkZWQuCisKIDIwMTAtMTItMjMgIEx1Y2FzIERlIE1hcmNoaSAg
PGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77405</attachid>
            <date>2010-12-23 23:32:46 -0800</date>
            <delta_ts>2010-12-24 00:54:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>mv-jsg.patch</filename>
            <type>text/plain</type>
            <size>760130</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDc0NjE2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQ1IEBACisyMDEwLTEy
LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBKYXZhU2NyaXB0R2x1ZSBpbnRvIFNv
dXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUx
NTgzCisKKyAgICAgICAgQWN0dWFsbHkgcGVyZm9ybSB0aGUgbW92ZS4KKworICAgICAgICAqIEph
dmFTY3JpcHRHbHVlOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0NvbmZpZ3Vy
YXRpb25zOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWc6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvQ29uZmln
dXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFT
Y3JpcHRHbHVlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRHbHVlLnhjY29uZmlnOiBSZW1vdmVk
LgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0NvbmZpZ3VyYXRpb25zL1ZlcnNpb24ueGNjb25m
aWc6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRW5nbGlzaC5scHJvajogUmVt
b3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5z
dHJpbmdzOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFk
ZXJzOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJz
L21hc206IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRl
cnMvbWFzbS9YODZBc3NlbWJsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1
ZS9Gb3J3YXJkaW5nSGVhZGVycy9wcm9maWxlcjogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy9wcm9maWxlci9Qcm9maWxlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWU6IFJlbW92
ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9D
YWxsRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGY6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL0FTQ0lJQ1R5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQWx3YXlzSW5saW5lLmg6IFJlbW92ZWQuCisgICAg
ICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0Fzc2VydGlvbnMuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
QXRvbWljcy5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9CaXRtYXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQ3Jvc3NUaHJlYWRS
ZWZDb3VudGVkLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL0N1cnJlbnRUaW1lLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlw
dEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RhdGVJbnN0YW5jZUNhY2hlLmg6IFJlbW92ZWQu
CisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RhdGVNYXRo
Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0Zhc3RBbGxvY0Jhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvRmFzdE1hbGxvYy5oOiBSZW1vdmVkLgorICAgICAgICAqIEph
dmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9GaXhlZEFycmF5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0ZvcndhcmQu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvSGFzaENvdW50ZWRTZXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAq
IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoTWFwLmg6IFJlbW92ZWQu
CisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hTZXQu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvSGFzaFRyYWl0cy5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9MaXN0SGFzaFNldC5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFT
Y3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9MaXN0UmVmUHRyLmg6IFJlbW92ZWQuCisg
ICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0xvY2tlci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9N
YWluVGhyZWFkLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL01hdGhFeHRyYXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uY29weWFibGUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTm90Rm91bmQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT1NB
bGxvY2F0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvT3duQXJyYXlQdHIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT3duQXJyYXlQdHJDb21tb24uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT3duRmFzdE1h
bGxvY1B0ci5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9Pd25QdHIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvT3duUHRyQ29tbW9uLmg6IFJlbW92ZWQuCisgICAgICAgICog
SmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BhZ2VBbGxvY2F0aW9uLmg6IFJl
bW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Bh
Z2VBbGxvY2F0aW9uQWxpZ25lZC5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYWdlQmxvY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBK
YXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGFnZVJlc2VydmF0aW9uLmg6IFJl
bW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Bh
c3NPd25BcnJheVB0ci5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9QYXNzT3duUHRyLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNj
cmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Bhc3NSZWZQdHIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGxhdGZvcm0uaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
UG9zc2libHlOdWxsLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL1B0ckFuZEZsYWdzLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNj
cmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JhbmRvbU51bWJlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SZWZDb3VudGVk
Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL1JlZlB0ci5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9TdGFja0JvdW5kcy5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3Jp
cHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TdGRMaWJFeHRyYXMuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaGVy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL1RocmVhZFNhZmVTaGFyZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1
ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkU3BlY2lmaWMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkaW5nLmg6IFJl
bW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvVW51c2VkUGFyYW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBK
YXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVk1UYWdzLmg6IFJlbW92ZWQuCisg
ICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1ZhbHVlQ2hlY2su
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvVmVjdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL1ZlY3RvclRyYWl0cy5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3Jp
cHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmg6IFJlbW92ZWQuCisg
ICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQ6IFJlbW92
ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQv
Q1N0cmluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0hhc2guaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9TdHJpbmdJbXBsLmg6IFJlbW92ZWQu
CisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvU3Ry
aW5nSW1wbEJhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvdGV4dC9UZXh0UG9zaXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBK
YXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9XVEZTdHJpbmcuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdW5p
Y29kZTogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVy
cy93dGYvdW5pY29kZS9Vbmljb2RlLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEds
dWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3VuaWNvZGUvaWN1OiBSZW1vdmVkLgorICAgICAgICAq
IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi91bmljb2RlL2ljdS9Vbmljb2Rl
SWN1Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvSW5mby5wbGlzdDogUmVt
b3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9KU0Jhc2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIEphdmFTY3JpcHRHbHVlL0pTQmFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFT
Y3JpcHRHbHVlL0pTT2JqZWN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1
ZS9KU09iamVjdC5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0pTUnVuLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9KU1J1bi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0pTVXRpbHMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IEphdmFTY3JpcHRHbHVlL0pTVXRpbHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0
R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEds
dWUvSlNWYWx1ZVdyYXBwZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9K
YXZhU2NyaXB0R2x1ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvSmF2
YVNjcmlwdEdsdWUuZXhwOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0phdmFT
Y3JpcHRHbHVlLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvSmF2YVNjcmlw
dEdsdWUueGNvZGVwcm9qOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL0phdmFT
Y3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZWQuCisgICAgICAgICog
SmF2YVNjcmlwdEdsdWUvTElDRU5TRTogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1
ZS9NYWtlZmlsZTogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0
SW1wLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1w
Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvY29uZmlnLmg6IFJlbW92ZWQu
CisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvaWN1OiBSZW1vdmVkLgorICAgICAgICAqIEphdmFT
Y3JpcHRHbHVlL2ljdS9MSUNFTlNFOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVl
L2ljdS9SRUFETUU6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNv
ZGU6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvcGxhdGZv
cm0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS9wdXRp
bC5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VjaGFy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWNudi5o
OiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VjbnZfZXJy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWNvbmZp
Zy5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VlbnVt
Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWl0ZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91bWFjaGlu
ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VyZW5h
bWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91c3Ry
aW5nLmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXRm
Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXRmMTYu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91dGY4Lmg6
IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXRmX29sZC5o
OiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V0eXBlcy5o
OiBSZW1vdmVkLgorICAgICAgICAqIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V2ZXJzaW9u
Lmg6IFJlbW92ZWQuCisgICAgICAgICogSmF2YVNjcmlwdEdsdWUvdGVzdGpzZ2x1ZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTWFrZWZpbGU6CisgICAgICAgICogU291cmNlczogQWRkZWQuCisg
ICAgICAgICogU291cmNlcy9KYXZhU2NyaXB0R2x1ZTogQ29waWVkIGZyb20gSmF2YVNjcmlwdEds
dWUuCisgICAgICAgICogU291cmNlcy9NYWtlZmlsZTogQWRkZWQuCisKIDIwMTAtMTItMjMgIEx1
Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogTWFrZWZpbGUK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTWFrZWZpbGUJKHJldmlzaW9uIDc0NjE2KQorKysgTWFrZWZpbGUJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1NT0RVTEVTID0gSmF2YVNjcmlwdENvcmUgSmF2
YVNjcmlwdEdsdWUgQU5HTEUgV2ViQ29yZSBXZWJLaXQgV2ViS2l0MiBUb29scyAKK01PRFVMRVMg
PSBKYXZhU2NyaXB0Q29yZSBBTkdMRSBXZWJDb3JlIFdlYktpdCBXZWJLaXQyIFRvb2xzIAogCiBh
bGw6CiAJQGZvciBkaXIgaW4gJChNT0RVTEVTKTsgZG8gJHtNQUtFfSAkQCAtQyAkJGRpcjsgZXhp
dF9zdGF0dXM9JCQ/OyBcCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFT
Y3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzMTIzICswLDAgQEAKLTIw
MTAtMTItMjIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KLQotICAgICAgICBSdWJi
ZXItc3RhbXBlZCBieSBNYXJrIFJvd2UuCi0KLSAgICAgICAgQ2hhbmdlZCBXZWJLaXRUb29scyB0
byBUb29scyBpbiBzY3JpcHQgYnVpbGQgcGhhc2VzLgotCi0gICAgICAgICogSmF2YVNjcmlwdEds
dWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLQotMjAxMC0xMi0yMSAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJh
Y2xvdWdoICYgT2xpdmVyIEh1bnQuCi0KLSAgICAgICAgQWRkZWQgUGFnZUFsbG9jYXRpb25BbGln
bmVkLCBhIGNyb3NzLXBsYXRmb3JtIGFic3RyYWN0aW9uIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMg
d2l0aCBhcmJpdHJhcnkgYWxpZ25tZW50IHJlcXVpcmVtZW50cwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEzNTkKLQotICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaDogQWRkZWQuCi0KLTIwMTAtMTIt
MjEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsIGFuZCBEYXJpbiBBZGxlci4KLQotICAgICAgICBEZWFsbG9jYXRlIEdyZWdv
cmlhbkRhdGVUaW1lLnRpbWVab25lIChpZiBhbGxvY2F0ZWQpIHdoZW4gY29weWluZyBzbyB0aGF0
IHdlIGRvbid0IGxlYWsgbWVtb3J5LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTEzNjcKLQotICAgICAgICBBZGQgZm9yd2FyZGluZyBoZWFkZXIgZm9y
IFBhc3NPd25BcnJheVB0ci5oLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Bh
c3NPd25BcnJheVB0ci5oOiBBZGRlZC4KLQotMjAxMC0xMi0xOCAgR2F2aW4gQmFycmFjbG91Z2gg
IDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1
bnQuCi0KLSAgICAgICAgQnVnIDI2Mjc2IC0gTmVlZCBhIG1lY2hhbmlzbSB0byBkZXRlcm1pbmUg
c3RhY2sgZXh0ZW50Ci0KLSAgICAgICAgQWRkIGZvcndhcmRpbmcgaGVhZGVyIGZvciBTdGFja0Jv
dW5kcy5oLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0YWNrQm91bmRzLmg6
IEFkZGVkLgotCi0yMDEwLTEyLTIwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICBGYWN0b3JlZCBj
b21tb24gcGFnZSBzZXQgbWFuYWdlbWVudCBpbnRvIGEgbmV3IFBhZ2VCbG9jayBiYXNlIGNsYXNz
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTI4NQot
Ci0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BhZ2VCbG9jay5oOiBBZGRlZC4KLQot
MjAxMC0xMi0wMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAg
IEJ1aWxkIGZpeDogQWRkZWQgYSBmb3J3YXJkaW5nIGhlYWRlci4KLQotICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3d0Zi9PU0FsbG9jYXRvci5oOiBBZGRlZC4KLQotMjAxMC0xMC0yNSAgT2xp
dmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEdhdmlu
IEJhcnJhY2xvdWdoLgotCi0gICAgICAgIFJlbW92ZSBleGVjIGFuZCBnbG9iYWxEYXRhIGFyZ3Vt
ZW50cyBmcm9tIGpzTnVtYmVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00ODI3MAotCi0gICAgICAgIERvbid0IHBhc3MgZXhlYyB0byBqc051bWJlcgot
Ci0gICAgICAgICogSlNVdGlscy5jcHA6Ci0gICAgICAgIChKU09iamVjdEtKU1ZhbHVlKToKLSAg
ICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OnRvUHJp
bWl0aXZlKToKLQotMjAxMC0xMC0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcwNDUxLgotICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83MDQ1MQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyNDkKLQotICAgICAgICBCcm9r
ZSBzZXQtdW5sb2FkZWQtZnJhbWUtbG9jYXRpb24uaHRtbCB1bmRlciBRdCAoUmVxdWVzdGVkIGJ5
Ci0gICAgICAgIGNhc2VxIG9uICN3ZWJraXQpLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL3RleHQvVGV4dFBvc2l0aW9uLmg6IFJlbW92ZWQuCi0KLTIwMTAtMTAtMTYgIFBhdHJp
Y2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KLQotICAgICAgICBSZW5hbWUgU3RyaW5nSGFzaGVyRnVuY3Rpb25zLmggdG8g
U3RyaW5nSGFzaGVyLmgKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ3MjAwCi0KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFz
aEZ1bmN0aW9ucy5oOiBSZW1vdmVkLgotICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9T
dHJpbmdIYXNoZXIuaDogQ29waWVkIGZyb20gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaC4KLQotMjAxMC0wOS0wOSAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJy
YWNsb3VnaC4KLQotICAgICAgICBBZGRlZCBMaXN0SGFzaFNldC5oIGFzIGFuIGV4cG9ydGVkIGhl
YWRlciBpbiBzdXBwb3J0IG9mIFJlZ0V4cCB0cmFjaW5nLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU0MDEKLQotICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9MaXN0SGFzaFNldC5oOiBBZGRlZC4KLQotMjAxMC0wOS0wNyAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgotCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MzgxNzQ5PiAtV2Nhc3QtYWxpZ24g
d2FybmluZyBlbWl0dGVkIHdoZW4gYnVpbGRpbmcgd2l0aCBjbGFuZwotCi0gICAgICAgIFJlbW92
ZSB0aGUgLVdjYXN0LWFsaWduLXdhcm5pbmcgc2luY2UgaXQgaXNuJ3QgcmVhbGx5IHVzZWZ1bCwg
YW5kIGNsYW5nIGlzIG1vcmUgYWdncmVzc2l2ZSBhYm91dCB3YXJuaW5nIHRoYW4gZ2NjLgotCi0g
ICAgICAgICogQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzoKLQotMjAxMC0wOC0yNiAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgotCi0gICAgICAgIEFkZCBQYXNzT3duQXJyYXlQdHIKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NjI3Ci0KLSAgICAgICAgQWRkIG5ldyBmb3J3
YXJkaW5nIGhlYWRlci4KLQotICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Pd25BcnJh
eVB0ckNvbW1vbi5oOiBBZGRlZC4KLQotMjAxMC0wOC0yMyAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQu
Ci0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NDg3
Ci0KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9XVEZTdHJpbmcuaDogQWRk
ZWQuCi0KLTIwMTAtMDgtMjQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KLQotICAgICAgICBEb24ndCBzZWVkIHRoZSBK
UyByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBmcm9tIHRpbWUoKQotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4NjgKLSAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzgxNzEwMjU+Ci0KLSAgICAgICAgQWRkIGZvcndhcmRpbmcgaGVhZGVyIGZvciBSYW5kb21O
dW1iZXIgaW4gSmF2YVNjcmlwdEdsdWUKLQotICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9SYW5kb21OdW1iZXIuaDogQWRkZWQuCi0KLTIwMTAtMDgtMTEgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAgIFJ1YmJlciBzdGFtcHMgYnkgRGFy
aW4gQWRsZXIgJiBTYW0gV2VpbmlnLgotCi0gICAgICAgIEJ1ZyA0Mzg2NyAtIFNvbWUgVVN0cmlu
ZyBjbGVhbnVwCi0KLSAgICAgICAgQ2hhbmdlIEpTQzo6VVN0cmluZyBkYXRhKCksIHNpemUoKSwg
YW5kIGZyb20oKSwgdG8gY2hhcmFjdGVycygpLCBsZW5ndGgoKSwgYW5kIG51bWJlcigpIHRvIG1h
dGNoIFdURjo6U3RyaW5nLgotICAgICAgICBNb3ZlIHN0cmluZyBjb25jYXRlbmF0aW9uIG1ldGhv
ZHMgdG8gYSBuZXcgaGVhZGVyIHRvIHNpbXBsaWZ5IGRvd24gVVN0cmluZy5oLiAgUmVtb3ZlIGlz
OEJpdCgpLgotCi0gICAgICAgICogSlNVdGlscy5jcHA6Ci0gICAgICAgIChVU3RyaW5nVG9DRlN0
cmluZyk6Ci0gICAgICAgIChLSlNWYWx1ZVRvQ0ZUeXBlSW50ZXJuYWwpOgotICAgICAgICAqIEph
dmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0KLTIwMTAtMDgtMDQgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgQnVnIDQzNTE1IC0gRml4IHNtYWxsIGRlc2ln
biBpc3N1ZXMgd2l0aCBQYWdlQWxsb2NhdGlvbiwgc3BsaXQgb3V0IFBhZ2VSZXNlcnZhdGlvbi4K
LSAgICAgICAgKGFkZCBmb3J3YXJkaW5nIGhlYWRlcnMpCi0KLSAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy93dGYvQml0bWFwLmg6IEFkZGVkLgotICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9QYWdlUmVzZXJ2YXRpb24uaDogQWRkZWQuCi0KLTIwMTAtMDgtMDQgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI2NDY1NS4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvNjQ2NTUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzNDk2Ci0KLSAgICAgICAgSmF2YVNjcmlwdENvcmUgcmVmZXJlbmNlcyBwYXRjaCBzZWVtcyB0
byBoYXZlIGNhdXNlZAotICAgICAgICByZWdyZXNzaW9ucyBpbiBRVCBhbmQgR1RLIGJ1aWxkcyAo
UmVxdWVzdGVkIGJ5IG5sYXdyZW5jZSBvbgotICAgICAgICAjd2Via2l0KS4KLQotICAgICAgICAq
IEpTVmFsdWVXcmFwcGVyLmNwcDoKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdE1h
cmspOgotCi0yMDEwLTA4LTA0ICBOYXRoYW4gTGF3cmVuY2UgIDxubGF3cmVuY2VAYXBwbGUuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIFJlbW92ZWQg
dW5uZWVkZWQgbWFya2luZy4gIFdlIG5lZWQgdG8gcmVtb3ZlIHRoaXMgbWFya2luZyBpbiBvcmRl
ciB0byBoYXZlCi0gICAgICAgIE1hcmtTdGFjazo6YXBwZW5kIHRha2UgcmVmZXJlbmNlcyBmb3Ig
dXBkYXRpbmcgbW92YWJsZSBvYmplY3RzLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MTE3NwotCi0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3Bw
OgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0TWFyayk6Ci0KLTIwMTAtMDgtMDMg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAgIEJ1
aWxkIGZpeCBmb2xsb3dpbmcgcjY0NjI0LgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0JpdE1hcC5oOiBBZGRlZC4KLQotMjAxMC0wNy0yNyAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQu
Ci0KLSAgICAgICAgQnVnIDQyNjIxIC0gQWRkIGEgYnVtcCBhbGxvY2F0b3IgZm9yIHRoZSBZQVJS
IGludGVycHJldGVyCi0KLSAgICAgICAgVGhlIHJlZ2V4IGVuZ2luZSByZXF1aXJlcyBsaWZvIGFs
bG9jYXRpb24sIGhvd2V2ZXIgY3VycmVudGx5IHVzZXMgdGhlIGdlbmVyYWwgcHVycG9zZQotICAg
ICAgICBtYWxsb2MvZnJlZSBtZW1vcnkgYWxsb2NhdGlvbi4gIEEgc2ltcGxlIGJ1bXAgcG9pbnRl
ciBhbGxvY2F0b3Igc2hvdWxkIHByb3ZpZGUgYSBsb3dlcgotICAgICAgICBvdmVyaGVhZCBhbGxv
Y2F0aW9uIHNvbHV0aW9uLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0J1bXBQ
b2ludGVyQWxsb2NhdG9yLmg6IEFkZGVkLgotCi0yMDEwLTA3LTI2ICBHYXZpbiBCYXJyYWNsb3Vn
aCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIg
SHVudC4KLQotICAgICAgICBCdWcgNDMwMDkgLSBBYnN0cmFjdCBvdXQgcGFnZSBhbGxvY2F0aW9u
IGZyb20gZXhlY3V0YWJsZSBhbGxvY2F0b3JzCi0KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVy
cy93dGYvUGFnZUFsbG9jYXRpb24uaDogQWRkZWQuCi0KLTIwMTAtMDctMDEgIE9saXZlciBIdW50
ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hv
d2lhay4KLQotICAgICAgICBBZGQgYSBGaXhlZEFycmF5IHRlbXBsYXRlIHRvIGVuY2Fwc3VsYXRl
IGZpeGVkIGxlbmd0aCBhcnJheXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxNTA2Ci0KLSAgICAgICAgQWRkIGZvcndhcmRpbmcgaGVhZGVyLgotCi0g
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0ZpeGVkQXJyYXkuaDogQWRkZWQuCi0KLTIw
MTAtMDYtMDIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgotCi0gICAgICAgIEJ1ZyA0MDA5NCAtIFRo
ZSByZXR1cm4gdHlwZSBvZiBOYXRpdmVGdW5jdGlvbiBzaG91bGQgYmUgRW5jb2RlZEpTVmFsdWUK
LSAgICAgICAgT24gV2luZG93cyAmIExpbnV4LCB1c2luZyBKU1ZBTFVFMzJfNjQsIEVuY29kZWRK
U1ZhbHVlIGlzIHJldHVybmVkIGluIHJlZ2lzdGVycywgYnV0IEpTVmFsdWUgaXMgbm90LgotCi0g
ICAgICAgICogSlNPYmplY3QuY3BwOgotICAgICAgICAobmF0aXZlQ2FsbEZ1bmN0aW9uKToKLQot
MjAxMC0wNS0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcsIEdhdmluIEJhcnJhY2xvdWdoLCBPbGl2ZXIgSHVudC4K
LQotICAgICAgICBTaW1wbGlmaWVkIHRoZSBob3N0IGNhbGxpbmcgY29udmVudGlvbi4KLQotICAg
ICAgICBQQVJUIE9ORTogRnVuY3Rpb25hbCBjb2RlIGNoYW5nZXMuCi0gICAgICAgIAotICAgICAg
ICBbIE5vbmUgaW4gSmF2YVNjcmlwdEdsdWUgXQotICAgICAgICAKLSAgICAgICAgUEFSVCBUV086
IEdsb2JhbCBzZWFyY2ggYW5kIHJlcGxhY2UuCi0gICAgICAgIAotICAgICAgICBJbiB0aGUgYXJl
YXMgYmVsb3csIEkgdXNlZCBnbG9iYWwgc2VhcmNoLWFuZC1yZXBsYWNlIHRvIGNoYW5nZQotICAg
ICAgICAgICAgKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSwgY29uc3QgQXJnTGlzdCYp
ID0+IChFeGVjU3RhdGUqKQotICAgICAgICAgICAgYXJncy5zaXplKCkgPT4gZXhlYy0+YXJndW1l
bnRDb3VudCgpCi0gICAgICAgICAgICBhcmdzLmF0KGkpID0+IGV4ZWMtPmFyZ3VtZW50KGkpCi0K
LSAgICAgICAgKiBKU09iamVjdC5jcHA6Ci0gICAgICAgIChuYXRpdmVDYWxsRnVuY3Rpb24pOgot
ICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Y2Fs
bEFzRnVuY3Rpb24pOgotICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDoKLQotMjAxMC0wNC0yMyAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IExldmluLgotCi0gICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4MDYwCi0gICAgICAgIFNwbGl0IHVwIFRocmVhZGluZy5oCi0KLSAgICAgICAg
QWRkIG5lY2Vzc2FyeSBmb3J3YXJkaW5nIGhlYWRlcnMuCi0KLSAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy93dGYvQXRvbWljcy5oOiBBZGRlZC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVy
cy93dGYvVGhyZWFkU2FmZVNoYXJlZC5oOiBBZGRlZC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOiBBZGRlZC4KLQotMjAxMC0wNC0yMiAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBD
YXJsc3Nvbi4KLQotICAgICAgICBGaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zODAyMgotICAgICAgICBNb3ZlIGlzTWFpblRocmVhZCBwcmVkaWNhdGUgZnVu
Y3Rpb24gdG8gTWFpblRocmVhZC5oCi0KLSAgICAgICAgQWRkZWQgZm9yd2FyZGluZyBoZWFkZXIg
Zm9yIE1haW5UaHJlYWQuaAotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL01haW5U
aHJlYWQuaDogQWRkZWQuCi0KLTIwMTAtMDQtMjIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IFNhbSBXZWluaWcK
LQotICAgICAgICBEbyBub3QgZ2V0IHRoZSBnbG9iYWxkYXRhIGZvciB0aGUgQVBJU2hpbSB2aWEg
dGhlCi0gICAgICAgIGdsb2JhbCBvYmplY3Q7IGdsb2JhbCBvYmplY3QgY29uc3RydWN0aW9uIGNy
ZWF0ZXMgaWRlbnRpZmllcnMKLSAgICAgICAgd2hpY2ggcmVzdWx0cyBpbiB0aGUgQVNTRVJUcyBj
aGVja2luZyB0aGUgdGhyZWFkIGRhdGEncwotICAgICAgICBpZGVudGlmaWVyVGFibGUgaGFzIGJl
ZW4gc2V0IGZhaWxpbmcuCi0KLSAgICAgICAgKiBKU1V0aWxzLmNwcDoKLSAgICAgICAgKHVucHJv
dGVjdEdsb2JhbE9iamVjdCk6Ci0gICAgICAgIChnZXRUaHJlYWRHbG9iYWxEYXRhKToKLSAgICAg
ICAgKGdldFRocmVhZEdsb2JhbE9iamVjdCk6Ci0gICAgICAgIChKU0dsdWVBUElFbnRyeTo6SlNH
bHVlQVBJRW50cnkpOgotICAgICAgICAoSlNHbHVlQVBJQ2FsbGJhY2s6On5KU0dsdWVBUElDYWxs
YmFjayk6Ci0KLTIwMTAtMDQtMjEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83ODc5NDg1PiBMZW9wYXJkOiBDcmFzaCBhZnRlciBvcGVuaW5nIFNvZnR3YXJlIFVwZGF0
ZSBkaWFsb2cKLQotICAgICAgICAqIEpTVXRpbHMuY3BwOgotICAgICAgICAodW5wcm90ZWN0R2xv
YmFsT2JqZWN0KTogVXNlIHRoZSB2ZXJzaW9uIG9mIEpTR2x1ZUFQSUVudHJ5IHRoYXQgZG9lc24n
dAotICAgICAgICBjYWxsIHB0aHJlYWRfZ2V0c3BlY2lmaWMsIHNpbmNlIGl0J3Mgbm90IHNhZmUg
dG8gY2FsbCBwdGhyZWFkX2dldHNwZWNpZmljCi0gICAgICAgIGZyb20gYSB0aHJlYWQtc3BlY2lm
aWMgZGF0YSBkZXN0cnVjdG9yLiAoPHJkYXI6Ly9wcm9ibGVtLzc4ODk4NDI+Ci0gICAgICAgIHB0
aHJlYWRfZ2V0c3BlY2lmaWMgcmV0dXJucyAwIHdoZW4gY2FsbGVkIGZyb20gdGhyZWFkLXNwZWNp
ZmljIGRhdGEKLSAgICAgICAgZGVzdHJ1Y3RvciBmdW5jdGlvbikKLQotICAgICAgICAoZ2V0VGhy
ZWFkR2xvYmFsT2JqZWN0KTogTWFrZSBzdXJlIHRvIHNldCB0aGUgY3VycmVudElkZW50aWZpZXJU
YWJsZQotICAgICAgICB3aGVuIGZpcnN0IGNvbnN0cnVjdGluZyBvdXIgSlNHbG9iYWxPYmplY3Qs
IHNpbmNlIEpTR2x1ZUFQSUVudHJ5IGhhcyBub3QKLSAgICAgICAgeWV0IGhhZCBhbiBvcHBvcnR1
bml0eSB0byBkbyBzby4KLQotICAgICAgICAoSlNHbHVlQVBJRW50cnk6OkpTR2x1ZUFQSUVudHJ5
KToKLSAgICAgICAgKiBKU1V0aWxzLmg6IE5ldyB2ZXJzaW9uIG9mIEpTR2x1ZUFQSUVudHJ5IHRo
YXQgZG9lc24ndCBjYWxsCi0gICAgICAgIHB0aHJlYWRfZ2V0c3BlY2lmaWMuCi0KLTIwMTAtMDQt
MjEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoYnVpbGQgZml4KS4KLSAgICAgICAgRXJyayEgdHJlZSBvbiBm
aXJlLCBhZGQgZndkIQotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvU3Ry
aW5nSGFzaC5oOiBBZGRlZC4KLQotMjAxMC0wNC0yMCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQsIERh
cmluIEFkbGVyLgotCi0gICAgICAgIEJ1ZyAzNzkwNiAtIFJlbW92ZSBKU0M6OlVTdHJpbmdJbXBs
OyB1bmlmeSB3aXRoIFN0cmluZ0ltcGwuCi0gICAgICAgIEFkZCBmb3J3YXJkaW5nIGhlYWRlci4K
LQotICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9BU0NJSUNUeXBlLmg6IEFkZGVkLgot
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaDogQWRkZWQu
Ci0KLTIwMTAtMDQtMjAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgotCi0gICAgICAgIEJ1ZyAzNzg5
NSAtIFNoYXJlIGNvbW1vbiBjb2RlIGZyb20gVVN0cmluZ0ltcGxCYXNlIHdpdGggU3RyaW5nSW1w
bAotICAgICAgICBBZGQgZm9yd2FyZGluZyBoZWFkZXIuCi0KLSAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy93dGYvdGV4dC9TdHJpbmdJbXBsQmFzZS5oOiBBZGRlZC4KLQotMjAxMC0wNC0yMCAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUnVi
YmVyIHN0YW1wZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsgKHJlbGFuZGluZyByNTc4MjkpLgotICAg
ICAgICBBZGRlZCBtaXNzaW5nIEpTX0VYUE9SVERBVEEKLQotICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmg6IENvcGllZCBmcm9tIEphdmFTY3JpcHRHbHVlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmguCi0gICAgICAgICogSlNVdGlscy5j
cHA6Ci0gICAgICAgIChKU0dsdWVBUElFbnRyeTo6SlNHbHVlQVBJRW50cnkpOgotICAgICAgICAo
SlNHbHVlQVBJRW50cnk6On5KU0dsdWVBUElFbnRyeSk6Ci0gICAgICAgIChKU0dsdWVBUElDYWxs
YmFjazo6SlNHbHVlQVBJQ2FsbGJhY2spOgotICAgICAgICAoSlNHbHVlQVBJQ2FsbGJhY2s6On5K
U0dsdWVBUElDYWxsYmFjayk6Ci0KLTIwMTAtMDQtMTkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFy
cmFjbG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAocm9sbGlu
ZyBvdXQgcjU3ODI5KS4KLSAgICAgICAgVGhpcyBicm9rZSB3aW5kb3dzLgotCi0gICAgICAgICog
Rm9yd2FyZGluZ0hlYWRlcnMvd3RmL1dURlRocmVhZERhdGEuaDogUmVtb3ZlZC4KLSAgICAgICAg
KiBKU1V0aWxzLmNwcDoKLSAgICAgICAgKEpTR2x1ZUFQSUVudHJ5OjpKU0dsdWVBUElFbnRyeSk6
Ci0gICAgICAgIChKU0dsdWVBUElFbnRyeTo6fkpTR2x1ZUFQSUVudHJ5KToKLSAgICAgICAgKEpT
R2x1ZUFQSUNhbGxiYWNrOjpKU0dsdWVBUElDYWxsYmFjayk6Ci0gICAgICAgIChKU0dsdWVBUElD
YWxsYmFjazo6fkpTR2x1ZUFQSUNhbGxiYWNrKToKLQotMjAxMC0wNC0xNiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzc3NDUKLSAgICAgICAgTW92ZSBzdHJpbmcgdW5pcXVpbmcgdGFibGVzIHRvIChuZXcpIFdU
RlRocmVhZERhdGEgY2xhc3MuCi0KLSAgICAgICAgUmVtb3ZlIEF0b21pY1N0cmluZydzIGRlcGVu
ZGVuY3kgb24gVGhyZWFkR2xvYmFsRGF0YSBzbyB0aGF0IHdlIGNhbiBtb3ZlCi0gICAgICAgIFdl
YkNvcmUncyBzdHJpbmcgY2xhc3NlcyB1cCB0byBXVEYuCi0KLSAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy93dGYvV1RGVGhyZWFkRGF0YS5oOiBBZGRlZC4KLSAgICAgICAgKiBKU1V0aWxzLmNw
cDogVXBkYXRlIAotICAgICAgICAoSlNHbHVlQVBJRW50cnk6OkpTR2x1ZUFQSUVudHJ5KToKLSAg
ICAgICAgKEpTR2x1ZUFQSUVudHJ5Ojp+SlNHbHVlQVBJRW50cnkpOgotICAgICAgICAoSlNHbHVl
QVBJQ2FsbGJhY2s6OkpTR2x1ZUFQSUNhbGxiYWNrKToKLSAgICAgICAgKEpTR2x1ZUFQSUNhbGxi
YWNrOjp+SlNHbHVlQVBJQ2FsbGJhY2spOgotCi0yMDEwLTAzLTMxICBHYXZpbiBCYXJyYWNsb3Vn
aCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBH
YXJlbi4KLQotICAgICAgICBCdWcgMzY4NzEgLSBSZW1vdmUgSlNDOjpDU3RyaW5nCi0gICAgICAg
IFVzZSBXVEY6OkNTdHJpbmcgaW5zdGVhZCAod2hpY2ggdW50aWwgcmVjZW50bHkgd2FzIFdlYkNv
cmU6OkNTdHJpbmcpLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQ6IEFk
ZGVkLgotICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L0NTdHJpbmcuaDogQWRk
ZWQuCi0KLTIwMTAtMDMtMTEgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBLaWx6ZXIuCi0KLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc3
NDUwODI+IE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgV2ViS2l0IGZvciBvbGRlciBNYWMgT1Mg
WCB2ZXJzaW9ucyBmcm9tIHRoZSBjdXJyZW50IE1hYyBPUyBYIHZlcnNpb24KLQotICAgICAgICBE
ZWZhdWx0IHRvIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBTREsgaWYgdGhlIHRhcmdldCBNYWMgT1Mg
WCB2ZXJzaW9uIGlzIG5vdCB0aGUgY3VycmVudCBNYWMgT1MgWCB2ZXJzaW9uLgotCi0gICAgICAg
ICogQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzoKLQotMjAxMC0wMy0xMSAgTWFyayBSb3dl
ICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyLgot
Ci0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NzQ1MDgyPiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1
aWxkIFdlYktpdCBmb3Igb2xkZXIgTWFjIE9TIFggdmVyc2lvbnMgZnJvbSB0aGUgY3VycmVudCBN
YWMgT1MgWCB2ZXJzaW9uCi0KLSAgICAgICAgSW50cm9kdWNlIFRBUkdFVF9NQUNfT1NfWF9WRVJT
SU9OX01BSk9SIHRvIHJlcHJlc2VudCB0aGUgTWFjIE9TIFggdmVyc2lvbiB0aGF0IGlzIGJlaW5n
IHRhcmdldGVkLiAgSXQgZGVmYXVsdHMgdG8gdGhlCi0gICAgICAgIGN1cnJlbnQgTWFjIE9TIFgg
dmVyc2lvbiB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4KLQotICAgICAgICBLZXkgb2ZmIFRB
UkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SIHdoZXJlIHdlJ2QgcHJldmlvdXNseSBiZWVuIGtl
eWluZyBvZmYgTUFDX09TX1hfVkVSU0lPTl9NQUpPUi4KLQotICAgICAgICBFeHBsaWNpdGx5IG1h
cCBmcm9tIHRoZSB0YXJnZXQgTWFjIE9TIFggdmVyc2lvbiB0byB0aGUgcHJlZmVycmVkIGNvbXBp
bGVyIHNpbmNlIFhjb2RlJ3MgZGVmYXVsdCBjb21waWxlciBjaG9pY2UKLSAgICAgICAgbWF5IG5v
dCBiZSB1c2FibGUgd2hlbiB0YXJnZXR0aW5nIGEgZGlmZmVyZW50IE1hYyBPUyBYIHZlcnNpb24u
Ci0KLSAgICAgICAgS2V5IG9mZiBUQVJHRVRfR0NDX1ZFUlNJT04gcmF0aGVyIHRoYW4gTUFDX09T
X1hfVkVSU0lPTl9NQUpPUiBpbiBsb2NhdGlvbnMgd2hlcmUgd2UnZCBwcmV2aW91c2x5IGJlZW4g
a2V5aW5nIG9mZgotICAgICAgICBNQUNfT1NfWF9WRVJTSU9OX01BSk9SIGJ1dCB0aGUgZGVjaXNp
b24gaXMgcmVhbGx5IHJlbGF0ZWQgdG8gdGhlIGNvbXBpbGVyIHZlcnNpb24gYmVpbmcgdXNlZC4K
LQotICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6Ci0gICAgICAgICogQ29u
ZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOgotICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL1ZlcnNpb24ueGNjb25maWc6Ci0gICAgICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKLQotMjAxMC0wMy0wMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgotCi0gICAg
ICAgIFJlZmFjdG9yIG5hbWVkIGdldHRlciBmdW5jdGlvbiBzaWduYXR1cmUgdG8gYmUgaW4gbGlu
ZSB3aXRoIGluZGV4aW5nIGdldHRlciBzaWduYXR1cmUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTYzCi0KLSAgICAgICAgRml4IG1ldGhvZCBzaWdu
YXR1cmUgYW5kIHVwZGF0ZSBjb2RlIGFzIGFwcHJvcHJpYXRlCi0KLSAgICAgICAgKiBVc2VyT2Jq
ZWN0SW1wLmNwcDoKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OnVzZXJPYmplY3RHZXR0ZXIpOgot
ICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDoKLQotMjAxMC0wMi0wOSAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ0
OTAKLSAgICAgICAgV2ViQ29yZTo6SW1hZ2VFdmVudFNlbmRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXZl
bnRzKCkgY3Jhc2hlcyBpbiBjZXJ0YWluIGNvbmRpdGlvbnMKLQotICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9WYWx1ZUNoZWNrLmg6IEFkZGVkLgotCi0yMDEwLTAyLTA0ICBNYXJrIFJv
d2UgIDxtcm93ZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRj
aGVyLgotCi0gICAgICAgIEJ1aWxkIGZpeC4gIFJlbW92ZSBhIHN5bWJvbCBjb3JyZXNwb25kaW5n
IHRvIGFuIGlubGluZSBmdW5jdGlvbiBmcm9tIHRoZSBsaW5rZXIgZXhwb3J0Ci0gICAgICAgIGZp
bGUgdG8gcHJldmVudCBhIHdlYWsgZXh0ZXJuYWwgZmFpbHVyZS4KLQotICAgICAgICAqIEphdmFT
Y3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFjY29tbW9kYXRlIHJlbmFtZSBv
ZiBzY3JpcHQuCi0KLTIwMTAtMDEtMjggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KLQotICAgICAgICBTaW1w
bGlmeSBhbm9ueW1vdXMgc2xvdCBpbXBsZW1lbnRhdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQyODIKLQotICAgICAgICBVcGRhdGUgSlNHbHVl
IFN0cnVjdHVyZSB1c2FnZSB0byBwYXNzIHRoZSBhbm9ueW1vdXMgc2xvdCBjb3VudC4KLQotICAg
ICAgICAqIFVzZXJPYmplY3RJbXAuaDoKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OmNyZWF0ZVN0
cnVjdHVyZSk6Ci0KLTIwMTAtMDEtMTIgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEu
Y29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgotCi0gICAgICAgIFtF
UzVdIEltcGxlbWVudCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIyNDIKLQotICAgICAgICBBZGQgbmV3
IGFyZ3VtZW50IHRvIHRoZSByZWltcGxlbWVudGF0aW9uIG9mIGdldE93blByb3BlcnR5TmFtZXMo
KS4KLQotICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdElt
cDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Ci0gICAgICAgICogVXNlck9iamVjdEltcC5oOgotCi0y
MDEwLTAxLTA3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAg
IE1hYyBidWlsZCBmaXguCi0KLSAgICAgICAgKiBjb25maWcuaDogRGVmaW5lIEpTX0VYUE9SVENM
QVNTIGZvciBKYXZhU2NyaXB0R2x1ZS4KLQotMjAxMC0wMS0wNSAgR2F2aW4gQmFycmFjbG91Z2gg
IDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMy
MzYKLSAgICAgICAgUmVtb3ZlIG1faWRlbnRpZmllclRhYmxlIHBvaW50ZXIgZnJvbSBVU3RyaW5n
Ci0KLSAgICAgICAgQWRkIEFQSSBzaGltcyBzaW1pbGFyIHRvIHRob3NlIHVzZWQgaW4gdGhlIEpT
QyBBUEkgdG8gdHJhY2sgdGhlIGN1cnJlbnQgaWRlbnRpZmllclRhYmxlLgotCi0gICAgICAgICog
SlNCYXNlLmNwcDoKLSAgICAgICAgKEpTQmFzZTo6UmVsZWFzZSk6Ci0gICAgICAgICogSlNVdGls
cy5jcHA6Ci0gICAgICAgIChKU09iamVjdEtKU1ZhbHVlKToKLSAgICAgICAgKEtKU1ZhbHVlVG9D
RlR5cGVJbnRlcm5hbCk6Ci0gICAgICAgICh1bnByb3RlY3RHbG9iYWxPYmplY3QpOgotICAgICAg
ICAoSlNHbHVlQVBJRW50cnk6OkpTR2x1ZUFQSUVudHJ5KToKLSAgICAgICAgKEpTR2x1ZUFQSUVu
dHJ5Ojp+SlNHbHVlQVBJRW50cnkpOgotICAgICAgICAoSlNHbHVlQVBJQ2FsbGJhY2s6OkpTR2x1
ZUFQSUNhbGxiYWNrKToKLSAgICAgICAgKEpTR2x1ZUFQSUNhbGxiYWNrOjp+SlNHbHVlQVBJQ2Fs
bGJhY2spOgotICAgICAgICAqIEpTVXRpbHMuaDoKLSAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5j
cHA6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6
Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RDb3B5UHJvcGVydHkpOgotICAgICAg
ICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0U2V0UHJvcGVydHkpOgotICAgICAgICAoSlNWYWx1
ZVdyYXBwZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0aW9uKToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVy
OjpKU09iamVjdENvcHlDRlZhbHVlKToKLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS5jcHA6Ci0g
ICAgICAgIChKU1J1bkNyZWF0ZSk6Ci0gICAgICAgIChKU1J1bkV2YWx1YXRlKToKLSAgICAgICAg
KEpTUnVuQ2hlY2tTeW50YXgpOgotICAgICAgICAoSlNDb2xsZWN0KToKLSAgICAgICAgKiBKYXZh
U2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotICAgICAgICAqIFVzZXJPYmpl
Y3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24pOgotCi0y
MDEwLTAxLTA0ICBHYXZpbiBCYXJyYWNsb3VnaCA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgQWRkIGEgZm9yd2FyZGlu
ZyBoZWFkZXIgc28gdGhhdCBTdHJpbmdIYXNoRnVuY3Rpb25zLmggY2FuIGJlIGZvdW5kLgotCi0g
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaDogQWRk
ZWQuCi0KLTIwMTAtMDEtMDQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBBZGEgQ2hhbiBhbmQgTWFyayBSb3dlLgotCi0gICAgICAgIFVwZGF0
ZWQgY29weXJpZ2h0IHN0cmluZwotCi0gICAgICAgICogSW5mby5wbGlzdDoKLQotMjAwOS0xMi0y
MSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMyODMxCi0gICAgICAgIFJlcGxhY2UgVVN0cmluZzo6UmVwIGlt
cGxlbWVudGF0aW9uLCBmb2xsb3dpbmcgaW50cm9kdWN0aW9uIG9mIHJvcGVzIHRvIEpTQy4KLQot
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Qb3NzaWJseU51bGwuaDogQWRkZWQuCi0g
ICAgICAgICAgICAtIGFkZCBmb3J3YXJkaW5nIGhlYWRlci4KLQotMjAwOS0xMi0xNiAgTWFyayBS
b3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAgICAgIEJ1aWxkIGZpeC4gIERpc2FibGUgZGVi
dWcgdmFyaWFudHMgb2YgV2ViS2l0IGZyYW1ld29ya3MuCi0KLSAgICAgICAgKiBKYXZhU2NyaXB0
R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotCi0yMDA5LTEyLTEzICBHZW9mZnJleSBH
YXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KLSAgICAgICAgCi0gICAgICAgIENoYW5nZWQgR0MgZnJvbSBtYXJrLXN3ZWVwIHRvIG1hcmst
YWxsb2NhdGUuCi0gICAgICAgIAotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLSAgICAg
ICAgKEpTQ29sbGVjdCk6IFVwZGF0ZWQgZm9yIHJlbmFtZS4gRml4ZWQgYSBidWcgd2hlcmUgSlNH
bHVlIHdvdWxkIG5vdCBjaGVjawotICAgICAgICB0byBhdm9pZCBuZXN0ZWQgR0MgY2FsbHMuCi0K
LTIwMDktMTItMDggIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAg
ICAgUnViYmVyLXN0YW1wZWQgYnkgRGF2aWQgTGV2aW4uCi0KLSAgICAgICAgUmV2ZXJ0IGFuZCBy
ZW9wZW4gIkFkZCBhc3NlcnRzIHRvIFJlZkNvdW50ZWQgdG8gbWFrZSBzdXJlIHJlZi9kZXJlZiBo
YXBwZW5zIG9uIHRoZSByaWdodCB0aHJlYWQuIgotICAgICAgICBJdCBtYXkgaGF2ZSBjYXVzZWQg
bWFzc2l2ZSBpbmNyZWFzZSBvZiByZXBvcnRlZCBsZWFrcyBvbiB0aGUgYm90cy4KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjM5Ci0KLSAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkVmVyaWZpZXIuaDogUmVtb3ZlZC4KLQotMjAw
OS0xMi0wOCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBBZGQgYXNzZXJ0cyB0byBSZWZDb3Vu
dGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUgcmlnaHQgdGhyZWFkLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MzkKLQot
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRWZXJpZmllci5oOiBBZGRlZC4K
LQotMjAwOS0xMS0yNCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAgICAgIEZp
eCBwcm9kdWN0aW9uIGJ1aWxkcyB3aGVyZSB0aGUgc291cmNlIHRyZWUgbWF5IGJlIHJlYWQtb25s
eS4KLQotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
Ci0KLTIwMDktMTEtMDggIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoY2hyb21pdW0gYnVpbGQgZml4KS4KLQotICAgICAgICBB
ZGRlZCB0aGUgdXNlIGpzYyBkZWZpbmUgZm9yIGZpbGVzIHRoYXQgdXNlCi0gICAgICAgIHRoaXMg
Y29uZmlnIGZpbGUgYW5kIERhdGVNYXRoLmguIFRoaXMgc2hvdWxkCi0gICAgICAgIGJlIGFibGUg
dG8gZ28gYXdheSB3aGVuIERhdGVNYXRoIGlzIHByb3Blcmx5Ci0gICAgICAgIHNwbGl0IGludG8g
d3RmIGFuZCBqc2MgcG9ydGlvbnMgd2hpY2ggaXMgdGhpcyBidWc6Ci0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTI0NgotCi0gICAgICAgICogY29uZmln
Lmg6Ci0KLTIwMDktMTEtMDYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KLQotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExOTcKLSAgICAgICAgSW1wbGVtZW50ZWQgYSB0
aW1lem9uZSBjYWNoZSBub3QgYmFzZWQgb24gTWFjIE9TIFgncyBub3RpZnlfY2hlY2sgQVBJLgot
ICAgICAgICAKLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvQ3VycmVudFRpbWUuaDog
QWRkZWQuCi0KLTIwMDktMTAtMjcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
LQotICAgICAgICBCdWlsZCBmaXg6IFVwZGF0ZWQgZm9yIEphdmFTY3JpcHRDb3JlIGV4cG9ydCBj
aGFuZ2VzLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RhdGVJbnN0YW5jZUNh
Y2hlLmg6IEFkZGVkLgotCi0yMDA5LTEwLTI3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCi0KLSAgICAgICAgVXBk
YXRlZCBmb3IgSmF2YVNjcmlwdENvcmUgZXhwb3J0IGNoYW5nZXMuCi0KLSAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy93dGYvRGF0ZU1hdGguaDogQWRkZWQuCi0KLTIwMDktMTAtMjcgIERhbiBC
ZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KLQotICAgICAgICBVcGRhdGVkIGxpY2Vuc2UKLQotICAgICAgICAqIExJQ0VOU0U6Ci0K
LTIwMDktMTAtMTYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KLQotICAgICAgICBNYWtlIHR5cGVpbmZvIGZs
YWdzIGRlZmF1bHQgdG8gZmFsc2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMwMzcyCi0KLSAgICAgICAgTGFzdCBwYXJ0IC0tIHJlcGxhY2UgSGFzRGVm
YXVsdEdldFByb3BlcnR5TmFtZXMgd2l0aCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzCi0gICAg
ICAgIGZsYWcuCi0KLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6Ci0gICAgICAgIChVc2VyT2Jq
ZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1cmUpOgotCi0yMDA5LTEwLTE1ICBPbGl2ZXIgSHVudCAgPG9s
aXZlckBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAg
ICAgICAgTWFrZSB0eXBlaW5mbyBmbGFncyBkZWZhdWx0IHRvIGZhbHNlCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDM3MgotCi0gICAgICAgIFBhcnQg
MiAtLSBSZXZlcnNlIHRoZSBUeXBlSW5mbyBIYXNEZWZhdWx0TWFyayBmbGFnIHRvIE92ZXJyaWRl
c01hcmtDaGlsZHJlbiwgZXRjCi0KLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6Ci0gICAgICAg
IChVc2VyT2JqZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1cmUpOgotCi0yMDA5LTEwLTE0ICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2Fy
ZW4uCi0KLSAgICAgICAgTWFrZSB0eXBlaW5mbyBmbGFncyBkZWZhdWx0IHRvIGZhbHNlCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDM3MgotICAgICAg
ICAKLSAgICAgICAgUGFydCAxLiBSZXZlcnNlIHRoZSBIYXNTdGFuZGFyZEdldE93blByb3BlcnR5
U2xvdCBmbGFnLgotCi0gICAgICAgICogVXNlck9iamVjdEltcC5oOgotICAgICAgICAoVXNlck9i
amVjdEltcDo6Y3JlYXRlU3RydWN0dXJlKToKLQotMjAwOS0wOS0yOCAgR2VvZmZyZXkgR2FyZW4g
IDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0K
LSAgICAgICAgUmVtb3ZlZCB2aXJ0dWFsIGRlc3RydWN0b3IgZnJvbSBKU0dsb2JhbE9iamVjdERh
dGEgdG8gZWxpbWluYXRlIHBvaW50ZXIKLSAgICAgICAgZml4LXVwcyB3aGVuIGFjY2Vzc2luZyBK
U0dsb2JhbE9iamVjdDo6ZC4KLSAgICAgICAgCi0gICAgICAgIFJlcGxhY2VkIHdpdGggYW4gZXhw
bGljaXQgZGVzdHJ1Y3RvciBmdW5jdGlvbiBwb2ludGVyLgotCi0gICAgICAgICogSlNSdW4uY3Bw
OgotICAgICAgICAoSlNHbHVlR2xvYmFsT2JqZWN0OjpkZXN0cm95RGF0YSk6Ci0gICAgICAgICog
SlNSdW4uaDoKLSAgICAgICAgKEpTR2x1ZUdsb2JhbE9iamVjdDo6RGF0YTo6RGF0YSk6Ci0KLTIw
MDktMDktMTIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KLQotICAgICAgICBbRVM1XSBJbXBsZW1lbnQgT2Jq
ZWN0LmtleXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI5MTcwCi0KLSAgICAgICAgU3dpdGNoIG92ZXIgdG8gZ2V0T3duUHJvcGVydHlOYW1lcyBpbnN0
ZWFkIG9mIGdldFByb3BlcnR5TmFtZXMuCi0KLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoK
LSAgICAgICAgKFVzZXJPYmplY3RJbXA6OmdldE93blByb3BlcnR5TmFtZXMpOgotICAgICAgICAq
IFVzZXJPYmplY3RJbXAuaDoKLQotMjAwOS0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCi0KLSAgICAgICAgKiBK
U1ZhbHVlV3JhcHBlci5jcHA6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RNYXJr
KTogUmVtb3ZlZCBhIGNoZWNrIG9mIHRoZSBtYXJrCi0gICAgICAgIGJpdC4gSXQncyBPSyB0byBk
byBtb3JlIHdvcmsgaW4gdGhpcyBjYXNlLCBhbmQgdGhlcmUgaXMgbm8KLSAgICAgICAgbG9uZ2Vy
IGEgcHVibGljIGZ1bmN0aW9uIHRvIGFjY2VzcyB0aGUgbWFyayBiaXQuCi0KLTIwMDktMDgtMTQg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCi0KLSAgICAgICAgUmVuYW1lIHRoZSBjb25mdXNpbmcgaXNPYmplY3QoPGNsYXNz
PikgdG8gaW5oZXJpdHMoPGNsYXNzPikuCi0gICAgICAgIEl0IHN0aWxsIHdvcmtzIG9uIG5vbi1v
YmplY3RzLCByZXR1cm5pbmcgZmFsc2UuCi0KLSAgICAgICAgKiBKU1V0aWxzLmNwcDoKLSAgICAg
ICAgKEtKU1ZhbHVlVG9KU09iamVjdCk6Ci0gICAgICAgIChLSlNWYWx1ZVRvQ0ZUeXBlSW50ZXJu
YWwpOgotICAgICAgICBDaGFuZ2VkIGZyb20gaXNPYmplY3QgdG8gaW5oZXJpdHMuCi0KLTIwMDkt
MDgtMTMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBNYWNpZWogU3RhY2hvd2lhay4KLQotICAgICAgICBEZXZpcnR1YWxpc2UgbWFya2luZwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyOTQKLQot
ICAgICAgICBDb250aW51ZSB0byBqdW1wIHRocm91Z2ggaG9vcHMgdG8gZGVhbCB3aXRoIHRoZSBl
eHBvc2VkIG1hcmtpbmcgcm91dGluZXMKLSAgICAgICAgaW4gSmF2YVNjcmlwdEdsdWUuCi0KLSAg
ICAgICAgKiBKU1ZhbHVlV3JhcHBlci5jcHA6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNP
YmplY3RNYXJrKToKLQotMjAwOS0wOC0wNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgU3RhY2sgb3Zl
cmZsb3cgY3Jhc2ggaW4gSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3RvciBtYXJrIHBhc3MKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE2Ci0KLSAg
ICAgICAgTWFrZSBKU0dsdWUgaW50ZXJhY3Qgd2l0aCB0aGUgbmV3IGl0ZXJhdGl2ZSBtYXJrIGxv
Z2ljLgotCi0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAgICAoSlNWYWx1ZVdy
YXBwZXI6OkpTT2JqZWN0TWFyayk6Ci0gICAgICAgICAgVW5mb3J0dW5hdGVseSBKU0dsdWUgZXhw
b3NlcyByZWN1cnNpdmUgbWFya2luZyBzbyB3ZSBjYW4gb25seSBmbGF0dGVuCi0gICAgICAgICAg
dGhlIHJlY3Vyc2lvbi4gIFdlIGp1c3QgY3JlYXRlIGEgbG9jYWwgbWFyayBzdGFjayBpZiBuZWNl
c3NhcnkgYW5kIG1hcmsKLSAgICAgICAgICB0aGUgZ2l2ZW4gb2JqZWN0IGl0ZXJhdGl2ZWx5IGZy
b20gdGhpcyBwb2ludC4KLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKLSAgICAgICAgKFVz
ZXJPYmplY3RJbXA6Om1hcmtDaGlsZHJlbik6Ci0gICAgICAgICogVXNlck9iamVjdEltcC5oOgot
Ci0yMDA5LTA4LTA2ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUnVi
YmVyLXN0YW1wZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICBBZGQgZXhwbGljaXQgZGVwZW5k
ZW5jaWVzIGZvciBvdXIgYnVpbGQgdmVyaWZpY2F0aW9uIHNjcmlwdHMgdG8gZW5zdXJlIHRoYXQg
dGhleSBhbHdheXMgcnVuIGFmdGVyIGxpbmtpbmcgaGFzIGNvbXBsZXRlZC4KLQotICAgICAgICAq
IEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0KLTIwMDktMDctMjcg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNzczNQotICAgICAgICBHaXZlIGEgaGVscGZ1bCBuYW1lIHRvIEpTTG9jayBj
b25zdHJ1Y3RvciBhcmd1bWVudAotCi0gICAgICAgICogSlNCYXNlLmNwcDoKLSAgICAgICAgKEpT
QmFzZTo6UmVsZWFzZSk6Ci0gICAgICAgICogSlNVdGlscy5jcHA6Ci0gICAgICAgIChKU09iamVj
dEtKU1ZhbHVlKToKLSAgICAgICAgKEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5hbCk6Ci0gICAgICAg
ICh1bnByb3RlY3RHbG9iYWxPYmplY3QpOgotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoK
LSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKLSAg
ICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlQcm9wZXJ0eSk6Ci0gICAgICAgIChK
U1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RTZXRQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1ZhbHVlV3Jh
cHBlcjo6SlNPYmplY3RDYWxsRnVuY3Rpb24pOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpT
T2JqZWN0Q29weUNGVmFsdWUpOgotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLSAgICAg
ICAgKEpTUnVuQ3JlYXRlKToKLSAgICAgICAgKEpTUnVuRXZhbHVhdGUpOgotICAgICAgICAoSlNS
dW5DaGVja1N5bnRheCk6Ci0gICAgICAgIChKU0NvbGxlY3QpOgotICAgICAgICAoSlNMb2NrSW50
ZXJwcmV0ZXIpOgotICAgICAgICAoSlNVbmxvY2tJbnRlcnByZXRlcik6Ci0KLTIwMDktMDctMTAg
IEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFNvcnQgYWxsIG91ciBY
Y29kZSBwcm9qZWN0cwotCi0gICAgICAgIEFjY29tcGxpc2hlZCB1c2luZyBzb3J0LVhjb2RlLXBy
b2plY3QtZmlsZS4KLQotICAgICAgICBSZXF1ZXN0ZWQgYnkgRGF2ZSBLaWx6ZXIuCi0KLSAgICAg
ICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotCi0yMDA5LTA3
LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBEYW4gQmVybnN0ZWluCi0KLSAgICAgICAgLSBmaXggPHJkYXI6Ly9wcm9ibGVtLzY5NzE0ODQ+
IFJFR1JFU1NJT04gKHIzMDUzNCk6ICJTY3JvbGxpbmcgQ3JlZGl0cyIKLSAgICAgICAgICBlZmZl
Y3QgZG9lcyBub3Qgc2Nyb2xsIG9uIGlNb3ZpZSA3LjEuNCBvbiBUaWdlcgotCi0gICAgICAgIElu
IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMDUzND4sIHRoZSBwcm90b3R5cGUg
b2YKLSAgICAgICAgSlNPYmplY3Q6OnB1dCgpIHdoaWNoIFVzZXJPYmplY3RJbXAgaGFkIGJlZW4g
b3ZlcnJpZGluZyBjaGFuZ2VkLCBidXQKLSAgICAgICAgVXNlck9iamVjdEltcCB3YXNuJ3QgdXBk
YXRlZCwgc28gaXRzIG92ZXJyaWRlIHdhcyBubyBsb25nZXIgZ2V0dGluZwotICAgICAgICBjYWxs
ZWQgYWZ0ZXIgdGhhdC4KLQotICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAo
VXNlck9iamVjdEltcDo6cHV0KTogTWF0Y2ggdGhlIGN1cnJlbnQgcHJvdG90eXBlIG9mIEpTT2Jq
ZWN0OjpwdXQoKS4KLSAgICAgICAgVGhlIFB1dFByb3BlcnR5U2xvdCBhcmd1bWVudCBpcyB1bnVz
ZWQuCi0gICAgICAgICogVXNlck9iamVjdEltcC5oOiBEaXR0by4KLQotMjAwOS0wNi0xOSAgWm9s
dGFuIEhvcnZhdGggIDxoem9sdGFuQGluZi51LXN6ZWdlZC5odT4KLQotICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBBZGQgRmFzdEFsbG9jQmFzZS5oIHRvIEphdmFT
Y3JpcHRHbHVlJ3MgRm9yd2FyZGluZ0hlYWRlcnMvd3RmLCBiZWNhdXNlIGl0J3MgbmVlZGVkIGJ5
IEhhc2hDb3VudGVkU2V0Lmggb24gTUFDLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0Zhc3RBbGxvY0Jhc2UuaDogQWRkZWQuCi0KLTIwMDktMDYtMDIgIE1hcmsgUm93ZSAgPG1y
b3dlQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0K
LSAgICAgICAgUmVtb3ZlIHdvcmthcm91bmQgdGhhdCB3YXMgYWRkZWQgdG8gYWRkcmVzcyA8cmRh
cjovL3Byb2JsZW0vNTQ4ODY3OD4gYXMgaXQgbm8gbG9uZ2VyIGFmZmVjdHMgb3VyIFRpZ2VyIGJ1
aWxkcy4KLQotICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6Ci0KLTIwMDkt
MDUtMjUgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrIGFuZCBPbGl2ZXIgSHVudC4KLQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUxMjYKLQotICAgICAgICBBZGRl
ZCBmb3J3YXJkaW5nIGhlYWRlcnMuCi0KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYv
Q3Jvc3NUaHJlYWRSZWZDb3VudGVkLmg6IEFkZGVkLgotICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9Pd25GYXN0TWFsbG9jUHRyLmg6IEFkZGVkLgotCi0yMDA5LTA1LTIzICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+Ci0KLSAgICAgICAgUGFydCAxIG9mIDI6IEJ1ZyAy
NTQ5NTogSW1wbGVtZW50IFBhc3NPd25QdHIgYW5kIHJlcGxhY2UgdXNlcyBvZiBzdGQ6OmF1dG9f
cHRyCi0KLSAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NTQ5NT4KLQotICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KLQotICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL3d0Zi9Pd25QdHJDb21tb24uaDogQWRkZWQuCi0gICAgICAgICogRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1Bhc3NPd25QdHIuaDogQWRkZWQuCi0KLTIwMDktMDUtMTQgIE1h
cmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KLQotICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBE
YXJpbiBBZGxlci4KLQotICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjY4MTg2OD4gV2hlbiBidWls
ZGluZyB3aXRoIFhjb2RlIDMuMS4zIHNob3VsZCBiZSB1c2luZyBnY2MgNC4yCi0KLSAgICAgICAg
VGhlIG1lYW5pbmcgb2YgWENPREVfVkVSU0lPTl9BQ1RVQUwgaXMgbW9yZSBzZW5zaWJsZSBpbiBu
ZXdlciB2ZXJzaW9ucyBvZiBYY29kZS4KLSAgICAgICAgVXBkYXRlIG91ciBsb2dpYyB0byBzZWxl
Y3QgdGhlIGNvbXBpbGVyIHZlcnNpb24gdG8gdXNlIHRoZSBtb3JlIGFwcHJvcHJpYXRlIFhDT0RF
X1ZFUlNJT05fTUlOT1IKLSAgICAgICAgaWYgdGhlIHZlcnNpb24gb2YgWGNvZGUgc3VwcG9ydHMg
aXQsIGFuZCBmYWxsIGJhY2sgdG8gWENPREVfVkVSU0lPTl9BQ1RVQUwgaWYgbm90LgotCi0gICAg
ICAgICogQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzoKLQotMjAwOS0wNS0wNyAgT2xpdmVy
IEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJh
cnJhY2xvdWdoLgotCi0gICAgICAgIEFkZCBjYWxsaW5nIGNvbnZlbnRpb24gYW5ub3RhdGlvbgot
Ci0gICAgICAgICogSlNPYmplY3QuY3BwOgotCi0yMDA5LTA1LTAxICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUnViYmVyIFN0YW1wZWQgYnkgU2FtIFdlaW5p
Zy4KLSAgICAgICAgCi0gICAgICAgIFJlbmFtZWQgSlNWYWx1ZVB0ciA9PiBKU1ZhbHVlLgotCi0g
ICAgICAgICogSlNPYmplY3QuY3BwOgotICAgICAgICAobmF0aXZlQ2FsbEZ1bmN0aW9uKToKLSAg
ICAgICAgKiBKU1V0aWxzLmNwcDoKLSAgICAgICAgKEtKU1ZhbHVlVG9KU09iamVjdCk6Ci0gICAg
ICAgIChKU09iamVjdEtKU1ZhbHVlKToKLSAgICAgICAgKEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5h
bCk6Ci0gICAgICAgIChLSlNWYWx1ZVRvQ0ZUeXBlKToKLSAgICAgICAgKiBKU1V0aWxzLmg6Ci0g
ICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpT
VmFsdWVXcmFwcGVyKToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpHZXRWYWx1ZSk6Ci0gICAg
ICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RDb3B5UHJvcGVydHkpOgotICAgICAgICAoSlNW
YWx1ZVdyYXBwZXI6OkpTT2JqZWN0U2V0UHJvcGVydHkpOgotICAgICAgICAoSlNWYWx1ZVdyYXBw
ZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0aW9uKToKLSAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5oOgot
ICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Y2Fs
bEFzRnVuY3Rpb24pOgotICAgICAgICAoVXNlck9iamVjdEltcDo6dXNlck9iamVjdEdldHRlcik6
Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgotICAgICAgICAo
VXNlck9iamVjdEltcDo6cHV0KToKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OnRvUHJpbWl0aXZl
KToKLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpj
cmVhdGVTdHJ1Y3R1cmUpOgotCi0yMDA5LTA0LTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCi0KLSAgICAg
ICAgQ2xlYW4gdXAgQXJnTGlzdCB0byBiZSBhIHRyaXZpYWwgdHlwZQotCi0gICAgICAgIFN0YXJ0
IHVzaW5nIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHRvIGNyZWF0ZSBhcmd1bWVudCBsaXN0cyBmb3Ig
ZnVuY3Rpb24gY2FsbHMKLQotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKLSAgICAgICAg
KEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENhbGxGdW5jdGlvbik6Ci0KLTIwMDktMDQtMjggIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBSdWJiZXIgc3RhbXBl
ZCBieSBCZXRoIERha2luLgotICAgICAgICAKLSAgICAgICAgTWlzc2VkIG9uZS4KLQotICAgICAg
ICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Y2FsbEFzRnVu
Y3Rpb24pOgotCi0yMDA5LTA0LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgotCi0gICAgICAgIFRpZ2VyIGNyYXNo
IGZpeDogUHV0IFZNIHRhZ3MgaW4gdGhlaXIgb3duIGhlYWRlciBmaWxlLCBhbmQgZml4ZWQgdXAg
dGhlCi0gICAgICAgICNpZmRlZnMgc28gdGhleSdyZSBub3QgdXNlZCBvbiBUaWdlci4KLQotICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9WTVRhZ3MuaDogQ29waWVkIGZyb20gSmF2YVNj
cmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hUcmFpdHMuaC4KLQotMjAwOS0wNC0y
MCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJ1YmJlci1zdGFtcGVk
IGJ5IFRpbSBIYXRjaGVyLgotCi0gICAgICAgIEFkZCBsaWNlbnNlcyBmb3IgeGNjb25maWcgZmls
ZXMuCi0KLSAgICAgICAgKiBDb25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgotICAgICAgICAq
IENvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZzoKLSAgICAgICAgKiBDb25maWd1
cmF0aW9ucy9KYXZhU2NyaXB0R2x1ZS54Y2NvbmZpZzoKLSAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9WZXJzaW9uLnhjY29uZmlnOgotCi0yMDA5LTAzLTEzICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFuIEJlcm5zdGVpbi4KLQotICAg
ICAgICBUYWtlIGFkdmFudGFnZSBvZiB0aGUgYWJpbGl0eSBvZiByZWNlbnQgdmVyc2lvbnMgb2Yg
WGNvZGUgdG8gZWFzaWx5IHN3aXRjaCB0aGUgYWN0aXZlCi0gICAgICAgIGFyY2hpdGVjdHVyZS4K
LQotICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZzoKLQotMjAw
OS0wMi0yNCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAgICAgIFJ1YmJlci1z
dGFtcGVkIGJ5IERhbiBCZXJuc3RlaW4uCi0KLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0MDc4
NDQ+IEphdmFTY3JpcHRHbHVlIHNob3VsZCB1c2UgLU9zIHJhdGhlciB0aGFuIC1PMgotCi0gICAg
ICAgICogQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzoKLQotMjAwOS0wMS0yOCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJh
Y2xvdWdoLgotCi0gICAgICAgIEZpeCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1MjU1Mzc+Ci0gICAg
ICAgIEhhbmcgb2NjdXJzIHdoZW4gY2xvc2luZyBJbnN0YWxsZXIgd2luZG93IChpVHVuZXMsIEFw
ZXJ0dXJlKQotCi0gICAgICAgICogSlNVdGlscy5jcHA6Ci0gICAgICAgIChnZXRUaHJlYWRHbG9i
YWxPYmplY3QpOiBVc2UgdGhlIHNoYXJlZCBKU0dsb2JhbERhdGEgaW5zdGFuY2UuCi0KLTIwMDkt
MDEtMjIgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KLQotICAgICAgICBSdWJiZXItc3Rh
bXBlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgRGlzYWJsZSBHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgdGVtcG9yYXJpbHkuCi0KLSAgICAgICAgQ3VycmVudCB2ZXJz
aW9ucyBvZiBYY29kZSBvbmx5IHJlc3BlY3QgaXQgZm9yIEMgYW5kIE9iamVjdGl2ZS1DIGZpbGVz
LAotICAgICAgICBhbmQgb3VyIGNvZGUgZG9lc24ndCBjdXJyZW50bHkgY29tcGlsZSBpZiBpdCBp
cyBhcHBsaWVkIHRvIEMrKyBhbmQKLSAgICAgICAgT2JqZWN0aXZlLUMrKyBmaWxlcy4KLQotICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6Ci0KLTIwMDktMDEtMTkgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBHYXZp
biBCYXJyYWNsb3VnaC4KLQotICAgICAgICBSZW1vdmUgdGVtcG9yYXJ5IG9wZXJhdG9yLT4gZnJv
bSBKU1ZhbHVlUHRyLgotCi0gICAgICAgICogSlNVdGlscy5jcHA6Ci0gICAgICAgIChLSlNWYWx1
ZVRvSlNPYmplY3QpOgotICAgICAgICAoS0pTVmFsdWVUb0NGVHlwZUludGVybmFsKToKLSAgICAg
ICAgKiBKU1ZhbHVlV3JhcHBlci5jcHA6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmpl
Y3RDb3B5UHJvcGVydHlOYW1lcyk6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RD
b3B5UHJvcGVydHkpOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0U2V0UHJvcGVy
dHkpOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0aW9uKToKLSAg
ICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdE1hcmspOgotICAgICAgICAqIFVzZXJPYmpl
Y3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KToK
LQotMjAwOS0wMS0xNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCi0KLSAgICAgICAgLSB1cGRhdGUgY29weXJpZ2h0
Ci0KLSAgICAgICAgKiBJbmZvLnBsaXN0OgotCi0yMDA5LTAxLTA5ICBEYXZpZCBMZXZpbiAgPGxl
dmluQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KLQot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNzUKLQot
ICAgICAgICBBZGRlZCBmb3J3YXJkaW5nIGhlYWRlci4KLQotICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9QdHJBbmRGbGFncy5oOiBBZGRlZC4KLQotMjAwOS0wMS0wNSAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJhY2xvdWdoQGFwcGxlLmNvbT4KLQotICAgICAgICBSdWJiZXIgU3RhbXBl
ZCBieSBPbGl2ZXIgSHVudC4KLQotICAgICAgICBSZXBsYWNlIGFsbCB1c2VzIG9mIEpTVmFsdWUq
IHdpdGggbmV3IHdyYXBwZXIgY2xhc3MsIEpTVmFsdWVQdHIuCi0gICAgICAgIFNlZSBKYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24uCi0KLSAgICAg
ICAgKiBKU09iamVjdC5jcHA6Ci0gICAgICAgIChuYXRpdmVDYWxsRnVuY3Rpb24pOgotICAgICAg
ICAqIEpTVXRpbHMuY3BwOgotICAgICAgICAoS0pTVmFsdWVUb0pTT2JqZWN0KToKLSAgICAgICAg
KEpTT2JqZWN0S0pTVmFsdWUpOgotICAgICAgICAoS0pTVmFsdWVUb0NGVHlwZUludGVybmFsKToK
LSAgICAgICAgKEtKU1ZhbHVlVG9DRlR5cGUpOgotICAgICAgICAqIEpTVXRpbHMuaDoKLSAgICAg
ICAgKiBKU1ZhbHVlV3JhcHBlci5jcHA6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNWYWx1
ZVdyYXBwZXIpOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkdldFZhbHVlKToKLSAgICAgICAg
KEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1ZhbHVl
V3JhcHBlcjo6SlNPYmplY3RTZXRQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6
SlNPYmplY3RDYWxsRnVuY3Rpb24pOgotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmg6Ci0gICAg
ICAgICogVXNlck9iamVjdEltcC5jcHA6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpjYWxsQXNG
dW5jdGlvbik6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjp1c2VyT2JqZWN0R2V0dGVyKToKLSAg
ICAgICAgKFVzZXJPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdCk6Ci0gICAgICAgIChVc2Vy
T2JqZWN0SW1wOjpwdXQpOgotICAgICAgICAoVXNlck9iamVjdEltcDo6dG9QcmltaXRpdmUpOgot
ICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDoKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OmNyZWF0
ZVN0cnVjdHVyZSk6Ci0KLTIwMDgtMTItMTUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4K
LQotICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBDYW1lcm9uIFp3YXJpY2guCi0KLSAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYyODk5MzM+IENoYW5nZSBXZWJLaXQtcmVsYXRlZCBwcm9qZWN0cyB0
byBidWlsZCB3aXRoIEdDQyA0LjIgb24gTGVvcGFyZC4KLQotICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0Jhc2UueGNjb25maWc6Ci0gICAgICAgICogQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNl
LnhjY29uZmlnOgotCi0yMDA4LTEyLTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+Ci0KLSAgICAgICAgQnVnIDIyNTU1OiBTb3J0ICJjaGlsZHJlbiIgc2VjdGlvbnMgaW4gWGNv
ZGUgcHJvamVjdCBmaWxlcwotCi0gICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1NTU+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0K
LSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTb3J0
ZWQuCi0KLTIwMDgtMTEtMTcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotICAgICAgICAKLSAgICAgICAgVXBkYXRl
ZCBmb3IgSmF2YVNjcmlwdENvcmUgcmVuYW1lLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9DYWxsRnJhbWUuaDogQ29waWVkIGZyb20gSmF2YVNjcmlwdEdsdWUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9FeGVjU3RhdGUuaC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0V4ZWNTdGF0ZS5oOiBSZW1vdmVkLgotICAgICAgICAqIGNvbmZpZy5oOgot
Ci0yMDA4LTExLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLSAgICAgICAgCi0gICAgICAgIFVwZGF0ZWQgZm9y
IEphdmFTY3JpcHRDb3JlIHJlbmFtZS4KLQotICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2lu
dGVycHJldGVyOiBBZGRlZC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaDogQ29waWVkIGZyb20gRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9FeGVj
U3RhdGUuaC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0V4ZWNTdGF0ZS5o
OiBSZW1vdmVkLgotCi0yMDA4LTExLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
LQotICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBHZW9mZiBHYXJlbi4KLQotICAgICAgICAtIGRv
IHRoZSBsb25nLXBsYW5uZWQgU3RydWN0dXJlSUQgLT4gU3RydWN0dXJlIHJlbmFtZQotCi0gICAg
ICAgICogSlNSdW4uY3BwOgotICAgICAgICAoSlNHbHVlR2xvYmFsT2JqZWN0OjpKU0dsdWVHbG9i
YWxPYmplY3QpOgotICAgICAgICAoSlNSdW46OkpTUnVuKToKLSAgICAgICAgKiBKU1J1bi5oOgot
ICAgICAgICAoSlNHbHVlR2xvYmFsT2JqZWN0Ojp1c2VyT2JqZWN0U3RydWN0dXJlKToKLSAgICAg
ICAgKiBKU1V0aWxzLmNwcDoKLSAgICAgICAgKGdldFRocmVhZEdsb2JhbE9iamVjdCk6Ci0gICAg
ICAgICogVXNlck9iamVjdEltcC5jcHA6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpVc2VyT2Jq
ZWN0SW1wKToKLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6Ci0gICAgICAgIChVc2VyT2JqZWN0
SW1wOjpjcmVhdGVTdHJ1Y3R1cmUpOgotCi0yMDA4LTExLTE1ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLSAgICAg
ICAgCi0gICAgICAgIFVwZGF0ZWQgZm9yIEphdmFTY3JpcHRDb3JlIHJlbmFtZXMuCi0KLSAgICAg
ICAgKiBKU1J1bi5jcHA6Ci0gICAgICAgIChKU1J1bjo6RXZhbHVhdGUpOgotICAgICAgICAoSlNS
dW46OkNoZWNrU3ludGF4KToKLQotMjAwOC0xMS0wNSAgQ2FtZXJvbiBad2FyaWNoICA8endhcmlj
aEBhcHBsZS5jb20+Ci0KLSAgICAgICAgTm90IHJldmlld2VkLgotCi0gICAgICAgIEZpeCB0aGUg
SmF2YVNjcmlwdEdsdWUgYnVpbGQuIFRoaXMgd291bGRuJ3Qgc2hvdyB1cCB1bmxlc3Mgb25lIHdh
cwotICAgICAgICBkb2luZyBhIGNsZWFuIGJ1aWxkLCBiZWNhdXNlIGNoYW5nZXMgaW4gSmF2YVNj
cmlwdENvcmUgZG9uJ3QgY2F1c2UKLSAgICAgICAgYW55dGhpbmcgaW4gSmF2YVNjcmlwdEdsdWUg
dG8gZ2V0IHJlYnVpbHQuCi0KLSAgICAgICAgKiBKU1J1bi5jcHA6Ci0gICAgICAgICogSlNVdGls
cy5oOgotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLQotMjAwOC0xMS0wNCAgQ2FtZXJv
biBad2FyaWNoICA8endhcmljaEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBSb3dlLgotCi0gICAgICAgIFJlbW92ZSBKYXZhU2NyaXB0R2x1ZSBmb3J3YXJkaW5nIGhlYWRl
cnMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwKLSAgICAgICAgYW5kIGNvcnJlY3QgdGhl
IHBhdGggb2YgdGhlIEV4ZWNTdGF0ZS5oIGZvcndhcmRpbmcgaGVhZGVyLgotCi0gICAgICAgICog
Rm9yd2FyZGluZ0hlYWRlcnMva2pzOiBSZW1vdmVkLgotICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL2tqcy9DVEkuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ranMv
RXhlY1N0YXRlLmg6IFJlbW92ZWQuCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMva2pzL0pT
VmFsdWUuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ranMvUHV0UHJv
cGVydHlTbG90Lmg6IFJlbW92ZWQuCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMva2pzL3Vz
dHJpbmcuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lOiBB
ZGRlZC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0V4ZWNTdGF0ZS5oOiBD
b3BpZWQgZnJvbSBGb3J3YXJkaW5nSGVhZGVycy9ranMvRXhlY1N0YXRlLmguCi0gICAgICAgICog
Y29uZmlnLmg6Ci0KLTIwMDgtMTAtMzEgIFN0ZXBoYW5pZSBMZXdpcyAgPHNsZXdpc0BhcHBsZS5j
b20+Ci0KLSAgICAgICAgRml4IGJ1aWxkIGJ5IGluY2x1ZGluZyByaWdodCBmaWxlcy4KLQotICAg
ICAgICAqIEpTUnVuLmNwcDoKLQotMjAwOC0xMC0zMCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUu
Y29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEpvbiBIb21leWN1dHQuCi0KLSAgICAgICAgRXhw
bGljaXRseSBkZWZhdWx0IHRvIGJ1aWxkaW5nIGZvciBvbmx5IHRoZSBuYXRpdmUgYXJjaGl0ZWN0
dXJlIGluIGRlYnVnIGFuZCByZWxlYXNlIGJ1aWxkcy4KLQotICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZzoKLQotMjAwOC0xMC0yNCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgLSBmaW5pc2ggcm9sbGluZyBvdXQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMyCi0KLSAgICAgICAgKiBKU09iamVj
dC5jcHA6Ci0gICAgICAgIChuYXRpdmVDYWxsRnVuY3Rpb24pOgotICAgICAgICAqIEpTVXRpbHMu
Y3BwOgotICAgICAgICAoS0pTVmFsdWVUb0pTT2JqZWN0KToKLSAgICAgICAgKEpTT2JqZWN0S0pT
VmFsdWUpOgotICAgICAgICAoS0pTVmFsdWVUb0NGVHlwZUludGVybmFsKToKLSAgICAgICAgKEtK
U1ZhbHVlVG9DRlR5cGUpOgotICAgICAgICAqIEpTVXRpbHMuaDoKLSAgICAgICAgKiBKU1ZhbHVl
V3JhcHBlci5jcHA6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNWYWx1ZVdyYXBwZXIpOgot
ICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkdldFZhbHVlKToKLSAgICAgICAgKEpTVmFsdWVXcmFw
cGVyOjpKU09iamVjdENvcHlQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNP
YmplY3RTZXRQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RDYWxs
RnVuY3Rpb24pOgotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmg6Ci0gICAgICAgICogVXNlck9i
amVjdEltcC5jcHA6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpjYWxsQXNGdW5jdGlvbik6Ci0g
ICAgICAgIChVc2VyT2JqZWN0SW1wOjp1c2VyT2JqZWN0R2V0dGVyKToKLSAgICAgICAgKFVzZXJP
YmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdCk6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpw
dXQpOgotICAgICAgICAoVXNlck9iamVjdEltcDo6dG9QcmltaXRpdmUpOgotICAgICAgICAqIFVz
ZXJPYmplY3RJbXAuaDoKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OmNyZWF0ZVN0cnVjdHVyZUlE
KToKLSAgICAgICAgVXNlIEpTVmFsdWUqIGluc3RlYWQgb2YgSlNWYWx1ZVB0ci4KLQotMjAwOC0x
MC0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgLSByb2xsIG91
dCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzIKLQotICAgICAg
ICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpHZXRWYWx1
ZSk6IEFkZGVkIG1pc3NpbmcgY2FsbCB0byAuZ2V0KCkuCi0gICAgICAgICogSlNWYWx1ZVdyYXBw
ZXIuaDogUHJvdGVjdGVkUHRyPEpTVmFsdWU+IGluc3RlYWQgb2YgUHJvdGVjdGVkUHRyPEpTVmFs
dWVQdHI+LgotCi0yMDA4LTEwLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIC0gZml4IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI5NAotICAgICAgICAgIEJ1ZyAyMTI5
NDogRGV2aXJ0dWFsaXplIGdldE93blByb3BlcnR5U2xvdCgpCi0KLSAgICAgICAgKiBKU1J1bi5j
cHA6Ci0gICAgICAgIChKU0dsdWVHbG9iYWxPYmplY3Q6OkpTR2x1ZUdsb2JhbE9iamVjdCk6IE1v
dmVkIGNvbnN0cnVjdG9yIGhlcmUuCi0gICAgICAgIFNldCB1cCBmbGFncyBpbiBpdHMgbmV3IGxv
Y2F0aW9uIGluIGdsb2JhbCBvYmplY3QgZGF0YSwgYW5kIHNldCB1cAotICAgICAgICBhIHN0cnVj
dHVyZSBmb3IgVXNlck9iamVjdEltcCB0b28uCi0gICAgICAgIChKU1J1bjo6SlNSdW4pOiBBZGRl
ZCBjb2RlIHRvIGdpdmUgdGhlIEpTR2x1ZUdsb2JhbE9iamVjdCBpdHMgb3duIHVuaXF1ZQotICAg
ICAgICBzdHJ1Y3R1cmUsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBkZWZhdWx0IG9uZSBmcm9tIEpT
R2xvYmFsT2JqZWN0LgotCi0gICAgICAgICogSlNSdW4uaDogTWFkZSBKU0dsdWVHbG9iYWxPYmpl
Y3QgdGFrZSBhIHN0cnVjdHVyZSBJRC4gQWxzbyBtb3ZlZAotICAgICAgICB0aGUgZGF0YSBpbnRv
IGEgc2VwYXJhdGUgZGF0YSBvYmplY3QuIEFuZCBhZGRlZCB1c2VyT2JqZWN0U3RydWN0dXJlLAot
ICAgICAgICBhIFN0cnVjdHVyZSB0byBiZSB1c2VkIGJ5IFVzZXJPYmplY3RJbXAuCi0KLSAgICAg
ICAgKiBKU1V0aWxzLmNwcDogUmVtb3ZlZCB1bnVzZWQgc2hhcmVkR2xvYmFsRGF0YSBnbG9iYWwu
Ci0gICAgICAgIChKU09iamVjdEtKU1ZhbHVlKTogUGFzcyBTdHJ1Y3R1cmUgaW4gd2hlbiBjcmVh
dGluZyBVc2VyT2JqZWN0SW1wLgotICAgICAgICAodW5wcm90ZWN0R2xvYmFsT2JqZWN0KTogVXNl
IEpTR2x1ZUdMb2JhbE9iamVjdCB0eXBlIHNwZWNpZmljYWxseS4KLSAgICAgICAgKGluaXRpYWxp
emVHbG9iYWxPYmplY3RLZXkpOiBSZW1vdmVkIGNvZGUgdG8gc2V0IHVwIHVudXNlZCBzaGFyZWRH
bG9iYWxEYXRhLgotICAgICAgICAoZ2V0VGhyZWFkR2xvYmFsT2JqZWN0KTogQWRkZWQuIFNoYXJl
ZCBieSBKU09iamVjdEtKU1ZhbHVlIGFuZAotICAgICAgICBnZXRUaHJlYWRHbG9iYWxFeGVjU3Rh
dGUuIEFsc28gbm93IHBhc3NlcyBpbiBhIHN0cnVjdHVyZSBJRCB3aGVuIGNyZWF0aW5nCi0gICAg
ICAgIHRoZSBnbG9iYWwgb2JqZWN0LgotICAgICAgICAoZ2V0VGhyZWFkR2xvYmFsRXhlY1N0YXRl
KTogQ2hhbmdlZCB0byBjYWxsIGdldFRocmVhZEdsb2JhbE9iamVjdC4KLQotICAgICAgICAqIFVz
ZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6VXNlck9iamVjdEltcCk6
IENoYW5nZWQgdG8gdGFrZSBhIHN0cnVjdHVyZS4KLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6
Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1cmVJRCk6IEFkZGVkLiBSZXR1
cm5zIGEgc3RydWN0dXJlIHdpdGhvdXQKLSAgICAgICAgSGFzU3RhbmRhcmRHZXRPd25Qcm9wZXJ0
eVNsb3Qgc2luY2UgdGhpcyBjbGFzcyBvdmVycmlkZXMgZ2V0T3duUHJvcGVydHlTbG90LgotCi0y
MDA4LTEwLTIwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQ2FtZXJvbiBad2FyaWNoLgotCi0gICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzY2Ci0gICAgICAgIFJFR1JFU1NJT046IDEyIEpT
QyB0ZXN0cyBmYWlsCi0KLSAgICAgICAgVGhlIEpTR2xvYmFsT2JqZWN0IGNvbnN0cnVjdG9yIG5v
IGxvbmdlciB0YWtlcyBhIEpTR2xvYmFsRGF0YQotICAgICAgICBhcyBhbiBhcmd1bWVudC4KLQot
ICAgICAgICAqIEpTUnVuLmNwcDoKLSAgICAgICAgKEpTUnVuOjpKU1J1bik6Ci0gICAgICAgICog
SlNSdW4uaDoKLSAgICAgICAgKEpTR2x1ZUdsb2JhbE9iamVjdDo6SlNHbHVlR2xvYmFsT2JqZWN0
KToKLSAgICAgICAgKiBKU1V0aWxzLmNwcDoKLSAgICAgICAgKGdldFRocmVhZEdsb2JhbEV4ZWNT
dGF0ZSk6Ci0KLTIwMDgtMTAtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgotCi0gICAgICAgIC0gbmV4dCBzdGVwIG9m
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczMgotICAgICAgICAg
IGltcHJvdmUgcGVyZm9ybWFuY2UgYnkgZWxpbWluYXRpbmcgSlNWYWx1ZSBhcyBhIGJhc2UgY2xh
c3MgZm9yIEpTQ2VsbAotCi0gICAgICAgIFJlbW92ZSBtb3N0IHVzZXMgb2YgSlNWYWx1ZSwgd2hp
Y2ggd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHBhdGNoLgotCi0gICAgICAgICogSlNWYWx1
ZVdyYXBwZXIuaDogVXNlIEpTVmFsdWVQdHIgaW5zdGVhZCBvZiBKU1ZhbHVlKi4KLQotMjAwOC0x
MC0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgT2xpdmVyIEh1bnQuCi0KLSAgICAgICAgLSBuZXh0IHN0ZXAgb2YgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMyCi0gICAgICAgICAgaW1wcm92ZSBwZXJmb3Jt
YW5jZSBieSBlbGltaW5hdGluZyBKU1ZhbHVlIGFzIGEgYmFzZSBjbGFzcyBmb3IgSlNDZWxsCi0K
LSAgICAgICAgVHdlYWsgYSBsaXR0bGUgbW9yZSB0byBnZXQgY2xvc2VyIHRvIHdoZXJlIHdlIGNh
biBtYWtlIEpTVmFsdWVQdHIgYSBjbGFzcy4KLQotICAgICAgICAqIEpTT2JqZWN0LmNwcDoKLSAg
ICAgICAgKG5hdGl2ZUNhbGxGdW5jdGlvbik6IENhbGwgYXNPYmplY3QuCi0KLSAgICAgICAgKiBK
U1V0aWxzLmNwcDoKLSAgICAgICAgKEtKU1ZhbHVlVG9KU09iamVjdCk6IFVzZSBKU1ZhbHVlUHRy
IGFuZCBhc09iamVjdC4KLSAgICAgICAgKEpTT2JqZWN0S0pTVmFsdWUpOiBEaXR0by4KLSAgICAg
ICAgKEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5hbCk6IERpdHRvLgotICAgICAgICAoS0pTVmFsdWVU
b0NGVHlwZSk6IERpdHRvLgotICAgICAgICAqIEpTVXRpbHMuaDogRGl0dG8uCi0KLSAgICAgICAg
KiBVc2VyT2JqZWN0SW1wLmNwcDoKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OmNhbGxBc0Z1bmN0
aW9uKTogVXNlIEpTVmFsdWVQdHIgYW5kIGFzT2JqZWN0LgotICAgICAgICAoVXNlck9iamVjdElt
cDo6dXNlck9iamVjdEdldHRlcik6IERpdHRvLgotICAgICAgICAoVXNlck9iamVjdEltcDo6Z2V0
T3duUHJvcGVydHlTbG90KTogRGl0dG8uCi0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpwdXQpOiBE
aXR0by4KLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OnRvUHJpbWl0aXZlKTogRGl0dG8uCi0gICAg
ICAgICogVXNlck9iamVjdEltcC5oOiBEaXR0by4KLQotMjAwOC0xMC0xOCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQ2FtZXJvbiBad2FyaWNo
LgotCi0gICAgICAgIC0gbmV4dCBzdGVwIG9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTczMgotICAgICAgICAgIGltcHJvdmUgcGVyZm9ybWFuY2UgYnkgZWxpbWlu
YXRpbmcgSlNWYWx1ZSBhcyBhIGJhc2UgY2xhc3MgZm9yIEpTQ2VsbAotCi0gICAgICAgIFVzZSBK
U1ZhbHVlUHRyIGV2ZXJ5d2hlcmUgaW5zdGVhZCBvZiBKU1ZhbHVlKi4gSW4gdGhlIGZ1dHVyZSwg
d2UnbGwgYmUKLSAgICAgICAgY2hhbmdpbmcgSlNWYWx1ZVB0ciB0byBiZSBhIGNsYXNzLCBhbmQg
dGhlbiBldmVudHVhbGx5IHJlbmFtaW5nIGl0Ci0gICAgICAgIHRvIEpTVmFsdWUgb25jZSB0aGF0
J3MgZG9uZS4KLQotICAgICAgICAqIEpTT2JqZWN0LmNwcDoKLSAgICAgICAgKiBKU1ZhbHVlV3Jh
cHBlci5jcHA6Ci0gICAgICAgICogVXNlck9iamVjdEltcC5jcHA6Ci0gICAgICAgICogVXNlck9i
amVjdEltcC5oOgotICAgICAgICBSZXBsYWNlIEpTVmFsdWUqIHdpdGggSlNWYWx1ZVB0ci4KLQot
MjAwOC0xMC0xMyAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgotCi0gICAgICAg
IFJ1YmJlciBzdGFtcGVkIGJ5IE1hcmsgUm93ZS4KLSAgICAgICAgCi0gICAgICAgIC0gdXNlIGdj
YyA0LjIgd2hlbiBidWlsZGluZyB3aXRoIFhjb2RlIDMuMSBvciBuZXdlciBvbiBMZW9wYXJkLCBl
dmVuIHRob3VnaCB0aGlzIGlzIG5vdCB0aGUgZGVmYXVsdAotCi0gICAgICAgICogQ29uZmlndXJh
dGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOgotCi0yMDA4LTEwLTA2ICBNYWNpZWogU3RhY2hv
d2lhayAgPG1qc0BhcHBsZS5jb20+Ci0KLSAgICAgICAgTm90IHJldmlld2VkLiBCdWlsZCBmaXgu
Ci0KLSAgICAgICAgLSByZXZlcnQgdG9Cb29sZWFuIGNoYW5nZXMgKHIzNzMzMyBhbmQgcjM3MzM1
KTsgbmVlZCB0byBtYWtlIFdlYkNvcmUgd29yayB3aXRoIHRoZXNlCi0KLSAgICAgICAgKiBKU1V0
aWxzLmNwcDoKLSAgICAgICAgKEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5hbCk6Ci0KLTIwMDgtMTAt
MDYgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KLQotICAgICAgICBOb3QgcmV2
aWV3ZWQuCi0gICAgICAgIAotICAgICAgICAtIGZpeCBidWlsZDsgdG9Cb29sZWFuIG5vIGxvbmdl
ciB0YWtlcyBhbiBFeGVjU3RhdGUKLQotICAgICAgICAqIEpTVXRpbHMuY3BwOgotICAgICAgICAo
S0pTVmFsdWVUb0NGVHlwZUludGVybmFsKToKLQotMjAwOC0xMC0wNCAgTWFyayBSb3dlICA8bXJv
d2VAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyLgotCi0gICAg
ICAgIEFkZCBhICdDaGVjayBGb3IgV2VhayBWVGFibGVzJyBidWlsZCBwaGFzZSB0byBjYXRjaCB3
ZWFrIHZ0YWJsZXMgYXMgZWFybHkgYXMgcG9zc2libGUuCi0KLSAgICAgICAgKiBKYXZhU2NyaXB0
R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotCi0yMDA4LTEwLTAxICBHZW9mZnJleSBH
YXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIgYW5kIENhbWVyb24gWndhcmljaC4KLQotICAgICAgICAqIEpTUnVuLmNwcDoKLSAgICAgICAg
KEpTUnVuOjpFdmFsdWF0ZSk6Ci0gICAgICAgIChKU1J1bjo6Q2hlY2tTeW50YXgpOiBQcm92aWRl
IGEgU291cmNlQ29kZSB0byB0aGUgSW50ZXJwcmV0ZXIsIHNpbmNlCi0gICAgICAgIG90aGVyIEFQ
SXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQuCi0KLTIwMDgtMDktMjkgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBOb3QgcmV2aWV3ZWQuCi0gICAgICAgIAot
ICAgICAgICBGb3J3YXJkaW5nIGhlYWRlcnMgdG8gZml4IHRoZSBidWlsZC4KLQotICAgICAgICAq
IEZvcndhcmRpbmdIZWFkZXJzL2tqcy9DVEkuaDogQ29waWVkIGZyb20gRm9yd2FyZGluZ0hlYWRl
cnMva2pzL0V4ZWNTdGF0ZS5oLgotICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2tqcy91c3Ry
aW5nLmg6IENvcGllZCBmcm9tIEZvcndhcmRpbmdIZWFkZXJzL2tqcy9FeGVjU3RhdGUuaC4KLSAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9tYXNtOiBBZGRlZC4KLSAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9tYXNtL1g4NkFzc2VtYmxlci5oOiBBZGRlZC4KLSAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9wcm9maWxlcjogQWRkZWQuCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
cHJvZmlsZXIvUHJvZmlsZXIuaDogQWRkZWQuCi0KLTIwMDgtMDktMDggIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhayBh
bmQgT2xpdmVyIEh1bnQuCi0KLSAgICAgICAgQWRkIGZvcndhcmRpbmcgaGVhZGVycy4KLQotICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25zLmg6IEFkZGVkLgotICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoVHJhaXRzLmg6IEFkZGVkLgotCi0yMDA4
LTA5LTAyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLSAgICAgICAgCi0gICAgICAgIEltcGxlbWVudGVkIHRoZSBy
ZXN0IG9mIERhcmluJ3MgcmV2aWV3IGNvbW1lbnRzIGZvciB0aGUgMDktMDEgaW5saW5lCi0gICAg
ICAgIGNhY2hpbmcgcGF0Y2guCi0gICAgICAgIAotICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJz
L2tqcy9QdXRQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCi0KLTIwMDgtMDktMDEgIEdlb2ZmcmV5IEdh
cmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KLQotICAgICAgICBGaXJzdCBjdXQgYXQgaW5saW5lIGNhY2hpbmcgZm9yIGFjY2VzcyB0byB2
YW5pbGxhIEphdmFTY3JpcHQgcHJvcGVydGllcy4KLSAgICAgICAgCi0gICAgICAgIFVwZGF0ZWQg
Zm9yIEphdmFTY3JpcHRDb3JlIGNoYW5nZXMuIE1vc3RseSBtZWNoYW5pY2FsIGFkZGl0aW9uIG9m
IFN0cnVjdHVyZUlEcwotICAgICAgICB0byBKYXZhU2NyaXB0R2x1ZSBjbGFzc2VzLCBhbmQgUHV0
UHJvcGVydHlTbG90JiBhcmd1bWVudHMgdG8gcHV0IGZ1bmN0aW9ucy4KLQotMjAwOC0wOC0yMiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIEZpeCBidWls
ZCBmb3IgcmVhbCB0aGlzIHRpbWUuCi0gICAgICAgIAotICAgICAgICAqIFVzZXJPYmplY3RJbXAu
aDoKLQotMjAwOC0wOC0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgot
Ci0gICAgICAgIEZpeCBidWlsZC4KLSAgICAgICAgCi0gICAgICAgICogVXNlck9iamVjdEltcC5j
cHA6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjp0b1ByaW1pdGl2ZSk6Ci0gICAgICAgICogVXNl
ck9iamVjdEltcC5oOgotCi0yMDA4LTA4LTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Vi
a2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KLQotICAgICAgICBC
cmluZyBiYWNrIHNoYXJlZCBKU0dsb2JhbERhdGEgYW5kIGltcGxpY2l0IGxvY2tpbmcsIGJlY2F1
c2UgdG9vIG1hbnkgY2xpZW50cyByZWx5IG9uIGl0LgotCi0gICAgICAgICogSlNCYXNlLmNwcDoK
LSAgICAgICAgKEpTQmFzZTo6UmVsZWFzZSk6Ci0gICAgICAgICogSlNVdGlscy5jcHA6Ci0gICAg
ICAgIChKU09iamVjdEtKU1ZhbHVlKToKLSAgICAgICAgKEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5h
bCk6Ci0gICAgICAgICh1bnByb3RlY3RHbG9iYWxPYmplY3QpOgotICAgICAgICAqIEpTVXRpbHMu
aDoKLSAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5jcHA6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBl
cjo6SlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6
SlNPYmplY3RDb3B5UHJvcGVydHkpOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0
U2V0UHJvcGVydHkpOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0
aW9uKToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlDRlZhbHVlKToKLSAg
ICAgICAgKiBKYXZhU2NyaXB0R2x1ZS5jcHA6Ci0gICAgICAgIChKU1J1bkNyZWF0ZSk6Ci0gICAg
ICAgIChKU1J1bkV2YWx1YXRlKToKLSAgICAgICAgKEpTUnVuQ2hlY2tTeW50YXgpOgotICAgICAg
ICAoSlNDb2xsZWN0KToKLSAgICAgICAgKEpTTG9ja0ludGVycHJldGVyKToKLSAgICAgICAgKEpT
VW5sb2NrSW50ZXJwcmV0ZXIpOgotICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAg
ICAoVXNlck9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24pOgotCi0yMDA4LTA4LTEyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZi4KLQot
ICAgICAgICAtIGVsaW1pbmF0ZSBKU1ZhbHVlOjp0eXBlKCkKLQotICAgICAgICAqIEpTVXRpbHMu
Y3BwOgotICAgICAgICAoS0pTVmFsdWVUb0NGVHlwZUludGVybmFsKTogUmVwbGFjZWQgdXNlcyBv
ZiBKU1ZhbHVlOjp0eXBlKCkgd2l0aAotICAgICAgICBKU1ZhbHVlOjppcyBmdW5jdGlvbnMuCi0g
ICAgICAgICogVXNlck9iamVjdEltcC5jcHA6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOiBEaXR0by4KLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OnRvUHJpbWl0
aXZlKTogVGFrZSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGFyZ3VtZW50Ci0gICAgICAgIGluc3Rl
YWQgb2YgSlNUeXBlIGFyZ3VtZW50LgotICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDogRGl0dG8u
Ci0KLTIwMDgtMDgtMTcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCi0gICAgICAgIAotICAgICAgICBVcGRh
dGVkIHByb2plY3QgZmlsZXMgdG8gWENvZGUgMy4xLgotCi0gICAgICAgICogSmF2YVNjcmlwdEds
dWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLQotMjAwOC0wOC0xNSAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgotCi0gICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEdlb2ZmIEdhcmVu
LgotCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTM5OTE0PiBQbGVhc2UgaW5jbHVkZSBhIF9k
ZWJ1ZyB2ZXJzaW9uIG9mIEphdmFTY3JpcHRDb3JlIGZyYW1ld29yawotCi0gICAgICAgICogQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzogRmFjdG9yIG91dCB0aGUgZGVidWctb25seSBzZXR0
aW5ncyBzbyB0aGF0IHRoZXkgY2FuIHNoYXJlZAotICAgICAgICBiZXR3ZWVuIHRoZSBEZWJ1ZyBj
b25maWd1cmF0aW9uIGFuZCBkZWJ1ZyBQcm9kdWN0aW9uIHZhcmlhbnQuCi0gICAgICAgICogSmF2
YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRW5hYmxlIHRoZSBkZWJ1ZyB2
YXJpYW50LgotCi0yMDA4LTA3LTMxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9y
Zz4KLQotICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBNYWNpZWouCi0KLSAgICAgICAgRWxpbWlu
YXRlIEpTTG9jayAoaXQgd2FzIGFscmVhZHkgZGlzYWJsZWQsIHJlbW92aW5nIHRoZSBzdHViIGlt
cGxlbWVudGFpb24gYW5kIGFsbAotICAgICAgICBjYWxsIHNpdGVzIG5vdykuCi0KLSAgICAgICAg
KiBKU0Jhc2UuY3BwOgotICAgICAgICAoSlNCYXNlOjpSZWxlYXNlKToKLSAgICAgICAgKiBKU1V0
aWxzLmNwcDoKLSAgICAgICAgKEpTT2JqZWN0S0pTVmFsdWUpOgotICAgICAgICAoS0pTVmFsdWVU
b0NGVHlwZUludGVybmFsKToKLSAgICAgICAgKHVucHJvdGVjdEdsb2JhbE9iamVjdCk6Ci0gICAg
ICAgICogSlNVdGlscy5oOgotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKLSAgICAgICAg
KEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKLSAgICAgICAgKEpT
VmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1ZhbHVlV3Jh
cHBlcjo6SlNPYmplY3RTZXRQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNP
YmplY3RDYWxsRnVuY3Rpb24pOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29w
eUNGVmFsdWUpOgotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLSAgICAgICAgKEpTUnVu
Q3JlYXRlKToKLSAgICAgICAgKEpTUnVuRXZhbHVhdGUpOgotICAgICAgICAoSlNSdW5DaGVja1N5
bnRheCk6Ci0gICAgICAgIChKU0NvbGxlY3QpOgotICAgICAgICAoSlNMb2NrSW50ZXJwcmV0ZXIp
OgotICAgICAgICAoSlNVbmxvY2tJbnRlcnByZXRlcik6Ci0gICAgICAgICogVXNlck9iamVjdElt
cC5jcHA6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpjYWxsQXNGdW5jdGlvbik6Ci0KLTIwMDgt
MDctMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgotCi0gICAgICAgIEltcGxlbWVudCBKU0NvbnRleHRHcm91
cCBBUElzIHRvIG1ha2UgY29uY3VycmVudCBleGVjdXRpb24gcG9zc2libGUgZm9yCi0gICAgICAg
IEphdmFTY3JpcHRDb3JlIGNsaWVudHMuCi0KLSAgICAgICAgKiBKU1J1bi5jcHA6Ci0gICAgICAg
IChKU1J1bjo6SlNSdW4pOgotICAgICAgICAqIEpTVXRpbHMuY3BwOgotICAgICAgICAoZ2V0VGhy
ZWFkR2xvYmFsRXhlY1N0YXRlKToKLSAgICAgICAgQ2hhbmdlZCBKYXZhU2NyaXB0R2x1ZSB0byB1
c2UgYSBKU0dsb2JhbERhdGEgb2YgaXRzIG93biwgbm93IHRoYXQgdGhlcmUgaXMgbm8gc2hhcmVk
Ci0gICAgICAgIGluc3RhbmNlLgotCi0yMDA4LTA3LTIzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KLQotICAg
ICAgICBNYWtlIEpTQ2xhc3NSZWYgd29yayB3aXRoIGFueSBjb250ZXh0LCBub3QganVzdCB0aGUg
Zmlyc3Qgb25lIGl0IHdhcyB1c2VkIGluLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0hhc2hNYXAuaDogQWRkZWQuCi0KLTIwMDgtMDctMjIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dh
cmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudCBhbmQgU2Ft
IFdlaW5pZy4KLQotICAgICAgICBOZXh0IHN0ZXAgdG93YXJkIHB1dHRpbmcgZG91YmxlcyBpbiBy
ZWdpc3RlcnM6IFByZXBhcmUgdGhlIFJlZ2lzdGVyIGNsYXNzCi0gICAgICAgIGFuZCBpdHMgY2xp
ZW50cyBmb3IgcmVnaXN0ZXJzIHRoYXQgZG9uJ3QgY29udGFpbiBKU1ZhbHVlKnMuCi0gICAgICAg
IAotMjAwOC0wNy0yMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwOTEyODc+
IFJldmFtcCB0aGUgaGFuZGxpbmcgb2YgQ0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmcgdG8gYmUg
Zml4ZWQgYXQgdGhlIG1ham9yIGNvbXBvbmVudCBvZiB0aGUgdmVyc2lvbiBudW1iZXIuCi0KLSAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnOgotICAgICAgICAqIEluZm8u
cGxpc3Q6Ci0KLTIwMDgtMDctMTggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCi0gICAgICAgIAotICAgICAg
ICBUaHJlZSByZW5hbWVzOgotICAgICAgICAKLSAgICAgICAgIkNhbGxUeXBlTmF0aXZlIiA9PiAi
Q2FsbFR5cGVIb3N0IgotICAgICAgICAiY29kZSIgPT4gImJ5dGVDb2RlIgotICAgICAgICAiZ2Vu
ZXJhdGVkQ29kZSIgPT4gImdlbmVyYXRlZEJ5dGVDb2RlIgotCi0gICAgICAgICogQ2hhbmdlTG9n
OgotICAgICAgICAqIEpTT2JqZWN0LmNwcDoKLSAgICAgICAgKEpTVXNlck9iamVjdDo6Z2V0Q2Fs
bERhdGEpOgotCi0yMDA4LTA3LTE0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9y
Zz4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KLQotICAgICAgICBFbGltaW5h
dGUgcGVyLXRocmVhZCBKYXZhU2NyaXB0IGdsb2JhbCBkYXRhIGluc3RhbmNlIHN1cHBvcnQgYW5k
IG1ha2UgYXJiaXRyYXJ5Ci0gICAgICAgIGdsb2JhbCBkYXRhL2dsb2JhbCBvYmplY3QgY29tYmlu
YXRpb25zIHBvc3NpYmxlLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVh
ZFNwZWNpZmljLmg6IEFkZGVkLgotICAgICAgICAqIEpTUnVuLmNwcDoKLSAgICAgICAgKEpTUnVu
OjpKU1J1bik6Ci0gICAgICAgICogSlNVdGlscy5jcHA6Ci0gICAgICAgIChnZXRUaHJlYWRHbG9i
YWxFeGVjU3RhdGUpOgotICAgICAgICBBZGFwdCB0byB0aGUgbmV3IHdheSBvZiBhc2tpbmcgZm9y
IHNoYXJlZCBKU0dsb2JhbERhdGEuCi0KLTIwMDgtMDctMTAgIE1hcmsgUm93ZSAgPG1yb3dlQGFw
cGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIERl
ZmluZSBXRUJLSVRfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9V0VCS0lUX1ZFUlNJT05fTEFURVNUIHdo
ZW4gYnVpbGRpbmcgV2ViS2l0IHRvIGVuc3VyZSB0aGF0IG5vIHN5bWJvbHMgZW5kIHVwIHdpdGgg
dGhlIHdlYWtfaW1wb3J0IGF0dHJpYnV0ZS4KLQotICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ph
dmFTY3JpcHRHbHVlLnhjY29uZmlnOgotCi0yMDA4LTA3LTA5ICBNYXJrIFJvd2UgIDxtcm93ZUBh
cHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCi0KLSAgICAgICAg
RG9uJ3Qgd2FybiBhYm91dCBkZXByZWNhdGVkIGZ1bmN0aW9ucyBpbiBwcm9kdWN0aW9uIGJ1aWxk
cy4KLQotICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6Ci0gICAgICAgICog
Q29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOgotCi0yMDA4LTA3LTA4ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KLQotICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1ODM2OD4gUkVHUkVTU0lP
TjogQ3Jhc2ggb2NjdXJzIGluIEtKUzo6TWFjaGluZSBhZnRlciBsYXVuY2hpbmcKLSAgICAgICAg
QXBwbGUgSW5zdGFsbGVyCi0KLSAgICAgICAgVGhlIHByb2JsZW0gd2FzIHRoYXQgSlNVc2VyT2Jq
ZWN0OjpnZXRDYWxsRGF0YSgpIHdhcyBzZXR0aW5nIGNhbGwgdHlwZSB0byBuYXRpdmUsIGJ1dAot
ICAgICAgICBsZWZ0IGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiB1bmluaXRpYWxpemVkLgotCi0g
ICAgICAgICogSlNPYmplY3QuY3BwOgotICAgICAgICAoSlNVc2VyT2JqZWN0OjpnZXRDYWxsRGF0
YSk6IEluaXRpYWxpemUgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uLgotICAgICAgICAobmF0aXZl
Q2FsbEZ1bmN0aW9uKTogQ2FsbCBVc2VyT2JqZWN0SW1wOjpjYWxsQXNGdW5jdGlvbigpLgotCi0y
MDA4LTA3LTA0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUnViYmVy
LXN0YW1wZWQgYnkgRGFuIEJlcm5zdGVpbi4KLQotICAgICAgICAqIEpTT2JqZWN0Lmg6IFJlbmFt
ZSB0aGUgaGVhZGVyIGd1YXJkIGFzIGl0IG5vdyBjb25mbGljdHMgd2l0aCB0aGUKLSAgICAgICAg
SlNPYmplY3QgaW4gSmF2YVNjcmlwdENvcmUuCi0KLTIwMDgtMDctMDEgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgotCi0gICAgICAgIERpc2FibGUgSlNMb2NrIGZvciBwZXItdGhyZWFkIGNvbnRleHRzLgotCi0g
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0xvY2tlci5oOiBBZGRlZC4KLSAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkaW5nLmg6IEFkZGVkLgotICAgICAgICAqIEpT
QmFzZS5jcHA6Ci0gICAgICAgIChKU0Jhc2U6OlJlbGVhc2UpOgotICAgICAgICAqIEpTVXRpbHMu
Y3BwOgotICAgICAgICAoSlNPYmplY3RLSlNWYWx1ZSk6Ci0gICAgICAgIChLSlNWYWx1ZVRvQ0ZU
eXBlSW50ZXJuYWwpOgotICAgICAgICAodW5wcm90ZWN0R2xvYmFsT2JqZWN0KToKLSAgICAgICAg
KiBKU1V0aWxzLmg6Ci0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAgICAoSlNW
YWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgotICAgICAgICAoSlNWYWx1
ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5KToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVy
OjpKU09iamVjdFNldFByb3BlcnR5KToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVj
dENhbGxGdW5jdGlvbik6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RDb3B5Q0ZW
YWx1ZSk6Ci0gICAgICAgICogSmF2YVNjcmlwdEdsdWUuY3BwOgotICAgICAgICAoSlNSdW5DcmVh
dGUpOgotICAgICAgICAoSlNSdW5FdmFsdWF0ZSk6Ci0gICAgICAgIChKU1J1bkNoZWNrU3ludGF4
KToKLSAgICAgICAgKEpTQ29sbGVjdCk6Ci0gICAgICAgIChKU0xvY2tJbnRlcnByZXRlcik6Ci0g
ICAgICAgIChKU1VubG9ja0ludGVycHJldGVyKToKLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNw
cDoKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OmNhbGxBc0Z1bmN0aW9uKToKLSAgICAgICAgUGFz
cyBhIHBhcmFtZXRlciAoYWx3YXlzIHRydWUpIHRvIEpTTG9jayBhbmQgSlNMb2NrOjpEcm9wQWxs
TG9ja3MgdG8gaW5kaWNhdGUgdGhhdCBKU0cKLSAgICAgICAgY2xpZW50cyBhbHdheXMgbmVlZCBp
bXBsaWNpdCBtdXRleCBwcm90ZWN0aW9uLgotICAgICAgICBBZGRlZCBpbmNsdWRlcyB0aGF0IGFy
ZSBub3cgbmVlZGVkLgotCi0yMDA4LTA2LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZi4KLQotICAgICAgICAqIEpTVXRpbHMuY3Bw
OiBBZGRlZCBpbmNsdWRlIG9mIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPiBzaW5jZSBqc1N0
cmluZwotICAgICAgICB3aWxsIHNvb24gYmUgY2hhbmdlZCB0byByZXR1cm4gYSBKU1N0cmluZyou
Ci0gICAgICAgICogVXNlck9iamVjdEltcC5jcHA6IERpdHRvLgotCi0yMDA4LTA2LTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZi4K
LQotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVy
OjpKU09iamVjdENhbGxGdW5jdGlvbik6IFVwZGF0ZWQgdG8gdXNlIGdldENhbGxEYXRhIGFuZCBj
YWxsIGluc3RlYWQKLSAgICAgICAgb2YgdGhlIG9sZCBjYWxsQXNGdW5jdGlvbi4KLQotMjAwOC0w
Ni0xNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUHJlcGFyZSBKYXZhU2NyaXB0IGhlYXAg
Zm9yIGJlaW5nIHBlci10aHJlYWQuCi0KLSAgICAgICAgKiBKU1J1bi5jcHA6IChKU1J1bjo6SlNS
dW4pOiBDcmVhdGUgSlNHbHVlR2xvYmFsT2JqZWN0IGluIGEgc2hhcmVkIEpTIGhlYXAuCi0KLSAg
ICAgICAgKiBKU1V0aWxzLmg6IE1hZGUgZ2V0VGhyZWFkR2xvYmFsRXhlY1N0YXRlIGF2YWlsYWJs
ZSB0aHJvdWdob3V0IEpTR2x1ZS4KLQotICAgICAgICAqIEpTVXRpbHMuY3BwOgotICAgICAgICAo
SlNPYmplY3RLSlNWYWx1ZSk6IFBhc3MgYW4gRXhlY1N0YXRlIHdoZXJlIG5vdyByZXF1aXJlZC4K
LSAgICAgICAgKHVucHJvdGVjdEdsb2JhbE9iamVjdCk6Ci0gICAgICAgIChpbml0aWFsaXplR2xv
YmFsT2JqZWN0S2V5KToKLSAgICAgICAgKGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSk6Ci0gICAg
ICAgIE1vdmVkIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIEpTVmFsdWVXcmFwcGVyLmNwcCwgYXMgdGhl
IGdsb2JhbCBleGVjIHN0YXRlIGlzIG5vdyBuZWVkZWQKLSAgICAgICAgZWxzZXdoZXJlLiBJJ20g
bm90IHF1aXRlIHN1cmUgaG93IHRoaXMgcmVsYXRlcyB0byB0aGUgZ2xvYmFsIG9iamVjdCBmcm9t
IEpTUnVuLCBidXQKLSAgICAgICAgc2luY2UgdGhlIG5ldyB1c2VzIGFyZSBhbGwgZm9yIEhlYXAg
YWNjZXNzLCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYW55IGJlaGF2aW9yIGNoYW5nZS4KLQot
ICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLSAgICAgICAgKEpTTG9ja0ludGVycHJldGVy
KTogRG9uJ3QgY2FsbCByZWdpc3RlclRocmVhZCBleHBsaWNpdGx5LCBhcyBKU0xvY2sgd2lsbCBk
byB0aGF0LgotCi0gICAgICAgICogVXNlck9iamVjdEltcC5jcHA6IChVc2VyT2JqZWN0SW1wOjp0
b1ByaW1pdGl2ZSk6IFBhc3MgRXhlY1N0YXRlKiB3aGVyZSBub3cgcmVxdWlyZWQuCi0KLTIwMDgt
MDYtMTcgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KLQotICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc3NTgwMj4gSmF2YVNj
cmlwdEdsdWUgc2hvdWxkIG5vdCBmb3JjZSB1c2Ugb2YgR0NDIDQuMC4KLQotICAgICAgICAqIEph
dmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0KLTIwMDgtMDYtMTYgIE1h
Y2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBB
bGV4ZXkuCi0KLSAgICAgICAgLSByZW1vdmVkIG5lYXJseSB1bnVzZWQgdHlwZXMuaCBhbmQgTG9j
YWxTdG9yYWdlRW50cnkuaCBoZWFkZXJzCi0KLSAgICAgICAgKiBKU1V0aWxzLmg6Ci0KLTIwMDgt
MDYtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgotCi0gICAgICAgIE1ha2UgSWRlbnRpZmllciBjb25zdHJ1
Y3Rpb24gdXNlIGFuIGV4cGxpY2l0bHkgcGFzc2VkIElkZW50aWZpZXJUYWJsZS4KLQotICAgICAg
ICAqIEpTVXRpbHMuY3BwOgotICAgICAgICAoQ0ZTdHJpbmdUb0lkZW50aWZpZXIpOgotICAgICAg
ICAoS0pTVmFsdWVUb0NGVHlwZUludGVybmFsKToKLSAgICAgICAgKiBKU1V0aWxzLmg6Ci0gICAg
ICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2Jq
ZWN0Q29weVByb3BlcnR5TmFtZXMpOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0
Q29weVByb3BlcnR5KToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdFNldFByb3Bl
cnR5KToKLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKLSAgICAgICAgKFVzZXJPYmplY3RJ
bXA6OmdldFByb3BlcnR5TmFtZXMpOgotICAgICAgICBQYXNzIEV4ZWNTdGF0ZSBvciBKU0dsb2Jh
bERhdGEgZXZlcnl3aGVyZS4KLQotMjAwOC0wNi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgLSByZW5hbWUgS0pTOjpMaXN0IHRvIEtKUzo6QXJnTGlzdAotCi0g
ICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpT
T2JqZWN0Q2FsbEZ1bmN0aW9uKToKLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKLSAgICAg
ICAgKFVzZXJPYmplY3RJbXA6OmNhbGxBc0Z1bmN0aW9uKToKLSAgICAgICAgKiBVc2VyT2JqZWN0
SW1wLmg6Ci0KLTIwMDgtMDYtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIC0gbmV3IG5hbWVzIGZvciBhIGZldyBrZXkgSmF2YVNjcmlwdENvcmUgZmlsZXMKLQot
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2tqcy9KU1ZhbHVlLmg6IENvcGllZCBmcm9tIEph
dmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy92YWx1ZS5oLgotICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL2tqcy92YWx1ZS5oOiBSZW1vdmVkLgotICAgICAgICAqIEpTVXRpbHMu
aDoKLQotMjAwOC0wNi0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgLSB1cGRhdGUgZm9yIEphdmFTY3JpcHRDb3JlIGNoYW5nZXMgZm9yIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2OQotICAgICAgICAgIHNwZWVkIHVwIFN1blNw
aWRlciBieSBlbGltaW5hdGluZyB0aGUgdG9PYmplY3QgY2FsbCBmb3IgbW9zdCBnZXQvcHV0L2Rl
bGV0ZQotCi0gICAgICAgICogVXNlck9iamVjdEltcC5jcHA6Ci0gICAgICAgIChVc2VyT2JqZWN0
SW1wOjp1c2VyT2JqZWN0R2V0dGVyKTogUmVtb3ZlZCBvcmlnaW5hbE9iamVjdCBhcmd1bWVudC4K
LSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6IERpdHRvLgotCi0yMDA4LTA2LTAyICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5
IFByb3NrdXJ5YWtvdi4KLQotICAgICAgICBSZW1vdmVkIEpTT2JqZWN0OjpjYWxsLCBzaW5jZSBp
dCBqdXN0IGNhbGxlZCBKU09iamVjdDo6Y2FsbEFzRnVuY3Rpb24uCi0KLSAgICAgICAgU3VuU3Bp
ZGVyIHJlcG9ydHMgbm8gY2hhbmdlLgotCi0yMDA4LTA1LTI4ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCi0gICAg
ICAgIAotICAgICAgICBGaXhlZCB0b3RhbCBkZXN0cnVjdGlvbiBpbiBTb2Z0d2FyZSBVcGRhdGUu
YXBwLgotICAgICAgICAKLSAgICAgICAgVXBkYXRlZCBKYXZhU2NyaXB0R2x1ZSB0byBob25vciBz
cXVpcnJlbGZpc2gncyBuZXcgZ2V0Q2FsbERhdGEgbWVjaGFuaXNtIGZvcgotICAgICAgICBpbmRp
Y2F0aW5nIHRoYXQgYW4gb2JqZWN0IGNhbiBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KLQotMjAw
OC0wNS0xMCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlci4KLQotICAgICAgICAtIEphdmFTY3JpcHRHbHVlIHBhcnQgb2YgZml4
IGZvcjogIlNRVUlSUkVMRklTSDogZnVuY3Rpb24gdG9TdHJpbmcgYnJva2VuIGFmdGVyIGNhbGxp
bmciCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2
OQotICAgICAgICAKLSAgICAgICAgKiBKU1J1bi5jcHA6Ci0gICAgICAgIChKU1J1bjo6RXZhbHVh
dGUpOiBVc2UgVVN0cmluZyB2ZXJzaW9uIG9mIGV2ZWx1YXRlKCkgaW5zdGVhZCBvZgotICAgICAg
ICB0aGUgbm93IGRlcGFydGVkIFVDaGFyKi9sZW5ndGggdmFyaWFudDsgdXNlIG9mIHRoZSBsb3dl
ci1sZXZlbAotICAgICAgICB2ZXJzaW9uIHdhcyBncmF0dWl0b3VzIGluIGFueSBjYXNlLgotICAg
ICAgICAoSlNSdW46OkNoZWNrU3ludGF4KTogRGl0dG8gZm9yIGNoZWNrU3ludGF4KCkuCi0KLTIw
MDgtMDQtMzAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBC
dWlsZCBmaXg6IHN1cHBseSBtaXNzaW5nIHBhcmFtZXRlciB0aGF0IHVzZWQgdG8gYmUgaW1wbGlj
aXQuCi0KLSAgICAgICAgKiBKU1J1bi5jcHA6Ci0gICAgICAgIChKU1J1bjo6RXZhbHVhdGUpOgot
Ci0yMDA4LTAzLTMwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCi0gICAgICAgIAotICAgICAgICBCdWlsZCBmaXgu
Ci0KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVW51c2VkUGFyYW0uaDogQ29waWVk
IGZyb20gRm9yd2FyZGluZ0hlYWRlcnMvd3RmL093blB0ci5oLgotCi0yMDA4LTA1LTEyICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KLQotICAgICAgICBSb2xsIG91dCByZWNl
bnQgIHRocmVhZGluZyBjaGFuZ2VzIChyMzI4MDcsIHIzMjgxMCwgcjMyODE5LCByMzI4MjIpIHRv
IHNpbXBsaWZ5Ci0gICAgICAgIFNxdWlycmVsRmlzaCBtZXJnaW5nLgotCi0gICAgICAgICogSlNV
dGlscy5jcHA6Ci0gICAgICAgIChKU09iamVjdEtKU1ZhbHVlKToKLSAgICAgICAgKiBKU1V0aWxz
Lmg6Ci0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAgICAodW5wcm90ZWN0R2xv
YmFsT2JqZWN0KToKLSAgICAgICAgKGluaXRpYWxpemVHbG9iYWxPYmplY3RLZXkpOgotICAgICAg
ICAoZ2V0VGhyZWFkR2xvYmFsRXhlY1N0YXRlKToKLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS5j
cHA6Ci0gICAgICAgIChKU0NvbGxlY3QpOgotICAgICAgICAoSlNMb2NrSW50ZXJwcmV0ZXIpOgot
ICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6dG9Q
cmltaXRpdmUpOgotCi0yMDA4LTA1LTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0
Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBNYWtl
IEphdmFTY3JpcHRHbHVlIGFuZCBKYXZhU2NyaXB0Q29yZSBBUEkgZnVuY3Rpb25zIGltcGxpY2l0
bHkgY2FsbCBpbml0aWFsaXplVGhyZWFkaW5nCi0gICAgICAgIGZvciB0aGUgc2FrZSBvZiBub24t
V2ViS2l0IGNsaWVudHMuCi0KLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS5jcHA6Ci0gICAgICAg
IChKU1J1bkNyZWF0ZSk6Ci0gICAgICAgIChKU0NvbGxlY3QpOgotICAgICAgICAoSlNDcmVhdGVK
U0FycmF5RnJvbUNGQXJyYXkpOgotICAgICAgICAoSlNMb2NrSW50ZXJwcmV0ZXIpOgotICAgICAg
ICBUaGVzZSBhcmUgYWxsIHBvc3NpYmxlIEphdmFTY3JpcHRHbHVlIGVudHJ5IHBvaW50cy4KLQot
MjAwOC0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODI2Ci0gICAgICAgIE1ha2UgSmF2YVNjcmlwdCBo
ZWFwIHBlci10aHJlYWQKLQotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKLSAgICAgICAg
KiBKU1V0aWxzLmg6Ci0gICAgICAgIE1vdmVkIGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpIHRv
IEpTVXRpbHMgYW5kIG1hZGUgaXQgZXh0ZXJuLCBhcyBFeGVjU3RhdGUgaXMgbm93IG5lZWRlZAot
ICAgICAgICBmb3IgYWxsIEpTIGFsbG9jYXRpb25zLgotCi0gICAgICAgICogSlNVdGlscy5jcHA6
Ci0gICAgICAgIChKU09iamVjdEtKU1ZhbHVlKTogUGFzcyBFeGVjU3RhdGUgdG8gZnVuY3Rpb25z
IHRoYXQgbm93IG5lZWQgaXQuCi0gICAgICAgICh1bnByb3RlY3RHbG9iYWxPYmplY3QpOiBNb3Zl
ZCBmcm9tIEpTVmFsdWVXcmFwcGVyLmNwcC4KLSAgICAgICAgKGluaXRpYWxpemVHbG9iYWxPYmpl
Y3RLZXkpOiBEaXR0by4KLSAgICAgICAgKGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSk6IERpdHRv
LgotCi0gICAgICAgICogVXNlck9iamVjdEltcC5jcHA6IChVc2VyT2JqZWN0SW1wOjp0b1ByaW1p
dGl2ZSk6IFBhc3MgRXhlY1N0YXRlIHRvIGpzU3RyaW5nIGFuZCBqc051bWJlci4KLQotICAgICAg
ICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLSAgICAgICAgKEpTQ29sbGVjdCk6IFVzZSBjdXJyZW50
IHRocmVhZCdzIGhlYXAuCi0gICAgICAgIChKU0xvY2tJbnRlcnByZXRlcik6IFJlbW92ZWQgSlNM
b2NrOjpyZWdpc3RlclRocmVhZCgpLCBiZWNhdXNlIGEgSlMgaGVhcCBkb2Vzbid0IG5lZWQgdG8K
LSAgICAgICAga25vdyBhYm91dCBvdGhlciB0aHJlYWRzLgotCi0yMDA4LTA0LTI1ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KLQotICAgICAgICBGaXggcnVuLXdlYmtpdC10ZXN0cyAtLXRocmVhZGluZwotICAg
ICAgICBhbmQgcHJvdmlzaW9uYWxseSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY2MT4KLSAgICAgICAgUHJveHkgc2VydmVyIGlzc3VlIGluIFN1bmRheSdz
IE5pZ2h0bHkKLQotICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOiBBZGp1c3RlZCBmb3IgdGhl
IG5ldyBtZW1iZXIgYWRkZWQgdG8gQ2xhc3NJbmZvLgotCi0yMDA4LTA0LTI1ICBNYXJrIFJvd2Ug
IDxtcm93ZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24u
Ci0KLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4OTEyNjQ+IERvbid0IGluc3RhbGwgdGhlIEph
dmFTY3JpcHRHbHVlIGhlYWRlcnMKLQotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6Ci0KLTIwMDgtMDQtMjUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KLQotICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAg
IEFkZCBzb21lIGNvbnRlbnQgdG8gYW4gZW1wdHkgSUNVIGhlYWRlciBmaWxlIHRvIHByZXZlbnQg
dmVyaWZpY2F0aW9uIGVycm9ycy4KLQotICAgICAgICAqIGljdS91bmljb2RlL3V0Zl9vbGQuaDoK
LQotMjAwOC0wNC0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgotCi0gICAgICAgIEVuc3VyZSB0aGF0IGRlYnVnIHN5bWJv
bHMgYXJlIGdlbmVyYXRlZCBmb3IgeDg2XzY0IGFuZCBwcGM2NCBidWlsZHMuCi0KLSAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgotCi0yMDA4LTAzLTIwICBNYWNpZWogU3Rh
Y2hvd2lhayAgPG1qc0BhcHBsZS5jb20+Ci0KLSAgICAgICAgLSBmaXggYnVpbGQKLQotICAgICAg
ICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9MaXN0UmVmUHRyLmg6IEFkZGVkLgotCi0yMDA4LTAz
LTAxICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhhdGNoZXIuCi0KLSAgICAgICAgVXBkYXRlIFhjb2RlIGNvbmZpZ3VyYXRpb24gdG8gc3Vw
cG9ydCBidWlsZGluZyBkZWJ1ZyBhbmQgcmVsZWFzZSBmcm9tIHRoZSBteXN0ZXJpb3VzIGZ1dHVy
ZS4KLQotICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6Ci0gICAgICAgICog
Q29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOgotCi0yMDA4LTAyLTI5ICBHZW9m
ZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
aWQgSGFycmlzb24uCi0gICAgICAgIAotICAgICAgICBGaXhlZCA8cmRhcjovL3Byb2JsZW0vNTc2
NTA2Mz4gVE9UIFJFR1JFU1NJT046IFNvZnR3YXJlIFVwZGF0ZSBjcmFzaCBpbgotICAgICAgICBL
SlM6OkNvbGxlY3Rvcjo6Y29sbGVjdCgpIChtaXNzaW5nIEpTTG9jaykKLQotICAgICAgICAqIEpT
VmFsdWVXcmFwcGVyLmNwcDoKLSAgICAgICAgKHVucHJvdGVjdEdsb2JhbE9iamVjdCk6IEFkZGVk
IG1pc3NpbmcgSlNMb2NrLgotCi0yMDA4LTAyLTA1ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCi0KLSAgICAgICAgVXBkYXRl
IHZlcnNpb25pbmcgdG8gc3VwcG9ydCB0aGUgbXlzdGVyaW91cyBmdXR1cmUuCi0KLSAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnOiBBZGQgU1lTVEVNX1ZFUlNJT05fUFJF
RklYXzEwNjAuCi0KLTIwMDgtMDEtMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IGRhcmluLgotICAgICAgICAKLSAgICAgICAgQWRkIGljdSBo
ZWFkZXJzIHRvIEpTRyBpbiBwcmVwYXJhdGlvbiBmb3IgZGVwZW5kaW5nIG9uIDo6VUNoYXIuCi0K
LSAgICAgICAgKiBDb25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgotICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3d0Zi91bmljb2RlOiBBZGRlZC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy93dGYvdW5pY29kZS9Vbmljb2RlLmg6IEFkZGVkLgotICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi91bmljb2RlL2ljdTogQWRkZWQuCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL3VuaWNvZGUvaWN1L1VuaWNvZGVJY3UuaDogQWRkZWQuCi0gICAgICAgICogaWN1OiBD
b3BpZWQgZnJvbSAuLi9KYXZhU2NyaXB0Q29yZS9pY3UuCi0KLTIwMDctMTItMTkgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBCdWlsZCBmaXguCi0KLSAgICAg
ICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVmVjdG9yVHJhaXRzLmg6IEFkZGVkLgotCi0yMDA3
LTEyLTEwICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBNYXJrIFJvd2UuCi0KLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mzk0NjM+
IEJ1bmRsZSB2ZXJzaW9ucyBvbiBUaWdlciBzaG91bGQgYmUgNDUyMy54IG5vdCA1MjMueAotCi0g
ICAgICAgICogQ29uZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZpZzogU29tZSBUaWdlciB2ZXJz
aW9ucyBvZiBYY29kZSBkb24ndCBzZXQgTUFDX09TX1hfVkVSU0lPTl9NQUpPUiwKLSAgICAgICAg
ICBzbyBhc3N1bWUgVGlnZXIgYW5kIHVzZSBhIDQgZm9yIHRoZSBTWVNURU1fVkVSU0lPTl9QUkVG
SVguCi0KLTIwMDctMTItMDQgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBUaGlyZCBzdGVwIGlu
IHJlZmFjdG9yaW5nIEpTR2xvYmFsT2JqZWN0OiBNb3ZlZCBkYXRhIG1lbWJlcnMgYW5kIGRhdGEK
LSAgICAgICAgbWVtYmVyIGFjY2VzcyBmcm9tIEludGVycHJldGVyIHRvIEpTR2xvYmFsT2JqZWN0
LiBSZXBsYWNlZCBKU0ludGVycHJldGVyCi0gICAgICAgIHN1YmNsYXNzIHdpdGggSlNHbG9iYWxP
YmplY3Qgc3ViY2xhc3MuCi0gICAgICAgIAotICAgICAgICAqIEpTUnVuLmNwcDoKLSAgICAgICAg
KEpTUnVuOjpKU1J1bik6Ci0gICAgICAgIChKU1J1bjo6RXZhbHVhdGUpOgotICAgICAgICAoSlNS
dW46OkNoZWNrU3ludGF4KToKLSAgICAgICAgKiBKU1J1bi5oOgotICAgICAgICAoSlNHbHVlR2xv
YmFsT2JqZWN0OjpKU0dsdWVHbG9iYWxPYmplY3QpOgotICAgICAgICAqIEpTVXRpbHMuY3BwOgot
ICAgICAgICAoS0pTVmFsdWVUb0NGVHlwZUludGVybmFsKToKLSAgICAgICAgKiBKU1ZhbHVlV3Jh
cHBlci5jcHA6Ci0gICAgICAgIChnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUpOgotCi0yMDA3LTEy
LTAyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgVXBkYXRlZCB0byBtYXRjaCB0aGUgSmF2YVNj
cmlwdENvcmUgY2hhbmdlIHRvIG1vdmUgdmlydHVhbCBtZXRob2RzIGZyb20KLSAgICAgICAgSW50
ZXJwcmV0ZXIgdG8gSlNHbG9iYWxPYmplY3QuCi0gICAgICAgIAotICAgICAgICAqIEpTUnVuLmNw
cDoKLSAgICAgICAgKiBKU1J1bi5oOgotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKLSAg
ICAgICAgKGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSk6Ci0gICAgICAgICogSmF2YVNjcmlwdEds
dWUuY3BwOgotICAgICAgICAoSlNSdW5Db3B5R2xvYmFsT2JqZWN0KToKLSAgICAgICAgKEpTUnVu
RXZhbHVhdGUpOgotCi0yMDA3LTExLTMwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KLSAgICAgICAgCi0gICAgICAg
IE1vZGlmaWVkIHRvIGZvbGxvdyBuZXcgSlNHbG9iYWxPYmplY3QvSW50ZXJwcmV0ZXIgb3duZXJz
aGlwIHJ1bGVzIAotICAgICAgICBpbiBKYXZhU2NyaXB0Q29yZS4KLQotICAgICAgICAqIEpTUnVu
LmNwcDoKLSAgICAgICAgKEpTUnVuOjpKU1J1bik6Ci0gICAgICAgIChKU1J1bjo6R2V0SW50ZXJw
cmV0ZXIpOgotICAgICAgICAoSlNSdW46OkV2YWx1YXRlKToKLSAgICAgICAgKEpTUnVuOjpDaGVj
a1N5bnRheCk6Ci0gICAgICAgICogSlNSdW4uaDoKLSAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5j
cHA6Ci0gICAgICAgICh1bnByb3RlY3RHbG9iYWxPYmplY3QpOgotICAgICAgICAoaW5pdGlhbGl6
ZUdsb2JhbE9iamVjdEtleSk6Ci0gICAgICAgIChnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUpOgot
Ci0yMDA3LTExLTI5ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgTWFjaWVqLgotCi0gICAgICAgIEZpeCBSRUdSRVNTSU9OKHIyNzg4NSk6IEluc3Rh
bGxlciBoaXRzIGFzc2VydGlvbiBmYWlsdXJlIGluIEphdmFTY3JpcHRHbHVlLgotCi0gICAgICAg
ICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAgICAoZ2V0VGhyZWFkR2xvYmFsRXhlY1N0YXRl
KTogU2V0IHRoZSBnbG9iYWwgb2JqZWN0IG9uIHRoZSBJbnRlcnByZXRlciBiZWZvcmUgdXNpbmcg
aXQuCi0KLTIwMDctMTEtMjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
LSAgICAgICAgCi0gICAgICAgIEJ1aWxkIGZpeC4KLSAgICAgICAgCi0gICAgICAgICogSlNVdGls
cy5jcHA6Ci0gICAgICAgIChLSlNWYWx1ZVRvQ0ZUeXBlSW50ZXJuYWwpOgotICAgICAgICAqIEpT
VmFsdWVXcmFwcGVyLmNwcDoKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlQ
cm9wZXJ0eU5hbWVzKToKLQotMjAwNy0xMS0yMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMuCi0KLSAgICAgICAgRml4IEphdmFTY3JpcHRH
bHVlIHRvIGJ1aWxkIHdpdGhvdXQgd2FybmluZ3MgdXNpbmcgR0NDIDQuMi4KLQotICAgICAgICAq
IENvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6Ci0gICAgICAgICogSlNSdW4uaDoKLQotMjAw
Ny0xMS0xNyAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIEZpeDogPHJkYXI6Ly9wcm9ibGVtLzU2MDcwMzI+
IFJFR1JFU1NJT046IHRlc3RhcGkgZXhpdHMgd2l0aCBhc3NlcnRpb24gZmFpbHVyZSBpbiBkZWJ1
ZyBidWlsZAotICAgICAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NDQwNjU5PiBKU0dsb2JhbENv
bnRleHRDcmVhdGUgdGhyb3dzIGF3YXkgZ2xvYmFsT2JqZWN0Q2xhc3MncyBwcm90b3R5cGUKLSAg
ICAgICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzMwot
Ci0gICAgICAgIFVwZGF0ZSBmb3IgY2hhbmdlcyBpbiBJbnRlcnByZXRlciBtZXRob2Qgc2lnbmF0
dXJlcy4KLQotICAgICAgICAqIEpTUnVuLmg6Ci0KLTIwMDctMTEtMTMgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNz
b24uCi0KLSAgICAgICAgUmVuYW1lZCBTaGFyZWQgdG8gUmVmQ291bnRlZC4KLQotICAgICAgICAq
IEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SZWZDb3VudGVkLmg6IENvcGllZCBmcm9tIEphdmFTY3Jp
cHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TaGFyZWQuaC4KLSAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy93dGYvU2hhcmVkLmg6IFJlbW92ZWQuCi0KLTIwMDctMTEtMTMgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnLgotCi0gICAgICAgIE1vdmVkIFNoYXJlZC5oIGludG8gd3RmIHNvIGl0IGNvdWxkIGJlIHVz
ZWQgaW4gbW9yZSBwbGFjZXMuCi0KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvU2hh
cmVkLmg6IEFkZGVkLgotCi0yMDA3LTExLTA4ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+
Ci0KLSAgICAgICAgQnVpbGQgZml4LgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L01hdGhFeHRyYXMuaDogQ29waWVkIGZyb20gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
TWF0aEV4dHJhcy5oLgotCi0yMDA3LTExLTA1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgQnVpbGQgZml4LgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRl
cnMva2pzL3ZhbHVlLmg6IEFkZGVkLgotCi0yMDA3LTExLTAzICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+Ci0KLSAgICAgICAgQnVpbGQtZml4LgotCi0gICAgICAgICogVXNlck9iamVjdElt
cC5jcHA6Ci0KLTIwMDctMTEtMDMgIERhdmlkIEQuIEtpbHplciAgPGRka2lsemVyQHdlYmtpdC5v
cmc+Ci0KLSAgICAgICAgU29ydCBmaWxlcyguLi4pOyBzZWN0aW9ucyBvZiBYY29kZSBwcm9qZWN0
IGZpbGVzLgotCi0gICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IERhcmluIEFkbGVyLgotCi0gICAg
ICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLQotMjAwNy0x
MC0yNSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmYuCi0gICAgICAgIAotICAgICAgICBNYWtlIEpTRyBidWlsZCBhZ2FpbiBhZnRlciBK
U0dsb2JhbE9iamVjdCBjaGFuZ2UuCi0KLSAgICAgICAgKiBKU1J1bi5jcHA6Ci0gICAgICAgIChK
U1J1bjo6SlNSdW4pOgotICAgICAgICAoSlNSdW46Okdsb2JhbE9iamVjdCk6Ci0gICAgICAgICog
SlNSdW4uaDoKLSAgICAgICAgKEpTSW50ZXJwcmV0ZXI6OkpTSW50ZXJwcmV0ZXIpOgotICAgICAg
ICAqIEpTVXRpbHMuaDoKLQotMjAwNy0xMC0xMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29t
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyLgotCi0gICAgICAgIEZpeCBmb3Ig
PHJkYXI6Ly9wcm9ibGVtLzU0ODg2Nzg+LiAgRGlzYWJsZSBkZWJ1Z2dpbmcgc3ltYm9scyBpbiBw
cm9kdWN0aW9uIGJ1aWxkcyBmb3IgMTAuNAotICAgICAgICBQb3dlclBDIHRvIHByZXZlbnQgYSBo
dWdlIFNUQUJTIHNlY3Rpb24gZnJvbSBiZWluZyBnZW5lcmF0ZWQuCi0KLSAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgotCi0yMDA3LTEwLTA0ICBNYXJrIFJvd2UgIDxtcm93
ZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyLgotCi0gICAgICAgIFN3
aXRjaCB0byBkZWZhdWx0IGxldmVsIG9mIGRlYnVnZ2luZyBzeW1ib2xzIHRvIHJlc29sdmUgPHJk
YXI6Ly9wcm9ibGVtLzU0ODg2Nzg+LgotICAgICAgICBUaGUgImZ1bGwiIGxldmVsIGFwcGVhcnMg
dG8gb2ZmZXIgbm8gb2JzZXJ2YWJsZSBiZW5lZml0cyBldmVuIHRob3VnaCB0aGUgZG9jdW1lbnRh
dGlvbgotICAgICAgICBzdWdnZXN0cyBpdCBiZSB1c2VkIGZvciBkZWFkIGNvZGUgc3RyaXBwaW5n
LiAgVGhpcyBzaG91bGQgYWxzbyBkZWNyZWFzZSBsaW5rIHRpbWVzLgotCi0gICAgICAgICogQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzoKLQotMjAwNy0wOS0wMyAgTWFyayBSb3dlICA8bXJv
d2VAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyLgotCi0gICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NDUyMTY0PiBQcm9kdWN0aW9uIGJ1aWxkIHdpdGggaW4gc3lt
Ym9scyBkaXJlY3RvcnkgaGFzIG5vIGRlYnVnIGluZm8KLQotICAgICAgICBFbmFibGUgZGVidWcg
c3ltYm9sIGdlbmVyYXRpb24gb24gYWxsIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLiAgUHJvZHVjdGlv
biBidWlsZHMgYXJlIHN0cmlwcGVkCi0gICAgICAgIG9mIHN5bWJvbHMgYnkgWGNvZGUgZHVyaW5n
IGRlcGxveW1lbnQgcG9zdC1wcm9jZXNzaW5nLgotCi0gICAgICAgICogQ29uZmlndXJhdGlvbnMv
QmFzZS54Y2NvbmZpZzoKLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgotCi0yMDA3LTA4LTA5ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkuCi0KLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
MDA3MDk+IFZlcnNpb25pbmcgaW4gZGVidWcgYW5kIHJlbGVhc2UgYnVpbGRzIHNob3VsZCBpbmNs
dWRlIG1pbm9yIGFuZCB0aW55IHZlcnNpb24gYmVmb3JlICsKLQotICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL1ZlcnNpb24ueGNjb25maWc6Ci0gICAgICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkIGEgc2hlbGwgc2NyaXB0IHBoYXNlIHRvIG1ha2UgdG8g
ZGVwZW5kZW5jeSBiZXR3ZWVuCi0gICAgICAgIFZlcnNpb24ueGNjb25maWcgYW5kIEluZm8ucGxp
c3QgZXhwbGljaXQgdG8gWGNvZGUuCi0KLTIwMDctMDctMTYgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCi0KLSAgICAgICAgVHVybiBv
ZmYgLVdzaG9ydGVuLTY0LXRvLTMyIHdhcm5pbmcgZm9yIDY0LWJpdCBidWlsZHMuCi0KLSAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgotCi0yMDA3LTA0LTI3ICBNYXJrIFJv
d2UgIDxtcm93ZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyLgotCi0g
ICAgICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogSW1wcm92
ZSBkZXBlbmRlbmNpZXMgaW4gWGNvZGUgcHJvamVjdAotICAgICAgICBieSBtYXJraW5nIEphdmFT
Y3JpcHRHbHVlIGFzIGEgZGVwZW5kZW5jeSBvZiB0ZXN0anNnbHVlLgotCi0yMDA3LTAzLTI0ICBN
YXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBI
eWF0dC4KLQotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IFVzZSBHQ0MgNC4wIGZvciB0ZXN0anNnbHVlLgotCi0yMDA3LTAzLTI0ICBNYXJrIFJvd2Ug
IDxtcm93ZUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFyaW4gQWRs
ZXIuCi0KLSAgICAgICAgKiBDb25maWd1cmF0aW9ucy9KYXZhU2NyaXB0R2x1ZS54Y2NvbmZpZzog
UmVtb3ZlIHVubmVjZXNzYXJ5IElORk9QTElTVF9QUkVQUk9DRVNTLgotCi0yMDA3LTAzLTE5ICBB
bmRyZXcgV2VsbGluZ3RvbiAgPHByb3RvbkB3aXJldGFwcGVkLm5ldD4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBNYWNpZWouCi0KLSAgICAgICAgUmVhbGx5IHNldCBYY29kZSBlZGl0b3IgdG8gdXNl
IDQgc3BhY2UgaW5kZW50YXRpb24gKGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb2Rpbmctc3R5
bGUuaHRtbCkKLQotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6Ci0KLTIwMDctMDMtMTggIEFuZHJldyBXZWxsaW5ndG9uICA8cHJvdG9uQHdpcmV0YXBw
ZWQubmV0PgotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZQotICAgICAgICAKLSAgICAg
ICAgU2V0IFhjb2RlIGVkaXRvciB0byB1c2UgNCBzcGFjZSBpbmRlbnRhdGlvbiAoaHR0cDovL3dl
YmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sKQotCi0gICAgICAgICogSmF2YVNjcmlw
dEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLQotMjAwNy0wMy0xNyAgVGltb3RoeSBI
YXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBS
b3dlLgotCi0gICAgICAgIE1hZGUgVmVyc2lvbi54Y2NvbmZpZyBzbWFydGVyIHdoZW4gYnVpbGRp
bmcgZm9yIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgTm93IHVzZXMgdGhlIDUy
MisgT3BlblNvdXJjZSB2ZXJzaW9uIGZvciBEZWJ1ZyBhbmQgUmVsZWFzZSwgd2hpbGUgdXNpbmcg
dGhlICAgIAotICAgICAgICBmdWxsIDUyMi40IHZlcnNpb24gZm9yIFByb2R1Y3Rpb24gYnVpbGRz
LiBUaGUgc3lzdGVtIHByZWZpeCBpcyBhbHNvIGNvbXB1dGVkCi0gICAgICAgIGJhc2VkIG9uIHRo
ZSBjdXJyZW50IHN5c3RlbSwgc28gNDUyMi40IG9uIFRpZ2VyIGFuZCA1NTIyLjQgb24gTGVvcGFy
ZC4KLQotICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRHbHVlLnhjY29uZmlnOgot
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1ZlcnNpb24ueGNjb25maWc6Ci0KLTIwMDctMDMtMTUg
IFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEpvaG4uCi0KLSAgICAgICAgKiBGYWN0b3JlZCBvdXQgbW9zdCBvZiBvdXIgY29tbW9uIGJ1
aWxkIHNldHRpbmdzIGludG8gLnhjY29uZmlnIGZpbGVzLiBBbnl0aGluZyB0aGF0IHdhcyBjb21t
b24gaW4KLSAgICAgICAgICBlYWNoIGJ1aWxkIGNvbmZpZ3VyYXRpb24gd2FzIGZhY3RvcmVkIG91
dCBpbnRvIHRoZSBzaGFyZWQgLnhjY29uZmlnIGZpbGUuCi0gICAgICAgICogQWRkcyBhIFZlcnNp
b24ueGNjb25maWcgZmlsZSB0byBkZWZpbmUgdGhlIGN1cnJlbnQgZnJhbWV3b3JrIHZlcnNpb24s
IHRvIGJlIHVzZWQgaW4gb3RoZXIgcGxhY2VzLgotICAgICAgICAqIFVzZSB0aGUgbmV3ICQoQlVO
RExFX1ZFUlNJT04pIChkZWZpbmVkIGluIFZlcnNpb24ueGNjb25maWcpIGluIHRoZSBwcmVwcm9j
ZXNzZWQgSW5mby5wbGlzdC4KLSAgICAgICAgKiBVc2UgdGhlIHZlcnNpb25zIGRlZmluZWQgaW4g
VmVyc2lvbi54Y2NvbmZpZyB0byBzZXQgJChEWUxJQl9DVVJSRU5UX1ZFUlNJT04pLgotCi0gICAg
ICAgICogQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzogQWRkZWQuCi0gICAgICAgICogQ29u
ZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOiBBZGRlZC4KLSAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9KYXZhU2NyaXB0R2x1ZS54Y2NvbmZpZzogQWRkZWQuCi0gICAgICAgICogQ29u
ZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZpZzogQWRkZWQuCi0gICAgICAgICogSW5mby5wbGlz
dDoKLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgot
Ci09PT0gU2FmYXJpLTU1MjIuNCA9PT0KLQotMjAwNy0wMy0xMiAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgotICAg
ICAgICAKLSAgICAgICAgVXBkYXRlZCBpbiBsaWdodCBvZiBmaXggZm9yIDxyZGFyOi8vcHJvYmxl
bS80NjgxMDUxPiBJbnN0YWxsZXIgY3Jhc2hlcyAKLSAgICAgICAgaW4gS0pTOjpDb2xsZWN0b3I6
Om1hcmtPdGhlclRocmVhZENvbnNlcnZhdGl2ZWx5KEtKUzo6Q29sbGVjdG9yOjpUaHJlYWQqKSAK
LSAgICAgICAgdHJ5aW5nIHRvIGluc3RhbGwgaUxpZmUgMDYgdXNpbmcgUm9zZXR0YSBvbiBhbiBJ
bnRlbCBNYWNoaW5lCi0gICAgICAgIAotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLSAg
ICAgICAgKEpTTG9ja0ludGVycHJldGVyKTogRW5zdXJlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5
IGJ5IGNhbGxpbmcgCi0gICAgICAgIHJlZ2lzdGVyVGhyZWFkKCkgd2hlbiBleHBsaWNpdGx5IHRh
a2luZyB0aGUgSlNMb2NrLiAoVGhpcyBkb2Vzbid0IGhhcHBlbiAKLSAgICAgICAgYXV0b21hdGlj
YWxseSBhbnltb3JlLikgSSBkb3VidCB0aGlzIGFjdGFsbHkgbWF0dGVycywgYnV0IGluIEphdmFT
Y3JpcHRHbHVlCi0gICAgICAgIHRlcnJpdG9yeSwgdGhhdCBraW5kIG9mIHRoaW5raW5nIHdpbGwg
Z2V0IHlvdSBraWxsZWQuCi0KLTIwMDctMDMtMDYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFw
cGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KLQotICAg
ICAgICBGaXhlZCBhbGwga25vd24gY3Jhc2hlcnMgZXhwb3NlZCBieSBydW4td2Via2l0LXRlc3Rz
IC0tdGhyZWFkZWQgd2hpbGUgdXNpbmcKLSAgICAgICAgYSBQQUMgZmlsZSAoZm9yIG1heGltdW0g
Y2FybmFnZSkuIFNlZSBKYXZhU2NyaXB0Q29yZSBDaGFuZ2VMb2cgZm9yIAotICAgICAgICBtb3Jl
IGRldGFpbHMuCi0KLSAgICAgICAgKiBKU0Jhc2UuY3BwOgotICAgICAgICAoSlNCYXNlOjpSZWxl
YXNlKTogTG9jayB3aGVuIGRlbGV0aW5nLCBiZWNhdXNlIHdlIG1heSBiZSBkZWxldGluZyBhbiBv
YmplY3QKLSAgICAgICAgKGxpa2UgYSBKU1J1bikgdGhhdCBob2xkcyB0aHJlYWQtdW5zYWZlIGRh
dGEuCi0KLSAgICAgICAgKiBKU1V0aWxzLmNwcDoKLSAgICAgICAgKENGU3RyaW5nVG9VU3RyaW5n
KTogRG9uJ3QgbG9jaywgYmVjYXVzZSBvdXIgY2FsbGVyIGxvY2tzLiBBbHNvLCBsb2NraW5nCi0g
ICAgICAgIGluc2lkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aHJlYWQtdW5zYWZlIGRhdGEg
YnkgY29weSB3aWxsIG9ubHkgbWFzawotICAgICAgICB0aHJlYWRpbmcgcHJvYmxlbXMuCi0KLSAg
ICAgICAgKiBKYXZhU2NyaXB0R2x1ZS5jcHA6Ci0gICAgICAgIChKU1J1bkV2YWx1YXRlKTogQWRk
ZWQgbWlzc2luZyBKU0xvY2suCi0gICAgICAgIChKU1J1bkNoZWNrU3ludGF4KTogQ29udmVydGVk
IHRvIEpTTG9jay4KLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgotCi0yMDA3LTAyLTIyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0gICAgICAgIAotICAgICAgICBG
aXhlZCA8cmRhcjovL3Byb2JsZW0vNDk0MjUyOD4gSW5zdGFsbGVyLmFwcCBTdHVjayAiRXhhbWlu
aW5nIGFkZGl0aW9uYWwgCi0gICAgICAgIHZvbHVtZXMuLi4iCi0gICAgICAgIAotICAgICAgICBU
aGUgcHJvYmxlbSB3YXMgdGhhdCBKYXZhU2NyaXB0R2x1ZSBoZWxkIGEgSlNPYmplY3QgaW4gYSBz
dGF0aWMgcG9pbnRlcgotICAgICAgICB3aXRob3V0IHByb3RlY3RpbmcgaXQgZnJvbSBnYXJiYWdl
IGNvbGxlY3Rpb24uIAotICAgICAgICAKLSAgICAgICAgICAgIHNVc2VyT2JqZWN0UHJvdG90eXBl
SW1wICA9IG5ldyBVc2VyT2JqZWN0UHJvdG90eXBlSW1wKCk7Ci0gICAgICAgICAgICBzdGF0aWMg
UHJvdGVjdGVkUHRyPFVzZXJPYmplY3RQcm90b3R5cGVJbXA+IHByb3RlY3RQcm90b3R5cGU7IC8v
IHZhbGlhbnQsIGJyYXZlLCBidXQgdXNlbGVzcwotCi0gICAgICAgIFRocm91Z2ggYW4gaW50ZXJl
c3RpbmcgY29tZWR5IG9mIGVycm9ycywgdGhpcyBvYmplY3Qgd291bGQgYmUgY29sbGVjdGVkIAot
ICAgICAgICBhbmQgdGhlbiBhc3NpZ25lZCBhcyB0aGUgcHJvdG90eXBlIG9mIGFub3RoZXIgb2Jq
ZWN0IGFsbG9jYXRlZCBhdCB0aGUgCi0gICAgICAgIHNhbWUgYWRkcmVzcywgdGh1cyBiZWNvbWlu
ZyBpdHMgb3duIHByb3RvdHlwZS4gKFNlZSBodHRwOi8vd3d3LnppcGxvLmNvbS9ncmFuZHBhLmh0
bQotICAgICAgICBmb3IgZnVydGhlciBleHBsYW5hdGlvbiBvZiB0aGlzIHBoZW5vbWVub24uKSBI
ZW5jZSB0aGUgaW5maW50ZSBsb29wIGluIAotICAgICAgICBwcm9wZXJ0eSBsb29rdXAuCi0gICAg
ICAgIAotICAgICAgICBUaGUgc29sdXRpb24gaXMgZXF1YWxseSBodW1vcm91czogYWxsIG9mIHRo
aXMgY29kZSB3YXMgY29tcGxldGVseSB1c2VsZXNzIC0tCi0gICAgICAgIGl0IG9ubHkgc2VydmVk
IHRvIGNyZWF0ZSBhbiBlbXB0eSBvYmplY3QgaW4gdGhlIHByb3RvdHlwZSBjaGFpbiAtLSBzbwot
ICAgICAgICBJIGp1c3QgcmVtb3ZlZCBpdC4KLQotICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3Bw
OgotICAgICAgICAoVXNlck9iamVjdEltcDo6VXNlck9iamVjdEltcCk6Ci0gICAgICAgICogVXNl
ck9iamVjdEltcC5oOgotCi0yMDA3LTAyLTE5ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFw
cGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZi4KLQotICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDYzNjMwMT4gRGVwcmVjYXRlIEphdmFTY3JpcHRHbHVlCi0KLSAgICAgICAgKiBK
YXZhU2NyaXB0R2x1ZS5oOiBhZGRzIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF81
X0FORF9MQVRFUiB0byBldmVyeXRoaW5nCi0gICAgICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogdXNlIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgdG8g
a2VlcCB0aGUgcHJvamVjdCBidWlsZGluZwotICAgICAgICAqIGNvbmZpZy5oOiBkZWZpbmUgREVQ
UkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSIGFzIGVtcHR5IG9uIG90
aGVyIHN5c3RlbXMKLQotMjAwNy0wMi0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzLgotCi0gICAgICAgIC0gZml4IDxyZGFyOi8v
cHJvYmxlbS81MDAwMjE2PiBKYXZhU2NyaXB0R2x1ZSBmcmFtZXdvcmsgc3RhcnRlZCB0dXJuaW5n
IGFsbCBDRk51bWJlcnMKLSAgICAgICAgICBpbnRvIHNpZ25lZCAzMmJpdCB2YWx1ZXMKLQotICAg
ICAgICBDaXJjdW1zdGFudGlhbCBldmlkZW5jZSBzZWVtcyB0byBpbmRpY2F0ZSB0aGF0IEphdmFT
Y3JpcHRHbHVlIHdhcyBkZXBlbmRpbmcgb24gYSBidWcKLSAgICAgICAgaW4gQ0ZOdW1iZXIgd2hl
cmUgQ0ZOdW1iZXJJc0Zsb2F0VHlwZSB3YXMgcmV0dXJuaW5nIHRydWUgZm9yIDY0LWJpdCBpbnRl
Z2VyIHZhbHVlcy4KLQotICAgICAgICAqIEpTVXRpbHMuY3BwOiAoSlNPYmplY3RLSlNWYWx1ZSk6
IFJlbW92ZWQgdGhlIGNhbGwgdG8gQ0ZOdW1iZXJJc0Zsb2F0VHlwZSBpbiB0aGUKLSAgICAgICAg
Y29udmVyc2lvbiBvZiBudW1lcmljIHZhbHVlcywgYW5kIGFsd2F5cyB1c2Uga0NGTnVtYmVyRG91
YmxlVHlwZSwgc2luY2UgZG91YmxlIGlzCi0gICAgICAgIHRoZSBpbnRlcm5hbCBmb3JtYXQgb2Yg
bnVtYmVycyBpbiBKYXZhU2NyaXB0Q29yZS4gVGhlcmUncyBubyB2YWx1ZSB0byBoYXZpbmcgYQot
ICAgICAgICBzZXBhcmF0ZSBjb2RlIHBhdGggZm9yIGludGVnZXJzLiBUaGVyZSdzIGFsc28gbm8g
cmVhc29uIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgZnJvbSBDRk51bWJlckdl
dFZhbHVlIC0tIGlmIGl0IHJldHVybnMgZmFsc2UgaXQgc3RpbGwgZG9lcyB0aGUgYmVzdCBpdCBj
YW4gdG8gY29udmVydAotICAgICAgICB0byBhIGRvdWJsZSwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50
LgotCi0gICAgICAgICogVXNlck9iamVjdEltcC5jcHA6IChVc2VyT2JqZWN0SW1wOjp0b1N0cmlu
Zyk6IFJlbW92ZWQgYSBzaW1pbGFyIGNvZGUgcGF0aCB0aGF0Ci0gICAgICAgIHRyaWVkIHRvIGhh
bmRsZSBpbnRlZ2VycyBzZXBhcmF0ZSBmcm9tIGRvdWJsZS4gSW5zdGVhZCwgYWx3YXlzIHVzZSBh
IGRvdWJsZS4gRm9yCi0gICAgICAgIGNvbXBhdGliaWxpdHksIHVzZSBhIGZvcm1hdCB3aXRob3V0
IGEgZGVjaW1hbCBwb2ludCB3aGVuIENGTnVtYmVySXNGbG9hdFR5cGUgcmV0dXJucwotICAgICAg
ICBmYWxzZS4gQWxzbyByZW1vdmVkIGEgYm9ndXMgY2FzdCB0byBmbG9hdDsgdGhlICIlZiIgZm9y
bWF0IHN0cmluZyB0YWtlcyBhIGRvdWJsZSwKLSAgICAgICAgbm90IGEgZmxvYXQsIHNvIGFsbCB0
aGUgY2FzdCBkaWQgd2FzIGN1dCBkb3duIG9uIHByZWNpc2lvbi4KLQotMjAwNy0wMS0yNSAgTWFy
ayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4K
LQotICAgICAgICAqIEluZm8ucGxpc3Q6IFVwZGF0ZSBjb3B5cmlnaHQgc3RyaW5nLgotCi0yMDA2
LTEyLTE5ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MTc3
ND4gTG9jYWwgV2ViQ29yZS9XZWJCcm93c2VyIGJ1aWxkcyBmYWlsIGluIDlBMzI4IGR1ZSB0byB3
YXJuaW5nIGFib3V0IE9iakMtMi4wIGxhbmd1YWdlIGZlYXR1cmVzCi0KLSAgICAgICAgKiBKYXZh
U2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotCi09PT0gU2FmYXJpLTUyMS4y
NiA9PT0KLQotMjAwNi0wOC0xNSAgTWFyayBSb3dlICA8b3BlbmRhcndpbi5vcmdAYmRhc2gubmV0
Lm56PgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbSBILgotCi0gICAgICAgIEJ1aWxkIGZpeDog
IERXQVJGIGFuZCAtZ2Z1bGwgYXJlIGluY29tcGF0aWJsZSB3aXRoIHN5bWJvbCBzZXBhcmF0aW9u
LgotCi0gICAgICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
LQotMjAwNi0wOC0xNSAgTWFyayBSb3dlICA8b3BlbmRhcndpbi5vcmdAYmRhc2gubmV0Lm56Pgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IFRpbSBILgotCi0gICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk0Ci0gICAgICAgIEJ1ZyAxMDM5NDogV2ViS2l0IFJl
bGVhc2UgYW5kIFByb2R1Y3Rpb24gY29uZmlndXJhdGlvbnMgc2hvdWxkIGVuYWJsZSBkZWFkIGNv
ZGUgc3RyaXBwaW5nCi0KLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgotCi0yMDA2LTA4LTE1ICBNYXJrIFJvd2UgIDxvcGVuZGFyd2luLm9yZ0BiZGFz
aC5uZXQubno+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEguCi0KLSAgICAgICAgaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODQKLSAgICAgICAgQnVnIDEwMzg0
OiBTd2l0Y2ggdG8gRFdBUkYgZm9yIFJlbGVhc2UgY29uZmlndXJhdGlvbgotCi0gICAgICAgICog
SmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLQotMjAwNi0wOC0wNCAg
U2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgotCi0gICAgICAgIC0gcGF0Y2ggZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTkyCi0gICAgICAgICAgTWFrZSBXZWJDb3JlIChhbmQgZnJp
ZW5kcykgY29tcGlsZSB3aXRoIC1Xc2hvcnRlbi02NC10by0zMgotCi0gICAgICAgICAgKiBBZGRz
IC1Xc2hvcnRlbi02NC10by0zMiBmbGFnIHRvIFhjb2RlIHByb2plY3QuCi0KLSAgICAgICAgKiBK
YXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotCi0yMDA2LTA4LTAzICBT
YW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCi0KLSAgICAgICAgLSBwYXRjaCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNzYKLSAgICAgICAgICBNYWtlIFdlYkNvcmUgY29tcGlsZSB3
aXRoIC1XdW5kZWYKLQotICAgICAgICAgICogQWRkcyAtV3VuZGVmIGZsYWcgdG8gWGNvZGUgcHJv
amVjdAotCi0gICAgICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKLQotMjAwNi0wNy0yOSAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIC0gcGF0Y2ggZm9yIGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwCi0gICAgICAgICAgQWRv
cHQgcGVkYW50aWMgY2hhbmdlcyBmcm9tIHRoZSBVbml0eSBwcm9qZWN0IHRvIGltcHJvdmUgCi0g
ICAgICAgICAgY3Jvc3MtY29tcGlsZXIgY29tcGF0aWJpbGl0eQotCi0gICAgICAgICAgQ2hhbmdl
cyBpbmNsdWRlOgotICAgICAgICAgICogVHVybmluZyBvbiBnY2Mgd2FybmluZyBmb3IgbWlzc2lu
ZyBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgYSBzb3VyY2UgZmlsZQotICAgICAgICAgICAgKEdDQ19X
QVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSBpbiBYY29kZSwgLVduZXdsaW5lIGluIGdjYykuCi0K
LSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotCi09
PT0gU2FmYXJpLTUyMS4xOSA9PT0KLQotMjAwNi0wNy0xOSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2Fy
ZW5AYXBwbGUuY29tPgotCi0gICAgICAgIEZpeGVkIGJ5IERhcmluICYgTWFjaWVqLCByZXZpZXdl
ZCBieSBtZS4KLSAgICAgICAgCi0gICAgICAgIC0gRml4ZWQgPHJkYXI6Ly9wcm9ibGVtLzQ2Mzg5
MzQ+IExlb3BhcmQgOUEyMjc6IEluc3RhbGxlciBjcmFzaGVzIHJpZ2h0IAotICAgICAgICBhZnRl
ciBMQ0EgYW5kIHdoaWxlIHByZXBhcmluZyBJbnN0YWxsYXRpb24KLQotICAgICAgICBDb21waWxl
IHJlbGVhc2UvcHJvZHVjdGlvbiB3aXRoIE5ERUJVRyBzZXQsIHRvIGVuc3VyZSBiaW5hcnkgY29t
cGF0aWJpbGl0eQotICAgICAgICBiZXR3ZWVuIEphdmFTY3JpcHRHbHVlIGFuZCBKYXZhU2NyaXB0
Q29yZS4gSW4gZGVidWcgYnVpbGRzLCBKYXZhU2NyaXB0Q29yZSAKLSAgICAgICAgaW5jbHVkZXMg
YW4gZXh0cmEgZGVidWcgZGF0YSBtZW1iZXIgaW4gSGFzaFNldC4KLSAgICAgICAgCi0gICAgICAg
ICogSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLQotPT09IFNhZmFy
aS01MjEuMTggPT09Ci0KLTIwMDYtMDctMTUgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxl
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICAtIHN3
aXRjaCBwcm9wZXJ0eSBsaXN0cyB0byBiZSB2ZWN0b3Irc2V0IG9mIElkZW50aWZpZXJzIGluc3Rl
YWQgb2YgbGlzdCBvZiBSZWZlcmVuY2VzCi0gICAgICAgIAotICAgICAgICAqIEpTVXRpbHMuY3Bw
OgotICAgICAgICAoS0pTVmFsdWVUb0NGVHlwZUludGVybmFsKTogdXBkYXRlZCBmb3IgSlNDIFNQ
SSBjaGFuZ2VzCi0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAgICAoSlNWYWx1
ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOiBkaXR0bwotICAgICAgICAqIFVz
ZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Z2V0UHJvcGVydHlOYW1l
cyk6IGRpdHRvCi0gICAgICAgICogVXNlck9iamVjdEltcC5oOgotCi09PT0gU2FmYXJpLTUyMS4x
NyA9PT0KLQotMjAwNi0wNy0xNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KLSAgICAgICAgCi0gICAgICAgIC0gVXBkYXRl
ZCBKU0ludGVycHJldGVyIHRvIHdvcmsgd2l0aCBJbnRlcnByZXRlciByZWYtY291bnRpbmcgaW4g
SmF2YVNjcmlwdENvcmUuCi0KLSAgICAgICAgKEpTSW50ZXJwcmV0ZXI6OkpTSW50ZXJwcmV0ZXI6
On5KU0ludGVycHJldGVyKTogTm93IHByb3RlY3RlZCB0byBjYXRjaAotICAgICAgICBtYW51YWwg
ZGVsZXRlLgotCi0yMDA2LTA3LTEyICBBbmRlcnMgQ2FybHNzb24gIDxhY2FybHNzb25AYXBwbGUu
Y29tPgotCi0gICAgICAgIEJ1aWxkIGZpeAotICAgICAgICAKLSAgICAgICAgKiBKU1V0aWxzLmNw
cDoKLSAgICAgICAgKEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5hbCk6Ci0gICAgICAgICogSlNWYWx1
ZVdyYXBwZXIuY3BwOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3Bl
cnR5TmFtZXMpOgotICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9i
amVjdEltcDo6Z2V0UHJvcGVydHlMaXN0KToKLSAgICAgICAgCi09PT0gU2FmYXJpLTUyMS4xNSA9
PT0KLQotMjAwNi0wNy0wNyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIC0gYnVpbGQgZml4Ci0KLSAgICAgICAgKiBKU1V0aWxzLmNwcDoKLSAgICAgICAgKEtK
U1ZhbHVlVG9DRlR5cGVJbnRlcm5hbCk6Ci0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgot
ICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgotCi0y
MDA2LTA3LTAzICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgTWFjaWVqLgotICAgICAgICAKLSAgICAgICAgKiBKU1J1bi5jcHA6Ci0gICAg
ICAgIChKU1J1bjo6Q2hlY2tTeW50YXgpOiBVcGRhdGVkIHRvIHVzZSBuZXcgY2hlY2tTeW50YXgg
c3ludGF4IGluIEpTQy4KLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgotCi09PT0gU2FmYXJpLTUyMS4xNCA9PT0KLQotMjAwNi0wNi0yOCAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUHJlZmVyIHRoZSBTdGFi
cyBkZWJ1Z2dpbmcgc3ltYm9scyBmb3JtYXQgdW50aWwgRFdBUkYgYnVncyBhcmUgZml4ZWQuCi0K
LSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotCi0y
MDA2LTA2LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBraWx6ZXIubmV0PgotCi0gICAgICAg
IFJldmlld2VkIGJ5IFRpbW90aHkuCi0KLSAgICAgICAgKiBJbmZvLnBsaXN0OiBGaXhlZCBjb3B5
cmlnaHQgdG8gaW5jbHVkZSAyMDAzLTIwMDYuCi0KLT09PSBKYXZhU2NyaXB0R2x1ZS01MjEuMTMg
PT09Ci0gICAgICAgIAotMjAwNi0wNi0yMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUu
Y29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycy4KLSAgICAgICAgCi0gICAgICAgIC0g
UmVxdWlyZWQgZm9yIEpTIEFQSTogUmVuYW1lIHByb3BMaXN0IHRvIGdldFByb3BlcnR5TGlzdCBh
bmQgaGF2ZSBpdAotICAgICAgICB0YWtlIGl0cyB0YXJnZXQgcHJvcGVydHkgbGlzdCBieSByZWZl
cmVuY2Ugc28gdGhhdCBzdWJjbGFzc2VzIGNhbgotICAgICAgICBhZGQgcHJvcGVydGllcyB0byB0
aGUgbGlzdCBiZWZvcmUgY2FsbGluZyB0aHJvdWdoIHRvIHRoZWlyIHN1cGVyY2xhc3Nlcy4KLQot
ICAgICAgICAqIEpTVXRpbHMuY3BwOgotICAgICAgICAoS0pTVmFsdWVUb0NGVHlwZUludGVybmFs
KToKLSAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5jcHA6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBl
cjo6SlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6Ci0gICAgICAgICogVXNlck9iamVjdEltcC5j
cHA6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjpnZXRQcm9wZXJ0eUxpc3QpOgotICAgICAgICAq
IFVzZXJPYmplY3RJbXAuaDoKLQotMjAwNi0wNi0xNSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3Ro
eUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgYW5kIERhcmluLgotICAg
ICAgICAKLSAgICAgICAgUHJlZmVyIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc3ltYm9scyBmb3JtYXQg
Zm9yIHVzZSBpbiBYY29kZSAyLjMuCi0KLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgotCi0yMDA2LTA2LTEyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVGltTywgTWFjaWVqLgotICAgICAg
ICAKLSAgICAgICAgLSBKU0dsdWUgcGFydCBvZiBtZXJnaW5nIEludGVycHJldGVySW1wIGludG8g
SW50ZXJwcmV0ZXIuCi0gICAgICAgIAotICAgICAgICBTaW5jZSB0aGVyZSdzIG5vdyBhIGtqcyBm
b3J3YXJkaW5nIGhlYWRlciwgSSBtb3ZlZCBhbGwgZm9yd2FyZGluZwotICAgICAgICBoZWFkZXJz
IGludG8gYSAiRm9yd2FyZGluZ0hlYWRlcnMiIGRpcmVjdG9yeSwgbGlrZSBpbiBXZWJDb3JlLgot
Ci0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnM6IEFkZGVkLgotICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL2tqczogQWRkZWQuCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMva2pzL0V4
ZWNTdGF0ZS5oOiBBZGRlZC4KLSAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGY6IEFkZGVk
LgotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0g
ICAgICAgICogY29uZmlnLmg6Ci0gICAgICAgICogd3RmOiBSZW1vdmVkLgotICAgICAgICAqIHd0
Zi9BbHdheXNJbmxpbmUuaDogUmVtb3ZlZC4KLSAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOiBS
ZW1vdmVkLgotICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6IFJlbW92ZWQuCi0gICAgICAgICog
d3RmL0ZvcndhcmQuaDogUmVtb3ZlZC4KLSAgICAgICAgKiB3dGYvSGFzaENvdW50ZWRTZXQuaDog
UmVtb3ZlZC4KLSAgICAgICAgKiB3dGYvSGFzaFNldC5oOiBSZW1vdmVkLgotICAgICAgICAqIHd0
Zi9Ob25jb3B5YWJsZS5oOiBSZW1vdmVkLgotICAgICAgICAqIHd0Zi9Pd25BcnJheVB0ci5oOiBS
ZW1vdmVkLgotICAgICAgICAqIHd0Zi9Pd25QdHIuaDogUmVtb3ZlZC4KLSAgICAgICAgKiB3dGYv
UGFzc1JlZlB0ci5oOiBSZW1vdmVkLgotICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBSZW1vdmVk
LgotICAgICAgICAqIHd0Zi9SZWZQdHIuaDogUmVtb3ZlZC4KLSAgICAgICAgKiB3dGYvVmVjdG9y
Lmg6IFJlbW92ZWQuCi0KLT09PSBKYXZhU2NyaXB0R2x1ZS01MjEuMTAgPT09Ci0KLTIwMDYtMDUt
MDkgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KLQotICAgICAgICBSdWJiZXIg
c3RhbXBlZCBieSBBbmRlcnMuCi0gICAgICAgIAotICAgICAgICAtIHJlbmFtZWQga3htbGNvcmUg
dG8gd3RmCi0gICAgICAgIAotICAgICAgICBreG1sY29yZSAtLT4gd3RmCi0gICAgICAgIEtYTUxD
b3JlIC0tPiBXVEYKLSAgICAgICAgS1hDIC0tPiBXVEYKLQotICAgICAgICAqIGNvbmZpZy5oOgot
ICAgICAgICAqIGt4bWxjb3JlOiBSZW1vdmVkLgotICAgICAgICAqIGt4bWxjb3JlL0Fsd2F5c0lu
bGluZS5oOiBSZW1vdmVkLgotICAgICAgICAqIGt4bWxjb3JlL0Fzc2VydGlvbnMuaDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBreG1sY29yZS9GYXN0TWFsbG9jLmg6IFJlbW92ZWQuCi0gICAgICAgICog
a3htbGNvcmUvRm9yd2FyZC5oOiBSZW1vdmVkLgotICAgICAgICAqIGt4bWxjb3JlL0hhc2hDb3Vu
dGVkU2V0Lmg6IFJlbW92ZWQuCi0gICAgICAgICoga3htbGNvcmUvSGFzaFNldC5oOiBSZW1vdmVk
LgotICAgICAgICAqIGt4bWxjb3JlL05vbmNvcHlhYmxlLmg6IFJlbW92ZWQuCi0gICAgICAgICog
a3htbGNvcmUvT3duQXJyYXlQdHIuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBreG1sY29yZS9Pd25Q
dHIuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBreG1sY29yZS9QYXNzUmVmUHRyLmg6IFJlbW92ZWQu
Ci0gICAgICAgICoga3htbGNvcmUvUGxhdGZvcm0uaDogUmVtb3ZlZC4KLSAgICAgICAgKiBreG1s
Y29yZS9SZWZQdHIuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBreG1sY29yZS9WZWN0b3IuaDogUmVt
b3ZlZC4KLSAgICAgICAgKiB3dGY6IEFkZGVkLgotCi0yMDA2LTA0LTExICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICAtIHRyeSB0byBmaXggV2luZG93cyBidWlsZAot
Ci0gICAgICAgICoga3htbGNvcmUvSGFzaEZvcndhcmQuaDogUmVtb3ZlZC4KLQotMjAwNi0wNC0x
MCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUnViYmVyLXN0YW1w
ZWQgYnkgSm9obiBTdWxsaXZhbi4KLQotICAgICAgICAtIGFkZGVkIGZvcndhcmRpbmcgaGVhZGVy
cyBmb3IgdGhlIG5ldyBGb3J3YXJkLmggYW5kIEhhc2hGb3J3YXJkLmggZmlsZXMKLQotICAgICAg
ICAqIGt4bWxjb3JlL0ZvcndhcmQuaDogQWRkZWQuCi0gICAgICAgICoga3htbGNvcmUvSGFzaEZv
cndhcmQuaDogQWRkZWQuCi0KLTIwMDYtMDQtMDQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlA
YXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAg
IFRoZSBEZWJ1ZyBhbmQgUmVsZWFzZSBmcmFtZXdvcmtzIGFyZSBub3cgYnVpbHQgd2l0aCBpbnN0
YWxsIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBidWlsZCBwcm9kdWN0cyBkaXJlY3RvcnkuCi0gICAg
ICAgIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3Igb3RoZXIgcHJvamVjdHMgdG8gYnVpbGQgd2l0
aCAtZnJhbWV3b3JrIFdlYkNvcmUgYW5kIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUuIAotCi0g
ICAgICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLQotMjAw
Ni0wNC0wMiAgRXJpYyBTZWlkZWwgIDxlc2VpZGVsQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBhbmRlcnNjYS4KLQotICAgICAgICBBZGQgbWlzc2luZyBmb3J3YXJkaW5nIGhlYWRl
ci4KLQotICAgICAgICAqIGt4bWxjb3JlL1ZlY3Rvci5oOiBBZGRlZC4KLQotMjAwNi0wMy0zMSAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgotCi0gICAgICAgIC0gRml4ZWQgPHJkYXI6Ly9wcm9ibGVtLzQ0MzA4MzY+
IEphdmFTY3JpcHQgcGF0Y2ggY3Jhc2hpbmcgUXVhcnR6Ci0gICAgICAgIENvbXBvc2VyCi0KLSAg
ICAgICAgSlNWYWx1ZVdyYXBwZXJzIHVzZWQgdG8gaG9sZCBvbiB0byB0aGUgRXhlY1N0YXRlIHRo
YXQgcGVydGFpbmVkIGF0Ci0gICAgICAgIHRoZSB0aW1lIG9mIHRoZWlyIGNyZWF0aW9uLiBTaW5j
ZSBFeGVjU3RhdGVzIGFyZSB0cmFuc2llbnQsIHRoYXQKLSAgICAgICAgZGVzaWduIHdhcyB0b3Rh
bGx5IGJvZ3VzLCBhbmQgaXQgd291bGQgY3Jhc2ggb25jZSB0aGUgRXhlY1N0YXRlIGhhZAotICAg
ICAgICBiZWVuIGRlYWxsb2NhdGVkLgotCi0gICAgICAgIFVuZm9ydHVuYXRlbHksIHRoZXJlJ3Mg
bm8gY2xlYW4gc29sdXRpb24gdG8gdGhpcyBwcm9ibGVtLCBzaW5jZQotICAgICAgICB0aGUgSlNH
bHVlIEFQSSBoYXMgbm8gbm90aW9uIG9mIHN0YXRlLiBUaGUgc29sdXRpb24gaGVyZSBpcyB0byB1
c2UKLSAgICAgICAgYSBzaGFyZWQsIGdsb2JhbCBFeGVjU3RhdGUgZm9yIHRoZSBwdXJwb3NlIG9m
IEpTR2x1ZSBjYWxscy4gR2l2ZW4KLSAgICAgICAgdGhlIHByZS1leGlzdGluZyBsaW1pdGF0aW9u
cyBpbiB0aGUgSlNHbHVlIEFQSSwgdGhpcyBkZXNpZ24KLSAgICAgICAgc2hvdWxkbid0IGFjdHVh
bGx5IGludHJvZHVjZSBhbnkgbmV3IGxpbWl0YXRpb25zIChzZWUgY29tbWVudHMgaW4KLSAgICAg
ICAgSlNWYWx1ZVdyYXBwZXIuY3BwKS4KLQotICAgICAgICBJIHRlc3RlZCB3aXRoIFF1YXJ0eiBD
b21wb3NlciBhbmQgUEFDIGZpbGVzLCBuZWl0aGVyIG9mIHdoaWNoIGFyZQotICAgICAgICBsYXlv
dXQtdGVzdGFibGUuCi0gICAgICAgIAotICAgICAgICAqIEpTVXRpbHMuY3BwOgotICAgICAgICAo
S0pTVmFsdWVUb0pTT2JqZWN0KToKLSAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5jcHA6Ci0gICAg
ICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNWYWx1ZVdyYXBwZXIpOgotICAgICAgICAoSlNWYWx1ZVdy
YXBwZXI6OkdldFZhbHVlKToKLSAgICAgICAgKGdldFByb2Nlc3NHbG9iYWxFeGVjU3RhdGUpOgot
ICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgotICAg
ICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5KToKLSAgICAgICAgKEpT
VmFsdWVXcmFwcGVyOjpKU09iamVjdFNldFByb3BlcnR5KToKLSAgICAgICAgKEpTVmFsdWVXcmFw
cGVyOjpKU09iamVjdENhbGxGdW5jdGlvbik6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNP
YmplY3RDb3B5Q0ZWYWx1ZSk6Ci0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuaDoKLQotICAgICAg
ICBBbHNvIGFkZGVkIGEgdGVzdCBoYXJuZXNzIGZpbGUuIEl0IHdhcyBoZWxwZnVsIHdoaWxlIEkg
d2FzIHRlc3RpbmcsCi0gICAgICAgIGFuZCBtYXkgY29tZSBpbiBoYW5keSBpbiB0aGUgZnV0dXJl
OgotICAgICAgICAKLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgotICAgICAgICB0ZXN0anNnbHVlLmNwcDogQWRkZWQuCi0KLTIwMDYtMDMtMjggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
LgotCi0gICAgICAgIC0gYWRkZWQgYSBidWlsZCBzdGVwIHRoYXQgY2hlY2tzIGZvciBpbml0IHJv
dXRpbmVzCi0KLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBhIGN1c3RvbSBidWlsZCBwaGFzZSB0aGF0IGludm9rZXMgdGhlCi0gICAgICAg
IGNoZWNrLWZvci1nbG9iYWwtaW5pdGlhbGl6ZXJzIHNjcmlwdC4KLQotMjAwNi0wMy0wMiAgTWFj
aWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgotCi0gICAgICAgIE5vdCByZXZpZXdlZCwg
YnV0IEkgbm90aWNlZCB0aGVzZSB0cml2aWFsIGV4dHJhIGNoYW5nZXMgd2VyZSBuZWVkZWQgdG8g
YXZvaWQKLSAgICAgICAgYnJlYWtpbmcgdGhlIGJ1aWxkIHdpdGggbXkgcmV2aWV3ZWQgcGF0Y2gg
Zm9yOgotICAgICAgICAKLSAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzM4NwotICAgICAgICAKLSAgICAgICAgQWRkIGNvbmZpZy5oLCBpbmNsdWRlcyBvZiBp
dCwgYW5kIFBsYXRmb3JtLmggZm9yd2FyZGluZyBoZWFkZXIuCi0KLSAgICAgICAgKiBKU0Jhc2Uu
Y3BwOgotICAgICAgICAqIEpTT2JqZWN0LmNwcDoKLSAgICAgICAgKiBKU1J1bi5jcHA6Ci0gICAg
ICAgICogSlNVdGlscy5jcHA6Ci0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAg
ICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKLSAg
ICAgICAgKiBjb25maWcuaDogQWRkZWQuCi0gICAgICAgICoga3htbGNvcmUvUGxhdGZvcm0uaDog
QWRkZWQuCi0KLT09PSBKYXZhU2NyaXB0R2x1ZS01MjEuNyA9PT0KLQotMjAwNi0wMi0xMCAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IGVy
aWMuCi0KLSAgICAgICAgLSBGaXhlZCBidWlsZC4KLQotICAgICAgICAqIFVzZXJPYmplY3RJbXAu
Y3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6dG9QcmltaXRpdmUpOgotICAgICAgICAqIFVz
ZXJPYmplY3RJbXAuaDoKLQotMjAwNi0wMi0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBh
cHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSnVzdGluLgotCi0gICAgICAgIFJlbmFt
ZWQgY29uZmlndXJhdGlvbiBuYW1lcyB0byBEZWJ1ZywgUmVsZWFzZSBhbmQgUHJvZHVjdGlvbi4K
LQotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0K
LTIwMDYtMDItMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIC0g
YWRkZWQgc29tZSBmb3J3YXJkaW5nIGhlYWRlcnMgdG8gbWFrZSBuZXcgSmF2YVNjcmlwdENvcmUg
Y2hhbmdlcyB3b3JrCi0KLSAgICAgICAgKiBreG1sY29yZS9Bc3NlcnRpb25zLmg6IEFkZGVkLgot
ICAgICAgICAqIGt4bWxjb3JlL05vbmNvcHlhYmxlLmg6IEFkZGVkLgotICAgICAgICAqIGt4bWxj
b3JlL093blB0ci5oOiBBZGRlZC4KLSAgICAgICAgKiBreG1sY29yZS9Pd25BcnJheVB0ci5oOiBB
ZGRlZC4KLQotMjAwNi0wMS0xNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+
Ci0KLSAgICAgICAgQWRkaW5nIHRoZSBsaWNlbnNlIGhlYWRlciB0byBhbGwgZmlsZXMgc28gd2Ug
Y2FuCi0gICAgICAgIG1vdmUgSmF2YVNjcmlwdEdsdWUgaW50byB0aGUgb3BlbiBzb3VyY2UgcmVw
b3NpdG9yeS4KLQotICAgICAgICAqIExJQ0VOU0U6IEFkZGVkLgotICAgICAgICAqIEpTQmFzZS5j
cHA6IGxpY2Vuc2UgaGVhZGVyIGFkZGVkLgotICAgICAgICAqIEpTQmFzZS5oOiBkaXR0by4KLSAg
ICAgICAgKiBKU09iamVjdC5jcHA6IGRpdHRvLgotICAgICAgICAqIEpTT2JqZWN0Lmg6IGRpdHRv
LgotICAgICAgICAqIEpTUnVuLmNwcDogZGl0dG8uCi0gICAgICAgICogSlNSdW4uaDogZGl0dG8u
Ci0gICAgICAgICogSlNVdGlscy5jcHA6IGRpdHRvLgotICAgICAgICAqIEpTVXRpbHMuaDogZGl0
dG8uCi0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOiBkaXR0by4KLSAgICAgICAgKiBKU1Zh
bHVlV3JhcHBlci5oOiBkaXR0by4KLSAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS5jcHA6IGRpdHRv
LgotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmg6IGRpdHRvLgotICAgICAgICAqIFVzZXJPYmpl
Y3RJbXAuY3BwOiBkaXR0by4KLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6IGRpdHRvLgotCi0y
MDA1LTEyLTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAgICAg
ICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0gICAgICAgICAg
U2V0IHRhYiB3aWR0aCB0byA4LCBpbmRlbnQgd2lkdGggdG8gNCBhbmQgdXNlcyB0YWJzIHRvIGZh
bHNlIHBlciBmaWxlLgotCi0yMDA1LTEyLTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbiBhbmQgRXJpYyBTZWlkZWwuCi0K
LSAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDky
MwotICAgICAgICAgIHN0b3AgdXNpbmcgPG9zdHJlYW0+IGluIFdlYkNvcmUsIGVsaW1pbmF0aW5n
IHRoZSA8Y21hdGg+IHRyb3VibGVzIGl0IGNhdXNlcwotCi0gICAgICAgICoga3htbGNvcmUvQWx3
YXlzSW5saW5lLmg6IEFkZGVkLgotCi0yMDA1LTEyLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCi0KLSAgICAgICAgKiBKU1J1
bi5jcHA6IChKU1J1bjo6RXZhbHVhdGUpOiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8gSW50ZXJwcmV0
ZXI6OmV2YWx1YXRlLgotCi0yMDA1LTEyLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlci4KLQotICAgICAgICAqIEphdmFT
Y3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZWQgc29tZSByZWR1bmRh
bnQgYnVpbGQKLSAgICAgICAgc2V0dGluZ3MsIHR1cm5lZCBvZmYgcHJlYmluZGluZyBleHBsaWNp
dGx5IGZvciBvdXIgRGV2ZWxvcG1lbnQgYW5kCi0gICAgICAgIERlcGxveW1lbnQgYnVpbGRzLCBy
ZW1vdmUgLmV4cCBmaWxlIGZyb20gc291cmNlcy4gQWxsICJjbGVhbi11cCIuCi0KLT09PSBTYWZh
cmktNTIxfjUgPT09Ci0KLTIwMDUtMTItMTMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KLQotICAgIC0gRml4ZWQgYnVpbGQgYWZ0ZXIgQW5kZXJzJ3MgbGFzdCBjaGVja2luIHRv
IEphdmFTY3JpcHRDb3JlLgotICAgIAotICAgICAgICBSZXZpZXdlZCBieSBkYXJpbi4KLQotICAg
ICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6dXNlck9i
amVjdEdldHRlcik6IFVwZGF0ZWQgdG8gcmVmbGVjdCBuZXcgYXJndW1lbnQgdGhhdCAKLSAgICBn
ZXR0ZXJzIHRha2UgKHVudXNlZCBoZXJlKS4KLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6Ci0K
LTIwMDUtMTItMTMgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBFcmljLgotCi0gICAgLSBhZGRlZCBmb3J3YXJkaW5nIGhlYWRlciBmb3Ig
SGFzaENvdW50ZWRTZXQKLQotICAgICAgICAqIGt4bWxjb3JlL0hhc2hDb3VudGVkU2V0Lmg6IEFk
ZGVkLgotCi0yMDA1LTEyLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAg
ICAgICBSdWJiZXIgc3RhbXBlZCBieSBNYWNpZWouCi0KLSAgICAgICAgLSB1cGRhdGVkIGZvciBL
SlMgY2xhc3MgcmVuYW1pbmcKLQotICAgICAgICAqIG1hbnkgZmlsZXMgYW5kIGZ1bmN0aW9ucwot
Ci0yMDA1LTEyLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBNYWNpZWouCi0KLSAgICAgICAgLSBlbGltaW5hdGVkIHRoZSBvbGQgVW5kZWZp
bmVkKCksIE51bGwoKSwgQm9vbGVhbigpLCBOdW1iZXIoKSwgYW5kIFN0cmluZygpCi0KLSAgICAg
ICAgQ29kZSBub3cgdXNlcyBqc1VuZGVmaW5lZCgpLCBqc051bGwoKSwganNCb29sZWFuKCksIGpz
TnVtYmVyKCksIGFuZCBqc1N0cmluZygpLgotCi0gICAgICAgICogSlNVdGlscy5jcHA6Ci0gICAg
ICAgIChKU09iamVjdEtKU1ZhbHVlKToKLSAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKLSAg
ICAgICAgKFVzZXJPYmplY3RJbXA6OmNhbGxBc0Z1bmN0aW9uKToKLSAgICAgICAgKFVzZXJPYmpl
Y3RJbXA6OnRvUHJpbWl0aXZlKToKLQotMjAwNS0xMi0wNSAgTWFjaWVqIFN0YWNob3dpYWsgIDxt
anNAYXBwbGUuY29tPgotCi0gICAgICAgIC0gYWRkZWQgbmV3IGZvcndhcmRpbmcgaGVhZGVycwot
Ci0gICAgICAgICoga3htbGNvcmUvUGFzc1JlZlB0ci5oOiBBZGRlZC4KLSAgICAgICAgKiBreG1s
Y29yZS9SZWZQdHIuaDogQWRkZWQuCi0KLTIwMDUtMTItMDUgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KLQotICAgICAgICAqIGt4bWxjb3JlL1Bhc3NSZWZQdHIuaDogQWRkZWQu
Ci0KLTIwMDUtMTEtMjYgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KLQotICAg
ICAgICBSdWJiZXIgc3RhbXBlZCBieSBFcmljLgotCi0gICAgLSByZW5hbWVkIEludGVycHJldGVy
TG9jayB0byBKU0xvY2sKLQotICAgICAgICAqIEpTVXRpbHMuY3BwOgotICAgICAgICAoQ0ZTdHJp
bmdUb1VTdHJpbmcpOgotICAgICAgICAoSlNPYmplY3RLSlNWYWx1ZSk6Ci0gICAgICAgIChLSlNW
YWx1ZVRvQ0ZUeXBlSW50ZXJuYWwpOgotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKLSAg
ICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKLSAgICAg
ICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1Zh
bHVlV3JhcHBlcjo6SlNPYmplY3RTZXRQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBl
cjo6SlNPYmplY3RDYWxsRnVuY3Rpb24pOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2Jq
ZWN0Q29weUNGVmFsdWUpOgotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLSAgICAgICAg
KEpTUnVuQ3JlYXRlKToKLSAgICAgICAgKEpTQ29sbGVjdCk6Ci0gICAgICAgIChKU0xvY2tJbnRl
cnByZXRlcik6Ci0gICAgICAgIChKU1VubG9ja0ludGVycHJldGVyKToKLSAgICAgICAgKiBVc2Vy
T2JqZWN0SW1wLmNwcDoKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OmNhbGxBc0Z1bmN0aW9uKToK
LQotMjAwNS0xMS0xNiAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmLgotCi0gICAgVXBkYXRlZCB0byB1c2UgbmV3IEFQSSB0byBk
cm9wIGFsbCBsb2Nrcy4KLQotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmNwcDoKLSAgICAgICAg
KEpTTG9ja0ludGVycHJldGVyKToKLSAgICAgICAgKEpTVW5sb2NrSW50ZXJwcmV0ZXIpOgotICAg
ICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Y2FsbEFz
RnVuY3Rpb24pOgotCi0yMDA1LTExLTE0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgbWpzLgotCi0gICAgICAgIC0gUGFydCBvZiB0aGUg
Zml4IGZvciA8cmRhcjovL3Byb2JsZW0vNDM0MjIxNj4gSW5zdGFsbGVyIGNyYXNoIGluIAotICAg
ICAgICAgIEtKUzo6VmFsdWVJbXA6Om1hcmtlZCgpIHdoZW4gZ2FyYmFnZSBjb2xsZWN0b3IgcnVu
cyBpbnNpZGUgY2FsbCB0byAKLSAgICAgICAgICBDb25zdGFudFZhbHVlczo6aW5pdCgpCi0gICAg
ICAgICAgCi0gICAgICAgIEFkZGVkIGxvY2tpbmcgaW4gSlNSdW5DcmVhdGUsIHNpbmNlIEpTUnVu
OjpKU1J1biBjb25zdHJ1Y3RzIGFuIG9iamVjdC4KLSAgICAgICAgCi0gICAgICAgICogSmF2YVNj
cmlwdEdsdWUuY3BwOgotICAgICAgICAoSlNSdW5DcmVhdGUpOgotCi0yMDA1LTExLTEwICBHZW9m
ZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFj
aWVqLgotCi0gICAgICAgIC0gRml4ZWQgPHJkYXI6Ly9wcm9ibGVtLzQzMzQ0NDU+IGluc3RhbGxl
ciBjcmFzaGVkIG9uIG15IAotICAgICAgICAgIGR1YWwgZzQgNDUwTWh6IGFmdGVyIGNsaWNraW5n
IGxhbmd1YWdlCi0KLSAgICAgICAgLSBSZXZlcnNlZCBiYWNrd2FyZHMgTlVMTCBjaGVjay4KLSAg
ICAgICAgLSBJbnNlcnRlZCBndWFyZHMgYWdhaW5zdCBOVUxMIGZKU1VzZXJPYmplY3QgZGF0YSBt
ZW1iZXIuCi0gICAgICAgIC0gQ2xlYW5lZCB1cCBzb21lIHN0eWxlLgotCi0gICAgICAgICogSlNV
dGlscy5jcHA6Ci0gICAgICAgIChLSlNWYWx1ZVRvQ0ZUeXBlSW50ZXJuYWwpOgotICAgICAgICAq
IFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdEltcDo6flVzZXJPYmplY3RJ
bXApOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24pOgotICAgICAgICAo
VXNlck9iamVjdEltcDo6dXNlck9iamVjdEdldHRlcik6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1w
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgotICAgICAgICAoVXNlck9iamVjdEltcDo6cHV0KToKLSAg
ICAgICAgKFVzZXJPYmplY3RJbXA6Om1hcmspOgotCi0yMDA1LTExLTA0ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KLQotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
Ci0gICAgICAgICAgRml4ZWQgdGhlIEZSQU1FV09SS19TRUFSQ0hfUEFUSFMgdG8gbG9vayBpbiB0
aGUgV2ViS2l0Ci0gICAgICAgICAgRnJhbWV3b3JrcyBmb3IgdGhlIERlZmF1bHQgY29uZmlnLgot
Ci0yMDA1LTExLTAzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBhbmQgVmlja2kuCi0KLSAgICAgICAgKiBKYXZhU2NyaXB0
R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotICAgICAgICAgIENoYW5nZSB0byB1c2Ug
JChTWVNURU1fTElCUkFSWV9ESVIpIGNvbnNpc3RlbnRseSBhbmQgcGxhY2UKLSAgICAgICAgICAk
KE5FWFRfUk9PVCkgaW4gYSBmZXcgc3BvdHMgdG8gbWFrZSBidWlsZC1yb290IHdvcmsuCi0KLTIw
MDUtMTEtMDEgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KLQotICAgIFJldmll
d2VkIGJ5OiBFcmljLgotICAgIAotICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMyNDEwNz4gZ2V0
IEphdmFTY3JpcHRHbHVlIHdvcmtpbmcgd2l0aCBUT1QgSmF2YVNjcmlwdENvcmUgYWdhaW4KLQot
ICAgIC0gcmV2ZXJ0ZWQgYWxsIHRoaXMgc3R1ZmYgdG8gdXNlIFJlZmVyZW5jZUxpc3QgaW5zdGVh
ZCBvZiBJZGVudGlmaWVyU2VxdWVuY2VkU2V0Ci0KLSAgICAgICAgKiBKU1V0aWxzLmNwcDoKLSAg
ICAgICAgKEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5hbCk6Ci0gICAgICAgICogSlNWYWx1ZVdyYXBw
ZXIuY3BwOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5TmFt
ZXMpOgotICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgotICAgICAgICAoVXNlck9iamVjdElt
cDo6cHJvcExpc3QpOgotICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDoKLQotMjAwNS0xMC0xMSAg
VGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+Ci0KLSAgICAgICAgU2V0dXAgdGhl
IHByb3BlciBGcmFtZXdvcmsgc2VhcmNoIHBhdGggZm9yIHRoZSBEZWZhdWx0IGNvbmZpZy4KLSAg
ICAgICAgUHJlcHBpbmcgZm9yIGEgVE9UIHN1Ym1pc3Npb24gYW5kIGJ1aWxkIGJ5IEImSS4KLQot
ICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0KLTIw
MDUtMTAtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEVyaWMuCi0KLSAgICAgICAgLSBjb252ZXJ0ZWQgdGFicyB0byBzcGFjZXMsIE5VTEwg
dG8gMCwgYWRkZWQgc29tZSAodm9pZCksIGdvdCByaWQgb2YgX18gcHJlZml4ZXMKLSAgICAgICAg
ICBpbiBoZWFkZXJzIChyZXNlcnZlZCBmb3IgY29tcGlsZXIvbGlicmFyeSkKLQotICAgICAgICAq
IEluZm8ucGxpc3Q6Ci0gICAgICAgICogSlNCYXNlLmNwcDoKLSAgICAgICAgKiBKU0Jhc2UuaDoK
LSAgICAgICAgKiBKU09iamVjdC5jcHA6Ci0gICAgICAgICogSlNPYmplY3QuaDoKLSAgICAgICAg
KiBKU1J1bi5jcHA6Ci0gICAgICAgICogSlNSdW4uaDoKLSAgICAgICAgKiBKU1V0aWxzLmNwcDoK
LSAgICAgICAgKiBKU1V0aWxzLmg6Ci0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAg
ICAgICAqIEpTVmFsdWVXcmFwcGVyLmg6Ci0gICAgICAgICogSmF2YVNjcmlwdEdsdWUuY3BwOgot
ICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmg6Ci0gICAgICAgICogVXNlck9iamVjdEltcC5jcHA6
Ci0gICAgICAgICogVXNlck9iamVjdEltcC5oOgotCi0yMDA1LTEwLTEwICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICAqIC5jdnNpZ25vcmU6IEFkZGVkLiBJZ25vcmUg
TWFrZWZpbGUuaW4gYW5kIE1ha2VmaWxlLgotCi0yMDA1LTEwLTA3ICBUaW1vdGh5IEhhdGNoZXIg
IDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCi0gICAg
ICAgIAotICAgICAgICBCdWlsZCBmaXgsIG5lZWRlZCB0byBkaXNhYmxlIFJUVEkuIFVwZ3JhZGVk
IHRvIGEgbmF0aXZlIHRhcmdldC4KLQotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6Ci0gICAgICAgICogSW5mby5wbGlzdAotCi0yMDA1LTEwLTA1ICBN
YWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBhbmQgRGFyaW4uCi0KLSAgICA8cmRhcjovL3Byb2JsZW0vNDI2MDUwNj4gUG9ydCBKYXZh
U2NyaXB0R2x1ZSB0byBUT1QgSmF2YVNjcmlwdENvcmUKLQotICAgICAgICAqIEpTUnVuLmNwcDoK
LSAgICAgICAgKEpTUnVuOjpKU1J1bik6Ci0gICAgICAgIChKU1J1bjo6R2xvYmFsT2JqZWN0KToK
LSAgICAgICAgKiBKU1J1bi5oOgotICAgICAgICAoSlNJbnRlcnByZXRlcjo6SlNJbnRlcnByZXRl
cik6Ci0gICAgICAgICogSlNVdGlscy5jcHA6Ci0gICAgICAgIChLSlNWYWx1ZVRvSlNPYmplY3Qp
OgotICAgICAgICAoSlNPYmplY3RLSlNWYWx1ZSk6Ci0gICAgICAgIChLSlNWYWx1ZVRvQ0ZUeXBl
SW50ZXJuYWwpOgotICAgICAgICAoS0pTVmFsdWVUb0NGVHlwZSk6Ci0gICAgICAgICogSlNVdGls
cy5oOgotICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKLSAgICAgICAgKEpTVmFsdWVXcmFw
cGVyOjpKU1ZhbHVlV3JhcHBlcik6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6R2V0VmFsdWUp
OgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgot
ICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5KToKLSAgICAgICAg
KEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdFNldFByb3BlcnR5KToKLSAgICAgICAgKEpTVmFsdWVX
cmFwcGVyOjpKU09iamVjdENhbGxGdW5jdGlvbik6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6
SlNPYmplY3RNYXJrKToKLSAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5oOgotICAgICAgICAqIEph
dmFTY3JpcHRHbHVlLmNwcDoKLSAgICAgICAgKEpTUnVuQ29weUdsb2JhbE9iamVjdCk6Ci0gICAg
ICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLSAgICAgICAg
KiBNYWtlZmlsZS5hbTogQWRkZWQuCi0gICAgICAgICogVXNlck9iamVjdEltcC5jcHA6Ci0gICAg
ICAgIChVc2VyT2JqZWN0UHJvdG90eXBlSW1wOjpHbG9iYWxVc2VyT2JqZWN0UHJvdG90eXBlSW1w
KToKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OlVzZXJPYmplY3RJbXApOgotICAgICAgICAoVXNl
ck9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24pOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Z2V0
UHJvcGVydHlOYW1lcyk6Ci0gICAgICAgIChVc2VyT2JqZWN0SW1wOjp1c2VyT2JqZWN0R2V0dGVy
KToKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdCk6Ci0gICAgICAg
IChVc2VyT2JqZWN0SW1wOjpwdXQpOgotICAgICAgICAoVXNlck9iamVjdEltcDo6dG9QcmltaXRp
dmUpOgotICAgICAgICAoVXNlck9iamVjdEltcDo6bWFyayk6Ci0gICAgICAgICogVXNlck9iamVj
dEltcC5oOgotICAgICAgICAqIGt4bWxjb3JlL0Zhc3RNYWxsb2MuaDogQWRkZWQuCi0gICAgICAg
ICoga3htbGNvcmUvSGFzaFNldC5oOiBBZGRlZC4KLQotMjAwNS0wOS0xNCAgTWFjaWVqIFN0YWNo
b3dpYWsgIDxtanNAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmLgotCi0g
ICAgLSBmaXhlZCA8cmRhcjovL3Byb2JsZW0vNDIxNDc4Mz4gUkVHUkVTU0lPTjoga2pzX2Zhc3Rf
bWFsbG9jIGNyYXNoIGR1ZSB0byBsYWNrIG9mIGxvY2tpbmcgb24gbXVsdGlwbGUgdGhyZWFkcyAo
c2VlbiBzZWxlY3Rpbmcgdm9sdW1lcyBpbiB0aGUgaW5zdGFsbGVyKQotCi0gICAgTWFrZSBzdXJl
IHRvIGxvY2sgdXNpbmcgdGhlIEludGVycHJldGVyTG9jayBjbGFzcyBpbiBhbGwgcGxhY2VzIHRo
YXQgbmVlZCBpdAotICAgIChpbmNsdWRpbmcgYW55dGhpbmcgdGhhdCB1c2VzIHRoZSBjb2xsZWN0
b3IsIHRoZSBwYXJzZXIsIHRoZSBwcm90ZWN0IGNvdW50IGhhc2ggdGFibGUsCi0gICAgYW5kIGFu
eXRoaW5nIHRoYXQgYWxsb2NhdGVzIHZpYSBmYXN0X21hbGxvYykuCi0KLSAgICAgICAgKiBKU1V0
aWxzLmNwcDoKLSAgICAgICAgKENGU3RyaW5nVG9VU3RyaW5nKToKLSAgICAgICAgKEpTT2JqZWN0
S0pTVmFsdWUpOgotICAgICAgICAoS0pTVmFsdWVUb0NGVHlwZUludGVybmFsKToKLSAgICAgICAg
KiBKU1V0aWxzLmg6Ci0gICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgotICAgICAgICAoSlNW
YWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgotICAgICAgICAoSlNWYWx1
ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5KToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVy
OjpKU09iamVjdFNldFByb3BlcnR5KToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVj
dENhbGxGdW5jdGlvbik6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RDb3B5Q0ZW
YWx1ZSk6Ci0gICAgICAgICogSmF2YVNjcmlwdEdsdWUuY3BwOgotICAgICAgICAoSlNDb2xsZWN0
KToKLQotMjAwNS0wOS0yNyAgQWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBhcHBsZS5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgotCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjIz
Mjk3PiBKYXZhU2NyaXB0R2x1ZTogU3VibWl0IDY0LWJpdCBjb21wYXRpYmxlIHZlcnNpb25zIG9m
IHlvdXIgQVBJIGFuZCBTUElzIGJ5IFNlcHRlbWJlciAxNQotCi0gICAgICAgICogSmF2YVNjcmlw
dEdsdWUuaDogQ2hhbmdlZCBVSW50MzIgdG8gQ0ZUeXBlSUQgZm9yIEpTVHlwZUlECi0KLTIwMDUt
MDktMDYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICAtdXBn
cmFkZWQgcHJvamVjdCBmaWxlcyB0byBYQ29kZSAyLjEKLQotICAgICAgICAqIEphdmFTY3JpcHRH
bHVlLnBicHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZWQuCi0gICAgICAgICogSmF2YVNjcmlw
dEdsdWUueGNvZGVwcm9qLy5jdnNpZ25vcmU6IEFkZGVkLgotICAgICAgICAqIEphdmFTY3JpcHRH
bHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgotCi0yMDA1LTA5LTAxICBNYWNp
ZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUnViYmVyIHN0YW1wZWQg
YnkgaHlhdHQuCi0KLSAgICAtIGluaXRpYWwgaW1wb3J0IG9mIEphdmFTY3JpcHRHbHVlIGludG8g
b3VyIHJlcG9zaXRvcnkKLQotICAgICAgICAqIEVuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmlu
Z3M6IEFkZGVkLgotICAgICAgICAqIEpTQmFzZS5jcHA6IEFkZGVkLgotICAgICAgICAoSlNCYXNl
OjpKU0Jhc2UpOgotICAgICAgICAoSlNCYXNlOjp+SlNCYXNlKToKLSAgICAgICAgKEpTQmFzZTo6
UmV0YWluKToKLSAgICAgICAgKEpTQmFzZTo6UmVsZWFzZSk6Ci0gICAgICAgIChKU0Jhc2U6OlJl
dGFpbkNvdW50KToKLSAgICAgICAgKEpTQmFzZTo6R2V0VHlwZUlEKToKLSAgICAgICAgKEpTQmFz
ZTo6Q29weURlc2NyaXB0aW9uKToKLSAgICAgICAgKEpTQmFzZTo6RXF1YWwpOgotICAgICAgICAq
IEpTQmFzZS5oOiBBZGRlZC4KLSAgICAgICAgKiBKU09iamVjdC5jcHA6IEFkZGVkLgotICAgICAg
ICAoSlNVc2VyT2JqZWN0OjpKU1VzZXJPYmplY3QpOgotICAgICAgICAoSlNVc2VyT2JqZWN0Ojp+
SlNVc2VyT2JqZWN0KToKLSAgICAgICAgKEpTVXNlck9iamVjdDo6Q29weVByb3BlcnR5TmFtZXMp
OgotICAgICAgICAoSlNVc2VyT2JqZWN0OjpDb3B5UHJvcGVydHkpOgotICAgICAgICAoSlNVc2Vy
T2JqZWN0OjpTZXRQcm9wZXJ0eSk6Ci0gICAgICAgIChKU1VzZXJPYmplY3Q6OkltcGxlbWVudHND
YWxsKToKLSAgICAgICAgKEpTVXNlck9iamVjdDo6Q2FsbEZ1bmN0aW9uKToKLSAgICAgICAgKEpT
VXNlck9iamVjdDo6Q29weUNGVmFsdWUpOgotICAgICAgICAoSlNVc2VyT2JqZWN0OjpFcXVhbCk6
Ci0gICAgICAgIChKU1VzZXJPYmplY3Q6Ok1hcmspOgotICAgICAgICAoSlNVc2VyT2JqZWN0OjpH
ZXREYXRhKToKLSAgICAgICAgKiBKU09iamVjdC5oOiBBZGRlZC4KLSAgICAgICAgKEpTVXNlck9i
amVjdDo6RGF0YVR5cGUpOgotICAgICAgICAqIEpTUnVuLmNwcDogQWRkZWQuCi0gICAgICAgIChK
U1J1bjo6SlNSdW4pOgotICAgICAgICAoSlNSdW46On5KU1J1bik6Ci0gICAgICAgIChKU1J1bjo6
RmxhZ3MpOgotICAgICAgICAoSlNSdW46OkdldFNvdXJjZSk6Ci0gICAgICAgIChKU1J1bjo6R2xv
YmFsT2JqZWN0KToKLSAgICAgICAgKEpTUnVuOjpHZXRJbnRlcnByZXRlcik6Ci0gICAgICAgIChK
U1J1bjo6RXZhbHVhdGUpOgotICAgICAgICAoSlNSdW46OkNoZWNrU3ludGF4KToKLSAgICAgICAg
KiBKU1J1bi5oOiBBZGRlZC4KLSAgICAgICAgKEpTSW50ZXJwcmV0ZXI6OkpTSW50ZXJwcmV0ZXIp
OgotICAgICAgICAoSlNJbnRlcnByZXRlcjo6SlNJbnRlcnByZXRlcjo6fkpTSW50ZXJwcmV0ZXIp
OgotICAgICAgICAoSlNJbnRlcnByZXRlcjo6RmxhZ3MpOgotICAgICAgICAqIEpTVXRpbHMuY3Bw
OiBBZGRlZC4KLSAgICAgICAgKENGU3RyaW5nVG9VU3RyaW5nKToKLSAgICAgICAgKFVTdHJpbmdU
b0NGU3RyaW5nKToKLSAgICAgICAgKENGU3RyaW5nVG9JZGVudGlmaWVyKToKLSAgICAgICAgKElk
ZW50aWZpZXJUb0NGU3RyaW5nKToKLSAgICAgICAgKEtKU1ZhbHVlVG9KU09iamVjdCk6Ci0gICAg
ICAgIChKU09iamVjdEtKU1ZhbHVlKToKLSAgICAgICAgKEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5h
bCk6Ci0gICAgICAgIChLSlNWYWx1ZVRvQ0ZUeXBlKToKLSAgICAgICAgKEdldENGTnVsbCk6Ci0g
ICAgICAgICogSlNVdGlscy5oOiBBZGRlZC4KLSAgICAgICAgKFJldGFpbkNGVHlwZSk6Ci0gICAg
ICAgIChSZWxlYXNlQ0ZUeXBlKToKLSAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5jcHA6IEFkZGVk
LgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTVmFsdWVXcmFwcGVyKToKLSAgICAgICAgKEpT
VmFsdWVXcmFwcGVyOjp+SlNWYWx1ZVdyYXBwZXIpOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6
OkdldFZhbHVlKToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpHZXRFeGVjU3RhdGUpOgotICAg
ICAgICAoSlNWYWx1ZVdyYXBwZXI6OkdldEpTT2JlY3RDYWxsQmFja3MpOgotICAgICAgICAoSlNW
YWx1ZVdyYXBwZXI6OkpTT2JqZWN0RGlzcG9zZSk6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6
SlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6Ci0gICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNP
YmplY3RDb3B5UHJvcGVydHkpOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0U2V0
UHJvcGVydHkpOgotICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0aW9u
KToKLSAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlDRlZhbHVlKToKLSAgICAg
ICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdE1hcmspOgotICAgICAgICAqIEpTVmFsdWVXcmFw
cGVyLmg6IEFkZGVkLgotICAgICAgICAqIEphdmFTY3JpcHRHbHVlLmNwcDogQWRkZWQuCi0gICAg
ICAgIChKU1NldENGTnVsbCk6Ci0gICAgICAgIChKU0dldENGTnVsbCk6Ci0gICAgICAgIChKU1Jl
dGFpbik6Ci0gICAgICAgIChKU1JlbGVhc2UpOgotICAgICAgICAoSlNDb3B5RGVzY3JpcHRpb24p
OgotICAgICAgICAoSlNFcXVhbCk6Ci0gICAgICAgIChKU0dldFR5cGVJRCk6Ci0gICAgICAgIChK
U0dldFJldGFpbkNvdW50KToKLSAgICAgICAgKEpTT2JqZWN0Q3JlYXRlKToKLSAgICAgICAgKEpT
T2JqZWN0Q3JlYXRlSW50ZXJuYWwpOgotICAgICAgICAoSlNPYmplY3RDb3B5Q0ZWYWx1ZSk6Ci0g
ICAgICAgIChKU09iamVjdEdldERhdGEpOgotICAgICAgICAoSlNPYmplY3RDb3B5UHJvcGVydHkp
OgotICAgICAgICAoSlNPYmplY3RTZXRQcm9wZXJ0eSk6Ci0gICAgICAgIChKU09iamVjdENhbGxG
dW5jdGlvbik6Ci0gICAgICAgIChKU1J1bkNyZWF0ZSk6Ci0gICAgICAgIChKU1J1bkNvcHlTb3Vy
Y2UpOgotICAgICAgICAoSlNSdW5Db3B5R2xvYmFsT2JqZWN0KToKLSAgICAgICAgKEpTUnVuRXZh
bHVhdGUpOgotICAgICAgICAoSlNSdW5DaGVja1N5bnRheCk6Ci0gICAgICAgIChKU0NvbGxlY3Qp
OgotICAgICAgICAoSlNUeXBlR2V0Q0ZBcnJheUNhbGxCYWNrcyk6Ci0gICAgICAgIChKU0NGUmV0
YWluKToKLSAgICAgICAgKEpTQ0ZSZWxlYXNlKToKLSAgICAgICAgKEpTT2JqZWN0Q3JlYXRlV2l0
aENGVHlwZSk6Ci0gICAgICAgIChDRkpTT2JqZWN0RGlzcG9zZSk6Ci0gICAgICAgIChKU09iamVj
dENvcHlQcm9wZXJ0eU5hbWVzKToKLSAgICAgICAgKENGSlNPYmplY3RDb3B5UHJvcGVydHkpOgot
ICAgICAgICAoQ0ZKU09iamVjdFNldFByb3BlcnR5KToKLSAgICAgICAgKENGSlNPYmplY3RDb3B5
Q0ZWYWx1ZSk6Ci0gICAgICAgIChDRkpTT2JqZWN0RXF1YWwpOgotICAgICAgICAoQ0ZKU09iamVj
dENvcHlQcm9wZXJ0eU5hbWVzKToKLSAgICAgICAgKEpTQ3JlYXRlQ0ZBcnJheUZyb21KU0FycmF5
KToKLSAgICAgICAgKEpTQ3JlYXRlSlNBcnJheUZyb21DRkFycmF5KToKLSAgICAgICAgKEpTTG9j
a0ludGVycHJldGVyKToKLSAgICAgICAgKEpTVW5sb2NrSW50ZXJwcmV0ZXIpOgotICAgICAgICAq
IEphdmFTY3JpcHRHbHVlLmV4cDogQWRkZWQuCi0gICAgICAgICogSmF2YVNjcmlwdEdsdWUuaDog
QWRkZWQuCi0gICAgICAgICogSmF2YVNjcmlwdEdsdWUucGJwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkZWQuCi0gICAgICAgICogVXNlck9iamVjdEltcC5jcHA6IEFkZGVkLgotICAgICAgICAoVXNl
ck9iamVjdFByb3RvdHlwZUltcDo6VXNlck9iamVjdFByb3RvdHlwZUltcCk6Ci0gICAgICAgIChV
c2VyT2JqZWN0UHJvdG90eXBlSW1wOjpHbG9iYWxVc2VyT2JqZWN0UHJvdG90eXBlSW1wKToKLSAg
ICAgICAgKFVzZXJPYmplY3RJbXA6OlVzZXJPYmplY3RJbXApOgotICAgICAgICAoVXNlck9iamVj
dEltcDo6flVzZXJPYmplY3RJbXApOgotICAgICAgICAoVXNlck9iamVjdEltcDo6Y2xhc3NJbmZv
KToKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OmltcGxlbWVudHNDYWxsKToKLSAgICAgICAgKFVz
ZXJPYmplY3RJbXA6OmNhbGwpOgotICAgICAgICAoVXNlck9iamVjdEltcDo6cHJvcExpc3QpOgot
ICAgICAgICAoVXNlck9iamVjdEltcDo6aGFzUHJvcGVydHkpOgotICAgICAgICAoVXNlck9iamVj
dEltcDo6Z2V0KToKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OnB1dCk6Ci0gICAgICAgIChVc2Vy
T2JqZWN0SW1wOjpHZXRKU1VzZXJPYmplY3QpOgotICAgICAgICAoVXNlck9iamVjdEltcDo6dG9Q
cmltaXRpdmUpOgotICAgICAgICAoVXNlck9iamVjdEltcDo6dG9Cb29sZWFuKToKLSAgICAgICAg
KFVzZXJPYmplY3RJbXA6OnRvTnVtYmVyKToKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6OnRvU3Ry
aW5nKToKLSAgICAgICAgKFVzZXJPYmplY3RJbXA6Om1hcmspOgotICAgICAgICAqIFVzZXJPYmpl
Y3RJbXAuaDogQWRkZWQuCi0KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0luZm8ucGxpc3QKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvSW5mby5wbGlzdAkocmV2aXNpb24gNzQ2MTYpCisrKyBK
YXZhU2NyaXB0R2x1ZS9JbmZvLnBsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0ICswLDAgQEAK
LTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3Qg
UFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNv
bS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KLTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRp
Y3Q+Ci0JPGtleT5DRkJ1bmRsZURldmVsb3BtZW50UmVnaW9uPC9rZXk+Ci0JPHN0cmluZz5Fbmds
aXNoPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4KLQk8c3RyaW5nPiR7
UFJPRFVDVF9OQU1FfTwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVHZXRJbmZvU3RyaW5nPC9rZXk+
Ci0JPHN0cmluZz4ke0JVTkRMRV9WRVJTSU9OfSwgQ29weXJpZ2h0IDIwMDMtMjAxMCBBcHBsZSBJ
bmMuPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUlkZW50aWZpZXI8L2tleT4KLQk8c3RyaW5nPmNv
bS5hcHBsZS4ke1BST0RVQ1RfTkFNRX08L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSW5mb0RpY3Rp
b25hcnlWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz42LjA8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxl
TmFtZTwva2V5PgotCTxzdHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+Ci0JPGtleT5DRkJ1
bmRsZVBhY2thZ2VUeXBlPC9rZXk+Ci0JPHN0cmluZz5GTVdLPC9zdHJpbmc+Ci0JPGtleT5DRkJ1
bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PgotCTxzdHJpbmc+JHtTSE9SVF9WRVJTSU9OX1NU
UklOR308L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgotCTxzdHJpbmc+JHtC
VU5ETEVfVkVSU0lPTn08L3N0cmluZz4KLTwvZGljdD4KLTwvcGxpc3Q+CkluZGV4OiBKYXZhU2Ny
aXB0R2x1ZS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0pTQmFzZS5j
cHAJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvSlNCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJKU0Jhc2UuaCIKLQotSlNCYXNlOjpKU0Jhc2UoSlNUeXBlSUQgdHlwZSkg
OiBmVHlwZUlEKHR5cGUpLCBmUmV0YWluQ291bnQoMSkKLXsKLX0KLQotSlNCYXNlOjp+SlNCYXNl
KCkKLXsKLX0KLQotSlNCYXNlKiBKU0Jhc2U6OlJldGFpbigpCi17Ci0gICAgZlJldGFpbkNvdW50
Kys7IHJldHVybiB0aGlzOwotfQotCi12b2lkIEpTQmFzZTo6UmVsZWFzZSgpCi17Ci0gICAgaWYg
KC0tZlJldGFpbkNvdW50ID09IDApCi0gICAgewotICAgICAgICBKU0dsdWVBUElFbnRyeSBlbnRy
eTsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotfQotCi1DRkluZGV4IEpTQmFzZTo6UmV0
YWluQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBmUmV0YWluQ291bnQ7Ci19Ci0KLUpTVHlw
ZUlEIEpTQmFzZTo6R2V0VHlwZUlEKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZlR5cGVJRDsKLX0K
LQotQ0ZTdHJpbmdSZWYgSlNCYXNlOjpDb3B5RGVzY3JpcHRpb24oKQotewotICAgIHJldHVybiBD
RlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoCi0gICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAg
ICAgICAwLAotICAgICAgICAgICAgICAgIENGU1RSKCI8SlNUeXBlUmVmLSBwdHI6MHglbHggdHlw
ZTogJWQsIHJldGFpbmNvdW50OiAlbGQ+IiksCi0gICAgICAgICAgICAgICAgKGxvbmcpdGhpcywK
LSAgICAgICAgICAgICAgICAoaW50KWZUeXBlSUQsCi0gICAgICAgICAgICAgICAgKGxvbmcpZlJl
dGFpbkNvdW50KTsKLX0KLQotVUludDggSlNCYXNlOjpFcXVhbChKU0Jhc2UqIG90aGVyKQotewot
ICAgIHJldHVybiB0aGlzID09IG90aGVyOwotfQpJbmRleDogSmF2YVNjcmlwdEdsdWUvSlNCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvSlNCYXNlLmgJKHJldmlzaW9uIDc0NjE2
KQorKysgSmF2YVNjcmlwdEdsdWUvSlNCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTQmFzZV9oCi0jZGVmaW5lIEpTQmFzZV9oCi0K
LSNpbmNsdWRlICJKU1V0aWxzLmgiCi0KLWNsYXNzIEpTQmFzZSB7Ci0gICAgcHVibGljOgotICAg
ICAgICBKU0Jhc2UoSlNUeXBlSUQgdHlwZSk7Ci0gICAgICAgIHZpcnR1YWwgfkpTQmFzZSgpOwot
Ci0gICAgICAgIEpTQmFzZSogUmV0YWluKCk7Ci0gICAgICAgIHZvaWQgUmVsZWFzZSgpOwotICAg
ICAgICBDRkluZGV4IFJldGFpbkNvdW50KCkgY29uc3Q7Ci0gICAgICAgIEpTVHlwZUlEIEdldFR5
cGVJRCgpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgQ0ZTdHJpbmdSZWYgQ29weURlc2NyaXB0
aW9uKCk7Ci0gICAgICAgIHZpcnR1YWwgVUludDggRXF1YWwoSlNCYXNlKiBvdGhlcik7Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBKU1R5cGVJRCBmVHlwZUlEOwotICAgICAgICBDRkluZGV4IGZS
ZXRhaW5Db3VudDsKLX07Ci0KLSNlbmRpZgpJbmRleDogSmF2YVNjcmlwdEdsdWUvSlNPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0pTT2JqZWN0LmNwcAkocmV2aXNpb24g
NzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCi0KLSNpbmNsdWRlICJVc2VyT2JqZWN0SW1wLmgiCi0KLUpTVXNlck9i
amVjdDo6SlNVc2VyT2JqZWN0KEpTT2JqZWN0Q2FsbEJhY2tzUHRyIGNhbGxCYWNrcywgSlNPYmpl
Y3RNYXJrUHJvY1B0ciBtYXJrUHJvYywgdm9pZCAqZGF0YSwgaW50IGRhdGFUeXBlKQotICAgIDog
SlNCYXNlKGtKU09iamVjdFR5cGVJRCksIGZDYWxsQmFja3MoKmNhbGxCYWNrcyksIGZNYXJrUHJv
YyhtYXJrUHJvYyksIGZEYXRhKGRhdGEpLCBmRGF0YVR5cGUoZGF0YVR5cGUpCi17Ci19Ci0KLUpT
VXNlck9iamVjdDo6fkpTVXNlck9iamVjdCgpCi17Ci0gICAgaWYgKGZDYWxsQmFja3MuZGlzcG9z
ZSkKLSAgICB7Ci0gICAgICAgIGZDYWxsQmFja3MuZGlzcG9zZShmRGF0YSk7Ci0gICAgfQotfQot
Ci1DRkFycmF5UmVmIEpTVXNlck9iamVjdDo6Q29weVByb3BlcnR5TmFtZXModm9pZCkKLXsKLSAg
ICBDRkFycmF5UmVmIHJlc3VsdCA9IDA7Ci0gICAgaWYgKGZDYWxsQmFja3MuY29weVByb3BlcnR5
TmFtZXMpCi0gICAgewotICAgICAgICByZXN1bHQgPSBmQ2FsbEJhY2tzLmNvcHlQcm9wZXJ0eU5h
bWVzKGZEYXRhKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotSlNVc2VyT2JqZWN0
KiBKU1VzZXJPYmplY3Q6OkNvcHlQcm9wZXJ0eShDRlN0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCi17
Ci0gICAgSlNVc2VyT2JqZWN0KiByZXN1bHQgPSAwOwotICAgIGlmIChmQ2FsbEJhY2tzLmNvcHlQ
cm9wZXJ0eSkKLSAgICB7Ci0gICAgICAgIHJlc3VsdCA9IChKU1VzZXJPYmplY3QqKWZDYWxsQmFj
a3MuY29weVByb3BlcnR5KGZEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgIH0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi12b2lkIEpTVXNlck9iamVjdDo6U2V0UHJvcGVydHkoQ0ZTdHJpbmdSZWYg
cHJvcGVydHlOYW1lLCBKU1VzZXJPYmplY3QqIHZhbHVlKQotewotICAgIGlmIChmQ2FsbEJhY2tz
LnNldFByb3BlcnR5KQotICAgIHsKLSAgICAgICAgZkNhbGxCYWNrcy5zZXRQcm9wZXJ0eShmRGF0
YSwgcHJvcGVydHlOYW1lLCAoSlNPYmplY3RSZWYpdmFsdWUpOwotICAgIH0KLQotfQotCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBuYXRpdmVDYWxsRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBuYXRpdmVDYWxsRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RhdGljX2Nhc3Q8
VXNlck9iamVjdEltcCo+KGV4ZWMtPmNhbGxlZSgpKS0+Y2FsbEFzRnVuY3Rpb24oZXhlYykpOwot
fQotCi1DYWxsVHlwZSBKU1VzZXJPYmplY3Q6OmdldENhbGxEYXRhKENhbGxEYXRhJiBjYWxsRGF0
YSkKLXsKLSAgICBpZiAoIWZDYWxsQmFja3MuY2FsbEZ1bmN0aW9uKQotICAgICAgICByZXR1cm4g
Q2FsbFR5cGVOb25lOwotCi0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gbmF0aXZlQ2Fs
bEZ1bmN0aW9uOwotICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Ci19Ci0KLUpTVXNlck9iamVjdCog
SlNVc2VyT2JqZWN0OjpDYWxsRnVuY3Rpb24oSlNVc2VyT2JqZWN0KiB0aGlzT2JqLCBDRkFycmF5
UmVmIGFyZ3MpCi17Ci0gICAgSlNVc2VyT2JqZWN0KiByZXN1bHQgPSAwOwotICAgIGlmIChmQ2Fs
bEJhY2tzLmNhbGxGdW5jdGlvbikKLSAgICB7Ci0gICAgICAgIHJlc3VsdCA9IChKU1VzZXJPYmpl
Y3QqKWZDYWxsQmFja3MuY2FsbEZ1bmN0aW9uKGZEYXRhLCAoSlNPYmplY3RSZWYpdGhpc09iaiwg
YXJncyk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0KLX0KLQotQ0ZUeXBlUmVmIEpTVXNl
ck9iamVjdDo6Q29weUNGVmFsdWUoKSBjb25zdAotewotICAgIENGVHlwZVJlZiByZXN1bHQgPSAw
OwotICAgIGlmIChmQ2FsbEJhY2tzLmNvcHlDRlZhbHVlKQotICAgIHsKLSAgICAgICAgcmVzdWx0
ID0gKEpTVXNlck9iamVjdCopZkNhbGxCYWNrcy5jb3B5Q0ZWYWx1ZShmRGF0YSk7Ci0gICAgfQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVVJbnQ4IEpTVXNlck9iamVjdDo6RXF1YWwoSlNCYXNl
KiBvdGhlcikKLXsKLSAgICBVSW50OCByZXN1bHQgPSBmYWxzZTsKLSAgICBKU1VzZXJPYmplY3Qq
IG9iaiA9IChKU1VzZXJPYmplY3QqKW90aGVyOwotICAgIGlmIChvYmotPkdldFR5cGVJRCgpID09
IGtKU09iamVjdFR5cGVJRCkKLSAgICB7Ci0gICAgICAgIGlmIChmQ2FsbEJhY2tzLmVxdWFsKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBmQ2FsbEJhY2tzLmVxdWFsKEdldERhdGEo
KSwgb2JqLT5HZXREYXRhKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgQ0ZUeXBlUmVmIGNmMSA9IENvcHlDRlZhbHVlKCk7Ci0gICAgICAgICAgICBD
RlR5cGVSZWYgY2YyID0gb2JqLT5Db3B5Q0ZWYWx1ZSgpOwotICAgICAgICAgICAgaWYgKGNmMSAm
JiBjZjIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gQ0ZFcXVhbChj
ZjEsIGNmMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBSZWxlYXNlQ0ZUeXBlKGNmMik7
Ci0gICAgICAgICAgICBSZWxlYXNlQ0ZUeXBlKGNmMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBKU1VzZXJPYmplY3Q6Ok1hcmsoKQotewotICAgIGlm
IChmTWFya1Byb2MpCi0gICAgewotICAgICAgICBmTWFya1Byb2MoZkRhdGEpOwotICAgIH0KLX0K
LQotdm9pZCAqSlNVc2VyT2JqZWN0OjpHZXREYXRhKCkKLXsKLSAgICByZXR1cm4gZkRhdGE7Ci19
Ci0KLQpJbmRleDogSmF2YVNjcmlwdEdsdWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0R2x1ZS9KU09iamVjdC5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVl
L0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIEpTR2x1ZV9KU09iamVjdF9oCi0jZGVmaW5lIEpTR2x1ZV9KU09iamVjdF9oCi0K
LSNpbmNsdWRlICJKU0Jhc2UuaCIKLSNpbmNsdWRlICJKU1V0aWxzLmgiCi0KLXR5cGVkZWYgdm9p
ZCAoKkpTT2JqZWN0TWFya1Byb2NQdHIpKHZvaWQgKmRhdGEpOwotSlNPYmplY3RSZWYgSlNPYmpl
Y3RDcmVhdGVJbnRlcm5hbCh2b2lkICpkYXRhLCBKU09iamVjdENhbGxCYWNrc1B0ciBjYWxsQmFj
a3MsIEpTT2JqZWN0TWFya1Byb2NQdHIgbWFya1Byb2MsIGludCBkYXRhVHlwZSk7Ci0KLWNsYXNz
IEpTVXNlck9iamVjdCA6IHB1YmxpYyBKU0Jhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgSlNV
c2VyT2JqZWN0KEpTT2JqZWN0Q2FsbEJhY2tzUHRyIGNhbGxCYWNrcywgSlNPYmplY3RNYXJrUHJv
Y1B0ciBtYXJrUHJvYywgdm9pZCAqZGF0YSwgaW50IGRhdGFUeXBlKTsKLSAgICAgICAgdmlydHVh
bCB+SlNVc2VyT2JqZWN0KCk7Ci0KLSAgICAgICAgQ0ZBcnJheVJlZiBDb3B5UHJvcGVydHlOYW1l
cyh2b2lkKTsKLSAgICAgICAgSlNVc2VyT2JqZWN0KiBDb3B5UHJvcGVydHkoQ0ZTdHJpbmdSZWYg
cHJvcGVydHlOYW1lKTsKLSAgICAgICAgdm9pZCBTZXRQcm9wZXJ0eShDRlN0cmluZ1JlZiBwcm9w
ZXJ0eU5hbWUsIEpTVXNlck9iamVjdCogdmFsdWUpOwotICAgICAgICBDYWxsVHlwZSBnZXRDYWxs
RGF0YShDYWxsRGF0YSYpOwotICAgICAgICBKU1VzZXJPYmplY3QqIENhbGxGdW5jdGlvbihKU1Vz
ZXJPYmplY3QqIHRoaXNPYmosIENGQXJyYXlSZWYgYXJncyk7Ci0gICAgICAgIENGVHlwZVJlZiBD
b3B5Q0ZWYWx1ZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFVJbnQ4IEVxdWFsKEpTQmFzZSog
b3RoZXIpOwotICAgICAgICB2b2lkICpHZXREYXRhKCk7Ci0gICAgICAgIHZvaWQgTWFyaygpOwot
Ci0gICAgICAgICAgICAgICAgaW50IERhdGFUeXBlKCkgY29uc3QgeyByZXR1cm4gZkRhdGFUeXBl
OyB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgSlNPYmplY3RDYWxsQmFja3MgZkNhbGxCYWNrczsK
LSAgICAgICAgSlNPYmplY3RNYXJrUHJvY1B0ciBmTWFya1Byb2M7Ci0gICAgICAgIHZvaWQgKmZE
YXRhOwotICAgICAgICAgICAgICAgIGludCBmRGF0YVR5cGU7Ci19OwotCi0jZW5kaWYgLy8gSlNH
bHVlX0pTT2JqZWN0X2gKSW5kZXg6IEphdmFTY3JpcHRHbHVlL0pTUnVuLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KU1J1bi5jcHAJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNj
cmlwdEdsdWUvSlNSdW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1J1bi5oIgotCi0jaW5jbHVkZSAi
VXNlck9iamVjdEltcC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VDb2RlLmg+Ci0KLUpTR2x1ZUdsb2JhbE9i
amVjdDo6SlNHbHVlR2xvYmFsT2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUs
IEpTRmxhZ3MgZmxhZ3MpCi0gICAgOiBKU0dsb2JhbE9iamVjdChzdHJ1Y3R1cmUsIG5ldyBEYXRh
LCB0aGlzKQotewotICAgIGQoKS0+ZmxhZ3MgPSBmbGFnczsKLSAgICBkKCktPnVzZXJPYmplY3RT
dHJ1Y3R1cmUgPSBVc2VyT2JqZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpOwotfQot
Ci12b2lkIEpTR2x1ZUdsb2JhbE9iamVjdDo6ZGVzdHJveURhdGEodm9pZCogZGF0YSkKLXsKLSAg
ICBkZWxldGUgc3RhdGljX2Nhc3Q8RGF0YSo+KGRhdGEpOwotfQotCi1KU1J1bjo6SlNSdW4oQ0ZT
dHJpbmdSZWYgc291cmNlLCBKU0ZsYWdzIGluRmxhZ3MpCi0gICAgOiAgIEpTQmFzZShrSlNSdW5U
eXBlSUQpLAotICAgICAgICBmU291cmNlKENGU3RyaW5nVG9VU3RyaW5nKHNvdXJjZSkpLAotICAg
ICAgICBmR2xvYmFsT2JqZWN0KG5ldyAoJmdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpLT5nbG9i
YWxEYXRhKCkpIEpTR2x1ZUdsb2JhbE9iamVjdChKU0dsdWVHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSksIGluRmxhZ3MpKSwKLSAgICAgICAgZkZsYWdzKGluRmxhZ3MpCi17
Ci19Ci0KLUpTUnVuOjp+SlNSdW4oKQotewotfQotCi1KU0ZsYWdzIEpTUnVuOjpGbGFncygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGZGbGFnczsKLX0KLQotVVN0cmluZyBKU1J1bjo6R2V0U291cmNl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZlNvdXJjZTsKLX0KLQotSlNHbG9iYWxPYmplY3QqIEpT
UnVuOjpHbG9iYWxPYmplY3QoKSBjb25zdAotewotICAgIHJldHVybiBmR2xvYmFsT2JqZWN0Owot
fQotCi1Db21wbGV0aW9uIEpTUnVuOjpFdmFsdWF0ZSgpCi17Ci0gICAgcmV0dXJuIEpTQzo6ZXZh
bHVhdGUoZkdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBmR2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZUNoYWluKCksIG1ha2VTb3VyY2UoZlNvdXJjZSkpOwotfQotCi1ib29sIEpTUnVuOjpDaGVj
a1N5bnRheCgpCi17Ci0gICAgcmV0dXJuIEpTQzo6Y2hlY2tTeW50YXgoZkdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBtYWtlU291cmNlKGZTb3VyY2UpKS5jb21wbFR5cGUoKSAhPSBUaHJvdzsK
LX0KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0pTUnVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dEdsdWUvSlNSdW4uaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9KU1J1bi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBK
U1J1bl9oCi0jZGVmaW5lIEpTUnVuX2gKLQotI2luY2x1ZGUgIkpTQmFzZS5oIgotI2luY2x1ZGUg
IkpTVXRpbHMuaCIKLQotY2xhc3MgSlNHbHVlR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFs
T2JqZWN0IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEpTR2x1ZUdsb2JhbE9iamVjdChQYXNzUmVm
UHRyPFN0cnVjdHVyZT4sIEpTRmxhZ3MgPSBrSlNGbGFnTm9uZSk7Ci0KLSAgICAgICAgSlNGbGFn
cyBGbGFncygpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZmxhZ3M7IH0KLSAgICAgICAgU3RydWN0dXJl
KiB1c2VyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT51c2VyT2JqZWN0U3Ry
dWN0dXJlLmdldCgpOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBzdHJ1Y3QgRGF0YSA6IEpT
R2xvYmFsT2JqZWN0RGF0YSB7Ci0gICAgICAgICAgICBEYXRhKCkKLSAgICAgICAgICAgICAgICA6
IEpTR2xvYmFsT2JqZWN0RGF0YShkZXN0cm95RGF0YSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gdXNlck9i
amVjdFN0cnVjdHVyZTsKLSAgICAgICAgICAgIEpTRmxhZ3MgZmxhZ3M7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveURhdGEodm9pZCopOwotCi0gICAgICAgIERhdGEq
IGQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEYXRhKj4oSlNHbG9iYWxPYmplY3Q6OmQo
KSk7IH0KLX07Ci0KLWNsYXNzIEpTUnVuIDogcHVibGljIEpTQmFzZSB7Ci0gICAgcHVibGljOgot
ICAgICAgICBKU1J1bihDRlN0cmluZ1JlZiBzb3VyY2UsIEpTRmxhZ3MgaW5GbGFncyk7Ci0gICAg
ICAgIHZpcnR1YWwgfkpTUnVuKCk7Ci0KLSAgICAgICAgVVN0cmluZyBHZXRTb3VyY2UoKSBjb25z
dDsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIEdsb2JhbE9iamVjdCgpIGNvbnN0OwotICAgICAg
ICBDb21wbGV0aW9uIEV2YWx1YXRlKCk7Ci0gICAgICAgIGJvb2wgQ2hlY2tTeW50YXgoKTsKLSAg
ICAgICAgSlNGbGFncyBGbGFncygpIGNvbnN0OwotICAgIHByaXZhdGU6Ci0gICAgICAgIFVTdHJp
bmcgZlNvdXJjZTsKLSAgICAgICAgUHJvdGVjdGVkUHRyPEpTR2xvYmFsT2JqZWN0PiBmR2xvYmFs
T2JqZWN0OwotICAgICAgICBKU0ZsYWdzIGZGbGFnczsKLX07Ci0KLSNlbmRpZgpJbmRleDogSmF2
YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvSlNV
dGlscy5jcHAJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJKU1V0aWxzLmgiCi0KLSNpbmNsdWRlICJKU0Jhc2UuaCIKLSNpbmNs
dWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIkpTUnVuLmgiCi0jaW5jbHVkZSAiSlNWYWx1ZVdy
YXBwZXIuaCIKLSNpbmNsdWRlICJVc2VyT2JqZWN0SW1wLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNTdHJpbmcuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dURlRocmVhZERhdGEuaD4KLQotc3Ry
dWN0IE9iamVjdEltcExpc3QgewotICAgIEpTT2JqZWN0KiBpbXA7Ci0gICAgT2JqZWN0SW1wTGlz
dCogbmV4dDsKLSAgICBDRlR5cGVSZWYgZGF0YTsKLX07Ci0KLXN0YXRpYyBDRlR5cGVSZWYgS0pT
VmFsdWVUb0NGVHlwZUludGVybmFsKEpTVmFsdWUgaW5WYWx1ZSwgRXhlY1N0YXRlICpleGVjLCBP
YmplY3RJbXBMaXN0KiBpbkltcHMpOwotc3RhdGljIEpTR2x1ZUdsb2JhbE9iamVjdCogZ2V0VGhy
ZWFkR2xvYmFsT2JqZWN0KCk7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIENGU3RyaW5nVG9V
U3RyaW5nCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVVTdHJpbmcgQ0ZTdHJpbmdUb1VTdHJpbmco
Q0ZTdHJpbmdSZWYgaW5DRlN0cmluZykKLXsKLSAgICBVU3RyaW5nIHJlc3VsdDsKLSAgICBpZiAo
aW5DRlN0cmluZykgewotICAgICAgICBDRkluZGV4IGxlbiA9IENGU3RyaW5nR2V0TGVuZ3RoKGlu
Q0ZTdHJpbmcpOwotICAgICAgICBVbmlDaGFyKiBidWZmZXIgPSAoVW5pQ2hhciopbWFsbG9jKHNp
emVvZihVbmlDaGFyKSAqIGxlbik7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyhpbkNGU3RyaW5nLCBDRlJhbmdlTWFrZSgw
LCBsZW4pLCBidWZmZXIpOwotICAgICAgICAgICAgcmVzdWx0ID0gVVN0cmluZygoY29uc3QgVUNo
YXIgKilidWZmZXIsIGxlbik7Ci0gICAgICAgICAgICBmcmVlKGJ1ZmZlcik7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBVU3RyaW5nVG9DRlN0cmluZwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQ2FsbGVyIGlzIHJl
c3BvbnNpYmxlIGZvciByZWxlYXNpbmcgdGhlIHJldHVybmVkIENGU3RyaW5nUmVmCi1DRlN0cmlu
Z1JlZiBVU3RyaW5nVG9DRlN0cmluZyhjb25zdCBVU3RyaW5nJiBpblVTdHJpbmcpCi17Ci0gICAg
cmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgKGNvbnN0IFVuaUNoYXIqKWlu
VVN0cmluZy5jaGFyYWN0ZXJzKCksIGluVVN0cmluZy5sZW5ndGgoKSk7Ci19Ci0KLQotLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLy8gQ0ZTdHJpbmdUb0lkZW50aWZpZXIKLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotSWRlbnRpZmllciBDRlN0cmluZ1RvSWRlbnRpZmllcihDRlN0cmluZ1JlZiBpbkNGU3Ry
aW5nLCBFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIElkZW50aWZpZXIoZXhlYywgQ0ZT
dHJpbmdUb1VTdHJpbmcoaW5DRlN0cmluZykpOwotfQotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS8vIElkZW50aWZpZXJUb0NGU3RyaW5nCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBDYWxsZXIg
aXMgcmVzcG9uc2libGUgZm9yIHJlbGVhc2luZyB0aGUgcmV0dXJuZWQgQ0ZTdHJpbmdSZWYKLUNG
U3RyaW5nUmVmIElkZW50aWZpZXJUb0NGU3RyaW5nKGNvbnN0IElkZW50aWZpZXImIGluSWRlbnRp
ZmllcikKLXsKLSAgICByZXR1cm4gVVN0cmluZ1RvQ0ZTdHJpbmcoaW5JZGVudGlmaWVyLnVzdHJp
bmcoKSk7Ci19Ci0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gS0pTVmFsdWVUb0pTT2JqZWN0
Ci0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1KU1VzZXJPYmplY3QqIEtKU1ZhbHVlVG9KU09iamVjdChK
U1ZhbHVlIGluVmFsdWUsIEV4ZWNTdGF0ZSAqZXhlYykKLXsKLSAgICBKU1VzZXJPYmplY3QqIHJl
c3VsdCA9IDA7Ci0KLSAgICBpZiAoaW5WYWx1ZS5pbmhlcml0cygmVXNlck9iamVjdEltcDo6aW5m
bykpIHsKLSAgICAgICAgVXNlck9iamVjdEltcCogdXNlck9iamVjdEltcCA9IHN0YXRpY19jYXN0
PFVzZXJPYmplY3RJbXAgKj4oYXNPYmplY3QoaW5WYWx1ZSkpOwotICAgICAgICByZXN1bHQgPSB1
c2VyT2JqZWN0SW1wLT5HZXRKU1VzZXJPYmplY3QoKTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAg
ICAgICAgICAgIHJlc3VsdC0+UmV0YWluKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSlNWYWx1
ZVdyYXBwZXIqIHdyYXBwZXJWYWx1ZSA9IG5ldyBKU1ZhbHVlV3JhcHBlcihpblZhbHVlKTsKLSAg
ICAgICAgaWYgKHdyYXBwZXJWYWx1ZSkgewotICAgICAgICAgICAgSlNPYmplY3RDYWxsQmFja3Mg
Y2FsbEJhY2tzOwotICAgICAgICAgICAgSlNWYWx1ZVdyYXBwZXI6OkdldEpTT2JlY3RDYWxsQmFj
a3MoY2FsbEJhY2tzKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IChKU1VzZXJPYmplY3QqKUpTT2Jq
ZWN0Q3JlYXRlKHdyYXBwZXJWYWx1ZSwgJmNhbGxCYWNrcyk7Ci0gICAgICAgICAgICBpZiAoIXJl
c3VsdCkgewotICAgICAgICAgICAgICAgIGRlbGV0ZSB3cmFwcGVyVmFsdWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLy8gSlNPYmplY3RLSlNWYWx1ZQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotSlNW
YWx1ZSBKU09iamVjdEtKU1ZhbHVlKEpTVXNlck9iamVjdCogcHRyKQotewotICAgIEpTR2x1ZUFQ
SUVudHJ5IGVudHJ5OwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwotICAg
IGlmIChwdHIpCi0gICAgewotICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLQotICAgICAg
ICBzd2l0Y2ggKHB0ci0+RGF0YVR5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgY2FzZSBr
SlNVc2VyT2JqZWN0RGF0YVR5cGVKU1ZhbHVlV3JhcHBlcjoKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBKU1ZhbHVlV3JhcHBlciogd3JhcHBlciA9IChKU1ZhbHVlV3JhcHBlciopcHRy
LT5HZXREYXRhKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdyYXBwZXIpCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB3cmFwcGVyLT5HZXRWYWx1ZSgpOwot
ICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2Ug
a0pTVXNlck9iamVjdERhdGFUeXBlQ0ZUeXBlOgotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIENGVHlwZVJlZiBjZlR5cGUgPSAoQ0ZUeXBlUmVmKilwdHItPkdldERhdGEoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoY2ZUeXBlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgQ0ZUeXBlSUQgdHlwZUlEID0gQ0ZHZXRUeXBlSUQoY2ZUeXBlKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHR5cGVJRCA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqc1N0cmluZyhnZXRU
aHJlYWRHbG9iYWxFeGVjU3RhdGUoKSwgQ0ZTdHJpbmdUb1VTdHJpbmcoKENGU3RyaW5nUmVmKWNm
VHlwZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZUlEID09IENG
TnVtYmVyR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBudW07Ci0gICAgICAgICAgICAgICAgICAgICAgICBDRk51bWJlckdl
dFZhbHVlKChDRk51bWJlclJlZiljZlR5cGUsIGtDRk51bWJlckRvdWJsZVR5cGUsICZudW0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIobnVtKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVJRCA9PSBDRkJvb2xlYW5HZXRUeXBlSUQo
KSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0ganNCb29sZWFuKENGQm9vbGVhbkdldFZhbHVlKChDRkJvb2xlYW5SZWYpY2ZUeXBlKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlSUQgPT0gQ0ZOdWxsR2V0VHlw
ZUlEKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGpzTnVsbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFoYW5kbGVk
KQotICAgICAgICB7Ci0gICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnZXRUaHJlYWRHbG9i
YWxFeGVjU3RhdGUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAoZXhlYykgVXNlck9iamVj
dEltcChnZXRUaHJlYWRHbG9iYWxPYmplY3QoKS0+dXNlck9iamVjdFN0cnVjdHVyZSgpLCBwdHIp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotCi0KLS8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5hbAotLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLy8gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgdGhlIHJldHVy
bmVkIENGVHlwZVJlZgotQ0ZUeXBlUmVmIEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5hbChKU1ZhbHVl
IGluVmFsdWUsIEV4ZWNTdGF0ZSAqZXhlYywgT2JqZWN0SW1wTGlzdCogaW5JbXBzKQotewotICAg
IGlmICghaW5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDRlR5cGVSZWYgcmVzdWx0
ID0gMDsKLQotICAgIEpTR2x1ZUFQSUVudHJ5IGVudHJ5OwotCi0gICAgICAgIGlmIChpblZhbHVl
LmlzQm9vbGVhbigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlu
VmFsdWUudG9Cb29sZWFuKGV4ZWMpID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29sZWFuRmFsc2U7
Ci0gICAgICAgICAgICAgICAgUmV0YWluQ0ZUeXBlKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBpZiAoaW5WYWx1ZS5pc1N0
cmluZygpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFVTdHJpbmcgdVN0cmluZyA9
IGluVmFsdWUudG9TdHJpbmcoZXhlYyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gVVN0cmlu
Z1RvQ0ZTdHJpbmcodVN0cmluZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICBpZiAoaW5WYWx1ZS5pc051bWJlcigpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGRvdWJsZSBudW1iZXIxID0gaW5WYWx1ZS50b051bWJlcihl
eGVjKTsKLSAgICAgICAgICAgICAgICBkb3VibGUgbnVtYmVyMiA9IChkb3VibGUpaW5WYWx1ZS50
b0ludGVnZXIoZXhlYyk7Ci0gICAgICAgICAgICAgICAgaWYgKG51bWJlcjEgPT0gIG51bWJlcjIp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgaW50VmFsdWUgPSAo
aW50KW51bWJlcjI7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IENGTnVtYmVyQ3JlYXRl
KDAsIGtDRk51bWJlckludFR5cGUsICZpbnRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckRvdWJsZVR5cGUsICZudW1iZXIx
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICBpZiAoaW5WYWx1ZS5pc09iamVjdCgpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGlmIChpblZhbHVlLmluaGVyaXRzKCZVc2VyT2JqZWN0SW1w
OjppbmZvKSkgewotICAgICAgICAgICAgICAgICAgICBVc2VyT2JqZWN0SW1wKiB1c2VyT2JqZWN0
SW1wID0gc3RhdGljX2Nhc3Q8VXNlck9iamVjdEltcCAqPihhc09iamVjdChpblZhbHVlKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIEpTVXNlck9iamVjdCogcHRyID0gdXNlck9iamVjdEltcC0+R2V0
SlNVc2VyT2JqZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwdHIpCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB0ci0+Q29weUNG
VmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBK
U09iamVjdCAqb2JqZWN0ID0gaW5WYWx1ZS50b09iamVjdChleGVjKTsKLSAgICAgICAgICAgICAg
ICAgICAgVUludDggaXNBcnJheSA9IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIGlm
IHR3byBvYmplY3RzIHJlZmVyZW5jZSBlYWNoCi0gICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0
KiBpbXAgPSBvYmplY3Q7Ci0gICAgICAgICAgICAgICAgICAgIE9iamVjdEltcExpc3QqIHRlbXAg
PSBpbkltcHM7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ZW1wKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaW1wID09IHRlbXAtPmltcCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDRlJldGFpbihHZXRDRk51bGwoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKLSAg
ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIE9iamVjdEltcExpc3Qg
aW1wczsKLSAgICAgICAgICAgICAgICAgICAgaW1wcy5uZXh0ID0gaW5JbXBzOwotICAgICAgICAg
ICAgICAgICAgICBpbXBzLmltcCA9IGltcDsKLQotCi0vL1suLi5dIEhBQ0sgc2luY2Ugd2UgZG8g
bm90IGhhdmUgYWNjZXNzIHRvIHRoZSBjbGFzcyBpbmZvIHdlIHVzZSBjbGFzcyBuYW1lIGluc3Rl
YWQKLSNpZiAwCi0gICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZBcnJh
eUluc3RhbmNlSW1wOjppbmZvKSkKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIGlmIChvYmpl
Y3QtPmNsYXNzTmFtZSgpID09ICJBcnJheSIpCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaXNBcnJheSA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBKU0dsdWVHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0
PEpTR2x1ZUdsb2JhbE9iamVjdCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ICYmIChnbG9iYWxPYmplY3QtPkZs
YWdzKCkgJiBrSlNGbGFnQ29udmVydEFzc29jaWF0aXZlQXJyYXkpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcE5hbWVzKGV4ZWMpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+Z2V0UHJvcGVydHlOYW1lcyhleGVjLCBwcm9w
TmFtZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBpdGVyID0gcHJvcE5hbWVzLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BO
YW1lcy5lbmQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZShpdGVyICE9IGVu
ZCAmJiBpc0FycmF5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wTmFtZSA9ICppdGVyOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHIgPSBwcm9wTmFtZS51c3RyaW5n
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaUNoYXIqIHVuaUNo
YXJzID0gKGNvbnN0IFVuaUNoYXIqKXVzdHIuY2hhcmFjdGVycygpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IHVzdHIubGVuZ3RoKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdoaWxlIChzaXplLS0pIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh1bmlDaGFyc1tzaXplXSA8ICcwJyB8fCB1bmlDaGFyc1tzaXpl
XSA+ICc5JykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJy
YXkgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVy
Kys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGlz
QXJyYXkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgYW4gS0pTIGFycmF5Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgbGVuZ3RoID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAibGVuZ3RoIikp
LnRvVUludDMyKGV4ZWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gQ0ZBcnJh
eUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENGVHlwZVJlZiBjZlZhbHVlID0gS0pTVmFsdWVUb0NGVHlwZUludGVybmFs
KG9iamVjdC0+Z2V0KGV4ZWMsIGkpLCBleGVjLCAmaW1wcyk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZSgoQ0ZNdXRhYmxlQXJyYXlSZWYpcmVzdWx0
LCBjZlZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZUNGVHlw
ZShjZlZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBO
b3QgYW4gYXJyYXksIGp1c3QgdHJlYXQgaXQgbGlrZSBhIGRpY3Rpb25hcnkgd2hpY2ggY29udGFp
bnMgKHByb3BlcnR5IG5hbWUsIHByb3BlcnR5IHZhbHVlKSBwYWlycwotICAgICAgICAgICAgICAg
ICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcE5hbWVzKGV4ZWMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0LT5nZXRQcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BOYW1lcyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wTmFtZXMuYmVn
aW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BOYW1lcy5lbmQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2hpbGUoaXRlciAhPSBlbmQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aWZp
ZXIgcHJvcE5hbWUgPSAqaXRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChvYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BOYW1lKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDRlN0cmluZ1JlZiBjZktleSA9IElkZW50aWZpZXJUb0NGU3RyaW5nKHByb3BOYW1l
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlR5cGVSZWYgY2ZW
YWx1ZSA9IEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5hbChvYmplY3QtPmdldChleGVjLCBwcm9wTmFt
ZSksIGV4ZWMsICZpbXBzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY2ZLZXkgJiYgY2ZWYWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKXJlc3VsdCwgY2ZLZXks
IGNmVmFsdWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlQ0ZUeXBlKGNmS2V5
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlQ0ZUeXBl
KGNmVmFsdWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcisrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICBp
ZiAoaW5WYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBSZXRhaW5DRlR5cGUoR2V0Q0ZOdWxsKCkpOwotICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICAgICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLUNGVHlwZVJlZiBLSlNWYWx1ZVRvQ0ZUeXBlKEpTVmFsdWUgaW5WYWx1ZSwgRXhl
Y1N0YXRlICpleGVjKQotewotICAgIHJldHVybiBLSlNWYWx1ZVRvQ0ZUeXBlSW50ZXJuYWwoaW5W
YWx1ZSwgZXhlYywgMCk7Ci19Ci0KLUNGVHlwZVJlZiBHZXRDRk51bGwodm9pZCkKLXsKLSAgICBz
dGF0aWMgQ0ZBcnJheVJlZiBzQ0ZOdWxsID0gQ0ZBcnJheUNyZWF0ZSgwLCAwLCAwLCAwKTsKLSAg
ICBDRlR5cGVSZWYgcmVzdWx0ID0gSlNHZXRDRk51bGwoKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAg
ICB7Ci0gICAgICAgIHJlc3VsdCA9IHNDRk51bGw7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8qCi0gKiBUaGlzIGlzIGEgc2xpZ2h0IGhhY2suIFRoZSBKU0dsdWUgQVBJIGhhcyBu
byBjb25jZXB0IG9mIGV4ZWN1dGlvbiBzdGF0ZS4KLSAqIEhvd2V2ZXIsIGV4ZWN1dGlvbiBzdGF0
ZSBpcyBhbiBpbmhlcmVudCBwYXJ0IG9mIEpTLCBhbmQgSlNDb3JlIHJlcXVpcmVzIGl0LgotICog
U28sIHdlIGtlZXAgYSBzaW5nbGUgZXhlY3V0aW9uIHN0YXRlIGZvciB0aGUgd2hvbGUgdGhyZWFk
IGFuZCBzdXBwbHkgaXQKLSAqIHdoZXJlIG5lY2Vzc2FyeS4KLQotICogVGhlIGV4ZWN1dGlvbiBz
dGF0ZSBob2xkcyB0d28gdGhpbmdzOiAoMSkgZXhjZXB0aW9uczsgKDIpIHRoZSBnbG9iYWwgb2Jq
ZWN0LiAKLSAqIEpTR2x1ZSBoYXMgbm8gQVBJIGZvciBhY2Nlc3NpbmcgZXhjZXB0aW9ucywgc28g
d2UganVzdCBkaXNjYXJkIHRoZW0uIEFzIGZvcgotICogdGhlIGdsb2JhbCBvYmplY3QsIEpTR2x1
ZSBpbmNsdWRlcyBubyBjYWxscyB0aGF0IGRlcGVuZCBvbiBpdC4gSXRzIHByb3BlcnR5Ci0gKiBn
ZXR0ZXJzIGFuZCBzZXR0ZXJzIGFyZSBwZXItb2JqZWN0OyB0aGV5IGRvbid0IHdhbGsgdXAgdGhl
IGVuY2xvc2luZyBzY29wZS4gCi0gKiBGdW5jdGlvbnMgY2FsbGVkIGJ5IEpTT2JqZWN0Q2FsbEZ1
bmN0aW9uIG1heSByZWZlcmVuY2UgdmFsdWVzIGluIHRoZSBlbmNsb3NpbmcgCi0gKiBzY29wZSwg
YnV0IHRoZXkgZG8gc28gdGhyb3VnaCBhbiBpbnRlcm5hbGx5IHN0b3JlZCBzY29wZSBjaGFpbiwg
c28gd2UgZG9uJ3QgCi0gKiBuZWVkIHRvIHN1cHBseSB0aGUgZ2xvYmFsIHNjb3BlLgotICovICAg
ICAgCi0KLXN0YXRpYyBwdGhyZWFkX2tleV90IGdsb2JhbE9iamVjdEtleTsKLXN0YXRpYyBwdGhy
ZWFkX29uY2VfdCBnbG9iYWxPYmplY3RLZXlPbmNlID0gUFRIUkVBRF9PTkNFX0lOSVQ7Ci0KLXN0
YXRpYyB2b2lkIHVucHJvdGVjdEdsb2JhbE9iamVjdCh2b2lkKiBkYXRhKSAKLXsKLSAgICBKU0ds
dWVBUElFbnRyeSBlbnRyeTsKLSAgICBnY1VucHJvdGVjdChzdGF0aWNfY2FzdDxKU0dsdWVHbG9i
YWxPYmplY3QqPihkYXRhKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVHbG9iYWxPYmpl
Y3RLZXkoKQotewotICAgIHB0aHJlYWRfa2V5X2NyZWF0ZSgmZ2xvYmFsT2JqZWN0S2V5LCB1bnBy
b3RlY3RHbG9iYWxPYmplY3QpOwotfQotCi1KU0dsb2JhbERhdGEqIGdldFRocmVhZEdsb2JhbERh
dGEoKQotewotICAgIHJldHVybiAmSlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZSgpOwotfQot
Ci1zdGF0aWMgSlNHbHVlR2xvYmFsT2JqZWN0KiBnZXRUaHJlYWRHbG9iYWxPYmplY3QoKQotewot
ICAgIHB0aHJlYWRfb25jZSgmZ2xvYmFsT2JqZWN0S2V5T25jZSwgaW5pdGlhbGl6ZUdsb2JhbE9i
amVjdEtleSk7Ci0gICAgSlNHbHVlR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0aWNf
Y2FzdDxKU0dsdWVHbG9iYWxPYmplY3QqPihwdGhyZWFkX2dldHNwZWNpZmljKGdsb2JhbE9iamVj
dEtleSkpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KSB7Ci0gICAgICAgIGdsb2JhbE9iamVjdCA9
IG5ldyAoZ2V0VGhyZWFkR2xvYmFsRGF0YSgpKSBKU0dsdWVHbG9iYWxPYmplY3QoSlNHbHVlR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKTsKLSAgICAgICAgZ2NQcm90ZWN0
KGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoZ2xvYmFsT2JqZWN0
S2V5LCBnbG9iYWxPYmplY3QpOwotICAgIH0KLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OwotfQot
Ci1FeGVjU3RhdGUqIGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpCi17Ci0gICAgRXhlY1N0YXRl
KiBleGVjID0gZ2V0VGhyZWFkR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLQotICAgIC8v
IERpc2NhcmQgZXhjZXB0aW9ucyAtLSBvdGhlcndpc2UgYW4gZXhjZXB0aW9uIHdvdWxkIGZvcmVz
dGFsbCBKUyAKLSAgICAvLyBldmFsdWF0aW9uIHRocm91Z2hvdXQgdGhlIHRocmVhZAotICAgIGV4
ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgcmV0dXJuIGV4ZWM7Ci19Ci0KLUpTR2x1ZUFQSUVu
dHJ5OjpKU0dsdWVBUElFbnRyeSgpCi0gICAgOiBtX2xvY2soTG9ja0ZvclJlYWwpCi0gICAgLCBt
X3N0b3JlZElkZW50aWZpZXJUYWJsZSh3dGZUaHJlYWREYXRhKCkuY3VycmVudElkZW50aWZpZXJU
YWJsZSgpKQotewotICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxl
KGdldFRocmVhZEdsb2JhbERhdGEoKS0+aWRlbnRpZmllclRhYmxlKTsKLX0KLQotSlNHbHVlQVBJ
RW50cnk6On5KU0dsdWVBUElFbnRyeSgpCi17Ci0gICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJl
bnRJZGVudGlmaWVyVGFibGUobV9zdG9yZWRJZGVudGlmaWVyVGFibGUpOwotfQotCi1KU0dsdWVB
UElDYWxsYmFjazo6SlNHbHVlQVBJQ2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQotICAgIDogbV9k
cm9wTG9ja3MoZXhlYykKLXsKLSAgICB3dGZUaHJlYWREYXRhKCkucmVzZXRDdXJyZW50SWRlbnRp
ZmllclRhYmxlKCk7Ci19Ci0KLUpTR2x1ZUFQSUNhbGxiYWNrOjp+SlNHbHVlQVBJQ2FsbGJhY2so
KQotewotICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGdldFRo
cmVhZEdsb2JhbERhdGEoKS0+aWRlbnRpZmllclRhYmxlKTsKLX0KSW5kZXg6IEphdmFTY3JpcHRH
bHVlL0pTVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmgJKHJl
dmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSlNVdGlsc19oCi0jZGVm
aW5lIEpTVXRpbHNfaAotCi0jaW5jbHVkZSAiSmF2YVNjcmlwdEdsdWUuaCIKLQotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0NvbGxlY3Rvci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
VmFsdWUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+Ci0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTTG9jay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+Ci0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Qcm90ZWN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVVN0cmluZy5oPgotCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1jbGFzcyBK
U0Jhc2U7Ci1jbGFzcyBKU1VzZXJPYmplY3Q7Ci1jbGFzcyBKU1J1bjsKLWNsYXNzIEpTVmFsdWVX
cmFwcGVyOwotY2xhc3MgSlNVc2VyT2JqZWN0SW1wOwotCi1VU3RyaW5nIENGU3RyaW5nVG9VU3Ry
aW5nKENGU3RyaW5nUmVmIGluQ0ZTdHJpbmcpOwotQ0ZTdHJpbmdSZWYgVVN0cmluZ1RvQ0ZTdHJp
bmcoY29uc3QgVVN0cmluZyYgaW5VU3RyaW5nKTsKLUlkZW50aWZpZXIgQ0ZTdHJpbmdUb0lkZW50
aWZpZXIoQ0ZTdHJpbmdSZWYgaW5DRlN0cmluZywgRXhlY1N0YXRlKik7Ci1DRlN0cmluZ1JlZiBJ
ZGVudGlmaWVyVG9DRlN0cmluZyhjb25zdCBJZGVudGlmaWVyJiBpbklkZW50aWZpZXIpOwotSlNV
c2VyT2JqZWN0ICpLSlNWYWx1ZVRvSlNPYmplY3QoSlNWYWx1ZSBpblZhbHVlLCBFeGVjU3RhdGUg
KmV4ZWMpOwotQ0ZUeXBlUmVmIEtKU1ZhbHVlVG9DRlR5cGUoSlNWYWx1ZSBpblZhbHVlLCBFeGVj
U3RhdGUgKmV4ZWMpOwotSlNWYWx1ZSBKU09iamVjdEtKU1ZhbHVlKEpTVXNlck9iamVjdCogcHRy
KTsKLUNGVHlwZVJlZiBHZXRDRk51bGwodm9pZCk7Ci0KLWlubGluZSBDRlR5cGVSZWYgUmV0YWlu
Q0ZUeXBlKENGVHlwZVJlZiB4KSB7IGlmICh4KSB4ID0gQ0ZSZXRhaW4oeCk7IHJldHVybiB4OyB9
Ci1pbmxpbmUgdm9pZCBSZWxlYXNlQ0ZUeXBlKENGVHlwZVJlZiB4KSB7IGlmICh4KSBDRlJlbGVh
c2UoeCk7ICB9Ci0KLUV4ZWNTdGF0ZSogZ2V0VGhyZWFkR2xvYmFsRXhlY1N0YXRlKCk7Ci0KLWVu
dW0gewotICAgIGtKU0ludmFsaWRUeXBlSUQgPSAwLAotICAgIGtKU09iamVjdFR5cGVJRCwKLSAg
ICBrSlNSdW5UeXBlSUQKLX07Ci0KLWVudW0gewotICAgIGtKU1VzZXJPYmplY3REYXRhVHlwZVVu
a25vd24sCi0gICAga0pTVXNlck9iamVjdERhdGFUeXBlSlNWYWx1ZVdyYXBwZXIsCi0gICAga0pT
VXNlck9iamVjdERhdGFUeXBlQ0ZUeXBlCi19OwotCi1jbGFzcyBKU0dsdWVBUElFbnRyeSB7Ci1w
dWJsaWM6Ci0gICAgSlNHbHVlQVBJRW50cnkoKTsKLSAgICBKU0dsdWVBUElFbnRyeShKU0dsb2Jh
bE9iamVjdCopOyAvLyBGb3IgdXNlIHdoZW4gaXQncyBub3Qgc2FmZSBmb3IgSlNHbHVlQVBJRW50
cnkoKSB0byBjYWxsIGdldFRocmVhZEdsb2JhbE9iamVjdCgpIC0tIGZvciBleGFtcGxlLCBmcm9t
IGEgdGhyZWFkLXNwZWNpZmljIGRhdGEgZGVzdHJ1Y3Rvci4KLSAgICB+SlNHbHVlQVBJRW50cnko
KTsKLQotcHJpdmF0ZToKLSAgICBKU0xvY2sgbV9sb2NrOwotICAgIElkZW50aWZpZXJUYWJsZSog
bV9zdG9yZWRJZGVudGlmaWVyVGFibGU7Ci19OwotCi1jbGFzcyBKU0dsdWVBUElDYWxsYmFjayB7
Ci1wdWJsaWM6Ci0gICAgSlNHbHVlQVBJQ2FsbGJhY2soRXhlY1N0YXRlKik7Ci0gICAgfkpTR2x1
ZUFQSUNhbGxiYWNrKCk7Ci0KLXByaXZhdGU6Ci0gICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgbV9k
cm9wTG9ja3M7Ci19OwotCi0jZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFw
cGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAJ
KHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDIwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA5IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1ZhbHVlV3JhcHBlci5oIgotI2luY2x1ZGUgIkpT
UnVuLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+Ci0jaW5jbHVkZSA8cHRocmVhZC5oPgot
Ci1KU1ZhbHVlV3JhcHBlcjo6SlNWYWx1ZVdyYXBwZXIoSlNWYWx1ZSBpblZhbHVlKQotICAgIDog
ZlZhbHVlKGluVmFsdWUpCi17Ci19Ci0KLUpTVmFsdWVXcmFwcGVyOjp+SlNWYWx1ZVdyYXBwZXIo
KQotewotfQotCi1KU1ZhbHVlIEpTVmFsdWVXcmFwcGVyOjpHZXRWYWx1ZSgpCi17Ci0gICAgcmV0
dXJuIGZWYWx1ZS5nZXQoKTsKLX0KLQotdm9pZCBKU1ZhbHVlV3JhcHBlcjo6R2V0SlNPYmVjdENh
bGxCYWNrcyhKU09iamVjdENhbGxCYWNrcyYgY2FsbEJhY2tzKQotewotICAgIGNhbGxCYWNrcy5k
aXNwb3NlID0gKEpTT2JqZWN0RGlzcG9zZVByb2NQdHIpSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0
RGlzcG9zZTsKLSAgICBjYWxsQmFja3MuZXF1YWwgPSAoSlNPYmplY3RFcXVhbFByb2NQdHIpMDsK
LSAgICBjYWxsQmFja3MuY29weVByb3BlcnR5TmFtZXMgPSAoSlNPYmplY3RDb3B5UHJvcGVydHlO
YW1lc1Byb2NQdHIpSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXM7Ci0g
ICAgY2FsbEJhY2tzLmNvcHlDRlZhbHVlID0gKEpTT2JqZWN0Q29weUNGVmFsdWVQcm9jUHRyKUpT
VmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlDRlZhbHVlOwotICAgIGNhbGxCYWNrcy5jb3B5UHJv
cGVydHkgPSAoSlNPYmplY3RDb3B5UHJvcGVydHlQcm9jUHRyKUpTVmFsdWVXcmFwcGVyOjpKU09i
amVjdENvcHlQcm9wZXJ0eTsKLSAgICBjYWxsQmFja3Muc2V0UHJvcGVydHkgPSAoSlNPYmplY3RT
ZXRQcm9wZXJ0eVByb2NQdHIpSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0U2V0UHJvcGVydHk7Ci0g
ICAgY2FsbEJhY2tzLmNhbGxGdW5jdGlvbiA9IChKU09iamVjdENhbGxGdW5jdGlvblByb2NQdHIp
SlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0aW9uOwotfQotCi12b2lkIEpTVmFsdWVX
cmFwcGVyOjpKU09iamVjdERpc3Bvc2Uodm9pZCAqZGF0YSkKLXsKLSAgICBKU1ZhbHVlV3JhcHBl
ciogcHRyID0gKEpTVmFsdWVXcmFwcGVyKilkYXRhOwotICAgIGRlbGV0ZSBwdHI7Ci19Ci0KLQot
Q0ZBcnJheVJlZiBKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyh2b2lk
ICpkYXRhKQotewotICAgIEpTR2x1ZUFQSUVudHJ5IGVudHJ5OwotCi0gICAgQ0ZNdXRhYmxlQXJy
YXlSZWYgcmVzdWx0ID0gMDsKLSAgICBKU1ZhbHVlV3JhcHBlciogcHRyID0gKEpTVmFsdWVXcmFw
cGVyKilkYXRhOwotICAgIGlmIChwdHIpCi0gICAgewotICAgICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUoKTsKLSAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IHB0ci0+R2V0VmFsdWUoKS50b09iamVjdChleGVjKTsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcE5hbWVzKGV4ZWMpOwotICAgICAgICBvYmplY3QtPmdldFByb3BlcnR5TmFtZXMoZXhl
YywgcHJvcE5hbWVzKTsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXJhdG9yID0gcHJvcE5hbWVzLmJlZ2luKCk7Ci0KLSAgICAgICAgd2hpbGUgKGl0ZXJhdG9y
ICE9IHByb3BOYW1lcy5lbmQoKSkgewotICAgICAgICAgICAgSWRlbnRpZmllciBuYW1lID0gKml0
ZXJhdG9yOwotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgbmFtZVN0ciA9IElkZW50aWZpZXJUb0NG
U3RyaW5nKG5hbWUpOwotCi0gICAgICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyZXN1
bHQgJiYgbmFtZVN0cikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDRkFycmF5QXBw
ZW5kVmFsdWUocmVzdWx0LCBuYW1lU3RyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJl
bGVhc2VDRlR5cGUobmFtZVN0cik7Ci0gICAgICAgICAgICBpdGVyYXRvcisrOwotICAgICAgICB9
Ci0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1KU09iamVjdFJlZiBKU1ZhbHVl
V3JhcHBlcjo6SlNPYmplY3RDb3B5UHJvcGVydHkodm9pZCAqZGF0YSwgQ0ZTdHJpbmdSZWYgcHJv
cGVydHlOYW1lKQotewotICAgIEpTR2x1ZUFQSUVudHJ5IGVudHJ5OwotCi0gICAgSlNPYmplY3RS
ZWYgcmVzdWx0ID0gMDsKLSAgICBKU1ZhbHVlV3JhcHBlciogcHRyID0gKEpTVmFsdWVXcmFwcGVy
KilkYXRhOwotICAgIGlmIChwdHIpCi0gICAgewotICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBn
ZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUoKTsKLSAgICAgICAgSlNWYWx1ZSBwcm9wVmFsdWUgPSBw
dHItPkdldFZhbHVlKCkudG9PYmplY3QoZXhlYyktPmdldChleGVjLCBDRlN0cmluZ1RvSWRlbnRp
Zmllcihwcm9wZXJ0eU5hbWUsIGV4ZWMpKTsKLSAgICAgICAgSlNWYWx1ZVdyYXBwZXIqIHdyYXBw
ZXJWYWx1ZSA9IG5ldyBKU1ZhbHVlV3JhcHBlcihwcm9wVmFsdWUpOwotCi0gICAgICAgIEpTT2Jq
ZWN0Q2FsbEJhY2tzIGNhbGxCYWNrczsKLSAgICAgICAgR2V0SlNPYmVjdENhbGxCYWNrcyhjYWxs
QmFja3MpOwotICAgICAgICByZXN1bHQgPSBKU09iamVjdENyZWF0ZUludGVybmFsKHdyYXBwZXJW
YWx1ZSwgJmNhbGxCYWNrcywgSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0TWFyaywga0pTVXNlck9i
amVjdERhdGFUeXBlSlNWYWx1ZVdyYXBwZXIpOwotCi0gICAgICAgIGlmICghcmVzdWx0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBkZWxldGUgd3JhcHBlclZhbHVlOwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0
U2V0UHJvcGVydHkodm9pZCAqZGF0YSwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU09iamVj
dFJlZiBqc1ZhbHVlKQotewotICAgIEpTR2x1ZUFQSUVudHJ5IGVudHJ5OwotCi0gICAgSlNWYWx1
ZVdyYXBwZXIqIHB0ciA9IChKU1ZhbHVlV3JhcHBlciopZGF0YTsKLSAgICBpZiAocHRyKQotICAg
IHsKLSAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2V0VGhyZWFkR2xvYmFsRXhlY1N0YXRlKCk7
Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU09iamVjdEtKU1ZhbHVlKChKU1VzZXJPYmplY3Qq
KWpzVmFsdWUpOwotICAgICAgICBKU09iamVjdCAqb2JqVmFsdWUgPSBwdHItPkdldFZhbHVlKCku
dG9PYmplY3QoZXhlYyk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBv
YmpWYWx1ZS0+cHV0KGV4ZWMsIENGU3RyaW5nVG9JZGVudGlmaWVyKHByb3BlcnR5TmFtZSwgZXhl
YyksIHZhbHVlLCBzbG90KTsKLSAgICB9Ci19Ci0KLUpTT2JqZWN0UmVmIEpTVmFsdWVXcmFwcGVy
OjpKU09iamVjdENhbGxGdW5jdGlvbih2b2lkICpkYXRhLCBKU09iamVjdFJlZiB0aGlzT2JqLCBD
RkFycmF5UmVmIGFyZ3MpCi17Ci0gICAgSlNHbHVlQVBJRW50cnkgZW50cnk7Ci0KLSAgICBKU09i
amVjdFJlZiByZXN1bHQgPSAwOwotICAgIEpTVmFsdWVXcmFwcGVyKiBwdHIgPSAoSlNWYWx1ZVdy
YXBwZXIqKWRhdGE7Ci0gICAgaWYgKHB0cikKLSAgICB7Ci0gICAgICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpOwotCi0gICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBKU09iamVjdEtKU1ZhbHVlKChKU1VzZXJPYmplY3QqKXRoaXNPYmopOwotICAgICAgICBKU09i
amVjdCoga3NqVGhpc09iaiA9IHZhbHVlLnRvT2JqZWN0KGV4ZWMpOwotICAgICAgICBKU09iamVj
dCogb2JqVmFsdWUgPSBwdHItPkdldFZhbHVlKCkudG9PYmplY3QoZXhlYyk7Ci0KLSAgICAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdEFyZ3M7Ci0gICAgICAgIENGSW5kZXggYXJnQ291bnQg
PSBhcmdzID8gQ0ZBcnJheUdldENvdW50KGFyZ3MpIDogMDsKLSAgICAgICAgZm9yIChDRkluZGV4
IGkgPSAwOyBpIDwgYXJnQ291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgSlNPYmpl
Y3RSZWYganNBcmcgPSAoSlNPYmplY3RSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhcmdzLCBp
KTsKLSAgICAgICAgICAgIEpTVmFsdWUga2dzQXJnID0gSlNPYmplY3RLSlNWYWx1ZSgoSlNVc2Vy
T2JqZWN0Kilqc0FyZyk7Ci0gICAgICAgICAgICBsaXN0QXJncy5hcHBlbmQoa2dzQXJnKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IG9ialZhbHVlLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7Ci0gICAgICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
SlNWYWx1ZSAgcmVzdWx0VmFsdWUgPSBjYWxsKGV4ZWMsIG9ialZhbHVlLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGtzalRoaXNPYmosIGxpc3RBcmdzKTsKLSAgICAgICAgSlNWYWx1ZVdyYXBwZXIqIHdy
YXBwZXJWYWx1ZSA9IG5ldyBKU1ZhbHVlV3JhcHBlcihyZXN1bHRWYWx1ZSk7Ci0gICAgICAgIEpT
T2JqZWN0Q2FsbEJhY2tzIGNhbGxCYWNrczsKLSAgICAgICAgR2V0SlNPYmVjdENhbGxCYWNrcyhj
YWxsQmFja3MpOwotICAgICAgICByZXN1bHQgPSBKU09iamVjdENyZWF0ZSh3cmFwcGVyVmFsdWUs
ICZjYWxsQmFja3MpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZGVsZXRlIHdyYXBwZXJWYWx1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1DRlR5cGVSZWYgSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weUNGVmFsdWUo
dm9pZCAqZGF0YSkKLXsKLSAgICBKU0dsdWVBUElFbnRyeSBlbnRyeTsKLQotICAgIENGVHlwZVJl
ZiByZXN1bHQgPSAwOwotICAgIEpTVmFsdWVXcmFwcGVyKiBwdHIgPSAoSlNWYWx1ZVdyYXBwZXIq
KWRhdGE7Ci0gICAgaWYgKHB0cikKLSAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEtKU1ZhbHVlVG9D
RlR5cGUocHRyLT5HZXRWYWx1ZSgpLCBnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUoKSk7Ci0gICAg
fQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0
TWFyayh2b2lkICpkYXRhKQotewotICAgIEpTVmFsdWVXcmFwcGVyKiBwdHIgPSAoSlNWYWx1ZVdy
YXBwZXIqKWRhdGE7Ci0gICAgaWYgKHB0cikKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgcmVzdWx0
cyBpbiByZWN1cnNpdmUgbWFya2luZyBidXQgd2lsbCBiZSBvdGhlcndpc2Ugc2FmZSBhbmQgY29y
cmVjdC4KLSAgICAgICAgLy8gV2UgY2xhaW0gdGhlIGFycmF5IHZwdHIgaXMgMCBiZWNhdXNlIHdl
IGRvbid0IGhhdmUgYWNjZXNzIHRvIGl0IGhlcmUsIGFuZAotICAgICAgICAvLyBjbGFpbWluZyAw
IGlzIGZ1bmN0aW9uYWxseSBoYXJtbGVzcyAtLSBpdCBtZXJlbHkgbWVhbnMgdGhhdCB3ZSBjYW4n
dAotICAgICAgICAvLyBkZXZpcnR1YWxpc2UgbWFya2luZyBvZiBhcnJheXMgd2hlbiByZWN1cnNp
bmcgZnJvbSB0aGlzIHBvaW50LgotICAgICAgICBNYXJrU3RhY2sgbWFya1N0YWNrKDApOwotICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKHB0ci0+ZlZhbHVlLmdldCgpKTsKLSAgICAgICAgbWFya1N0
YWNrLmRyYWluKCk7Ci0gICAgfQotfQpJbmRleDogSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBw
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5oCShyZXZp
c2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAot
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTVmFsdWVXcmFw
cGVyX2gKLSNkZWZpbmUgSlNWYWx1ZVdyYXBwZXJfaAotCi0jaW5jbHVkZSAiSlNVdGlscy5oIgot
I2luY2x1ZGUgIkpTQmFzZS5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KLWNsYXNzIEpTVmFs
dWVXcmFwcGVyIHsKLXB1YmxpYzoKLSAgICBKU1ZhbHVlV3JhcHBlcihKU1ZhbHVlKTsKLSAgICB2
aXJ0dWFsIH5KU1ZhbHVlV3JhcHBlcigpOwotCi0gICAgc3RhdGljIHZvaWQgR2V0SlNPYmVjdENh
bGxCYWNrcyhKU09iamVjdENhbGxCYWNrcyYgY2FsbEJhY2tzKTsKLQotICAgIEpTVmFsdWUgR2V0
VmFsdWUoKTsKLQotcHJpdmF0ZToKLSAgICBQcm90ZWN0ZWRKU1ZhbHVlIGZWYWx1ZTsKLSAgICAK
LSAgICBzdGF0aWMgdm9pZCBKU09iamVjdERpc3Bvc2Uodm9pZCAqZGF0YSk7Ci0gICAgc3RhdGlj
IENGQXJyYXlSZWYgSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyh2b2lkICpkYXRhKTsKLSAgICBz
dGF0aWMgSlNPYmplY3RSZWYgSlNPYmplY3RDb3B5UHJvcGVydHkodm9pZCAqZGF0YSwgQ0ZTdHJp
bmdSZWYgcHJvcGVydHlOYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBKU09iamVjdFNldFByb3BlcnR5
KHZvaWQgKmRhdGEsIENGU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNPYmplY3RSZWYganNWYWx1
ZSk7Ci0gICAgc3RhdGljIEpTT2JqZWN0UmVmIEpTT2JqZWN0Q2FsbEZ1bmN0aW9uKHZvaWQgKmRh
dGEsIEpTT2JqZWN0UmVmIHRoaXNPYmosIENGQXJyYXlSZWYgYXJncyk7Ci0gICAgc3RhdGljIENG
VHlwZVJlZiBKU09iamVjdENvcHlDRlZhbHVlKHZvaWQgKmRhdGEpOwotICAgIHN0YXRpYyB2b2lk
IEpTT2JqZWN0TWFyayh2b2lkICpkYXRhKTsKLX07Ci0KLSNlbmRpZgpJbmRleDogSmF2YVNjcmlw
dEdsdWUvSmF2YVNjcmlwdEdsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ph
dmFTY3JpcHRHbHVlLmNwcAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9KYXZh
U2NyaXB0R2x1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjYxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkphdmFTY3JpcHRHbHVlLmgiCi0j
aW5jbHVkZSAiSlNVdGlscy5oIgotI2luY2x1ZGUgIkpTQmFzZS5oIgotI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiSlNSdW4uaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21w
bGV0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGluZy5o
PgotCi1zdGF0aWMgQ0ZUeXBlUmVmIHNKU0NGTnVsbFJlZiA9IDA7Ci0KLXN0YXRpYyB2b2lkIENG
SlNPYmplY3REaXNwb3NlKHZvaWQgKmRhdGEpOwotc3RhdGljIEpTT2JqZWN0UmVmIENGSlNPYmpl
Y3RDb3B5UHJvcGVydHkodm9pZCAqZGF0YSwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1lKTsKLXN0
YXRpYyB2b2lkIENGSlNPYmplY3RTZXRQcm9wZXJ0eSh2b2lkICpkYXRhLCBDRlN0cmluZ1JlZiBw
cm9wZXJ0eU5hbWUsIEpTT2JqZWN0UmVmIGpzVmFsdWUpOwotc3RhdGljIENGVHlwZVJlZiBDRkpT
T2JqZWN0Q29weUNGVmFsdWUodm9pZCAqZGF0YSk7Ci1zdGF0aWMgVUludDggQ0ZKU09iamVjdEVx
dWFsKHZvaWQgKmRhdGExLCB2b2lkICpkYXRhMik7Ci1zdGF0aWMgQ0ZBcnJheVJlZiBDRkpTT2Jq
ZWN0Q29weVByb3BlcnR5TmFtZXModm9pZCAqZGF0YSk7Ci0KLXZvaWQgKkpTQ0ZSZXRhaW4oQ0ZB
bGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCB2b2lkICp2YWx1ZSk7Ci12b2lkIEpTQ0ZSZWxl
YXNlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3Qgdm9pZCAqdmFsdWUpOwotCi0KLXZv
aWQgSlNTZXRDRk51bGwoQ0ZUeXBlUmVmIG51bGxSZWYpCi17Ci0gICAgUmVsZWFzZUNGVHlwZShz
SlNDRk51bGxSZWYpOwotICAgIHNKU0NGTnVsbFJlZiA9IFJldGFpbkNGVHlwZShudWxsUmVmKTsK
LX0KLQotQ0ZUeXBlUmVmIEpTR2V0Q0ZOdWxsKHZvaWQpCi17Ci0gICAgcmV0dXJuIHNKU0NGTnVs
bFJlZjsKLX0KLQotLyoKLSAgICBKU1JldGFpbgotKi8KLUpTVHlwZVJlZiBKU1JldGFpbihKU1R5
cGVSZWYgcmVmKQotewotICAgIGlmIChyZWYpCi0gICAgewotICAgICAgICBKU0Jhc2UqIHB0ciA9
IChKU0Jhc2UqKXJlZjsKLSAgICAgICAgcHRyLT5SZXRhaW4oKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHJlZjsKLX0KLQotLyoKLSAgICBKU1JlbGVhc2UKLSovCi12b2lkIEpTUmVsZWFzZShKU1R5cGVS
ZWYgcmVmKQotewotICAgIGlmIChyZWYpCi0gICAgewotICAgICAgICBKU0Jhc2UqIHB0ciA9IChK
U0Jhc2UqKXJlZjsKLSAgICAgICAgcHRyLT5SZWxlYXNlKCk7Ci0gICAgfQotfQotCi0vKgotICAg
IEpTQ29weURlc2NyaXB0aW9uCi0qLwotQ0ZTdHJpbmdSZWYgSlNDb3B5RGVzY3JpcHRpb24oSlNU
eXBlUmVmIHJlZikKLXsKLSAgICBDRlN0cmluZ1JlZiByZXN1bHQgPSAwOwotICAgIGlmIChyZWYp
Ci0gICAgewotICAgICAgICBKU0Jhc2UqIHB0ciA9IChKU0Jhc2UqKXJlZjsKLSAgICAgICAgcHRy
LT5Db3B5RGVzY3JpcHRpb24oKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoK
LSAgICBKU0VxdWFsCi0qLwotVUludDggSlNFcXVhbChKU1R5cGVSZWYgcmVmMSwgSlNUeXBlUmVm
IHJlZjIpCi17Ci0gICAgVUludDggcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKHJlZjEgJiYgcmVm
MikKLSAgICB7Ci0gICAgICAgIEpTQmFzZSogcHRyID0gKEpTQmFzZSopcmVmMTsKLSAgICAgICAg
cmVzdWx0ID0gcHRyLT5FcXVhbCgoSlNCYXNlKilyZWYyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotCi0vKgotICAgIEpTR2V0VHlwZUlECi0qLwotSlNUeXBlSUQgSlNHZXRUeXBl
SUQoSlNUeXBlUmVmIHJlZikKLXsKLSAgICBKU1R5cGVJRCByZXN1bHQgPSBrSlNJbnZhbGlkVHlw
ZUlEOwotICAgIGlmIChyZWYpCi0gICAgewotICAgICAgICBKU0Jhc2UqIHB0ciA9IChKU0Jhc2Uq
KXJlZjsKLSAgICAgICAgcmVzdWx0ID0gcHRyLT5HZXRUeXBlSUQoKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotCi0vKgotICAgIEpTR2V0UmV0YWluQ291bnQKLSovCi1DRkluZGV4
IEpTR2V0UmV0YWluQ291bnQoSlNUeXBlUmVmIHJlZikKLXsKLSAgICBDRkluZGV4IHJlc3VsdCA9
IC0xOwotICAgIGlmIChyZWYpCi0gICAgewotICAgICAgICBKU0Jhc2UqIHB0ciA9IChKU0Jhc2Uq
KXJlZjsKLSAgICAgICAgcmVzdWx0ID0gcHRyLT5SZXRhaW5Db3VudCgpOwotICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0KLQotLyoKLSAgICBKU09iamVjdENyZWF0ZQotKi8KLUpTT2Jq
ZWN0UmVmIEpTT2JqZWN0Q3JlYXRlKHZvaWQgKmRhdGEsIEpTT2JqZWN0Q2FsbEJhY2tzUHRyIGNh
bGxCYWNrcykKLXsKLSAgICBKU09iamVjdFJlZiByZXN1bHQgPSBKU09iamVjdENyZWF0ZUludGVy
bmFsKGRhdGEsIGNhbGxCYWNrcywgMCwga0pTVXNlck9iamVjdERhdGFUeXBlVW5rbm93bik7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAgICBKU09iamVjdENyZWF0ZUludGVybmFsCi0q
LwotSlNPYmplY3RSZWYgSlNPYmplY3RDcmVhdGVJbnRlcm5hbCh2b2lkICpkYXRhLCBKU09iamVj
dENhbGxCYWNrc1B0ciBjYWxsQmFja3MsIEpTT2JqZWN0TWFya1Byb2NQdHIgbWFya1Byb2MsIGlu
dCB0eXBlKQotewotICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IDA7Ci0gICAgSlNVc2VyT2JqZWN0
KiBwdHIgPSBuZXcgSlNVc2VyT2JqZWN0KGNhbGxCYWNrcywgbWFya1Byb2MsIGRhdGEsIHR5cGUp
OwotICAgIHJlc3VsdCA9IChKU09iamVjdFJlZilwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLyoKLSAgICBKU09iamVjdENvcHlDRlZhbHVlCi0qLwotQ0ZUeXBlUmVmIEpTT2JqZWN0Q29w
eUNGVmFsdWUoSlNPYmplY3RSZWYgcmVmKQotewotICAgIENGVHlwZVJlZiByZXN1bHQgPSAwOwot
ICAgIEpTVXNlck9iamVjdCogcHRyID0gKEpTVXNlck9iamVjdCopcmVmOwotICAgIGlmIChwdHIg
JiYgKHB0ci0+R2V0VHlwZUlEKCkgPT0ga0pTT2JqZWN0VHlwZUlEKSkKLSAgICB7Ci0gICAgICAg
IHJlc3VsdCA9IHB0ci0+Q29weUNGVmFsdWUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLyoKLSAgICBKU09iamVjdEdldERhdGEKLSovCi12b2lkICpKU09iamVjdEdldERhdGEo
SlNPYmplY3RSZWYgcmVmKQotewotICAgIHZvaWQgKnJlc3VsdCA9IDA7Ci0gICAgSlNVc2VyT2Jq
ZWN0KiBwdHIgPSAoSlNVc2VyT2JqZWN0KilyZWY7Ci0gICAgaWYgKHB0ciAmJiAocHRyLT5HZXRU
eXBlSUQoKSA9PSBrSlNPYmplY3RUeXBlSUQpKQotICAgIHsKLSAgICAgICAgcmVzdWx0ID0gcHRy
LT5HZXREYXRhKCk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyoKLSAgICBK
U09iamVjdENvcHlQcm9wZXJ0eQotKi8KLUpTT2JqZWN0UmVmIEpTT2JqZWN0Q29weVByb3BlcnR5
KEpTT2JqZWN0UmVmIHJlZiwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1lKQotewotICAgIEpTT2Jq
ZWN0UmVmIHJlc3VsdCA9IDA7Ci0gICAgSlNVc2VyT2JqZWN0KiBwdHIgPSAoSlNVc2VyT2JqZWN0
KilyZWY7Ci0gICAgaWYgKHB0ciAmJiAocHRyLT5HZXRUeXBlSUQoKSA9PSBrSlNPYmplY3RUeXBl
SUQpKQotICAgIHsKLSAgICAgICAgcmVzdWx0ID0gKEpTT2JqZWN0UmVmKXB0ci0+Q29weVByb3Bl
cnR5KHByb3BlcnR5TmFtZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyoK
LSAgICBKU09iamVjdFNldFByb3BlcnR5Ci0qLwotdm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpT
T2JqZWN0UmVmIHJlZiwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU09iamVjdFJlZiB2YWx1
ZSkKLXsKLSAgICBKU1VzZXJPYmplY3QqIHB0ciA9IChKU1VzZXJPYmplY3QqKXJlZjsKLSAgICBp
ZiAocHRyICYmIChwdHItPkdldFR5cGVJRCgpID09IGtKU09iamVjdFR5cGVJRCkpCi0gICAgewot
ICAgICAgICBwdHItPlNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgKEpTVXNlck9iamVjdCopdmFs
dWUpOwotICAgIH0KLX0KLQotCi0vKgotICAgIEpTT2JqZWN0Q2FsbEZ1bmN0aW9uCi0qLwotSlNP
YmplY3RSZWYgSlNPYmplY3RDYWxsRnVuY3Rpb24oSlNPYmplY3RSZWYgcmVmLCBKU09iamVjdFJl
ZiB0aGlzT2JqLCBDRkFycmF5UmVmIGFyZ3MpCi17Ci0gICAgSlNPYmplY3RSZWYgcmVzdWx0ID0g
MDsKLSAgICBKU1VzZXJPYmplY3QqIHB0ciA9IChKU1VzZXJPYmplY3QqKXJlZjsKLSAgICBpZiAo
cHRyICYmIChwdHItPkdldFR5cGVJRCgpID09IGtKU09iamVjdFR5cGVJRCkpCi0gICAgewotICAg
ICAgICByZXN1bHQgPSAoSlNPYmplY3RSZWYpcHRyLT5DYWxsRnVuY3Rpb24oKEpTVXNlck9iamVj
dCopdGhpc09iaiwgYXJncyk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyoK
LSAgICBKU1J1bkNyZWF0ZQotKi8KLUpTUnVuUmVmIEpTUnVuQ3JlYXRlKENGU3RyaW5nUmVmIGpz
U291cmNlLCBKU0ZsYWdzIGluRmxhZ3MpCi17Ci0gICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwot
Ci0gICAgSlNSdW5SZWYgcmVzdWx0ID0gMDsKLSAgICBpZiAoanNTb3VyY2UpCi0gICAgewotICAg
ICAgICBKU0dsdWVBUElFbnRyeSBlbnRyeTsKLSAgICAgICAgcmVzdWx0ID0gKEpTUnVuUmVmKSBu
ZXcgSlNSdW4oanNTb3VyY2UsIGluRmxhZ3MpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0vKgotICAgIEpTUnVuQ29weVNvdXJjZQotKi8KLUNGU3RyaW5nUmVmIEpTUnVuQ29weVNv
dXJjZShKU1J1blJlZiByZWYpCi17Ci0gICAgQ0ZTdHJpbmdSZWYgcmVzdWx0ID0gMDsKLSAgICBK
U1J1biogcHRyID0gKEpTUnVuKilyZWY7Ci0gICAgaWYgKHB0cikKLSAgICB7Ci0gICAgICAgIHJl
c3VsdCA9IFVTdHJpbmdUb0NGU3RyaW5nKHB0ci0+R2V0U291cmNlKCkpOwotICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qCi0gICAgSlNSdW5Db3B5R2xvYmFsT2JqZWN0Ci0qLwot
SlNPYmplY3RSZWYgSlNSdW5Db3B5R2xvYmFsT2JqZWN0KEpTUnVuUmVmIHJlZikKLXsKLSAgICBK
U09iamVjdFJlZiByZXN1bHQgPSAwOwotICAgIEpTUnVuKiBwdHIgPSAoSlNSdW4qKXJlZjsKLSAg
ICBpZiAocHRyKQotICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHB0ci0+R2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIHJlc3VsdCA9IChKU09iamVjdFJlZilLSlNW
YWx1ZVRvSlNPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7
Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gICAgSlNSdW5FdmFsdWF0ZQot
Ki8KLUpTT2JqZWN0UmVmIEpTUnVuRXZhbHVhdGUoSlNSdW5SZWYgcmVmKQotewotICAgIEpTT2Jq
ZWN0UmVmIHJlc3VsdCA9IDA7Ci0gICAgSlNSdW4qIHB0ciA9IChKU1J1biopcmVmOwotICAgIGlm
IChwdHIpCi0gICAgewotICAgICAgICBKU0dsdWVBUElFbnRyeSBlbnRyeTsKLSAgICAgICAgQ29t
cGxldGlvbiBjb21wbGV0aW9uID0gcHRyLT5FdmFsdWF0ZSgpOwotICAgICAgICBpZiAoY29tcGxl
dGlvbi5pc1ZhbHVlQ29tcGxldGlvbigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQg
PSAoSlNPYmplY3RSZWYpS0pTVmFsdWVUb0pTT2JqZWN0KGNvbXBsZXRpb24udmFsdWUoKSwgcHRy
LT5HbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChjb21wbGV0aW9uLmNvbXBsVHlwZSgpID09IFRocm93KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBKU0ZsYWdzIGZsYWdzID0gcHRyLT5GbGFncygpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYg
a0pTRmxhZ0RlYnVnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENGVHlwZVJlZiBl
cnJvciA9IEpTT2JqZWN0Q29weUNGVmFsdWUocmVzdWx0KTsKLSAgICAgICAgICAgICAgICBpZiAo
ZXJyb3IpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBDRlNob3coZXJy
b3IpOwotICAgICAgICAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0vKgotICAgIEpTUnVuQ2hlY2tTeW50YXgKLSAgICBSZXR1cm4gdHJ1ZSBpZiBubyBz
eW50YXggZXJyb3IKLSovCi1ib29sIEpTUnVuQ2hlY2tTeW50YXgoSlNSdW5SZWYgcmVmKQotewot
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgSlNSdW4qIHB0ciA9IChKU1J1biopcmVmOwot
ICAgIGlmIChwdHIpCi0gICAgewotICAgICAgICAgICAgSlNHbHVlQVBJRW50cnkgZW50cnk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBwdHItPkNoZWNrU3ludGF4KCk7Ci0gICAgfQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS8qCi0gICAgSlNDb2xsZWN0IC0gdHJpZ2dlciBnYXJiYWdlIGNvbGxl
Y3Rpb24KLSovCi12b2lkIEpTQ29sbGVjdCgpCi17Ci0gICAgaW5pdGlhbGl6ZVRocmVhZGluZygp
OwotCi0gICAgSlNHbHVlQVBJRW50cnkgZW50cnk7Ci0gICAgSGVhcCogaGVhcCA9IGdldFRocmVh
ZEdsb2JhbEV4ZWNTdGF0ZSgpLT5oZWFwKCk7Ci0gICAgaWYgKCFoZWFwLT5pc0J1c3koKSkKLSAg
ICAgICAgaGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKLX0KLQotLyoKLSAgICBKU1R5cGVHZXRD
RkFycmF5Q2FsbEJhY2tzCi0qLwotdm9pZCBKU1R5cGVHZXRDRkFycmF5Q2FsbEJhY2tzKENGQXJy
YXlDYWxsQmFja3MqIG91dENhbGxCYWNrcykKLXsKLSAgICBpZiAob3V0Q2FsbEJhY2tzKQotICAg
IHsKLSAgICAgICAgb3V0Q2FsbEJhY2tzLT52ZXJzaW9uID0gMTsKLSAgICAgICAgb3V0Q2FsbEJh
Y2tzLT5yZXRhaW4gPSAoQ0ZBcnJheVJldGFpbkNhbGxCYWNrKUpTQ0ZSZXRhaW47Ci0gICAgICAg
IG91dENhbGxCYWNrcy0+cmVsZWFzZSA9IChDRkFycmF5UmVsZWFzZUNhbGxCYWNrKUpTQ0ZSZWxl
YXNlOwotICAgICAgICBvdXRDYWxsQmFja3MtPmNvcHlEZXNjcmlwdGlvbiA9IChDRkFycmF5Q29w
eURlc2NyaXB0aW9uQ2FsbEJhY2spSlNDb3B5RGVzY3JpcHRpb247Ci0gICAgICAgIG91dENhbGxC
YWNrcy0+ZXF1YWwgPSAoQ0ZBcnJheUVxdWFsQ2FsbEJhY2spSlNFcXVhbDsKLSAgICB9Ci19Ci0K
LQotLyoKLSAgICBKU0NGUmV0YWluCi0qLwotdm9pZCAqSlNDRlJldGFpbihDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIGNvbnN0IHZvaWQgKnZhbHVlKQotewotICAgIEpTUmV0YWluKChKU1R5cGVS
ZWYpdmFsdWUpOwotICAgIHJldHVybiAodm9pZCopdmFsdWU7Ci19Ci0KLS8qCi0gICAgSlNDRlJl
bGVhc2UKLSovCi12b2lkIEpTQ0ZSZWxlYXNlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29u
c3Qgdm9pZCAqdmFsdWUpCi17Ci0gICAgSlNSZWxlYXNlKChKU1R5cGVSZWYpdmFsdWUpOwotfQot
Ci0KLS8qCi0gICAgSlNPYmplY3RDcmVhdGVXaXRoQ0ZUeXBlCi0qLwotSlNPYmplY3RSZWYgSlNP
YmplY3RDcmVhdGVXaXRoQ0ZUeXBlKENGVHlwZVJlZiBpblJlZikKLXsKLSAgICBKU09iamVjdENh
bGxCYWNrcyBjYWxsQmFja3M7Ci0gICAgSlNPYmplY3RSZWYgY2ZKU09iamVjdCA9IG5pbDsKLSAg
ICBpZiAoaW5SZWYpCi0gICAgewotICAgICAgICBjYWxsQmFja3MuZGlzcG9zZSA9IENGSlNPYmpl
Y3REaXNwb3NlOwotICAgICAgICBjYWxsQmFja3MuZXF1YWwgPSBDRkpTT2JqZWN0RXF1YWw7Ci0g
ICAgICAgIGNhbGxCYWNrcy5jb3B5Q0ZWYWx1ZSA9IENGSlNPYmplY3RDb3B5Q0ZWYWx1ZTsKLSAg
ICAgICAgY2FsbEJhY2tzLmNvcHlQcm9wZXJ0eSA9IENGSlNPYmplY3RDb3B5UHJvcGVydHk7Ci0g
ICAgICAgIGNhbGxCYWNrcy5zZXRQcm9wZXJ0eSA9IENGSlNPYmplY3RTZXRQcm9wZXJ0eTsKLSAg
ICAgICAgY2FsbEJhY2tzLmNhbGxGdW5jdGlvbiA9IDA7Ci0gICAgICAgIGNhbGxCYWNrcy5jb3B5
UHJvcGVydHlOYW1lcyA9IENGSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lczsKLSAgICAgICAgY2ZK
U09iamVjdCA9IEpTT2JqZWN0Q3JlYXRlSW50ZXJuYWwoKHZvaWQqKUNGUmV0YWluKGluUmVmKSwg
JmNhbGxCYWNrcywgMCwga0pTVXNlck9iamVjdERhdGFUeXBlQ0ZUeXBlICk7Ci0gICAgfQotICAg
IHJldHVybiBjZkpTT2JqZWN0OwotfQotCi0vKgotICAgIENGSlNPYmplY3REaXNwb3NlCi0qLwot
dm9pZCBDRkpTT2JqZWN0RGlzcG9zZSh2b2lkICpkYXRhKQotewotICAgIGlmIChkYXRhKQotICAg
IHsKLSAgICAgICAgQ0ZSZWxlYXNlKChKU1R5cGVSZWYpZGF0YSk7Ci0gICAgfQotfQotCi1DRkFy
cmF5UmVmIEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMoSlNPYmplY3RSZWYgcmVmKQotewotICAg
IENGQXJyYXlSZWYgcmVzdWx0ID0gMDsKLSAgICBKU1VzZXJPYmplY3QqIHB0ciA9IChKU1VzZXJP
YmplY3QqKXJlZjsKLSAgICBpZiAocHRyICYmIChwdHItPkdldFR5cGVJRCgpID09IGtKU09iamVj
dFR5cGVJRCkpCi0gICAgewotICAgICAgICByZXN1bHQgPSBwdHItPkNvcHlQcm9wZXJ0eU5hbWVz
KCk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0vKgotICAgIENGSlNPYmplY3RDb3B5
UHJvcGVydHkKLSovCi1KU09iamVjdFJlZiBDRkpTT2JqZWN0Q29weVByb3BlcnR5KHZvaWQgKmRh
dGEsIENGU3RyaW5nUmVmIHByb3BlcnR5TmFtZSkKLXsKLSAgICBKU09iamVjdFJlZiByZXN1bHQg
PSAwOwotICAgIGlmIChkYXRhICYmIHByb3BlcnR5TmFtZSkKLSAgICB7Ci0gICAgICAgIENGVHlw
ZVJlZiBjZlJlc3VsdCA9IDA7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRChkYXRhKSA9PSBDRkRp
Y3Rpb25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKENGU3RyaW5n
Q29tcGFyZShwcm9wZXJ0eU5hbWUsIENGU1RSKCJsZW5ndGgiKSwgMCkgPT0ga0NGQ29tcGFyZUVx
dWFsVG8pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IGxlbiA9IENGRGljdGlv
bmFyeUdldENvdW50KChDRkRpY3Rpb25hcnlSZWYpZGF0YSk7Ci0gICAgICAgICAgICAgICAgY2ZS
ZXN1bHQgPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmbGVuKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjZlJlc3VsdCA9IFJldGFpbkNGVHlwZShDRkRpY3Rpb25hcnlHZXRWYWx1ZSgoQ0ZEaWN0aW9u
YXJ5UmVmKWRhdGEsIHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKENGR2V0VHlwZUlEKGRhdGEpID09IENGQXJyYXlHZXRUeXBlSUQoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShwcm9wZXJ0eU5hbWUs
IENGU1RSKCJsZW5ndGgiKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaW50IGxlbiA9IENGQXJyYXlHZXRDb3VudCgoQ0ZBcnJheVJlZilk
YXRhKTsKLSAgICAgICAgICAgICAgICBjZlJlc3VsdCA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51
bWJlckludFR5cGUsICZsZW4pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIFNJbnQzMiBpbmRleCA9IENGU3RyaW5nR2V0SW50
VmFsdWUocHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgICAgICBDRkluZGV4IGFycmF5Q291bnQg
PSBDRkFycmF5R2V0Q291bnQoKENGQXJyYXlSZWYpZGF0YSk7Ci0gICAgICAgICAgICAgICAgaWYg
KGluZGV4ID49IDAgJiYgaW5kZXggPCBhcnJheUNvdW50KQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2ZSZXN1bHQgPSBSZXRhaW5DRlR5cGUoQ0ZBcnJheUdldFZhbHVl
QXRJbmRleCgoQ0ZBcnJheVJlZilkYXRhLCBpbmRleCkpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChDRkdldFR5cGVJRChkYXRh
KSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKHByb3BlcnR5TmFtZSwgQ0ZTVFIoImxlbmd0aCIpLCAwKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgbGVuID0gQ0ZT
dHJpbmdHZXRMZW5ndGgoKENGU3RyaW5nUmVmKWRhdGEpOwotICAgICAgICAgICAgICAgIGNmUmVz
dWx0ID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmxlbik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNmUmVzdWx0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBKU09iamVjdENyZWF0ZVdpdGhDRlR5cGUoY2ZSZXN1bHQpOwotICAg
ICAgICAgICAgQ0ZSZWxlYXNlKGNmUmVzdWx0KTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0KLS8qCi0gICAgQ0ZKU09iamVjdFNldFByb3BlcnR5Ci0qLwotdm9p
ZCBDRkpTT2JqZWN0U2V0UHJvcGVydHkodm9pZCAqZGF0YSwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlO
YW1lLCBKU09iamVjdFJlZiBqc1ZhbHVlKQotewotICAgIGlmIChkYXRhICYmIHByb3BlcnR5TmFt
ZSkKLSAgICB7Ci0gICAgICAgIENGVHlwZVJlZiBjZlZhbHVlID0gSlNPYmplY3RDb3B5Q0ZWYWx1
ZShqc1ZhbHVlKTsKLQotICAgICAgICBpZiAoY2ZWYWx1ZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKENGR2V0VHlwZUlEKGRhdGEpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKChDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmKWRhdGEsIHByb3BlcnR5TmFtZSwgY2ZWYWx1ZSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChDRkdldFR5cGVJRChkYXRhKSA9PSBDRkFycmF5R2V0
VHlwZUlEKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU0ludDMyIGluZGV4ID0g
Q0ZTdHJpbmdHZXRJbnRWYWx1ZShwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgICAgIENGSW5k
ZXggYXJyYXlDb3VudCA9IENGQXJyYXlHZXRDb3VudCgoQ0ZBcnJheVJlZilkYXRhKTsKLSAgICAg
ICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAoOyBhcnJheUNvdW50IDwgaW5kZXg7IGFycmF5Q291bnQrKykKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKChDRk11dGFibGVBcnJheVJlZilkYXRhLCBHZXRDRk51bGwoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgQ0ZBcnJheVNldFZhbHVlQXRJbmRleCgoQ0ZN
dXRhYmxlQXJyYXlSZWYpZGF0YSwgaW5kZXgsIGNmVmFsdWUpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIENGUmVsZWFzZShjZlZhbHVlKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChk
YXRhKSA9PSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBDRkRpY3Rpb25hcnlSZW1vdmVWYWx1ZSgoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilk
YXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
Q0ZHZXRUeXBlSUQoZGF0YSkgPT0gQ0ZBcnJheUdldFR5cGVJRCgpKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIFNJbnQzMiBpbmRleCA9IENGU3RyaW5nR2V0SW50VmFsdWUocHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgICAgICAgICBDRkluZGV4IGFycmF5Q291bnQgPSBDRkFycmF5R2V0
Q291bnQoKENGQXJyYXlSZWYpZGF0YSk7Ci0gICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDAp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBmb3IgKDsgYXJyYXlDb3Vu
dCA8IGluZGV4OyBhcnJheUNvdW50KyspCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZSgoQ0ZNdXRhYmxlQXJyYXlSZWYpZGF0
YSwgR2V0Q0ZOdWxsKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIENGQXJyYXlTZXRWYWx1ZUF0SW5kZXgoKENGTXV0YWJsZUFycmF5UmVmKWRhdGEsIGluZGV4
LCBHZXRDRk51bGwoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotfQotCi0KLS8qCi0gICAgQ0ZKU09iamVjdENvcHlDRlZhbHVlCi0qLwotQ0ZU
eXBlUmVmIENGSlNPYmplY3RDb3B5Q0ZWYWx1ZSh2b2lkICpkYXRhKQotewotICAgIENGVHlwZVJl
ZiByZXN1bHQgPSAwOwotICAgIGlmIChkYXRhKQotICAgIHsKLSAgICAgICAgcmVzdWx0ID0gKENG
VHlwZVJlZilDRlJldGFpbihkYXRhKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LyoKLSAgICBDRkpTT2JqZWN0Q29weUNGVmFsdWUKLSovCi1VSW50OCBDRkpTT2JqZWN0RXF1YWwo
dm9pZCAqZGF0YTEsIHZvaWQgKmRhdGEyKQotewotICAgIFVJbnQ4IHJlc3VsdCA9IGZhbHNlOwot
ICAgIGlmIChkYXRhMSAmJiBkYXRhMikKLSAgICB7Ci0gICAgICAgIENGRXF1YWwoKENGVHlwZVJl
ZilkYXRhMSwgKENGVHlwZVJlZilkYXRhMik7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLQotLyoKLSAgICBDRkpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMKLSovCi1DRkFycmF5UmVm
IENGSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyh2b2lkICpkYXRhKQotewotICAgIENGTXV0YWJs
ZUFycmF5UmVmIHJlc3VsdCA9IDA7Ci0gICAgaWYgKGRhdGEpCi0gICAgewotICAgICAgICBDRlR5
cGVJRCBjZlR5cGUgPSBDRkdldFR5cGVJRChkYXRhKTsKLSAgICAgICAgaWYgKGNmVHlwZSA9PSBD
RkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgQ0ZJbmRleCBj
b3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KChDRkRpY3Rpb25hcnlSZWYpZGF0YSk7Ci0gICAg
ICAgICAgICBpZiAoY291bnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ0ZUeXBl
UmVmKiBrZXlzID0gKENGVHlwZVJlZiopbWFsbG9jKHNpemVvZihDRlR5cGVSZWYpKmNvdW50KTsK
LSAgICAgICAgICAgICAgICBpZiAoa2V5cykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlz
QW5kVmFsdWVzKChDRkRpY3Rpb25hcnlSZWYpZGF0YSwgKGNvbnN0IHZvaWQgKiopa2V5cywgMCk7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXkg
PSAoQ0ZTdHJpbmdSZWYpa2V5c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDRkdl
dFR5cGVJRChrZXkpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoMCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIXJlc3VsdCkgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIENGQXJy
YXlBcHBlbmRWYWx1ZShyZXN1bHQsIGtleSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgZnJlZShrZXlzKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0KLQotQ0ZN
dXRhYmxlQXJyYXlSZWYgSlNDcmVhdGVDRkFycmF5RnJvbUpTQXJyYXkoQ0ZBcnJheVJlZiBhcnJh
eSkKLXsKLSAgICBDRkluZGV4IGNvdW50ID0gYXJyYXkgPyBDRkFycmF5R2V0Q291bnQoYXJyYXkp
IDogMDsKLSAgICBDRk11dGFibGVBcnJheVJlZiBjZkFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoMCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgQ0ZJbmRleCBpOwotCi0gICAg
Zm9yIChpID0gMDsgY2ZBcnJheSAmJiBpIDwgIGNvdW50OyBpKyspCi0gICAgewotICAgICAgICBK
U09iamVjdFJlZiBqc1ZhbHVlID0gKEpTT2JqZWN0UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
YXJyYXksIGkpOwotICAgICAgICBDRlR5cGVSZWYgY2Z2YWx1ZSA9IEpTT2JqZWN0Q29weUNGVmFs
dWUoanNWYWx1ZSk7Ci0gICAgICAgIGlmIChjZnZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBDRkFycmF5QXBwZW5kVmFsdWUoY2ZBcnJheSwgY2Z2YWx1ZSk7Ci0gICAgICAgICAgICBDRlJl
bGVhc2UoY2Z2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2ZBcnJheSwgR2V0Q0ZOdWxsKCkpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiBjZkFycmF5OwotfQotCi1DRk11dGFibGVBcnJheVJlZiBK
U0NyZWF0ZUpTQXJyYXlGcm9tQ0ZBcnJheShDRkFycmF5UmVmIGFycmF5KQotewotICAgIGluaXRp
YWxpemVUaHJlYWRpbmcoKTsKLQotICAgIENGSW5kZXggY291bnQgPSBhcnJheSA/IENGQXJyYXlH
ZXRDb3VudChhcnJheSkgOiAwOwotICAgIENGQXJyYXlDYWxsQmFja3MgYXJyYXlDYWxsYmFja3M7
Ci0gICAgQ0ZNdXRhYmxlQXJyYXlSZWYganNBcnJheTsKLSAgICBDRkluZGV4IGk7Ci0KLSAgICBK
U1R5cGVHZXRDRkFycmF5Q2FsbEJhY2tzKCZhcnJheUNhbGxiYWNrcyk7Ci0gICAganNBcnJheSA9
IENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIDAsICZhcnJheUNhbGxiYWNrcyk7Ci0KLSAgICBmb3Ig
KGkgPSAwOyBhcnJheSAmJiBpIDwgIGNvdW50OyBpKyspCi0gICAgewotICAgICAgICBDRlR5cGVS
ZWYgY2ZWYWx1ZSA9IChDRlR5cGVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhcnJheSwgaSk7
Ci0gICAgICAgIEpTT2JqZWN0UmVmIGpzVmFsdWUgPSBKU09iamVjdENyZWF0ZVdpdGhDRlR5cGUo
Y2ZWYWx1ZSk7Ci0KLSAgICAgICAgaWYgKCFqc1ZhbHVlKSBqc1ZhbHVlID0gSlNPYmplY3RDcmVh
dGVXaXRoQ0ZUeXBlKEdldENGTnVsbCgpKTsKLSAgICAgICAgaWYgKGpzVmFsdWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShqc0FycmF5LCBqc1ZhbHVlKTsKLSAg
ICAgICAgICAgIEpTUmVsZWFzZShqc1ZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4ganNBcnJheTsKLX0KLQotCi12b2lkIEpTTG9ja0ludGVycHJldGVyKCkKLXsKLSAgICBpbml0
aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgSlNMb2NrOjpsb2NrKExvY2tGb3JSZWFsKTsKLX0KLQot
Ci12b2lkIEpTVW5sb2NrSW50ZXJwcmV0ZXIoKQotewotICAgIEpTTG9jazo6dW5sb2NrKExvY2tG
b3JSZWFsKTsKLX0KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0phdmFTY3JpcHRHbHVlLmV4cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KYXZhU2NyaXB0R2x1ZS5leHAJKHJldmlzaW9uIDc0
NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvSmF2YVNjcmlwdEdsdWUuZXhwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDM1ICswLDAgQEAKLV9KU1NldENGTnVsbAotX0pTR2V0Q0ZOdWxsCi0KLV9KU1JldGFp
bgotX0pTUmVsZWFzZQotX0pTR2V0VHlwZUlECi1fSlNHZXRSZXRhaW5Db3VudAotX0pTQ29weURl
c2NyaXB0aW9uCi1fSlNFcXVhbAotCi1fSlNPYmplY3RDcmVhdGUKLV9KU09iamVjdENyZWF0ZVdp
dGhDRlR5cGUKLV9KU09iamVjdENvcHlDRlZhbHVlCi1fSlNPYmplY3RHZXREYXRhCi0KLV9KU09i
amVjdENvcHlQcm9wZXJ0eQotX0pTT2JqZWN0U2V0UHJvcGVydHkKLV9KU09iamVjdENhbGxGdW5j
dGlvbgotX0pTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMKLQotX0pTUnVuQ3JlYXRlCi1fSlNSdW5D
b3B5U291cmNlCi1fSlNSdW5Db3B5R2xvYmFsT2JqZWN0Ci1fSlNSdW5FdmFsdWF0ZQotCi1fSlNU
eXBlR2V0Q0ZBcnJheUNhbGxCYWNrcwotCi1fSlNDcmVhdGVDRkFycmF5RnJvbUpTQXJyYXkKLV9K
U0NyZWF0ZUpTQXJyYXlGcm9tQ0ZBcnJheQotCi1fSlNSdW5DaGVja1N5bnRheAotCi1fSlNMb2Nr
SW50ZXJwcmV0ZXIKLV9KU1VubG9ja0ludGVycHJldGVyCi1fSlNDb2xsZWN0CkluZGV4OiBKYXZh
U2NyaXB0R2x1ZS9KYXZhU2NyaXB0R2x1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVl
L0phdmFTY3JpcHRHbHVlLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvSmF2
YVNjcmlwdEdsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEpBVkFTQ1JJUFRHTFVFX0gKLSNkZWZpbmUgSkFWQVNDUklQVEdMVUVfSAot
Ci0jaWZuZGVmIF9fQ09SRVNFUlZJQ0VTX18KLSNpbmNsdWRlIDxDb3JlU2VydmljZXMvQ29yZVNl
cnZpY2VzLmg+Ci0jZW5kaWYKLQotI2lmbmRlZiBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJ
T05fMTBfNV9BTkRfTEFURVIKLSNkZWZpbmUgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9O
XzEwXzVfQU5EX0xBVEVSCi0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMi
IHsKLSNlbmRpZgotCi0vKiB0eXBlZGVmcy9zdHJ1Y3RzICovCi10eXBlZGVmIGVudW0gewotICAg
IGtKU0ZsYWdOb25lID0gMCwKLSAgICBrSlNGbGFnRGVidWcgPSAxIDw8IDAsCi0gICAga0pTRmxh
Z0NvbnZlcnRBc3NvY2lhdGl2ZUFycmF5ID0gMSA8PCAxIC8qIGFzc29jaWF0aXZlIGFycmF5cyB3
aWxsIGJlIGNvbnZlcnRlZCB0byBkaWN0aW9uYXJpZXMgKi8KLX0gSlNGbGFnczsKLQotdHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlSlNUeXBlUmVmICpKU1R5cGVSZWYgREVQUkVDQVRFRF9JTl9NQUNfT1Nf
WF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotdHlwZWRlZiBKU1R5cGVSZWYgSlNPYmplY3RSZWYg
REVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotdHlwZWRlZiBK
U1R5cGVSZWYgSlNSdW5SZWYgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5E
X0xBVEVSOwotdHlwZWRlZiBDRlR5cGVJRCBKU1R5cGVJRCBERVBSRUNBVEVEX0lOX01BQ19PU19Y
X1ZFUlNJT05fMTBfNV9BTkRfTEFURVI7Ci0KLXR5cGVkZWYgdm9pZCAoKkpTT2JqZWN0RGlzcG9z
ZVByb2NQdHIpKHZvaWQgKmRhdGEpIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF81
X0FORF9MQVRFUjsKLXR5cGVkZWYgQ0ZBcnJheVJlZiAoKkpTT2JqZWN0Q29weVByb3BlcnR5TmFt
ZXNQcm9jUHRyKSh2b2lkICpkYXRhKSBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBf
NV9BTkRfTEFURVI7Ci10eXBlZGVmIEpTT2JqZWN0UmVmICgqSlNPYmplY3RDb3B5UHJvcGVydHlQ
cm9jUHRyKSh2b2lkICpkYXRhLCBDRlN0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpIERFUFJFQ0FURURf
SU5fTUFDX09TX1hfVkVSU0lPTl8xMF81X0FORF9MQVRFUjsKLXR5cGVkZWYgdm9pZCAoKkpTT2Jq
ZWN0U2V0UHJvcGVydHlQcm9jUHRyKSh2b2lkICpkYXRhLCBDRlN0cmluZ1JlZiBwcm9wZXJ0eU5h
bWUsIEpTT2JqZWN0UmVmIGpzVmFsdWUpIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8x
MF81X0FORF9MQVRFUjsKLXR5cGVkZWYgSlNPYmplY3RSZWYgKCpKU09iamVjdENhbGxGdW5jdGlv
blByb2NQdHIpKHZvaWQgKmRhdGEsIEpTT2JqZWN0UmVmIHRoaXNPYmosIENGQXJyYXlSZWYgYXJn
cykgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotdHlwZWRl
ZiBDRlR5cGVSZWYgKCpKU09iamVjdENvcHlDRlZhbHVlUHJvY1B0cikodm9pZCAqZGF0YSkgREVQ
UkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotdHlwZWRlZiBVSW50
OCAoKkpTT2JqZWN0RXF1YWxQcm9jUHRyKSh2b2lkICpkYXRhMSwgdm9pZCAqZGF0YTIpIERFUFJF
Q0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF81X0FORF9MQVRFUjsKLQotc3RydWN0IEpTT2Jq
ZWN0Q2FsbEJhY2tzIHsKLSAgICBKU09iamVjdERpc3Bvc2VQcm9jUHRyIGRpc3Bvc2U7Ci0gICAg
SlNPYmplY3RFcXVhbFByb2NQdHIgZXF1YWw7Ci0gICAgSlNPYmplY3RDb3B5Q0ZWYWx1ZVByb2NQ
dHIgY29weUNGVmFsdWU7Ci0gICAgSlNPYmplY3RDb3B5UHJvcGVydHlQcm9jUHRyIGNvcHlQcm9w
ZXJ0eTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5UHJvY1B0ciBzZXRQcm9wZXJ0eTsKLSAgICBK
U09iamVjdENhbGxGdW5jdGlvblByb2NQdHIgY2FsbEZ1bmN0aW9uOwotICAgIEpTT2JqZWN0Q29w
eVByb3BlcnR5TmFtZXNQcm9jUHRyIGNvcHlQcm9wZXJ0eU5hbWVzOwotfSBERVBSRUNBVEVEX0lO
X01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFURVI7Ci0KLXR5cGVkZWYgc3RydWN0IEpTT2Jq
ZWN0Q2FsbEJhY2tzIEpTT2JqZWN0Q2FsbEJhY2tzLCAqSlNPYmplY3RDYWxsQmFja3NQdHIgREVQ
UkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotCi12b2lkIEpTU2V0
Q0ZOdWxsKENGVHlwZVJlZiBudWxsUmVmKSBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05f
MTBfNV9BTkRfTEFURVI7Ci1DRlR5cGVSZWYgSlNHZXRDRk51bGwodm9pZCkgREVQUkVDQVRFRF9J
Tl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotCi1KU1R5cGVSZWYgSlNSZXRhaW4o
SlNUeXBlUmVmIHJlZikgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xB
VEVSOwotdm9pZCBKU1JlbGVhc2UoSlNUeXBlUmVmIHJlZikgREVQUkVDQVRFRF9JTl9NQUNfT1Nf
WF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotSlNUeXBlSUQgSlNHZXRUeXBlSUQoSlNUeXBlUmVm
IHJlZikgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotQ0ZJ
bmRleCBKU0dldFJldGFpbkNvdW50KEpTVHlwZVJlZiByZWYpIERFUFJFQ0FURURfSU5fTUFDX09T
X1hfVkVSU0lPTl8xMF81X0FORF9MQVRFUjsKLUNGU3RyaW5nUmVmIEpTQ29weURlc2NyaXB0aW9u
KEpTVHlwZVJlZiByZWYpIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF81X0FORF9M
QVRFUjsKLVVJbnQ4IEpTRXF1YWwoSlNUeXBlUmVmIHJlZjEsIEpTVHlwZVJlZiByZWYyKSBERVBS
RUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFURVI7Ci0KLUpTT2JqZWN0UmVm
IEpTT2JqZWN0Q3JlYXRlKHZvaWQgKmRhdGEsIEpTT2JqZWN0Q2FsbEJhY2tzUHRyIGNhbGxCYWNr
cykgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotSlNPYmpl
Y3RSZWYgSlNPYmplY3RDcmVhdGVXaXRoQ0ZUeXBlKENGVHlwZVJlZiBpblJlZikgREVQUkVDQVRF
RF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotQ0ZUeXBlUmVmIEpTT2JqZWN0
Q29weUNGVmFsdWUoSlNPYmplY3RSZWYgcmVmKSBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJ
T05fMTBfNV9BTkRfTEFURVI7Ci12b2lkICpKU09iamVjdEdldERhdGEoSlNPYmplY3RSZWYgcmVm
KSBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFURVI7Ci0KLUNGQXJy
YXlSZWYgSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhKU09iamVjdFJlZiByZWYpIERFUFJFQ0FU
RURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF81X0FORF9MQVRFUjsKLUpTT2JqZWN0UmVmIEpTT2Jq
ZWN0Q29weVByb3BlcnR5KEpTT2JqZWN0UmVmIHJlZiwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1l
KSBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFURVI7Ci12b2lkIEpT
T2JqZWN0U2V0UHJvcGVydHkoSlNPYmplY3RSZWYgcmVmLCBDRlN0cmluZ1JlZiBwcm9wZXJ0eU5h
bWUsIEpTT2JqZWN0UmVmIHZhbHVlKSBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBf
NV9BTkRfTEFURVI7Ci1KU09iamVjdFJlZiBKU09iamVjdENhbGxGdW5jdGlvbihKU09iamVjdFJl
ZiByZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmosIENGQXJyYXlSZWYgYXJncykgREVQUkVDQVRFRF9J
Tl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotCi1KU1J1blJlZiBKU1J1bkNyZWF0
ZShDRlN0cmluZ1JlZiBqc1NvdXJjZSwgSlNGbGFncyBpbkZsYWdzKSBERVBSRUNBVEVEX0lOX01B
Q19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFURVI7Ci1DRlN0cmluZ1JlZiBKU1J1bkNvcHlTb3Vy
Y2UoSlNSdW5SZWYgcmVmKSBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRf
TEFURVI7Ci1KU09iamVjdFJlZiBKU1J1bkNvcHlHbG9iYWxPYmplY3QoSlNSdW5SZWYgcmVmKSBE
RVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFURVI7Ci1KU09iamVjdFJl
ZiBKU1J1bkV2YWx1YXRlKEpTUnVuUmVmIHJlZikgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJT
SU9OXzEwXzVfQU5EX0xBVEVSOwotYm9vbCBKU1J1bkNoZWNrU3ludGF4KEpTUnVuUmVmIHJlZikg
REVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwotCi12b2lkIEpT
Q29sbGVjdCh2b2lkKSBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFU
RVI7Ci0KLXZvaWQgSlNUeXBlR2V0Q0ZBcnJheUNhbGxCYWNrcyhDRkFycmF5Q2FsbEJhY2tzICpv
dXRDYWxsQmFja3MpIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVSU0lPTl8xMF81X0FORF9MQVRF
UjsKLQotQ0ZNdXRhYmxlQXJyYXlSZWYgSlNDcmVhdGVDRkFycmF5RnJvbUpTQXJyYXkoQ0ZBcnJh
eVJlZiBhcnJheSkgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVS
OwotQ0ZNdXRhYmxlQXJyYXlSZWYgSlNDcmVhdGVKU0FycmF5RnJvbUNGQXJyYXkoQ0ZBcnJheVJl
ZiBhcnJheSkgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9OXzEwXzVfQU5EX0xBVEVSOwot
Ci12b2lkIEpTTG9ja0ludGVycHJldGVyKHZvaWQpIERFUFJFQ0FURURfSU5fTUFDX09TX1hfVkVS
U0lPTl8xMF81X0FORF9MQVRFUjsKLXZvaWQgSlNVbmxvY2tJbnRlcnByZXRlcih2b2lkKSBERVBS
RUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJT05fMTBfNV9BTkRfTEFURVI7Ci0KLSNpZmRlZiBfX2Nw
bHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpJbmRleDogSmF2YVNjcmlwdEdsdWUvTElDRU5T
RQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9MSUNFTlNFCShyZXZpc2lvbiA3NDYxNikK
KysrIEphdmFTY3JpcHRHbHVlL0xJQ0VOU0UJKHdvcmtpbmcgY29weSkKQEAgLTEsMjEgKzAsMCBA
QAotQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFyZSBtZXQ6Ci0x
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0yLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi1FWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi1XQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi1ESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLURJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0oSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci1MT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLUFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0o
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9NYWtlZmlsZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9NYWtlZmlsZQkocmV2aXNpb24gNzQ2MTYpCisr
KyBKYXZhU2NyaXB0R2x1ZS9NYWtlZmlsZQkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi1p
bmNsdWRlIC4uL01ha2VmaWxlLnNoYXJlZApJbmRleDogSmF2YVNjcmlwdEdsdWUvVXNlck9iamVj
dEltcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAJ
KHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNDE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJVc2VyT2JqZWN0SW1wLmgiCi0KLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1N0cmluZy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFt
ZUFycmF5Lmg+Ci0KLWNvbnN0IENsYXNzSW5mbyBVc2VyT2JqZWN0SW1wOjppbmZvID0geyAiVXNl
ck9iamVjdCIsIDAsIDAsIDAgfTsKLQotVXNlck9iamVjdEltcDo6VXNlck9iamVjdEltcChQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU1VzZXJPYmplY3QqIHVzZXJPYmplY3QpCi0g
ICAgOiBKU09iamVjdChzdHJ1Y3R1cmUpCi0gICAgLCBmSlNVc2VyT2JqZWN0KChKU1VzZXJPYmpl
Y3QqKXVzZXJPYmplY3QtPlJldGFpbigpKQotewotfQotCi1Vc2VyT2JqZWN0SW1wOjp+VXNlck9i
amVjdEltcCgpCi17Ci0gICAgaWYgKGZKU1VzZXJPYmplY3QpCi0gICAgICAgIGZKU1VzZXJPYmpl
Y3QtPlJlbGVhc2UoKTsKLX0KLQotY29uc3QgQ2xhc3NJbmZvICogVXNlck9iamVjdEltcDo6Y2xh
c3NJbmZvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gJmluZm87Ci19Ci0KLUNhbGxUeXBlIFVzZXJP
YmplY3RJbXA6OmdldENhbGxEYXRhKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4g
ZkpTVXNlck9iamVjdCA/IGZKU1VzZXJPYmplY3QtPmdldENhbGxEYXRhKGNhbGxEYXRhKSA6IENh
bGxUeXBlTm9uZTsKLX0KLQotSlNWYWx1ZSBVc2VyT2JqZWN0SW1wOjpjYWxsQXNGdW5jdGlvbihF
eGVjU3RhdGUgKmV4ZWMpCi17Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwot
ICAgIEpTVXNlck9iamVjdCoganNUaGlzT2JqID0gS0pTVmFsdWVUb0pTT2JqZWN0KGV4ZWMtPmhv
c3RUaGlzVmFsdWUoKS50b1RoaXNPYmplY3QoZXhlYyksIGV4ZWMpOwotICAgIGlmIChqc1RoaXNP
YmopIHsKLSAgICAgICAgQ0ZJbmRleCBhcmdDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsK
LSAgICAgICAgQ0ZBcnJheUNhbGxCYWNrcyBhcnJheUNhbGxCYWNrczsKLSAgICAgICAgSlNUeXBl
R2V0Q0ZBcnJheUNhbGxCYWNrcygmYXJyYXlDYWxsQmFja3MpOwotICAgICAgICBDRk11dGFibGVB
cnJheVJlZiBqc0FyZ3MgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAmYXJyYXlDYWxsQmFj
a3MpOwotICAgICAgICBpZiAoanNBcmdzKSB7Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9
IDA7IGkgPCBhcmdDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgSlNVc2VyT2JqZWN0KiBq
c0FyZyA9IEtKU1ZhbHVlVG9KU09iamVjdChleGVjLT5hcmd1bWVudChpKSwgZXhlYyk7Ci0gICAg
ICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGpzQXJncywgKHZvaWQqKWpzQXJnKTsKLSAg
ICAgICAgICAgICAgICBqc0FyZy0+UmVsZWFzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgSlNVc2VyT2JqZWN0KiBqc1Jlc3VsdDsKLSAgICAgICAgeyAvLyBzY29wZQot
ICAgICAgICAgICAgSlNHbHVlQVBJQ2FsbGJhY2sgYXBpQ2FsbGJhY2soZXhlYyk7Ci0KLSAgICAg
ICAgICAgIC8vIGdldENhbGxEYXRhIHNob3VsZCBoYXZlIGd1YXJkZWQgYWdhaW5zdCBhIE5VTEwg
ZkpTVXNlck9iamVjdC4KLSAgICAgICAgICAgIGFzc2VydChmSlNVc2VyT2JqZWN0KTsKLSAgICAg
ICAgICAgIGpzUmVzdWx0ID0gZkpTVXNlck9iamVjdC0+Q2FsbEZ1bmN0aW9uKGpzVGhpc09iaiwg
anNBcmdzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChqc1Jlc3VsdCkgewotICAgICAgICAg
ICAgcmVzdWx0ID0gSlNPYmplY3RLSlNWYWx1ZShqc1Jlc3VsdCk7Ci0gICAgICAgICAgICBqc1Jl
c3VsdC0+UmVsZWFzZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVsZWFzZUNGVHlwZShqc0Fy
Z3MpOwotICAgICAgICBqc1RoaXNPYmotPlJlbGVhc2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotCi12b2lkIFVzZXJPYmplY3RJbXA6OmdldE93blByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlICpleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCi17Ci0gICAgSlNVc2VyT2JqZWN0KiBwdHIgPSBHZXRKU1VzZXJPYmplY3Qo
KTsKLSAgICBpZiAocHRyKSB7Ci0gICAgICAgIENGQXJyYXlSZWYgY2ZQcm9wZXJ0eU5hbWVzID0g
cHRyLT5Db3B5UHJvcGVydHlOYW1lcygpOwotICAgICAgICBpZiAoY2ZQcm9wZXJ0eU5hbWVzKSB7
Ci0gICAgICAgICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGNmUHJvcGVydHlO
YW1lcyk7Ci0gICAgICAgICAgICBDRkluZGV4IGk7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHByb3BlcnR5TmFt
ZSA9IChDRlN0cmluZ1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNmUHJvcGVydHlOYW1lcywg
aSk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoQ0ZTdHJpbmdUb0lkZW50aWZp
ZXIocHJvcGVydHlOYW1lLCBleGVjKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBDRlJl
bGVhc2UoY2ZQcm9wZXJ0eU5hbWVzKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLX0KLQotSlNW
YWx1ZSBVc2VyT2JqZWN0SW1wOjp1c2VyT2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKLXsKLSAgICBVc2VyT2Jq
ZWN0SW1wICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8VXNlck9iamVjdEltcCAqPihhc09iamVjdChz
bG90QmFzZSkpOwotICAgIC8vIGdldE93blByb3BlcnR5U2xvdCBzaG91bGQgaGF2ZSBndWFyZGVk
IGFnYWluc3QgYSBudWxsIGZKU1VzZXJPYmplY3QuCi0gICAgYXNzZXJ0KHRoaXNPYmotPmZKU1Vz
ZXJPYmplY3QpOwotICAgIAotICAgIENGU3RyaW5nUmVmIGNmUHJvcE5hbWUgPSBJZGVudGlmaWVy
VG9DRlN0cmluZyhwcm9wZXJ0eU5hbWUpOwotICAgIEpTVXNlck9iamVjdCAqanNSZXN1bHQgPSB0
aGlzT2JqLT5mSlNVc2VyT2JqZWN0LT5Db3B5UHJvcGVydHkoY2ZQcm9wTmFtZSk7Ci0gICAgUmVs
ZWFzZUNGVHlwZShjZlByb3BOYW1lKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTT2JqZWN0S0pT
VmFsdWUoanNSZXN1bHQpOwotICAgIGpzUmVzdWx0LT5SZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1ib29sIFVzZXJPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQotewotICAgIGlmICghZkpTVXNlck9iamVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgQ0ZTdHJpbmdSZWYgY2ZQcm9wTmFtZSA9IElkZW50aWZpZXJUb0NGU3RyaW5nKHBy
b3BlcnR5TmFtZSk7Ci0gICAgSlNVc2VyT2JqZWN0ICpqc1Jlc3VsdCA9IGZKU1VzZXJPYmplY3Qt
PkNvcHlQcm9wZXJ0eShjZlByb3BOYW1lKTsKLSAgICBSZWxlYXNlQ0ZUeXBlKGNmUHJvcE5hbWUp
OwotICAgIGlmIChqc1Jlc3VsdCkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCB1c2Vy
T2JqZWN0R2V0dGVyKTsKLSAgICAgICAganNSZXN1bHQtPlJlbGVhc2UoKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSlNWYWx1ZSBranNWYWx1ZSA9IHRvUHJp
bWl0aXZlKGV4ZWMpOwotICAgICAgICBpZiAoIWtqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBranNPYmplY3QgPSBranNWYWx1ZS50b09iamVjdChl
eGVjKTsKLSAgICAgICAgICAgIGlmIChranNPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLXZvaWQgVXNlck9iamVjdEltcDo6cHV0KEV4ZWNT
dGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQotewotICAgIGlmICghZkpTVXNlck9iamVjdCkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIENGU3RyaW5nUmVmIGNmUHJvcE5hbWUgPSBJZGVudGlmaWVyVG9D
RlN0cmluZyhwcm9wZXJ0eU5hbWUpOwotICAgIEpTVXNlck9iamVjdCAqanNWYWx1ZU9iaiA9IEtK
U1ZhbHVlVG9KU09iamVjdCh2YWx1ZSwgZXhlYyk7Ci0KLSAgICBmSlNVc2VyT2JqZWN0LT5TZXRQ
cm9wZXJ0eShjZlByb3BOYW1lLCBqc1ZhbHVlT2JqKTsKLQotICAgIGlmIChqc1ZhbHVlT2JqKSBq
c1ZhbHVlT2JqLT5SZWxlYXNlKCk7Ci0gICAgUmVsZWFzZUNGVHlwZShjZlByb3BOYW1lKTsKLX0K
LQotSlNVc2VyT2JqZWN0KiBVc2VyT2JqZWN0SW1wOjpHZXRKU1VzZXJPYmplY3QoKSBjb25zdAot
ewotICAgIHJldHVybiBmSlNVc2VyT2JqZWN0OwotfQotCi1KU1ZhbHVlIFVzZXJPYmplY3RJbXA6
OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSAqZXhlYywgSlNUeXBlKSBjb25zdAotewotICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKLSAgICBKU1VzZXJPYmplY3QqIGpzT2JqUHRyID0g
S0pTVmFsdWVUb0pTT2JqZWN0KHRvT2JqZWN0KGV4ZWMpLCBleGVjKTsKLSAgICBDRlR5cGVSZWYg
Y2ZWYWx1ZSA9IGpzT2JqUHRyID8ganNPYmpQdHItPkNvcHlDRlZhbHVlKCkgOiAwOwotICAgIGlm
IChjZlZhbHVlKSB7Ci0gICAgICAgIENGVHlwZUlEIGNmVHlwZSA9IENGR2V0VHlwZUlEKGNmVmFs
dWUpOyAgLy8gdG9QcmltaXRpdmUKLSAgICAgICAgaWYgKGNmVmFsdWUgPT0gR2V0Q0ZOdWxsKCkp
IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgaWYgKGNmVHlwZSA9PSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkgewotICAgICAgICAgICAgaWYg
KGNmVmFsdWUgPT0ga0NGQm9vbGVhblRydWUpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBq
c0Jvb2xlYW4odHJ1ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBp
ZiAoY2ZUeXBlID09IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9
IGpzU3RyaW5nKGV4ZWMsIENGU3RyaW5nVG9VU3RyaW5nKChDRlN0cmluZ1JlZiljZlZhbHVlKSk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoY2ZUeXBlID09IENGTnVtYmVyR2V0VHlwZUlEKCkpIHsKLSAg
ICAgICAgICAgIGRvdWJsZSBkID0gMC4wOwotICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSgo
Q0ZOdW1iZXJSZWYpY2ZWYWx1ZSwga0NGTnVtYmVyRG91YmxlVHlwZSwgJmQpOwotICAgICAgICAg
ICAgcmVzdWx0ID0ganNOdW1iZXIoZCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2ZUeXBlID09IENG
VVJMR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIENGVVJMUmVmIGFic1VSTCA9IENGVVJMQ29w
eUFic29sdXRlVVJMKChDRlVSTFJlZiljZlZhbHVlKTsKLSAgICAgICAgICAgIGlmIChhYnNVUkwp
IHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBDRlN0cmluZ1RvVVN0
cmluZyhDRlVSTEdldFN0cmluZyhhYnNVUkwpKSk7Ci0gICAgICAgICAgICAgICAgUmVsZWFzZUNG
VHlwZShhYnNVUkwpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFJlbGVhc2VD
RlR5cGUoY2ZWYWx1ZSk7Ci0gICAgfQotICAgIGlmIChqc09ialB0cikKLSAgICAgICAganNPYmpQ
dHItPlJlbGVhc2UoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLWJvb2wgVXNlck9iamVj
dEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKLXsKLSAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwotICAgIEpTVXNlck9iamVjdCoganNPYmpQdHIgPSBLSlNWYWx1ZVRvSlNPYmpl
Y3QodG9PYmplY3QoZXhlYyksIGV4ZWMpOwotICAgIENGVHlwZVJlZiBjZlZhbHVlID0ganNPYmpQ
dHIgPyBqc09ialB0ci0+Q29weUNGVmFsdWUoKSA6IDA7Ci0gICAgaWYgKGNmVmFsdWUpCi0gICAg
ewotICAgICAgICBDRlR5cGVJRCBjZlR5cGUgPSBDRkdldFR5cGVJRChjZlZhbHVlKTsgIC8vIHRv
UHJpbWl0aXZlCi0gICAgICAgIGlmIChjZlZhbHVlID09IEdldENGTnVsbCgpKQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNmVHlwZSA9PSBD
RkJvb2xlYW5HZXRUeXBlSUQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGNmVmFsdWUg
PT0ga0NGQm9vbGVhblRydWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjZlR5
cGUgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKENG
U3RyaW5nR2V0TGVuZ3RoKChDRlN0cmluZ1JlZiljZlZhbHVlKSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKGNmVHlwZSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoY2ZWYWx1ZSAhPSBrQ0ZOdW1iZXJOYU4pCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZG91YmxlIGQ7Ci0gICAgICAgICAgICAgICAgaWYgKENGTnVtYmVy
R2V0VmFsdWUoKENGTnVtYmVyUmVmKWNmVmFsdWUsIGtDRk51bWJlckRvdWJsZVR5cGUsICZkKSkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkICE9IDApCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ZUeXBlID09IENGQXJyYXlHZXRUeXBlSUQo
KSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKENGQXJyYXlHZXRDb3VudCgoQ0ZBcnJheVJl
ZiljZlZhbHVlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVl
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNmVHlwZSA9PSBD
RkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKENGRGlj
dGlvbmFyeUdldENvdW50KChDRkRpY3Rpb25hcnlSZWYpY2ZWYWx1ZSkpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBlbHNlIGlmIChjZlR5cGUgPT0gQ0ZTZXRHZXRUeXBlSUQoKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKENGU2V0R2V0Q291bnQoKENGU2V0UmVmKWNmVmFsdWUpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ZUeXBlID09IENGVVJMR2V0VHlwZUlEKCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENGVVJMUmVmIGFic1VSTCA9IENGVVJMQ29weUFic29s
dXRlVVJMKChDRlVSTFJlZiljZlZhbHVlKTsKLSAgICAgICAgICAgIGlmIChhYnNVUkwpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgY2ZTdHIgPSBDRlVSTEdldFN0
cmluZyhhYnNVUkwpOwotICAgICAgICAgICAgICAgIGlmIChjZlN0ciAmJiBDRlN0cmluZ0dldExl
bmd0aChjZlN0cikpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBSZWxlYXNlQ0ZU
eXBlKGFic1VSTCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGpz
T2JqUHRyKSBqc09ialB0ci0+UmVsZWFzZSgpOwotICAgIFJlbGVhc2VDRlR5cGUoY2ZWYWx1ZSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZG91YmxlIFVzZXJPYmplY3RJbXA6OnRvTnVtYmVy
KEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKLXsKLSAgICBkb3VibGUgcmVzdWx0ID0gMDsKLSAgICBK
U1VzZXJPYmplY3QqIGpzT2JqUHRyID0gS0pTVmFsdWVUb0pTT2JqZWN0KHRvT2JqZWN0KGV4ZWMp
LCBleGVjKTsKLSAgICBDRlR5cGVSZWYgY2ZWYWx1ZSA9IGpzT2JqUHRyID8ganNPYmpQdHItPkNv
cHlDRlZhbHVlKCkgOiAwOwotICAgIGlmIChjZlZhbHVlKQotICAgIHsKLSAgICAgICAgQ0ZUeXBl
SUQgY2ZUeXBlID0gQ0ZHZXRUeXBlSUQoY2ZWYWx1ZSk7Ci0KLSAgICAgICAgaWYgKGNmVmFsdWUg
PT0gR2V0Q0ZOdWxsKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAoY2ZUeXBlID09IENGQm9vbGVhbkdldFR5cGVJRCgpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoY2ZWYWx1ZSA9PSBrQ0ZCb29sZWFuVHJ1ZSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGNmVHlwZSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBDRlN0cmluZ0dldERvdWJsZVZhbHVlKChDRlN0cmlu
Z1JlZiljZlZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjZlR5cGUgPT0gQ0ZO
dW1iZXJHZXRUeXBlSUQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZSgoQ0ZOdW1iZXJSZWYpY2ZWYWx1ZSwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnJlc3VsdCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgUmVsZWFzZUNGVHlwZShjZlZhbHVlKTsKLSAgICBpZiAoanNP
YmpQdHIpIGpzT2JqUHRyLT5SZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotVVN0
cmluZyBVc2VyT2JqZWN0SW1wOjp0b1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0Ci17Ci0g
ICAgVVN0cmluZyByZXN1bHQ7Ci0gICAgSlNVc2VyT2JqZWN0KiBqc09ialB0ciA9IEtKU1ZhbHVl
VG9KU09iamVjdCh0b09iamVjdChleGVjKSwgZXhlYyk7Ci0gICAgQ0ZUeXBlUmVmIGNmVmFsdWUg
PSBqc09ialB0ciA/IGpzT2JqUHRyLT5Db3B5Q0ZWYWx1ZSgpIDogMDsKLSAgICBpZiAoY2ZWYWx1
ZSkKLSAgICB7Ci0gICAgICAgIENGVHlwZUlEIGNmVHlwZSA9IENGR2V0VHlwZUlEKGNmVmFsdWUp
OwotICAgICAgICBpZiAoY2ZWYWx1ZSA9PSBHZXRDRk51bGwoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjZlR5cGUgPT0gQ0ZCb29sZWFu
R2V0VHlwZUlEKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjZlZhbHVlID09IGtDRkJv
b2xlYW5UcnVlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9ICJ0cnVl
IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSAiZmFsc2UiOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKGNmVHlwZSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXN1bHQgPSBDRlN0cmluZ1RvVVN0cmluZygoQ0ZTdHJpbmdSZWYpY2ZW
YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ZUeXBlID09IENGTnVtYmVyR2V0
VHlwZUlEKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjZlZhbHVlID09IGtDRk51bWJl
ck5hTikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAiTmFuIjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKENGTnVtYmVyQ29tcGFyZShrQ0ZOdW1i
ZXJQb3NpdGl2ZUluZmluaXR5LCAoQ0ZOdW1iZXJSZWYpY2ZWYWx1ZSwgMCkgPT0gMCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAiSW5maW5pdHkiOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoQ0ZOdW1iZXJDb21wYXJlKGtDRk51bWJlck5lZ2F0
aXZlSW5maW5pdHksIChDRk51bWJlclJlZiljZlZhbHVlLCAwKSA9PSAwKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJlc3VsdCA9ICItSW5maW5pdHkiOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENGU3RyaW5n
UmVmIGNmTnVtU3RyOwotICAgICAgICAgICAgICAgIGRvdWJsZSBkID0gMDsKLSAgICAgICAgICAg
ICAgICBDRk51bWJlckdldFZhbHVlKChDRk51bWJlclJlZiljZlZhbHVlLCBrQ0ZOdW1iZXJEb3Vi
bGVUeXBlLCAmZCk7Ci0gICAgICAgICAgICAgICAgaWYgKENGTnVtYmVySXNGbG9hdFR5cGUoKENG
TnVtYmVyUmVmKWNmVmFsdWUpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgY2ZOdW1TdHIgPSBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVmIiks
IGQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBjZk51bVN0ciA9IENGU3RyaW5nQ3JlYXRlV2l0
aEZvcm1hdCgwLCAwLCBDRlNUUigiJS4wZiIpLCBkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0ID0gQ0ZTdHJpbmdUb1VTdHJpbmcoY2ZOdW1TdHIpOwotICAgICAg
ICAgICAgICAgIFJlbGVhc2VDRlR5cGUoY2ZOdW1TdHIpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKGNmVHlwZSA9PSBDRkFycmF5R2V0VHlwZUlEKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ZUeXBl
ID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNmVHlwZSA9PSBDRlNldEdldFR5cGVJRCgpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICAvLwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNm
VHlwZSA9PSBDRlVSTEdldFR5cGVJRCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBDRlVSTFJl
ZiBhYnNVUkwgPSBDRlVSTENvcHlBYnNvbHV0ZVVSTCgoQ0ZVUkxSZWYpY2ZWYWx1ZSk7Ci0gICAg
ICAgICAgICBpZiAoYWJzVVJMKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENGU3Ry
aW5nUmVmIGNmU3RyID0gQ0ZVUkxHZXRTdHJpbmcoYWJzVVJMKTsKLSAgICAgICAgICAgICAgICBp
ZiAoY2ZTdHIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBDRlN0cmluZ1RvVVN0cmluZyhjZlN0cik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIFJlbGVhc2VDRlR5cGUoYWJzVVJMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLSAgICBSZWxlYXNlQ0ZUeXBlKGNmVmFsdWUpOwotICAgIGlmIChqc09ialB0cikganNP
YmpQdHItPlJlbGVhc2UoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIFVzZXJPYmpl
Y3RJbXA6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKLXsKLSAgICBKU09iamVj
dDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0gICAgaWYgKGZKU1VzZXJPYmplY3QpCi0gICAg
ICAgIGZKU1VzZXJPYmplY3QtPk1hcmsoKTsKLX0KSW5kZXg6IEphdmFTY3JpcHRHbHVlL1VzZXJP
YmplY3RJbXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgJ
KHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVXNlck9i
amVjdEltcF9oCi0jZGVmaW5lIFVzZXJPYmplY3RJbXBfaAotCi0jaW5jbHVkZSAiSlNVdGlscy5o
IgotI2luY2x1ZGUgIkpTQmFzZS5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNUeXBlLmg+Ci0KLWNsYXNzIFVzZXJPYmplY3RJbXAgOiBwdWJsaWMg
SlNPYmplY3QgewotcHVibGljOgotICAgIFVzZXJPYmplY3RJbXAoUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+LCBKU1VzZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIH5Vc2VyT2JqZWN0SW1wKCk7Ci0KLSAg
ICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyAqY2xhc3NJbmZvKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IGNvbnN0IENsYXNzSW5mbyBpbmZvOwotCi0gICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0
YShDYWxsRGF0YSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOwotCi0gICAgdmlydHVhbCBKU1ZhbHVlIGNhbGxBc0Z1bmN0
aW9uKEV4ZWNTdGF0ZSAqZXhlYyk7Ci0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUgKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgIHZp
cnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotCi0gICAgSlNWYWx1ZSB0
b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBKU1R5cGUgcHJlZmVycmVkVHlwZSA9IFVuc3BlY2lmaWVk
VHlwZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUgKmV4ZWMp
IGNvbnN0OwotICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSAqZXhlYykgY29u
c3Q7Ci0gICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwotCi0gICAgSlNV
c2VyT2JqZWN0ICpHZXRKU1VzZXJPYmplY3QoKSBjb25zdDsKLQotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzTWFya0NoaWxk
cmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyksIEFub255bW91c1Nsb3RDb3VudCk7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBKU1ZhbHVlIHVzZXJPYmplY3RHZXR0ZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLQotICAg
IEpTVXNlck9iamVjdCogZkpTVXNlck9iamVjdDsKLX07Ci0KLSNlbmRpZgpJbmRleDogSmF2YVNj
cmlwdEdsdWUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJ
KHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMjEgKzAsMCBAQAotI2lmbmRlZiBERVBSRUNBVEVEX0lOX01BQ19PU19YX1ZFUlNJ
T05fMTBfNV9BTkRfTEFURVIKLSNkZWZpbmUgREVQUkVDQVRFRF9JTl9NQUNfT1NfWF9WRVJTSU9O
XzEwXzVfQU5EX0xBVEVSCi0jZW5kaWYKLQotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotCi0j
aWYgUExBVEZPUk0oQ0hST01JVU0pCi0jaWYgIWRlZmluZWQoV1RGX1VTRV9WOCkKLSNkZWZpbmUg
V1RGX1VTRV9WOCAxCi0jZW5kaWYKLSNlbmRpZiAvKiBQTEFURk9STShDSFJPTUlVTSkgKi8KLQot
I2lmICFkZWZpbmVkKFdURl9VU0VfVjgpCi0jZGVmaW5lIFdURl9VU0VfVjggMAotI2VuZGlmIC8q
ICFkZWZpbmVkKFdURl9VU0VfVjgpICovCi0KLS8qIFVzaW5nIFY4IGltcGxpZXMgbm90IHVzaW5n
IEpTQyBhbmQgdmljZSB2ZXJzYSAqLwotI2RlZmluZSBXVEZfVVNFX0pTQyAhV1RGX1VTRV9WOAot
Ci0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKSW5kZXg6IEph
dmFTY3JpcHRHbHVlL3Rlc3Rqc2dsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVl
L3Rlc3Rqc2dsdWUuY3BwCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL3Rlc3Rq
c2dsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgIkNvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmgiCi0jaW5jbHVkZSAiSmF2
YVNjcmlwdEdsdWUuaCIKLQotQ0ZTdHJpbmdSZWYgc2NyaXB0ID0gCi1DRlNUUigiXAoteCA9IDE7
IFxuXAotZnVuY3Rpb24gZ2V0WCgpIFxuXAoteyBcblwKLSAgICByZXR1cm4geDsgXG5cCi19IFxu
XAotIik7Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCi17Ci0gICAgSlNSdW5S
ZWYganNSdW4gPSBKU1J1bkNyZWF0ZShzY3JpcHQsIGtKU0ZsYWdOb25lKTsKLSAgICBpZiAoIUpT
UnVuQ2hlY2tTeW50YXgoanNSdW4pKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAg
SlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNSdW5Db3B5R2xvYmFsT2JqZWN0KGpzUnVuKTsK
LSAgICBKU1J1bkV2YWx1YXRlKGpzUnVuKTsKLSAgICBKU09iamVjdFJlZiBnZXRYID0gSlNPYmpl
Y3RDb3B5UHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBDRlNUUigiZ2V0WCIpKTsKLSAgICBKU09iamVj
dFJlZiBqc1Jlc3VsdCA9IEpTT2JqZWN0Q2FsbEZ1bmN0aW9uKGdldFgsIGdsb2JhbE9iamVjdCwg
MCk7Ci0KLSAgICBpZiAoanNSZXN1bHQpIHsKLSAgICAgICAgQ0ZUeXBlUmVmIGNmUmVzdWx0ID0g
SlNPYmplY3RDb3B5Q0ZWYWx1ZShqc1Jlc3VsdCk7Ci0gICAgICAgIENGU2hvdyhjZlJlc3VsdCk7
Ci0gICAgICAgIAotICAgICAgICBDRlJlbGVhc2UoY2ZSZXN1bHQpOwotICAgICAgICBKU1JlbGVh
c2UoanNSZXN1bHQpOwotICAgIH0KLSAgICAKLSAgICBKU1JlbGVhc2UoanNSdW4pOwotICAgIAot
ICAgIHJldHVybiAwOwotfQpJbmRleDogSmF2YVNjcmlwdEdsdWUvQ29uZmlndXJhdGlvbnMvQmFz
ZS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Db25maWd1cmF0aW9ucy9C
YXNlLnhjY29uZmlnCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0NvbmZpZ3Vy
YXRpb25zL0Jhc2UueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAyICswLDAgQEAKLS8v
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0vLyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0vLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0vLyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotLy8gQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0vLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0vLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLS8vIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLS8vIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLQotREVBRF9DT0RFX1NUUklQUElORyA9
IFlFUzsKLURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOwotR0NDX0NfTEFOR1VBR0Vf
U1RBTkRBUkQgPSBnbnU5OTsKLUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGRlZmF1bHQ7Ci1HQ0Nf
RFlOQU1JQ19OT19QSUMgPSBOTzsKLUdDQ19FTkFCTEVfQ1BQX0VYQ0VQVElPTlMgPSBOTzsKLUdD
Q19FTkFCTEVfQ1BQX1JUVEkgPSBOTzsKLUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVT
OwotR0NDX0VOQUJMRV9PQkpDX0dDID0gc3VwcG9ydGVkOwotR0NDX0VOQUJMRV9TWU1CT0xfU0VQ
QVJBVElPTiA9IE5POwotR0NDX0ZBU1RfT0JKQ19ESVNQQVRDSCA9IFlFUzsKLUdDQ19HRU5FUkFU
RV9ERUJVR0dJTkdfU1lNQk9MUyA9IFlFUzsKLUdDQ19JTkxJTkVTX0FSRV9QUklWQVRFX0VYVEVS
TiA9IFlFUzsKLUdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKLUdDQ19QUkVDT01QSUxFX1BSRUZJWF9I
RUFERVIgPSBZRVM7Ci1HQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOwotR0NDX1RIUkVBRFNBRkVf
U1RBVElDUyA9IE5POwotR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKLUdDQ19X
QVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gTk87Ci1HQ0NfV0FSTl9BQk9VVF9NSVNT
SU5HX05FV0xJTkUgPSBZRVM7Ci1HQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBO
TzsKLUdDQ19XQVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1IgPSBZRVM7Ci1MSU5LRVJfRElTUExB
WVNfTUFOR0xFRF9OQU1FUyA9IFlFUzsKLVBSRUJJTkRJTkcgPSBOTzsKLVZBTElEX0FSQ0hTID0g
aTM4NiBwcGMgeDg2XzY0IHBwYzY0OwotV0FSTklOR19DRkxBR1MgPSAkKFdBUk5JTkdfQ0ZMQUdT
XyQoQ1VSUkVOVF9BUkNIKSk7Ci1XQVJOSU5HX0NGTEFHU19CQVNFID0gLVdhbGwgLVcgLVdjaGFy
LXN1YnNjcmlwdHMgLVdmb3JtYXQtc2VjdXJpdHkgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUg
LVdwb2ludGVyLWFyaXRoIC1Xd3JpdGUtc3RyaW5ncyAtV25vLWZvcm1hdC15MmsgLVduby11bnVz
ZWQtcGFyYW1ldGVyIC1XdW5kZWYgLVduby1zdHJpY3QtYWxpYXNpbmc7Ci1XQVJOSU5HX0NGTEFH
U18gPSAkKFdBUk5JTkdfQ0ZMQUdTX0JBU0UpIC1Xc2hvcnRlbi02NC10by0zMjsKLVdBUk5JTkdf
Q0ZMQUdTX2kzODYgPSAkKFdBUk5JTkdfQ0ZMQUdTX0JBU0UpIC1Xc2hvcnRlbi02NC10by0zMjsK
LVdBUk5JTkdfQ0ZMQUdTX3BwYyA9ICQoV0FSTklOR19DRkxBR1NfQkFTRSkgLVdzaG9ydGVuLTY0
LXRvLTMyOwotLy8gRklYTUU6IEphdmFTY3JpcHRHbHVlIDY0LWJpdCBidWlsZHMgc2hvdWxkIGJ1
aWxkIHdpdGggLVdzaG9ydGVuLTY0LXRvLTMyCi1XQVJOSU5HX0NGTEFHU19wcGM2NCA9ICQoV0FS
TklOR19DRkxBR1NfQkFTRSk7Ci1XQVJOSU5HX0NGTEFHU194ODZfNjQgPSAkKFdBUk5JTkdfQ0ZM
QUdTX0JBU0UpOwotSEVBREVSX1NFQVJDSF9QQVRIUyA9IC4gaWN1ICQoSEVBREVSX1NFQVJDSF9Q
QVRIUyk7Ci0KLVRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNfT1NfWF9WRVJT
SU9OX01BSk9SKTsKLQotLy8gREVCVUdfREVGSU5FUywgR0NDX09QVElNSVpBVElPTl9MRVZFTCBh
bmQgU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgdmFyeSBiZXR3ZWVuIHRoZSBkZWJ1ZyBhbmQgbm9y
bWFsIHZhcmlhbnRzLgotLy8gV2Ugc2V0IHVwIHRoZSB2YWx1ZXMgZm9yIGVhY2ggdmFyaWFudCBo
ZXJlLCBhbmQgaGF2ZSB0aGUgRGVidWcgY29uZmlndXJhdGlvbiBpbiB0aGUgWGNvZGUgcHJvamVj
dCB1c2UgdGhlIF9kZWJ1ZyB2YXJpYW50LgotREVCVUdfREVGSU5FU19kZWJ1ZyA9IDsKLURFQlVH
X0RFRklORVNfbm9ybWFsID0gTkRFQlVHOwotREVCVUdfREVGSU5FUyA9ICQoREVCVUdfREVGSU5F
U18kKENVUlJFTlRfVkFSSUFOVCkpOwotCi1HQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gJChHQ0Nf
T1BUSU1JWkFUSU9OX0xFVkVMXyQoQ1VSUkVOVF9WQVJJQU5UKSk7Ci1HQ0NfT1BUSU1JWkFUSU9O
X0xFVkVMX25vcm1hbCA9IHM7Ci1HQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX2RlYnVnID0gMDsKLQot
U1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSAkKFNUUklQX0lOU1RBTExFRF9QUk9EVUNUXyQoQ1VS
UkVOVF9WQVJJQU5UKSk7Ci1TVFJJUF9JTlNUQUxMRURfUFJPRFVDVF9ub3JtYWwgPSBZRVM7Ci1T
VFJJUF9JTlNUQUxMRURfUFJPRFVDVF9kZWJ1ZyA9IE5POwotCi0KLS8vIFVzZSBHQ0MgNC4yIHdp
dGggWGNvZGUgMy4xLCB3aGljaCBpbmNsdWRlcyBHQ0MgNC4yIGJ1dCBkZWZhdWx0cyB0byBHQ0Mg
NC4wLgotLy8gTm90ZSB0aGF0IFhjb2RlIHZlcnNpb25zIGFzIG5ldyBhcyAzLjEuMiB1c2UgWENP
REVfVkVSU0lPTl9BQ1RVQUwgZm9yIHRoZSBtaW5vciB2ZXJzaW9uCi0vLyBudW1iZXIuICBOZXdl
ciB2ZXJzaW9ucyBvZiBYY29kZSB1c2UgWENPREVfVkVSU0lPTl9NSU5PUiBmb3IgdGhlIG1pbm9y
IHZlcnNpb24sIGFuZAotLy8gWENPREVfVkVSU0lPTl9BQ1RVQUwgZm9yIHRoZSBmdWxsIHZlcnNp
b24gbnVtYmVyLgotVEFSR0VUX0dDQ19WRVJTSU9OID0gJChUQVJHRVRfR0NDX1ZFUlNJT05fJChU
QVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwotVEFSR0VUX0dDQ19WRVJTSU9OXyA9ICQo
VEFSR0VUX0dDQ19WRVJTSU9OXzEwNDApOwotVEFSR0VUX0dDQ19WRVJTSU9OXzEwNDAgPSBHQ0Nf
NDA7Ci1UQVJHRVRfR0NDX1ZFUlNJT05fMTA1MCA9ICQoVEFSR0VUX0dDQ19WRVJTSU9OXzEwNTBf
JChYQ09ERV9WRVJTSU9OX01JTk9SKSk7Ci1UQVJHRVRfR0NDX1ZFUlNJT05fMTA1MF8gPSAkKFRB
UkdFVF9HQ0NfVkVSU0lPTl8xMDUwXyQoWENPREVfVkVSU0lPTl9BQ1RVQUwpKTsKLVRBUkdFVF9H
Q0NfVkVSU0lPTl8xMDUwXzAzMTAgPSBHQ0NfNDI7Ci1UQVJHRVRfR0NDX1ZFUlNJT05fMTA1MF8w
MzIwID0gR0NDXzQyOwotVEFSR0VUX0dDQ19WRVJTSU9OXzEwNjAgPSBHQ0NfNDI7Ci1UQVJHRVRf
R0NDX1ZFUlNJT05fMTA3MCA9IExMVk1fR0NDXzQyOwotCi1HQ0NfVkVSU0lPTiA9ICQoR0NDX1ZF
UlNJT05fJChUQVJHRVRfR0NDX1ZFUlNJT04pKTsKLUdDQ19WRVJTSU9OX0dDQ180MCA9IDQuMDsK
LUdDQ19WRVJTSU9OX0dDQ180MiA9IDQuMjsKLUdDQ19WRVJTSU9OX0xMVk1fR0NDXzQyID0gY29t
LmFwcGxlLmNvbXBpbGVycy5sbHZtZ2NjNDI7Ci0KLS8vIElmIHRoZSB0YXJnZXQgTWFjIE9TIFgg
dmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBNYWMgT1MgWCB2ZXJzaW9uIHRoZW4g
d2UnbGwgd2FudCB0byBidWlsZCB1c2luZyB0aGUgdGFyZ2V0IHZlcnNpb24ncyBTREsuCi1TREtS
T09UID0gJChTREtST09UXyQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUilfJChUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUikpOwotU0RLUk9PVF8xMDUwXzEwNDAgPSBtYWNvc3gxMC40OwotU0RL
Uk9PVF8xMDYwXzEwNDAgPSBtYWNvc3gxMC40OwotU0RLUk9PVF8xMDYwXzEwNTAgPSBtYWNvc3gx
MC41OwotU0RLUk9PVF8xMDcwXzEwNDAgPSBtYWNvc3gxMC40OwotU0RLUk9PVF8xMDcwXzEwNTAg
PSBtYWNvc3gxMC41OwotU0RLUk9PVF8xMDcwXzEwNjAgPSBtYWNvc3gxMC42OwpJbmRleDogSmF2
YVNjcmlwdEdsdWUvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRHbHVlL0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZp
ZwkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTEsNDIgKzAsMCBAQAotLy8gQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLS8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0vLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS8vIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0vLyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LS8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLS8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotLy8gT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotCi0jaW5jbHVkZSAiQmFzZS54Y2NvbmZpZyIK
LQotQVJDSFMgPSAkKEFSQ0hTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKLUFS
Q0hTXyA9ICQoQVJDSFNfMTA0MCk7Ci1BUkNIU18xMDQwID0gJChOQVRJVkVfQVJDSCk7Ci1BUkNI
U18xMDUwID0gJChOQVRJVkVfQVJDSCk7Ci1BUkNIU18xMDYwID0gJChBUkNIU19TVEFOREFSRF8z
Ml82NF9CSVQpOwotQVJDSFNfMTA3MCA9ICQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUKTsKLQot
T05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKLQotTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gJChN
QUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikp
OwotTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXyA9IDEwLjQ7Ci1NQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVRfMTA0MCA9IDEwLjQ7Ci1NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfMTA1MCA9IDEwLjU7
Ci1NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfMTA2MCA9IDEwLjY7Ci1NQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVRfMTA3MCA9IDEwLjc7Ci0KLUdDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJ
T05TID0gWUVTOwpJbmRleDogSmF2YVNjcmlwdEdsdWUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlw
dEdsdWUueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvQ29uZmlndXJhdGlv
bnMvSmF2YVNjcmlwdEdsdWUueGNjb25maWcJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlw
dEdsdWUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdEdsdWUueGNjb25maWcJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMzEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJl
IG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLS8vIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0vLyBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLS8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0vLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLS8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLS8vIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
Ly8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
Ci0jaW5jbHVkZSAiVmVyc2lvbi54Y2NvbmZpZyIKLUVYUE9SVEVEX1NZTUJPTFNfRklMRSA9IEph
dmFTY3JpcHRHbHVlLmV4cDsKLUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVH
X0RFRklORVMpIFdFQktJVF9WRVJTSU9OX01JTl9SRVFVSVJFRD1XRUJLSVRfVkVSU0lPTl9MQVRF
U1QgJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TKTsKLUhFQURFUl9TRUFSQ0hfUEFUSFMg
PSBGb3J3YXJkaW5nSGVhZGVycyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwotSU5GT1BMSVNUX0ZJ
TEUgPSBJbmZvLnBsaXN0OwotSU5TVEFMTF9QQVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1By
aXZhdGVGcmFtZXdvcmtzOwotT1RIRVJfQ0ZMQUdTID0gLVduby1kZXByZWNhdGVkLWRlY2xhcmF0
aW9uczsKLVBST0RVQ1RfTkFNRSA9IEphdmFTY3JpcHRHbHVlOwpJbmRleDogSmF2YVNjcmlwdEds
dWUvQ29uZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0R2x1ZS9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnCShyZXZpc2lvbiA3NDYxNikK
KysrIEphdmFTY3JpcHRHbHVlL0NvbmZpZ3VyYXRpb25zL1ZlcnNpb24ueGNjb25maWcJKHdvcmtp
bmcgY29weSkKQEAgLTEsNTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
Ly8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLS8vIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0v
LyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLS8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0vLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLS8vIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLS8vIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotCi1NQUpPUl9WRVJTSU9OID0gNTM0OwotTUlOT1JfVkVSU0lPTiA9IDE2OwotVElOWV9W
RVJTSU9OID0gMDsKLUZVTExfVkVSU0lPTiA9ICQoTUFKT1JfVkVSU0lPTikuJChNSU5PUl9WRVJT
SU9OKTsKLQotLy8gVGhlIGJ1bmRsZSB2ZXJzaW9uIGFuZCBzaG9ydCB2ZXJzaW9uIHN0cmluZyBh
cmUgc2V0IGJhc2VkIG9uIHRoZSBjdXJyZW50IGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHNlZSBiZWxv
dy4KLUJVTkRMRV9WRVJTSU9OID0gJChCVU5ETEVfVkVSU0lPTl8kKENPTkZJR1VSQVRJT04pKTsK
LVNIT1JUX1ZFUlNJT05fU1RSSU5HID0gJChTSE9SVF9WRVJTSU9OX1NUUklOR18kKENPTkZJR1VS
QVRJT04pKQotCi0vLyBUaGUgc3lzdGVtIHZlcnNpb24gcHJlZml4IGlzIGJhc2VkIG9uIHRoZSBj
dXJyZW50IHN5c3RlbSB2ZXJzaW9uLgotU1lTVEVNX1ZFUlNJT05fUFJFRklYID0gJChTWVNURU1f
VkVSU0lPTl9QUkVGSVhfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwotU1lTVEVN
X1ZFUlNJT05fUFJFRklYXyA9IDQ7IC8vIFNvbWUgVGlnZXIgdmVyc2lvbnMgb2YgWGNvZGUgZG9u
J3Qgc2V0IE1BQ19PU19YX1ZFUlNJT05fTUFKT1IuCi1TWVNURU1fVkVSU0lPTl9QUkVGSVhfMTA0
MCA9IDQ7Ci1TWVNURU1fVkVSU0lPTl9QUkVGSVhfMTA1MCA9IDU7Ci1TWVNURU1fVkVSU0lPTl9Q
UkVGSVhfMTA2MCA9IDY7Ci1TWVNURU1fVkVSU0lPTl9QUkVGSVhfMTA3MCA9IDc7Ci0KLS8vIFRo
ZSBwcm9kdWN0aW9uIGJ1aWxkIGFsd2F5cyB1c2VzIHRoZSBmdWxsIHZlcnNpb24gd2l0aCBhIHN5
c3RlbSB2ZXJzaW9uIHByZWZpeC4KLUJVTkRMRV9WRVJTSU9OX1Byb2R1Y3Rpb24gPSAkKFNZU1RF
TV9WRVJTSU9OX1BSRUZJWCkkKEZVTExfVkVSU0lPTik7Ci1CVU5ETEVfVkVSU0lPTl8gPSAkKEJV
TkRMRV9WRVJTSU9OX1Byb2R1Y3Rpb24pOwotCi0vLyBUaGUgcHJvZHVjdGlvbiBidWlsZCBhbHdh
eXMgdXNlcyB0aGUgbWFqb3IgdmVyc2lvbiB3aXRoIGEgc3lzdGVtIHZlcnNpb24gcHJlZml4Ci1T
SE9SVF9WRVJTSU9OX1NUUklOR19Qcm9kdWN0aW9uID0gJChTWVNURU1fVkVSU0lPTl9QUkVGSVgp
JChNQUpPUl9WRVJTSU9OKTsKLVNIT1JUX1ZFUlNJT05fU1RSSU5HXyA9ICQoU0hPUlRfVkVSU0lP
Tl9TVFJJTkdfUHJvZHVjdGlvbik7Ci0KLS8vIExvY2FsIGJ1aWxkcyBhcmUgdGhlIGZ1bGwgdmVy
c2lvbiB3aXRoIGEgcGx1cyBzdWZmaXguCi1CVU5ETEVfVkVSU0lPTl9SZWxlYXNlID0gJChGVUxM
X1ZFUlNJT04pKzsKLUJVTkRMRV9WRVJTSU9OX0RlYnVnID0gJChCVU5ETEVfVkVSU0lPTl9SZWxl
YXNlKTsKLQotLy8gTG9jYWwgYnVpbGRzIHVzZSB0aGUgbWFqb3IgdmVyc2lvbiB3aXRoIGEgcGx1
cyBzdWZmaXgKLVNIT1JUX1ZFUlNJT05fU1RSSU5HX1JlbGVhc2UgPSAkKE1BSk9SX1ZFUlNJT04p
KzsKLVNIT1JUX1ZFUlNJT05fU1RSSU5HX0RlYnVnID0gJChTSE9SVF9WRVJTSU9OX1NUUklOR19S
ZWxlYXNlKTsKLQotRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsKLURZTElCX0NVUlJF
TlRfVkVSU0lPTiA9ICQoRlVMTF9WRVJTSU9OKTsKSW5kZXg6IEphdmFTY3JpcHRHbHVlL0VuZ2xp
c2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUv
RW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5ncwkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZh
U2NyaXB0R2x1ZS9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzAsMCBAQAot/v8ALwAqACAATABvAGMAYQBsAGkAegBlAGQAIAB2AGUAcgBzAGkA
bwBuAHMAIABvAGYAIABJAG4AZgBvAC4AcABsAGkAcwB0ACAAawBlAHkAcwAgACoALwAKLQAKLQBD
AEYAQgB1AG4AZABsAGUATgBhAG0AZQAgAD0AIAAiAEoAYQB2AGEAUwBjAHIAaQBwAHQARwBsAHUA
ZQAiADsACi0ATgBTAEgAdQBtAGEAbgBSAGUAYQBkAGEAYgBsAGUAQwBvAHAAeQByAGkAZwBoAHQA
IAA9ACAAIgBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAwADIALAAgAEEAcABwAGwAZQAgAEMAbwBt
AHAAdQB0AGUAcgAgAEkAbgBjAC4AIgA7AApJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGlu
Z0hlYWRlcnMvbWFzbS9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1
ZS9Gb3J3YXJkaW5nSGVhZGVycy9tYXNtL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiA3NDYxNikK
KysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL21hc20vWDg2QXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1g4
NkFzc2VtYmxlci5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvcHJv
ZmlsZXIvUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5n
SGVhZGVycy9wcm9maWxlci9Qcm9maWxlci5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3Jp
cHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3Byb2ZpbGVyL1Byb2ZpbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb2ZpbGVyLmg+Cklu
ZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0NhbGxGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
Q2FsbEZyYW1lLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBA
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+CkluZGV4OiBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQVNDSUlDVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9BU0NJSUNUeXBlLmgJKHJldmlzaW9u
IDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0FTQ0lJQ1R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQVNDSUlDVHlwZS5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0Fsd2F5c0lubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9BbHdheXNJbmxpbmUuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQWx3YXlzSW5saW5lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Fsd2F5c0lubGluZS5o
PgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0Fzc2VydGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQXNz
ZXJ0aW9ucy5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9Bc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Fzc2VydGlvbnMuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9BdG9taWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0F0b21pY3MuaAkocmV2aXNpb24gNzQ2MTYpCisr
KyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQXRvbWljcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BdG9taWNzLmg+
CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQml0bWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0JpdG1hcC5o
CShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9CaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQml0bWFwLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVy
cy93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1
ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaAkocmV2aXNpb24g
NzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQnVtcFBvaW50
ZXJBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Dcm9zc1RocmVhZFJlZkNvdW50ZWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQ3Jvc3NUaHJlYWRSZWZD
b3VudGVkLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL0Nyb3NzVGhyZWFkUmVmQ291bnRlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xICsw
LDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Dcm9zc1RocmVhZFJlZkNvdW50ZWQuaD4K
SW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9DdXJyZW50VGltZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9DdXJy
ZW50VGltZS5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9DdXJyZW50VGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DdXJyZW50VGltZS5oPgpJbmRleDogSmF2YVNjcmlwdEds
dWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RhdGVJbnN0YW5jZUNhY2hlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RhdGVJbnN0YW5jZUNhY2hl
LmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0RhdGVJbnN0YW5jZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RhdGVJbnN0YW5jZUNhY2hlLmg+CkluZGV4OiBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRGF0ZU1hdGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRGF0ZU1hdGguaAkocmV2aXNpb24g
NzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRGF0ZU1hdGgu
aAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGF0ZU1hdGguaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9G
YXN0QWxsb2NCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL0Zhc3RBbGxvY0Jhc2UuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRmFzdEFsbG9jQmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GYXN0QWxsb2NCYXNlLmg+
CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRmFzdE1hbGxvYy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9GYXN0
TWFsbG9jLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL0Zhc3RNYWxsb2MuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRmFzdE1hbGxvYy5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUv
Rm9yd2FyZGluZ0hlYWRlcnMvd3RmL0ZpeGVkQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRml4ZWRBcnJheS5oCShyZXZpc2lvbiA3NDYx
NikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9GaXhlZEFycmF5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zp
eGVkQXJyYXkuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9G
b3J3YXJkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0ZvcndhcmQuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvRm9yd2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaENvdW50ZWRTZXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaENvdW50ZWRTZXQuaAkocmV2aXNp
b24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaENv
dW50ZWRTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGFzaENvdW50ZWRTZXQuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEds
dWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gNzQ2MTYp
CisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
YXNoRnVuY3Rpb25zLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9IYXNoTWFwLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBA
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGFzaE1hcC5oPgpJbmRleDogSmF2YVNjcmlwdEds
dWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaFNldC5oCShyZXZpc2lvbiA3NDYxNikK
KysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoU2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hhc2hTZXQu
aD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoVHJhaXRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hh
c2hUcmFpdHMuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvSGFzaFRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYXNoVHJhaXRzLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1
ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTGlzdEhhc2hTZXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTGlzdEhhc2hTZXQuaAkocmV2aXNpb24g
NzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTGlzdEhhc2hT
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvTGlzdEhhc2hTZXQuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9MaXN0UmVmUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL0xpc3RSZWZQdHIuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTGlzdFJlZlB0ci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9MaXN0UmVmUHRyLmg+CkluZGV4
OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTG9ja2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0xvY2tlci5oCShyZXZp
c2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Mb2Nr
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvTG9ja2VyLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
TWFpblRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9NYWluVGhyZWFkLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUv
Rm9yd2FyZGluZ0hlYWRlcnMvd3RmL01haW5UaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMSAr
MCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWFpblRocmVhZC5oPgpJbmRleDogSmF2
YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL01hdGhFeHRyYXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTWF0aEV4dHJhcy5oCShy
ZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9N
YXRoRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL01hdGhFeHRyYXMuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9Ob25jb3B5YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25jb3B5YWJsZS5oCShyZXZpc2lvbiA3NDYxNikKKysrIEph
dmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25jb3B5YWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Ob25jb3B5YWJs
ZS5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL05vdEZvdW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL05v
dEZvdW5kLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL05vdEZvdW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL05vdEZvdW5kLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvT1NBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT1NBbGxvY2F0b3IuaAkocmV2aXNpb24gNzQ2MTYp
CisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT1NBbGxvY2F0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT1NB
bGxvY2F0b3IuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9P
d25BcnJheVB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9Pd25BcnJheVB0ci5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Pd25BcnJheVB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
ICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Pd25BcnJheVB0ci5oPgpJbmRleDog
SmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL093bkFycmF5UHRyQ29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL093bkFy
cmF5UHRyQ29tbW9uLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL093bkFycmF5UHRyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEg
KzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL093bkFycmF5UHRyQ29tbW9uLmg+Cklu
ZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT3duRmFzdE1hbGxvY1B0
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9P
d25GYXN0TWFsbG9jUHRyLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL093bkZhc3RNYWxsb2NQdHIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3duRmFzdE1hbGxvY1B0ci5oPgpJ
bmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL093blB0ci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Pd25QdHIuaAko
cmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
T3duUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL093blB0ci5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL093blB0ckNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9Pd25QdHJDb21tb24uaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT3duUHRyQ29tbW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL093blB0ckNvbW1vbi5o
PgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BhZ2VBbGxvY2F0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1BhZ2VBbGxvY2F0aW9uLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1BhZ2VBbGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEg
KzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhZ2VBbGxvY2F0aW9uLmg+CkluZGV4
OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGFnZUFsbG9jYXRpb25BbGln
bmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRH
bHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGFnZUFsbG9j
YXRpb25BbGlnbmVkLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvUGFnZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1BhZ2VCbG9jay5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYWdlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSAr
MCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGFnZUJsb2NrLmg+CkluZGV4OiBKYXZh
U2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGFnZVJlc2VydmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BhZ2VSZXNlcnZh
dGlvbi5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGFnZVJlc2VydmF0aW9uLmg+CkluZGV4OiBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGFzc093bkFycmF5UHRyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Bhc3NPd25BcnJheVB0
ci5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9QYXNzT3duQXJyYXlQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUGFzc093bkFycmF5UHRyLmg+CkluZGV4OiBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGFzc093blB0ci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYXNzT3duUHRyLmgJKHJldmlzaW9u
IDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Bhc3NPd25Q
dHIuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvUGFzc093blB0ci5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL1Bhc3NSZWZQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvUGFzc1JlZlB0ci5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRH
bHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYXNzUmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Bhc3NSZWZQdHIuaD4KSW5kZXg6
IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Q
bGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9QbGF0Zm9ybS5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL1Bvc3NpYmx5TnVsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9Qb3NzaWJseU51bGwuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZh
U2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUG9zc2libHlOdWxsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Bvc3NpYmx5TnVs
bC5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1B0ckFuZEZs
YWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1B0ckFuZEZsYWdzLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL1B0ckFuZEZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBA
QAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1B0ckFuZEZsYWdzLmg+CkluZGV4OiBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmFuZG9tTnVtYmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JhbmRvbU51bWJlci5oCShy
ZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9S
YW5kb21OdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUmFuZG9tTnVtYmVyLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvUmVmQ291bnRlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SZWZDb3VudGVkLmgJKHJldmlzaW9uIDc0NjE2KQorKysg
SmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JlZkNvdW50ZWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVmQ291bnRl
ZC5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JlZlB0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SZWZQ
dHIuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVy
cy93dGYvUmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1JlZlB0ci5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1N0YWNrQm91bmRzLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2
YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0YWNrQm91bmRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0YWNrQm91bmRz
Lmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RkTGliRXh0
cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1N0ZExpYkV4dHJhcy5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9TdGRMaWJFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCww
IEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RkTGliRXh0cmFzLmg+CkluZGV4OiBKYXZh
U2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hlci5o
CShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9TdHJpbmdIYXNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3RyaW5nSGFzaGVyLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkU2FmZVNoYXJlZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRTYWZlU2hhcmVkLmgJKHJldmlz
aW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVh
ZFNhZmVTaGFyZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVGhyZWFkU2FmZVNoYXJlZC5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFNwZWNpZmljLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFNwZWNpZmljLmgJKHJldmlzaW9u
IDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFNw
ZWNpZmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1RocmVhZFNwZWNpZmljLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZGluZy5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFT
Y3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVGhyZWFkaW5nLmg+Cklu
ZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEds
dWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Vu
dXNlZFBhcmFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL1VudXNlZFBhcmFtLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUv
Rm9yd2FyZGluZ0hlYWRlcnMvd3RmL1VudXNlZFBhcmFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEg
KzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VudXNlZFBhcmFtLmg+CkluZGV4OiBK
YXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVk1UYWdzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1ZNVGFncy5oCShyZXZpc2lv
biA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9WTVRhZ3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
Vk1UYWdzLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVmFs
dWVDaGVjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9WYWx1ZUNoZWNrLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1ZhbHVlQ2hlY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCww
IEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVmFsdWVDaGVjay5oPgpJbmRleDogSmF2YVNj
cmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1ZlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9WZWN0b3IuaAkocmV2aXNpb24gNzQ2
MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVmVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZlY3Rv
ci5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1ZlY3RvclRy
YWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9WZWN0b3JUcmFpdHMuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvVmVjdG9yVHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAs
MCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZlY3RvclRyYWl0cy5oPgpJbmRleDogSmF2
YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1dURlRocmVhZERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvV1RGVGhyZWFkRGF0
YS5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1dURlRocmVhZERhdGEuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L0NTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9DU3RyaW5nLmgJKHJldmlzaW9u
IDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvQ1N0
cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9DU3RyaW5nLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvdGV4dC9TdHJpbmdIYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL3RleHQvU3RyaW5nSGFzaC5oCShyZXZpc2lvbiA3NDYxNikKKysrIEph
dmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0hhc2guaAkod29y
a2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RyaW5n
SGFzaC5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQv
U3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cmluZ0ltcGwuaD4K
SW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0lt
cGxCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL3RleHQvU3RyaW5nSW1wbEJhc2UuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9TdHJpbmdJbXBsQmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdJbXBs
QmFzZS5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQv
VGV4dFBvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL3RleHQvVGV4dFBvc2l0aW9uLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNj
cmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvVGV4dFBvc2l0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1RleHRQb3Np
dGlvbi5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQv
V1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEds
dWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dURlN0cmluZy5oPgpJbmRl
eDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3VuaWNvZGUvVW5pY29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi91bmlj
b2RlL1VuaWNvZGUuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvdW5pY29kZS9Vbmljb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAs
MCBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VuaWNvZGUuaD4KSW5kZXg6IEphdmFTY3Jp
cHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3VuaWNvZGUv
aWN1L1VuaWNvZGVJY3UuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvdW5pY29kZS9pY3UvVW5pY29kZUljdS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xICswLDAgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Vbmljb2RlSWN1Lmg+Cklu
ZGV4OiBKYXZhU2NyaXB0R2x1ZS9KYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0phdmFTY3JpcHRHbHVlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvSmF2
YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MSw2MDMgKzAsMCBAQAotLy8gISQqVVRGOCokIQotewotCWFyY2hpdmVWZXJzaW9uID0gMTsKLQlj
bGFzc2VzID0gewotCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDQyOwotCW9iamVjdHMgPSB7Ci0KLS8q
IEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCi0JCTE0MjJFOEM0MDlERTNFQTYw
MDc0OUI4NyAvKiBBbGwgKi8gPSB7Ci0JCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7Ci0JCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQyMkU4REQwOURFM0VGNTAwNzQ5Qjg3IC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBbGwiICovOwotCQkJ
YnVpbGRQaGFzZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJCTE0MjJFOENB
MDlERTNFQjEwMDc0OUI4NyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJCTE0MjJFOEM4
MDlERTNFQUQwMDc0OUI4NyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJKTsKLQkJCW5h
bWUgPSBBbGw7Ci0JCQlwcm9kdWN0TmFtZSA9IEFsbDsKLQkJfTsKLS8qIEVuZCBQQlhBZ2dyZWdh
dGVUYXJnZXQgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwot
CQkxNDIyRTg3QjA5REUzQkYwMDA3NDlCODcgLyogdGVzdGpzZ2x1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDIyRTg2NzA5REUzQkNFMDA3NDlC
ODcgLyogdGVzdGpzZ2x1ZS5jcHAgKi87IH07Ci0JCTE0MjJFODgyMDlERTNDMDQwMDc0OUI4NyAv
KiBKYXZhU2NyaXB0R2x1ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBERDY2RjNENjA4RjczRUQ3MDBDNzVGRDcgLyogSmF2YVNjcmlw
dEdsdWUuZnJhbWV3b3JrICovOyB9OwotCQlERDY2RjNCQjA4RjczRUQ3MDBDNzVGRDcgLyogSmF2
YVNjcmlwdEdsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYxMTc5OEIzMDI2MjQ2NTcwM0NBMTQ5RCAvKiBKYXZhU2NyaXB0R2x1ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJREQ2NkYzQkMwOEY3M0VE
NzAwQzc1RkQ3IC8qIEpTQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjExNzk4QjkwMjYyNDZGRDAzQ0ExNDlEIC8qIEpTQmFzZS5oICovOyB9Owot
CQlERDY2RjNCRDA4RjczRUQ3MDBDNzVGRDcgLyogSlNVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjExNzk4QjcwMjYyNDZGRDAzQ0ExNDlEIC8q
IEpTVXRpbHMuaCAqLzsgfTsKLQkJREQ2NkYzQkUwOEY3M0VENzAwQzc1RkQ3IC8qIEpTT2JqZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMTE3OThC
QjAyNjI0NkZEMDNDQTE0OUQgLyogSlNPYmplY3QuaCAqLzsgfTsKLQkJREQ2NkYzQkYwOEY3M0VE
NzAwQzc1RkQ3IC8qIEpTUnVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGMTE3OThCRDAyNjI0NkZEMDNDQTE0OUQgLyogSlNSdW4uaCAqLzsgfTsKLQkJ
REQ2NkYzQzAwOEY3M0VENzAwQzc1RkQ3IC8qIEpTVmFsdWVXcmFwcGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMTE3OThDOTAyNjI1NDU0MDNDQTE0
OUQgLyogSlNWYWx1ZVdyYXBwZXIuaCAqLzsgfTsKLQkJREQ2NkYzQzEwOEY3M0VENzAwQzc1RkQ3
IC8qIFVzZXJPYmplY3RJbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYxMTc5OENGMDI2MjU3OUMwM0NBMTQ5RCAvKiBVc2VyT2JqZWN0SW1wLmggKi87
IH07Ci0JCURENjZGM0MzMDhGNzNFRDcwMEM3NUZENyAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5QzE2NjZGRTg0
MTE1OEMwMkFBQzA3IC8qIEluZm9QbGlzdC5zdHJpbmdzICovOyB9OwotCQlERDY2RjNDNjA4Rjcz
RUQ3MDBDNzVGRDcgLyogSmF2YVNjcmlwdEdsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjExNzk4QjIwMjYyNDY1NzAzQ0ExNDlEIC8qIEphdmFT
Y3JpcHRHbHVlLmNwcCAqLzsgfTsKLQkJREQ2NkYzQzcwOEY3M0VENzAwQzc1RkQ3IC8qIEpTUnVu
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYxMTc5
OEJDMDI2MjQ2RkQwM0NBMTQ5RCAvKiBKU1J1bi5jcHAgKi87IH07Ci0JCURENjZGM0M4MDhGNzNF
RDcwMEM3NUZENyAvKiBKU1V0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYxMTc5OEI2MDI2MjQ2RkQwM0NBMTQ5RCAvKiBKU1V0aWxzLmNwcCAq
LzsgfTsKLQkJREQ2NkYzQzkwOEY3M0VENzAwQzc1RkQ3IC8qIEpTQmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMTE3OThCODAyNjI0NkZEMDND
QTE0OUQgLyogSlNCYXNlLmNwcCAqLzsgfTsKLQkJREQ2NkYzQ0EwOEY3M0VENzAwQzc1RkQ3IC8q
IEpTT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYxMTc5OEJBMDI2MjQ2RkQwM0NBMTQ5RCAvKiBKU09iamVjdC5jcHAgKi87IH07Ci0JCURE
NjZGM0NCMDhGNzNFRDcwMEM3NUZENyAvKiBKU1ZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMTE3OThDODAyNjI1NDU0MDNDQTE0
OUQgLyogSlNWYWx1ZVdyYXBwZXIuY3BwICovOyB9OwotCQlERDY2RjNDQzA4RjczRUQ3MDBDNzVG
RDcgLyogVXNlck9iamVjdEltcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGMTE3OThDRTAyNjI1NzlDMDNDQTE0OUQgLyogVXNlck9iamVjdEltcC5j
cHAgKi87IH07Ci0JCURENjZGM0NFMDhGNzNFRDcwMEM3NUZENyAvKiBDb3JlU2VydmljZXMuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjE0RkM5RjMwMjU4RTlBNjAzQ0ExNDlEIC8qIENvcmVTZXJ2aWNlcy5mcmFtZXdvcmsgKi87IH07
Ci0JCURENjZGM0Y2MDhGNzQwMUIwMEM3NUZENyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDY2RjNG
NTA4Rjc0MDFCMDBDNzVGRDcgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwotLyog
RW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSBzZWN0aW9uICovCi0JCTE0MjJFOEM3MDlERTNFQUQwMDc0OUI4NyAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7Ci0JCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxNDIy
RTg3NjA5REUzQkU4MDA3NDlCODc7Ci0JCQlyZW1vdGVJbmZvID0gdGVzdGpzZ2x1ZTsKLQkJfTsK
LQkJMTQyMkU4QzkwOURFM0VCMTAwNzQ5Qjg3IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9
IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9
IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5
VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IERENjZGM0I5MDhGNzNFRDcwMEM3
NUZENzsKLQkJCXJlbW90ZUluZm8gPSBKYXZhU2NyaXB0R2x1ZTsKLQkJfTsKLQkJNUQyRjIxRTIw
QkRGQUI5RDAwODJCMjk0IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0J
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IERENjZGM0I5MDhGNzNFRDcwMEM3NUZENzsKLQkJCXJl
bW90ZUluZm8gPSBKYXZhU2NyaXB0R2x1ZTsKLQkJfTsKLS8qIEVuZCBQQlhDb250YWluZXJJdGVt
UHJveHkgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
LQkJMDg2N0Q2OUJGRTg0MDI4RkMwMkFBQzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OwotCQkwODY3RDZBNUZFODQwMzA3QzAyQUFDMDcgLyogQXBwS2l0LmZyYW1ld29yayAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIu
ZnJhbWV3b3JrOyBuYW1lID0gQXBwS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07Ci0JCTA4OUMxNjY3RkU4NDExNThDMDJBQUMwNyAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDEwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9
IEVuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQkxNDIyRTg2NzA5REUzQkNFMDA3NDlC
ODcgLyogdGVzdGpzZ2x1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gdGVzdGpzZ2x1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsg
dXNlc1RhYnMgPSAwOyB9OwotCQkxNDIyRTg3NzA5REUzQkU4MDA3NDlCODcgLyogdGVzdGpzZ2x1
ZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdGpz
Z2x1ZTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMUM5MDUxOUYwQkE5
RjMwNTAwODFFOUQwIC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5MDUx
QTAwQkE5RjMwNTAwODFFOUQwIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDOTA1MUExMEJBOUYzMDUwMDgxRTlEMCAvKiBKYXZhU2NyaXB0R2x1
ZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBKYXZhU2NyaXB0R2x1
ZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5MDUxQTIwQkE5RjMw
NTAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREQ2
NkYzRDUwOEY3M0VENzAwQzc1RkQ3IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
eG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCURENjZGM0Q2MDhGNzNFRDcwMEM3NUZENyAvKiBKYXZh
U2NyaXB0R2x1ZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBKYXZhU2NyaXB0R2x1ZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07Ci0JCURENjZGM0Y1MDhGNzQwMUIwMEM3NUZENyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJRjExNzk4QjIwMjYyNDY1NzAzQ0ExNDlE
IC8qIEphdmFTY3JpcHRHbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSmF2YVNjcmlwdEdsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjExNzk4QjMwMjYyNDY1NzAzQ0ExNDlEIC8qIEphdmFT
Y3JpcHRHbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdEds
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07Ci0JCUYxMTc5OEI2MDI2MjQ2RkQwM0NBMTQ5RCAvKiBKU1V0aWxzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlGMTE3OThCNzAyNjI0NkZE
MDNDQTE0OUQgLyogSlNVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07Ci0JCUYxMTc5OEI4MDI2MjQ2RkQwM0NBMTQ5RCAvKiBKU0Jhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjExNzk4QjkwMjYyNDZG
RDAzQ0ExNDlEIC8qIEpTQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKLQkJRjExNzk4QkEwMjYyNDZGRDAzQ0ExNDlEIC8qIEpTT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjExNzk4QkIwMjYy
NDZGRDAzQ0ExNDlEIC8qIEpTT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07Ci0JCUYxMTc5OEJDMDI2MjQ2RkQwM0NBMTQ5RCAvKiBKU1J1bi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUnVuLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUYxMTc5OEJEMDI2
MjQ2RkQwM0NBMTQ5RCAvKiBKU1J1bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUnVuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwotCQlGMTE3OThDODAyNjI1NDU0MDNDQTE0OUQgLyogSlNWYWx1ZVdyYXBwZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhbHVlV3JhcHBlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owot
CQlGMTE3OThDOTAyNjI1NDU0MDNDQTE0OUQgLyogSlNWYWx1ZVdyYXBwZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjExNzk4Q0UwMjYyNTc5
QzAzQ0ExNDlEIC8qIFVzZXJPYmplY3RJbXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVc2VyT2JqZWN0SW1wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUYxMTc5OENGMDI2MjU3OUMwM0NBMTQ5RCAv
KiBVc2VyT2JqZWN0SW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck9i
amVjdEltcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKLQkJRjE0RkM5RjMwMjU4RTlBNjAzQ0ExNDlEIC8qIENvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvcmVTZXJ2aWNlcy5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQlGMUVCN0VBQjAyNjIxRUFGMDNDQTE0OUQgLyogSmF2
YVNjcmlwdEdsdWUuZXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmV4cG9ydHM7IHBhdGggPSBKYXZh
U2NyaXB0R2x1ZS5leHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwotLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCi0vKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCTE0MjJFODc1MDlERTNC
RTgwMDc0OUI4NyAvKiBGcmFtZXdvcmtzICovID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAo
Ci0JCQkJMTQyMkU4ODIwOURFM0MwNDAwNzQ5Qjg3IC8qIEphdmFTY3JpcHRHbHVlLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwotCQl9OwotCQlERDY2RjNDRDA4RjczRUQ3MDBDNzVGRDcgLyogRnJhbWV3
b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwotCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCURENjZGM0NFMDhGNzNF
RDcwMEM3NUZENyAvKiBDb3JlU2VydmljZXMuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0J
CQkJREQ2NkYzRjYwOEY3NDAxQjAwQzc1RkQ3IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KLQotLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLwotCQkwMzQ3NjhERkZGMzhBNTA0MTFE
QjlDOEIgLyogUHJvZHVjdHMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCURENjZGM0Q2MDhGNzNFRDcwMEM3NUZENyAvKiBKYXZhU2NyaXB0R2x1ZS5mcmFt
ZXdvcmsgKi8sCi0JCQkJMTQyMkU4NzcwOURFM0JFODAwNzQ5Qjg3IC8qIHRlc3Rqc2dsdWUgKi8s
Ci0JCQkpOwotCQkJbmFtZSA9IFByb2R1Y3RzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJCXRhYldpZHRoID0gNDsKLQkJCXVzZXNUYWJzID0gMDsKLQkJfTsKLQkJMDg2N0Q2OTFGRTg0
MDI4RkMwMkFBQzA3IC8qIEphdmFTY3JpcHRHbHVlICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7
Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkxNDIyRTg2NzA5REUzQkNFMDA3NDlCODcgLyogdGVzdGpz
Z2x1ZS5jcHAgKi8sCi0JCQkJMDhGQjc3QUVGRTg0MTcyRUMwMkFBQzA3IC8qIENsYXNzZXMgKi8s
Ci0JCQkJMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKLQkJCQkwODY3
RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVz
ICovLAotCQkJCTAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLywKLQkJCQkx
QzkwNTE5RTBCQTlGMzA1MDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCi0JCQkJREQ2NkYz
RDUwOEY3M0VENzAwQzc1RkQ3IC8qIEluZm8ucGxpc3QgKi8sCi0JCQkpOwotCQkJbmFtZSA9IEph
dmFTY3JpcHRHbHVlOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDg2N0Q2
OUFGRTg0MDI4RkMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyAq
LyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMTA1OEM3QjBG
RUE1NTg1RTExQ0EyQ0JCIC8qIExpbmtlZCBGcmFtZXdvcmtzICovLAotCQkJCTEwNThDN0IyRkVB
NTU4NUUxMUNBMkNCQiAvKiBPdGhlciBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCW5hbWUgPSAi
RXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzIjsKLQkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7Ci0JCQl0YWJXaWR0aCA9IDQ7Ci0JCQl1c2VzVGFicyA9IDA7Ci0JCX07Ci0JCTA4OUMx
NjY1RkU4NDExNThDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTA4OUMxNjY2RkU4NDExNThDMDJBQUMwNyAvKiBJbmZv
UGxpc3Quc3RyaW5ncyAqLywKLQkJCSk7Ci0JCQluYW1lID0gUmVzb3VyY2VzOwotCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKLQkJCXRhYldpZHRoID0gNDsKLQkJCXVzZXNUYWJzID0gMDsKLQkJ
fTsKLQkJMDhGQjc3QUVGRTg0MTcyRUMwMkFBQzA3IC8qIENsYXNzZXMgKi8gPSB7Ci0JCQlpc2Eg
PSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUYxMTc5OEIyMDI2MjQ2NTcwM0NBMTQ5
RCAvKiBKYXZhU2NyaXB0R2x1ZS5jcHAgKi8sCi0JCQkJRjFFQjdFQUIwMjYyMUVBRjAzQ0ExNDlE
IC8qIEphdmFTY3JpcHRHbHVlLmV4cCAqLywKLQkJCQlGMTE3OThCMzAyNjI0NjU3MDNDQTE0OUQg
LyogSmF2YVNjcmlwdEdsdWUuaCAqLywKLQkJCQlGMTE3OThCODAyNjI0NkZEMDNDQTE0OUQgLyog
SlNCYXNlLmNwcCAqLywKLQkJCQlGMTE3OThCOTAyNjI0NkZEMDNDQTE0OUQgLyogSlNCYXNlLmgg
Ki8sCi0JCQkJRjExNzk4QkEwMjYyNDZGRDAzQ0ExNDlEIC8qIEpTT2JqZWN0LmNwcCAqLywKLQkJ
CQlGMTE3OThCQjAyNjI0NkZEMDNDQTE0OUQgLyogSlNPYmplY3QuaCAqLywKLQkJCQlGMTE3OThC
QzAyNjI0NkZEMDNDQTE0OUQgLyogSlNSdW4uY3BwICovLAotCQkJCUYxMTc5OEJEMDI2MjQ2RkQw
M0NBMTQ5RCAvKiBKU1J1bi5oICovLAotCQkJCUYxMTc5OEI2MDI2MjQ2RkQwM0NBMTQ5RCAvKiBK
U1V0aWxzLmNwcCAqLywKLQkJCQlGMTE3OThCNzAyNjI0NkZEMDNDQTE0OUQgLyogSlNVdGlscy5o
ICovLAotCQkJCUYxMTc5OEM4MDI2MjU0NTQwM0NBMTQ5RCAvKiBKU1ZhbHVlV3JhcHBlci5jcHAg
Ki8sCi0JCQkJRjExNzk4QzkwMjYyNTQ1NDAzQ0ExNDlEIC8qIEpTVmFsdWVXcmFwcGVyLmggKi8s
Ci0JCQkJRjExNzk4Q0UwMjYyNTc5QzAzQ0ExNDlEIC8qIFVzZXJPYmplY3RJbXAuY3BwICovLAot
CQkJCUYxMTc5OENGMDI2MjU3OUMwM0NBMTQ5RCAvKiBVc2VyT2JqZWN0SW1wLmggKi8sCi0JCQkp
OwotCQkJbmFtZSA9IENsYXNzZXM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQkJdGFi
V2lkdGggPSA0OwotCQkJdXNlc1RhYnMgPSAwOwotCQl9OwotCQkxMDU4QzdCMEZFQTU1ODVFMTFD
QTJDQkIgLyogTGlua2VkIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJ
CWNoaWxkcmVuID0gKAotCQkJCUYxNEZDOUYzMDI1OEU5QTYwM0NBMTQ5RCAvKiBDb3JlU2Vydmlj
ZXMuZnJhbWV3b3JrICovLAotCQkJCURENjZGM0Y1MDhGNzQwMUIwMEM3NUZENyAvKiBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsgKi8sCi0JCQkpOwotCQkJbmFtZSA9ICJMaW5rZWQgRnJhbWV3b3Jr
cyI7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkxMDU4QzdCMkZFQTU1ODVF
MTFDQTJDQkIgLyogT3RoZXIgRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwot
CQkJY2hpbGRyZW4gPSAoCi0JCQkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5m
cmFtZXdvcmsgKi8sCi0JCQkJMDg2N0Q2OUJGRTg0MDI4RkMwMkFBQzA3IC8qIEZvdW5kYXRpb24u
ZnJhbWV3b3JrICovLAotCQkJKTsKLQkJCW5hbWUgPSAiT3RoZXIgRnJhbWV3b3JrcyI7Ci0JCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkxQzkwNTE5RTBCQTlGMzA1MDA4MUU5RDAg
LyogQ29uZmlndXJhdGlvbnMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCTFDOTA1MTlGMEJBOUYzMDUwMDgxRTlEMCAvKiBCYXNlLnhjY29uZmlnICovLAot
CQkJCTFDOTA1MUEwMEJBOUYzMDUwMDgxRTlEMCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8s
Ci0JCQkJMUM5MDUxQTEwQkE5RjMwNTAwODFFOUQwIC8qIEphdmFTY3JpcHRHbHVlLnhjY29uZmln
ICovLAotCQkJCTFDOTA1MUEyMEJBOUYzMDUwMDgxRTlEMCAvKiBWZXJzaW9uLnhjY29uZmlnICov
LAotCQkJKTsKLQkJCXBhdGggPSBDb25maWd1cmF0aW9uczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7Ci0JCQl0YWJXaWR0aCA9IDQ7Ci0JCQl1c2VzVGFicyA9IDA7Ci0JCX07Ci0vKiBFbmQg
UEJYR3JvdXAgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0
aW9uICovCi0JCURENjZGM0JBMDhGNzNFRDcwMEM3NUZENyAvKiBIZWFkZXJzICovID0gewotCQkJ
aXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJREQ2NkYzQkIwOEY3M0VENzAwQzc1RkQ3IC8qIEphdmFT
Y3JpcHRHbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlERDY2RjNCQzA4RjczRUQ3MDBDNzVGRDcg
LyogSlNCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQlERDY2RjNCRTA4RjczRUQ3MDBDNzVGRDcg
LyogSlNPYmplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCURENjZGM0JGMDhGNzNFRDcwMEM3NUZE
NyAvKiBKU1J1bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREQ2NkYzQkQwOEY3M0VENzAwQzc1RkQ3
IC8qIEpTVXRpbHMuaCBpbiBIZWFkZXJzICovLAotCQkJCURENjZGM0MwMDhGNzNFRDcwMEM3NUZE
NyAvKiBKU1ZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREQ2NkYzQzEwOEY3M0VE
NzAwQzc1RkQ3IC8qIFVzZXJPYmplY3RJbXAuaCBpbiBIZWFkZXJzICovLAotCQkJKTsKLQkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWEhl
YWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNl
Y3Rpb24gKi8KLQkJMTQyMkU4NzYwOURFM0JFODAwNzQ5Qjg3IC8qIHRlc3Rqc2dsdWUgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
MTQyMkU4ODYwOURFM0MyMjAwNzQ5Qjg3IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0anNnbHVlIiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJ
CTE0MjJFODc0MDlERTNCRTgwMDc0OUI4NyAvKiBTb3VyY2VzICovLAotCQkJCTE0MjJFODc1MDlE
RTNCRTgwMDc0OUI4NyAvKiBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAo
Ci0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJCTVEMkYyMUUzMEJERkFCOUQwMDgyQjI5
NCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJKTsKLQkJCW5hbWUgPSB0ZXN0anNnbHVl
OwotCQkJcHJvZHVjdE5hbWUgPSB0ZXN0anNnbHVlOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDE0
MjJFODc3MDlERTNCRTgwMDc0OUI4NyAvKiB0ZXN0anNnbHVlICovOwotCQkJcHJvZHVjdFR5cGUg
PSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKLQkJfTsKLQkJREQ2NkYzQjkwOEY3M0VE
NzAwQzc1RkQ3IC8qIEphdmFTY3JpcHRHbHVlICovID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFy
Z2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IERENjZGM0QxMDhGNzNFRDcwMEM3NUZE
NyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSmF2YVNj
cmlwdEdsdWUiICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJNUQyRjdEMEEwQzY4NzhFMDAw
QjVCNzJCIC8qIFVwZGF0ZSBJbmZvLnBsaXN0IHdpdGggdmVyc2lvbiBpbmZvcm1hdGlvbiAqLywK
LQkJCQlERDY2RjNCQTA4RjczRUQ3MDBDNzVGRDcgLyogSGVhZGVycyAqLywKLQkJCQlERDY2RjND
MjA4RjczRUQ3MDBDNzVGRDcgLyogUmVzb3VyY2VzICovLAotCQkJCURENjZGM0M0MDhGNzNFRDcw
MEM3NUZENyAvKiBTb3VyY2VzICovLAotCQkJCURENjZGM0NEMDhGNzNFRDcwMEM3NUZENyAvKiBG
cmFtZXdvcmtzICovLAotCQkJCTkzOUQwNTVFMDlEQTAzMzQwMDk4NDk5NiAvKiBDaGVjayBGb3Ig
R2xvYmFsIEluaXRpYWxpemVycyAqLywKLQkJCQk1RDBENTM0OTBFOTg2MkE3MDAyOUUyMjMgLyog
Q2hlY2sgRm9yIFdlYWsgVlRhYmxlcyBhbmQgRXh0ZXJuYWxzICovLAotCQkJCTVEQTBGMEMwMERD
MkI0ODkwMEVBMjJCNCAvKiBSZW1vdmUgSGVhZGVycyBJZiBOZWVkZWQgKi8sCi0JCQkpOwotCQkJ
YnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJbmFt
ZSA9IEphdmFTY3JpcHRHbHVlOwotCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gIiQoTkVYVF9ST09U
KSQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrcyI7Ci0JCQlwcm9kdWN0TmFt
ZSA9IEphdmFTY3JpcHRHbHVlOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IERENjZGM0Q2MDhGNzNF
RDcwMEM3NUZENyAvKiBKYXZhU2NyaXB0R2x1ZS5mcmFtZXdvcmsgKi87Ci0JCQlwcm9kdWN0VHlw
ZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmZyYW1ld29yayI7Ci0JCX07Ci0vKiBFbmQgUEJY
TmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICov
Ci0JCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKLQkJ
CWlzYSA9IFBCWFByb2plY3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTRBQzY2MkIw
OENFNzc5MTAwNjkxNUE4IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVj
dCAiSmF2YVNjcmlwdEdsdWUiICovOwotCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUg
Mi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKLQkJCWhhc1NjYW5uZWRGb3JF
bmNvZGluZ3MgPSAxOwotCQkJa25vd25SZWdpb25zID0gKAotCQkJCUVuZ2xpc2gsCi0JCQkJSmFw
YW5lc2UsCi0JCQkJRnJlbmNoLAotCQkJCUdlcm1hbiwKLQkJCSk7Ci0JCQltYWluR3JvdXAgPSAw
ODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogSmF2YVNjcmlwdEdsdWUgKi87Ci0JCQlwcm9kdWN0
UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87Ci0JCQlw
cm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAiIjsKLQkJCXRhcmdldHMgPSAo
Ci0JCQkJMTQyMkU4QzQwOURFM0VBNjAwNzQ5Qjg3IC8qIEFsbCAqLywKLQkJCQlERDY2RjNCOTA4
RjczRUQ3MDBDNzVGRDcgLyogSmF2YVNjcmlwdEdsdWUgKi8sCi0JCQkJMTQyMkU4NzYwOURFM0JF
ODAwNzQ5Qjg3IC8qIHRlc3Rqc2dsdWUgKi8sCi0JCQkpOwotCQl9OwotLyogRW5kIFBCWFByb2pl
Y3Qgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KLQkJREQ2NkYzQzIwOEY3M0VENzAwQzc1RkQ3IC8qIFJlc291cmNlcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJREQ2NkYzQzMwOEY3M0VENzAwQzc1RkQ3IC8qIEluZm9Q
bGlzdC5zdHJpbmdzIGluIFJlc291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhSZXNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KLQkJNUQwRDUzNDkwRTk4NjJBNzAwMjlFMjIzIC8qIENoZWNrIEZvciBXZWFrIFZUYWJs
ZXMgYW5kIEV4dGVybmFscyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCSk7
Ci0JCQlpbnB1dFBhdGhzID0gKAotCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoRVhFQ1VUQUJM
RV9QQVRIKSIsCi0JCQkpOwotCQkJbmFtZSA9ICJDaGVjayBGb3IgV2VhayBWVGFibGVzIGFuZCBF
eHRlcm5hbHMiOwotCQkJb3V0cHV0UGF0aHMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hl
bGxTY3JpcHQgPSAiaWYgWyAtZiAuLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJs
ZXMtYW5kLWV4dGVybmFscyBdOyB0aGVuXG4gICAgLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3It
d2Vhay12dGFibGVzLWFuZC1leHRlcm5hbHMgfHwgZXhpdCAkP1xuZmkiOwotCQl9OwotCQk1RDJG
N0QwQTBDNjg3OEUwMDBCNUI3MkIgLyogVXBkYXRlIEluZm8ucGxpc3Qgd2l0aCB2ZXJzaW9uIGlu
Zm9ybWF0aW9uICovID0gewotCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwotCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJKTsKLQkJCWlu
cHV0UGF0aHMgPSAoCi0JCQkJIiQoU1JDUk9PVCkvQ29uZmlndXJhdGlvbnMvVmVyc2lvbi54Y2Nv
bmZpZyIsCi0JCQkpOwotCQkJbmFtZSA9ICJVcGRhdGUgSW5mby5wbGlzdCB3aXRoIHZlcnNpb24g
aW5mb3JtYXRpb24iOwotCQkJb3V0cHV0UGF0aHMgPSAoCi0JCQkJIiQoU1JDUk9PVCkvSW5mby5w
bGlzdCIsCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
Ci0JCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAiIyBUb3VjaCBJbmZv
LnBsaXN0IHRvIGxldCBYY29kZSBrbm93IGl0IG5lZWRzIHRvIGNvcHkgaXQgaW50byB0aGUgYnVp
bHQgcHJvZHVjdFxuaWYgW1sgXCIke0NPTkZJR1VSQVRJT059XCIgIT0gXCJQcm9kdWN0aW9uXCIg
XV07IHRoZW5cbiAgICB0b3VjaCBcIiRTUkNST09UL0luZm8ucGxpc3RcIjtcbmZpO1xuIjsKLQkJ
fTsKLQkJNURBMEYwQzAwREMyQjQ4OTAwRUEyMkI0IC8qIFJlbW92ZSBIZWFkZXJzIElmIE5lZWRl
ZCAqLyA9IHsKLQkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCSk7Ci0JCQlpbnB1dFBhdGhz
ID0gKAotCQkJKTsKLQkJCW5hbWUgPSAiUmVtb3ZlIEhlYWRlcnMgSWYgTmVlZGVkIjsKLQkJCW91
dHB1dFBhdGhzID0gKAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwotCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gImlmICgo
IFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID4gMTA1MCApKTsgdGhlblxuICAgcm0gLXJm
IFwiJEJVSUxUX1BST0RVQ1RTX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIi8qLmg7
XG5maTtcbiI7Ci0JCX07Ci0JCTkzOUQwNTVFMDlEQTAzMzQwMDk4NDk5NiAvKiBDaGVjayBGb3Ig
R2xvYmFsIEluaXRpYWxpemVycyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJ
CSk7Ci0JCQlpbnB1dFBhdGhzID0gKAotCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoRVhFQ1VU
QUJMRV9QQVRIKSIsCi0JCQkpOwotCQkJbmFtZSA9ICJDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxp
emVycyI7Ci0JCQlvdXRwdXRQYXRocyA9ICgKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNj
cmlwdCA9ICJpZiBbIC1mIC4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWdsb2JhbC1pbml0aWFs
aXplcnMgXTsgdGhlblxuICAgIC4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWdsb2JhbC1pbml0
aWFsaXplcnMgfHwgZXhpdCAkP1xuZmkiOwotCQl9OwotLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KLQkJMTQyMkU4NzQwOURFM0JFODAwNzQ5Qjg3IC8qIFNvdXJjZXMgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxNDIyRTg3QjA5REUzQkYwMDA3NDlCODcgLyogdGVzdGpz
Z2x1ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLQkJREQ2NkYzQzQwOEY3M0VENzAwQzc1RkQ3IC8qIFNv
dXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQlERDY2RjNDNjA4RjczRUQ3
MDBDNzVGRDcgLyogSmF2YVNjcmlwdEdsdWUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREQ2NkYz
QzkwOEY3M0VENzAwQzc1RkQ3IC8qIEpTQmFzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlERDY2
RjNDQTA4RjczRUQ3MDBDNzVGRDcgLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
REQ2NkYzQzcwOEY3M0VENzAwQzc1RkQ3IC8qIEpTUnVuLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CURENjZGM0M4MDhGNzNFRDcwMEM3NUZENyAvKiBKU1V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCURENjZGM0NCMDhGNzNFRDcwMEM3NUZENyAvKiBKU1ZhbHVlV3JhcHBlci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlERDY2RjNDQzA4RjczRUQ3MDBDNzVGRDcgLyogVXNlck9iamVjdEltcC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICov
Ci0KLS8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwotCQkxNDIyRThDODA5
REUzRUFEMDA3NDlCODcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBC
WFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSAxNDIyRTg3NjA5REUzQkU4MDA3NDlCODcg
LyogdGVzdGpzZ2x1ZSAqLzsKLQkJCXRhcmdldFByb3h5ID0gMTQyMkU4QzcwOURFM0VBRDAwNzQ5
Qjg3IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKLQkJfTsKLQkJMTQyMkU4Q0EwOURFM0VC
MTAwNzQ5Qjg3IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJn
ZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gREQ2NkYzQjkwOEY3M0VENzAwQzc1RkQ3IC8qIEph
dmFTY3JpcHRHbHVlICovOwotCQkJdGFyZ2V0UHJveHkgPSAxNDIyRThDOTA5REUzRUIxMDA3NDlC
ODcgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwotCQl9OwotCQk1RDJGMjFFMzBCREZBQjlE
MDA4MkIyOTQgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSBERDY2RjNCOTA4RjczRUQ3MDBDNzVGRDcgLyogSmF2
YVNjcmlwdEdsdWUgKi87Ci0JCQl0YXJnZXRQcm94eSA9IDVEMkYyMUUyMEJERkFCOUQwMDgyQjI5
NCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87Ci0JCX07Ci0vKiBFbmQgUEJYVGFyZ2V0RGVw
ZW5kZW5jeSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9uICov
Ci0JCTA4OUMxNjY2RkU4NDExNThDMDJBQUMwNyAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLyA9IHsK
LQkJCWlzYSA9IFBCWFZhcmlhbnRHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTA4OUMxNjY3
RkU4NDExNThDMDJBQUMwNyAvKiBFbmdsaXNoICovLAotCQkJKTsKLQkJCW5hbWUgPSBJbmZvUGxp
c3Quc3RyaW5nczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0vKiBFbmQgUEJY
VmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24g
c2VjdGlvbiAqLwotCQkxNDIyRTg4NzA5REUzQzIyMDA3NDlCODcgLyogRGVidWcgKi8gPSB7Ci0J
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJ
T1RIRVJfQ0ZMQUdTID0gIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiOwotCQkJCU9USEVS
X0xERkxBR1MgPSAoCi0JCQkJCSItZnJhbWV3b3JrIiwKLQkJCQkJQ29yZUZvdW5kYXRpb24sCi0J
CQkJKTsKLQkJCQlQUk9EVUNUX05BTUUgPSB0ZXN0anNnbHVlOwotCQkJfTsKLQkJCW5hbWUgPSBE
ZWJ1ZzsKLQkJfTsKLQkJMTQyMkU4ODgwOURFM0MyMjAwNzQ5Qjg3IC8qIFJlbGVhc2UgKi8gPSB7
Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0J
CQkJT1RIRVJfQ0ZMQUdTID0gIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiOwotCQkJCU9U
SEVSX0xERkxBR1MgPSAoCi0JCQkJCSItZnJhbWV3b3JrIiwKLQkJCQkJQ29yZUZvdW5kYXRpb24s
Ci0JCQkJKTsKLQkJCQlQUk9EVUNUX05BTUUgPSB0ZXN0anNnbHVlOwotCQkJfTsKLQkJCW5hbWUg
PSBSZWxlYXNlOwotCQl9OwotCQkxNDIyRTg4OTA5REUzQzIyMDA3NDlCODcgLyogUHJvZHVjdGlv
biAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5n
cyA9IHsKLQkJCQlPVEhFUl9DRkxBR1MgPSAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyI7
Ci0JCQkJT1RIRVJfTERGTEFHUyA9ICgKLQkJCQkJIi1mcmFtZXdvcmsiLAotCQkJCQlDb3JlRm91
bmRhdGlvbiwKLQkJCQkpOwotCQkJCVBST0RVQ1RfTkFNRSA9IHRlc3Rqc2dsdWU7Ci0JCQl9Owot
CQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07Ci0JCTE0MjJFOERFMDlERTNFRjUwMDc0OUI4NyAv
KiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQkJR0NDX0RZTkFNSUNf
Tk9fUElDID0gTk87Ci0JCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7Ci0JCQkJUFJPRFVD
VF9OQU1FID0gQWxsOwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJMTQyMkU4REYw
OURFM0VGNTAwNzQ5Qjg3IC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlF
UzsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKLQkJCQlQUk9EVUNUX05B
TUUgPSBBbGw7Ci0JCQkJWkVST19MSU5LID0gTk87Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7
Ci0JCX07Ci0JCTE0MjJFOEUwMDlERTNFRjUwMDc0OUI4NyAvKiBQcm9kdWN0aW9uICovID0gewot
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJ
CVBST0RVQ1RfTkFNRSA9IEFsbDsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsK
LQkJMTRBQzY2MkMwOENFNzc5MTAwNjkxNUE4IC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1
MUEwMEJBOUYzMDUwMDgxRTlEMCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87Ci0JCQlidWls
ZFNldHRpbmdzID0gewotCQkJCURFQlVHX0RFRklORVMgPSAiJChERUJVR19ERUZJTkVTX2RlYnVn
KSI7Ci0JCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9ICIkKEdDQ19PUFRJTUlaQVRJT05fTEVW
RUxfZGVidWcpIjsKLQkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9ICIkKFNUUklQX0lOU1RB
TExFRF9QUk9EVUNUX2RlYnVnKSI7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQkx
NEFDNjYyRDA4Q0U3NzkxMDA2OTE1QTggLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTFB
MDBCQTlGMzA1MDA4MUU5RDAgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOwotCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKLQkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9IE5POwotCQkJfTsKLQkJ
CW5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQkxNEFDNjYyRTA4Q0U3NzkxMDA2OTE1QTggLyogUHJv
ZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE5RjBCQTlGMzA1MDA4MUU5RDAgLyogQmFzZS54
Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1
Y3Rpb247Ci0JCX07Ci0JCURENjZGM0QyMDhGNzNFRDcwMEM3NUZENyAvKiBEZWJ1ZyAqLyA9IHsK
LQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSAxQzkwNTFBMTBCQTlGMzA1MDA4MUU5RDAgLyogSmF2YVNjcmlwdEdsdWUueGNjb25m
aWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUlOU1RBTExfUEFUSCA9ICIkKEJVSUxU
X1BST0RVQ1RTX0RJUikiOwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJREQ2NkYz
RDMwOEY3M0VENzAwQzc1RkQ3IC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxQTEwQkE5
RjMwNTAwODFFOUQwIC8qIEphdmFTY3JpcHRHbHVlLnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0
aW5ncyA9IHsKLQkJCQlJTlNUQUxMX1BBVEggPSAiJChCVUlMVF9QUk9EVUNUU19ESVIpIjsKLQkJ
CX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJREQ2NkYzRDQwOEY3M0VENzAwQzc1RkQ3
IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxQTEwQkE5RjMwNTAwODFFOUQwIC8q
IEphdmFTY3JpcHRHbHVlLnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlC
VUlMRF9WQVJJQU5UUyA9IG5vcm1hbDsKLQkJCQlTRUNUT1JERVJfRkxBR1MgPSAoCi0JCQkJCSIt
c2VjdG9yZGVyIiwKLQkJCQkJX19URVhULAotCQkJCQlfX3RleHQsCi0JCQkJCSIkKEFQUExFX0lO
VEVSTkFMX0RJUikvT3JkZXJGaWxlcy9KYXZhU2NyaXB0R2x1ZS5vcmRlciIsCi0JCQkJKTsKLQkJ
CX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKLS8qIEVuZCBYQ0J1aWxkQ29uZmlndXJh
dGlvbiBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAq
LwotCQkxNDIyRTg4NjA5REUzQzIyMDA3NDlCODcgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgInRlc3Rqc2dsdWUiICovID0gewotCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJMTQyMkU4ODcw
OURFM0MyMjAwNzQ5Qjg3IC8qIERlYnVnICovLAotCQkJCTE0MjJFODg4MDlERTNDMjIwMDc0OUI4
NyAvKiBSZWxlYXNlICovLAotCQkJCTE0MjJFODg5MDlERTNDMjIwMDc0OUI4NyAvKiBQcm9kdWN0
aW9uICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07Ci0JCTE0MjJFOERE
MDlERTNFRjUwMDc0OUI4NyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3Jl
Z2F0ZVRhcmdldCAiQWxsIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0J
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTE0MjJFOERFMDlERTNFRjUwMDc0OUI4NyAv
KiBEZWJ1ZyAqLywKLQkJCQkxNDIyRThERjA5REUzRUY1MDA3NDlCODcgLyogUmVsZWFzZSAqLywK
LQkJCQkxNDIyRThFMDA5REUzRUY1MDA3NDlCODcgLyogUHJvZHVjdGlvbiAqLywKLQkJCSk7Ci0J
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQkxNEFDNjYyQjA4Q0U3NzkxMDA2OTE1QTgg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJKYXZhU2NyaXB0R2x1
ZSIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKLQkJCQkxNEFDNjYyQzA4Q0U3NzkxMDA2OTE1QTggLyogRGVidWcgKi8sCi0J
CQkJMTRBQzY2MkQwOENFNzc5MTAwNjkxNUE4IC8qIFJlbGVhc2UgKi8sCi0JCQkJMTRBQzY2MkUw
OENFNzc5MTAwNjkxNUE4IC8qIFByb2R1Y3Rpb24gKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJv
ZHVjdGlvbjsKLQkJfTsKLQkJREQ2NkYzRDEwOEY3M0VENzAwQzc1RkQ3IC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKYXZhU2NyaXB0R2x1ZSIgKi8gPSB7
Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKLQkJCQlERDY2RjNEMjA4RjczRUQ3MDBDNzVGRDcgLyogRGVidWcgKi8sCi0JCQkJREQ2NkYz
RDMwOEY3M0VENzAwQzc1RkQ3IC8qIFJlbGVhc2UgKi8sCi0JCQkJREQ2NkYzRDQwOEY3M0VENzAw
Qzc1RkQ3IC8qIFByb2R1Y3Rpb24gKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsK
LQkJfTsKLS8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KLQl9OwotCXJvb3RP
YmplY3QgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci19
CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9pY3UvTElDRU5TRQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0R2x1ZS9pY3UvTElDRU5TRQkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9p
Y3UvTElDRU5TRQkod29ya2luZyBjb3B5KQpAQCAtMSwyNSArMCwwIEBACi1DT1BZUklHSFQgQU5E
IFBFUk1JU1NJT04gTk9USUNFCi0KLUNvcHlyaWdodCAoYykgMTk5NS0yMDA2IEludGVybmF0aW9u
YWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycwotCi1BbGwgcmlnaHRz
IHJlc2VydmVkLgotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMKLXNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBp
biB0aGUgU29mdHdhcmUKLXdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwKLW1lcmdlLCBwdWJsaXNo
LCBkaXN0cmlidXRlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMKLXRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz
bywgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZShzKQotYW5kIHRoaXMg
cGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlIGFu
ZCB0aGF0IGJvdGggdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlKHMpIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uCi0KLVRIRSBT
T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E
LCBFWFBSRVNTIE9SIElNUExJRUQsCi1JTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1Q
VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQgT0YgVEhJUkQgUEFSVFkgUklHSFRTLiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUgotT1IgSE9MREVSUyBJTkNMVURFRCBJTiBU
SElTIE5PVElDRSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgT1IgQU5ZIFNQRUNJQUwgSU5ESVJF
Q1QgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUywgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBS
RVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUgotUFJPRklUUywgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9O
LCBBUklTSU5HCi1PVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9S
TUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLQotRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5v
dGljZSwgdGhlIG5hbWUgb2YgYSBjb3B5cmlnaHQgaG9sZGVyIHNoYWxsIG5vdCBiZSB1c2VkIGlu
Ci1hZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgdXNlIG9yIG90
aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUKLXdpdGhvdXQgcHJpb3Igd3JpdHRlbiBhdXRo
b3JpemF0aW9uIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyLgpJbmRleDogSmF2YVNjcmlwdEdsdWUv
aWN1L1JFQURNRQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9pY3UvUkVBRE1FCShyZXZp
c2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL2ljdS9SRUFETUUJKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMCwwIEBACi1UaGUgaGVhZGVycyBpbiB0aGlzIGRpcmVjdG9yeSBhcmUgZm9yIGNv
bXBpbGluZyBvbiBNYWMgT1MgWCAxMC40LgotVGhlIE1hYyBPUyBYIDEwLjQgcmVsZWFzZSBpbmNs
dWRlcyB0aGUgSUNVIGJpbmFyeSwgYnV0IG5vdCBJQ1UgaGVhZGVycy4KLUZvciBvdGhlciBwbGF0
Zm9ybXMsIGluc3RhbGxlZCBJQ1UgaGVhZGVycyBzaG91bGQgYmUgdXNlZCByYXRoZXIgdGhhbiB0
aGVzZS4KLVRoZXkgYXJlIHNwZWNpZmljIHRvIE1hYyBPUyBYIDEwLjQuCkluZGV4OiBKYXZhU2Ny
aXB0R2x1ZS9pY3UvdW5pY29kZS9wbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRH
bHVlL2ljdS91bmljb2RlL3BsYXRmb3JtLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlw
dEdsdWUvaWN1L3VuaWNvZGUvcGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMSwyNjcgKzAs
MCBAQAotLyoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKgotKiAgIENvcHlyaWdodCAoQykgMTk5
Ny0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCi0qICAgQ29ycG9yYXRpb24g
YW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0qCi0qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKLSoKLSogIEZJTEUgTkFNRSA6IHBsYXRmb3JtLmgKLSoKLSogICBEYXRlICAgICAgICBOYW1l
ICAgICAgICBEZXNjcmlwdGlvbgotKiAgIDA1LzEzLzk4ICAgIG5vcyAgICAgICAgIENyZWF0aW9u
IChjb250ZW50IG1vdmVkIGhlcmUgZnJvbSBwdHlwZXMuaCkuCi0qICAgMDMvMDIvOTkgICAgc3Rl
cGhlbiAgICAgQWRkZWQgQVM0MDAgc3VwcG9ydC4KLSogICAwMy8zMC85OSAgICBzdGVwaGVuICAg
ICBBZGRlZCBMaW51eCBzdXBwb3J0LgotKiAgIDA0LzEzLzk5ICAgIHN0ZXBoZW4gICAgIFJld29y
a2VkIGZvciBhdXRvY29uZi4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKi8KLQotLyogRGVmaW5l
IHRoZSBwbGF0Zm9ybSB3ZSdyZSBvbi4gKi8KLSNpZm5kZWYgVV9EQVJXSU4KLSNkZWZpbmUgVV9E
QVJXSU4KLSNlbmRpZgotCi0vKiBEZWZpbmUgd2hldGhlciBpbnR0eXBlcy5oIGlzIGF2YWlsYWJs
ZSAqLwotI2lmbmRlZiBVX0hBVkVfSU5UVFlQRVNfSAotI2RlZmluZSBVX0hBVkVfSU5UVFlQRVNf
SCAxCi0jZW5kaWYKLQotLyoKLSAqIERlZmluZSB3aGF0IHN1cHBvcnQgZm9yIEMrKyBzdHJlYW1z
IGlzIGF2YWlsYWJsZS4KLSAqICAgICBJZiBVX0lPU1RSRUFNX1NPVVJDRSBpcyBzZXQgdG8gMTk5
NzExLCB0aGVuIDxpb3N0cmVhbT4gaXMgYXZhaWxhYmxlCi0gKiAoMTk5NzcxMSBpcyB0aGUgZGF0
ZSB0aGUgSVNPL0lFQyBDKysgRkRJUyB3YXMgcHVibGlzaGVkKSwgYW5kIHRoZW4KLSAqIG9uZSBz
aG91bGQgcXVhbGlmeSBzdHJlYW1zIHVzaW5nIHRoZSBzdGQgbmFtZXNwYWNlIGluIElDVSBoZWFk
ZXIKLSAqIGZpbGVzLgotICogICAgIElmIFVfSU9TVFJFQU1fU09VUkNFIGlzIHNldCB0byAxOTg1
MDYsIHRoZW4gPGlvc3RyZWFtLmg+IGlzCi0gKiBhdmFpbGFibGUgaW5zdGVhZCAoMTk4NTA2IGlz
IHRoZSBkYXRlIHdoZW4gU3Ryb3VzdHJ1cCBwdWJsaXNoZWQKLSAqICJBbiBFeHRlbnNpYmxlIEkv
TyBGYWNpbGl0eSBmb3IgQysrIiBhdCB0aGUgc3VtbWVyIFVTRU5JWCBjb25mZXJlbmNlKS4KLSAq
ICAgICBJZiBVX0lPU1RSRUFNX1NPVVJDRSBpcyAwLCB0aGVuIEMrKyBzdHJlYW1zIGFyZSBub3Qg
YXZhaWxhYmxlIGFuZAotICogc3VwcG9ydCBmb3IgdGhlbSB3aWxsIGJlIHNpbGVudGx5IHN1cHBy
ZXNzZWQgaW4gSUNVLgotICoKLSAqLwotCi0jaWZuZGVmIFVfSU9TVFJFQU1fU09VUkNFCi0jZGVm
aW5lIFVfSU9TVFJFQU1fU09VUkNFIDE5OTcxMQotI2VuZGlmCi0KLS8qIERldGVybWluZXMgd2hl
dGhlciBzcGVjaWZpYyB0eXBlcyBhcmUgYXZhaWxhYmxlICovCi0jaWZuZGVmIFVfSEFWRV9JTlQ4
X1QKLSNkZWZpbmUgVV9IQVZFX0lOVDhfVCAxCi0jZW5kaWYKLQotI2lmbmRlZiBVX0hBVkVfVUlO
VDhfVAotI2RlZmluZSBVX0hBVkVfVUlOVDhfVCAwCi0jZW5kaWYKLQotI2lmbmRlZiBVX0hBVkVf
SU5UMTZfVAotI2RlZmluZSBVX0hBVkVfSU5UMTZfVCAxCi0jZW5kaWYKLQotI2lmbmRlZiBVX0hB
VkVfVUlOVDE2X1QKLSNkZWZpbmUgVV9IQVZFX1VJTlQxNl9UIDAKLSNlbmRpZgotCi0jaWZuZGVm
IFVfSEFWRV9JTlQzMl9UCi0jZGVmaW5lIFVfSEFWRV9JTlQzMl9UIDEKLSNlbmRpZgotCi0jaWZu
ZGVmIFVfSEFWRV9VSU5UMzJfVAotI2RlZmluZSBVX0hBVkVfVUlOVDMyX1QgMAotI2VuZGlmCi0K
LSNpZm5kZWYgVV9IQVZFX0lOVDY0X1QKLSNkZWZpbmUgVV9IQVZFX0lOVDY0X1QgMQotI2VuZGlm
Ci0KLSNpZm5kZWYgVV9IQVZFX1VJTlQ2NF9UCi0jZGVmaW5lIFVfSEFWRV9VSU5UNjRfVCAwCi0j
ZW5kaWYKLQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotLyogR2VuZXJpYyBkYXRhIHR5cGVzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwot
Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0qLwotCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0KLS8qIElm
IHlvdXIgcGxhdGZvcm0gZG9lcyBub3QgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciwgeW91
IG1heQotICAgbmVlZCB0byBlZGl0IHRoZSB0eXBlZGVmcyBiZWxvdy4gKi8KLSNpZiBVX0hBVkVf
SU5UVFlQRVNfSAotCi0vKiBhdXRvY29uZiAyLjEzIHNvbWV0aW1lcyBjYW4ndCBwcm9wZXJseSBm
aW5kIHRoZSBkYXRhIHR5cGVzIGluIDxpbnR0eXBlcy5oPiAqLwotLyogb3MvMzkwIG5lZWRzIDxp
bnR0eXBlcy5oPiwgYnV0IGl0IGRvZXNuJ3QgaGF2ZSBpbnQ4X3QsIGFuZCBpdCBzb21ldGltZXMg
Ki8KLS8qIGRvZXNuJ3QgaGF2ZSB1aW50OF90IGRlcGVuZGluZyBvbiB0aGUgT1MgdmVyc2lvbi4g
Ki8KLS8qIFNvIHdlIGhhdmUgdGhpcyB3b3JrIGFyb3VuZC4gKi8KLSNpZmRlZiBPUzM5MAotLyog
VGhlIGZlYXR1cmVzIGhlYWRlciBpcyBuZWVkZWQgdG8gZ2V0ICh1KWludDY0X3Qgc29tZXRpbWVz
LiAqLwotI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0jaWYgISBVX0hBVkVfSU5UOF9UCi10eXBlZGVm
IHNpZ25lZCBjaGFyIGludDhfdDsKLSNlbmRpZgotI2lmICFkZWZpbmVkKF9fdWludDhfdCkKLSNk
ZWZpbmUgX191aW50OF90IDEKLXR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90OwotI2VuZGlm
Ci0jZW5kaWYgLyogT1MzOTAgKi8KLQotI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0KLSNlbHNlIC8q
IFVfSEFWRV9JTlRUWVBFU19IICovCi0KLSNpZiAhIFVfSEFWRV9JTlQ4X1QKLXR5cGVkZWYgc2ln
bmVkIGNoYXIgaW50OF90OwotI2VuZGlmCi0KLSNpZiAhIFVfSEFWRV9VSU5UOF9UCi10eXBlZGVm
IHVuc2lnbmVkIGNoYXIgdWludDhfdDsKLSNlbmRpZgotCi0jaWYgISBVX0hBVkVfSU5UMTZfVAot
dHlwZWRlZiBzaWduZWQgc2hvcnQgaW50MTZfdDsKLSNlbmRpZgotCi0jaWYgISBVX0hBVkVfVUlO
VDE2X1QKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7Ci0jZW5kaWYKLQotI2lmICEg
VV9IQVZFX0lOVDMyX1QKLXR5cGVkZWYgc2lnbmVkIGludCBpbnQzMl90OwotI2VuZGlmCi0KLSNp
ZiAhIFVfSEFWRV9VSU5UMzJfVAotdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7Ci0jZW5k
aWYKLQotI2lmICEgVV9IQVZFX0lOVDY0X1QKLSAgICB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcg
aW50NjRfdDsKLS8qIGVsc2Ugd2UgbWF5IG5vdCBoYXZlIGEgNjQtYml0IHR5cGUgKi8KLSNlbmRp
ZgotCi0jaWYgISBVX0hBVkVfVUlOVDY0X1QKLSAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyB1aW50NjRfdDsKLS8qIGVsc2Ugd2UgbWF5IG5vdCBoYXZlIGEgNjQtYml0IHR5cGUgKi8KLSNl
bmRpZgotCi0jZW5kaWYKLQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotLyogQ29tcGlsZXIgYW5k
IGVudmlyb25tZW50IGZlYXR1cmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLwotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0vKiBEZWZpbmUgd2hldGhlciBuYW1l
c3BhY2UgaXMgc3VwcG9ydGVkICovCi0jaWZuZGVmIFVfSEFWRV9OQU1FU1BBQ0UKLSNkZWZpbmUg
VV9IQVZFX05BTUVTUEFDRSAxCi0jZW5kaWYKLQotLyogRGV0ZXJtaW5lcyB0aGUgZW5kaWFubmVz
cyBvZiB0aGUgcGxhdGZvcm0KLSAgIEl0J3MgZG9uZSB0aGlzIHdheSBpbiBjYXNlIG11bHRpcGxl
IGFyY2hpdGVjdHVyZXMgYXJlIGJlaW5nIGJ1aWx0IGF0IG9uY2UuCi0gICBGb3IgZXhhbXBsZSwg
RGFyd2luIHN1cHBvcnRzIGZhdCBiaW5hcmllcywgd2hpY2ggY2FuIGJlIGJvdGggUFBDIGFuZCB4
ODYgYmFzZWQuICovCi0jaWYgZGVmaW5lZChCWVRFX09SREVSKSAmJiBkZWZpbmVkKEJJR19FTkRJ
QU4pCi0jZGVmaW5lIFVfSVNfQklHX0VORElBTiAoQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOKQot
I2Vsc2UKLSNkZWZpbmUgVV9JU19CSUdfRU5ESUFOIDEKLSNlbmRpZgotCi0vKiAxIG9yIDAgdG8g
ZW5hYmxlIG9yIGRpc2FibGUgdGhyZWFkcy4gIElmIHVuZGVmaW5lZCwgZGVmYXVsdCBpczogZW5h
YmxlIHRocmVhZHMuICovCi0jZGVmaW5lIElDVV9VU0VfVEhSRUFEUyAxCi0KLSNpZm5kZWYgVV9E
RUJVRwotI2RlZmluZSBVX0RFQlVHIDAKLSNlbmRpZgotCi0jaWZuZGVmIFVfUkVMRUFTRQotI2Rl
ZmluZSBVX1JFTEVBU0UgMQotI2VuZGlmCi0KLS8qIERldGVybWluZSB3aGV0aGVyIHRvIGRpc2Fi
bGUgcmVuYW1pbmcgb3Igbm90LiBUaGlzIG92ZXJyaWRlcyB0aGUKLSAgIHNldHRpbmcgaW4gdW1h
Y2hpbmUuaCB3aGljaCBpcyBmb3IgYWxsIHBsYXRmb3Jtcy4gKi8KLSNpZm5kZWYgVV9ESVNBQkxF
X1JFTkFNSU5HCi0jZGVmaW5lIFVfRElTQUJMRV9SRU5BTUlORyAxCi0jZW5kaWYKLQotLyogRGV0
ZXJtaW5lIHdoZXRoZXIgdG8gb3ZlcnJpZGUgbmV3IGFuZCBkZWxldGUuICovCi0jaWZuZGVmIFVf
T1ZFUlJJREVfQ1hYX0FMTE9DQVRJT04KLSNkZWZpbmUgVV9PVkVSUklERV9DWFhfQUxMT0NBVElP
TiAxCi0jZW5kaWYKLS8qIERldGVybWluZSB3aGV0aGVyIHRvIG92ZXJyaWRlIHBsYWNlbWVudCBu
ZXcgYW5kIGRlbGV0ZSBmb3IgU1RMLiAqLwotI2lmbmRlZiBVX0hBVkVfUExBQ0VNRU5UX05FVwot
I2RlZmluZSBVX0hBVkVfUExBQ0VNRU5UX05FVyAxCi0jZW5kaWYKLQotLyogRGV0ZXJtaW5lIHdo
ZXRoZXIgdG8gZW5hYmxlIHRyYWNpbmcuICovCi0jaWZuZGVmIFVfRU5BQkxFX1RSQUNJTkcKLSNk
ZWZpbmUgVV9FTkFCTEVfVFJBQ0lORyAxCi0jZW5kaWYKLQotLyogRGVmaW5lIHRoZSBsaWJyYXJ5
IHN1ZmZpeCBpbiBhIEMgc3ludGF4LiAqLwotI2RlZmluZSBVX0hBVkVfTElCX1NVRkZJWCAwCi0j
ZGVmaW5lIFVfTElCX1NVRkZJWF9DX05BTUUgCi0jZGVmaW5lIFVfTElCX1NVRkZJWF9DX05BTUVf
U1RSSU5HICIiCi0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLS8qIENoYXJhY3RlciBkYXRhIHR5
cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotI2lmIGRlZmluZWQoT1MzOTApIHx8IGRlZmlu
ZWQoT1M0MDApCi0jICAgZGVmaW5lIFVfQ0hBUlNFVF9GQU1JTFkgMQotI2VuZGlmCi0KLS8qPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ki8KLS8qIEluZm9ybWF0aW9uIGFib3V0IHdjaGFyIHN1cHBvcnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ki8KLQotI2RlZmluZSBVX0hBVkVfV0NIQVJfSCAgICAgIDEKLSNkZWZpbmUgVV9TSVpF
T0ZfV0NIQVJfVCAgICA0Ci0KLSNkZWZpbmUgVV9IQVZFX1dDU0NQWSAgICAgICAxCi0KLS8qPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ki8KLS8qIEluZm9ybWF0aW9uIGFib3V0IFBPU0lYIHN1cHBvcnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ki8KLQotI2RlZmluZSBVX0hBVkVfTkxfTEFOR0lORk8gICAgICAgICAgMQotI2RlZmlu
ZSBVX0hBVkVfTkxfTEFOR0lORk9fQ09ERVNFVCAgMQotI2RlZmluZSBVX05MX0xBTkdJTkZPX0NP
REVTRVQgICAgICAgQ09ERVNFVAotCi0jaWYgMQotI2RlZmluZSBVX1RaU0VUICAgICAgICAgdHpz
ZXQKLSNlbmRpZgotI2lmIDAKLSNkZWZpbmUgVV9USU1FWk9ORSAgICAgIAotI2VuZGlmCi0jaWYg
MQotI2RlZmluZSBVX1RaTkFNRSAgICAgICAgdHpuYW1lCi0jZW5kaWYKLQotI2RlZmluZSBVX0hB
VkVfTU1BUCAgICAgMQotI2RlZmluZSBVX0hBVkVfUE9QRU4gICAgMQotCi0vKj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PSovCi0vKiBTeW1ib2wgaW1wb3J0LWV4cG9ydCBjb250cm9sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov
Ci0KLSNkZWZpbmUgVV9FWFBPUlQKLS8qIFVfQ0FMTENPTlYgaXMgcmVsZWF0ZWQgdG8gVV9FWFBP
UlQyICovCi0jZGVmaW5lIFVfRVhQT1JUMgotCi0vKiBjeWd3aW4gbmVlZHMgdG8gZXhwb3J0L2lt
cG9ydCBkYXRhICovCi0jaWZkZWYgVV9DWUdXSU4KLSNkZWZpbmUgVV9JTVBPUlQgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpCi0jZWxzZQotI2RlZmluZSBVX0lNUE9SVCAKLSNlbmRpZgotCi0vKj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PSovCi0vKiBDb2RlIGFsaWdubWVudCBhbmQgQyBmdW5jdGlvbiBpbmxpbmlu
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PSovCi0KLSNpZm5kZWYgVV9JTkxJTkUKLSNkZWZpbmUgVV9JTkxJTkUgaW5saW5lCi0jZW5k
aWYKLQotI2RlZmluZSBVX0FMSUdOX0NPREUobikgCi0KLS8qPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K
LS8qIFByb2dyYW1zIHVzZWQgYnkgSUNVIGNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotI2RlZmlu
ZSBVX01BS0UgICIvdXNyL2Jpbi9nbnVtYWtlIgpJbmRleDogSmF2YVNjcmlwdEdsdWUvaWN1L3Vu
aWNvZGUvcHV0aWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS9w
dXRpbC5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3B1
dGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTgwICswLDAgQEAKLS8qCi0qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKLSoKLSogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAwNCwgSW50ZXJuYXRpb25hbCBC
dXNpbmVzcyBNYWNoaW5lcwotKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRz
IFJlc2VydmVkLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qCi0qICBGSUxFIE5BTUUgOiBw
dXRpbC5oCi0qCi0qICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRpb24KLSogICAw
NS8xNC85OCAgICBub3MgICAgICAgICBDcmVhdGlvbiAoY29udGVudCBtb3ZlZCBoZXJlIGZyb20g
dXR5cGVzLmgpLgotKiAgIDA2LzE3Lzk5ICAgIGVybSAgICAgICAgIEFkZGVkIElFRUVfNzU0Ci0q
ICAgMDcvMjIvOTggICAgc3RlcGhlbiAgICAgQWRkZWQgSUVFRXJlbWFpbmRlciwgbWF4LCBtaW4s
IHRydW5jCi0qICAgMDgvMTMvOTggICAgc3RlcGhlbiAgICAgQWRkZWQgaXNOZWdhdGl2ZUluZmlu
aXR5LCBpc1Bvc2l0aXZlSW5maW5pdHkKLSogICAwOC8yNC85OCAgICBzdGVwaGVuICAgICBBZGRl
ZCBsb25nQml0c0Zyb21Eb3VibGUKLSogICAwMy8wMi85OSAgICBzdGVwaGVuICAgICBSZW1vdmVk
IG9wZW5GaWxlKCkuICBBZGRlZCBBUzQwMCBzdXBwb3J0LgotKiAgIDA0LzE1Lzk5ICAgIHN0ZXBo
ZW4gICAgIENvbnZlcnRlZCB0byBDCi0qICAgMTEvMTUvOTkgICAgaGVsZW5hICAgICAgSW50ZWdy
YXRlZCBTLzM5MCBjaGFuZ2VzIGZvciBJRUVFIHN1cHBvcnQuCi0qICAgMDEvMTEvMDAgICAgaGVs
ZW5hICAgICAgQWRkZWQgdV9nZXRWZXJzaW9uLgotKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qLwot
Ci0jaWZuZGVmIFBVVElMX0gKLSNkZWZpbmUgUFVUSUxfSAotCi0jaW5jbHVkZSAidW5pY29kZS91
dHlwZXMuaCIKLQotLyogRGVmaW5lIHRoaXMgdG8gMSBpZiB5b3VyIHBsYXRmb3JtIHN1cHBvcnRz
IElFRUUgNzU0IGZsb2F0aW5nIHBvaW50LAotICAgdG8gMCBpZiBpdCBkb2VzIG5vdC4gKi8KLSNp
Zm5kZWYgSUVFRV83NTQKLSMgICBkZWZpbmUgSUVFRV83NTQgMQotI2VuZGlmCi0KLS8qPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0qLwotLyogUGxhdGZvcm0gdXRpbGl0aWVzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ki8KLQotLyoqCi0gKiBQbGF0Zm9ybSB1dGlsaXRpZXMgaXNvbGF0ZXMgdGhlIHBsYXRmb3JtIGRl
cGVuZGVuY2llcyBvZiB0aGUKLSAqIGxpYmFyYXJ5LiAgRm9yIGVhY2ggcGxhdGZvcm0gd2hpY2gg
dGhpcyBjb2RlIGlzIHBvcnRlZCB0bywgdGhlc2UKLSAqIGZ1bmN0aW9ucyBtYXkgaGF2ZSB0byBi
ZSByZS1pbXBsZW1lbnRlZC4KLSAqLwotCi0vKioKLSAqIFJldHVybiB0aGUgSUNVIGRhdGEgZGly
ZWN0b3J5LiAKLSAqIFRoZSBkYXRhIGRpcmVjdG9yeSBpcyB3aGVyZSBjb21tb24gZm9ybWF0IElD
VSBkYXRhIGZpbGVzICguZGF0IGZpbGVzKQotICogICBhcmUgbG9hZGVkIGZyb20uICBOb3RlIHRo
YXQgbm9ybWFsIHVzZSBvZiB0aGUgYnVpbHQtaW4gSUNVCi0gKiAgIGZhY2lsaXRpZXMgZG9lcyBu
b3QgcmVxdWlyZSBsb2FkaW5nIG9mIGFuIGV4dGVybmFsIGRhdGEgZmlsZTsKLSAqICAgdW5sZXNz
IHlvdSBhcmUgYWRkaW5nIGN1c3RvbSBkYXRhIHRvIElDVSwgdGhlIGRhdGEgZGlyZWN0b3J5Ci0g
KiAgIGRvZXMgbm90IG5lZWQgdG8gYmUgc2V0LgotICoKLSAqIFRoZSBkYXRhIGRpcmVjdG9yeSBp
cyBkZXRlcm1pbmVkIGFzIGZvbGxvd3M6Ci0gKiAgICBJZiB1X3NldERhdGFEaXJlY3RvcnkoKSBo
YXMgYmVlbiBjYWxsZWQsIHRoYXQgaXMgaXQsIG90aGVyd2lzZQotICogICAgaWYgdGhlIElDVV9E
QVRBIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgdXNlIHRoYXQsIG90aGVyd2lzZQotICog
ICAgSWYgYSBkYXRhIGRpcmVjdG9yeSB3YXMgc3BlY2lmZWQgYXQgSUNVIGJ1aWxkIHRpbWUKLSAq
ICAgICAgKCNkZWZpbmUgSUNVX0RBVEFfRElSICJwYXRoIiksIHVzZSB0aGF0LAotICogICAgb3Ro
ZXJ3aXNlIG5vIGRhdGEgZGlyZWN0b3J5IGlzIGF2YWlsYWJsZS4KLSAqCi0gKiBAcmV0dXJuIHRo
ZSBkYXRhIGRpcmVjdG9yeSwgb3IgYW4gZW1wdHkgc3RyaW5nICgiIikgaWYgbm8gZGF0YSBkaXJl
Y3RvcnkgaGFzCi0gKiAgICAgICAgIGJlZW4gc3BlY2lmaWVkLgotICogICAKLSAqIEBzdGFibGUg
SUNVIDIuMAotICovCi1VX1NUQUJMRSBjb25zdCBjaGFyKiBVX0VYUE9SVDIgdV9nZXREYXRhRGly
ZWN0b3J5KHZvaWQpOwotCi0vKiogCi0gKiBTZXQgdGhlIElDVSBkYXRhIGRpcmVjdG9yeS4gCi0g
KiBUaGUgZGF0YSBkaXJlY3RvcnkgaXMgd2hlcmUgY29tbW9uIGZvcm1hdCBJQ1UgZGF0YSBmaWxl
cyAoLmRhdCBmaWxlcykKLSAqICAgYXJlIGxvYWRlZCBmcm9tLiAgTm90ZSB0aGF0IG5vcm1hbCB1
c2Ugb2YgdGhlIGJ1aWx0LWluIElDVQotICogICBmYWNpbGl0aWVzIGRvZXMgbm90IHJlcXVpcmUg
bG9hZGluZyBvZiBhbiBleHRlcm5hbCBkYXRhIGZpbGU7Ci0gKiAgIHVubGVzcyB5b3UgYXJlIGFk
ZGluZyBjdXN0b20gZGF0YSB0byBJQ1UsIHRoZSBkYXRhIGRpcmVjdG9yeQotICogICBkb2VzIG5v
dCBuZWVkIHRvIGJlIHNldC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQg
YXQgbW9zdCBvbmNlIGluIGEgcHJvY2VzcywgYmVmb3JlIHRoZQotICogZmlyc3QgSUNVIG9wZXJh
dGlvbiAoZS5nLiwgdV9pbml0KCkpIHRoYXQgd2lsbCByZXF1aXJlIHRoZSBsb2FkaW5nIG9mIGFu
Ci0gKiBJQ1UgZGF0YSBmaWxlLgotICogVGhpcyBmdW5jdGlvbiBpcyBub3QgdGhyZWFkLXNhZmUu
IFVzZSBpdCBiZWZvcmUgY2FsbGluZyBJQ1UgQVBJcyBmcm9tCi0gKiBtdWx0aXBsZSB0aHJlYWRz
LgotICoKLSAqIEBwYXJhbSBkaXJlY3RvcnkgVGhlIGRpcmVjdG9yeSB0byBiZSBzZXQuCi0gKgot
ICogQHNlZSB1X2luaXQKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB2b2lkIFVf
RVhQT1JUMiB1X3NldERhdGFEaXJlY3RvcnkoY29uc3QgY2hhciAqZGlyZWN0b3J5KTsKLQotLyoq
Ci0gKiBQbGVhc2UgdXNlIHVjbnZfZ2V0RGVmYXVsdE5hbWUoKSBpbnN0ZWFkLgotICogUmV0dXJu
IHRoZSBkZWZhdWx0IGNvZGVwYWdlIGZvciB0aGlzIHBsYXRmb3JtIGFuZCBsb2NhbGUuCi0gKiBU
aGlzIGZ1bmN0aW9uIGNhbiBjYWxsIHNldGxvY2FsZSgpIG9uIFVuaXggcGxhdGZvcm1zLiBQbGVh
c2UgcmVhZCB0aGUKLSAqIHBsYXRmb3JtIGRvY3VtZW50YXRpb24gb24gc2V0bG9jYWxlKCkgYmVm
b3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KLSAqIEByZXR1cm4gdGhlIGRlZmF1bHQgY29kZXBh
Z2UgZm9yIHRoaXMgcGxhdGZvcm0gCi0gKiBAaW50ZXJuYWwKLSAqLwotVV9JTlRFUk5BTCBjb25z
dCBjaGFyKiAgVV9FWFBPUlQyIHVwcnZfZ2V0RGVmYXVsdENvZGVwYWdlKHZvaWQpOwotCi0vKioK
LSAqIFBsZWFzZSB1c2UgdWxvY19nZXREZWZhdWx0KCkgaW5zdGVhZC4KLSAqIFJldHVybiB0aGUg
ZGVmYXVsdCBsb2NhbGUgSUQgc3RyaW5nIGJ5IHF1ZXJ5aW5nIHRocyBzeXN0ZW0sIG9yCi0gKiAg
ICAgemVybyBpZiBvbmUgY2Fubm90IGJlIGZvdW5kLiAKLSAqIFRoaXMgZnVuY3Rpb24gY2FuIGNh
bGwgc2V0bG9jYWxlKCkgb24gVW5peCBwbGF0Zm9ybXMuIFBsZWFzZSByZWFkIHRoZQotICogcGxh
dGZvcm0gZG9jdW1lbnRhdGlvbiBvbiBzZXRsb2NhbGUoKSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1
bmN0aW9uLgotICogQHJldHVybiB0aGUgZGVmYXVsdCBsb2NhbGUgSUQgc3RyaW5nCi0gKiBAaW50
ZXJuYWwKLSAqLwotVV9JTlRFUk5BTCBjb25zdCBjaGFyKiAgVV9FWFBPUlQyIHVwcnZfZ2V0RGVm
YXVsdExvY2FsZUlEKHZvaWQpOwotCi0vKioKLSAqIEZpbGVzeXN0ZW0gZmlsZSBhbmQgcGF0aCBz
ZXBhcmF0b3IgY2hhcmFjdGVycy4KLSAqIEV4YW1wbGU6ICcvJyBhbmQgJzonIG9uIFVuaXgsICdc
XCcgYW5kICc7JyBvbiBXaW5kb3dzLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLSNpZmRlZiBY
UF9NQUMKLSMgICBkZWZpbmUgVV9GSUxFX1NFUF9DSEFSICc6JwotIyAgIGRlZmluZSBVX0ZJTEVf
QUxUX1NFUF9DSEFSICc6JwotIyAgIGRlZmluZSBVX1BBVEhfU0VQX0NIQVIgJzsnCi0jICAgZGVm
aW5lIFVfRklMRV9TRVBfU1RSSU5HICI6IgotIyAgIGRlZmluZSBVX0ZJTEVfQUxUX1NFUF9TVFJJ
TkcgIjoiCi0jICAgZGVmaW5lIFVfUEFUSF9TRVBfU1RSSU5HICI7IgotI2VsaWYgZGVmaW5lZChX
SU4zMikgfHwgZGVmaW5lZChPUzIpCi0jICAgZGVmaW5lIFVfRklMRV9TRVBfQ0hBUiAnXFwnCi0j
ICAgZGVmaW5lIFVfRklMRV9BTFRfU0VQX0NIQVIgJy8nCi0jICAgZGVmaW5lIFVfUEFUSF9TRVBf
Q0hBUiAnOycKLSMgICBkZWZpbmUgVV9GSUxFX1NFUF9TVFJJTkcgIlxcIgotIyAgIGRlZmluZSBV
X0ZJTEVfQUxUX1NFUF9TVFJJTkcgIi8iCi0jICAgZGVmaW5lIFVfUEFUSF9TRVBfU1RSSU5HICI7
IgotI2Vsc2UKLSMgICBkZWZpbmUgVV9GSUxFX1NFUF9DSEFSICcvJwotIyAgIGRlZmluZSBVX0ZJ
TEVfQUxUX1NFUF9DSEFSICcvJwotIyAgIGRlZmluZSBVX1BBVEhfU0VQX0NIQVIgJzonCi0jICAg
ZGVmaW5lIFVfRklMRV9TRVBfU1RSSU5HICIvIgotIyAgIGRlZmluZSBVX0ZJTEVfQUxUX1NFUF9T
VFJJTkcgIi8iCi0jICAgZGVmaW5lIFVfUEFUSF9TRVBfU1RSSU5HICI6IgotI2VuZGlmCi0KLS8q
KgotICogQ29udmVydCBjaGFyIGNoYXJhY3RlcnMgdG8gVUNoYXIgY2hhcmFjdGVycy4KLSAqIFRo
aXMgdXRpbGl0eSBmdW5jdGlvbiBpcyB1c2VmdWwgb25seSBmb3IgImludmFyaWFudCBjaGFyYWN0
ZXJzIgotICogdGhhdCBhcmUgZW5jb2RlZCBpbiB0aGUgcGxhdGZvcm0gZGVmYXVsdCBlbmNvZGlu
Zy4KLSAqIFRoZXkgYXJlIGEgc21hbGwsIGNvbnN0YW50IHN1YnNldCBvZiB0aGUgZW5jb2Rpbmcg
YW5kIGluY2x1ZGUKLSAqIGp1c3QgdGhlIGxhdGluIGxldHRlcnMsIGRpZ2l0cywgYW5kIHNvbWUg
cHVuY3R1YXRpb24uCi0gKiBGb3IgZGV0YWlscywgc2VlIFVfQ0hBUlNFVF9GQU1JTFkuCi0gKgot
ICogQHBhcmFtIGNzIElucHV0IHN0cmluZywgcG9pbnRzIHRvIDxjb2RlPmxlbmd0aDwvY29kZT4K
LSAqICAgICAgICAgICBjaGFyYWN0ZXIgYnl0ZXMgZnJvbSBhIHN1YnNldCBvZiB0aGUgcGxhdGZv
cm0gZW5jb2RpbmcuCi0gKiBAcGFyYW0gdXMgT3V0cHV0IHN0cmluZywgcG9pbnRzIHRvIG1lbW9y
eSBmb3IgPGNvZGU+bGVuZ3RoPC9jb2RlPgotICogICAgICAgICAgIFVuaWNvZGUgY2hhcmFjdGVy
cy4KLSAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGNvbnZlcnQ7
IHRoaXMgbWF5Ci0gKiAgICAgICAgICAgICAgIGluY2x1ZGUgdGhlIHRlcm1pbmF0aW5nIDxjb2Rl
Pk5VTDwvY29kZT4uCi0gKgotICogQHNlZSBVX0NIQVJTRVRfRkFNSUxZCi0gKiBAc3RhYmxlIElD
VSAyLjAKLSAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKLXVfY2hhcnNUb1VDaGFycyhjb25z
dCBjaGFyICpjcywgVUNoYXIgKnVzLCBpbnQzMl90IGxlbmd0aCk7Ci0KLS8qKgotICogQ29udmVy
dCBVQ2hhciBjaGFyYWN0ZXJzIHRvIGNoYXIgY2hhcmFjdGVycy4KLSAqIFRoaXMgdXRpbGl0eSBm
dW5jdGlvbiBpcyB1c2VmdWwgb25seSBmb3IgImludmFyaWFudCBjaGFyYWN0ZXJzIgotICogdGhh
dCBjYW4gYmUgZW5jb2RlZCBpbiB0aGUgcGxhdGZvcm0gZGVmYXVsdCBlbmNvZGluZy4KLSAqIFRo
ZXkgYXJlIGEgc21hbGwsIGNvbnN0YW50IHN1YnNldCBvZiB0aGUgZW5jb2RpbmcgYW5kIGluY2x1
ZGUKLSAqIGp1c3QgdGhlIGxhdGluIGxldHRlcnMsIGRpZ2l0cywgYW5kIHNvbWUgcHVuY3R1YXRp
b24uCi0gKiBGb3IgZGV0YWlscywgc2VlIFVfQ0hBUlNFVF9GQU1JTFkuCi0gKgotICogQHBhcmFt
IHVzIElucHV0IHN0cmluZywgcG9pbnRzIHRvIDxjb2RlPmxlbmd0aDwvY29kZT4KLSAqICAgICAg
ICAgICBVbmljb2RlIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgZW5jb2RlZCB3aXRoIHRoZQotICog
ICAgICAgICAgIGNvZGVwYWdlLWludmFyaWFudCBzdWJzZXQgb2YgdGhlIHBsYXRmb3JtIGVuY29k
aW5nLgotICogQHBhcmFtIGNzIE91dHB1dCBzdHJpbmcsIHBvaW50cyB0byBtZW1vcnkgZm9yIDxj
b2RlPmxlbmd0aDwvY29kZT4KLSAqICAgICAgICAgICBjaGFyYWN0ZXIgYnl0ZXMuCi0gKiBAcGFy
YW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb252ZXJ0OyB0aGlzIG1heQot
ICogICAgICAgICAgICAgICBpbmNsdWRlIHRoZSB0ZXJtaW5hdGluZyA8Y29kZT5OVUw8L2NvZGU+
LgotICoKLSAqIEBzZWUgVV9DSEFSU0VUX0ZBTUlMWQotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8K
LVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCi11X1VDaGFyc1RvQ2hhcnMoY29uc3QgVUNoYXIgKnVz
LCBjaGFyICpjcywgaW50MzJfdCBsZW5ndGgpOwotCi0jZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRH
bHVlL2ljdS91bmljb2RlL3VjaGFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvaWN1
L3VuaWNvZGUvdWNoYXIuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9pY3Uv
dW5pY29kZS91Y2hhci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI3OTggKzAsMCBAQAotLyoKLSoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAwNCwgSW50ZXJuYXRpb25hbCBC
dXNpbmVzcyBNYWNoaW5lcwotKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRz
IFJlc2VydmVkLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgotKgotKiBGaWxlIFVDSEFSLkgKLSoKLSogTW9kaWZp
Y2F0aW9uIEhpc3Rvcnk6Ci0qCi0qICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRp
b24KLSogICAwNC8wMi85NyAgICBhbGl1ICAgICAgICBDcmVhdGlvbi4KLSogICAwMy8yOS85OSAg
ICBoZWxlbmEgICAgICBVcGRhdGVkIGZvciBDIEFQSXMuCi0qICAgNC8xNS85OSAgICAgTWFkaHUg
ICAgICAgVXBkYXRlZCBmb3IgQyBJbXBsZW1lbnRhdGlvbiBhbmQgSmF2YWRvYwotKiAgIDUvMjAv
OTkgICAgIE1hZGh1ICAgICAgIEFkZGVkIHRoZSBmdW5jdGlvbiB1X2dldFZlcnNpb24oKQotKiAg
IDgvMTkvMTk5OSAgIHNybCAgICAgICAgIFVwZ3JhZGVkIHNjcmlwdHMgdG8gVW5pY29kZSAzLjAK
LSogICA4LzI3LzE5OTkgICBzY2hlcmVybSAgICBVQ2hhckRpcmVjdGlvbiBjb25zdGFudHM6IFVf
Li4uCi0qICAgMTEvMTEvMTk5OSAgd2VpdiAgICAgICAgYWRkZWQgdV9pc2FsbnVtKCksIGNsZWFu
ZWQgY29tbWVudHMKLSogICAwMS8xMS8yMDAwICBoZWxlbmEgICAgICBSZW5hbWVkIHVfZ2V0VmVy
c2lvbiB0byB1X2dldFVuaWNvZGVWZXJzaW9uKCkuCi0qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSov
Ci0KLSNpZm5kZWYgVUNIQVJfSAotI2RlZmluZSBVQ0hBUl9ICi0KLSNpbmNsdWRlICJ1bmljb2Rl
L3V0eXBlcy5oIgotCi1VX0NERUNMX0JFR0lOCi0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotLyog
VW5pY29kZSB2ZXJzaW9uIG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICovCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLS8qKgotICogVW5pY29k
ZSB2ZXJzaW9uIG51bWJlciwgZGVmYXVsdCBmb3IgdGhlIGN1cnJlbnQgSUNVIHZlcnNpb24uCi0g
KiBUaGUgYWN0dWFsIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIGRhdGEgaXMgc3Rv
cmVkIGluIHVwcm9wcy5kYXQKLSAqIGFuZCBtYXkgYmUgZ2VuZXJhdGVkIGZyb20gVUNEIGZpbGVz
IGZyb20gYSBkaWZmZXJlbnQgVW5pY29kZSB2ZXJzaW9uLgotICogQ2FsbCB1X2dldFVuaWNvZGVW
ZXJzaW9uIHRvIGdldCB0aGUgYWN0dWFsIFVuaWNvZGUgdmVyc2lvbiBvZiB0aGUgZGF0YS4KLSAq
Ci0gKiBAc2VlIHVfZ2V0VW5pY29kZVZlcnNpb24KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi0j
ZGVmaW5lIFVfVU5JQ09ERV9WRVJTSU9OICI0LjAuMSIKLQotLyoqCi0gKiBcZmlsZQotICogXGJy
aWVmIEMgQVBJOiBVbmljb2RlIFByb3BlcnRpZXMKLSAqCi0gKiBUaGlzIEMgQVBJIHByb3ZpZGVz
IGxvdy1sZXZlbCBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlLgotICog
SW4gYWRkaXRpb24gdG8gcmF3IHByb3BlcnR5IHZhbHVlcywgc29tZSBjb252ZW5pZW5jZSBmdW5j
dGlvbnMgY2FsY3VsYXRlCi0gKiBkZXJpdmVkIHByb3BlcnRpZXMsIGZvciBleGFtcGxlIGZvciBK
YXZhLXN0eWxlIHByb2dyYW1taW5nLgotICoKLSAqIFVuaWNvZGUgYXNzaWducyBlYWNoIGNvZGUg
cG9pbnQgKG5vdCBqdXN0IGFzc2lnbmVkIGNoYXJhY3RlcikgdmFsdWVzIGZvcgotICogbWFueSBw
cm9wZXJ0aWVzLgotICogTW9zdCBvZiB0aGVtIGFyZSBzaW1wbGUgYm9vbGVhbiBmbGFncywgb3Ig
Y29uc3RhbnRzIGZyb20gYSBzbWFsbCBlbnVtZXJhdGVkIGxpc3QuCi0gKiBGb3Igc29tZSBwcm9w
ZXJ0aWVzLCB2YWx1ZXMgYXJlIHN0cmluZ3Mgb3Igb3RoZXIgcmVsYXRpdmVseSBtb3JlIGNvbXBs
ZXggdHlwZXMuCi0gKgotICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlCi0gKiAiQWJvdXQgdGhl
IFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIiAoaHR0cDovL3d3dy51bmljb2RlLm9yZy91Y2Qv
KQotICogYW5kIHRoZSBJQ1UgVXNlciBHdWlkZSBjaGFwdGVyIG9uIFByb3BlcnRpZXMgKGh0dHA6
Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL3Byb3BlcnRpZXMuaHRtbCkuCi0g
KgotICogTWFueSBmdW5jdGlvbnMgYXJlIGRlc2lnbmVkIHRvIG1hdGNoIGphdmEubGFuZy5DaGFy
YWN0ZXIgZnVuY3Rpb25zLgotICogU2VlIHRoZSBpbmRpdmlkdWFsIGZ1bmN0aW9uIGRvY3VtZW50
YXRpb24sCi0gKiBhbmQgc2VlIHRoZSBKREsgMS40LjEgamF2YS5sYW5nLkNoYXJhY3RlciBkb2N1
bWVudGF0aW9uCi0gKiBhdCBodHRwOi8vamF2YS5zdW4uY29tL2oyc2UvMS40LjEvZG9jcy9hcGkv
amF2YS9sYW5nL0NoYXJhY3Rlci5odG1sCi0gKgotICogVGhlcmUgYXJlIGFsc28gZnVuY3Rpb25z
IHRoYXQgcHJvdmlkZSBlYXN5IG1pZ3JhdGlvbiBmcm9tIEMvUE9TSVggZnVuY3Rpb25zCi0gKiBs
aWtlIGlzYmxhbmsoKS4gVGhlaXIgdXNlIGlzIGdlbmVyYWxseSBkaXNjb3VyYWdlZCBiZWNhdXNl
IHRoZSBDL1BPU0lYCi0gKiBzdGFuZGFyZHMgZG8gbm90IGRlZmluZSB0aGVpciBzZW1hbnRpY3Mg
YmV5b25kIHRoZSBBU0NJSSByYW5nZSwgd2hpY2ggbWVhbnMKLSAqIHRoYXQgZGlmZmVyZW50IGlt
cGxlbWVudGF0aW9ucyBleGhpYml0IHZlcnkgZGlmZmVyZW50IGJlaGF2aW9yLgotICogSW5zdGVh
ZCwgVW5pY29kZSBwcm9wZXJ0aWVzIHNob3VsZCBiZSB1c2VkIGRpcmVjdGx5LgotICoKLSAqIFRo
ZXJlIGFyZSBhbHNvIG9ubHkgYSBmZXcsIGJyb2FkIEMvUE9TSVggY2hhcmFjdGVyIGNsYXNzZXMs
IGFuZCB0aGV5IHRlbmQKLSAqIHRvIGJlIHVzZWQgZm9yIGNvbmZsaWN0aW5nIHB1cnBvc2VzLiBG
b3IgZXhhbXBsZSwgdGhlICJpc2FscGhhKCkiIGNsYXNzCi0gKiBpcyBzb21ldGltZXMgdXNlZCB0
byBkZXRlcm1pbmUgd29yZCBib3VuZGFyaWVzLCB3aGlsZSBhIG1vcmUgc29waGlzdGljYXRlZAot
ICogYXBwcm9hY2ggd291bGQgYXQgbGVhc3QgZGlzdGluZ3Vpc2ggaW5pdGlhbCBsZXR0ZXJzIGZy
b20gY29udGludWF0aW9uCi0gKiBjaGFyYWN0ZXJzICh0aGUgbGF0dGVyIGluY2x1ZGluZyBjb21i
aW5pbmcgbWFya3MpLgotICogKEluIElDVSwgQnJlYWtJdGVyYXRvciBpcyB0aGUgbW9zdCBzb3Bo
aXN0aWNhdGVkIEFQSSBmb3Igd29yZCBib3VuZGFyaWVzLikKLSAqIEFub3RoZXIgZXhhbXBsZTog
VGhlcmUgaXMgbm8gImlzdGl0bGUoKSIgY2xhc3MgZm9yIHRpdGxlY2FzZSBjaGFyYWN0ZXJzLgot
ICoKLSAqIEEgc3VtbWFyeSBvZiB0aGUgYmVoYXZpb3Igb2Ygc29tZSBDL1BPU0lYIGNoYXJhY3Rl
ciBjbGFzc2lmaWNhdGlvbiBpbXBsZW1lbnRhdGlvbnMKLSAqIGZvciBVbmljb2RlIGlzIGF2YWls
YWJsZSBhdCBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vY3ZzL2ljdS9+Y2hlY2tvdXR+L2lj
dWh0bWwvZGVzaWduL3Bvc2l4X2NsYXNzZXMuaHRtbAotICoKLSAqIDxzdHJvbmc+SW1wb3J0YW50
PC9zdHJvbmc+OgotICogVGhlIGJlaGF2aW9yIG9mIHRoZSBJQ1UgQy9QT1NJWC1zdHlsZSBjaGFy
YWN0ZXIgY2xhc3NpZmljYXRpb24KLSAqIGZ1bmN0aW9ucyBpcyBzdWJqZWN0IHRvIGNoYW5nZSBh
Y2NvcmRpbmcgdG8gZGlzY3Vzc2lvbiBvZiB0aGUgYWJvdmUgc3VtbWFyeS4KLSAqCi0gKiBOb3Rl
OiBUaGVyZSBhcmUgc2V2ZXJhbCBJQ1Ugd2hpdGVzcGFjZSBmdW5jdGlvbnMuCi0gKiBDb21wYXJp
c29uOgotICogLSB1X2lzVVdoaXRlU3BhY2U9VUNIQVJfV0hJVEVfU1BBQ0U6IFVuaWNvZGUgV2hp
dGVfU3BhY2UgcHJvcGVydHk7Ci0gKiAgICAgICBtb3N0IG9mIGdlbmVyYWwgY2F0ZWdvcmllcyAi
WiIgKHNlcGFyYXRvcnMpICsgbW9zdCB3aGl0ZXNwYWNlIElTTyBjb250cm9scwotICogICAgICAg
KGluY2x1ZGluZyBuby1icmVhayBzcGFjZXMsIGJ1dCBleGNsdWRpbmcgSVMxLi5JUzQgYW5kIFpX
U1ApCi0gKiAtIHVfaXNXaGl0ZXNwYWNlOiBKYXZhIGlzV2hpdGVzcGFjZTsgWiArIHdoaXRlc3Bh
Y2UgSVNPIGNvbnRyb2xzIGJ1dCBleGNsdWRpbmcgbm8tYnJlYWsgc3BhY2VzCi0gKiAtIHVfaXNK
YXZhU3BhY2VDaGFyOiBKYXZhIGlzU3BhY2VDaGFyOyBqdXN0IFogKGluY2x1ZGluZyBuby1icmVh
ayBzcGFjZXMpCi0gKiAtIHVfaXNzcGFjZTogWiArIHdoaXRlc3BhY2UgSVNPIGNvbnRyb2xzIChp
bmNsdWRpbmcgbm8tYnJlYWsgc3BhY2VzKQotICogLSB1X2lzYmxhbms6ICJob3Jpem9udGFsIHNw
YWNlcyIgPSBUQUIgKyBacyAtIFpXU1AKLSAqLwotCi0vKioKLSAqIENvbnN0YW50cy4KLSAqLwot
Ci0vKiogVGhlIGxvd2VzdCBVbmljb2RlIGNvZGUgcG9pbnQgdmFsdWUuIENvZGUgcG9pbnRzIGFy
ZSBub24tbmVnYXRpdmUuIEBzdGFibGUgSUNVIDIuMCAqLwotI2RlZmluZSBVQ0hBUl9NSU5fVkFM
VUUgMAotCi0vKioKLSAqIFRoZSBoaWdoZXN0IFVuaWNvZGUgY29kZSBwb2ludCB2YWx1ZSAoc2Nh
bGFyIHZhbHVlKSBhY2NvcmRpbmcgdG8KLSAqIFRoZSBVbmljb2RlIFN0YW5kYXJkLiBUaGlzIGlz
IGEgMjEtYml0IHZhbHVlICgyMC4xIGJpdHMsIHJvdW5kZWQgdXApLgotICogRm9yIGEgc2luZ2xl
IGNoYXJhY3RlciwgVUNoYXIzMiBpcyBhIHNpbXBsZSB0eXBlIHRoYXQgY2FuIGhvbGQgYW55IGNv
ZGUgcG9pbnQgdmFsdWUuCi0gKgotICogQHNlZSBVQ2hhcjMyCi0gKiBAc3RhYmxlIElDVSAyLjAK
LSAqLwotI2RlZmluZSBVQ0hBUl9NQVhfVkFMVUUgMHgxMGZmZmYKLQotLyoqCi0gKiBHZXQgYSBz
aW5nbGUtYml0IGJpdCBzZXQgKGEgZmxhZykgZnJvbSBhIGJpdCBudW1iZXIgMC4uMzEuCi0gKiBA
c3RhYmxlIElDVSAyLjEKLSAqLwotI2RlZmluZSBVX01BU0soeCkgKCh1aW50MzJfdCkxPDwoeCkp
Ci0KLS8qCi0gKiAhISBOb3RlOiBTZXZlcmFsIGNvbW1lbnRzIGluIHRoaXMgZmlsZSBhcmUgbWFj
aGluZS1yZWFkIGJ5IHRoZQotICogZ2VucG5hbWUgdG9vbC4gIFRoZXNlIGNvbW1lbnRzIGRlc2Ny
aWJlIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuCi0gKiBpY3UgZW51bSBjb25zdGFudHMgYW5k
IFVDRCBlbnRpdGllcy4gIERvIG5vdCBkZWxldGUgdGhlbS4gIFVwZGF0ZQotICogdGhlc2UgY29t
bWVudHMgYXMgbmVlZGVkLgotICoKLSAqIEFueSBjb21tZW50IG9mIHRoZSBmb3JtICIvICpbbmFt
ZV0qIC8iIChzcGFjZXMgYWRkZWQpIGlzIHN1Y2gKLSAqIGEgY29tbWVudC4KLSAqCi0gKiBUaGUg
VV9KR18qIGFuZCBVX0dDXypfTUFTSyBjb25zdGFudHMgYXJlIG1hdGNoZWQgYnkgdGhlaXIgc3lt
Ym9saWMKLSAqIG5hbWUsIHdoaWNoIG11c3QgbWF0Y2ggUHJvcGVydHlWYWx1ZUFsaWFzZXMudHh0
LgotICovCi0KLS8qKgotICogU2VsZWN0aW9uIGNvbnN0YW50cyBmb3IgVW5pY29kZSBwcm9wZXJ0
aWVzLgotICogVGhlc2UgY29uc3RhbnRzIGFyZSB1c2VkIGluIGZ1bmN0aW9ucyBsaWtlIHVfaGFz
QmluYXJ5UHJvcGVydHkgdG8gc2VsZWN0Ci0gKiBvbmUgb2YgdGhlIFVuaWNvZGUgcHJvcGVydGll
cy4KLSAqCi0gKiBUaGUgcHJvcGVydGllcyBBUElzIGFyZSBpbnRlbmRlZCB0byByZWZsZWN0IFVu
aWNvZGUgcHJvcGVydGllcyBhcyBkZWZpbmVkCi0gKiBpbiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIg
RGF0YWJhc2UgKFVDRCkgYW5kIFVuaWNvZGUgVGVjaG5pY2FsIFJlcG9ydHMgKFVUUikuCi0gKiBG
b3IgZGV0YWlscyBhYm91dCB0aGUgcHJvcGVydGllcyBzZWUgaHR0cDovL3d3dy51bmljb2RlLm9y
Zy91Y2QvIC4KLSAqIEZvciBuYW1lcyBvZiBVbmljb2RlIHByb3BlcnRpZXMgc2VlIHRoZSBVQ0Qg
ZmlsZSBQcm9wZXJ0eUFsaWFzZXMudHh0LgotICoKLSAqIEltcG9ydGFudDogSWYgSUNVIGlzIGJ1
aWx0IHdpdGggVUNEIGZpbGVzIGZyb20gVW5pY29kZSB2ZXJzaW9ucyBiZWxvdywgZS5nLiwgMy4y
LAotICogdGhlbiBwcm9wZXJ0aWVzIG1hcmtlZCB3aXRoICJuZXcgaW4gVW5pY29kZSAzLjIiIGFy
ZSBub3Qgb3Igbm90IGZ1bGx5IGF2YWlsYWJsZS4KLSAqIENoZWNrIHVfZ2V0VW5pY29kZVZlcnNp
b24gdG8gYmUgc3VyZS4KLSAqCi0gKiBAc2VlIHVfaGFzQmluYXJ5UHJvcGVydHkKLSAqIEBzZWUg
dV9nZXRJbnRQcm9wZXJ0eVZhbHVlCi0gKiBAc2VlIHVfZ2V0VW5pY29kZVZlcnNpb24KLSAqIEBz
dGFibGUgSUNVIDIuMQotICovCi10eXBlZGVmIGVudW0gVVByb3BlcnR5IHsKLSAgICAvKiAgU2Vl
IG5vdGUgISEuICBDb21tZW50cyBvZiB0aGUgZm9ybSAiQmluYXJ5IHByb3BlcnR5IERhc2giLAot
ICAgICAgICAiRW51bWVyYXRlZCBwcm9wZXJ0eSBTY3JpcHQiLCAiRG91YmxlIHByb3BlcnR5IE51
bWVyaWNfVmFsdWUiLAotICAgICAgICBhbmQgIlN0cmluZyBwcm9wZXJ0eSBBZ2UiIGFyZSByZWFk
IGJ5IGdlbnBuYW1lLiAqLwotCi0gICAgLyogIE5vdGU6IFBsYWNlIFVDSEFSX0FMUEhBQkVUSUMg
YmVmb3JlIFVDSEFSX0JJTkFSWV9TVEFSVCBzbyB0aGF0Ci0gICAgZGVidWdnZXJzIGRpc3BsYXkg
VUNIQVJfQUxQSEFCRVRJQyBhcyB0aGUgc3ltYm9saWMgbmFtZSBmb3IgMCwKLSAgICByYXRoZXIg
dGhhbiBVQ0hBUl9CSU5BUllfU1RBUlQuICBMaWtld2lzZSBmb3Igb3RoZXIgKl9TVEFSVAotICAg
IGlkZW50aWZpZXJzLiAqLwotCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBBbHBoYWJldGljLiBT
YW1lIGFzIHVfaXNVQWxwaGFiZXRpYywgZGlmZmVyZW50IGZyb20gdV9pc2FscGhhLgotICAgICAg
ICBMdStMbCtMdCtMbStMbytObCtPdGhlcl9BbHBoYWJldGljIEBzdGFibGUgSUNVIDIuMSAqLwot
ICAgIFVDSEFSX0FMUEhBQkVUSUM9MCwKLSAgICAvKiogRmlyc3QgY29uc3RhbnQgZm9yIGJpbmFy
eSBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX0JJTkFS
WV9TVEFSVD1VQ0hBUl9BTFBIQUJFVElDLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgQVNDSUlf
SGV4X0RpZ2l0LiAwLTkgQS1GIGEtZiBAc3RhYmxlIElDVSAyLjEgKi8KLSAgICBVQ0hBUl9BU0NJ
SV9IRVhfRElHSVQsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBCaWRpX0NvbnRyb2wuCi0gICAg
ICAgIEZvcm1hdCBjb250cm9scyB3aGljaCBoYXZlIHNwZWNpZmljIGZ1bmN0aW9ucwotICAgICAg
ICBpbiB0aGUgQmlkaSBBbGdvcml0aG0uIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX0JJ
RElfQ09OVFJPTCwKLSAgICAvKiogQmluYXJ5IHByb3BlcnR5IEJpZGlfTWlycm9yZWQuCi0gICAg
ICAgIENoYXJhY3RlcnMgdGhhdCBtYXkgY2hhbmdlIGRpc3BsYXkgaW4gUlRMIHRleHQuCi0gICAg
ICAgIFNhbWUgYXMgdV9pc01pcnJvcmVkLgotICAgICAgICBTZWUgQmlkaSBBbGdvcml0aG0sIFVU
UiA5LiBAc3RhYmxlIElDVSAyLjEgKi8KLSAgICBVQ0hBUl9CSURJX01JUlJPUkVELAotICAgIC8q
KiBCaW5hcnkgcHJvcGVydHkgRGFzaC4gVmFyaWF0aW9ucyBvZiBkYXNoZXMuIEBzdGFibGUgSUNV
IDIuMSAqLwotICAgIFVDSEFSX0RBU0gsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBEZWZhdWx0
X0lnbm9yYWJsZV9Db2RlX1BvaW50IChuZXcgaW4gVW5pY29kZSAzLjIpLgotICAgICAgICBJZ25v
cmFibGUgaW4gbW9zdCBwcm9jZXNzaW5nLgotICAgICAgICA8MjA2MC4uMjA2RiwgRkZGMC4uRkZG
QiwgRTAwMDAuLkUwRkZGPitPdGhlcl9EZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50KyhDZitD
YytDcy1XaGl0ZV9TcGFjZSkgQHN0YWJsZSBJQ1UgMi4xICovCi0gICAgVUNIQVJfREVGQVVMVF9J
R05PUkFCTEVfQ09ERV9QT0lOVCwKLSAgICAvKiogQmluYXJ5IHByb3BlcnR5IERlcHJlY2F0ZWQg
KG5ldyBpbiBVbmljb2RlIDMuMikuCi0gICAgICAgIFRoZSB1c2FnZSBvZiBkZXByZWNhdGVkIGNo
YXJhY3RlcnMgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQuIEBzdGFibGUgSUNVIDIuMSAqLwotICAg
IFVDSEFSX0RFUFJFQ0FURUQsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBEaWFjcml0aWMuIENo
YXJhY3RlcnMgdGhhdCBsaW5ndWlzdGljYWxseSBtb2RpZnkKLSAgICAgICAgdGhlIG1lYW5pbmcg
b2YgYW5vdGhlciBjaGFyYWN0ZXIgdG8gd2hpY2ggdGhleSBhcHBseS4gQHN0YWJsZSBJQ1UgMi4x
ICovCi0gICAgVUNIQVJfRElBQ1JJVElDLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgRXh0ZW5k
ZXIuCi0gICAgICAgIEV4dGVuZCB0aGUgdmFsdWUgb3Igc2hhcGUgb2YgYSBwcmVjZWRpbmcgYWxw
aGFiZXRpYyBjaGFyYWN0ZXIsCi0gICAgICAgIGUuZy4sIGxlbmd0aCBhbmQgaXRlcmF0aW9uIG1h
cmtzLiBAc3RhYmxlIElDVSAyLjEgKi8KLSAgICBVQ0hBUl9FWFRFTkRFUiwKLSAgICAvKiogQmlu
YXJ5IHByb3BlcnR5IEZ1bGxfQ29tcG9zaXRpb25fRXhjbHVzaW9uLgotICAgICAgICBDb21wb3Np
dGlvbkV4Y2x1c2lvbnMudHh0K1NpbmdsZXRvbiBEZWNvbXBvc2l0aW9ucysKLSAgICAgICAgTm9u
LVN0YXJ0ZXIgRGVjb21wb3NpdGlvbnMuIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX0ZV
TExfQ09NUE9TSVRJT05fRVhDTFVTSU9OLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgR3JhcGhl
bWVfQmFzZSAobmV3IGluIFVuaWNvZGUgMy4yKS4KLSAgICAgICAgRm9yIHByb2dyYW1tYXRpYyBk
ZXRlcm1pbmF0aW9uIG9mIGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcy4KLSAgICAgICAgWzAu
LjEwRkZGRl0tQ2MtQ2YtQ3MtQ28tQ24tWmwtWnAtR3JhcGhlbWVfTGluay1HcmFwaGVtZV9FeHRl
bmQtQ0dKIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX0dSQVBIRU1FX0JBU0UsCi0gICAg
LyoqIEJpbmFyeSBwcm9wZXJ0eSBHcmFwaGVtZV9FeHRlbmQgKG5ldyBpbiBVbmljb2RlIDMuMiku
Ci0gICAgICAgIEZvciBwcm9ncmFtbWF0aWMgZGV0ZXJtaW5hdGlvbiBvZiBncmFwaGVtZSBjbHVz
dGVyIGJvdW5kYXJpZXMuCi0gICAgICAgIE1lK01uK01jK090aGVyX0dyYXBoZW1lX0V4dGVuZC1H
cmFwaGVtZV9MaW5rLUNHSiBAc3RhYmxlIElDVSAyLjEgKi8KLSAgICBVQ0hBUl9HUkFQSEVNRV9F
WFRFTkQsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBHcmFwaGVtZV9MaW5rIChuZXcgaW4gVW5p
Y29kZSAzLjIpLgotICAgICAgICBGb3IgcHJvZ3JhbW1hdGljIGRldGVybWluYXRpb24gb2YgZ3Jh
cGhlbWUgY2x1c3RlciBib3VuZGFyaWVzLiBAc3RhYmxlIElDVSAyLjEgKi8KLSAgICBVQ0hBUl9H
UkFQSEVNRV9MSU5LLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgSGV4X0RpZ2l0LgotICAgICAg
ICBDaGFyYWN0ZXJzIGNvbW1vbmx5IHVzZWQgZm9yIGhleGFkZWNpbWFsIG51bWJlcnMuIEBzdGFi
bGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX0hFWF9ESUdJVCwKLSAgICAvKiogQmluYXJ5IHByb3Bl
cnR5IEh5cGhlbi4gRGFzaGVzIHVzZWQgdG8gbWFyayBjb25uZWN0aW9ucwotICAgICAgICBiZXR3
ZWVuIHBpZWNlcyBvZiB3b3JkcywgcGx1cyB0aGUgS2F0YWthbmEgbWlkZGxlIGRvdC4gQHN0YWJs
ZSBJQ1UgMi4xICovCi0gICAgVUNIQVJfSFlQSEVOLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkg
SURfQ29udGludWUuCi0gICAgICAgIENoYXJhY3RlcnMgdGhhdCBjYW4gY29udGludWUgYW4gaWRl
bnRpZmllci4KLSAgICAgICAgRGVyaXZlZENvcmVQcm9wZXJ0aWVzLnR4dCBhbHNvIHNheXMgIk5P
VEU6IENmIGNoYXJhY3RlcnMgc2hvdWxkIGJlIGZpbHRlcmVkIG91dC4iCi0gICAgICAgIElEX1N0
YXJ0K01uK01jK05kK1BjIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX0lEX0NPTlRJTlVF
LAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgSURfU3RhcnQuCi0gICAgICAgIENoYXJhY3RlcnMg
dGhhdCBjYW4gc3RhcnQgYW4gaWRlbnRpZmllci4KLSAgICAgICAgTHUrTGwrTHQrTG0rTG8rTmwg
QHN0YWJsZSBJQ1UgMi4xICovCi0gICAgVUNIQVJfSURfU1RBUlQsCi0gICAgLyoqIEJpbmFyeSBw
cm9wZXJ0eSBJZGVvZ3JhcGhpYy4KLSAgICAgICAgQ0pLViBpZGVvZ3JhcGhzLiBAc3RhYmxlIElD
VSAyLjEgKi8KLSAgICBVQ0hBUl9JREVPR1JBUEhJQywKLSAgICAvKiogQmluYXJ5IHByb3BlcnR5
IElEU19CaW5hcnlfT3BlcmF0b3IgKG5ldyBpbiBVbmljb2RlIDMuMikuCi0gICAgICAgIEZvciBw
cm9ncmFtbWF0aWMgZGV0ZXJtaW5hdGlvbiBvZgotICAgICAgICBJZGVvZ3JhcGhpYyBEZXNjcmlw
dGlvbiBTZXF1ZW5jZXMuIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX0lEU19CSU5BUllf
T1BFUkFUT1IsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBJRFNfVHJpbmFyeV9PcGVyYXRvciAo
bmV3IGluIFVuaWNvZGUgMy4yKS4KLSAgICAgICAgRm9yIHByb2dyYW1tYXRpYyBkZXRlcm1pbmF0
aW9uIG9mCi0gICAgICAgIElkZW9ncmFwaGljIERlc2NyaXB0aW9uIFNlcXVlbmNlcy4gQHN0YWJs
ZSBJQ1UgMi4xICovCi0gICAgVUNIQVJfSURTX1RSSU5BUllfT1BFUkFUT1IsCi0gICAgLyoqIEJp
bmFyeSBwcm9wZXJ0eSBKb2luX0NvbnRyb2wuCi0gICAgICAgIEZvcm1hdCBjb250cm9scyBmb3Ig
Y3Vyc2l2ZSBqb2luaW5nIGFuZCBsaWdhdGlvbi4gQHN0YWJsZSBJQ1UgMi4xICovCi0gICAgVUNI
QVJfSk9JTl9DT05UUk9MLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgTG9naWNhbF9PcmRlcl9F
eGNlcHRpb24gKG5ldyBpbiBVbmljb2RlIDMuMikuCi0gICAgICAgIENoYXJhY3RlcnMgdGhhdCBk
byBub3QgdXNlIGxvZ2ljYWwgb3JkZXIgYW5kCi0gICAgICAgIHJlcXVpcmUgc3BlY2lhbCBoYW5k
bGluZyBpbiBtb3N0IHByb2Nlc3NpbmcuIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX0xP
R0lDQUxfT1JERVJfRVhDRVBUSU9OLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgTG93ZXJjYXNl
LiBTYW1lIGFzIHVfaXNVTG93ZXJjYXNlLCBkaWZmZXJlbnQgZnJvbSB1X2lzbG93ZXIuCi0gICAg
ICAgIExsK090aGVyX0xvd2VyY2FzZSBAc3RhYmxlIElDVSAyLjEgKi8KLSAgICBVQ0hBUl9MT1dF
UkNBU0UsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBNYXRoLiBTbStPdGhlcl9NYXRoIEBzdGFi
bGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX01BVEgsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBO
b25jaGFyYWN0ZXJfQ29kZV9Qb2ludC4KLSAgICAgICAgQ29kZSBwb2ludHMgdGhhdCBhcmUgZXhw
bGljaXRseSBkZWZpbmVkIGFzIGlsbGVnYWwKLSAgICAgICAgZm9yIHRoZSBlbmNvZGluZyBvZiBj
aGFyYWN0ZXJzLiBAc3RhYmxlIElDVSAyLjEgKi8KLSAgICBVQ0hBUl9OT05DSEFSQUNURVJfQ09E
RV9QT0lOVCwKLSAgICAvKiogQmluYXJ5IHByb3BlcnR5IFF1b3RhdGlvbl9NYXJrLiBAc3RhYmxl
IElDVSAyLjEgKi8KLSAgICBVQ0hBUl9RVU9UQVRJT05fTUFSSywKLSAgICAvKiogQmluYXJ5IHBy
b3BlcnR5IFJhZGljYWwgKG5ldyBpbiBVbmljb2RlIDMuMikuCi0gICAgICAgIEZvciBwcm9ncmFt
bWF0aWMgZGV0ZXJtaW5hdGlvbiBvZgotICAgICAgICBJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBT
ZXF1ZW5jZXMuIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX1JBRElDQUwsCi0gICAgLyoq
IEJpbmFyeSBwcm9wZXJ0eSBTb2Z0X0RvdHRlZCAobmV3IGluIFVuaWNvZGUgMy4yKS4KLSAgICAg
ICAgQ2hhcmFjdGVycyB3aXRoIGEgInNvZnQgZG90IiwgbGlrZSBpIG9yIGouCi0gICAgICAgIEFu
IGFjY2VudCBwbGFjZWQgb24gdGhlc2UgY2hhcmFjdGVycyBjYXVzZXMKLSAgICAgICAgdGhlIGRv
dCB0byBkaXNhcHBlYXIuIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX1NPRlRfRE9UVEVE
LAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgVGVybWluYWxfUHVuY3R1YXRpb24uCi0gICAgICAg
IFB1bmN0dWF0aW9uIGNoYXJhY3RlcnMgdGhhdCBnZW5lcmFsbHkgbWFyawotICAgICAgICB0aGUg
ZW5kIG9mIHRleHR1YWwgdW5pdHMuIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX1RFUk1J
TkFMX1BVTkNUVUFUSU9OLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgVW5pZmllZF9JZGVvZ3Jh
cGggKG5ldyBpbiBVbmljb2RlIDMuMikuCi0gICAgICAgIEZvciBwcm9ncmFtbWF0aWMgZGV0ZXJt
aW5hdGlvbiBvZgotICAgICAgICBJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBTZXF1ZW5jZXMuIEBz
dGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX1VOSUZJRURfSURFT0dSQVBILAotICAgIC8qKiBC
aW5hcnkgcHJvcGVydHkgVXBwZXJjYXNlLiBTYW1lIGFzIHVfaXNVVXBwZXJjYXNlLCBkaWZmZXJl
bnQgZnJvbSB1X2lzdXBwZXIuCi0gICAgICAgIEx1K090aGVyX1VwcGVyY2FzZSBAc3RhYmxlIElD
VSAyLjEgKi8KLSAgICBVQ0hBUl9VUFBFUkNBU0UsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBX
aGl0ZV9TcGFjZS4KLSAgICAgICAgU2FtZSBhcyB1X2lzVVdoaXRlU3BhY2UsIGRpZmZlcmVudCBm
cm9tIHVfaXNzcGFjZSBhbmQgdV9pc1doaXRlc3BhY2UuCi0gICAgICAgIFNwYWNlIGNoYXJhY3Rl
cnMrVEFCK0NSK0xGLVpXU1AtWldOQlNQIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX1dI
SVRFX1NQQUNFLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgWElEX0NvbnRpbnVlLgotICAgICAg
ICBJRF9Db250aW51ZSBtb2RpZmllZCB0byBhbGxvdyBjbG9zdXJlIHVuZGVyCi0gICAgICAgIG5v
cm1hbGl6YXRpb24gZm9ybXMgTkZLQyBhbmQgTkZLRC4gQHN0YWJsZSBJQ1UgMi4xICovCi0gICAg
VUNIQVJfWElEX0NPTlRJTlVFLAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgWElEX1N0YXJ0LiBJ
RF9TdGFydCBtb2RpZmllZCB0byBhbGxvdwotICAgICAgICBjbG9zdXJlIHVuZGVyIG5vcm1hbGl6
YXRpb24gZm9ybXMgTkZLQyBhbmQgTkZLRC4gQHN0YWJsZSBJQ1UgMi4xICovCi0gICAgVUNIQVJf
WElEX1NUQVJULAotICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgQ2FzZV9TZW5zaXRpdmUuIEVpdGhl
ciB0aGUgc291cmNlIG9mIGEgY2FzZQotICAgICAgICBtYXBwaW5nIG9yIF9pbl8gdGhlIHRhcmdl
dCBvZiBhIGNhc2UgbWFwcGluZy4gTm90IHRoZSBzYW1lIGFzCi0gICAgICAgIHRoZSBnZW5lcmFs
IGNhdGVnb3J5IENhc2VkX0xldHRlci4gQHN0YWJsZSBJQ1UgMi42ICovCi0gICAgVUNIQVJfQ0FT
RV9TRU5TSVRJVkUsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBTVGVybSAobmV3IGluIFVuaWNv
ZGUgNC4wLjEpLgotICAgICAgICBTZW50ZW5jZSBUZXJtaW5hbC4gVXNlZCBpbiBVQVggIzI5OiBU
ZXh0IEJvdW5kYXJpZXMKLSAgICAgICAgKGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90
cjI5LykKLSAgICAgICAgQGRyYWZ0IElDVSAzLjAgKi8KLSAgICBVQ0hBUl9TX1RFUk0sCi0gICAg
LyoqIEJpbmFyeSBwcm9wZXJ0eSBWYXJpYXRpb25fU2VsZWN0b3IgKG5ldyBpbiBVbmljb2RlIDQu
MC4xKS4KLSAgICAgICAgSW5kaWNhdGVzIGFsbCB0aG9zZSBjaGFyYWN0ZXJzIHRoYXQgcXVhbGlm
eSBhcyBWYXJpYXRpb24gU2VsZWN0b3JzLgotICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUgYmVo
YXZpb3Igb2YgdGhlc2UgY2hhcmFjdGVycywKLSAgICAgICAgc2VlIFN0YW5kYXJkaXplZFZhcmlh
bnRzLmh0bWwgYW5kIDE1LjYgVmFyaWF0aW9uIFNlbGVjdG9ycy4KLSAgICAgICAgQGRyYWZ0IElD
VSAzLjAgKi8KLSAgICBVQ0hBUl9WQVJJQVRJT05fU0VMRUNUT1IsCi0gICAgLyoqIEJpbmFyeSBw
cm9wZXJ0eSBORkRfSW5lcnQuCi0gICAgICAgIElDVS1zcGVjaWZpYyBwcm9wZXJ0eSBmb3IgY2hh
cmFjdGVycyB0aGF0IGFyZSBpbmVydCB1bmRlciBORkQsCi0gICAgICAgIGkuZS4sIHRoZXkgZG8g
bm90IGludGVyYWN0IHdpdGggYWRqYWNlbnQgY2hhcmFjdGVycy4KLSAgICAgICAgVXNlZCBmb3Ig
ZXhhbXBsZSBpbiBub3JtYWxpemluZyB0cmFuc2Zvcm1zIGluIGluY3JlbWVudGFsIG1vZGUKLSAg
ICAgICAgdG8gZmluZCB0aGUgYm91bmRhcnkgb2Ygc2FmZWx5IG5vcm1hbGl6YWJsZSB0ZXh0IGRl
c3BpdGUgcG9zc2libGUKLSAgICAgICAgdGV4dCBhZGRpdGlvbnMuCi0KLSAgICAgICAgVGhlcmUg
aXMgb25lIHN1Y2ggcHJvcGVydHkgcGVyIG5vcm1hbGl6YXRpb24gZm9ybS4KLSAgICAgICAgVGhl
c2UgcHJvcGVydGllcyBhcmUgY29tcHV0ZWQgYXMgZm9sbG93cyAtIGFuIGluZXJ0IGNoYXJhY3Rl
ciBpczoKLSAgICAgICAgYSkgdW5hc3NpZ25lZCwgb3IgQUxMIG9mIHRoZSBmb2xsb3dpbmc6Ci0g
ICAgICAgIGIpIG9mIGNvbWJpbmluZyBjbGFzcyAwLgotICAgICAgICBjKSBub3QgZGVjb21wb3Nl
ZCBieSB0aGlzIG5vcm1hbGl6YXRpb24gZm9ybS4KLSAgICAgICAgQU5EIGlmIE5GQyBvciBORktD
LAotICAgICAgICBkKSBjYW4gbmV2ZXIgY29tcG9zZSB3aXRoIGEgcHJldmlvdXMgY2hhcmFjdGVy
LgotICAgICAgICBlKSBjYW4gbmV2ZXIgY29tcG9zZSB3aXRoIGEgZm9sbG93aW5nIGNoYXJhY3Rl
ci4KLSAgICAgICAgZikgY2FuIG5ldmVyIGNoYW5nZSBpZiBhbm90aGVyIGNoYXJhY3RlciBpcyBh
ZGRlZC4KLSAgICAgICAgICAgRXhhbXBsZTogYS1icmV2ZSBtaWdodCBzYXRpc2Z5IGFsbCBidXQg
ZiwgYnV0IGlmIHlvdQotICAgICAgICAgICBhZGQgYW4gb2dvbmVrIGl0IGNoYW5nZXMgdG8gYS1v
Z29uZWsgKyBicmV2ZQotCi0gICAgICAgIFNlZSBhbHNvIGNvbS5pYm0udGV4dC5VQ0QuTkZTa2lw
cGFibGUgaW4gdGhlIElDVTRKIHJlcG9zaXRvcnksCi0gICAgICAgIGFuZCBpY3Uvc291cmNlL2Nv
bW1vbi91bm9ybWltcC5oIC4KLSAgICAgICAgQGRyYWZ0IElDVSAzLjAgKi8KLSAgICBVQ0hBUl9O
RkRfSU5FUlQsCi0gICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBORktEX0luZXJ0LgotICAgICAgICBJ
Q1Utc3BlY2lmaWMgcHJvcGVydHkgZm9yIGNoYXJhY3RlcnMgdGhhdCBhcmUgaW5lcnQgdW5kZXIg
TkZLRCwKLSAgICAgICAgaS5lLiwgdGhleSBkbyBub3QgaW50ZXJhY3Qgd2l0aCBhZGphY2VudCBj
aGFyYWN0ZXJzLgotICAgICAgICBVc2VkIGZvciBleGFtcGxlIGluIG5vcm1hbGl6aW5nIHRyYW5z
Zm9ybXMgaW4gaW5jcmVtZW50YWwgbW9kZQotICAgICAgICB0byBmaW5kIHRoZSBib3VuZGFyeSBv
ZiBzYWZlbHkgbm9ybWFsaXphYmxlIHRleHQgZGVzcGl0ZSBwb3NzaWJsZQotICAgICAgICB0ZXh0
IGFkZGl0aW9ucy4KLSAgICAgICAgQHNlZSBVQ0hBUl9ORkRfSU5FUlQKLSAgICAgICAgQGRyYWZ0
IElDVSAzLjAgKi8KLSAgICBVQ0hBUl9ORktEX0lORVJULAotICAgIC8qKiBCaW5hcnkgcHJvcGVy
dHkgTkZDX0luZXJ0LgotICAgICAgICBJQ1Utc3BlY2lmaWMgcHJvcGVydHkgZm9yIGNoYXJhY3Rl
cnMgdGhhdCBhcmUgaW5lcnQgdW5kZXIgTkZDLAotICAgICAgICBpLmUuLCB0aGV5IGRvIG5vdCBp
bnRlcmFjdCB3aXRoIGFkamFjZW50IGNoYXJhY3RlcnMuCi0gICAgICAgIFVzZWQgZm9yIGV4YW1w
bGUgaW4gbm9ybWFsaXppbmcgdHJhbnNmb3JtcyBpbiBpbmNyZW1lbnRhbCBtb2RlCi0gICAgICAg
IHRvIGZpbmQgdGhlIGJvdW5kYXJ5IG9mIHNhZmVseSBub3JtYWxpemFibGUgdGV4dCBkZXNwaXRl
IHBvc3NpYmxlCi0gICAgICAgIHRleHQgYWRkaXRpb25zLgotICAgICAgICBAc2VlIFVDSEFSX05G
RF9JTkVSVAotICAgICAgICBAZHJhZnQgSUNVIDMuMCAqLwotICAgIFVDSEFSX05GQ19JTkVSVCwK
LSAgICAvKiogQmluYXJ5IHByb3BlcnR5IE5GS0NfSW5lcnQuCi0gICAgICAgIElDVS1zcGVjaWZp
YyBwcm9wZXJ0eSBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSBpbmVydCB1bmRlciBORktDLAotICAg
ICAgICBpLmUuLCB0aGV5IGRvIG5vdCBpbnRlcmFjdCB3aXRoIGFkamFjZW50IGNoYXJhY3RlcnMu
Ci0gICAgICAgIFVzZWQgZm9yIGV4YW1wbGUgaW4gbm9ybWFsaXppbmcgdHJhbnNmb3JtcyBpbiBp
bmNyZW1lbnRhbCBtb2RlCi0gICAgICAgIHRvIGZpbmQgdGhlIGJvdW5kYXJ5IG9mIHNhZmVseSBu
b3JtYWxpemFibGUgdGV4dCBkZXNwaXRlIHBvc3NpYmxlCi0gICAgICAgIHRleHQgYWRkaXRpb25z
LgotICAgICAgICBAc2VlIFVDSEFSX05GRF9JTkVSVAotICAgICAgICBAZHJhZnQgSUNVIDMuMCAq
LwotICAgIFVDSEFSX05GS0NfSU5FUlQsCi0gICAgLyoqIEJpbmFyeSBQcm9wZXJ0eSBTZWdtZW50
X1N0YXJ0ZXIuCi0gICAgICAgIElDVS1zcGVjaWZpYyBwcm9wZXJ0eSBmb3IgY2hhcmFjdGVycyB0
aGF0IGFyZSBzdGFydGVycyBpbiB0ZXJtcyBvZgotICAgICAgICBVbmljb2RlIG5vcm1hbGl6YXRp
b24gYW5kIGNvbWJpbmluZyBjaGFyYWN0ZXIgc2VxdWVuY2VzLgotICAgICAgICBUaGV5IGhhdmUg
Y2NjPTAgYW5kIGRvIG5vdCBvY2N1ciBpbiBub24taW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUKLSAg
ICAgICAgY2Fub25pY2FsIGRlY29tcG9zaXRpb24gb2YgYW55IGNoYXJhY3RlcgotICAgICAgICAo
bGlrZSAiIGluIE5GRChhLXVtbGF1dCkgYW5kIGEgSmFtbyBUIGluIGFuIE5GRChIYW5ndWwgTFZU
KSkuCi0gICAgICAgIElDVSB1c2VzIHRoaXMgcHJvcGVydHkgZm9yIHNlZ21lbnRpbmcgYSBzdHJp
bmcgZm9yIGdlbmVyYXRpbmcgYSBzZXQgb2YKLSAgICAgICAgY2Fub25pY2FsbHkgZXF1aXZhbGVu
dCBzdHJpbmdzLCBlLmcuIGZvciBjYW5vbmljYWwgY2xvc3VyZSB3aGlsZQotICAgICAgICBwcm9j
ZXNzaW5nIGNvbGxhdGlvbiB0YWlsb3JpbmcgcnVsZXMuCi0gICAgICAgIEBkcmFmdCBJQ1UgMy4w
ICovCi0gICAgVUNIQVJfU0VHTUVOVF9TVEFSVEVSLAotICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRo
ZSBsYXN0IGNvbnN0YW50IGZvciBiaW5hcnkgVW5pY29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElD
VSAyLjEgKi8KLSAgICBVQ0hBUl9CSU5BUllfTElNSVQsCi0KLSAgICAvKiogRW51bWVyYXRlZCBw
cm9wZXJ0eSBCaWRpX0NsYXNzLgotICAgICAgICBTYW1lIGFzIHVfY2hhckRpcmVjdGlvbiwgcmV0
dXJucyBVQ2hhckRpcmVjdGlvbiB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLwotICAgIFVDSEFS
X0JJRElfQ0xBU1M9MHgxMDAwLAotICAgIC8qKiBGaXJzdCBjb25zdGFudCBmb3IgZW51bWVyYXRl
ZC9pbnRlZ2VyIFVuaWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUNI
QVJfSU5UX1NUQVJUPVVDSEFSX0JJRElfQ0xBU1MsCi0gICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVy
dHkgQmxvY2suCi0gICAgICAgIFNhbWUgYXMgdWJsb2NrX2dldENvZGUsIHJldHVybnMgVUJsb2Nr
Q29kZSB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLwotICAgIFVDSEFSX0JMT0NLLAotICAgIC8q
KiBFbnVtZXJhdGVkIHByb3BlcnR5IENhbm9uaWNhbF9Db21iaW5pbmdfQ2xhc3MuCi0gICAgICAg
IFNhbWUgYXMgdV9nZXRDb21iaW5pbmdDbGFzcywgcmV0dXJucyA4LWJpdCBudW1lcmljIHZhbHVl
cy4gQHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUNIQVJfQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFT
UywKLSAgICAvKiogRW51bWVyYXRlZCBwcm9wZXJ0eSBEZWNvbXBvc2l0aW9uX1R5cGUuCi0gICAg
ICAgIFJldHVybnMgVURlY29tcG9zaXRpb25UeXBlIHZhbHVlcy4gQHN0YWJsZSBJQ1UgMi4yICov
Ci0gICAgVUNIQVJfREVDT01QT1NJVElPTl9UWVBFLAotICAgIC8qKiBFbnVtZXJhdGVkIHByb3Bl
cnR5IEVhc3RfQXNpYW5fV2lkdGguCi0gICAgICAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L3JlcG9ydHMvdHIxMS8KLSAgICAgICAgUmV0dXJucyBVRWFzdEFzaWFuV2lkdGggdmFsdWVzLiBA
c3RhYmxlIElDVSAyLjIgKi8KLSAgICBVQ0hBUl9FQVNUX0FTSUFOX1dJRFRILAotICAgIC8qKiBF
bnVtZXJhdGVkIHByb3BlcnR5IEdlbmVyYWxfQ2F0ZWdvcnkuCi0gICAgICAgIFNhbWUgYXMgdV9j
aGFyVHlwZSwgcmV0dXJucyBVQ2hhckNhdGVnb3J5IHZhbHVlcy4gQHN0YWJsZSBJQ1UgMi4yICov
Ci0gICAgVUNIQVJfR0VORVJBTF9DQVRFR09SWSwKLSAgICAvKiogRW51bWVyYXRlZCBwcm9wZXJ0
eSBKb2luaW5nX0dyb3VwLgotICAgICAgICBSZXR1cm5zIFVKb2luaW5nR3JvdXAgdmFsdWVzLiBA
c3RhYmxlIElDVSAyLjIgKi8KLSAgICBVQ0hBUl9KT0lOSU5HX0dST1VQLAotICAgIC8qKiBFbnVt
ZXJhdGVkIHByb3BlcnR5IEpvaW5pbmdfVHlwZS4KLSAgICAgICAgUmV0dXJucyBVSm9pbmluZ1R5
cGUgdmFsdWVzLiBAc3RhYmxlIElDVSAyLjIgKi8KLSAgICBVQ0hBUl9KT0lOSU5HX1RZUEUsCi0g
ICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgTGluZV9CcmVhay4KLSAgICAgICAgUmV0dXJucyBV
TGluZUJyZWFrIHZhbHVlcy4gQHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUNIQVJfTElORV9CUkVB
SywKLSAgICAvKiogRW51bWVyYXRlZCBwcm9wZXJ0eSBOdW1lcmljX1R5cGUuCi0gICAgICAgIFJl
dHVybnMgVU51bWVyaWNUeXBlIHZhbHVlcy4gQHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUNIQVJf
TlVNRVJJQ19UWVBFLAotICAgIC8qKiBFbnVtZXJhdGVkIHByb3BlcnR5IFNjcmlwdC4KLSAgICAg
ICAgU2FtZSBhcyB1c2NyaXB0X2dldFNjcmlwdCwgcmV0dXJucyBVU2NyaXB0Q29kZSB2YWx1ZXMu
IEBzdGFibGUgSUNVIDIuMiAqLwotICAgIFVDSEFSX1NDUklQVCwKLSAgICAvKiogRW51bWVyYXRl
ZCBwcm9wZXJ0eSBIYW5ndWxfU3lsbGFibGVfVHlwZSwgbmV3IGluIFVuaWNvZGUgNC4KLSAgICAg
ICAgUmV0dXJucyBVSGFuZ3VsU3lsbGFibGVUeXBlIHZhbHVlcy4gQHN0YWJsZSBJQ1UgMi42ICov
Ci0gICAgVUNIQVJfSEFOR1VMX1NZTExBQkxFX1RZUEUsCi0gICAgLyoqIEVudW1lcmF0ZWQgcHJv
cGVydHkgTkZEX1F1aWNrX0NoZWNrLgotICAgICAgICBSZXR1cm5zIFVOb3JtYWxpemF0aW9uQ2hl
Y2tSZXN1bHQgdmFsdWVzLiBAZHJhZnQgSUNVIDMuMCAqLwotICAgIFVDSEFSX05GRF9RVUlDS19D
SEVDSywKLSAgICAvKiogRW51bWVyYXRlZCBwcm9wZXJ0eSBORktEX1F1aWNrX0NoZWNrLgotICAg
ICAgICBSZXR1cm5zIFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1bHQgdmFsdWVzLiBAZHJhZnQgSUNV
IDMuMCAqLwotICAgIFVDSEFSX05GS0RfUVVJQ0tfQ0hFQ0ssCi0gICAgLyoqIEVudW1lcmF0ZWQg
cHJvcGVydHkgTkZDX1F1aWNrX0NoZWNrLgotICAgICAgICBSZXR1cm5zIFVOb3JtYWxpemF0aW9u
Q2hlY2tSZXN1bHQgdmFsdWVzLiBAZHJhZnQgSUNVIDMuMCAqLwotICAgIFVDSEFSX05GQ19RVUlD
S19DSEVDSywKLSAgICAvKiogRW51bWVyYXRlZCBwcm9wZXJ0eSBORktDX1F1aWNrX0NoZWNrLgot
ICAgICAgICBSZXR1cm5zIFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1bHQgdmFsdWVzLiBAZHJhZnQg
SUNVIDMuMCAqLwotICAgIFVDSEFSX05GS0NfUVVJQ0tfQ0hFQ0ssCi0gICAgLyoqIEVudW1lcmF0
ZWQgcHJvcGVydHkgTGVhZF9DYW5vbmljYWxfQ29tYmluaW5nX0NsYXNzLgotICAgICAgICBJQ1Ut
c3BlY2lmaWMgcHJvcGVydHkgZm9yIHRoZSBjY2Mgb2YgdGhlIGZpcnN0IGNvZGUgcG9pbnQKLSAg
ICAgICAgb2YgdGhlIGRlY29tcG9zaXRpb24sIG9yIGxjY2MoYyk9Y2NjKE5GRChjKVswXSkuCi0g
ICAgICAgIFVzZWZ1bCBmb3IgY2hlY2tpbmcgZm9yIGNhbm9uaWNhbGx5IG9yZGVyZWQgdGV4dDsK
LSAgICAgICAgc2VlIFVOT1JNX0ZDRCBhbmQgaHR0cDovL3d3dy51bmljb2RlLm9yZy9ub3Rlcy90
bjUvI0ZDRCAuCi0gICAgICAgIFJldHVybnMgOC1iaXQgbnVtZXJpYyB2YWx1ZXMgbGlrZSBVQ0hB
Ul9DQU5PTklDQUxfQ09NQklOSU5HX0NMQVNTLiBAZHJhZnQgSUNVIDMuMCAqLwotICAgIFVDSEFS
X0xFQURfQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUywKLSAgICAvKiogRW51bWVyYXRlZCBwcm9w
ZXJ0eSBUcmFpbF9DYW5vbmljYWxfQ29tYmluaW5nX0NsYXNzLgotICAgICAgICBJQ1Utc3BlY2lm
aWMgcHJvcGVydHkgZm9yIHRoZSBjY2Mgb2YgdGhlIGxhc3QgY29kZSBwb2ludAotICAgICAgICBv
ZiB0aGUgZGVjb21wb3NpdGlvbiwgb3IgdGNjYyhjKT1jY2MoTkZEKGMpW2xhc3RdKS4KLSAgICAg
ICAgVXNlZnVsIGZvciBjaGVja2luZyBmb3IgY2Fub25pY2FsbHkgb3JkZXJlZCB0ZXh0OwotICAg
ICAgICBzZWUgVU5PUk1fRkNEIGFuZCBodHRwOi8vd3d3LnVuaWNvZGUub3JnL25vdGVzL3RuNS8j
RkNEIC4KLSAgICAgICAgUmV0dXJucyA4LWJpdCBudW1lcmljIHZhbHVlcyBsaWtlIFVDSEFSX0NB
Tk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MuIEBkcmFmdCBJQ1UgMy4wICovCi0gICAgVUNIQVJfVFJB
SUxfQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUywKLSAgICAvKiogT25lIG1vcmUgdGhhbiB0aGUg
bGFzdCBjb25zdGFudCBmb3IgZW51bWVyYXRlZC9pbnRlZ2VyIFVuaWNvZGUgcHJvcGVydGllcy4g
QHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUNIQVJfSU5UX0xJTUlULAotCi0gICAgLyoqIEJpdG1h
c2sgcHJvcGVydHkgR2VuZXJhbF9DYXRlZ29yeV9NYXNrLgotICAgICAgICBUaGlzIGlzIHRoZSBH
ZW5lcmFsX0NhdGVnb3J5IHByb3BlcnR5IHJldHVybmVkIGFzIGEgYml0IG1hc2suCi0gICAgICAg
IFdoZW4gdXNlZCBpbiB1X2dldEludFByb3BlcnR5VmFsdWUoYyksIHNhbWUgYXMgVV9NQVNLKHVf
Y2hhclR5cGUoYykpLAotICAgICAgICByZXR1cm5zIGJpdCBtYXNrcyBmb3IgVUNoYXJDYXRlZ29y
eSB2YWx1ZXMgd2hlcmUgZXhhY3RseSBvbmUgYml0IGlzIHNldC4KLSAgICAgICAgV2hlbiB1c2Vk
IHdpdGggdV9nZXRQcm9wZXJ0eVZhbHVlTmFtZSgpIGFuZCB1X2dldFByb3BlcnR5VmFsdWVFbnVt
KCksCi0gICAgICAgIGEgbXVsdGktYml0IG1hc2sgaXMgdXNlZCBmb3Igc2V0cyBvZiBjYXRlZ29y
aWVzIGxpa2UgIkxldHRlcnMiLgotICAgICAgICBNYXNrIHZhbHVlcyBzaG91bGQgYmUgY2FzdCB0
byB1aW50MzJfdC4KLSAgICAgICAgQHN0YWJsZSBJQ1UgMi40ICovCi0gICAgVUNIQVJfR0VORVJB
TF9DQVRFR09SWV9NQVNLPTB4MjAwMCwKLSAgICAvKiogRmlyc3QgY29uc3RhbnQgZm9yIGJpdC1t
YXNrIFVuaWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1UgMi40ICovCi0gICAgVUNIQVJfTUFT
S19TVEFSVD1VQ0hBUl9HRU5FUkFMX0NBVEVHT1JZX01BU0ssCi0gICAgLyoqIE9uZSBtb3JlIHRo
YW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIGJpdC1tYXNrIFVuaWNvZGUgcHJvcGVydGllcy4gQHN0
YWJsZSBJQ1UgMi40ICovCi0gICAgVUNIQVJfTUFTS19MSU1JVCwKLQotICAgIC8qKiBEb3VibGUg
cHJvcGVydHkgTnVtZXJpY19WYWx1ZS4KLSAgICAgICAgQ29ycmVzcG9uZHMgdG8gdV9nZXROdW1l
cmljVmFsdWUuIEBzdGFibGUgSUNVIDIuNCAqLwotICAgIFVDSEFSX05VTUVSSUNfVkFMVUU9MHgz
MDAwLAotICAgIC8qKiBGaXJzdCBjb25zdGFudCBmb3IgZG91YmxlIFVuaWNvZGUgcHJvcGVydGll
cy4gQHN0YWJsZSBJQ1UgMi40ICovCi0gICAgVUNIQVJfRE9VQkxFX1NUQVJUPVVDSEFSX05VTUVS
SUNfVkFMVUUsCi0gICAgLyoqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIGRv
dWJsZSBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUgSUNVIDIuNCAqLwotICAgIFVDSEFSX0RP
VUJMRV9MSU1JVCwKLQotICAgIC8qKiBTdHJpbmcgcHJvcGVydHkgQWdlLgotICAgICAgICBDb3Jy
ZXNwb25kcyB0byB1X2NoYXJBZ2UuIEBzdGFibGUgSUNVIDIuNCAqLwotICAgIFVDSEFSX0FHRT0w
eDQwMDAsCi0gICAgLyoqIEZpcnN0IGNvbnN0YW50IGZvciBzdHJpbmcgVW5pY29kZSBwcm9wZXJ0
aWVzLiBAc3RhYmxlIElDVSAyLjQgKi8KLSAgICBVQ0hBUl9TVFJJTkdfU1RBUlQ9VUNIQVJfQUdF
LAotICAgIC8qKiBTdHJpbmcgcHJvcGVydHkgQmlkaV9NaXJyb3JpbmdfR2x5cGguCi0gICAgICAg
IENvcnJlc3BvbmRzIHRvIHVfY2hhck1pcnJvci4gQHN0YWJsZSBJQ1UgMi40ICovCi0gICAgVUNI
QVJfQklESV9NSVJST1JJTkdfR0xZUEgsCi0gICAgLyoqIFN0cmluZyBwcm9wZXJ0eSBDYXNlX0Zv
bGRpbmcuCi0gICAgICAgIENvcnJlc3BvbmRzIHRvIHVfc3RyRm9sZENhc2UgaW4gdXN0cmluZy5o
LiBAc3RhYmxlIElDVSAyLjQgKi8KLSAgICBVQ0hBUl9DQVNFX0ZPTERJTkcsCi0gICAgLyoqIFN0
cmluZyBwcm9wZXJ0eSBJU09fQ29tbWVudC4KLSAgICAgICAgQ29ycmVzcG9uZHMgdG8gdV9nZXRJ
U09Db21tZW50LiBAc3RhYmxlIElDVSAyLjQgKi8KLSAgICBVQ0hBUl9JU09fQ09NTUVOVCwKLSAg
ICAvKiogU3RyaW5nIHByb3BlcnR5IExvd2VyY2FzZV9NYXBwaW5nLgotICAgICAgICBDb3JyZXNw
b25kcyB0byB1X3N0clRvTG93ZXIgaW4gdXN0cmluZy5oLiBAc3RhYmxlIElDVSAyLjQgKi8KLSAg
ICBVQ0hBUl9MT1dFUkNBU0VfTUFQUElORywKLSAgICAvKiogU3RyaW5nIHByb3BlcnR5IE5hbWUu
Ci0gICAgICAgIENvcnJlc3BvbmRzIHRvIHVfY2hhck5hbWUuIEBzdGFibGUgSUNVIDIuNCAqLwot
ICAgIFVDSEFSX05BTUUsCi0gICAgLyoqIFN0cmluZyBwcm9wZXJ0eSBTaW1wbGVfQ2FzZV9Gb2xk
aW5nLgotICAgICAgICBDb3JyZXNwb25kcyB0byB1X2ZvbGRDYXNlLiBAc3RhYmxlIElDVSAyLjQg
Ki8KLSAgICBVQ0hBUl9TSU1QTEVfQ0FTRV9GT0xESU5HLAotICAgIC8qKiBTdHJpbmcgcHJvcGVy
dHkgU2ltcGxlX0xvd2VyY2FzZV9NYXBwaW5nLgotICAgICAgICBDb3JyZXNwb25kcyB0byB1X3Rv
bG93ZXIuIEBzdGFibGUgSUNVIDIuNCAqLwotICAgIFVDSEFSX1NJTVBMRV9MT1dFUkNBU0VfTUFQ
UElORywKLSAgICAvKiogU3RyaW5nIHByb3BlcnR5IFNpbXBsZV9UaXRsZWNhc2VfTWFwcGluZy4K
LSAgICAgICAgQ29ycmVzcG9uZHMgdG8gdV90b3RpdGxlLiBAc3RhYmxlIElDVSAyLjQgKi8KLSAg
ICBVQ0hBUl9TSU1QTEVfVElUTEVDQVNFX01BUFBJTkcsCi0gICAgLyoqIFN0cmluZyBwcm9wZXJ0
eSBTaW1wbGVfVXBwZXJjYXNlX01hcHBpbmcuCi0gICAgICAgIENvcnJlc3BvbmRzIHRvIHVfdG91
cHBlci4gQHN0YWJsZSBJQ1UgMi40ICovCi0gICAgVUNIQVJfU0lNUExFX1VQUEVSQ0FTRV9NQVBQ
SU5HLAotICAgIC8qKiBTdHJpbmcgcHJvcGVydHkgVGl0bGVjYXNlX01hcHBpbmcuCi0gICAgICAg
IENvcnJlc3BvbmRzIHRvIHVfc3RyVG9UaXRsZSBpbiB1c3RyaW5nLmguIEBzdGFibGUgSUNVIDIu
NCAqLwotICAgIFVDSEFSX1RJVExFQ0FTRV9NQVBQSU5HLAotICAgIC8qKiBTdHJpbmcgcHJvcGVy
dHkgVW5pY29kZV8xX05hbWUuCi0gICAgICAgIENvcnJlc3BvbmRzIHRvIHVfY2hhck5hbWUuIEBz
dGFibGUgSUNVIDIuNCAqLwotICAgIFVDSEFSX1VOSUNPREVfMV9OQU1FLAotICAgIC8qKiBTdHJp
bmcgcHJvcGVydHkgVXBwZXJjYXNlX01hcHBpbmcuCi0gICAgICAgIENvcnJlc3BvbmRzIHRvIHVf
c3RyVG9VcHBlciBpbiB1c3RyaW5nLmguIEBzdGFibGUgSUNVIDIuNCAqLwotICAgIFVDSEFSX1VQ
UEVSQ0FTRV9NQVBQSU5HLAotICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRoZSBsYXN0IGNvbnN0YW50
IGZvciBzdHJpbmcgVW5pY29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAyLjQgKi8KLSAgICBV
Q0hBUl9TVFJJTkdfTElNSVQsCi0KLSAgICAvKiogUmVwcmVzZW50cyBhIG5vbmV4aXN0ZW50IG9y
IGludmFsaWQgcHJvcGVydHkgb3IgcHJvcGVydHkgdmFsdWUuIEBzdGFibGUgSUNVIDIuNCAqLwot
ICAgIFVDSEFSX0lOVkFMSURfQ09ERSA9IC0xCi19IFVQcm9wZXJ0eTsKLQotLyoqCi0gKiBEYXRh
IGZvciBlbnVtZXJhdGVkIFVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeSB0eXBlcy4KLSAqIFNlZSBo
dHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9VTklEQVRBL1VuaWNvZGVEYXRhLmh0bWwgLgot
ICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLXR5cGVkZWYgZW51bSBVQ2hhckNhdGVnb3J5Ci17Ci0g
ICAgLyoqIFNlZSBub3RlICEhLiAgQ29tbWVudHMgb2YgdGhlIGZvcm0gIkNuIiBhcmUgcmVhZCBi
eSBnZW5wbmFtZS4gKi8KLQotICAgIC8qKiBOb24tY2F0ZWdvcnkgZm9yIHVuYXNzaWduZWQgYW5k
IG5vbi1jaGFyYWN0ZXIgY29kZSBwb2ludHMuIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfVU5B
U1NJR05FRCAgICAgICAgICAgICAgPSAwLAotICAgIC8qKiBDbiAiT3RoZXIsIE5vdCBBc3NpZ25l
ZCAobm8gY2hhcmFjdGVycyBpbiBbVW5pY29kZURhdGEudHh0XSBoYXZlIHRoaXMgcHJvcGVydHkp
IiAoc2FtZSBhcyBVX1VOQVNTSUdORUQhKSBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX0dFTkVS
QUxfT1RIRVJfVFlQRVMgICAgID0gMCwKLSAgICAvKiogTHUgQHN0YWJsZSBJQ1UgMi4wICovCi0g
ICAgVV9VUFBFUkNBU0VfTEVUVEVSICAgICAgICA9IDEsCi0gICAgLyoqIExsIEBzdGFibGUgSUNV
IDIuMCAqLwotICAgIFVfTE9XRVJDQVNFX0xFVFRFUiAgICAgICAgPSAyLAotICAgIC8qKiBMdCBA
c3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX1RJVExFQ0FTRV9MRVRURVIgICAgICAgID0gMywKLSAg
ICAvKiogTG0gQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVV9NT0RJRklFUl9MRVRURVIgICAgICAg
ICA9IDQsCi0gICAgLyoqIExvIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfT1RIRVJfTEVUVEVS
ICAgICAgICAgICAgPSA1LAotICAgIC8qKiBNbiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX05P
Tl9TUEFDSU5HX01BUksgICAgICAgID0gNiwKLSAgICAvKiogTWUgQHN0YWJsZSBJQ1UgMi4wICov
Ci0gICAgVV9FTkNMT1NJTkdfTUFSSyAgICAgICAgICA9IDcsCi0gICAgLyoqIE1jIEBzdGFibGUg
SUNVIDIuMCAqLwotICAgIFVfQ09NQklOSU5HX1NQQUNJTkdfTUFSSyAgPSA4LAotICAgIC8qKiBO
ZCBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX0RFQ0lNQUxfRElHSVRfTlVNQkVSICAgID0gOSwK
LSAgICAvKiogTmwgQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVV9MRVRURVJfTlVNQkVSICAgICAg
ICAgICA9IDEwLAotICAgIC8qKiBObyBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX09USEVSX05V
TUJFUiAgICAgICAgICAgID0gMTEsCi0gICAgLyoqIFpzIEBzdGFibGUgSUNVIDIuMCAqLwotICAg
IFVfU1BBQ0VfU0VQQVJBVE9SICAgICAgICAgPSAxMiwKLSAgICAvKiogWmwgQHN0YWJsZSBJQ1Ug
Mi4wICovCi0gICAgVV9MSU5FX1NFUEFSQVRPUiAgICAgICAgICA9IDEzLAotICAgIC8qKiBacCBA
c3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX1BBUkFHUkFQSF9TRVBBUkFUT1IgICAgID0gMTQsCi0g
ICAgLyoqIENjIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfQ09OVFJPTF9DSEFSICAgICAgICAg
ICAgPSAxNSwKLSAgICAvKiogQ2YgQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVV9GT1JNQVRfQ0hB
UiAgICAgICAgICAgICA9IDE2LAotICAgIC8qKiBDbyBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBV
X1BSSVZBVEVfVVNFX0NIQVIgICAgICAgID0gMTcsCi0gICAgLyoqIENzIEBzdGFibGUgSUNVIDIu
MCAqLwotICAgIFVfU1VSUk9HQVRFICAgICAgICAgICAgICAgPSAxOCwKLSAgICAvKiogUGQgQHN0
YWJsZSBJQ1UgMi4wICovCi0gICAgVV9EQVNIX1BVTkNUVUFUSU9OICAgICAgICA9IDE5LAotICAg
IC8qKiBQcyBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX1NUQVJUX1BVTkNUVUFUSU9OICAgICAg
ID0gMjAsCi0gICAgLyoqIFBlIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfRU5EX1BVTkNUVUFU
SU9OICAgICAgICAgPSAyMSwKLSAgICAvKiogUGMgQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVV9D
T05ORUNUT1JfUFVOQ1RVQVRJT04gICA9IDIyLAotICAgIC8qKiBQbyBAc3RhYmxlIElDVSAyLjAg
Ki8KLSAgICBVX09USEVSX1BVTkNUVUFUSU9OICAgICAgID0gMjMsCi0gICAgLyoqIFNtIEBzdGFi
bGUgSUNVIDIuMCAqLwotICAgIFVfTUFUSF9TWU1CT0wgICAgICAgICAgICAgPSAyNCwKLSAgICAv
KiogU2MgQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVV9DVVJSRU5DWV9TWU1CT0wgICAgICAgICA9
IDI1LAotICAgIC8qKiBTayBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX01PRElGSUVSX1NZTUJP
TCAgICAgICAgID0gMjYsCi0gICAgLyoqIFNvIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfT1RI
RVJfU1lNQk9MICAgICAgICAgICAgPSAyNywKLSAgICAvKiogUGkgQHN0YWJsZSBJQ1UgMi4wICov
Ci0gICAgVV9JTklUSUFMX1BVTkNUVUFUSU9OICAgICA9IDI4LAotICAgIC8qKiBQZiBAc3RhYmxl
IElDVSAyLjAgKi8KLSAgICBVX0ZJTkFMX1BVTkNUVUFUSU9OICAgICAgID0gMjksCi0gICAgLyoq
IE9uZSBoaWdoZXIgdGhhbiB0aGUgbGFzdCBlbnVtIFVDaGFyQ2F0ZWdvcnkgY29uc3RhbnQuIEBz
dGFibGUgSUNVIDIuMCAqLwotICAgIFVfQ0hBUl9DQVRFR09SWV9DT1VOVAotfSBVQ2hhckNhdGVn
b3J5OwotCi0vKioKLSAqIFVfR0NfWFhfTUFTSyBjb25zdGFudHMgYXJlIGJpdCBmbGFncyBjb3Jy
ZXNwb25kaW5nIHRvIFVuaWNvZGUKLSAqIGdlbmVyYWwgY2F0ZWdvcnkgdmFsdWVzLgotICogRm9y
IGVhY2ggY2F0ZWdvcnksIHRoZSBudGggYml0IGlzIHNldCBpZiB0aGUgbnVtZXJpYyB2YWx1ZSBv
ZiB0aGUKLSAqIGNvcnJlc3BvbmRpbmcgVUNoYXJDYXRlZ29yeSBjb25zdGFudCBpcyBuLgotICoK
LSAqIFRoZXJlIGFyZSBhbHNvIHNvbWUgVV9HQ19ZX01BU0sgY29uc3RhbnRzIGZvciBncm91cHMg
b2YgZ2VuZXJhbCBjYXRlZ29yaWVzCi0gKiBsaWtlIEwgZm9yIGFsbCBsZXR0ZXIgY2F0ZWdvcmll
cy4KLSAqCi0gKiBAc2VlIHVfY2hhclR5cGUKLSAqIEBzZWUgVV9HRVRfR0NfTUFTSwotICogQHNl
ZSBVQ2hhckNhdGVnb3J5Ci0gKiBAc3RhYmxlIElDVSAyLjEKLSAqLwotI2RlZmluZSBVX0dDX0NO
X01BU0sgICAgVV9NQVNLKFVfR0VORVJBTF9PVEhFUl9UWVBFUykKLQotLyoqIE1hc2sgY29uc3Rh
bnQgZm9yIGEgVUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0Nf
TFVfTUFTSyAgICBVX01BU0soVV9VUFBFUkNBU0VfTEVUVEVSKQotLyoqIE1hc2sgY29uc3RhbnQg
Zm9yIGEgVUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0NfTExf
TUFTSyAgICBVX01BU0soVV9MT1dFUkNBU0VfTEVUVEVSKQotLyoqIE1hc2sgY29uc3RhbnQgZm9y
IGEgVUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0NfTFRfTUFT
SyAgICBVX01BU0soVV9USVRMRUNBU0VfTEVUVEVSKQotLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEg
VUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0NfTE1fTUFTSyAg
ICBVX01BU0soVV9NT0RJRklFUl9MRVRURVIpCi0vKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hh
ckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KLSNkZWZpbmUgVV9HQ19MT19NQVNLICAgIFVf
TUFTSyhVX09USEVSX0xFVFRFUikKLQotLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRl
Z29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0NfTU5fTUFTSyAgICBVX01BU0so
VV9OT05fU1BBQ0lOR19NQVJLKQotLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29y
eS4gQHN0YWJsZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0NfTUVfTUFTSyAgICBVX01BU0soVV9F
TkNMT1NJTkdfTUFSSykKLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBz
dGFibGUgSUNVIDIuMSAqLwotI2RlZmluZSBVX0dDX01DX01BU0sgICAgVV9NQVNLKFVfQ09NQklO
SU5HX1NQQUNJTkdfTUFSSykKLQotLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29y
eS4gQHN0YWJsZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0NfTkRfTUFTSyAgICBVX01BU0soVV9E
RUNJTUFMX0RJR0lUX05VTUJFUikKLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdv
cnkuIEBzdGFibGUgSUNVIDIuMSAqLwotI2RlZmluZSBVX0dDX05MX01BU0sgICAgVV9NQVNLKFVf
TEVUVEVSX05VTUJFUikKLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBz
dGFibGUgSUNVIDIuMSAqLwotI2RlZmluZSBVX0dDX05PX01BU0sgICAgVV9NQVNLKFVfT1RIRVJf
TlVNQkVSKQotCi0vKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxl
IElDVSAyLjEgKi8KLSNkZWZpbmUgVV9HQ19aU19NQVNLICAgIFVfTUFTSyhVX1NQQUNFX1NFUEFS
QVRPUikKLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNV
IDIuMSAqLwotI2RlZmluZSBVX0dDX1pMX01BU0sgICAgVV9NQVNLKFVfTElORV9TRVBBUkFUT1Ip
Ci0vKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEg
Ki8KLSNkZWZpbmUgVV9HQ19aUF9NQVNLICAgIFVfTUFTSyhVX1BBUkFHUkFQSF9TRVBBUkFUT1Ip
Ci0KLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIu
MSAqLwotI2RlZmluZSBVX0dDX0NDX01BU0sgICAgVV9NQVNLKFVfQ09OVFJPTF9DSEFSKQotLyoq
IE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCi0j
ZGVmaW5lIFVfR0NfQ0ZfTUFTSyAgICBVX01BU0soVV9GT1JNQVRfQ0hBUikKLS8qKiBNYXNrIGNv
bnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLwotI2RlZmluZSBV
X0dDX0NPX01BU0sgICAgVV9NQVNLKFVfUFJJVkFURV9VU0VfQ0hBUikKLS8qKiBNYXNrIGNvbnN0
YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLwotI2RlZmluZSBVX0dD
X0NTX01BU0sgICAgVV9NQVNLKFVfU1VSUk9HQVRFKQotCi0vKiogTWFzayBjb25zdGFudCBmb3Ig
YSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KLSNkZWZpbmUgVV9HQ19QRF9NQVNL
ICAgIFVfTUFTSyhVX0RBU0hfUFVOQ1RVQVRJT04pCi0vKiogTWFzayBjb25zdGFudCBmb3IgYSBV
Q2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KLSNkZWZpbmUgVV9HQ19QU19NQVNLICAg
IFVfTUFTSyhVX1NUQVJUX1BVTkNUVUFUSU9OKQotLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNo
YXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0NfUEVfTUFTSyAgICBV
X01BU0soVV9FTkRfUFVOQ1RVQVRJT04pCi0vKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNh
dGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KLSNkZWZpbmUgVV9HQ19QQ19NQVNLICAgIFVfTUFT
SyhVX0NPTk5FQ1RPUl9QVU5DVFVBVElPTikKLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFy
Q2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLwotI2RlZmluZSBVX0dDX1BPX01BU0sgICAgVV9N
QVNLKFVfT1RIRVJfUFVOQ1RVQVRJT04pCi0KLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFy
Q2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLwotI2RlZmluZSBVX0dDX1NNX01BU0sgICAgVV9N
QVNLKFVfTUFUSF9TWU1CT0wpCi0vKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5
LiBAc3RhYmxlIElDVSAyLjEgKi8KLSNkZWZpbmUgVV9HQ19TQ19NQVNLICAgIFVfTUFTSyhVX0NV
UlJFTkNZX1NZTUJPTCkKLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBz
dGFibGUgSUNVIDIuMSAqLwotI2RlZmluZSBVX0dDX1NLX01BU0sgICAgVV9NQVNLKFVfTU9ESUZJ
RVJfU1lNQk9MKQotLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29yeS4gQHN0YWJs
ZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0NfU09fTUFTSyAgICBVX01BU0soVV9PVEhFUl9TWU1C
T0wpCi0KLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNV
IDIuMSAqLwotI2RlZmluZSBVX0dDX1BJX01BU0sgICAgVV9NQVNLKFVfSU5JVElBTF9QVU5DVFVB
VElPTikKLS8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNV
IDIuMSAqLwotI2RlZmluZSBVX0dDX1BGX01BU0sgICAgVV9NQVNLKFVfRklOQUxfUFVOQ1RVQVRJ
T04pCi0KLQotLyoqIE1hc2sgY29uc3RhbnQgZm9yIG11bHRpcGxlIFVDaGFyQ2F0ZWdvcnkgYml0
cyAoTCBMZXR0ZXJzKS4gQHN0YWJsZSBJQ1UgMi4xICovCi0jZGVmaW5lIFVfR0NfTF9NQVNLIFwK
LSAgICAgICAgICAgIChVX0dDX0xVX01BU0t8VV9HQ19MTF9NQVNLfFVfR0NfTFRfTUFTS3xVX0dD
X0xNX01BU0t8VV9HQ19MT19NQVNLKQotCi0vKiogTWFzayBjb25zdGFudCBmb3IgbXVsdGlwbGUg
VUNoYXJDYXRlZ29yeSBiaXRzIChMQyBDYXNlZCBMZXR0ZXJzKS4gQHN0YWJsZSBJQ1UgMi4xICov
Ci0jZGVmaW5lIFVfR0NfTENfTUFTSyBcCi0gICAgICAgICAgICAoVV9HQ19MVV9NQVNLfFVfR0Nf
TExfTUFTS3xVX0dDX0xUX01BU0spCi0KLS8qKiBNYXNrIGNvbnN0YW50IGZvciBtdWx0aXBsZSBV
Q2hhckNhdGVnb3J5IGJpdHMgKE0gTWFya3MpLiBAc3RhYmxlIElDVSAyLjEgKi8KLSNkZWZpbmUg
VV9HQ19NX01BU0sgKFVfR0NfTU5fTUFTS3xVX0dDX01FX01BU0t8VV9HQ19NQ19NQVNLKQotCi0v
KiogTWFzayBjb25zdGFudCBmb3IgbXVsdGlwbGUgVUNoYXJDYXRlZ29yeSBiaXRzIChOIE51bWJl
cnMpLiBAc3RhYmxlIElDVSAyLjEgKi8KLSNkZWZpbmUgVV9HQ19OX01BU0sgKFVfR0NfTkRfTUFT
S3xVX0dDX05MX01BU0t8VV9HQ19OT19NQVNLKQotCi0vKiogTWFzayBjb25zdGFudCBmb3IgbXVs
dGlwbGUgVUNoYXJDYXRlZ29yeSBiaXRzIChaIFNlcGFyYXRvcnMpLiBAc3RhYmxlIElDVSAyLjEg
Ki8KLSNkZWZpbmUgVV9HQ19aX01BU0sgKFVfR0NfWlNfTUFTS3xVX0dDX1pMX01BU0t8VV9HQ19a
UF9NQVNLKQotCi0vKiogTWFzayBjb25zdGFudCBmb3IgbXVsdGlwbGUgVUNoYXJDYXRlZ29yeSBi
aXRzIChDIE90aGVycykuIEBzdGFibGUgSUNVIDIuMSAqLwotI2RlZmluZSBVX0dDX0NfTUFTSyBc
Ci0gICAgICAgICAgICAoVV9HQ19DTl9NQVNLfFVfR0NfQ0NfTUFTS3xVX0dDX0NGX01BU0t8VV9H
Q19DT19NQVNLfFVfR0NfQ1NfTUFTSykKLQotLyoqIE1hc2sgY29uc3RhbnQgZm9yIG11bHRpcGxl
IFVDaGFyQ2F0ZWdvcnkgYml0cyAoUCBQdW5jdHVhdGlvbikuIEBzdGFibGUgSUNVIDIuMSAqLwot
I2RlZmluZSBVX0dDX1BfTUFTSyBcCi0gICAgICAgICAgICAoVV9HQ19QRF9NQVNLfFVfR0NfUFNf
TUFTS3xVX0dDX1BFX01BU0t8VV9HQ19QQ19NQVNLfFVfR0NfUE9fTUFTS3wgXAotICAgICAgICAg
ICAgIFVfR0NfUElfTUFTS3xVX0dDX1BGX01BU0spCi0KLS8qKiBNYXNrIGNvbnN0YW50IGZvciBt
dWx0aXBsZSBVQ2hhckNhdGVnb3J5IGJpdHMgKFMgU3ltYm9scykuIEBzdGFibGUgSUNVIDIuMSAq
LwotI2RlZmluZSBVX0dDX1NfTUFTSyAoVV9HQ19TTV9NQVNLfFVfR0NfU0NfTUFTS3xVX0dDX1NL
X01BU0t8VV9HQ19TT19NQVNLKQotCi0vKioKLSAqIFRoaXMgc3BlY2lmaWVzIHRoZSBsYW5ndWFn
ZSBkaXJlY3Rpb25hbCBwcm9wZXJ0eSBvZiBhIGNoYXJhY3RlciBzZXQuCi0gKiBAc3RhYmxlIElD
VSAyLjAKLSAqLwotdHlwZWRlZiBlbnVtIFVDaGFyRGlyZWN0aW9uIHsKLSAgICAvKiogU2VlIG5v
dGUgISEuICBDb21tZW50cyBvZiB0aGUgZm9ybSAiRU4iIGFyZSByZWFkIGJ5IGdlbnBuYW1lLiAq
LwotCi0gICAgLyoqIEwgQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVV9MRUZUX1RPX1JJR0hUICAg
ICAgICAgICAgICAgPSAwLAotICAgIC8qKiBSIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfUklH
SFRfVE9fTEVGVCAgICAgICAgICAgICAgID0gMSwKLSAgICAvKiogRU4gQHN0YWJsZSBJQ1UgMi4w
ICovCi0gICAgVV9FVVJPUEVBTl9OVU1CRVIgICAgICAgICAgICAgPSAyLAotICAgIC8qKiBFUyBA
c3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1IgICA9IDMs
Ci0gICAgLyoqIEVUIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfRVVST1BFQU5fTlVNQkVSX1RF
Uk1JTkFUT1IgID0gNCwKLSAgICAvKiogQU4gQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVV9BUkFC
SUNfTlVNQkVSICAgICAgICAgICAgICAgPSA1LAotICAgIC8qKiBDUyBAc3RhYmxlIElDVSAyLjAg
Ki8KLSAgICBVX0NPTU1PTl9OVU1CRVJfU0VQQVJBVE9SICAgICA9IDYsCi0gICAgLyoqIEIgQHN0
YWJsZSBJQ1UgMi4wICovCi0gICAgVV9CTE9DS19TRVBBUkFUT1IgICAgICAgICAgICAgPSA3LAot
ICAgIC8qKiBTIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfU0VHTUVOVF9TRVBBUkFUT1IgICAg
ICAgICAgID0gOCwKLSAgICAvKiogV1MgQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVV9XSElURV9T
UEFDRV9ORVVUUkFMICAgICAgICAgPSA5LAotICAgIC8qKiBPTiBAc3RhYmxlIElDVSAyLjAgKi8K
LSAgICBVX09USEVSX05FVVRSQUwgICAgICAgICAgICAgICA9IDEwLAotICAgIC8qKiBMUkUgQHN0
YWJsZSBJQ1UgMi4wICovCi0gICAgVV9MRUZUX1RPX1JJR0hUX0VNQkVERElORyAgICAgPSAxMSwK
LSAgICAvKiogTFJPIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfTEVGVF9UT19SSUdIVF9PVkVS
UklERSAgICAgID0gMTIsCi0gICAgLyoqIEFMIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfUklH
SFRfVE9fTEVGVF9BUkFCSUMgICAgICAgID0gMTMsCi0gICAgLyoqIFJMRSBAc3RhYmxlIElDVSAy
LjAgKi8KLSAgICBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5HICAgICA9IDE0LAotICAgIC8qKiBS
TE8gQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVV9SSUdIVF9UT19MRUZUX09WRVJSSURFICAgICAg
PSAxNSwKLSAgICAvKiogUERGIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVfUE9QX0RJUkVDVElP
TkFMX0ZPUk1BVCAgICAgID0gMTYsCi0gICAgLyoqIE5TTSBAc3RhYmxlIElDVSAyLjAgKi8KLSAg
ICBVX0RJUl9OT05fU1BBQ0lOR19NQVJLICAgICAgICA9IDE3LAotICAgIC8qKiBCTiBAc3RhYmxl
IElDVSAyLjAgKi8KLSAgICBVX0JPVU5EQVJZX05FVVRSQUwgICAgICAgICAgICA9IDE4LAotICAg
IC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVX0NIQVJfRElSRUNUSU9OX0NPVU5UCi19IFVD
aGFyRGlyZWN0aW9uOwotCi0vKioKLSAqIENvbnN0YW50cyBmb3IgVW5pY29kZSBibG9ja3MsIHNl
ZSB0aGUgVW5pY29kZSBEYXRhIGZpbGUgQmxvY2tzLnR4dAotICogQHN0YWJsZSBJQ1UgMi4wCi0g
Ki8KLWVudW0gVUJsb2NrQ29kZSB7Ci0KLSAgICAvKiogTmV3IE5vX0Jsb2NrIHZhbHVlIGluIFVu
aWNvZGUgNC4gQHN0YWJsZSBJQ1UgMi42ICovCi0gICAgVUJMT0NLX05PX0JMT0NLID0gMCwgLypb
bm9uZV0qLyAvKiBTcGVjaWFsIHJhbmdlIGluZGljYXRpbmcgTm9fQmxvY2sgKi8KLQotICAgIC8q
KiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfQkFTSUNfTEFUSU4gPSAxLCAvKlswMDAw
XSovIC8qU2VlIG5vdGUgISEqLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVC
TE9DS19MQVRJTl8xX1NVUFBMRU1FTlQ9MiwgLypbMDA4MF0qLwotCi0gICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLwotICAgIFVCTE9DS19MQVRJTl9FWFRFTkRFRF9BID0zLCAvKlswMTAwXSovCi0K
LSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0xBVElOX0VYVEVOREVEX0Ig
PTQsIC8qWzAxODBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tf
SVBBX0VYVEVOU0lPTlMgPTUsIC8qWzAyNTBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAg
Ki8KLSAgICBVQkxPQ0tfU1BBQ0lOR19NT0RJRklFUl9MRVRURVJTID02LCAvKlswMkIwXSovCi0K
LSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0NPTUJJTklOR19ESUFDUklU
SUNBTF9NQVJLUyA9NywgLypbMDMwMF0qLwotCi0gICAgLyoqCi0gICAgICogVW5pY29kZSAzLjIg
cmVuYW1lcyB0aGlzIGJsb2NrIHRvICJHcmVlayBhbmQgQ29wdGljIi4KLSAgICAgKiBAc3RhYmxl
IElDVSAyLjAKLSAgICAgKi8KLSAgICBVQkxPQ0tfR1JFRUsgPTgsIC8qWzAzNzBdKi8KLQotICAg
IC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfQ1lSSUxMSUMgPTksIC8qWzA0MDBd
Ki8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfQVJNRU5JQU4gPTEw
LCAvKlswNTMwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0hF
QlJFVyA9MTEsIC8qWzA1OTBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBV
QkxPQ0tfQVJBQklDID0xMiwgLypbMDYwMF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAq
LwotICAgIFVCTE9DS19TWVJJQUMgPTEzLCAvKlswNzAwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJ
Q1UgMi4wICovCi0gICAgVUJMT0NLX1RIQUFOQSA9MTQsIC8qWzA3ODBdKi8KLQotICAgIC8qKiBA
c3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfREVWQU5BR0FSSSA9MTUsIC8qWzA5MDBdKi8K
LQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfQkVOR0FMSSA9MTYsIC8q
WzA5ODBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfR1VSTVVL
SEkgPTE3LCAvKlswQTAwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJM
T0NLX0dVSkFSQVRJID0xOCwgLypbMEE4MF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAq
LwotICAgIFVCTE9DS19PUklZQSA9MTksIC8qWzBCMDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElD
VSAyLjAgKi8KLSAgICBVQkxPQ0tfVEFNSUwgPTIwLCAvKlswQjgwXSovCi0KLSAgICAvKiogQHN0
YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX1RFTFVHVSA9MjEsIC8qWzBDMDBdKi8KLQotICAg
IC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfS0FOTkFEQSA9MjIsIC8qWzBDODBd
Ki8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfTUFMQVlBTEFNID0y
MywgLypbMEQwMF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19T
SU5IQUxBID0yNCwgLypbMEQ4MF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAg
IFVCTE9DS19USEFJID0yNSwgLypbMEUwMF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAq
LwotICAgIFVCTE9DS19MQU8gPTI2LCAvKlswRTgwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi4wICovCi0gICAgVUJMT0NLX1RJQkVUQU4gPTI3LCAvKlswRjAwXSovCi0KLSAgICAvKiogQHN0
YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX01ZQU5NQVIgPTI4LCAvKlsxMDAwXSovCi0KLSAg
ICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0dFT1JHSUFOID0yOSwgLypbMTBB
MF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19IQU5HVUxfSkFN
TyA9MzAsIC8qWzExMDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxP
Q0tfRVRISU9QSUMgPTMxLCAvKlsxMjAwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICov
Ci0gICAgVUJMT0NLX0NIRVJPS0VFID0zMiwgLypbMTNBMF0qLwotCi0gICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLwotICAgIFVCTE9DS19VTklGSUVEX0NBTkFESUFOX0FCT1JJR0lOQUxfU1lMTEFC
SUNTID0zMywgLypbMTQwMF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVC
TE9DS19PR0hBTSA9MzQsIC8qWzE2ODBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8K
LSAgICBVQkxPQ0tfUlVOSUMgPTM1LCAvKlsxNkEwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi4wICovCi0gICAgVUJMT0NLX0tITUVSID0zNiwgLypbMTc4MF0qLwotCi0gICAgLyoqIEBzdGFi
bGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19NT05HT0xJQU4gPTM3LCAvKlsxODAwXSovCi0KLSAg
ICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0xBVElOX0VYVEVOREVEX0FERElU
SU9OQUwgPTM4LCAvKlsxRTAwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAg
VUJMT0NLX0dSRUVLX0VYVEVOREVEID0zOSwgLypbMUYwMF0qLwotCi0gICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLwotICAgIFVCTE9DS19HRU5FUkFMX1BVTkNUVUFUSU9OID00MCwgLypbMjAwMF0q
LwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19TVVBFUlNDUklQVFNf
QU5EX1NVQlNDUklQVFMgPTQxLCAvKlsyMDcwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4w
ICovCi0gICAgVUJMT0NLX0NVUlJFTkNZX1NZTUJPTFMgPTQyLCAvKlsyMEEwXSovCi0KLSAgICAv
KioKLSAgICAgKiBVbmljb2RlIDMuMiByZW5hbWVzIHRoaXMgYmxvY2sgdG8gIkNvbWJpbmluZyBE
aWFjcml0aWNhbCBNYXJrcyBmb3IgU3ltYm9scyIuCi0gICAgICogQHN0YWJsZSBJQ1UgMi4wCi0g
ICAgICovCi0gICAgVUJMT0NLX0NPTUJJTklOR19NQVJLU19GT1JfU1lNQk9MUyA9NDMsIC8qWzIw
RDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfTEVUVEVSTElL
RV9TWU1CT0xTID00NCwgLypbMjEwMF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwot
ICAgIFVCTE9DS19OVU1CRVJfRk9STVMgPTQ1LCAvKlsyMTUwXSovCi0KLSAgICAvKiogQHN0YWJs
ZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0FSUk9XUyA9NDYsIC8qWzIxOTBdKi8KLQotICAgIC8q
KiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfTUFUSEVNQVRJQ0FMX09QRVJBVE9SUyA9
NDcsIC8qWzIyMDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tf
TUlTQ0VMTEFORU9VU19URUNITklDQUwgPTQ4LCAvKlsyMzAwXSovCi0KLSAgICAvKiogQHN0YWJs
ZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0NPTlRST0xfUElDVFVSRVMgPTQ5LCAvKlsyNDAwXSov
Ci0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX09QVElDQUxfQ0hBUkFD
VEVSX1JFQ09HTklUSU9OID01MCwgLypbMjQ0MF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIu
MCAqLwotICAgIFVCTE9DS19FTkNMT1NFRF9BTFBIQU5VTUVSSUNTID01MSwgLypbMjQ2MF0qLwot
Ci0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19CT1hfRFJBV0lORyA9NTIs
IC8qWzI1MDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfQkxP
Q0tfRUxFTUVOVFMgPTUzLCAvKlsyNTgwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICov
Ci0gICAgVUJMT0NLX0dFT01FVFJJQ19TSEFQRVMgPTU0LCAvKlsyNUEwXSovCi0KLSAgICAvKiog
QHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX01JU0NFTExBTkVPVVNfU1lNQk9MUyA9NTUs
IC8qWzI2MDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfRElO
R0JBVFMgPTU2LCAvKlsyNzAwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAg
VUJMT0NLX0JSQUlMTEVfUEFUVEVSTlMgPTU3LCAvKlsyODAwXSovCi0KLSAgICAvKiogQHN0YWJs
ZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0NKS19SQURJQ0FMU19TVVBQTEVNRU5UID01OCwgLypb
MkU4MF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19LQU5HWElf
UkFESUNBTFMgPTU5LCAvKlsyRjAwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0g
ICAgVUJMT0NLX0lERU9HUkFQSElDX0RFU0NSSVBUSU9OX0NIQVJBQ1RFUlMgPTYwLCAvKlsyRkYw
XSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0NKS19TWU1CT0xT
X0FORF9QVU5DVFVBVElPTiA9NjEsIC8qWzMwMDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAy
LjAgKi8KLSAgICBVQkxPQ0tfSElSQUdBTkEgPTYyLCAvKlszMDQwXSovCi0KLSAgICAvKiogQHN0
YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0tBVEFLQU5BID02MywgLypbMzBBMF0qLwotCi0g
ICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19CT1BPTU9GTyA9NjQsIC8qWzMx
MDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfSEFOR1VMX0NP
TVBBVElCSUxJVFlfSkFNTyA9NjUsIC8qWzMxMzBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAy
LjAgKi8KLSAgICBVQkxPQ0tfS0FOQlVOID02NiwgLypbMzE5MF0qLwotCi0gICAgLyoqIEBzdGFi
bGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19CT1BPTU9GT19FWFRFTkRFRCA9NjcsIC8qWzMxQTBd
Ki8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfRU5DTE9TRURfQ0pL
X0xFVFRFUlNfQU5EX01PTlRIUyA9NjgsIC8qWzMyMDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElD
VSAyLjAgKi8KLSAgICBVQkxPQ0tfQ0pLX0NPTVBBVElCSUxJVFkgPTY5LCAvKlszMzAwXSovCi0K
LSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0NKS19VTklGSUVEX0lERU9H
UkFQSFNfRVhURU5TSU9OX0EgPTcwLCAvKlszNDAwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi4wICovCi0gICAgVUJMT0NLX0NKS19VTklGSUVEX0lERU9HUkFQSFMgPTcxLCAvKls0RTAwXSov
Ci0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX1lJX1NZTExBQkxFUyA9
NzIsIC8qW0EwMDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tf
WUlfUkFESUNBTFMgPTczLCAvKltBNDkwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICov
Ci0gICAgVUJMT0NLX0hBTkdVTF9TWUxMQUJMRVMgPTc0LCAvKltBQzAwXSovCi0KLSAgICAvKiog
QHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0hJR0hfU1VSUk9HQVRFUyA9NzUsIC8qW0Q4
MDBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfSElHSF9QUklW
QVRFX1VTRV9TVVJST0dBVEVTID03NiwgLypbREI4MF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNV
IDIuMCAqLwotICAgIFVCTE9DS19MT1dfU1VSUk9HQVRFUyA9NzcsIC8qW0RDMDBdKi8KLQotICAg
IC8qKgotICAgICAqIFNhbWUgYXMgVUJMT0NLX1BSSVZBVEVfVVNFX0FSRUEuCi0gICAgICogVW50
aWwgVW5pY29kZSAzLjEuMSwgdGhlIGNvcnJlc3BvbmRpbmcgYmxvY2sgbmFtZSB3YXMgIlByaXZh
dGUgVXNlIiwKLSAgICAgKiBhbmQgbXVsdGlwbGUgY29kZSBwb2ludCByYW5nZXMgaGFkIHRoaXMg
YmxvY2suCi0gICAgICogVW5pY29kZSAzLjIgcmVuYW1lcyB0aGUgYmxvY2sgZm9yIHRoZSBCTVAg
UFVBIHRvICJQcml2YXRlIFVzZSBBcmVhIiBhbmQKLSAgICAgKiBhZGRzIHNlcGFyYXRlIGJsb2Nr
cyBmb3IgdGhlIHN1cHBsZW1lbnRhcnkgUFVBcy4KLSAgICAgKgotICAgICAqIEBzdGFibGUgSUNV
IDIuMAotICAgICAqLwotICAgIFVCTE9DS19QUklWQVRFX1VTRSA9IDc4LAotICAgIC8qKgotICAg
ICAqIFNhbWUgYXMgVUJMT0NLX1BSSVZBVEVfVVNFLgotICAgICAqIFVudGlsIFVuaWNvZGUgMy4x
LjEsIHRoZSBjb3JyZXNwb25kaW5nIGJsb2NrIG5hbWUgd2FzICJQcml2YXRlIFVzZSIsCi0gICAg
ICogYW5kIG11bHRpcGxlIGNvZGUgcG9pbnQgcmFuZ2VzIGhhZCB0aGlzIGJsb2NrLgotICAgICAq
IFVuaWNvZGUgMy4yIHJlbmFtZXMgdGhlIGJsb2NrIGZvciB0aGUgQk1QIFBVQSB0byAiUHJpdmF0
ZSBVc2UgQXJlYSIgYW5kCi0gICAgICogYWRkcyBzZXBhcmF0ZSBibG9ja3MgZm9yIHRoZSBzdXBw
bGVtZW50YXJ5IFBVQXMuCi0gICAgICoKLSAgICAgKiBAc3RhYmxlIElDVSAyLjAKLSAgICAgKi8K
LSAgICBVQkxPQ0tfUFJJVkFURV9VU0VfQVJFQSA9VUJMT0NLX1BSSVZBVEVfVVNFLCAvKltFMDAw
XSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0NKS19DT01QQVRJ
QklMSVRZX0lERU9HUkFQSFMgPTc5LCAvKltGOTAwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi4wICovCi0gICAgVUJMT0NLX0FMUEhBQkVUSUNfUFJFU0VOVEFUSU9OX0ZPUk1TID04MCwgLypb
RkIwMF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19BUkFCSUNf
UFJFU0VOVEFUSU9OX0ZPUk1TX0EgPTgxLCAvKltGQjUwXSovCi0KLSAgICAvKiogQHN0YWJsZSBJ
Q1UgMi4wICovCi0gICAgVUJMT0NLX0NPTUJJTklOR19IQUxGX01BUktTID04MiwgLypbRkUyMF0q
LwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19DSktfQ09NUEFUSUJJ
TElUWV9GT1JNUyA9ODMsIC8qW0ZFMzBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8K
LSAgICBVQkxPQ0tfU01BTExfRk9STV9WQVJJQU5UUyA9ODQsIC8qW0ZFNTBdKi8KLQotICAgIC8q
KiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfQVJBQklDX1BSRVNFTlRBVElPTl9GT1JN
U19CID04NSwgLypbRkU3MF0qLwotCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVC
TE9DS19TUEVDSUFMUyA9ODYsIC8qW0ZGRjBdKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAg
Ki8KLSAgICBVQkxPQ0tfSEFMRldJRFRIX0FORF9GVUxMV0lEVEhfRk9STVMgPTg3LCAvKltGRjAw
XSovCi0KLSAgICAvKiBOZXcgYmxvY2tzIGluIFVuaWNvZGUgMy4xICovCi0KLSAgICAvKiogQHN0
YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX09MRF9JVEFMSUMgPSA4OCAgLCAvKlsxMDMwMF0q
LwotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfR09USElDID0gODkgLCAv
KlsxMDMzMF0qLwotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfREVTRVJF
VCA9IDkwICwgLypbMTA0MDBdKi8KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJM
T0NLX0JZWkFOVElORV9NVVNJQ0FMX1NZTUJPTFMgPSA5MSAsIC8qWzFEMDAwXSovCi0gICAgLyoq
IEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19NVVNJQ0FMX1NZTUJPTFMgPSA5MiAsIC8q
WzFEMTAwXSovCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19NQVRIRU1B
VElDQUxfQUxQSEFOVU1FUklDX1NZTUJPTFMgPSA5MyAgLCAvKlsxRDQwMF0qLwotICAgIC8qKiBA
c3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRF
TlNJT05fQiAgPSA5NCAsIC8qWzIwMDAwXSovCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwot
ICAgIFVCTE9DS19DSktfQ09NUEFUSUJJTElUWV9JREVPR1JBUEhTX1NVUFBMRU1FTlQgPSA5NSAs
IC8qWzJGODAwXSovCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19UQUdT
ID0gOTYsIC8qW0UwMDAwXSovCi0KLSAgICAvKiBOZXcgYmxvY2tzIGluIFVuaWNvZGUgMy4yICov
Ci0KLSAgICAvKioKLSAgICAgKiBVbmljb2RlIDQuMC4xIHJlbmFtZXMgdGhlICJDeXJpbGxpYyBT
dXBwbGVtZW50YXJ5IiBibG9jayB0byAiQ3lyaWxsaWMgU3VwcGxlbWVudCIuCi0gICAgICogQHN0
YWJsZSBJQ1UgMi4yCi0gICAgICovCi0gICAgVUJMT0NLX0NZUklMTElDX1NVUFBMRU1FTlRBUlkg
PSA5NywgCi0gICAgLyoqIEBkcmFmdCBJQ1UgMy4wICAqLwotICAgIFVCTE9DS19DWVJJTExJQ19T
VVBQTEVNRU5UID0gVUJMT0NLX0NZUklMTElDX1NVUFBMRU1FTlRBUlksIC8qWzA1MDBdKi8KLSAg
ICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUJMT0NLX1RBR0FMT0cgPSA5OCwgLypbMTcw
MF0qLwotICAgIC8qKiBAc3RhYmxlIElDVSAyLjIgKi8KLSAgICBVQkxPQ0tfSEFOVU5PTyA9IDk5
LCAvKlsxNzIwXSovCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMiAqLwotICAgIFVCTE9DS19CVUhJ
RCA9IDEwMCwgLypbMTc0MF0qLwotICAgIC8qKiBAc3RhYmxlIElDVSAyLjIgKi8KLSAgICBVQkxP
Q0tfVEFHQkFOV0EgPSAxMDEsIC8qWzE3NjBdKi8KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICov
Ci0gICAgVUJMT0NLX01JU0NFTExBTkVPVVNfTUFUSEVNQVRJQ0FMX1NZTUJPTFNfQSA9IDEwMiwg
LypbMjdDMF0qLwotICAgIC8qKiBAc3RhYmxlIElDVSAyLjIgKi8KLSAgICBVQkxPQ0tfU1VQUExF
TUVOVEFMX0FSUk9XU19BID0gMTAzLCAvKlsyN0YwXSovCi0gICAgLyoqIEBzdGFibGUgSUNVIDIu
MiAqLwotICAgIFVCTE9DS19TVVBQTEVNRU5UQUxfQVJST1dTX0IgPSAxMDQsIC8qWzI5MDBdKi8K
LSAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUJMT0NLX01JU0NFTExBTkVPVVNfTUFU
SEVNQVRJQ0FMX1NZTUJPTFNfQiA9IDEwNSwgLypbMjk4MF0qLwotICAgIC8qKiBAc3RhYmxlIElD
VSAyLjIgKi8KLSAgICBVQkxPQ0tfU1VQUExFTUVOVEFMX01BVEhFTUFUSUNBTF9PUEVSQVRPUlMg
PSAxMDYsIC8qWzJBMDBdKi8KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUJMT0NL
X0tBVEFLQU5BX1BIT05FVElDX0VYVEVOU0lPTlMgPSAxMDcsIC8qWzMxRjBdKi8KLSAgICAvKiog
QHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUJMT0NLX1ZBUklBVElPTl9TRUxFQ1RPUlMgPSAxMDgs
IC8qW0ZFMDBdKi8KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCi0gICAgVUJMT0NLX1NVUFBM
RU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9BID0gMTA5LCAvKltGMDAwMF0qLwotICAgIC8qKiBA
c3RhYmxlIElDVSAyLjIgKi8KLSAgICBVQkxPQ0tfU1VQUExFTUVOVEFSWV9QUklWQVRFX1VTRV9B
UkVBX0IgPSAxMTAsIC8qWzEwMDAwMF0qLwotCi0gICAgLyogTmV3IGJsb2NrcyBpbiBVbmljb2Rl
IDQgKi8KLQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjYgKi8KLSAgICBVQkxPQ0tfTElNQlUgPSAx
MTEsIC8qWzE5MDBdKi8KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCi0gICAgVUJMT0NLX1RB
SV9MRSA9IDExMiwgLypbMTk1MF0qLwotICAgIC8qKiBAc3RhYmxlIElDVSAyLjYgKi8KLSAgICBV
QkxPQ0tfS0hNRVJfU1lNQk9MUyA9IDExMywgLypbMTlFMF0qLwotICAgIC8qKiBAc3RhYmxlIElD
VSAyLjYgKi8KLSAgICBVQkxPQ0tfUEhPTkVUSUNfRVhURU5TSU9OUyA9IDExNCwgLypbMUQwMF0q
LwotICAgIC8qKiBAc3RhYmxlIElDVSAyLjYgKi8KLSAgICBVQkxPQ0tfTUlTQ0VMTEFORU9VU19T
WU1CT0xTX0FORF9BUlJPV1MgPSAxMTUsIC8qWzJCMDBdKi8KLSAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi42ICovCi0gICAgVUJMT0NLX1lJSklOR19IRVhBR1JBTV9TWU1CT0xTID0gMTE2LCAvKls0REMw
XSovCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLwotICAgIFVCTE9DS19MSU5FQVJfQl9TWUxM
QUJBUlkgPSAxMTcsIC8qWzEwMDAwXSovCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLwotICAg
IFVCTE9DS19MSU5FQVJfQl9JREVPR1JBTVMgPSAxMTgsIC8qWzEwMDgwXSovCi0gICAgLyoqIEBz
dGFibGUgSUNVIDIuNiAqLwotICAgIFVCTE9DS19BRUdFQU5fTlVNQkVSUyA9IDExOSwgLypbMTAx
MDBdKi8KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCi0gICAgVUJMT0NLX1VHQVJJVElDID0g
MTIwLCAvKlsxMDM4MF0qLwotICAgIC8qKiBAc3RhYmxlIElDVSAyLjYgKi8KLSAgICBVQkxPQ0tf
U0hBVklBTiA9IDEyMSwgLypbMTA0NTBdKi8KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCi0g
ICAgVUJMT0NLX09TTUFOWUEgPSAxMjIsIC8qWzEwNDgwXSovCi0gICAgLyoqIEBzdGFibGUgSUNV
IDIuNiAqLwotICAgIFVCTE9DS19DWVBSSU9UX1NZTExBQkFSWSA9IDEyMywgLypbMTA4MDBdKi8K
LSAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCi0gICAgVUJMT0NLX1RBSV9YVUFOX0pJTkdfU1lN
Qk9MUyA9IDEyNCwgLypbMUQzMDBdKi8KLSAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCi0gICAg
VUJMT0NLX1ZBUklBVElPTl9TRUxFQ1RPUlNfU1VQUExFTUVOVCA9IDEyNSwgLypbRTAxMDBdKi8K
LQotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tfQ09VTlQsCi0KLSAgICAv
KiogQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJMT0NLX0lOVkFMSURfQ09ERT0tMQotfTsKLQot
LyoqIEBzdGFibGUgSUNVIDIuMCAqLwotdHlwZWRlZiBlbnVtIFVCbG9ja0NvZGUgVUJsb2NrQ29k
ZTsKLQotLyoqCi0gKiBFYXN0IEFzaWFuIFdpZHRoIGNvbnN0YW50cy4KLSAqCi0gKiBAc2VlIFVD
SEFSX0VBU1RfQVNJQU5fV0lEVEgKLSAqIEBzZWUgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlCi0gKiBA
c3RhYmxlIElDVSAyLjIKLSAqLwotdHlwZWRlZiBlbnVtIFVFYXN0QXNpYW5XaWR0aCB7Ci0gICAg
VV9FQV9ORVVUUkFMLCAgIC8qW05dKi8gLypTZWUgbm90ZSAhISovCi0gICAgVV9FQV9BTUJJR1VP
VVMsIC8qW0FdKi8KLSAgICBVX0VBX0hBTEZXSURUSCwgLypbSF0qLwotICAgIFVfRUFfRlVMTFdJ
RFRILCAvKltGXSovCi0gICAgVV9FQV9OQVJST1csICAgIC8qW05hXSovCi0gICAgVV9FQV9XSURF
LCAgICAgIC8qW1ddKi8KLSAgICBVX0VBX0NPVU5UCi19IFVFYXN0QXNpYW5XaWR0aDsKLS8qCi0g
KiBJbXBsZW1lbnRhdGlvbiBub3RlOgotICogS2VlcCBVRWFzdEFzaWFuV2lkdGggY29uc3RhbnQg
dmFsdWVzIGluIHN5bmMgd2l0aCBuYW1lcyBsaXN0IGluIGdlbnByb3BzL3Byb3BzMi5jLgotICov
Ci0KLS8qKgotICogU2VsZWN0b3IgY29uc3RhbnRzIGZvciB1X2NoYXJOYW1lKCkuCi0gKiB1X2No
YXJOYW1lKCkgcmV0dXJucyB0aGUgIm1vZGVybiIgbmFtZSBvZiBhCi0gKiBVbmljb2RlIGNoYXJh
Y3Rlcjsgb3IgdGhlIG5hbWUgdGhhdCB3YXMgZGVmaW5lZCBpbgotICogVW5pY29kZSB2ZXJzaW9u
IDEuMCwgYmVmb3JlIHRoZSBVbmljb2RlIHN0YW5kYXJkIG1lcmdlZAotICogd2l0aCBJU08tMTA2
NDY7IG9yIGFuICJleHRlbmRlZCIgbmFtZSB0aGF0IGdpdmVzIGVhY2gKLSAqIFVuaWNvZGUgY29k
ZSBwb2ludCBhIHVuaXF1ZSBuYW1lLgotICoKLSAqIEBzZWUgdV9jaGFyTmFtZQotICogQHN0YWJs
ZSBJQ1UgMi4wCi0gKi8KLXR5cGVkZWYgZW51bSBVQ2hhck5hbWVDaG9pY2UgewotICAgIFVfVU5J
Q09ERV9DSEFSX05BTUUsCi0gICAgVV9VTklDT0RFXzEwX0NIQVJfTkFNRSwKLSAgICBVX0VYVEVO
REVEX0NIQVJfTkFNRSwKLSAgICBVX0NIQVJfTkFNRV9DSE9JQ0VfQ09VTlQKLX0gVUNoYXJOYW1l
Q2hvaWNlOwotCi0vKioKLSAqIFNlbGVjdG9yIGNvbnN0YW50cyBmb3IgdV9nZXRQcm9wZXJ0eU5h
bWUoKSBhbmQKLSAqIHVfZ2V0UHJvcGVydHlWYWx1ZU5hbWUoKS4gIFRoZXNlIHNlbGVjdG9ycyBh
cmUgdXNlZCB0byBjaG9vc2Ugd2hpY2gKLSAqIG5hbWUgaXMgcmV0dXJuZWQgZm9yIGEgZ2l2ZW4g
cHJvcGVydHkgb3IgdmFsdWUuICBBbGwgcHJvcGVydGllcyBhbmQKLSAqIHZhbHVlcyBoYXZlIGEg
bG9uZyBuYW1lLiAgTW9zdCBoYXZlIGEgc2hvcnQgbmFtZSwgYnV0IHNvbWUgZG8gbm90LgotICog
VW5pY29kZSBhbGxvd3MgZm9yIGFkZGl0aW9uYWwgbmFtZXMsIGJleW9uZCB0aGUgbG9uZyBhbmQg
c2hvcnQKLSAqIG5hbWUsIHdoaWNoIHdvdWxkIGJlIGluZGljYXRlZCBieSBVX0xPTkdfUFJPUEVS
VFlfTkFNRSArIGksIHdoZXJlCi0gKiBpPTEsIDIsLi4uCi0gKgotICogQHNlZSB1X2dldFByb3Bl
cnR5TmFtZSgpCi0gKiBAc2VlIHVfZ2V0UHJvcGVydHlWYWx1ZU5hbWUoKQotICogQHN0YWJsZSBJ
Q1UgMi40Ci0gKi8KLXR5cGVkZWYgZW51bSBVUHJvcGVydHlOYW1lQ2hvaWNlIHsKLSAgICBVX1NI
T1JUX1BST1BFUlRZX05BTUUsCi0gICAgVV9MT05HX1BST1BFUlRZX05BTUUsCi0gICAgVV9QUk9Q
RVJUWV9OQU1FX0NIT0lDRV9DT1VOVAotfSBVUHJvcGVydHlOYW1lQ2hvaWNlOwotCi0vKioKLSAq
IERlY29tcG9zaXRpb24gVHlwZSBjb25zdGFudHMuCi0gKgotICogQHNlZSBVQ0hBUl9ERUNPTVBP
U0lUSU9OX1RZUEUKLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi10eXBlZGVmIGVudW0gVURlY29t
cG9zaXRpb25UeXBlIHsKLSAgICBVX0RUX05PTkUsICAgICAgICAgICAgICAvKltub25lXSovIC8q
U2VlIG5vdGUgISEqLwotICAgIFVfRFRfQ0FOT05JQ0FMLCAgICAgICAgIC8qW2Nhbl0qLwotICAg
IFVfRFRfQ09NUEFULCAgICAgICAgICAgIC8qW2NvbV0qLwotICAgIFVfRFRfQ0lSQ0xFLCAgICAg
ICAgICAgIC8qW2VuY10qLwotICAgIFVfRFRfRklOQUwsICAgICAgICAgICAgIC8qW2Zpbl0qLwot
ICAgIFVfRFRfRk9OVCwgICAgICAgICAgICAgIC8qW2ZvbnRdKi8KLSAgICBVX0RUX0ZSQUNUSU9O
LCAgICAgICAgICAvKltmcmFdKi8KLSAgICBVX0RUX0lOSVRJQUwsICAgICAgICAgICAvKltpbml0
XSovCi0gICAgVV9EVF9JU09MQVRFRCwgICAgICAgICAgLypbaXNvXSovCi0gICAgVV9EVF9NRURJ
QUwsICAgICAgICAgICAgLypbbWVkXSovCi0gICAgVV9EVF9OQVJST1csICAgICAgICAgICAgLypb
bmFyXSovCi0gICAgVV9EVF9OT0JSRUFLLCAgICAgICAgICAgLypbbmJdKi8KLSAgICBVX0RUX1NN
QUxMLCAgICAgICAgICAgICAvKltzbWxdKi8KLSAgICBVX0RUX1NRVUFSRSwgICAgICAgICAgICAv
KltzcXJdKi8KLSAgICBVX0RUX1NVQiwgICAgICAgICAgICAgICAvKltzdWJdKi8KLSAgICBVX0RU
X1NVUEVSLCAgICAgICAgICAgICAvKltzdXBdKi8KLSAgICBVX0RUX1ZFUlRJQ0FMLCAgICAgICAg
ICAvKlt2ZXJ0XSovCi0gICAgVV9EVF9XSURFLCAgICAgICAgICAgICAgLypbd2lkZV0qLwotICAg
IFVfRFRfQ09VTlQgLyogMTggKi8KLX0gVURlY29tcG9zaXRpb25UeXBlOwotCi0vKioKLSAqIEpv
aW5pbmcgVHlwZSBjb25zdGFudHMuCi0gKgotICogQHNlZSBVQ0hBUl9KT0lOSU5HX1RZUEUKLSAq
IEBzdGFibGUgSUNVIDIuMgotICovCi10eXBlZGVmIGVudW0gVUpvaW5pbmdUeXBlIHsKLSAgICBV
X0pUX05PTl9KT0lOSU5HLCAgICAgICAvKltVXSovIC8qU2VlIG5vdGUgISEqLwotICAgIFVfSlRf
Sk9JTl9DQVVTSU5HLCAgICAgIC8qW0NdKi8KLSAgICBVX0pUX0RVQUxfSk9JTklORywgICAgICAv
KltEXSovCi0gICAgVV9KVF9MRUZUX0pPSU5JTkcsICAgICAgLypbTF0qLwotICAgIFVfSlRfUklH
SFRfSk9JTklORywgICAgIC8qW1JdKi8KLSAgICBVX0pUX1RSQU5TUEFSRU5ULCAgICAgICAvKltU
XSovCi0gICAgVV9KVF9DT1VOVCAvKiA2ICovCi19IFVKb2luaW5nVHlwZTsKLQotLyoqCi0gKiBK
b2luaW5nIEdyb3VwIGNvbnN0YW50cy4KLSAqCi0gKiBAc2VlIFVDSEFSX0pPSU5JTkdfR1JPVVAK
LSAqIEBzdGFibGUgSUNVIDIuMgotICovCi10eXBlZGVmIGVudW0gVUpvaW5pbmdHcm91cCB7Ci0g
ICAgVV9KR19OT19KT0lOSU5HX0dST1VQLAotICAgIFVfSkdfQUlOLAotICAgIFVfSkdfQUxBUEgs
Ci0gICAgVV9KR19BTEVGLAotICAgIFVfSkdfQkVILAotICAgIFVfSkdfQkVUSCwKLSAgICBVX0pH
X0RBTCwKLSAgICBVX0pHX0RBTEFUSF9SSVNILAotICAgIFVfSkdfRSwKLSAgICBVX0pHX0ZFSCwK
LSAgICBVX0pHX0ZJTkFMX1NFTUtBVEgsCi0gICAgVV9KR19HQUYsCi0gICAgVV9KR19HQU1BTCwK
LSAgICBVX0pHX0hBSCwKLSAgICBVX0pHX0hBTVpBX09OX0hFSF9HT0FMLAotICAgIFVfSkdfSEUs
Ci0gICAgVV9KR19IRUgsCi0gICAgVV9KR19IRUhfR09BTCwKLSAgICBVX0pHX0hFVEgsCi0gICAg
VV9KR19LQUYsCi0gICAgVV9KR19LQVBILAotICAgIFVfSkdfS05PVFRFRF9IRUgsCi0gICAgVV9K
R19MQU0sCi0gICAgVV9KR19MQU1BREgsCi0gICAgVV9KR19NRUVNLAotICAgIFVfSkdfTUlNLAot
ICAgIFVfSkdfTk9PTiwKLSAgICBVX0pHX05VTiwKLSAgICBVX0pHX1BFLAotICAgIFVfSkdfUUFG
LAotICAgIFVfSkdfUUFQSCwKLSAgICBVX0pHX1JFSCwKLSAgICBVX0pHX1JFVkVSU0VEX1BFLAot
ICAgIFVfSkdfU0FELAotICAgIFVfSkdfU0FESEUsCi0gICAgVV9KR19TRUVOLAotICAgIFVfSkdf
U0VNS0FUSCwKLSAgICBVX0pHX1NISU4sCi0gICAgVV9KR19TV0FTSF9LQUYsCi0gICAgVV9KR19T
WVJJQUNfV0FXLAotICAgIFVfSkdfVEFILAotICAgIFVfSkdfVEFXLAotICAgIFVfSkdfVEVIX01B
UkJVVEEsCi0gICAgVV9KR19URVRILAotICAgIFVfSkdfV0FXLAotICAgIFVfSkdfWUVILAotICAg
IFVfSkdfWUVIX0JBUlJFRSwKLSAgICBVX0pHX1lFSF9XSVRIX1RBSUwsCi0gICAgVV9KR19ZVURI
LAotICAgIFVfSkdfWVVESF9IRSwKLSAgICBVX0pHX1pBSU4sCi0gICAgVV9KR19GRSwgICAgICAg
IC8qKjwgQHN0YWJsZSBJQ1UgMi42ICovCi0gICAgVV9KR19LSEFQSCwgICAgIC8qKjwgQHN0YWJs
ZSBJQ1UgMi42ICovCi0gICAgVV9KR19aSEFJTiwgICAgIC8qKjwgQHN0YWJsZSBJQ1UgMi42ICov
Ci0gICAgVV9KR19DT1VOVAotfSBVSm9pbmluZ0dyb3VwOwotCi0vKioKLSAqIExpbmUgQnJlYWsg
Y29uc3RhbnRzLgotICoKLSAqIEBzZWUgVUNIQVJfTElORV9CUkVBSwotICogQHN0YWJsZSBJQ1Ug
Mi4yCi0gKi8KLXR5cGVkZWYgZW51bSBVTGluZUJyZWFrIHsKLSAgICBVX0xCX1VOS05PV04sICAg
ICAgICAgICAvKltYWF0qLyAvKlNlZSBub3RlICEhKi8KLSAgICBVX0xCX0FNQklHVU9VUywgICAg
ICAgICAvKltBSV0qLwotICAgIFVfTEJfQUxQSEFCRVRJQywgICAgICAgIC8qW0FMXSovCi0gICAg
VV9MQl9CUkVBS19CT1RILCAgICAgICAgLypbQjJdKi8KLSAgICBVX0xCX0JSRUFLX0FGVEVSLCAg
ICAgICAvKltCQV0qLwotICAgIFVfTEJfQlJFQUtfQkVGT1JFLCAgICAgIC8qW0JCXSovCi0gICAg
VV9MQl9NQU5EQVRPUllfQlJFQUssICAgLypbQktdKi8KLSAgICBVX0xCX0NPTlRJTkdFTlRfQlJF
QUssICAvKltDQl0qLwotICAgIFVfTEJfQ0xPU0VfUFVOQ1RVQVRJT04sIC8qW0NMXSovCi0gICAg
VV9MQl9DT01CSU5JTkdfTUFSSywgICAgLypbQ01dKi8KLSAgICBVX0xCX0NBUlJJQUdFX1JFVFVS
TiwgICAvKltDUl0qLwotICAgIFVfTEJfRVhDTEFNQVRJT04sICAgICAgIC8qW0VYXSovCi0gICAg
VV9MQl9HTFVFLCAgICAgICAgICAgICAgLypbR0xdKi8KLSAgICBVX0xCX0hZUEhFTiwgICAgICAg
ICAgICAvKltIWV0qLwotICAgIFVfTEJfSURFT0dSQVBISUMsICAgICAgIC8qW0lEXSovCi0gICAg
VV9MQl9JTlNFUEVSQUJMRSwKLSAgICAvKiogUmVuYW1lZCBmcm9tIHRoZSBtaXNzcGVsbGVkICJp
bnNlcGVyYWJsZSIgaW4gVW5pY29kZSA0LjAuMS9JQ1UgMy4wIEBkcmFmdCBJQ1UgMy4wICovCi0g
ICAgVV9MQl9JTlNFUEFSQUJMRT1VX0xCX0lOU0VQRVJBQkxFLC8qW0lOXSovCi0gICAgVV9MQl9J
TkZJWF9OVU1FUklDLCAgICAgLypbSVNdKi8KLSAgICBVX0xCX0xJTkVfRkVFRCwgICAgICAgICAv
KltMRl0qLwotICAgIFVfTEJfTk9OU1RBUlRFUiwgICAgICAgIC8qW05TXSovCi0gICAgVV9MQl9O
VU1FUklDLCAgICAgICAgICAgLypbTlVdKi8KLSAgICBVX0xCX09QRU5fUFVOQ1RVQVRJT04sICAv
KltPUF0qLwotICAgIFVfTEJfUE9TVEZJWF9OVU1FUklDLCAgIC8qW1BPXSovCi0gICAgVV9MQl9Q
UkVGSVhfTlVNRVJJQywgICAgLypbUFJdKi8KLSAgICBVX0xCX1FVT1RBVElPTiwgICAgICAgICAv
KltRVV0qLwotICAgIFVfTEJfQ09NUExFWF9DT05URVhULCAgIC8qW1NBXSovCi0gICAgVV9MQl9T
VVJST0dBVEUsICAgICAgICAgLypbU0ddKi8KLSAgICBVX0xCX1NQQUNFLCAgICAgICAgICAgICAv
KltTUF0qLwotICAgIFVfTEJfQlJFQUtfU1lNQk9MUywgICAgIC8qW1NZXSovCi0gICAgVV9MQl9a
V1NQQUNFLCAgICAgICAgICAgLypbWlddKi8KLSAgICBVX0xCX05FWFRfTElORSwgICAgICAgICAv
KltOTF0qLyAvKiBmcm9tIGhlcmUgb246IG5ldyBpbiBVbmljb2RlIDQvSUNVIDIuNiAqLwotICAg
IFVfTEJfV09SRF9KT0lORVIsICAgICAgIC8qW1dKXSovCi0gICAgVV9MQl9DT1VOVAotfSBVTGlu
ZUJyZWFrOwotCi0vKioKLSAqIE51bWVyaWMgVHlwZSBjb25zdGFudHMuCi0gKgotICogQHNlZSBV
Q0hBUl9OVU1FUklDX1RZUEUKLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi10eXBlZGVmIGVudW0g
VU51bWVyaWNUeXBlIHsKLSAgICBVX05UX05PTkUsICAgICAgICAgICAgICAvKltOb25lXSovIC8q
U2VlIG5vdGUgISEqLwotICAgIFVfTlRfREVDSU1BTCwgICAgICAgICAgIC8qW2RlXSovCi0gICAg
VV9OVF9ESUdJVCwgICAgICAgICAgICAgLypbZGldKi8KLSAgICBVX05UX05VTUVSSUMsICAgICAg
ICAgICAvKltudV0qLwotICAgIFVfTlRfQ09VTlQKLX0gVU51bWVyaWNUeXBlOwotCi0vKioKLSAq
IEhhbmd1bCBTeWxsYWJsZSBUeXBlIGNvbnN0YW50cy4KLSAqCi0gKiBAc2VlIFVDSEFSX0hBTkdV
TF9TWUxMQUJMRV9UWVBFCi0gKiBAc3RhYmxlIElDVSAyLjYKLSAqLwotdHlwZWRlZiBlbnVtIFVI
YW5ndWxTeWxsYWJsZVR5cGUgewotICAgIFVfSFNUX05PVF9BUFBMSUNBQkxFLCAgIC8qW05BXSov
IC8qU2VlIG5vdGUgISEqLwotICAgIFVfSFNUX0xFQURJTkdfSkFNTywgICAgIC8qW0xdKi8KLSAg
ICBVX0hTVF9WT1dFTF9KQU1PLCAgICAgICAvKltWXSovCi0gICAgVV9IU1RfVFJBSUxJTkdfSkFN
TywgICAgLypbVF0qLwotICAgIFVfSFNUX0xWX1NZTExBQkxFLCAgICAgIC8qW0xWXSovCi0gICAg
VV9IU1RfTFZUX1NZTExBQkxFLCAgICAgLypbTFZUXSovCi0gICAgVV9IU1RfQ09VTlQKLX0gVUhh
bmd1bFN5bGxhYmxlVHlwZTsKLQotLyoqCi0gKiBDaGVjayBhIGJpbmFyeSBVbmljb2RlIHByb3Bl
cnR5IGZvciBhIGNvZGUgcG9pbnQuCi0gKgotICogVW5pY29kZSwgZXNwZWNpYWxseSBpbiB2ZXJz
aW9uIDMuMiwgZGVmaW5lcyBtYW55IG1vcmUgcHJvcGVydGllcyB0aGFuIHRoZQotICogb3JpZ2lu
YWwgc2V0IGluIFVuaWNvZGVEYXRhLnR4dC4KLSAqCi0gKiBUaGUgcHJvcGVydGllcyBBUElzIGFy
ZSBpbnRlbmRlZCB0byByZWZsZWN0IFVuaWNvZGUgcHJvcGVydGllcyBhcyBkZWZpbmVkCi0gKiBp
biB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkgYW5kIFVuaWNvZGUgVGVjaG5p
Y2FsIFJlcG9ydHMgKFVUUikuCi0gKiBGb3IgZGV0YWlscyBhYm91dCB0aGUgcHJvcGVydGllcyBz
ZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy91Y2QvIC4KLSAqIEZvciBuYW1lcyBvZiBVbmljb2Rl
IHByb3BlcnRpZXMgc2VlIHRoZSBVQ0QgZmlsZSBQcm9wZXJ0eUFsaWFzZXMudHh0LgotICoKLSAq
IEltcG9ydGFudDogSWYgSUNVIGlzIGJ1aWx0IHdpdGggVUNEIGZpbGVzIGZyb20gVW5pY29kZSB2
ZXJzaW9ucyBiZWxvdyAzLjIsCi0gKiB0aGVuIHByb3BlcnRpZXMgbWFya2VkIHdpdGggIm5ldyBp
biBVbmljb2RlIDMuMiIgYXJlIG5vdCBvciBub3QgZnVsbHkgYXZhaWxhYmxlLgotICoKLSAqIEBw
YXJhbSBjIENvZGUgcG9pbnQgdG8gdGVzdC4KLSAqIEBwYXJhbSB3aGljaCBVUHJvcGVydHkgc2Vs
ZWN0b3IgY29uc3RhbnQsIGlkZW50aWZpZXMgd2hpY2ggYmluYXJ5IHByb3BlcnR5IHRvIGNoZWNr
LgotICogICAgICAgIE11c3QgYmUgVUNIQVJfQklOQVJZX1NUQVJUPD13aGljaDxVQ0hBUl9CSU5B
UllfTElNSVQuCi0gKiBAcmV0dXJuIFRSVUUgb3IgRkFMU0UgYWNjb3JkaW5nIHRvIHRoZSBiaW5h
cnkgVW5pY29kZSBwcm9wZXJ0eSB2YWx1ZSBmb3IgYy4KLSAqICAgICAgICAgQWxzbyBGQUxTRSBp
ZiAnd2hpY2gnIGlzIG91dCBvZiBib3VuZHMgb3IgaWYgdGhlIFVuaWNvZGUgdmVyc2lvbgotICog
ICAgICAgICBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIHRoZSBwcm9wZXJ0eSBhdCBhbGwsIG9yIG5v
dCBmb3IgdGhpcyBjb2RlIHBvaW50LgotICoKLSAqIEBzZWUgVVByb3BlcnR5Ci0gKiBAc2VlIHVf
Z2V0SW50UHJvcGVydHlWYWx1ZQotICogQHNlZSB1X2dldFVuaWNvZGVWZXJzaW9uCi0gKiBAc3Rh
YmxlIElDVSAyLjEKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11X2hhc0JpbmFyeVBy
b3BlcnR5KFVDaGFyMzIgYywgVVByb3BlcnR5IHdoaWNoKTsKLQotLyoqCi0gKiBDaGVjayBpZiBh
IGNvZGUgcG9pbnQgaGFzIHRoZSBBbHBoYWJldGljIFVuaWNvZGUgcHJvcGVydHkuCi0gKiBTYW1l
IGFzIHVfaGFzQmluYXJ5UHJvcGVydHkoYywgVUNIQVJfQUxQSEFCRVRJQykuCi0gKiBUaGlzIGlz
IGRpZmZlcmVudCBmcm9tIHVfaXNhbHBoYSEKLSAqIEBwYXJhbSBjIENvZGUgcG9pbnQgdG8gdGVz
dAotICogQHJldHVybiB0cnVlIGlmIHRoZSBjb2RlIHBvaW50IGhhcyB0aGUgQWxwaGFiZXRpYyBV
bmljb2RlIHByb3BlcnR5LCBmYWxzZSBvdGhlcndpc2UKLSAqCi0gKiBAc2VlIFVDSEFSX0FMUEhB
QkVUSUMKLSAqIEBzZWUgdV9pc2FscGhhCi0gKiBAc2VlIHVfaGFzQmluYXJ5UHJvcGVydHkKLSAq
IEBzdGFibGUgSUNVIDIuMQotICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXVfaXNVQWxw
aGFiZXRpYyhVQ2hhcjMyIGMpOwotCi0vKioKLSAqIENoZWNrIGlmIGEgY29kZSBwb2ludCBoYXMg
dGhlIExvd2VyY2FzZSBVbmljb2RlIHByb3BlcnR5LgotICogU2FtZSBhcyB1X2hhc0JpbmFyeVBy
b3BlcnR5KGMsIFVDSEFSX0xPV0VSQ0FTRSkuCi0gKiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHVf
aXNsb3dlciEKLSAqIEBwYXJhbSBjIENvZGUgcG9pbnQgdG8gdGVzdAotICogQHJldHVybiB0cnVl
IGlmIHRoZSBjb2RlIHBvaW50IGhhcyB0aGUgTG93ZXJjYXNlIFVuaWNvZGUgcHJvcGVydHksIGZh
bHNlIG90aGVyd2lzZQotICoKLSAqIEBzZWUgVUNIQVJfTE9XRVJDQVNFCi0gKiBAc2VlIHVfaXNs
b3dlcgotICogQHNlZSB1X2hhc0JpbmFyeVByb3BlcnR5Ci0gKiBAc3RhYmxlIElDVSAyLjEKLSAq
LwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11X2lzVUxvd2VyY2FzZShVQ2hhcjMyIGMpOwot
Ci0vKioKLSAqIENoZWNrIGlmIGEgY29kZSBwb2ludCBoYXMgdGhlIFVwcGVyY2FzZSBVbmljb2Rl
IHByb3BlcnR5LgotICogU2FtZSBhcyB1X2hhc0JpbmFyeVByb3BlcnR5KGMsIFVDSEFSX1VQUEVS
Q0FTRSkuCi0gKiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHVfaXN1cHBlciEKLSAqIEBwYXJhbSBj
IENvZGUgcG9pbnQgdG8gdGVzdAotICogQHJldHVybiB0cnVlIGlmIHRoZSBjb2RlIHBvaW50IGhh
cyB0aGUgVXBwZXJjYXNlIFVuaWNvZGUgcHJvcGVydHksIGZhbHNlIG90aGVyd2lzZQotICoKLSAq
IEBzZWUgVUNIQVJfVVBQRVJDQVNFCi0gKiBAc2VlIHVfaXN1cHBlcgotICogQHNlZSB1X2hhc0Jp
bmFyeVByb3BlcnR5Ci0gKiBAc3RhYmxlIElDVSAyLjEKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9F
WFBPUlQyCi11X2lzVVVwcGVyY2FzZShVQ2hhcjMyIGMpOwotCi0vKioKLSAqIENoZWNrIGlmIGEg
Y29kZSBwb2ludCBoYXMgdGhlIFdoaXRlX1NwYWNlIFVuaWNvZGUgcHJvcGVydHkuCi0gKiBTYW1l
IGFzIHVfaGFzQmluYXJ5UHJvcGVydHkoYywgVUNIQVJfV0hJVEVfU1BBQ0UpLgotICogVGhpcyBp
cyBkaWZmZXJlbnQgZnJvbSBib3RoIHVfaXNzcGFjZSBhbmQgdV9pc1doaXRlc3BhY2UhCi0gKgot
ICogTm90ZTogVGhlcmUgYXJlIHNldmVyYWwgSUNVIHdoaXRlc3BhY2UgZnVuY3Rpb25zOyBwbGVh
c2Ugc2VlIHRoZSB1Y2hhci5oCi0gKiBmaWxlIGRvY3VtZW50YXRpb24gZm9yIGEgZGV0YWlsZWQg
Y29tcGFyaXNvbi4KLSAqCi0gKiBAcGFyYW0gYyBDb2RlIHBvaW50IHRvIHRlc3QKLSAqIEByZXR1
cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBoYXMgdGhlIFdoaXRlX1NwYWNlIFVuaWNvZGUgcHJv
cGVydHksIGZhbHNlIG90aGVyd2lzZS4KLSAqCi0gKiBAc2VlIFVDSEFSX1dISVRFX1NQQUNFCi0g
KiBAc2VlIHVfaXNXaGl0ZXNwYWNlCi0gKiBAc2VlIHVfaXNzcGFjZQotICogQHNlZSB1X2lzSmF2
YVNwYWNlQ2hhcgotICogQHNlZSB1X2hhc0JpbmFyeVByb3BlcnR5Ci0gKiBAc3RhYmxlIElDVSAy
LjEKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11X2lzVVdoaXRlU3BhY2UoVUNoYXIz
MiBjKTsKLQotLyoqCi0gKiBHZXQgdGhlIHByb3BlcnR5IHZhbHVlIGZvciBhbiBlbnVtZXJhdGVk
IG9yIGludGVnZXIgVW5pY29kZSBwcm9wZXJ0eSBmb3IgYSBjb2RlIHBvaW50LgotICogQWxzbyBy
ZXR1cm5zIGJpbmFyeSBhbmQgbWFzayBwcm9wZXJ0eSB2YWx1ZXMuCi0gKgotICogVW5pY29kZSwg
ZXNwZWNpYWxseSBpbiB2ZXJzaW9uIDMuMiwgZGVmaW5lcyBtYW55IG1vcmUgcHJvcGVydGllcyB0
aGFuIHRoZQotICogb3JpZ2luYWwgc2V0IGluIFVuaWNvZGVEYXRhLnR4dC4KLSAqCi0gKiBUaGUg
cHJvcGVydGllcyBBUElzIGFyZSBpbnRlbmRlZCB0byByZWZsZWN0IFVuaWNvZGUgcHJvcGVydGll
cyBhcyBkZWZpbmVkCi0gKiBpbiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkg
YW5kIFVuaWNvZGUgVGVjaG5pY2FsIFJlcG9ydHMgKFVUUikuCi0gKiBGb3IgZGV0YWlscyBhYm91
dCB0aGUgcHJvcGVydGllcyBzZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy8gLgotICogRm9yIG5h
bWVzIG9mIFVuaWNvZGUgcHJvcGVydGllcyBzZWUgdGhlIFVDRCBmaWxlIFByb3BlcnR5QWxpYXNl
cy50eHQuCi0gKgotICogU2FtcGxlIHVzYWdlOgotICogVUVhc3RBc2lhbldpZHRoIGVhPShVRWFz
dEFzaWFuV2lkdGgpdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGMsIFVDSEFSX0VBU1RfQVNJQU5fV0lE
VEgpOwotICogVUJvb2wgYj0oVUJvb2wpdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGMsIFVDSEFSX0lE
RU9HUkFQSElDKTsKLSAqCi0gKiBAcGFyYW0gYyBDb2RlIHBvaW50IHRvIHRlc3QuCi0gKiBAcGFy
YW0gd2hpY2ggVVByb3BlcnR5IHNlbGVjdG9yIGNvbnN0YW50LCBpZGVudGlmaWVzIHdoaWNoIHBy
b3BlcnR5IHRvIGNoZWNrLgotICogICAgICAgIE11c3QgYmUgVUNIQVJfQklOQVJZX1NUQVJUPD13
aGljaDxVQ0hBUl9CSU5BUllfTElNSVQKLSAqICAgICAgICBvciBVQ0hBUl9JTlRfU1RBUlQ8PXdo
aWNoPFVDSEFSX0lOVF9MSU1JVAotICogICAgICAgIG9yIFVDSEFSX01BU0tfU1RBUlQ8PXdoaWNo
PFVDSEFSX01BU0tfTElNSVQuCi0gKiBAcmV0dXJuIE51bWVyaWMgdmFsdWUgdGhhdCBpcyBkaXJl
Y3RseSB0aGUgcHJvcGVydHkgdmFsdWUgb3IsCi0gKiAgICAgICAgIGZvciBlbnVtZXJhdGVkIHBy
b3BlcnRpZXMsIGNvcnJlc3BvbmRzIHRvIHRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSBlbnVtZXJh
dGVkCi0gKiAgICAgICAgIGNvbnN0YW50IG9mIHRoZSByZXNwZWN0aXZlIHByb3BlcnR5IHZhbHVl
IGVudW1lcmF0aW9uIHR5cGUKLSAqICAgICAgICAgKGNhc3QgdG8gZW51bSB0eXBlIGlmIG5lY2Vz
c2FyeSkuCi0gKiAgICAgICAgIFJldHVybnMgMCBvciAxIChmb3IgRkFMU0UvVFJVRSkgZm9yIGJp
bmFyeSBVbmljb2RlIHByb3BlcnRpZXMuCi0gKiAgICAgICAgIFJldHVybnMgYSBiaXQtbWFzayBm
b3IgbWFzayBwcm9wZXJ0aWVzLgotICogICAgICAgICBSZXR1cm5zIDAgaWYgJ3doaWNoJyBpcyBv
dXQgb2YgYm91bmRzIG9yIGlmIHRoZSBVbmljb2RlIHZlcnNpb24KLSAqICAgICAgICAgZG9lcyBu
b3QgaGF2ZSBkYXRhIGZvciB0aGUgcHJvcGVydHkgYXQgYWxsLCBvciBub3QgZm9yIHRoaXMgY29k
ZSBwb2ludC4KLSAqCi0gKiBAc2VlIFVQcm9wZXJ0eQotICogQHNlZSB1X2hhc0JpbmFyeVByb3Bl
cnR5Ci0gKiBAc2VlIHVfZ2V0SW50UHJvcGVydHlNaW5WYWx1ZQotICogQHNlZSB1X2dldEludFBy
b3BlcnR5TWF4VmFsdWUKLSAqIEBzZWUgdV9nZXRVbmljb2RlVmVyc2lvbgotICogQHN0YWJsZSBJ
Q1UgMi4yCi0gKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCi11X2dldEludFByb3BlcnR5
VmFsdWUoVUNoYXIzMiBjLCBVUHJvcGVydHkgd2hpY2gpOwotCi0vKioKLSAqIEdldCB0aGUgbWlu
aW11bSB2YWx1ZSBmb3IgYW4gZW51bWVyYXRlZC9pbnRlZ2VyL2JpbmFyeSBVbmljb2RlIHByb3Bl
cnR5LgotICogQ2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB1X2dldEludFByb3BlcnR5TWF4VmFs
dWUKLSAqIHRvIGFsbG9jYXRlIGFycmF5cyBvZiBVbmljb2RlU2V0IG9yIHNpbWlsYXIuCi0gKgot
ICogQHBhcmFtIHdoaWNoIFVQcm9wZXJ0eSBzZWxlY3RvciBjb25zdGFudCwgaWRlbnRpZmllcyB3
aGljaCBiaW5hcnkgcHJvcGVydHkgdG8gY2hlY2suCi0gKiAgICAgICAgTXVzdCBiZSBVQ0hBUl9C
SU5BUllfU1RBUlQ8PXdoaWNoPFVDSEFSX0JJTkFSWV9MSU1JVAotICogICAgICAgIG9yIFVDSEFS
X0lOVF9TVEFSVDw9d2hpY2g8VUNIQVJfSU5UX0xJTUlULgotICogQHJldHVybiBNaW5pbXVtIHZh
bHVlIHJldHVybmVkIGJ5IHVfZ2V0SW50UHJvcGVydHlWYWx1ZSBmb3IgYSBVbmljb2RlIHByb3Bl
cnR5LgotICogICAgICAgICAwIGlmIHRoZSBwcm9wZXJ0eSBzZWxlY3RvciBpcyBvdXQgb2YgcmFu
Z2UuCi0gKgotICogQHNlZSBVUHJvcGVydHkKLSAqIEBzZWUgdV9oYXNCaW5hcnlQcm9wZXJ0eQot
ICogQHNlZSB1X2dldFVuaWNvZGVWZXJzaW9uCi0gKiBAc2VlIHVfZ2V0SW50UHJvcGVydHlNYXhW
YWx1ZQotICogQHNlZSB1X2dldEludFByb3BlcnR5VmFsdWUKLSAqIEBzdGFibGUgSUNVIDIuMgot
ICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdV9nZXRJbnRQcm9wZXJ0eU1pblZhbHVl
KFVQcm9wZXJ0eSB3aGljaCk7Ci0KLS8qKgotICogR2V0IHRoZSBtYXhpbXVtIHZhbHVlIGZvciBh
biBlbnVtZXJhdGVkL2ludGVnZXIvYmluYXJ5IFVuaWNvZGUgcHJvcGVydHkuCi0gKiBDYW4gYmUg
dXNlZCB0b2dldGhlciB3aXRoIHVfZ2V0SW50UHJvcGVydHlNaW5WYWx1ZQotICogdG8gYWxsb2Nh
dGUgYXJyYXlzIG9mIFVuaWNvZGVTZXQgb3Igc2ltaWxhci4KLSAqCi0gKiBFeGFtcGxlcyBmb3Ig
bWluL21heCB2YWx1ZXMgKGZvciBVbmljb2RlIDMuMik6Ci0gKgotICogLSBVQ0hBUl9CSURJX0NM
QVNTOiAgICAwLzE4IChVX0xFRlRfVE9fUklHSFQvVV9CT1VOREFSWV9ORVVUUkFMKQotICogLSBV
Q0hBUl9TQ1JJUFQ6ICAgICAgICAwLzQ1IChVU0NSSVBUX0NPTU1PTi9VU0NSSVBUX1RBR0JBTldB
KQotICogLSBVQ0hBUl9JREVPR1JBUEhJQzogICAwLzEgIChGQUxTRS9UUlVFKQotICoKLSAqIEZv
ciB1bmRlZmluZWQgVVByb3BlcnR5IGNvbnN0YW50IHZhbHVlcywgbWluL21heCB2YWx1ZXMgd2ls
bCBiZSAwLy0xLgotICoKLSAqIEBwYXJhbSB3aGljaCBVUHJvcGVydHkgc2VsZWN0b3IgY29uc3Rh
bnQsIGlkZW50aWZpZXMgd2hpY2ggYmluYXJ5IHByb3BlcnR5IHRvIGNoZWNrLgotICogICAgICAg
IE11c3QgYmUgVUNIQVJfQklOQVJZX1NUQVJUPD13aGljaDxVQ0hBUl9CSU5BUllfTElNSVQKLSAq
ICAgICAgICBvciBVQ0hBUl9JTlRfU1RBUlQ8PXdoaWNoPFVDSEFSX0lOVF9MSU1JVC4KLSAqIEBy
ZXR1cm4gTWF4aW11bSB2YWx1ZSByZXR1cm5lZCBieSB1X2dldEludFByb3BlcnR5VmFsdWUgZm9y
IGEgVW5pY29kZSBwcm9wZXJ0eS4KLSAqICAgICAgICAgPD0wIGlmIHRoZSBwcm9wZXJ0eSBzZWxl
Y3RvciBpcyBvdXQgb2YgcmFuZ2UuCi0gKgotICogQHNlZSBVUHJvcGVydHkKLSAqIEBzZWUgdV9o
YXNCaW5hcnlQcm9wZXJ0eQotICogQHNlZSB1X2dldFVuaWNvZGVWZXJzaW9uCi0gKiBAc2VlIHVf
Z2V0SW50UHJvcGVydHlNYXhWYWx1ZQotICogQHNlZSB1X2dldEludFByb3BlcnR5VmFsdWUKLSAq
IEBzdGFibGUgSUNVIDIuMgotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdV9nZXRJ
bnRQcm9wZXJ0eU1heFZhbHVlKFVQcm9wZXJ0eSB3aGljaCk7Ci0KLS8qKgotICogR2V0IHRoZSBu
dW1lcmljIHZhbHVlIGZvciBhIFVuaWNvZGUgY29kZSBwb2ludCBhcyBkZWZpbmVkIGluIHRoZQot
ICogVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UuCi0gKgotICogQSAiZG91YmxlIiByZXR1cm4g
dHlwZSBpcyBuZWNlc3NhcnkgYmVjYXVzZQotICogc29tZSBudW1lcmljIHZhbHVlcyBhcmUgZnJh
Y3Rpb25zLCBuZWdhdGl2ZSwgb3IgdG9vIGxhcmdlIGZvciBpbnQzMl90LgotICoKLSAqIEZvciBj
aGFyYWN0ZXJzIHdpdGhvdXQgYW55IG51bWVyaWMgdmFsdWVzIGluIHRoZSBVbmljb2RlIENoYXJh
Y3RlciBEYXRhYmFzZSwKLSAqIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gVV9OT19OVU1FUklD
X1ZBTFVFLgotICoKLSAqIFNpbWlsYXIgdG8gamF2YS5sYW5nLkNoYXJhY3Rlci5nZXROdW1lcmlj
VmFsdWUoKSwgYnV0IHVfZ2V0TnVtZXJpY1ZhbHVlKCkKLSAqIGFsc28gc3VwcG9ydHMgbmVnYXRp
dmUgdmFsdWVzLCBsYXJnZSB2YWx1ZXMsIGFuZCBmcmFjdGlvbnMsCi0gKiB3aGlsZSBKYXZhJ3Mg
Z2V0TnVtZXJpY1ZhbHVlKCkgcmV0dXJucyB2YWx1ZXMgMTAuLjM1IGZvciBBU0NJSSBsZXR0ZXJz
LgotICoKLSAqIEBwYXJhbSBjIENvZGUgcG9pbnQgdG8gZ2V0IHRoZSBudW1lcmljIHZhbHVlIGZv
ci4KLSAqIEByZXR1cm4gTnVtZXJpYyB2YWx1ZSBvZiBjLCBvciBVX05PX05VTUVSSUNfVkFMVUUg
aWYgbm9uZSBpcyBkZWZpbmVkLgotICoKLSAqIEBzZWUgVV9OT19OVU1FUklDX1ZBTFVFCi0gKiBA
c3RhYmxlIElDVSAyLjIKLSAqLwotVV9TVEFCTEUgZG91YmxlIFVfRVhQT1JUMgotdV9nZXROdW1l
cmljVmFsdWUoVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBTcGVjaWFsIHZhbHVlIHRoYXQgaXMgcmV0
dXJuZWQgYnkgdV9nZXROdW1lcmljVmFsdWUgd2hlbgotICogbm8gbnVtZXJpYyB2YWx1ZSBpcyBk
ZWZpbmVkIGZvciBhIGNvZGUgcG9pbnQuCi0gKgotICogQHNlZSB1X2dldE51bWVyaWNWYWx1ZQot
ICogQHN0YWJsZSBJQ1UgMi4yCi0gKi8KLSNkZWZpbmUgVV9OT19OVU1FUklDX1ZBTFVFICgoZG91
YmxlKS0xMjM0NTY3ODkuKQotCi0vKioKLSAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lm
aWVkIGNvZGUgcG9pbnQgaGFzIHRoZSBnZW5lcmFsIGNhdGVnb3J5ICJMbCIKLSAqIChsb3dlcmNh
c2UgbGV0dGVyKS4KLSAqCi0gKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNMb3dlckNh
c2UoKS4KLSAqCi0gKiBUaGlzIG1pc3NlcyBzb21lIGNoYXJhY3RlcnMgdGhhdCBhcmUgYWxzbyBs
b3dlcmNhc2UgYnV0Ci0gKiBoYXZlIGEgZGlmZmVyZW50IGdlbmVyYWwgY2F0ZWdvcnkgdmFsdWUu
Ci0gKiBJbiBvcmRlciB0byBpbmNsdWRlIHRob3NlLCB1c2UgVUNIQVJfTE9XRVJDQVNFLgotICoK
LSAqIEluIGFkZGl0aW9uIHRvIGJlaW5nIGVxdWl2YWxlbnQgdG8gYSBKYXZhIGZ1bmN0aW9uLCB0
aGlzIGFsc28gc2VydmVzCi0gKiBhcyBhIEMvUE9TSVggbWlncmF0aW9uIGZ1bmN0aW9uLgotICog
U2VlIHRoZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbiBm
dW5jdGlvbnMgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBoZWFk
ZXIgZmlsZS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKLSAq
IEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBhbiBMbCBsb3dlcmNhc2UgbGV0dGVy
Ci0gKgotICogQHNlZSBVQ0hBUl9MT1dFUkNBU0UKLSAqIEBzZWUgdV9pc3VwcGVyCi0gKiBAc2Vl
IHVfaXN0aXRsZQotICogQHNlZSB1X2lzbG93ZXIKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1V
X1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXVfaXNsb3dlcihVQ2hhcjMyIGMpOwotCi0vKioKLSAq
IERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaGFzIHRoZSBnZW5l
cmFsIGNhdGVnb3J5ICJMdSIKLSAqICh1cHBlcmNhc2UgbGV0dGVyKS4KLSAqCi0gKiBTYW1lIGFz
IGphdmEubGFuZy5DaGFyYWN0ZXIuaXNVcHBlckNhc2UoKS4KLSAqCi0gKiBUaGlzIG1pc3NlcyBz
b21lIGNoYXJhY3RlcnMgdGhhdCBhcmUgYWxzbyB1cHBlcmNhc2UgYnV0Ci0gKiBoYXZlIGEgZGlm
ZmVyZW50IGdlbmVyYWwgY2F0ZWdvcnkgdmFsdWUuCi0gKiBJbiBvcmRlciB0byBpbmNsdWRlIHRo
b3NlLCB1c2UgVUNIQVJfVVBQRVJDQVNFLgotICoKLSAqIEluIGFkZGl0aW9uIHRvIGJlaW5nIGVx
dWl2YWxlbnQgdG8gYSBKYXZhIGZ1bmN0aW9uLCB0aGlzIGFsc28gc2VydmVzCi0gKiBhcyBhIEMv
UE9TSVggbWlncmF0aW9uIGZ1bmN0aW9uLgotICogU2VlIHRoZSBjb21tZW50cyBhYm91dCBDL1BP
U0lYIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMgaW4gdGhlCi0gKiBkb2N1bWVu
dGF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBoZWFkZXIgZmlsZS4KLSAqCi0gKiBAcGFyYW0gYyB0
aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBw
b2ludCBpcyBhbiBMdSB1cHBlcmNhc2UgbGV0dGVyCi0gKgotICogQHNlZSBVQ0hBUl9VUFBFUkNB
U0UKLSAqIEBzZWUgdV9pc2xvd2VyCi0gKiBAc2VlIHVfaXN0aXRsZQotICogQHNlZSB1X3RvbG93
ZXIKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXVf
aXN1cHBlcihVQ2hhcjMyIGMpOwotCi0vKioKLSAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3Bl
Y2lmaWVkIGNvZGUgcG9pbnQgaXMgYSB0aXRsZWNhc2UgbGV0dGVyLgotICogVHJ1ZSBmb3IgZ2Vu
ZXJhbCBjYXRlZ29yeSAiTHQiICh0aXRsZWNhc2UgbGV0dGVyKS4KLSAqCi0gKiBTYW1lIGFzIGph
dmEubGFuZy5DaGFyYWN0ZXIuaXNUaXRsZUNhc2UoKS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29k
ZSBwb2ludCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBp
cyBhbiBMdCB0aXRsZWNhc2UgbGV0dGVyCi0gKgotICogQHNlZSB1X2lzdXBwZXIKLSAqIEBzZWUg
dV9pc2xvd2VyCi0gKiBAc2VlIHVfdG90aXRsZQotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVf
U1RBQkxFIFVCb29sIFVfRVhQT1JUMgotdV9pc3RpdGxlKFVDaGFyMzIgYyk7Ci0KLS8qKgotICog
RGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIGRpZ2l0IGNo
YXJhY3RlciBhY2NvcmRpbmcgdG8gSmF2YS4KLSAqIFRydWUgZm9yIGNoYXJhY3RlcnMgd2l0aCBn
ZW5lcmFsIGNhdGVnb3J5ICJOZCIgKGRlY2ltYWwgZGlnaXQgbnVtYmVycykuCi0gKiBCZWdpbm5p
bmcgd2l0aCBVbmljb2RlIDQsIHRoaXMgaXMgdGhlIHNhbWUgYXMKLSAqIHRlc3RpbmcgZm9yIHRo
ZSBOdW1lcmljX1R5cGUgb2YgRGVjaW1hbC4KLSAqCi0gKiBTYW1lIGFzIGphdmEubGFuZy5DaGFy
YWN0ZXIuaXNEaWdpdCgpLgotICoKLSAqIEluIGFkZGl0aW9uIHRvIGJlaW5nIGVxdWl2YWxlbnQg
dG8gYSBKYXZhIGZ1bmN0aW9uLCB0aGlzIGFsc28gc2VydmVzCi0gKiBhcyBhIEMvUE9TSVggbWln
cmF0aW9uIGZ1bmN0aW9uLgotICogU2VlIHRoZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJh
Y3RlciBjbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGF0
IHRoZSB0b3Agb2YgdGhpcyBoZWFkZXIgZmlsZS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBw
b2ludCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBh
IGRpZ2l0IGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gQ2hhcmFjdGVyLmlzRGlnaXQoKQotICoKLSAq
IEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXVfaXNkaWdp
dChVQ2hhcjMyIGMpOwotCi0vKioKLSAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVk
IGNvZGUgcG9pbnQgaXMgYSBsZXR0ZXIgY2hhcmFjdGVyLgotICogVHJ1ZSBmb3IgZ2VuZXJhbCBj
YXRlZ29yaWVzICJMIiAobGV0dGVycykuCi0gKgotICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFj
dGVyLmlzTGV0dGVyKCkuCi0gKgotICogSW4gYWRkaXRpb24gdG8gYmVpbmcgZXF1aXZhbGVudCB0
byBhIEphdmEgZnVuY3Rpb24sIHRoaXMgYWxzbyBzZXJ2ZXMKLSAqIGFzIGEgQy9QT1NJWCBtaWdy
YXRpb24gZnVuY3Rpb24uCi0gKiBTZWUgdGhlIGNvbW1lbnRzIGFib3V0IEMvUE9TSVggY2hhcmFj
dGVyIGNsYXNzaWZpY2F0aW9uIGZ1bmN0aW9ucyBpbiB0aGUKLSAqIGRvY3VtZW50YXRpb24gYXQg
dGhlIHRvcCBvZiB0aGlzIGhlYWRlciBmaWxlLgotICoKLSAqIEBwYXJhbSBjIHRoZSBjb2RlIHBv
aW50IHRvIGJlIHRlc3RlZAotICogQHJldHVybiBUUlVFIGlmIHRoZSBjb2RlIHBvaW50IGlzIGEg
bGV0dGVyIGNoYXJhY3RlcgotICoKLSAqIEBzZWUgdV9pc2RpZ2l0Ci0gKiBAc2VlIHVfaXNhbG51
bQotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgotdV9p
c2FscGhhKFVDaGFyMzIgYyk7Ci0KLS8qKgotICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVj
aWZpZWQgY29kZSBwb2ludCBpcyBhbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVyCi0gKiAobGV0dGVy
IG9yIGRpZ2l0KSBhY2NvcmRpbmcgdG8gSmF2YS4KLSAqIFRydWUgZm9yIGNoYXJhY3RlcnMgd2l0
aCBnZW5lcmFsIGNhdGVnb3JpZXMKLSAqICJMIiAobGV0dGVycykgYW5kICJOZCIgKGRlY2ltYWwg
ZGlnaXQgbnVtYmVycykuCi0gKgotICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzTGV0
dGVyT3JEaWdpdCgpLgotICoKLSAqIEluIGFkZGl0aW9uIHRvIGJlaW5nIGVxdWl2YWxlbnQgdG8g
YSBKYXZhIGZ1bmN0aW9uLCB0aGlzIGFsc28gc2VydmVzCi0gKiBhcyBhIEMvUE9TSVggbWlncmF0
aW9uIGZ1bmN0aW9uLgotICogU2VlIHRoZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJhY3Rl
ciBjbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGF0IHRo
ZSB0b3Agb2YgdGhpcyBoZWFkZXIgZmlsZS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2lu
dCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBhbiBh
bHBoYW51bWVyaWMgY2hhcmFjdGVyIGFjY29yZGluZyB0byBDaGFyYWN0ZXIuaXNMZXR0ZXJPckRp
Z2l0KCkKLSAqCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBP
UlQyCi11X2lzYWxudW0oVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBEZXRlcm1pbmVzIHdoZXRoZXIg
dGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGEgaGV4YWRlY2ltYWwgZGlnaXQuCi0gKiBUaGlz
IGlzIGVxdWl2YWxlbnQgdG8gdV9kaWdpdChjLCAxNik+PTAuCi0gKiBUcnVlIGZvciBjaGFyYWN0
ZXJzIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSAiTmQiIChkZWNpbWFsIGRpZ2l0IG51bWJlcnMpCi0g
KiBhcyB3ZWxsIGFzIExhdGluIGxldHRlcnMgYS1mIGFuZCBBLUYgaW4gYm90aCBBU0NJSSBhbmQg
RnVsbHdpZHRoIEFTQ0lJLgotICogKFRoYXQgaXMsIGZvciBsZXR0ZXJzIHdpdGggY29kZSBwb2lu
dHMKLSAqIDAwNDEuLjAwNDYsIDAwNjEuLjAwNjYsIEZGMjEuLkZGMjYsIEZGNDEuLkZGNDYuKQot
ICoKLSAqIEluIG9yZGVyIHRvIG5hcnJvdyB0aGUgZGVmaW5pdGlvbiBvZiBoZXhhZGVjaW1hbCBk
aWdpdHMgdG8gb25seSBBU0NJSQotICogY2hhcmFjdGVycywgdXNlIChjPD0weDdmICYmIHVfaXN4
ZGlnaXQoYykpLgotICoKLSAqIFRoaXMgaXMgYSBDL1BPU0lYIG1pZ3JhdGlvbiBmdW5jdGlvbi4K
LSAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0ZXIgY2xhc3NpZmljYXRp
b24gZnVuY3Rpb25zIGluIHRoZQotICogZG9jdW1lbnRhdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMg
aGVhZGVyIGZpbGUuCi0gKgotICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVk
Ci0gKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSBoZXhhZGVjaW1hbCBkaWdp
dAotICoKLSAqIEBzdGFibGUgSUNVIDIuNgotICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIK
LXVfaXN4ZGlnaXQoVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhl
IHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGEgcHVuY3R1YXRpb24gY2hhcmFjdGVyLgotICogVHJ1
ZSBmb3IgY2hhcmFjdGVycyB3aXRoIGdlbmVyYWwgY2F0ZWdvcmllcyAiUCIgKHB1bmN0dWF0aW9u
KS4KLSAqCi0gKiBUaGlzIGlzIGEgQy9QT1NJWCBtaWdyYXRpb24gZnVuY3Rpb24uCi0gKiBTZWUg
dGhlIGNvbW1lbnRzIGFib3V0IEMvUE9TSVggY2hhcmFjdGVyIGNsYXNzaWZpY2F0aW9uIGZ1bmN0
aW9ucyBpbiB0aGUKLSAqIGRvY3VtZW50YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGhlYWRlciBm
aWxlLgotICoKLSAqIEBwYXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAotICogQHJl
dHVybiBUUlVFIGlmIHRoZSBjb2RlIHBvaW50IGlzIGEgcHVuY3R1YXRpb24gY2hhcmFjdGVyCi0g
KgotICogQHN0YWJsZSBJQ1UgMi42Ci0gKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgotdV9p
c3B1bmN0KFVDaGFyMzIgYyk7Ci0KLS8qKgotICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVj
aWZpZWQgY29kZSBwb2ludCBpcyBhICJncmFwaGljIiBjaGFyYWN0ZXIKLSAqIChwcmludGFibGUs
IGV4Y2x1ZGluZyBzcGFjZXMpLgotICogVFJVRSBmb3IgYWxsIGNoYXJhY3RlcnMgZXhjZXB0IHRo
b3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yaWVzCi0gKiAiQ2MiIChjb250cm9sIGNvZGVzKSwgIkNm
IiAoZm9ybWF0IGNvbnRyb2xzKSwgIkNzIiAoc3Vycm9nYXRlcyksCi0gKiAiQ24iICh1bmFzc2ln
bmVkKSwgYW5kICJaIiAoc2VwYXJhdG9ycykuCi0gKgotICogVGhpcyBpcyBhIEMvUE9TSVggbWln
cmF0aW9uIGZ1bmN0aW9uLgotICogU2VlIHRoZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJh
Y3RlciBjbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGF0
IHRoZSB0b3Agb2YgdGhpcyBoZWFkZXIgZmlsZS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBw
b2ludCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBh
ICJncmFwaGljIiBjaGFyYWN0ZXIKLSAqCi0gKiBAc3RhYmxlIElDVSAyLjYKLSAqLwotVV9TVEFC
TEUgVUJvb2wgVV9FWFBPUlQyCi11X2lzZ3JhcGgoVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBEZXRl
cm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGEgImJsYW5rIiBvciAi
aG9yaXpvbnRhbCBzcGFjZSIsCi0gKiBhIGNoYXJhY3RlciB0aGF0IHZpc2libHkgc2VwYXJhdGVz
IHdvcmRzIG9uIGEgbGluZS4KLSAqIFRoZSBmb2xsb3dpbmcgYXJlIGVxdWl2YWxlbnQgZGVmaW5p
dGlvbnM6Ci0gKgotICogVFJVRSBmb3IgVW5pY29kZSBXaGl0ZV9TcGFjZSBjaGFyYWN0ZXJzIGV4
Y2VwdCBmb3IgInZlcnRpY2FsIHNwYWNlIGNvbnRyb2xzIgotICogd2hlcmUgInZlcnRpY2FsIHNw
YWNlIGNvbnRyb2xzIiBhcmUgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOgotICogVSswMDBBIChM
RikgVSswMDBCIChWVCkgVSswMDBDIChGRikgVSswMDBEIChDUikgVSswMDg1IChORUwpIFUrMjAy
OCAoTFMpIFUrMjAyOSAoUFMpCi0gKgotICogc2FtZSBhcwotICoKLSAqIFRSVUUgZm9yIFUrMDAw
OSAoVEFCKSBhbmQgY2hhcmFjdGVycyB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgIlpzIiAoc3BhY2Ug
c2VwYXJhdG9ycykKLSAqIGV4Y2VwdCBaZXJvIFdpZHRoIFNwYWNlIChaV1NQLCBVKzIwMEIpLgot
ICoKLSAqIE5vdGU6IFRoZXJlIGFyZSBzZXZlcmFsIElDVSB3aGl0ZXNwYWNlIGZ1bmN0aW9uczsg
cGxlYXNlIHNlZSB0aGUgdWNoYXIuaAotICogZmlsZSBkb2N1bWVudGF0aW9uIGZvciBhIGRldGFp
bGVkIGNvbXBhcmlzb24uCi0gKgotICogVGhpcyBpcyBhIEMvUE9TSVggbWlncmF0aW9uIGZ1bmN0
aW9uLgotICogU2VlIHRoZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJhY3RlciBjbGFzc2lm
aWNhdGlvbiBmdW5jdGlvbnMgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGF0IHRoZSB0b3Agb2Yg
dGhpcyBoZWFkZXIgZmlsZS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0
ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBhICJibGFuayIKLSAq
Ci0gKiBAc3RhYmxlIElDVSAyLjYKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11X2lz
YmxhbmsoVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNp
ZmllZCBjb2RlIHBvaW50IGlzICJkZWZpbmVkIiwKLSAqIHdoaWNoIHVzdWFsbHkgbWVhbnMgdGhh
dCBpdCBpcyBhc3NpZ25lZCBhIGNoYXJhY3Rlci4KLSAqIFRydWUgZm9yIGdlbmVyYWwgY2F0ZWdv
cmllcyBvdGhlciB0aGFuICJDbiIgKG90aGVyLCBub3QgYXNzaWduZWQpLAotICogaS5lLiwgdHJ1
ZSBmb3IgYWxsIGNvZGUgcG9pbnRzIG1lbnRpb25lZCBpbiBVbmljb2RlRGF0YS50eHQuCi0gKgot
ICogTm90ZSB0aGF0IG5vbi1jaGFyYWN0ZXIgY29kZSBwb2ludHMgKGUuZy4sIFUrRkREMCkgYXJl
IG5vdCAiZGVmaW5lZCIKLSAqICh0aGV5IGFyZSBDbiksIGJ1dCBzdXJyb2dhdGUgY29kZSBwb2lu
dHMgYXJlICJkZWZpbmVkIiAoQ3MpLgotICoKLSAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rl
ci5pc0RlZmluZWQoKS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0
ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBhc3NpZ25lZCBhIGNoYXJh
Y3RlcgotICoKLSAqIEBzZWUgdV9pc2RpZ2l0Ci0gKiBAc2VlIHVfaXNhbHBoYQotICogQHNlZSB1
X2lzYWxudW0KLSAqIEBzZWUgdV9pc3VwcGVyCi0gKiBAc2VlIHVfaXNsb3dlcgotICogQHNlZSB1
X2lzdGl0bGUKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9S
VDIKLXVfaXNkZWZpbmVkKFVDaGFyMzIgYyk7Ci0KLS8qKgotICogRGV0ZXJtaW5lcyBpZiB0aGUg
c3BlY2lmaWVkIGNoYXJhY3RlciBpcyBhIHNwYWNlIGNoYXJhY3RlciBvciBub3QuCi0gKgotICog
Tm90ZTogVGhlcmUgYXJlIHNldmVyYWwgSUNVIHdoaXRlc3BhY2UgZnVuY3Rpb25zOyBwbGVhc2Ug
c2VlIHRoZSB1Y2hhci5oCi0gKiBmaWxlIGRvY3VtZW50YXRpb24gZm9yIGEgZGV0YWlsZWQgY29t
cGFyaXNvbi4KLSAqCi0gKiBUaGlzIGlzIGEgQy9QT1NJWCBtaWdyYXRpb24gZnVuY3Rpb24uCi0g
KiBTZWUgdGhlIGNvbW1lbnRzIGFib3V0IEMvUE9TSVggY2hhcmFjdGVyIGNsYXNzaWZpY2F0aW9u
IGZ1bmN0aW9ucyBpbiB0aGUKLSAqIGRvY3VtZW50YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGhl
YWRlciBmaWxlLgotICoKLSAqIEBwYXJhbSBjICAgIHRoZSBjaGFyYWN0ZXIgdG8gYmUgdGVzdGVk
Ci0gKiBAcmV0dXJuICB0cnVlIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSBzcGFjZSBjaGFyYWN0ZXI7
IGZhbHNlIG90aGVyd2lzZS4KLSAqCi0gKiBAc2VlIHVfaXNKYXZhU3BhY2VDaGFyCi0gKiBAc2Vl
IHVfaXNXaGl0ZXNwYWNlCi0gKiBAc2VlIHVfaXNVV2hpdGVTcGFjZQotICogQHN0YWJsZSBJQ1Ug
Mi4wCi0gKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgotdV9pc3NwYWNlKFVDaGFyMzIgYyk7
Ci0KLS8qKgotICogRGV0ZXJtaW5lIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIHNw
YWNlIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gSmF2YS4KLSAqIFRydWUgZm9yIGNoYXJhY3RlcnMg
d2l0aCBnZW5lcmFsIGNhdGVnb3JpZXMgIloiIChzZXBhcmF0b3JzKSwKLSAqIHdoaWNoIGRvZXMg
bm90IGluY2x1ZGUgY29udHJvbCBjb2RlcyAoZS5nLiwgVEFCIG9yIExpbmUgRmVlZCkuCi0gKgot
ICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzU3BhY2VDaGFyKCkuCi0gKgotICogTm90
ZTogVGhlcmUgYXJlIHNldmVyYWwgSUNVIHdoaXRlc3BhY2UgZnVuY3Rpb25zOyBwbGVhc2Ugc2Vl
IHRoZSB1Y2hhci5oCi0gKiBmaWxlIGRvY3VtZW50YXRpb24gZm9yIGEgZGV0YWlsZWQgY29tcGFy
aXNvbi4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKLSAqIEBy
ZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBhIHNwYWNlIGNoYXJhY3RlciBhY2NvcmRp
bmcgdG8gQ2hhcmFjdGVyLmlzU3BhY2VDaGFyKCkKLSAqCi0gKiBAc2VlIHVfaXNzcGFjZQotICog
QHNlZSB1X2lzV2hpdGVzcGFjZQotICogQHNlZSB1X2lzVVdoaXRlU3BhY2UKLSAqIEBzdGFibGUg
SUNVIDIuNgotICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXVfaXNKYXZhU3BhY2VDaGFy
KFVDaGFyMzIgYyk7Ci0KLS8qKgotICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNvZGUg
cG9pbnQgaXMgYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gSmF2YS9JQ1UuCi0g
KiBBIGNoYXJhY3RlciBpcyBjb25zaWRlcmVkIHRvIGJlIGEgSmF2YSB3aGl0ZXNwYWNlIGNoYXJh
Y3RlciBpZiBhbmQgb25seQotICogaWYgaXQgc2F0aXNmaWVzIG9uZSBvZiB0aGUgZm9sbG93aW5n
IGNyaXRlcmlhOgotICoKLSAqIC0gSXQgaXMgYSBVbmljb2RlIHNlcGFyYXRvciAoY2F0ZWdvcmll
cyAiWiIpLCBidXQgaXMgbm90Ci0gKiAgICAgIGEgbm8tYnJlYWsgc3BhY2UgKFUrMDBBMCBOQlNQ
IG9yIFUrMjAwNyBGaWd1cmUgU3BhY2Ugb3IgVSsyMDJGIE5hcnJvdyBOQlNQKS4KLSAqIC0gSXQg
aXMgVSswMDA5IEhPUklaT05UQUwgVEFCVUxBVElPTi4KLSAqIC0gSXQgaXMgVSswMDBBIExJTkUg
RkVFRC4KLSAqIC0gSXQgaXMgVSswMDBCIFZFUlRJQ0FMIFRBQlVMQVRJT04uCi0gKiAtIEl0IGlz
IFUrMDAwQyBGT1JNIEZFRUQuCi0gKiAtIEl0IGlzIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4uCi0g
KiAtIEl0IGlzIFUrMDAxQyBGSUxFIFNFUEFSQVRPUi4KLSAqIC0gSXQgaXMgVSswMDFEIEdST1VQ
IFNFUEFSQVRPUi4KLSAqIC0gSXQgaXMgVSswMDFFIFJFQ09SRCBTRVBBUkFUT1IuCi0gKiAtIEl0
IGlzIFUrMDAxRiBVTklUIFNFUEFSQVRPUi4KLSAqIC0gSXQgaXMgVSswMDg1IE5FWFQgTElORS4K
LSAqCi0gKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKCkgZXhjZXB0
IHRoYXQgSmF2YSBvbWl0cyBVKzAwODUuCi0gKgotICogTm90ZTogVGhlcmUgYXJlIHNldmVyYWwg
SUNVIHdoaXRlc3BhY2UgZnVuY3Rpb25zOyBwbGVhc2Ugc2VlIHRoZSB1Y2hhci5oCi0gKiBmaWxl
IGRvY3VtZW50YXRpb24gZm9yIGEgZGV0YWlsZWQgY29tcGFyaXNvbi4KLSAqCi0gKiBAcGFyYW0g
YyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29k
ZSBwb2ludCBpcyBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGFjY29yZGluZyB0byBKYXZhL0lDVQot
ICoKLSAqIEBzZWUgdV9pc3NwYWNlCi0gKiBAc2VlIHVfaXNKYXZhU3BhY2VDaGFyCi0gKiBAc2Vl
IHVfaXNVV2hpdGVTcGFjZQotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVCb29s
IFVfRVhQT1JUMgotdV9pc1doaXRlc3BhY2UoVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBEZXRlcm1p
bmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGEgY29udHJvbCBjaGFyYWN0
ZXIKLSAqIChhcyBkZWZpbmVkIGJ5IHRoaXMgZnVuY3Rpb24pLgotICogQSBjb250cm9sIGNoYXJh
Y3RlciBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLSAqIC0gSVNPIDgtYml0IGNvbnRyb2wgY2hh
cmFjdGVyIChVKzAwMDAuLlUrMDAxZiBhbmQgVSswMDdmLi5VKzAwOWYpCi0gKiAtIFVfQ09OVFJP
TF9DSEFSIChDYykKLSAqIC0gVV9GT1JNQVRfQ0hBUiAoQ2YpCi0gKiAtIFVfTElORV9TRVBBUkFU
T1IgKFpsKQotICogLSBVX1BBUkFHUkFQSF9TRVBBUkFUT1IgKFpwKQotICoKLSAqIFRoaXMgaXMg
YSBDL1BPU0lYIG1pZ3JhdGlvbiBmdW5jdGlvbi4KLSAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQg
Qy9QT1NJWCBjaGFyYWN0ZXIgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQotICogZG9j
dW1lbnRhdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCi0gKgotICogQHBhcmFt
IGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCi0gKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNv
ZGUgcG9pbnQgaXMgYSBjb250cm9sIGNoYXJhY3RlcgotICoKLSAqIEBzZWUgVUNIQVJfREVGQVVM
VF9JR05PUkFCTEVfQ09ERV9QT0lOVAotICogQHNlZSB1X2lzcHJpbnQKLSAqIEBzdGFibGUgSUNV
IDIuMAotICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXVfaXNjbnRybChVQ2hhcjMyIGMp
OwotCi0vKioKLSAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQg
aXMgYW4gSVNPIGNvbnRyb2wgY29kZS4KLSAqIFRydWUgZm9yIFUrMDAwMC4uVSswMDFmIGFuZCBV
KzAwN2YuLlUrMDA5ZiAoZ2VuZXJhbCBjYXRlZ29yeSAiQ2MiKS4KLSAqCi0gKiBTYW1lIGFzIGph
dmEubGFuZy5DaGFyYWN0ZXIuaXNJU09Db250cm9sKCkuCi0gKgotICogQHBhcmFtIGMgdGhlIGNv
ZGUgcG9pbnQgdG8gYmUgdGVzdGVkCi0gKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQg
aXMgYW4gSVNPIGNvbnRyb2wgY29kZQotICoKLSAqIEBzZWUgdV9pc2NudHJsCi0gKiBAc3RhYmxl
IElDVSAyLjYKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11X2lzSVNPQ29udHJvbChV
Q2hhcjMyIGMpOwotCi0vKioKLSAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGNv
ZGUgcG9pbnQgaXMgYSBwcmludGFibGUgY2hhcmFjdGVyLgotICogVHJ1ZSBmb3IgZ2VuZXJhbCBj
YXRlZ29yaWVzIDxlbT5vdGhlcjwvZW0+IHRoYW4gIkMiIChjb250cm9scykuCi0gKgotICogVGhp
cyBpcyBhIEMvUE9TSVggbWlncmF0aW9uIGZ1bmN0aW9uLgotICogU2VlIHRoZSBjb21tZW50cyBh
Ym91dCBDL1BPU0lYIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMgaW4gdGhlCi0g
KiBkb2N1bWVudGF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBoZWFkZXIgZmlsZS4KLSAqCi0gKiBA
cGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0
aGUgY29kZSBwb2ludCBpcyBhIHByaW50YWJsZSBjaGFyYWN0ZXIKLSAqCi0gKiBAc2VlIFVDSEFS
X0RFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQKLSAqIEBzZWUgdV9pc2NudHJsCi0gKiBAc3Rh
YmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11X2lzcHJpbnQoVUNo
YXIzMiBjKTsKLQotLyoqCi0gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2Rl
IHBvaW50IGlzIGEgYmFzZSBjaGFyYWN0ZXIuCi0gKiBUcnVlIGZvciBnZW5lcmFsIGNhdGVnb3Jp
ZXMgIkwiIChsZXR0ZXJzKSwgIk4iIChudW1iZXJzKSwKLSAqICJNYyIgKHNwYWNpbmcgY29tYmlu
aW5nIG1hcmtzKSwgYW5kICJNZSIgKGVuY2xvc2luZyBtYXJrcykuCi0gKgotICogTm90ZSB0aGF0
IHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBpbgotICogY2hh
cHRlciAzLjUsIGNvbmZvcm1hbmNlIGNsYXVzZSBEMTMsCi0gKiB3aGljaCBkZWZpbmVzIGJhc2Ug
Y2hhcmFjdGVycyB0byBiZSBhbGwgY2hhcmFjdGVycyAobm90IENuKQotICogdGhhdCBkbyBub3Qg
Z3JhcGhpY2FsbHkgY29tYmluZSB3aXRoIHByZWNlZGluZyBjaGFyYWN0ZXJzIChNKQotICogYW5k
IHRoYXQgYXJlIG5laXRoZXIgY29udHJvbCAoQ2MpIG9yIGZvcm1hdCAoQ2YpIGNoYXJhY3RlcnMu
Ci0gKgotICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCi0gKiBAcmV0dXJu
IFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSBiYXNlIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8g
dGhpcyBmdW5jdGlvbgotICoKLSAqIEBzZWUgdV9pc2FscGhhCi0gKiBAc2VlIHVfaXNkaWdpdAot
ICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgotdV9pc2Jh
c2UoVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBiaWRpcmVjdGlvbmFsIGNhdGVn
b3J5IHZhbHVlIGZvciB0aGUgY29kZSBwb2ludCwKLSAqIHdoaWNoIGlzIHVzZWQgaW4gdGhlIFVu
aWNvZGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0KLSAqIChVQVggIzkgaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9yZXBvcnRzL3RyOS8pLgotICogTm90ZSB0aGF0IHNvbWUgPGVtPnVuYXNzaWduZWQ8
L2VtPiBjb2RlIHBvaW50cyBoYXZlIGJpZGkgdmFsdWVzCi0gKiBvZiBSIG9yIEFMIGJlY2F1c2Ug
dGhleSBhcmUgaW4gYmxvY2tzIHRoYXQgYXJlIHJlc2VydmVkCi0gKiBmb3IgUmlnaHQtVG8tTGVm
dCBzY3JpcHRzLgotICoKLSAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5nZXREaXJlY3Rp
b25hbGl0eSgpCi0gKgotICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCi0g
KiBAcmV0dXJuIHRoZSBiaWRpcmVjdGlvbmFsIGNhdGVnb3J5IChVQ2hhckRpcmVjdGlvbikgdmFs
dWUKLSAqCi0gKiBAc2VlIFVDaGFyRGlyZWN0aW9uCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwot
VV9TVEFCTEUgVUNoYXJEaXJlY3Rpb24gVV9FWFBPUlQyCi11X2NoYXJEaXJlY3Rpb24oVUNoYXIz
MiBjKTsKLQotLyoqCi0gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNvZGUgcG9pbnQgaGFzIHRo
ZSBCaWRpX01pcnJvcmVkIHByb3BlcnR5LgotICogVGhpcyBwcm9wZXJ0eSBpcyBzZXQgZm9yIGNo
YXJhY3RlcnMgdGhhdCBhcmUgY29tbW9ubHkgdXNlZCBpbgotICogUmlnaHQtVG8tTGVmdCBjb250
ZXh0cyBhbmQgbmVlZCB0byBiZSBkaXNwbGF5ZWQgd2l0aCBhICJtaXJyb3JlZCIKLSAqIGdseXBo
LgotICoKLSAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5pc01pcnJvcmVkKCkuCi0gKiBT
YW1lIGFzIFVDSEFSX0JJRElfTUlSUk9SRUQKLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2lu
dCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY2hhcmFjdGVyIGhhcyB0aGUg
QmlkaV9NaXJyb3JlZCBwcm9wZXJ0eQotICoKLSAqIEBzZWUgVUNIQVJfQklESV9NSVJST1JFRAot
ICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgotdV9pc01p
cnJvcmVkKFVDaGFyMzIgYyk7Ci0KLS8qKgotICogTWFwcyB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rl
ciB0byBhICJtaXJyb3ItaW1hZ2UiIGNoYXJhY3Rlci4KLSAqIEZvciBjaGFyYWN0ZXJzIHdpdGgg
dGhlIEJpZGlfTWlycm9yZWQgcHJvcGVydHksIGltcGxlbWVudGF0aW9ucwotICogc29tZXRpbWVz
IG5lZWQgYSAicG9vciBtYW4ncyIgbWFwcGluZyB0byBhbm90aGVyIFVuaWNvZGUKLSAqIGNoYXJh
Y3RlciAoY29kZSBwb2ludCkgc3VjaCB0aGF0IHRoZSBkZWZhdWx0IGdseXBoIG1heSBzZXJ2ZQot
ICogYXMgdGhlIG1pcnJvci1pbWFnZSBvZiB0aGUgZGVmYXVsdCBnbHlwaCBvZiB0aGUgc3BlY2lm
aWVkCi0gKiBjaGFyYWN0ZXIuIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXh0IGNvbnZlcnNpb24gdG8g
YW5kIGZyb20KLSAqIGNvZGVwYWdlcyB3aXRoIHZpc3VhbCBvcmRlciwgYW5kIGZvciBkaXNwbGF5
cyB3aXRob3V0IGdseXBoCi0gKiBzZWxlY2V0aW9uIGNhcGFiaWxpdGllcy4KLSAqCi0gKiBAcGFy
YW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSBtYXBwZWQKLSAqIEByZXR1cm4gYW5vdGhlciBVbmlj
b2RlIGNvZGUgcG9pbnQgdGhhdCBtYXkgc2VydmUgYXMgYSBtaXJyb3ItaW1hZ2UKLSAqICAgICAg
ICAgc3Vic3RpdHV0ZSwgb3IgYyBpdHNlbGYgaWYgdGhlcmUgaXMgbm8gc3VjaCBtYXBwaW5nIG9y
IGMKLSAqICAgICAgICAgZG9lcyBub3QgaGF2ZSB0aGUgQmlkaV9NaXJyb3JlZCBwcm9wZXJ0eQot
ICoKLSAqIEBzZWUgVUNIQVJfQklESV9NSVJST1JFRAotICogQHNlZSB1X2lzTWlycm9yZWQKLSAq
IEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgotdV9jaGFy
TWlycm9yKFVDaGFyMzIgYyk7Ci0KLS8qKgotICogUmV0dXJucyB0aGUgZ2VuZXJhbCBjYXRlZ29y
eSB2YWx1ZSBmb3IgdGhlIGNvZGUgcG9pbnQuCi0gKgotICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hh
cmFjdGVyLmdldFR5cGUoKS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0
ZXN0ZWQKLSAqIEByZXR1cm4gdGhlIGdlbmVyYWwgY2F0ZWdvcnkgKFVDaGFyQ2F0ZWdvcnkpIHZh
bHVlCi0gKgotICogQHNlZSBVQ2hhckNhdGVnb3J5Ci0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwot
VV9TVEFCTEUgaW50OF90IFVfRVhQT1JUMgotdV9jaGFyVHlwZShVQ2hhcjMyIGMpOwotCi0vKioK
LSAqIEdldCBhIHNpbmdsZS1iaXQgYml0IHNldCBmb3IgdGhlIGdlbmVyYWwgY2F0ZWdvcnkgb2Yg
YSBjaGFyYWN0ZXIuCi0gKiBUaGlzIGJpdCBzZXQgY2FuIGJlIGNvbXBhcmVkIGJpdHdpc2Ugd2l0
aCBVX0dDX1NNX01BU0ssIFVfR0NfTF9NQVNLLCBldGMuCi0gKiBTYW1lIGFzIFVfTUFTSyh1X2No
YXJUeXBlKGMpKS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQK
LSAqIEByZXR1cm4gYSBzaW5nbGUtYml0IG1hc2sgY29ycmVzcG9uZGluZyB0byB0aGUgZ2VuZXJh
bCBjYXRlZ29yeSAoVUNoYXJDYXRlZ29yeSkgdmFsdWUKLSAqCi0gKiBAc2VlIHVfY2hhclR5cGUK
LSAqIEBzZWUgVUNoYXJDYXRlZ29yeQotICogQHNlZSBVX0dDX0NOX01BU0sKLSAqIEBzdGFibGUg
SUNVIDIuMQotICovCi0jZGVmaW5lIFVfR0VUX0dDX01BU0soYykgVV9NQVNLKHVfY2hhclR5cGUo
YykpCi0KLS8qKgotICogQ2FsbGJhY2sgZnJvbSB1X2VudW1DaGFyVHlwZXMoKSwgaXMgY2FsbGVk
IGZvciBlYWNoIGNvbnRpZ3VvdXMgcmFuZ2UKLSAqIG9mIGNvZGUgcG9pbnRzIGMgKHdoZXJlIHN0
YXJ0PD1jPGxpbWl0KQotICogd2l0aCB0aGUgc2FtZSBVbmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkg
KCJjaGFyYWN0ZXIgdHlwZSIpLgotICoKLSAqIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBjYW4gc3Rv
cCB0aGUgZW51bWVyYXRpb24gYnkgcmV0dXJuaW5nIEZBTFNFLgotICoKLSAqIEBwYXJhbSBjb250
ZXh0IGFuIG9wYXF1ZSBwb2ludGVyLCBhcyBwYXNzZWQgaW50byB1dHJpZV9lbnVtKCkKLSAqIEBw
YXJhbSBzdGFydCB0aGUgZmlyc3QgY29kZSBwb2ludCBpbiBhIGNvbnRpZ3VvdXMgcmFuZ2Ugd2l0
aCB2YWx1ZQotICogQHBhcmFtIGxpbWl0IG9uZSBwYXN0IHRoZSBsYXN0IGNvZGUgcG9pbnQgaW4g
YSBjb250aWd1b3VzIHJhbmdlIHdpdGggdmFsdWUKLSAqIEBwYXJhbSB0eXBlIHRoZSBnZW5lcmFs
IGNhdGVnb3J5IGZvciBhbGwgY29kZSBwb2ludHMgaW4gW3N0YXJ0Li5saW1pdFsKLSAqIEByZXR1
cm4gRkFMU0UgdG8gc3RvcCB0aGUgZW51bWVyYXRpb24KLSAqCi0gKiBAc3RhYmxlIElDVSAyLjEK
LSAqIEBzZWUgVUNoYXJDYXRlZ29yeQotICogQHNlZSB1X2VudW1DaGFyVHlwZXMKLSAqLwotdHlw
ZWRlZiBVQm9vbCBVX0NBTExDT05WCi1VQ2hhckVudW1UeXBlUmFuZ2UoY29uc3Qgdm9pZCAqY29u
dGV4dCwgVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBsaW1pdCwgVUNoYXJDYXRlZ29yeSB0eXBlKTsK
LQotLyoqCi0gKiBFbnVtZXJhdGUgZWZmaWNpZW50bHkgYWxsIGNvZGUgcG9pbnRzIHdpdGggdGhl
aXIgVW5pY29kZSBnZW5lcmFsIGNhdGVnb3JpZXMuCi0gKgotICogVGhpcyBpcyB1c2VmdWwgZm9y
IGJ1aWxkaW5nIGRhdGEgc3RydWN0dXJlcyAoZS5nLiwgVW5pY29kZVNldCdzKSwKLSAqIGZvciBl
bnVtZXJhdGluZyBhbGwgYXNzaWduZWQgY29kZSBwb2ludHMgKHR5cGUhPVVfVU5BU1NJR05FRCks
IGV0Yy4KLSAqCi0gKiBGb3IgZWFjaCBjb250aWd1b3VzIHJhbmdlIG9mIGNvZGUgcG9pbnRzIHdp
dGggYSBnaXZlbiBnZW5lcmFsIGNhdGVnb3J5ICgiY2hhcmFjdGVyIHR5cGUiKSwKLSAqIHRoZSBV
Q2hhckVudW1UeXBlUmFuZ2UgZnVuY3Rpb24gaXMgY2FsbGVkLgotICogQWRqYWNlbnQgcmFuZ2Vz
IGhhdmUgZGlmZmVyZW50IHR5cGVzLgotICogVGhlIFVuaWNvZGUgU3RhbmRhcmQgZ3VhcmFudGVl
cyB0aGF0IHRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSB0eXBlIGlzIDAuLjMxLgotICoKLSAqIEBw
YXJhbSBlbnVtUmFuZ2UgYSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgZm9y
IGVhY2ggY29udGlndW91cyByYW5nZQotICogICAgICAgICAgICAgICAgICBvZiBjb2RlIHBvaW50
cyB3aXRoIHRoZSBzYW1lIGdlbmVyYWwgY2F0ZWdvcnkKLSAqIEBwYXJhbSBjb250ZXh0IGFuIG9w
YXF1ZSBwb2ludGVyIHRoYXQgaXMgcGFzc2VkIG9uIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbgot
ICoKLSAqIEBzdGFibGUgSUNVIDIuMQotICogQHNlZSBVQ2hhckNhdGVnb3J5Ci0gKiBAc2VlIFVD
aGFyRW51bVR5cGVSYW5nZQotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdV9lbnVtQ2hh
clR5cGVzKFVDaGFyRW51bVR5cGVSYW5nZSAqZW51bVJhbmdlLCBjb25zdCB2b2lkICpjb250ZXh0
KTsKLQotI2lmICFVQ09ORklHX05PX05PUk1BTElaQVRJT04KLQotLyoqCi0gKiBSZXR1cm5zIHRo
ZSBjb21iaW5pbmcgY2xhc3Mgb2YgdGhlIGNvZGUgcG9pbnQgYXMgc3BlY2lmaWVkIGluIFVuaWNv
ZGVEYXRhLnR4dC4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCBvZiB0aGUgY2hhcmFj
dGVyCi0gKiBAcmV0dXJuIHRoZSBjb21iaW5pbmcgY2xhc3Mgb2YgdGhlIGNoYXJhY3RlcgotICog
QHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIHVpbnQ4X3QgVV9FWFBPUlQyCi11X2dldENv
bWJpbmluZ0NsYXNzKFVDaGFyMzIgYyk7Ci0KLSNlbmRpZgotCi0vKioKLSAqIFJldHVybnMgdGhl
IGRlY2ltYWwgZGlnaXQgdmFsdWUgb2YgYSBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4KLSAqIFN1
Y2ggY2hhcmFjdGVycyBoYXZlIHRoZSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIgKGRlY2ltYWwgZGln
aXQgbnVtYmVycykKLSAqIGFuZCBhIE51bWVyaWNfVHlwZSBvZiBEZWNpbWFsLgotICoKLSAqIFVu
bGlrZSBJQ1UgcmVsZWFzZXMgYmVmb3JlIDIuNiwgbm8gZGlnaXQgdmFsdWVzIGFyZSByZXR1cm5l
ZCBmb3IgYW55Ci0gKiBIYW4gY2hhcmFjdGVycyBiZWNhdXNlIEhhbiBudW1iZXIgY2hhcmFjdGVy
cyBhcmUgb2Z0ZW4gdXNlZCB3aXRoIGEgc3BlY2lhbAotICogQ2hpbmVzZS1zdHlsZSBudW1iZXIg
Zm9ybWF0ICh3aXRoIGNoYXJhY3RlcnMgZm9yIHBvd2VycyBvZiAxMCBpbiBiZXR3ZWVuKQotICog
aW5zdGVhZCBvZiBpbiBkZWNpbWFsLXBvc2l0aW9uYWwgbm90YXRpb24uCi0gKiBVbmljb2RlIDQg
ZXhwbGljaXRseSBhc3NpZ25zIEhhbiBudW1iZXIgY2hhcmFjdGVycyB0aGUgTnVtZXJpY19UeXBl
Ci0gKiBOdW1lcmljIGluc3RlYWQgb2YgRGVjaW1hbC4KLSAqIFNlZSBKaXR0ZXJidWcgMTQ4MyBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFVzZSB1X2dldEludFByb3BlcnR5VmFsdWUoYywgVUNI
QVJfTlVNRVJJQ19UWVBFKSBhbmQgdV9nZXROdW1lcmljVmFsdWUoKQotICogZm9yIGNvbXBsZXRl
IG51bWVyaWMgVW5pY29kZSBwcm9wZXJ0aWVzLgotICoKLSAqIEBwYXJhbSBjIHRoZSBjb2RlIHBv
aW50IGZvciB3aGljaCB0byBnZXQgdGhlIGRlY2ltYWwgZGlnaXQgdmFsdWUKLSAqIEByZXR1cm4g
dGhlIGRlY2ltYWwgZGlnaXQgdmFsdWUgb2YgYywKLSAqICAgICAgICAgb3IgLTEgaWYgYyBpcyBu
b3QgYSBkZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcgotICoKLSAqIEBzZWUgdV9nZXROdW1lcmljVmFs
dWUKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgot
dV9jaGFyRGlnaXRWYWx1ZShVQ2hhcjMyIGMpOwotCi0vKioKLSAqIFJldHVybnMgdGhlIFVuaWNv
ZGUgYWxsb2NhdGlvbiBibG9jayB0aGF0IGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIuCi0gKgotICog
QHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCi0gKiBAcmV0dXJuIHRoZSBibG9j
ayB2YWx1ZSAoVUJsb2NrQ29kZSkgZm9yIGMKLSAqCi0gKiBAc2VlIFVCbG9ja0NvZGUKLSAqIEBz
dGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQmxvY2tDb2RlIFVfRVhQT1JUMgotdWJsb2Nr
X2dldENvZGUoVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBSZXRyaWV2ZSB0aGUgbmFtZSBvZiBhIFVu
aWNvZGUgY2hhcmFjdGVyLgotICogRGVwZW5kaW5nIG9uIDxjb2RlPm5hbWVDaG9pY2U8L2NvZGU+
LCB0aGUgY2hhcmFjdGVyIG5hbWUgd3JpdHRlbgotICogaW50byB0aGUgYnVmZmVyIGlzIHRoZSAi
bW9kZXJuIiBuYW1lIG9yIHRoZSBuYW1lIHRoYXQgd2FzIGRlZmluZWQKLSAqIGluIFVuaWNvZGUg
dmVyc2lvbiAxLjAuCi0gKiBUaGUgbmFtZSBjb250YWlucyBvbmx5ICJpbnZhcmlhbnQiIGNoYXJh
Y3RlcnMKLSAqIGxpa2UgQS1aLCAwLTksIHNwYWNlLCBhbmQgJy0nLgotICogVW5pY29kZSAxLjAg
bmFtZXMgYXJlIG9ubHkgcmV0cmlldmVkIGlmIHRoZXkgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBt
b2Rlcm4KLSAqIG5hbWVzIGFuZCBpZiB0aGUgZGF0YSBmaWxlIGNvbnRhaW5zIHRoZSBkYXRhIGZv
ciB0aGVtLiBnZW5uYW1lcyBtYXkgb3IgbWF5Ci0gKiBub3QgYmUgY2FsbGVkIHdpdGggYSBjb21t
YW5kIGxpbmUgb3B0aW9uIHRvIGluY2x1ZGUgMS4wIG5hbWVzIGluIHVuYW1lcy5kYXQuCi0gKgot
ICogQHBhcmFtIGNvZGUgVGhlIGNoYXJhY3RlciAoY29kZSBwb2ludCkgZm9yIHdoaWNoIHRvIGdl
dCB0aGUgbmFtZS4KLSAqICAgICAgICAgICAgIEl0IG11c3QgYmUgPGNvZGU+MDw9Y29kZTw9MHgx
MGZmZmY8L2NvZGU+LgotICogQHBhcmFtIG5hbWVDaG9pY2UgU2VsZWN0b3IgZm9yIHdoaWNoIG5h
bWUgdG8gZ2V0LgotICogQHBhcmFtIGJ1ZmZlciBEZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBjb3B5
aW5nIHRoZSBuYW1lLgotICogICAgICAgICAgICAgICBUaGUgbmFtZSB3aWxsIGFsd2F5cyBiZSB6
ZXJvLXRlcm1pbmF0ZWQuCi0gKiAgICAgICAgICAgICAgIElmIHRoZXJlIGlzIG5vIG5hbWUsIHRo
ZW4gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nLgotICogQHBhcmFt
IGJ1ZmZlckxlbmd0aCA8Y29kZT49PXNpemVvZihidWZmZXIpPC9jb2RlPgotICogQHBhcmFtIHBF
cnJvckNvZGUgUG9pbnRlciB0byBhIFVFcnJvckNvZGUgdmFyaWFibGU7Ci0gKiAgICAgICAgY2hl
Y2sgZm9yIDxjb2RlPlVfU1VDQ0VTUygpPC9jb2RlPiBhZnRlciA8Y29kZT51X2NoYXJOYW1lKCk8
L2NvZGU+Ci0gKiAgICAgICAgcmV0dXJucy4KLSAqIEByZXR1cm4gVGhlIGxlbmd0aCBvZiB0aGUg
bmFtZSwgb3IgMCBpZiB0aGVyZSBpcyBubyBuYW1lIGZvciB0aGlzIGNoYXJhY3Rlci4KLSAqICAg
ICAgICAgSWYgdGhlIGJ1ZmZlckxlbmd0aCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxl
bmd0aCwgdGhlbiB0aGUgYnVmZmVyCi0gKiAgICAgICAgIGNvbnRhaW5zIHRoZSB0cnVuY2F0ZWQg
bmFtZSBhbmQgdGhlIHJldHVybmVkIGxlbmd0aCBpbmRpY2F0ZXMgdGhlIGZ1bGwKLSAqICAgICAg
ICAgbGVuZ3RoIG9mIHRoZSBuYW1lLgotICogICAgICAgICBUaGUgbGVuZ3RoIGRvZXMgbm90IGlu
Y2x1ZGUgdGhlIHplcm8tdGVybWluYXRpb24uCi0gKgotICogQHNlZSBVQ2hhck5hbWVDaG9pY2UK
LSAqIEBzZWUgdV9jaGFyRnJvbU5hbWUKLSAqIEBzZWUgdV9lbnVtQ2hhck5hbWVzCi0gKiBAc3Rh
YmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVfY2hhck5hbWUo
VUNoYXIzMiBjb2RlLCBVQ2hhck5hbWVDaG9pY2UgbmFtZUNob2ljZSwKLSAgICAgICAgICAgY2hh
ciAqYnVmZmVyLCBpbnQzMl90IGJ1ZmZlckxlbmd0aCwKLSAgICAgICAgICAgVUVycm9yQ29kZSAq
cEVycm9yQ29kZSk7Ci0KLS8qKgotICogR2V0IHRoZSBJU08gMTA2NDYgY29tbWVudCBmb3IgYSBj
aGFyYWN0ZXIuCi0gKiBUaGUgSVNPIDEwNjQ2IGNvbW1lbnQgaXMgYW4gaW5mb3JtYXRpdmUgZmll
bGQgaW4gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyCi0gKiBEYXRhYmFzZSAoVW5pY29kZURhdGEudHh0
IGZpZWxkIDExKSBhbmQgaXMgZnJvbSB0aGUgSVNPIDEwNjQ2IG5hbWVzIGxpc3QuCi0gKgotICog
QHBhcmFtIGMgVGhlIGNoYXJhY3RlciAoY29kZSBwb2ludCkgZm9yIHdoaWNoIHRvIGdldCB0aGUg
SVNPIGNvbW1lbnQuCi0gKiAgICAgICAgICAgICBJdCBtdXN0IGJlIDxjb2RlPjA8PWM8PTB4MTBm
ZmZmPC9jb2RlPi4KLSAqIEBwYXJhbSBkZXN0IERlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIGNvcHlp
bmcgdGhlIGNvbW1lbnQuCi0gKiAgICAgICAgICAgICBUaGUgY29tbWVudCB3aWxsIGJlIHplcm8t
dGVybWluYXRlZCBpZiBwb3NzaWJsZS4KLSAqICAgICAgICAgICAgIElmIHRoZXJlIGlzIG5vIGNv
bW1lbnQsIHRoZW4gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nLgot
ICogQHBhcmFtIGRlc3RDYXBhY2l0eSA8Y29kZT49PXNpemVvZihkZXN0KTwvY29kZT4KLSAqIEBw
YXJhbSBwRXJyb3JDb2RlIFBvaW50ZXIgdG8gYSBVRXJyb3JDb2RlIHZhcmlhYmxlOwotICogICAg
ICAgIGNoZWNrIGZvciA8Y29kZT5VX1NVQ0NFU1MoKTwvY29kZT4gYWZ0ZXIgPGNvZGU+dV9nZXRJ
U09Db21tZW50KCk8L2NvZGU+Ci0gKiAgICAgICAgcmV0dXJucy4KLSAqIEByZXR1cm4gVGhlIGxl
bmd0aCBvZiB0aGUgY29tbWVudCwgb3IgMCBpZiB0aGVyZSBpcyBubyBjb21tZW50IGZvciB0aGlz
IGNoYXJhY3Rlci4KLSAqICAgICAgICAgSWYgdGhlIGRlc3RDYXBhY2l0eSBpcyBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gdGhlIGxlbmd0aCwgdGhlbiB0aGUgYnVmZmVyCi0gKiAgICAgICAgIGNvbnRh
aW5zIHRoZSB0cnVuY2F0ZWQgbmFtZSBhbmQgdGhlIHJldHVybmVkIGxlbmd0aCBpbmRpY2F0ZXMg
dGhlIGZ1bGwKLSAqICAgICAgICAgbGVuZ3RoIG9mIHRoZSBuYW1lLgotICogICAgICAgICBUaGUg
bGVuZ3RoIGRvZXMgbm90IGluY2x1ZGUgdGhlIHplcm8tdGVybWluYXRpb24uCi0gKgotICogQHN0
YWJsZSBJQ1UgMi4yCi0gKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCi11X2dldElTT0Nv
bW1lbnQoVUNoYXIzMiBjLAotICAgICAgICAgICAgICAgIGNoYXIgKmRlc3QsIGludDMyX3QgZGVz
dENhcGFjaXR5LAotICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwotCi0v
KioKLSAqIEZpbmQgYSBVbmljb2RlIGNoYXJhY3RlciBieSBpdHMgbmFtZSBhbmQgcmV0dXJuIGl0
cyBjb2RlIHBvaW50IHZhbHVlLgotICogVGhlIG5hbWUgaXMgbWF0Y2hlZCBleGFjdGx5IGFuZCBj
b21wbGV0ZWx5LgotICogSWYgdGhlIG5hbWUgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGNvZGUg
cG9pbnQsIDxpPnBFcnJvckNvZGU8L2k+Ci0gKiBpcyBzZXQgdG8gPGNvZGU+VV9JTlZBTElEX0NI
QVJfRk9VTkQ8L2NvZGU+LgotICogQSBVbmljb2RlIDEuMCBuYW1lIGlzIG1hdGNoZWQgb25seSBp
ZiBpdCBkaWZmZXJzIGZyb20gdGhlIG1vZGVybiBuYW1lLgotICogVW5pY29kZSBuYW1lcyBhcmUg
YWxsIHVwcGVyY2FzZS4gRXh0ZW5kZWQgbmFtZXMgYXJlIGxvd2VyY2FzZSBmb2xsb3dlZAotICog
YnkgYW4gdXBwZXJjYXNlIGhleGFkZWNpbWFsIG51bWJlciwgYW5kIHdpdGhpbiBhbmdsZSBicmFj
a2V0cy4KLSAqCi0gKiBAcGFyYW0gbmFtZUNob2ljZSBTZWxlY3RvciBmb3Igd2hpY2ggbmFtZSB0
byBtYXRjaC4KLSAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIHRvIG1hdGNoLgotICogQHBhcmFtIHBF
cnJvckNvZGUgUG9pbnRlciB0byBhIFVFcnJvckNvZGUgdmFyaWFibGUKLSAqIEByZXR1cm4gVGhl
IFVuaWNvZGUgdmFsdWUgb2YgdGhlIGNvZGUgcG9pbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZSwKLSAq
ICAgICAgICAgb3IgYW4gdW5kZWZpbmVkIHZhbHVlIGlmIHRoZXJlIGlzIG5vIHN1Y2ggY29kZSBw
b2ludC4KLSAqCi0gKiBAc2VlIFVDaGFyTmFtZUNob2ljZQotICogQHNlZSB1X2NoYXJOYW1lCi0g
KiBAc2VlIHVfZW51bUNoYXJOYW1lcwotICogQHN0YWJsZSBJQ1UgMS43Ci0gKi8KLVVfU1RBQkxF
IFVDaGFyMzIgVV9FWFBPUlQyCi11X2NoYXJGcm9tTmFtZShVQ2hhck5hbWVDaG9pY2UgbmFtZUNo
b2ljZSwKLSAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICBV
RXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQotLyoqCi0gKiBUeXBlIG9mIGEgY2FsbGJhY2sgZnVu
Y3Rpb24gZm9yIHVfZW51bUNoYXJOYW1lcygpIHRoYXQgZ2V0cyBjYWxsZWQKLSAqIGZvciBlYWNo
IFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGNvZGUgcG9pbnQgdmFsdWUgYW5kCi0gKiB0aGUg
Y2hhcmFjdGVyIG5hbWUuCi0gKiBJZiBzdWNoIGEgZnVuY3Rpb24gcmV0dXJucyBGQUxTRSwgdGhl
biB0aGUgZW51bWVyYXRpb24gaXMgc3RvcHBlZC4KLSAqCi0gKiBAcGFyYW0gY29udGV4dCBUaGUg
Y29udGV4dCBwb2ludGVyIHRoYXQgd2FzIHBhc3NlZCB0byB1X2VudW1DaGFyTmFtZXMoKS4KLSAq
IEBwYXJhbSBjb2RlIFRoZSBVbmljb2RlIGNvZGUgcG9pbnQgZm9yIHRoZSBjaGFyYWN0ZXIgd2l0
aCB0aGlzIG5hbWUuCi0gKiBAcGFyYW0gbmFtZUNob2ljZSBTZWxlY3RvciBmb3Igd2hpY2gga2lu
ZCBvZiBuYW1lcyBpcyBlbnVtZXJhdGVkLgotICogQHBhcmFtIG5hbWUgVGhlIGNoYXJhY3Rlcidz
IG5hbWUsIHplcm8tdGVybWluYXRlZC4KLSAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0
aGUgbmFtZS4KLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgZW51bWVyYXRpb24gc2hvdWxkIGNvbnRp
bnVlLCBGQUxTRSB0byBzdG9wIGl0LgotICoKLSAqIEBzZWUgVUNoYXJOYW1lQ2hvaWNlCi0gKiBA
c2VlIHVfZW51bUNoYXJOYW1lcwotICogQHN0YWJsZSBJQ1UgMS43Ci0gKi8KLXR5cGVkZWYgVUJv
b2wgVUVudW1DaGFyTmFtZXNGbih2b2lkICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVDaGFyMzIgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
Q2hhck5hbWVDaG9pY2UgbmFtZUNob2ljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QgbGVuZ3RoKTsKLQotLyoqCi0gKiBFbnVtZXJhdGUgYWxsIGFzc2lnbmVkIFVuaWNvZGUgY2hh
cmFjdGVycyBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgbGltaXQKLSAqIGNvZGUgcG9pbnRzIChzdGFy
dCBpbmNsdXNpdmUsIGxpbWl0IGV4Y2x1c2l2ZSkgYW5kIGNhbGwgYSBmdW5jdGlvbgotICogZm9y
IGVhY2gsIHBhc3NpbmcgdGhlIGNvZGUgcG9pbnQgdmFsdWUgYW5kIHRoZSBjaGFyYWN0ZXIgbmFt
ZS4KLSAqIEZvciBVbmljb2RlIDEuMCBuYW1lcywgb25seSB0aG9zZSBhcmUgZW51bWVyYXRlZCB0
aGF0IGRpZmZlciBmcm9tIHRoZQotICogbW9kZXJuIG5hbWVzLgotICoKLSAqIEBwYXJhbSBzdGFy
dCBUaGUgZmlyc3QgY29kZSBwb2ludCBpbiB0aGUgZW51bWVyYXRpb24gcmFuZ2UuCi0gKiBAcGFy
YW0gbGltaXQgT25lIG1vcmUgdGhhbiB0aGUgbGFzdCBjb2RlIHBvaW50IGluIHRoZSBlbnVtZXJh
dGlvbiByYW5nZQotICogICAgICAgICAgICAgICh0aGUgZmlyc3Qgb25lIGFmdGVyIHRoZSByYW5n
ZSkuCi0gKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRoYXQgaXMgdG8gYmUgY2FsbGVkIGZvciBl
YWNoIGNoYXJhY3RlciBuYW1lLgotICogQHBhcmFtIGNvbnRleHQgQW4gYXJiaXRyYXJ5IHBvaW50
ZXIgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgotICogQHBhcmFtIG5hbWVDaG9pY2Ug
U2VsZWN0b3IgZm9yIHdoaWNoIGtpbmQgb2YgbmFtZXMgdG8gZW51bWVyYXRlLgotICogQHBhcmFt
IHBFcnJvckNvZGUgUG9pbnRlciB0byBhIFVFcnJvckNvZGUgdmFyaWFibGUKLSAqCi0gKiBAc2Vl
IFVDaGFyTmFtZUNob2ljZQotICogQHNlZSBVRW51bUNoYXJOYW1lc0ZuCi0gKiBAc2VlIHVfY2hh
ck5hbWUKLSAqIEBzZWUgdV9jaGFyRnJvbU5hbWUKLSAqIEBzdGFibGUgSUNVIDEuNwotICovCi1V
X1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdV9lbnVtQ2hhck5hbWVzKFVDaGFyMzIgc3RhcnQsIFVD
aGFyMzIgbGltaXQsCi0gICAgICAgICAgICAgICAgVUVudW1DaGFyTmFtZXNGbiAqZm4sCi0gICAg
ICAgICAgICAgICAgdm9pZCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICBVQ2hhck5hbWVDaG9p
Y2UgbmFtZUNob2ljZSwKLSAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsK
LQotLyoqCi0gKiBSZXR1cm4gdGhlIFVuaWNvZGUgbmFtZSBmb3IgYSBnaXZlbiBwcm9wZXJ0eSwg
YXMgZ2l2ZW4gaW4gdGhlCi0gKiBVbmljb2RlIGRhdGFiYXNlIGZpbGUgUHJvcGVydHlBbGlhc2Vz
LnR4dC4KLSAqCi0gKiBJbiBhZGRpdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXBzIHRoZSBwcm9wZXJ0
eQotICogVUNIQVJfR0VORVJBTF9DQVRFR09SWV9NQVNLIHRvIHRoZSBzeW50aGV0aWMgbmFtZXMg
ImdjbSIgLwotICogIkdlbmVyYWxfQ2F0ZWdvcnlfTWFzayIuICBUaGVzZSBuYW1lcyBhcmUgbm90
IGluCi0gKiBQcm9wZXJ0eUFsaWFzZXMudHh0LgotICoKLSAqIEBwYXJhbSBwcm9wZXJ0eSBVUHJv
cGVydHkgc2VsZWN0b3Igb3RoZXIgdGhhbiBVQ0hBUl9JTlZBTElEX0NPREUuCi0gKiAgICAgICAg
IElmIG91dCBvZiByYW5nZSwgTlVMTCBpcyByZXR1cm5lZC4KLSAqCi0gKiBAcGFyYW0gbmFtZUNo
b2ljZSBzZWxlY3RvciBmb3Igd2hpY2ggbmFtZSB0byBnZXQuICBJZiBvdXQgb2YgcmFuZ2UsCi0g
KiAgICAgICAgIE5VTEwgaXMgcmV0dXJuZWQuICBBbGwgcHJvcGVydGllcyBoYXZlIGEgbG9uZyBu
YW1lLiAgTW9zdAotICogICAgICAgICBoYXZlIGEgc2hvcnQgbmFtZSwgYnV0IHNvbWUgZG8gbm90
LiAgVW5pY29kZSBhbGxvd3MgZm9yCi0gKiAgICAgICAgIGFkZGl0aW9uYWwgbmFtZXM7IGlmIHBy
ZXNlbnQgdGhlc2Ugd2lsbCBiZSByZXR1cm5lZCBieQotICogICAgICAgICBVX0xPTkdfUFJPUEVS
VFlfTkFNRSArIGksIHdoZXJlIGk9MSwgMiwuLi4KLSAqCi0gKiBAcmV0dXJuIGEgcG9pbnRlciB0
byB0aGUgbmFtZSwgb3IgTlVMTCBpZiBlaXRoZXIgdGhlCi0gKiAgICAgICAgIHByb3BlcnR5IG9y
IHRoZSBuYW1lQ2hvaWNlIGlzIG91dCBvZiByYW5nZS4gIElmIGEgZ2l2ZW4KLSAqICAgICAgICAg
bmFtZUNob2ljZSByZXR1cm5zIE5VTEwsIHRoZW4gYWxsIGxhcmdlciB2YWx1ZXMgb2YKLSAqICAg
ICAgICAgbmFtZUNob2ljZSB3aWxsIHJldHVybiBOVUxMLCB3aXRoIG9uZSBleGNlcHRpb246IGlm
IE5VTEwgaXMKLSAqICAgICAgICAgcmV0dXJuZWQgZm9yIFVfU0hPUlRfUFJPUEVSVFlfTkFNRSwg
dGhlbgotICogICAgICAgICBVX0xPTkdfUFJPUEVSVFlfTkFNRSAoYW5kIGhpZ2hlcikgbWF5IHN0
aWxsIHJldHVybiBhCi0gKiAgICAgICAgIG5vbi1OVUxMIHZhbHVlLiAgVGhlIHJldHVybmVkIHBv
aW50ZXIgaXMgdmFsaWQgdW50aWwKLSAqICAgICAgICAgdV9jbGVhbnVwKCkgaXMgY2FsbGVkLgot
ICoKLSAqIEBzZWUgVVByb3BlcnR5Ci0gKiBAc2VlIFVQcm9wZXJ0eU5hbWVDaG9pY2UKLSAqIEBz
dGFibGUgSUNVIDIuNAotICovCi1VX1NUQUJMRSBjb25zdCBjaGFyKiBVX0VYUE9SVDIKLXVfZ2V0
UHJvcGVydHlOYW1lKFVQcm9wZXJ0eSBwcm9wZXJ0eSwKLSAgICAgICAgICAgICAgICAgIFVQcm9w
ZXJ0eU5hbWVDaG9pY2UgbmFtZUNob2ljZSk7Ci0KLS8qKgotICogUmV0dXJuIHRoZSBVUHJvcGVy
dHkgZW51bSBmb3IgYSBnaXZlbiBwcm9wZXJ0eSBuYW1lLCBhcyBzcGVjaWZpZWQKLSAqIGluIHRo
ZSBVbmljb2RlIGRhdGFiYXNlIGZpbGUgUHJvcGVydHlBbGlhc2VzLnR4dC4gIFNob3J0LCBsb25n
LCBhbmQKLSAqIGFueSBvdGhlciB2YXJpYW50cyBhcmUgcmVjb2duaXplZC4KLSAqCi0gKiBJbiBh
ZGRpdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXBzIHRoZSBzeW50aGV0aWMgbmFtZXMgImdjbSIgLwot
ICogIkdlbmVyYWxfQ2F0ZWdvcnlfTWFzayIgdG8gdGhlIHByb3BlcnR5Ci0gKiBVQ0hBUl9HRU5F
UkFMX0NBVEVHT1JZX01BU0suICBUaGVzZSBuYW1lcyBhcmUgbm90IGluCi0gKiBQcm9wZXJ0eUFs
aWFzZXMudHh0LgotICoKLSAqIEBwYXJhbSBhbGlhcyB0aGUgcHJvcGVydHkgbmFtZSB0byBiZSBt
YXRjaGVkLiAgVGhlIG5hbWUgaXMgY29tcGFyZWQKLSAqICAgICAgICAgdXNpbmcgImxvb3NlIG1h
dGNoaW5nIiBhcyBkZXNjcmliZWQgaW4gUHJvcGVydHlBbGlhc2VzLnR4dC4KLSAqCi0gKiBAcmV0
dXJuIGEgVVByb3BlcnR5IGVudW0sIG9yIFVDSEFSX0lOVkFMSURfQ09ERSBpZiB0aGUgZ2l2ZW4g
bmFtZQotICogICAgICAgICBkb2VzIG5vdCBtYXRjaCBhbnkgcHJvcGVydHkuCi0gKgotICogQHNl
ZSBVUHJvcGVydHkKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi1VX1NUQUJMRSBVUHJvcGVydHkg
VV9FWFBPUlQyCi11X2dldFByb3BlcnR5RW51bShjb25zdCBjaGFyKiBhbGlhcyk7Ci0KLS8qKgot
ICogUmV0dXJuIHRoZSBVbmljb2RlIG5hbWUgZm9yIGEgZ2l2ZW4gcHJvcGVydHkgdmFsdWUsIGFz
IGdpdmVuIGluIHRoZQotICogVW5pY29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5VmFsdWVBbGlh
c2VzLnR4dC4KLSAqCi0gKiBOb3RlOiBTb21lIG9mIHRoZSBuYW1lcyBpbiBQcm9wZXJ0eVZhbHVl
QWxpYXNlcy50eHQgY2FuIG9ubHkgYmUKLSAqIHJldHJpZXZlZCB1c2luZyBVQ0hBUl9HRU5FUkFM
X0NBVEVHT1JZX01BU0ssIG5vdAotICogVUNIQVJfR0VORVJBTF9DQVRFR09SWS4gIFRoZXNlIGlu
Y2x1ZGU6ICJDIiAvICJPdGhlciIsICJMIiAvCi0gKiAiTGV0dGVyIiwgIkxDIiAvICJDYXNlZF9M
ZXR0ZXIiLCAiTSIgLyAiTWFyayIsICJOIiAvICJOdW1iZXIiLCAiUCIKLSAqIC8gIlB1bmN0dWF0
aW9uIiwgIlMiIC8gIlN5bWJvbCIsIGFuZCAiWiIgLyAiU2VwYXJhdG9yIi4KLSAqCi0gKiBAcGFy
YW0gcHJvcGVydHkgVVByb3BlcnR5IHNlbGVjdG9yIGNvbnN0YW50LgotICogICAgICAgIE11c3Qg
YmUgVUNIQVJfQklOQVJZX1NUQVJUPD13aGljaDxVQ0hBUl9CSU5BUllfTElNSVQKLSAqICAgICAg
ICBvciBVQ0hBUl9JTlRfU1RBUlQ8PXdoaWNoPFVDSEFSX0lOVF9MSU1JVAotICogICAgICAgIG9y
IFVDSEFSX01BU0tfU1RBUlQ8PXdoaWNoPFVDSEFSX01BU0tfTElNSVQuCi0gKiAgICAgICAgSWYg
b3V0IG9mIHJhbmdlLCBOVUxMIGlzIHJldHVybmVkLgotICoKLSAqIEBwYXJhbSB2YWx1ZSBzZWxl
Y3RvciBmb3IgYSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LiAgSWYgb3V0Ci0gKiAgICAg
ICAgIG9mIHJhbmdlLCBOVUxMIGlzIHJldHVybmVkLiAgSW4gZ2VuZXJhbCwgdmFsaWQgdmFsdWVz
IHJhbmdlCi0gKiAgICAgICAgIGZyb20gMCB1cCB0byBzb21lIG1heGltdW0uICBUaGVyZSBhcmUg
YSBmZXcgZXhjZXB0aW9uczoKLSAqICAgICAgICAgKDEuKSBVQ0hBUl9CTE9DSyB2YWx1ZXMgYmVn
aW4gYXQgdGhlIG5vbi16ZXJvIHZhbHVlCi0gKiAgICAgICAgIFVCTE9DS19CQVNJQ19MQVRJTi4g
ICgyLikgIFVDSEFSX0NBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MKLSAqICAgICAgICAgdmFsdWVz
IGFyZSBub3QgY29udGlndW91cyBhbmQgcmFuZ2UgZnJvbSAwLi4yNDAuICAoMy4pCi0gKiAgICAg
ICAgIFVDSEFSX0dFTkVSQUxfQ0FURUdPUllfTUFTSyB2YWx1ZXMgYXJlIG5vdCB2YWx1ZXMgb2YK
LSAqICAgICAgICAgVUNoYXJDYXRlZ29yeSwgYnV0IHJhdGhlciBtYXNrIHZhbHVlcyBwcm9kdWNl
ZCBieQotICogICAgICAgICBVX0dFVF9HQ19NQVNLKCkuICBUaGlzIGFsbG93cyBncm91cGVkIGNh
dGVnb3JpZXMgc3VjaCBhcwotICogICAgICAgICBbOkw6XSB0byBiZSByZXByZXNlbnRlZC4gIE1h
c2sgdmFsdWVzIHJhbmdlCi0gKiAgICAgICAgIG5vbi1jb250aWd1b3VzbHkgZnJvbSAxLi5VX0dD
X1BfTUFTSy4KLSAqCi0gKiBAcGFyYW0gbmFtZUNob2ljZSBzZWxlY3RvciBmb3Igd2hpY2ggbmFt
ZSB0byBnZXQuICBJZiBvdXQgb2YgcmFuZ2UsCi0gKiAgICAgICAgIE5VTEwgaXMgcmV0dXJuZWQu
ICBBbGwgdmFsdWVzIGhhdmUgYSBsb25nIG5hbWUuICBNb3N0IGhhdmUKLSAqICAgICAgICAgYSBz
aG9ydCBuYW1lLCBidXQgc29tZSBkbyBub3QuICBVbmljb2RlIGFsbG93cyBmb3IKLSAqICAgICAg
ICAgYWRkaXRpb25hbCBuYW1lczsgaWYgcHJlc2VudCB0aGVzZSB3aWxsIGJlIHJldHVybmVkIGJ5
Ci0gKiAgICAgICAgIFVfTE9OR19QUk9QRVJUWV9OQU1FICsgaSwgd2hlcmUgaT0xLCAyLC4uLgot
Ci0gKiBAcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbmFtZSwgb3IgTlVMTCBpZiBlaXRoZXIgdGhl
Ci0gKiAgICAgICAgIHByb3BlcnR5IG9yIHRoZSBuYW1lQ2hvaWNlIGlzIG91dCBvZiByYW5nZS4g
IElmIGEgZ2l2ZW4KLSAqICAgICAgICAgbmFtZUNob2ljZSByZXR1cm5zIE5VTEwsIHRoZW4gYWxs
IGxhcmdlciB2YWx1ZXMgb2YKLSAqICAgICAgICAgbmFtZUNob2ljZSB3aWxsIHJldHVybiBOVUxM
LCB3aXRoIG9uZSBleGNlcHRpb246IGlmIE5VTEwgaXMKLSAqICAgICAgICAgcmV0dXJuZWQgZm9y
IFVfU0hPUlRfUFJPUEVSVFlfTkFNRSwgdGhlbgotICogICAgICAgICBVX0xPTkdfUFJPUEVSVFlf
TkFNRSAoYW5kIGhpZ2hlcikgbWF5IHN0aWxsIHJldHVybiBhCi0gKiAgICAgICAgIG5vbi1OVUxM
IHZhbHVlLiAgVGhlIHJldHVybmVkIHBvaW50ZXIgaXMgdmFsaWQgdW50aWwKLSAqICAgICAgICAg
dV9jbGVhbnVwKCkgaXMgY2FsbGVkLgotICoKLSAqIEBzZWUgVVByb3BlcnR5Ci0gKiBAc2VlIFVQ
cm9wZXJ0eU5hbWVDaG9pY2UKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi1VX1NUQUJMRSBjb25z
dCBjaGFyKiBVX0VYUE9SVDIKLXVfZ2V0UHJvcGVydHlWYWx1ZU5hbWUoVVByb3BlcnR5IHByb3Bl
cnR5LAotICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHZhbHVlLAotICAgICAgICAgICAg
ICAgICAgICAgICBVUHJvcGVydHlOYW1lQ2hvaWNlIG5hbWVDaG9pY2UpOwotCi0vKioKLSAqIFJl
dHVybiB0aGUgcHJvcGVydHkgdmFsdWUgaW50ZWdlciBmb3IgYSBnaXZlbiB2YWx1ZSBuYW1lLCBh
cwotICogc3BlY2lmaWVkIGluIHRoZSBVbmljb2RlIGRhdGFiYXNlIGZpbGUgUHJvcGVydHlWYWx1
ZUFsaWFzZXMudHh0LgotICogU2hvcnQsIGxvbmcsIGFuZCBhbnkgb3RoZXIgdmFyaWFudHMgYXJl
IHJlY29nbml6ZWQuCi0gKgotICogTm90ZTogU29tZSBvZiB0aGUgbmFtZXMgaW4gUHJvcGVydHlW
YWx1ZUFsaWFzZXMudHh0IHdpbGwgb25seSBiZQotICogcmVjb2duaXplZCB3aXRoIFVDSEFSX0dF
TkVSQUxfQ0FURUdPUllfTUFTSywgbm90Ci0gKiBVQ0hBUl9HRU5FUkFMX0NBVEVHT1JZLiAgVGhl
c2UgaW5jbHVkZTogIkMiIC8gIk90aGVyIiwgIkwiIC8KLSAqICJMZXR0ZXIiLCAiTEMiIC8gIkNh
c2VkX0xldHRlciIsICJNIiAvICJNYXJrIiwgIk4iIC8gIk51bWJlciIsICJQIgotICogLyAiUHVu
Y3R1YXRpb24iLCAiUyIgLyAiU3ltYm9sIiwgYW5kICJaIiAvICJTZXBhcmF0b3IiLgotICoKLSAq
IEBwYXJhbSBwcm9wZXJ0eSBVUHJvcGVydHkgc2VsZWN0b3IgY29uc3RhbnQuCi0gKiAgICAgICAg
TXVzdCBiZSBVQ0hBUl9CSU5BUllfU1RBUlQ8PXdoaWNoPFVDSEFSX0JJTkFSWV9MSU1JVAotICog
ICAgICAgIG9yIFVDSEFSX0lOVF9TVEFSVDw9d2hpY2g8VUNIQVJfSU5UX0xJTUlUCi0gKiAgICAg
ICAgb3IgVUNIQVJfTUFTS19TVEFSVDw9d2hpY2g8VUNIQVJfTUFTS19MSU1JVC4KLSAqICAgICAg
ICBJZiBvdXQgb2YgcmFuZ2UsIFVDSEFSX0lOVkFMSURfQ09ERSBpcyByZXR1cm5lZC4KLSAqCi0g
KiBAcGFyYW0gYWxpYXMgdGhlIHZhbHVlIG5hbWUgdG8gYmUgbWF0Y2hlZC4gIFRoZSBuYW1lIGlz
IGNvbXBhcmVkCi0gKiAgICAgICAgIHVzaW5nICJsb29zZSBtYXRjaGluZyIgYXMgZGVzY3JpYmVk
IGluCi0gKiAgICAgICAgIFByb3BlcnR5VmFsdWVBbGlhc2VzLnR4dC4KLSAqCi0gKiBAcmV0dXJu
IGEgdmFsdWUgaW50ZWdlciBvciBVQ0hBUl9JTlZBTElEX0NPREUgaWYgdGhlIGdpdmVuIG5hbWUK
LSAqICAgICAgICAgZG9lcyBub3QgbWF0Y2ggYW55IHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0
eSwgb3IgaWYgdGhlCi0gKiAgICAgICAgIHByb3BlcnR5IGlzIGludmFsaWQuICBOb3RlOiBVIENI
QVJfR0VORVJBTF9DQVRFR09SWSB2YWx1ZXMKLSAqICAgICAgICAgYXJlIG5vdCB2YWx1ZXMgb2Yg
VUNoYXJDYXRlZ29yeSwgYnV0IHJhdGhlciBtYXNrIHZhbHVlcwotICogICAgICAgICBwcm9kdWNl
ZCBieSBVX0dFVF9HQ19NQVNLKCkuICBUaGlzIGFsbG93cyBncm91cGVkCi0gKiAgICAgICAgIGNh
dGVnb3JpZXMgc3VjaCBhcyBbOkw6XSB0byBiZSByZXByZXNlbnRlZC4KLSAqCi0gKiBAc2VlIFVQ
cm9wZXJ0eQotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCi11X2dldFByb3BlcnR5VmFsdWVFbnVtKFVQcm9wZXJ0eSBwcm9wZXJ0eSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWxpYXMpOwotCi0vKioKLSAqIERldGVybWluZXMg
aWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgaXMgcGVybWlzc2libGUgYXMgdGhlCi0gKiBmaXJz
dCBjaGFyYWN0ZXIgaW4gYW4gaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gVW5pY29kZQotICogKFRo
ZSBVbmljb2RlIFN0YW5kYXJkLCBWZXJzaW9uIDMuMCwgY2hhcHRlciA1LjE2IElkZW50aWZpZXJz
KS4KLSAqIFRydWUgZm9yIGNoYXJhY3RlcnMgd2l0aCBnZW5lcmFsIGNhdGVnb3JpZXMgIkwiIChs
ZXR0ZXJzKSBhbmQgIk5sIiAobGV0dGVyIG51bWJlcnMpLgotICoKLSAqIFNhbWUgYXMgamF2YS5s
YW5nLkNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoKS4KLSAqIFNhbWUgYXMgVUNI
QVJfSURfU1RBUlQKLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQK
LSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBtYXkgc3RhcnQgYW4gaWRlbnRpZmll
cgotICoKLSAqIEBzZWUgVUNIQVJfSURfU1RBUlQKLSAqIEBzZWUgdV9pc2FscGhhCi0gKiBAc2Vl
IHVfaXNJRFBhcnQKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQm9vbCBVX0VY
UE9SVDIKLXVfaXNJRFN0YXJ0KFVDaGFyMzIgYyk7Ci0KLS8qKgotICogRGV0ZXJtaW5lcyBpZiB0
aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBpcyBwZXJtaXNzaWJsZQotICogaW4gYW4gaWRlbnRpZmll
ciBhY2NvcmRpbmcgdG8gSmF2YS4KLSAqIFRydWUgZm9yIGNoYXJhY3RlcnMgd2l0aCBnZW5lcmFs
IGNhdGVnb3JpZXMgIkwiIChsZXR0ZXJzKSwKLSAqICJObCIgKGxldHRlciBudW1iZXJzKSwgIk5k
IiAoZGVjaW1hbCBkaWdpdHMpLAotICogIk1jIiBhbmQgIk1uIiAoY29tYmluaW5nIG1hcmtzKSwg
IlBjIiAoY29ubmVjdGluZyBwdW5jdHVhdGlvbiksIGFuZAotICogdV9pc0lESWdub3JhYmxlKGMp
LgotICoKLSAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVy
UGFydCgpLgotICogQWxtb3N0IHRoZSBzYW1lIGFzIFVuaWNvZGUncyBJRF9Db250aW51ZSAoVUNI
QVJfSURfQ09OVElOVUUpCi0gKiBleGNlcHQgdGhhdCBVbmljb2RlIHJlY29tbWVuZHMgdG8gaWdu
b3JlIENmIHdoaWNoIGlzIGxlc3MgdGhhbgotICogdV9pc0lESWdub3JhYmxlKGMpLgotICoKLSAq
IEBwYXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAotICogQHJldHVybiBUUlVFIGlm
IHRoZSBjb2RlIHBvaW50IG1heSBvY2N1ciBpbiBhbiBpZGVudGlmaWVyIGFjY29yZGluZyB0byBK
YXZhCi0gKgotICogQHNlZSBVQ0hBUl9JRF9DT05USU5VRQotICogQHNlZSB1X2lzSURTdGFydAot
ICogQHNlZSB1X2lzSURJZ25vcmFibGUKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJM
RSBVQm9vbCBVX0VYUE9SVDIKLXVfaXNJRFBhcnQoVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBEZXRl
cm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIHNob3VsZCBiZSByZWdhcmRlZAotICog
YXMgYW4gaWdub3JhYmxlIGNoYXJhY3RlciBpbiBhbiBpZGVudGlmaWVyLAotICogYWNjb3JkaW5n
IHRvIEphdmEuCi0gKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSAi
Q2YiIChmb3JtYXQgY29udHJvbHMpIGFzIHdlbGwgYXMKLSAqIG5vbi13aGl0ZXNwYWNlIElTTyBj
b250cm9scwotICogKFUrMDAwMC4uVSswMDA4LCBVKzAwMEUuLlUrMDAxQiwgVSswMDdGLi5VKzAw
ODQsIFUrMDA4Ni4uVSswMDlGKS4KLSAqCi0gKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIu
aXNJZGVudGlmaWVySWdub3JhYmxlKCkKLSAqIGV4Y2VwdCB0aGF0IEphdmEgYWxzbyByZXR1cm5z
IFRSVUUgZm9yIFUrMDA4NSBOZXh0IExpbmUKLSAqIChpdCBvbWl0cyBVKzAwODUgZnJvbSB3aGl0
ZXNwYWNlIElTTyBjb250cm9scykuCi0gKgotICogTm90ZSB0aGF0IFVuaWNvZGUganVzdCByZWNv
bW1lbmRzIHRvIGlnbm9yZSBDZiAoZm9ybWF0IGNvbnRyb2xzKS4KLSAqCi0gKiBAcGFyYW0gYyB0
aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBw
b2ludCBpcyBpZ25vcmFibGUgaW4gaWRlbnRpZmllcnMgYWNjb3JkaW5nIHRvIEphdmEKLSAqCi0g
KiBAc2VlIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQKLSAqIEBzZWUgdV9pc0lE
U3RhcnQKLSAqIEBzZWUgdV9pc0lEUGFydAotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RB
QkxFIFVCb29sIFVfRVhQT1JUMgotdV9pc0lESWdub3JhYmxlKFVDaGFyMzIgYyk7Ci0KLS8qKgot
ICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBpcyBwZXJtaXNzaWJsZSBh
cyB0aGUKLSAqIGZpcnN0IGNoYXJhY3RlciBpbiBhIEphdmEgaWRlbnRpZmllci4KLSAqIEluIGFk
ZGl0aW9uIHRvIHVfaXNJRFN0YXJ0KGMpLCB0cnVlIGZvciBjaGFyYWN0ZXJzIHdpdGgKLSAqIGdl
bmVyYWwgY2F0ZWdvcmllcyAiU2MiIChjdXJyZW5jeSBzeW1ib2xzKSBhbmQgIlBjIiAoY29ubmVj
dGluZyBwdW5jdHVhdGlvbikuCi0gKgotICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlz
SmF2YUlkZW50aWZpZXJTdGFydCgpLgotICoKLSAqIEBwYXJhbSBjIHRoZSBjb2RlIHBvaW50IHRv
IGJlIHRlc3RlZAotICogQHJldHVybiBUUlVFIGlmIHRoZSBjb2RlIHBvaW50IG1heSBzdGFydCBh
IEphdmEgaWRlbnRpZmllcgotICoKLSAqIEBzZWUgICAgIHVfaXNKYXZhSURQYXJ0Ci0gKiBAc2Vl
ICAgICB1X2lzYWxwaGEKLSAqIEBzZWUgICAgIHVfaXNJRFN0YXJ0Ci0gKiBAc3RhYmxlIElDVSAy
LjAKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11X2lzSmF2YUlEU3RhcnQoVUNoYXIz
MiBjKTsKLQotLyoqCi0gKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGlz
IHBlcm1pc3NpYmxlCi0gKiBpbiBhIEphdmEgaWRlbnRpZmllci4KLSAqIEluIGFkZGl0aW9uIHRv
IHVfaXNJRFBhcnQoYyksIHRydWUgZm9yIGNoYXJhY3RlcnMgd2l0aAotICogZ2VuZXJhbCBjYXRl
Z29yeSAiU2MiIChjdXJyZW5jeSBzeW1ib2xzKS4KLSAqCi0gKiBTYW1lIGFzIGphdmEubGFuZy5D
aGFyYWN0ZXIuaXNKYXZhSWRlbnRpZmllclBhcnQoKS4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29k
ZSBwb2ludCB0byBiZSB0ZXN0ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBt
YXkgb2NjdXIgaW4gYSBKYXZhIGlkZW50aWZpZXIKLSAqCi0gKiBAc2VlICAgICB1X2lzSURJZ25v
cmFibGUKLSAqIEBzZWUgICAgIHVfaXNKYXZhSURTdGFydAotICogQHNlZSAgICAgdV9pc2FscGhh
Ci0gKiBAc2VlICAgICB1X2lzZGlnaXQKLSAqIEBzZWUgICAgIHVfaXNJRFBhcnQKLSAqIEBzdGFi
bGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXVfaXNKYXZhSURQYXJ0
KFVDaGFyMzIgYyk7Ci0KLS8qKgotICogVGhlIGdpdmVuIGNoYXJhY3RlciBpcyBtYXBwZWQgdG8g
aXRzIGxvd2VyY2FzZSBlcXVpdmFsZW50IGFjY29yZGluZyB0bwotICogVW5pY29kZURhdGEudHh0
OyBpZiB0aGUgY2hhcmFjdGVyIGhhcyBubyBsb3dlcmNhc2UgZXF1aXZhbGVudCwgdGhlIGNoYXJh
Y3RlcgotICogaXRzZWxmIGlzIHJldHVybmVkLgotICoKLSAqIFNhbWUgYXMgamF2YS5sYW5nLkNo
YXJhY3Rlci50b0xvd2VyQ2FzZSgpLgotICoKLSAqIFRoaXMgZnVuY3Rpb24gb25seSByZXR1cm5z
IHRoZSBzaW1wbGUsIHNpbmdsZS1jb2RlIHBvaW50IGNhc2UgbWFwcGluZy4KLSAqIEZ1bGwgY2Fz
ZSBtYXBwaW5ncyBtYXkgcmVzdWx0IGluIHplcm8sIG9uZSBvciBtb3JlIGNvZGUgcG9pbnRzIGFu
ZCBkZXBlbmQKLSAqIG9uIGNvbnRleHQgb3IgbGFuZ3VhZ2UgZXRjLgotICogRnVsbCBjYXNlIG1h
cHBpbmdzIGFyZSBhcHBsaWVkIGJ5IHRoZSBzdHJpbmcgY2FzZSBtYXBwaW5nIGZ1bmN0aW9ucywK
LSAqIHNlZSB1c3RyaW5nLmggYW5kIHRoZSBVbmljb2RlU3RyaW5nIGNsYXNzLgotICoKLSAqIEBw
YXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIG1hcHBlZAotICogQHJldHVybiB0aGUgU2ltcGxl
X0xvd2VyY2FzZV9NYXBwaW5nIG9mIHRoZSBjb2RlIHBvaW50LCBpZiBhbnk7Ci0gKiAgICAgICAg
IG90aGVyd2lzZSB0aGUgY29kZSBwb2ludCBpdHNlbGYuCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAq
LwotVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKLXVfdG9sb3dlcihVQ2hhcjMyIGMpOwotCi0v
KioKLSAqIFRoZSBnaXZlbiBjaGFyYWN0ZXIgaXMgbWFwcGVkIHRvIGl0cyB1cHBlcmNhc2UgZXF1
aXZhbGVudCBhY2NvcmRpbmcgdG8gVW5pY29kZURhdGEudHh0OwotICogaWYgdGhlIGNoYXJhY3Rl
ciBoYXMgbm8gdXBwZXJjYXNlIGVxdWl2YWxlbnQsIHRoZSBjaGFyYWN0ZXIgaXRzZWxmIGlzCi0g
KiByZXR1cm5lZC4KLSAqCi0gKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIudG9VcHBlckNh
c2UoKS4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyB0aGUgc2ltcGxlLCBzaW5n
bGUtY29kZSBwb2ludCBjYXNlIG1hcHBpbmcuCi0gKiBGdWxsIGNhc2UgbWFwcGluZ3MgbWF5IHJl
c3VsdCBpbiB6ZXJvLCBvbmUgb3IgbW9yZSBjb2RlIHBvaW50cyBhbmQgZGVwZW5kCi0gKiBvbiBj
b250ZXh0IG9yIGxhbmd1YWdlIGV0Yy4KLSAqIEZ1bGwgY2FzZSBtYXBwaW5ncyBhcmUgYXBwbGll
ZCBieSB0aGUgc3RyaW5nIGNhc2UgbWFwcGluZyBmdW5jdGlvbnMsCi0gKiBzZWUgdXN0cmluZy5o
IGFuZCB0aGUgVW5pY29kZVN0cmluZyBjbGFzcy4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBw
b2ludCB0byBiZSBtYXBwZWQKLSAqIEByZXR1cm4gdGhlIFNpbXBsZV9VcHBlcmNhc2VfTWFwcGlu
ZyBvZiB0aGUgY29kZSBwb2ludCwgaWYgYW55OwotICogICAgICAgICBvdGhlcndpc2UgdGhlIGNv
ZGUgcG9pbnQgaXRzZWxmLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVDaGFy
MzIgVV9FWFBPUlQyCi11X3RvdXBwZXIoVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBUaGUgZ2l2ZW4g
Y2hhcmFjdGVyIGlzIG1hcHBlZCB0byBpdHMgdGl0bGVjYXNlIGVxdWl2YWxlbnQKLSAqIGFjY29y
ZGluZyB0byBVbmljb2RlRGF0YS50eHQ7Ci0gKiBpZiBub25lIGlzIGRlZmluZWQsIHRoZSBjaGFy
YWN0ZXIgaXRzZWxmIGlzIHJldHVybmVkLgotICoKLSAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJh
Y3Rlci50b1RpdGxlQ2FzZSgpLgotICoKLSAqIFRoaXMgZnVuY3Rpb24gb25seSByZXR1cm5zIHRo
ZSBzaW1wbGUsIHNpbmdsZS1jb2RlIHBvaW50IGNhc2UgbWFwcGluZy4KLSAqIEZ1bGwgY2FzZSBt
YXBwaW5ncyBtYXkgcmVzdWx0IGluIHplcm8sIG9uZSBvciBtb3JlIGNvZGUgcG9pbnRzIGFuZCBk
ZXBlbmQKLSAqIG9uIGNvbnRleHQgb3IgbGFuZ3VhZ2UgZXRjLgotICogRnVsbCBjYXNlIG1hcHBp
bmdzIGFyZSBhcHBsaWVkIGJ5IHRoZSBzdHJpbmcgY2FzZSBtYXBwaW5nIGZ1bmN0aW9ucywKLSAq
IHNlZSB1c3RyaW5nLmggYW5kIHRoZSBVbmljb2RlU3RyaW5nIGNsYXNzLgotICoKLSAqIEBwYXJh
bSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIG1hcHBlZAotICogQHJldHVybiB0aGUgU2ltcGxlX1Rp
dGxlY2FzZV9NYXBwaW5nIG9mIHRoZSBjb2RlIHBvaW50LCBpZiBhbnk7Ci0gKiAgICAgICAgIG90
aGVyd2lzZSB0aGUgY29kZSBwb2ludCBpdHNlbGYuCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwot
VV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKLXVfdG90aXRsZShVQ2hhcjMyIGMpOwotCi0vKiog
T3B0aW9uIHZhbHVlIGZvciBjYXNlIGZvbGRpbmc6IHVzZSBkZWZhdWx0IG1hcHBpbmdzIGRlZmlu
ZWQgaW4gQ2FzZUZvbGRpbmcudHh0LiBAc3RhYmxlIElDVSAyLjAgKi8KLSNkZWZpbmUgVV9GT0xE
X0NBU0VfREVGQVVMVCAwCi0KLS8qKgotICogT3B0aW9uIHZhbHVlIGZvciBjYXNlIGZvbGRpbmc6
Ci0gKgotICogVXNlIHRoZSBtb2RpZmllZCBzZXQgb2YgbWFwcGluZ3MgcHJvdmlkZWQgaW4gQ2Fz
ZUZvbGRpbmcudHh0IHRvIGhhbmRsZSBkb3R0ZWQgSQotICogYW5kIGRvdGxlc3MgaSBhcHByb3By
aWF0ZWx5IGZvciBUdXJraWMgbGFuZ3VhZ2VzICh0ciwgYXopLgotICoKLSAqIEJlZm9yZSBVbmlj
b2RlIDMuMiwgQ2FzZUZvbGRpbmcudHh0IGNvbnRhaW5zIG1hcHBpbmdzIG1hcmtlZCB3aXRoICdJ
JyB0aGF0Ci0gKiBhcmUgdG8gYmUgaW5jbHVkZWQgZm9yIGRlZmF1bHQgbWFwcGluZ3MgYW5kCi0g
KiBleGNsdWRlZCBmb3IgdGhlIFR1cmtpYy1zcGVjaWZpYyBtYXBwaW5ncy4KLSAqCi0gKiBVbmlj
b2RlIDMuMiBDYXNlRm9sZGluZy50eHQgaW5zdGVhZCBjb250YWlucyBtYXBwaW5ncyBtYXJrZWQg
d2l0aCAnVCcgdGhhdAotICogYXJlIHRvIGJlIGV4Y2x1ZGVkIGZvciBkZWZhdWx0IG1hcHBpbmdz
IGFuZAotICogaW5jbHVkZWQgZm9yIHRoZSBUdXJraWMtc3BlY2lmaWMgbWFwcGluZ3MuCi0gKgot
ICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLSNkZWZpbmUgVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVD
SUFMX0kgMQotCi0vKioKLSAqIFRoZSBnaXZlbiBjaGFyYWN0ZXIgaXMgbWFwcGVkIHRvIGl0cyBj
YXNlIGZvbGRpbmcgZXF1aXZhbGVudCBhY2NvcmRpbmcgdG8KLSAqIFVuaWNvZGVEYXRhLnR4dCBh
bmQgQ2FzZUZvbGRpbmcudHh0OwotICogaWYgdGhlIGNoYXJhY3RlciBoYXMgbm8gY2FzZSBmb2xk
aW5nIGVxdWl2YWxlbnQsIHRoZSBjaGFyYWN0ZXIKLSAqIGl0c2VsZiBpcyByZXR1cm5lZC4KLSAq
Ci0gKiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyB0aGUgc2ltcGxlLCBzaW5nbGUtY29kZSBw
b2ludCBjYXNlIG1hcHBpbmcuCi0gKiBGdWxsIGNhc2UgbWFwcGluZ3MgbWF5IHJlc3VsdCBpbiB6
ZXJvLCBvbmUgb3IgbW9yZSBjb2RlIHBvaW50cyBhbmQgZGVwZW5kCi0gKiBvbiBjb250ZXh0IG9y
IGxhbmd1YWdlIGV0Yy4KLSAqIEZ1bGwgY2FzZSBtYXBwaW5ncyBhcmUgYXBwbGllZCBieSB0aGUg
c3RyaW5nIGNhc2UgbWFwcGluZyBmdW5jdGlvbnMsCi0gKiBzZWUgdXN0cmluZy5oIGFuZCB0aGUg
VW5pY29kZVN0cmluZyBjbGFzcy4KLSAqCi0gKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBi
ZSBtYXBwZWQKLSAqIEBwYXJhbSBvcHRpb25zIEVpdGhlciBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9y
IFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCi0gKiBAcmV0dXJuIHRoZSBTaW1wbGVfQ2Fz
ZV9Gb2xkaW5nIG9mIHRoZSBjb2RlIHBvaW50LCBpZiBhbnk7Ci0gKiAgICAgICAgIG90aGVyd2lz
ZSB0aGUgY29kZSBwb2ludCBpdHNlbGYuCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFC
TEUgVUNoYXIzMiBVX0VYUE9SVDIKLXVfZm9sZENhc2UoVUNoYXIzMiBjLCB1aW50MzJfdCBvcHRp
b25zKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBkZWNpbWFsIGRpZ2l0IHZhbHVlIG9mIHRoZSBj
b2RlIHBvaW50IGluIHRoZQotICogc3BlY2lmaWVkIHJhZGl4LgotICoKLSAqIElmIHRoZSByYWRp
eCBpcyBub3QgaW4gdGhlIHJhbmdlIDxjb2RlPjI8PXJhZGl4PD0zNjwvY29kZT4gb3IgaWYgdGhl
Ci0gKiB2YWx1ZSBvZiA8Y29kZT5jPC9jb2RlPiBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbiB0aGUg
c3BlY2lmaWVkCi0gKiByYWRpeCwgPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLiBBIGNoYXJh
Y3RlciBpcyBhIHZhbGlkIGRpZ2l0Ci0gKiBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2lu
ZyBpcyB0cnVlOgotICogPHVsPgotICogPGxpPlRoZSBjaGFyYWN0ZXIgaGFzIGEgZGVjaW1hbCBk
aWdpdCB2YWx1ZS4KLSAqICAgICBTdWNoIGNoYXJhY3RlcnMgaGF2ZSB0aGUgZ2VuZXJhbCBjYXRl
Z29yeSAiTmQiIChkZWNpbWFsIGRpZ2l0IG51bWJlcnMpCi0gKiAgICAgYW5kIGEgTnVtZXJpY19U
eXBlIG9mIERlY2ltYWwuCi0gKiAgICAgSW4gdGhpcyBjYXNlIHRoZSB2YWx1ZSBpcyB0aGUgY2hh
cmFjdGVyJ3MgZGVjaW1hbCBkaWdpdCB2YWx1ZS48L2xpPgotICogPGxpPlRoZSBjaGFyYWN0ZXIg
aXMgb25lIG9mIHRoZSB1cHBlcmNhc2UgTGF0aW4gbGV0dGVycwotICogICAgIDxjb2RlPidBJzwv
Y29kZT4gdGhyb3VnaCA8Y29kZT4nWic8L2NvZGU+LgotICogICAgIEluIHRoaXMgY2FzZSB0aGUg
dmFsdWUgaXMgPGNvZGU+Yy0nQScrMTA8L2NvZGU+LjwvbGk+Ci0gKiA8bGk+VGhlIGNoYXJhY3Rl
ciBpcyBvbmUgb2YgdGhlIGxvd2VyY2FzZSBMYXRpbiBsZXR0ZXJzCi0gKiAgICAgPGNvZGU+J2En
PC9jb2RlPiB0aHJvdWdoIDxjb2RlPid6JzwvY29kZT4uCi0gKiAgICAgSW4gdGhpcyBjYXNlIHRo
ZSB2YWx1ZSBpcyA8Y29kZT5jaC0nYScrMTA8L2NvZGU+LjwvbGk+Ci0gKiA8bGk+TGF0aW4gbGV0
dGVycyBmcm9tIGJvdGggdGhlIEFTQ0lJIHJhbmdlICgwMDYxLi4wMDdBLCAwMDQxLi4wMDVBKQot
ICogICAgIGFzIHdlbGwgYXMgZnJvbSB0aGUgRnVsbHdpZHRoIEFTQ0lJIHJhbmdlIChGRjQxLi5G
RjVBLCBGRjIxLi5GRjNBKQotICogICAgIGFyZSByZWNvZ25pemVkLjwvbGk+Ci0gKiA8L3VsPgot
ICoKLSAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5kaWdpdCgpLgotICoKLSAqIEBwYXJh
bSAgIGNoICAgICAgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkLgotICogQHBhcmFtICAgcmFk
aXggICB0aGUgcmFkaXguCi0gKiBAcmV0dXJuICB0aGUgbnVtZXJpYyB2YWx1ZSByZXByZXNlbnRl
ZCBieSB0aGUgY2hhcmFjdGVyIGluIHRoZQotICogICAgICAgICAgc3BlY2lmaWVkIHJhZGl4LAot
ICogICAgICAgICAgb3IgLTEgaWYgdGhlcmUgaXMgbm8gdmFsdWUgb3IgaWYgdGhlIHZhbHVlIGV4
Y2VlZHMgdGhlIHJhZGl4LgotICoKLSAqIEBzZWUgICAgIFVDSEFSX05VTUVSSUNfVFlQRQotICog
QHNlZSAgICAgdV9mb3JEaWdpdAotICogQHNlZSAgICAgdV9jaGFyRGlnaXRWYWx1ZQotICogQHNl
ZSAgICAgdV9pc2RpZ2l0Ci0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKLXVfZGlnaXQoVUNoYXIzMiBjaCwgaW50OF90IHJhZGl4KTsKLQotLyoqCi0g
KiBEZXRlcm1pbmVzIHRoZSBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24gZm9yIGEgc3BlY2lmaWMg
ZGlnaXQgaW4KLSAqIHRoZSBzcGVjaWZpZWQgcmFkaXguIElmIHRoZSB2YWx1ZSBvZiA8Y29kZT5y
YWRpeDwvY29kZT4gaXMgbm90IGEKLSAqIHZhbGlkIHJhZGl4LCBvciB0aGUgdmFsdWUgb2YgPGNv
ZGU+ZGlnaXQ8L2NvZGU+IGlzIG5vdCBhIHZhbGlkCi0gKiBkaWdpdCBpbiB0aGUgc3BlY2lmaWVk
IHJhZGl4LCB0aGUgbnVsbCBjaGFyYWN0ZXIKLSAqICg8Y29kZT5VKzAwMDA8L2NvZGU+KSBpcyBy
ZXR1cm5lZC4KLSAqIDxwPgotICogVGhlIDxjb2RlPnJhZGl4PC9jb2RlPiBhcmd1bWVudCBpcyB2
YWxpZCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gb3IKLSAqIGVxdWFsIHRvIDIgYW5kIGxlc3MgdGhh
biBvciBlcXVhbCB0byAzNi4KLSAqIFRoZSA8Y29kZT5kaWdpdDwvY29kZT4gYXJndW1lbnQgaXMg
dmFsaWQgaWYKLSAqIDxjb2RlPjAgPD0gZGlnaXQgPCByYWRpeDwvY29kZT4uCi0gKiA8cD4KLSAq
IElmIHRoZSBkaWdpdCBpcyBsZXNzIHRoYW4gMTAsIHRoZW4KLSAqIDxjb2RlPicwJyArIGRpZ2l0
PC9jb2RlPiBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCB0aGUgdmFsdWUKLSAqIDxjb2RlPidhJyAr
IGRpZ2l0IC0gMTA8L2NvZGU+IGlzIHJldHVybmVkLgotICoKLSAqIFNhbWUgYXMgamF2YS5sYW5n
LkNoYXJhY3Rlci5mb3JEaWdpdCgpLgotICoKLSAqIEBwYXJhbSAgIGRpZ2l0ICAgdGhlIG51bWJl
ciB0byBjb252ZXJ0IHRvIGEgY2hhcmFjdGVyLgotICogQHBhcmFtICAgcmFkaXggICB0aGUgcmFk
aXguCi0gKiBAcmV0dXJuICB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gcmVwcmVzZW50YXRpb24gb2Yg
dGhlIHNwZWNpZmllZCBkaWdpdAotICogICAgICAgICAgaW4gdGhlIHNwZWNpZmllZCByYWRpeC4K
LSAqCi0gKiBAc2VlICAgICB1X2RpZ2l0Ci0gKiBAc2VlICAgICB1X2NoYXJEaWdpdFZhbHVlCi0g
KiBAc2VlICAgICB1X2lzZGlnaXQKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBV
Q2hhcjMyIFVfRVhQT1JUMgotdV9mb3JEaWdpdChpbnQzMl90IGRpZ2l0LCBpbnQ4X3QgcmFkaXgp
OwotCi0vKioKLSAqIEdldCB0aGUgImFnZSIgb2YgdGhlIGNvZGUgcG9pbnQuCi0gKiBUaGUgImFn
ZSIgaXMgdGhlIFVuaWNvZGUgdmVyc2lvbiB3aGVuIHRoZSBjb2RlIHBvaW50IHdhcyBmaXJzdAot
ICogZGVzaWduYXRlZCAoYXMgYSBub24tY2hhcmFjdGVyIG9yIGZvciBQcml2YXRlIFVzZSkKLSAq
IG9yIGFzc2lnbmVkIGEgY2hhcmFjdGVyLgotICogVGhpcyBjYW4gYmUgdXNlZnVsIHRvIGF2b2lk
IGVtaXR0aW5nIGNvZGUgcG9pbnRzIHRvIHJlY2VpdmluZwotICogcHJvY2Vzc2VzIHRoYXQgZG8g
bm90IGFjY2VwdCBuZXdlciBjaGFyYWN0ZXJzLgotICogVGhlIGRhdGEgaXMgZnJvbSB0aGUgVUNE
IGZpbGUgRGVyaXZlZEFnZS50eHQuCi0gKgotICogQHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQuCi0g
KiBAcGFyYW0gdmVyc2lvbkFycmF5IFRoZSBVbmljb2RlIHZlcnNpb24gbnVtYmVyIGFycmF5LCB0
byBiZSBmaWxsZWQgaW4uCi0gKgotICogQHN0YWJsZSBJQ1UgMi4xCi0gKi8KLVVfU1RBQkxFIHZv
aWQgVV9FWFBPUlQyCi11X2NoYXJBZ2UoVUNoYXIzMiBjLCBVVmVyc2lvbkluZm8gdmVyc2lvbkFy
cmF5KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBVbmljb2RlIHZlcnNpb24gaW5mb3JtYXRpb24uCi0g
KiBUaGUgdmVyc2lvbiBhcnJheSBpcyBmaWxsZWQgaW4gd2l0aCB0aGUgdmVyc2lvbiBpbmZvcm1h
dGlvbgotICogZm9yIHRoZSBVbmljb2RlIHN0YW5kYXJkIHRoYXQgaXMgY3VycmVudGx5IHVzZWQg
YnkgSUNVLgotICogRm9yIGV4YW1wbGUsIFVuaWNvZGUgdmVyc2lvbiAzLjEuMSBpcyByZXByZXNl
bnRlZCBhcyBhbiBhcnJheSB3aXRoCi0gKiB0aGUgdmFsdWVzIHsgMywgMSwgMSwgMCB9LgotICoK
LSAqIEBwYXJhbSB2ZXJzaW9uQXJyYXkgYW4gb3V0cHV0IGFycmF5IHRoYXQgd2lsbCBiZSBmaWxs
ZWQgaW4gd2l0aAotICogICAgICAgICAgICAgICAgICAgICB0aGUgVW5pY29kZSB2ZXJzaW9uIG51
bWJlcgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCi11
X2dldFVuaWNvZGVWZXJzaW9uKFVWZXJzaW9uSW5mbyB2ZXJzaW9uQXJyYXkpOwotCi0vKioKLSAq
IEdldCB0aGUgRkNfTkZLQ19DbG9zdXJlIHByb3BlcnR5IHN0cmluZyBmb3IgYSBjaGFyYWN0ZXIu
Ci0gKiBTZWUgVW5pY29kZSBTdGFuZGFyZCBBbm5leCAjMTUgZm9yIGRldGFpbHMsIHNlYXJjaCBm
b3IgIkZDX05GS0NfQ2xvc3VyZSIKLSAqIG9yIGZvciAiRk5DIjogaHR0cDovL3d3dy51bmljb2Rl
Lm9yZy9yZXBvcnRzL3RyMTUvCi0gKgotICogQHBhcmFtIGMgVGhlIGNoYXJhY3RlciAoY29kZSBw
b2ludCkgZm9yIHdoaWNoIHRvIGdldCB0aGUgRkNfTkZLQ19DbG9zdXJlIHN0cmluZy4KLSAqICAg
ICAgICAgICAgIEl0IG11c3QgYmUgPGNvZGU+MDw9Yzw9MHgxMGZmZmY8L2NvZGU+LgotICogQHBh
cmFtIGRlc3QgRGVzdGluYXRpb24gYWRkcmVzcyBmb3IgY29weWluZyB0aGUgc3RyaW5nLgotICog
ICAgICAgICAgICAgVGhlIHN0cmluZyB3aWxsIGJlIHplcm8tdGVybWluYXRlZCBpZiBwb3NzaWJs
ZS4KLSAqICAgICAgICAgICAgIElmIHRoZXJlIGlzIG5vIEZDX05GS0NfQ2xvc3VyZSBzdHJpbmcs
Ci0gKiAgICAgICAgICAgICB0aGVuIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gdGhlIGVtcHR5
IHN0cmluZy4KLSAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgPGNvZGU+PT1zaXplb2YoZGVzdCk8L2Nv
ZGU+Ci0gKiBAcGFyYW0gcEVycm9yQ29kZSBQb2ludGVyIHRvIGEgVUVycm9yQ29kZSB2YXJpYWJs
ZS4KLSAqIEByZXR1cm4gVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLCBvciAwIGlmIHRoZXJlIGlz
IG5vIEZDX05GS0NfQ2xvc3VyZSBzdHJpbmcgZm9yIHRoaXMgY2hhcmFjdGVyLgotICogICAgICAg
ICBJZiB0aGUgZGVzdENhcGFjaXR5IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbGVuZ3Ro
LCB0aGVuIHRoZSBidWZmZXIKLSAqICAgICAgICAgY29udGFpbnMgdGhlIHRydW5jYXRlZCBuYW1l
IGFuZCB0aGUgcmV0dXJuZWQgbGVuZ3RoIGluZGljYXRlcyB0aGUgZnVsbAotICogICAgICAgICBs
ZW5ndGggb2YgdGhlIG5hbWUuCi0gKiAgICAgICAgIFRoZSBsZW5ndGggZG9lcyBub3QgaW5jbHVk
ZSB0aGUgemVyby10ZXJtaW5hdGlvbi4KLSAqCi0gKiBAc3RhYmxlIElDVSAyLjIKLSAqLwotVV9T
VEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVfZ2V0RkNfTkZLQ19DbG9zdXJlKFVDaGFyMzIgYywg
VUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LCBVRXJyb3JDb2RlICpwRXJyb3JDb2Rl
KTsKLQotVV9DREVDTF9FTkQKLQotI2VuZGlmIC8qX1VDSEFSKi8KLS8qZW9mKi8KSW5kZXg6IEph
dmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VjbnYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
R2x1ZS9pY3UvdW5pY29kZS91Y252LmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEds
dWUvaWN1L3VuaWNvZGUvdWNudi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4MTcgKzAsMCBAQAot
LyoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNCwgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcwotKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwg
UmlnaHRzIFJlc2VydmVkLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogIHVjbnYuaDoKLSAqICBFeHRlcm5h
bCBBUElzIGZvciB0aGUgSUNVJ3MgY29kZXNldCBjb252ZXJzaW9uIGxpYnJhcnkKLSAqICBCZXJ0
cmFuZCBBLiBEYW1pYmEKLSAqCi0gKiBNb2RpZmljYXRpb24gSGlzdG9yeToKLSAqCi0gKiAgIERh
dGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCi0gKiAgIDA0LzA0Lzk5ICAgIGhlbGVu
YSAgICAgIEZpeGVkIGludGVybmFsIGhlYWRlciBpbmNsdXNpb24uCi0gKiAgIDA1LzExLzAwICAg
IGhlbGVuYSAgICAgIEFkZGVkIHNldEZhbGxiYWNrIGFuZCB1c2VzRmFsbGJhY2sgQVBJcy4KLSAq
ICAgMDYvMjkvMjAwMCAgaGVsZW5hICAgICAgTWFqb3IgcmV3cml0ZSBvZiB0aGUgY2FsbGJhY2sg
QVBJcy4KLSAqICAgMTIvMDcvMjAwMCAgc3JsICAgICAgICAgVXBkYXRlIG9mIGRvY3VtZW50YXRp
b24KLSAqLwotCi0vKioKLSAqIFxmaWxlCi0gKiBcYnJpZWYgQyBBUEk6IENoYXJhY3RlciBjb252
ZXJzaW9uIAotICoKLSAqIDxoMj5DaGFyYWN0ZXIgQ29udmVyc2lvbiBDIEFQSTwvaDI+Ci0gKgot
ICogPHA+VGhpcyBBUEkgaXMgdXNlZCB0byBjb252ZXJ0IGNvZGVwYWdlIG9yIGNoYXJhY3RlciBl
bmNvZGVkIGRhdGEgdG8gYW5kCi0gKiBmcm9tIFVURi0xNi4gWW91IGNhbiBvcGVuIGEgY29udmVy
dGVyIHdpdGgge0BsaW5rIHVjbnZfb3BlbigpIH0uIFdpdGggdGhhdAotICogY29udmVydGVyLCB5
b3UgY2FuIGdldCBpdHMgcHJvcGVydGllcywgc2V0IG9wdGlvbnMsIGNvbnZlcnQgeW91ciBkYXRh
IGFuZAotICogY2xvc2UgdGhlIGNvbnZlcnRlci48L3A+Ci0gKgotICogPHA+U2luY2UgbWFueSBz
b2Z0d2FyZSBwcm9ncmFtcyByZWNvZ2l6ZSBkaWZmZXJlbnQgY29udmVydGVyIG5hbWVzIGZvcgot
ICogZGlmZmVyZW50IHR5cGVzIG9mIGNvbnZlcnRlcnMsIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlv
bnMgaW4gdGhpcyBBUEkgdG8KLSAqIGl0ZXJhdGUgb3ZlciB0aGUgY29udmVydGVyIGFsaWFzZXMu
IFRoZSBmdW5jdGlvbnMge0BsaW5rIHVjbnZfZ2V0QXZhaWxhYmxlTmFtZSgpIH0sCi0gKiB7QGxp
bmsgdWNudl9nZXRBbGlhcygpIH0gYW5kIHtAbGluayB1Y252X2dldFN0YW5kYXJkTmFtZSgpIH0g
YXJlIHNvbWUgb2YgdGhlCi0gKiBtb3JlIGZyZXF1ZW50bHkgdXNlZCBhbGlhcyBmdW5jdGlvbnMg
dG8gZ2V0IHRoaXMgaW5mb3JtYXRpb24uPC9wPgotICoKLSAqIDxwPldoZW4gYSBjb252ZXJ0ZXIg
ZW5jb3VudGVycyBhbiBpbGxlZ2FsLCBpcnJlZ3VsYXIsIGludmFsaWQgb3IgdW5tYXBwYWJsZSBj
aGFyYWN0ZXIKLSAqIGl0cyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHVzZSBhIHN1YnN0aXR1dGlv
biBjaGFyYWN0ZXIgdG8gcmVwbGFjZSB0aGUKLSAqIGJhZCBieXRlIHNlcXVlbmNlLiBUaGlzIGJl
aGF2aW9yIGNhbiBiZSBjaGFuZ2VkIGJ5IHVzaW5nIHtAbGluayB1Y252X2dldEZyb21VQ2FsbEJh
Y2soKSB9Ci0gKiBvciB7QGxpbmsgdWNudl9nZXRUb1VDYWxsQmFjaygpIH0gb24gdGhlIGNvbnZl
cnRlci4gVGhlIGhlYWRlciB1Y252X2Vyci5oIGRlZmluZXMKLSAqIG1hbnkgb3RoZXIgY2FsbGJh
Y2sgYWN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBjaGFyYWN0ZXIgc3Vic3Rp
dHV0aW9uLjwvcD4KLSAqCi0gKiA8cD5Nb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgQVBJIGNh
biBiZSBmb3VuZCBpbiBvdXIgCi0gKiA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5j
b20vaWN1L3VzZXJndWlkZS9jb252ZXJzaW9uLmh0bWwiPlVzZXIncwotICogR3VpZGU8L2E+Ljwv
cD4KLSAqLwotCi0jaWZuZGVmIFVDTlZfSAotI2RlZmluZSBVQ05WX0gKLQotI2luY2x1ZGUgInVu
aWNvZGUvdWNudl9lcnIuaCIKLSNpbmNsdWRlICJ1bmljb2RlL3VlbnVtLmgiCi0KLSNpZm5kZWYg
X19VU0VUX0hfXwotCi0vKioKLSAqIFVTZXQgaXMgdGhlIEMgQVBJIHR5cGUgZm9yIFVuaWNvZGUg
c2V0cy4KLSAqIEl0IGlzIGZvcndhcmQtZGVjbGFyZWQgaGVyZSB0byBhdm9pZCBpbmNsdWRpbmcg
dGhlIGhlYWRlciBmaWxlIGlmIHJlbGF0ZWQKLSAqIGNvbnZlcnNpb24gQVBJcyBhcmUgbm90IHVz
ZWQuCi0gKiBTZWUgdW5pY29kZS91c2V0LmgKLSAqCi0gKiBAc2VlIHVjbnZfZ2V0VW5pY29kZVNl
dAotICogQHN0YWJsZSBJQ1UgMi42Ci0gKi8KLXN0cnVjdCBVU2V0OwotLyoqIEBzdGFibGUgSUNV
IDIuNiAqLwotdHlwZWRlZiBzdHJ1Y3QgVVNldCBVU2V0OwotCi0jZW5kaWYKLQotI2lmICFVQ09O
RklHX05PX0NPTlZFUlNJT04KLQotVV9DREVDTF9CRUdJTgotCi0vKiogTWF4aW11bSBsZW5ndGgg
b2YgYSBjb252ZXJ0ZXIgbmFtZSBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIE5VTEwgQHN0YWJs
ZSBJQ1UgMi4wICovCi0jZGVmaW5lIFVDTlZfTUFYX0NPTlZFUlRFUl9OQU1FX0xFTkdUSCA2MAot
LyoqIE1heGltdW0gbGVuZ3RoIG9mIGEgY29udmVydGVyIG5hbWUgaW5jbHVkaW5nIHBhdGggYW5k
IHRlcm1pbmF0aW5nIE5VTEwgQHN0YWJsZSBJQ1UgMi4wICovCi0jZGVmaW5lIFVDTlZfTUFYX0ZV
TExfRklMRV9OQU1FX0xFTkdUSCAoNjAwK1VDTlZfTUFYX0NPTlZFUlRFUl9OQU1FX0xFTkdUSCkK
LQotLyoqIFNoaWZ0IGluIGZvciBFQkRDRElDX1NUQVRFRlVMIGFuZCBpc28yMDIyIHN0YXRlcyBA
c3RhYmxlIElDVSAyLjAgKi8KLSNkZWZpbmUgIFVDTlZfU0kgMHgwRgotLyoqIFNoaWZ0IG91dCBm
b3IgRUJEQ0RJQ19TVEFURUZVTCBhbmQgaXNvMjAyMiBzdGF0ZXMgQHN0YWJsZSBJQ1UgMi4wICov
Ci0jZGVmaW5lICBVQ05WX1NPIDB4MEUKLQotLyoqCi0gKiBFbnVtIGZvciBzcGVjaWZ5aW5nIGJh
c2ljIHR5cGVzIG9mIGNvbnZlcnRlcnMKLSAqIEBzZWUgdWNudl9nZXRUeXBlCi0gKiBAc3RhYmxl
IElDVSAyLjAKLSAqLwotdHlwZWRlZiBlbnVtIHsKLSAgICBVQ05WX1VOU1VQUE9SVEVEX0NPTlZF
UlRFUiA9IC0xLAotICAgIFVDTlZfU0JDUyA9IDAsCi0gICAgVUNOVl9EQkNTID0gMSwKLSAgICBV
Q05WX01CQ1MgPSAyLAotICAgIFVDTlZfTEFUSU5fMSA9IDMsCi0gICAgVUNOVl9VVEY4ID0gNCwK
LSAgICBVQ05WX1VURjE2X0JpZ0VuZGlhbiA9IDUsCi0gICAgVUNOVl9VVEYxNl9MaXR0bGVFbmRp
YW4gPSA2LAotICAgIFVDTlZfVVRGMzJfQmlnRW5kaWFuID0gNywKLSAgICBVQ05WX1VURjMyX0xp
dHRsZUVuZGlhbiA9IDgsCi0gICAgVUNOVl9FQkNESUNfU1RBVEVGVUwgPSA5LAotICAgIFVDTlZf
SVNPXzIwMjIgPSAxMCwKLQotICAgIFVDTlZfTE1CQ1NfMSA9IDExLAotICAgIFVDTlZfTE1CQ1Nf
MiwgCi0gICAgVUNOVl9MTUJDU18zLAotICAgIFVDTlZfTE1CQ1NfNCwKLSAgICBVQ05WX0xNQkNT
XzUsCi0gICAgVUNOVl9MTUJDU182LAotICAgIFVDTlZfTE1CQ1NfOCwKLSAgICBVQ05WX0xNQkNT
XzExLAotICAgIFVDTlZfTE1CQ1NfMTYsCi0gICAgVUNOVl9MTUJDU18xNywKLSAgICBVQ05WX0xN
QkNTXzE4LAotICAgIFVDTlZfTE1CQ1NfMTksCi0gICAgVUNOVl9MTUJDU19MQVNUID0gVUNOVl9M
TUJDU18xOSwKLSAgICBVQ05WX0haLAotICAgIFVDTlZfU0NTVSwKLSAgICBVQ05WX0lTQ0lJLAot
ICAgIFVDTlZfVVNfQVNDSUksCi0gICAgVUNOVl9VVEY3LAotICAgIFVDTlZfQk9DVTEsCi0gICAg
VUNOVl9VVEYxNiwKLSAgICBVQ05WX1VURjMyLAotICAgIFVDTlZfQ0VTVTgsCi0gICAgVUNOVl9J
TUFQX01BSUxCT1gsCi0KLSAgICAvKiBOdW1iZXIgb2YgY29udmVydGVyIHR5cGVzIGZvciB3aGlj
aCB3ZSBoYXZlIGNvbnZlcnNpb24gcm91dGluZXMuICovCi0gICAgVUNOVl9OVU1CRVJfT0ZfU1VQ
UE9SVEVEX0NPTlZFUlRFUl9UWVBFUwotCi19IFVDb252ZXJ0ZXJUeXBlOwotCi0vKioKLSAqIEVu
dW0gZm9yIHNwZWNpZnlpbmcgd2hpY2ggcGxhdGZvcm0gYSBjb252ZXJ0ZXIgSUQgcmVmZXJzIHRv
LgotICogVGhlIHVzZSBvZiBwbGF0Zm9ybS9DQ1NJRCBpcyBub3QgcmVjb21tZW5kZWQuIFNlZSB1
Y252X29wZW5DQ1NJRCgpLgotICoKLSAqIEBzZWUgdWNudl9nZXRQbGF0Zm9ybQotICogQHNlZSB1
Y252X29wZW5DQ1NJRAotICogQHNlZSB1Y252X2dldENDU0lECi0gKiBAc3RhYmxlIElDVSAyLjAK
LSAqLwotdHlwZWRlZiBlbnVtIHsKLSAgICBVQ05WX1VOS05PV04gPSAtMSwKLSAgICBVQ05WX0lC
TSA9IDAKLX0gVUNvbnZlcnRlclBsYXRmb3JtOwotCi0vKioKLSAqIEZ1bmN0aW9uIHBvaW50ZXIg
Zm9yIGVycm9yIGNhbGxiYWNrIGluIHRoZSBjb2RlcGFnZSB0byB1bmljb2RlIGRpcmVjdGlvbi4K
LSAqIENhbGxlZCB3aGVuIGFuIGVycm9yIGhhcyBvY2N1cmVkIGluIGNvbnZlcnNpb24gdG8gdW5p
Y29kZSwgb3Igb24gb3Blbi9jbG9zZSBvZiB0aGUgY2FsbGJhY2sgKHNlZSByZWFzb24pLgotICog
QHBhcmFtIGNvbnRleHQgUG9pbnRlciB0byB0aGUgY2FsbGJhY2sncyBwcml2YXRlIGRhdGEKLSAq
IEBwYXJhbSBhcmdzIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjb252ZXJzaW9uIGluIHByb2dyZXNz
Ci0gKiBAcGFyYW0gY29kZVVuaXRzIFBvaW50cyB0byAnbGVuZ3RoJyBieXRlcyBvZiB0aGUgY29u
Y2VybmVkIGNvZGVwYWdlIHNlcXVlbmNlCi0gKiBAcGFyYW0gbGVuZ3RoIFNpemUgKGluIGJ5dGVz
KSBvZiB0aGUgY29uY2VybmVkIGNvZGVwYWdlIHNlcXVlbmNlCi0gKiBAcGFyYW0gcmVhc29uIERl
ZmluZXMgdGhlIHJlYXNvbiB0aGUgY2FsbGJhY2sgd2FzIGludm9rZWQKLSAqIEBzZWUgdWNudl9z
ZXRUb1VDYWxsQmFjawotICogQHNlZSBVQ29udmVydGVyVG9Vbmljb2RlQXJncwotICogQHN0YWJs
ZSBJQ1UgMi4wCi0gKi8KLXR5cGVkZWYgdm9pZCAoVV9FWFBPUlQyICpVQ29udmVydGVyVG9VQ2Fs
bGJhY2spICgKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIGNvbnRleHQsCi0gICAgICAg
ICAgICAgICAgICBVQ29udmVydGVyVG9Vbmljb2RlQXJncyAqYXJncywKLSAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKmNvZGVVbml0cywKLSAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoLAotICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlckNhbGxiYWNrUmVhc29uIHJlYXNvbiwK
LSAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKik7Ci0KLS8qKgotICogRnVuY3Rpb24gcG9p
bnRlciBmb3IgZXJyb3IgY2FsbGJhY2sgaW4gdGhlIHVuaWNvZGUgdG8gY29kZXBhZ2UgZGlyZWN0
aW9uLgotICogQ2FsbGVkIHdoZW4gYW4gZXJyb3IgaGFzIG9jY3VyZWQgaW4gY29udmVyc2lvbiBm
cm9tIHVuaWNvZGUsIG9yIG9uIG9wZW4vY2xvc2Ugb2YgdGhlIGNhbGxiYWNrIChzZWUgcmVhc29u
KS4KLSAqIEBwYXJhbSBjb250ZXh0IFBvaW50ZXIgdG8gdGhlIGNhbGxiYWNrJ3MgcHJpdmF0ZSBk
YXRhCi0gKiBAcGFyYW0gYXJncyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udmVyc2lvbiBpbiBw
cm9ncmVzcwotICogQHBhcmFtIGNvZGVVbml0cyBQb2ludHMgdG8gJ2xlbmd0aCcgVUNoYXJzIG9m
IHRoZSBjb25jZXJuZWQgVW5pY29kZSBzZXF1ZW5jZQotICogQHBhcmFtIGxlbmd0aCBTaXplIChp
biBieXRlcykgb2YgdGhlIGNvbmNlcm5lZCBjb2RlcGFnZSBzZXF1ZW5jZQotICogQHBhcmFtIGNv
ZGVQb2ludCBTaW5nbGUgVUNoYXIzMiAoVVRGLTMyKSBjb250YWluaW5nIHRoZSBjb25jZXJlbmQg
VW5pY29kZSBjb2RlcG9pbnQuCi0gKiBAcGFyYW0gcmVhc29uIERlZmluZXMgdGhlIHJlYXNvbiB0
aGUgY2FsbGJhY2sgd2FzIGludm9rZWQKLSAqIEBzZWUgdWNudl9zZXRGcm9tVUNhbGxCYWNrCi0g
KiBAc3RhYmxlIElDVSAyLjAKLSAqLwotdHlwZWRlZiB2b2lkIChVX0VYUE9SVDIgKlVDb252ZXJ0
ZXJGcm9tVUNhbGxiYWNrKSAoCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIGNvbnRl
eHQsCi0gICAgICAgICAgICAgICAgICAgIFVDb252ZXJ0ZXJGcm9tVW5pY29kZUFyZ3MgKmFyZ3Ms
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjb2RlVW5pdHMsCi0gICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNv
ZGVQb2ludCwKLSAgICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlckNhbGxiYWNrUmVhc29uIHJl
YXNvbiwKLSAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqKTsKLQotVV9DREVDTF9FTkQK
LQotLyoqCi0gKiBDaGFyYWN0ZXIgdGhhdCBzZXBhcmF0ZXMgY29udmVydGVyIG5hbWVzIGZyb20g
b3B0aW9ucyBhbmQgb3B0aW9ucyBmcm9tIGVhY2ggb3RoZXIuCi0gKiBAc2VlIHVjbnZfb3Blbgot
ICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLSNkZWZpbmUgVUNOVl9PUFRJT05fU0VQX0NIQVIgJywn
Ci0KLS8qKgotICogU3RyaW5nIHZlcnNpb24gb2YgVUNOVl9PUFRJT05fU0VQX0NIQVIuIAotICog
QHNlZSB1Y252X29wZW4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi0jZGVmaW5lIFVDTlZfT1BU
SU9OX1NFUF9TVFJJTkcgIiwiCi0KLS8qKgotICogQ2hhcmFjdGVyIHRoYXQgc2VwYXJhdGVzIGEg
Y29udmVydGVyIG9wdGlvbiBmcm9tIGl0cyB2YWx1ZS4KLSAqIEBzZWUgdWNudl9vcGVuCi0gKiBA
c3RhYmxlIElDVSAyLjAKLSAqLwotI2RlZmluZSBVQ05WX1ZBTFVFX1NFUF9DSEFSICc9JwotCi0v
KioKLSAqIFN0cmluZyB2ZXJzaW9uIG9mIFVDTlZfVkFMVUVfU0VQX0NIQVIuIAotICogQHNlZSB1
Y252X29wZW4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi0jZGVmaW5lIFVDTlZfVkFMVUVfU0VQ
X1NUUklORyAiPSIKLQotLyoqCi0gKiBDb252ZXJ0ZXIgb3B0aW9uIGZvciBzcGVjaWZ5aW5nIGEg
bG9jYWxlLgotICogRm9yIGV4YW1wbGUsIHVjbnZfb3BlbigiU0NTVSxsb2NhbGU9amEiLCAmZXJy
b3JDb2RlKTsKLSAqIFNlZSBjb252cnRycy50eHQuCi0gKgotICogQHNlZSB1Y252X29wZW4KLSAq
IEBzdGFibGUgSUNVIDIuMAotICovCi0jZGVmaW5lIFVDTlZfTE9DQUxFX09QVElPTl9TVFJJTkcg
Iixsb2NhbGU9IgotCi0vKioKLSAqIENvbnZlcnRlciBvcHRpb24gZm9yIHNwZWNpZnlpbmcgYSB2
ZXJzaW9uIHNlbGVjdG9yICgwLi45KSBmb3Igc29tZSBjb252ZXJ0ZXJzLgotICogRm9yIGV4YW1w
bGUsIHVjbnZfb3BlbigiVVRGLTcsdmVyc2lvbj0xIiwgJmVycm9yQ29kZSk7Ci0gKiBTZWUgY29u
dnJ0cnMudHh0LgotICoKLSAqIEBzZWUgdWNudl9vcGVuCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAq
LwotI2RlZmluZSBVQ05WX1ZFUlNJT05fT1BUSU9OX1NUUklORyAiLHZlcnNpb249IgotCi0vKioK
LSAqIENvbnZlcnRlciBvcHRpb24gZm9yIEVCQ0RJQyBTQkNTIG9yIG1peGVkLVNCQ1MvREJDUyAo
c3RhdGVmdWwpIGNvZGVwYWdlcy4KLSAqIFN3YXBzIFVuaWNvZGUgbWFwcGluZ3MgZm9yIEVCQ0RJ
QyBMRiBhbmQgTkwgY29kZXMsIGFzIHVzZWQgb24KLSAqIFMvMzkwICh6L09TKSBVbml4IFN5c3Rl
bSBTZXJ2aWNlcyAoT3BlbiBFZGl0aW9uKS4KLSAqIEZvciBleGFtcGxlLCB1Y252X29wZW4oImli
bS0xMDQ3LHN3YXBsZm5sIiwgJmVycm9yQ29kZSk7Ci0gKiBTZWUgY29udnJ0cnMudHh0LgotICoK
LSAqIEBzZWUgdWNudl9vcGVuCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVQ05W
X1NXQVBfTEZOTF9PUFRJT05fU1RSSU5HICIsc3dhcGxmbmwiCi0KLS8qKgotICogRG8gYSBmdXp6
eSBjb21wYXJlIG9mIGEgdHdvIGNvbnZlcnRlci9hbGlhcyBuYW1lcy4gIFRoZSBjb21wYXJpc29u
Ci0gKiBpcyBjYXNlLWluc2Vuc2l0aXZlLiAgSXQgYWxzbyBpZ25vcmVzIHRoZSBjaGFyYWN0ZXJz
ICctJywgJ18nLCBhbmQKLSAqICcgJyAoZGFzaCwgdW5kZXJzY29yZSwgYW5kIHNwYWNlKS4gIFRo
dXMgdGhlIHN0cmluZ3MgIlVURi04IiwKLSAqICJ1dGZfOCIsIGFuZCAiVXRmIDgiIGFyZSBleGFj
dGx5IGVxdWl2YWxlbnQuCi0gKiAKLSAqIEBwYXJhbSBuYW1lMSBhIGNvbnZlcnRlciBuYW1lIG9y
IGFsaWFzLCB6ZXJvLXRlcm1pbmF0ZWQKLSAqIEBwYXJhbSBuYW1lMiBhIGNvbnZlcnRlciBuYW1l
IG9yIGFsaWFzLCB6ZXJvLXRlcm1pbmF0ZWQKLSAqIEByZXR1cm4gMCBpZiB0aGUgbmFtZXMgbWF0
Y2gsIG9yIGEgbmVnYXRpdmUgdmFsdWUgaWYgdGhlIG5hbWUxCi0gKiBsZXhpY2FsbHkgcHJlY2Vk
ZXMgbmFtZTIsIG9yIGEgcG9zaXRpdmUgdmFsdWUgaWYgdGhlIG5hbWUxCi0gKiBsZXhpY2FsbHkg
Zm9sbG93cyBuYW1lMi4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQgVV9F
WFBPUlQyCi11Y252X2NvbXBhcmVOYW1lcyhjb25zdCBjaGFyICpuYW1lMSwgY29uc3QgY2hhciAq
bmFtZTIpOwotCi0KLS8qKgotICogQ3JlYXRlcyBhIFVDb252ZXJ0ZXIgb2JqZWN0IHdpdGggdGhl
IG5hbWVzIHNwZWNpZmllZCBhcyBhIEMgc3RyaW5nLgotICogVGhlIGFjdHVhbCBuYW1lIHdpbGwg
YmUgcmVzb2x2ZWQgd2l0aCB0aGUgYWxpYXMgZmlsZQotICogdXNpbmcgYSBjYXNlLWluc2Vuc2l0
aXZlIHN0cmluZyBjb21wYXJpc29uIHRoYXQgaWdub3JlcwotICogdGhlIGRlbGltaXRlcnMgJy0n
LCAnXycsIGFuZCAnICcgKGRhc2gsIHVuZGVyc2NvcmUsIGFuZCBzcGFjZSkuCi0gKiBFLmcuLCB0
aGUgbmFtZXMgIlVURjgiLCAidXRmLTgiLCBhbmQgIlV0ZiA4IiBhcmUgYWxsIGVxdWl2YWxlbnQu
Ci0gKiBJZiA8Y29kZT5OVUxMPC9jb2RlPiBpcyBwYXNzZWQgZm9yIHRoZSBjb252ZXJ0ZXIgbmFt
ZSwgaXQgd2lsbCBjcmVhdGUgb25lIHdpdGggdGhlCi0gKiBnZXREZWZhdWx0TmFtZSByZXR1cm4g
dmFsdWUuCi0gKgotICogPHA+QSBjb252ZXJ0ZXIgbmFtZSBmb3IgSUNVIDEuNSBhbmQgYWJvdmUg
bWF5IGNvbnRhaW4gb3B0aW9ucwotICogbGlrZSBhIGxvY2FsZSBzcGVjaWZpY2F0aW9uIHRvIGNv
bnRyb2wgdGhlIHNwZWNpZmljIGJlaGF2aW9yIG9mCi0gKiB0aGUgbmV3bHkgaW5zdGFudGlhdGVk
IGNvbnZlcnRlci4KLSAqIFRoZSBtZWFuaW5nIG9mIHRoZSBvcHRpb25zIGRlcGVuZHMgb24gdGhl
IHBhcnRpY3VsYXIgY29udmVydGVyLgotICogSWYgYW4gb3B0aW9uIGlzIG5vdCBkZWZpbmVkIGZv
ciBvciByZWNvZ25pemVkIGJ5IGEgZ2l2ZW4gY29udmVydGVyLCB0aGVuIGl0IGlzIGlnbm9yZWQu
PC9wPgotICoKLSAqIDxwPk9wdGlvbnMgYXJlIGFwcGVuZGVkIHRvIHRoZSBjb252ZXJ0ZXIgbmFt
ZSBzdHJpbmcsIHdpdGggYQotICogPGNvZGU+VUNOVl9PUFRJT05fU0VQX0NIQVI8L2NvZGU+IGJl
dHdlZW4gdGhlIG5hbWUgYW5kIHRoZSBmaXJzdCBvcHRpb24gYW5kCi0gKiBhbHNvIGJldHdlZW4g
YWRqYWNlbnQgb3B0aW9ucy48L3A+Ci0gKgotICogPHA+SWYgdGhlIGFsaWFzIGlzIGFtYmlndW91
cywgdGhlbiB0aGUgcHJlZmVycmVkIGNvbnZlcnRlciBpcyB1c2VkCi0gKiBhbmQgdGhlIHN0YXR1
cyBpcyBzZXQgdG8gVV9BTUJJR1VPVVNfQUxJQVNfV0FSTklORy48L3A+Ci0gKgotICogPHA+VGhl
IGNvbnZlcnNpb24gYmVoYXZpb3IgYW5kIG5hbWVzIGNhbiB2YXJ5IGJldHdlZW4gcGxhdGZvcm1z
LiBJQ1UgbWF5Ci0gKiBjb252ZXJ0IHNvbWUgY2hhcmFjdGVycyBkaWZmZXJlbnRseSBmcm9tIG90
aGVyIHBsYXRmb3Jtcy4gRGV0YWlscyBvbiB0aGlzIHRvcGljCi0gKiBhcmUgaW4gdGhlIDxhIGhy
ZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL2NvbnZlcnNpb24u
aHRtbCI+VXNlcidzCi0gKiBHdWlkZTwvYT4uPC9wPgotICoKLSAqIEBwYXJhbSBjb252ZXJ0ZXJO
YW1lIE5hbWUgb2YgdGhlIHVjb252IHRhYmxlLCBtYXkgaGF2ZSBvcHRpb25zIGFwcGVuZGVkCi0g
KiBAcGFyYW0gZXJyIG91dGdvaW5nIGVycm9yIHN0YXR1cyA8VFQ+VV9NRU1PUllfQUxMT0NBVElP
Tl9FUlJPUiwgVV9GSUxFX0FDQ0VTU19FUlJPUjwvVFQ+Ci0gKiBAcmV0dXJuIHRoZSBjcmVhdGVk
IFVuaWNvZGUgY29udmVydGVyIG9iamVjdCwgb3IgPFRUPk5VTEw8L1RUPiBpZiBhbiBlcnJvciBv
Y2N1cmVkCi0gKiBAc2VlIHVjbnZfb3BlblUKLSAqIEBzZWUgdWNudl9vcGVuQ0NTSUQKLSAqIEBz
ZWUgdWNudl9jbG9zZQotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVDb252ZXJ0
ZXIqIFVfRVhQT1JUMiAKLXVjbnZfb3Blbihjb25zdCBjaGFyICpjb252ZXJ0ZXJOYW1lLCBVRXJy
b3JDb2RlICplcnIpOwotCi0KLS8qKgotICogQ3JlYXRlcyBhIFVuaWNvZGUgY29udmVydGVyIHdp
dGggdGhlIG5hbWVzIHNwZWNpZmllZCBhcyB1bmljb2RlIHN0cmluZy4gCi0gKiBUaGUgbmFtZSBz
aG91bGQgYmUgbGltaXRlZCB0byB0aGUgQVNDSUktNyBhbHBoYW51bWVyaWNzIHJhbmdlLgotICog
VGhlIGFjdHVhbCBuYW1lIHdpbGwgYmUgcmVzb2x2ZWQgd2l0aCB0aGUgYWxpYXMgZmlsZQotICog
dXNpbmcgYSBjYXNlLWluc2Vuc2l0aXZlIHN0cmluZyBjb21wYXJpc29uIHRoYXQgaWdub3Jlcwot
ICogdGhlIGRlbGltaXRlcnMgJy0nLCAnXycsIGFuZCAnICcgKGRhc2gsIHVuZGVyc2NvcmUsIGFu
ZCBzcGFjZSkuCi0gKiBFLmcuLCB0aGUgbmFtZXMgIlVURjgiLCAidXRmLTgiLCBhbmQgIlV0ZiA4
IiBhcmUgYWxsIGVxdWl2YWxlbnQuCi0gKiBJZiA8VFQ+TlVMTDwvVFQ+IGlzIHBhc3NlZCBmb3Ig
dGhlIGNvbnZlcnRlciBuYW1lLCBpdCB3aWxsIGNyZWF0ZSAKLSAqIG9uZSB3aXRoIHRoZSB1Y252
X2dldERlZmF1bHROYW1lKCkgcmV0dXJuIHZhbHVlLgotICogSWYgdGhlIGFsaWFzIGlzIGFtYmln
dW91cywgdGhlbiB0aGUgcHJlZmVycmVkIGNvbnZlcnRlciBpcyB1c2VkCi0gKiBhbmQgdGhlIHN0
YXR1cyBpcyBzZXQgdG8gVV9BTUJJR1VPVVNfQUxJQVNfV0FSTklORy4KLSAqIEBwYXJhbSBuYW1l
IDogbmFtZSBvZiB0aGUgdWNvbnYgdGFibGUgaW4gYSB6ZXJvIHRlcm1pbmF0ZWQgCi0gKiAgICAg
ICAgVW5pY29kZSBzdHJpbmcKLSAqIEBwYXJhbSBlcnIgb3V0Z29pbmcgZXJyb3Igc3RhdHVzIDxU
VD5VX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SLCAKLSAqICAgICAgICBVX0ZJTEVfQUNDRVNTX0VS
Uk9SPC9UVD4KLSAqIEByZXR1cm4gdGhlIGNyZWF0ZWQgVW5pY29kZSBjb252ZXJ0ZXIgb2JqZWN0
LCBvciA8VFQ+TlVMTDwvVFQ+IGlmIGFuIAotICogICAgICAgIGVycm9yIG9jY3VyZWQKLSAqIEBz
ZWUgdWNudl9vcGVuCi0gKiBAc2VlIHVjbnZfb3BlbkNDU0lECi0gKiBAc2VlIHVjbnZfY2xvc2UK
LSAqIEBzZWUgdWNudl9nZXREZWZhdWx0TmFtZQotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVf
U1RBQkxFIFVDb252ZXJ0ZXIqIFVfRVhQT1JUMiAKLXVjbnZfb3BlblUoY29uc3QgVUNoYXIgKm5h
bWUsCi0gICAgICAgICAgIFVFcnJvckNvZGUgKmVycik7Ci0KLS8qKgotICogQ3JlYXRlcyBhIFVD
b252ZXJ0ZXIgb2JqZWN0IGZyb20gYSBDQ1NJRCBudW1iZXIgYW5kIHBsYXRmb3JtIHBhaXIuCi0g
KiBOb3RlIHRoYXQgdGhlIHVzZWZ1bG5lc3Mgb2YgdGhpcyBmdW5jdGlvbiBpcyBsaW1pdGVkIHRv
IHBsYXRmb3JtcyB3aXRoIG51bWVyaWMKLSAqIGVuY29kaW5nIElEcy4gT25seSBJQk0gYW5kIE1p
Y3Jvc29mdCBwbGF0Zm9ybXMgdXNlIG51bWVyaWMgKDE2LWJpdCkgaWRlbnRpZmllcnMgZm9yCi0g
KiBlbmNvZGluZ3MuCi0gKgotICogSW4gYWRkaXRpb24sIElCTSBDQ1NJRHMgYW5kIFVuaWNvZGUg
Y29udmVyc2lvbiB0YWJsZXMgYXJlIG5vdCAxOjEgcmVsYXRlZC4KLSAqIEZvciBtYW55IElCTSBD
Q1NJRHMgdGhlcmUgYXJlIG11bHRpcGxlICh1cCB0byBzaXgpIFVuaWNvZGUgY29udmVyc2lvbiB0
YWJsZXMsIGFuZAotICogZm9yIHNvbWUgVW5pY29kZSBjb252ZXJzaW9uIHRhYmxlcyB0aGVyZSBh
cmUgbXVsdGlwbGUgQ0NTSURzLgotICogU29tZSAiYWx0ZXJuYXRlIiBVbmljb2RlIGNvbnZlcnNp
b24gdGFibGVzIGFyZSBwcm92aWRlZCBieSB0aGUKLSAqIElCTSBDRFJBIGNvbnZlcnNpb24gdGFi
bGUgcmVnaXN0cnkuCi0gKiBUaGUgbW9zdCBwcm9taW5lbnQgZXhhbXBsZSBvZiBhIHN5c3RlbWF0
aWMgbW9kaWZpY2F0aW9uIG9mIGNvbnZlcnNpb24gdGFibGVzIHRoYXQgaXMKLSAqIG5vdCBwcm92
aWRlZCBpbiB0aGUgZm9ybSBvZiBjb252ZXJzaW9uIHRhYmxlIGZpbGVzIGluIHRoZSByZXBvc2l0
b3J5IGlzCi0gKiB0aGF0IFMvMzkwIFVuaXggU3lzdGVtIFNlcnZpY2VzIHN3YXBzIHRoZSBjb2Rl
cyBmb3IgTGluZSBGZWVkIGFuZCBOZXcgTGluZSBpbiBhbGwKLSAqIEVCQ0RJQyBjb2RlcGFnZXMs
IHdoaWNoIHJlcXVpcmVzIHN1Y2ggYSBzd2FwIGluIHRoZSBVbmljb2RlIGNvbnZlcnNpb24gdGFi
bGVzIGFzIHdlbGwuCi0gKgotICogT25seSBJQk0gZGVmYXVsdCBjb252ZXJzaW9uIHRhYmxlcyBh
cmUgYWNjZXNzaWJsZSB3aXRoIHVjbnZfb3BlbkNDU0lEKCkuCi0gKiB1Y252X2dldENDU0lEKCkg
d2lsbCByZXR1cm4gdGhlIHNhbWUgQ0NTSUQgZm9yIGFsbCBjb252ZXJzaW9uIHRhYmxlcyB0aGF0
IGFyZSBhc3NvY2lhdGVkCi0gKiB3aXRoIHRoYXQgQ0NTSUQuCi0gKgotICogQ3VycmVudGx5LCB0
aGUgb25seSAicGxhdGZvcm0iIHN1cHBvcnRlZCBpbiB0aGUgSUNVIGNvbnZlcnRlciBBUEkgaXMg
VUNOVl9JQk0uCi0gKgotICogSW4gc3VtbWFyeSwgdGhlIHVzZSBvZiBDQ1NJRHMgYW5kIHRoZSBh
c3NvY2lhdGVkIEFQSSBmdW5jdGlvbnMgaXMgbm90IHJlY29tbWVuZGVkLgotICoKLSAqIEluIG9y
ZGVyIHRvIG9wZW4gYSBjb252ZXJ0ZXIgd2l0aCB0aGUgZGVmYXVsdCBJQk0gQ0RSQSBVbmljb2Rl
IGNvbnZlcnNpb24gdGFibGUsCi0gKiB5b3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIG9yIHVzZSB0
aGUgcHJlZml4ICJpYm0tIjoKLSAqIFxjb2RlCi0gKiAgICAgY2hhciBuYW1lWzIwXTsKLSAqICAg
ICBzcHJpbnRmKG5hbWUsICJpYm0tJWh1IiwgY2NzaWQpOwotICogICAgIGNudj11Y252X29wZW4o
bmFtZSwgJmVycm9yQ29kZSk7Ci0gKiBcZW5kY29kZQotICoKLSAqIEluIG9yZGVyIHRvIG9wZW4g
YSBjb252ZXJ0ZXIgd2l0aCB0aGUgSUJNIFMvMzkwIFVuaXggU3lzdGVtIFNlcnZpY2VzIHZhcmlh
bnQKLSAqIG9mIGEgVW5pY29kZS9FQkNESUMgY29udmVyc2lvbiB0YWJsZSwKLSAqIHlvdSBjYW4g
dXNlIHRoZSBwcmVmaXggImlibS0iIHRvZ2V0aGVyIHdpdGggdGhlIG9wdGlvbiBzdHJpbmcgVUNO
Vl9TV0FQX0xGTkxfT1BUSU9OX1NUUklORzoKLSAqIFxjb2RlCi0gKiAgICAgY2hhciBuYW1lWzIw
XTsKLSAqICAgICBzcHJpbnRmKG5hbWUsICJpYm0tJWh1IiBVQ05WX1NXQVBfTEZOTF9PUFRJT05f
U1RSSU5HLCBjY3NpZCk7Ci0gKiAgICAgY252PXVjbnZfb3BlbihuYW1lLCAmZXJyb3JDb2RlKTsK
LSAqIFxlbmRjb2RlCi0gKgotICogSW4gb3JkZXIgdG8gb3BlbiBhIGNvbnZlcnRlciBmcm9tIGEg
TWljcm9zb2Z0IGNvZGVwYWdlIG51bWJlciwgdXNlIHRoZSBwcmVmaXggImNwIjoKLSAqIFxjb2Rl
Ci0gKiAgICAgY2hhciBuYW1lWzIwXTsKLSAqICAgICBzcHJpbnRmKG5hbWUsICJjcCVodSIsIGNv
ZGVwYWdlSUQpOwotICogICAgIGNudj11Y252X29wZW4obmFtZSwgJmVycm9yQ29kZSk7Ci0gKiBc
ZW5kY29kZQotICoKLSAqIElmIHRoZSBhbGlhcyBpcyBhbWJpZ3VvdXMsIHRoZW4gdGhlIHByZWZl
cnJlZCBjb252ZXJ0ZXIgaXMgdXNlZAotICogYW5kIHRoZSBzdGF0dXMgaXMgc2V0IHRvIFVfQU1C
SUdVT1VTX0FMSUFTX1dBUk5JTkcuCi0gKgotICogQHBhcmFtIGNvZGVwYWdlIGNvZGVwYWdlIG51
bWJlciB0byBjcmVhdGUKLSAqIEBwYXJhbSBwbGF0Zm9ybSB0aGUgcGxhdGZvcm0gaW4gd2hpY2gg
dGhlIGNvZGVwYWdlIG51bWJlciBleGlzdHMKLSAqIEBwYXJhbSBlcnIgZXJyb3Igc3RhdHVzIDxU
VD5VX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SLCBVX0ZJTEVfQUNDRVNTX0VSUk9SPC9UVD4KLSAq
IEByZXR1cm4gdGhlIGNyZWF0ZWQgVW5pY29kZSBjb252ZXJ0ZXIgb2JqZWN0LCBvciA8VFQ+TlVM
TDwvVFQ+IGlmIGFuIGVycm9yCi0gKiAgIG9jY3VyZWQuCi0gKiBAc2VlIHVjbnZfb3BlbgotICog
QHNlZSB1Y252X29wZW5VCi0gKiBAc2VlIHVjbnZfY2xvc2UKLSAqIEBzZWUgdWNudl9nZXRDQ1NJ
RAotICogQHNlZSB1Y252X2dldFBsYXRmb3JtCi0gKiBAc2VlIFVDb252ZXJ0ZXJQbGF0Zm9ybQot
ICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVDb252ZXJ0ZXIqIFVfRVhQT1JUMgot
dWNudl9vcGVuQ0NTSUQoaW50MzJfdCBjb2RlcGFnZSwKLSAgICAgICAgICAgICAgIFVDb252ZXJ0
ZXJQbGF0Zm9ybSBwbGF0Zm9ybSwKLSAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKiBlcnIpOwot
Ci0vKioKLSAqIDxwPkNyZWF0ZXMgYSBVQ29udmVydGVyIG9iamVjdCBzcGVjaWZpZWQgZnJvbSBh
IHBhY2thZ2VOYW1lIGFuZCBhIGNvbnZlcnRlck5hbWUuPC9wPgotICogCi0gKiA8cD5UaGUgcGFj
a2FnZU5hbWUgYW5kIGNvbnZlcnRlck5hbWUgbXVzdCBwb2ludCB0byBhbiBJQ1UgdWRhdGEgb2Jq
ZWN0LCBhcyBkZWZpbmVkIGJ5Ci0gKiAgIDxjb2RlPiB1ZGF0YV9vcGVuKCBwYWNrYWdlTmFtZSwg
ImNudiIsIGNvbnZlcnRlck5hbWUsIGVycikgPC9jb2RlPiBvciBlcXVpdmFsZW50LgotICogVHlw
aWNhbGx5LCBwYWNrYWdlTmFtZSB3aWxsIHJlZmVyIHRvIGEgKC5kYXQpIGZpbGUsIG9yIHRvIGEg
cGFja2FnZSByZWdpc3RlcmVkIHdpdGgKLSAqIHVkYXRhX3NldEFwcERhdGEoKS48L3A+Ci0gKiAK
LSAqIDxwPlRoZSBuYW1lIHdpbGwgTk9UIGJlIGxvb2tlZCB1cCBpbiB0aGUgYWxpYXMgbWVjaGFu
aXNtLCBub3Igd2lsbCB0aGUgY29udmVydGVyIGJlCi0gKiBzdG9yZWQgaW4gdGhlIGNvbnZlcnRl
ciBjYWNoZSBvciB0aGUgYWxpYXMgdGFibGUuIFRoZSBvbmx5IHdheSB0byBvcGVuIGZ1cnRoZXIg
Y29udmVydGVycwotICogaXMgY2FsbCB0aGlzIGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzLCBvciB1
c2UgdGhlIHVjbnZfc2FmZUNsb25lKCkgZnVuY3Rpb24gdG8gY2xvbmUgYSAKLSAqICdtYXN0ZXIn
IGNvbnZlcnRlci48L3A+Ci0gKgotICogPHA+QSBmdXR1cmUgdmVyc2lvbiBvZiBJQ1UgbWF5IGFk
ZCBhbGlhcyB0YWJsZSBsb29rdXBzIGFuZC9vciBjYWNoaW5nCi0gKiB0byB0aGlzIGZ1bmN0aW9u
LjwvcD4KLSAqIAotICogPHA+RXhhbXBsZSBVc2U6Ci0gKiAgICAgIDxjb2RlPmNudiA9IHVjbnZf
b3BlblBhY2thZ2UoIm15YXBwIiwgIm15Y29udmVydGVyIiwgJmVycik7PC9jb2RlPgotICogPC9w
PgotICoKLSAqIEBwYXJhbSBwYWNrYWdlTmFtZSBuYW1lIG9mIHRoZSBwYWNrYWdlIChlcXVpdmFs
ZW50IHRvICdwYXRoJyBpbiB1ZGF0YV9vcGVuKCkgY2FsbCkKLSAqIEBwYXJhbSBjb252ZXJ0ZXJO
YW1lIG5hbWUgb2YgdGhlIGRhdGEgaXRlbSB0byBiZSB1c2VkLCB3aXRob3V0IHN1ZmZpeC4KLSAq
IEBwYXJhbSBlcnIgb3V0Z29pbmcgZXJyb3Igc3RhdHVzIDxUVD5VX01FTU9SWV9BTExPQ0FUSU9O
X0VSUk9SLCBVX0ZJTEVfQUNDRVNTX0VSUk9SPC9UVD4KLSAqIEByZXR1cm4gdGhlIGNyZWF0ZWQg
VW5pY29kZSBjb252ZXJ0ZXIgb2JqZWN0LCBvciA8VFQ+TlVMTDwvVFQ+IGlmIGFuIGVycm9yIG9j
Y3VyZWQKLSAqIEBzZWUgdWRhdGFfb3BlbgotICogQHNlZSB1Y252X29wZW4KLSAqIEBzZWUgdWNu
dl9zYWZlQ2xvbmUKLSAqIEBzZWUgdWNudl9jbG9zZQotICogQHN0YWJsZSBJQ1UgMi4yCi0gKi8K
LVVfU1RBQkxFIFVDb252ZXJ0ZXIqIFVfRVhQT1JUMiAKLXVjbnZfb3BlblBhY2thZ2UoY29uc3Qg
Y2hhciAqcGFja2FnZU5hbWUsIGNvbnN0IGNoYXIgKmNvbnZlcnRlck5hbWUsIFVFcnJvckNvZGUg
KmVycik7Ci0KLS8qKgotICogVGhyZWFkIHNhZmUgY2xvbmluZyBvcGVyYXRpb24KLSAqIEBwYXJh
bSBjbnYgY29udmVydGVyIHRvIGJlIGNsb25lZAotICogQHBhcmFtIHN0YWNrQnVmZmVyIHVzZXIg
YWxsb2NhdGVkIHNwYWNlIGZvciB0aGUgbmV3IGNsb25lLiBJZiBOVUxMIG5ldyBtZW1vcnkgd2ls
bCBiZSBhbGxvY2F0ZWQuIAotICogIElmIGJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoLCBuZXcg
bWVtb3J5IHdpbGwgYmUgYWxsb2NhdGVkLgotICogIENsaWVudHMgY2FuIHVzZSB0aGUgVV9DTlZf
U0FGRUNMT05FX0JVRkZFUlNJWkUuIFRoaXMgd2lsbCBwcm9iYWJseSBiZSBlbm91Z2ggdG8gYXZv
aWQgbWVtb3J5IGFsbG9jYXRpb25zLgotICogQHBhcmFtIHBCdWZmZXJTaXplIHBvaW50ZXIgdG8g
c2l6ZSBvZiBhbGxvY2F0ZWQgc3BhY2UuIAotICogIElmICpwQnVmZmVyU2l6ZSA9PSAwLCBhIHN1
ZmZpY2llbnQgc2l6ZSBmb3IgdXNlIGluIGNsb25pbmcgd2lsbCAKLSAqICBiZSByZXR1cm5lZCAo
J3ByZS1mbGlnaHRpbmcnKQotICogIElmICpwQnVmZmVyU2l6ZSBpcyBub3QgZW5vdWdoIGZvciBh
IHN0YWNrLWJhc2VkIHNhZmUgY2xvbmUsIAotICogIG5ldyBtZW1vcnkgd2lsbCBiZSBhbGxvY2F0
ZWQuCi0gKiBAcGFyYW0gc3RhdHVzIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiB3
ZW50IG9uIHNtb290aGx5IG9yIHRoZXJlIHdlcmUgZXJyb3JzCi0gKiAgQW4gaW5mb3JtYXRpb25h
bCBzdGF0dXMgdmFsdWUsIFVfU0FGRUNMT05FX0FMTE9DQVRFRF9FUlJPUiwgaXMgdXNlZCBpZiBh
bnkgYWxsb2NhdGlvbnMgd2VyZSBuZWNlc3NhcnkuCi0gKiBAcmV0dXJuIHBvaW50ZXIgdG8gdGhl
IG5ldyBjbG9uZQotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVDb252ZXJ0ZXIg
KiBVX0VYUE9SVDIgCi11Y252X3NhZmVDbG9uZShjb25zdCBVQ29udmVydGVyICpjbnYsIAotICAg
ICAgICAgICAgICAgdm9pZCAgICAgICAgICAgICAqc3RhY2tCdWZmZXIsCi0gICAgICAgICAgICAg
ICBpbnQzMl90ICAgICAgICAgICpwQnVmZmVyU2l6ZSwgCi0gICAgICAgICAgICAgICBVRXJyb3JD
b2RlICAgICAgICpzdGF0dXMpOwotCi0vKioKLSAqIFxkZWYgVV9DTlZfU0FGRUNMT05FX0JVRkZF
UlNJWkUKLSAqIERlZmluaXRpb24gb2YgYSBidWZmZXIgc2l6ZSB0aGF0IGlzIGRlc2lnbmVkIHRv
IGJlIGxhcmdlIGVub3VnaCBmb3IKLSAqIGNvbnZlcnRlcnMgdG8gYmUgY2xvbmVkIHdpdGggdWNu
dl9zYWZlQ2xvbmUoKS4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi0jZGVmaW5lIFVfQ05WX1NB
RkVDTE9ORV9CVUZGRVJTSVpFICAxMDI0Ci0KLS8qKgotICogRGVsZXRlcyB0aGUgdW5pY29kZSBj
b252ZXJ0ZXIgYW5kIHJlbGVhc2VzIHJlc291cmNlcyBhc3NvY2lhdGVkCi0gKiB3aXRoIGp1c3Qg
dGhpcyBpbnN0YW5jZS4KLSAqIERvZXMgbm90IGZyZWUgdXAgc2hhcmVkIGNvbnZlcnRlciB0YWJs
ZXMuCi0gKgotICogQHBhcmFtIGNvbnZlcnRlciB0aGUgY29udmVydGVyIG9iamVjdCB0byBiZSBk
ZWxldGVkCi0gKiBAc2VlIHVjbnZfb3BlbgotICogQHNlZSB1Y252X29wZW5VCi0gKiBAc2VlIHVj
bnZfb3BlbkNDU0lECi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgdm9pZCAgVV9F
WFBPUlQyCi11Y252X2Nsb3NlKFVDb252ZXJ0ZXIgKiBjb252ZXJ0ZXIpOwotCi0vKioKLSAqIEZp
bGxzIGluIHRoZSBvdXRwdXQgcGFyYW1ldGVyLCBzdWJDaGFycywgd2l0aCB0aGUgc3Vic3RpdHV0
aW9uIGNoYXJhY3RlcnMKLSAqIGFzIG11bHRpcGxlIGJ5dGVzLgotICoKLSAqIEBwYXJhbSBjb252
ZXJ0ZXIgdGhlIFVuaWNvZGUgY29udmVydGVyCi0gKiBAcGFyYW0gc3ViQ2hhcnMgdGhlIHN1YnNp
dHV0aW9uIGNoYXJhY3RlcnMKLSAqIEBwYXJhbSBsZW4gb24gaW5wdXQgdGhlIGNhcGFjaXR5IG9m
IHN1YkNoYXJzLCBvbiBvdXRwdXQgdGhlIG51bWJlciAKLSAqIG9mIGJ5dGVzIGNvcGllZCB0byBp
dAotICogQHBhcmFtICBlcnIgdGhlIG91dGdvaW5nIGVycm9yIHN0YXR1cyBjb2RlLgotICogSWYg
dGhlIHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIgYXJyYXkgaXMgdG9vIHNtYWxsLCBhbgotICogPFRU
PlVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1I8L1RUPiB3aWxsIGJlIHJldHVybmVkLgotICogQHNl
ZSB1Y252X3NldFN1YnN0Q2hhcnMKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB2
b2lkIFVfRVhQT1JUMgotdWNudl9nZXRTdWJzdENoYXJzKGNvbnN0IFVDb252ZXJ0ZXIgKmNvbnZl
cnRlciwKLSAgICAgICAgICAgICAgICAgICBjaGFyICpzdWJDaGFycywKLSAgICAgICAgICAgICAg
ICAgICBpbnQ4X3QgKmxlbiwKLSAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICplcnIpOwot
Ci0vKioKLSAqIFNldHMgdGhlIHN1YnN0aXR1dGlvbiBjaGFycyB3aGVuIGNvbnZlcnRpbmcgZnJv
bSB1bmljb2RlIHRvIGEgY29kZXBhZ2UuIFRoZQotICogc3Vic3RpdHV0aW9uIGlzIHNwZWNpZmll
ZCBhcyBhIHN0cmluZyBvZiAxLTQgYnl0ZXMsIGFuZCBtYXkgY29udGFpbgotICogIDxUVD5OVUxM
PC9UVD4gYnl0ZS4KLSAqIEBwYXJhbSBjb252ZXJ0ZXIgdGhlIFVuaWNvZGUgY29udmVydGVyCi0g
KiBAcGFyYW0gc3ViQ2hhcnMgdGhlIHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIgYnl0ZSBzZXF1ZW5j
ZSB3ZSB3YW50IHNldAotICogQHBhcmFtIGxlbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHN1YkNo
YXJzCi0gKiBAcGFyYW0gZXJyIHRoZSBlcnJvciBzdGF0dXMgY29kZS4gIDxUVD5VX0lOREVYX09V
VE9GQk9VTkRTX0VSUk9SIDwvVFQ+IGlmCi0gKiBsZW4gaXMgYmlnZ2VyIHRoYW4gdGhlIG1heGlt
dW0gbnVtYmVyIG9mIGJ5dGVzIGFsbG93ZWQgaW4gc3ViY2hhcnMKLSAqIEBzZWUgdWNudl9nZXRT
dWJzdENoYXJzCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9S
VDIKLXVjbnZfc2V0U3Vic3RDaGFycyhVQ29udmVydGVyICpjb252ZXJ0ZXIsCi0gICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqc3ViQ2hhcnMsCi0gICAgICAgICAgICAgICAgICAgaW50OF90
IGxlbiwKLSAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICplcnIpOwotCi0vKioKLSAqIEZp
bGxzIGluIHRoZSBvdXRwdXQgcGFyYW1ldGVyLCBlcnJCeXRlcywgd2l0aCB0aGUgZXJyb3IgY2hh
cmFjdGVycyBmcm9tIHRoZQotICogbGFzdCBmYWlsaW5nIGNvbnZlcnNpb24uCi0gKgotICogQHBh
cmFtIGNvbnZlcnRlciB0aGUgVW5pY29kZSBjb252ZXJ0ZXIKLSAqIEBwYXJhbSBlcnJCeXRlcyB0
aGUgY29kZXBhZ2UgYnl0ZXMgd2hpY2ggd2VyZSBpbiBlcnJvcgotICogQHBhcmFtIGxlbiBvbiBp
bnB1dCB0aGUgY2FwYWNpdHkgb2YgZXJyQnl0ZXMsIG9uIG91dHB1dCB0aGUgbnVtYmVyIG9mCi0g
KiAgYnl0ZXMgd2hpY2ggd2VyZSBjb3BpZWQgdG8gaXQKLSAqIEBwYXJhbSBlcnIgdGhlIGVycm9y
IHN0YXR1cyBjb2RlLgotICogSWYgdGhlIHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIgYXJyYXkgaXMg
dG9vIHNtYWxsLCBhbgotICogPFRUPlVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1I8L1RUPiB3aWxs
IGJlIHJldHVybmVkLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyCi11Y252X2dldEludmFsaWRDaGFycyhjb25zdCBVQ29udmVydGVyICpjb252ZXJ0ZXIs
Ci0gICAgICAgICAgICAgICAgICAgICBjaGFyICplcnJCeXRlcywKLSAgICAgICAgICAgICAgICAg
ICAgIGludDhfdCAqbGVuLAotICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqZXJyKTsK
LQotLyoqCi0gKiBGaWxscyBpbiB0aGUgb3V0cHV0IHBhcmFtZXRlciwgZXJyQ2hhcnMsIHdpdGgg
dGhlIGVycm9yIGNoYXJhY3RlcnMgZnJvbSB0aGUKLSAqIGxhc3QgZmFpbGluZyBjb252ZXJzaW9u
LgotICoKLSAqIEBwYXJhbSBjb252ZXJ0ZXIgdGhlIFVuaWNvZGUgY29udmVydGVyCi0gKiBAcGFy
YW0gZXJyVUNoYXJzIHRoZSBVQ2hhcnMgd2hpY2ggd2VyZSBpbiBlcnJvcgotICogQHBhcmFtIGxl
biBvbiBpbnB1dCB0aGUgY2FwYWNpdHkgb2YgZXJyVUNoYXJzLCBvbiBvdXRwdXQgdGhlIG51bWJl
ciBvZiAKLSAqICBVQ2hhcnMgd2hpY2ggd2VyZSBjb3BpZWQgdG8gaXQKLSAqIEBwYXJhbSBlcnIg
dGhlIGVycm9yIHN0YXR1cyBjb2RlLgotICogSWYgdGhlIHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIg
YXJyYXkgaXMgdG9vIHNtYWxsLCBhbgotICogPFRUPlVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1I8
L1RUPiB3aWxsIGJlIHJldHVybmVkLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxF
IHZvaWQgVV9FWFBPUlQyCi11Y252X2dldEludmFsaWRVQ2hhcnMoY29uc3QgVUNvbnZlcnRlciAq
Y29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgIFVDaGFyICplcnJVQ2hhcnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgaW50OF90ICpsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSAqZXJyKTsKLQotLyoqCi0gKiBSZXNldHMgdGhlIHN0YXRlIG9mIGEgY29udmVydGVy
IHRvIHRoZSBkZWZhdWx0IHN0YXRlLiBUaGlzIGlzIHVzZWQKLSAqIGluIHRoZSBjYXNlIG9mIGFu
IGVycm9yLCB0byByZXN0YXJ0IGEgY29udmVyc2lvbiBmcm9tIGEga25vd24gZGVmYXVsdCBzdGF0
ZS4KLSAqIEl0IHdpbGwgYWxzbyBlbXB0eSB0aGUgaW50ZXJuYWwgb3V0cHV0IGJ1ZmZlcnMuCi0g
KiBAcGFyYW0gY29udmVydGVyIHRoZSBVbmljb2RlIGNvbnZlcnRlcgotICogQHN0YWJsZSBJQ1Ug
Mi4wCi0gKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCi11Y252X3Jlc2V0KFVDb252ZXJ0ZXIg
KmNvbnZlcnRlcik7Ci0KLS8qKgotICogUmVzZXRzIHRoZSB0by1Vbmljb2RlIHBhcnQgb2YgYSBj
b252ZXJ0ZXIgc3RhdGUgdG8gdGhlIGRlZmF1bHQgc3RhdGUuCi0gKiBUaGlzIGlzIHVzZWQgaW4g
dGhlIGNhc2Ugb2YgYW4gZXJyb3IgdG8gcmVzdGFydCBhIGNvbnZlcnNpb24gdG8KLSAqIFVuaWNv
ZGUgdG8gYSBrbm93biBkZWZhdWx0IHN0YXRlLiBJdCB3aWxsIGFsc28gZW1wdHkgdGhlIGludGVy
bmFsCi0gKiBvdXRwdXQgYnVmZmVycyB1c2VkIGZvciB0aGUgY29udmVyc2lvbiB0byBVbmljb2Rl
IGNvZGVwb2ludHMuCi0gKiBAcGFyYW0gY29udmVydGVyIHRoZSBVbmljb2RlIGNvbnZlcnRlcgot
ICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAotdWNudl9y
ZXNldFRvVW5pY29kZShVQ29udmVydGVyICpjb252ZXJ0ZXIpOwotCi0vKioKLSAqIFJlc2V0cyB0
aGUgZnJvbS1Vbmljb2RlIHBhcnQgb2YgYSBjb252ZXJ0ZXIgc3RhdGUgdG8gdGhlIGRlZmF1bHQg
c3RhdGUuCi0gKiBUaGlzIGlzIHVzZWQgaW4gdGhlIGNhc2Ugb2YgYW4gZXJyb3IgdG8gcmVzdGFy
dCBhIGNvbnZlcnNpb24gZnJvbQotICogVW5pY29kZSB0byBhIGtub3duIGRlZmF1bHQgc3RhdGUu
IEl0IHdpbGwgYWxzbyBlbXB0eSB0aGUgaW50ZXJuYWwgb3V0cHV0Ci0gKiBidWZmZXJzIHVzZWQg
Zm9yIHRoZSBjb252ZXJzaW9uIGZyb20gVW5pY29kZSBjb2RlcG9pbnRzLgotICogQHBhcmFtIGNv
bnZlcnRlciB0aGUgVW5pY29kZSBjb252ZXJ0ZXIKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1V
X1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKLXVjbnZfcmVzZXRGcm9tVW5pY29kZShVQ29udmVydGVy
ICpjb252ZXJ0ZXIpOwotCi0vKioKLSAqIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5
dGVzIHRoYXQgYXJlIG91dHB1dCBwZXIgVUNoYXIgaW4gY29udmVyc2lvbgotICogZnJvbSBVbmlj
b2RlIHVzaW5nIHRoaXMgY29udmVydGVyLgotICogVGhlIHJldHVybmVkIG51bWJlciBjYW4gYmUg
dXNlZCB3aXRoIFVDTlZfR0VUX01BWF9CWVRFU19GT1JfU1RSSU5HCi0gKiB0byBjYWxjdWxhdGUg
dGhlIHNpemUgb2YgYSB0YXJnZXQgYnVmZmVyIGZvciBjb252ZXJzaW9uIGZyb20gVW5pY29kZS4K
LSAqCi0gKiBOb3RlOiBCZWZvcmUgSUNVIDIuOCwgdGhpcyBmdW5jdGlvbiBkaWQgbm90IHJldHVy
biByZWxpYWJsZSBudW1iZXJzIGZvcgotICogc29tZSBzdGF0ZWZ1bCBjb252ZXJ0ZXJzIChFQkNE
SUNfU1RBVEVGVUwsIElTTy0yMDIyKSBhbmQgTE1CQ1MuCi0gKgotICogVGhpcyBudW1iZXIgbWF5
IG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgcGVyCi0gKiAi
Y29udmVyc2lvbiB1bml0Ii4gSW4gb3RoZXIgd29yZHMsIGl0IG1heSBub3QgYmUgdGhlIGludHVp
dGl2ZWx5IGV4cGVjdGVkCi0gKiBudW1iZXIgb2YgYnl0ZXMgcGVyIGNoYXJhY3RlciB0aGF0IHdv
dWxkIGJlIHB1Ymxpc2hlZCBmb3IgYSBjaGFyc2V0LAotICogYW5kIG1heSBub3QgZnVsZmlsbCBh
bnkgb3RoZXIgcHVycG9zZSB0aGFuIHRoZSBhbGxvY2F0aW9uIG9mIGFuIG91dHB1dAotICogYnVm
ZmVyIG9mIGd1YXJhbnRlZWQgc3VmZmljaWVudCBzaXplIGZvciBhIGdpdmVuIGlucHV0IGxlbmd0
aCBhbmQgY29udmVydGVyLgotICoKLSAqIEV4YW1wbGVzIGZvciBzcGVjaWFsIGNhc2VzIHRoYXQg
YXJlIHRha2VuIGludG8gYWNjb3VudDoKLSAqIC0gU3VwcGxlbWVudGFyeSBjb2RlIHBvaW50cyBt
YXkgY29udmVydCB0byBtb3JlIGJ5dGVzIHRoYW4gQk1QIGNvZGUgcG9pbnRzLgotICogICBUaGlz
IGZ1bmN0aW9uIHJldHVybnMgYnl0ZXMgcGVyIFVDaGFyIChVVEYtMTYgY29kZSB1bml0KSwgbm90
IHBlcgotICogICBVbmljb2RlIGNvZGUgcG9pbnQsIGZvciBlZmZpY2llbnQgYnVmZmVyIGFsbG9j
YXRpb24uCi0gKiAtIFN0YXRlLXNoaWZ0aW5nIG91dHB1dCAoU0kvU08sIGVzY2FwZXMsIGV0Yy4p
IGZyb20gc3RhdGVmdWwgY29udmVydGVycy4KLSAqIC0gV2hlbiBtIGlucHV0IFVDaGFycyBhcmUg
Y29udmVydGVkIHRvIG4gb3V0cHV0IGJ5dGVzLCB0aGVuIHRoZSBtYXhpbXVtIG0vbgotICogICBp
cyB0YWtlbiBpbnRvIGFjY291bnQuCi0gKgotICogVGhlIG51bWJlciByZXR1cm5lZCBoZXJlIGRv
ZXMgbm90IHRha2UgaW50byBhY2NvdW50Ci0gKiAoc2VlIFVDTlZfR0VUX01BWF9CWVRFU19GT1Jf
U1RSSU5HKToKLSAqIC0gY2FsbGJhY2tzIHdoaWNoIG91dHB1dCBtb3JlIHRoYW4gb25lIGNoYXJz
ZXQgY2hhcmFjdGVyIHNlcXVlbmNlIHBlciBjYWxsLAotICogICBsaWtlIGVzY2FwZSBjYWxsYmFj
a3MKLSAqIC0gaW5pdGlhbCBhbmQgZmluYWwgbm9uLWNoYXJhY3RlciBieXRlcyB0aGF0IGFyZSBv
dXRwdXQgYnkgc29tZSBjb252ZXJ0ZXJzCi0gKiAgIChhdXRvbWF0aWMgQk9NcywgaW5pdGlhbCBl
c2NhcGUgc2VxdWVuY2UsIGZpbmFsIFNJLCBldGMuKQotICoKLSAqIEV4YW1wbGVzIGZvciByZXR1
cm5lZCB2YWx1ZXM6Ci0gKiAtIFNCQ1MgY2hhcnNldHM6IDEKLSAqIC0gU2hpZnQtSklTOiAyCi0g
KiAtIFVURi0xNjogMiAoMiBwZXIgQk1QLCA0IHBlciBzdXJyb2dhdGUgX3BhaXJfLCBCT00gbm90
IGNvdW50ZWQpCi0gKiAtIFVURi04OiAzICgzIHBlciBCTVAsIDQgcGVyIHN1cnJvZ2F0ZSBfcGFp
cl8pCi0gKiAtIEVCQ0RJQ19TVEFURUZVTCAoRUJDRElDIG1peGVkIFNCQ1MvREJDUyk6IDMgKFNP
ICsgREJDUykKLSAqIC0gSVNPLTIwMjI6IDMgKGFsd2F5cyBvdXRwdXRzIFVURi04KQotICogLSBJ
U08tMjAyMi1KUDogNiAoNC1ieXRlIGVzY2FwZSBzZXF1ZW5jZXMgKyBEQkNTKQotICogLSBJU08t
MjAyMi1DTjogOCAoNC1ieXRlIGRlc2lnbmF0b3Igc2VxdWVuY2VzICsgMi1ieXRlIFNTMi9TUzMg
KyBEQkNTKQotICoKLSAqIEBwYXJhbSBjb252ZXJ0ZXIgVGhlIFVuaWNvZGUgY29udmVydGVyLgot
ICogQHJldHVybiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgcGVyIFVDaGFyIHRoYXQgYXJl
IG91dHB1dCBieSB1Y252X2Zyb21Vbmljb2RlKCksCi0gKiAgICAgICAgIHRvIGJlIHVzZWQgdG9n
ZXRoZXIgd2l0aCBVQ05WX0dFVF9NQVhfQllURVNfRk9SX1NUUklORyBmb3IgYnVmZmVyIGFsbG9j
YXRpb24uCi0gKgotICogQHNlZSBVQ05WX0dFVF9NQVhfQllURVNfRk9SX1NUUklORwotICogQHNl
ZSB1Y252X2dldE1pbkNoYXJTaXplCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUg
aW50OF90IFVfRVhQT1JUMgotdWNudl9nZXRNYXhDaGFyU2l6ZShjb25zdCBVQ29udmVydGVyICpj
b252ZXJ0ZXIpOwotCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKLQotLyoqCi0gKiBDYWxjdWxh
dGVzIHRoZSBzaXplIG9mIGEgYnVmZmVyIGZvciBjb252ZXJzaW9uIGZyb20gVW5pY29kZSB0byBh
IGNoYXJzZXQuCi0gKiBUaGUgY2FsY3VsYXRlZCBzaXplIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3Vm
ZmljaWVudCBmb3IgdGhpcyBjb252ZXJzaW9uLgotICoKLSAqIEl0IHRha2VzIGludG8gYWNjb3Vu
dCBpbml0aWFsIGFuZCBmaW5hbCBub24tY2hhcmFjdGVyIGJ5dGVzIHRoYXQgYXJlIG91dHB1dAot
ICogYnkgc29tZSBjb252ZXJ0ZXJzLgotICogSXQgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQg
Y2FsbGJhY2tzIHdoaWNoIG91dHB1dCBtb3JlIHRoYW4gb25lIGNoYXJzZXQKLSAqIGNoYXJhY3Rl
ciBzZXF1ZW5jZSBwZXIgY2FsbCwgbGlrZSBlc2NhcGUgY2FsbGJhY2tzLgotICogVGhlIGRlZmF1
bHQgKHN1YnN0aXR1dGlvbikgY2FsbGJhY2sgb25seSBvdXRwdXRzIG9uZSBjaGFyc2V0IGNoYXJh
Y3RlciBzZXF1ZW5jZS4KLSAqCi0gKiBAcGFyYW0gbGVuZ3RoIE51bWJlciBvZiBVQ2hhcnMgdG8g
YmUgY29udmVydGVkLgotICogQHBhcmFtIG1heENoYXJTaXplIFJldHVybiB2YWx1ZSBmcm9tIHVj
bnZfZ2V0TWF4Q2hhclNpemUoKSBmb3IgdGhlIGNvbnZlcnRlcgotICogICAgICAgICAgICAgICAg
ICAgIHRoYXQgd2lsbCBiZSB1c2VkLgotICogQHJldHVybiBTaXplIG9mIGEgYnVmZmVyIHRoYXQg
d2lsbCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgb3V0cHV0IGJ5dGVzIG9mCi0gKiAgICAg
ICAgIGNvbnZlcnRpbmcgbGVuZ3RoIFVDaGFycyB3aXRoIHRoZSBjb252ZXJ0ZXIgdGhhdCByZXR1
cm5lZCB0aGUgbWF4Q2hhclNpemUuCi0gKgotICogQHNlZSB1Y252X2dldE1heENoYXJTaXplCi0g
KiBAZHJhZnQgSUNVIDIuOAotICovCi0jZGVmaW5lIFVDTlZfR0VUX01BWF9CWVRFU19GT1JfU1RS
SU5HKGxlbmd0aCwgbWF4Q2hhclNpemUpIFwKLSAgICAgKCgoaW50MzJfdCkobGVuZ3RoKSsxMCkq
KGludDMyX3QpKG1heENoYXJTaXplKSkKLQotI2VuZGlmIC8qVV9ISURFX0RSQUZUX0FQSSovCi0K
LS8qKgotICogUmV0dXJucyB0aGUgbWluaW11bSBieXRlIGxlbmd0aCBmb3IgY2hhcmFjdGVycyBp
biB0aGlzIGNvZGVwYWdlLiAKLSAqIFRoaXMgaXMgdXN1YWxseSBlaXRoZXIgMSBvciAyLgotICog
QHBhcmFtIGNvbnZlcnRlciB0aGUgVW5pY29kZSBjb252ZXJ0ZXIKLSAqIEByZXR1cm4gdGhlIG1p
bmltdW0gbnVtYmVyIG9mIGJ5dGVzIGFsbG93ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIGNvbnZlcnRl
cgotICogQHNlZSB1Y252X2dldE1heENoYXJTaXplCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwot
VV9TVEFCTEUgaW50OF90IFVfRVhQT1JUMgotdWNudl9nZXRNaW5DaGFyU2l6ZShjb25zdCBVQ29u
dmVydGVyICpjb252ZXJ0ZXIpOwotCi0vKioKLSAqIFJldHVybnMgdGhlIGRpc3BsYXkgbmFtZSBv
ZiB0aGUgY29udmVydGVyIHBhc3NlZCBpbiBiYXNlZCBvbiB0aGUgTG9jYWxlIAotICogcGFzc2Vk
IGluLiBJZiB0aGUgbG9jYWxlIGNvbnRhaW5zIG5vIGRpc3BsYXkgbmFtZSwgdGhlIGludGVybmFs
IEFTQ0lJCi0gKiBuYW1lIHdpbGwgYmUgZmlsbGVkIGluLgotICoKLSAqIEBwYXJhbSBjb252ZXJ0
ZXIgdGhlIFVuaWNvZGUgY29udmVydGVyLgotICogQHBhcmFtIGRpc3BsYXlMb2NhbGUgaXMgdGhl
IHNwZWNpZmljIExvY2FsZSB3ZSB3YW50IHRvIGxvY2FsaXNlZCBmb3IKLSAqIEBwYXJhbSBkaXNw
bGF5TmFtZSB1c2VyIHByb3ZpZGVkIGJ1ZmZlciB0byBiZSBmaWxsZWQgaW4KLSAqIEBwYXJhbSBk
aXNwbGF5TmFtZUNhcGFjaXR5IHNpemUgb2YgZGlzcGxheU5hbWUgQnVmZmVyCi0gKiBAcGFyYW0g
ZXJyIGVycm9yIHN0YXR1cyBjb2RlCi0gKiBAcmV0dXJuIGRpc3BsYXlOYW1lTGVuZ3RoIG51bWJl
ciBvZiBVQ2hhciBuZWVkZWQgaW4gZGlzcGxheU5hbWUKLSAqIEBzZWUgdWNudl9nZXROYW1lCi0g
KiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVjbnZf
Z2V0RGlzcGxheU5hbWUoY29uc3QgVUNvbnZlcnRlciAqY29udmVydGVyLAotICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpkaXNwbGF5TG9jYWxlLAotICAgICAgICAgICAgICAgICAgICBV
Q2hhciAqZGlzcGxheU5hbWUsCi0gICAgICAgICAgICAgICAgICAgIGludDMyX3QgZGlzcGxheU5h
bWVDYXBhY2l0eSwKLSAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqZXJyKTsKLQotLyoq
Ci0gKiBHZXRzIHRoZSBpbnRlcm5hbCwgY2Fub25pY2FsIG5hbWUgb2YgdGhlIGNvbnZlcnRlciAo
emVyby10ZXJtaW5hdGVkKS4KLSAqIFRoZSBsaWZldGltZSBvZiB0aGUgcmV0dXJuZWQgc3RyaW5n
IHdpbGwgYmUgdGhhdCBvZiB0aGUgY29udmVydGVyIAotICogcGFzc2VkIHRvIHRoaXMgZnVuY3Rp
b24uCi0gKiBAcGFyYW0gY29udmVydGVyIHRoZSBVbmljb2RlIGNvbnZlcnRlcgotICogQHBhcmFt
IGVyciBVRXJyb3JDb2RlIHN0YXR1cwotICogQHJldHVybiB0aGUgaW50ZXJuYWwgbmFtZSBvZiB0
aGUgY29udmVydGVyCi0gKiBAc2VlIHVjbnZfZ2V0RGlzcGxheU5hbWUKLSAqIEBzdGFibGUgSUNV
IDIuMAotICovCi1VX1NUQUJMRSBjb25zdCBjaGFyICogVV9FWFBPUlQyIAotdWNudl9nZXROYW1l
KGNvbnN0IFVDb252ZXJ0ZXIgKmNvbnZlcnRlciwgVUVycm9yQ29kZSAqZXJyKTsKLQotLyoqCi0g
KiBHZXRzIGEgY29kZXBhZ2UgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udmVydGVyLiBU
aGlzIGlzIG5vdCBndWFyYW50ZWVkCi0gKiB0byBiZSB0aGUgb25lIHVzZWQgdG8gY3JlYXRlIHRo
ZSBjb252ZXJ0ZXIuIFNvbWUgY29udmVydGVycyBkbyBub3QgcmVwcmVzZW50Ci0gKiBwbGF0Zm9y
bSByZWdpc3RlcmVkIGNvZGVwYWdlcyBhbmQgcmV0dXJuIHplcm8gZm9yIHRoZSBjb2RlcGFnZSBu
dW1iZXIuCi0gKiBUaGUgZXJyb3IgY29kZSBmaWxsLWluIHBhcmFtZXRlciBpbmRpY2F0ZXMgaWYg
dGhlIGNvZGVwYWdlIG51bWJlcgotICogaXMgYXZhaWxhYmxlLgotICogRG9lcyBub3QgY2hlY2sg
aWYgdGhlIGNvbnZlcnRlciBpcyA8VFQ+TlVMTDwvVFQ+IG9yIGlmIGNvbnZlcnRlcidzIGRhdGEK
LSAqIHRhYmxlIGlzIDxUVD5OVUxMPC9UVD4uCi0gKgotICogSW1wb3J0YW50OiBUaGUgdXNlIG9m
IENDU0lEcyBpcyBub3QgcmVjb21tZW5kZWQgYmVjYXVzZSBpdCBpcyBsaW1pdGVkCi0gKiB0byBv
bmx5IHR3byBwbGF0Zm9ybXMgaW4gcHJpbmNpcGxlIGFuZCBvbmx5IG9uZSAoVUNOVl9JQk0pIGlu
IHRoZSBjdXJyZW50Ci0gKiBJQ1UgY29udmVydGVyIEFQSS4KLSAqIEFsc28sIENDU0lEcyBhcmUg
aW5zdWZmaWNpZW50IHRvIGlkZW50aWZ5IElCTSBVbmljb2RlIGNvbnZlcnNpb24gdGFibGVzIHBy
ZWNpc2VseS4KLSAqIEZvciBtb3JlIGRldGFpbHMgc2VlIHVjbnZfb3BlbkNDU0lEKCkuCi0gKgot
ICogQHBhcmFtIGNvbnZlcnRlciB0aGUgVW5pY29kZSBjb252ZXJ0ZXIKLSAqIEBwYXJhbSBlcnIg
dGhlIGVycm9yIHN0YXR1cyBjb2RlLgotICogQHJldHVybiBJZiBhbnkgZXJyb3Igb2NjdXJycywg
LTEgd2lsbCBiZSByZXR1cm5lZCBvdGhlcndpc2UsIHRoZSBjb2RlcGFnZSBudW1iZXIKLSAqIHdp
bGwgYmUgcmV0dXJuZWQKLSAqIEBzZWUgdWNudl9vcGVuQ0NTSUQKLSAqIEBzZWUgdWNudl9nZXRQ
bGF0Zm9ybQotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCi11Y252X2dldENDU0lEKGNvbnN0IFVDb252ZXJ0ZXIgKmNvbnZlcnRlciwKLSAgICAgICAg
ICAgICAgVUVycm9yQ29kZSAqZXJyKTsKLQotLyoqCi0gKiBHZXRzIGEgY29kZXBhZ2UgcGxhdGZv
cm0gYXNzb2NpYXRlZCB3aXRoIHRoZSBjb252ZXJ0ZXIuIEN1cnJlbnRseSwgCi0gKiBvbmx5IDxU
VD5VQ05WX0lCTTwvVFQ+IHdpbGwgYmUgcmV0dXJuZWQuCi0gKiBEb2VzIG5vdCB0ZXN0IGlmIHRo
ZSBjb252ZXJ0ZXIgaXMgPFRUPk5VTEw8L1RUPiBvciBpZiBjb252ZXJ0ZXIncyBkYXRhIAotICog
dGFibGUgaXMgPFRUPk5VTEw8L1RUPi4gCi0gKiBAcGFyYW0gY29udmVydGVyIHRoZSBVbmljb2Rl
IGNvbnZlcnRlcgotICogQHBhcmFtIGVyciB0aGUgZXJyb3Igc3RhdHVzIGNvZGUuCi0gKiBAcmV0
dXJuIFRoZSBjb2RlcGFnZSBwbGF0Zm9ybQotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RB
QkxFIFVDb252ZXJ0ZXJQbGF0Zm9ybSBVX0VYUE9SVDIKLXVjbnZfZ2V0UGxhdGZvcm0oY29uc3Qg
VUNvbnZlcnRlciAqY29udmVydGVyLAotICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICplcnIp
OwotCi0vKioKLSAqIEdldHMgdGhlIHR5cGUgb2YgdGhlIGNvbnZlcnRlcgotICogZS5nLiBTQkNT
LCBNQkNTLCBEQkNTLCBVVEY4LCBVVEYxNl9CRSwgVVRGMTZfTEUsIElTT18yMDIyLCAKLSAqIEVC
Q0RJQ19TVEFURUZVTCwgTEFUSU5fMQotICogQHBhcmFtIGNvbnZlcnRlciBhIHZhbGlkLCBvcGVu
ZWQgY29udmVydGVyCi0gKiBAcmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBjb252ZXJ0ZXIKLSAqIEBz
dGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQ29udmVydGVyVHlwZSBVX0VYUE9SVDIKLXVj
bnZfZ2V0VHlwZShjb25zdCBVQ29udmVydGVyICogY29udmVydGVyKTsKLQotLyoqCi0gKiBHZXRz
IHRoZSAic3RhcnRlciIgKGxlYWQpIGJ5dGVzIGZvciBjb252ZXJ0ZXJzIG9mIHR5cGUgTUJDUy4K
LSAqIFdpbGwgZmlsbCBpbiBhbiA8VFQ+VV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SPC9UVD4gaWYg
Y29udmVydGVyIHBhc3NlZCBpbgotICogaXMgbm90IE1CQ1MuIEZpbGxzIGluIGFuIGFycmF5IG9m
IHR5cGUgVUJvb2wsIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBieXRlIAotICogYXMgb2Zmc2V0IHRv
IHRoZSBhcnJheS4gRm9yIGV4YW1wbGUsIGlmIChzdGFydGVyc1sweDIwXSA9PSBUUlVFKSBhdCBy
ZXR1cm4sCi0gKiBpdCBtZWFucyB0aGF0IHRoZSBieXRlIDB4MjAgaXMgYSBzdGFydGVyIGJ5dGUg
aW4gdGhpcyBjb252ZXJ0ZXIuCi0gKiBDb250ZXh0IHBvaW50ZXJzIGFyZSBhbHdheXMgb3duZWQg
YnkgdGhlIGNhbGxlci4KLSAqIAotICogQHBhcmFtIGNvbnZlcnRlciBhIHZhbGlkLCBvcGVuZWQg
Y29udmVydGVyIG9mIHR5cGUgTUJDUwotICogQHBhcmFtIHN0YXJ0ZXJzIGFuIGFycmF5IG9mIHNp
emUgMjU2IHRvIGJlIGZpbGxlZCBpbgotICogQHBhcmFtIGVyciBlcnJvciBzdGF0dXMsIDxUVD5V
X0lMTEVHQUxfQVJHVU1FTlRfRVJST1I8L1RUPiBpZiB0aGUgCi0gKiBjb252ZXJ0ZXIgaXMgbm90
IGEgdHlwZSB3aGljaCBjYW4gcmV0dXJuIHN0YXJ0ZXJzLgotICogQHNlZSB1Y252X2dldFR5cGUK
LSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdWNudl9n
ZXRTdGFydGVycyhjb25zdCBVQ29udmVydGVyKiBjb252ZXJ0ZXIsIAotICAgICAgICAgICAgICAg
ICBVQm9vbCBzdGFydGVyc1syNTZdLAotICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlcnIp
OwotCi0KLS8qKgotICogU2VsZWN0b3JzIGZvciBVbmljb2RlIHNldHMgdGhhdCBjYW4gYmUgcmV0
dXJuZWQgYnkgdWNudl9nZXRVbmljb2RlU2V0KCkuCi0gKiBAc2VlIHVjbnZfZ2V0VW5pY29kZVNl
dAotICogQHN0YWJsZSBJQ1UgMi42Ci0gKi8KLXR5cGVkZWYgZW51bSBVQ29udmVydGVyVW5pY29k
ZVNldCB7Ci0gICAgLyoqIFNlbGVjdCB0aGUgc2V0IG9mIHJvdW5kdHJpcHBhYmxlIFVuaWNvZGUg
Y29kZSBwb2ludHMuIEBzdGFibGUgSUNVIDIuNiAqLwotICAgIFVDTlZfUk9VTkRUUklQX1NFVCwK
LSAgICAvKiogTnVtYmVyIG9mIFVDb252ZXJ0ZXJVbmljb2RlU2V0IHNlbGVjdG9ycy4gQHN0YWJs
ZSBJQ1UgMi42ICovCi0gICAgVUNOVl9TRVRfQ09VTlQKLX0gVUNvbnZlcnRlclVuaWNvZGVTZXQ7
Ci0KLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBzZXQgb2YgVW5pY29kZSBjb2RlIHBvaW50cyB0aGF0
IGNhbiBiZSBjb252ZXJ0ZWQgYnkgYW4gSUNVIGNvbnZlcnRlci4KLSAqCi0gKiBUaGUgY3VycmVu
dCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG9ubHkgb25lIGtpbmQgb2Ygc2V0IChVQ05WX1JPVU5E
VFJJUF9TRVQpOgotICogVGhlIHNldCBvZiBhbGwgVW5pY29kZSBjb2RlIHBvaW50cyB0aGF0IGNh
biBiZSByb3VuZHRyaXAtY29udmVydGVkCi0gKiAoY29udmVydGVkIHdpdGhvdXQgYW55IGRhdGEg
bG9zcykgd2l0aCB0aGUgY29udmVydGVyLgotICogVGhpcyBzZXQgd2lsbCBub3QgaW5jbHVkZSBj
b2RlIHBvaW50cyB0aGF0IGhhdmUgZmFsbGJhY2sgbWFwcGluZ3MKLSAqIG9yIGFyZSBvbmx5IHRo
ZSByZXN1bHQgb2YgcmV2ZXJzZSBmYWxsYmFjayBtYXBwaW5ncy4KLSAqIFNlZSBVVFIgIzIyICJD
aGFyYWN0ZXIgTWFwcGluZyBNYXJrdXAgTGFuZ3VhZ2UiCi0gKiBhdCBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL3JlcG9ydHMvdHIyMi8KLSAqCi0gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgZXhhbXBsZSBm
b3IKLSAqIC0gY2hlY2tpbmcgdGhhdCBhIHN0cmluZyBvciBkb2N1bWVudCBjYW4gYmUgcm91bmR0
cmlwLWNvbnZlcnRlZCB3aXRoIGEgY29udmVydGVyLAotICogICB3aXRob3V0L2JlZm9yZSBhY3R1
YWxseSBwZXJmb3JtaW5nIHRoZSBjb252ZXJzaW9uCi0gKiAtIHRlc3RpbmcgaWYgYSBjb252ZXJ0
ZXIgY2FuIGJlIHVzZWQgZm9yIHRleHQgZm9yIHR5cGljYWwgdGV4dCBmb3IgYSBjZXJ0YWluIGxv
Y2FsZSwKLSAqICAgYnkgY29tcGFyaW5nIGl0cyByb3VuZHRyaXAgc2V0IHdpdGggdGhlIHNldCBv
ZiBFeGVtcGxhckNoYXJhY3RlcnMgZnJvbQotICogICBJQ1UncyBsb2NhbGUgZGF0YSBvciBvdGhl
ciBzb3VyY2VzCi0gKgotICogSW4gdGhlIGZ1dHVyZSwgdGhlcmUgbWF5IGJlIG1vcmUgVUNvbnZl
cnRlclVuaWNvZGVTZXQgY2hvaWNlcyB0byBzZWxlY3QKLSAqIHNldHMgd2l0aCBkaWZmZXJlbnQg
cHJvcGVydGllcy4KLSAqCi0gKiBAcGFyYW0gY252IFRoZSBjb252ZXJ0ZXIgZm9yIHdoaWNoIGEg
c2V0IGlzIHJlcXVlc3RlZC4KLSAqIEBwYXJhbSBzZXRGaWxsSW4gQSB2YWxpZCBVU2V0ICouIEl0
IHdpbGwgYmUgY2xlYXJlZCBieSB0aGlzIGZ1bmN0aW9uIGJlZm9yZQotICogICAgICAgICAgICB0
aGUgY29udmVydGVyJ3Mgc3BlY2lmaWMgc2V0IGlzIGZpbGxlZCBpbnRvIHRoZSBVU2V0LgotICog
QHBhcmFtIHdoaWNoU2V0IEEgVUNvbnZlcnRlclVuaWNvZGVTZXQgc2VsZWN0b3I7Ci0gKiAgICAg
ICAgICAgICAgY3VycmVudGx5IFVDTlZfUk9VTkRUUklQX1NFVCBpcyB0aGUgb25seSBzdXBwb3J0
ZWQgdmFsdWUuCi0gKiBAcGFyYW0gcEVycm9yQ29kZSBJQ1UgZXJyb3IgY29kZSBpbi9vdXQgcGFy
YW1ldGVyLgotICogICAgICAgICAgICAgICAgICAgTXVzdCBmdWxmaWxsIFVfU1VDQ0VTUyBiZWZv
cmUgdGhlIGZ1bmN0aW9uIGNhbGwuCi0gKgotICogQHNlZSBVQ29udmVydGVyVW5pY29kZVNldAot
ICogQHNlZSB1c2V0X29wZW4KLSAqIEBzZWUgdXNldF9jbG9zZQotICogQHN0YWJsZSBJQ1UgMi42
Ci0gKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCi11Y252X2dldFVuaWNvZGVTZXQoY29uc3Qg
VUNvbnZlcnRlciAqY252LAotICAgICAgICAgICAgICAgICAgIFVTZXQgKnNldEZpbGxJbiwKLSAg
ICAgICAgICAgICAgICAgICBVQ29udmVydGVyVW5pY29kZVNldCB3aGljaFNldCwKLSAgICAgICAg
ICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQotLyoqCi0gKiBHZXRzIHRoZSBj
dXJyZW50IGNhbGJhY2sgZnVuY3Rpb24gdXNlZCBieSB0aGUgY29udmVydGVyIHdoZW4gYW4gaWxs
ZWdhbAotICogIG9yIGludmFsaWQgY29kZXBhZ2Ugc2VxdWVuY2UgaXMgZm91bmQuIAotICogQ29u
dGV4dCBwb2ludGVycyBhcmUgYWx3YXlzIG93bmVkIGJ5IHRoZSBjYWxsZXIuCi0gKgotICogQHBh
cmFtIGNvbnZlcnRlciB0aGUgdW5pY29kZSBjb252ZXJ0ZXIKLSAqIEBwYXJhbSBhY3Rpb24gZmls
bGluOiByZXR1cm5zIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyCi0gKiBAcGFyYW0gY29u
dGV4dCBmaWxsaW46IHJldHVybnMgdGhlIGNhbGxiYWNrJ3MgcHJpdmF0ZSB2b2lkKiBjb250ZXh0
Ci0gKiBAc2VlIHVjbnZfc2V0VG9VQ2FsbEJhY2sKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1V
X1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdWNudl9nZXRUb1VDYWxsQmFjayAoY29uc3QgVUNvbnZl
cnRlciAqIGNvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgIFVDb252ZXJ0ZXJUb1VDYWxs
YmFjayAqYWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqKmNvbnRleHQp
OwotCi0vKioKLSAqIEdldHMgdGhlIGN1cnJlbnQgY2FsbGJhY2sgZnVuY3Rpb24gdXNlZCBieSB0
aGUgY29udmVydGVyIHdoZW4gaWxsZWdhbCAKLSAqIG9yIGludmFsaWQgVW5pY29kZSBzZXF1ZW5j
ZSBpcyBmb3VuZC4KLSAqIENvbnRleHQgcG9pbnRlcnMgYXJlIGFsd2F5cyBvd25lZCBieSB0aGUg
Y2FsbGVyLgotICoKLSAqIEBwYXJhbSBjb252ZXJ0ZXIgdGhlIHVuaWNvZGUgY29udmVydGVyCi0g
KiBAcGFyYW0gYWN0aW9uIGZpbGxpbjogcmV0dXJucyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gcG9p
bnRlcgotICogQHBhcmFtIGNvbnRleHQgZmlsbGluOiByZXR1cm5zIHRoZSBjYWxsYmFjaydzIHBy
aXZhdGUgdm9pZCogY29udGV4dAotICogQHNlZSB1Y252X3NldEZyb21VQ2FsbEJhY2sKLSAqIEBz
dGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdWNudl9nZXRGcm9t
VUNhbGxCYWNrIChjb25zdCBVQ29udmVydGVyICogY29udmVydGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICBVQ29udmVydGVyRnJvbVVDYWxsYmFjayAqYWN0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICoqY29udGV4dCk7Ci0KLS8qKgotICogQ2hhbmdlcyB0aGUgY2Fs
bGJhY2sgZnVuY3Rpb24gdXNlZCBieSB0aGUgY29udmVydGVyIHdoZW4KLSAqIGFuIGlsbGVnYWwg
b3IgaW52YWxpZCBzZXF1ZW5jZSBpcyBmb3VuZC4KLSAqIENvbnRleHQgcG9pbnRlcnMgYXJlIGFs
d2F5cyBvd25lZCBieSB0aGUgY2FsbGVyLgotICogUHJlZGVmaW5lZCBhY3Rpb25zIGFuZCBjb250
ZXh0cyBjYW4gYmUgZm91bmQgaW4gdGhlIHVjbnZfZXJyLmggaGVhZGVyLgotICoKLSAqIEBwYXJh
bSBjb252ZXJ0ZXIgdGhlIHVuaWNvZGUgY29udmVydGVyCi0gKiBAcGFyYW0gbmV3QWN0aW9uIHRo
ZSBuZXcgY2FsbGJhY2sgZnVuY3Rpb24KLSAqIEBwYXJhbSBuZXdDb250ZXh0IHRoZSBuZXcgdG9V
bmljb2RlIGNhbGxiYWNrIGNvbnRleHQgcG9pbnRlci4gVGhpcyBjYW4gYmUgTlVMTC4KLSAqIEBw
YXJhbSBvbGRBY3Rpb24gZmlsbGluOiByZXR1cm5zIHRoZSBvbGQgY2FsbGJhY2sgZnVuY3Rpb24g
cG9pbnRlci4gVGhpcyBjYW4gYmUgTlVMTC4KLSAqIEBwYXJhbSBvbGRDb250ZXh0IGZpbGxpbjog
cmV0dXJucyB0aGUgb2xkIGNhbGxiYWNrJ3MgcHJpdmF0ZSB2b2lkKiBjb250ZXh0LiBUaGlzIGNh
biBiZSBOVUxMLgotICogQHBhcmFtIGVyciBUaGUgZXJyb3IgY29kZSBzdGF0dXMKLSAqIEBzZWUg
dWNudl9nZXRUb1VDYWxsQmFjawotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIHZv
aWQgVV9FWFBPUlQyCi11Y252X3NldFRvVUNhbGxCYWNrIChVQ29udmVydGVyICogY29udmVydGVy
LAotICAgICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlclRvVUNhbGxiYWNrIG5ld0FjdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIG5ld0NvbnRleHQsCi0gICAgICAgICAg
ICAgICAgICAgICBVQ29udmVydGVyVG9VQ2FsbGJhY2sgKm9sZEFjdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQqKiBvbGRDb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
VUVycm9yQ29kZSAqIGVycik7Ci0KLS8qKgotICogQ2hhbmdlcyB0aGUgY3VycmVudCBjYWxsYmFj
ayBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBjb252ZXJ0ZXIgd2hlbgotICogYW4gaWxsZWdhbCBvciBp
bnZhbGlkIHNlcXVlbmNlIGlzIGZvdW5kLgotICogQ29udGV4dCBwb2ludGVycyBhcmUgYWx3YXlz
IG93bmVkIGJ5IHRoZSBjYWxsZXIuCi0gKiBQcmVkZWZpbmVkIGFjdGlvbnMgYW5kIGNvbnRleHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgdWNudl9lcnIuaCBoZWFkZXIuCi0gKgotICogQHBhcmFtIGNv
bnZlcnRlciB0aGUgdW5pY29kZSBjb252ZXJ0ZXIKLSAqIEBwYXJhbSBuZXdBY3Rpb24gdGhlIG5l
dyBjYWxsYmFjayBmdW5jdGlvbgotICogQHBhcmFtIG5ld0NvbnRleHQgdGhlIG5ldyBmcm9tVW5p
Y29kZSBjYWxsYmFjayBjb250ZXh0IHBvaW50ZXIuIFRoaXMgY2FuIGJlIE5VTEwuCi0gKiBAcGFy
YW0gb2xkQWN0aW9uIGZpbGxpbjogcmV0dXJucyB0aGUgb2xkIGNhbGxiYWNrIGZ1bmN0aW9uIHBv
aW50ZXIuIFRoaXMgY2FuIGJlIE5VTEwuCi0gKiBAcGFyYW0gb2xkQ29udGV4dCBmaWxsaW46IHJl
dHVybnMgdGhlIG9sZCBjYWxsYmFjaydzIHByaXZhdGUgdm9pZCogY29udGV4dC4gVGhpcyBjYW4g
YmUgTlVMTC4KLSAqIEBwYXJhbSBlcnIgVGhlIGVycm9yIGNvZGUgc3RhdHVzCi0gKiBAc2VlIHVj
bnZfZ2V0RnJvbVVDYWxsQmFjawotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIHZv
aWQgVV9FWFBPUlQyCi11Y252X3NldEZyb21VQ2FsbEJhY2sgKFVDb252ZXJ0ZXIgKiBjb252ZXJ0
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFVDb252ZXJ0ZXJGcm9tVUNhbGxiYWNrIG5ld0Fj
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqbmV3Q29udGV4dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlckZyb21VQ2FsbGJhY2sgKm9sZEFjdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqKm9sZENvbnRleHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKiBlcnIpOwotCi0vKioKLSAqIENvbnZlcnRzIGFu
IGFycmF5IG9mIHVuaWNvZGUgY2hhcmFjdGVycyB0byBhbiBhcnJheSBvZiBjb2RlcGFnZQotICog
Y2hhcmFjdGVycy4gVGhpcyBmdW5jdGlvbiBpcyBvcHRpbWl6ZWQgZm9yIGNvbnZlcnRpbmcgYSBj
b250aW51b3VzCi0gKiBzdHJlYW0gb2YgZGF0YSBpbiBidWZmZXItc2l6ZWQgY2h1bmtzLCB3aGVy
ZSB0aGUgZW50aXJlIHNvdXJjZSBhbmQKLSAqIHRhcmdldCBkb2VzIG5vdCBmaXQgaW4gYXZhaWxh
YmxlIGJ1ZmZlcnMuCi0gKiAKLSAqIFRoZSBzb3VyY2UgcG9pbnRlciBpcyBhbiBpbi9vdXQgcGFy
YW1ldGVyLiBJdCBzdGFydHMgb3V0IHBvaW50aW5nIHdoZXJlIHRoZSAKLSAqIGNvbnZlcnNpb24g
aXMgdG8gYmVnaW4sIGFuZCBlbmRzIHVwIHBvaW50aW5nIGFmdGVyIHRoZSBsYXN0IFVDaGFyIGNv
bnN1bWVkLiAKLSAqIAotICogVGFyZ2V0IHNpbWlsYXJseSBzdGFydHMgb3V0IHBvaW50ZXIgYXQg
dGhlIGZpcnN0IGF2YWlsYWJsZSBieXRlIGluIHRoZSBvdXRwdXQKLSAqIGJ1ZmZlciwgYW5kIGVu
ZHMgdXAgcG9pbnRpbmcgYWZ0ZXIgdGhlIGxhc3QgYnl0ZSB3cml0dGVuIHRvIHRoZSBvdXRwdXQu
Ci0gKiAKLSAqIFRoZSBjb252ZXJ0ZXIgYWx3YXlzIGF0dGVtcHRzIHRvIGNvbnN1bWUgdGhlIGVu
dGlyZSBzb3VyY2UgYnVmZmVyLCB1bmxlc3MgCi0gKiAoMS4pIHRoZSB0YXJnZXQgYnVmZmVyIGlz
IGZ1bGwsIG9yICgyLikgYSBmYWlsaW5nIGVycm9yIGlzIHJldHVybmVkIGZyb20gdGhlCi0gKiBj
dXJyZW50IGNhbGxiYWNrIGZ1bmN0aW9uLiAgV2hlbiBhIHN1Y2Nlc3NmdWwgZXJyb3Igc3RhdHVz
IGhhcyBiZWVuCi0gKiByZXR1cm5lZCwgaXQgbWVhbnMgdGhhdCBhbGwgb2YgdGhlIHNvdXJjZSBi
dWZmZXIgaGFzIGJlZW4KLSAqICBjb25zdW1lZC4gQXQgdGhhdCBwb2ludCwgdGhlIGNhbGxlciBz
aG91bGQgcmVzZXQgdGhlIHNvdXJjZSBhbmQKLSAqICBzb3VyY2VMaW1pdCBwb2ludGVycyB0byBw
b2ludCB0byB0aGUgbmV4dCBjaHVuay4KLSAqIAotICogQXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFt
IChmbHVzaD09VFJVRSksIHRoZSBpbnB1dCBpcyBjb21wbGV0ZWx5IGNvbnN1bWVkCi0gKiB3aGVu
ICpzb3VyY2U9PXNvdXJjZUxpbWl0IGFuZCBubyBlcnJvciBjb2RlIGlzIHNldC4KLSAqIFRoZSBj
b252ZXJ0ZXIgb2JqZWN0IGlzIHRoZW4gYXV0b21hdGljYWxseSByZXNldCBieSB0aGlzIGZ1bmN0
aW9uLgotICogKFRoaXMgbWVhbnMgdGhhdCBhIGNvbnZlcnRlciBuZWVkIG5vdCBiZSByZXNldCBl
eHBsaWNpdGx5IGJldHdlZW4gZGF0YQotICogc3RyZWFtcyBpZiBpdCBmaW5pc2hlcyB0aGUgcHJl
dmlvdXMgc3RyZWFtIHdpdGhvdXQgZXJyb3JzLikKLSAqIAotICogVGhpcyBpcyBhIDxJPnN0YXRl
ZnVsPC9JPiBjb252ZXJzaW9uLiBBZGRpdGlvbmFsbHksIGV2ZW4gd2hlbiBhbGwgc291cmNlIGRh
dGEgaGFzCi0gKiBiZWVuIGNvbnN1bWVkLCBzb21lIGRhdGEgbWF5IGJlIGluIHRoZSBjb252ZXJ0
ZXJzJyBpbnRlcm5hbCBzdGF0ZS4KLSAqIENhbGwgdGhpcyBmdW5jdGlvbiByZXBlYXRlZGx5LCB1
cGRhdGluZyB0aGUgdGFyZ2V0IHBvaW50ZXJzIHdpdGgKLSAqIHRoZSBuZXh0IGVtcHR5IGNodW5r
IG9mIHRhcmdldCBpbiBjYXNlIG9mIGEKLSAqIDxUVD5VX0JVRkZFUl9PVkVSRkxPV19FUlJPUjwv
VFQ+LCBhbmQgdXBkYXRpbmcgdGhlIHNvdXJjZSAgcG9pbnRlcnMKLSAqICB3aXRoIHRoZSBuZXh0
IGNodW5rIG9mIHNvdXJjZSB3aGVuIGEgc3VjY2Vzc2Z1bCBlcnJvciBzdGF0dXMgaXMKLSAqIHJl
dHVybmVkLCB1bnRpbCB0aGVyZSBhcmUgbm8gbW9yZSBjaHVua3Mgb2Ygc291cmNlIGRhdGEuCi0g
KiBAcGFyYW0gY29udmVydGVyIHRoZSBVbmljb2RlIGNvbnZlcnRlcgotICogQHBhcmFtIHRhcmdl
dCBJL08gcGFyYW1ldGVyLiBJbnB1dCA6IFBvaW50cyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBi
dWZmZXIgdG8gY29weQotICogIGNvZGVwYWdlIGNoYXJhY3RlcnMgdG8uIE91dHB1dCA6IHBvaW50
cyB0byBhZnRlciB0aGUgbGFzdCBjb2RlcGFnZSBjaGFyYWN0ZXIgY29waWVkCi0gKiAgdG8gPFRU
PnRhcmdldDwvVFQ+LgotICogQHBhcmFtIHRhcmdldExpbWl0IHRoZSBwb2ludGVyIGp1c3QgYWZ0
ZXIgbGFzdCBvZiB0aGUgPFRUPnRhcmdldDwvVFQ+IGJ1ZmZlcgotICogQHBhcmFtIHNvdXJjZSBJ
L08gcGFyYW1ldGVyLCBwb2ludGVyIHRvIHBvaW50ZXIgdG8gdGhlIHNvdXJjZSBVbmljb2RlIGNo
YXJhY3RlciBidWZmZXIuIAotICogQHBhcmFtIHNvdXJjZUxpbWl0IHRoZSBwb2ludGVyIGp1c3Qg
YWZ0ZXIgdGhlIGxhc3Qgb2YgdGhlIHNvdXJjZSBidWZmZXIKLSAqIEBwYXJhbSBvZmZzZXRzIGlm
IE5VTEwgaXMgcGFzc2VkLCBub3RoaW5nIHdpbGwgaGFwcGVuIHRvIGl0LCBvdGhlcndpc2UgaXQg
bmVlZHMgdG8gaGF2ZSB0aGUgc2FtZSBudW1iZXIKLSAqIG9mIGFsbG9jYXRlZCBjZWxscyBhcyA8
VFQ+dGFyZ2V0PC9UVD4uIFdpbGwgZmlsbCBpbiBvZmZzZXRzIGZyb20gdGFyZ2V0IHRvIHNvdXJj
ZSBwb2ludGVyCi0gKiBlLmc6IDxUVD5vZmZzZXRzWzNdPC9UVD4gaXMgZXF1YWwgdG8gNiwgaXQg
bWVhbnMgdGhhdCB0aGUgPFRUPnRhcmdldFszXTwvVFQ+IHdhcyBhIHJlc3VsdCBvZiB0cmFuc2Nv
ZGluZyA8VFQ+c291cmNlWzZdPC9UVD4KLSAqIEZvciBvdXRwdXQgZGF0YSBjYXJyaWVkIGFjcm9z
cyBjYWxscywgYW5kIG90aGVyIGRhdGEgd2l0aG91dCBhIHNwZWNpZmljIHNvdXJjZSBjaGFyYWN0
ZXIKLSAqIChzdWNoIGFzIGZyb20gZXNjYXBlIHNlcXVlbmNlcyBvciBjYWxsYmFja3MpICAtMSB3
aWxsIGJlIHBsYWNlZCBmb3Igb2Zmc2V0cy4gCi0gKiBAcGFyYW0gZmx1c2ggc2V0IHRvIDxUVD5U
UlVFPC9UVD4gaWYgdGhlIGN1cnJlbnQgc291cmNlIGJ1ZmZlciBpcyB0aGUgbGFzdCBhdmFpbGFi
bGUKLSAqIGNodW5rIG9mIHRoZSBzb3VyY2UsIDxUVD5GQUxTRTwvVFQ+IG90aGVyd2lzZS4gTm90
ZSB0aGF0IGlmIGEgZmFpbGluZyBzdGF0dXMgaXMgcmV0dXJuZWQsCi0gKiB0aGlzIGZ1bmN0aW9u
IG1heSBoYXZlIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGZsdXNoIHNldCB0byA8
VFQ+VFJVRTwvVFQ+IHVudGlsCi0gKiB0aGUgc291cmNlIGJ1ZmZlciBpcyBjb25zdW1lZC4KLSAq
IEBwYXJhbSBlcnIgdGhlIGVycm9yIHN0YXR1cy4gIDxUVD5VX0lMTEVHQUxfQVJHVU1FTlRfRVJS
T1I8L1RUPiB3aWxsIGJlIHNldCBpZiB0aGUKLSAqIGNvbnZlcnRlciBpcyA8VFQ+TlVMTDwvVFQ+
LgotICogPGNvZGU+VV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I8L2NvZGU+IHdpbGwgYmUgc2V0IGlm
IHRoZSB0YXJnZXQgaXMgZnVsbCBhbmQgdGhlcmUgaXMgCi0gKiBzdGlsbCBkYXRhIHRvIGJlIHdy
aXR0ZW4gdG8gdGhlIHRhcmdldC4KLSAqIEBzZWUgdWNudl9mcm9tVUNoYXJzCi0gKiBAc2VlIHVj
bnZfY29udmVydAotICogQHNlZSB1Y252X2dldE1pbkNoYXJTaXplCi0gKiBAc2VlIHVjbnZfc2V0
VG9VQ2FsbEJhY2sKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQ
T1JUMiAKLXVjbnZfZnJvbVVuaWNvZGUgKFVDb252ZXJ0ZXIgKiBjb252ZXJ0ZXIsCi0gICAgICAg
ICAgICAgICAgICBjaGFyICoqdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
dGFyZ2V0TGltaXQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqKiBzb3VyY2UsCi0g
ICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqIHNvdXJjZUxpbWl0LAotICAgICAgICAgICAg
ICAgICAgaW50MzJfdCogb2Zmc2V0cywKLSAgICAgICAgICAgICAgICAgIFVCb29sIGZsdXNoLAot
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqIGVycik7Ci0KLS8qKgotICogQ29udmVydHMg
YSBidWZmZXIgb2YgY29kZXBhZ2UgYnl0ZXMgaW50byBhbiBhcnJheSBvZiB1bmljb2RlIFVDaGFy
cwotICogY2hhcmFjdGVycy4gVGhpcyBmdW5jdGlvbiBpcyBvcHRpbWl6ZWQgZm9yIGNvbnZlcnRp
bmcgYSBjb250aW51b3VzCi0gKiBzdHJlYW0gb2YgZGF0YSBpbiBidWZmZXItc2l6ZWQgY2h1bmtz
LCB3aGVyZSB0aGUgZW50aXJlIHNvdXJjZSBhbmQKLSAqIHRhcmdldCBkb2VzIG5vdCBmaXQgaW4g
YXZhaWxhYmxlIGJ1ZmZlcnMuCi0gKiAKLSAqIFRoZSBzb3VyY2UgcG9pbnRlciBpcyBhbiBpbi9v
dXQgcGFyYW1ldGVyLiBJdCBzdGFydHMgb3V0IHBvaW50aW5nIHdoZXJlIHRoZSAKLSAqIGNvbnZl
cnNpb24gaXMgdG8gYmVnaW4sIGFuZCBlbmRzIHVwIHBvaW50aW5nIGFmdGVyIHRoZSBsYXN0IGJ5
dGUgb2Ygc291cmNlIGNvbnN1bWVkLiAKLSAqIAotICogVGFyZ2V0IHNpbWlsYXJseSBzdGFydHMg
b3V0IHBvaW50ZXIgYXQgdGhlIGZpcnN0IGF2YWlsYWJsZSBVQ2hhciBpbiB0aGUgb3V0cHV0Ci0g
KiBidWZmZXIsIGFuZCBlbmRzIHVwIHBvaW50aW5nIGFmdGVyIHRoZSBsYXN0IFVDaGFyIHdyaXR0
ZW4gdG8gdGhlIG91dHB1dC4gCi0gKiBJdCBkb2VzIE5PVCBuZWNlc3NhcmlseSBrZWVwIFVDaGFy
IHNlcXVlbmNlcyB0b2dldGhlci4KLSAqIAotICogVGhlIGNvbnZlcnRlciBhbHdheXMgYXR0ZW1w
dHMgdG8gY29uc3VtZSB0aGUgZW50aXJlIHNvdXJjZSBidWZmZXIsIHVubGVzcyAKLSAqICgxLikg
dGhlIHRhcmdldCBidWZmZXIgaXMgZnVsbCwgb3IgKDIuKSBhIGZhaWxpbmcgZXJyb3IgaXMgcmV0
dXJuZWQgZnJvbSB0aGUKLSAqIGN1cnJlbnQgY2FsbGJhY2sgZnVuY3Rpb24uICBXaGVuIGEgc3Vj
Y2Vzc2Z1bCBlcnJvciBzdGF0dXMgaGFzIGJlZW4KLSAqIHJldHVybmVkLCBpdCBtZWFucyB0aGF0
IGFsbCBvZiB0aGUgc291cmNlIGJ1ZmZlciBoYXMgYmVlbgotICogIGNvbnN1bWVkLiBBdCB0aGF0
IHBvaW50LCB0aGUgY2FsbGVyIHNob3VsZCByZXNldCB0aGUgc291cmNlIGFuZAotICogIHNvdXJj
ZUxpbWl0IHBvaW50ZXJzIHRvIHBvaW50IHRvIHRoZSBuZXh0IGNodW5rLgotICoKLSAqIEF0IHRo
ZSBlbmQgb2YgdGhlIHN0cmVhbSAoZmx1c2g9PVRSVUUpLCB0aGUgaW5wdXQgaXMgY29tcGxldGVs
eSBjb25zdW1lZAotICogd2hlbiAqc291cmNlPT1zb3VyY2VMaW1pdCBhbmQgbm8gZXJyb3IgY29k
ZSBpcyBzZXQKLSAqIFRoZSBjb252ZXJ0ZXIgb2JqZWN0IGlzIHRoZW4gYXV0b21hdGljYWxseSBy
ZXNldCBieSB0aGlzIGZ1bmN0aW9uLgotICogKFRoaXMgbWVhbnMgdGhhdCBhIGNvbnZlcnRlciBu
ZWVkIG5vdCBiZSByZXNldCBleHBsaWNpdGx5IGJldHdlZW4gZGF0YQotICogc3RyZWFtcyBpZiBp
dCBmaW5pc2hlcyB0aGUgcHJldmlvdXMgc3RyZWFtIHdpdGhvdXQgZXJyb3JzLikKLSAqIAotICog
VGhpcyBpcyBhIDxJPnN0YXRlZnVsPC9JPiBjb252ZXJzaW9uLiBBZGRpdGlvbmFsbHksIGV2ZW4g
d2hlbiBhbGwgc291cmNlIGRhdGEgaGFzCi0gKiBiZWVuIGNvbnN1bWVkLCBzb21lIGRhdGEgbWF5
IGJlIGluIHRoZSBjb252ZXJ0ZXJzJyBpbnRlcm5hbCBzdGF0ZS4KLSAqIENhbGwgdGhpcyBmdW5j
dGlvbiByZXBlYXRlZGx5LCB1cGRhdGluZyB0aGUgdGFyZ2V0IHBvaW50ZXJzIHdpdGgKLSAqIHRo
ZSBuZXh0IGVtcHR5IGNodW5rIG9mIHRhcmdldCBpbiBjYXNlIG9mIGEKLSAqIDxUVD5VX0JVRkZF
Ul9PVkVSRkxPV19FUlJPUjwvVFQ+LCBhbmQgdXBkYXRpbmcgdGhlIHNvdXJjZSAgcG9pbnRlcnMK
LSAqICB3aXRoIHRoZSBuZXh0IGNodW5rIG9mIHNvdXJjZSB3aGVuIGEgc3VjY2Vzc2Z1bCBlcnJv
ciBzdGF0dXMgaXMKLSAqIHJldHVybmVkLCB1bnRpbCB0aGVyZSBhcmUgbm8gbW9yZSBjaHVua3Mg
b2Ygc291cmNlIGRhdGEuCi0gKiBAcGFyYW0gY29udmVydGVyIHRoZSBVbmljb2RlIGNvbnZlcnRl
cgotICogQHBhcmFtIHRhcmdldCBJL08gcGFyYW1ldGVyLiBJbnB1dCA6IFBvaW50cyB0byB0aGUg
YmVnaW5uaW5nIG9mIHRoZSBidWZmZXIgdG8gY29weQotICogIFVDaGFycyBpbnRvLiBPdXRwdXQg
OiBwb2ludHMgdG8gYWZ0ZXIgdGhlIGxhc3QgVUNoYXIgY29waWVkLgotICogQHBhcmFtIHRhcmdl
dExpbWl0IHRoZSBwb2ludGVyIGp1c3QgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgPFRUPnRhcmdldDwv
VFQ+IGJ1ZmZlcgotICogQHBhcmFtIHNvdXJjZSBJL08gcGFyYW1ldGVyLCBwb2ludGVyIHRvIHBv
aW50ZXIgdG8gdGhlIHNvdXJjZSBjb2RlcGFnZSBidWZmZXIuIAotICogQHBhcmFtIHNvdXJjZUxp
bWl0IHRoZSBwb2ludGVyIHRvIHRoZSBieXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHNvdXJjZSBi
dWZmZXIKLSAqIEBwYXJhbSBvZmZzZXRzIGlmIE5VTEwgaXMgcGFzc2VkLCBub3RoaW5nIHdpbGwg
aGFwcGVuIHRvIGl0LCBvdGhlcndpc2UgaXQgbmVlZHMgdG8gaGF2ZSB0aGUgc2FtZSBudW1iZXIK
LSAqIG9mIGFsbG9jYXRlZCBjZWxscyBhcyA8VFQ+dGFyZ2V0PC9UVD4uIFdpbGwgZmlsbCBpbiBv
ZmZzZXRzIGZyb20gdGFyZ2V0IHRvIHNvdXJjZSBwb2ludGVyCi0gKiBlLmc6IDxUVD5vZmZzZXRz
WzNdPC9UVD4gaXMgZXF1YWwgdG8gNiwgaXQgbWVhbnMgdGhhdCB0aGUgPFRUPnRhcmdldFszXTwv
VFQ+IHdhcyBhIHJlc3VsdCBvZiB0cmFuc2NvZGluZyA8VFQ+c291cmNlWzZdPC9UVD4KLSAqIEZv
ciBvdXRwdXQgZGF0YSBjYXJyaWVkIGFjcm9zcyBjYWxscywgYW5kIG90aGVyIGRhdGEgd2l0aG91
dCBhIHNwZWNpZmljIHNvdXJjZSBjaGFyYWN0ZXIKLSAqIChzdWNoIGFzIGZyb20gZXNjYXBlIHNl
cXVlbmNlcyBvciBjYWxsYmFja3MpICAtMSB3aWxsIGJlIHBsYWNlZCBmb3Igb2Zmc2V0cy4gCi0g
KiBAcGFyYW0gZmx1c2ggc2V0IHRvIDxUVD5UUlVFPC9UVD4gaWYgdGhlIGN1cnJlbnQgc291cmNl
IGJ1ZmZlciBpcyB0aGUgbGFzdCBhdmFpbGFibGUKLSAqIGNodW5rIG9mIHRoZSBzb3VyY2UsIDxU
VD5GQUxTRTwvVFQ+IG90aGVyd2lzZS4gTm90ZSB0aGF0IGlmIGEgZmFpbGluZyBzdGF0dXMgaXMg
cmV0dXJuZWQsCi0gKiB0aGlzIGZ1bmN0aW9uIG1heSBoYXZlIHRvIGJlIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyB3aXRoIGZsdXNoIHNldCB0byA8VFQ+VFJVRTwvVFQ+IHVudGlsCi0gKiB0aGUgc291
cmNlIGJ1ZmZlciBpcyBjb25zdW1lZC4KLSAqIEBwYXJhbSBlcnIgdGhlIGVycm9yIHN0YXR1cy4g
IDxUVD5VX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I8L1RUPiB3aWxsIGJlIHNldCBpZiB0aGUKLSAq
IGNvbnZlcnRlciBpcyA8VFQ+TlVMTDwvVFQ+LgotICogPGNvZGU+VV9CVUZGRVJfT1ZFUkZMT1df
RVJST1I8L2NvZGU+IHdpbGwgYmUgc2V0IGlmIHRoZSB0YXJnZXQgaXMgZnVsbCBhbmQgdGhlcmUg
aXMgCi0gKiBzdGlsbCBkYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIHRhcmdldC4gCi0gKiBAc2Vl
IHVjbnZfZnJvbVVDaGFycwotICogQHNlZSB1Y252X2NvbnZlcnQKLSAqIEBzZWUgdWNudl9nZXRN
aW5DaGFyU2l6ZQotICogQHNlZSB1Y252X3NldEZyb21VQ2FsbEJhY2sKLSAqIEBzZWUgdWNudl9n
ZXROZXh0VUNoYXIKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQ
T1JUMiAKLXVjbnZfdG9Vbmljb2RlKFVDb252ZXJ0ZXIgKmNvbnZlcnRlciwKLSAgICAgICAgICAg
ICAgIFVDaGFyICoqdGFyZ2V0LAotICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnRhcmdldExp
bWl0LAotICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKnNvdXJjZSwKLSAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKnNvdXJjZUxpbWl0LAotICAgICAgICAgICAgICAgaW50MzJfdCAqb2Zmc2V0
cywKLSAgICAgICAgICAgICAgIFVCb29sIGZsdXNoLAotICAgICAgICAgICAgICAgVUVycm9yQ29k
ZSAqZXJyKTsKLQotLyoqCi0gKiBDb252ZXJ0IHRoZSBVbmljb2RlIHN0cmluZyBpbnRvIGEgY29k
ZXBhZ2Ugc3RyaW5nIHVzaW5nIGFuIGV4aXN0aW5nIFVDb252ZXJ0ZXIuCi0gKiBUaGUgb3V0cHV0
IHN0cmluZyBpcyBOVUwtdGVybWluYXRlZCBpZiBwb3NzaWJsZS4KLSAqCi0gKiBUaGlzIGZ1bmN0
aW9uIGlzIGEgbW9yZSBjb252ZW5pZW50IGJ1dCBsZXNzIHBvd2VyZnVsIHZlcnNpb24gb2YgdWNu
dl9mcm9tVW5pY29kZSgpLgotICogSXQgaXMgb25seSB1c2VmdWwgZm9yIHdob2xlIHN0cmluZ3Ms
IG5vdCBmb3Igc3RyZWFtaW5nIGNvbnZlcnNpb24uCi0gKgotICogVGhlIG1heGltdW0gb3V0cHV0
IGJ1ZmZlciBjYXBhY2l0eSByZXF1aXJlZCAoYmFycmluZyBvdXRwdXQgZnJvbSBjYWxsYmFja3Mp
IHdpbGwgYmUKLSAqIFVDTlZfR0VUX01BWF9CWVRFU19GT1JfU1RSSU5HKHNyY0xlbmd0aCwgdWNu
dl9nZXRNYXhDaGFyU2l6ZShjbnYpKS4KLSAqCi0gKiBAcGFyYW0gY252IHRoZSBjb252ZXJ0ZXIg
b2JqZWN0IHRvIGJlIHVzZWQgKHVjbnZfcmVzZXRGcm9tVW5pY29kZSgpIHdpbGwgYmUgY2FsbGVk
KQotICogQHBhcmFtIHNyYyB0aGUgaW5wdXQgVW5pY29kZSBzdHJpbmcKLSAqIEBwYXJhbSBzcmNM
ZW5ndGggdGhlIGlucHV0IHN0cmluZyBsZW5ndGgsIG9yIC0xIGlmIE5VTC10ZXJtaW5hdGVkCi0g
KiBAcGFyYW0gZGVzdCBkZXN0aW5hdGlvbiBzdHJpbmcgYnVmZmVyLCBjYW4gYmUgTlVMTCBpZiBk
ZXN0Q2FwYWNpdHk9PTAKLSAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgdGhlIG51bWJlciBvZiBjaGFy
cyBhdmFpbGFibGUgYXQgZGVzdAotICogQHBhcmFtIHBFcnJvckNvZGUgbm9ybWFsIElDVSBlcnJv
ciBjb2RlOwotICogICAgICAgICAgICAgICAgICBjb21tb24gZXJyb3IgY29kZXMgdGhhdCBtYXkg
YmUgc2V0IGJ5IHRoaXMgZnVuY3Rpb24gaW5jbHVkZQotICogICAgICAgICAgICAgICAgICBVX0JV
RkZFUl9PVkVSRkxPV19FUlJPUiwgVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORywKLSAq
ICAgICAgICAgICAgICAgICAgVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SLCBhbmQgY29udmVyc2lv
biBlcnJvcnMKLSAqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IHN0cmluZywgbm90
IGNvdW50aW5nIHRoZSB0ZXJtaW5hdGluZyBOVUw7Ci0gKiAgICAgICAgIGlmIHRoZSBsZW5ndGgg
aXMgZ3JlYXRlciB0aGFuIGRlc3RDYXBhY2l0eSwgdGhlbiB0aGUgc3RyaW5nIHdpbGwgbm90IGZp
dAotICogICAgICAgICBhbmQgYSBidWZmZXIgb2YgdGhlIGluZGljYXRlZCBsZW5ndGggd291bGQg
bmVlZCB0byBiZSBwYXNzZWQgaW4KLSAqIEBzZWUgdWNudl9mcm9tVW5pY29kZQotICogQHNlZSB1
Y252X2NvbnZlcnQKLSAqIEBzZWUgVUNOVl9HRVRfTUFYX0JZVEVTX0ZPUl9TVFJJTkcKLSAqIEBz
dGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdWNudl9mcm9t
VUNoYXJzKFVDb252ZXJ0ZXIgKmNudiwKLSAgICAgICAgICAgICAgICBjaGFyICpkZXN0LCBpbnQz
Ml90IGRlc3RDYXBhY2l0eSwKLSAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjLCBpbnQz
Ml90IHNyY0xlbmd0aCwKLSAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsK
LQotLyoqCi0gKiBDb252ZXJ0IHRoZSBjb2RlcGFnZSBzdHJpbmcgaW50byBhIFVuaWNvZGUgc3Ry
aW5nIHVzaW5nIGFuIGV4aXN0aW5nIFVDb252ZXJ0ZXIuCi0gKiBUaGUgb3V0cHV0IHN0cmluZyBp
cyBOVUwtdGVybWluYXRlZCBpZiBwb3NzaWJsZS4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGEg
bW9yZSBjb252ZW5pZW50IGJ1dCBsZXNzIHBvd2VyZnVsIHZlcnNpb24gb2YgdWNudl90b1VuaWNv
ZGUoKS4KLSAqIEl0IGlzIG9ubHkgdXNlZnVsIGZvciB3aG9sZSBzdHJpbmdzLCBub3QgZm9yIHN0
cmVhbWluZyBjb252ZXJzaW9uLgotICoKLSAqIFRoZSBtYXhpbXVtIG91dHB1dCBidWZmZXIgY2Fw
YWNpdHkgcmVxdWlyZWQgKGJhcnJpbmcgb3V0cHV0IGZyb20gY2FsbGJhY2tzKSB3aWxsIGJlCi0g
KiAyKnNyY0xlbmd0aCAoZWFjaCBjaGFyIG1heSBiZSBjb252ZXJ0ZWQgaW50byBhIHN1cnJvZ2F0
ZSBwYWlyKS4KLSAqCi0gKiBAcGFyYW0gY252IHRoZSBjb252ZXJ0ZXIgb2JqZWN0IHRvIGJlIHVz
ZWQgKHVjbnZfcmVzZXRUb1VuaWNvZGUoKSB3aWxsIGJlIGNhbGxlZCkKLSAqIEBwYXJhbSBzcmMg
dGhlIGlucHV0IGNvZGVwYWdlIHN0cmluZwotICogQHBhcmFtIHNyY0xlbmd0aCB0aGUgaW5wdXQg
c3RyaW5nIGxlbmd0aCwgb3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQKLSAqIEBwYXJhbSBkZXN0IGRl
c3RpbmF0aW9uIHN0cmluZyBidWZmZXIsIGNhbiBiZSBOVUxMIGlmIGRlc3RDYXBhY2l0eT09MAot
ICogQHBhcmFtIGRlc3RDYXBhY2l0eSB0aGUgbnVtYmVyIG9mIFVDaGFycyBhdmFpbGFibGUgYXQg
ZGVzdAotICogQHBhcmFtIHBFcnJvckNvZGUgbm9ybWFsIElDVSBlcnJvciBjb2RlOwotICogICAg
ICAgICAgICAgICAgICBjb21tb24gZXJyb3IgY29kZXMgdGhhdCBtYXkgYmUgc2V0IGJ5IHRoaXMg
ZnVuY3Rpb24gaW5jbHVkZQotICogICAgICAgICAgICAgICAgICBVX0JVRkZFUl9PVkVSRkxPV19F
UlJPUiwgVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORywKLSAqICAgICAgICAgICAgICAg
ICAgVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SLCBhbmQgY29udmVyc2lvbiBlcnJvcnMKLSAqIEBy
ZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IHN0cmluZywgbm90IGNvdW50aW5nIHRoZSB0
ZXJtaW5hdGluZyBOVUw7Ci0gKiAgICAgICAgIGlmIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFu
IGRlc3RDYXBhY2l0eSwgdGhlbiB0aGUgc3RyaW5nIHdpbGwgbm90IGZpdAotICogICAgICAgICBh
bmQgYSBidWZmZXIgb2YgdGhlIGluZGljYXRlZCBsZW5ndGggd291bGQgbmVlZCB0byBiZSBwYXNz
ZWQgaW4KLSAqIEBzZWUgdWNudl90b1VuaWNvZGUKLSAqIEBzZWUgdWNudl9jb252ZXJ0Ci0gKiBA
c3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVjbnZfdG9V
Q2hhcnMoVUNvbnZlcnRlciAqY252LAotICAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJf
dCBkZXN0Q2FwYWNpdHksCi0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywgaW50MzJfdCBz
cmNMZW5ndGgsCi0gICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwotCi0vKioK
LSAqIENvbnZlcnQgYSBjb2RlcGFnZSBidWZmZXIgaW50byBVbmljb2RlIG9uZSBjaGFyYWN0ZXIg
YXQgYSB0aW1lLgotICogVGhlIGlucHV0IGlzIGNvbXBsZXRlbHkgY29uc3VtZWQgd2hlbiB0aGUg
VV9JTkRFWF9PVVRPRkJPVU5EU19FUlJPUiBpcyBzZXQuCi0gKgotICogQWR2YW50YWdlIGNvbXBh
cmVkIHRvIHVjbnZfdG9Vbmljb2RlKCkgb3IgdWNudl90b1VDaGFycygpOgotICogLSBGYXN0ZXIg
Zm9yIHNtYWxsIGFtb3VudHMgb2YgZGF0YSwgZm9yIG1vc3QgY29udmVydGVycywgZS5nLiwKLSAq
ICAgVVMtQVNDSUksIElTTy04ODU5LTEsIFVURi04LzE2LzMyLCBhbmQgbW9zdCAibm9ybWFsIiBj
aGFyc2V0cy4KLSAqICAgKEZvciBjb21wbGV4IGNvbnZlcnRlcnMsIGUuZy4sIFNDU1UsIFVURi03
IGFuZCBJU08gMjAyMiB2YXJpYW50cywKLSAqICAgIGl0IHVzZXMgdWNudl90b1VuaWNvZGUoKSBp
bnRlcm5hbGx5LikKLSAqIC0gQ29udmVuaWVudC4KLSAqCi0gKiBMaW1pdGF0aW9ucyBjb21wYXJl
ZCB0byB1Y252X3RvVW5pY29kZSgpOgotICogLSBBbHdheXMgYXNzdW1lcyBmbHVzaD1UUlVFLgot
ICogICBUaGlzIG1ha2VzIHVjbnZfZ2V0TmV4dFVDaGFyKCkgdW5zdWl0YWJsZSBmb3IgInN0cmVh
bWluZyIgY29udmVyc2lvbiwKLSAqICAgdGhhdCBpcywgZm9yIHdoZXJlIHRoZSBpbnB1dCBpcyBz
dXBwbGllZCBpbiBtdWx0aXBsZSBidWZmZXJzLAotICogICBiZWNhdXNlIHVjbnZfZ2V0TmV4dFVD
aGFyKCkgd2lsbCBhc3N1bWUgdGhlIGVuZCBvZiB0aGUgaW5wdXQgYXQgdGhlIGVuZAotICogICBv
ZiB0aGUgZmlyc3QgYnVmZmVyLgotICogLSBEb2VzIG5vdCBwcm92aWRlIG9mZnNldCBvdXRwdXQu
Ci0gKgotICogSXQgaXMgcG9zc2libGUgdG8gIm1peCIgdWNudl9nZXROZXh0VUNoYXIoKSBhbmQg
dWNudl90b1VuaWNvZGUoKSBiZWNhdXNlCi0gKiB1Y252X2dldE5leHRVQ2hhcigpIHVzZXMgdGhl
IGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNvbnZlcnRlcgotICogKHVubGlrZSB1Y252X3RvVUNoYXJz
KCkgd2hpY2ggYWx3YXlzIHJlc2V0cyBmaXJzdCkuCi0gKiBIb3dldmVyLCBpZiB1Y252X2dldE5l
eHRVQ2hhcigpIGlzIGNhbGxlZCBhZnRlciB1Y252X3RvVW5pY29kZSgpCi0gKiBzdG9wcGVkIGlu
IHRoZSBtaWRkbGUgb2YgYSBjaGFyYWN0ZXIgc2VxdWVuY2UgKHdpdGggZmx1c2g9RkFMU0UpLAot
ICogdGhlbiB1Y252X2dldE5leHRVQ2hhcigpIHdpbGwgYWx3YXlzIHVzZSB0aGUgc2xvd2VyIHVj
bnZfdG9Vbmljb2RlKCkKLSAqIGludGVybmFsbHkgdW50aWwgdGhlIG5leHQgY2hhcmFjdGVyIGJv
dW5kYXJ5LgotICogKFRoaXMgaXMgbmV3IGluIElDVSAyLjYuIEluIGVhcmxpZXIgcmVsZWFzZXMs
IHVjbnZfZ2V0TmV4dFVDaGFyKCkgaGFkIHRvCi0gKiBzdGFydCBhdCBhIGNoYXJhY3RlciBib3Vu
ZGFyeS4pCi0gKgotICogSW5zdGVhZCBvZiB1c2luZyB1Y252X2dldE5leHRVQ2hhcigpLCBpdCBp
cyByZWNvbW1lbmRlZAotICogdG8gY29udmVydCB1c2luZyB1Y252X3RvVW5pY29kZSgpIG9yIHVj
bnZfdG9VQ2hhcnMoKQotICogYW5kIHRoZW4gaXRlcmF0ZSBvdmVyIHRoZSB0ZXh0IHVzaW5nIFUx
Nl9ORVhUKCkgb3IgYSBVQ2hhckl0ZXJhdG9yICh1aXRlci5oKQotICogb3IgYSBDKysgQ2hhcmFj
dGVySXRlcmF0b3Igb3Igc2ltaWxhci4KLSAqIFRoaXMgYWxsb3dzIHN0cmVhbWluZyBjb252ZXJz
aW9uIGFuZCBvZmZzZXQgb3V0cHV0LCBmb3IgZXhhbXBsZS4KLSAqCi0gKiA8cD5IYW5kbGluZyBv
ZiBzdXJyb2dhdGUgcGFpcnMgYW5kIHN1cHBsZW1lbnRhcnktcGxhbmUgY29kZSBwb2ludHM6PGJy
PgotICogVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQga2luZHMgb2YgY29kZXBhZ2VzIHRoYXQgcHJv
dmlkZSBtYXBwaW5ncyBmb3Igc3Vycm9nYXRlIGNoYXJhY3RlcnM6Ci0gKiA8dWw+Ci0gKiAgIDxs
aT5Db2RlcGFnZXMgbGlrZSBVVEYtOCwgVVRGLTMyLCBhbmQgR0IgMTgwMzAgcHJvdmlkZSBkaXJl
Y3QgcmVwcmVzZW50YXRpb25zIGZvciBVbmljb2RlCi0gKiAgICAgICBjb2RlIHBvaW50cyBVKzEw
MDAwLVUrMTBmZmZmIGFzIHdlbGwgYXMgZm9yIHNpbmdsZSBzdXJyb2dhdGVzIFUrZDgwMC1VK2Rm
ZmYuCi0gKiAgICAgICBFYWNoIHZhbGlkIHNlcXVlbmNlIHdpbGwgcmVzdWx0IGluIGV4YWN0bHkg
b25lIHJldHVybmVkIGNvZGUgcG9pbnQuCi0gKiAgICAgICBJZiBhIHNlcXVlbmNlIHJlc3VsdHMg
aW4gYSBzaW5nbGUgc3Vycm9nYXRlLCB0aGVuIHRoYXQgd2lsbCBiZSByZXR1cm5lZAotICogICAg
ICAgYnkgaXRzZWxmLCBldmVuIGlmIGEgbmVpZ2hib3Jpbmcgc2VxdWVuY2UgZW5jb2RlcyB0aGUg
bWF0Y2hpbmcgc3Vycm9nYXRlLjwvbGk+Ci0gKiAgIDxsaT5Db2RlcGFnZXMgbGlrZSBTQ1NVIGFu
ZCBMTUJDUyAoYW5kIFVURi0xNikgcHJvdmlkZSBkaXJlY3QgcmVwcmVzZW50YXRpb25zIG9ubHkg
Zm9yIEJNUCBjb2RlIHBvaW50cwotICogICAgICAgaW5jbHVkaW5nIHN1cnJvZ2F0ZXMuIENvZGUg
cG9pbnRzIGluIHN1cHBsZW1lbnRhcnkgcGxhbmVzIGFyZSByZXByZXNlbnRlZCB3aXRoCi0gKiAg
ICAgICB0d28gc2VxdWVuY2VzLCBlYWNoIGVuY29kaW5nIGEgc3Vycm9nYXRlLgotICogICAgICAg
Rm9yIHRoZXNlIGNvZGVwYWdlcywgbWF0Y2hpbmcgcGFpcnMgb2Ygc3Vycm9nYXRlcyB3aWxsIGJl
IGNvbWJpbmVkIGludG8gc2luZ2xlCi0gKiAgICAgICBjb2RlIHBvaW50cyBmb3IgcmV0dXJuaW5n
IGZyb20gdGhpcyBmdW5jdGlvbi4KLSAqICAgICAgIChOb3RlIHRoYXQgU0NTVSBpcyBhY3R1YWxs
eSBhIG1peCBvZiB0aGVzZSBjb2RlcGFnZSB0eXBlcy4pPC9saT4KLSAqIDwvdWw+PC9wPgotICoK
LSAqIEBwYXJhbSBjb252ZXJ0ZXIgYW4gb3BlbiBVQ29udmVydGVyCi0gKiBAcGFyYW0gc291cmNl
IHRoZSBhZGRyZXNzIG9mIGEgcG9pbnRlciB0byB0aGUgY29kZXBhZ2UgYnVmZmVyLCB3aWxsIGJl
Ci0gKiAgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUgYnl0ZXMgY29uc3VtZWQgaW4gdGhlIGNv
bnZlcnNpb24gY2FsbC4KLSAqIEBwYXJhbSBzb3VyY2VMaW1pdCBwb2ludHMgdG8gdGhlIGVuZCBv
ZiB0aGUgaW5wdXQgYnVmZmVyCi0gKiBAcGFyYW0gZXJyIGZpbGxzIGluIGVycm9yIHN0YXR1cyAo
c2VlIHVjbnZfdG9Vbmljb2RlKQotICogPGNvZGU+VV9JTkRFWF9PVVRPRkJPVU5EU19FUlJPUjwv
Y29kZT4gd2lsbCBiZSBzZXQgaWYgdGhlIGlucHV0IAotICogaXMgZW1wdHkgb3IgZG9lcyBub3Qg
Y29udmVydCB0byBhbnkgb3V0cHV0IChlLmcuOiBwdXJlIHN0YXRlLWNoYW5nZSAKLSAqIGNvZGVz
IFNJL1NPLCBlc2NhcGUgc2VxdWVuY2VzIGZvciBJU08gMjAyMiwKLSAqIG9yIGlmIHRoZSBjYWxs
YmFjayBkaWQgbm90IG91dHB1dCBhbnl0aGluZywgLi4uKS4KLSAqIFRoaXMgZnVuY3Rpb24gd2ls
bCBub3Qgc2V0IGEgPGNvZGU+VV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I8L2NvZGU+IGJlY2F1c2UK
LSAqICB0aGUgImJ1ZmZlciIgaXMgdGhlIHJldHVybiBjb2RlLiBIb3dldmVyLCB0aGVyZSBtaWdo
dCBiZSBzdWJzZXF1ZW50IG91dHB1dAotICogIHN0b3JlZCBpbiB0aGUgY29udmVydGVyIG9iamVj
dAotICogdGhhdCB3aWxsIGJlIHJldHVybmVkIGluIGZvbGxvd2luZyBjYWxscyB0byB0aGlzIGZ1
bmN0aW9uLgotICogQHJldHVybiBhIFVDaGFyMzIgcmVzdWx0aW5nIGZyb20gdGhlIHBhcnRpYWwg
Y29udmVyc2lvbiBvZiBzb3VyY2UKLSAqIEBzZWUgdWNudl90b1VuaWNvZGUKLSAqIEBzZWUgdWNu
dl90b1VDaGFycwotICogQHNlZSB1Y252X2NvbnZlcnQKLSAqIEBzdGFibGUgSUNVIDIuMAotICov
Ci1VX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgotdWNudl9nZXROZXh0VUNoYXIoVUNvbnZlcnRl
ciAqIGNvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipzb3VyY2UsCi0g
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc291cmNlTGltaXQsCi0gICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlICogZXJyKTsKLQotLyoqCi0gKiBDb252ZXJ0IGZyb20gb25lIGV4dGVy
bmFsIGNoYXJzZXQgdG8gYW5vdGhlciB1c2luZyB0d28gZXhpc3RpbmcgVUNvbnZlcnRlcnMuCi0g
KiBJbnRlcm5hbGx5LCB0d28gY29udmVyc2lvbnMgLSB1Y252X3RvVW5pY29kZSgpIGFuZCB1Y252
X2Zyb21Vbmljb2RlKCkgLQotICogYXJlIHVzZWQsICJwaXZvdGluZyIgdGhyb3VnaCAxNi1iaXQg
VW5pY29kZS4KLSAqCi0gKiBUaGVyZSBpcyBhIHNpbWlsYXIgZnVuY3Rpb24sIHVjbnZfY29udmVy
dCgpLAotICogd2hpY2ggaGFzIHRoZSBmb2xsb3dpbmcgbGltaXRhdGlvbnM6Ci0gKiAtIGl0IHRh
a2VzIGNoYXJzZXQgbmFtZXMsIG5vdCBjb252ZXJ0ZXIgb2JqZWN0cywgc28gdGhhdAotICogICAt
IHR3byBjb252ZXJ0ZXJzIGFyZSBvcGVuZWQgZm9yIGVhY2ggY2FsbAotICogICAtIG9ubHkgc2lu
Z2xlLXN0cmluZyBjb252ZXJzaW9uIGlzIHBvc3NpYmxlLCBub3Qgc3RyZWFtaW5nIG9wZXJhdGlv
bgotICogLSBpdCBkb2VzIG5vdCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBmaW5kIG91
dCwKLSAqICAgaW4gY2FzZSBvZiBmYWlsdXJlLCB3aGV0aGVyIHRoZSB0b1VuaWNvZGUgb3IKLSAq
ICAgdGhlIGZyb21Vbmljb2RlIGNvbnZlcnNpb24gZmFpbGVkCi0gKgotICogQnkgY29udHJhc3Qs
IHVjbnZfY29udmVydEV4KCkKLSAqIC0gdGFrZXMgVUNvbnZlcnRlciBwYXJhbWV0ZXJzIGluc3Rl
YWQgb2YgY2hhcnNldCBuYW1lcwotICogLSBmdWxseSBleHBvc2VzIHRoZSBwaXZvdCBidWZmZXIg
Zm9yIGNvbXBsZXRlIGVycm9yIGhhbmRsaW5nCi0gKgotICogdWNudl9jb252ZXJ0RXgoKSBhbHNv
IHByb3ZpZGVzIGZ1cnRoZXIgY29udmVuaWVuY2U6Ci0gKiAtIGFuIG9wdGlvbiB0byByZXNldCB0
aGUgY29udmVydGVycyBhdCB0aGUgYmVnaW5uaW5nCi0gKiAgIChpZiByZXNldD09VFJVRSwgc2Vl
IHBhcmFtZXRlcnM7Ci0gKiAgICBhbHNvIHNldHMgKnBpdm90VGFyZ2V0PSpwaXZvdFNvdXJjZT1w
aXZvdFN0YXJ0KQotICogLSBhbGxvdyBOVUwtdGVybWluYXRlZCBpbnB1dAotICogICAob25seSBh
IHNpbmdsZSBOVUwgYnl0ZSwgd2lsbCBub3Qgd29yayBmb3IgY2hhcnNldHMgd2l0aCBtdWx0aS1i
eXRlIE5VTHMpCi0gKiAgIChpZiBzb3VyY2VMaW1pdD09TlVMTCwgc2VlIHBhcmFtZXRlcnMpCi0g
KiAtIHRlcm1pbmF0ZSB3aXRoIGEgTlVMIG9uIG91dHB1dAotICogICAob25seSBhIHNpbmdsZSBO
VUwgYnl0ZSwgbm90IHVzZWZ1bCBmb3IgY2hhcnNldHMgd2l0aCBtdWx0aS1ieXRlIE5VTHMpLAot
ICogICBvciBzZXQgVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORyBpZiB0aGUgb3V0cHV0
IGV4YWN0bHkgZmlsbHMKLSAqICAgdGhlIHRhcmdldCBidWZmZXIKLSAqIC0gdGhlIHBpdm90IGJ1
ZmZlciBjYW4gYmUgcHJvdmlkZWQgaW50ZXJuYWxseTsKLSAqICAgaW4gdGhpcyBjYXNlLCB0aGUg
Y2FsbGVyIHdpbGwgbm90IGJlIGFibGUgdG8gZ2V0IGRldGFpbHMgYWJvdXQgd2hlcmUgYW4KLSAq
ICAgZXJyb3Igb2NjdXJyZWQKLSAqICAgKGlmIHBpdm90U3RhcnQ9PU5VTEwsIHNlZSBiZWxvdykK
LSAqCi0gKiBUaGUgZnVuY3Rpb24gcmV0dXJucyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlz
IHRydWU6Ci0gKiAtIHRoZSBlbnRpcmUgc291cmNlIHRleHQgaGFzIGJlZW4gY29udmVydGVkIHN1
Y2Nlc3NmdWxseSB0byB0aGUgdGFyZ2V0IGJ1ZmZlcgotICogLSBhIHRhcmdldCBidWZmZXIgb3Zl
cmZsb3cgb2NjdXJyZWQgKFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKQotICogLSBhIGNvbnZlcnNp
b24gZXJyb3Igb2NjdXJyZWQKLSAqICAgKG90aGVyIFVfRkFJTFVSRSgpLCBzZWUgZGVzY3JpcHRp
b24gb2YgcEVycm9yQ29kZSkKLSAqCi0gKiBMaW1pdGF0aW9uIGNvbXBhcmVkIHRvIHRoZSBkaXJl
Y3QgdXNlIG9mCi0gKiB1Y252X2Zyb21Vbmljb2RlKCkgYW5kIHVjbnZfdG9Vbmljb2RlKCk6Ci0g
KiB1Y252X2NvbnZlcnRFeCgpIGRvZXMgbm90IHByb3ZpZGUgb2Zmc2V0IGluZm9ybWF0aW9uLgot
ICoKLSAqIExpbWl0YXRpb24gY29tcGFyZWQgdG8gdWNudl9mcm9tVUNoYXJzKCkgYW5kIHVjbnZf
dG9VQ2hhcnMoKToKLSAqIHVjbnZfY29udmVydEV4KCkgZG9lcyBub3Qgc3VwcG9ydCBwcmVmbGln
aHRpbmcgZGlyZWN0bHkuCi0gKgotICogU2FtcGxlIGNvZGUgZm9yIGNvbnZlcnRpbmcgYSBzaW5n
bGUgc3RyaW5nIGZyb20KLSAqIG9uZSBleHRlcm5hbCBjaGFyc2V0IHRvIFVURi04LCBpZ25vcmlu
ZyB0aGUgbG9jYXRpb24gb2YgZXJyb3JzOgotICoKLSAqIFxjb2RlCi0gKiBpbnQzMl90Ci0gKiBt
eVRvVVRGOChVQ29udmVydGVyICpjbnYsCi0gKiAgICAgICAgICBjb25zdCBjaGFyICpzLCBpbnQz
Ml90IGxlbmd0aCwKLSAqICAgICAgICAgIGNoYXIgKnU4LCBpbnQzMl90IGNhcGFjaXR5LAotICog
ICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSkgewotICogICAgIFVDb252ZXJ0ZXIgKnV0
ZjhDbnY7Ci0gKiAgICAgY2hhciAqdGFyZ2V0OwotICoKLSAqICAgICBpZihVX0ZBSUxVUkUoKnBF
cnJvckNvZGUpKSB7Ci0gKiAgICAgICAgIHJldHVybiAwOwotICogICAgIH0KLSAqCi0gKiAgICAg
dXRmOENudj1teUdldENhY2hlZFVURjhDb252ZXJ0ZXIocEVycm9yQ29kZSk7Ci0gKiAgICAgaWYo
VV9GQUlMVVJFKCpwRXJyb3JDb2RlKSkgewotICogICAgICAgICByZXR1cm4gMDsKLSAqICAgICB9
Ci0gKgotICogICAgIHRhcmdldD11ODsKLSAqICAgICB1Y252X2NvbnZlcnRFeChjbnYsIHV0ZjhD
bnYsCi0gKiAgICAgICAgICAgICAgICAgICAgJnRhcmdldCwgdTgrY2FwYWNpdHksCi0gKiAgICAg
ICAgICAgICAgICAgICAgJnMsIGxlbmd0aD49MCA/IHMrbGVuZ3RoIDogTlVMTCwKLSAqICAgICAg
ICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAotICogICAgICAgICAgICAgICAg
ICAgIFRSVUUsIFRSVUUsCi0gKiAgICAgICAgICAgICAgICAgICAgcEVycm9yQ29kZSk7Ci0gKiAK
LSAqICAgICBteVJlbGVhc2VDYWNoZWRVVEY4Q29udmVydGVyKHV0ZjhDbnYpOwotICoKLSAqICAg
ICAvLyByZXR1cm4gdGhlIG91dHB1dCBzdHJpbmcgbGVuZ3RoLCBidXQgd2l0aG91dCBwcmVmbGln
aHRpbmcKLSAqICAgICByZXR1cm4gKGludDMyX3QpKHRhcmdldC11OCk7Ci0gKiB9Ci0gKiBcZW5k
Y29kZQotICoKLSAqIEBwYXJhbSB0YXJnZXRDbnYgICAgIE91dHB1dCBjb252ZXJ0ZXIsIHVzZWQg
dG8gY29udmVydCBmcm9tIHRoZSBVVEYtMTYgcGl2b3QKLSAqICAgICAgICAgICAgICAgICAgICAg
IHRvIHRoZSB0YXJnZXQgdXNpbmcgdWNudl9mcm9tVW5pY29kZSgpLgotICogQHBhcmFtIHNvdXJj
ZUNudiAgICAgSW5wdXQgY29udmVydGVyLCB1c2VkIHRvIGNvbnZlcnQgZnJvbSB0aGUgc291cmNl
IHRvCi0gKiAgICAgICAgICAgICAgICAgICAgICB0aGUgVVRGLTE2IHBpdm90IHVzaW5nIHVjbnZf
dG9Vbmljb2RlKCkuCi0gKiBAcGFyYW0gdGFyZ2V0ICAgICAgICBJL08gcGFyYW1ldGVyLCBzYW1l
IGFzIGZvciB1Y252X2Zyb21VQ2hhcnMoKS4KLSAqICAgICAgICAgICAgICAgICAgICAgIElucHV0
OiAqdGFyZ2V0IHBvaW50cyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0YXJnZXQgYnVmZmVyLgot
ICogICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiAqdGFyZ2V0IHBvaW50cyB0byB0aGUgZmly
c3QgdW5pdCBhZnRlciB0aGUgbGFzdCBjaGFyIHdyaXR0ZW4uCi0gKiBAcGFyYW0gdGFyZ2V0TGlt
aXQgICBQb2ludGVyIHRvIHRoZSBmaXJzdCB1bml0IGFmdGVyIHRoZSB0YXJnZXQgYnVmZmVyLgot
ICogQHBhcmFtIHNvdXJjZSAgICAgICAgSS9PIHBhcmFtZXRlciwgc2FtZSBhcyBmb3IgdWNudl90
b1VDaGFycygpLgotICogICAgICAgICAgICAgICAgICAgICAgSW5wdXQ6ICpzb3VyY2UgcG9pbnRz
IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNvdXJjZSBidWZmZXIuCi0gKiAgICAgICAgICAgICAg
ICAgICAgICBPdXRwdXQ6ICpzb3VyY2UgcG9pbnRzIHRvIHRoZSBmaXJzdCB1bml0IGFmdGVyIHRo
ZSBsYXN0IGNoYXIgcmVhZC4KLSAqIEBwYXJhbSBzb3VyY2VMaW1pdCAgIFBvaW50ZXIgdG8gdGhl
IGZpcnN0IHVuaXQgYWZ0ZXIgdGhlIHNvdXJjZSBidWZmZXIuCi0gKiBAcGFyYW0gcGl2b3RTdGFy
dCAgICBQb2ludGVyIHRvIHRoZSBVVEYtMTYgcGl2b3QgYnVmZmVyLiBJZiBwaXZvdFN0YXJ0PT1O
VUxMLAotICogICAgICAgICAgICAgICAgICAgICAgdGhlbiBhbiBpbnRlcm5hbCBidWZmZXIgaXMg
dXNlZCBhbmQgdGhlIG90aGVyIHBpdm90Ci0gKiAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVu
dHMgYXJlIGlnbm9yZWQgYW5kIGNhbiBiZSBOVUxMIGFzIHdlbGwuCi0gKiBAcGFyYW0gcGl2b3RT
b3VyY2UgICBJL08gcGFyYW1ldGVyLCBzYW1lIGFzIHNvdXJjZSBpbiB1Y252X2Zyb21VQ2hhcnMo
KSBmb3IKLSAqICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb24gZnJvbSB0aGUgcGl2b3Qg
YnVmZmVyIHRvIHRoZSB0YXJnZXQgYnVmZmVyLgotICogQHBhcmFtIHBpdm90VGFyZ2V0ICAgSS9P
IHBhcmFtZXRlciwgc2FtZSBhcyB0YXJnZXQgaW4gdWNudl90b1VDaGFycygpIGZvcgotICogICAg
ICAgICAgICAgICAgICAgICAgY29udmVyc2lvbiBmcm9tIHRoZSBzb3VyY2UgYnVmZmVyIHRvIHRo
ZSBwaXZvdCBidWZmZXIuCi0gKiAgICAgICAgICAgICAgICAgICAgICBJdCBtdXN0IGJlIHBpdm90
U3RhcnQ8PSpwaXZvdFNvdXJjZTw9KnBpdm90VGFyZ2V0PD1waXZvdExpbWl0Ci0gKiAgICAgICAg
ICAgICAgICAgICAgICBhbmQgcGl2b3RTdGFydDxwaXZvdExpbWl0ICh1bmxlc3MgcGl2b3RTdGFy
dD09TlVMTCkuCi0gKiBAcGFyYW0gcGl2b3RMaW1pdCAgICBQb2ludGVyIHRvIHRoZSBmaXJzdCB1
bml0IGFmdGVyIHRoZSBwaXZvdCBidWZmZXIuCi0gKiBAcGFyYW0gcmVzZXQgICAgICAgICBJZiBU
UlVFLCB0aGVuIHVjbnZfcmVzZXRUb1VuaWNvZGUoc291cmNlQ252KSBhbmQKLSAqICAgICAgICAg
ICAgICAgICAgICAgIHVjbnZfcmVzZXRGcm9tVW5pY29kZSh0YXJnZXRDbnYpIGFyZSBjYWxsZWQs
IGFuZCB0aGUKLSAqICAgICAgICAgICAgICAgICAgICAgIHBpdm90IHBvaW50ZXJzIGFyZSByZXNl
dCAoKnBpdm90VGFyZ2V0PSpwaXZvdFNvdXJjZT1waXZvdFN0YXJ0KS4KLSAqIEBwYXJhbSBmbHVz
aCAgICAgICAgIElmIHRydWUsIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZSBpbnB1dC4KLSAqICAg
ICAgICAgICAgICAgICAgICAgIFBhc3NlZCBkaXJlY3RseSB0byB1Y252X3RvVW5pY29kZSgpLCBh
bmQgY2FycmllZCBvdmVyIHRvCi0gKiAgICAgICAgICAgICAgICAgICAgICB1Y252X2Zyb21Vbmlj
b2RlKCkgd2hlbiB0aGUgc291cmNlIGlzIGVtcHR5IGFzIHdlbGwuCi0gKiBAcGFyYW0gcEVycm9y
Q29kZSAgICBJQ1UgZXJyb3IgY29kZSBpbi9vdXQgcGFyYW1ldGVyLgotICogICAgICAgICAgICAg
ICAgICAgICAgTXVzdCBmdWxmaWxsIFVfU1VDQ0VTUyBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwu
Ci0gKiAgICAgICAgICAgICAgICAgICAgICBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUiBhbHdheXMg
cmVmZXJzIHRvIHRoZSB0YXJnZXQgYnVmZmVyCi0gKiAgICAgICAgICAgICAgICAgICAgICBiZWNh
dXNlIG92ZXJmbG93cyBpbnRvIHRoZSBwaXZvdCBidWZmZXIgYXJlIGhhbmRsZWQgaW50ZXJuYWxs
eS4KLSAqICAgICAgICAgICAgICAgICAgICAgIE90aGVyIGNvbnZlcnNpb24gZXJyb3JzIGFyZSBm
cm9tIHRoZSBzb3VyY2UtdG8tcGl2b3QKLSAqICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnNp
b24gaWYgKnBpdm90U291cmNlPT1waXZvdFN0YXJ0LCBvdGhlcndpc2UgZnJvbQotICogICAgICAg
ICAgICAgICAgICAgICAgdGhlIHBpdm90LXRvLXRhcmdldCBjb252ZXJzaW9uLgotICoKLSAqIEBz
ZWUgdWNudl9jb252ZXJ0Ci0gKiBAc2VlIHVjbnZfZnJvbUFsZ29yaXRobWljCi0gKiBAc2VlIHVj
bnZfdG9BbGdvcml0aG1pYwotICogQHNlZSB1Y252X2Zyb21Vbmljb2RlCi0gKiBAc2VlIHVjbnZf
dG9Vbmljb2RlCi0gKiBAc2VlIHVjbnZfZnJvbVVDaGFycwotICogQHNlZSB1Y252X3RvVUNoYXJz
Ci0gKiBAc3RhYmxlIElDVSAyLjYKLSAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKLXVjbnZf
Y29udmVydEV4KFVDb252ZXJ0ZXIgKnRhcmdldENudiwgVUNvbnZlcnRlciAqc291cmNlQ252LAot
ICAgICAgICAgICAgICAgY2hhciAqKnRhcmdldCwgY29uc3QgY2hhciAqdGFyZ2V0TGltaXQsCi0g
ICAgICAgICAgICAgICBjb25zdCBjaGFyICoqc291cmNlLCBjb25zdCBjaGFyICpzb3VyY2VMaW1p
dCwKLSAgICAgICAgICAgICAgIFVDaGFyICpwaXZvdFN0YXJ0LCBVQ2hhciAqKnBpdm90U291cmNl
LAotICAgICAgICAgICAgICAgVUNoYXIgKipwaXZvdFRhcmdldCwgY29uc3QgVUNoYXIgKnBpdm90
TGltaXQsCi0gICAgICAgICAgICAgICBVQm9vbCByZXNldCwgVUJvb2wgZmx1c2gsCi0gICAgICAg
ICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQotLyoqCi0gKiBDb252ZXJ0IGZyb20g
b25lIGV4dGVybmFsIGNoYXJzZXQgdG8gYW5vdGhlci4KLSAqIEludGVybmFsbHksIHR3byBjb252
ZXJ0ZXJzIGFyZSBvcGVuZWQgYWNjb3JkaW5nIHRvIHRoZSBuYW1lIGFyZ3VtZW50cywKLSAqIHRo
ZW4gdGhlIHRleHQgaXMgY29udmVydGVkIHRvIGFuZCBmcm9tIHRoZSAxNi1iaXQgVW5pY29kZSAi
cGl2b3QiCi0gKiB1c2luZyB1Y252X2NvbnZlcnRFeCgpLCB0aGVuIHRoZSBjb252ZXJ0ZXJzIGFy
ZSBjbG9zZWQgYWdhaW4uCi0gKgotICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uLCBu
b3QgYW4gZWZmaWNpZW50IHdheSB0byBjb252ZXJ0IGEgbG90IG9mIHRleHQ6Ci0gKiB1Y252X2Nv
bnZlcnQoKQotICogLSB0YWtlcyBjaGFyc2V0IG5hbWVzLCBub3QgY29udmVydGVyIG9iamVjdHMs
IHNvIHRoYXQKLSAqICAgLSB0d28gY29udmVydGVycyBhcmUgb3BlbmVkIGZvciBlYWNoIGNhbGwK
LSAqICAgLSBvbmx5IHNpbmdsZS1zdHJpbmcgY29udmVyc2lvbiBpcyBwb3NzaWJsZSwgbm90IHN0
cmVhbWluZyBvcGVyYXRpb24KLSAqIC0gZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRp
b24gdG8gZmluZCBvdXQsCi0gKiAgIGluIGNhc2Ugb2YgZmFpbHVyZSwgd2hldGhlciB0aGUgdG9V
bmljb2RlIG9yCi0gKiAgIHRoZSBmcm9tVW5pY29kZSBjb252ZXJzaW9uIGZhaWxlZAotICogLSBh
bGxvd3MgTlVMLXRlcm1pbmF0ZWQgaW5wdXQKLSAqICAgKG9ubHkgYSBzaW5nbGUgTlVMIGJ5dGUs
IHdpbGwgbm90IHdvcmsgZm9yIGNoYXJzZXRzIHdpdGggbXVsdGktYnl0ZSBOVUxzKQotICogICAo
aWYgc291cmNlTGVuZ3RoPT0tMSwgc2VlIHBhcmFtZXRlcnMpCi0gKiAtIHRlcm1pbmF0ZSB3aXRo
IGEgTlVMIG9uIG91dHB1dAotICogICAob25seSBhIHNpbmdsZSBOVUwgYnl0ZSwgbm90IHVzZWZ1
bCBmb3IgY2hhcnNldHMgd2l0aCBtdWx0aS1ieXRlIE5VTHMpLAotICogICBvciBzZXQgVV9TVFJJ
TkdfTk9UX1RFUk1JTkFURURfV0FSTklORyBpZiB0aGUgb3V0cHV0IGV4YWN0bHkgZmlsbHMKLSAq
ICAgdGhlIHRhcmdldCBidWZmZXIKLSAqIC0gYSBwaXZvdCBidWZmZXIgaXMgcHJvdmlkZWQgaW50
ZXJuYWxseQotICoKLSAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHdoZW4gb25lIG9mIHRoZSBmb2xs
b3dpbmcgaXMgdHJ1ZToKLSAqIC0gdGhlIGVudGlyZSBzb3VyY2UgdGV4dCBoYXMgYmVlbiBjb252
ZXJ0ZWQgc3VjY2Vzc2Z1bGx5IHRvIHRoZSB0YXJnZXQgYnVmZmVyCi0gKiAgIGFuZCBlaXRoZXIg
dGhlIHRhcmdldCBidWZmZXIgaXMgdGVybWluYXRlZCB3aXRoIGEgc2luZ2xlIE5VTCBieXRlCi0g
KiAgIG9yIHRoZSBlcnJvciBjb2RlIGlzIHNldCB0byBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9X
QVJOSU5HCi0gKiAtIGEgdGFyZ2V0IGJ1ZmZlciBvdmVyZmxvdyBvY2N1cnJlZCAoVV9CVUZGRVJf
T1ZFUkZMT1dfRVJST1IpCi0gKiAgIGFuZCB0aGUgZnVsbCBvdXRwdXQgc3RyaW5nIGxlbmd0aCBp
cyByZXR1cm5lZCAoInByZWZsaWdodGluZyIpCi0gKiAtIGEgY29udmVyc2lvbiBlcnJvciBvY2N1
cnJlZAotICogICAob3RoZXIgVV9GQUlMVVJFKCksIHNlZSBkZXNjcmlwdGlvbiBvZiBwRXJyb3JD
b2RlKQotICoKLSAqIEBwYXJhbSB0b0NvbnZlcnRlck5hbWUgICBUaGUgbmFtZSBvZiB0aGUgY29u
dmVydGVyIHRoYXQgaXMgdXNlZCB0byBjb252ZXJ0Ci0gKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJvbSB0aGUgVVRGLTE2IHBpdm90IGJ1ZmZlciB0byB0aGUgdGFyZ2V0LgotICogQHBhcmFt
IGZyb21Db252ZXJ0ZXJOYW1lIFRoZSBuYW1lIG9mIHRoZSBjb252ZXJ0ZXIgdGhhdCBpcyB1c2Vk
IHRvIGNvbnZlcnQKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzb3VyY2Ug
dG8gdGhlIFVURi0xNiBwaXZvdCBidWZmZXIuCi0gKiBAcGFyYW0gdGFyZ2V0ICAgICAgICAgICAg
UG9pbnRlciB0byB0aGUgb3V0cHV0IGJ1ZmZlci4KLSAqIEBwYXJhbSB0YXJnZXRDYXBhY2l0eSAg
ICBDYXBhY2l0eSBvZiB0aGUgdGFyZ2V0LCBpbiBieXRlcy4KLSAqIEBwYXJhbSBzb3VyY2UgICAg
ICAgICAgICBQb2ludGVyIHRvIHRoZSBpbnB1dCBidWZmZXIuCi0gKiBAcGFyYW0gc291cmNlTGVu
Z3RoICAgICAgTGVuZ3RoIG9mIHRoZSBpbnB1dCB0ZXh0LCBpbiBieXRlcywgb3IgLTEgZm9yIE5V
TC10ZXJtaW5hdGVkIGlucHV0LgotICogQHBhcmFtIHBFcnJvckNvZGUgICAgICAgIElDVSBlcnJv
ciBjb2RlIGluL291dCBwYXJhbWV0ZXIuCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgTXVz
dCBmdWxmaWxsIFVfU1VDQ0VTUyBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCi0gKiBAcmV0dXJu
IExlbmd0aCBvZiB0aGUgY29tcGxldGUgb3V0cHV0IHRleHQgaW4gYnl0ZXMsIGV2ZW4gaWYgaXQg
ZXhjZWVkcyB0aGUgdGFyZ2V0Q2FwYWNpdHkKLSAqICAgICAgICAgYW5kIGEgVV9CVUZGRVJfT1ZF
UkZMT1dfRVJST1IgaXMgc2V0LgotICoKLSAqIEBzZWUgdWNudl9jb252ZXJ0RXgKLSAqIEBzZWUg
dWNudl9mcm9tQWxnb3JpdGhtaWMKLSAqIEBzZWUgdWNudl90b0FsZ29yaXRobWljCi0gKiBAc2Vl
IHVjbnZfZnJvbVVuaWNvZGUKLSAqIEBzZWUgdWNudl90b1VuaWNvZGUKLSAqIEBzZWUgdWNudl9m
cm9tVUNoYXJzCi0gKiBAc2VlIHVjbnZfdG9VQ2hhcnMKLSAqIEBzZWUgdWNudl9nZXROZXh0VUNo
YXIKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgot
dWNudl9jb252ZXJ0KGNvbnN0IGNoYXIgKnRvQ29udmVydGVyTmFtZSwKLSAgICAgICAgICAgICBj
b25zdCBjaGFyICpmcm9tQ29udmVydGVyTmFtZSwKLSAgICAgICAgICAgICBjaGFyICp0YXJnZXQs
Ci0gICAgICAgICAgICAgaW50MzJfdCB0YXJnZXRDYXBhY2l0eSwKLSAgICAgICAgICAgICBjb25z
dCBjaGFyICpzb3VyY2UsCi0gICAgICAgICAgICAgaW50MzJfdCBzb3VyY2VMZW5ndGgsCi0gICAg
ICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7Ci0KLS8qKgotICogQ29udmVydCBmcm9t
IG9uZSBleHRlcm5hbCBjaGFyc2V0IHRvIGFub3RoZXIuCi0gKiBJbnRlcm5hbGx5LCB0aGUgdGV4
dCBpcyBjb252ZXJ0ZWQgdG8gYW5kIGZyb20gdGhlIDE2LWJpdCBVbmljb2RlICJwaXZvdCIKLSAq
IHVzaW5nIHVjbnZfY29udmVydEV4KCkuIHVjbnZfdG9BbGdvcml0aG1pYygpIHdvcmtzIGV4YWN0
bHkgbGlrZSB1Y252X2NvbnZlcnQoKQotICogZXhjZXB0IHRoYXQgdGhlIHR3byBjb252ZXJ0ZXJz
IG5lZWQgbm90IGJlIGxvb2tlZCB1cCBhbmQgb3BlbmVkIGNvbXBsZXRlbHkuCi0gKgotICogVGhl
IHNvdXJjZS10by1waXZvdCBjb252ZXJzaW9uIHVzZXMgdGhlIGNudiBjb252ZXJ0ZXIgcGFyYW1l
dGVyLgotICogVGhlIHBpdm90LXRvLXRhcmdldCBjb252ZXJzaW9uIHVzZXMgYSBwdXJlbHkgYWxn
b3JpdGhtaWMgY29udmVydGVyCi0gKiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCB0eXBlLCBl
LmcuLCBVQ05WX1VURjggZm9yIGEgVVRGLTggY29udmVydGVyLgotICoKLSAqIEludGVybmFsbHks
IHRoZSBhbGdvcml0aG1pYyBjb252ZXJ0ZXIgaXMgb3BlbmVkIGFuZCBjbG9zZWQgZm9yIGVhY2gK
LSAqIGZ1bmN0aW9uIGNhbGwsIHdoaWNoIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdXNpbmcgdGhl
IHB1YmxpYyB1Y252X29wZW4oKQotICogYnV0IHNvbWV3aGF0IGxlc3MgZWZmaWNpZW50IHRoYW4g
b25seSByZXNldHRpbmcgYW4gZXhpc3RpbmcgY29udmVydGVyCi0gKiBhbmQgdXNpbmcgdWNudl9j
b252ZXJ0RXgoKS4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgY29udmVuaWVudCB0aGFu
IHVjbnZfY29udmVydEV4KCkgZm9yIHNpbmdsZS1zdHJpbmcKLSAqIGNvbnZlcnNpb25zLCBlc3Bl
Y2lhbGx5IHdoZW4gInByZWZsaWdodGluZyIgaXMgZGVzaXJlZCAocmV0dXJuaW5nIHRoZSBsZW5n
dGgKLSAqIG9mIHRoZSBjb21wbGV0ZSBvdXRwdXQgZXZlbiBpZiBpdCBkb2VzIG5vdCBmaXQgaW50
byB0aGUgdGFyZ2V0IGJ1ZmZlcjsKLSAqIHNlZSB0aGUgVXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0
ZXIpLiBTZWUgdWNudl9jb252ZXJ0KCkgZm9yIGRldGFpbHMuCi0gKgotICogQHBhcmFtIGFsZ29y
aXRobWljVHlwZSAgIFVDb252ZXJ0ZXJUeXBlIGNvbnN0YW50IGlkZW50aWZ5aW5nIHRoZSBkZXNp
cmVkIHRhcmdldAotICogICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgYXMgYSBwdXJl
bHkgYWxnb3JpdGhtaWMgY29udmVydGVyLgotICogICAgICAgICAgICAgICAgICAgICAgICAgIFRo
b3NlIGFyZSBjb252ZXJ0ZXJzIGZvciBVbmljb2RlIGNoYXJzZXRzIGxpa2UKLSAqICAgICAgICAg
ICAgICAgICAgICAgICAgICBVVEYtOCwgQk9DVS0xLCBTQ1NVLCBVVEYtNywgSU1BUC1tYWlsYm94
LW5hbWUsIGV0Yy4sCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBVUy1B
U0NJSSBhbmQgSVNPLTg4NTktMS4KLSAqIEBwYXJhbSBjbnYgICAgICAgICAgICAgICBUaGUgY29u
dmVydGVyIHRoYXQgaXMgdXNlZCB0byBjb252ZXJ0Ci0gKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJvbSB0aGUgc291cmNlIHRvIHRoZSBVVEYtMTYgcGl2b3QgYnVmZmVyLgotICogQHBhcmFt
IHRhcmdldCAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIG91dHB1dCBidWZmZXIuCi0gKiBAcGFy
YW0gdGFyZ2V0Q2FwYWNpdHkgICAgQ2FwYWNpdHkgb2YgdGhlIHRhcmdldCwgaW4gYnl0ZXMuCi0g
KiBAcGFyYW0gc291cmNlICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgYnVmZmVyLgot
ICogQHBhcmFtIHNvdXJjZUxlbmd0aCAgICAgIExlbmd0aCBvZiB0aGUgaW5wdXQgdGV4dCwgaW4g
Ynl0ZXMKLSAqIEBwYXJhbSBwRXJyb3JDb2RlICAgICAgICBJQ1UgZXJyb3IgY29kZSBpbi9vdXQg
cGFyYW1ldGVyLgotICogICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgZnVsZmlsbCBVX1NV
Q0NFU1MgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgotICogQHJldHVybiBMZW5ndGggb2YgdGhl
IGNvbXBsZXRlIG91dHB1dCB0ZXh0IGluIGJ5dGVzLCBldmVuIGlmIGl0IGV4Y2VlZHMgdGhlIHRh
cmdldENhcGFjaXR5Ci0gKiAgICAgICAgIGFuZCBhIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SIGlz
IHNldC4KLSAqCi0gKiBAc2VlIHVjbnZfZnJvbUFsZ29yaXRobWljCi0gKiBAc2VlIHVjbnZfY29u
dmVydAotICogQHNlZSB1Y252X2NvbnZlcnRFeAotICogQHNlZSB1Y252X2Zyb21Vbmljb2RlCi0g
KiBAc2VlIHVjbnZfdG9Vbmljb2RlCi0gKiBAc2VlIHVjbnZfZnJvbVVDaGFycwotICogQHNlZSB1
Y252X3RvVUNoYXJzCi0gKiBAc3RhYmxlIElDVSAyLjYKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBV
X0VYUE9SVDIKLXVjbnZfdG9BbGdvcml0aG1pYyhVQ29udmVydGVyVHlwZSBhbGdvcml0aG1pY1R5
cGUsCi0gICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlciAqY252LAotICAgICAgICAgICAgICAg
ICAgIGNoYXIgKnRhcmdldCwgaW50MzJfdCB0YXJnZXRDYXBhY2l0eSwKLSAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICpzb3VyY2UsIGludDMyX3Qgc291cmNlTGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwotCi0vKioKLSAqIENvbnZlcnQgZnJv
bSBvbmUgZXh0ZXJuYWwgY2hhcnNldCB0byBhbm90aGVyLgotICogSW50ZXJuYWxseSwgdGhlIHRl
eHQgaXMgY29udmVydGVkIHRvIGFuZCBmcm9tIHRoZSAxNi1iaXQgVW5pY29kZSAicGl2b3QiCi0g
KiB1c2luZyB1Y252X2NvbnZlcnRFeCgpLiB1Y252X2Zyb21BbGdvcml0aG1pYygpIHdvcmtzIGV4
YWN0bHkgbGlrZSB1Y252X2NvbnZlcnQoKQotICogZXhjZXB0IHRoYXQgdGhlIHR3byBjb252ZXJ0
ZXJzIG5lZWQgbm90IGJlIGxvb2tlZCB1cCBhbmQgb3BlbmVkIGNvbXBsZXRlbHkuCi0gKgotICog
VGhlIHNvdXJjZS10by1waXZvdCBjb252ZXJzaW9uIHVzZXMgYSBwdXJlbHkgYWxnb3JpdGhtaWMg
Y29udmVydGVyCi0gKiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCB0eXBlLCBlLmcuLCBVQ05W
X1VURjggZm9yIGEgVVRGLTggY29udmVydGVyLgotICogVGhlIHBpdm90LXRvLXRhcmdldCBjb252
ZXJzaW9uIHVzZXMgdGhlIGNudiBjb252ZXJ0ZXIgcGFyYW1ldGVyLgotICoKLSAqIEludGVybmFs
bHksIHRoZSBhbGdvcml0aG1pYyBjb252ZXJ0ZXIgaXMgb3BlbmVkIGFuZCBjbG9zZWQgZm9yIGVh
Y2gKLSAqIGZ1bmN0aW9uIGNhbGwsIHdoaWNoIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdXNpbmcg
dGhlIHB1YmxpYyB1Y252X29wZW4oKQotICogYnV0IHNvbWV3aGF0IGxlc3MgZWZmaWNpZW50IHRo
YW4gb25seSByZXNldHRpbmcgYW4gZXhpc3RpbmcgY29udmVydGVyCi0gKiBhbmQgdXNpbmcgdWNu
dl9jb252ZXJ0RXgoKS4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgY29udmVuaWVudCB0
aGFuIHVjbnZfY29udmVydEV4KCkgZm9yIHNpbmdsZS1zdHJpbmcKLSAqIGNvbnZlcnNpb25zLCBl
c3BlY2lhbGx5IHdoZW4gInByZWZsaWdodGluZyIgaXMgZGVzaXJlZCAocmV0dXJuaW5nIHRoZSBs
ZW5ndGgKLSAqIG9mIHRoZSBjb21wbGV0ZSBvdXRwdXQgZXZlbiBpZiBpdCBkb2VzIG5vdCBmaXQg
aW50byB0aGUgdGFyZ2V0IGJ1ZmZlcjsKLSAqIHNlZSB0aGUgVXNlciBHdWlkZSBTdHJpbmdzIGNo
YXB0ZXIpLiBTZWUgdWNudl9jb252ZXJ0KCkgZm9yIGRldGFpbHMuCi0gKgotICogQHBhcmFtIGNu
diAgICAgICAgICAgICAgIFRoZSBjb252ZXJ0ZXIgdGhhdCBpcyB1c2VkIHRvIGNvbnZlcnQKLSAq
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBVVEYtMTYgcGl2b3QgYnVmZmVyIHRv
IHRoZSB0YXJnZXQuCi0gKiBAcGFyYW0gYWxnb3JpdGhtaWNUeXBlICAgVUNvbnZlcnRlclR5cGUg
Y29uc3RhbnQgaWRlbnRpZnlpbmcgdGhlIGRlc2lyZWQgc291cmNlCi0gKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhcnNldCBhcyBhIHB1cmVseSBhbGdvcml0aG1pYyBjb252ZXJ0ZXIuCi0g
KiAgICAgICAgICAgICAgICAgICAgICAgICAgVGhvc2UgYXJlIGNvbnZlcnRlcnMgZm9yIFVuaWNv
ZGUgY2hhcnNldHMgbGlrZQotICogICAgICAgICAgICAgICAgICAgICAgICAgIFVURi04LCBCT0NV
LTEsIFNDU1UsIFVURi03LCBJTUFQLW1haWxib3gtbmFtZSwgZXRjLiwKLSAqICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcyB3ZWxsIGFzIFVTLUFTQ0lJIGFuZCBJU08tODg1OS0xLgotICogQHBh
cmFtIHRhcmdldCAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIG91dHB1dCBidWZmZXIuCi0gKiBA
cGFyYW0gdGFyZ2V0Q2FwYWNpdHkgICAgQ2FwYWNpdHkgb2YgdGhlIHRhcmdldCwgaW4gYnl0ZXMu
Ci0gKiBAcGFyYW0gc291cmNlICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgYnVmZmVy
LgotICogQHBhcmFtIHNvdXJjZUxlbmd0aCAgICAgIExlbmd0aCBvZiB0aGUgaW5wdXQgdGV4dCwg
aW4gYnl0ZXMKLSAqIEBwYXJhbSBwRXJyb3JDb2RlICAgICAgICBJQ1UgZXJyb3IgY29kZSBpbi9v
dXQgcGFyYW1ldGVyLgotICogICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgZnVsZmlsbCBV
X1NVQ0NFU1MgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgotICogQHJldHVybiBMZW5ndGggb2Yg
dGhlIGNvbXBsZXRlIG91dHB1dCB0ZXh0IGluIGJ5dGVzLCBldmVuIGlmIGl0IGV4Y2VlZHMgdGhl
IHRhcmdldENhcGFjaXR5Ci0gKiAgICAgICAgIGFuZCBhIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9S
IGlzIHNldC4KLSAqCi0gKiBAc2VlIHVjbnZfZnJvbUFsZ29yaXRobWljCi0gKiBAc2VlIHVjbnZf
Y29udmVydAotICogQHNlZSB1Y252X2NvbnZlcnRFeAotICogQHNlZSB1Y252X2Zyb21Vbmljb2Rl
Ci0gKiBAc2VlIHVjbnZfdG9Vbmljb2RlCi0gKiBAc2VlIHVjbnZfZnJvbVVDaGFycwotICogQHNl
ZSB1Y252X3RvVUNoYXJzCi0gKiBAc3RhYmxlIElDVSAyLjYKLSAqLwotVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKLXVjbnZfZnJvbUFsZ29yaXRobWljKFVDb252ZXJ0ZXIgKmNudiwKLSAgICAg
ICAgICAgICAgICAgICAgIFVDb252ZXJ0ZXJUeXBlIGFsZ29yaXRobWljVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKnRhcmdldCwgaW50MzJfdCB0YXJnZXRDYXBhY2l0eSwKLSAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNvdXJjZSwgaW50MzJfdCBzb3VyY2VMZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQotLyoqCi0g
KiBGcmVlcyB1cCBtZW1vcnkgb2NjdXBpZWQgYnkgdW51c2VkLCBjYWNoZWQgY29udmVydGVyIHNo
YXJlZCBkYXRhLgotICoKLSAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBjYWNoZWQgY29udmVydGVy
cyBzdWNjZXNzZnVsbHkgZGVsZXRlZAotICogQHNlZSB1Y252X2Nsb3NlCi0gKiBAc3RhYmxlIElD
VSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVjbnZfZmx1c2hDYWNoZSh2
b2lkKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGNvbnZlcnRl
cnMsIGFzIHBlciB0aGUgYWxpYXMgZmlsZS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBudW1iZXIgb2Yg
YXZhaWxhYmxlIGNvbnZlcnRlcnMKLSAqIEBzZWUgdWNudl9nZXRBdmFpbGFibGVOYW1lCi0gKiBA
c3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVjbnZfY291
bnRBdmFpbGFibGUodm9pZCk7Ci0KLS8qKgotICogR2V0cyB0aGUgY2Fub25pY2FsIGNvbnZlcnRl
ciBuYW1lIG9mIHRoZSBzcGVjaWZpZWQgY29udmVydGVyIGZyb20gYSBsaXN0IG9mCi0gKiBhbGwg
YXZhaWxhYmxlIGNvbnZlcnRlcnMgY29udGFpZWQgaW4gdGhlIGFsaWFzIGZpbGUuIEFsbCBjb252
ZXJ0ZXJzCi0gKiBpbiB0aGlzIGxpc3QgY2FuIGJlIG9wZW5lZC4KLSAqCi0gKiBAcGFyYW0gbiB0
aGUgaW5kZXggdG8gYSBjb252ZXJ0ZXIgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0gKGluIHRoZSBy
YW5nZSA8VFQ+WzAuLnVjbnZfY291bnRBdmFpYWJsZSgpXTwvVFQ+KQotICogQHJldHVybiBhIHBv
aW50ZXIgYSBzdHJpbmcgKGxpYnJhcnkgb3duZWQpLCBvciA8VFQ+TlVMTDwvVFQ+IGlmIHRoZSBp
bmRleCBpcyBvdXQgb2YgYm91bmRzLgotICogQHNlZSB1Y252X2NvdW50QXZhaWxhYmxlCi0gKiBA
c3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCi11Y252
X2dldEF2YWlsYWJsZU5hbWUoaW50MzJfdCBuKTsKLQotLyoqCi0gKiBSZXR1cm5zIGEgVUVudW1l
cmF0aW9uIHRvIGVudW1lcmF0ZSBhbGwgb2YgdGhlIGNhbm9uaWNhbCBjb252ZXJ0ZXIKLSAqIG5h
bWVzLCBhcyBwZXIgdGhlIGFsaWFzIGZpbGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFiaWxpdHkgdG8g
b3BlbiBlYWNoCi0gKiBjb252ZXJ0ZXIuCi0gKgotICogQHJldHVybiBBIFVFbnVtZXJhdGlvbiBv
YmplY3QgZm9yIGdldHRpbmcgYWxsIHRoZSByZWNvZ25pemVkIGNhbm9uaWNhbAotICogICBjb252
ZXJ0ZXIgbmFtZXMuCi0gKiBAc2VlIHVjbnZfZ2V0QXZhaWxhYmxlTmFtZQotICogQHNlZSB1ZW51
bV9jbG9zZQotICogQHNlZSB1ZW51bV9uZXh0Ci0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotVV9T
VEFCTEUgVUVudW1lcmF0aW9uICogVV9FWFBPUlQyCi11Y252X29wZW5BbGxOYW1lcyhVRXJyb3JD
b2RlICpwRXJyb3JDb2RlKTsKLQotLyoqCi0gKiBHaXZlcyB0aGUgbnVtYmVyIG9mIGFsaWFzZXMg
Zm9yIGEgZ2l2ZW4gY29udmVydGVyIG9yIGFsaWFzIG5hbWUuCi0gKiBJZiB0aGUgYWxpYXMgaXMg
YW1iaWd1b3VzLCB0aGVuIHRoZSBwcmVmZXJyZWQgY29udmVydGVyIGlzIHVzZWQKLSAqIGFuZCB0
aGUgc3RhdHVzIGlzIHNldCB0byBVX0FNQklHVU9VU19BTElBU19XQVJOSU5HLgotICogVGhpcyBt
ZXRob2Qgb25seSBlbnVtZXJhdGVzIHRoZSBsaXN0ZWQgZW50cmllcyBpbiB0aGUgYWxpYXMgZmls
ZS4KLSAqIEBwYXJhbSBhbGlhcyBhbGlhcyBuYW1lCi0gKiBAcGFyYW0gcEVycm9yQ29kZSBlcnJv
ciBzdGF0dXMKLSAqIEByZXR1cm4gbnVtYmVyIG9mIG5hbWVzIG9uIGFsaWFzIGxpc3QgZm9yIGdp
dmVuIGFsaWFzCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgdWludDE2X3QgVV9F
WFBPUlQyIAotdWNudl9jb3VudEFsaWFzZXMoY29uc3QgY2hhciAqYWxpYXMsIFVFcnJvckNvZGUg
KnBFcnJvckNvZGUpOwotCi0vKioKLSAqIEdpdmVzIHRoZSBuYW1lIG9mIHRoZSBhbGlhcyBhdCBn
aXZlbiBpbmRleCBvZiBhbGlhcyBsaXN0LgotICogVGhpcyBtZXRob2Qgb25seSBlbnVtZXJhdGVz
IHRoZSBsaXN0ZWQgZW50cmllcyBpbiB0aGUgYWxpYXMgZmlsZS4KLSAqIElmIHRoZSBhbGlhcyBp
cyBhbWJpZ3VvdXMsIHRoZW4gdGhlIHByZWZlcnJlZCBjb252ZXJ0ZXIgaXMgdXNlZAotICogYW5k
IHRoZSBzdGF0dXMgaXMgc2V0IHRvIFVfQU1CSUdVT1VTX0FMSUFTX1dBUk5JTkcuCi0gKiBAcGFy
YW0gYWxpYXMgYWxpYXMgbmFtZQotICogQHBhcmFtIG4gaW5kZXggaW4gYWxpYXMgbGlzdAotICog
QHBhcmFtIHBFcnJvckNvZGUgcmVzdWx0IG9mIG9wZXJhdGlvbgotICogQHJldHVybiByZXR1cm5z
IHRoZSBuYW1lIG9mIHRoZSBhbGlhcyBhdCBnaXZlbiBpbmRleAotICogQHNlZSB1Y252X2NvdW50
QWxpYXNlcwotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIGNvbnN0IGNoYXIgKiBV
X0VYUE9SVDIgCi11Y252X2dldEFsaWFzKGNvbnN0IGNoYXIgKmFsaWFzLCB1aW50MTZfdCBuLCBV
RXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQotLyoqCi0gKiBGaWxsLXVwIHRoZSBsaXN0IG9mIGFs
aWFzIG5hbWVzIGZvciB0aGUgZ2l2ZW4gYWxpYXMuCi0gKiBUaGlzIG1ldGhvZCBvbmx5IGVudW1l
cmF0ZXMgdGhlIGxpc3RlZCBlbnRyaWVzIGluIHRoZSBhbGlhcyBmaWxlLgotICogSWYgdGhlIGFs
aWFzIGlzIGFtYmlndW91cywgdGhlbiB0aGUgcHJlZmVycmVkIGNvbnZlcnRlciBpcyB1c2VkCi0g
KiBhbmQgdGhlIHN0YXR1cyBpcyBzZXQgdG8gVV9BTUJJR1VPVVNfQUxJQVNfV0FSTklORy4KLSAq
IEBwYXJhbSBhbGlhcyBhbGlhcyBuYW1lCi0gKiBAcGFyYW0gYWxpYXNlcyBmaWxsLWluIGxpc3Qs
IGFsaWFzZXMgaXMgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mCi0gKiAgICAgICAgPGNvZGU+dWNu
dl9jb3VudEFsaWFzZXMoKTwvY29kZT4gc3RyaW5nLXBvaW50ZXJzCi0gKiAgICAgICAgKDxjb2Rl
PmNvbnN0IGNoYXIgKjwvY29kZT4pIHRoYXQgd2lsbCBiZSBmaWxsZWQgaW4uCi0gKiAgICAgICAg
VGhlIHN0cmluZ3MgdGhlbXNlbHZlcyBhcmUgb3duZWQgYnkgdGhlIGxpYnJhcnkuCi0gKiBAcGFy
YW0gcEVycm9yQ29kZSByZXN1bHQgb2Ygb3BlcmF0aW9uCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAq
LwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgCi11Y252X2dldEFsaWFzZXMoY29uc3QgY2hhciAq
YWxpYXMsIGNvbnN0IGNoYXIgKiphbGlhc2VzLCBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQot
LyoqCi0gKiBSZXR1cm4gYSBuZXcgVUVudW1lcmF0aW9uIG9iamVjdCBmb3IgZW51bWVyYXRpbmcg
YWxsIHRoZQotICogYWxpYXMgbmFtZXMgZm9yIGEgZ2l2ZW4gY29udmVydGVyIHRoYXQgYXJlIHJl
Y29nbml6ZWQgYnkgYSBzdGFuZGFyZC4KLSAqIFRoaXMgbWV0aG9kIG9ubHkgZW51bWVyYXRlcyB0
aGUgbGlzdGVkIGVudHJpZXMgaW4gdGhlIGFsaWFzIGZpbGUuCi0gKiBUaGUgY29udnJ0cnMudHh0
IGZpbGUgY2FuIGJlIG1vZGlmaWVkIHRvIGNoYW5nZSB0aGUgcmVzdWx0cyBvZgotICogdGhpcyBm
dW5jdGlvbi4KLSAqIFRoZSBmaXJzdCByZXN1bHQgaW4gdGhpcyBsaXN0IGlzIHRoZSBzYW1lIHJl
c3VsdCBnaXZlbiBieQotICogPGNvZGU+dWNudl9nZXRTdGFuZGFyZE5hbWU8L2NvZGU+LCB3aGlj
aCBpcyB0aGUgZGVmYXVsdCBhbGlhcyBmb3IKLSAqIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgbmFt
ZS4gVGhlIHJldHVybmVkIG9iamVjdCBtdXN0IGJlIGNsb3NlZCB3aXRoCi0gKiA8Y29kZT51ZW51
bV9jbG9zZTwvY29kZT4gd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGUgb2JqZWN0LgotICoKLSAq
IEBwYXJhbSBjb252TmFtZSBvcmlnaW5hbCBjb252ZXJ0ZXIgbmFtZQotICogQHBhcmFtIHN0YW5k
YXJkIG5hbWUgb2YgdGhlIHN0YW5kYXJkIGdvdmVybmluZyB0aGUgbmFtZXM7IE1JTUUgYW5kIElB
TkEKLSAqICAgICAgYXJlIHN1Y2ggc3RhbmRhcmRzCi0gKiBAcGFyYW0gcEVycm9yQ29kZSBUaGUg
ZXJyb3IgY29kZQotICogQHJldHVybiBBIFVFbnVtZXJhdGlvbiBvYmplY3QgZm9yIGdldHRpbmcg
YWxsIGFsaWFzZXMgdGhhdCBhcmUgcmVjb2duaXplZAotICogICAgICBieSBhIHN0YW5kYXJkLiBJ
ZiBhbnkgb2YgdGhlIHBhcmFtZXRlcnMgYXJlIGludmFsaWQsIE5VTEwKLSAqICAgICAgaXMgcmV0
dXJuZWQuCi0gKiBAc2VlIHVjbnZfZ2V0U3RhbmRhcmROYW1lCi0gKiBAc2VlIHVlbnVtX2Nsb3Nl
Ci0gKiBAc2VlIHVlbnVtX25leHQKLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi1VX1NUQUJMRSBV
RW51bWVyYXRpb24gKiBVX0VYUE9SVDIKLXVjbnZfb3BlblN0YW5kYXJkTmFtZXMoY29uc3QgY2hh
ciAqY29udk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0YW5kYXJk
LAotICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQotLyoq
Ci0gKiBHaXZlcyB0aGUgbnVtYmVyIG9mIHN0YW5kYXJkcyBhc3NvY2lhdGVkIHRvIGNvbnZlcnRl
ciBuYW1lcy4KLSAqIEByZXR1cm4gbnVtYmVyIG9mIHN0YW5kYXJkcwotICogQHN0YWJsZSBJQ1Ug
Mi4wCi0gKi8KLVVfU1RBQkxFIHVpbnQxNl90IFVfRVhQT1JUMgotdWNudl9jb3VudFN0YW5kYXJk
cyh2b2lkKTsKLQotLyoqCi0gKiBHaXZlcyB0aGUgbmFtZSBvZiB0aGUgc3RhbmRhcmQgYXQgZ2l2
ZW4gaW5kZXggb2Ygc3RhbmRhcmQgbGlzdC4KLSAqIEBwYXJhbSBuIGluZGV4IGluIHN0YW5kYXJk
IGxpc3QKLSAqIEBwYXJhbSBwRXJyb3JDb2RlIHJlc3VsdCBvZiBvcGVyYXRpb24KLSAqIEByZXR1
cm4gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgc3RhbmRhcmQgYXQgZ2l2ZW4gaW5kZXguIE93bmVk
IGJ5IHRoZSBsaWJyYXJ5LgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIGNvbnN0
IGNoYXIgKiBVX0VYUE9SVDIKLXVjbnZfZ2V0U3RhbmRhcmQodWludDE2X3QgbiwgVUVycm9yQ29k
ZSAqcEVycm9yQ29kZSk7Ci0KLS8qKgotICogUmV0dXJucyBhIHN0YW5kYXJkIG5hbWUgZm9yIGEg
Z2l2ZW4gY29udmVydGVyIG5hbWUuCi0gKiA8cD4KLSAqIEV4YW1wbGUgYWxpYXMgdGFibGU6PGJy
PgotICogY29udiBhbGlhczEgeyBTVEFOREFSRDEgfSBhbGlhczIgeyBTVEFOREFSRDEqIH0KLSAq
IDxwPgotICogUmVzdWx0IG9mIHVjbnZfZ2V0U3RhbmRhcmROYW1lKCJjb252IiwgIlNUQU5EQVJE
MSIpIGZyb20gZXhhbXBsZQotICogYWxpYXMgdGFibGU6PGJyPgotICogPGI+ImFsaWFzMiI8L2I+
Ci0gKgotICogQHBhcmFtIG5hbWUgb3JpZ2luYWwgY29udmVydGVyIG5hbWUKLSAqIEBwYXJhbSBz
dGFuZGFyZCBuYW1lIG9mIHRoZSBzdGFuZGFyZCBnb3Zlcm5pbmcgdGhlIG5hbWVzOyBNSU1FIGFu
ZCBJQU5BCi0gKiAgICAgICAgYXJlIHN1Y2ggc3RhbmRhcmRzCi0gKiBAcGFyYW0gcEVycm9yQ29k
ZSByZXN1bHQgb2Ygb3BlcmF0aW9uCi0gKiBAcmV0dXJuIHJldHVybnMgdGhlIHN0YW5kYXJkIGNv
bnZlcnRlciBuYW1lOwotICogICAgICAgICBpZiBhIHN0YW5kYXJkIGNvbnZlcnRlciBuYW1lIGNh
bm5vdCBiZSBkZXRlcm1pbmVkLAotICogICAgICAgICB0aGVuIDxjb2RlPk5VTEw8L2NvZGU+IGlz
IHJldHVybmVkLiBPd25lZCBieSB0aGUgbGlicmFyeS4KLSAqIEBzdGFibGUgSUNVIDIuMAotICov
Ci1VX1NUQUJMRSBjb25zdCBjaGFyICogVV9FWFBPUlQyCi11Y252X2dldFN0YW5kYXJkTmFtZShj
b25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzdGFuZGFyZCwgVUVycm9yQ29kZSAqcEVycm9y
Q29kZSk7Ci0KLS8qKgotICogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgaW50ZXJuYWwg
Y2Fub25pY2FsIGNvbnZlcnRlciBuYW1lIG9mIHRoZQotICogdGFnZ2VkIGFsaWFzLiBUaGlzIGlz
IHRoZSBvcHBvc2l0ZSBvZiB1Y252X29wZW5TdGFuZGFyZE5hbWVzLCB3aGljaAotICogcmV0dXJu
cyB0aGUgdGFnZ2VkIGFsaWFzIGdpdmVuIHRoZSBjYW5vbmljYWwgbmFtZS4KLSAqIDxwPgotICog
RXhhbXBsZSBhbGlhcyB0YWJsZTo8YnI+Ci0gKiBjb252IGFsaWFzMSB7IFNUQU5EQVJEMSB9IGFs
aWFzMiB7IFNUQU5EQVJEMSogfQotICogPHA+Ci0gKiBSZXN1bHQgb2YgdWNudl9nZXRTdGFuZGFy
ZE5hbWUoImFsaWFzMSIsICJTVEFOREFSRDEiKSBmcm9tIGV4YW1wbGUKLSAqIGFsaWFzIHRhYmxl
Ojxicj4KLSAqIDxiPiJjb252IjwvYj4KLSAqCi0gKiBAcmV0dXJuIHJldHVybnMgdGhlIGNhbm9u
aWNhbCBjb252ZXJ0ZXIgbmFtZTsKLSAqICAgICAgICAgaWYgYSBzdGFuZGFyZCBvciBhbGlhcyBu
YW1lIGNhbm5vdCBiZSBkZXRlcm1pbmVkLAotICogICAgICAgICB0aGVuIDxjb2RlPk5VTEw8L2Nv
ZGU+IGlzIHJldHVybmVkLiBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzCi0gKiAgICAgICAgIG93bmVk
IGJ5IHRoZSBsaWJyYXJ5LgotICogQHNlZSB1Y252X2dldFN0YW5kYXJkTmFtZQotICogQHN0YWJs
ZSBJQ1UgMi40Ci0gKi8KLVVfU1RBQkxFIGNvbnN0IGNoYXIgKiBVX0VYUE9SVDIKLXVjbnZfZ2V0
Q2Fub25pY2FsTmFtZShjb25zdCBjaGFyICphbGlhcywgY29uc3QgY2hhciAqc3RhbmRhcmQsIFVF
cnJvckNvZGUgKnBFcnJvckNvZGUpOwotCi0vKioKLSAqIHJldHVybnMgdGhlIGN1cnJlbnQgZGVm
YXVsdCBjb252ZXJ0ZXIgbmFtZS4KLSAqCi0gKiBAcmV0dXJuIHJldHVybnMgdGhlIGN1cnJlbnQg
ZGVmYXVsdCBjb252ZXJ0ZXIgbmFtZTsKLSAqICAgICAgICAgaWYgYSBkZWZhdWx0IGNvbnZlcnRl
ciBuYW1lIGNhbm5vdCBiZSBkZXRlcm1pbmVkLAotICogICAgICAgICB0aGVuIDxjb2RlPk5VTEw8
L2NvZGU+IGlzIHJldHVybmVkLgotICogICAgICAgICBTdG9yYWdlIG93bmVkIGJ5IHRoZSBsaWJy
YXJ5Ci0gKiBAc2VlIHVjbnZfc2V0RGVmYXVsdE5hbWUKLSAqIEBzdGFibGUgSUNVIDIuMAotICov
Ci1VX1NUQUJMRSBjb25zdCBjaGFyICogVV9FWFBPUlQyCi11Y252X2dldERlZmF1bHROYW1lKHZv
aWQpOwotCi0vKioKLSAqIHNldHMgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb252ZXJ0ZXIgbmFtZS4g
Q2FsbGVyIG11c3Qgb3duIHRoZSBzdG9yYWdlIGZvciAnbmFtZScKLSAqIGFuZCBwcmVzZXJ2ZSBp
dCBpbmRlZmluaXRlbHkuIAotICogQHBhcmFtIG5hbWUgdGhlIGNvbnZlcnRlciBuYW1lIHRvIGJl
IHRoZSBkZWZhdWx0IChtdXN0IGV4aXN0KS4KLSAqIEBzZWUgdWNudl9nZXREZWZhdWx0TmFtZQot
ICogQHN5c3RlbSBTWVNURU0gQVBJCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUg
dm9pZCBVX0VYUE9SVDIKLXVjbnZfc2V0RGVmYXVsdE5hbWUoY29uc3QgY2hhciAqbmFtZSk7Ci0K
LS8qKgotICogRml4ZXMgdGhlIGJhY2tzbGFzaCBjaGFyYWN0ZXIgbWlzbWFwcGluZy4gIEZvciBl
eGFtcGxlLCBpbiBTSklTLCB0aGUgYmFja3NsYXNoIAotICogY2hhcmFjdGVyIGluIHRoZSBBU0NJ
SSBwb3J0aW9uIGlzIGFsc28gdXNlZCB0byByZXByZXNlbnQgdGhlIHllbiBjdXJyZW5jeSBzaWdu
LiAgCi0gKiBXaGVuIG1hcHBpbmcgZnJvbSBVbmljb2RlIGNoYXJhY3RlciAweDAwNUMsIGl0J3Mg
dW5jbGVhciB3aGV0aGVyIHRvIG1hcCB0aGUgCi0gKiBjaGFyYWN0ZXIgYmFjayB0byB5ZW4gb3Ig
YmFja3NsYXNoIGluIFNKSVMuICBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSB0aGUgaW5wdXQKLSAq
IGJ1ZmZlciBhbmQgcmVwbGFjZSBhbGwgdGhlIHllbiBzaWduIGNoYXJhY3RlcnMgd2l0aCBiYWNr
c2xhc2guICBUaGlzIGlzIG5lY2Vzc2FyeQotICogd2hlbiB0aGUgdXNlciB0cmllcyB0byBvcGVu
IGEgZmlsZSB3aXRoIHRoZSBpbnB1dCBidWZmZXIgb24gV2luZG93cy4KLSAqIFRoaXMgZnVuY3Rp
b24gd2lsbCB0ZXN0IHRoZSBjb252ZXJ0ZXIgdG8gc2VlIHdoZXRoZXIgc3VjaCBtYXBwaW5nIGlz
Ci0gKiByZXF1aXJlZC4gIFlvdSBjYW4gc29tZXRpbWVzIGF2b2lkIHVzaW5nIHRoaXMgZnVuY3Rp
b24gYnkgdXNpbmcgdGhlIGNvcnJlY3QgdmVyc2lvbgotICogb2YgU2hpZnQtSklTLgotICoKLSAq
IEBwYXJhbSBjbnYgVGhlIGNvbnZlcnRlciByZXByZXNlbnRpbmcgdGhlIHRhcmdldCBjb2RlcGFn
ZS4KLSAqIEBwYXJhbSBzb3VyY2UgdGhlIGlucHV0IGJ1ZmZlciB0byBiZSBmaXhlZAotICogQHBh
cmFtIHNvdXJjZUxlbiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBidWZmZXIKLSAqIEBzZWUgdWNu
dl9pc0FtYmlndW91cwotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyCi11Y252X2ZpeEZpbGVTZXBhcmF0b3IoY29uc3QgVUNvbnZlcnRlciAqY252LCBVQ2hh
ciAqc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbik7Ci0KLS8qKgotICogRGV0ZXJtaW5lcyBpZiB0
aGUgY29udmVydGVyIGNvbnRhaW5zIGFtYmlndW91cyBtYXBwaW5ncyBvZiB0aGUgc2FtZQotICog
Y2hhcmFjdGVyIG9yIG5vdC4KLSAqIEBwYXJhbSBjbnYgdGhlIGNvbnZlcnRlciB0byBiZSB0ZXN0
ZWQKLSAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29udmVydGVyIGNvbnRhaW5zIGFtYmlndW91cyBt
YXBwaW5nIG9mIHRoZSBzYW1lIAotICogY2hhcmFjdGVyLCBGQUxTRSBvdGhlcndpc2UuCi0gKiBA
c3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11Y252X2lzQW1i
aWd1b3VzKGNvbnN0IFVDb252ZXJ0ZXIgKmNudik7Ci0KLS8qKgotICogU2V0cyB0aGUgY29udmVy
dGVyIHRvIHVzZSBmYWxsYmFjayBtYXBwaW5nIG9yIG5vdC4KLSAqIEBwYXJhbSBjbnYgVGhlIGNv
bnZlcnRlciB0byBzZXQgdGhlIGZhbGxiYWNrIG1hcHBpbmcgdXNhZ2Ugb24uCi0gKiBAcGFyYW0g
dXNlc0ZhbGxiYWNrIFRSVUUgaWYgdGhlIHVzZXIgd2FudHMgdGhlIGNvbnZlcnRlciB0byB0YWtl
IGFkdmFudGFnZSBvZiB0aGUgZmFsbGJhY2sgCi0gKiBtYXBwaW5nLCBGQUxTRSBvdGhlcndpc2Uu
Ci0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgCi11Y252
X3NldEZhbGxiYWNrKFVDb252ZXJ0ZXIgKmNudiwgVUJvb2wgdXNlc0ZhbGxiYWNrKTsKLQotLyoq
Ci0gKiBEZXRlcm1pbmVzIGlmIHRoZSBjb252ZXJ0ZXIgdXNlcyBmYWxsYmFjayBtYXBwaW5ncyBv
ciBub3QuCi0gKiBAcGFyYW0gY252IFRoZSBjb252ZXJ0ZXIgdG8gYmUgdGVzdGVkCi0gKiBAcmV0
dXJuIFRSVUUgaWYgdGhlIGNvbnZlcnRlciB1c2VzIGZhbGxiYWNrLCBGQUxTRSBvdGhlcndpc2Uu
Ci0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyIAotdWNu
dl91c2VzRmFsbGJhY2soY29uc3QgVUNvbnZlcnRlciAqY252KTsKLQotLyoqCi0gKiBEZXRlY3Rz
IFVuaWNvZGUgc2lnbmF0dXJlIGJ5dGUgc2VxdWVuY2VzIGF0IHRoZSBzdGFydCBvZiB0aGUgYnl0
ZSBzdHJlYW0KLSAqIGFuZCByZXR1cm5zIHRoZSBjaGFyc2V0IG5hbWUgb2YgdGhlIGluZGljYXRl
ZCBVbmljb2RlIGNoYXJzZXQuCi0gKiBOVUxMIGlzIHJldHVybmVkIHdoZW4gbm8gVW5pY29kZSBz
aWduYXR1cmUgaXMgcmVjb2duaXplZC4KLSAqIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHNp
Z25hdHVyZSBpcyBvdXRwdXQgYXMgd2VsbC4KLSAqCi0gKiBUaGUgY2FsbGVyIGNhbiB1Y252X29w
ZW4oKSBhIGNvbnZlcnRlciB1c2luZyB0aGUgY2hhcnNldCBuYW1lLgotICogVGhlIGZpcnN0IGNv
ZGUgdW5pdCAoVUNoYXIpIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzdHJlYW0gd2lsbCBiZSBVK0ZF
RkYKLSAqICh0aGUgVW5pY29kZSBCT00vc2lnbmF0dXJlIGNoYXJhY3RlcikgYW5kIGNhbiB1c3Vh
bGx5IGJlIGlnbm9yZWQuCi0gKgotICogRm9yIG1vc3QgVW5pY29kZSBjaGFyc2V0cyBpdCBpcyBh
bHNvIHBvc3NpYmxlIHRvIGlnbm9yZSB0aGUgaW5kaWNhdGVkCi0gKiBudW1iZXIgb2YgaW5pdGlh
bCBzdHJlYW0gYnl0ZXMgYW5kIHN0YXJ0IGNvbnZlcnRpbmcgYWZ0ZXIgdGhlbS4KLSAqIEhvd2V2
ZXIsIHRoZXJlIGFyZSBzdGF0ZWZ1bCBVbmljb2RlIGNoYXJzZXRzIChVVEYtNyBhbmQgQk9DVS0x
KSBmb3Igd2hpY2gKLSAqIHRoaXMgd2lsbCBub3Qgd29yay4gVGhlcmVmb3JlLCBpdCBpcyBiZXN0
IHRvIGlnbm9yZSB0aGUgZmlyc3Qgb3V0cHV0IFVDaGFyCi0gKiBpbnN0ZWFkIG9mIHRoZSBpbnB1
dCBzaWduYXR1cmUgYnl0ZXMuCi0gKiA8cD4KLSAqIFVzYWdlOgotICogQGNvZGUgICAgIAotICog
ICAgICBVRXJyb3JDb2RlIGVyciA9IFVfWkVST19FUlJPUjsKLSAqICAgICAgY2hhciBpbnB1dFtd
ID0geyAnXHhFRicsJ1x4QkInLCAnXHhCRicsJ1x4NDEnLCdceDQyJywnXHg0MycgfTsKLSAqICAg
ICAgaW50MzJfdCBzaWduYXR1cmVMZW5ndGggPSAwOwotICogICAgICBjaGFyICplbmNvZGluZyA9
IHVjbnZfZGV0ZWN0VW5pY29kZVNpZ25hdHVyZXMoaW5wdXQsc2l6ZW9mKGlucHV0KSwmc2lnbmF0
dXJlTGVuZ3RoLCZlcnIpOwotICogICAgICBVQ29udmVydGVyICpjb252ID0gTlVMTDsKLSAqICAg
ICAgVUNoYXIgb3V0cHV0WzEwMF07Ci0gKiAgICAgIFVDaGFyICp0YXJnZXQgPSBvdXRwdXQsICpv
dXQ7Ci0gKiAgICAgIGNoYXIgKnNvdXJjZSA9IGlucHV0OwotICogICAgICBpZihlbmNvZGluZyE9
TlVMTCAmJiBVX1NVQ0NFU1MoZXJyKSl7Ci0gKiAgICAgICAgICAvLyBzaG91bGQgc2lnbmF0dXJl
IGJlIGRpc2NhcmRlZCA/Ci0gKiAgICAgICAgICBjb252ID0gdWNudl9vcGVuKGVuY29kaW5nLCAm
ZXJyKTsKLSAqICAgICAgICAgIC8vIGRvIHRoZSBjb252ZXJzaW9uCi0gKiAgICAgICAgICB1Y252
X3RvVW5pY29kZShjb252LAotICogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LCBvdXRw
dXQgKyBzaXplb2Yob3V0cHV0KS9VX1NJWkVPRl9VQ0hBUiwKLSAqICAgICAgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZSwgaW5wdXQgKyBzaXplb2YoaW5wdXQpLAotICogICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwgVFJVRSwgJmVycik7Ci0gKiAgICAgICAgICBvdXQgPSBvdXRwdXQ7Ci0g
KiAgICAgICAgICBpZiAoZGlzY2FyZFNpZ25hdHVyZSl7Ci0gKiAgICAgICAgICAgICAgKytvdXQ7
IC8vIGlnbm9yZSBpbml0aWFsIFUrRkVGRgotICogICAgICAgICAgfQotICogICAgICAgICAgd2hp
bGUob3V0ICE9IHRhcmdldCkgewotICogICAgICAgICAgICAgIHByaW50ZigiJTA0eCAiLCAqb3V0
KyspOwotICogICAgICAgICAgfQotICogICAgICAgICAgcHV0cygiIik7Ci0gKiAgICAgIH0KLSAq
ICAgICAKLSAqIEBlbmRjb2RlCi0gKgotICogQHBhcmFtIHNvdXJjZSAgICAgICAgICAgIFRoZSBz
b3VyY2Ugc3RyaW5nIGluIHdoaWNoIHRoZSBzaWduYXR1cmUgc2hvdWxkIGJlIGRldGVjdGVkLgot
ICogQHBhcmFtIHNvdXJjZUxlbmd0aCAgICAgIExlbmd0aCBvZiB0aGUgaW5wdXQgc3RyaW5nLCBv
ciAtMSBpZiB0ZXJtaW5hdGVkIHdpdGggYSBOVUwgYnl0ZS4KLSAqIEBwYXJhbSBzaWduYXR1cmVM
ZW5ndGggICBBIHBvaW50ZXIgdG8gaW50MzJfdCB0byByZWNlaXZlIHRoZSBudW1iZXIgb2YgYnl0
ZXMgdGhhdCBtYWtlIHVwIHRoZSBzaWduYXR1cmUgCi0gKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2YgdGhlIGRldGVjdGVkIFVURi4gMCBpZiBub3QgZGV0ZWN0ZWQuCi0gKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2FuIGJlIGEgTlVMTCBwb2ludGVyLgotICogQHBhcmFtIHBFcnJvckNv
ZGUgICAgICAgIEEgcG9pbnRlciB0byByZWNlaXZlIGluZm9ybWF0aW9uIGFib3V0IGFueSBlcnJv
cnMgdGhhdCBtYXkgb2NjdXIgZHVyaW5nIGRldGVjdGlvbi4KLSAqICAgICAgICAgICAgICAgICAg
ICAgICAgICBNdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLCB3
aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUKLSAqICAgICAgICAgICAgICAgICAgICAg
ICAgICBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCi0gKiBAcmV0dXJuIFRoZSBuYW1lIG9mIHRo
ZSBlbmNvZGluZyBkZXRlY3RlZC4gTlVMTCBpZiBlbmNvZGluZyBpcyBub3QgZGV0ZWN0ZWQuIAot
ICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLVVfU1RBQkxFIGNvbnN0IGNoYXIqIFVfRVhQT1JUMgot
dWNudl9kZXRlY3RVbmljb2RlU2lnbmF0dXJlKGNvbnN0IGNoYXIqIHNvdXJjZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNvdXJjZUxlbmd0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90ICpzaWduYXR1cmVMZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7Ci0KLSNlbmRpZgotCi0jZW5kaWYK
LS8qX1VDTlYqLwpJbmRleDogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWNudl9lcnIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91Y252X2Vyci5oCShyZXZp
c2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VjbnZfZXJyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNDU2ICswLDAgQEAKLS8qCi0qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qICAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKLSog
ICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKLSAqCi0gKgotICogICB1Y252X2Vyci5oOgotICovCi0KLS8qKgotICogXGZpbGUKLSAq
IFxicmllZiBDIFVDb252ZXJ0ZXIgcHJlZGVmaW5lZCBlcnJvciBjYWxsYmFja3MKLSAqCi0gKiAg
PGgyPkVycm9yIEJlaGF2aW91ciBGdW5jdGlvbnM8L2gyPgotICogIERlZmluZXMgc29tZSBlcnJv
ciBiZWhhdmlvdXIgZnVuY3Rpb25zIGNhbGxlZCBieSB1Y252X3tmcm9tLHRvfVVuaWNvZGUKLSAq
ICBUaGVzZSBhcmUgcHJvdmlkZWQgYXMgcGFydCBvZiBJQ1UgYW5kIG1hbnkgYXJlIHN0YWJsZSwg
YnV0IHRoZXkKLSAqICBjYW4gYWxzbyBiZSBjb25zaWRlcmVkIG9ubHkgYXMgYW4gZXhhbXBsZSBv
ZiB3aGF0IGNhbiBiZSBkb25lIHdpdGgKLSAqICBjYWxsYmFja3MuICBZb3UgbWF5IG9mIGNvdXJz
ZSB3cml0ZSB5b3VyIG93bi4KLSAqCi0gKiAgSWYgeW91IHdhbnQgdG8gd3JpdGUgeW91ciBvd24s
IHlvdSBtYXkgYWxzbyBmaW5kIHRoZSBmdW5jdGlvbnMgZnJvbQotICogIHVjbnZfY2IuaCB1c2Vm
dWwgd2hlbiB3cml0aW5nIHlvdXIgb3duIGNhbGxiYWNrcy4KLSAqCi0gKiAgVGhlc2UgZnVuY3Rp
b25zLCBhbHRob3VnaCBwdWJsaWMsIHNob3VsZCBORVZFUiBiZSBjYWxsZWQgZGlyZWN0bHkuCi0g
KiAgVGhleSBzaG91bGQgYmUgdXNlZCBhcyBwYXJhbWV0ZXJzIHRvIHRoZSB1Y252X3NldEZyb21V
Q2FsbGJhY2sKLSAqICBhbmQgdWNudl9zZXRUb1VDYWxsYmFjayBmdW5jdGlvbnMsIHRvIHNldCB0
aGUgYmVoYXZpb3VyIG9mIGEgY29udmVydGVyCi0gKiAgd2hlbiBpdCBlbmNvdW50ZXJzIElMTEVH
QUwvVU5NQVBQRUQvSU5WQUxJRCBzZXF1ZW5jZXMuCi0gKgotICogIHVzYWdlIGV4YW1wbGU6ICAn
U1RPUCcgZG9lc24ndCBuZWVkIGFueSBjb250ZXh0LCBidXQgbmV3Q29udGV4dAotICogICAgY291
bGQgYmUgc2V0IHRvIHNvbWV0aGluZyBvdGhlciB0aGFuICdOVUxMJyBpZiBuZWVkZWQuIFRoZSBh
dmFpbGFibGUKLSAqICAgIGNvbnRleHRzIGluIHRoaXMgaGVhZGVyIGNhbiBtb2RpZnkgdGhlIGRl
ZmF1bHQgYmVoYXZpb3Igb2YgdGhlIGNhbGxiYWNrLgotICoKLSAqICBcY29kZQotICogIFVFcnJv
ckNvZGUgZXJyID0gVV9aRVJPX0VSUk9SOwotICogIFVDb252ZXJ0ZXIgKm15Q29udmVydGVyID0g
dWNudl9vcGVuKCJpYm0tOTQ5IiwgJmVycik7Ci0gKiAgY29uc3Qgdm9pZCAqb2xkQ29udGV4dDsK
LSAqICBVQ29udmVydGVyRnJvbVVDYWxsYmFjayBvbGRBY3Rpb247Ci0gKgotICoKLSAqICBpZiAo
VV9TVUNDRVNTKGVycikpCi0gKiAgewotICogICAgICB1Y252X3NldEZyb21VQ2FsbEJhY2sobXlD
b252ZXJ0ZXIsCi0gKiAgICAgICAgICAgICAgICAgICAgICAgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tf
U1RPUCwKLSAqICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICogICAgICAgICAgICAgICAg
ICAgICAgICZvbGRBY3Rpb24sCi0gKiAgICAgICAgICAgICAgICAgICAgICAgJm9sZENvbnRleHQs
Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgJnN0YXR1cyk7Ci0gKiAgfQotICogIFxlbmRjb2Rl
Ci0gKgotICogIFRoZSBjb2RlIGFib3ZlIHRlbGxzICJteUNvbnZlcnRlciIgdG8gc3RvcCB3aGVu
IGl0IGVuY291bnRlcnMgYW4KLSAqICBJTExFR0FML1RSVU5DQVRFRC9JTlZBTElEIHNlcXVlbmNl
cyB3aGVuIGl0IGlzIHVzZWQgdG8gY29udmVydCBmcm9tCi0gKiAgVW5pY29kZSAtPiBDb2RlcGFn
ZS4gVGhlIGJlaGF2aW9yIGZyb20gQ29kZXBhZ2UgdG8gVW5pY29kZSBpcyBub3QgY2hhbmdlZCwK
LSAqICBhbmQgdWNudl9zZXRUb1VDYWxsQmFjayB3b3VsZCBuZWVkIHRvIGJlIGNhbGxlZCBpbiBv
cmRlciB0byBjaGFuZ2UKLSAqICB0aGF0IGJlaGF2aW9yIHRvby4KLSAqCi0gKiAgSGVyZSBpcyBh
biBleGFtcGxlIHdpdGggYSBjb250ZXh0OgotICoKLSAqICBcY29kZQotICogIFVFcnJvckNvZGUg
ZXJyID0gVV9aRVJPX0VSUk9SOwotICogIFVDb252ZXJ0ZXIgKm15Q29udmVydGVyID0gdWNudl9v
cGVuKCJpYm0tOTQ5IiwgJmVycik7Ci0gKiAgY29uc3Qgdm9pZCAqb2xkQ29udGV4dDsKLSAqICBV
Q29udmVydGVyRnJvbVVDYWxsYmFjayBvbGRBY3Rpb247Ci0gKgotICoKLSAqICBpZiAoVV9TVUND
RVNTKGVycikpCi0gKiAgewotICogICAgICB1Y252X3NldFRvVUNhbGxCYWNrKG15Q29udmVydGVy
LAotICogICAgICAgICAgICAgICAgICAgICAgIFVDTlZfVE9fVV9DQUxMQkFDS19TVUJTVElUVVRF
LAotICogICAgICAgICAgICAgICAgICAgICAgIFVDTlZfU1VCX1NUT1BfT05fSUxMRUdBTCwKLSAq
ICAgICAgICAgICAgICAgICAgICAgICAmb2xkQWN0aW9uLAotICogICAgICAgICAgICAgICAgICAg
ICAgICZvbGRDb250ZXh0LAotICogICAgICAgICAgICAgICAgICAgICAgICZzdGF0dXMpOwotICog
IH0KLSAqICBcZW5kY29kZQotICoKLSAqICBUaGUgY29kZSBhYm92ZSB0ZWxscyAibXlDb252ZXJ0
ZXIiIHRvIHN0b3Agd2hlbiBpdCBlbmNvdW50ZXJzIGFuCi0gKiAgSUxMRUdBTC9UUlVOQ0FURUQv
SU5WQUxJRCBzZXF1ZW5jZXMgd2hlbiBpdCBpcyB1c2VkIHRvIGNvbnZlcnQgZnJvbQotICogIENv
ZGVwYWdlIC0+IFVuaWNvZGUuIEFueSB1bm1hcHBlZCBhbmQgbGVnYWwgY2hhcmFjdGVycyB3aWxs
IGJlCi0gKiAgc3Vic3RpdHV0ZWQgdG8gYmUgdGhlIGRlZmF1bHQgc3Vic3RpdHV0aW9uIGNoYXJh
Y3Rlci4KLSAqLwotCi0jaWZuZGVmIFVDTlZfRVJSX0gKLSNkZWZpbmUgVUNOVl9FUlJfSAotCi0j
aW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKLQotI2lmICFVQ09ORklHX05PX0NPTlZFUlNJT04K
LQotLyoqIEZvcndhcmQgZGVjbGFyaW5nIHRoZSBVQ29udmVydGVyIHN0cnVjdHVyZS4gQHN0YWJs
ZSBJQ1UgMi4wICovCi1zdHJ1Y3QgVUNvbnZlcnRlcjsKLQotLyoqIEBzdGFibGUgSUNVIDIuMCAq
LwotdHlwZWRlZiBzdHJ1Y3QgVUNvbnZlcnRlciBVQ29udmVydGVyOwotCi0vKioKLSAqIEZST01f
VSwgVE9fVSBjb250ZXh0IG9wdGlvbnMgZm9yIHN1YiBjYWxsYmFjawotICogQHN0YWJsZSBJQ1Ug
Mi4wCi0gKi8KLSNkZWZpbmUgVUNOVl9TVUJfU1RPUF9PTl9JTExFR0FMICJpIgotCi0vKioKLSAq
IEZST01fVSwgVE9fVSBjb250ZXh0IG9wdGlvbnMgZm9yIHNraXAgY2FsbGJhY2sKLSAqIEBzdGFi
bGUgSUNVIDIuMAotICovCi0jZGVmaW5lIFVDTlZfU0tJUF9TVE9QX09OX0lMTEVHQUwgImkiCi0K
LS8qKgotICogRlJPTV9VX0NBTExCQUNLX0VTQ0FQRSBjb250ZXh0IG9wdGlvbiB0byBlc2NhcGUg
dGhlIGNvZGUgdW5pdCBhY2NvcmRpbmcgdG8gSUNVICglVVhYWFgpIAotICogQHN0YWJsZSBJQ1Ug
Mi4wCi0gKi8KLSNkZWZpbmUgVUNOVl9FU0NBUEVfSUNVICAgICAgIE5VTEwKLS8qKgotICogRlJP
TV9VX0NBTExCQUNLX0VTQ0FQRSBjb250ZXh0IG9wdGlvbiB0byBlc2NhcGUgdGhlIGNvZGUgdW5p
dCBhY2NvcmRpbmcgdG8gSkFWQSAoXFx1WFhYWCkKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi0j
ZGVmaW5lIFVDTlZfRVNDQVBFX0pBVkEgICAgICAiSiIKLS8qKgotICogRlJPTV9VX0NBTExCQUNL
X0VTQ0FQRSBjb250ZXh0IG9wdGlvbiB0byBlc2NhcGUgdGhlIGNvZGUgdW5pdCBhY2NvcmRpbmcg
dG8gQyAoXFx1WFhYWCBcXFVYWFhYWFhYWCkKLSAqIFRPX1VfQ0FMTEJBQ0tfRVNDQVBFIG9wdGlv
biB0byBlc2NhcGUgdGhlIGNoYXJhY3RlciB2YWx1ZSBhY2NvZGluZyB0byBDIChcXHhYWFhYKQot
ICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLSNkZWZpbmUgVUNOVl9FU0NBUEVfQyAgICAgICAgICJD
IgotLyoqCi0gKiBGUk9NX1VfQ0FMTEJBQ0tfRVNDQVBFIGNvbnRleHQgb3B0aW9uIHRvIGVzY2Fw
ZSB0aGUgY29kZSB1bml0IGFjY29yZGluZyB0byBYTUwgRGVjaW1hbCBlc2NhcGUgKCZhbXA7I0RE
REQ7KQotICogVE9fVV9DQUxMQkFDS19FU0NBUEUgY29udGV4dCBvcHRpb24gdG8gZXNjYXBlIHRo
ZSBjaGFyYWN0ZXIgdmFsdWUgYWNjb2RpbmcgdG8gWE1MIERlY2ltYWwgZXNjYXBlICgmYW1wOyNE
REREOykKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi0jZGVmaW5lIFVDTlZfRVNDQVBFX1hNTF9E
RUMgICAiRCIKLS8qKgotICogRlJPTV9VX0NBTExCQUNLX0VTQ0FQRSBjb250ZXh0IG9wdGlvbiB0
byBlc2NhcGUgdGhlIGNvZGUgdW5pdCBhY2NvcmRpbmcgdG8gWE1MIEhleCBlc2NhcGUgKCZhbXA7
I3hYWFhYOykKLSAqIFRPX1VfQ0FMTEJBQ0tfRVNDQVBFIGNvbnRleHQgb3B0aW9uIHRvIGVzY2Fw
ZSB0aGUgY2hhcmFjdGVyIHZhbHVlIGFjY29kaW5nIHRvIFhNTCBIZXggZXNjYXBlICgmYW1wOyN4
WFhYWDspCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotI2RlZmluZSBVQ05WX0VTQ0FQRV9YTUxf
SEVYICAgIlgiCi0vKioKLSAqIEZST01fVV9DQUxMQkFDS19FU0NBUEUgY29udGV4dCBvcHRpb24g
dG8gZXNjYXBlIHRlaCBjb2RlIHVuaXQgYWNjb3JkaW5nIHRvIFVuaWNvZGUgKFUrWFhYWFgpCi0g
KiBAc3RhYmxlIElDVSAyLjAKLSAqLwotI2RlZmluZSBVQ05WX0VTQ0FQRV9VTklDT0RFICAgIlUi
Ci0KLS8qKiAKLSAqIFRoZSBwcm9jZXNzIGNvbmRpdGlvbiBjb2RlIHRvIGJlIHVzZWQgd2l0aCB0
aGUgY2FsbGJhY2tzLiAgCi0gKiBDb2RlcyB3aGljaCBhcmUgZ3JlYXRlciB0aGFuIFVDTlZfSVJS
RUdVTEFSIHNob3VsZCBiZSAKLSAqIHBhc3NlZCBvbiB0byBhbnkgY2hhaW5lZCBjYWxsYmFja3Mu
Ci0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotdHlwZWRlZiBlbnVtIHsKLSAgICBVQ05WX1VOQVNT
SUdORUQgPSAwLCAgLyoqPCBUaGUgY29kZSBwb2ludCBpcyB1bmFzc2lnbmVkLgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaGUgZXJyb3IgY29kZSBVX0lOVkFMSURfQ0hBUl9GT1VORCB3
aWxsIGJlIHNldC4gKi8KLSAgICBVQ05WX0lMTEVHQUwgPSAxLCAgICAgLyoqPCBUaGUgY29kZSBw
b2ludCBpcyBpbGxlZ2FsLiBGb3IgZXhhbXBsZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxceDgxXFx4MkUgaXMgaWxsZWdhbCBpbiBTSklTIGJlY2F1c2UgXFx4MkUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXMgbm90IGEgdmFsaWQgdHJhaWwgYnl0ZSBmb3IgdGhlIFxc
eDgxIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWFkIGJ5dGUuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsc28sIHN0YXJ0aW5nIHdpdGggVW5pY29kZSAzLjAuMSwgbm9u
LXNob3J0ZXN0IGJ5dGUgc2VxdWVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFVURi04IChsaWtlIFxceEMxXFx4QTEgaW5zdGVhZCBvZiBcXHg2MSBmb3IgVSswMDYxKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgYWxzbyBpbGxlZ2FsLCBub3QganVzdCBpcnJl
Z3VsYXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlcnJvciBjb2RlIFVfSUxM
RUdBTF9DSEFSX0ZPVU5EIHdpbGwgYmUgc2V0LiAqLwotICAgIFVDTlZfSVJSRUdVTEFSID0gMiwg
ICAvKio8IFRoZSBjb2RlcG9pbnQgaXMgbm90IGEgcmVndWxhciBzZXF1ZW5jZSBpbiAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGVuY29kaW5nLiBGb3IgZXhhbXBsZSwgXFx4RURc
XHhBMFxceDgwLi5cXHhFRFxceEJGXFx4QkYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJlIGlycmVndWxhciBVVEYtOCBieXRlIHNlcXVlbmNlcyBmb3Igc2luZ2xlIHN1cnJvZ2F0ZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlIHBvaW50cy4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGhlIGVycm9yIGNvZGUgVV9JTlZBTElEX0NIQVJfRk9VTkQgd2lsbCBi
ZSBzZXQuICovCi0gICAgVUNOVl9SRVNFVCA9IDMsICAgICAgIC8qKjwgVGhlIGNhbGxiYWNrIGlz
IGNhbGxlZCB3aXRoIHRoaXMgcmVhc29uIHdoZW4gYQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncmVzZXQnIGhhcyBvY2N1cmVkLiBDYWxsYmFjayBzaG91bGQgcmVzZXQgYWxsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLiAqLwotICAgIFVDTlZfQ0xPU0UgPSA0LCAg
ICAgICAgLyoqPCBDYWxsZWQgd2hlbiB0aGUgY29udmVydGVyIGlzIGNsb3NlZC4gVGhlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrIHNob3VsZCByZWxlYXNlIGFueSBhbGxv
Y2F0ZWQgbWVtb3J5LiovCi0gICAgVUNOVl9DTE9ORSA9IDUgICAgICAgICAvKio8IENhbGxlZCB3
aGVuIHVjbnZfc2FmZUNsb25lKCkgaXMgY2FsbGVkIG9uIHRoZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udmVydGVyLiB0aGUgcG9pbnRlciBhdmFpbGFibGUgYXMgdGhlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCcgaXMgYW4gYWxpYXMgdG8gdGhlIG9y
aWdpbmFsIGNvbnZlcnRlcnMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
IHBvaW50ZXIuIElmIHRoZSBjb250ZXh0IG11c3QgYmUgb3duZWQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ5IHRoZSBuZXcgY29udmVydGVyLCB0aGUgY2FsbGJhY2sgbXVzdCBjbG9u
ZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXRhIGFuZCBjYWxsIHVjbnZf
c2V0RnJvbVVDYWxsYmFjayAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciBzZXRU
b1VDYWxsYmFjaykgd2l0aCB0aGUgY29ycmVjdCBwb2ludGVyLgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQHN0YWJsZSBJQ1UgMi4yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAq
LwotfSBVQ29udmVydGVyQ2FsbGJhY2tSZWFzb247Ci0KLQotLyoqCi0gKiBUaGUgc3RydWN0dXJl
IGZvciB0aGUgZnJvbVVuaWNvZGUgY2FsbGJhY2sgZnVuY3Rpb24gcGFyYW1ldGVyLgotICogQHN0
YWJsZSBJQ1UgMi4wCi0gKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgICB1aW50MTZfdCBzaXplOyAg
ICAgICAgICAgICAgLyoqPCBUaGUgc2l6ZSBvZiB0aGlzIHN0cnVjdC4gQHN0YWJsZSBJQ1UgMi4w
ICovCi0gICAgVUJvb2wgZmx1c2g7ICAgICAgICAgICAgICAgIC8qKjwgVGhlIGludGVybmFsIHN0
YXRlIG9mIGNvbnZlcnRlciB3aWxsIGJlIHJlc2V0IGFuZCBkYXRhIGZsdXNoZWQgaWYgc2V0IHRv
IFRSVUUuIEBzdGFibGUgSUNVIDIuMCAgICAqLwotICAgIFVDb252ZXJ0ZXIgKmNvbnZlcnRlcjsg
ICAgICAvKio8IFBvaW50ZXIgdG8gdGhlIGNvbnZlcnRlciB0aGF0IGlzIG9wZW5lZCBhbmQgdG8g
d2hpY2ggdGhpcyBzdHJ1Y3QgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LiBAc3RhYmxlIElDVSAy
LjAgICovCi0gICAgY29uc3QgVUNoYXIgKnNvdXJjZTsgICAgICAgIC8qKjwgUG9pbnRlciB0byB0
aGUgc291cmNlIHNvdXJjZSBidWZmZXIuIEBzdGFibGUgSUNVIDIuMCAgICAqLwotICAgIGNvbnN0
IFVDaGFyICpzb3VyY2VMaW1pdDsgICAvKio8IFBvaW50ZXIgdG8gdGhlIGxpbWl0IChlbmQgKyAx
KSBvZiBzb3VyY2UgYnVmZmVyLiBAc3RhYmxlIElDVSAyLjAgICAgKi8KLSAgICBjaGFyICp0YXJn
ZXQ7ICAgICAgICAgICAgICAgLyoqPCBQb2ludGVyIHRvIHRoZSB0YXJnZXQgYnVmZmVyLiBAc3Rh
YmxlIElDVSAyLjAgICAgKi8KLSAgICBjb25zdCBjaGFyICp0YXJnZXRMaW1pdDsgICAgLyoqPCBQ
b2ludGVyIHRvIHRoZSBsaW1pdCAoZW5kICsgMSkgb2YgdGFyZ2V0IGJ1ZmZlci4gQHN0YWJsZSBJ
Q1UgMi4wICAgICAqLwotICAgIGludDMyX3QgKm9mZnNldHM7ICAgICAgICAgICAvKio8IFBvaW50
ZXIgdG8gdGhlIGJ1ZmZlciB0aGF0IHJlY2lldmVzIHRoZSBvZmZzZXRzLiAqb2Zmc2V0ID0gYmxh
aCA7IG9mZnNldCsrOy4gQHN0YWJsZSBJQ1UgMi4wICAqLwotfSBVQ29udmVydGVyRnJvbVVuaWNv
ZGVBcmdzOwotCi0KLS8qKgotICogVGhlIHN0cnVjdHVyZSBmb3IgdGhlIHRvVW5pY29kZSBjYWxs
YmFjayBmdW5jdGlvbiBwYXJhbWV0ZXIuCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotdHlwZWRl
ZiBzdHJ1Y3QgewotICAgIHVpbnQxNl90IHNpemU7ICAgICAgICAgICAgICAvKio8IFRoZSBzaXpl
IG9mIHRoaXMgc3RydWN0ICAgQHN0YWJsZSBJQ1UgMi4wICovCi0gICAgVUJvb2wgZmx1c2g7ICAg
ICAgICAgICAgICAgIC8qKjwgVGhlIGludGVybmFsIHN0YXRlIG9mIGNvbnZlcnRlciB3aWxsIGJl
IHJlc2V0IGFuZCBkYXRhIGZsdXNoZWQgaWYgc2V0IHRvIFRSVUUuIEBzdGFibGUgSUNVIDIuMCAg
ICovCi0gICAgVUNvbnZlcnRlciAqY29udmVydGVyOyAgICAgIC8qKjwgUG9pbnRlciB0byB0aGUg
Y29udmVydGVyIHRoYXQgaXMgb3BlbmVkIGFuZCB0byB3aGljaCB0aGlzIHN0cnVjdCBpcyBwYXNz
ZWQgYXMgYW4gYXJndW1lbnQuIEBzdGFibGUgSUNVIDIuMCAqLwotICAgIGNvbnN0IGNoYXIgKnNv
dXJjZTsgICAgICAgICAvKio8IFBvaW50ZXIgdG8gdGhlIHNvdXJjZSBzb3VyY2UgYnVmZmVyLiBA
c3RhYmxlIElDVSAyLjAgICAgKi8KLSAgICBjb25zdCBjaGFyICpzb3VyY2VMaW1pdDsgICAgLyoq
PCBQb2ludGVyIHRvIHRoZSBsaW1pdCAoZW5kICsgMSkgb2Ygc291cmNlIGJ1ZmZlci4gQHN0YWJs
ZSBJQ1UgMi4wICAgICovCi0gICAgVUNoYXIgKnRhcmdldDsgICAgICAgICAgICAgIC8qKjwgUG9p
bnRlciB0byB0aGUgdGFyZ2V0IGJ1ZmZlci4gQHN0YWJsZSBJQ1UgMi4wICAgICovCi0gICAgY29u
c3QgVUNoYXIgKnRhcmdldExpbWl0OyAgIC8qKjwgUG9pbnRlciB0byB0aGUgbGltaXQgKGVuZCAr
IDEpIG9mIHRhcmdldCBidWZmZXIuIEBzdGFibGUgSUNVIDIuMCAgICAgKi8KLSAgICBpbnQzMl90
ICpvZmZzZXRzOyAgICAgICAgICAgLyoqPCBQb2ludGVyIHRvIHRoZSBidWZmZXIgdGhhdCByZWNp
ZXZlcyB0aGUgb2Zmc2V0cy4gKm9mZnNldCA9IGJsYWggOyBvZmZzZXQrKzsuIEBzdGFibGUgSUNV
IDIuMCAgKi8KLX0gVUNvbnZlcnRlclRvVW5pY29kZUFyZ3M7Ci0KLQotLyoqCi0gKiBETyBOT1Qg
Q0FMTCBUSElTIEZVTkNUSU9OIERJUkVDVExZIQotICogVGhpcyBGcm9tIFVuaWNvZGUgY2FsbGJh
Y2sgU1RPUFMgYXQgdGhlIElMTEVHQUxfU0VRVUVOQ0UsCi0gKiByZXR1cm5pbmcgdGhlIGVycm9y
IGNvZGUgYmFjayB0byB0aGUgY2FsbGVyIGltbWVkaWF0ZWx5LgotICoKLSAqIEBwYXJhbSBjb250
ZXh0IFBvaW50ZXIgdG8gdGhlIGNhbGxiYWNrJ3MgcHJpdmF0ZSBkYXRhCi0gKiBAcGFyYW0gZnJv
bVVBcmdzIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjb252ZXJzaW9uIGluIHByb2dyZXNzCi0gKiBA
cGFyYW0gY29kZVVuaXRzIFBvaW50cyB0byAnbGVuZ3RoJyBVQ2hhcnMgb2YgdGhlIGNvbmNlcm5l
ZCBVbmljb2RlIHNlcXVlbmNlCi0gKiBAcGFyYW0gbGVuZ3RoIFNpemUgKGluIGJ5dGVzKSBvZiB0
aGUgY29uY2VybmVkIGNvZGVwYWdlIHNlcXVlbmNlCi0gKiBAcGFyYW0gY29kZVBvaW50IFNpbmds
ZSBVQ2hhcjMyIChVVEYtMzIpIGNvbnRhaW5pbmcgdGhlIGNvbmNlcmVuZCBVbmljb2RlIGNvZGVw
b2ludC4KLSAqIEBwYXJhbSByZWFzb24gRGVmaW5lcyB0aGUgcmVhc29uIHRoZSBjYWxsYmFjayB3
YXMgaW52b2tlZAotICogQHBhcmFtIGVyciBUaGlzIHNob3VsZCBhbHdheXMgYmUgc2V0IHRvIGEg
ZmFpbHVyZSBzdGF0dXMgcHJpb3IgdG8gY2FsbGluZy4KLSAqIEBzdGFibGUgSUNVIDIuMAotICov
Ci1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiBVQ05WX0ZST01fVV9DQUxMQkFDS19TVE9QICgKLSAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICBV
Q29udmVydGVyRnJvbVVuaWNvZGVBcmdzICpmcm9tVUFyZ3MsCi0gICAgICAgICAgICAgICAgICBj
b25zdCBVQ2hhciogY29kZVVuaXRzLAotICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNvZGVQb2ludCwKLSAgICAgICAgICAgICAgICAg
IFVDb252ZXJ0ZXJDYWxsYmFja1JlYXNvbiByZWFzb24sCi0gICAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlICogZXJyKTsKLQotCi0KLS8qKgotICogRE8gTk9UIENBTEwgVEhJUyBGVU5DVElPTiBE
SVJFQ1RMWSEKLSAqIFRoaXMgVG8gVW5pY29kZSBjYWxsYmFjayBTVE9QUyBhdCB0aGUgSUxMRUdB
TF9TRVFVRU5DRSwKLSAqIHJldHVybmluZyB0aGUgZXJyb3IgY29kZSBiYWNrIHRvIHRoZSBjYWxs
ZXIgaW1tZWRpYXRlbHkuCi0gKgotICogQHBhcmFtIGNvbnRleHQgUG9pbnRlciB0byB0aGUgY2Fs
bGJhY2sncyBwcml2YXRlIGRhdGEKLSAqIEBwYXJhbSB0b1VBcmdzIEluZm9ybWF0aW9uIGFib3V0
IHRoZSBjb252ZXJzaW9uIGluIHByb2dyZXNzCi0gKiBAcGFyYW0gY29kZVVuaXRzIFBvaW50cyB0
byAnbGVuZ3RoJyBieXRlcyBvZiB0aGUgY29uY2VybmVkIGNvZGVwYWdlIHNlcXVlbmNlCi0gKiBA
cGFyYW0gbGVuZ3RoIFNpemUgKGluIGJ5dGVzKSBvZiB0aGUgY29uY2VybmVkIGNvZGVwYWdlIHNl
cXVlbmNlCi0gKiBAcGFyYW0gcmVhc29uIERlZmluZXMgdGhlIHJlYXNvbiB0aGUgY2FsbGJhY2sg
d2FzIGludm9rZWQKLSAqIEBwYXJhbSBlcnIgVGhpcyBzaG91bGQgYWx3YXlzIGJlIHNldCB0byBh
IGZhaWx1cmUgc3RhdHVzIHByaW9yIHRvIGNhbGxpbmcuCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAq
LwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgVUNOVl9UT19VX0NBTExCQUNLX1NUT1AgKAotICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgIFVD
b252ZXJ0ZXJUb1VuaWNvZGVBcmdzICp0b1VBcmdzLAotICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogY29kZVVuaXRzLAotICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCi0gICAg
ICAgICAgICAgICAgICBVQ29udmVydGVyQ2FsbGJhY2tSZWFzb24gcmVhc29uLAotICAgICAgICAg
ICAgICAgICAgVUVycm9yQ29kZSAqIGVycik7Ci0KLS8qKgotICogRE8gTk9UIENBTEwgVEhJUyBG
VU5DVElPTiBESVJFQ1RMWSEKLSAqIFRoaXMgRnJvbSBVbmljb2RlIGNhbGxiYWNrIHNraXBzIGFu
eSBJTExFR0FMX1NFUVVFTkNFLCBvcgotICogc2tpcHMgb25seSBVTkFTU0lOR0VEX1NFUVVFTkNF
IGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCBwYXJhbWV0ZXIKLSAqIHNpbXBseSBpZ25vcmluZyB0
aG9zZSBjaGFyYWN0ZXJzLiAKLSAqCi0gKiBAcGFyYW0gY29udGV4dCAgVGhlIGZ1bmN0aW9uIGN1
cnJlbnRseSByZWNvZ25pemVzIHRoZSBjYWxsYmFjayBvcHRpb25zOgotICogICAgICAgICAgICAg
ICAgIFVDTlZfU0tJUF9TVE9QX09OX0lMTEVHQUw6IFNUT1BTIGF0IHRoZSBJTExFR0FMX1NFUVVF
TkNFLAotICogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nIHRoZSBlcnJvciBjb2RlIGJh
Y2sgdG8gdGhlIGNhbGxlciBpbW1lZGlhdGVseS4KLSAqICAgICAgICAgICAgICAgICBOVUxMOiBT
a2lwcyBhbnkgSUxMRUdBTF9TRVFVRU5DRQotICogQHBhcmFtIGZyb21VQXJncyBJbmZvcm1hdGlv
biBhYm91dCB0aGUgY29udmVyc2lvbiBpbiBwcm9ncmVzcwotICogQHBhcmFtIGNvZGVVbml0cyBQ
b2ludHMgdG8gJ2xlbmd0aCcgVUNoYXJzIG9mIHRoZSBjb25jZXJuZWQgVW5pY29kZSBzZXF1ZW5j
ZQotICogQHBhcmFtIGxlbmd0aCBTaXplIChpbiBieXRlcykgb2YgdGhlIGNvbmNlcm5lZCBjb2Rl
cGFnZSBzZXF1ZW5jZQotICogQHBhcmFtIGNvZGVQb2ludCBTaW5nbGUgVUNoYXIzMiAoVVRGLTMy
KSBjb250YWluaW5nIHRoZSBjb25jZXJlbmQgVW5pY29kZSBjb2RlcG9pbnQuCi0gKiBAcGFyYW0g
cmVhc29uIERlZmluZXMgdGhlIHJlYXNvbiB0aGUgY2FsbGJhY2sgd2FzIGludm9rZWQKLSAqIEBw
YXJhbSBlcnIgUmV0dXJuIHZhbHVlIHdpbGwgYmUgc2V0IHRvIHN1Y2Nlc3MgaWYgdGhlIGNhbGxi
YWNrIHdhcyBoYW5kbGVkLAotICogICAgICBvdGhlcndpc2UgdGhpcyB2YWx1ZSB3aWxsIGJlIHNl
dCB0byBhIGZhaWx1cmUgc3RhdHVzLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxF
IHZvaWQgVV9FWFBPUlQyIFVDTlZfRlJPTV9VX0NBTExCQUNLX1NLSVAgKAotICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgIFVDb252ZXJ0ZXJG
cm9tVW5pY29kZUFyZ3MgKmZyb21VQXJncywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiBjb2RlVW5pdHMsCi0gICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgIFVDaGFyMzIgY29kZVBvaW50LAotICAgICAgICAgICAgICAgICAgVUNvbnZlcnRl
ckNhbGxiYWNrUmVhc29uIHJlYXNvbiwKLSAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKiBl
cnIpOwotCi0vKioKLSAqIERPIE5PVCBDQUxMIFRISVMgRlVOQ1RJT04gRElSRUNUTFkhCi0gKiBU
aGlzIEZyb20gVW5pY29kZSBjYWxsYmFjayB3aWxsIFN1YnN0aXR1dGUgdGhlIElMTEVHQUwgU0VR
VUVOQ0UsIG9yIAotICogVU5BU1NJR05FRF9TRVFVRU5DRSBkZXBlbmRpbmcgb24gY29udGV4dCBw
YXJhbWV0ZXIsIHdpdGggdGhlCi0gKiBjdXJyZW50IHN1YnN0aXR1dGlvbiBzdHJpbmcgZm9yIHRo
ZSBjb252ZXJ0ZXIuIFRoaXMgaXMgdGhlIGRlZmF1bHQKLSAqIGNhbGxiYWNrLgotICoKLSAqIEBw
YXJhbSBjb250ZXh0IFRoZSBmdW5jdGlvbiBjdXJyZW50bHkgcmVjb2duaXplcyB0aGUgY2FsbGJh
Y2sgb3B0aW9uczoKLSAqICAgICAgICAgICAgICAgICBVQ05WX1NVQl9TVE9QX09OX0lMTEVHQUw6
IFNUT1BTIGF0IHRoZSBJTExFR0FMX1NFUVVFTkNFLAotICogICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuaW5nIHRoZSBlcnJvciBjb2RlIGJhY2sgdG8gdGhlIGNhbGxlciBpbW1lZGlhdGVseS4K
LSAqICAgICAgICAgICAgICAgICBOVUxMOiBTdWJzdGl0dXRlcyBhbnkgSUxMRUdBTF9TRVFVRU5D
RQotICogQHBhcmFtIGZyb21VQXJncyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udmVyc2lvbiBp
biBwcm9ncmVzcwotICogQHBhcmFtIGNvZGVVbml0cyBQb2ludHMgdG8gJ2xlbmd0aCcgVUNoYXJz
IG9mIHRoZSBjb25jZXJuZWQgVW5pY29kZSBzZXF1ZW5jZQotICogQHBhcmFtIGxlbmd0aCBTaXpl
IChpbiBieXRlcykgb2YgdGhlIGNvbmNlcm5lZCBjb2RlcGFnZSBzZXF1ZW5jZQotICogQHBhcmFt
IGNvZGVQb2ludCBTaW5nbGUgVUNoYXIzMiAoVVRGLTMyKSBjb250YWluaW5nIHRoZSBjb25jZXJl
bmQgVW5pY29kZSBjb2RlcG9pbnQuCi0gKiBAcGFyYW0gcmVhc29uIERlZmluZXMgdGhlIHJlYXNv
biB0aGUgY2FsbGJhY2sgd2FzIGludm9rZWQKLSAqIEBwYXJhbSBlcnIgUmV0dXJuIHZhbHVlIHdp
bGwgYmUgc2V0IHRvIHN1Y2Nlc3MgaWYgdGhlIGNhbGxiYWNrIHdhcyBoYW5kbGVkLAotICogICAg
ICBvdGhlcndpc2UgdGhpcyB2YWx1ZSB3aWxsIGJlIHNldCB0byBhIGZhaWx1cmUgc3RhdHVzLgot
ICogQHNlZSB1Y252X3NldFN1YnN0Q2hhcnMKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NU
QUJMRSB2b2lkIFVfRVhQT1JUMiBVQ05WX0ZST01fVV9DQUxMQkFDS19TVUJTVElUVVRFICgKLSAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICBV
Q29udmVydGVyRnJvbVVuaWNvZGVBcmdzICpmcm9tVUFyZ3MsCi0gICAgICAgICAgICAgICAgICBj
b25zdCBVQ2hhciogY29kZVVuaXRzLAotICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNvZGVQb2ludCwKLSAgICAgICAgICAgICAgICAg
IFVDb252ZXJ0ZXJDYWxsYmFja1JlYXNvbiByZWFzb24sCi0gICAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlICogZXJyKTsKLQotLyoqCi0gKiBETyBOT1QgQ0FMTCBUSElTIEZVTkNUSU9OIERJUkVD
VExZIQotICogVGhpcyBGcm9tIFVuaWNvZGUgY2FsbGJhY2sgd2lsbCBTdWJzdGl0dXRlIHRoZSBJ
TExFR0FMIFNFUVVFTkNFIHdpdGggdGhlCi0gKiBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgaWxsZWdhbCBjb2RlcG9pbnRzCi0gKgotICogQHBhcmFtIGNvbnRleHQgVGhlIGZ1bmN0
aW9uIGN1cnJlbnRseSByZWNvZ25pemVzIHRoZSBjYWxsYmFjayBvcHRpb25zOgotICogICAgICAg
IDx1bD4KLSAqICAgICAgICA8bGk+VUNOVl9FU0NBUEVfSUNVOiBTdWJzdGl0dWVzIHRoZSAgSUxM
RUdBTCBTRVFVRU5DRSB3aXRoIHRoZSBoZXhhZGVjaW1hbCAKLSAqICAgICAgICAgIHJlcHJlc2Vu
dGF0aW9uIGluIHRoZSBmb3JtYXQgICVVWFhYWCwgZS5nLiAiJXVGRkZFJXUwMEFDJXVDOEZFIiku
IAotICogICAgICAgICAgSW4gdGhlIEV2ZW50IHRoZSBjb252ZXJ0ZXIgZG9lc24ndCBzdXBwb3J0
IHRoZSBjaGFyYWN0ZXJzIHslLFV9W0EtRl1bMC05XSwgCi0gKiAgICAgICAgICBpdCB3aWxsICBz
dWJzdGl0dXRlICB0aGUgaWxsZWdhbCBzZXF1ZW5jZSB3aXRoIHRoZSBzdWJzdGl0dXRpb24gY2hh
cmFjdGVycy4KLSAqICAgICAgICAgIE5vdGUgdGhhdCAgY29kZVVuaXQoMzJiaXQgaW50IGVnOiB1
bml0IG9mIGEgc3Vycm9nYXRlIHBhaXIpIGlzIHJlcHJlc2VudGVkIGFzCi0gKiAgICAgICAgICAl
VUQ4NEQlVURDNTY8L2xpPgotICogICAgICAgIDxsaT5VQ05WX0VTQ0FQRV9KQVZBOiBTdWJzdGl0
dWVzIHRoZSAgSUxMRUdBTCBTRVFVRU5DRSB3aXRoIHRoZSBoZXhhZGVjaW1hbCAKLSAqICAgICAg
ICAgIHJlcHJlc2VudGF0aW9uIGluIHRoZSBmb3JtYXQgIFxcdVhYWFgsIGUuZy4gIlxcdUZGRkVc
XHUwMEFDXFx1QzhGRSIpLiAKLSAqICAgICAgICAgIEluIHRoZSBFdmVudCB0aGUgY29udmVydGVy
IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY2hhcmFjdGVycyB7XCx1fVtBLUZdWzAtOV0sIAotICogICAg
ICAgICAgaXQgd2lsbCAgc3Vic3RpdHV0ZSAgdGhlIGlsbGVnYWwgc2VxdWVuY2Ugd2l0aCB0aGUg
c3Vic3RpdHV0aW9uIGNoYXJhY3RlcnMuCi0gKiAgICAgICAgICBOb3RlIHRoYXQgIGNvZGVVbml0
KDMyYml0IGludCBlZzogdW5pdCBvZiBhIHN1cnJvZ2F0ZSBwYWlyKSBpcyByZXByZXNlbnRlZCBh
cwotICogICAgICAgICAgXFx1RDg0RFxcdURDNTY8L2xpPgotICogICAgICAgIDxsaT5VQ05WX0VT
Q0FQRV9DOiBTdWJzdGl0dWVzIHRoZSAgSUxMRUdBTCBTRVFVRU5DRSB3aXRoIHRoZSBoZXhhZGVj
aW1hbCAKLSAqICAgICAgICAgIHJlcHJlc2VudGF0aW9uIGluIHRoZSBmb3JtYXQgIFxcdVhYWFgs
IGUuZy4gIlxcdUZGRkVcXHUwMEFDXFx1QzhGRSIpLiAKLSAqICAgICAgICAgIEluIHRoZSBFdmVu
dCB0aGUgY29udmVydGVyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY2hhcmFjdGVycyB7XCx1LFV9W0Et
Rl1bMC05XSwgCi0gKiAgICAgICAgICBpdCB3aWxsICBzdWJzdGl0dXRlICB0aGUgaWxsZWdhbCBz
ZXF1ZW5jZSB3aXRoIHRoZSBzdWJzdGl0dXRpb24gY2hhcmFjdGVycy4KLSAqICAgICAgICAgIE5v
dGUgdGhhdCAgY29kZVVuaXQoMzJiaXQgaW50IGVnOiB1bml0IG9mIGEgc3Vycm9nYXRlIHBhaXIp
IGlzIHJlcHJlc2VudGVkIGFzCi0gKiAgICAgICAgICBcXFUwMDAyMzQ1NjwvbGk+Ci0gKiAgICAg
ICAgPGxpPlVDTlZfRVNDQVBFX1hNTF9ERUM6IFN1YnN0aXR1ZXMgdGhlICBJTExFR0FMIFNFUVVF
TkNFIHdpdGggdGhlIGRlY2ltYWwgCi0gKiAgICAgICAgICByZXByZXNlbnRhdGlvbiBpbiB0aGUg
Zm9ybWF0ICAmYW1wOyNERERERERERDssIGUuZy4gIiZhbXA7IzY1NTM0OyZhbXA7IzE3MjsmYW1w
OyM1MTQ1NDsiKS4gCi0gKiAgICAgICAgICBJbiB0aGUgRXZlbnQgdGhlIGNvbnZlcnRlciBkb2Vz
bid0IHN1cHBvcnQgdGhlIGNoYXJhY3RlcnMgeyZhbXA7LCN9WzAtOV0sIAotICogICAgICAgICAg
aXQgd2lsbCAgc3Vic3RpdHV0ZSAgdGhlIGlsbGVnYWwgc2VxdWVuY2Ugd2l0aCB0aGUgc3Vic3Rp
dHV0aW9uIGNoYXJhY3RlcnMuCi0gKiAgICAgICAgICBOb3RlIHRoYXQgIGNvZGVVbml0KDMyYml0
IGludCBlZzogdW5pdCBvZiBhIHN1cnJvZ2F0ZSBwYWlyKSBpcyByZXByZXNlbnRlZCBhcwotICog
ICAgICAgICAgJmFtcDsjMTQ0NDcwOyBhbmQgWmVybyBwYWRkaW5nIGlzIGlnbm9yZWQuPC9saT4K
LSAqICAgICAgICA8bGk+VUNOVl9FU0NBUEVfWE1MX0hFWDpTdWJzdGl0dWVzIHRoZSAgSUxMRUdB
TCBTRVFVRU5DRSB3aXRoIHRoZSBkZWNpbWFsIAotICogICAgICAgICAgcmVwcmVzZW50YXRpb24g
aW4gdGhlIGZvcm1hdCAgJiN4WFhYWCwgZS5nLiAiJmFtcDsjeEZGRkU7JmFtcDsjeDAwQUM7JmFt
cDsjeEM4RkU7IikuIAotICogICAgICAgICAgSW4gdGhlIEV2ZW50IHRoZSBjb252ZXJ0ZXIgZG9l
c24ndCBzdXBwb3J0IHRoZSBjaGFyYWN0ZXJzIHsmLCMseH1bMC05XSwgCi0gKiAgICAgICAgICBp
dCB3aWxsICBzdWJzdGl0dXRlICB0aGUgaWxsZWdhbCBzZXF1ZW5jZSB3aXRoIHRoZSBzdWJzdGl0
dXRpb24gY2hhcmFjdGVycy4KLSAqICAgICAgICAgIE5vdGUgdGhhdCAgY29kZVVuaXQoMzJiaXQg
aW50IGVnOiB1bml0IG9mIGEgc3Vycm9nYXRlIHBhaXIpIGlzIHJlcHJlc2VudGVkIGFzCi0gKiAg
ICAgICAgICAmYW1wOyN4MjM0NTY7PC9saT4KLSAqICAgICAgICA8L3VsPgotICogQHBhcmFtIGZy
b21VQXJncyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udmVyc2lvbiBpbiBwcm9ncmVzcwotICog
QHBhcmFtIGNvZGVVbml0cyBQb2ludHMgdG8gJ2xlbmd0aCcgVUNoYXJzIG9mIHRoZSBjb25jZXJu
ZWQgVW5pY29kZSBzZXF1ZW5jZQotICogQHBhcmFtIGxlbmd0aCBTaXplIChpbiBieXRlcykgb2Yg
dGhlIGNvbmNlcm5lZCBjb2RlcGFnZSBzZXF1ZW5jZQotICogQHBhcmFtIGNvZGVQb2ludCBTaW5n
bGUgVUNoYXIzMiAoVVRGLTMyKSBjb250YWluaW5nIHRoZSBjb25jZXJlbmQgVW5pY29kZSBjb2Rl
cG9pbnQuCi0gKiBAcGFyYW0gcmVhc29uIERlZmluZXMgdGhlIHJlYXNvbiB0aGUgY2FsbGJhY2sg
d2FzIGludm9rZWQKLSAqIEBwYXJhbSBlcnIgUmV0dXJuIHZhbHVlIHdpbGwgYmUgc2V0IHRvIHN1
Y2Nlc3MgaWYgdGhlIGNhbGxiYWNrIHdhcyBoYW5kbGVkLAotICogICAgICBvdGhlcndpc2UgdGhp
cyB2YWx1ZSB3aWxsIGJlIHNldCB0byBhIGZhaWx1cmUgc3RhdHVzLgotICogQHN0YWJsZSBJQ1Ug
Mi4wCi0gKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIFVDTlZfRlJPTV9VX0NBTExCQUNLX0VT
Q0FQRSAoCi0gICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgVUNvbnZlcnRlckZyb21Vbmljb2RlQXJncyAqZnJvbVVBcmdzLAotICAgICAgICAg
ICAgICAgICAgY29uc3QgVUNoYXIqIGNvZGVVbml0cywKLSAgICAgICAgICAgICAgICAgIGludDMy
X3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgVUNoYXIzMiBjb2RlUG9pbnQsCi0gICAgICAg
ICAgICAgICAgICBVQ29udmVydGVyQ2FsbGJhY2tSZWFzb24gcmVhc29uLAotICAgICAgICAgICAg
ICAgICAgVUVycm9yQ29kZSAqIGVycik7Ci0KLQotLyoqCi0gKiBETyBOT1QgQ0FMTCBUSElTIEZV
TkNUSU9OIERJUkVDVExZIQotICogVGhpcyBUbyBVbmljb2RlIGNhbGxiYWNrIHNraXBzIGFueSBJ
TExFR0FMX1NFUVVFTkNFLCBvcgotICogc2tpcHMgb25seSBVTkFTU0lOR0VEX1NFUVVFTkNFIGRl
cGVuZGluZyBvbiB0aGUgY29udGV4dCBwYXJhbWV0ZXIKLSAqIHNpbXBseSBpZ25vcmluZyB0aG9z
ZSBjaGFyYWN0ZXJzLiAKLSAqCi0gKiBAcGFyYW0gY29udGV4dCAgVGhlIGZ1bmN0aW9uIGN1cnJl
bnRseSByZWNvZ25pemVzIHRoZSBjYWxsYmFjayBvcHRpb25zOgotICogICAgICAgICAgICAgICAg
IFVDTlZfU0tJUF9TVE9QX09OX0lMTEVHQUw6IFNUT1BTIGF0IHRoZSBJTExFR0FMX1NFUVVFTkNF
LAotICogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nIHRoZSBlcnJvciBjb2RlIGJhY2sg
dG8gdGhlIGNhbGxlciBpbW1lZGlhdGVseS4KLSAqICAgICAgICAgICAgICAgICBOVUxMOiBTa2lw
cyBhbnkgSUxMRUdBTF9TRVFVRU5DRQotICogQHBhcmFtIHRvVUFyZ3MgSW5mb3JtYXRpb24gYWJv
dXQgdGhlIGNvbnZlcnNpb24gaW4gcHJvZ3Jlc3MKLSAqIEBwYXJhbSBjb2RlVW5pdHMgUG9pbnRz
IHRvICdsZW5ndGgnIGJ5dGVzIG9mIHRoZSBjb25jZXJuZWQgY29kZXBhZ2Ugc2VxdWVuY2UKLSAq
IEBwYXJhbSBsZW5ndGggU2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBjb25jZXJuZWQgY29kZXBhZ2Ug
c2VxdWVuY2UKLSAqIEBwYXJhbSByZWFzb24gRGVmaW5lcyB0aGUgcmVhc29uIHRoZSBjYWxsYmFj
ayB3YXMgaW52b2tlZAotICogQHBhcmFtIGVyciBSZXR1cm4gdmFsdWUgd2lsbCBiZSBzZXQgdG8g
c3VjY2VzcyBpZiB0aGUgY2FsbGJhY2sgd2FzIGhhbmRsZWQsCi0gKiAgICAgIG90aGVyd2lzZSB0
aGlzIHZhbHVlIHdpbGwgYmUgc2V0IHRvIGEgZmFpbHVyZSBzdGF0dXMuCi0gKiBAc3RhYmxlIElD
VSAyLjAKLSAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgVUNOVl9UT19VX0NBTExCQUNLX1NL
SVAgKAotICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgIFVDb252ZXJ0ZXJUb1VuaWNvZGVBcmdzICp0b1VBcmdzLAotICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogY29kZVVuaXRzLAotICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICBVQ29udmVydGVyQ2FsbGJhY2tSZWFzb24gcmVhc29uLAot
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqIGVycik7Ci0KLS8qKgotICogRE8gTk9UIENB
TEwgVEhJUyBGVU5DVElPTiBESVJFQ1RMWSEKLSAqIFRoaXMgVG8gVW5pY29kZSBjYWxsYmFjayB3
aWxsIFN1YnN0aXR1dGUgdGhlIElMTEVHQUwgU0VRVUVOQ0Usb3IgCi0gKiBVTkFTU0lHTkVEX1NF
UVVFTkNFIGRlcGVuZGluZyBvbiBjb250ZXh0IHBhcmFtZXRlciwgIHdpdGggdGhlCi0gKiBVbmlj
b2RlIHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIsIFUrRkZGRC4KLSAqCi0gKiBAcGFyYW0gY29udGV4
dCAgVGhlIGZ1bmN0aW9uIGN1cnJlbnRseSByZWNvZ25pemVzIHRoZSBjYWxsYmFjayBvcHRpb25z
OgotICogICAgICAgICAgICAgICAgIFVDTlZfU1VCX1NUT1BfT05fSUxMRUdBTDogU1RPUFMgYXQg
dGhlIElMTEVHQUxfU0VRVUVOQ0UsCi0gKiAgICAgICAgICAgICAgICAgICAgICByZXR1cm5pbmcg
dGhlIGVycm9yIGNvZGUgYmFjayB0byB0aGUgY2FsbGVyIGltbWVkaWF0ZWx5LgotICogICAgICAg
ICAgICAgICAgIE5VTEw6IFN1YnN0aXR1dGVzIGFueSBJTExFR0FMX1NFUVVFTkNFCi0gKiBAcGFy
YW0gdG9VQXJncyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udmVyc2lvbiBpbiBwcm9ncmVzcwot
ICogQHBhcmFtIGNvZGVVbml0cyBQb2ludHMgdG8gJ2xlbmd0aCcgYnl0ZXMgb2YgdGhlIGNvbmNl
cm5lZCBjb2RlcGFnZSBzZXF1ZW5jZQotICogQHBhcmFtIGxlbmd0aCBTaXplIChpbiBieXRlcykg
b2YgdGhlIGNvbmNlcm5lZCBjb2RlcGFnZSBzZXF1ZW5jZQotICogQHBhcmFtIHJlYXNvbiBEZWZp
bmVzIHRoZSByZWFzb24gdGhlIGNhbGxiYWNrIHdhcyBpbnZva2VkCi0gKiBAcGFyYW0gZXJyIFJl
dHVybiB2YWx1ZSB3aWxsIGJlIHNldCB0byBzdWNjZXNzIGlmIHRoZSBjYWxsYmFjayB3YXMgaGFu
ZGxlZCwKLSAqICAgICAgb3RoZXJ3aXNlIHRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgdG8gYSBmYWls
dXJlIHN0YXR1cy4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQ
T1JUMiBVQ05WX1RPX1VfQ0FMTEJBQ0tfU1VCU1RJVFVURSAoCi0gICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlclRvVW5pY29k
ZUFyZ3MgKnRvVUFyZ3MsCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb2RlVW5pdHMs
Ci0gICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgIFVD
b252ZXJ0ZXJDYWxsYmFja1JlYXNvbiByZWFzb24sCi0gICAgICAgICAgICAgICAgICBVRXJyb3JD
b2RlICogZXJyKTsKLQotLyoqCi0gKiBETyBOT1QgQ0FMTCBUSElTIEZVTkNUSU9OIERJUkVDVExZ
IQotICogVGhpcyBUbyBVbmljb2RlIGNhbGxiYWNrIHdpbGwgU3Vic3RpdHV0ZSB0aGUgSUxMRUdB
TCBTRVFVRU5DRSB3aXRoIHRoZQotICogaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgdGhl
IGlsbGVnYWwgYnl0ZXMKLSAqICAoaW4gdGhlIGZvcm1hdCAgJVhOTiwgZS5nLiAiJVhGRiVYMEEl
WEM4JVgwMyIpLgotICoKLSAqIEBwYXJhbSBjb250ZXh0IFRoaXMgZnVuY3Rpb24gY3VycmVudGx5
IHJlY29nbml6ZXMgdGhlIGNhbGxiYWNrIG9wdGlvbnM6Ci0gKiAgICAgIFVDTlZfRVNDQVBFX0lD
VSwgVUNOVl9FU0NBUEVfSkFWQSwgVUNOVl9FU0NBUEVfQywgVUNOVl9FU0NBUEVfWE1MX0RFQywK
LSAqICAgICAgVUNOVl9FU0NBUEVfWE1MX0hFWCBhbmQgVUNOVl9FU0NBUEVfVU5JQ09ERS4KLSAq
IEBwYXJhbSB0b1VBcmdzIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjb252ZXJzaW9uIGluIHByb2dy
ZXNzCi0gKiBAcGFyYW0gY29kZVVuaXRzIFBvaW50cyB0byAnbGVuZ3RoJyBieXRlcyBvZiB0aGUg
Y29uY2VybmVkIGNvZGVwYWdlIHNlcXVlbmNlCi0gKiBAcGFyYW0gbGVuZ3RoIFNpemUgKGluIGJ5
dGVzKSBvZiB0aGUgY29uY2VybmVkIGNvZGVwYWdlIHNlcXVlbmNlCi0gKiBAcGFyYW0gcmVhc29u
IERlZmluZXMgdGhlIHJlYXNvbiB0aGUgY2FsbGJhY2sgd2FzIGludm9rZWQKLSAqIEBwYXJhbSBl
cnIgUmV0dXJuIHZhbHVlIHdpbGwgYmUgc2V0IHRvIHN1Y2Nlc3MgaWYgdGhlIGNhbGxiYWNrIHdh
cyBoYW5kbGVkLAotICogICAgICBvdGhlcndpc2UgdGhpcyB2YWx1ZSB3aWxsIGJlIHNldCB0byBh
IGZhaWx1cmUgc3RhdHVzLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLQotVV9TVEFCTEUgdm9p
ZCBVX0VYUE9SVDIgVUNOVl9UT19VX0NBTExCQUNLX0VTQ0FQRSAoCi0gICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlclRvVW5p
Y29kZUFyZ3MgKnRvVUFyZ3MsCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb2RlVW5p
dHMsCi0gICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
IFVDb252ZXJ0ZXJDYWxsYmFja1JlYXNvbiByZWFzb24sCi0gICAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlICogZXJyKTsKLQotI2VuZGlmCi0KLSNlbmRpZgotCi0vKlVDTlZfRVJSX0gqLyAKSW5k
ZXg6IEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3Vjb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91Y29uZmlnLmgJKHJldmlzaW9uIDc0NjE2KQorKysg
SmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE4NiArMCwwIEBACi0vKiAgCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAyMDAy
LTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKLSogICBDb3Jwb3JhdGlvbiBh
bmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogICBmaWxl
IG5hbWU6ICB1Y29uZmlnLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQotKiAgIHRhYiBzaXpl
OiAgIDggKG5vdCB1c2VkKQotKiAgIGluZGVudGF0aW9uOjQKLSoKLSogICBjcmVhdGVkIG9uOiAy
MDAyc2VwMTkKLSogICBjcmVhdGVkIGJ5OiBNYXJrdXMgVy4gU2NoZXJlcgotKi8KLQotI2lmbmRl
ZiBfX1VDT05GSUdfSF9fCi0jZGVmaW5lIF9fVUNPTkZJR19IX18KLQotLyohCi0gKiBcZmlsZQot
ICogXGJyaWVmIFN3aXRjaGVzIGZvciBleGNsdWRpbmcgcGFydHMgb2YgSUNVIGxpYnJhcnkgY29k
ZSBtb2R1bGVzLgotICoKLSAqIEFsbG93cyB0byBidWlsZCBwYXJ0aWFsLCBzbWFsbGVyIGxpYnJh
cmllcyBmb3Igc3BlY2lhbCBwdXJwb3Nlcy4KLSAqIEJ5IGRlZmF1bHQsIGFsbCBtb2R1bGVzIGFy
ZSBidWlsdC4KLSAqIFRoZSBzd2l0Y2hlcyBhcmUgZmFpcmx5IGNvYXJzZSwgY29udHJvbGxpbmcg
bGFyZ2UgbW9kdWxlcy4KLSAqIEJhc2ljIHNlcnZpY2VzIGNhbm5vdCBiZSB0dXJuZWQgb2ZmLgot
ICoKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0KLS8qKgotICogXGRlZiBVQ09ORklHX09OTFlf
Q09MTEFUSU9OCi0gKiBUaGlzIHN3aXRjaCB0dXJucyBvZmYgbW9kdWxlcyB0aGF0IGFyZSBub3Qg
bmVlZGVkIGZvciBjb2xsYXRpb24uCi0gKgotICogSXQgZG9lcyBub3QgdHVybiBvZmYgbGVnYWN5
IGNvbnZlcnNpb24gYmVjYXVzZSB0aGF0IGlzIG5lY2Vzc2FyeQotICogZm9yIElDVSB0byB3b3Jr
IG9uIEVCQ0RJQyBwbGF0Zm9ybXMgKGZvciB0aGUgZGVmYXVsdCBjb252ZXJ0ZXIpLgotICogSWYg
eW91IHdhbnQgIm9ubHkgY29sbGF0aW9uIiBhbmQgZG8gbm90IGJ1aWxkIGZvciBFQkNESUMsCi0g
KiB0aGVuIHlvdSBjYW4gI2RlZmluZSBVQ09ORklHX05PX0xFR0FDWV9DT05WRVJTSU9OIDEgYXMg
d2VsbC4KLSAqCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2lmbmRlZiBVQ09ORklHX09OTFlf
Q09MTEFUSU9OCi0jICAgZGVmaW5lIFVDT05GSUdfT05MWV9DT0xMQVRJT04gMAotI2VuZGlmCi0K
LSNpZiBVQ09ORklHX09OTFlfQ09MTEFUSU9OCi0gICAgLyogY29tbW9uIGxpYnJhcnkgKi8KLSMg
ICBkZWZpbmUgVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04gMQotIyAgIGRlZmluZSBVQ09ORklH
X05PX0lETkEgMQotCi0gICAgLyogaTE4biBsaWJyYXJ5ICovCi0jICAgaWYgVUNPTkZJR19OT19D
T0xMQVRJT04KLSMgICAgICAgZXJyb3IgQ29udHJhZGljdG9yeSBjb2xsYXRpb24gc3dpdGNoZXMg
aW4gdWNvbmZpZy5oLgotIyAgIGVuZGlmCi0jICAgZGVmaW5lIFVDT05GSUdfTk9fRk9STUFUVElO
RyAxCi0jICAgZGVmaW5lIFVDT05GSUdfTk9fVFJBTlNMSVRFUkFUSU9OIDEKLSMgICBkZWZpbmUg
VUNPTkZJR19OT19SRUdVTEFSX0VYUFJFU1NJT05TIDEKLSNlbmRpZgotCi0vKiBjb21tb24gbGli
cmFyeSBzd2l0Y2hlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAqLwotCi0vKioKLSAqIFxkZWYgVUNPTkZJR19OT19DT05WRVJTSU9OCi0gKiBJQ1Ug
d2lsbCBub3QgY29tcGxldGVseSBidWlsZCB3aXRoIHRoaXMgc3dpdGNoIHR1cm5lZCBvbi4KLSAq
IFRoaXMgc3dpdGNoIHR1cm5zIG9mZiBhbGwgY29udmVydGVycy4KLSAqCi0gKiBAZHJhZnQgSUNV
IDMuMgotICovCi0jaWZuZGVmIFVDT05GSUdfTk9fQ09OVkVSU0lPTgotIyAgIGRlZmluZSBVQ09O
RklHX05PX0NPTlZFUlNJT04gMAotI2VuZGlmCi0KLSNpZiBVQ09ORklHX05PX0NPTlZFUlNJT04K
LSMgICBkZWZpbmUgVUNPTkZJR19OT19MRUdBQ1lfQ09OVkVSU0lPTiAxCi0jZW5kaWYKLQotLyoq
Ci0gKiBcZGVmIFVDT05GSUdfTk9fTEVHQUNZX0NPTlZFUlNJT04KLSAqIFRoaXMgc3dpdGNoIHR1
cm5zIG9mZiBhbGwgY29udmVydGVycyBleGNlcHQgZm9yCi0gKiAtIFVuaWNvZGUgY2hhcnNldHMg
KFVURi03LzgvMTYvMzIsIENFU1UtOCwgU0NTVSwgQk9DVS0xKQotICogLSBVUy1BU0NJSQotICog
LSBJU08tODg1OS0xCi0gKgotICogVHVybmluZyBvZmYgbGVnYWN5IGNvbnZlcnNpb24gaXMgbm90
IHBvc3NpYmxlIG9uIEVCQ0RJQyBwbGF0Zm9ybXMKLSAqIGJlY2F1c2UgdGhleSBuZWVkIGlibS0z
NyBvciBpYm0tMTA0NyBkZWZhdWx0IGNvbnZlcnRlcnMuCi0gKgotICogQHN0YWJsZSBJQ1UgMi40
Ci0gKi8KLSNpZm5kZWYgVUNPTkZJR19OT19MRUdBQ1lfQ09OVkVSU0lPTgotIyAgIGRlZmluZSBV
Q09ORklHX05PX0xFR0FDWV9DT05WRVJTSU9OIDAKLSNlbmRpZgotCi0vKioKLSAqIFxkZWYgVUNP
TkZJR19OT19OT1JNQUxJWkFUSU9OCi0gKiBUaGlzIHN3aXRjaCB0dXJucyBvZmYgbm9ybWFsaXph
dGlvbi4KLSAqIEl0IGltcGxpZXMgdHVybmluZyBvZmYgc2V2ZXJhbCBvdGhlciBzZXJ2aWNlcyBh
cyB3ZWxsLCBmb3IgZXhhbXBsZQotICogY29sbGF0aW9uIGFuZCBJRE5BLgotICoKLSAqIEBzdGFi
bGUgSUNVIDIuNgotICovCi0jaWZuZGVmIFVDT05GSUdfTk9fTk9STUFMSVpBVElPTgotIyAgIGRl
ZmluZSBVQ09ORklHX05PX05PUk1BTElaQVRJT04gMAotI2VsaWYgVUNPTkZJR19OT19OT1JNQUxJ
WkFUSU9OCi0gICAgLyogY29tbW9uIGxpYnJhcnkgKi8KLSMgICBkZWZpbmUgVUNPTkZJR19OT19J
RE5BIDEKLQotICAgIC8qIGkxOG4gbGlicmFyeSAqLwotIyAgIGlmIFVDT05GSUdfT05MWV9DT0xM
QVRJT04KLSMgICAgICAgZXJyb3IgQ29udHJhZGljdG9yeSBjb2xsYXRpb24gc3dpdGNoZXMgaW4g
dWNvbmZpZy5oLgotIyAgIGVuZGlmCi0jICAgZGVmaW5lIFVDT05GSUdfTk9fQ09MTEFUSU9OIDEK
LSMgICBkZWZpbmUgVUNPTkZJR19OT19UUkFOU0xJVEVSQVRJT04gMQotI2VuZGlmCi0KLS8qKgot
ICogXGRlZiBVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTgotICogVGhpcyBzd2l0Y2ggdHVybnMg
b2ZmIGJyZWFrIGl0ZXJhdGlvbi4KLSAqCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2lmbmRl
ZiBVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTgotIyAgIGRlZmluZSBVQ09ORklHX05PX0JSRUFL
X0lURVJBVElPTiAwCi0jZW5kaWYKLQotLyoqCi0gKiBcZGVmIFVDT05GSUdfTk9fSUROQQotICog
VGhpcyBzd2l0Y2ggdHVybnMgb2ZmIElETkEuCi0gKgotICogQHN0YWJsZSBJQ1UgMi42Ci0gKi8K
LSNpZm5kZWYgVUNPTkZJR19OT19JRE5BCi0jICAgZGVmaW5lIFVDT05GSUdfTk9fSUROQSAwCi0j
ZW5kaWYKLQotLyogaTE4biBsaWJyYXJ5IHN3aXRjaGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyoqCi0gKiBcZGVmIFVDT05GSUdf
Tk9fQ09MTEFUSU9OCi0gKiBUaGlzIHN3aXRjaCB0dXJucyBvZmYgY29sbGF0aW9uIGFuZCBjb2xs
YXRpb24tYmFzZWQgc3RyaW5nIHNlYXJjaC4KLSAqCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwot
I2lmbmRlZiBVQ09ORklHX05PX0NPTExBVElPTgotIyAgIGRlZmluZSBVQ09ORklHX05PX0NPTExB
VElPTiAwCi0jZW5kaWYKLQotLyoqCi0gKiBcZGVmIFVDT05GSUdfTk9fRk9STUFUVElORwotICog
VGhpcyBzd2l0Y2ggdHVybnMgb2ZmIGZvcm1hdHRpbmcgYW5kIGNhbGVuZGFyL3RpbWV6b25lIHNl
cnZpY2VzLgotICoKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0jaWZuZGVmIFVDT05GSUdfTk9f
Rk9STUFUVElORwotIyAgIGRlZmluZSBVQ09ORklHX05PX0ZPUk1BVFRJTkcgMAotI2VuZGlmCi0K
LS8qKgotICogXGRlZiBVQ09ORklHX05PX1RSQU5TTElURVJBVElPTgotICogVGhpcyBzd2l0Y2gg
dHVybnMgb2ZmIHRyYW5zbGl0ZXJhdGlvbi4KLSAqCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwot
I2lmbmRlZiBVQ09ORklHX05PX1RSQU5TTElURVJBVElPTgotIyAgIGRlZmluZSBVQ09ORklHX05P
X1RSQU5TTElURVJBVElPTiAwCi0jZW5kaWYKLQotLyoqCi0gKiBcZGVmIFVDT05GSUdfTk9fUkVH
VUxBUl9FWFBSRVNTSU9OUwotICogVGhpcyBzd2l0Y2ggdHVybnMgb2ZmIHJlZ3VsYXIgZXhwcmVz
c2lvbnMuCi0gKgotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNpZm5kZWYgVUNPTkZJR19OT19S
RUdVTEFSX0VYUFJFU1NJT05TCi0jICAgZGVmaW5lIFVDT05GSUdfTk9fUkVHVUxBUl9FWFBSRVNT
SU9OUyAwCi0jZW5kaWYKLQotLyoqCi0gKiBcZGVmIFVDT05GSUdfTk9fU0VSVklDRQotICogVGhp
cyBzd2l0Y2ggdHVybnMgb2ZmIHNlcnZpY2UgcmVnaXN0cmF0aW9uLgotICoKLSAqIEBkcmFmdCBJ
Q1UgMy4yCi0gKi8KLSNpZm5kZWYgVUNPTkZJR19OT19TRVJWSUNFCi0jICAgZGVmaW5lIFVDT05G
SUdfTk9fU0VSVklDRSAwCi0jZW5kaWYKLQotI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9p
Y3UvdW5pY29kZS91ZW51bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL2ljdS91bmlj
b2RlL3VlbnVtLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNv
ZGUvdWVudW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjkgKzAsMCBAQAotLyoKLSoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKLSoKLSogICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcwotKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwg
UmlnaHRzIFJlc2VydmVkLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIGZpbGUgbmFt
ZTogIHVlbnVtLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQotKiAgIHRhYiBzaXplOiAgIDgg
KG5vdCB1c2VkKQotKiAgIGluZGVudGF0aW9uOjIKLSoKLSogICBjcmVhdGVkIG9uOiAyMDAyanVs
MDgKLSogICBjcmVhdGVkIGJ5OiBWbGFkaW1pciBXZWluc3RlaW4KLSovCi0KLSNpZm5kZWYgX19V
RU5VTV9ICi0jZGVmaW5lIF9fVUVOVU1fSAotCi0jaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIK
LQotLyoqCi0gKiBBbiBlbnVtZXJhdGlvbiBvYmplY3QuCi0gKiBGb3IgdXNhZ2UgaW4gQyBwcm9n
cmFtcy4KLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi1zdHJ1Y3QgVUVudW1lcmF0aW9uOwotLyoq
IHN0cnVjdHVyZSByZXByZXNlbnRpbmcgYW4gZW51bWVyYXRpb24gb2JqZWN0IGluc3RhbmNlIEBz
dGFibGUgSUNVIDIuMiAqLwotdHlwZWRlZiBzdHJ1Y3QgVUVudW1lcmF0aW9uIFVFbnVtZXJhdGlv
bjsKLQotLyoqCi0gKiBEaXNwb3NlcyBvZiByZXNvdXJjZXMgaW4gdXNlIGJ5IHRoZSBpdGVyYXRv
ci4gIElmIGVuIGlzIE5VTEwsCi0gKiBkb2VzIG5vdGhpbmcuICBBZnRlciB0aGlzIGNhbGwsIGFu
eSBjaGFyKiBvciBVQ2hhciogcG9pbnRlcgotICogcmV0dXJuZWQgYnkgdWVudW1fdW5leHQoKSBv
ciB1ZW51bV9uZXh0KCkgaXMgaW52YWxpZC4KLSAqIEBwYXJhbSBlbiBVRW51bWVyYXRpb24gc3Ry
dWN0dXJlIHBvaW50ZXIKLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi1VX1NUQUJMRSB2b2lkIFVf
RVhQT1JUMgotdWVudW1fY2xvc2UoVUVudW1lcmF0aW9uKiBlbik7Ci0KLS8qKgotICogUmV0dXJu
cyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgdGhlIGl0ZXJhdG9yIHRyYXZlcnNlcy4gIElm
Ci0gKiB0aGUgaXRlcmF0b3IgaXMgb3V0LW9mLXN5bmMgd2l0aCBpdHMgc2VydmljZSwgc3RhdHVz
IGlzIHNldCB0bwotICogVV9FTlVNX09VVF9PRl9TWU5DX0VSUk9SLgotICogVGhpcyBpcyBhIGNv
bnZlbmllbmNlIGZ1bmN0aW9uLiBJdCBjYW4gZW5kIHVwIGJlaW5nIHZlcnkKLSAqIGV4cGVuc2l2
ZSBhcyBhbGwgdGhlIGl0ZW1zIG1pZ2h0IGhhdmUgdG8gYmUgcHJlLWZldGNoZWQgKGRlcGVuZGlu
ZwotICogb24gdGhlIHR5cGUgb2YgZGF0YSBiZWluZyB0cmF2ZXJzZWQpLiBVc2Ugd2l0aCBjYXV0
aW9uIGFuZCBvbmx5IAotICogd2hlbiBuZWNlc3NhcnkuCi0gKiBAcGFyYW0gZW4gVUVudW1lcmF0
aW9uIHN0cnVjdHVyZSBwb2ludGVyCi0gKiBAcGFyYW0gc3RhdHVzIGVycm9yIGNvZGUsIGNhbiBi
ZSBVX0VOVU1fT1VUX09GX1NZTkNfRVJST1IgaWYgdGhlCi0gKiAgICAgICAgICAgICAgIGl0ZXJh
dG9yIGlzIG91dCBvZiBzeW5jLgotICogQHJldHVybiBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhl
IGl0ZXJhdG9yCi0gKiBAc3RhYmxlIElDVSAyLjIKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VY
UE9SVDIKLXVlbnVtX2NvdW50KFVFbnVtZXJhdGlvbiogZW4sIFVFcnJvckNvZGUqIHN0YXR1cyk7
Ci0KLS8qKgotICogUmV0dXJucyB0aGUgbmV4dCBlbGVtZW50IGluIHRoZSBpdGVyYXRvcidzIGxp
c3QuICBJZiB0aGVyZSBhcmUKLSAqIG5vIG1vcmUgZWxlbWVudHMsIHJldHVybnMgTlVMTC4gIElm
IHRoZSBpdGVyYXRvciBpcyBvdXQtb2Ytc3luYwotICogd2l0aCBpdHMgc2VydmljZSwgc3RhdHVz
IGlzIHNldCB0byBVX0VOVU1fT1VUX09GX1NZTkNfRVJST1IgYW5kCi0gKiBOVUxMIGlzIHJldHVy
bmVkLiAgSWYgdGhlIG5hdGl2ZSBzZXJ2aWNlIHN0cmluZyBpcyBhIGNoYXIqIHN0cmluZywKLSAq
IGl0IGlzIGNvbnZlcnRlZCB0byBVQ2hhciogd2l0aCB0aGUgaW52YXJpYW50IGNvbnZlcnRlci4K
LSAqIFRoZSByZXN1bHQgaXMgdGVybWluYXRlZCBieSAoVUNoYXIpMC4KLSAqIEBwYXJhbSBlbiB0
aGUgaXRlcmF0b3Igb2JqZWN0Ci0gKiBAcGFyYW0gcmVzdWx0TGVuZ3RoIHBvaW50ZXIgdG8gcmVj
ZWl2ZSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQKLSAqICAgICAgICAgICAgICAgICAgICAgKG5v
dCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIFxcMCkuCi0gKiAgICAgICAgICAgICAgICAgICAg
IElmIHRoZSBwb2ludGVyIGlzIE5VTEwgaXQgaXMgaWdub3JlZC4KLSAqIEBwYXJhbSBzdGF0dXMg
dGhlIGVycm9yIGNvZGUsIHNldCB0byBVX0VOVU1fT1VUX09GX1NZTkNfRVJST1IgaWYKLSAqICAg
ICAgICAgICAgICAgdGhlIGl0ZXJhdG9yIGlzIG91dCBvZiBzeW5jIHdpdGggaXRzIHNlcnZpY2Uu
Ci0gKiBAcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgc3RyaW5nLiAgVGhlIHN0cmluZyB3aWxsIGJl
Ci0gKiAgICAgICAgIHplcm8tdGVybWluYXRlZC4gIFRoZSByZXR1cm4gcG9pbnRlciBpcyBvd25l
ZCBieSB0aGlzIGl0ZXJhdG9yCi0gKiAgICAgICAgIGFuZCBtdXN0IG5vdCBiZSBkZWxldGVkIGJ5
IHRoZSBjYWxsZXIuICBUaGUgcG9pbnRlciBpcyB2YWxpZAotICogICAgICAgICB1bnRpbCB0aGUg
bmV4dCBjYWxsIHRvIGFueSB1ZW51bV8uLi4gbWV0aG9kLCBpbmNsdWRpbmcKLSAqICAgICAgICAg
dWVudW1fbmV4dCgpIG9yIHVlbnVtX3VuZXh0KCkuICBXaGVuIGFsbCBzdHJpbmdzIGhhdmUgYmVl
bgotICogICAgICAgICB0cmF2ZXJzZWQsIHJldHVybnMgTlVMTC4KLSAqIEBzdGFibGUgSUNVIDIu
MgotICovCi1VX1NUQUJMRSBjb25zdCBVQ2hhciogVV9FWFBPUlQyCi11ZW51bV91bmV4dChVRW51
bWVyYXRpb24qIGVuLAotICAgICAgICAgICAgaW50MzJfdCogcmVzdWx0TGVuZ3RoLAotICAgICAg
ICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsKLQotLyoqCi0gKiBSZXR1cm5zIHRoZSBuZXh0IGVs
ZW1lbnQgaW4gdGhlIGl0ZXJhdG9yJ3MgbGlzdC4gIElmIHRoZXJlIGFyZQotICogbm8gbW9yZSBl
bGVtZW50cywgcmV0dXJucyBOVUxMLiAgSWYgdGhlIGl0ZXJhdG9yIGlzIG91dC1vZi1zeW5jCi0g
KiB3aXRoIGl0cyBzZXJ2aWNlLCBzdGF0dXMgaXMgc2V0IHRvIFVfRU5VTV9PVVRfT0ZfU1lOQ19F
UlJPUiBhbmQKLSAqIE5VTEwgaXMgcmV0dXJuZWQuICBJZiB0aGUgbmF0aXZlIHNlcnZpY2Ugc3Ry
aW5nIGlzIGEgVUNoYXIqCi0gKiBzdHJpbmcsIGl0IGlzIGNvbnZlcnRlZCB0byBjaGFyKiB3aXRo
IHRoZSBpbnZhcmlhbnQgY29udmVydGVyLgotICogVGhlIHJlc3VsdCBpcyB0ZXJtaW5hdGVkIGJ5
IChjaGFyKTAuICBJZiB0aGUgY29udmVyc2lvbiBmYWlscwotICogKGJlY2F1c2UgYSBjaGFyYWN0
ZXIgY2Fubm90IGJlIGNvbnZlcnRlZCkgdGhlbiBzdGF0dXMgaXMgc2V0IHRvCi0gKiBVX0lOVkFS
SUFOVF9DT05WRVJTSU9OX0VSUk9SIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIHVuZGVmaW5lZAot
ICogKGJ1dCBub24tTlVMTCkuCi0gKiBAcGFyYW0gZW4gdGhlIGl0ZXJhdG9yIG9iamVjdAotICog
QHBhcmFtIHJlc3VsdExlbmd0aCBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIGxlbmd0aCBvZiB0aGUg
cmVzdWx0Ci0gKiAgICAgICAgICAgICAgICAgICAgIChub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5h
dGluZyBcXDApLgotICogICAgICAgICAgICAgICAgICAgICBJZiB0aGUgcG9pbnRlciBpcyBOVUxM
IGl0IGlzIGlnbm9yZWQuCi0gKiBAcGFyYW0gc3RhdHVzIHRoZSBlcnJvciBjb2RlLCBzZXQgdG8g
VV9FTlVNX09VVF9PRl9TWU5DX0VSUk9SIGlmCi0gKiAgICAgICAgICAgICAgIHRoZSBpdGVyYXRv
ciBpcyBvdXQgb2Ygc3luYyB3aXRoIGl0cyBzZXJ2aWNlLiAgU2V0IHRvCi0gKiAgICAgICAgICAg
ICAgIFVfSU5WQVJJQU5UX0NPTlZFUlNJT05fRVJST1IgaWYgdGhlIHVuZGVybHlpbmcgbmF0aXZl
IHN0cmluZyBpcwotICogICAgICAgICAgICAgICBVQ2hhciogYW5kIGNvbnZlcnNpb24gdG8gY2hh
ciogd2l0aCB0aGUgaW52YXJpYW50IGNvbnZlcnRlcgotICogICAgICAgICAgICAgICBmYWlscy4g
VGhpcyBlcnJvciBwZXJ0YWlucyBvbmx5IHRvIGN1cnJlbnQgc3RyaW5nLCBzbyBpdGVyYXRpb24K
LSAqICAgICAgICAgICAgICAgbWlnaHQgYmUgYWJsZSB0byBjb250aW51ZSBzdWNjZXNzZnVsbHku
Ci0gKiBAcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgc3RyaW5nLiAgVGhlIHN0cmluZyB3aWxsIGJl
Ci0gKiAgICAgICAgIHplcm8tdGVybWluYXRlZC4gIFRoZSByZXR1cm4gcG9pbnRlciBpcyBvd25l
ZCBieSB0aGlzIGl0ZXJhdG9yCi0gKiAgICAgICAgIGFuZCBtdXN0IG5vdCBiZSBkZWxldGVkIGJ5
IHRoZSBjYWxsZXIuICBUaGUgcG9pbnRlciBpcyB2YWxpZAotICogICAgICAgICB1bnRpbCB0aGUg
bmV4dCBjYWxsIHRvIGFueSB1ZW51bV8uLi4gbWV0aG9kLCBpbmNsdWRpbmcKLSAqICAgICAgICAg
dWVudW1fbmV4dCgpIG9yIHVlbnVtX3VuZXh0KCkuICBXaGVuIGFsbCBzdHJpbmdzIGhhdmUgYmVl
bgotICogICAgICAgICB0cmF2ZXJzZWQsIHJldHVybnMgTlVMTC4KLSAqIEBzdGFibGUgSUNVIDIu
MgotICovCi1VX1NUQUJMRSBjb25zdCBjaGFyKiBVX0VYUE9SVDIKLXVlbnVtX25leHQoVUVudW1l
cmF0aW9uKiBlbiwKLSAgICAgICAgICAgaW50MzJfdCogcmVzdWx0TGVuZ3RoLAotICAgICAgICAg
ICBVRXJyb3JDb2RlKiBzdGF0dXMpOwotCi0vKioKLSAqIFJlc2V0cyB0aGUgaXRlcmF0b3IgdG8g
dGhlIGN1cnJlbnQgbGlzdCBvZiBzZXJ2aWNlIElEcy4gIFRoaXMKLSAqIHJlLWVzdGFibGlzaGVz
IHN5bmMgd2l0aCB0aGUgc2VydmljZSBhbmQgcmV3aW5kcyB0aGUgaXRlcmF0b3IKLSAqIHRvIHN0
YXJ0IGF0IHRoZSBmaXJzdCBlbGVtZW50LgotICogQHBhcmFtIGVuIHRoZSBpdGVyYXRvciBvYmpl
Y3QKLSAqIEBwYXJhbSBzdGF0dXMgdGhlIGVycm9yIGNvZGUsIHNldCB0byBVX0VOVU1fT1VUX09G
X1NZTkNfRVJST1IgaWYKLSAqICAgICAgICAgICAgICAgdGhlIGl0ZXJhdG9yIGlzIG91dCBvZiBz
eW5jIHdpdGggaXRzIHNlcnZpY2UuICAKLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi1VX1NUQUJM
RSB2b2lkIFVfRVhQT1JUMgotdWVudW1fcmVzZXQoVUVudW1lcmF0aW9uKiBlbiwgVUVycm9yQ29k
ZSogc3RhdHVzKTsKLQotI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91
aXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VpdGVyLmgJ
KHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWl0ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw3MDcgKzAsMCBAQAotLyoKLSoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKLSoKLSogICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVz
cyBNYWNoaW5lcwotKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIGZpbGUgbmFtZTogIHVpdGVyLmgK
LSogICBlbmNvZGluZzogICBVUy1BU0NJSQotKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQot
KiAgIGluZGVudGF0aW9uOjQKLSoKLSogICBjcmVhdGVkIG9uOiAyMDAyamFuMTgKLSogICBjcmVh
dGVkIGJ5OiBNYXJrdXMgVy4gU2NoZXJlcgotKi8KLQotI2lmbmRlZiBfX1VJVEVSX0hfXwotI2Rl
ZmluZSBfX1VJVEVSX0hfXwotCi0vKioKLSAqIFxmaWxlCi0gKiBcYnJpZWYgQyBBUEk6IFVuaWNv
ZGUgQ2hhcmFjdGVyIEl0ZXJhdGlvbgotICoKLSAqIEBzZWUgVUNoYXJJdGVyYXRvcgotICovCi0K
LSNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgotCi0jaWZkZWYgWFBfQ1BMVVNQTFVTCi0gICAg
VV9OQU1FU1BBQ0VfQkVHSU4KLQotICAgIGNsYXNzIENoYXJhY3Rlckl0ZXJhdG9yOwotICAgIGNs
YXNzIFJlcGxhY2VhYmxlOwotCi0gICAgVV9OQU1FU1BBQ0VfRU5ECi0jZW5kaWYKLQotVV9DREVD
TF9CRUdJTgotCi1zdHJ1Y3QgVUNoYXJJdGVyYXRvcjsKLXR5cGVkZWYgc3RydWN0IFVDaGFySXRl
cmF0b3IgVUNoYXJJdGVyYXRvcjsgLyoqPCBDIHR5cGVkZWYgZm9yIHN0cnVjdCBVQ2hhckl0ZXJh
dG9yLiBAc3RhYmxlIElDVSAyLjEgKi8KLQotLyoqCi0gKiBPcmlnaW4gY29uc3RhbnRzIGZvciBV
Q2hhckl0ZXJhdG9yLmdldEluZGV4KCkgYW5kIFVDaGFySXRlcmF0b3IubW92ZSgpLgotICogQHNl
ZSBVQ2hhckl0ZXJhdG9yTW92ZQotICogQHNlZSBVQ2hhckl0ZXJhdG9yCi0gKiBAc3RhYmxlIElD
VSAyLjEKLSAqLwotdHlwZWRlZiBlbnVtIFVDaGFySXRlcmF0b3JPcmlnaW4gewotICAgIFVJVEVS
X1NUQVJULCBVSVRFUl9DVVJSRU5ULCBVSVRFUl9MSU1JVCwgVUlURVJfWkVSTywgVUlURVJfTEVO
R1RICi19IFVDaGFySXRlcmF0b3JPcmlnaW47Ci0KLS8qKiBDb25zdGFudHMgZm9yIFVDaGFySXRl
cmF0b3IuIEBzdGFibGUgSUNVIDIuNiAqLwotZW51bSB7Ci0gICAgLyoqCi0gICAgICogQ29uc3Rh
bnQgdmFsdWUgdGhhdCBtYXkgYmUgcmV0dXJuZWQgYnkgVUNoYXJJdGVyYXRvck1vdmUKLSAgICAg
KiBpbmRpY2F0aW5nIHRoYXQgdGhlIGZpbmFsIFVURi0xNiBpbmRleCBpcyBub3Qga25vd24sIGJ1
dCB0aGF0IHRoZSBtb3ZlIHN1Y2NlZWRlZC4KLSAgICAgKiBUaGlzIGNhbiBvY2N1ciB3aGVuIG1v
dmluZyByZWxhdGl2ZSB0byBsaW1pdCBvciBsZW5ndGgsIG9yCi0gICAgICogd2hlbiBtb3Zpbmcg
cmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgaW5kZXggYWZ0ZXIgYSBzZXRTdGF0ZSgpCi0gICAgICog
d2hlbiB0aGUgY3VycmVudCBVVEYtMTYgaW5kZXggaXMgbm90IGtub3duLgotICAgICAqCi0gICAg
ICogSXQgd291bGQgYmUgdmVyeSBpbmVmZmljaWVudCB0byBoYXZlIHRvIGNvdW50IGZyb20gdGhl
IGJlZ2lubmluZyBvZiB0aGUgdGV4dAotICAgICAqIGp1c3QgdG8gZ2V0IHRoZSBjdXJyZW50L2xp
bWl0L2xlbmd0aCBpbmRleCBhZnRlciBtb3ZpbmcgcmVsYXRpdmUgdG8gaXQuCi0gICAgICogVGhl
IGFjdHVhbCBpbmRleCBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRoIGdldEluZGV4KFVJVEVSX0NVUlJF
TlQpCi0gICAgICogd2hpY2ggd2lsbCBjb3VudCB0aGUgVUNoYXJzIGlmIG5lY2Vzc2FyeS4KLSAg
ICAgKgotICAgICAqIEBzdGFibGUgSUNVIDIuNgotICAgICAqLwotICAgIFVJVEVSX1VOS05PV05f
SU5ERVg9LTIKLX07Ci0KLQotLyoqCi0gKiBDb25zdGFudCBmb3IgVUNoYXJJdGVyYXRvciBnZXRT
dGF0ZSgpIGluZGljYXRpbmcgYW4gZXJyb3Igb3IKLSAqIGFuIHVua25vd24gc3RhdGUuCi0gKiBS
ZXR1cm5lZCBieSB1aXRlcl9nZXRTdGF0ZSgpL1VDaGFySXRlcmF0b3JHZXRTdGF0ZQotICogd2hl
biBhbiBlcnJvciBvY2N1cnMuCi0gKiBBbHNvLCBzb21lIFVDaGFySXRlcmF0b3IgaW1wbGVtZW50
YXRpb25zIG1heSBub3QgYmUgYWJsZSB0byByZXR1cm4KLSAqIGEgdmFsaWQgc3RhdGUgZm9yIGVh
Y2ggcG9zaXRpb24uIFRoaXMgd2lsbCBiZSBjbGVhcmx5IGRvY3VtZW50ZWQKLSAqIGZvciBlYWNo
IHN1Y2ggaXRlcmF0b3IgKG5vbmUgb2YgdGhlIHB1YmxpYyBvbmVzIGhlcmUpLgotICoKLSAqIEBz
dGFibGUgSUNVIDIuNgotICovCi0jZGVmaW5lIFVJVEVSX05PX1NUQVRFICgodWludDMyX3QpMHhm
ZmZmZmZmZikKLQotLyoqCi0gKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVQ2hhckl0
ZXJhdG9yLmdldEluZGV4KCkuCi0gKgotICogR2V0cyB0aGUgY3VycmVudCBwb3NpdGlvbiwgb3Ig
dGhlIHN0YXJ0IG9yIGxpbWl0IG9mIHRoZQotICogaXRlcmF0aW9uIHJhbmdlLgotICoKLSAqIFRo
aXMgZnVuY3Rpb24gbWF5IHBlcmZvcm0gc2xvd2x5IGZvciBVSVRFUl9DVVJSRU5UIGFmdGVyIHNl
dFN0YXRlKCkgd2FzIGNhbGxlZCwKLSAqIG9yIGZvciBVSVRFUl9MRU5HVEgsIGJlY2F1c2UgYW4g
aXRlcmF0b3IgaW1wbGVtZW50YXRpb24gbWF5IGhhdmUgdG8gY291bnQKLSAqIFVDaGFycyBpZiB0
aGUgdW5kZXJseWluZyBzdG9yYWdlIGlzIG5vdCBVVEYtMTYuCi0gKgotICogQHBhcmFtIGl0ZXIg
dGhlIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKLSAqIEBwYXJhbSBv
cmlnaW4gZ2V0IHRoZSAwLCBzdGFydCwgbGltaXQsIGxlbmd0aCwgb3IgY3VycmVudCBpbmRleAot
ICogQHJldHVybiB0aGUgcmVxdWVzdGVkIGluZGV4LCBvciBVX1NFTlRJTkVMIGluIGFuIGVycm9y
IGNvbmRpdGlvbgotICoKLSAqIEBzZWUgVUNoYXJJdGVyYXRvck9yaWdpbgotICogQHNlZSBVQ2hh
ckl0ZXJhdG9yCi0gKiBAc3RhYmxlIElDVSAyLjEKLSAqLwotdHlwZWRlZiBpbnQzMl90IFVfQ0FM
TENPTlYKLVVDaGFySXRlcmF0b3JHZXRJbmRleChVQ2hhckl0ZXJhdG9yICppdGVyLCBVQ2hhckl0
ZXJhdG9yT3JpZ2luIG9yaWdpbik7Ci0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlv
biBmb3IgVUNoYXJJdGVyYXRvci5tb3ZlKCkuCi0gKgotICogVXNlIGl0ZXItPm1vdmUoaXRlciwg
aW5kZXgsIFVJVEVSX1pFUk8pIGxpa2UgQ2hhcmFjdGVySXRlcmF0b3I6OnNldEluZGV4KGluZGV4
KS4KLSAqCi0gKiBNb3ZlcyB0aGUgY3VycmVudCBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgc3Rh
cnQgb3IgbGltaXQgb2YgdGhlCi0gKiBpdGVyYXRpb24gcmFuZ2UsIG9yIHJlbGF0aXZlIHRvIHRo
ZSBjdXJyZW50IHBvc2l0aW9uIGl0c2VsZi4KLSAqIFRoZSBtb3ZlbWVudCBpcyBleHByZXNzZWQg
aW4gbnVtYmVycyBvZiBjb2RlIHVuaXRzIGZvcndhcmQKLSAqIG9yIGJhY2t3YXJkIGJ5IHNwZWNp
ZnlpbmcgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBkZWx0YS4KLSAqIE91dCBvZiBib3VuZHMgbW92
ZW1lbnQgd2lsbCBiZSBwaW5uZWQgdG8gdGhlIHN0YXJ0IG9yIGxpbWl0LgotICoKLSAqIFRoaXMg
ZnVuY3Rpb24gbWF5IHBlcmZvcm0gc2xvd2x5IGZvciBtb3ZpbmcgcmVsYXRpdmUgdG8gVUlURVJf
TEVOR1RICi0gKiBiZWNhdXNlIGFuIGl0ZXJhdG9yIGltcGxlbWVudGF0aW9uIG1heSBoYXZlIHRv
IGNvdW50IHRoZSByZXN0IG9mIHRoZQotICogVUNoYXJzIGlmIHRoZSBuYXRpdmUgc3RvcmFnZSBp
cyBub3QgVVRGLTE2LgotICoKLSAqIFdoZW4gbW92aW5nIHJlbGF0aXZlIHRvIHRoZSBsaW1pdCBv
ciBsZW5ndGgsIG9yCi0gKiByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwb3NpdGlvbiBhZnRlciBz
ZXRTdGF0ZSgpIHdhcyBjYWxsZWQsCi0gKiBtb3ZlKCkgbWF5IHJldHVybiBVSVRFUl9VTktOT1dO
X0lOREVYICgtMikgdG8gYXZvaWQgYW4gaW5lZmZpY2llbnQKLSAqIGRldGVybWluYXRpb24gb2Yg
dGhlIGFjdHVhbCBVVEYtMTYgaW5kZXguCi0gKiBUaGUgYWN0dWFsIGluZGV4IGNhbiBiZSBkZXRl
cm1pbmVkIHdpdGggZ2V0SW5kZXgoVUlURVJfQ1VSUkVOVCkKLSAqIHdoaWNoIHdpbGwgY291bnQg
dGhlIFVDaGFycyBpZiBuZWNlc3NhcnkuCi0gKiBTZWUgVUlURVJfVU5LTk9XTl9JTkRFWCBmb3Ig
ZGV0YWlscy4KLSAqCi0gKiBAcGFyYW0gaXRlciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUg
KCJ0aGlzIHBvaW50ZXIiKQotICogQHBhcmFtIGRlbHRhIGNhbiBiZSBwb3NpdGl2ZSwgemVybywg
b3IgbmVnYXRpdmUKLSAqIEBwYXJhbSBvcmlnaW4gbW92ZSByZWxhdGl2ZSB0byB0aGUgMCwgc3Rh
cnQsIGxpbWl0LCBsZW5ndGgsIG9yIGN1cnJlbnQgaW5kZXgKLSAqIEByZXR1cm4gdGhlIG5ldyBp
bmRleCwgb3IgVV9TRU5USU5FTCBvbiBhbiBlcnJvciBjb25kaXRpb24sCi0gKiAgICAgICAgIG9y
IFVJVEVSX1VOS05PV05fSU5ERVggd2hlbiB0aGUgaW5kZXggaXMgbm90IGtub3duLgotICoKLSAq
IEBzZWUgVUNoYXJJdGVyYXRvck9yaWdpbgotICogQHNlZSBVQ2hhckl0ZXJhdG9yCi0gKiBAc2Vl
IFVJVEVSX1VOS05PV05fSU5ERVgKLSAqIEBzdGFibGUgSUNVIDIuMQotICovCi10eXBlZGVmIGlu
dDMyX3QgVV9DQUxMQ09OVgotVUNoYXJJdGVyYXRvck1vdmUoVUNoYXJJdGVyYXRvciAqaXRlciwg
aW50MzJfdCBkZWx0YSwgVUNoYXJJdGVyYXRvck9yaWdpbiBvcmlnaW4pOwotCi0vKioKLSAqIEZ1
bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVDaGFySXRlcmF0b3IuaGFzTmV4dCgpLgotICoK
LSAqIENoZWNrIGlmIGN1cnJlbnQoKSBhbmQgbmV4dCgpIGNhbiBzdGlsbAotICogcmV0dXJuIGFu
b3RoZXIgY29kZSB1bml0LgotICoKLSAqIEBwYXJhbSBpdGVyIHRoZSBVQ2hhckl0ZXJhdG9yIHN0
cnVjdHVyZSAoInRoaXMgcG9pbnRlciIpCi0gKiBAcmV0dXJuIGJvb2xlYW4gdmFsdWUgZm9yIHdo
ZXRoZXIgY3VycmVudCgpIGFuZCBuZXh0KCkgY2FuIHN0aWxsIHJldHVybiBhbm90aGVyIGNvZGUg
dW5pdAotICoKLSAqIEBzZWUgVUNoYXJJdGVyYXRvcgotICogQHN0YWJsZSBJQ1UgMi4xCi0gKi8K
LXR5cGVkZWYgVUJvb2wgVV9DQUxMQ09OVgotVUNoYXJJdGVyYXRvckhhc05leHQoVUNoYXJJdGVy
YXRvciAqaXRlcik7Ci0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVUNo
YXJJdGVyYXRvci5oYXNQcmV2aW91cygpLgotICoKLSAqIENoZWNrIGlmIHByZXZpb3VzKCkgY2Fu
IHN0aWxsIHJldHVybiBhbm90aGVyIGNvZGUgdW5pdC4KLSAqCi0gKiBAcGFyYW0gaXRlciB0aGUg
VUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50ZXIiKQotICogQHJldHVybiBib29s
ZWFuIHZhbHVlIGZvciB3aGV0aGVyIHByZXZpb3VzKCkgY2FuIHN0aWxsIHJldHVybiBhbm90aGVy
IGNvZGUgdW5pdAotICoKLSAqIEBzZWUgVUNoYXJJdGVyYXRvcgotICogQHN0YWJsZSBJQ1UgMi4x
Ci0gKi8KLXR5cGVkZWYgVUJvb2wgVV9DQUxMQ09OVgotVUNoYXJJdGVyYXRvckhhc1ByZXZpb3Vz
KFVDaGFySXRlcmF0b3IgKml0ZXIpOwotIAotLyoqCi0gKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0
aW9uIGZvciBVQ2hhckl0ZXJhdG9yLmN1cnJlbnQoKS4KLSAqCi0gKiBSZXR1cm4gdGhlIGNvZGUg
dW5pdCBhdCB0aGUgY3VycmVudCBwb3NpdGlvbiwKLSAqIG9yIFVfU0VOVElORUwgaWYgdGhlcmUg
aXMgbm9uZSAoaW5kZXggaXMgYXQgdGhlIGxpbWl0KS4KLSAqCi0gKiBAcGFyYW0gaXRlciB0aGUg
VUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50ZXIiKQotICogQHJldHVybiB0aGUg
Y3VycmVudCBjb2RlIHVuaXQKLSAqCi0gKiBAc2VlIFVDaGFySXRlcmF0b3IKLSAqIEBzdGFibGUg
SUNVIDIuMQotICovCi10eXBlZGVmIFVDaGFyMzIgVV9DQUxMQ09OVgotVUNoYXJJdGVyYXRvckN1
cnJlbnQoVUNoYXJJdGVyYXRvciAqaXRlcik7Ci0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNs
YXJhdGlvbiBmb3IgVUNoYXJJdGVyYXRvci5uZXh0KCkuCi0gKgotICogUmV0dXJuIHRoZSBjb2Rl
IHVuaXQgYXQgdGhlIGN1cnJlbnQgaW5kZXggYW5kIGluY3JlbWVudAotICogdGhlIGluZGV4IChw
b3N0LWluY3JlbWVudCwgbGlrZSBzW2krK10pLAotICogb3IgcmV0dXJuIFVfU0VOVElORUwgaWYg
dGhlcmUgaXMgbm9uZSAoaW5kZXggaXMgYXQgdGhlIGxpbWl0KS4KLSAqCi0gKiBAcGFyYW0gaXRl
ciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50ZXIiKQotICogQHJldHVy
biB0aGUgY3VycmVudCBjb2RlIHVuaXQgKGFuZCBwb3N0LWluY3JlbWVudCB0aGUgY3VycmVudCBp
bmRleCkKLSAqCi0gKiBAc2VlIFVDaGFySXRlcmF0b3IKLSAqIEBzdGFibGUgSUNVIDIuMQotICov
Ci10eXBlZGVmIFVDaGFyMzIgVV9DQUxMQ09OVgotVUNoYXJJdGVyYXRvck5leHQoVUNoYXJJdGVy
YXRvciAqaXRlcik7Ci0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVUNo
YXJJdGVyYXRvci5wcmV2aW91cygpLgotICoKLSAqIERlY3JlbWVudCB0aGUgaW5kZXggYW5kIHJl
dHVybiB0aGUgY29kZSB1bml0IGZyb20gdGhlcmUKLSAqIChwcmUtZGVjcmVtZW50LCBsaWtlIHNb
LS1pXSksCi0gKiBvciByZXR1cm4gVV9TRU5USU5FTCBpZiB0aGVyZSBpcyBub25lIChpbmRleCBp
cyBhdCB0aGUgc3RhcnQpLgotICoKLSAqIEBwYXJhbSBpdGVyIHRoZSBVQ2hhckl0ZXJhdG9yIHN0
cnVjdHVyZSAoInRoaXMgcG9pbnRlciIpCi0gKiBAcmV0dXJuIHRoZSBwcmV2aW91cyBjb2RlIHVu
aXQgKGFmdGVyIHByZS1kZWNyZW1lbnRpbmcgdGhlIGN1cnJlbnQgaW5kZXgpCi0gKgotICogQHNl
ZSBVQ2hhckl0ZXJhdG9yCi0gKiBAc3RhYmxlIElDVSAyLjEKLSAqLwotdHlwZWRlZiBVQ2hhcjMy
IFVfQ0FMTENPTlYKLVVDaGFySXRlcmF0b3JQcmV2aW91cyhVQ2hhckl0ZXJhdG9yICppdGVyKTsK
LQotLyoqCi0gKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVQ2hhckl0ZXJhdG9yLnJl
c2VydmVkRm4oKS4KLSAqIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlLgotICoKLSAqIEBwYXJhbSBp
dGVyIHRoZSBVQ2hhckl0ZXJhdG9yIHN0cnVjdHVyZSAoInRoaXMgcG9pbnRlciIpCi0gKiBAcGFy
YW0gc29tZXRoaW5nIHNvbWUgaW50ZWdlciBhcmd1bWVudAotICogQHJldHVybiBzb21lIGludGVn
ZXIKLSAqCi0gKiBAc2VlIFVDaGFySXRlcmF0b3IKLSAqIEBzdGFibGUgSUNVIDIuMQotICovCi10
eXBlZGVmIGludDMyX3QgVV9DQUxMQ09OVgotVUNoYXJJdGVyYXRvclJlc2VydmVkKFVDaGFySXRl
cmF0b3IgKml0ZXIsIGludDMyX3Qgc29tZXRoaW5nKTsKLQotLyoqCi0gKiBGdW5jdGlvbiB0eXBl
IGRlY2xhcmF0aW9uIGZvciBVQ2hhckl0ZXJhdG9yLmdldFN0YXRlKCkuCi0gKgotICogR2V0IHRo
ZSAic3RhdGUiIG9mIHRoZSBpdGVyYXRvciBpbiB0aGUgZm9ybSBvZiBhIHNpbmdsZSAzMi1iaXQg
d29yZC4KLSAqIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlIHN0YXRlIHZhbHVlIGJlIGNhbGN1
bGF0ZWQgdG8gYmUgYXMgc21hbGwgYXMKLSAqIGlzIGZlYXNpYmxlLiBGb3Igc3RyaW5ncyB3aXRo
IGxpbWl0ZWQgbGVuZ3RocywgZmV3ZXIgdGhhbiAzMiBiaXRzIG1heQotICogYmUgc3VmZmljaWVu
dC4KLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG9nZXRoZXIgd2l0aCBzZXRTdGF0ZSgpL1VDaGFySXRl
cmF0b3JTZXRTdGF0ZQotICogdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgaXRlcmF0b3IgcG9zaXRp
b24gbW9yZSBlZmZpY2llbnRseSB0aGFuIHdpdGgKLSAqIGdldEluZGV4KCkvbW92ZSgpLgotICoK
LSAqIFRoZSBpdGVyYXRvciBzdGF0ZSBpcyBkZWZpbmVkIGFzIGEgdWludDMyX3QgdmFsdWUgYmVj
YXVzZSBpdCBpcyBkZXNpZ25lZAotICogZm9yIHVzZSBpbiB1Y29sX25leHRTb3J0S2V5UGFydCgp
IHdoaWNoIHByb3ZpZGVzIDMyIGJpdHMgdG8gc3RvcmUgdGhlIHN0YXRlCi0gKiBvZiB0aGUgY2hh
cmFjdGVyIGl0ZXJhdG9yLgotICoKLSAqIFdpdGggc29tZSBVQ2hhckl0ZXJhdG9yIGltcGxlbWVu
dGF0aW9ucyAoZS5nLiwgVVRGLTgpLAotICogZ2V0dGluZyBhbmQgc2V0dGluZyB0aGUgVVRGLTE2
IGluZGV4IHdpdGggZXhpc3RpbmcgZnVuY3Rpb25zCi0gKiAoZ2V0SW5kZXgoVUlURVJfQ1VSUkVO
VCkgZm9sbG93ZWQgYnkgbW92ZShwb3MsIFVJVEVSX1pFUk8pKSBpcyBwb3NzaWJsZSBidXQKLSAq
IHJlbGF0aXZlbHkgc2xvdyBiZWNhdXNlIHRoZSBpdGVyYXRvciBoYXMgdG8gIndhbGsiIGZyb20g
YSBrbm93biBpbmRleAotICogdG8gdGhlIHJlcXVlc3RlZCBvbmUuCi0gKiBUaGlzIHRha2VzIG1v
cmUgdGltZSB0aGUgZmFydGhlciBpdCBuZWVkcyB0byBnby4KLSAqCi0gKiBBbiBvcGFxdWUgc3Rh
dGUgdmFsdWUgYWxsb3dzIGFuIGl0ZXJhdG9yIGltcGxlbWVudGF0aW9uIHRvIHByb3ZpZGUKLSAq
IGFuIGludGVybmFsIGluZGV4IChVVEYtODogdGhlIHNvdXJjZSBieXRlIGFycmF5IGluZGV4KSBm
b3IKLSAqIGZhc3QsIGNvbnN0YW50LXRpbWUgcmVzdG9yYXRpb24uCi0gKgotICogQWZ0ZXIgY2Fs
bGluZyBzZXRTdGF0ZSgpLCBhIGdldEluZGV4KFVJVEVSX0NVUlJFTlQpIG1heSBiZSBzbG93IGJl
Y2F1c2UKLSAqIHRoZSBVVEYtMTYgaW5kZXggbWF5IG5vdCBiZSByZXN0b3JlZCBhcyB3ZWxsLCBi
dXQgdGhlIGl0ZXJhdG9yIGNhbiBkZWxpdmVyCi0gKiB0aGUgY29ycmVjdCB0ZXh0IGNvbnRlbnRz
IGFuZCBtb3ZlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uCi0gKiB3aXRob3V0IHBl
cmZvcm1hbmNlIGRlZ3JhZGF0aW9uLgotICoKLSAqIFNvbWUgVUNoYXJJdGVyYXRvciBpbXBsZW1l
bnRhdGlvbnMgbWF5IG5vdCBiZSBhYmxlIHRvIHJldHVybgotICogYSB2YWxpZCBzdGF0ZSBmb3Ig
ZWFjaCBwb3NpdGlvbiwgaW4gd2hpY2ggY2FzZSB0aGV5IHJldHVybiBVSVRFUl9OT19TVEFURSBp
bnN0ZWFkLgotICogVGhpcyB3aWxsIGJlIGNsZWFybHkgZG9jdW1lbnRlZCBmb3IgZWFjaCBzdWNo
IGl0ZXJhdG9yIChub25lIG9mIHRoZSBwdWJsaWMgb25lcyBoZXJlKS4KLSAqCi0gKiBAcGFyYW0g
aXRlciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50ZXIiKQotICogQHJl
dHVybiB0aGUgc3RhdGUgd29yZAotICoKLSAqIEBzZWUgVUNoYXJJdGVyYXRvcgotICogQHNlZSBV
Q2hhckl0ZXJhdG9yU2V0U3RhdGUKLSAqIEBzZWUgVUlURVJfTk9fU1RBVEUKLSAqIEBzdGFibGUg
SUNVIDIuNgotICovCi10eXBlZGVmIHVpbnQzMl90IFVfQ0FMTENPTlYKLVVDaGFySXRlcmF0b3JH
ZXRTdGF0ZShjb25zdCBVQ2hhckl0ZXJhdG9yICppdGVyKTsKLQotLyoqCi0gKiBGdW5jdGlvbiB0
eXBlIGRlY2xhcmF0aW9uIGZvciBVQ2hhckl0ZXJhdG9yLnNldFN0YXRlKCkuCi0gKgotICogUmVz
dG9yZSB0aGUgInN0YXRlIiBvZiB0aGUgaXRlcmF0b3IgdXNpbmcgYSBzdGF0ZSB3b3JkIGZyb20g
YSBnZXRTdGF0ZSgpIGNhbGwuCi0gKiBUaGUgaXRlcmF0b3Igb2JqZWN0IG5lZWQgbm90IGJlIHRo
ZSBzYW1lIG9uZSBhcyBmb3Igd2hpY2ggZ2V0U3RhdGUoKSB3YXMgY2FsbGVkLAotICogYnV0IGl0
IG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSAoc2V0IHVwIHVzaW5nIHRoZSBzYW1lIHVpdGVyX3Nl
dFhZWiBmdW5jdGlvbikKLSAqIGFuZCBpdCBtdXN0IGl0ZXJhdGUgb3ZlciB0aGUgc2FtZSBzdHJp
bmcKLSAqIChiaW5hcnkgaWRlbnRpY2FsIHJlZ2FyZGxlc3Mgb2YgbWVtb3J5IGFkZHJlc3MpLgot
ICogRm9yIG1vcmUgYWJvdXQgdGhlIHN0YXRlIHdvcmQgc2VlIFVDaGFySXRlcmF0b3JHZXRTdGF0
ZS4KLSAqCi0gKiBBZnRlciBjYWxsaW5nIHNldFN0YXRlKCksIGEgZ2V0SW5kZXgoVUlURVJfQ1VS
UkVOVCkgbWF5IGJlIHNsb3cgYmVjYXVzZQotICogdGhlIFVURi0xNiBpbmRleCBtYXkgbm90IGJl
IHJlc3RvcmVkIGFzIHdlbGwsIGJ1dCB0aGUgaXRlcmF0b3IgY2FuIGRlbGl2ZXIKLSAqIHRoZSBj
b3JyZWN0IHRleHQgY29udGVudHMgYW5kIG1vdmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcG9z
aXRpb24KLSAqIHdpdGhvdXQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uCi0gKgotICogQHBhcmFt
IGl0ZXIgdGhlIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKLSAqIEBw
YXJhbSBzdGF0ZSB0aGUgc3RhdGUgd29yZCBmcm9tIGEgZ2V0U3RhdGUoKSBjYWxsCi0gKiAgICAg
ICAgICAgICAgb24gYSBzYW1lLXR5cGUsIHNhbWUtc3RyaW5nIGl0ZXJhdG9yCi0gKiBAcGFyYW0g
cEVycm9yQ29kZSBNdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVl
LAotICogICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJl
IGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KLSAqCi0gKiBAc2VlIFVDaGFySXRlcmF0b3IKLSAq
IEBzZWUgVUNoYXJJdGVyYXRvckdldFN0YXRlCi0gKiBAc3RhYmxlIElDVSAyLjYKLSAqLwotdHlw
ZWRlZiB2b2lkIFVfQ0FMTENPTlYKLVVDaGFySXRlcmF0b3JTZXRTdGF0ZShVQ2hhckl0ZXJhdG9y
ICppdGVyLCB1aW50MzJfdCBzdGF0ZSwgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7Ci0KLQotLyoq
Ci0gKiBDIEFQSSBmb3IgY29kZSB1bml0IGl0ZXJhdGlvbi4KLSAqIFRoaXMgY2FuIGJlIHVzZWQg
YXMgYSBDIHdyYXBwZXIgYXJvdW5kCi0gKiBDaGFyYWN0ZXJJdGVyYXRvciwgUmVwbGFjZWFibGUs
IG9yIGltcGxlbWVudGVkIHVzaW5nIHNpbXBsZSBzdHJpbmdzLCBldGMuCi0gKgotICogVGhlcmUg
YXJlIHR3byByb2xlcyBmb3IgdXNpbmcgVUNoYXJJdGVyYXRvcjoKLSAqCi0gKiBBICJwcm92aWRl
ciIgc2V0cyB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBjb250cm9scyB0aGUg
InByb3RlY3RlZCIKLSAqIGZpZWxkcyBvZiB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUuIEEg
InByb3ZpZGVyIiBwYXNzZXMgYSBVQ2hhckl0ZXJhdG9yCi0gKiBpbnRvIEMgQVBJcyB0aGF0IG5l
ZWQgYSBVQ2hhckl0ZXJhdG9yIGFzIGFuIGFic3RyYWN0LCBmbGV4aWJsZSBzdHJpbmcgaW50ZXJm
YWNlLgotICoKLSAqIEltcGxlbWVudGF0aW9ucyBvZiBzdWNoIEMgQVBJcyBhcmUgImNhbGxlcnMi
IG9mIFVDaGFySXRlcmF0b3IgZnVuY3Rpb25zOwotICogdGhleSBvbmx5IHVzZSB0aGUgInB1Ymxp
YyIgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIG5ldmVyIGFjY2VzcyB0aGUgInByb3RlY3RlZCIKLSAq
IGZpZWxkcyBkaXJlY3RseS4KLSAqCi0gKiBUaGUgY3VycmVudCgpIGFuZCBuZXh0KCkgZnVuY3Rp
b25zIG9ubHkgY2hlY2sgdGhlIGN1cnJlbnQgaW5kZXggYWdhaW5zdCB0aGUKLSAqIGxpbWl0LCBh
bmQgcHJldmlvdXMoKSBvbmx5IGNoZWNrcyB0aGUgY3VycmVudCBpbmRleCBhZ2FpbnN0IHRoZSBz
dGFydCwKLSAqIHRvIHNlZSBpZiB0aGUgaXRlcmF0b3IgYWxyZWFkeSByZWFjaGVkIHRoZSBlbmQg
b2YgdGhlIGl0ZXJhdGlvbiByYW5nZS4KLSAqCi0gKiBUaGUgYXNzdW1wdGlvbiAtIGluIGFsbCBp
dGVyYXRvcnMgLSBpcyB0aGF0IHRoZSBpbmRleCBpcyBtb3ZlZCB2aWEgdGhlIEFQSSwKLSAqIHdo
aWNoIG1lYW5zIGl0IHdvbid0IGdvIG91dCBvZiBib3VuZHMsIG9yIHRoZSBpbmRleCBpcyBtb2Rp
ZmllZCBieQotICogdXNlciBjb2RlIHRoYXQga25vd3MgZW5vdWdoIGFib3V0IHRoZSBpdGVyYXRv
ciBpbXBsZW1lbnRhdGlvbiB0byBzZXQgdmFsaWQKLSAqIGluZGV4IHZhbHVlcy4KLSAqCi0gKiBV
Q2hhckl0ZXJhdG9yIGZ1bmN0aW9ucyByZXR1cm4gY29kZSB1bml0IHZhbHVlcyAwLi4weGZmZmYs
Ci0gKiBvciBVX1NFTlRJTkVMIGlmIHRoZSBpdGVyYXRpb24gYm91bmRzIGFyZSByZWFjaGVkLgot
ICoKLSAqIEBzdGFibGUgSUNVIDIuMQotICovCi1zdHJ1Y3QgVUNoYXJJdGVyYXRvciB7Ci0gICAg
LyoqCi0gICAgICogKHByb3RlY3RlZCkgUG9pbnRlciB0byBzdHJpbmcgb3Igd3JhcHBlZCBvYmpl
Y3Qgb3Igc2ltaWxhci4KLSAgICAgKiBOb3QgdXNlZCBieSBjYWxsZXIuCi0gICAgICogQHN0YWJs
ZSBJQ1UgMi4xCi0gICAgICovCi0gICAgY29uc3Qgdm9pZCAqY29udGV4dDsKLQotICAgIC8qKgot
ICAgICAqIChwcm90ZWN0ZWQpIExlbmd0aCBvZiBzdHJpbmcgb3Igc2ltaWxhci4KLSAgICAgKiBO
b3QgdXNlZCBieSBjYWxsZXIuCi0gICAgICogQHN0YWJsZSBJQ1UgMi4xCi0gICAgICovCi0gICAg
aW50MzJfdCBsZW5ndGg7Ci0KLSAgICAvKioKLSAgICAgKiAocHJvdGVjdGVkKSBTdGFydCBpbmRl
eCBvciBzaW1pbGFyLgotICAgICAqIE5vdCB1c2VkIGJ5IGNhbGxlci4KLSAgICAgKiBAc3RhYmxl
IElDVSAyLjEKLSAgICAgKi8KLSAgICBpbnQzMl90IHN0YXJ0OwotCi0gICAgLyoqCi0gICAgICog
KHByb3RlY3RlZCkgQ3VycmVudCBpbmRleCBvciBzaW1pbGFyLgotICAgICAqIE5vdCB1c2VkIGJ5
IGNhbGxlci4KLSAgICAgKiBAc3RhYmxlIElDVSAyLjEKLSAgICAgKi8KLSAgICBpbnQzMl90IGlu
ZGV4OwotCi0gICAgLyoqCi0gICAgICogKHByb3RlY3RlZCkgTGltaXQgaW5kZXggb3Igc2ltaWxh
ci4KLSAgICAgKiBOb3QgdXNlZCBieSBjYWxsZXIuCi0gICAgICogQHN0YWJsZSBJQ1UgMi4xCi0g
ICAgICovCi0gICAgaW50MzJfdCBsaW1pdDsKLQotICAgIC8qKgotICAgICAqIChwcm90ZWN0ZWQp
IFVzZWQgYnkgVVRGLTggaXRlcmF0b3JzIGFuZCBwb3NzaWJseSBvdGhlcnMuCi0gICAgICogQHN0
YWJsZSBJQ1UgMi4xCi0gICAgICovCi0gICAgaW50MzJfdCByZXNlcnZlZEZpZWxkOwotCi0gICAg
LyoqCi0gICAgICogKHB1YmxpYykgUmV0dXJucyB0aGUgY3VycmVudCBwb3NpdGlvbiBvciB0aGUK
LSAgICAgKiBzdGFydCBvciBsaW1pdCBpbmRleCBvZiB0aGUgaXRlcmF0aW9uIHJhbmdlLgotICAg
ICAqCi0gICAgICogQHNlZSBVQ2hhckl0ZXJhdG9yR2V0SW5kZXgKLSAgICAgKiBAc3RhYmxlIElD
VSAyLjEKLSAgICAgKi8KLSAgICBVQ2hhckl0ZXJhdG9yR2V0SW5kZXggKmdldEluZGV4OwotCi0g
ICAgLyoqCi0gICAgICogKHB1YmxpYykgTW92ZXMgdGhlIGN1cnJlbnQgcG9zaXRpb24gcmVsYXRp
dmUgdG8gdGhlIHN0YXJ0IG9yIGxpbWl0IG9mIHRoZQotICAgICAqIGl0ZXJhdGlvbiByYW5nZSwg
b3IgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcG9zaXRpb24gaXRzZWxmLgotICAgICAqIFRoZSBt
b3ZlbWVudCBpcyBleHByZXNzZWQgaW4gbnVtYmVycyBvZiBjb2RlIHVuaXRzIGZvcndhcmQKLSAg
ICAgKiBvciBiYWNrd2FyZCBieSBzcGVjaWZ5aW5nIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgZGVs
dGEuCi0gICAgICoKLSAgICAgKiBAc2VlIFVDaGFySXRlcmF0b3JNb3ZlCi0gICAgICogQHN0YWJs
ZSBJQ1UgMi4xCi0gICAgICovCi0gICAgVUNoYXJJdGVyYXRvck1vdmUgKm1vdmU7Ci0KLSAgICAv
KioKLSAgICAgKiAocHVibGljKSBDaGVjayBpZiBjdXJyZW50KCkgYW5kIG5leHQoKSBjYW4gc3Rp
bGwKLSAgICAgKiByZXR1cm4gYW5vdGhlciBjb2RlIHVuaXQuCi0gICAgICoKLSAgICAgKiBAc2Vl
IFVDaGFySXRlcmF0b3JIYXNOZXh0Ci0gICAgICogQHN0YWJsZSBJQ1UgMi4xCi0gICAgICovCi0g
ICAgVUNoYXJJdGVyYXRvckhhc05leHQgKmhhc05leHQ7Ci0KLSAgICAvKioKLSAgICAgKiAocHVi
bGljKSBDaGVjayBpZiBwcmV2aW91cygpIGNhbiBzdGlsbCByZXR1cm4gYW5vdGhlciBjb2RlIHVu
aXQuCi0gICAgICoKLSAgICAgKiBAc2VlIFVDaGFySXRlcmF0b3JIYXNQcmV2aW91cwotICAgICAq
IEBzdGFibGUgSUNVIDIuMQotICAgICAqLwotICAgIFVDaGFySXRlcmF0b3JIYXNQcmV2aW91cyAq
aGFzUHJldmlvdXM7Ci0KLSAgICAvKioKLSAgICAgKiAocHVibGljKSBSZXR1cm4gdGhlIGNvZGUg
dW5pdCBhdCB0aGUgY3VycmVudCBwb3NpdGlvbiwKLSAgICAgKiBvciBVX1NFTlRJTkVMIGlmIHRo
ZXJlIGlzIG5vbmUgKGluZGV4IGlzIGF0IHRoZSBsaW1pdCkuCi0gICAgICoKLSAgICAgKiBAc2Vl
IFVDaGFySXRlcmF0b3JDdXJyZW50Ci0gICAgICogQHN0YWJsZSBJQ1UgMi4xCi0gICAgICovCi0g
ICAgVUNoYXJJdGVyYXRvckN1cnJlbnQgKmN1cnJlbnQ7Ci0KLSAgICAvKioKLSAgICAgKiAocHVi
bGljKSBSZXR1cm4gdGhlIGNvZGUgdW5pdCBhdCB0aGUgY3VycmVudCBpbmRleCBhbmQgaW5jcmVt
ZW50Ci0gICAgICogdGhlIGluZGV4IChwb3N0LWluY3JlbWVudCwgbGlrZSBzW2krK10pLAotICAg
ICAqIG9yIHJldHVybiBVX1NFTlRJTkVMIGlmIHRoZXJlIGlzIG5vbmUgKGluZGV4IGlzIGF0IHRo
ZSBsaW1pdCkuCi0gICAgICoKLSAgICAgKiBAc2VlIFVDaGFySXRlcmF0b3JOZXh0Ci0gICAgICog
QHN0YWJsZSBJQ1UgMi4xCi0gICAgICovCi0gICAgVUNoYXJJdGVyYXRvck5leHQgKm5leHQ7Ci0K
LSAgICAvKioKLSAgICAgKiAocHVibGljKSBEZWNyZW1lbnQgdGhlIGluZGV4IGFuZCByZXR1cm4g
dGhlIGNvZGUgdW5pdCBmcm9tIHRoZXJlCi0gICAgICogKHByZS1kZWNyZW1lbnQsIGxpa2Ugc1st
LWldKSwKLSAgICAgKiBvciByZXR1cm4gVV9TRU5USU5FTCBpZiB0aGVyZSBpcyBub25lIChpbmRl
eCBpcyBhdCB0aGUgc3RhcnQpLgotICAgICAqCi0gICAgICogQHNlZSBVQ2hhckl0ZXJhdG9yUHJl
dmlvdXMKLSAgICAgKiBAc3RhYmxlIElDVSAyLjEKLSAgICAgKi8KLSAgICBVQ2hhckl0ZXJhdG9y
UHJldmlvdXMgKnByZXZpb3VzOwotCi0gICAgLyoqCi0gICAgICogKHB1YmxpYykgUmVzZXJ2ZWQg
Zm9yIGZ1dHVyZSB1c2UuIEN1cnJlbnRseSBOVUxMLgotICAgICAqCi0gICAgICogQHNlZSBVQ2hh
ckl0ZXJhdG9yUmVzZXJ2ZWQKLSAgICAgKiBAc3RhYmxlIElDVSAyLjEKLSAgICAgKi8KLSAgICBV
Q2hhckl0ZXJhdG9yUmVzZXJ2ZWQgKnJlc2VydmVkRm47Ci0KLSAgICAvKioKLSAgICAgKiAocHVi
bGljKSBSZXR1cm4gdGhlIHN0YXRlIG9mIHRoZSBpdGVyYXRvciwgdG8gYmUgcmVzdG9yZWQgbGF0
ZXIgd2l0aCBzZXRTdGF0ZSgpLgotICAgICAqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxM
IGlmIHRoZSBpdGVyYXRvciBkb2VzIG5vdCBpbXBsZW1lbnQgaXQuCi0gICAgICoKLSAgICAgKiBA
c2VlIFVDaGFySXRlcmF0b3JHZXQKLSAgICAgKiBAc3RhYmxlIElDVSAyLjYKLSAgICAgKi8KLSAg
ICBVQ2hhckl0ZXJhdG9yR2V0U3RhdGUgKmdldFN0YXRlOwotCi0gICAgLyoqCi0gICAgICogKHB1
YmxpYykgUmVzdG9yZSB0aGUgaXRlcmF0b3Igc3RhdGUgZnJvbSB0aGUgc3RhdGUgd29yZCBmcm9t
IGEgY2FsbAotICAgICAqIHRvIGdldFN0YXRlKCkuCi0gICAgICogVGhpcyBmdW5jdGlvbiBwb2lu
dGVyIGlzIE5VTEwgaWYgdGhlIGl0ZXJhdG9yIGRvZXMgbm90IGltcGxlbWVudCBpdC4KLSAgICAg
KgotICAgICAqIEBzZWUgVUNoYXJJdGVyYXRvclNldAotICAgICAqIEBzdGFibGUgSUNVIDIuNgot
ICAgICAqLwotICAgIFVDaGFySXRlcmF0b3JTZXRTdGF0ZSAqc2V0U3RhdGU7Ci19OwotCi0vKioK
LSAqIEhlbHBlciBmdW5jdGlvbiBmb3IgVUNoYXJJdGVyYXRvciB0byBnZXQgdGhlIGNvZGUgcG9p
bnQKLSAqIGF0IHRoZSBjdXJyZW50IGluZGV4LgotICoKLSAqIFJldHVybiB0aGUgY29kZSBwb2lu
dCB0aGF0IGluY2x1ZGVzIHRoZSBjb2RlIHVuaXQgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24sCi0g
KiBvciBVX1NFTlRJTkVMIGlmIHRoZXJlIGlzIG5vbmUgKGluZGV4IGlzIGF0IHRoZSBsaW1pdCku
Ci0gKiBJZiB0aGUgY3VycmVudCBjb2RlIHVuaXQgaXMgYSBsZWFkIG9yIHRyYWlsIHN1cnJvZ2F0
ZSwKLSAqIHRoZW4gdGhlIGZvbGxvd2luZyBvciBwcmVjZWRpbmcgc3Vycm9nYXRlIGlzIHVzZWQg
dG8gZm9ybQotICogdGhlIGNvZGUgcG9pbnQgdmFsdWUuCi0gKgotICogQHBhcmFtIGl0ZXIgdGhl
IFVDaGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKLSAqIEByZXR1cm4gdGhl
IGN1cnJlbnQgY29kZSBwb2ludAotICoKLSAqIEBzZWUgVUNoYXJJdGVyYXRvcgotICogQHNlZSBV
MTZfR0VUCi0gKiBAc2VlIFVuaWNvZGVTdHJpbmc6OmNoYXIzMkF0KCkKLSAqIEBzdGFibGUgSUNV
IDIuMQotICovCi1VX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgotdWl0ZXJfY3VycmVudDMyKFVD
aGFySXRlcmF0b3IgKml0ZXIpOwotCi0vKioKLSAqIEhlbHBlciBmdW5jdGlvbiBmb3IgVUNoYXJJ
dGVyYXRvciB0byBnZXQgdGhlIG5leHQgY29kZSBwb2ludC4KLSAqCi0gKiBSZXR1cm4gdGhlIGNv
ZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaW5kZXggYW5kIGluY3JlbWVudAotICogdGhlIGluZGV4
IChwb3N0LWluY3JlbWVudCwgbGlrZSBzW2krK10pLAotICogb3IgcmV0dXJuIFVfU0VOVElORUwg
aWYgdGhlcmUgaXMgbm9uZSAoaW5kZXggaXMgYXQgdGhlIGxpbWl0KS4KLSAqCi0gKiBAcGFyYW0g
aXRlciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50ZXIiKQotICogQHJl
dHVybiB0aGUgY3VycmVudCBjb2RlIHBvaW50IChhbmQgcG9zdC1pbmNyZW1lbnQgdGhlIGN1cnJl
bnQgaW5kZXgpCi0gKgotICogQHNlZSBVQ2hhckl0ZXJhdG9yCi0gKiBAc2VlIFUxNl9ORVhUCi0g
KiBAc3RhYmxlIElDVSAyLjEKLSAqLwotVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKLXVpdGVy
X25leHQzMihVQ2hhckl0ZXJhdG9yICppdGVyKTsKLQotLyoqCi0gKiBIZWxwZXIgZnVuY3Rpb24g
Zm9yIFVDaGFySXRlcmF0b3IgdG8gZ2V0IHRoZSBwcmV2aW91cyBjb2RlIHBvaW50LgotICoKLSAq
IERlY3JlbWVudCB0aGUgaW5kZXggYW5kIHJldHVybiB0aGUgY29kZSBwb2ludCBmcm9tIHRoZXJl
Ci0gKiAocHJlLWRlY3JlbWVudCwgbGlrZSBzWy0taV0pLAotICogb3IgcmV0dXJuIFVfU0VOVElO
RUwgaWYgdGhlcmUgaXMgbm9uZSAoaW5kZXggaXMgYXQgdGhlIHN0YXJ0KS4KLSAqCi0gKiBAcGFy
YW0gaXRlciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50ZXIiKQotICog
QHJldHVybiB0aGUgcHJldmlvdXMgY29kZSBwb2ludCAoYWZ0ZXIgcHJlLWRlY3JlbWVudGluZyB0
aGUgY3VycmVudCBpbmRleCkKLSAqCi0gKiBAc2VlIFVDaGFySXRlcmF0b3IKLSAqIEBzZWUgVTE2
X1BSRVYKLSAqIEBzdGFibGUgSUNVIDIuMQotICovCi1VX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JU
MgotdWl0ZXJfcHJldmlvdXMzMihVQ2hhckl0ZXJhdG9yICppdGVyKTsKLQotLyoqCi0gKiBHZXQg
dGhlICJzdGF0ZSIgb2YgdGhlIGl0ZXJhdG9yIGluIHRoZSBmb3JtIG9mIGEgc2luZ2xlIDMyLWJp
dCB3b3JkLgotICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgY2FsbHMgaXRl
ci0+Z2V0U3RhdGUoaXRlcikKLSAqIGlmIGl0ZXItPmdldFN0YXRlIGlzIG5vdCBOVUxMOwotICog
aWYgaXQgaXMgTlVMTCBvciBhbnkgb3RoZXIgZXJyb3Igb2NjdXJzLCB0aGVuIFVJVEVSX05PX1NU
QVRFIGlzIHJldHVybmVkLgotICoKLSAqIFNvbWUgVUNoYXJJdGVyYXRvciBpbXBsZW1lbnRhdGlv
bnMgbWF5IG5vdCBiZSBhYmxlIHRvIHJldHVybgotICogYSB2YWxpZCBzdGF0ZSBmb3IgZWFjaCBw
b3NpdGlvbiwgaW4gd2hpY2ggY2FzZSB0aGV5IHJldHVybiBVSVRFUl9OT19TVEFURSBpbnN0ZWFk
LgotICogVGhpcyB3aWxsIGJlIGNsZWFybHkgZG9jdW1lbnRlZCBmb3IgZWFjaCBzdWNoIGl0ZXJh
dG9yIChub25lIG9mIHRoZSBwdWJsaWMgb25lcyBoZXJlKS4KLSAqCi0gKiBAcGFyYW0gaXRlciB0
aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50ZXIiKQotICogQHJldHVybiB0
aGUgc3RhdGUgd29yZAotICoKLSAqIEBzZWUgVUNoYXJJdGVyYXRvcgotICogQHNlZSBVQ2hhckl0
ZXJhdG9yR2V0U3RhdGUKLSAqIEBzZWUgVUlURVJfTk9fU1RBVEUKLSAqIEBzdGFibGUgSUNVIDIu
NgotICovCi1VX1NUQUJMRSB1aW50MzJfdCBVX0VYUE9SVDIKLXVpdGVyX2dldFN0YXRlKGNvbnN0
IFVDaGFySXRlcmF0b3IgKml0ZXIpOwotCi0vKioKLSAqIFJlc3RvcmUgdGhlICJzdGF0ZSIgb2Yg
dGhlIGl0ZXJhdG9yIHVzaW5nIGEgc3RhdGUgd29yZCBmcm9tIGEgZ2V0U3RhdGUoKSBjYWxsLgot
ICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgY2FsbHMgaXRlci0+c2V0U3Rh
dGUoaXRlciwgc3RhdGUsIHBFcnJvckNvZGUpCi0gKiBpZiBpdGVyLT5zZXRTdGF0ZSBpcyBub3Qg
TlVMTDsgaWYgaXQgaXMgTlVMTCwgdGhlbiBVX1VOU1VQUE9SVEVEX0VSUk9SIGlzIHNldC4KLSAq
Ci0gKiBAcGFyYW0gaXRlciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50
ZXIiKQotICogQHBhcmFtIHN0YXRlIHRoZSBzdGF0ZSB3b3JkIGZyb20gYSBnZXRTdGF0ZSgpIGNh
bGwKLSAqICAgICAgICAgICAgICBvbiBhIHNhbWUtdHlwZSwgc2FtZS1zdHJpbmcgaXRlcmF0b3IK
LSAqIEBwYXJhbSBwRXJyb3JDb2RlIE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9y
IGNvZGUgdmFsdWUsCi0gKiAgICAgICAgICAgICAgICAgICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0
ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgotICoKLSAqIEBzZWUgVUNoYXJJ
dGVyYXRvcgotICogQHNlZSBVQ2hhckl0ZXJhdG9yU2V0U3RhdGUKLSAqIEBzdGFibGUgSUNVIDIu
NgotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdWl0ZXJfc2V0U3RhdGUoVUNoYXJJdGVy
YXRvciAqaXRlciwgdWludDMyX3Qgc3RhdGUsIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwotCi0v
KioKLSAqIFNldCB1cCBhIFVDaGFySXRlcmF0b3IgdG8gaXRlcmF0ZSBvdmVyIGEgc3RyaW5nLgot
ICoKLSAqIFNldHMgdGhlIFVDaGFySXRlcmF0b3IgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIGl0ZXJh
dGlvbiBvdmVyIHRoZSBzdHJpbmcgcwotICogd2l0aCBpdGVyYXRpb24gYm91bmRhcmllcyBzdGFy
dD1pbmRleD0wIGFuZCBsZW5ndGg9bGltaXQ9c3RyaW5nIGxlbmd0aC4KLSAqIFRoZSAicHJvdmlk
ZXIiIG1heSBzZXQgdGhlIHN0YXJ0LCBpbmRleCwgYW5kIGxpbWl0IHZhbHVlcyBhdCBhbnkgdGlt
ZQotICogd2l0aGluIHRoZSByYW5nZSAwLi5sZW5ndGguCi0gKiBUaGUgbGVuZ3RoIGZpZWxkIHdp
bGwgYmUgaWdub3JlZC4KLSAqCi0gKiBUaGUgc3RyaW5nIHBvaW50ZXIgcyBpcyBzZXQgaW50byBV
Q2hhckl0ZXJhdG9yLmNvbnRleHQgd2l0aG91dCBjb3B5aW5nCi0gKiBvciByZWFsbG9jYXRpbmcg
dGhlIHN0cmluZyBjb250ZW50cy4KLSAqCi0gKiBnZXRTdGF0ZSgpIHNpbXBseSByZXR1cm5zIHRo
ZSBjdXJyZW50IGluZGV4LgotICogbW92ZSgpIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgZmluYWwg
aW5kZXguCi0gKgotICogQHBhcmFtIGl0ZXIgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgdG8gYmUg
c2V0IGZvciBpdGVyYXRpb24KLSAqIEBwYXJhbSBzIFN0cmluZyB0byBpdGVyYXRlIG92ZXIKLSAq
IEBwYXJhbSBsZW5ndGggTGVuZ3RoIG9mIHMsIG9yIC0xIGlmIE5VTC10ZXJtaW5hdGVkCi0gKgot
ICogQHNlZSBVQ2hhckl0ZXJhdG9yCi0gKiBAc3RhYmxlIElDVSAyLjEKLSAqLwotVV9TVEFCTEUg
dm9pZCBVX0VYUE9SVDIKLXVpdGVyX3NldFN0cmluZyhVQ2hhckl0ZXJhdG9yICppdGVyLCBjb25z
dCBVQ2hhciAqcywgaW50MzJfdCBsZW5ndGgpOwotCi0vKioKLSAqIFNldCB1cCBhIFVDaGFySXRl
cmF0b3IgdG8gaXRlcmF0ZSBvdmVyIGEgVVRGLTE2QkUgc3RyaW5nCi0gKiAoYnl0ZSB2ZWN0b3Ig
d2l0aCBhIGJpZy1lbmRpYW4gcGFpciBvZiBieXRlcyBwZXIgVUNoYXIpLgotICoKLSAqIEV2ZXJ5
dGhpbmcgd29ya3MganVzdCBsaWtlIHdpdGggYSBub3JtYWwgVUNoYXIgaXRlcmF0b3IgKHVpdGVy
X3NldFN0cmluZyksCi0gKiBleGNlcHQgdGhhdCBVQ2hhcnMgYXJlIGFzc2VtYmxlZCBmcm9tIGJ5
dGUgcGFpcnMsCi0gKiBhbmQgdGhhdCB0aGUgbGVuZ3RoIGFyZ3VtZW50IGhlcmUgaW5kaWNhdGVz
IGFuIGV2ZW4gbnVtYmVyIG9mIGJ5dGVzLgotICoKLSAqIGdldFN0YXRlKCkgc2ltcGx5IHJldHVy
bnMgdGhlIGN1cnJlbnQgaW5kZXguCi0gKiBtb3ZlKCkgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBm
aW5hbCBpbmRleC4KLSAqCi0gKiBAcGFyYW0gaXRlciBVQ2hhckl0ZXJhdG9yIHN0cnVjdHVyZSB0
byBiZSBzZXQgZm9yIGl0ZXJhdGlvbgotICogQHBhcmFtIHMgVVRGLTE2QkUgc3RyaW5nIHRvIGl0
ZXJhdGUgb3ZlcgotICogQHBhcmFtIGxlbmd0aCBMZW5ndGggb2YgcyBhcyBhbiBldmVuIG51bWJl
ciBvZiBieXRlcywgb3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQKLSAqICAgICAgICAgICAgICAgKE5V
TCBtZWFucyBwYWlyIG9mIDAgYnl0ZXMgYXQgZXZlbiBpbmRleCBmcm9tIHMpCi0gKgotICogQHNl
ZSBVQ2hhckl0ZXJhdG9yCi0gKiBAc2VlIHVpdGVyX3NldFN0cmluZwotICogQHN0YWJsZSBJQ1Ug
Mi42Ci0gKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCi11aXRlcl9zZXRVVEYxNkJFKFVDaGFy
SXRlcmF0b3IgKml0ZXIsIGNvbnN0IGNoYXIgKnMsIGludDMyX3QgbGVuZ3RoKTsKLQotLyoqCi0g
KiBTZXQgdXAgYSBVQ2hhckl0ZXJhdG9yIHRvIGl0ZXJhdGUgb3ZlciBhIFVURi04IHN0cmluZy4K
LSAqCi0gKiBTZXRzIHRoZSBVQ2hhckl0ZXJhdG9yIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBpdGVy
YXRpb24gb3ZlciB0aGUgVVRGLTggc3RyaW5nIHMKLSAqIHdpdGggVVRGLTggaXRlcmF0aW9uIGJv
dW5kYXJpZXMgMCBhbmQgbGVuZ3RoLgotICogVGhlIGltcGxlbWVudGF0aW9uIGNvdW50cyB0aGUg
VVRGLTE2IGluZGV4IG9uIHRoZSBmbHkgYW5kCi0gKiBsYXppbHkgZXZhbHVhdGVzIHRoZSBVVEYt
MTYgbGVuZ3RoIG9mIHRoZSB0ZXh0LgotICoKLSAqIFRoZSBzdGFydCBmaWVsZCBpcyB1c2VkIGFz
IHRoZSBVVEYtOCBvZmZzZXQsIHRoZSBsaW1pdCBmaWVsZCBhcyB0aGUgVVRGLTggbGVuZ3RoLgot
ICogV2hlbiB0aGUgcmVzZXJ2ZWRGaWVsZCBpcyBub3QgMCwgdGhlbiBpdCBjb250YWlucyBhIHN1
cHBsZW1lbnRhcnkgY29kZSBwb2ludAotICogYW5kIHRoZSBVVEYtMTYgaW5kZXggaXMgYmV0d2Vl
biB0aGUgdHdvIGNvcnJlc3BvbmRpbmcgc3Vycm9nYXRlcy4KLSAqIEF0IHRoYXQgcG9pbnQsIHRo
ZSBVVEYtOCBpbmRleCBpcyBiZWhpbmQgdGhhdCBjb2RlIHBvaW50LgotICoKLSAqIFRoZSBVVEYt
OCBzdHJpbmcgcG9pbnRlciBzIGlzIHNldCBpbnRvIFVDaGFySXRlcmF0b3IuY29udGV4dCB3aXRo
b3V0IGNvcHlpbmcKLSAqIG9yIHJlYWxsb2NhdGluZyB0aGUgc3RyaW5nIGNvbnRlbnRzLgotICoK
LSAqIGdldFN0YXRlKCkgcmV0dXJucyBhIHN0YXRlIHZhbHVlIGNvbnNpc3Rpbmcgb2YKLSAqIC0g
dGhlIGN1cnJlbnQgVVRGLTggc291cmNlIGJ5dGUgaW5kZXggKGJpdHMgMzEuLjEpCi0gKiAtIGEg
ZmxhZyAoYml0IDApIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIFVDaGFyIHBvc2l0aW9uIGlz
IGluIHRoZSBtaWRkbGUKLSAqICAgb2YgYSBzdXJyb2dhdGUgcGFpcgotICogICAoZnJvbSBhIDQt
Ynl0ZSBVVEYtOCBzZXF1ZW5jZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgc3VwcGxlbWVudGFyeSBj
b2RlIHBvaW50KQotICoKLSAqIGdldFN0YXRlKCkgY2Fubm90IGFsc28gZW5jb2RlIHRoZSBVVEYt
MTYgaW5kZXggaW4gdGhlIHN0YXRlIHZhbHVlLgotICogbW92ZShyZWxhdGl2ZSB0byBsaW1pdCBv
ciBsZW5ndGgpLCBvcgotICogbW92ZShyZWxhdGl2ZSB0byBjdXJyZW50KSBhZnRlciBzZXRTdGF0
ZSgpLCBtYXkgcmV0dXJuIFVJVEVSX1VOS05PV05fSU5ERVguCi0gKgotICogQHBhcmFtIGl0ZXIg
VUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgdG8gYmUgc2V0IGZvciBpdGVyYXRpb24KLSAqIEBwYXJh
bSBzIFVURi04IHN0cmluZyB0byBpdGVyYXRlIG92ZXIKLSAqIEBwYXJhbSBsZW5ndGggTGVuZ3Ro
IG9mIHMgaW4gYnl0ZXMsIG9yIC0xIGlmIE5VTC10ZXJtaW5hdGVkCi0gKgotICogQHNlZSBVQ2hh
ckl0ZXJhdG9yCi0gKiBAc3RhYmxlIElDVSAyLjYKLSAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9S
VDIKLXVpdGVyX3NldFVURjgoVUNoYXJJdGVyYXRvciAqaXRlciwgY29uc3QgY2hhciAqcywgaW50
MzJfdCBsZW5ndGgpOwotCi0jaWZkZWYgWFBfQ1BMVVNQTFVTCi0KLS8qKgotICogU2V0IHVwIGEg
VUNoYXJJdGVyYXRvciB0byB3cmFwIGFyb3VuZCBhIEMrKyBDaGFyYWN0ZXJJdGVyYXRvci4KLSAq
Ci0gKiBTZXRzIHRoZSBVQ2hhckl0ZXJhdG9yIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBpdGVyYXRp
b24gdXNpbmcgdGhlCi0gKiBDaGFyYWN0ZXJJdGVyYXRvciBjaGFySXRlci4KLSAqCi0gKiBUaGUg
Q2hhcmFjdGVySXRlcmF0b3IgcG9pbnRlciBjaGFySXRlciBpcyBzZXQgaW50byBVQ2hhckl0ZXJh
dG9yLmNvbnRleHQKLSAqIHdpdGhvdXQgY29weWluZyBvciBjbG9uaW5nIHRoZSBDaGFyYWN0ZXJJ
dGVyYXRvciBvYmplY3QuCi0gKiBUaGUgb3RoZXIgInByb3RlY3RlZCIgVUNoYXJJdGVyYXRvciBm
aWVsZHMgYXJlIHNldCB0byAwIGFuZCB3aWxsIGJlIGlnbm9yZWQuCi0gKiBUaGUgaXRlcmF0aW9u
IGluZGV4IGFuZCBib3VuZGFyaWVzIGFyZSBjb250cm9sbGVkIGJ5IHRoZSBDaGFyYWN0ZXJJdGVy
YXRvci4KLSAqCi0gKiBnZXRTdGF0ZSgpIHNpbXBseSByZXR1cm5zIHRoZSBjdXJyZW50IGluZGV4
LgotICogbW92ZSgpIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgZmluYWwgaW5kZXguCi0gKgotICog
QHBhcmFtIGl0ZXIgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgdG8gYmUgc2V0IGZvciBpdGVyYXRp
b24KLSAqIEBwYXJhbSBjaGFySXRlciBDaGFyYWN0ZXJJdGVyYXRvciB0byB3cmFwCi0gKgotICog
QHNlZSBVQ2hhckl0ZXJhdG9yCi0gKiBAc3RhYmxlIElDVSAyLjEKLSAqLwotVV9TVEFCTEUgdm9p
ZCBVX0VYUE9SVDIKLXVpdGVyX3NldENoYXJhY3Rlckl0ZXJhdG9yKFVDaGFySXRlcmF0b3IgKml0
ZXIsIENoYXJhY3Rlckl0ZXJhdG9yICpjaGFySXRlcik7Ci0KLS8qKgotICogU2V0IHVwIGEgVUNo
YXJJdGVyYXRvciB0byBpdGVyYXRlIG92ZXIgYSBDKysgUmVwbGFjZWFibGUuCi0gKgotICogU2V0
cyB0aGUgVUNoYXJJdGVyYXRvciBmdW5jdGlvbiBwb2ludGVycyBmb3IgaXRlcmF0aW9uIG92ZXIg
dGhlCi0gKiBSZXBsYWNlYWJsZSByZXAgd2l0aCBpdGVyYXRpb24gYm91bmRhcmllcyBzdGFydD1p
bmRleD0wIGFuZAotICogbGVuZ3RoPWxpbWl0PXJlcC0+bGVuZ3RoKCkuCi0gKiBUaGUgInByb3Zp
ZGVyIiBtYXkgc2V0IHRoZSBzdGFydCwgaW5kZXgsIGFuZCBsaW1pdCB2YWx1ZXMgYXQgYW55IHRp
bWUKLSAqIHdpdGhpbiB0aGUgcmFuZ2UgMC4ubGVuZ3RoPXJlcC0+bGVuZ3RoKCkuCi0gKiBUaGUg
bGVuZ3RoIGZpZWxkIHdpbGwgYmUgaWdub3JlZC4KLSAqCi0gKiBUaGUgUmVwbGFjZWFibGUgcG9p
bnRlciByZXAgaXMgc2V0IGludG8gVUNoYXJJdGVyYXRvci5jb250ZXh0IHdpdGhvdXQgY29weWlu
ZwotICogb3IgY2xvbmluZy9yZWFsbG9jYXRpbmcgdGhlIFJlcGxhY2VhYmxlIG9iamVjdC4KLSAq
Ci0gKiBnZXRTdGF0ZSgpIHNpbXBseSByZXR1cm5zIHRoZSBjdXJyZW50IGluZGV4LgotICogbW92
ZSgpIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgZmluYWwgaW5kZXguCi0gKgotICogQHBhcmFtIGl0
ZXIgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgdG8gYmUgc2V0IGZvciBpdGVyYXRpb24KLSAqIEBw
YXJhbSByZXAgUmVwbGFjZWFibGUgdG8gaXRlcmF0ZSBvdmVyCi0gKgotICogQHNlZSBVQ2hhckl0
ZXJhdG9yCi0gKiBAc3RhYmxlIElDVSAyLjEKLSAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIK
LXVpdGVyX3NldFJlcGxhY2VhYmxlKFVDaGFySXRlcmF0b3IgKml0ZXIsIGNvbnN0IFJlcGxhY2Vh
YmxlICpyZXApOwotCi0jZW5kaWYKLQotVV9DREVDTF9FTkQKLQotI2VuZGlmCkluZGV4OiBKYXZh
U2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91bWFjaGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRHbHVlL2ljdS91bmljb2RlL3VtYWNoaW5lLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNj
cmlwdEdsdWUvaWN1L3VuaWNvZGUvdW1hY2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNzEg
KzAsMCBAQAotLyoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKgotKiAgIENvcHlyaWdodCAoQykg
MTk5OS0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCi0qICAgQ29ycG9yYXRp
b24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0qCi0qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKLSogICBmaWxlIG5hbWU6ICB1bWFjaGluZS5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVND
SUkKLSogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKLSogICBpbmRlbnRhdGlvbjo0Ci0qCi0q
ICAgY3JlYXRlZCBvbjogMTk5OXNlcDEzCi0qICAgY3JlYXRlZCBieTogTWFya3VzIFcuIFNjaGVy
ZXIKLSoKLSogICBUaGlzIGZpbGUgZGVmaW5lcyBiYXNpYyB0eXBlcyBhbmQgY29uc3RhbnRzIGZv
ciB1dGYuaCB0byBiZQotKiAgIHBsYXRmb3JtLWluZGVwZW5kZW50LiB1bWFjaGluZS5oIGFuZCB1
dGYuaCBhcmUgaW5jbHVkZWQgaW50bwotKiAgIHV0eXBlcy5oIHRvIHByb3ZpZGUgYWxsIHRoZSBn
ZW5lcmFsIGRlZmluaXRpb25zIGZvciBJQ1UuCi0qICAgQWxsIG9mIHRoZXNlIGRlZmluaXRpb25z
IHVzZWQgdG8gYmUgaW4gdXR5cGVzLmggYmVmb3JlCi0qICAgdGhlIFVURi1oYW5kbGluZyBtYWNy
b3MgbWFkZSB0aGlzIHVubWFpbnRhaW5hYmxlLgotKi8KLQotI2lmbmRlZiBfX1VNQUNISU5FX0hf
XwotI2RlZmluZSBfX1VNQUNISU5FX0hfXwotCi0KLS8qKgotICogXGZpbGUKLSAqIFxicmllZiBC
YXNpYyB0eXBlcyBhbmQgY29uc3RhbnRzIGZvciBVVEYgCi0gKiAKLSAqIDxoMj4gQmFzaWMgdHlw
ZXMgYW5kIGNvbnN0YW50cyBmb3IgVVRGIDwvaDI+Ci0gKiAgIFRoaXMgZmlsZSBkZWZpbmVzIGJh
c2ljIHR5cGVzIGFuZCBjb25zdGFudHMgZm9yIHV0Zi5oIHRvIGJlCi0gKiAgIHBsYXRmb3JtLWlu
ZGVwZW5kZW50LiB1bWFjaGluZS5oIGFuZCB1dGYuaCBhcmUgaW5jbHVkZWQgaW50bwotICogICB1
dHlwZXMuaCB0byBwcm92aWRlIGFsbCB0aGUgZ2VuZXJhbCBkZWZpbml0aW9ucyBmb3IgSUNVLgot
ICogICBBbGwgb2YgdGhlc2UgZGVmaW5pdGlvbnMgdXNlZCB0byBiZSBpbiB1dHlwZXMuaCBiZWZv
cmUKLSAqICAgdGhlIFVURi1oYW5kbGluZyBtYWNyb3MgbWFkZSB0aGlzIHVubWFpbnRhaW5hYmxl
LgotICogCi0gKi8KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotLyogSW5jbHVkZSBwbGF0Zm9ybS1k
ZXBlbmRlbnQgZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
Ci0vKiB3aGljaCBhcmUgY29udGFpbmVkIGluIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBmaWxlIHBs
YXRmb3JtLmggICAgICAgICAgICAgKi8KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0jaWYgZGVm
aW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoV0lONjQpIHx8IGRlZmlu
ZWQoX1dJTjY0KQotIyAgIGluY2x1ZGUgInVuaWNvZGUvcHdpbjMyLmgiCi0jZWxzZQotIyAgIGlu
Y2x1ZGUgInVuaWNvZGUvcGxhdGZvcm0uaCIKLSNlbmRpZgotCi0vKgotICogQU5TSSBDIGhlYWRl
cnM6Ci0gKiBzdGRkZWYuaCBkZWZpbmVzIHdjaGFyX3QKLSAqLwotI2luY2x1ZGUgPHN0ZGRlZi5o
PgotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLS8qIFhQX0NQTFVTUExVUyBpcyBhIGNyb3NzLXBs
YXRmb3JtIHN5bWJvbCB3aGljaCBzaG91bGQgYmUgZGVmaW5lZCB3aGVuICAgICAqLwotLyogdXNp
bmcgQysrLiAgSXQgc2hvdWxkIG5vdCBiZSBkZWZpbmVkIHdoZW4gY29tcGlsaW5nIHVuZGVyIEMu
ICAgICAgICAgICAgICovCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotI2lmZGVmIF9fY3BsdXNw
bHVzCi0jICAgaWZuZGVmIFhQX0NQTFVTUExVUwotIyAgICAgICBkZWZpbmUgWFBfQ1BMVVNQTFVT
Ci0jICAgZW5kaWYKLSNlbHNlCi0jICAgdW5kZWYgWFBfQ1BMVVNQTFVTCi0jZW5kaWYKLQotLyo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSovCi0vKiBGb3IgQyB3cmFwcGVycywgd2UgdXNlIHRoZSBzeW1ib2wg
VV9TVEFCTEUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogVGhpcyB3b3Jr
cyBwcm9wZXJseSBpZiB0aGUgaW5jbHVkZXIgaXMgQyBvciBDKysuICAgICAgICAgICAgICAgICAg
ICAgICAgICovCi0vKiBGdW5jdGlvbnMgYXJlIGRlY2xhcmVkICAgVV9TVEFCTEUgcmV0dXJuLXR5
cGUgVV9FWFBPUlQyIGZ1bmN0aW9uLW5hbWUoKS4uLiAqLwotLyo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov
Ci0KLS8qKgotICogXGRlZiBVX0NGVU5DCi0gKiBUaGlzIGlzIHVzZWQgaW4gYSBkZWNsYXJhdGlv
biBvZiBhIGxpYnJhcnkgcHJpdmF0ZSBJQ1UgQyBmdW5jdGlvbi4KLSAqIEBzdGFibGUgSUNVIDIu
NAotICovCi0KLS8qKgotICogXGRlZiBVX0NERUNMX0JFR0lOCi0gKiBUaGlzIGlzIHVzZWQgdG8g
YmVnaW4gYSBkZWNsYXJhdGlvbiBvZiBhIGxpYnJhcnkgcHJpdmF0ZSBJQ1UgQyBBUEkuCi0gKiBA
c3RhYmxlIElDVSAyLjQKLSAqLwotCi0vKioKLSAqIFxkZWYgVV9DREVDTF9FTkQKLSAqIFRoaXMg
aXMgdXNlZCB0byBlbmQgYSBkZWNsYXJhdGlvbiBvZiBhIGxpYnJhcnkgcHJpdmF0ZSBJQ1UgQyBB
UEkgCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotCi0jaWZkZWYgWFBfQ1BMVVNQTFVTCi0jICAg
ZGVmaW5lIFVfQ0ZVTkMgZXh0ZXJuICJDIgotIyAgIGRlZmluZSBVX0NERUNMX0JFR0lOIGV4dGVy
biAiQyIgewotIyAgIGRlZmluZSBVX0NERUNMX0VORCAgIH0KLSNlbHNlCi0jICAgZGVmaW5lIFVf
Q0ZVTkMgZXh0ZXJuCi0jICAgZGVmaW5lIFVfQ0RFQ0xfQkVHSU4KLSMgICBkZWZpbmUgVV9DREVD
TF9FTkQKLSNlbmRpZgotCi0vKioKLSAqIFxkZWYgVV9OQU1FU1BBQ0VfQkVHSU4KLSAqIFRoaXMg
aXMgdXNlZCB0byBiZWdpbiBhIGRlY2xhcmF0aW9uIG9mIGEgcHVibGljIElDVSBDKysgQVBJLgot
ICogSWYgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBuYW1lc3BhY2VzLCB0aGlzIGRvZXMg
bm90aGluZy4KLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0KLS8qKgotICogXGRlZiBVX05BTUVT
UEFDRV9FTkQKLSAqIFRoaXMgaXMgdXNlZCB0byBlbmQgYSBkZWNsYXJhdGlvbiBvZiBhIHB1Ymxp
YyBJQ1UgQysrIEFQSSAKLSAqIElmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgbmFtZXNw
YWNlcywgdGhpcyBkb2VzIG5vdGhpbmcuCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotCi0vKioK
LSAqIFxkZWYgVV9OQU1FU1BBQ0VfVVNFCi0gKiBUaGlzIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGF0
IHRoZSByZXN0IG9mIHRoZSBjb2RlIHVzZXMgdGhlCi0gKiBwdWJsaWMgSUNVIEMrKyBBUEkgbmFt
ZXNwYWNlLgotICogSWYgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBuYW1lc3BhY2VzLCB0
aGlzIGRvZXMgbm90aGluZy4KLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0KLS8qKgotICogXGRl
ZiBVX05BTUVTUEFDRV9RVUFMSUZJRVIKLSAqIFRoaXMgaXMgdXNlZCB0byBxdWFsaWZ5IHRoYXQg
YSBmdW5jdGlvbiBvciBjbGFzcyBpcyBwYXJ0IG9mCi0gKiB0aGUgcHVibGljIElDVSBDKysgQVBJ
IG5hbWVzcGFjZS4KLSAqIElmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgbmFtZXNwYWNl
cywgdGhpcyBkb2VzIG5vdGhpbmcuCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotCi0vKiBEZWZp
bmUgbmFtZXNwYWNlIHN5bWJvbHMgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGl0LiAqLwotI2lm
IFVfSEFWRV9OQU1FU1BBQ0UKLSMgICBkZWZpbmUgVV9OQU1FU1BBQ0VfQkVHSU4gbmFtZXNwYWNl
IFVfSUNVX05BTUVTUEFDRSB7Ci0jICAgZGVmaW5lIFVfTkFNRVNQQUNFX0VORCAgfQotIyAgIGRl
ZmluZSBVX05BTUVTUEFDRV9VU0UgdXNpbmcgbmFtZXNwYWNlIFVfSUNVX05BTUVTUEFDRTsKLSMg
ICBkZWZpbmUgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVfSUNVX05BTUVTUEFDRTo6Ci0jZWxzZQot
IyAgIGRlZmluZSBVX05BTUVTUEFDRV9CRUdJTgotIyAgIGRlZmluZSBVX05BTUVTUEFDRV9FTkQK
LSMgICBkZWZpbmUgVV9OQU1FU1BBQ0VfVVNFCi0jICAgZGVmaW5lIFVfTkFNRVNQQUNFX1FVQUxJ
RklFUgotI2VuZGlmCi0KLS8qKiBUaGlzIGlzIHVzZWQgdG8gZGVjbGFyZSBhIGZ1bmN0aW9uIGFz
IGEgcHVibGljIElDVSBDIEFQSSBAc3RhYmxlIElDVSAyLjAqLwotI2RlZmluZSBVX0NBUEkgVV9D
RlVOQyBVX0VYUE9SVAotI2RlZmluZSBVX1NUQUJMRSBVX0NBUEkKLSNkZWZpbmUgVV9EUkFGVCAg
VV9DQVBJCi0jZGVmaW5lIFVfREVQUkVDQVRFRCBVX0NBUEkKLSNkZWZpbmUgVV9PQlNPTEVURSBV
X0NBUEkKLSNkZWZpbmUgVV9JTlRFUk5BTCBVX0NBUEkKLQotLyo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov
Ci0vKiBsaW1pdHMgZm9yIGludDMyX3QgZXRjLiwgbGlrZSBpbiBQT1NJWCBpbnR0eXBlcy5oICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0jaWZuZGVm
IElOVDhfTUlOCi0vKiogVGhlIHNtYWxsZXN0IHZhbHVlIGFuIDggYml0IHNpZ25lZCBpbnRlZ2Vy
IGNhbiBob2xkIEBzdGFibGUgSUNVIDIuMCAqLwotIyAgIGRlZmluZSBJTlQ4X01JTiAgICAgICAg
KChpbnQ4X3QpKC0xMjgpKQotI2VuZGlmCi0jaWZuZGVmIElOVDE2X01JTgotLyoqIFRoZSBzbWFs
bGVzdCB2YWx1ZSBhIDE2IGJpdCBzaWduZWQgaW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAy
LjAgKi8KLSMgICBkZWZpbmUgSU5UMTZfTUlOICAgICAgICgoaW50MTZfdCkoLTMyNzY3LTEpKQot
I2VuZGlmCi0jaWZuZGVmIElOVDMyX01JTgotLyoqIFRoZSBzbWFsbGVzdCB2YWx1ZSBhIDMyIGJp
dCBzaWduZWQgaW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAyLjAgKi8KLSMgICBkZWZpbmUg
SU5UMzJfTUlOICAgICAgICgoaW50MzJfdCkoLTIxNDc0ODM2NDctMSkpCi0jZW5kaWYKLQotI2lm
bmRlZiBJTlQ4X01BWAotLyoqIFRoZSBsYXJnZXN0IHZhbHVlIGFuIDggYml0IHNpZ25lZCBpbnRl
Z2VyIGNhbiBob2xkIEBzdGFibGUgSUNVIDIuMCAqLwotIyAgIGRlZmluZSBJTlQ4X01BWCAgICAg
ICAgKChpbnQ4X3QpKDEyNykpCi0jZW5kaWYKLSNpZm5kZWYgSU5UMTZfTUFYCi0vKiogVGhlIGxh
cmdlc3QgdmFsdWUgYSAxNiBiaXQgc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0YWJsZSBJQ1Ug
Mi4wICovCi0jICAgZGVmaW5lIElOVDE2X01BWCAgICAgICAoKGludDE2X3QpKDMyNzY3KSkKLSNl
bmRpZgotI2lmbmRlZiBJTlQzMl9NQVgKLS8qKiBUaGUgbGFyZ2VzdCB2YWx1ZSBhIDMyIGJpdCBz
aWduZWQgaW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAyLjAgKi8KLSMgICBkZWZpbmUgSU5U
MzJfTUFYICAgICAgICgoaW50MzJfdCkoMjE0NzQ4MzY0NykpCi0jZW5kaWYKLQotI2lmbmRlZiBV
SU5UOF9NQVgKLS8qKiBUaGUgbGFyZ2VzdCB2YWx1ZSBhbiA4IGJpdCB1bnNpZ25lZCBpbnRlZ2Vy
IGNhbiBob2xkIEBzdGFibGUgSUNVIDIuMCAqLwotIyAgIGRlZmluZSBVSU5UOF9NQVggICAgICAg
KCh1aW50OF90KSgyNTVVKSkKLSNlbmRpZgotI2lmbmRlZiBVSU5UMTZfTUFYCi0vKiogVGhlIGxh
cmdlc3QgdmFsdWUgYSAxNiBiaXQgdW5zaWduZWQgaW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElD
VSAyLjAgKi8KLSMgICBkZWZpbmUgVUlOVDE2X01BWCAgICAgICgodWludDE2X3QpKDY1NTM1VSkp
Ci0jZW5kaWYKLSNpZm5kZWYgVUlOVDMyX01BWAotLyoqIFRoZSBsYXJnZXN0IHZhbHVlIGEgMzIg
Yml0IHVuc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0YWJsZSBJQ1UgMi4wICovCi0jICAgZGVm
aW5lIFVJTlQzMl9NQVggICAgICAoKHVpbnQzMl90KSg0Mjk0OTY3Mjk1VSkpCi0jZW5kaWYKLQot
I2lmIGRlZmluZWQoVV9JTlQ2NF9UX1VOQVZBSUxBQkxFKQotIyBlcnJvciBpbnQ2NF90IGlzIHJl
cXVpcmVkIGZvciBkZWNpbWFsIGZvcm1hdCBhbmQgcnVsZS1iYXNlZCBudW1iZXIgZm9ybWF0Lgot
I2Vsc2UKLSMgaWZuZGVmIElOVDY0X0MKLS8qKgotICogUHJvdmlkZXMgYSBwbGF0Zm9ybSBpbmRl
cGVuZGVudCB3YXkgdG8gc3BlY2lmeSBhIHNpZ25lZCA2NC1iaXQgaW50ZWdlciBjb25zdGFudC4K
LSAqIG5vdGU6IG1heSBiZSB3cm9uZyBmb3Igc29tZSA2NCBiaXQgcGxhdGZvcm1zIC0gZW5zdXJl
IHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgSU5UNjRfQwotICogQGRyYWZ0IElDVSAyLjgKLSAqLwot
IyAgIGRlZmluZSBJTlQ2NF9DKGMpIGMgIyMgTEwKLSMgZW5kaWYKLSMgaWZuZGVmIFVJTlQ2NF9D
Ci0vKioKLSAqIFByb3ZpZGVzIGEgcGxhdGZvcm0gaW5kZXBlbmRlbnQgd2F5IHRvIHNwZWNpZnkg
YW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgY29uc3RhbnQuCi0gKiBub3RlOiBtYXkgYmUgd3Jv
bmcgZm9yIHNvbWUgNjQgYml0IHBsYXRmb3JtcyAtIGVuc3VyZSB5b3VyIGNvbXBpbGVyIHByb3Zp
ZGVzIFVJTlQ2NF9DCi0gKiBAZHJhZnQgSUNVIDIuOAotICovCi0jICAgZGVmaW5lIFVJTlQ2NF9D
KGMpIGMgIyMgVUxMCi0jIGVuZGlmCi0jIGlmbmRlZiBVX0lOVDY0X01JTgotLyoqIFRoZSBzbWFs
bGVzdCB2YWx1ZSBhIDY0IGJpdCBzaWduZWQgaW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAy
LjggKi8KLSMgICAgIGRlZmluZSBVX0lOVDY0X01JTiAgICAgICAoKGludDY0X3QpKElOVDY0X0Mo
LTkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpKQotIyBlbmRpZgotIyBpZm5kZWYgVV9JTlQ2NF9NQVgK
LS8qKiBUaGUgbGFyZ2VzdCB2YWx1ZSBhIDY0IGJpdCBzaWduZWQgaW50ZWdlciBjYW4gaG9sZCBA
c3RhYmxlIElDVSAyLjggKi8KLSMgICAgIGRlZmluZSBVX0lOVDY0X01BWCAgICAgICAoKGludDY0
X3QpKElOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNykpKQotIyBlbmRpZgotIyBpZm5kZWYgVV9V
SU5UNjRfTUFYCi0vKiogVGhlIGxhcmdlc3QgdmFsdWUgYSA2NCBiaXQgdW5zaWduZWQgaW50ZWdl
ciBjYW4gaG9sZCBAc3RhYmxlIElDVSAyLjggKi8KLSMgICAgIGRlZmluZSBVX1VJTlQ2NF9NQVgg
ICAgICAoKHVpbnQ2NF90KShVSU5UNjRfQygxODQ0Njc0NDA3MzcwOTU1MTYxNSkpKQotIyBlbmRp
ZgotI2VuZGlmCi0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotLyogQm9vbGVhbiBkYXRhIHR5cGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
Ci0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ki8KLQotLyoqIFRoZSBJQ1UgYm9vbGVhbiB0eXBlIEBzdGFi
bGUgSUNVIDIuMCAqLwotdHlwZWRlZiBpbnQ4X3QgVUJvb2w7Ci0KLSNpZm5kZWYgVFJVRQotLyoq
IFRoZSBUUlVFIHZhbHVlIG9mIGEgVUJvb2wgQHN0YWJsZSBJQ1UgMi4wICovCi0jICAgZGVmaW5l
IFRSVUUgIDEKLSNlbmRpZgotI2lmbmRlZiBGQUxTRQotLyoqIFRoZSBGQUxTRSB2YWx1ZSBvZiBh
IFVCb29sIEBzdGFibGUgSUNVIDIuMCAqLwotIyAgIGRlZmluZSBGQUxTRSAwCi0jZW5kaWYKLQot
Ci0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ki8KLS8qIFVuaWNvZGUgZGF0YSB0eXBlcyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSovCi0KLS8qIHdjaGFyX3QtcmVsYXRlZCBkZWZpbml0aW9ucyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKioKLSAqIFxkZWYgVV9I
QVZFX1dDSEFSX0gKLSAqIEluZGljYXRlcyB3aGV0aGVyIDx3Y2hhci5oPiBpcyBhdmFpbGFibGUg
KDEpIG9yIG5vdCAoMCkuIFNldCB0byAxIGJ5IGRlZmF1bHQuCi0gKgotICogQHN0YWJsZSBJQ1Ug
Mi4wCi0gKi8KLSNpZm5kZWYgVV9IQVZFX1dDSEFSX0gKLSMgICBkZWZpbmUgVV9IQVZFX1dDSEFS
X0ggMQotI2VuZGlmCi0KLS8qKgotICogXGRlZiBVX1NJWkVPRl9XQ0hBUl9UCi0gKiBVX1NJWkVP
Rl9XQ0hBUl9UPT1zaXplb2Yod2NoYXJfdCkgKDAgbWVhbnMgaXQgaXMgbm90IGRlZmluZWQgb3Ig
YXV0b2NvbmYgY291bGQgbm90IHNldCBpdCkKLSAqCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwot
I2lmIFVfU0laRU9GX1dDSEFSX1Q9PTAKLSMgICB1bmRlZiBVX1NJWkVPRl9XQ0hBUl9UCi0jICAg
ZGVmaW5lIFVfU0laRU9GX1dDSEFSX1QgNAotI2VuZGlmCi0KLS8qCi0gKiBcZGVmIFVfV0NIQVJf
SVNfVVRGMTYKLSAqIERlZmluZWQgaWYgd2NoYXJfdCB1c2VzIFVURi0xNi4KLSAqCi0gKiBAc3Rh
YmxlIElDVSAyLjAKLSAqLwotLyoKLSAqIFxkZWYgVV9XQ0hBUl9JU19VVEYzMgotICogRGVmaW5l
ZCBpZiB3Y2hhcl90IHVzZXMgVVRGLTMyLgotICoKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi0j
aWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYz
MikKLSMgICBpZmRlZiBfX1NURENfSVNPXzEwNjQ2X18gCi0jICAgICAgIGlmIChVX1NJWkVPRl9X
Q0hBUl9UPT0yKQotIyAgICAgICAgICAgZGVmaW5lIFVfV0NIQVJfSVNfVVRGMTYKLSMgICAgICAg
ZWxpZiAoVV9TSVpFT0ZfV0NIQVJfVD09NCkKLSMgICAgICAgICAgIGRlZmluZSAgVV9XQ0hBUl9J
U19VVEYzMgotIyAgICAgICBlbmRpZgotIyAgIGVsaWYgZGVmaW5lZCBfX1VDUzJfXwotIyAgICAg
ICBpZiAoX19PUzM5MF9fIHx8IF9fT1M0MDBfXykgJiYgKFVfU0laRU9GX1dDSEFSX1Q9PTIpCi0j
ICAgICAgICAgICBkZWZpbmUgVV9XQ0hBUl9JU19VVEYxNgotIyAgICAgICBlbmRpZgotIyAgIGVs
aWYgZGVmaW5lZCBfX1VDUzRfXwotIyAgICAgICBpZiAoVV9TSVpFT0ZfV0NIQVJfVD09NCkKLSMg
ICAgICAgICAgIGRlZmluZSBVX1dDSEFSX0lTX1VURjMyCi0jICAgICAgIGVuZGlmCi0jICAgZWxp
ZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChXSU42NCkgfHwg
ZGVmaW5lZChfV0lONjQpCi0jICAgICAgIGRlZmluZSBVX1dDSEFSX0lTX1VURjE2ICAgIAotIyAg
IGVuZGlmCi0jZW5kaWYKLQotLyogVUNoYXIgYW5kIFVDaGFyMzIgZGVmaW5pdGlvbnMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyoqIE51bWJlciBv
ZiBieXRlcyBpbiBhIFVDaGFyLiBAc3RhYmxlIElDVSAyLjAgKi8KLSNkZWZpbmUgVV9TSVpFT0Zf
VUNIQVIgMgotCi0vKioKLSAqIFx2YXIgVUNoYXIKLSAqIERlZmluZSBVQ2hhciB0byBiZSB3Y2hh
cl90IGlmIHRoYXQgaXMgMTYgYml0cyB3aWRlOyBhbHdheXMgYXNzdW1lZCB0byBiZSB1bnNpZ25l
ZC4KLSAqIElmIHdjaGFyX3QgaXMgbm90IDE2IGJpdHMgd2lkZSwgdGhlbiBkZWZpbmUgVUNoYXIg
dG8gYmUgdWludDE2X3QuCi0gKiBUaGlzIG1ha2VzIHRoZSBkZWZpbml0aW9uIG9mIFVDaGFyIHBs
YXRmb3JtLWRlcGVuZGVudAotICogYnV0IGFsbG93cyBkaXJlY3Qgc3RyaW5nIHR5cGUgY29tcGF0
aWJpbGl0eSB3aXRoIHBsYXRmb3JtcyB3aXRoCi0gKiAxNi1iaXQgd2NoYXJfdCB0eXBlcy4KLSAq
Ci0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotCi0vKiBEZWZpbmUgVUNoYXIgdG8gYmUgY29tcGF0
aWJsZSB3aXRoIHdjaGFyX3QgaWYgcG9zc2libGUuICovCi0jaWYgVV9TSVpFT0ZfV0NIQVJfVD09
MgotICAgIHR5cGVkZWYgd2NoYXJfdCBVQ2hhcjsKLSNlbHNlCi0gICAgdHlwZWRlZiB1aW50MTZf
dCBVQ2hhcjsKLSNlbmRpZgotCi0vKioKLSAqIERlZmluZSBVQ2hhcjMyIGFzIGEgdHlwZSBmb3Ig
c2luZ2xlIFVuaWNvZGUgY29kZSBwb2ludHMuCi0gKiBVQ2hhcjMyIGlzIGEgc2lnbmVkIDMyLWJp
dCBpbnRlZ2VyIChzYW1lIGFzIGludDMyX3QpLgotICoKLSAqIFRoZSBVbmljb2RlIGNvZGUgcG9p
bnQgcmFuZ2UgaXMgMC4uMHgxMGZmZmYuCi0gKiBBbGwgb3RoZXIgdmFsdWVzIChuZWdhdGl2ZSBv
ciA+PTB4MTEwMDAwKSBhcmUgaWxsZWdhbCBhcyBVbmljb2RlIGNvZGUgcG9pbnRzLgotICogVGhl
eSBtYXkgYmUgdXNlZCBhcyBzZW50aW5lbCB2YWx1ZXMgdG8gaW5kaWNhdGUgImRvbmUiLCAiZXJy
b3IiCi0gKiBvciBzaW1pbGFyIG5vbi1jb2RlIHBvaW50IGNvbmRpdGlvbnMuCi0gKgotICogQmVm
b3JlIElDVSAyLjQgKEppdHRlcmJ1ZyAyMTQ2KSwgVUNoYXIzMiB3YXMgZGVmaW5lZAotICogdG8g
YmUgd2NoYXJfdCBpZiB0aGF0IGlzIDMyIGJpdHMgd2lkZSAod2NoYXJfdCBtYXkgYmUgc2lnbmVk
IG9yIHVuc2lnbmVkKQotICogb3IgZWxzZSB0byBiZSB1aW50MzJfdC4KLSAqIFRoYXQgaXMsIHRo
ZSBkZWZpbml0aW9uIG9mIFVDaGFyMzIgd2FzIHBsYXRmb3JtLWRlcGVuZGVudC4KLSAqCi0gKiBA
c2VlIFVfU0VOVElORUwKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi10eXBlZGVmIGludDMyX3Qg
VUNoYXIzMjsKLQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0vKiBVX0lOTElORSBhbmQgVV9BTElH
Tl9DT0RFICAgU2V0IGRlZmF1bHQgdmFsdWVzIGlmIHRoZXNlIGFyZSBub3QgYWxyZWFkeSAgKi8K
LS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkLiAgRGVmaW5pdGlvbnMgbm9y
bWFsbHkgYXJlIGluICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBs
YXRmb3JtLmggb3IgdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBmb3IgICAgICovCi0vKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhlIE9TIGluIHVzZS4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0vKioKLSAqIFxkZWYgVV9BTElH
Tl9DT0RFCi0gKiBUaGlzIGlzIHVzZWQgdG8gYWxpZ24gY29kZSBmcmFnbWVudHMgdG8gYSBzcGVj
aWZpYyBieXRlIGJvdW5kYXJ5LgotICogVGhpcyBpcyB1c2VmdWwgZm9yIGdldHRpbmcgY29uc2lz
dGVudCBwZXJmb3JtYW5jZSB0ZXN0IHJlc3VsdHMuCi0gKiBAaW50ZXJuYWwKLSAqLwotI2lmbmRl
ZiBVX0FMSUdOX0NPREUKLSMgICBkZWZpbmUgVV9BTElHTl9DT0RFKG4pCi0jZW5kaWYKLQotI2lm
bmRlZiBVX0lOTElORQotIyAgIGRlZmluZSBVX0lOTElORQotI2VuZGlmCi0KLSNpbmNsdWRlICJ1
bmljb2RlL3VyZW5hbWUuaCIKLQotI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9pY3UvdW5p
Y29kZS91cmVuYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUv
dXJlbmFtZS5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2Rl
L3VyZW5hbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNDY4ICswLDAgQEAKLS8qCi0qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9u
YWwgQnVzaW5lc3MgTWFjaGluZXMKLSogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSoKLSogICBmaWxlIG5hbWU6
ICB1cmVuYW1lLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQotKiAgIHRhYiBzaXplOiAgIDgg
KG5vdCB1c2VkKQotKiAgIGluZGVudGF0aW9uOjQKLSoKLSogICBDcmVhdGVkIGJ5OiBQZXJsIHNj
cmlwdCB3cml0dGVuIGJ5IFZsYWRpbWlyIFdlaW5zdGVpbgotKgotKiAgQ29udGFpbnMgZGF0YSBm
b3IgcmVuYW1pbmcgSUNVIGV4cG9ydHMuCi0qICBHZXRzIGluY2x1ZGVkIGJ5IHVtYWNoaW5lLmgK
LSoKLSogIFRISVMgRklMRSBJUyBNQUNISU5FLUdFTkVSQVRFRCwgRE9OJ1QgUExBWSBXSVRIIElU
IElGIFlPVSBET04nVCBLTk9XIFdIQVQKLSogIFlPVSBBUkUgRE9JTkcsIE9USEVSV0lTRSBWRVJZ
IEJBRCBUSElOR1MgV0lMTCBIQVBQRU4hCi0qLwotCi0jaWZuZGVmIFVSRU5BTUVfSAotI2RlZmlu
ZSBVUkVOQU1FX0gKLQotLyogVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZSB0byBkaXNhYmxl
IHJlbmFtaW5nIG9uIHBsYXRmb3JtcwotICAgdGhhdCBkbyBub3QgdXNlIEF1dG9jb25mLiAqLwot
LyogI2RlZmluZSBVX0RJU0FCTEVfUkVOQU1JTkcgMSAqLwotCi0jaWYgIVVfRElTQUJMRV9SRU5B
TUlORwotCi0vKiBDIGV4cG9ydHMgcmVuYW1pbmcgZGF0YSAqLwotCi0jZGVmaW5lIFRfQ1N0cmlu
Z19pbnQ2NFRvU3RyaW5nIFRfQ1N0cmluZ19pbnQ2NFRvU3RyaW5nXzNfMgotI2RlZmluZSBUX0NT
dHJpbmdfaW50ZWdlclRvU3RyaW5nIFRfQ1N0cmluZ19pbnRlZ2VyVG9TdHJpbmdfM18yCi0jZGVm
aW5lIFRfQ1N0cmluZ19zdHJpY21wIFRfQ1N0cmluZ19zdHJpY21wXzNfMgotI2RlZmluZSBUX0NT
dHJpbmdfc3RyaW5nVG9JbnRlZ2VyIFRfQ1N0cmluZ19zdHJpbmdUb0ludGVnZXJfM18yCi0jZGVm
aW5lIFRfQ1N0cmluZ19zdHJuaWNtcCBUX0NTdHJpbmdfc3RybmljbXBfM18yCi0jZGVmaW5lIFRf
Q1N0cmluZ190b0xvd2VyQ2FzZSBUX0NTdHJpbmdfdG9Mb3dlckNhc2VfM18yCi0jZGVmaW5lIFRf
Q1N0cmluZ190b1VwcGVyQ2FzZSBUX0NTdHJpbmdfdG9VcHBlckNhc2VfM18yCi0jZGVmaW5lIFRf
RmlsZVN0cmVhbV9jbG9zZSBUX0ZpbGVTdHJlYW1fY2xvc2VfM18yCi0jZGVmaW5lIFRfRmlsZVN0
cmVhbV9lb2YgVF9GaWxlU3RyZWFtX2VvZl8zXzIKLSNkZWZpbmUgVF9GaWxlU3RyZWFtX2Vycm9y
IFRfRmlsZVN0cmVhbV9lcnJvcl8zXzIKLSNkZWZpbmUgVF9GaWxlU3RyZWFtX2ZpbGVfZXhpc3Rz
IFRfRmlsZVN0cmVhbV9maWxlX2V4aXN0c18zXzIKLSNkZWZpbmUgVF9GaWxlU3RyZWFtX2dldGMg
VF9GaWxlU3RyZWFtX2dldGNfM18yCi0jZGVmaW5lIFRfRmlsZVN0cmVhbV9vcGVuIFRfRmlsZVN0
cmVhbV9vcGVuXzNfMgotI2RlZmluZSBUX0ZpbGVTdHJlYW1fcGVlayBUX0ZpbGVTdHJlYW1fcGVl
a18zXzIKLSNkZWZpbmUgVF9GaWxlU3RyZWFtX3B1dGMgVF9GaWxlU3RyZWFtX3B1dGNfM18yCi0j
ZGVmaW5lIFRfRmlsZVN0cmVhbV9yZWFkIFRfRmlsZVN0cmVhbV9yZWFkXzNfMgotI2RlZmluZSBU
X0ZpbGVTdHJlYW1fcmVhZExpbmUgVF9GaWxlU3RyZWFtX3JlYWRMaW5lXzNfMgotI2RlZmluZSBU
X0ZpbGVTdHJlYW1fcmVtb3ZlIFRfRmlsZVN0cmVhbV9yZW1vdmVfM18yCi0jZGVmaW5lIFRfRmls
ZVN0cmVhbV9yZXdpbmQgVF9GaWxlU3RyZWFtX3Jld2luZF8zXzIKLSNkZWZpbmUgVF9GaWxlU3Ry
ZWFtX3NpemUgVF9GaWxlU3RyZWFtX3NpemVfM18yCi0jZGVmaW5lIFRfRmlsZVN0cmVhbV9zdGRl
cnIgVF9GaWxlU3RyZWFtX3N0ZGVycl8zXzIKLSNkZWZpbmUgVF9GaWxlU3RyZWFtX3N0ZGluIFRf
RmlsZVN0cmVhbV9zdGRpbl8zXzIKLSNkZWZpbmUgVF9GaWxlU3RyZWFtX3N0ZG91dCBUX0ZpbGVT
dHJlYW1fc3Rkb3V0XzNfMgotI2RlZmluZSBUX0ZpbGVTdHJlYW1fdW5nZXRjIFRfRmlsZVN0cmVh
bV91bmdldGNfM18yCi0jZGVmaW5lIFRfRmlsZVN0cmVhbV93cml0ZSBUX0ZpbGVTdHJlYW1fd3Jp
dGVfM18yCi0jZGVmaW5lIFRfRmlsZVN0cmVhbV93cml0ZUxpbmUgVF9GaWxlU3RyZWFtX3dyaXRl
TGluZV8zXzIKLSNkZWZpbmUgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tfRVNDQVBFIFVDTlZfRlJPTV9V
X0NBTExCQUNLX0VTQ0FQRV8zXzIKLSNkZWZpbmUgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tfU0tJUCBV
Q05WX0ZST01fVV9DQUxMQkFDS19TS0lQXzNfMgotI2RlZmluZSBVQ05WX0ZST01fVV9DQUxMQkFD
S19TVE9QIFVDTlZfRlJPTV9VX0NBTExCQUNLX1NUT1BfM18yCi0jZGVmaW5lIFVDTlZfRlJPTV9V
X0NBTExCQUNLX1NVQlNUSVRVVEUgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tfU1VCU1RJVFVURV8zXzIK
LSNkZWZpbmUgVUNOVl9UT19VX0NBTExCQUNLX0VTQ0FQRSBVQ05WX1RPX1VfQ0FMTEJBQ0tfRVND
QVBFXzNfMgotI2RlZmluZSBVQ05WX1RPX1VfQ0FMTEJBQ0tfU0tJUCBVQ05WX1RPX1VfQ0FMTEJB
Q0tfU0tJUF8zXzIKLSNkZWZpbmUgVUNOVl9UT19VX0NBTExCQUNLX1NUT1AgVUNOVl9UT19VX0NB
TExCQUNLX1NUT1BfM18yCi0jZGVmaW5lIFVDTlZfVE9fVV9DQUxMQkFDS19TVUJTVElUVVRFIFVD
TlZfVE9fVV9DQUxMQkFDS19TVUJTVElUVVRFXzNfMgotI2RlZmluZSBVRGF0YU1lbW9yeV9jcmVh
dGVOZXdJbnN0YW5jZSBVRGF0YU1lbW9yeV9jcmVhdGVOZXdJbnN0YW5jZV8zXzIKLSNkZWZpbmUg
VURhdGFNZW1vcnlfaW5pdCBVRGF0YU1lbW9yeV9pbml0XzNfMgotI2RlZmluZSBVRGF0YU1lbW9y
eV9pc0xvYWRlZCBVRGF0YU1lbW9yeV9pc0xvYWRlZF8zXzIKLSNkZWZpbmUgVURhdGFNZW1vcnlf
bm9ybWFsaXplRGF0YVBvaW50ZXIgVURhdGFNZW1vcnlfbm9ybWFsaXplRGF0YVBvaW50ZXJfM18y
Ci0jZGVmaW5lIFVEYXRhTWVtb3J5X3NldERhdGEgVURhdGFNZW1vcnlfc2V0RGF0YV8zXzIKLSNk
ZWZpbmUgVURhdGFtZW1vcnlfYXNzaWduIFVEYXRhbWVtb3J5X2Fzc2lnbl8zXzIKLSNkZWZpbmUg
X0FTQ0lJRGF0YSBfQVNDSUlEYXRhXzNfMgotI2RlZmluZSBfQm9jdTFEYXRhIF9Cb2N1MURhdGFf
M18yCi0jZGVmaW5lIF9DRVNVOERhdGEgX0NFU1U4RGF0YV8zXzIKLSNkZWZpbmUgX0haRGF0YSBf
SFpEYXRhXzNfMgotI2RlZmluZSBfSU1BUERhdGEgX0lNQVBEYXRhXzNfMgotI2RlZmluZSBfSVND
SUlEYXRhIF9JU0NJSURhdGFfM18yCi0jZGVmaW5lIF9JU08yMDIyRGF0YSBfSVNPMjAyMkRhdGFf
M18yCi0jZGVmaW5lIF9MTUJDU0RhdGExIF9MTUJDU0RhdGExXzNfMgotI2RlZmluZSBfTE1CQ1NE
YXRhMTEgX0xNQkNTRGF0YTExXzNfMgotI2RlZmluZSBfTE1CQ1NEYXRhMTYgX0xNQkNTRGF0YTE2
XzNfMgotI2RlZmluZSBfTE1CQ1NEYXRhMTcgX0xNQkNTRGF0YTE3XzNfMgotI2RlZmluZSBfTE1C
Q1NEYXRhMTggX0xNQkNTRGF0YTE4XzNfMgotI2RlZmluZSBfTE1CQ1NEYXRhMTkgX0xNQkNTRGF0
YTE5XzNfMgotI2RlZmluZSBfTE1CQ1NEYXRhMiBfTE1CQ1NEYXRhMl8zXzIKLSNkZWZpbmUgX0xN
QkNTRGF0YTMgX0xNQkNTRGF0YTNfM18yCi0jZGVmaW5lIF9MTUJDU0RhdGE0IF9MTUJDU0RhdGE0
XzNfMgotI2RlZmluZSBfTE1CQ1NEYXRhNSBfTE1CQ1NEYXRhNV8zXzIKLSNkZWZpbmUgX0xNQkNT
RGF0YTYgX0xNQkNTRGF0YTZfM18yCi0jZGVmaW5lIF9MTUJDU0RhdGE4IF9MTUJDU0RhdGE4XzNf
MgotI2RlZmluZSBfTGF0aW4xRGF0YSBfTGF0aW4xRGF0YV8zXzIKLSNkZWZpbmUgX01CQ1NEYXRh
IF9NQkNTRGF0YV8zXzIKLSNkZWZpbmUgX1NDU1VEYXRhIF9TQ1NVRGF0YV8zXzIKLSNkZWZpbmUg
X1VURjE2QkVEYXRhIF9VVEYxNkJFRGF0YV8zXzIKLSNkZWZpbmUgX1VURjE2RGF0YSBfVVRGMTZE
YXRhXzNfMgotI2RlZmluZSBfVVRGMTZMRURhdGEgX1VURjE2TEVEYXRhXzNfMgotI2RlZmluZSBf
VVRGMzJCRURhdGEgX1VURjMyQkVEYXRhXzNfMgotI2RlZmluZSBfVVRGMzJEYXRhIF9VVEYzMkRh
dGFfM18yCi0jZGVmaW5lIF9VVEYzMkxFRGF0YSBfVVRGMzJMRURhdGFfM18yCi0jZGVmaW5lIF9V
VEY3RGF0YSBfVVRGN0RhdGFfM18yCi0jZGVmaW5lIF9VVEY4RGF0YSBfVVRGOERhdGFfM18yCi0j
ZGVmaW5lIGNtZW1vcnlfY2xlYW51cCBjbWVtb3J5X2NsZWFudXBfM18yCi0jZGVmaW5lIGNtZW1v
cnlfaW5Vc2UgY21lbW9yeV9pblVzZV8zXzIKLSNkZWZpbmUgbG9jYWxlX2dldEtleXdvcmRzIGxv
Y2FsZV9nZXRLZXl3b3Jkc18zXzIKLSNkZWZpbmUgbG9jYWxlX2dldF9kZWZhdWx0IGxvY2FsZV9n
ZXRfZGVmYXVsdF8zXzIKLSNkZWZpbmUgbG9jYWxlX3NldF9kZWZhdWx0IGxvY2FsZV9zZXRfZGVm
YXVsdF8zXzIKLSNkZWZpbmUgcmVzX2NvdW50QXJyYXlJdGVtcyByZXNfY291bnRBcnJheUl0ZW1z
XzNfMgotI2RlZmluZSByZXNfZmluZFJlc291cmNlIHJlc19maW5kUmVzb3VyY2VfM18yCi0jZGVm
aW5lIHJlc19nZXRBbGlhcyByZXNfZ2V0QWxpYXNfM18yCi0jZGVmaW5lIHJlc19nZXRBcnJheUl0
ZW0gcmVzX2dldEFycmF5SXRlbV8zXzIKLSNkZWZpbmUgcmVzX2dldEJpbmFyeSByZXNfZ2V0Qmlu
YXJ5XzNfMgotI2RlZmluZSByZXNfZ2V0SW50VmVjdG9yIHJlc19nZXRJbnRWZWN0b3JfM18yCi0j
ZGVmaW5lIHJlc19nZXRSZXNvdXJjZSByZXNfZ2V0UmVzb3VyY2VfM18yCi0jZGVmaW5lIHJlc19n
ZXRTdHJpbmcgcmVzX2dldFN0cmluZ18zXzIKLSNkZWZpbmUgcmVzX2dldFRhYmxlSXRlbUJ5SW5k
ZXggcmVzX2dldFRhYmxlSXRlbUJ5SW5kZXhfM18yCi0jZGVmaW5lIHJlc19nZXRUYWJsZUl0ZW1C
eUtleSByZXNfZ2V0VGFibGVJdGVtQnlLZXlfM18yCi0jZGVmaW5lIHJlc19sb2FkIHJlc19sb2Fk
XzNfMgotI2RlZmluZSByZXNfdW5sb2FkIHJlc191bmxvYWRfM18yCi0jZGVmaW5lIHRyYW5zbGl0
ZXJhdG9yX2NsZWFudXAgdHJhbnNsaXRlcmF0b3JfY2xlYW51cF8zXzIKLSNkZWZpbmUgdV9VQ2hh
cnNUb0NoYXJzIHVfVUNoYXJzVG9DaGFyc18zXzIKLSNkZWZpbmUgdV9hdXN0cmNweSB1X2F1c3Ry
Y3B5XzNfMgotI2RlZmluZSB1X2F1c3RybmNweSB1X2F1c3RybmNweV8zXzIKLSNkZWZpbmUgdV9j
YXRjbG9zZSB1X2NhdGNsb3NlXzNfMgotI2RlZmluZSB1X2NhdGdldHMgdV9jYXRnZXRzXzNfMgot
I2RlZmluZSB1X2NhdG9wZW4gdV9jYXRvcGVuXzNfMgotI2RlZmluZSB1X2NoYXJBZ2UgdV9jaGFy
QWdlXzNfMgotI2RlZmluZSB1X2NoYXJEaWdpdFZhbHVlIHVfY2hhckRpZ2l0VmFsdWVfM18yCi0j
ZGVmaW5lIHVfY2hhckRpcmVjdGlvbiB1X2NoYXJEaXJlY3Rpb25fM18yCi0jZGVmaW5lIHVfY2hh
ckZyb21OYW1lIHVfY2hhckZyb21OYW1lXzNfMgotI2RlZmluZSB1X2NoYXJNaXJyb3IgdV9jaGFy
TWlycm9yXzNfMgotI2RlZmluZSB1X2NoYXJOYW1lIHVfY2hhck5hbWVfM18yCi0jZGVmaW5lIHVf
Y2hhclR5cGUgdV9jaGFyVHlwZV8zXzIKLSNkZWZpbmUgdV9jaGFyc1RvVUNoYXJzIHVfY2hhcnNU
b1VDaGFyc18zXzIKLSNkZWZpbmUgdV9jbGVhbnVwIHVfY2xlYW51cF8zXzIKLSNkZWZpbmUgdV9j
b3VudENoYXIzMiB1X2NvdW50Q2hhcjMyXzNfMgotI2RlZmluZSB1X2RpZ2l0IHVfZGlnaXRfM18y
Ci0jZGVmaW5lIHVfZW51bUNoYXJOYW1lcyB1X2VudW1DaGFyTmFtZXNfM18yCi0jZGVmaW5lIHVf
ZW51bUNoYXJUeXBlcyB1X2VudW1DaGFyVHlwZXNfM18yCi0jZGVmaW5lIHVfZXJyb3JOYW1lIHVf
ZXJyb3JOYW1lXzNfMgotI2RlZmluZSB1X2ZjbG9zZSB1X2ZjbG9zZV8zXzIKLSNkZWZpbmUgdV9m
ZW9mIHVfZmVvZl8zXzIKLSNkZWZpbmUgdV9mZmx1c2ggdV9mZmx1c2hfM18yCi0jZGVmaW5lIHVf
ZmdldENvbnZlcnRlciB1X2ZnZXRDb252ZXJ0ZXJfM18yCi0jZGVmaW5lIHVfZmdldGMgdV9mZ2V0
Y18zXzIKLSNkZWZpbmUgdV9mZ2V0Y29kZXBhZ2UgdV9mZ2V0Y29kZXBhZ2VfM18yCi0jZGVmaW5l
IHVfZmdldGN4IHVfZmdldGN4XzNfMgotI2RlZmluZSB1X2ZnZXRmaWxlIHVfZmdldGZpbGVfM18y
Ci0jZGVmaW5lIHVfZmdldGxvY2FsZSB1X2ZnZXRsb2NhbGVfM18yCi0jZGVmaW5lIHVfZmdldHMg
dV9mZ2V0c18zXzIKLSNkZWZpbmUgdV9maWxlX3JlYWQgdV9maWxlX3JlYWRfM18yCi0jZGVmaW5l
IHVfZmlsZV93cml0ZSB1X2ZpbGVfd3JpdGVfM18yCi0jZGVmaW5lIHVfZmlsZV93cml0ZV9mbHVz
aCB1X2ZpbGVfd3JpdGVfZmx1c2hfM18yCi0jZGVmaW5lIHVfZmluaXQgdV9maW5pdF8zXzIKLSNk
ZWZpbmUgdV9mb2xkQ2FzZSB1X2ZvbGRDYXNlXzNfMgotI2RlZmluZSB1X2ZvcGVuIHVfZm9wZW5f
M18yCi0jZGVmaW5lIHVfZm9yRGlnaXQgdV9mb3JEaWdpdF8zXzIKLSNkZWZpbmUgdV9mb3JtYXRN
ZXNzYWdlIHVfZm9ybWF0TWVzc2FnZV8zXzIKLSNkZWZpbmUgdV9mb3JtYXRNZXNzYWdlV2l0aEVy
cm9yIHVfZm9ybWF0TWVzc2FnZVdpdGhFcnJvcl8zXzIKLSNkZWZpbmUgdV9mcHJpbnRmIHVfZnBy
aW50Zl8zXzIKLSNkZWZpbmUgdV9mcHJpbnRmX3UgdV9mcHJpbnRmX3VfM18yCi0jZGVmaW5lIHVf
ZnB1dGMgdV9mcHV0Y18zXzIKLSNkZWZpbmUgdV9mcHV0cyB1X2ZwdXRzXzNfMgotI2RlZmluZSB1
X2ZyZXdpbmQgdV9mcmV3aW5kXzNfMgotI2RlZmluZSB1X2ZzY2FuZiB1X2ZzY2FuZl8zXzIKLSNk
ZWZpbmUgdV9mc2NhbmZfdSB1X2ZzY2FuZl91XzNfMgotI2RlZmluZSB1X2ZzZXRjb2RlcGFnZSB1
X2ZzZXRjb2RlcGFnZV8zXzIKLSNkZWZpbmUgdV9mc2V0bG9jYWxlIHVfZnNldGxvY2FsZV8zXzIK
LSNkZWZpbmUgdV9mc2V0dHJhbnNsaXRlcmF0b3IgdV9mc2V0dHJhbnNsaXRlcmF0b3JfM18yCi0j
ZGVmaW5lIHVfZnN0cm9wZW4gdV9mc3Ryb3Blbl8zXzIKLSNkZWZpbmUgdV9mdW5nZXRjIHVfZnVu
Z2V0Y18zXzIKLSNkZWZpbmUgdV9nZXRDb21iaW5pbmdDbGFzcyB1X2dldENvbWJpbmluZ0NsYXNz
XzNfMgotI2RlZmluZSB1X2dldERhdGFEaXJlY3RvcnkgdV9nZXREYXRhRGlyZWN0b3J5XzNfMgot
I2RlZmluZSB1X2dldERlZmF1bHRDb252ZXJ0ZXIgdV9nZXREZWZhdWx0Q29udmVydGVyXzNfMgot
I2RlZmluZSB1X2dldEZDX05GS0NfQ2xvc3VyZSB1X2dldEZDX05GS0NfQ2xvc3VyZV8zXzIKLSNk
ZWZpbmUgdV9nZXRJU09Db21tZW50IHVfZ2V0SVNPQ29tbWVudF8zXzIKLSNkZWZpbmUgdV9nZXRJ
bnRQcm9wZXJ0eU1heFZhbHVlIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZV8zXzIKLSNkZWZpbmUg
dV9nZXRJbnRQcm9wZXJ0eU1pblZhbHVlIHVfZ2V0SW50UHJvcGVydHlNaW5WYWx1ZV8zXzIKLSNk
ZWZpbmUgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlIHVfZ2V0SW50UHJvcGVydHlWYWx1ZV8zXzIKLSNk
ZWZpbmUgdV9nZXROdW1lcmljVmFsdWUgdV9nZXROdW1lcmljVmFsdWVfM18yCi0jZGVmaW5lIHVf
Z2V0UHJvcGVydHlFbnVtIHVfZ2V0UHJvcGVydHlFbnVtXzNfMgotI2RlZmluZSB1X2dldFByb3Bl
cnR5TmFtZSB1X2dldFByb3BlcnR5TmFtZV8zXzIKLSNkZWZpbmUgdV9nZXRQcm9wZXJ0eVZhbHVl
RW51bSB1X2dldFByb3BlcnR5VmFsdWVFbnVtXzNfMgotI2RlZmluZSB1X2dldFByb3BlcnR5VmFs
dWVOYW1lIHVfZ2V0UHJvcGVydHlWYWx1ZU5hbWVfM18yCi0jZGVmaW5lIHVfZ2V0VW5pY29kZVBy
b3BlcnRpZXMgdV9nZXRVbmljb2RlUHJvcGVydGllc18zXzIKLSNkZWZpbmUgdV9nZXRVbmljb2Rl
VmVyc2lvbiB1X2dldFVuaWNvZGVWZXJzaW9uXzNfMgotI2RlZmluZSB1X2dldFZlcnNpb24gdV9n
ZXRWZXJzaW9uXzNfMgotI2RlZmluZSB1X2dyb3dCdWZmZXJGcm9tU3RhdGljIHVfZ3Jvd0J1ZmZl
ckZyb21TdGF0aWNfM18yCi0jZGVmaW5lIHVfaGFzQmluYXJ5UHJvcGVydHkgdV9oYXNCaW5hcnlQ
cm9wZXJ0eV8zXzIKLSNkZWZpbmUgdV9pbml0IHVfaW5pdF8zXzIKLSNkZWZpbmUgdV9pc0lESWdu
b3JhYmxlIHVfaXNJRElnbm9yYWJsZV8zXzIKLSNkZWZpbmUgdV9pc0lEUGFydCB1X2lzSURQYXJ0
XzNfMgotI2RlZmluZSB1X2lzSURTdGFydCB1X2lzSURTdGFydF8zXzIKLSNkZWZpbmUgdV9pc0lT
T0NvbnRyb2wgdV9pc0lTT0NvbnRyb2xfM18yCi0jZGVmaW5lIHVfaXNKYXZhSURQYXJ0IHVfaXNK
YXZhSURQYXJ0XzNfMgotI2RlZmluZSB1X2lzSmF2YUlEU3RhcnQgdV9pc0phdmFJRFN0YXJ0XzNf
MgotI2RlZmluZSB1X2lzSmF2YVNwYWNlQ2hhciB1X2lzSmF2YVNwYWNlQ2hhcl8zXzIKLSNkZWZp
bmUgdV9pc01pcnJvcmVkIHVfaXNNaXJyb3JlZF8zXzIKLSNkZWZpbmUgdV9pc1VBbHBoYWJldGlj
IHVfaXNVQWxwaGFiZXRpY18zXzIKLSNkZWZpbmUgdV9pc1VMb3dlcmNhc2UgdV9pc1VMb3dlcmNh
c2VfM18yCi0jZGVmaW5lIHVfaXNVVXBwZXJjYXNlIHVfaXNVVXBwZXJjYXNlXzNfMgotI2RlZmlu
ZSB1X2lzVVdoaXRlU3BhY2UgdV9pc1VXaGl0ZVNwYWNlXzNfMgotI2RlZmluZSB1X2lzV2hpdGVz
cGFjZSB1X2lzV2hpdGVzcGFjZV8zXzIKLSNkZWZpbmUgdV9pc2FsbnVtIHVfaXNhbG51bV8zXzIK
LSNkZWZpbmUgdV9pc2FscGhhIHVfaXNhbHBoYV8zXzIKLSNkZWZpbmUgdV9pc2Jhc2UgdV9pc2Jh
c2VfM18yCi0jZGVmaW5lIHVfaXNibGFuayB1X2lzYmxhbmtfM18yCi0jZGVmaW5lIHVfaXNjbnRy
bCB1X2lzY250cmxfM18yCi0jZGVmaW5lIHVfaXNkZWZpbmVkIHVfaXNkZWZpbmVkXzNfMgotI2Rl
ZmluZSB1X2lzZGlnaXQgdV9pc2RpZ2l0XzNfMgotI2RlZmluZSB1X2lzZ3JhcGggdV9pc2dyYXBo
XzNfMgotI2RlZmluZSB1X2lzbG93ZXIgdV9pc2xvd2VyXzNfMgotI2RlZmluZSB1X2lzcHJpbnQg
dV9pc3ByaW50XzNfMgotI2RlZmluZSB1X2lzcHVuY3QgdV9pc3B1bmN0XzNfMgotI2RlZmluZSB1
X2lzc3BhY2UgdV9pc3NwYWNlXzNfMgotI2RlZmluZSB1X2lzdGl0bGUgdV9pc3RpdGxlXzNfMgot
I2RlZmluZSB1X2lzdXBwZXIgdV9pc3VwcGVyXzNfMgotI2RlZmluZSB1X2lzeGRpZ2l0IHVfaXN4
ZGlnaXRfM18yCi0jZGVmaW5lIHVfbGVuZ3RoT2ZJZGVudGljYWxMZXZlbFJ1biB1X2xlbmd0aE9m
SWRlbnRpY2FsTGV2ZWxSdW5fM18yCi0jZGVmaW5lIHVfbG9jYnVuZF9jbG9zZSB1X2xvY2J1bmRf
Y2xvc2VfM18yCi0jZGVmaW5lIHVfbG9jYnVuZF9nZXROdW1iZXJGb3JtYXQgdV9sb2NidW5kX2dl
dE51bWJlckZvcm1hdF8zXzIKLSNkZWZpbmUgdV9sb2NidW5kX2luaXQgdV9sb2NidW5kX2luaXRf
M18yCi0jZGVmaW5lIHVfbWVtY2FzZWNtcCB1X21lbWNhc2VjbXBfM18yCi0jZGVmaW5lIHVfbWVt
Y2hyIHVfbWVtY2hyXzNfMgotI2RlZmluZSB1X21lbWNocjMyIHVfbWVtY2hyMzJfM18yCi0jZGVm
aW5lIHVfbWVtY21wIHVfbWVtY21wXzNfMgotI2RlZmluZSB1X21lbWNtcENvZGVQb2ludE9yZGVy
IHVfbWVtY21wQ29kZVBvaW50T3JkZXJfM18yCi0jZGVmaW5lIHVfbWVtY3B5IHVfbWVtY3B5XzNf
MgotI2RlZmluZSB1X21lbW1vdmUgdV9tZW1tb3ZlXzNfMgotI2RlZmluZSB1X21lbXJjaHIgdV9t
ZW1yY2hyXzNfMgotI2RlZmluZSB1X21lbXJjaHIzMiB1X21lbXJjaHIzMl8zXzIKLSNkZWZpbmUg
dV9tZW1zZXQgdV9tZW1zZXRfM18yCi0jZGVmaW5lIHVfcGFyc2VNZXNzYWdlIHVfcGFyc2VNZXNz
YWdlXzNfMgotI2RlZmluZSB1X3BhcnNlTWVzc2FnZVdpdGhFcnJvciB1X3BhcnNlTWVzc2FnZVdp
dGhFcnJvcl8zXzIKLSNkZWZpbmUgdV9wcmludGZfcGFyc2UgdV9wcmludGZfcGFyc2VfM18yCi0j
ZGVmaW5lIHVfcmVsZWFzZURlZmF1bHRDb252ZXJ0ZXIgdV9yZWxlYXNlRGVmYXVsdENvbnZlcnRl
cl8zXzIKLSNkZWZpbmUgdV9zY2FuZl9wYXJzZSB1X3NjYW5mX3BhcnNlXzNfMgotI2RlZmluZSB1
X3NldEF0b21pY0luY0RlY0Z1bmN0aW9ucyB1X3NldEF0b21pY0luY0RlY0Z1bmN0aW9uc18zXzIK
LSNkZWZpbmUgdV9zZXREYXRhRGlyZWN0b3J5IHVfc2V0RGF0YURpcmVjdG9yeV8zXzIKLSNkZWZp
bmUgdV9zZXRNZW1vcnlGdW5jdGlvbnMgdV9zZXRNZW1vcnlGdW5jdGlvbnNfM18yCi0jZGVmaW5l
IHVfc2V0TXV0ZXhGdW5jdGlvbnMgdV9zZXRNdXRleEZ1bmN0aW9uc18zXzIKLSNkZWZpbmUgdV9z
aGFwZUFyYWJpYyB1X3NoYXBlQXJhYmljXzNfMgotI2RlZmluZSB1X3NucHJpbnRmIHVfc25wcmlu
dGZfM18yCi0jZGVmaW5lIHVfc25wcmludGZfdSB1X3NucHJpbnRmX3VfM18yCi0jZGVmaW5lIHVf
c3ByaW50ZiB1X3NwcmludGZfM18yCi0jZGVmaW5lIHVfc3ByaW50Zl91IHVfc3ByaW50Zl91XzNf
MgotI2RlZmluZSB1X3NzY2FuZiB1X3NzY2FuZl8zXzIKLSNkZWZpbmUgdV9zc2NhbmZfdSB1X3Nz
Y2FuZl91XzNfMgotI2RlZmluZSB1X3N0ckNhc2VDb21wYXJlIHVfc3RyQ2FzZUNvbXBhcmVfM18y
Ci0jZGVmaW5lIHVfc3RyQ29tcGFyZSB1X3N0ckNvbXBhcmVfM18yCi0jZGVmaW5lIHVfc3RyQ29t
cGFyZUl0ZXIgdV9zdHJDb21wYXJlSXRlcl8zXzIKLSNkZWZpbmUgdV9zdHJGaW5kRmlyc3QgdV9z
dHJGaW5kRmlyc3RfM18yCi0jZGVmaW5lIHVfc3RyRmluZExhc3QgdV9zdHJGaW5kTGFzdF8zXzIK
LSNkZWZpbmUgdV9zdHJGb2xkQ2FzZSB1X3N0ckZvbGRDYXNlXzNfMgotI2RlZmluZSB1X3N0ckZy
b21QdW55Y29kZSB1X3N0ckZyb21QdW55Y29kZV8zXzIKLSNkZWZpbmUgdV9zdHJGcm9tVVRGMzIg
dV9zdHJGcm9tVVRGMzJfM18yCi0jZGVmaW5lIHVfc3RyRnJvbVVURjggdV9zdHJGcm9tVVRGOF8z
XzIKLSNkZWZpbmUgdV9zdHJGcm9tV0NTIHVfc3RyRnJvbVdDU18zXzIKLSNkZWZpbmUgdV9zdHJI
YXNNb3JlQ2hhcjMyVGhhbiB1X3N0ckhhc01vcmVDaGFyMzJUaGFuXzNfMgotI2RlZmluZSB1X3N0
clRvTG93ZXIgdV9zdHJUb0xvd2VyXzNfMgotI2RlZmluZSB1X3N0clRvUHVueWNvZGUgdV9zdHJU
b1B1bnljb2RlXzNfMgotI2RlZmluZSB1X3N0clRvVGl0bGUgdV9zdHJUb1RpdGxlXzNfMgotI2Rl
ZmluZSB1X3N0clRvVVRGMzIgdV9zdHJUb1VURjMyXzNfMgotI2RlZmluZSB1X3N0clRvVVRGOCB1
X3N0clRvVVRGOF8zXzIKLSNkZWZpbmUgdV9zdHJUb1VwcGVyIHVfc3RyVG9VcHBlcl8zXzIKLSNk
ZWZpbmUgdV9zdHJUb1dDUyB1X3N0clRvV0NTXzNfMgotI2RlZmluZSB1X3N0cmNhc2VjbXAgdV9z
dHJjYXNlY21wXzNfMgotI2RlZmluZSB1X3N0cmNhdCB1X3N0cmNhdF8zXzIKLSNkZWZpbmUgdV9z
dHJjaHIgdV9zdHJjaHJfM18yCi0jZGVmaW5lIHVfc3RyY2hyMzIgdV9zdHJjaHIzMl8zXzIKLSNk
ZWZpbmUgdV9zdHJjbXAgdV9zdHJjbXBfM18yCi0jZGVmaW5lIHVfc3RyY21wQ29kZVBvaW50T3Jk
ZXIgdV9zdHJjbXBDb2RlUG9pbnRPcmRlcl8zXzIKLSNkZWZpbmUgdV9zdHJjbXBGb2xkIHVfc3Ry
Y21wRm9sZF8zXzIKLSNkZWZpbmUgdV9zdHJjcHkgdV9zdHJjcHlfM18yCi0jZGVmaW5lIHVfc3Ry
Y3NwbiB1X3N0cmNzcG5fM18yCi0jZGVmaW5lIHVfc3RybGVuIHVfc3RybGVuXzNfMgotI2RlZmlu
ZSB1X3N0cm5jYXNlY21wIHVfc3RybmNhc2VjbXBfM18yCi0jZGVmaW5lIHVfc3RybmNhdCB1X3N0
cm5jYXRfM18yCi0jZGVmaW5lIHVfc3RybmNtcCB1X3N0cm5jbXBfM18yCi0jZGVmaW5lIHVfc3Ry
bmNtcENvZGVQb2ludE9yZGVyIHVfc3RybmNtcENvZGVQb2ludE9yZGVyXzNfMgotI2RlZmluZSB1
X3N0cm5jcHkgdV9zdHJuY3B5XzNfMgotI2RlZmluZSB1X3N0cnBicmsgdV9zdHJwYnJrXzNfMgot
I2RlZmluZSB1X3N0cnJjaHIgdV9zdHJyY2hyXzNfMgotI2RlZmluZSB1X3N0cnJjaHIzMiB1X3N0
cnJjaHIzMl8zXzIKLSNkZWZpbmUgdV9zdHJyc3RyIHVfc3RycnN0cl8zXzIKLSNkZWZpbmUgdV9z
dHJzcG4gdV9zdHJzcG5fM18yCi0jZGVmaW5lIHVfc3Ryc3RyIHVfc3Ryc3RyXzNfMgotI2RlZmlu
ZSB1X3N0cnRva19yIHVfc3RydG9rX3JfM18yCi0jZGVmaW5lIHVfdGVybWluYXRlQ2hhcnMgdV90
ZXJtaW5hdGVDaGFyc18zXzIKLSNkZWZpbmUgdV90ZXJtaW5hdGVVQ2hhcjMycyB1X3Rlcm1pbmF0
ZVVDaGFyMzJzXzNfMgotI2RlZmluZSB1X3Rlcm1pbmF0ZVVDaGFycyB1X3Rlcm1pbmF0ZVVDaGFy
c18zXzIKLSNkZWZpbmUgdV90ZXJtaW5hdGVXQ2hhcnMgdV90ZXJtaW5hdGVXQ2hhcnNfM18yCi0j
ZGVmaW5lIHVfdG9sb3dlciB1X3RvbG93ZXJfM18yCi0jZGVmaW5lIHVfdG90aXRsZSB1X3RvdGl0
bGVfM18yCi0jZGVmaW5lIHVfdG91cHBlciB1X3RvdXBwZXJfM18yCi0jZGVmaW5lIHVfdWFzdHJj
cHkgdV91YXN0cmNweV8zXzIKLSNkZWZpbmUgdV91YXN0cm5jcHkgdV91YXN0cm5jcHlfM18yCi0j
ZGVmaW5lIHVfdW5lc2NhcGUgdV91bmVzY2FwZV8zXzIKLSNkZWZpbmUgdV91bmVzY2FwZUF0IHVf
dW5lc2NhcGVBdF8zXzIKLSNkZWZpbmUgdV92ZXJzaW9uRnJvbVN0cmluZyB1X3ZlcnNpb25Gcm9t
U3RyaW5nXzNfMgotI2RlZmluZSB1X3ZlcnNpb25Ub1N0cmluZyB1X3ZlcnNpb25Ub1N0cmluZ18z
XzIKLSNkZWZpbmUgdV92Zm9ybWF0TWVzc2FnZSB1X3Zmb3JtYXRNZXNzYWdlXzNfMgotI2RlZmlu
ZSB1X3Zmb3JtYXRNZXNzYWdlV2l0aEVycm9yIHVfdmZvcm1hdE1lc3NhZ2VXaXRoRXJyb3JfM18y
Ci0jZGVmaW5lIHVfdmZwcmludGYgdV92ZnByaW50Zl8zXzIKLSNkZWZpbmUgdV92ZnByaW50Zl91
IHVfdmZwcmludGZfdV8zXzIKLSNkZWZpbmUgdV92ZnNjYW5mIHVfdmZzY2FuZl8zXzIKLSNkZWZp
bmUgdV92ZnNjYW5mX3UgdV92ZnNjYW5mX3VfM18yCi0jZGVmaW5lIHVfdnBhcnNlTWVzc2FnZSB1
X3ZwYXJzZU1lc3NhZ2VfM18yCi0jZGVmaW5lIHVfdnBhcnNlTWVzc2FnZVdpdGhFcnJvciB1X3Zw
YXJzZU1lc3NhZ2VXaXRoRXJyb3JfM18yCi0jZGVmaW5lIHVfdnNucHJpbnRmIHVfdnNucHJpbnRm
XzNfMgotI2RlZmluZSB1X3ZzbnByaW50Zl91IHVfdnNucHJpbnRmX3VfM18yCi0jZGVmaW5lIHVf
dnNwcmludGYgdV92c3ByaW50Zl8zXzIKLSNkZWZpbmUgdV92c3ByaW50Zl91IHVfdnNwcmludGZf
dV8zXzIKLSNkZWZpbmUgdV92c3NjYW5mIHVfdnNzY2FuZl8zXzIKLSNkZWZpbmUgdV92c3NjYW5m
X3UgdV92c3NjYW5mX3VfM18yCi0jZGVmaW5lIHVfd3JpdGVEaWZmIHVfd3JpdGVEaWZmXzNfMgot
I2RlZmluZSB1X3dyaXRlSWRlbnRpY2FsTGV2ZWxSdW4gdV93cml0ZUlkZW50aWNhbExldmVsUnVu
XzNfMgotI2RlZmluZSB1X3dyaXRlSWRlbnRpY2FsTGV2ZWxSdW5Ud29DaGFycyB1X3dyaXRlSWRl
bnRpY2FsTGV2ZWxSdW5Ud29DaGFyc18zXzIKLSNkZWZpbmUgdWJpZGlfY2xvc2UgdWJpZGlfY2xv
c2VfM18yCi0jZGVmaW5lIHViaWRpX2NvdW50UnVucyB1YmlkaV9jb3VudFJ1bnNfM18yCi0jZGVm
aW5lIHViaWRpX2dldERpcmVjdGlvbiB1YmlkaV9nZXREaXJlY3Rpb25fM18yCi0jZGVmaW5lIHVi
aWRpX2dldExlbmd0aCB1YmlkaV9nZXRMZW5ndGhfM18yCi0jZGVmaW5lIHViaWRpX2dldExldmVs
QXQgdWJpZGlfZ2V0TGV2ZWxBdF8zXzIKLSNkZWZpbmUgdWJpZGlfZ2V0TGV2ZWxzIHViaWRpX2dl
dExldmVsc18zXzIKLSNkZWZpbmUgdWJpZGlfZ2V0TG9naWNhbEluZGV4IHViaWRpX2dldExvZ2lj
YWxJbmRleF8zXzIKLSNkZWZpbmUgdWJpZGlfZ2V0TG9naWNhbE1hcCB1YmlkaV9nZXRMb2dpY2Fs
TWFwXzNfMgotI2RlZmluZSB1YmlkaV9nZXRMb2dpY2FsUnVuIHViaWRpX2dldExvZ2ljYWxSdW5f
M18yCi0jZGVmaW5lIHViaWRpX2dldE1lbW9yeSB1YmlkaV9nZXRNZW1vcnlfM18yCi0jZGVmaW5l
IHViaWRpX2dldFBhcmFMZXZlbCB1YmlkaV9nZXRQYXJhTGV2ZWxfM18yCi0jZGVmaW5lIHViaWRp
X2dldFJ1bnMgdWJpZGlfZ2V0UnVuc18zXzIKLSNkZWZpbmUgdWJpZGlfZ2V0VGV4dCB1YmlkaV9n
ZXRUZXh0XzNfMgotI2RlZmluZSB1YmlkaV9nZXRWaXN1YWxJbmRleCB1YmlkaV9nZXRWaXN1YWxJ
bmRleF8zXzIKLSNkZWZpbmUgdWJpZGlfZ2V0VmlzdWFsTWFwIHViaWRpX2dldFZpc3VhbE1hcF8z
XzIKLSNkZWZpbmUgdWJpZGlfZ2V0VmlzdWFsUnVuIHViaWRpX2dldFZpc3VhbFJ1bl8zXzIKLSNk
ZWZpbmUgdWJpZGlfaW52ZXJ0TWFwIHViaWRpX2ludmVydE1hcF8zXzIKLSNkZWZpbmUgdWJpZGlf
aXNJbnZlcnNlIHViaWRpX2lzSW52ZXJzZV8zXzIKLSNkZWZpbmUgdWJpZGlfb3BlbiB1YmlkaV9v
cGVuXzNfMgotI2RlZmluZSB1YmlkaV9vcGVuU2l6ZWQgdWJpZGlfb3BlblNpemVkXzNfMgotI2Rl
ZmluZSB1YmlkaV9yZW9yZGVyTG9naWNhbCB1YmlkaV9yZW9yZGVyTG9naWNhbF8zXzIKLSNkZWZp
bmUgdWJpZGlfcmVvcmRlclZpc3VhbCB1YmlkaV9yZW9yZGVyVmlzdWFsXzNfMgotI2RlZmluZSB1
YmlkaV9zZXRJbnZlcnNlIHViaWRpX3NldEludmVyc2VfM18yCi0jZGVmaW5lIHViaWRpX3NldExp
bmUgdWJpZGlfc2V0TGluZV8zXzIKLSNkZWZpbmUgdWJpZGlfc2V0UGFyYSB1YmlkaV9zZXRQYXJh
XzNfMgotI2RlZmluZSB1YmlkaV93cml0ZVJlb3JkZXJlZCB1YmlkaV93cml0ZVJlb3JkZXJlZF8z
XzIKLSNkZWZpbmUgdWJpZGlfd3JpdGVSZXZlcnNlIHViaWRpX3dyaXRlUmV2ZXJzZV8zXzIKLSNk
ZWZpbmUgdWJsb2NrX2dldENvZGUgdWJsb2NrX2dldENvZGVfM18yCi0jZGVmaW5lIHVicmtfY2xv
c2UgdWJya19jbG9zZV8zXzIKLSNkZWZpbmUgdWJya19jb3VudEF2YWlsYWJsZSB1YnJrX2NvdW50
QXZhaWxhYmxlXzNfMgotI2RlZmluZSB1YnJrX2N1cnJlbnQgdWJya19jdXJyZW50XzNfMgotI2Rl
ZmluZSB1YnJrX2ZpcnN0IHVicmtfZmlyc3RfM18yCi0jZGVmaW5lIHVicmtfZm9sbG93aW5nIHVi
cmtfZm9sbG93aW5nXzNfMgotI2RlZmluZSB1YnJrX2dldEF2YWlsYWJsZSB1YnJrX2dldEF2YWls
YWJsZV8zXzIKLSNkZWZpbmUgdWJya19nZXRMb2NhbGVCeVR5cGUgdWJya19nZXRMb2NhbGVCeVR5
cGVfM18yCi0jZGVmaW5lIHVicmtfZ2V0UnVsZVN0YXR1cyB1YnJrX2dldFJ1bGVTdGF0dXNfM18y
Ci0jZGVmaW5lIHVicmtfZ2V0UnVsZVN0YXR1c1ZlYyB1YnJrX2dldFJ1bGVTdGF0dXNWZWNfM18y
Ci0jZGVmaW5lIHVicmtfaXNCb3VuZGFyeSB1YnJrX2lzQm91bmRhcnlfM18yCi0jZGVmaW5lIHVi
cmtfbGFzdCB1YnJrX2xhc3RfM18yCi0jZGVmaW5lIHVicmtfbmV4dCB1YnJrX25leHRfM18yCi0j
ZGVmaW5lIHVicmtfb3BlbiB1YnJrX29wZW5fM18yCi0jZGVmaW5lIHVicmtfb3BlblJ1bGVzIHVi
cmtfb3BlblJ1bGVzXzNfMgotI2RlZmluZSB1YnJrX3ByZWNlZGluZyB1YnJrX3ByZWNlZGluZ18z
XzIKLSNkZWZpbmUgdWJya19wcmV2aW91cyB1YnJrX3ByZXZpb3VzXzNfMgotI2RlZmluZSB1YnJr
X3NhZmVDbG9uZSB1YnJrX3NhZmVDbG9uZV8zXzIKLSNkZWZpbmUgdWJya19zZXRUZXh0IHVicmtf
c2V0VGV4dF8zXzIKLSNkZWZpbmUgdWJya19zd2FwIHVicmtfc3dhcF8zXzIKLSNkZWZpbmUgdWNh
bF9hZGQgdWNhbF9hZGRfM18yCi0jZGVmaW5lIHVjYWxfY2xlYXIgdWNhbF9jbGVhcl8zXzIKLSNk
ZWZpbmUgdWNhbF9jbGVhckZpZWxkIHVjYWxfY2xlYXJGaWVsZF8zXzIKLSNkZWZpbmUgdWNhbF9j
bG9zZSB1Y2FsX2Nsb3NlXzNfMgotI2RlZmluZSB1Y2FsX2NvdW50QXZhaWxhYmxlIHVjYWxfY291
bnRBdmFpbGFibGVfM18yCi0jZGVmaW5lIHVjYWxfZXF1aXZhbGVudFRvIHVjYWxfZXF1aXZhbGVu
dFRvXzNfMgotI2RlZmluZSB1Y2FsX2dldCB1Y2FsX2dldF8zXzIKLSNkZWZpbmUgdWNhbF9nZXRB
dHRyaWJ1dGUgdWNhbF9nZXRBdHRyaWJ1dGVfM18yCi0jZGVmaW5lIHVjYWxfZ2V0QXZhaWxhYmxl
IHVjYWxfZ2V0QXZhaWxhYmxlXzNfMgotI2RlZmluZSB1Y2FsX2dldERTVFNhdmluZ3MgdWNhbF9n
ZXREU1RTYXZpbmdzXzNfMgotI2RlZmluZSB1Y2FsX2dldERlZmF1bHRUaW1lWm9uZSB1Y2FsX2dl
dERlZmF1bHRUaW1lWm9uZV8zXzIKLSNkZWZpbmUgdWNhbF9nZXRMaW1pdCB1Y2FsX2dldExpbWl0
XzNfMgotI2RlZmluZSB1Y2FsX2dldExvY2FsZUJ5VHlwZSB1Y2FsX2dldExvY2FsZUJ5VHlwZV8z
XzIKLSNkZWZpbmUgdWNhbF9nZXRNaWxsaXMgdWNhbF9nZXRNaWxsaXNfM18yCi0jZGVmaW5lIHVj
YWxfZ2V0Tm93IHVjYWxfZ2V0Tm93XzNfMgotI2RlZmluZSB1Y2FsX2dldFRpbWVab25lRGlzcGxh
eU5hbWUgdWNhbF9nZXRUaW1lWm9uZURpc3BsYXlOYW1lXzNfMgotI2RlZmluZSB1Y2FsX2luRGF5
bGlnaHRUaW1lIHVjYWxfaW5EYXlsaWdodFRpbWVfM18yCi0jZGVmaW5lIHVjYWxfaXNTZXQgdWNh
bF9pc1NldF8zXzIKLSNkZWZpbmUgdWNhbF9vcGVuIHVjYWxfb3Blbl8zXzIKLSNkZWZpbmUgdWNh
bF9vcGVuQ291bnRyeVRpbWVab25lcyB1Y2FsX29wZW5Db3VudHJ5VGltZVpvbmVzXzNfMgotI2Rl
ZmluZSB1Y2FsX29wZW5UaW1lWm9uZXMgdWNhbF9vcGVuVGltZVpvbmVzXzNfMgotI2RlZmluZSB1
Y2FsX3JvbGwgdWNhbF9yb2xsXzNfMgotI2RlZmluZSB1Y2FsX3NldCB1Y2FsX3NldF8zXzIKLSNk
ZWZpbmUgdWNhbF9zZXRBdHRyaWJ1dGUgdWNhbF9zZXRBdHRyaWJ1dGVfM18yCi0jZGVmaW5lIHVj
YWxfc2V0RGF0ZSB1Y2FsX3NldERhdGVfM18yCi0jZGVmaW5lIHVjYWxfc2V0RGF0ZVRpbWUgdWNh
bF9zZXREYXRlVGltZV8zXzIKLSNkZWZpbmUgdWNhbF9zZXREZWZhdWx0VGltZVpvbmUgdWNhbF9z
ZXREZWZhdWx0VGltZVpvbmVfM18yCi0jZGVmaW5lIHVjYWxfc2V0TWlsbGlzIHVjYWxfc2V0TWls
bGlzXzNfMgotI2RlZmluZSB1Y2FsX3NldFRpbWVab25lIHVjYWxfc2V0VGltZVpvbmVfM18yCi0j
ZGVmaW5lIHVjYXNlX2FkZFByb3BlcnR5U3RhcnRzIHVjYXNlX2FkZFByb3BlcnR5U3RhcnRzXzNf
MgotI2RlZmluZSB1Y2FzZV9jbG9zZSB1Y2FzZV9jbG9zZV8zXzIKLSNkZWZpbmUgdWNhc2VfZm9s
ZCB1Y2FzZV9mb2xkXzNfMgotI2RlZmluZSB1Y2FzZV9nZXRTaW5nbGV0b24gdWNhc2VfZ2V0U2lu
Z2xldG9uXzNfMgotI2RlZmluZSB1Y2FzZV9nZXRUeXBlIHVjYXNlX2dldFR5cGVfM18yCi0jZGVm
aW5lIHVjYXNlX2dldFR5cGVPcklnbm9yYWJsZSB1Y2FzZV9nZXRUeXBlT3JJZ25vcmFibGVfM18y
Ci0jZGVmaW5lIHVjYXNlX2lzQ2FzZVNlbnNpdGl2ZSB1Y2FzZV9pc0Nhc2VTZW5zaXRpdmVfM18y
Ci0jZGVmaW5lIHVjYXNlX2lzU29mdERvdHRlZCB1Y2FzZV9pc1NvZnREb3R0ZWRfM18yCi0jZGVm
aW5lIHVjYXNlX29wZW4gdWNhc2Vfb3Blbl8zXzIKLSNkZWZpbmUgdWNhc2Vfb3BlbkJpbmFyeSB1
Y2FzZV9vcGVuQmluYXJ5XzNfMgotI2RlZmluZSB1Y2FzZV9zd2FwIHVjYXNlX3N3YXBfM18yCi0j
ZGVmaW5lIHVjYXNlX3RvRnVsbEZvbGRpbmcgdWNhc2VfdG9GdWxsRm9sZGluZ18zXzIKLSNkZWZp
bmUgdWNhc2VfdG9GdWxsTG93ZXIgdWNhc2VfdG9GdWxsTG93ZXJfM18yCi0jZGVmaW5lIHVjYXNl
X3RvRnVsbFRpdGxlIHVjYXNlX3RvRnVsbFRpdGxlXzNfMgotI2RlZmluZSB1Y2FzZV90b0Z1bGxV
cHBlciB1Y2FzZV90b0Z1bGxVcHBlcl8zXzIKLSNkZWZpbmUgdWNhc2VfdG9sb3dlciB1Y2FzZV90
b2xvd2VyXzNfMgotI2RlZmluZSB1Y2FzZV90b3RpdGxlIHVjYXNlX3RvdGl0bGVfM18yCi0jZGVm
aW5lIHVjYXNlX3RvdXBwZXIgdWNhc2VfdG91cHBlcl8zXzIKLSNkZWZpbmUgdWNoYXJfYWRkUHJv
cGVydHlTdGFydHMgdWNoYXJfYWRkUHJvcGVydHlTdGFydHNfM18yCi0jZGVmaW5lIHVjaGFyX2dl
dEhTVCB1Y2hhcl9nZXRIU1RfM18yCi0jZGVmaW5lIHVjaGFyX3N3YXBOYW1lcyB1Y2hhcl9zd2Fw
TmFtZXNfM18yCi0jZGVmaW5lIHVjbG5fY29tbW9uX2xpYl9jbGVhbnVwIHVjbG5fY29tbW9uX2xp
Yl9jbGVhbnVwXzNfMgotI2RlZmluZSB1Y2xuX2NvbW1vbl9yZWdpc3RlckNsZWFudXAgdWNsbl9j
b21tb25fcmVnaXN0ZXJDbGVhbnVwXzNfMgotI2RlZmluZSB1Y2xuX2kxOG5fcmVnaXN0ZXJDbGVh
bnVwIHVjbG5faTE4bl9yZWdpc3RlckNsZWFudXBfM18yCi0jZGVmaW5lIHVjbG5fcmVnaXN0ZXJD
bGVhbnVwIHVjbG5fcmVnaXN0ZXJDbGVhbnVwXzNfMgotI2RlZmluZSB1Y21wOF9jbG9zZSB1Y21w
OF9jbG9zZV8zXzIKLSNkZWZpbmUgdWNtcDhfY29tcGFjdCB1Y21wOF9jb21wYWN0XzNfMgotI2Rl
ZmluZSB1Y21wOF9leHBhbmQgdWNtcDhfZXhwYW5kXzNfMgotI2RlZmluZSB1Y21wOF9mbGF0dGVu
TWVtIHVjbXA4X2ZsYXR0ZW5NZW1fM18yCi0jZGVmaW5lIHVjbXA4X2dldEFycmF5IHVjbXA4X2dl
dEFycmF5XzNfMgotI2RlZmluZSB1Y21wOF9nZXRDb3VudCB1Y21wOF9nZXRDb3VudF8zXzIKLSNk
ZWZpbmUgdWNtcDhfZ2V0SW5kZXggdWNtcDhfZ2V0SW5kZXhfM18yCi0jZGVmaW5lIHVjbXA4X2dl
dGtCbG9ja0NvdW50IHVjbXA4X2dldGtCbG9ja0NvdW50XzNfMgotI2RlZmluZSB1Y21wOF9nZXRr
VW5pY29kZUNvdW50IHVjbXA4X2dldGtVbmljb2RlQ291bnRfM18yCi0jZGVmaW5lIHVjbXA4X2lu
aXQgdWNtcDhfaW5pdF8zXzIKLSNkZWZpbmUgdWNtcDhfaW5pdEFkb3B0IHVjbXA4X2luaXRBZG9w
dF8zXzIKLSNkZWZpbmUgdWNtcDhfaW5pdEFsaWFzIHVjbXA4X2luaXRBbGlhc18zXzIKLSNkZWZp
bmUgdWNtcDhfaW5pdEJvZ3VzIHVjbXA4X2luaXRCb2d1c18zXzIKLSNkZWZpbmUgdWNtcDhfaW5p
dEZyb21EYXRhIHVjbXA4X2luaXRGcm9tRGF0YV8zXzIKLSNkZWZpbmUgdWNtcDhfaXNCb2d1cyB1
Y21wOF9pc0JvZ3VzXzNfMgotI2RlZmluZSB1Y21wOF9vcGVuIHVjbXA4X29wZW5fM18yCi0jZGVm
aW5lIHVjbXA4X29wZW5BZG9wdCB1Y21wOF9vcGVuQWRvcHRfM18yCi0jZGVmaW5lIHVjbXA4X29w
ZW5BbGlhcyB1Y21wOF9vcGVuQWxpYXNfM18yCi0jZGVmaW5lIHVjbXA4X3NldCB1Y21wOF9zZXRf
M18yCi0jZGVmaW5lIHVjbXA4X3NldFJhbmdlIHVjbXA4X3NldFJhbmdlXzNfMgotI2RlZmluZSB1
Y252X01CQ1NGcm9tVUNoYXIzMiB1Y252X01CQ1NGcm9tVUNoYXIzMl8zXzIKLSNkZWZpbmUgdWNu
dl9NQkNTRnJvbVVuaWNvZGVXaXRoT2Zmc2V0cyB1Y252X01CQ1NGcm9tVW5pY29kZVdpdGhPZmZz
ZXRzXzNfMgotI2RlZmluZSB1Y252X01CQ1NHZXRUeXBlIHVjbnZfTUJDU0dldFR5cGVfM18yCi0j
ZGVmaW5lIHVjbnZfTUJDU0dldFVuaWNvZGVTZXRGb3JCeXRlcyB1Y252X01CQ1NHZXRVbmljb2Rl
U2V0Rm9yQnl0ZXNfM18yCi0jZGVmaW5lIHVjbnZfTUJDU0dldFVuaWNvZGVTZXRGb3JVbmljb2Rl
IHVjbnZfTUJDU0dldFVuaWNvZGVTZXRGb3JVbmljb2RlXzNfMgotI2RlZmluZSB1Y252X01CQ1NJ
c0xlYWRCeXRlIHVjbnZfTUJDU0lzTGVhZEJ5dGVfM18yCi0jZGVmaW5lIHVjbnZfTUJDU1NpbXBs
ZUdldE5leHRVQ2hhciB1Y252X01CQ1NTaW1wbGVHZXROZXh0VUNoYXJfM18yCi0jZGVmaW5lIHVj
bnZfTUJDU1RvVW5pY29kZVdpdGhPZmZzZXRzIHVjbnZfTUJDU1RvVW5pY29kZVdpdGhPZmZzZXRz
XzNfMgotI2RlZmluZSB1Y252X2NiRnJvbVVXcml0ZUJ5dGVzIHVjbnZfY2JGcm9tVVdyaXRlQnl0
ZXNfM18yCi0jZGVmaW5lIHVjbnZfY2JGcm9tVVdyaXRlU3ViIHVjbnZfY2JGcm9tVVdyaXRlU3Vi
XzNfMgotI2RlZmluZSB1Y252X2NiRnJvbVVXcml0ZVVDaGFycyB1Y252X2NiRnJvbVVXcml0ZVVD
aGFyc18zXzIKLSNkZWZpbmUgdWNudl9jYlRvVVdyaXRlU3ViIHVjbnZfY2JUb1VXcml0ZVN1Yl8z
XzIKLSNkZWZpbmUgdWNudl9jYlRvVVdyaXRlVUNoYXJzIHVjbnZfY2JUb1VXcml0ZVVDaGFyc18z
XzIKLSNkZWZpbmUgdWNudl9jbG9zZSB1Y252X2Nsb3NlXzNfMgotI2RlZmluZSB1Y252X2NvbXBh
cmVOYW1lcyB1Y252X2NvbXBhcmVOYW1lc18zXzIKLSNkZWZpbmUgdWNudl9jb252ZXJ0IHVjbnZf
Y29udmVydF8zXzIKLSNkZWZpbmUgdWNudl9jb252ZXJ0RXggdWNudl9jb252ZXJ0RXhfM18yCi0j
ZGVmaW5lIHVjbnZfY29weVBsYXRmb3JtU3RyaW5nIHVjbnZfY29weVBsYXRmb3JtU3RyaW5nXzNf
MgotI2RlZmluZSB1Y252X2NvdW50QWxpYXNlcyB1Y252X2NvdW50QWxpYXNlc18zXzIKLSNkZWZp
bmUgdWNudl9jb3VudEF2YWlsYWJsZSB1Y252X2NvdW50QXZhaWxhYmxlXzNfMgotI2RlZmluZSB1
Y252X2NvdW50U3RhbmRhcmRzIHVjbnZfY291bnRTdGFuZGFyZHNfM18yCi0jZGVmaW5lIHVjbnZf
Y3JlYXRlQWxnb3JpdGhtaWNDb252ZXJ0ZXIgdWNudl9jcmVhdGVBbGdvcml0aG1pY0NvbnZlcnRl
cl8zXzIKLSNkZWZpbmUgdWNudl9jcmVhdGVDb252ZXJ0ZXIgdWNudl9jcmVhdGVDb252ZXJ0ZXJf
M18yCi0jZGVmaW5lIHVjbnZfY3JlYXRlQ29udmVydGVyRnJvbVBhY2thZ2UgdWNudl9jcmVhdGVD
b252ZXJ0ZXJGcm9tUGFja2FnZV8zXzIKLSNkZWZpbmUgdWNudl9jcmVhdGVDb252ZXJ0ZXJGcm9t
U2hhcmVkRGF0YSB1Y252X2NyZWF0ZUNvbnZlcnRlckZyb21TaGFyZWREYXRhXzNfMgotI2RlZmlu
ZSB1Y252X2RldGVjdFVuaWNvZGVTaWduYXR1cmUgdWNudl9kZXRlY3RVbmljb2RlU2lnbmF0dXJl
XzNfMgotI2RlZmluZSB1Y252X2V4dENvbnRpbnVlTWF0Y2hGcm9tVSB1Y252X2V4dENvbnRpbnVl
TWF0Y2hGcm9tVV8zXzIKLSNkZWZpbmUgdWNudl9leHRDb250aW51ZU1hdGNoVG9VIHVjbnZfZXh0
Q29udGludWVNYXRjaFRvVV8zXzIKLSNkZWZpbmUgdWNudl9leHRHZXRVbmljb2RlU2V0IHVjbnZf
ZXh0R2V0VW5pY29kZVNldF8zXzIKLSNkZWZpbmUgdWNudl9leHRJbml0aWFsTWF0Y2hGcm9tVSB1
Y252X2V4dEluaXRpYWxNYXRjaEZyb21VXzNfMgotI2RlZmluZSB1Y252X2V4dEluaXRpYWxNYXRj
aFRvVSB1Y252X2V4dEluaXRpYWxNYXRjaFRvVV8zXzIKLSNkZWZpbmUgdWNudl9leHRTaW1wbGVN
YXRjaEZyb21VIHVjbnZfZXh0U2ltcGxlTWF0Y2hGcm9tVV8zXzIKLSNkZWZpbmUgdWNudl9leHRT
aW1wbGVNYXRjaFRvVSB1Y252X2V4dFNpbXBsZU1hdGNoVG9VXzNfMgotI2RlZmluZSB1Y252X2Zp
eEZpbGVTZXBhcmF0b3IgdWNudl9maXhGaWxlU2VwYXJhdG9yXzNfMgotI2RlZmluZSB1Y252X2Zs
dXNoQ2FjaGUgdWNudl9mbHVzaENhY2hlXzNfMgotI2RlZmluZSB1Y252X2Zyb21BbGdvcml0aG1p
YyB1Y252X2Zyb21BbGdvcml0aG1pY18zXzIKLSNkZWZpbmUgdWNudl9mcm9tVUNoYXJzIHVjbnZf
ZnJvbVVDaGFyc18zXzIKLSNkZWZpbmUgdWNudl9mcm9tVVdyaXRlQnl0ZXMgdWNudl9mcm9tVVdy
aXRlQnl0ZXNfM18yCi0jZGVmaW5lIHVjbnZfZnJvbVVuaWNvZGUgdWNudl9mcm9tVW5pY29kZV8z
XzIKLSNkZWZpbmUgdWNudl9mcm9tVW5pY29kZV9VVEY4IHVjbnZfZnJvbVVuaWNvZGVfVVRGOF8z
XzIKLSNkZWZpbmUgdWNudl9mcm9tVW5pY29kZV9VVEY4X09GRlNFVFNfTE9HSUMgdWNudl9mcm9t
VW5pY29kZV9VVEY4X09GRlNFVFNfTE9HSUNfM18yCi0jZGVmaW5lIHVjbnZfZ2V0QWxpYXMgdWNu
dl9nZXRBbGlhc18zXzIKLSNkZWZpbmUgdWNudl9nZXRBbGlhc2VzIHVjbnZfZ2V0QWxpYXNlc18z
XzIKLSNkZWZpbmUgdWNudl9nZXRBdmFpbGFibGVOYW1lIHVjbnZfZ2V0QXZhaWxhYmxlTmFtZV8z
XzIKLSNkZWZpbmUgdWNudl9nZXRDQ1NJRCB1Y252X2dldENDU0lEXzNfMgotI2RlZmluZSB1Y252
X2dldENhbm9uaWNhbE5hbWUgdWNudl9nZXRDYW5vbmljYWxOYW1lXzNfMgotI2RlZmluZSB1Y252
X2dldENvbXBsZXRlVW5pY29kZVNldCB1Y252X2dldENvbXBsZXRlVW5pY29kZVNldF8zXzIKLSNk
ZWZpbmUgdWNudl9nZXREZWZhdWx0TmFtZSB1Y252X2dldERlZmF1bHROYW1lXzNfMgotI2RlZmlu
ZSB1Y252X2dldERpc3BsYXlOYW1lIHVjbnZfZ2V0RGlzcGxheU5hbWVfM18yCi0jZGVmaW5lIHVj
bnZfZ2V0RnJvbVVDYWxsQmFjayB1Y252X2dldEZyb21VQ2FsbEJhY2tfM18yCi0jZGVmaW5lIHVj
bnZfZ2V0SW52YWxpZENoYXJzIHVjbnZfZ2V0SW52YWxpZENoYXJzXzNfMgotI2RlZmluZSB1Y252
X2dldEludmFsaWRVQ2hhcnMgdWNudl9nZXRJbnZhbGlkVUNoYXJzXzNfMgotI2RlZmluZSB1Y252
X2dldE1heENoYXJTaXplIHVjbnZfZ2V0TWF4Q2hhclNpemVfM18yCi0jZGVmaW5lIHVjbnZfZ2V0
TWluQ2hhclNpemUgdWNudl9nZXRNaW5DaGFyU2l6ZV8zXzIKLSNkZWZpbmUgdWNudl9nZXROYW1l
IHVjbnZfZ2V0TmFtZV8zXzIKLSNkZWZpbmUgdWNudl9nZXROZXh0VUNoYXIgdWNudl9nZXROZXh0
VUNoYXJfM18yCi0jZGVmaW5lIHVjbnZfZ2V0Tm9uU3Vycm9nYXRlVW5pY29kZVNldCB1Y252X2dl
dE5vblN1cnJvZ2F0ZVVuaWNvZGVTZXRfM18yCi0jZGVmaW5lIHVjbnZfZ2V0UGxhdGZvcm0gdWNu
dl9nZXRQbGF0Zm9ybV8zXzIKLSNkZWZpbmUgdWNudl9nZXRTdGFuZGFyZCB1Y252X2dldFN0YW5k
YXJkXzNfMgotI2RlZmluZSB1Y252X2dldFN0YW5kYXJkTmFtZSB1Y252X2dldFN0YW5kYXJkTmFt
ZV8zXzIKLSNkZWZpbmUgdWNudl9nZXRTdGFydGVycyB1Y252X2dldFN0YXJ0ZXJzXzNfMgotI2Rl
ZmluZSB1Y252X2dldFN1YnN0Q2hhcnMgdWNudl9nZXRTdWJzdENoYXJzXzNfMgotI2RlZmluZSB1
Y252X2dldFRvVUNhbGxCYWNrIHVjbnZfZ2V0VG9VQ2FsbEJhY2tfM18yCi0jZGVmaW5lIHVjbnZf
Z2V0VHlwZSB1Y252X2dldFR5cGVfM18yCi0jZGVmaW5lIHVjbnZfZ2V0VW5pY29kZVNldCB1Y252
X2dldFVuaWNvZGVTZXRfM18yCi0jZGVmaW5lIHVjbnZfaW5jcmVtZW50UmVmQ291bnQgdWNudl9p
bmNyZW1lbnRSZWZDb3VudF8zXzIKLSNkZWZpbmUgdWNudl9pb19jb3VudEFsaWFzZXMgdWNudl9p
b19jb3VudEFsaWFzZXNfM18yCi0jZGVmaW5lIHVjbnZfaW9fY291bnRBdmFpbGFibGVBbGlhc2Vz
IHVjbnZfaW9fY291bnRBdmFpbGFibGVBbGlhc2VzXzNfMgotI2RlZmluZSB1Y252X2lvX2NvdW50
QXZhaWxhYmxlQ29udmVydGVycyB1Y252X2lvX2NvdW50QXZhaWxhYmxlQ29udmVydGVyc18zXzIK
LSNkZWZpbmUgdWNudl9pb19jb3VudFN0YW5kYXJkcyB1Y252X2lvX2NvdW50U3RhbmRhcmRzXzNf
MgotI2RlZmluZSB1Y252X2lvX2ZsdXNoQXZhaWxhYmxlQ29udmVydGVyQ2FjaGUgdWNudl9pb19m
bHVzaEF2YWlsYWJsZUNvbnZlcnRlckNhY2hlXzNfMgotI2RlZmluZSB1Y252X2lvX2dldEFsaWFz
IHVjbnZfaW9fZ2V0QWxpYXNfM18yCi0jZGVmaW5lIHVjbnZfaW9fZ2V0QWxpYXNlcyB1Y252X2lv
X2dldEFsaWFzZXNfM18yCi0jZGVmaW5lIHVjbnZfaW9fZ2V0QXZhaWxhYmxlQ29udmVydGVyIHVj
bnZfaW9fZ2V0QXZhaWxhYmxlQ29udmVydGVyXzNfMgotI2RlZmluZSB1Y252X2lvX2dldENvbnZl
cnRlck5hbWUgdWNudl9pb19nZXRDb252ZXJ0ZXJOYW1lXzNfMgotI2RlZmluZSB1Y252X2lvX2dl
dERlZmF1bHRDb252ZXJ0ZXJOYW1lIHVjbnZfaW9fZ2V0RGVmYXVsdENvbnZlcnRlck5hbWVfM18y
Ci0jZGVmaW5lIHVjbnZfaW9fc2V0RGVmYXVsdENvbnZlcnRlck5hbWUgdWNudl9pb19zZXREZWZh
dWx0Q29udmVydGVyTmFtZV8zXzIKLSNkZWZpbmUgdWNudl9pb19zdHJpcEFTQ0lJRm9yQ29tcGFy
ZSB1Y252X2lvX3N0cmlwQVNDSUlGb3JDb21wYXJlXzNfMgotI2RlZmluZSB1Y252X2lvX3N0cmlw
RUJDRElDRm9yQ29tcGFyZSB1Y252X2lvX3N0cmlwRUJDRElDRm9yQ29tcGFyZV8zXzIKLSNkZWZp
bmUgdWNudl9pc0FtYmlndW91cyB1Y252X2lzQW1iaWd1b3VzXzNfMgotI2RlZmluZSB1Y252X2xv
YWQgdWNudl9sb2FkXzNfMgotI2RlZmluZSB1Y252X2xvYWRTaGFyZWREYXRhIHVjbnZfbG9hZFNo
YXJlZERhdGFfM18yCi0jZGVmaW5lIHVjbnZfb3BlbiB1Y252X29wZW5fM18yCi0jZGVmaW5lIHVj
bnZfb3BlbkFsbE5hbWVzIHVjbnZfb3BlbkFsbE5hbWVzXzNfMgotI2RlZmluZSB1Y252X29wZW5D
Q1NJRCB1Y252X29wZW5DQ1NJRF8zXzIKLSNkZWZpbmUgdWNudl9vcGVuUGFja2FnZSB1Y252X29w
ZW5QYWNrYWdlXzNfMgotI2RlZmluZSB1Y252X29wZW5TdGFuZGFyZE5hbWVzIHVjbnZfb3BlblN0
YW5kYXJkTmFtZXNfM18yCi0jZGVmaW5lIHVjbnZfb3BlblUgdWNudl9vcGVuVV8zXzIKLSNkZWZp
bmUgdWNudl9yZXNldCB1Y252X3Jlc2V0XzNfMgotI2RlZmluZSB1Y252X3Jlc2V0RnJvbVVuaWNv
ZGUgdWNudl9yZXNldEZyb21Vbmljb2RlXzNfMgotI2RlZmluZSB1Y252X3Jlc2V0VG9Vbmljb2Rl
IHVjbnZfcmVzZXRUb1VuaWNvZGVfM18yCi0jZGVmaW5lIHVjbnZfc2FmZUNsb25lIHVjbnZfc2Fm
ZUNsb25lXzNfMgotI2RlZmluZSB1Y252X3NldERlZmF1bHROYW1lIHVjbnZfc2V0RGVmYXVsdE5h
bWVfM18yCi0jZGVmaW5lIHVjbnZfc2V0RmFsbGJhY2sgdWNudl9zZXRGYWxsYmFja18zXzIKLSNk
ZWZpbmUgdWNudl9zZXRGcm9tVUNhbGxCYWNrIHVjbnZfc2V0RnJvbVVDYWxsQmFja18zXzIKLSNk
ZWZpbmUgdWNudl9zZXRTdWJzdENoYXJzIHVjbnZfc2V0U3Vic3RDaGFyc18zXzIKLSNkZWZpbmUg
dWNudl9zZXRUb1VDYWxsQmFjayB1Y252X3NldFRvVUNhbGxCYWNrXzNfMgotI2RlZmluZSB1Y252
X3N3YXAgdWNudl9zd2FwXzNfMgotI2RlZmluZSB1Y252X3N3YXBBbGlhc2VzIHVjbnZfc3dhcEFs
aWFzZXNfM18yCi0jZGVmaW5lIHVjbnZfdG9BbGdvcml0aG1pYyB1Y252X3RvQWxnb3JpdGhtaWNf
M18yCi0jZGVmaW5lIHVjbnZfdG9VQ2hhcnMgdWNudl90b1VDaGFyc18zXzIKLSNkZWZpbmUgdWNu
dl90b1VXcml0ZUNvZGVQb2ludCB1Y252X3RvVVdyaXRlQ29kZVBvaW50XzNfMgotI2RlZmluZSB1
Y252X3RvVVdyaXRlVUNoYXJzIHVjbnZfdG9VV3JpdGVVQ2hhcnNfM18yCi0jZGVmaW5lIHVjbnZf
dG9Vbmljb2RlIHVjbnZfdG9Vbmljb2RlXzNfMgotI2RlZmluZSB1Y252X3VubG9hZCB1Y252X3Vu
bG9hZF8zXzIKLSNkZWZpbmUgdWNudl91bmxvYWRTaGFyZWREYXRhSWZSZWFkeSB1Y252X3VubG9h
ZFNoYXJlZERhdGFJZlJlYWR5XzNfMgotI2RlZmluZSB1Y252X3VzZXNGYWxsYmFjayB1Y252X3Vz
ZXNGYWxsYmFja18zXzIKLSNkZWZpbmUgdWNvbF9hbGxvY1dlaWdodHMgdWNvbF9hbGxvY1dlaWdo
dHNfM18yCi0jZGVmaW5lIHVjb2xfYXNzZW1ibGVUYWlsb3JpbmdUYWJsZSB1Y29sX2Fzc2VtYmxl
VGFpbG9yaW5nVGFibGVfM18yCi0jZGVmaW5lIHVjb2xfY2FsY1NvcnRLZXkgdWNvbF9jYWxjU29y
dEtleV8zXzIKLSNkZWZpbmUgdWNvbF9jYWxjU29ydEtleVNpbXBsZVRlcnRpYXJ5IHVjb2xfY2Fs
Y1NvcnRLZXlTaW1wbGVUZXJ0aWFyeV8zXzIKLSNkZWZpbmUgdWNvbF9jbG9uZUJpbmFyeSB1Y29s
X2Nsb25lQmluYXJ5XzNfMgotI2RlZmluZSB1Y29sX2Nsb25lUnVsZURhdGEgdWNvbF9jbG9uZVJ1
bGVEYXRhXzNfMgotI2RlZmluZSB1Y29sX2Nsb3NlIHVjb2xfY2xvc2VfM18yCi0jZGVmaW5lIHVj
b2xfY2xvc2VFbGVtZW50cyB1Y29sX2Nsb3NlRWxlbWVudHNfM18yCi0jZGVmaW5lIHVjb2xfY29s
bGF0b3JUb0lkZW50aWZpZXIgdWNvbF9jb2xsYXRvclRvSWRlbnRpZmllcl8zXzIKLSNkZWZpbmUg
dWNvbF9jb3VudEF2YWlsYWJsZSB1Y29sX2NvdW50QXZhaWxhYmxlXzNfMgotI2RlZmluZSB1Y29s
X2NyZWF0ZUVsZW1lbnRzIHVjb2xfY3JlYXRlRWxlbWVudHNfM18yCi0jZGVmaW5lIHVjb2xfZG9D
RSB1Y29sX2RvQ0VfM18yCi0jZGVmaW5lIHVjb2xfZXF1YWwgdWNvbF9lcXVhbF8zXzIKLSNkZWZp
bmUgdWNvbF9lcXVhbHMgdWNvbF9lcXVhbHNfM18yCi0jZGVmaW5lIHVjb2xfZ2V0QXR0cmlidXRl
IHVjb2xfZ2V0QXR0cmlidXRlXzNfMgotI2RlZmluZSB1Y29sX2dldEF0dHJpYnV0ZU9yRGVmYXVs
dCB1Y29sX2dldEF0dHJpYnV0ZU9yRGVmYXVsdF8zXzIKLSNkZWZpbmUgdWNvbF9nZXRBdmFpbGFi
bGUgdWNvbF9nZXRBdmFpbGFibGVfM18yCi0jZGVmaW5lIHVjb2xfZ2V0Qm91bmQgdWNvbF9nZXRC
b3VuZF8zXzIKLSNkZWZpbmUgdWNvbF9nZXRDRUdlbmVyYXRvciB1Y29sX2dldENFR2VuZXJhdG9y
XzNfMgotI2RlZmluZSB1Y29sX2dldENFU3RyZW5ndGhEaWZmZXJlbmNlIHVjb2xfZ2V0Q0VTdHJl
bmd0aERpZmZlcmVuY2VfM18yCi0jZGVmaW5lIHVjb2xfZ2V0Q29udHJhY3Rpb25zIHVjb2xfZ2V0
Q29udHJhY3Rpb25zXzNfMgotI2RlZmluZSB1Y29sX2dldERpc3BsYXlOYW1lIHVjb2xfZ2V0RGlz
cGxheU5hbWVfM18yCi0jZGVmaW5lIHVjb2xfZ2V0Rmlyc3RDRSB1Y29sX2dldEZpcnN0Q0VfM18y
Ci0jZGVmaW5lIHVjb2xfZ2V0RnVuY3Rpb25hbEVxdWl2YWxlbnQgdWNvbF9nZXRGdW5jdGlvbmFs
RXF1aXZhbGVudF8zXzIKLSNkZWZpbmUgdWNvbF9nZXRLZXl3b3JkVmFsdWVzIHVjb2xfZ2V0S2V5
d29yZFZhbHVlc18zXzIKLSNkZWZpbmUgdWNvbF9nZXRLZXl3b3JkcyB1Y29sX2dldEtleXdvcmRz
XzNfMgotI2RlZmluZSB1Y29sX2dldExvY2FsZSB1Y29sX2dldExvY2FsZV8zXzIKLSNkZWZpbmUg
dWNvbF9nZXRMb2NhbGVCeVR5cGUgdWNvbF9nZXRMb2NhbGVCeVR5cGVfM18yCi0jZGVmaW5lIHVj
b2xfZ2V0TWF4RXhwYW5zaW9uIHVjb2xfZ2V0TWF4RXhwYW5zaW9uXzNfMgotI2RlZmluZSB1Y29s
X2dldE5leHRDRSB1Y29sX2dldE5leHRDRV8zXzIKLSNkZWZpbmUgdWNvbF9nZXROZXh0R2VuZXJh
dGVkIHVjb2xfZ2V0TmV4dEdlbmVyYXRlZF8zXzIKLSNkZWZpbmUgdWNvbF9nZXRPZmZzZXQgdWNv
bF9nZXRPZmZzZXRfM18yCi0jZGVmaW5lIHVjb2xfZ2V0UHJldkNFIHVjb2xfZ2V0UHJldkNFXzNf
MgotI2RlZmluZSB1Y29sX2dldFJ1bGVzIHVjb2xfZ2V0UnVsZXNfM18yCi0jZGVmaW5lIHVjb2xf
Z2V0UnVsZXNFeCB1Y29sX2dldFJ1bGVzRXhfM18yCi0jZGVmaW5lIHVjb2xfZ2V0U2hvcnREZWZp
bml0aW9uU3RyaW5nIHVjb2xfZ2V0U2hvcnREZWZpbml0aW9uU3RyaW5nXzNfMgotI2RlZmluZSB1
Y29sX2dldFNpbXBsZUNFR2VuZXJhdG9yIHVjb2xfZ2V0U2ltcGxlQ0VHZW5lcmF0b3JfM18yCi0j
ZGVmaW5lIHVjb2xfZ2V0U29ydEtleSB1Y29sX2dldFNvcnRLZXlfM18yCi0jZGVmaW5lIHVjb2xf
Z2V0U29ydEtleVNpemUgdWNvbF9nZXRTb3J0S2V5U2l6ZV8zXzIKLSNkZWZpbmUgdWNvbF9nZXRT
b3J0S2V5V2l0aEFsbG9jYXRpb24gdWNvbF9nZXRTb3J0S2V5V2l0aEFsbG9jYXRpb25fM18yCi0j
ZGVmaW5lIHVjb2xfZ2V0U3RyZW5ndGggdWNvbF9nZXRTdHJlbmd0aF8zXzIKLSNkZWZpbmUgdWNv
bF9nZXRUYWlsb3JlZFNldCB1Y29sX2dldFRhaWxvcmVkU2V0XzNfMgotI2RlZmluZSB1Y29sX2dl
dFVDQVZlcnNpb24gdWNvbF9nZXRVQ0FWZXJzaW9uXzNfMgotI2RlZmluZSB1Y29sX2dldFVuc2Fm
ZVNldCB1Y29sX2dldFVuc2FmZVNldF8zXzIKLSNkZWZpbmUgdWNvbF9nZXRWYXJpYWJsZVRvcCB1
Y29sX2dldFZhcmlhYmxlVG9wXzNfMgotI2RlZmluZSB1Y29sX2dldFZlcnNpb24gdWNvbF9nZXRW
ZXJzaW9uXzNfMgotI2RlZmluZSB1Y29sX2dyZWF0ZXIgdWNvbF9ncmVhdGVyXzNfMgotI2RlZmlu
ZSB1Y29sX2dyZWF0ZXJPckVxdWFsIHVjb2xfZ3JlYXRlck9yRXF1YWxfM18yCi0jZGVmaW5lIHVj
b2xfaWRlbnRpZmllclRvU2hvcnRTdHJpbmcgdWNvbF9pZGVudGlmaWVyVG9TaG9ydFN0cmluZ18z
XzIKLSNkZWZpbmUgdWNvbF9pbml0QnVmZmVycyB1Y29sX2luaXRCdWZmZXJzXzNfMgotI2RlZmlu
ZSB1Y29sX2luaXRDb2xsYXRvciB1Y29sX2luaXRDb2xsYXRvcl8zXzIKLSNkZWZpbmUgdWNvbF9p
bml0SW52ZXJzZVVDQSB1Y29sX2luaXRJbnZlcnNlVUNBXzNfMgotI2RlZmluZSB1Y29sX2luaXRV
Q0EgdWNvbF9pbml0VUNBXzNfMgotI2RlZmluZSB1Y29sX2ludl9nZXRHYXBQb3NpdGlvbnMgdWNv
bF9pbnZfZ2V0R2FwUG9zaXRpb25zXzNfMgotI2RlZmluZSB1Y29sX2ludl9nZXROZXh0Q0UgdWNv
bF9pbnZfZ2V0TmV4dENFXzNfMgotI2RlZmluZSB1Y29sX2ludl9nZXRQcmV2Q0UgdWNvbF9pbnZf
Z2V0UHJldkNFXzNfMgotI2RlZmluZSB1Y29sX2lzVGFpbG9yZWQgdWNvbF9pc1RhaWxvcmVkXzNf
MgotI2RlZmluZSB1Y29sX2tleUhhc2hDb2RlIHVjb2xfa2V5SGFzaENvZGVfM18yCi0jZGVmaW5l
IHVjb2xfbWVyZ2VTb3J0a2V5cyB1Y29sX21lcmdlU29ydGtleXNfM18yCi0jZGVmaW5lIHVjb2xf
bmV4dCB1Y29sX25leHRfM18yCi0jZGVmaW5lIHVjb2xfbmV4dFNvcnRLZXlQYXJ0IHVjb2xfbmV4
dFNvcnRLZXlQYXJ0XzNfMgotI2RlZmluZSB1Y29sX25leHRXZWlnaHQgdWNvbF9uZXh0V2VpZ2h0
XzNfMgotI2RlZmluZSB1Y29sX25vcm1hbGl6ZVNob3J0RGVmaW5pdGlvblN0cmluZyB1Y29sX25v
cm1hbGl6ZVNob3J0RGVmaW5pdGlvblN0cmluZ18zXzIKLSNkZWZpbmUgdWNvbF9vcGVuIHVjb2xf
b3Blbl8zXzIKLSNkZWZpbmUgdWNvbF9vcGVuQXZhaWxhYmxlTG9jYWxlcyB1Y29sX29wZW5BdmFp
bGFibGVMb2NhbGVzXzNfMgotI2RlZmluZSB1Y29sX29wZW5CaW5hcnkgdWNvbF9vcGVuQmluYXJ5
XzNfMgotI2RlZmluZSB1Y29sX29wZW5FbGVtZW50cyB1Y29sX29wZW5FbGVtZW50c18zXzIKLSNk
ZWZpbmUgdWNvbF9vcGVuRnJvbUlkZW50aWZpZXIgdWNvbF9vcGVuRnJvbUlkZW50aWZpZXJfM18y
Ci0jZGVmaW5lIHVjb2xfb3BlbkZyb21TaG9ydFN0cmluZyB1Y29sX29wZW5Gcm9tU2hvcnRTdHJp
bmdfM18yCi0jZGVmaW5lIHVjb2xfb3BlblJ1bGVzIHVjb2xfb3BlblJ1bGVzXzNfMgotI2RlZmlu
ZSB1Y29sX29wZW5faW50ZXJuYWwgdWNvbF9vcGVuX2ludGVybmFsXzNfMgotI2RlZmluZSB1Y29s
X3ByZXZpb3VzIHVjb2xfcHJldmlvdXNfM18yCi0jZGVmaW5lIHVjb2xfcHJpbWFyeU9yZGVyIHVj
b2xfcHJpbWFyeU9yZGVyXzNfMgotI2RlZmluZSB1Y29sX3Bydl9nZXRTcGVjaWFsQ0UgdWNvbF9w
cnZfZ2V0U3BlY2lhbENFXzNfMgotI2RlZmluZSB1Y29sX3Bydl9nZXRTcGVjaWFsUHJldkNFIHVj
b2xfcHJ2X2dldFNwZWNpYWxQcmV2Q0VfM18yCi0jZGVmaW5lIHVjb2xfcmVzZXQgdWNvbF9yZXNl
dF8zXzIKLSNkZWZpbmUgdWNvbF9yZXN0b3JlVmFyaWFibGVUb3AgdWNvbF9yZXN0b3JlVmFyaWFi
bGVUb3BfM18yCi0jZGVmaW5lIHVjb2xfc2FmZUNsb25lIHVjb2xfc2FmZUNsb25lXzNfMgotI2Rl
ZmluZSB1Y29sX3NlY29uZGFyeU9yZGVyIHVjb2xfc2Vjb25kYXJ5T3JkZXJfM18yCi0jZGVmaW5l
IHVjb2xfc2V0QXR0cmlidXRlIHVjb2xfc2V0QXR0cmlidXRlXzNfMgotI2RlZmluZSB1Y29sX3Nl
dE9mZnNldCB1Y29sX3NldE9mZnNldF8zXzIKLSNkZWZpbmUgdWNvbF9zZXRPcHRpb25zRnJvbUhl
YWRlciB1Y29sX3NldE9wdGlvbnNGcm9tSGVhZGVyXzNfMgotI2RlZmluZSB1Y29sX3NldFJlcVZh
bGlkTG9jYWxlcyB1Y29sX3NldFJlcVZhbGlkTG9jYWxlc18zXzIKLSNkZWZpbmUgdWNvbF9zZXRT
dHJlbmd0aCB1Y29sX3NldFN0cmVuZ3RoXzNfMgotI2RlZmluZSB1Y29sX3NldFRleHQgdWNvbF9z
ZXRUZXh0XzNfMgotI2RlZmluZSB1Y29sX3NldFZhcmlhYmxlVG9wIHVjb2xfc2V0VmFyaWFibGVU
b3BfM18yCi0jZGVmaW5lIHVjb2xfc2hvcnRTdHJpbmdUb0lkZW50aWZpZXIgdWNvbF9zaG9ydFN0
cmluZ1RvSWRlbnRpZmllcl8zXzIKLSNkZWZpbmUgdWNvbF9zb3J0S2V5VG9TdHJpbmcgdWNvbF9z
b3J0S2V5VG9TdHJpbmdfM18yCi0jZGVmaW5lIHVjb2xfc3RyY29sbCB1Y29sX3N0cmNvbGxfM18y
Ci0jZGVmaW5lIHVjb2xfc3RyY29sbEl0ZXIgdWNvbF9zdHJjb2xsSXRlcl8zXzIKLSNkZWZpbmUg
dWNvbF9zd2FwIHVjb2xfc3dhcF8zXzIKLSNkZWZpbmUgdWNvbF9zd2FwQmluYXJ5IHVjb2xfc3dh
cEJpbmFyeV8zXzIKLSNkZWZpbmUgdWNvbF9zd2FwSW52ZXJzZVVDQSB1Y29sX3N3YXBJbnZlcnNl
VUNBXzNfMgotI2RlZmluZSB1Y29sX3RlcnRpYXJ5T3JkZXIgdWNvbF90ZXJ0aWFyeU9yZGVyXzNf
MgotI2RlZmluZSB1Y29sX3Rva19hc3NlbWJsZVRva2VuTGlzdCB1Y29sX3Rva19hc3NlbWJsZVRv
a2VuTGlzdF8zXzIKLSNkZWZpbmUgdWNvbF90b2tfY2xvc2VUb2tlbkxpc3QgdWNvbF90b2tfY2xv
c2VUb2tlbkxpc3RfM18yCi0jZGVmaW5lIHVjb2xfdG9rX2dldE5leHRBcmd1bWVudCB1Y29sX3Rv
a19nZXROZXh0QXJndW1lbnRfM18yCi0jZGVmaW5lIHVjb2xfdG9rX2luaXRUb2tlbkxpc3QgdWNv
bF90b2tfaW5pdFRva2VuTGlzdF8zXzIKLSNkZWZpbmUgdWNvbF90b2tfcGFyc2VOZXh0VG9rZW4g
dWNvbF90b2tfcGFyc2VOZXh0VG9rZW5fM18yCi0jZGVmaW5lIHVjb2xfdXBkYXRlSW50ZXJuYWxT
dGF0ZSB1Y29sX3VwZGF0ZUludGVybmFsU3RhdGVfM18yCi0jZGVmaW5lIHVjdXJyX2ZvckxvY2Fs
ZSB1Y3Vycl9mb3JMb2NhbGVfM18yCi0jZGVmaW5lIHVjdXJyX2dldERlZmF1bHRGcmFjdGlvbkRp
Z2l0cyB1Y3Vycl9nZXREZWZhdWx0RnJhY3Rpb25EaWdpdHNfM18yCi0jZGVmaW5lIHVjdXJyX2dl
dE5hbWUgdWN1cnJfZ2V0TmFtZV8zXzIKLSNkZWZpbmUgdWN1cnJfZ2V0Um91bmRpbmdJbmNyZW1l
bnQgdWN1cnJfZ2V0Um91bmRpbmdJbmNyZW1lbnRfM18yCi0jZGVmaW5lIHVjdXJyX3JlZ2lzdGVy
IHVjdXJyX3JlZ2lzdGVyXzNfMgotI2RlZmluZSB1Y3Vycl91bnJlZ2lzdGVyIHVjdXJyX3VucmVn
aXN0ZXJfM18yCi0jZGVmaW5lIHVkYXRfYXBwbHlQYXR0ZXJuIHVkYXRfYXBwbHlQYXR0ZXJuXzNf
MgotI2RlZmluZSB1ZGF0X2Nsb25lIHVkYXRfY2xvbmVfM18yCi0jZGVmaW5lIHVkYXRfY2xvc2Ug
dWRhdF9jbG9zZV8zXzIKLSNkZWZpbmUgdWRhdF9jb3VudEF2YWlsYWJsZSB1ZGF0X2NvdW50QXZh
aWxhYmxlXzNfMgotI2RlZmluZSB1ZGF0X2NvdW50U3ltYm9scyB1ZGF0X2NvdW50U3ltYm9sc18z
XzIKLSNkZWZpbmUgdWRhdF9mb3JtYXQgdWRhdF9mb3JtYXRfM18yCi0jZGVmaW5lIHVkYXRfZ2V0
MkRpZ2l0WWVhclN0YXJ0IHVkYXRfZ2V0MkRpZ2l0WWVhclN0YXJ0XzNfMgotI2RlZmluZSB1ZGF0
X2dldEF2YWlsYWJsZSB1ZGF0X2dldEF2YWlsYWJsZV8zXzIKLSNkZWZpbmUgdWRhdF9nZXRDYWxl
bmRhciB1ZGF0X2dldENhbGVuZGFyXzNfMgotI2RlZmluZSB1ZGF0X2dldExvY2FsZUJ5VHlwZSB1
ZGF0X2dldExvY2FsZUJ5VHlwZV8zXzIKLSNkZWZpbmUgdWRhdF9nZXROdW1iZXJGb3JtYXQgdWRh
dF9nZXROdW1iZXJGb3JtYXRfM18yCi0jZGVmaW5lIHVkYXRfZ2V0U3ltYm9scyB1ZGF0X2dldFN5
bWJvbHNfM18yCi0jZGVmaW5lIHVkYXRfaXNMZW5pZW50IHVkYXRfaXNMZW5pZW50XzNfMgotI2Rl
ZmluZSB1ZGF0X29wZW4gdWRhdF9vcGVuXzNfMgotI2RlZmluZSB1ZGF0X3BhcnNlIHVkYXRfcGFy
c2VfM18yCi0jZGVmaW5lIHVkYXRfcGFyc2VDYWxlbmRhciB1ZGF0X3BhcnNlQ2FsZW5kYXJfM18y
Ci0jZGVmaW5lIHVkYXRfc2V0MkRpZ2l0WWVhclN0YXJ0IHVkYXRfc2V0MkRpZ2l0WWVhclN0YXJ0
XzNfMgotI2RlZmluZSB1ZGF0X3NldENhbGVuZGFyIHVkYXRfc2V0Q2FsZW5kYXJfM18yCi0jZGVm
aW5lIHVkYXRfc2V0TGVuaWVudCB1ZGF0X3NldExlbmllbnRfM18yCi0jZGVmaW5lIHVkYXRfc2V0
TnVtYmVyRm9ybWF0IHVkYXRfc2V0TnVtYmVyRm9ybWF0XzNfMgotI2RlZmluZSB1ZGF0X3NldFN5
bWJvbHMgdWRhdF9zZXRTeW1ib2xzXzNfMgotI2RlZmluZSB1ZGF0X3RvUGF0dGVybiB1ZGF0X3Rv
UGF0dGVybl8zXzIKLSNkZWZpbmUgdWRhdGFfY2hlY2tDb21tb25EYXRhIHVkYXRhX2NoZWNrQ29t
bW9uRGF0YV8zXzIKLSNkZWZpbmUgdWRhdGFfY2xvc2UgdWRhdGFfY2xvc2VfM18yCi0jZGVmaW5l
IHVkYXRhX2Nsb3NlU3dhcHBlciB1ZGF0YV9jbG9zZVN3YXBwZXJfM18yCi0jZGVmaW5lIHVkYXRh
X2dldEhlYWRlclNpemUgdWRhdGFfZ2V0SGVhZGVyU2l6ZV8zXzIKLSNkZWZpbmUgdWRhdGFfZ2V0
SW5mbyB1ZGF0YV9nZXRJbmZvXzNfMgotI2RlZmluZSB1ZGF0YV9nZXRJbmZvU2l6ZSB1ZGF0YV9n
ZXRJbmZvU2l6ZV8zXzIKLSNkZWZpbmUgdWRhdGFfZ2V0TGVuZ3RoIHVkYXRhX2dldExlbmd0aF8z
XzIKLSNkZWZpbmUgdWRhdGFfZ2V0TWVtb3J5IHVkYXRhX2dldE1lbW9yeV8zXzIKLSNkZWZpbmUg
dWRhdGFfZ2V0UmF3TWVtb3J5IHVkYXRhX2dldFJhd01lbW9yeV8zXzIKLSNkZWZpbmUgdWRhdGFf
b3BlbiB1ZGF0YV9vcGVuXzNfMgotI2RlZmluZSB1ZGF0YV9vcGVuQ2hvaWNlIHVkYXRhX29wZW5D
aG9pY2VfM18yCi0jZGVmaW5lIHVkYXRhX29wZW5Td2FwcGVyIHVkYXRhX29wZW5Td2FwcGVyXzNf
MgotI2RlZmluZSB1ZGF0YV9vcGVuU3dhcHBlckZvcklucHV0RGF0YSB1ZGF0YV9vcGVuU3dhcHBl
ckZvcklucHV0RGF0YV8zXzIKLSNkZWZpbmUgdWRhdGFfcHJpbnRFcnJvciB1ZGF0YV9wcmludEVy
cm9yXzNfMgotI2RlZmluZSB1ZGF0YV9yZWFkSW50MTYgdWRhdGFfcmVhZEludDE2XzNfMgotI2Rl
ZmluZSB1ZGF0YV9yZWFkSW50MzIgdWRhdGFfcmVhZEludDMyXzNfMgotI2RlZmluZSB1ZGF0YV9z
ZXRBcHBEYXRhIHVkYXRhX3NldEFwcERhdGFfM18yCi0jZGVmaW5lIHVkYXRhX3NldENvbW1vbkRh
dGEgdWRhdGFfc2V0Q29tbW9uRGF0YV8zXzIKLSNkZWZpbmUgdWRhdGFfc3dhcERhdGFIZWFkZXIg
dWRhdGFfc3dhcERhdGFIZWFkZXJfM18yCi0jZGVmaW5lIHVkYXRhX3N3YXBJbnZTdHJpbmdCbG9j
ayB1ZGF0YV9zd2FwSW52U3RyaW5nQmxvY2tfM18yCi0jZGVmaW5lIHVlbnVtX2Nsb3NlIHVlbnVt
X2Nsb3NlXzNfMgotI2RlZmluZSB1ZW51bV9jb3VudCB1ZW51bV9jb3VudF8zXzIKLSNkZWZpbmUg
dWVudW1fbmV4dCB1ZW51bV9uZXh0XzNfMgotI2RlZmluZSB1ZW51bV9uZXh0RGVmYXVsdCB1ZW51
bV9uZXh0RGVmYXVsdF8zXzIKLSNkZWZpbmUgdWVudW1fb3BlbkNoYXJTdHJpbmdzRW51bWVyYXRp
b24gdWVudW1fb3BlbkNoYXJTdHJpbmdzRW51bWVyYXRpb25fM18yCi0jZGVmaW5lIHVlbnVtX29w
ZW5TdHJpbmdFbnVtZXJhdGlvbiB1ZW51bV9vcGVuU3RyaW5nRW51bWVyYXRpb25fM18yCi0jZGVm
aW5lIHVlbnVtX3Jlc2V0IHVlbnVtX3Jlc2V0XzNfMgotI2RlZmluZSB1ZW51bV91bmV4dCB1ZW51
bV91bmV4dF8zXzIKLSNkZWZpbmUgdWVudW1fdW5leHREZWZhdWx0IHVlbnVtX3VuZXh0RGVmYXVs
dF8zXzIKLSNkZWZpbmUgdWZpbGVfY2xvc2VfdHJhbnNsaXQgdWZpbGVfY2xvc2VfdHJhbnNsaXRf
M18yCi0jZGVmaW5lIHVmaWxlX2ZpbGxfdWNoYXJfYnVmZmVyIHVmaWxlX2ZpbGxfdWNoYXJfYnVm
ZmVyXzNfMgotI2RlZmluZSB1ZmlsZV9mbHVzaF90cmFuc2xpdCB1ZmlsZV9mbHVzaF90cmFuc2xp
dF8zXzIKLSNkZWZpbmUgdWZpbGVfZ2V0Y2ggdWZpbGVfZ2V0Y2hfM18yCi0jZGVmaW5lIHVmaWxl
X2dldGNoMzIgdWZpbGVfZ2V0Y2gzMl8zXzIKLSNkZWZpbmUgdWZtdF82NHRvdSB1Zm10XzY0dG91
XzNfMgotI2RlZmluZSB1Zm10X2RlZmF1bHRDUFRvVW5pY29kZSB1Zm10X2RlZmF1bHRDUFRvVW5p
Y29kZV8zXzIKLSNkZWZpbmUgdWZtdF9kaWdpdHZhbHVlIHVmbXRfZGlnaXR2YWx1ZV8zXzIKLSNk
ZWZpbmUgdWZtdF9pc2RpZ2l0IHVmbXRfaXNkaWdpdF8zXzIKLSNkZWZpbmUgdWZtdF9wdG91IHVm
bXRfcHRvdV8zXzIKLSNkZWZpbmUgdWZtdF91dG82NCB1Zm10X3V0bzY0XzNfMgotI2RlZmluZSB1
Zm10X3V0b3AgdWZtdF91dG9wXzNfMgotI2RlZmluZSB1aGFzaF9jbG9zZSB1aGFzaF9jbG9zZV8z
XzIKLSNkZWZpbmUgdWhhc2hfY29tcGFyZUNhc2VsZXNzVW5pY29kZVN0cmluZyB1aGFzaF9jb21w
YXJlQ2FzZWxlc3NVbmljb2RlU3RyaW5nXzNfMgotI2RlZmluZSB1aGFzaF9jb21wYXJlQ2hhcnMg
dWhhc2hfY29tcGFyZUNoYXJzXzNfMgotI2RlZmluZSB1aGFzaF9jb21wYXJlSUNoYXJzIHVoYXNo
X2NvbXBhcmVJQ2hhcnNfM18yCi0jZGVmaW5lIHVoYXNoX2NvbXBhcmVMb25nIHVoYXNoX2NvbXBh
cmVMb25nXzNfMgotI2RlZmluZSB1aGFzaF9jb21wYXJlVUNoYXJzIHVoYXNoX2NvbXBhcmVVQ2hh
cnNfM18yCi0jZGVmaW5lIHVoYXNoX2NvbXBhcmVVbmljb2RlU3RyaW5nIHVoYXNoX2NvbXBhcmVV
bmljb2RlU3RyaW5nXzNfMgotI2RlZmluZSB1aGFzaF9jb3VudCB1aGFzaF9jb3VudF8zXzIKLSNk
ZWZpbmUgdWhhc2hfZGVsZXRlSGFzaHRhYmxlIHVoYXNoX2RlbGV0ZUhhc2h0YWJsZV8zXzIKLSNk
ZWZpbmUgdWhhc2hfZGVsZXRlVVZlY3RvciB1aGFzaF9kZWxldGVVVmVjdG9yXzNfMgotI2RlZmlu
ZSB1aGFzaF9kZWxldGVVbmljb2RlU3RyaW5nIHVoYXNoX2RlbGV0ZVVuaWNvZGVTdHJpbmdfM18y
Ci0jZGVmaW5lIHVoYXNoX2ZpbmQgdWhhc2hfZmluZF8zXzIKLSNkZWZpbmUgdWhhc2hfZnJlZUJs
b2NrIHVoYXNoX2ZyZWVCbG9ja18zXzIKLSNkZWZpbmUgdWhhc2hfZ2V0IHVoYXNoX2dldF8zXzIK
LSNkZWZpbmUgdWhhc2hfZ2V0aSB1aGFzaF9nZXRpXzNfMgotI2RlZmluZSB1aGFzaF9oYXNoQ2Fz
ZWxlc3NVbmljb2RlU3RyaW5nIHVoYXNoX2hhc2hDYXNlbGVzc1VuaWNvZGVTdHJpbmdfM18yCi0j
ZGVmaW5lIHVoYXNoX2hhc2hDaGFycyB1aGFzaF9oYXNoQ2hhcnNfM18yCi0jZGVmaW5lIHVoYXNo
X2hhc2hJQ2hhcnMgdWhhc2hfaGFzaElDaGFyc18zXzIKLSNkZWZpbmUgdWhhc2hfaGFzaExvbmcg
dWhhc2hfaGFzaExvbmdfM18yCi0jZGVmaW5lIHVoYXNoX2hhc2hVQ2hhcnMgdWhhc2hfaGFzaFVD
aGFyc18zXzIKLSNkZWZpbmUgdWhhc2hfaGFzaFVDaGFyc04gdWhhc2hfaGFzaFVDaGFyc05fM18y
Ci0jZGVmaW5lIHVoYXNoX2hhc2hVbmljb2RlU3RyaW5nIHVoYXNoX2hhc2hVbmljb2RlU3RyaW5n
XzNfMgotI2RlZmluZSB1aGFzaF9pZ2V0IHVoYXNoX2lnZXRfM18yCi0jZGVmaW5lIHVoYXNoX2ln
ZXRpIHVoYXNoX2lnZXRpXzNfMgotI2RlZmluZSB1aGFzaF9pcHV0IHVoYXNoX2lwdXRfM18yCi0j
ZGVmaW5lIHVoYXNoX2lwdXRpIHVoYXNoX2lwdXRpXzNfMgotI2RlZmluZSB1aGFzaF9pcmVtb3Zl
IHVoYXNoX2lyZW1vdmVfM18yCi0jZGVmaW5lIHVoYXNoX2lyZW1vdmVpIHVoYXNoX2lyZW1vdmVp
XzNfMgotI2RlZmluZSB1aGFzaF9uZXh0RWxlbWVudCB1aGFzaF9uZXh0RWxlbWVudF8zXzIKLSNk
ZWZpbmUgdWhhc2hfb3BlbiB1aGFzaF9vcGVuXzNfMgotI2RlZmluZSB1aGFzaF9vcGVuU2l6ZSB1
aGFzaF9vcGVuU2l6ZV8zXzIKLSNkZWZpbmUgdWhhc2hfcHV0IHVoYXNoX3B1dF8zXzIKLSNkZWZp
bmUgdWhhc2hfcHV0aSB1aGFzaF9wdXRpXzNfMgotI2RlZmluZSB1aGFzaF9yZW1vdmUgdWhhc2hf
cmVtb3ZlXzNfMgotI2RlZmluZSB1aGFzaF9yZW1vdmVBbGwgdWhhc2hfcmVtb3ZlQWxsXzNfMgot
I2RlZmluZSB1aGFzaF9yZW1vdmVFbGVtZW50IHVoYXNoX3JlbW92ZUVsZW1lbnRfM18yCi0jZGVm
aW5lIHVoYXNoX3JlbW92ZWkgdWhhc2hfcmVtb3ZlaV8zXzIKLSNkZWZpbmUgdWhhc2hfc2V0S2V5
Q29tcGFyYXRvciB1aGFzaF9zZXRLZXlDb21wYXJhdG9yXzNfMgotI2RlZmluZSB1aGFzaF9zZXRL
ZXlEZWxldGVyIHVoYXNoX3NldEtleURlbGV0ZXJfM18yCi0jZGVmaW5lIHVoYXNoX3NldEtleUhh
c2hlciB1aGFzaF9zZXRLZXlIYXNoZXJfM18yCi0jZGVmaW5lIHVoYXNoX3NldFJlc2l6ZVBvbGlj
eSB1aGFzaF9zZXRSZXNpemVQb2xpY3lfM18yCi0jZGVmaW5lIHVoYXNoX3NldFZhbHVlRGVsZXRl
ciB1aGFzaF9zZXRWYWx1ZURlbGV0ZXJfM18yCi0jZGVmaW5lIHVoYXNoX3Rva2kgdWhhc2hfdG9r
aV8zXzIKLSNkZWZpbmUgdWhhc2hfdG9rcCB1aGFzaF90b2twXzNfMgotI2RlZmluZSB1aHN0X2Fk
ZFByb3BlcnR5U3RhcnRzIHVoc3RfYWRkUHJvcGVydHlTdGFydHNfM18yCi0jZGVmaW5lIHVpZG5h
X0lETlRvQVNDSUkgdWlkbmFfSUROVG9BU0NJSV8zXzIKLSNkZWZpbmUgdWlkbmFfSUROVG9Vbmlj
b2RlIHVpZG5hX0lETlRvVW5pY29kZV8zXzIKLSNkZWZpbmUgdWlkbmFfY29tcGFyZSB1aWRuYV9j
b21wYXJlXzNfMgotI2RlZmluZSB1aWRuYV90b0FTQ0lJIHVpZG5hX3RvQVNDSUlfM18yCi0jZGVm
aW5lIHVpZG5hX3RvVW5pY29kZSB1aWRuYV90b1VuaWNvZGVfM18yCi0jZGVmaW5lIHVpdGVyX2N1
cnJlbnQzMiB1aXRlcl9jdXJyZW50MzJfM18yCi0jZGVmaW5lIHVpdGVyX2dldFN0YXRlIHVpdGVy
X2dldFN0YXRlXzNfMgotI2RlZmluZSB1aXRlcl9uZXh0MzIgdWl0ZXJfbmV4dDMyXzNfMgotI2Rl
ZmluZSB1aXRlcl9wcmV2aW91czMyIHVpdGVyX3ByZXZpb3VzMzJfM18yCi0jZGVmaW5lIHVpdGVy
X3NldENoYXJhY3Rlckl0ZXJhdG9yIHVpdGVyX3NldENoYXJhY3Rlckl0ZXJhdG9yXzNfMgotI2Rl
ZmluZSB1aXRlcl9zZXRSZXBsYWNlYWJsZSB1aXRlcl9zZXRSZXBsYWNlYWJsZV8zXzIKLSNkZWZp
bmUgdWl0ZXJfc2V0U3RhdGUgdWl0ZXJfc2V0U3RhdGVfM18yCi0jZGVmaW5lIHVpdGVyX3NldFN0
cmluZyB1aXRlcl9zZXRTdHJpbmdfM18yCi0jZGVmaW5lIHVpdGVyX3NldFVURjE2QkUgdWl0ZXJf
c2V0VVRGMTZCRV8zXzIKLSNkZWZpbmUgdWl0ZXJfc2V0VVRGOCB1aXRlcl9zZXRVVEY4XzNfMgot
I2RlZmluZSB1bG9jX2FjY2VwdExhbmd1YWdlIHVsb2NfYWNjZXB0TGFuZ3VhZ2VfM18yCi0jZGVm
aW5lIHVsb2NfYWNjZXB0TGFuZ3VhZ2VGcm9tSFRUUCB1bG9jX2FjY2VwdExhbmd1YWdlRnJvbUhU
VFBfM18yCi0jZGVmaW5lIHVsb2NfY2Fub25pY2FsaXplIHVsb2NfY2Fub25pY2FsaXplXzNfMgot
I2RlZmluZSB1bG9jX2NvdW50QXZhaWxhYmxlIHVsb2NfY291bnRBdmFpbGFibGVfM18yCi0jZGVm
aW5lIHVsb2NfZ2V0QXZhaWxhYmxlIHVsb2NfZ2V0QXZhaWxhYmxlXzNfMgotI2RlZmluZSB1bG9j
X2dldEJhc2VOYW1lIHVsb2NfZ2V0QmFzZU5hbWVfM18yCi0jZGVmaW5lIHVsb2NfZ2V0Q291bnRy
eSB1bG9jX2dldENvdW50cnlfM18yCi0jZGVmaW5lIHVsb2NfZ2V0RGVmYXVsdCB1bG9jX2dldERl
ZmF1bHRfM18yCi0jZGVmaW5lIHVsb2NfZ2V0RGlzcGxheUNvdW50cnkgdWxvY19nZXREaXNwbGF5
Q291bnRyeV8zXzIKLSNkZWZpbmUgdWxvY19nZXREaXNwbGF5S2V5d29yZCB1bG9jX2dldERpc3Bs
YXlLZXl3b3JkXzNfMgotI2RlZmluZSB1bG9jX2dldERpc3BsYXlLZXl3b3JkVmFsdWUgdWxvY19n
ZXREaXNwbGF5S2V5d29yZFZhbHVlXzNfMgotI2RlZmluZSB1bG9jX2dldERpc3BsYXlMYW5ndWFn
ZSB1bG9jX2dldERpc3BsYXlMYW5ndWFnZV8zXzIKLSNkZWZpbmUgdWxvY19nZXREaXNwbGF5TmFt
ZSB1bG9jX2dldERpc3BsYXlOYW1lXzNfMgotI2RlZmluZSB1bG9jX2dldERpc3BsYXlTY3JpcHQg
dWxvY19nZXREaXNwbGF5U2NyaXB0XzNfMgotI2RlZmluZSB1bG9jX2dldERpc3BsYXlWYXJpYW50
IHVsb2NfZ2V0RGlzcGxheVZhcmlhbnRfM18yCi0jZGVmaW5lIHVsb2NfZ2V0SVNPM0NvdW50cnkg
dWxvY19nZXRJU08zQ291bnRyeV8zXzIKLSNkZWZpbmUgdWxvY19nZXRJU08zTGFuZ3VhZ2UgdWxv
Y19nZXRJU08zTGFuZ3VhZ2VfM18yCi0jZGVmaW5lIHVsb2NfZ2V0SVNPQ291bnRyaWVzIHVsb2Nf
Z2V0SVNPQ291bnRyaWVzXzNfMgotI2RlZmluZSB1bG9jX2dldElTT0xhbmd1YWdlcyB1bG9jX2dl
dElTT0xhbmd1YWdlc18zXzIKLSNkZWZpbmUgdWxvY19nZXRLZXl3b3JkVmFsdWUgdWxvY19nZXRL
ZXl3b3JkVmFsdWVfM18yCi0jZGVmaW5lIHVsb2NfZ2V0TENJRCB1bG9jX2dldExDSURfM18yCi0j
ZGVmaW5lIHVsb2NfZ2V0TGFuZ3VhZ2UgdWxvY19nZXRMYW5ndWFnZV8zXzIKLSNkZWZpbmUgdWxv
Y19nZXROYW1lIHVsb2NfZ2V0TmFtZV8zXzIKLSNkZWZpbmUgdWxvY19nZXRQYXJlbnQgdWxvY19n
ZXRQYXJlbnRfM18yCi0jZGVmaW5lIHVsb2NfZ2V0U2NyaXB0IHVsb2NfZ2V0U2NyaXB0XzNfMgot
I2RlZmluZSB1bG9jX2dldFZhcmlhbnQgdWxvY19nZXRWYXJpYW50XzNfMgotI2RlZmluZSB1bG9j
X29wZW5LZXl3b3JkTGlzdCB1bG9jX29wZW5LZXl3b3JkTGlzdF8zXzIKLSNkZWZpbmUgdWxvY19v
cGVuS2V5d29yZHMgdWxvY19vcGVuS2V5d29yZHNfM18yCi0jZGVmaW5lIHVsb2Nfc2V0RGVmYXVs
dCB1bG9jX3NldERlZmF1bHRfM18yCi0jZGVmaW5lIHVsb2Nfc2V0S2V5d29yZFZhbHVlIHVsb2Nf
c2V0S2V5d29yZFZhbHVlXzNfMgotI2RlZmluZSB1bG9jZGF0YV9nZXRFeGVtcGxhclNldCB1bG9j
ZGF0YV9nZXRFeGVtcGxhclNldF8zXzIKLSNkZWZpbmUgdWxvY2RhdGFfZ2V0TWVhc3VyZW1lbnRT
eXN0ZW0gdWxvY2RhdGFfZ2V0TWVhc3VyZW1lbnRTeXN0ZW1fM18yCi0jZGVmaW5lIHVsb2NkYXRh
X2dldFBhcGVyU2l6ZSB1bG9jZGF0YV9nZXRQYXBlclNpemVfM18yCi0jZGVmaW5lIHVtc2dfYXBw
bHlQYXR0ZXJuIHVtc2dfYXBwbHlQYXR0ZXJuXzNfMgotI2RlZmluZSB1bXNnX2Nsb25lIHVtc2df
Y2xvbmVfM18yCi0jZGVmaW5lIHVtc2dfY2xvc2UgdW1zZ19jbG9zZV8zXzIKLSNkZWZpbmUgdW1z
Z19mb3JtYXQgdW1zZ19mb3JtYXRfM18yCi0jZGVmaW5lIHVtc2dfZ2V0TG9jYWxlIHVtc2dfZ2V0
TG9jYWxlXzNfMgotI2RlZmluZSB1bXNnX2dldExvY2FsZUJ5VHlwZSB1bXNnX2dldExvY2FsZUJ5
VHlwZV8zXzIKLSNkZWZpbmUgdW1zZ19vcGVuIHVtc2dfb3Blbl8zXzIKLSNkZWZpbmUgdW1zZ19w
YXJzZSB1bXNnX3BhcnNlXzNfMgotI2RlZmluZSB1bXNnX3NldExvY2FsZSB1bXNnX3NldExvY2Fs
ZV8zXzIKLSNkZWZpbmUgdW1zZ190b1BhdHRlcm4gdW1zZ190b1BhdHRlcm5fM18yCi0jZGVmaW5l
IHVtc2dfdmZvcm1hdCB1bXNnX3Zmb3JtYXRfM18yCi0jZGVmaW5lIHVtc2dfdnBhcnNlIHVtc2df
dnBhcnNlXzNfMgotI2RlZmluZSB1bXR4X2F0b21pY19kZWMgdW10eF9hdG9taWNfZGVjXzNfMgot
I2RlZmluZSB1bXR4X2F0b21pY19pbmMgdW10eF9hdG9taWNfaW5jXzNfMgotI2RlZmluZSB1bXR4
X2NsZWFudXAgdW10eF9jbGVhbnVwXzNfMgotI2RlZmluZSB1bXR4X2Rlc3Ryb3kgdW10eF9kZXN0
cm95XzNfMgotI2RlZmluZSB1bXR4X2luaXQgdW10eF9pbml0XzNfMgotI2RlZmluZSB1bXR4X2xv
Y2sgdW10eF9sb2NrXzNfMgotI2RlZmluZSB1bXR4X3VubG9jayB1bXR4X3VubG9ja18zXzIKLSNk
ZWZpbmUgdW5vcm1fYWRkUHJvcGVydHlTdGFydHMgdW5vcm1fYWRkUHJvcGVydHlTdGFydHNfM18y
Ci0jZGVmaW5lIHVub3JtX2Nsb3NlSXRlciB1bm9ybV9jbG9zZUl0ZXJfM18yCi0jZGVmaW5lIHVu
b3JtX2NvbXBhcmUgdW5vcm1fY29tcGFyZV8zXzIKLSNkZWZpbmUgdW5vcm1fY29tcG9zZSB1bm9y
bV9jb21wb3NlXzNfMgotI2RlZmluZSB1bm9ybV9jb25jYXRlbmF0ZSB1bm9ybV9jb25jYXRlbmF0
ZV8zXzIKLSNkZWZpbmUgdW5vcm1fZGVjb21wb3NlIHVub3JtX2RlY29tcG9zZV8zXzIKLSNkZWZp
bmUgdW5vcm1fZ2V0Q2Fub25TdGFydFNldCB1bm9ybV9nZXRDYW5vblN0YXJ0U2V0XzNfMgotI2Rl
ZmluZSB1bm9ybV9nZXRDYW5vbmljYWxEZWNvbXBvc2l0aW9uIHVub3JtX2dldENhbm9uaWNhbERl
Y29tcG9zaXRpb25fM18yCi0jZGVmaW5lIHVub3JtX2dldERlY29tcG9zaXRpb24gdW5vcm1fZ2V0
RGVjb21wb3NpdGlvbl8zXzIKLSNkZWZpbmUgdW5vcm1fZ2V0RkNEMTZGcm9tQ29kZVBvaW50IHVu
b3JtX2dldEZDRDE2RnJvbUNvZGVQb2ludF8zXzIKLSNkZWZpbmUgdW5vcm1fZ2V0RkNEVHJpZSB1
bm9ybV9nZXRGQ0RUcmllXzNfMgotI2RlZmluZSB1bm9ybV9nZXROWCB1bm9ybV9nZXROWF8zXzIK
LSNkZWZpbmUgdW5vcm1fZ2V0UXVpY2tDaGVjayB1bm9ybV9nZXRRdWlja0NoZWNrXzNfMgotI2Rl
ZmluZSB1bm9ybV9nZXRVbmljb2RlVmVyc2lvbiB1bm9ybV9nZXRVbmljb2RlVmVyc2lvbl8zXzIK
LSNkZWZpbmUgdW5vcm1faGF2ZURhdGEgdW5vcm1faGF2ZURhdGFfM18yCi0jZGVmaW5lIHVub3Jt
X2ludGVybmFsSXNGdWxsQ29tcG9zaXRpb25FeGNsdXNpb24gdW5vcm1faW50ZXJuYWxJc0Z1bGxD
b21wb3NpdGlvbkV4Y2x1c2lvbl8zXzIKLSNkZWZpbmUgdW5vcm1faW50ZXJuYWxOb3JtYWxpemUg
dW5vcm1faW50ZXJuYWxOb3JtYWxpemVfM18yCi0jZGVmaW5lIHVub3JtX2ludGVybmFsTm9ybWFs
aXplV2l0aE5YIHVub3JtX2ludGVybmFsTm9ybWFsaXplV2l0aE5YXzNfMgotI2RlZmluZSB1bm9y
bV9pbnRlcm5hbFF1aWNrQ2hlY2sgdW5vcm1faW50ZXJuYWxRdWlja0NoZWNrXzNfMgotI2RlZmlu
ZSB1bm9ybV9pc0Nhbm9uU2FmZVN0YXJ0IHVub3JtX2lzQ2Fub25TYWZlU3RhcnRfM18yCi0jZGVm
aW5lIHVub3JtX2lzTkZTa2lwcGFibGUgdW5vcm1faXNORlNraXBwYWJsZV8zXzIKLSNkZWZpbmUg
dW5vcm1faXNOb3JtYWxpemVkIHVub3JtX2lzTm9ybWFsaXplZF8zXzIKLSNkZWZpbmUgdW5vcm1f
aXNOb3JtYWxpemVkV2l0aE9wdGlvbnMgdW5vcm1faXNOb3JtYWxpemVkV2l0aE9wdGlvbnNfM18y
Ci0jZGVmaW5lIHVub3JtX25leHQgdW5vcm1fbmV4dF8zXzIKLSNkZWZpbmUgdW5vcm1fbm9ybWFs
aXplIHVub3JtX25vcm1hbGl6ZV8zXzIKLSNkZWZpbmUgdW5vcm1fb3Blbkl0ZXIgdW5vcm1fb3Bl
bkl0ZXJfM18yCi0jZGVmaW5lIHVub3JtX3ByZXZpb3VzIHVub3JtX3ByZXZpb3VzXzNfMgotI2Rl
ZmluZSB1bm9ybV9xdWlja0NoZWNrIHVub3JtX3F1aWNrQ2hlY2tfM18yCi0jZGVmaW5lIHVub3Jt
X3F1aWNrQ2hlY2tXaXRoT3B0aW9ucyB1bm9ybV9xdWlja0NoZWNrV2l0aE9wdGlvbnNfM18yCi0j
ZGVmaW5lIHVub3JtX3NldEl0ZXIgdW5vcm1fc2V0SXRlcl8zXzIKLSNkZWZpbmUgdW5vcm1fc3dh
cCB1bm9ybV9zd2FwXzNfMgotI2RlZmluZSB1bnVtX2FwcGx5UGF0dGVybiB1bnVtX2FwcGx5UGF0
dGVybl8zXzIKLSNkZWZpbmUgdW51bV9jbG9uZSB1bnVtX2Nsb25lXzNfMgotI2RlZmluZSB1bnVt
X2Nsb3NlIHVudW1fY2xvc2VfM18yCi0jZGVmaW5lIHVudW1fY291bnRBdmFpbGFibGUgdW51bV9j
b3VudEF2YWlsYWJsZV8zXzIKLSNkZWZpbmUgdW51bV9mb3JtYXQgdW51bV9mb3JtYXRfM18yCi0j
ZGVmaW5lIHVudW1fZm9ybWF0RG91YmxlIHVudW1fZm9ybWF0RG91YmxlXzNfMgotI2RlZmluZSB1
bnVtX2Zvcm1hdERvdWJsZUN1cnJlbmN5IHVudW1fZm9ybWF0RG91YmxlQ3VycmVuY3lfM18yCi0j
ZGVmaW5lIHVudW1fZm9ybWF0SW50NjQgdW51bV9mb3JtYXRJbnQ2NF8zXzIKLSNkZWZpbmUgdW51
bV9nZXRBdHRyaWJ1dGUgdW51bV9nZXRBdHRyaWJ1dGVfM18yCi0jZGVmaW5lIHVudW1fZ2V0QXZh
aWxhYmxlIHVudW1fZ2V0QXZhaWxhYmxlXzNfMgotI2RlZmluZSB1bnVtX2dldERvdWJsZUF0dHJp
YnV0ZSB1bnVtX2dldERvdWJsZUF0dHJpYnV0ZV8zXzIKLSNkZWZpbmUgdW51bV9nZXRMb2NhbGVC
eVR5cGUgdW51bV9nZXRMb2NhbGVCeVR5cGVfM18yCi0jZGVmaW5lIHVudW1fZ2V0U3ltYm9sIHVu
dW1fZ2V0U3ltYm9sXzNfMgotI2RlZmluZSB1bnVtX2dldFRleHRBdHRyaWJ1dGUgdW51bV9nZXRU
ZXh0QXR0cmlidXRlXzNfMgotI2RlZmluZSB1bnVtX29wZW4gdW51bV9vcGVuXzNfMgotI2RlZmlu
ZSB1bnVtX3BhcnNlIHVudW1fcGFyc2VfM18yCi0jZGVmaW5lIHVudW1fcGFyc2VEb3VibGUgdW51
bV9wYXJzZURvdWJsZV8zXzIKLSNkZWZpbmUgdW51bV9wYXJzZURvdWJsZUN1cnJlbmN5IHVudW1f
cGFyc2VEb3VibGVDdXJyZW5jeV8zXzIKLSNkZWZpbmUgdW51bV9wYXJzZUludDY0IHVudW1fcGFy
c2VJbnQ2NF8zXzIKLSNkZWZpbmUgdW51bV9zZXRBdHRyaWJ1dGUgdW51bV9zZXRBdHRyaWJ1dGVf
M18yCi0jZGVmaW5lIHVudW1fc2V0RG91YmxlQXR0cmlidXRlIHVudW1fc2V0RG91YmxlQXR0cmli
dXRlXzNfMgotI2RlZmluZSB1bnVtX3NldFN5bWJvbCB1bnVtX3NldFN5bWJvbF8zXzIKLSNkZWZp
bmUgdW51bV9zZXRUZXh0QXR0cmlidXRlIHVudW1fc2V0VGV4dEF0dHJpYnV0ZV8zXzIKLSNkZWZp
bmUgdW51bV90b1BhdHRlcm4gdW51bV90b1BhdHRlcm5fM18yCi0jZGVmaW5lIHVwbmFtZV9zd2Fw
IHVwbmFtZV9zd2FwXzNfMgotI2RlZmluZSB1cHJvcHNfZ2V0U291cmNlIHVwcm9wc19nZXRTb3Vy
Y2VfM18yCi0jZGVmaW5lIHVwcm9wc19zd2FwIHVwcm9wc19zd2FwXzNfMgotI2RlZmluZSB1cHJ2
X2FzY2lpRnJvbUViY2RpYyB1cHJ2X2FzY2lpRnJvbUViY2RpY18zXzIKLSNkZWZpbmUgdXBydl9h
c2NpaXRvbG93ZXIgdXBydl9hc2NpaXRvbG93ZXJfM18yCi0jZGVmaW5lIHVwcnZfY2VpbCB1cHJ2
X2NlaWxfM18yCi0jZGVmaW5lIHVwcnZfY250dGFiX2FkZENvbnRyYWN0aW9uIHVwcnZfY250dGFi
X2FkZENvbnRyYWN0aW9uXzNfMgotI2RlZmluZSB1cHJ2X2NudHRhYl9jaGFuZ2VDb250cmFjdGlv
biB1cHJ2X2NudHRhYl9jaGFuZ2VDb250cmFjdGlvbl8zXzIKLSNkZWZpbmUgdXBydl9jbnR0YWJf
Y2hhbmdlTGFzdENFIHVwcnZfY250dGFiX2NoYW5nZUxhc3RDRV8zXzIKLSNkZWZpbmUgdXBydl9j
bnR0YWJfY2xvbmUgdXBydl9jbnR0YWJfY2xvbmVfM18yCi0jZGVmaW5lIHVwcnZfY250dGFiX2Ns
b3NlIHVwcnZfY250dGFiX2Nsb3NlXzNfMgotI2RlZmluZSB1cHJ2X2NudHRhYl9jb25zdHJ1Y3RU
YWJsZSB1cHJ2X2NudHRhYl9jb25zdHJ1Y3RUYWJsZV8zXzIKLSNkZWZpbmUgdXBydl9jbnR0YWJf
ZmluZENFIHVwcnZfY250dGFiX2ZpbmRDRV8zXzIKLSNkZWZpbmUgdXBydl9jbnR0YWJfZmluZENQ
IHVwcnZfY250dGFiX2ZpbmRDUF8zXzIKLSNkZWZpbmUgdXBydl9jbnR0YWJfZ2V0Q0UgdXBydl9j
bnR0YWJfZ2V0Q0VfM18yCi0jZGVmaW5lIHVwcnZfY250dGFiX2luc2VydENvbnRyYWN0aW9uIHVw
cnZfY250dGFiX2luc2VydENvbnRyYWN0aW9uXzNfMgotI2RlZmluZSB1cHJ2X2NudHRhYl9pc1Rh
aWxvcmVkIHVwcnZfY250dGFiX2lzVGFpbG9yZWRfM18yCi0jZGVmaW5lIHVwcnZfY250dGFiX29w
ZW4gdXBydl9jbnR0YWJfb3Blbl8zXzIKLSNkZWZpbmUgdXBydl9jbnR0YWJfc2V0Q29udHJhY3Rp
b24gdXBydl9jbnR0YWJfc2V0Q29udHJhY3Rpb25fM18yCi0jZGVmaW5lIHVwcnZfY29tcGFyZUFT
Q0lJUHJvcGVydHlOYW1lcyB1cHJ2X2NvbXBhcmVBU0NJSVByb3BlcnR5TmFtZXNfM18yCi0jZGVm
aW5lIHVwcnZfY29tcGFyZUVCQ0RJQ1Byb3BlcnR5TmFtZXMgdXBydl9jb21wYXJlRUJDRElDUHJv
cGVydHlOYW1lc18zXzIKLSNkZWZpbmUgdXBydl9jb21wYXJlSW52QXNjaWkgdXBydl9jb21wYXJl
SW52QXNjaWlfM18yCi0jZGVmaW5lIHVwcnZfY29tcGFyZUludkViY2RpYyB1cHJ2X2NvbXBhcmVJ
bnZFYmNkaWNfM18yCi0jZGVmaW5lIHVwcnZfY29udmVydFRvTENJRCB1cHJ2X2NvbnZlcnRUb0xD
SURfM18yCi0jZGVmaW5lIHVwcnZfY29udmVydFRvUG9zaXggdXBydl9jb252ZXJ0VG9Qb3NpeF8z
XzIKLSNkZWZpbmUgdXBydl9jb3B5QXNjaWkgdXBydl9jb3B5QXNjaWlfM18yCi0jZGVmaW5lIHVw
cnZfY29weUViY2RpYyB1cHJ2X2NvcHlFYmNkaWNfM18yCi0jZGVmaW5lIHVwcnZfZHRvc3RyIHVw
cnZfZHRvc3RyXzNfMgotI2RlZmluZSB1cHJ2X2ViY2RpY0Zyb21Bc2NpaSB1cHJ2X2ViY2RpY0Zy
b21Bc2NpaV8zXzIKLSNkZWZpbmUgdXBydl9lYmNkaWN0b2xvd2VyIHVwcnZfZWJjZGljdG9sb3dl
cl8zXzIKLSNkZWZpbmUgdXBydl9mYWJzIHVwcnZfZmFic18zXzIKLSNkZWZpbmUgdXBydl9mbG9v
ciB1cHJ2X2Zsb29yXzNfMgotI2RlZmluZSB1cHJ2X2ZtYXggdXBydl9mbWF4XzNfMgotI2RlZmlu
ZSB1cHJ2X2ZtaW4gdXBydl9mbWluXzNfMgotI2RlZmluZSB1cHJ2X2Ztb2QgdXBydl9mbW9kXzNf
MgotI2RlZmluZSB1cHJ2X2ZyZWUgdXBydl9mcmVlXzNfMgotI2RlZmluZSB1cHJ2X2dldENoYXJO
YW1lQ2hhcmFjdGVycyB1cHJ2X2dldENoYXJOYW1lQ2hhcmFjdGVyc18zXzIKLSNkZWZpbmUgdXBy
dl9nZXREZWZhdWx0Q29kZXBhZ2UgdXBydl9nZXREZWZhdWx0Q29kZXBhZ2VfM18yCi0jZGVmaW5l
IHVwcnZfZ2V0RGVmYXVsdExvY2FsZUlEIHVwcnZfZ2V0RGVmYXVsdExvY2FsZUlEXzNfMgotI2Rl
ZmluZSB1cHJ2X2dldEluZmluaXR5IHVwcnZfZ2V0SW5maW5pdHlfM18yCi0jZGVmaW5lIHVwcnZf
Z2V0TWF4Q2hhck5hbWVMZW5ndGggdXBydl9nZXRNYXhDaGFyTmFtZUxlbmd0aF8zXzIKLSNkZWZp
bmUgdXBydl9nZXRNYXhWYWx1ZXMgdXBydl9nZXRNYXhWYWx1ZXNfM18yCi0jZGVmaW5lIHVwcnZf
Z2V0TmFOIHVwcnZfZ2V0TmFOXzNfMgotI2RlZmluZSB1cHJ2X2dldFN0YXRpY0N1cnJlbmN5TmFt
ZSB1cHJ2X2dldFN0YXRpY0N1cnJlbmN5TmFtZV8zXzIKLSNkZWZpbmUgdXBydl9nZXRVVEN0aW1l
IHVwcnZfZ2V0VVRDdGltZV8zXzIKLSNkZWZpbmUgdXBydl9oYXZlUHJvcGVydGllcyB1cHJ2X2hh
dmVQcm9wZXJ0aWVzXzNfMgotI2RlZmluZSB1cHJ2X2luaXRfY29sbEl0ZXJhdGUgdXBydl9pbml0
X2NvbGxJdGVyYXRlXzNfMgotI2RlZmluZSB1cHJ2X2ludDMyQ29tcGFyYXRvciB1cHJ2X2ludDMy
Q29tcGFyYXRvcl8zXzIKLSNkZWZpbmUgdXBydl9pc0luZmluaXRlIHVwcnZfaXNJbmZpbml0ZV8z
XzIKLSNkZWZpbmUgdXBydl9pc0ludmFyaWFudFN0cmluZyB1cHJ2X2lzSW52YXJpYW50U3RyaW5n
XzNfMgotI2RlZmluZSB1cHJ2X2lzSW52YXJpYW50VVN0cmluZyB1cHJ2X2lzSW52YXJpYW50VVN0
cmluZ18zXzIKLSNkZWZpbmUgdXBydl9pc05hTiB1cHJ2X2lzTmFOXzNfMgotI2RlZmluZSB1cHJ2
X2lzTmVnYXRpdmVJbmZpbml0eSB1cHJ2X2lzTmVnYXRpdmVJbmZpbml0eV8zXzIKLSNkZWZpbmUg
dXBydl9pc1Bvc2l0aXZlSW5maW5pdHkgdXBydl9pc1Bvc2l0aXZlSW5maW5pdHlfM18yCi0jZGVm
aW5lIHVwcnZfaXNSdWxlV2hpdGVTcGFjZSB1cHJ2X2lzUnVsZVdoaXRlU3BhY2VfM18yCi0jZGVm
aW5lIHVwcnZfaXRvdSB1cHJ2X2l0b3VfM18yCi0jZGVmaW5lIHVwcnZfbG9hZFByb3BzRGF0YSB1
cHJ2X2xvYWRQcm9wc0RhdGFfM18yCi0jZGVmaW5lIHVwcnZfbG9nIHVwcnZfbG9nXzNfMgotI2Rl
ZmluZSB1cHJ2X2xvZzEwIHVwcnZfbG9nMTBfM18yCi0jZGVmaW5lIHVwcnZfbWFsbG9jIHVwcnZf
bWFsbG9jXzNfMgotI2RlZmluZSB1cHJ2X21hcEZpbGUgdXBydl9tYXBGaWxlXzNfMgotI2RlZmlu
ZSB1cHJ2X21heCB1cHJ2X21heF8zXzIKLSNkZWZpbmUgdXBydl9tYXhNYW50aXNzYSB1cHJ2X21h
eE1hbnRpc3NhXzNfMgotI2RlZmluZSB1cHJ2X21pbiB1cHJ2X21pbl8zXzIKLSNkZWZpbmUgdXBy
dl9tb2RmIHVwcnZfbW9kZl8zXzIKLSNkZWZpbmUgdXBydl9vcGVuUnVsZVdoaXRlU3BhY2VTZXQg
dXBydl9vcGVuUnVsZVdoaXRlU3BhY2VTZXRfM18yCi0jZGVmaW5lIHVwcnZfcGF0aElzQWJzb2x1
dGUgdXBydl9wYXRoSXNBYnNvbHV0ZV8zXzIKLSNkZWZpbmUgdXBydl9wb3cgdXBydl9wb3dfM18y
Ci0jZGVmaW5lIHVwcnZfcG93MTAgdXBydl9wb3cxMF8zXzIKLSNkZWZpbmUgdXBydl9yZWFsbG9j
IHVwcnZfcmVhbGxvY18zXzIKLSNkZWZpbmUgdXBydl9yb3VuZCB1cHJ2X3JvdW5kXzNfMgotI2Rl
ZmluZSB1cHJ2X3NvcnRBcnJheSB1cHJ2X3NvcnRBcnJheV8zXzIKLSNkZWZpbmUgdXBydl9zdHJD
b21wYXJlIHVwcnZfc3RyQ29tcGFyZV8zXzIKLSNkZWZpbmUgdXBydl9zdHJkdXAgdXBydl9zdHJk
dXBfM18yCi0jZGVmaW5lIHVwcnZfc3RybmR1cCB1cHJ2X3N0cm5kdXBfM18yCi0jZGVmaW5lIHVw
cnZfc3ludGF4RXJyb3IgdXBydl9zeW50YXhFcnJvcl8zXzIKLSNkZWZpbmUgdXBydl90aW1lem9u
ZSB1cHJ2X3RpbWV6b25lXzNfMgotI2RlZmluZSB1cHJ2X3RvdXBwZXIgdXBydl90b3VwcGVyXzNf
MgotI2RlZmluZSB1cHJ2X3RydW5jIHVwcnZfdHJ1bmNfM18yCi0jZGVmaW5lIHVwcnZfdHpuYW1l
IHVwcnZfdHpuYW1lXzNfMgotI2RlZmluZSB1cHJ2X3R6c2V0IHVwcnZfdHpzZXRfM18yCi0jZGVm
aW5lIHVwcnZfdWNhX2FkZEFuRWxlbWVudCB1cHJ2X3VjYV9hZGRBbkVsZW1lbnRfM18yCi0jZGVm
aW5lIHVwcnZfdWNhX2Fzc2VtYmxlVGFibGUgdXBydl91Y2FfYXNzZW1ibGVUYWJsZV8zXzIKLSNk
ZWZpbmUgdXBydl91Y2FfY2Fub25pY2FsQ2xvc3VyZSB1cHJ2X3VjYV9jYW5vbmljYWxDbG9zdXJl
XzNfMgotI2RlZmluZSB1cHJ2X3VjYV9jbG9uZVRlbXBUYWJsZSB1cHJ2X3VjYV9jbG9uZVRlbXBU
YWJsZV8zXzIKLSNkZWZpbmUgdXBydl91Y2FfY2xvc2VUZW1wVGFibGUgdXBydl91Y2FfY2xvc2VU
ZW1wVGFibGVfM18yCi0jZGVmaW5lIHVwcnZfdWNhX2dldENvZGVQb2ludEZyb21SYXcgdXBydl91
Y2FfZ2V0Q29kZVBvaW50RnJvbVJhd18zXzIKLSNkZWZpbmUgdXBydl91Y2FfZ2V0SW1wbGljaXRG
cm9tUmF3IHVwcnZfdWNhX2dldEltcGxpY2l0RnJvbVJhd18zXzIKLSNkZWZpbmUgdXBydl91Y2Ff
Z2V0SW1wbGljaXRQcmltYXJ5IHVwcnZfdWNhX2dldEltcGxpY2l0UHJpbWFyeV8zXzIKLSNkZWZp
bmUgdXBydl91Y2FfZ2V0UmF3RnJvbUNvZGVQb2ludCB1cHJ2X3VjYV9nZXRSYXdGcm9tQ29kZVBv
aW50XzNfMgotI2RlZmluZSB1cHJ2X3VjYV9nZXRSYXdGcm9tSW1wbGljaXQgdXBydl91Y2FfZ2V0
UmF3RnJvbUltcGxpY2l0XzNfMgotI2RlZmluZSB1cHJ2X3VjYV9pbml0SW1wbGljaXRDb25zdGFu
dHMgdXBydl91Y2FfaW5pdEltcGxpY2l0Q29uc3RhbnRzXzNfMgotI2RlZmluZSB1cHJ2X3VjYV9p
bml0VGVtcFRhYmxlIHVwcnZfdWNhX2luaXRUZW1wVGFibGVfM18yCi0jZGVmaW5lIHVwcnZfdWlu
dDE2Q29tcGFyYXRvciB1cHJ2X3VpbnQxNkNvbXBhcmF0b3JfM18yCi0jZGVmaW5lIHVwcnZfdWlu
dDMyQ29tcGFyYXRvciB1cHJ2X3VpbnQzMkNvbXBhcmF0b3JfM18yCi0jZGVmaW5lIHVwcnZfdW5t
YXBGaWxlIHVwcnZfdW5tYXBGaWxlXzNfMgotI2RlZmluZSB1cmVnZXhfYXBwZW5kUmVwbGFjZW1l
bnQgdXJlZ2V4X2FwcGVuZFJlcGxhY2VtZW50XzNfMgotI2RlZmluZSB1cmVnZXhfYXBwZW5kVGFp
bCB1cmVnZXhfYXBwZW5kVGFpbF8zXzIKLSNkZWZpbmUgdXJlZ2V4X2Nsb25lIHVyZWdleF9jbG9u
ZV8zXzIKLSNkZWZpbmUgdXJlZ2V4X2Nsb3NlIHVyZWdleF9jbG9zZV8zXzIKLSNkZWZpbmUgdXJl
Z2V4X2VuZCB1cmVnZXhfZW5kXzNfMgotI2RlZmluZSB1cmVnZXhfZmluZCB1cmVnZXhfZmluZF8z
XzIKLSNkZWZpbmUgdXJlZ2V4X2ZpbmROZXh0IHVyZWdleF9maW5kTmV4dF8zXzIKLSNkZWZpbmUg
dXJlZ2V4X2ZsYWdzIHVyZWdleF9mbGFnc18zXzIKLSNkZWZpbmUgdXJlZ2V4X2dldFRleHQgdXJl
Z2V4X2dldFRleHRfM18yCi0jZGVmaW5lIHVyZWdleF9ncm91cCB1cmVnZXhfZ3JvdXBfM18yCi0j
ZGVmaW5lIHVyZWdleF9ncm91cENvdW50IHVyZWdleF9ncm91cENvdW50XzNfMgotI2RlZmluZSB1
cmVnZXhfbG9va2luZ0F0IHVyZWdleF9sb29raW5nQXRfM18yCi0jZGVmaW5lIHVyZWdleF9tYXRj
aGVzIHVyZWdleF9tYXRjaGVzXzNfMgotI2RlZmluZSB1cmVnZXhfb3BlbiB1cmVnZXhfb3Blbl8z
XzIKLSNkZWZpbmUgdXJlZ2V4X29wZW5DIHVyZWdleF9vcGVuQ18zXzIKLSNkZWZpbmUgdXJlZ2V4
X3BhdHRlcm4gdXJlZ2V4X3BhdHRlcm5fM18yCi0jZGVmaW5lIHVyZWdleF9yZXBsYWNlQWxsIHVy
ZWdleF9yZXBsYWNlQWxsXzNfMgotI2RlZmluZSB1cmVnZXhfcmVwbGFjZUZpcnN0IHVyZWdleF9y
ZXBsYWNlRmlyc3RfM18yCi0jZGVmaW5lIHVyZWdleF9yZXNldCB1cmVnZXhfcmVzZXRfM18yCi0j
ZGVmaW5lIHVyZWdleF9zZXRUZXh0IHVyZWdleF9zZXRUZXh0XzNfMgotI2RlZmluZSB1cmVnZXhf
c3BsaXQgdXJlZ2V4X3NwbGl0XzNfMgotI2RlZmluZSB1cmVnZXhfc3RhcnQgdXJlZ2V4X3N0YXJ0
XzNfMgotI2RlZmluZSB1cmVzX2FwcGVuZFJlc1BhdGggdXJlc19hcHBlbmRSZXNQYXRoXzNfMgot
I2RlZmluZSB1cmVzX2Nsb3NlIHVyZXNfY2xvc2VfM18yCi0jZGVmaW5lIHVyZXNfY29weVJlc2Ig
dXJlc19jb3B5UmVzYl8zXzIKLSNkZWZpbmUgdXJlc19jb3VudEFycmF5SXRlbXMgdXJlc19jb3Vu
dEFycmF5SXRlbXNfM18yCi0jZGVmaW5lIHVyZXNfZmluZFJlc291cmNlIHVyZXNfZmluZFJlc291
cmNlXzNfMgotI2RlZmluZSB1cmVzX2ZpbmRTdWJSZXNvdXJjZSB1cmVzX2ZpbmRTdWJSZXNvdXJj
ZV8zXzIKLSNkZWZpbmUgdXJlc19mcmVlUmVzUGF0aCB1cmVzX2ZyZWVSZXNQYXRoXzNfMgotI2Rl
ZmluZSB1cmVzX2dldEJpbmFyeSB1cmVzX2dldEJpbmFyeV8zXzIKLSNkZWZpbmUgdXJlc19nZXRC
eUluZGV4IHVyZXNfZ2V0QnlJbmRleF8zXzIKLSNkZWZpbmUgdXJlc19nZXRCeUtleSB1cmVzX2dl
dEJ5S2V5XzNfMgotI2RlZmluZSB1cmVzX2dldEJ5S2V5V2l0aEZhbGxiYWNrIHVyZXNfZ2V0QnlL
ZXlXaXRoRmFsbGJhY2tfM18yCi0jZGVmaW5lIHVyZXNfZ2V0RnVuY3Rpb25hbEVxdWl2YWxlbnQg
dXJlc19nZXRGdW5jdGlvbmFsRXF1aXZhbGVudF8zXzIKLSNkZWZpbmUgdXJlc19nZXRJbnQgdXJl
c19nZXRJbnRfM18yCi0jZGVmaW5lIHVyZXNfZ2V0SW50VmVjdG9yIHVyZXNfZ2V0SW50VmVjdG9y
XzNfMgotI2RlZmluZSB1cmVzX2dldEtleSB1cmVzX2dldEtleV8zXzIKLSNkZWZpbmUgdXJlc19n
ZXRLZXl3b3JkVmFsdWVzIHVyZXNfZ2V0S2V5d29yZFZhbHVlc18zXzIKLSNkZWZpbmUgdXJlc19n
ZXRMb2NhbGUgdXJlc19nZXRMb2NhbGVfM18yCi0jZGVmaW5lIHVyZXNfZ2V0TG9jYWxlQnlUeXBl
IHVyZXNfZ2V0TG9jYWxlQnlUeXBlXzNfMgotI2RlZmluZSB1cmVzX2dldE5hbWUgdXJlc19nZXRO
YW1lXzNfMgotI2RlZmluZSB1cmVzX2dldE5leHRSZXNvdXJjZSB1cmVzX2dldE5leHRSZXNvdXJj
ZV8zXzIKLSNkZWZpbmUgdXJlc19nZXROZXh0U3RyaW5nIHVyZXNfZ2V0TmV4dFN0cmluZ18zXzIK
LSNkZWZpbmUgdXJlc19nZXRQYXRoIHVyZXNfZ2V0UGF0aF8zXzIKLSNkZWZpbmUgdXJlc19nZXRT
aXplIHVyZXNfZ2V0U2l6ZV8zXzIKLSNkZWZpbmUgdXJlc19nZXRTdHJpbmcgdXJlc19nZXRTdHJp
bmdfM18yCi0jZGVmaW5lIHVyZXNfZ2V0U3RyaW5nQnlJbmRleCB1cmVzX2dldFN0cmluZ0J5SW5k
ZXhfM18yCi0jZGVmaW5lIHVyZXNfZ2V0U3RyaW5nQnlLZXkgdXJlc19nZXRTdHJpbmdCeUtleV8z
XzIKLSNkZWZpbmUgdXJlc19nZXRUeXBlIHVyZXNfZ2V0VHlwZV8zXzIKLSNkZWZpbmUgdXJlc19n
ZXRVSW50IHVyZXNfZ2V0VUludF8zXzIKLSNkZWZpbmUgdXJlc19nZXRWZXJzaW9uIHVyZXNfZ2V0
VmVyc2lvbl8zXzIKLSNkZWZpbmUgdXJlc19nZXRWZXJzaW9uTnVtYmVyIHVyZXNfZ2V0VmVyc2lv
bk51bWJlcl8zXzIKLSNkZWZpbmUgdXJlc19oYXNOZXh0IHVyZXNfaGFzTmV4dF8zXzIKLSNkZWZp
bmUgdXJlc19pbml0U3RhY2tPYmplY3QgdXJlc19pbml0U3RhY2tPYmplY3RfM18yCi0jZGVmaW5l
IHVyZXNfb3BlbiB1cmVzX29wZW5fM18yCi0jZGVmaW5lIHVyZXNfb3BlbkF2YWlsYWJsZUxvY2Fs
ZXMgdXJlc19vcGVuQXZhaWxhYmxlTG9jYWxlc18zXzIKLSNkZWZpbmUgdXJlc19vcGVuRGlyZWN0
IHVyZXNfb3BlbkRpcmVjdF8zXzIKLSNkZWZpbmUgdXJlc19vcGVuRmlsbEluIHVyZXNfb3BlbkZp
bGxJbl8zXzIKLSNkZWZpbmUgdXJlc19vcGVuVSB1cmVzX29wZW5VXzNfMgotI2RlZmluZSB1cmVz
X3Jlc2V0SXRlcmF0b3IgdXJlc19yZXNldEl0ZXJhdG9yXzNfMgotI2RlZmluZSB1cmVzX3N3YXAg
dXJlc19zd2FwXzNfMgotI2RlZmluZSB1c2NyaXB0X2Nsb3NlUnVuIHVzY3JpcHRfY2xvc2VSdW5f
M18yCi0jZGVmaW5lIHVzY3JpcHRfZ2V0Q29kZSB1c2NyaXB0X2dldENvZGVfM18yCi0jZGVmaW5l
IHVzY3JpcHRfZ2V0TmFtZSB1c2NyaXB0X2dldE5hbWVfM18yCi0jZGVmaW5lIHVzY3JpcHRfZ2V0
U2NyaXB0IHVzY3JpcHRfZ2V0U2NyaXB0XzNfMgotI2RlZmluZSB1c2NyaXB0X2dldFNob3J0TmFt
ZSB1c2NyaXB0X2dldFNob3J0TmFtZV8zXzIKLSNkZWZpbmUgdXNjcmlwdF9uZXh0UnVuIHVzY3Jp
cHRfbmV4dFJ1bl8zXzIKLSNkZWZpbmUgdXNjcmlwdF9vcGVuUnVuIHVzY3JpcHRfb3BlblJ1bl8z
XzIKLSNkZWZpbmUgdXNjcmlwdF9yZXNldFJ1biB1c2NyaXB0X3Jlc2V0UnVuXzNfMgotI2RlZmlu
ZSB1c2NyaXB0X3NldFJ1blRleHQgdXNjcmlwdF9zZXRSdW5UZXh0XzNfMgotI2RlZmluZSB1c2Vh
cmNoX2Nsb3NlIHVzZWFyY2hfY2xvc2VfM18yCi0jZGVmaW5lIHVzZWFyY2hfZmlyc3QgdXNlYXJj
aF9maXJzdF8zXzIKLSNkZWZpbmUgdXNlYXJjaF9mb2xsb3dpbmcgdXNlYXJjaF9mb2xsb3dpbmdf
M18yCi0jZGVmaW5lIHVzZWFyY2hfZ2V0QXR0cmlidXRlIHVzZWFyY2hfZ2V0QXR0cmlidXRlXzNf
MgotI2RlZmluZSB1c2VhcmNoX2dldEJyZWFrSXRlcmF0b3IgdXNlYXJjaF9nZXRCcmVha0l0ZXJh
dG9yXzNfMgotI2RlZmluZSB1c2VhcmNoX2dldENvbGxhdG9yIHVzZWFyY2hfZ2V0Q29sbGF0b3Jf
M18yCi0jZGVmaW5lIHVzZWFyY2hfZ2V0TWF0Y2hlZExlbmd0aCB1c2VhcmNoX2dldE1hdGNoZWRM
ZW5ndGhfM18yCi0jZGVmaW5lIHVzZWFyY2hfZ2V0TWF0Y2hlZFN0YXJ0IHVzZWFyY2hfZ2V0TWF0
Y2hlZFN0YXJ0XzNfMgotI2RlZmluZSB1c2VhcmNoX2dldE1hdGNoZWRUZXh0IHVzZWFyY2hfZ2V0
TWF0Y2hlZFRleHRfM18yCi0jZGVmaW5lIHVzZWFyY2hfZ2V0T2Zmc2V0IHVzZWFyY2hfZ2V0T2Zm
c2V0XzNfMgotI2RlZmluZSB1c2VhcmNoX2dldFBhdHRlcm4gdXNlYXJjaF9nZXRQYXR0ZXJuXzNf
MgotI2RlZmluZSB1c2VhcmNoX2dldFRleHQgdXNlYXJjaF9nZXRUZXh0XzNfMgotI2RlZmluZSB1
c2VhcmNoX2hhbmRsZU5leHRDYW5vbmljYWwgdXNlYXJjaF9oYW5kbGVOZXh0Q2Fub25pY2FsXzNf
MgotI2RlZmluZSB1c2VhcmNoX2hhbmRsZU5leHRFeGFjdCB1c2VhcmNoX2hhbmRsZU5leHRFeGFj
dF8zXzIKLSNkZWZpbmUgdXNlYXJjaF9oYW5kbGVQcmV2aW91c0Nhbm9uaWNhbCB1c2VhcmNoX2hh
bmRsZVByZXZpb3VzQ2Fub25pY2FsXzNfMgotI2RlZmluZSB1c2VhcmNoX2hhbmRsZVByZXZpb3Vz
RXhhY3QgdXNlYXJjaF9oYW5kbGVQcmV2aW91c0V4YWN0XzNfMgotI2RlZmluZSB1c2VhcmNoX2xh
c3QgdXNlYXJjaF9sYXN0XzNfMgotI2RlZmluZSB1c2VhcmNoX25leHQgdXNlYXJjaF9uZXh0XzNf
MgotI2RlZmluZSB1c2VhcmNoX29wZW4gdXNlYXJjaF9vcGVuXzNfMgotI2RlZmluZSB1c2VhcmNo
X29wZW5Gcm9tQ29sbGF0b3IgdXNlYXJjaF9vcGVuRnJvbUNvbGxhdG9yXzNfMgotI2RlZmluZSB1
c2VhcmNoX3ByZWNlZGluZyB1c2VhcmNoX3ByZWNlZGluZ18zXzIKLSNkZWZpbmUgdXNlYXJjaF9w
cmV2aW91cyB1c2VhcmNoX3ByZXZpb3VzXzNfMgotI2RlZmluZSB1c2VhcmNoX3Jlc2V0IHVzZWFy
Y2hfcmVzZXRfM18yCi0jZGVmaW5lIHVzZWFyY2hfc2V0QXR0cmlidXRlIHVzZWFyY2hfc2V0QXR0
cmlidXRlXzNfMgotI2RlZmluZSB1c2VhcmNoX3NldEJyZWFrSXRlcmF0b3IgdXNlYXJjaF9zZXRC
cmVha0l0ZXJhdG9yXzNfMgotI2RlZmluZSB1c2VhcmNoX3NldENvbGxhdG9yIHVzZWFyY2hfc2V0
Q29sbGF0b3JfM18yCi0jZGVmaW5lIHVzZWFyY2hfc2V0T2Zmc2V0IHVzZWFyY2hfc2V0T2Zmc2V0
XzNfMgotI2RlZmluZSB1c2VhcmNoX3NldFBhdHRlcm4gdXNlYXJjaF9zZXRQYXR0ZXJuXzNfMgot
I2RlZmluZSB1c2VhcmNoX3NldFRleHQgdXNlYXJjaF9zZXRUZXh0XzNfMgotI2RlZmluZSB1c2Vy
dl9kZWxldGVTdHJpbmdQYWlyIHVzZXJ2X2RlbGV0ZVN0cmluZ1BhaXJfM18yCi0jZGVmaW5lIHVz
ZXRfYWRkIHVzZXRfYWRkXzNfMgotI2RlZmluZSB1c2V0X2FkZEFsbCB1c2V0X2FkZEFsbF8zXzIK
LSNkZWZpbmUgdXNldF9hZGRSYW5nZSB1c2V0X2FkZFJhbmdlXzNfMgotI2RlZmluZSB1c2V0X2Fk
ZFN0cmluZyB1c2V0X2FkZFN0cmluZ18zXzIKLSNkZWZpbmUgdXNldF9hcHBseUludFByb3BlcnR5
VmFsdWUgdXNldF9hcHBseUludFByb3BlcnR5VmFsdWVfM18yCi0jZGVmaW5lIHVzZXRfYXBwbHlQ
YXR0ZXJuIHVzZXRfYXBwbHlQYXR0ZXJuXzNfMgotI2RlZmluZSB1c2V0X2FwcGx5UHJvcGVydHlB
bGlhcyB1c2V0X2FwcGx5UHJvcGVydHlBbGlhc18zXzIKLSNkZWZpbmUgdXNldF9jaGFyQXQgdXNl
dF9jaGFyQXRfM18yCi0jZGVmaW5lIHVzZXRfY2xlYXIgdXNldF9jbGVhcl8zXzIKLSNkZWZpbmUg
dXNldF9jbG9zZSB1c2V0X2Nsb3NlXzNfMgotI2RlZmluZSB1c2V0X2NvbXBhY3QgdXNldF9jb21w
YWN0XzNfMgotI2RlZmluZSB1c2V0X2NvbXBsZW1lbnQgdXNldF9jb21wbGVtZW50XzNfMgotI2Rl
ZmluZSB1c2V0X2NvbXBsZW1lbnRBbGwgdXNldF9jb21wbGVtZW50QWxsXzNfMgotI2RlZmluZSB1
c2V0X2NvbnRhaW5zIHVzZXRfY29udGFpbnNfM18yCi0jZGVmaW5lIHVzZXRfY29udGFpbnNBbGwg
dXNldF9jb250YWluc0FsbF8zXzIKLSNkZWZpbmUgdXNldF9jb250YWluc05vbmUgdXNldF9jb250
YWluc05vbmVfM18yCi0jZGVmaW5lIHVzZXRfY29udGFpbnNSYW5nZSB1c2V0X2NvbnRhaW5zUmFu
Z2VfM18yCi0jZGVmaW5lIHVzZXRfY29udGFpbnNTb21lIHVzZXRfY29udGFpbnNTb21lXzNfMgot
I2RlZmluZSB1c2V0X2NvbnRhaW5zU3RyaW5nIHVzZXRfY29udGFpbnNTdHJpbmdfM18yCi0jZGVm
aW5lIHVzZXRfZXF1YWxzIHVzZXRfZXF1YWxzXzNfMgotI2RlZmluZSB1c2V0X2dldEl0ZW0gdXNl
dF9nZXRJdGVtXzNfMgotI2RlZmluZSB1c2V0X2dldEl0ZW1Db3VudCB1c2V0X2dldEl0ZW1Db3Vu
dF8zXzIKLSNkZWZpbmUgdXNldF9nZXRTZXJpYWxpemVkUmFuZ2UgdXNldF9nZXRTZXJpYWxpemVk
UmFuZ2VfM18yCi0jZGVmaW5lIHVzZXRfZ2V0U2VyaWFsaXplZFJhbmdlQ291bnQgdXNldF9nZXRT
ZXJpYWxpemVkUmFuZ2VDb3VudF8zXzIKLSNkZWZpbmUgdXNldF9nZXRTZXJpYWxpemVkU2V0IHVz
ZXRfZ2V0U2VyaWFsaXplZFNldF8zXzIKLSNkZWZpbmUgdXNldF9pbmRleE9mIHVzZXRfaW5kZXhP
Zl8zXzIKLSNkZWZpbmUgdXNldF9pc0VtcHR5IHVzZXRfaXNFbXB0eV8zXzIKLSNkZWZpbmUgdXNl
dF9vcGVuIHVzZXRfb3Blbl8zXzIKLSNkZWZpbmUgdXNldF9vcGVuUGF0dGVybiB1c2V0X29wZW5Q
YXR0ZXJuXzNfMgotI2RlZmluZSB1c2V0X29wZW5QYXR0ZXJuT3B0aW9ucyB1c2V0X29wZW5QYXR0
ZXJuT3B0aW9uc18zXzIKLSNkZWZpbmUgdXNldF9yZW1vdmUgdXNldF9yZW1vdmVfM18yCi0jZGVm
aW5lIHVzZXRfcmVtb3ZlQWxsIHVzZXRfcmVtb3ZlQWxsXzNfMgotI2RlZmluZSB1c2V0X3JlbW92
ZVJhbmdlIHVzZXRfcmVtb3ZlUmFuZ2VfM18yCi0jZGVmaW5lIHVzZXRfcmVtb3ZlU3RyaW5nIHVz
ZXRfcmVtb3ZlU3RyaW5nXzNfMgotI2RlZmluZSB1c2V0X3Jlc2VtYmxlc1BhdHRlcm4gdXNldF9y
ZXNlbWJsZXNQYXR0ZXJuXzNfMgotI2RlZmluZSB1c2V0X3JldGFpbiB1c2V0X3JldGFpbl8zXzIK
LSNkZWZpbmUgdXNldF9yZXRhaW5BbGwgdXNldF9yZXRhaW5BbGxfM18yCi0jZGVmaW5lIHVzZXRf
c2VyaWFsaXplIHVzZXRfc2VyaWFsaXplXzNfMgotI2RlZmluZSB1c2V0X3NlcmlhbGl6ZWRDb250
YWlucyB1c2V0X3NlcmlhbGl6ZWRDb250YWluc18zXzIKLSNkZWZpbmUgdXNldF9zZXQgdXNldF9z
ZXRfM18yCi0jZGVmaW5lIHVzZXRfc2V0U2VyaWFsaXplZFRvT25lIHVzZXRfc2V0U2VyaWFsaXpl
ZFRvT25lXzNfMgotI2RlZmluZSB1c2V0X3NpemUgdXNldF9zaXplXzNfMgotI2RlZmluZSB1c2V0
X3RvUGF0dGVybiB1c2V0X3RvUGF0dGVybl8zXzIKLSNkZWZpbmUgdXNwcmVwX2Nsb3NlIHVzcHJl
cF9jbG9zZV8zXzIKLSNkZWZpbmUgdXNwcmVwX29wZW4gdXNwcmVwX29wZW5fM18yCi0jZGVmaW5l
IHVzcHJlcF9wcmVwYXJlIHVzcHJlcF9wcmVwYXJlXzNfMgotI2RlZmluZSB1c3ByZXBfc3dhcCB1
c3ByZXBfc3dhcF8zXzIKLSNkZWZpbmUgdXN0cl9mb2xkQ2FzZSB1c3RyX2ZvbGRDYXNlXzNfMgot
I2RlZmluZSB1c3RyX3RvTG93ZXIgdXN0cl90b0xvd2VyXzNfMgotI2RlZmluZSB1c3RyX3RvVGl0
bGUgdXN0cl90b1RpdGxlXzNfMgotI2RlZmluZSB1c3RyX3RvVXBwZXIgdXN0cl90b1VwcGVyXzNf
MgotI2RlZmluZSB1dGY4X2FwcGVuZENoYXJTYWZlQm9keSB1dGY4X2FwcGVuZENoYXJTYWZlQm9k
eV8zXzIKLSNkZWZpbmUgdXRmOF9iYWNrMVNhZmVCb2R5IHV0ZjhfYmFjazFTYWZlQm9keV8zXzIK
LSNkZWZpbmUgdXRmOF9jb3VudFRyYWlsQnl0ZXMgdXRmOF9jb3VudFRyYWlsQnl0ZXNfM18yCi0j
ZGVmaW5lIHV0ZjhfbmV4dENoYXJTYWZlQm9keSB1dGY4X25leHRDaGFyU2FmZUJvZHlfM18yCi0j
ZGVmaW5lIHV0ZjhfcHJldkNoYXJTYWZlQm9keSB1dGY4X3ByZXZDaGFyU2FmZUJvZHlfM18yCi0j
ZGVmaW5lIHV0bXNjYWxlX2Zyb21JbnQ2NCB1dG1zY2FsZV9mcm9tSW50NjRfM18yCi0jZGVmaW5l
IHV0bXNjYWxlX2dldFRpbWVTY2FsZVZhbHVlIHV0bXNjYWxlX2dldFRpbWVTY2FsZVZhbHVlXzNf
MgotI2RlZmluZSB1dG1zY2FsZV90b0ludDY0IHV0bXNjYWxlX3RvSW50NjRfM18yCi0jZGVmaW5l
IHV0cmFjZV9jbGVhbnVwIHV0cmFjZV9jbGVhbnVwXzNfMgotI2RlZmluZSB1dHJhY2VfZGF0YSB1
dHJhY2VfZGF0YV8zXzIKLSNkZWZpbmUgdXRyYWNlX2VudHJ5IHV0cmFjZV9lbnRyeV8zXzIKLSNk
ZWZpbmUgdXRyYWNlX2V4aXQgdXRyYWNlX2V4aXRfM18yCi0jZGVmaW5lIHV0cmFjZV9mb3JtYXQg
dXRyYWNlX2Zvcm1hdF8zXzIKLSNkZWZpbmUgdXRyYWNlX2Z1bmN0aW9uTmFtZSB1dHJhY2VfZnVu
Y3Rpb25OYW1lXzNfMgotI2RlZmluZSB1dHJhY2VfZ2V0RnVuY3Rpb25zIHV0cmFjZV9nZXRGdW5j
dGlvbnNfM18yCi0jZGVmaW5lIHV0cmFjZV9nZXRMZXZlbCB1dHJhY2VfZ2V0TGV2ZWxfM18yCi0j
ZGVmaW5lIHV0cmFjZV9sZXZlbCB1dHJhY2VfbGV2ZWxfM18yCi0jZGVmaW5lIHV0cmFjZV9zZXRG
dW5jdGlvbnMgdXRyYWNlX3NldEZ1bmN0aW9uc18zXzIKLSNkZWZpbmUgdXRyYWNlX3NldExldmVs
IHV0cmFjZV9zZXRMZXZlbF8zXzIKLSNkZWZpbmUgdXRyYWNlX3Zmb3JtYXQgdXRyYWNlX3Zmb3Jt
YXRfM18yCi0jZGVmaW5lIHV0cmFuc19jbG9uZSB1dHJhbnNfY2xvbmVfM18yCi0jZGVmaW5lIHV0
cmFuc19jbG9zZSB1dHJhbnNfY2xvc2VfM18yCi0jZGVmaW5lIHV0cmFuc19jb3VudEF2YWlsYWJs
ZUlEcyB1dHJhbnNfY291bnRBdmFpbGFibGVJRHNfM18yCi0jZGVmaW5lIHV0cmFuc19nZXRBdmFp
bGFibGVJRCB1dHJhbnNfZ2V0QXZhaWxhYmxlSURfM18yCi0jZGVmaW5lIHV0cmFuc19nZXRJRCB1
dHJhbnNfZ2V0SURfM18yCi0jZGVmaW5lIHV0cmFuc19nZXRVbmljb2RlSUQgdXRyYW5zX2dldFVu
aWNvZGVJRF8zXzIKLSNkZWZpbmUgdXRyYW5zX29wZW4gdXRyYW5zX29wZW5fM18yCi0jZGVmaW5l
IHV0cmFuc19vcGVuSURzIHV0cmFuc19vcGVuSURzXzNfMgotI2RlZmluZSB1dHJhbnNfb3Blbklu
dmVyc2UgdXRyYW5zX29wZW5JbnZlcnNlXzNfMgotI2RlZmluZSB1dHJhbnNfb3BlblUgdXRyYW5z
X29wZW5VXzNfMgotI2RlZmluZSB1dHJhbnNfcmVnaXN0ZXIgdXRyYW5zX3JlZ2lzdGVyXzNfMgot
I2RlZmluZSB1dHJhbnNfcmVwX2Nhc2VDb250ZXh0SXRlcmF0b3IgdXRyYW5zX3JlcF9jYXNlQ29u
dGV4dEl0ZXJhdG9yXzNfMgotI2RlZmluZSB1dHJhbnNfc2V0RmlsdGVyIHV0cmFuc19zZXRGaWx0
ZXJfM18yCi0jZGVmaW5lIHV0cmFuc190cmFucyB1dHJhbnNfdHJhbnNfM18yCi0jZGVmaW5lIHV0
cmFuc190cmFuc0luY3JlbWVudGFsIHV0cmFuc190cmFuc0luY3JlbWVudGFsXzNfMgotI2RlZmlu
ZSB1dHJhbnNfdHJhbnNJbmNyZW1lbnRhbFVDaGFycyB1dHJhbnNfdHJhbnNJbmNyZW1lbnRhbFVD
aGFyc18zXzIKLSNkZWZpbmUgdXRyYW5zX3RyYW5zVUNoYXJzIHV0cmFuc190cmFuc1VDaGFyc18z
XzIKLSNkZWZpbmUgdXRyYW5zX3VucmVnaXN0ZXIgdXRyYW5zX3VucmVnaXN0ZXJfM18yCi0jZGVm
aW5lIHV0cmFuc191bnJlZ2lzdGVySUQgdXRyYW5zX3VucmVnaXN0ZXJJRF8zXzIKLSNkZWZpbmUg
dXRyaWVfY2xvbmUgdXRyaWVfY2xvbmVfM18yCi0jZGVmaW5lIHV0cmllX2Nsb3NlIHV0cmllX2Ns
b3NlXzNfMgotI2RlZmluZSB1dHJpZV9lbnVtIHV0cmllX2VudW1fM18yCi0jZGVmaW5lIHV0cmll
X2dldDMyIHV0cmllX2dldDMyXzNfMgotI2RlZmluZSB1dHJpZV9nZXREYXRhIHV0cmllX2dldERh
dGFfM18yCi0jZGVmaW5lIHV0cmllX29wZW4gdXRyaWVfb3Blbl8zXzIKLSNkZWZpbmUgdXRyaWVf
c2VyaWFsaXplIHV0cmllX3NlcmlhbGl6ZV8zXzIKLSNkZWZpbmUgdXRyaWVfc2V0MzIgdXRyaWVf
c2V0MzJfM18yCi0jZGVmaW5lIHV0cmllX3NldFJhbmdlMzIgdXRyaWVfc2V0UmFuZ2UzMl8zXzIK
LSNkZWZpbmUgdXRyaWVfc3dhcCB1dHJpZV9zd2FwXzNfMgotI2RlZmluZSB1dHJpZV91bnNlcmlh
bGl6ZSB1dHJpZV91bnNlcmlhbGl6ZV8zXzIKLS8qIEMrKyBjbGFzcyBuYW1lcyByZW5hbWluZyBk
ZWZpbmVzICovCi0KLSNpZmRlZiBYUF9DUExVU1BMVVMKLSNpZiAhVV9IQVZFX05BTUVTUEFDRQot
Ci0jZGVmaW5lIEFic29sdXRlVmFsdWVTdWJzdGl0dXRpb24gQWJzb2x1dGVWYWx1ZVN1YnN0aXR1
dGlvbl8zXzIKLSNkZWZpbmUgQWx0ZXJuYXRlU3Vic3RpdHV0aW9uU3VidGFibGUgQWx0ZXJuYXRl
U3Vic3RpdHV0aW9uU3VidGFibGVfM18yCi0jZGVmaW5lIEFuY2hvclRhYmxlIEFuY2hvclRhYmxl
XzNfMgotI2RlZmluZSBBbnlUcmFuc2xpdGVyYXRvciBBbnlUcmFuc2xpdGVyYXRvcl8zXzIKLSNk
ZWZpbmUgQXJhYmljT3BlblR5cGVMYXlvdXRFbmdpbmUgQXJhYmljT3BlblR5cGVMYXlvdXRFbmdp
bmVfM18yCi0jZGVmaW5lIEFyYWJpY1NoYXBpbmcgQXJhYmljU2hhcGluZ18zXzIKLSNkZWZpbmUg
QmFzaWNDYWxlbmRhckZhY3RvcnkgQmFzaWNDYWxlbmRhckZhY3RvcnlfM18yCi0jZGVmaW5lIEJp
bmFyeVNlYXJjaExvb2t1cFRhYmxlIEJpbmFyeVNlYXJjaExvb2t1cFRhYmxlXzNfMgotI2RlZmlu
ZSBCcmVha0RpY3Rpb25hcnkgQnJlYWtEaWN0aW9uYXJ5XzNfMgotI2RlZmluZSBCcmVha0l0ZXJh
dG9yIEJyZWFrSXRlcmF0b3JfM18yCi0jZGVmaW5lIEJ1ZGRoaXN0Q2FsZW5kYXIgQnVkZGhpc3RD
YWxlbmRhcl8zXzIKLSNkZWZpbmUgQ0ZhY3RvcnkgQ0ZhY3RvcnlfM18yCi0jZGVmaW5lIENhbGVu
ZGFyIENhbGVuZGFyXzNfMgotI2RlZmluZSBDYWxlbmRhckFzdHJvbm9tZXIgQ2FsZW5kYXJBc3Ry
b25vbWVyXzNfMgotI2RlZmluZSBDYWxlbmRhckNhY2hlIENhbGVuZGFyQ2FjaGVfM18yCi0jZGVm
aW5lIENhbGVuZGFyRGF0YSBDYWxlbmRhckRhdGFfM18yCi0jZGVmaW5lIENhbGVuZGFyU2Vydmlj
ZSBDYWxlbmRhclNlcnZpY2VfM18yCi0jZGVmaW5lIENhbm9uU2hhcGluZyBDYW5vblNoYXBpbmdf
M18yCi0jZGVmaW5lIENhbm9uaWNhbEl0ZXJhdG9yIENhbm9uaWNhbEl0ZXJhdG9yXzNfMgotI2Rl
ZmluZSBDYXNlTWFwVHJhbnNsaXRlcmF0b3IgQ2FzZU1hcFRyYW5zbGl0ZXJhdG9yXzNfMgotI2Rl
ZmluZSBDaGFpbmluZ0NvbnRleHR1YWxTdWJzdGl0dXRpb25Gb3JtYXQxU3VidGFibGUgQ2hhaW5p
bmdDb250ZXh0dWFsU3Vic3RpdHV0aW9uRm9ybWF0MVN1YnRhYmxlXzNfMgotI2RlZmluZSBDaGFp
bmluZ0NvbnRleHR1YWxTdWJzdGl0dXRpb25Gb3JtYXQyU3VidGFibGUgQ2hhaW5pbmdDb250ZXh0
dWFsU3Vic3RpdHV0aW9uRm9ybWF0MlN1YnRhYmxlXzNfMgotI2RlZmluZSBDaGFpbmluZ0NvbnRl
eHR1YWxTdWJzdGl0dXRpb25Gb3JtYXQzU3VidGFibGUgQ2hhaW5pbmdDb250ZXh0dWFsU3Vic3Rp
dHV0aW9uRm9ybWF0M1N1YnRhYmxlXzNfMgotI2RlZmluZSBDaGFpbmluZ0NvbnRleHR1YWxTdWJz
dGl0dXRpb25TdWJ0YWJsZSBDaGFpbmluZ0NvbnRleHR1YWxTdWJzdGl0dXRpb25TdWJ0YWJsZV8z
XzIKLSNkZWZpbmUgQ2hhclN1YnN0aXR1dGlvbkZpbHRlciBDaGFyU3Vic3RpdHV0aW9uRmlsdGVy
XzNfMgotI2RlZmluZSBDaGFyYWN0ZXJJdGVyYXRvciBDaGFyYWN0ZXJJdGVyYXRvcl8zXzIKLSNk
ZWZpbmUgQ2hvaWNlRm9ybWF0IENob2ljZUZvcm1hdF8zXzIKLSNkZWZpbmUgQ2xhc3NEZWZGb3Jt
YXQxVGFibGUgQ2xhc3NEZWZGb3JtYXQxVGFibGVfM18yCi0jZGVmaW5lIENsYXNzRGVmRm9ybWF0
MlRhYmxlIENsYXNzRGVmRm9ybWF0MlRhYmxlXzNfMgotI2RlZmluZSBDbGFzc0RlZmluaXRpb25U
YWJsZSBDbGFzc0RlZmluaXRpb25UYWJsZV8zXzIKLSNkZWZpbmUgQ29sbGF0aW9uRWxlbWVudEl0
ZXJhdG9yIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcl8zXzIKLSNkZWZpbmUgQ29sbGF0aW9uS2V5
IENvbGxhdGlvbktleV8zXzIKLSNkZWZpbmUgQ29sbGF0b3IgQ29sbGF0b3JfM18yCi0jZGVmaW5l
IENvbGxhdG9yRmFjdG9yeSBDb2xsYXRvckZhY3RvcnlfM18yCi0jZGVmaW5lIENvbXBvdW5kVHJh
bnNsaXRlcmF0b3IgQ29tcG91bmRUcmFuc2xpdGVyYXRvcl8zXzIKLSNkZWZpbmUgQ29udGV4dHVh
bEdseXBoU3Vic3RpdHV0aW9uUHJvY2Vzc29yIENvbnRleHR1YWxHbHlwaFN1YnN0aXR1dGlvblBy
b2Nlc3Nvcl8zXzIKLSNkZWZpbmUgQ29udGV4dHVhbFN1YnN0aXR1dGlvbkJhc2UgQ29udGV4dHVh
bFN1YnN0aXR1dGlvbkJhc2VfM18yCi0jZGVmaW5lIENvbnRleHR1YWxTdWJzdGl0dXRpb25Gb3Jt
YXQxU3VidGFibGUgQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDFTdWJ0YWJsZV8zXzIKLSNk
ZWZpbmUgQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDJTdWJ0YWJsZSBDb250ZXh0dWFsU3Vi
c3RpdHV0aW9uRm9ybWF0MlN1YnRhYmxlXzNfMgotI2RlZmluZSBDb250ZXh0dWFsU3Vic3RpdHV0
aW9uRm9ybWF0M1N1YnRhYmxlIENvbnRleHR1YWxTdWJzdGl0dXRpb25Gb3JtYXQzU3VidGFibGVf
M18yCi0jZGVmaW5lIENvbnRleHR1YWxTdWJzdGl0dXRpb25TdWJ0YWJsZSBDb250ZXh0dWFsU3Vi
c3RpdHV0aW9uU3VidGFibGVfM18yCi0jZGVmaW5lIENvdmVyYWdlRm9ybWF0MVRhYmxlIENvdmVy
YWdlRm9ybWF0MVRhYmxlXzNfMgotI2RlZmluZSBDb3ZlcmFnZUZvcm1hdDJUYWJsZSBDb3ZlcmFn
ZUZvcm1hdDJUYWJsZV8zXzIKLSNkZWZpbmUgQ292ZXJhZ2VUYWJsZSBDb3ZlcmFnZVRhYmxlXzNf
MgotI2RlZmluZSBDdXJyZW5jeUFtb3VudCBDdXJyZW5jeUFtb3VudF8zXzIKLSNkZWZpbmUgQ3Vy
cmVuY3lGb3JtYXQgQ3VycmVuY3lGb3JtYXRfM18yCi0jZGVmaW5lIEN1cnJlbmN5VW5pdCBDdXJy
ZW5jeVVuaXRfM18yCi0jZGVmaW5lIEN1cnNpdmVBdHRhY2htZW50U3VidGFibGUgQ3Vyc2l2ZUF0
dGFjaG1lbnRTdWJ0YWJsZV8zXzIKLSNkZWZpbmUgRGF0ZUZvcm1hdCBEYXRlRm9ybWF0XzNfMgot
I2RlZmluZSBEYXRlRm9ybWF0U3ltYm9scyBEYXRlRm9ybWF0U3ltYm9sc18zXzIKLSNkZWZpbmUg
RGVjaW1hbEZvcm1hdCBEZWNpbWFsRm9ybWF0XzNfMgotI2RlZmluZSBEZWNpbWFsRm9ybWF0U3lt
Ym9scyBEZWNpbWFsRm9ybWF0U3ltYm9sc18zXzIKLSNkZWZpbmUgRGVmYXVsdENhbGVuZGFyRmFj
dG9yeSBEZWZhdWx0Q2FsZW5kYXJGYWN0b3J5XzNfMgotI2RlZmluZSBEZWZhdWx0Q2hhck1hcHBl
ciBEZWZhdWx0Q2hhck1hcHBlcl8zXzIKLSNkZWZpbmUgRGV2aWNlVGFibGUgRGV2aWNlVGFibGVf
M18yCi0jZGVmaW5lIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IgRGljdGlvbmFyeUJhc2Vk
QnJlYWtJdGVyYXRvcl8zXzIKLSNkZWZpbmUgRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvclRh
YmxlcyBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yVGFibGVzXzNfMgotI2RlZmluZSBEaWdp
dExpc3QgRGlnaXRMaXN0XzNfMgotI2RlZmluZSBFbnRyeSBFbnRyeV8zXzIKLSNkZWZpbmUgRW51
bVRvT2Zmc2V0IEVudW1Ub09mZnNldF8zXzIKLSNkZWZpbmUgRXNjYXBlVHJhbnNsaXRlcmF0b3Ig
RXNjYXBlVHJhbnNsaXRlcmF0b3JfM18yCi0jZGVmaW5lIEV2ZW50TGlzdGVuZXIgRXZlbnRMaXN0
ZW5lcl8zXzIKLSNkZWZpbmUgRXh0ZW5zaW9uU3VidGFibGUgRXh0ZW5zaW9uU3VidGFibGVfM18y
Ci0jZGVmaW5lIEZlYXR1cmVMaXN0VGFibGUgRmVhdHVyZUxpc3RUYWJsZV8zXzIKLSNkZWZpbmUg
RmllbGRQb3NpdGlvbiBGaWVsZFBvc2l0aW9uXzNfMgotI2RlZmluZSBGb250UnVucyBGb250UnVu
c18zXzIKLSNkZWZpbmUgRm9ybWF0IEZvcm1hdF8zXzIKLSNkZWZpbmUgRm9ybWF0MUFuY2hvclRh
YmxlIEZvcm1hdDFBbmNob3JUYWJsZV8zXzIKLSNkZWZpbmUgRm9ybWF0MkFuY2hvclRhYmxlIEZv
cm1hdDJBbmNob3JUYWJsZV8zXzIKLSNkZWZpbmUgRm9ybWF0M0FuY2hvclRhYmxlIEZvcm1hdDNB
bmNob3JUYWJsZV8zXzIKLSNkZWZpbmUgRm9ybWF0dGFibGUgRm9ybWF0dGFibGVfM18yCi0jZGVm
aW5lIEZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvciBGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3JfM18y
Ci0jZGVmaW5lIEZyYWN0aW9uYWxQYXJ0U3Vic3RpdHV0aW9uIEZyYWN0aW9uYWxQYXJ0U3Vic3Rp
dHV0aW9uXzNfMgotI2RlZmluZSBGdW5jdGlvblJlcGxhY2VyIEZ1bmN0aW9uUmVwbGFjZXJfM18y
Ci0jZGVmaW5lIEdERUZNYXJrRmlsdGVyIEdERUZNYXJrRmlsdGVyXzNfMgotI2RlZmluZSBHWExh
eW91dEVuZ2luZSBHWExheW91dEVuZ2luZV8zXzIKLSNkZWZpbmUgR2x5cGhEZWZpbml0aW9uVGFi
bGVIZWFkZXIgR2x5cGhEZWZpbml0aW9uVGFibGVIZWFkZXJfM18yCi0jZGVmaW5lIEdseXBoSXRl
cmF0b3IgR2x5cGhJdGVyYXRvcl8zXzIKLSNkZWZpbmUgR2x5cGhMb29rdXBUYWJsZUhlYWRlciBH
bHlwaExvb2t1cFRhYmxlSGVhZGVyXzNfMgotI2RlZmluZSBHbHlwaFBvc2l0aW9uaW5nTG9va3Vw
UHJvY2Vzc29yIEdseXBoUG9zaXRpb25pbmdMb29rdXBQcm9jZXNzb3JfM18yCi0jZGVmaW5lIEds
eXBoUG9zaXRpb25pbmdUYWJsZUhlYWRlciBHbHlwaFBvc2l0aW9uaW5nVGFibGVIZWFkZXJfM18y
Ci0jZGVmaW5lIEdseXBoU3Vic3RpdHV0aW9uTG9va3VwUHJvY2Vzc29yIEdseXBoU3Vic3RpdHV0
aW9uTG9va3VwUHJvY2Vzc29yXzNfMgotI2RlZmluZSBHbHlwaFN1YnN0aXR1dGlvblRhYmxlSGVh
ZGVyIEdseXBoU3Vic3RpdHV0aW9uVGFibGVIZWFkZXJfM18yCi0jZGVmaW5lIEdyZWdvIEdyZWdv
XzNfMgotI2RlZmluZSBHcmVnb3JpYW5DYWxlbmRhciBHcmVnb3JpYW5DYWxlbmRhcl8zXzIKLSNk
ZWZpbmUgSGFuT3BlblR5cGVMYXlvdXRFbmdpbmUgSGFuT3BlblR5cGVMYXlvdXRFbmdpbmVfM18y
Ci0jZGVmaW5lIEhlYnJld0NhbGVuZGFyIEhlYnJld0NhbGVuZGFyXzNfMgotI2RlZmluZSBJQ1VC
cmVha0l0ZXJhdG9yRmFjdG9yeSBJQ1VCcmVha0l0ZXJhdG9yRmFjdG9yeV8zXzIKLSNkZWZpbmUg
SUNVQnJlYWtJdGVyYXRvclNlcnZpY2UgSUNVQnJlYWtJdGVyYXRvclNlcnZpY2VfM18yCi0jZGVm
aW5lIElDVUNvbGxhdG9yRmFjdG9yeSBJQ1VDb2xsYXRvckZhY3RvcnlfM18yCi0jZGVmaW5lIElD
VUNvbGxhdG9yU2VydmljZSBJQ1VDb2xsYXRvclNlcnZpY2VfM18yCi0jZGVmaW5lIElDVUxheW91
dEVuZ2luZSBJQ1VMYXlvdXRFbmdpbmVfM18yCi0jZGVmaW5lIElDVUxvY2FsZVNlcnZpY2UgSUNV
TG9jYWxlU2VydmljZV8zXzIKLSNkZWZpbmUgSUNVTm90aWZpZXIgSUNVTm90aWZpZXJfM18yCi0j
ZGVmaW5lIElDVU51bWJlckZvcm1hdEZhY3RvcnkgSUNVTnVtYmVyRm9ybWF0RmFjdG9yeV8zXzIK
LSNkZWZpbmUgSUNVTnVtYmVyRm9ybWF0U2VydmljZSBJQ1VOdW1iZXJGb3JtYXRTZXJ2aWNlXzNf
MgotI2RlZmluZSBJQ1VSZXNvdXJjZUJ1bmRsZUZhY3RvcnkgSUNVUmVzb3VyY2VCdW5kbGVGYWN0
b3J5XzNfMgotI2RlZmluZSBJQ1VTZXJ2aWNlIElDVVNlcnZpY2VfM18yCi0jZGVmaW5lIElDVVNl
cnZpY2VGYWN0b3J5IElDVVNlcnZpY2VGYWN0b3J5XzNfMgotI2RlZmluZSBJQ1VTZXJ2aWNlS2V5
IElDVVNlcnZpY2VLZXlfM18yCi0jZGVmaW5lIElDVV9VdGlsaXR5IElDVV9VdGlsaXR5XzNfMgot
I2RlZmluZSBJbmRpY0NsYXNzVGFibGUgSW5kaWNDbGFzc1RhYmxlXzNfMgotI2RlZmluZSBJbmRp
Y09wZW5UeXBlTGF5b3V0RW5naW5lIEluZGljT3BlblR5cGVMYXlvdXRFbmdpbmVfM18yCi0jZGVm
aW5lIEluZGljUmVhcnJhbmdlbWVudFByb2Nlc3NvciBJbmRpY1JlYXJyYW5nZW1lbnRQcm9jZXNz
b3JfM18yCi0jZGVmaW5lIEluZGljUmVvcmRlcmluZyBJbmRpY1Jlb3JkZXJpbmdfM18yCi0jZGVm
aW5lIEludGVncmFsUGFydFN1YnN0aXR1dGlvbiBJbnRlZ3JhbFBhcnRTdWJzdGl0dXRpb25fM18y
Ci0jZGVmaW5lIElzbGFtaWNDYWxlbmRhciBJc2xhbWljQ2FsZW5kYXJfM18yCi0jZGVmaW5lIEph
cGFuZXNlQ2FsZW5kYXIgSmFwYW5lc2VDYWxlbmRhcl8zXzIKLSNkZWZpbmUgS2V5d29yZEVudW1l
cmF0aW9uIEtleXdvcmRFbnVtZXJhdGlvbl8zXzIKLSNkZWZpbmUgTEVDaGFyTWFwcGVyIExFQ2hh
ck1hcHBlcl8zXzIKLSNkZWZpbmUgTEVGb250SW5zdGFuY2UgTEVGb250SW5zdGFuY2VfM18yCi0j
ZGVmaW5lIExFR2x5cGhGaWx0ZXIgTEVHbHlwaEZpbHRlcl8zXzIKLSNkZWZpbmUgTEVHbHlwaFN0
b3JhZ2UgTEVHbHlwaFN0b3JhZ2VfM18yCi0jZGVmaW5lIExFSW5zZXJ0aW9uQ2FsbGJhY2sgTEVJ
bnNlcnRpb25DYWxsYmFja18zXzIKLSNkZWZpbmUgTEVJbnNlcnRpb25MaXN0IExFSW5zZXJ0aW9u
TGlzdF8zXzIKLSNkZWZpbmUgTFhVdGlsaXRpZXMgTFhVdGlsaXRpZXNfM18yCi0jZGVmaW5lIExh
eW91dEVuZ2luZSBMYXlvdXRFbmdpbmVfM18yCi0jZGVmaW5lIExpZ2F0dXJlU3Vic3RpdHV0aW9u
UHJvY2Vzc29yIExpZ2F0dXJlU3Vic3RpdHV0aW9uUHJvY2Vzc29yXzNfMgotI2RlZmluZSBMaWdh
dHVyZVN1YnN0aXR1dGlvblN1YnRhYmxlIExpZ2F0dXJlU3Vic3RpdHV0aW9uU3VidGFibGVfM18y
Ci0jZGVmaW5lIExvY0RhdGFQYXJzZXIgTG9jRGF0YVBhcnNlcl8zXzIKLSNkZWZpbmUgTG9jYWxl
IExvY2FsZV8zXzIKLSNkZWZpbmUgTG9jYWxlQmFzZWQgTG9jYWxlQmFzZWRfM18yCi0jZGVmaW5l
IExvY2FsZUtleSBMb2NhbGVLZXlfM18yCi0jZGVmaW5lIExvY2FsZUtleUZhY3RvcnkgTG9jYWxl
S2V5RmFjdG9yeV8zXzIKLSNkZWZpbmUgTG9jYWxlUnVucyBMb2NhbGVSdW5zXzNfMgotI2RlZmlu
ZSBMb2NhbGVVdGlsaXR5IExvY2FsZVV0aWxpdHlfM18yCi0jZGVmaW5lIExvY2FsaXphdGlvbklu
Zm8gTG9jYWxpemF0aW9uSW5mb18zXzIKLSNkZWZpbmUgTG9va3VwTGlzdFRhYmxlIExvb2t1cExp
c3RUYWJsZV8zXzIKLSNkZWZpbmUgTG9va3VwUHJvY2Vzc29yIExvb2t1cFByb2Nlc3Nvcl8zXzIK
LSNkZWZpbmUgTG9va3VwU3VidGFibGUgTG9va3VwU3VidGFibGVfM18yCi0jZGVmaW5lIExvb2t1
cFRhYmxlIExvb2t1cFRhYmxlXzNfMgotI2RlZmluZSBMb3dlcmNhc2VUcmFuc2xpdGVyYXRvciBM
b3dlcmNhc2VUcmFuc2xpdGVyYXRvcl8zXzIKLSNkZWZpbmUgTVByZUZpeHVwcyBNUHJlRml4dXBz
XzNfMgotI2RlZmluZSBNYXJrQXJyYXkgTWFya0FycmF5XzNfMgotI2RlZmluZSBNYXJrVG9CYXNl
UG9zaXRpb25pbmdTdWJ0YWJsZSBNYXJrVG9CYXNlUG9zaXRpb25pbmdTdWJ0YWJsZV8zXzIKLSNk
ZWZpbmUgTWFya1RvTGlnYXR1cmVQb3NpdGlvbmluZ1N1YnRhYmxlIE1hcmtUb0xpZ2F0dXJlUG9z
aXRpb25pbmdTdWJ0YWJsZV8zXzIKLSNkZWZpbmUgTWFya1RvTWFya1Bvc2l0aW9uaW5nU3VidGFi
bGUgTWFya1RvTWFya1Bvc2l0aW9uaW5nU3VidGFibGVfM18yCi0jZGVmaW5lIE1hdGggTWF0aF8z
XzIKLSNkZWZpbmUgTWVhc3VyZSBNZWFzdXJlXzNfMgotI2RlZmluZSBNZWFzdXJlRm9ybWF0IE1l
YXN1cmVGb3JtYXRfM18yCi0jZGVmaW5lIE1lYXN1cmVVbml0IE1lYXN1cmVVbml0XzNfMgotI2Rl
ZmluZSBNZXNzYWdlRm9ybWF0IE1lc3NhZ2VGb3JtYXRfM18yCi0jZGVmaW5lIE1lc3NhZ2VGb3Jt
YXRBZGFwdGVyIE1lc3NhZ2VGb3JtYXRBZGFwdGVyXzNfMgotI2RlZmluZSBNb2R1bHVzU3Vic3Rp
dHV0aW9uIE1vZHVsdXNTdWJzdGl0dXRpb25fM18yCi0jZGVmaW5lIE1vb25SaXNlU2V0Q29vcmRG
dW5jIE1vb25SaXNlU2V0Q29vcmRGdW5jXzNfMgotI2RlZmluZSBNb29uVGltZUFuZ2xlRnVuYyBN
b29uVGltZUFuZ2xlRnVuY18zXzIKLSNkZWZpbmUgTW9ycGhTdWJ0YWJsZUhlYWRlciBNb3JwaFN1
YnRhYmxlSGVhZGVyXzNfMgotI2RlZmluZSBNb3JwaFRhYmxlSGVhZGVyIE1vcnBoVGFibGVIZWFk
ZXJfM18yCi0jZGVmaW5lIE11bHRpcGxlU3Vic3RpdHV0aW9uU3VidGFibGUgTXVsdGlwbGVTdWJz
dGl0dXRpb25TdWJ0YWJsZV8zXzIKLSNkZWZpbmUgTXVsdGlwbGllclN1YnN0aXR1dGlvbiBNdWx0
aXBsaWVyU3Vic3RpdHV0aW9uXzNfMgotI2RlZmluZSBORkZhY3RvcnkgTkZGYWN0b3J5XzNfMgot
I2RlZmluZSBORlJ1bGUgTkZSdWxlXzNfMgotI2RlZmluZSBORlJ1bGVTZXQgTkZSdWxlU2V0XzNf
MgotI2RlZmluZSBORlN1YnN0aXR1dGlvbiBORlN1YnN0aXR1dGlvbl8zXzIKLSNkZWZpbmUgTmFt
ZVRvRW51bSBOYW1lVG9FbnVtXzNfMgotI2RlZmluZSBOYW1lVW5pY29kZVRyYW5zbGl0ZXJhdG9y
IE5hbWVVbmljb2RlVHJhbnNsaXRlcmF0b3JfM18yCi0jZGVmaW5lIE5vbkNvbnRleHR1YWxHbHlw
aFN1YnN0aXR1dGlvblByb2Nlc3NvciBOb25Db250ZXh0dWFsR2x5cGhTdWJzdGl0dXRpb25Qcm9j
ZXNzb3JfM18yCi0jZGVmaW5lIE5vbkNvbnRpZ3VvdXNFbnVtVG9PZmZzZXQgTm9uQ29udGlndW91
c0VudW1Ub09mZnNldF8zXzIKLSNkZWZpbmUgTm9ybWFsaXphdGlvblRyYW5zbGl0ZXJhdG9yIE5v
cm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvcl8zXzIKLSNkZWZpbmUgTm9ybWFsaXplciBOb3JtYWxp
emVyXzNfMgotI2RlZmluZSBOdWxsU3Vic3RpdHV0aW9uIE51bGxTdWJzdGl0dXRpb25fM18yCi0j
ZGVmaW5lIE51bGxUcmFuc2xpdGVyYXRvciBOdWxsVHJhbnNsaXRlcmF0b3JfM18yCi0jZGVmaW5l
IE51bWJlckZvcm1hdCBOdW1iZXJGb3JtYXRfM18yCi0jZGVmaW5lIE51bWJlckZvcm1hdEZhY3Rv
cnkgTnVtYmVyRm9ybWF0RmFjdG9yeV8zXzIKLSNkZWZpbmUgTnVtZXJhdG9yU3Vic3RpdHV0aW9u
IE51bWVyYXRvclN1YnN0aXR1dGlvbl8zXzIKLSNkZWZpbmUgT2xzb25UaW1lWm9uZSBPbHNvblRp
bWVab25lXzNfMgotI2RlZmluZSBPcGVuVHlwZUxheW91dEVuZ2luZSBPcGVuVHlwZUxheW91dEVu
Z2luZV8zXzIKLSNkZWZpbmUgT3BlblR5cGVVdGlsaXRpZXMgT3BlblR5cGVVdGlsaXRpZXNfM18y
Ci0jZGVmaW5lIFBhaXJQb3NpdGlvbmluZ0Zvcm1hdDFTdWJ0YWJsZSBQYWlyUG9zaXRpb25pbmdG
b3JtYXQxU3VidGFibGVfM18yCi0jZGVmaW5lIFBhaXJQb3NpdGlvbmluZ0Zvcm1hdDJTdWJ0YWJs
ZSBQYWlyUG9zaXRpb25pbmdGb3JtYXQyU3VidGFibGVfM18yCi0jZGVmaW5lIFBhaXJQb3NpdGlv
bmluZ1N1YnRhYmxlIFBhaXJQb3NpdGlvbmluZ1N1YnRhYmxlXzNfMgotI2RlZmluZSBQYXJhZ3Jh
cGhMYXlvdXQgUGFyYWdyYXBoTGF5b3V0XzNfMgotI2RlZmluZSBQYXJzZURhdGEgUGFyc2VEYXRh
XzNfMgotI2RlZmluZSBQYXJzZVBvc2l0aW9uIFBhcnNlUG9zaXRpb25fM18yCi0jZGVmaW5lIFBy
b3BlcnR5QWxpYXNlcyBQcm9wZXJ0eUFsaWFzZXNfM18yCi0jZGVmaW5lIFF1YW50aWZpZXIgUXVh
bnRpZmllcl8zXzIKLSNkZWZpbmUgUkJCSURhdGFXcmFwcGVyIFJCQklEYXRhV3JhcHBlcl8zXzIK
LSNkZWZpbmUgUkJCSU5vZGUgUkJCSU5vZGVfM18yCi0jZGVmaW5lIFJCQklSdWxlQnVpbGRlciBS
QkJJUnVsZUJ1aWxkZXJfM18yCi0jZGVmaW5lIFJCQklSdWxlU2Nhbm5lciBSQkJJUnVsZVNjYW5u
ZXJfM18yCi0jZGVmaW5lIFJCQklTZXRCdWlsZGVyIFJCQklTZXRCdWlsZGVyXzNfMgotI2RlZmlu
ZSBSQkJJU3RhdGVEZXNjcmlwdG9yIFJCQklTdGF0ZURlc2NyaXB0b3JfM18yCi0jZGVmaW5lIFJC
QklTeW1ib2xUYWJsZSBSQkJJU3ltYm9sVGFibGVfM18yCi0jZGVmaW5lIFJCQklTeW1ib2xUYWJs
ZUVudHJ5IFJCQklTeW1ib2xUYWJsZUVudHJ5XzNfMgotI2RlZmluZSBSQkJJVGFibGVCdWlsZGVy
IFJCQklUYWJsZUJ1aWxkZXJfM18yCi0jZGVmaW5lIFJhbmdlRGVzY3JpcHRvciBSYW5nZURlc2Ny
aXB0b3JfM18yCi0jZGVmaW5lIFJlZ2V4Q29tcGlsZSBSZWdleENvbXBpbGVfM18yCi0jZGVmaW5l
IFJlZ2V4TWF0Y2hlciBSZWdleE1hdGNoZXJfM18yCi0jZGVmaW5lIFJlZ2V4UGF0dGVybiBSZWdl
eFBhdHRlcm5fM18yCi0jZGVmaW5lIFJlZ2V4U3RhdGljU2V0cyBSZWdleFN0YXRpY1NldHNfM18y
Ci0jZGVmaW5lIFJlbW92ZVRyYW5zbGl0ZXJhdG9yIFJlbW92ZVRyYW5zbGl0ZXJhdG9yXzNfMgot
I2RlZmluZSBSZXBsYWNlYWJsZSBSZXBsYWNlYWJsZV8zXzIKLSNkZWZpbmUgUmVwbGFjZWFibGVH
bHVlIFJlcGxhY2VhYmxlR2x1ZV8zXzIKLSNkZWZpbmUgUmVzb3VyY2VCdW5kbGUgUmVzb3VyY2VC
dW5kbGVfM18yCi0jZGVmaW5lIFJpc2VTZXRDb29yZEZ1bmMgUmlzZVNldENvb3JkRnVuY18zXzIK
LSNkZWZpbmUgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yXzNf
MgotI2RlZmluZSBSdWxlQmFzZWRDb2xsYXRvciBSdWxlQmFzZWRDb2xsYXRvcl8zXzIKLSNkZWZp
bmUgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IFJ1bGVCYXNlZE51bWJlckZvcm1hdF8zXzIKLSNkZWZp
bmUgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3JfM18yCi0j
ZGVmaW5lIFJ1bGVDaGFyYWN0ZXJJdGVyYXRvciBSdWxlQ2hhcmFjdGVySXRlcmF0b3JfM18yCi0j
ZGVmaW5lIFJ1bGVIYWxmIFJ1bGVIYWxmXzNfMgotI2RlZmluZSBSdW5BcnJheSBSdW5BcnJheV8z
XzIKLSNkZWZpbmUgU2FtZVZhbHVlU3Vic3RpdHV0aW9uIFNhbWVWYWx1ZVN1YnN0aXR1dGlvbl8z
XzIKLSNkZWZpbmUgU2NyaXB0TGlzdFRhYmxlIFNjcmlwdExpc3RUYWJsZV8zXzIKLSNkZWZpbmUg
U2NyaXB0UnVuSXRlcmF0b3IgU2NyaXB0UnVuSXRlcmF0b3JfM18yCi0jZGVmaW5lIFNjcmlwdFRh
YmxlIFNjcmlwdFRhYmxlXzNfMgotI2RlZmluZSBTZWFyY2hJdGVyYXRvciBTZWFyY2hJdGVyYXRv
cl8zXzIKLSNkZWZpbmUgU2VnbWVudEFycmF5UHJvY2Vzc29yIFNlZ21lbnRBcnJheVByb2Nlc3Nv
cl8zXzIKLSNkZWZpbmUgU2VnbWVudFNpbmdsZVByb2Nlc3NvciBTZWdtZW50U2luZ2xlUHJvY2Vz
c29yXzNfMgotI2RlZmluZSBTZXJ2aWNlRW51bWVyYXRpb24gU2VydmljZUVudW1lcmF0aW9uXzNf
MgotI2RlZmluZSBTZXJ2aWNlTGlzdGVuZXIgU2VydmljZUxpc3RlbmVyXzNfMgotI2RlZmluZSBT
aW1wbGVBcnJheVByb2Nlc3NvciBTaW1wbGVBcnJheVByb2Nlc3Nvcl8zXzIKLSNkZWZpbmUgU2lt
cGxlRGF0ZUZvcm1hdCBTaW1wbGVEYXRlRm9ybWF0XzNfMgotI2RlZmluZSBTaW1wbGVGYWN0b3J5
IFNpbXBsZUZhY3RvcnlfM18yCi0jZGVmaW5lIFNpbXBsZUxvY2FsZUtleUZhY3RvcnkgU2ltcGxl
TG9jYWxlS2V5RmFjdG9yeV8zXzIKLSNkZWZpbmUgU2ltcGxlTnVtYmVyRm9ybWF0RmFjdG9yeSBT
aW1wbGVOdW1iZXJGb3JtYXRGYWN0b3J5XzNfMgotI2RlZmluZSBTaW1wbGVUaW1lWm9uZSBTaW1w
bGVUaW1lWm9uZV8zXzIKLSNkZWZpbmUgU2luZ2xlUG9zaXRpb25pbmdGb3JtYXQxU3VidGFibGUg
U2luZ2xlUG9zaXRpb25pbmdGb3JtYXQxU3VidGFibGVfM18yCi0jZGVmaW5lIFNpbmdsZVBvc2l0
aW9uaW5nRm9ybWF0MlN1YnRhYmxlIFNpbmdsZVBvc2l0aW9uaW5nRm9ybWF0MlN1YnRhYmxlXzNf
MgotI2RlZmluZSBTaW5nbGVQb3NpdGlvbmluZ1N1YnRhYmxlIFNpbmdsZVBvc2l0aW9uaW5nU3Vi
dGFibGVfM18yCi0jZGVmaW5lIFNpbmdsZVN1YnN0aXR1dGlvbkZvcm1hdDFTdWJ0YWJsZSBTaW5n
bGVTdWJzdGl0dXRpb25Gb3JtYXQxU3VidGFibGVfM18yCi0jZGVmaW5lIFNpbmdsZVN1YnN0aXR1
dGlvbkZvcm1hdDJTdWJ0YWJsZSBTaW5nbGVTdWJzdGl0dXRpb25Gb3JtYXQyU3VidGFibGVfM18y
Ci0jZGVmaW5lIFNpbmdsZVN1YnN0aXR1dGlvblN1YnRhYmxlIFNpbmdsZVN1YnN0aXR1dGlvblN1
YnRhYmxlXzNfMgotI2RlZmluZSBTaW5nbGVUYWJsZVByb2Nlc3NvciBTaW5nbGVUYWJsZVByb2Nl
c3Nvcl8zXzIKLSNkZWZpbmUgU3BlYyBTcGVjXzNfMgotI2RlZmluZSBTdGF0ZVRhYmxlUHJvY2Vz
c29yIFN0YXRlVGFibGVQcm9jZXNzb3JfM18yCi0jZGVmaW5lIFN0cmluZ0NoYXJhY3Rlckl0ZXJh
dG9yIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yXzNfMgotI2RlZmluZSBTdHJpbmdFbnVtZXJhdGlv
biBTdHJpbmdFbnVtZXJhdGlvbl8zXzIKLSNkZWZpbmUgU3RyaW5nTG9jYWxpemF0aW9uSW5mbyBT
dHJpbmdMb2NhbGl6YXRpb25JbmZvXzNfMgotI2RlZmluZSBTdHJpbmdNYXRjaGVyIFN0cmluZ01h
dGNoZXJfM18yCi0jZGVmaW5lIFN0cmluZ1BhaXIgU3RyaW5nUGFpcl8zXzIKLSNkZWZpbmUgU3Ry
aW5nUmVwbGFjZXIgU3RyaW5nUmVwbGFjZXJfM18yCi0jZGVmaW5lIFN0cmluZ1NlYXJjaCBTdHJp
bmdTZWFyY2hfM18yCi0jZGVmaW5lIFN0eWxlUnVucyBTdHlsZVJ1bnNfM18yCi0jZGVmaW5lIFN1
YnN0aXR1dGlvbkxvb2t1cCBTdWJzdGl0dXRpb25Mb29rdXBfM18yCi0jZGVmaW5lIFN1YnRhYmxl
UHJvY2Vzc29yIFN1YnRhYmxlUHJvY2Vzc29yXzNfMgotI2RlZmluZSBTdW5UaW1lQW5nbGVGdW5j
IFN1blRpbWVBbmdsZUZ1bmNfM18yCi0jZGVmaW5lIFN5bWJvbFRhYmxlIFN5bWJvbFRhYmxlXzNf
MgotI2RlZmluZSBUWkVudW1lcmF0aW9uIFRaRW51bWVyYXRpb25fM18yCi0jZGVmaW5lIFRoYWlM
YXlvdXRFbmdpbmUgVGhhaUxheW91dEVuZ2luZV8zXzIKLSNkZWZpbmUgVGhhaVNoYXBpbmcgVGhh
aVNoYXBpbmdfM18yCi0jZGVmaW5lIFRpbWVab25lIFRpbWVab25lXzNfMgotI2RlZmluZSBUaXRs
ZWNhc2VUcmFuc2xpdGVyYXRvciBUaXRsZWNhc2VUcmFuc2xpdGVyYXRvcl8zXzIKLSNkZWZpbmUg
VHJhbnNsaXRlcmF0aW9uUnVsZSBUcmFuc2xpdGVyYXRpb25SdWxlXzNfMgotI2RlZmluZSBUcmFu
c2xpdGVyYXRpb25SdWxlRGF0YSBUcmFuc2xpdGVyYXRpb25SdWxlRGF0YV8zXzIKLSNkZWZpbmUg
VHJhbnNsaXRlcmF0aW9uUnVsZVNldCBUcmFuc2xpdGVyYXRpb25SdWxlU2V0XzNfMgotI2RlZmlu
ZSBUcmFuc2xpdGVyYXRvciBUcmFuc2xpdGVyYXRvcl8zXzIKLSNkZWZpbmUgVHJhbnNsaXRlcmF0
b3JBbGlhcyBUcmFuc2xpdGVyYXRvckFsaWFzXzNfMgotI2RlZmluZSBUcmFuc2xpdGVyYXRvcklE
UGFyc2VyIFRyYW5zbGl0ZXJhdG9ySURQYXJzZXJfM18yCi0jZGVmaW5lIFRyYW5zbGl0ZXJhdG9y
UGFyc2VyIFRyYW5zbGl0ZXJhdG9yUGFyc2VyXzNfMgotI2RlZmluZSBUcmFuc2xpdGVyYXRvclJl
Z2lzdHJ5IFRyYW5zbGl0ZXJhdG9yUmVnaXN0cnlfM18yCi0jZGVmaW5lIFRyaW1tZWRBcnJheVBy
b2Nlc3NvciBUcmltbWVkQXJyYXlQcm9jZXNzb3JfM18yCi0jZGVmaW5lIFVDaGFyQ2hhcmFjdGVy
SXRlcmF0b3IgVUNoYXJDaGFyYWN0ZXJJdGVyYXRvcl8zXzIKLSNkZWZpbmUgVU1lbW9yeSBVTWVt
b3J5XzNfMgotI2RlZmluZSBVT2JqZWN0IFVPYmplY3RfM18yCi0jZGVmaW5lIFVTdGFjayBVU3Rh
Y2tfM18yCi0jZGVmaW5lIFVTdHJpbmdFbnVtZXJhdGlvbiBVU3RyaW5nRW51bWVyYXRpb25fM18y
Ci0jZGVmaW5lIFVWZWN0b3IgVVZlY3Rvcl8zXzIKLSNkZWZpbmUgVVZlY3RvcjMyIFVWZWN0b3Iz
Ml8zXzIKLSNkZWZpbmUgVW5lc2NhcGVUcmFuc2xpdGVyYXRvciBVbmVzY2FwZVRyYW5zbGl0ZXJh
dG9yXzNfMgotI2RlZmluZSBVbmljb2RlQXJhYmljT3BlblR5cGVMYXlvdXRFbmdpbmUgVW5pY29k
ZUFyYWJpY09wZW5UeXBlTGF5b3V0RW5naW5lXzNfMgotI2RlZmluZSBVbmljb2RlRmlsdGVyIFVu
aWNvZGVGaWx0ZXJfM18yCi0jZGVmaW5lIFVuaWNvZGVGdW5jdG9yIFVuaWNvZGVGdW5jdG9yXzNf
MgotI2RlZmluZSBVbmljb2RlTWF0Y2hlciBVbmljb2RlTWF0Y2hlcl8zXzIKLSNkZWZpbmUgVW5p
Y29kZU5hbWVUcmFuc2xpdGVyYXRvciBVbmljb2RlTmFtZVRyYW5zbGl0ZXJhdG9yXzNfMgotI2Rl
ZmluZSBVbmljb2RlUmVwbGFjZXIgVW5pY29kZVJlcGxhY2VyXzNfMgotI2RlZmluZSBVbmljb2Rl
U2V0IFVuaWNvZGVTZXRfM18yCi0jZGVmaW5lIFVuaWNvZGVTZXRJdGVyYXRvciBVbmljb2RlU2V0
SXRlcmF0b3JfM18yCi0jZGVmaW5lIFVuaWNvZGVTdHJpbmcgVW5pY29kZVN0cmluZ18zXzIKLSNk
ZWZpbmUgVXBwZXJjYXNlVHJhbnNsaXRlcmF0b3IgVXBwZXJjYXNlVHJhbnNsaXRlcmF0b3JfM18y
Ci0jZGVmaW5lIFZhbHVlUmVjb3JkIFZhbHVlUmVjb3JkXzNfMgotI2RlZmluZSBWYWx1ZVJ1bnMg
VmFsdWVSdW5zXzNfMgotI2RlZmluZSBsb2NhbGVfc2V0X2RlZmF1bHRfaW50ZXJuYWwgbG9jYWxl
X3NldF9kZWZhdWx0X2ludGVybmFsXzNfMgotI2RlZmluZSB1cHJ2X3BhcnNlQ3VycmVuY3kgdXBy
dl9wYXJzZUN1cnJlbmN5XzNfMgotI2RlZmluZSB1dGlsNjRfZnJvbURvdWJsZSB1dGlsNjRfZnJv
bURvdWJsZV8zXzIKLSNkZWZpbmUgdXRpbDY0X3BvdyB1dGlsNjRfcG93XzNfMgotI2RlZmluZSB1
dGlsNjRfdG91IHV0aWw2NF90b3VfM18yCi0jZGVmaW5lIHV0aWw2NF91dG9pIHV0aWw2NF91dG9p
XzNfMgotCi0jZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYKLQotI2VuZGlmCkluZGV4OiBKYXZhU2Ny
aXB0R2x1ZS9pY3UvdW5pY29kZS91c3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEds
dWUvaWN1L3VuaWNvZGUvdXN0cmluZy5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRH
bHVlL2ljdS91bmljb2RlL3VzdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMzIwICswLDAg
QEAKLS8qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDQsIEludGVy
bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKLSogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAg
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSoKLSogRmlsZSB1c3RyaW5nLmgK
LSoKLSogTW9kaWZpY2F0aW9uIEhpc3Rvcnk6Ci0qCi0qICAgRGF0ZSAgICAgICAgTmFtZSAgICAg
ICAgRGVzY3JpcHRpb24KLSogICAxMi8wNy85OCAgICBiZXJ0cmFuZCAgICBDcmVhdGlvbi4KLSoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgotKi8KLQotI2lmbmRlZiBVU1RSSU5HX0gKLSNkZWZpbmUgVVNU
UklOR19ICi0KLSNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgotI2luY2x1ZGUgInVuaWNvZGUv
cHV0aWwuaCIKLSNpbmNsdWRlICJ1bmljb2RlL3VpdGVyLmgiCi0KLS8qKiBTaW1wbGUgZGVjbGFy
YXRpb24gZm9yIHVfc3RyVG9UaXRsZSgpIHRvIGF2b2lkIGluY2x1ZGluZyB1bmljb2RlL3Vicmsu
aC4gQHN0YWJsZSBJQ1UgMi4xKi8KLSNpZm5kZWYgVUJSS19UWVBFREVGX1VCUkVBS19JVEVSQVRP
UgotIyAgIGRlZmluZSBVQlJLX1RZUEVERUZfVUJSRUFLX0lURVJBVE9SCi0gICAgdHlwZWRlZiB2
b2lkIFVCcmVha0l0ZXJhdG9yOwotI2VuZGlmCi0KLS8qKgotICogXGZpbGUKLSAqIFxicmllZiBD
IEFQSTogVW5pY29kZSBzdHJpbmcgaGFuZGxpbmcgZnVuY3Rpb25zCi0gKgotICogVGhlc2UgQyBB
UEkgZnVuY3Rpb25zIHByb3ZpZGUgZ2VuZXJhbCBVbmljb2RlIHN0cmluZyBoYW5kbGluZy4KLSAq
Ci0gKiBTb21lIGZ1bmN0aW9ucyBhcmUgZXF1aXZhbGVudCBpbiBuYW1lLCBzaWduYXR1cmUsIGFu
ZCBiZWhhdmlvciB0byB0aGUgQU5TSSBDIDxzdHJpbmcuaD4KLSAqIGZ1bmN0aW9ucy4gKEZvciBl
eGFtcGxlLCB0aGV5IGRvIG5vdCBjaGVjayBmb3IgYmFkIGFyZ3VtZW50cyBsaWtlIE5VTEwgc3Ry
aW5nIHBvaW50ZXJzLikKLSAqIEluIHNvbWUgY2FzZXMsIG9ubHkgdGhlIHRocmVhZC1zYWZlIHZh
cmlhbnQgb2Ygc3VjaCBhIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGhlcmUKLSAqIChzZWUgdV9z
dHJ0b2tfcigpKS4KLSAqCi0gKiBPdGhlciBmdW5jdGlvbnMgcHJvdmlkZSBtb3JlIFVuaWNvZGUt
c3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBsaWtlIGxvY2FsZS1zcGVjaWZpYwotICogdXBwZXIvbG93
ZXItY2FzaW5nIGFuZCBzdHJpbmcgY29tcGFyaXNvbiBpbiBjb2RlIHBvaW50IG9yZGVyLgotICoK
LSAqIElDVSB1c2VzIDE2LWJpdCBVbmljb2RlIChVVEYtMTYpIGluIHRoZSBmb3JtIG9mIGFycmF5
cyBvZiBVQ2hhciBjb2RlIHVuaXRzLgotICogVVRGLTE2IGVuY29kZXMgZWFjaCBVbmljb2RlIGNv
ZGUgcG9pbnQgd2l0aCBlaXRoZXIgb25lIG9yIHR3byBVQ2hhciBjb2RlIHVuaXRzLgotICogKFRo
aXMgaXMgdGhlIGRlZmF1bHQgZm9ybSBvZiBVbmljb2RlLCBhbmQgYSBmb3J3YXJkLWNvbXBhdGli
bGUgZXh0ZW5zaW9uIG9mIHRoZSBvcmlnaW5hbCwKLSAqIGZpeGVkLXdpZHRoIGZvcm0gdGhhdCB3
YXMga25vd24gYXMgVUNTLTIuIFVURi0xNiBzdXBlcnNlZGVkIFVDUy0yIHdpdGggVW5pY29kZSAy
LjAKLSAqIGluIDE5OTYuKQotICoKLSAqIFNvbWUgQVBJcyBhY2NlcHQgYSAzMi1iaXQgVUNoYXIz
MiB2YWx1ZSBmb3IgYSBzaW5nbGUgY29kZSBwb2ludC4KLSAqCi0gKiBJQ1UgYWxzbyBoYW5kbGVz
IDE2LWJpdCBVbmljb2RlIHRleHQgd2l0aCB1bnBhaXJlZCBzdXJyb2dhdGVzLgotICogU3VjaCB0
ZXh0IGlzIG5vdCB3ZWxsLWZvcm1lZCBVVEYtMTYuCi0gKiBDb2RlLXBvaW50LXJlbGF0ZWQgZnVu
Y3Rpb25zIHRyZWF0IHVucGFpcmVkIHN1cnJvZ2F0ZXMgYXMgc3Vycm9nYXRlIGNvZGUgcG9pbnRz
LAotICogaS5lLiwgYXMgc2VwYXJhdGUgdW5pdHMuCi0gKgotICogQWx0aG91Z2ggVVRGLTE2IGlz
IGEgdmFyaWFibGUtd2lkdGggZW5jb2RpbmcgZm9ybSAobGlrZSBzb21lIGxlZ2FjeSBtdWx0aS1i
eXRlIGVuY29kaW5ncyksCi0gKiBpdCBpcyBtdWNoIG1vcmUgZWZmaWNpZW50IGV2ZW4gZm9yIHJh
bmRvbSBhY2Nlc3MgYmVjYXVzZSB0aGUgY29kZSB1bml0IHZhbHVlcwotICogZm9yIHNpbmdsZS11
bml0IGNoYXJhY3RlcnMgdnMuIGxlYWQgdW5pdHMgdnMuIHRyYWlsIHVuaXRzIGFyZSBjb21wbGV0
ZWx5IGRpc2pvaW50LgotICogVGhpcyBtZWFucyB0aGF0IGl0IGlzIGVhc3kgdG8gZGV0ZXJtaW5l
IGNoYXJhY3RlciAoY29kZSBwb2ludCkgYm91bmRhcmllcyBmcm9tCi0gKiByYW5kb20gb2Zmc2V0
cyBpbiB0aGUgc3RyaW5nLgotICoKLSAqIFVuaWNvZGUgKFVURi0xNikgc3RyaW5nIHByb2Nlc3Np
bmcgaXMgb3B0aW1pemVkIGZvciB0aGUgc2luZ2xlLXVuaXQgY2FzZS4KLSAqIEFsdGhvdWdoIGl0
IGlzIGltcG9ydGFudCB0byBzdXBwb3J0IHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycwotICogKHdo
aWNoIHVzZSBwYWlycyBvZiBsZWFkL3RyYWlsIGNvZGUgdW5pdHMgY2FsbGVkICJzdXJyb2dhdGVz
IiksCi0gKiB0aGVpciBvY2N1cnJlbmNlIGlzIHJhcmUuIEFsbW9zdCBhbGwgY2hhcmFjdGVycyBp
biBtb2Rlcm4gdXNlIHJlcXVpcmUgb25seQotICogYSBzaW5nbGUgVUNoYXIgY29kZSB1bml0IChp
LmUuLCB0aGVpciBjb2RlIHBvaW50IHZhbHVlcyBhcmUgPD0weGZmZmYpLgotICoKLSAqIEZvciBt
b3JlIGRldGFpbHMgc2VlIHRoZSBVc2VyIEd1aWRlIFN0cmluZ3MgY2hhcHRlciAoaHR0cDovL29z
cy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvc3RyaW5ncy5odG1sKS4KLSAqIEZvciBh
IGRpc2N1c3Npb24gb2YgdGhlIGhhbmRsaW5nIG9mIHVucGFpcmVkIHN1cnJvZ2F0ZXMgc2VlIGFs
c28KLSAqIEppdHRlcmJ1ZyAyMTQ1IGFuZCBpdHMgaWN1IG1haWxpbmcgbGlzdCBwcm9wb3NhbCBv
biAyMDAyLXNlcC0xOC4KLSAqLwotCi0vKioKLSAqIERldGVybWluZSB0aGUgbGVuZ3RoIG9mIGFu
IGFycmF5IG9mIFVDaGFyLgotICoKLSAqIEBwYXJhbSBzIFRoZSBhcnJheSBvZiBVQ2hhcnMsIE5V
TEwgKFUrMDAwMCkgdGVybWluYXRlZC4KLSAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBVQ2hhcnMg
aW4gPGNvZGU+Y2hhcnM8L2NvZGU+LCBtaW51cyB0aGUgdGVybWluYXRvci4KLSAqIEBzdGFibGUg
SUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdV9zdHJsZW4oY29uc3Qg
VUNoYXIgKnMpOwotCi0vKioKLSAqIENvdW50IFVuaWNvZGUgY29kZSBwb2ludHMgaW4gdGhlIGxl
bmd0aCBVQ2hhciBjb2RlIHVuaXRzIG9mIHRoZSBzdHJpbmcuCi0gKiBBIGNvZGUgcG9pbnQgbWF5
IG9jY3VweSBlaXRoZXIgb25lIG9yIHR3byBVQ2hhciBjb2RlIHVuaXRzLgotICogQ291bnRpbmcg
Y29kZSBwb2ludHMgaW52b2x2ZXMgcmVhZGluZyBhbGwgY29kZSB1bml0cy4KLSAqCi0gKiBUaGlz
IGZ1bmN0aW9ucyBpcyBiYXNpY2FsbHkgdGhlIGludmVyc2Ugb2YgdGhlIFUxNl9GV0RfTigpIG1h
Y3JvIChzZWUgdXRmLmgpLgotICoKLSAqIEBwYXJhbSBzIFRoZSBpbnB1dCBzdHJpbmcuCi0gKiBA
cGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgVUNoYXIgY29kZSB1bml0cyB0byBiZSBjaGVja2Vk
LCBvciAtMSB0byBjb3VudCBhbGwKLSAqICAgICAgICAgICAgICAgY29kZSBwb2ludHMgYmVmb3Jl
IHRoZSBmaXJzdCBOVUwgKFUrMDAwMCkuCi0gKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgY29kZSBw
b2ludHMgaW4gdGhlIHNwZWNpZmllZCBjb2RlIHVuaXRzLgotICogQHN0YWJsZSBJQ1UgMi4wCi0g
Ki8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCi11X2NvdW50Q2hhcjMyKGNvbnN0IFVDaGFy
ICpzLCBpbnQzMl90IGxlbmd0aCk7Ci0KLS8qKgotICogQ2hlY2sgaWYgdGhlIHN0cmluZyBjb250
YWlucyBtb3JlIFVuaWNvZGUgY29kZSBwb2ludHMgdGhhbiBhIGNlcnRhaW4gbnVtYmVyLgotICog
VGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGNvdW50aW5nIGFsbCBjb2RlIHBvaW50cyBpbiB0
aGUgZW50aXJlIHN0cmluZwotICogYW5kIGNvbXBhcmluZyB0aGF0IG51bWJlciB3aXRoIGEgdGhy
ZXNob2xkLgotICogVGhpcyBmdW5jdGlvbiBtYXkgbm90IG5lZWQgdG8gc2NhbiB0aGUgc3RyaW5n
IGF0IGFsbCBpZiB0aGUgbGVuZ3RoIGlzIGtub3duCi0gKiAobm90IC0xIGZvciBOVUwtdGVybWlu
YXRpb24pIGFuZCBmYWxscyB3aXRoaW4gYSBjZXJ0YWluIHJhbmdlLCBhbmQKLSAqIG5ldmVyIG5l
ZWRzIHRvIGNvdW50IG1vcmUgdGhhbiAnbnVtYmVyKzEnIGNvZGUgcG9pbnRzLgotICogTG9naWNh
bGx5IGVxdWl2YWxlbnQgdG8gKHVfY291bnRDaGFyMzIocywgbGVuZ3RoKT5udW1iZXIpLgotICog
QSBVbmljb2RlIGNvZGUgcG9pbnQgbWF5IG9jY3VweSBlaXRoZXIgb25lIG9yIHR3byBVQ2hhciBj
b2RlIHVuaXRzLgotICoKLSAqIEBwYXJhbSBzIFRoZSBpbnB1dCBzdHJpbmcuCi0gKiBAcGFyYW0g
bGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZywgb3IgLTEgaWYgaXQgaXMgTlVMLXRlcm1p
bmF0ZWQuCi0gKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gdGhl
IHN0cmluZyBpcyBjb21wYXJlZCBhZ2FpbnN0Ci0gKiAgICAgICAgICAgICAgIHRoZSAnbnVtYmVy
JyBwYXJhbWV0ZXIuCi0gKiBAcmV0dXJuIEJvb2xlYW4gdmFsdWUgZm9yIHdoZXRoZXIgdGhlIHN0
cmluZyBjb250YWlucyBtb3JlIFVuaWNvZGUgY29kZSBwb2ludHMKLSAqICAgICAgICAgdGhhbiAn
bnVtYmVyJy4gU2FtZSBhcyAodV9jb3VudENoYXIzMihzLCBsZW5ndGgpPm51bWJlcikuCi0gKiBA
c3RhYmxlIElDVSAyLjQKLSAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11X3N0ckhhc01v
cmVDaGFyMzJUaGFuKGNvbnN0IFVDaGFyICpzLCBpbnQzMl90IGxlbmd0aCwgaW50MzJfdCBudW1i
ZXIpOwotCi0vKioKLSAqIENvbmNhdGVuYXRlIHR3byB1c3RyaW5ncy4gIEFwcGVuZHMgYSBjb3B5
IG9mIDxjb2RlPnNyYzwvY29kZT4sCi0gKiBpbmNsdWRpbmcgdGhlIG51bGwgdGVybWluYXRvciwg
dG8gPGNvZGU+ZHN0PC9jb2RlPi4gVGhlIGluaXRpYWwgY29waWVkCi0gKiBjaGFyYWN0ZXIgZnJv
bSA8Y29kZT5zcmM8L2NvZGU+IG92ZXJ3cml0ZXMgdGhlIG51bGwgdGVybWluYXRvciBpbiA8Y29k
ZT5kc3Q8L2NvZGU+LgotICoKLSAqIEBwYXJhbSBkc3QgVGhlIGRlc3RpbmF0aW9uIHN0cmluZy4K
LSAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSBzdHJpbmcuCi0gKiBAcmV0dXJuIEEgcG9pbnRlciB0
byA8Y29kZT5kc3Q8L2NvZGU+LgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVD
aGFyKiBVX0VYUE9SVDIKLXVfc3RyY2F0KFVDaGFyICAgICAqZHN0LCAKLSAgICBjb25zdCBVQ2hh
ciAgICAgKnNyYyk7Ci0KLS8qKgotICogQ29uY2F0ZW5hdGUgdHdvIHVzdHJpbmdzLiAgCi0gKiBB
cHBlbmRzIGF0IG1vc3QgPGNvZGU+bjwvY29kZT4gY2hhcmFjdGVycyBmcm9tIDxjb2RlPnNyYzwv
Y29kZT4gdG8gPGNvZGU+ZHN0PC9jb2RlPi4KLSAqIEFkZHMgYSB0ZXJtaW5hdGluZyBOVUwuCi0g
KiBJZiBzcmMgaXMgdG9vIGxvbmcsIHRoZW4gb25seSA8Y29kZT5uLTE8L2NvZGU+IGNoYXJhY3Rl
cnMgd2lsbCBiZSBjb3BpZWQKLSAqIGJlZm9yZSB0aGUgdGVybWluYXRpbmcgTlVMLgotICogSWYg
PGNvZGU+biZsdDs9MDwvY29kZT4gdGhlbiBkc3QgaXMgbm90IG1vZGlmaWVkLgotICoKLSAqIEBw
YXJhbSBkc3QgVGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KLSAqIEBwYXJhbSBzcmMgVGhlIHNvdXJj
ZSBzdHJpbmcuCi0gKiBAcGFyYW0gbiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0
byBjb21wYXJlLgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gPGNvZGU+ZHN0PC9jb2RlPi4KLSAq
IEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQ2hhciogVV9FWFBPUlQyCi11X3N0cm5j
YXQoVUNoYXIgICAgICpkc3QsIAotICAgICBjb25zdCBVQ2hhciAgICAgKnNyYywgCi0gICAgIGlu
dDMyX3QgICAgIG4pOwotCi0vKioKLSAqIEZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBz
dWJzdHJpbmcgaW4gYSBzdHJpbmcuCi0gKiBUaGUgc3Vic3RyaW5nIGlzIGZvdW5kIGF0IGNvZGUg
cG9pbnQgYm91bmRhcmllcy4KLSAqIFRoYXQgbWVhbnMgdGhhdCBpZiB0aGUgc3Vic3RyaW5nIGJl
Z2lucyB3aXRoCi0gKiBhIHRyYWlsIHN1cnJvZ2F0ZSBvciBlbmRzIHdpdGggYSBsZWFkIHN1cnJv
Z2F0ZSwKLSAqIHRoZW4gaXQgaXMgZm91bmQgb25seSBpZiB0aGVzZSBzdXJyb2dhdGVzIHN0YW5k
IGFsb25lIGluIHRoZSB0ZXh0LgotICogT3RoZXJ3aXNlLCB0aGUgc3Vic3RyaW5nIGVkZ2UgdW5p
dHMgd291bGQgYmUgbWF0Y2hlZCBhZ2FpbnN0Ci0gKiBoYWx2ZXMgb2Ygc3Vycm9nYXRlIHBhaXJz
LgotICoKLSAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChOVUwtdGVybWluYXRlZCku
Ci0gKiBAcGFyYW0gc3Vic3RyaW5nIFRoZSBzdWJzdHJpbmcgdG8gZmluZCAoTlVMLXRlcm1pbmF0
ZWQpLgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgPGNv
ZGU+c3Vic3RyaW5nPC9jb2RlPiBpbiA8Y29kZT5zPC9jb2RlPiwKLSAqICAgICAgICAgb3IgPGNv
ZGU+czwvY29kZT4gaXRzZWxmIGlmIHRoZSA8Y29kZT5zdWJzdHJpbmc8L2NvZGU+IGlzIGVtcHR5
LAotICogICAgICAgICBvciA8Y29kZT5OVUxMPC9jb2RlPiBpZiA8Y29kZT5zdWJzdHJpbmc8L2Nv
ZGU+IGlzIG5vdCBpbiA8Y29kZT5zPC9jb2RlPi4KLSAqIEBzdGFibGUgSUNVIDIuMAotICoKLSAq
IEBzZWUgdV9zdHJyc3RyCi0gKiBAc2VlIHVfc3RyRmluZEZpcnN0Ci0gKiBAc2VlIHVfc3RyRmlu
ZExhc3QKLSAqLwotVV9TVEFCTEUgVUNoYXIgKiBVX0VYUE9SVDIKLXVfc3Ryc3RyKGNvbnN0IFVD
aGFyICpzLCBjb25zdCBVQ2hhciAqc3Vic3RyaW5nKTsKLQotLyoqCi0gKiBGaW5kIHRoZSBmaXJz
dCBvY2N1cnJlbmNlIG9mIGEgc3Vic3RyaW5nIGluIGEgc3RyaW5nLgotICogVGhlIHN1YnN0cmlu
ZyBpcyBmb3VuZCBhdCBjb2RlIHBvaW50IGJvdW5kYXJpZXMuCi0gKiBUaGF0IG1lYW5zIHRoYXQg
aWYgdGhlIHN1YnN0cmluZyBiZWdpbnMgd2l0aAotICogYSB0cmFpbCBzdXJyb2dhdGUgb3IgZW5k
cyB3aXRoIGEgbGVhZCBzdXJyb2dhdGUsCi0gKiB0aGVuIGl0IGlzIGZvdW5kIG9ubHkgaWYgdGhl
c2Ugc3Vycm9nYXRlcyBzdGFuZCBhbG9uZSBpbiB0aGUgdGV4dC4KLSAqIE90aGVyd2lzZSwgdGhl
IHN1YnN0cmluZyBlZGdlIHVuaXRzIHdvdWxkIGJlIG1hdGNoZWQgYWdhaW5zdAotICogaGFsdmVz
IG9mIHN1cnJvZ2F0ZSBwYWlycy4KLSAqCi0gKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIHNlYXJj
aC4KLSAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiBzIChudW1iZXIgb2YgVUNoYXJzKSwg
b3IgLTEgaWYgaXQgaXMgTlVMLXRlcm1pbmF0ZWQuCi0gKiBAcGFyYW0gc3Vic3RyaW5nIFRoZSBz
dWJzdHJpbmcgdG8gZmluZCAoTlVMLXRlcm1pbmF0ZWQpLgotICogQHBhcmFtIHN1Ykxlbmd0aCBU
aGUgbGVuZ3RoIG9mIHN1YnN0cmluZyAobnVtYmVyIG9mIFVDaGFycyksIG9yIC0xIGlmIGl0IGlz
IE5VTC10ZXJtaW5hdGVkLgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIGZpcnN0IG9jY3Vy
cmVuY2Ugb2YgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBpbiA8Y29kZT5zPC9jb2RlPiwKLSAqICAg
ICAgICAgb3IgPGNvZGU+czwvY29kZT4gaXRzZWxmIGlmIHRoZSA8Y29kZT5zdWJzdHJpbmc8L2Nv
ZGU+IGlzIGVtcHR5LAotICogICAgICAgICBvciA8Y29kZT5OVUxMPC9jb2RlPiBpZiA8Y29kZT5z
dWJzdHJpbmc8L2NvZGU+IGlzIG5vdCBpbiA8Y29kZT5zPC9jb2RlPi4KLSAqIEBzdGFibGUgSUNV
IDIuNAotICoKLSAqIEBzZWUgdV9zdHJzdHIKLSAqIEBzZWUgdV9zdHJGaW5kTGFzdAotICovCi1V
X1NUQUJMRSBVQ2hhciAqIFVfRVhQT1JUMgotdV9zdHJGaW5kRmlyc3QoY29uc3QgVUNoYXIgKnMs
IGludDMyX3QgbGVuZ3RoLCBjb25zdCBVQ2hhciAqc3Vic3RyaW5nLCBpbnQzMl90IHN1Ykxlbmd0
aCk7Ci0KLS8qKgotICogRmluZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIEJNUCBjb2RlIHBv
aW50IGluIGEgc3RyaW5nLgotICogQSBzdXJyb2dhdGUgY29kZSBwb2ludCBpcyBmb3VuZCBvbmx5
IGlmIGl0cyBtYXRjaCBpbiB0aGUgdGV4dCBpcyBub3QKLSAqIHBhcnQgb2YgYSBzdXJyb2dhdGUg
cGFpci4KLSAqIEEgTlVMIGNoYXJhY3RlciBpcyBmb3VuZCBhdCB0aGUgc3RyaW5nIHRlcm1pbmF0
b3IuCi0gKgotICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byBzZWFyY2ggKE5VTC10ZXJtaW5hdGVk
KS4KLSAqIEBwYXJhbSBjIFRoZSBCTVAgY29kZSBwb2ludCB0byBmaW5kLgotICogQHJldHVybiBB
IHBvaW50ZXIgdG8gdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgPGNvZGU+YzwvY29kZT4gaW4gPGNv
ZGU+czwvY29kZT4KLSAqICAgICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+Yzwv
Y29kZT4gaXMgbm90IGluIDxjb2RlPnM8L2NvZGU+LgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKgot
ICogQHNlZSB1X3N0cmNocjMyCi0gKiBAc2VlIHVfbWVtY2hyCi0gKiBAc2VlIHVfc3Ryc3RyCi0g
KiBAc2VlIHVfc3RyRmluZEZpcnN0Ci0gKi8KLVVfU1RBQkxFIFVDaGFyICogVV9FWFBPUlQyCi11
X3N0cmNocihjb25zdCBVQ2hhciAqcywgVUNoYXIgYyk7Ci0KLS8qKgotICogRmluZCB0aGUgZmly
c3Qgb2NjdXJyZW5jZSBvZiBhIGNvZGUgcG9pbnQgaW4gYSBzdHJpbmcuCi0gKiBBIHN1cnJvZ2F0
ZSBjb2RlIHBvaW50IGlzIGZvdW5kIG9ubHkgaWYgaXRzIG1hdGNoIGluIHRoZSB0ZXh0IGlzIG5v
dAotICogcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLgotICogQSBOVUwgY2hhcmFjdGVyIGlzIGZv
dW5kIGF0IHRoZSBzdHJpbmcgdGVybWluYXRvci4KLSAqCi0gKiBAcGFyYW0gcyBUaGUgc3RyaW5n
IHRvIHNlYXJjaCAoTlVMLXRlcm1pbmF0ZWQpLgotICogQHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQg
dG8gZmluZC4KLSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9m
IDxjb2RlPmM8L2NvZGU+IGluIDxjb2RlPnM8L2NvZGU+Ci0gKiAgICAgICAgIG9yIDxjb2RlPk5V
TEw8L2NvZGU+IGlmIDxjb2RlPmM8L2NvZGU+IGlzIG5vdCBpbiA8Y29kZT5zPC9jb2RlPi4KLSAq
IEBzdGFibGUgSUNVIDIuMAotICoKLSAqIEBzZWUgdV9zdHJjaHIKLSAqIEBzZWUgdV9tZW1jaHIz
MgotICogQHNlZSB1X3N0cnN0cgotICogQHNlZSB1X3N0ckZpbmRGaXJzdAotICovCi1VX1NUQUJM
RSBVQ2hhciAqIFVfRVhQT1JUMgotdV9zdHJjaHIzMihjb25zdCBVQ2hhciAqcywgVUNoYXIzMiBj
KTsKLQotLyoqCi0gKiBGaW5kIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgYSBzdWJzdHJpbmcgaW4g
YSBzdHJpbmcuCi0gKiBUaGUgc3Vic3RyaW5nIGlzIGZvdW5kIGF0IGNvZGUgcG9pbnQgYm91bmRh
cmllcy4KLSAqIFRoYXQgbWVhbnMgdGhhdCBpZiB0aGUgc3Vic3RyaW5nIGJlZ2lucyB3aXRoCi0g
KiBhIHRyYWlsIHN1cnJvZ2F0ZSBvciBlbmRzIHdpdGggYSBsZWFkIHN1cnJvZ2F0ZSwKLSAqIHRo
ZW4gaXQgaXMgZm91bmQgb25seSBpZiB0aGVzZSBzdXJyb2dhdGVzIHN0YW5kIGFsb25lIGluIHRo
ZSB0ZXh0LgotICogT3RoZXJ3aXNlLCB0aGUgc3Vic3RyaW5nIGVkZ2UgdW5pdHMgd291bGQgYmUg
bWF0Y2hlZCBhZ2FpbnN0Ci0gKiBoYWx2ZXMgb2Ygc3Vycm9nYXRlIHBhaXJzLgotICoKLSAqIEBw
YXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChOVUwtdGVybWluYXRlZCkuCi0gKiBAcGFyYW0g
c3Vic3RyaW5nIFRoZSBzdWJzdHJpbmcgdG8gZmluZCAoTlVMLXRlcm1pbmF0ZWQpLgotICogQHJl
dHVybiBBIHBvaW50ZXIgdG8gdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiA8Y29kZT5zdWJzdHJpbmc8
L2NvZGU+IGluIDxjb2RlPnM8L2NvZGU+LAotICogICAgICAgICBvciA8Y29kZT5zPC9jb2RlPiBp
dHNlbGYgaWYgdGhlIDxjb2RlPnN1YnN0cmluZzwvY29kZT4gaXMgZW1wdHksCi0gKiAgICAgICAg
IG9yIDxjb2RlPk5VTEw8L2NvZGU+IGlmIDxjb2RlPnN1YnN0cmluZzwvY29kZT4gaXMgbm90IGlu
IDxjb2RlPnM8L2NvZGU+LgotICogQHN0YWJsZSBJQ1UgMi40Ci0gKgotICogQHNlZSB1X3N0cnN0
cgotICogQHNlZSB1X3N0ckZpbmRGaXJzdAotICogQHNlZSB1X3N0ckZpbmRMYXN0Ci0gKi8KLVVf
U1RBQkxFIFVDaGFyICogVV9FWFBPUlQyCi11X3N0cnJzdHIoY29uc3QgVUNoYXIgKnMsIGNvbnN0
IFVDaGFyICpzdWJzdHJpbmcpOwotCi0vKioKLSAqIEZpbmQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBv
ZiBhIHN1YnN0cmluZyBpbiBhIHN0cmluZy4KLSAqIFRoZSBzdWJzdHJpbmcgaXMgZm91bmQgYXQg
Y29kZSBwb2ludCBib3VuZGFyaWVzLgotICogVGhhdCBtZWFucyB0aGF0IGlmIHRoZSBzdWJzdHJp
bmcgYmVnaW5zIHdpdGgKLSAqIGEgdHJhaWwgc3Vycm9nYXRlIG9yIGVuZHMgd2l0aCBhIGxlYWQg
c3Vycm9nYXRlLAotICogdGhlbiBpdCBpcyBmb3VuZCBvbmx5IGlmIHRoZXNlIHN1cnJvZ2F0ZXMg
c3RhbmQgYWxvbmUgaW4gdGhlIHRleHQuCi0gKiBPdGhlcndpc2UsIHRoZSBzdWJzdHJpbmcgZWRn
ZSB1bml0cyB3b3VsZCBiZSBtYXRjaGVkIGFnYWluc3QKLSAqIGhhbHZlcyBvZiBzdXJyb2dhdGUg
cGFpcnMuCi0gKgotICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byBzZWFyY2guCi0gKiBAcGFyYW0g
bGVuZ3RoIFRoZSBsZW5ndGggb2YgcyAobnVtYmVyIG9mIFVDaGFycyksIG9yIC0xIGlmIGl0IGlz
IE5VTC10ZXJtaW5hdGVkLgotICogQHBhcmFtIHN1YnN0cmluZyBUaGUgc3Vic3RyaW5nIHRvIGZp
bmQgKE5VTC10ZXJtaW5hdGVkKS4KLSAqIEBwYXJhbSBzdWJMZW5ndGggVGhlIGxlbmd0aCBvZiBz
dWJzdHJpbmcgKG51bWJlciBvZiBVQ2hhcnMpLCBvciAtMSBpZiBpdCBpcyBOVUwtdGVybWluYXRl
ZC4KLSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgPGNvZGU+
c3Vic3RyaW5nPC9jb2RlPiBpbiA8Y29kZT5zPC9jb2RlPiwKLSAqICAgICAgICAgb3IgPGNvZGU+
czwvY29kZT4gaXRzZWxmIGlmIHRoZSA8Y29kZT5zdWJzdHJpbmc8L2NvZGU+IGlzIGVtcHR5LAot
ICogICAgICAgICBvciA8Y29kZT5OVUxMPC9jb2RlPiBpZiA8Y29kZT5zdWJzdHJpbmc8L2NvZGU+
IGlzIG5vdCBpbiA8Y29kZT5zPC9jb2RlPi4KLSAqIEBzdGFibGUgSUNVIDIuNAotICoKLSAqIEBz
ZWUgdV9zdHJzdHIKLSAqIEBzZWUgdV9zdHJGaW5kTGFzdAotICovCi1VX1NUQUJMRSBVQ2hhciAq
IFVfRVhQT1JUMgotdV9zdHJGaW5kTGFzdChjb25zdCBVQ2hhciAqcywgaW50MzJfdCBsZW5ndGgs
IGNvbnN0IFVDaGFyICpzdWJzdHJpbmcsIGludDMyX3Qgc3ViTGVuZ3RoKTsKLQotLyoqCi0gKiBG
aW5kIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgYSBCTVAgY29kZSBwb2ludCBpbiBhIHN0cmluZy4K
LSAqIEEgc3Vycm9nYXRlIGNvZGUgcG9pbnQgaXMgZm91bmQgb25seSBpZiBpdHMgbWF0Y2ggaW4g
dGhlIHRleHQgaXMgbm90Ci0gKiBwYXJ0IG9mIGEgc3Vycm9nYXRlIHBhaXIuCi0gKiBBIE5VTCBj
aGFyYWN0ZXIgaXMgZm91bmQgYXQgdGhlIHN0cmluZyB0ZXJtaW5hdG9yLgotICoKLSAqIEBwYXJh
bSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChOVUwtdGVybWluYXRlZCkuCi0gKiBAcGFyYW0gYyBU
aGUgQk1QIGNvZGUgcG9pbnQgdG8gZmluZC4KLSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBs
YXN0IG9jY3VycmVuY2Ugb2YgPGNvZGU+YzwvY29kZT4gaW4gPGNvZGU+czwvY29kZT4KLSAqICAg
ICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+YzwvY29kZT4gaXMgbm90IGluIDxj
b2RlPnM8L2NvZGU+LgotICogQHN0YWJsZSBJQ1UgMi40Ci0gKgotICogQHNlZSB1X3N0cnJjaHIz
MgotICogQHNlZSB1X21lbXJjaHIKLSAqIEBzZWUgdV9zdHJyc3RyCi0gKiBAc2VlIHVfc3RyRmlu
ZExhc3QKLSAqLwotVV9TVEFCTEUgVUNoYXIgKiBVX0VYUE9SVDIKLXVfc3RycmNocihjb25zdCBV
Q2hhciAqcywgVUNoYXIgYyk7Ci0KLS8qKgotICogRmluZCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9m
IGEgY29kZSBwb2ludCBpbiBhIHN0cmluZy4KLSAqIEEgc3Vycm9nYXRlIGNvZGUgcG9pbnQgaXMg
Zm91bmQgb25seSBpZiBpdHMgbWF0Y2ggaW4gdGhlIHRleHQgaXMgbm90Ci0gKiBwYXJ0IG9mIGEg
c3Vycm9nYXRlIHBhaXIuCi0gKiBBIE5VTCBjaGFyYWN0ZXIgaXMgZm91bmQgYXQgdGhlIHN0cmlu
ZyB0ZXJtaW5hdG9yLgotICoKLSAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChOVUwt
dGVybWluYXRlZCkuCi0gKiBAcGFyYW0gYyBUaGUgY29kZSBwb2ludCB0byBmaW5kLgotICogQHJl
dHVybiBBIHBvaW50ZXIgdG8gdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiA8Y29kZT5jPC9jb2RlPiBp
biA8Y29kZT5zPC9jb2RlPgotICogICAgICAgICBvciA8Y29kZT5OVUxMPC9jb2RlPiBpZiA8Y29k
ZT5jPC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+czwvY29kZT4uCi0gKiBAc3RhYmxlIElDVSAyLjQK
LSAqCi0gKiBAc2VlIHVfc3RycmNocgotICogQHNlZSB1X21lbWNocjMyCi0gKiBAc2VlIHVfc3Ry
cnN0cgotICogQHNlZSB1X3N0ckZpbmRMYXN0Ci0gKi8KLVVfU1RBQkxFIFVDaGFyICogVV9FWFBP
UlQyCi11X3N0cnJjaHIzMihjb25zdCBVQ2hhciAqcywgVUNoYXIzMiBjKTsKLQotLyoqCi0gKiBM
b2NhdGVzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIGluIHRoZSBzdHJpbmcgPGNvZGU+c3RyaW5nPC9j
b2RlPiBvZiBhbnkgb2YgdGhlIGNoYXJhY3RlcnMKLSAqIGluIHRoZSBzdHJpbmcgPGNvZGU+bWF0
Y2hTZXQ8L2NvZGU+LgotICogV29ya3MganVzdCBsaWtlIEMncyBzdHJwYnJrIGJ1dCB3aXRoIFVu
aWNvZGUuCi0gKgotICogQHBhcmFtIHN0cmluZyBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHNlYXJj
aCwgTlVMLXRlcm1pbmF0ZWQuCi0gKiBAcGFyYW0gbWF0Y2hTZXQgQSBOVUwtdGVybWluYXRlZCBz
dHJpbmcgZGVmaW5pbmcgYSBzZXQgb2YgY29kZSBwb2ludHMKLSAqICAgICAgICAgICAgICAgICBm
b3Igd2hpY2ggdG8gc2VhcmNoIGluIHRoZSB0ZXh0IHN0cmluZy4KLSAqIEByZXR1cm4gQSBwb2lu
dGVyIHRvIHRoZSAgY2hhcmFjdGVyIGluIDxjb2RlPnN0cmluZzwvY29kZT4gdGhhdCBtYXRjaGVz
IG9uZSBvZiB0aGUKLSAqICAgICAgICAgY2hhcmFjdGVycyBpbiA8Y29kZT5tYXRjaFNldDwvY29k
ZT4sIG9yIE5VTEwgaWYgbm8gc3VjaCBjaGFyYWN0ZXIgaXMgZm91bmQuCi0gKiBAc3RhYmxlIElD
VSAyLjAKLSAqLwotVV9TVEFCTEUgVUNoYXIgKiBVX0VYUE9SVDIKLXVfc3RycGJyayhjb25zdCBV
Q2hhciAqc3RyaW5nLCBjb25zdCBVQ2hhciAqbWF0Y2hTZXQpOwotCi0vKioKLSAqIFJldHVybnMg
dGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnN0cmluZzwvY29k
ZT4sCi0gKiBiZWdpbm5pbmcgd2l0aCB0aGUgZmlyc3QsIHRoYXQgZG8gbm90IG9jY3VyIHNvbWV3
aGVyZSBpbiA8Y29kZT5tYXRjaFNldDwvY29kZT4uCi0gKiBXb3JrcyBqdXN0IGxpa2UgQydzIHN0
cmNzcG4gYnV0IHdpdGggVW5pY29kZS4KLSAqCi0gKiBAcGFyYW0gc3RyaW5nIFRoZSBzdHJpbmcg
aW4gd2hpY2ggdG8gc2VhcmNoLCBOVUwtdGVybWluYXRlZC4KLSAqIEBwYXJhbSBtYXRjaFNldCBB
IE5VTC10ZXJtaW5hdGVkIHN0cmluZyBkZWZpbmluZyBhIHNldCBvZiBjb2RlIHBvaW50cwotICog
ICAgICAgICAgICAgICAgIGZvciB3aGljaCB0byBzZWFyY2ggaW4gdGhlIHRleHQgc3RyaW5nLgot
ICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGluaXRpYWwgY2hhcmFjdGVycyBpbiA8Y29kZT5zdHJp
bmc8L2NvZGU+IHRoYXQgZG8gbm90Ci0gKiAgICAgICAgIG9jY3VyIGluIDxjb2RlPm1hdGNoU2V0
PC9jb2RlPi4KLSAqIEBzZWUgdV9zdHJzcG4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NU
QUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdV9zdHJjc3BuKGNvbnN0IFVDaGFyICpzdHJpbmcsIGNv
bnN0IFVDaGFyICptYXRjaFNldCk7Ci0KLS8qKgotICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNv
bnNlY3V0aXZlIGNoYXJhY3RlcnMgaW4gPGNvZGU+c3RyaW5nPC9jb2RlPiwKLSAqIGJlZ2lubmlu
ZyB3aXRoIHRoZSBmaXJzdCwgdGhhdCBvY2N1ciBzb21ld2hlcmUgaW4gPGNvZGU+bWF0Y2hTZXQ8
L2NvZGU+LgotICogV29ya3MganVzdCBsaWtlIEMncyBzdHJzcG4gYnV0IHdpdGggVW5pY29kZS4K
LSAqCi0gKiBAcGFyYW0gc3RyaW5nIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gc2VhcmNoLCBOVUwt
dGVybWluYXRlZC4KLSAqIEBwYXJhbSBtYXRjaFNldCBBIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBk
ZWZpbmluZyBhIHNldCBvZiBjb2RlIHBvaW50cwotICogICAgICAgICAgICAgICAgIGZvciB3aGlj
aCB0byBzZWFyY2ggaW4gdGhlIHRleHQgc3RyaW5nLgotICogQHJldHVybiBUaGUgbnVtYmVyIG9m
IGluaXRpYWwgY2hhcmFjdGVycyBpbiA8Y29kZT5zdHJpbmc8L2NvZGU+IHRoYXQgZG8KLSAqICAg
ICAgICAgb2NjdXIgaW4gPGNvZGU+bWF0Y2hTZXQ8L2NvZGU+LgotICogQHNlZSB1X3N0cmNzcG4K
LSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdV9z
dHJzcG4oY29uc3QgVUNoYXIgKnN0cmluZywgY29uc3QgVUNoYXIgKm1hdGNoU2V0KTsKLQotLyoq
Ci0gKiBUaGUgc3RyaW5nIHRva2VuaXplciBBUEkgYWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIGJy
ZWFrIGEgc3RyaW5nIGludG8KLSAqIHRva2Vucy4gVW5saWtlIHN0cnRvaygpLCB0aGUgc2F2ZVN0
YXRlICh0aGUgY3VycmVudCBwb2ludGVyIHdpdGhpbiB0aGUKLSAqIG9yaWdpbmFsIHN0cmluZykg
aXMgbWFpbnRhaW5lZCBpbiBzYXZlU3RhdGUuIEluIHRoZSBmaXJzdCBjYWxsLCB0aGUKLSAqIGFy
Z3VtZW50IHNyYyBpcyBhIHBvaW50ZXIgdG8gdGhlIHN0cmluZy4gSW4gc3Vic2VxdWVudCBjYWxs
cyB0bwotICogcmV0dXJuIHN1Y2Nlc3NpdmUgdG9rZW5zIG9mIHRoYXQgc3RyaW5nLCBzcmMgbXVz
dCBiZSBzcGVjaWZpZWQgYXMKLSAqIE5VTEwuIFRoZSB2YWx1ZSBzYXZlU3RhdGUgaXMgc2V0IGJ5
IHRoaXMgZnVuY3Rpb24gdG8gbWFpbnRhaW4gdGhlCi0gKiBmdW5jdGlvbidzIHBvc2l0aW9uIHdp
dGhpbiB0aGUgc3RyaW5nLCBhbmQgb24gZWFjaCBzdWJzZXF1ZW50IGNhbGwKLSAqIHlvdSBtdXN0
IGdpdmUgdGhpcyBhcmd1bWVudCB0aGUgc2FtZSB2YXJpYWJsZS4gVGhpcyBmdW5jdGlvbiBkb2Vz
Ci0gKiBoYW5kbGUgc3Vycm9nYXRlIHBhaXJzLiBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8g
dGhlIHN0cnRva19yKCkKLSAqIHRoZSBQT1NJWCBUaHJlYWRzIEV4dGVuc2lvbiAoMTAwMy4xYy0x
OTk1KSB2ZXJzaW9uLgotICoKLSAqIEBwYXJhbSBzcmMgU3RyaW5nIGNvbnRhaW5pbmcgdG9rZW4o
cykuIFRoaXMgc3RyaW5nIHdpbGwgYmUgbW9kaWZpZWQuCi0gKiAgICAgICAgICAgIEFmdGVyIHRo
ZSBmaXJzdCBjYWxsIHRvIHVfc3RydG9rX3IoKSwgdGhpcyBhcmd1bWVudCBtdXN0Ci0gKiAgICAg
ICAgICAgIGJlIE5VTEwgdG8gZ2V0IHRvIHRoZSBuZXh0IHRva2VuLgotICogQHBhcmFtIGRlbGlt
IFNldCBvZiBkZWxpbWl0ZXIgY2hhcmFjdGVycyAoVW5pY29kZSBjb2RlIHBvaW50cykuCi0gKiBA
cGFyYW0gc2F2ZVN0YXRlIFRoZSBjdXJyZW50IHBvaW50ZXIgd2l0aGluIHRoZSBvcmlnaW5hbCBz
dHJpbmcsCi0gKiAgICAgICAgICAgICAgd2hpY2ggaXMgc2V0IGJ5IHRoaXMgZnVuY3Rpb24uIFRo
ZSBzYXZlU3RhdGUKLSAqICAgICAgICAgICAgICBwYXJhbWV0ZXIgc2hvdWxkIHRoZSBhZGRyZXNz
IG9mIGEgbG9jYWwgdmFyaWFibGUgb2YgdHlwZQotICogICAgICAgICAgICAgIFVDaGFyICouIChp
LmUuIGRlZmluZWQgIlVoYXIgKm15TG9jYWxTYXZlU3RhdGUiIGFuZCB1c2UKLSAqICAgICAgICAg
ICAgICAmbXlMb2NhbFNhdmVTdGF0ZSBmb3IgdGhpcyBwYXJhbWV0ZXIpLgotICogQHJldHVybiBB
IHBvaW50ZXIgdG8gdGhlIG5leHQgdG9rZW4gZm91bmQgaW4gc3JjLCBvciBOVUxMCi0gKiAgICAg
ICAgIHdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgdG9rZW5zLgotICogQHN0YWJsZSBJQ1UgMi4wCi0g
Ki8KLVVfU1RBQkxFIFVDaGFyICogVV9FWFBPUlQyCi11X3N0cnRva19yKFVDaGFyICAgICpzcmMs
IAotICAgICBjb25zdCBVQ2hhciAgICAqZGVsaW0sCi0gICAgICAgICAgIFVDaGFyICAgKipzYXZl
U3RhdGUpOwotCi0vKioKLSAqIENvbXBhcmUgdHdvIFVuaWNvZGUgc3RyaW5ncyBmb3IgYml0d2lz
ZSBlcXVhbGl0eSAoY29kZSB1bml0IG9yZGVyKS4KLSAqCi0gKiBAcGFyYW0gczEgQSBzdHJpbmcg
dG8gY29tcGFyZS4KLSAqIEBwYXJhbSBzMiBBIHN0cmluZyB0byBjb21wYXJlLgotICogQHJldHVy
biAwIGlmIDxjb2RlPnMxPC9jb2RlPiBhbmQgPGNvZGU+czI8L2NvZGU+IGFyZSBiaXR3aXNlIGVx
dWFsOyBhIG5lZ2F0aXZlCi0gKiB2YWx1ZSBpZiA8Y29kZT5zMTwvY29kZT4gaXMgYml0d2lzZSBs
ZXNzIHRoYW4gPGNvZGU+czIsPC9jb2RlPjsgYSBwb3NpdGl2ZQotICogdmFsdWUgaWYgPGNvZGU+
czE8L2NvZGU+IGlzIGJpdHdpc2UgZ3JlYXRlciB0aGFuIDxjb2RlPnMyPC9jb2RlPi4KLSAqIEBz
dGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90ICBVX0VYUE9SVDIKLXVfc3RyY21w
KGNvbnN0IFVDaGFyICAgICAqczEsIAotICAgICAgICAgY29uc3QgVUNoYXIgICAgICpzMik7Ci0K
LS8qKgotICogQ29tcGFyZSB0d28gVW5pY29kZSBzdHJpbmdzIGluIGNvZGUgcG9pbnQgb3JkZXIu
Ci0gKiBTZWUgdV9zdHJDb21wYXJlIGZvciBkZXRhaWxzLgotICoKLSAqIEBwYXJhbSBzMSBBIHN0
cmluZyB0byBjb21wYXJlLgotICogQHBhcmFtIHMyIEEgc3RyaW5nIHRvIGNvbXBhcmUuCi0gKiBA
cmV0dXJuIGEgbmVnYXRpdmUvemVyby9wb3NpdGl2ZSBpbnRlZ2VyIGNvcnJlc3BvbmRpbmcgdG8g
d2hldGhlcgotICogdGhlIGZpcnN0IHN0cmluZyBpcyBsZXNzIHRoYW4vZXF1YWwgdG8vZ3JlYXRl
ciB0aGFuIHRoZSBzZWNvbmQgb25lCi0gKiBpbiBjb2RlIHBvaW50IG9yZGVyCi0gKiBAc3RhYmxl
IElDVSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVfc3RyY21wQ29kZVBv
aW50T3JkZXIoY29uc3QgVUNoYXIgKnMxLCBjb25zdCBVQ2hhciAqczIpOwotCi0vKioKLSAqIENv
bXBhcmUgdHdvIFVuaWNvZGUgc3RyaW5ncyAoYmluYXJ5IG9yZGVyKS4KLSAqCi0gKiBUaGUgY29t
cGFyaXNvbiBjYW4gYmUgZG9uZSBpbiBjb2RlIHVuaXQgb3JkZXIgb3IgaW4gY29kZSBwb2ludCBv
cmRlci4KLSAqIFRoZXkgZGlmZmVyIG9ubHkgaW4gVVRGLTE2IHdoZW4KLSAqIGNvbXBhcmluZyBz
dXBwbGVtZW50YXJ5IGNvZGUgcG9pbnRzIChVKzEwMDAwLi5VKzEwZmZmZikKLSAqIHRvIEJNUCBj
b2RlIHBvaW50cyBuZWFyIHRoZSBlbmQgb2YgdGhlIEJNUCAoaS5lLiwgVStlMDAwLi5VK2ZmZmYp
LgotICogSW4gY29kZSB1bml0IG9yZGVyLCBoaWdoIEJNUCBjb2RlIHBvaW50cyBzb3J0IGFmdGVy
IHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMKLSAqIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkIGFz
IHBhaXJzIG9mIHN1cnJvZ2F0ZXMgd2hpY2ggYXJlIGF0IFUrZDgwMC4uVStkZmZmLgotICoKLSAq
IFRoaXMgZnVuY3Rpb25zIHdvcmtzIHdpdGggc3RyaW5ncyBvZiBkaWZmZXJlbnQgZXhwbGljaXRs
eSBzcGVjaWZpZWQgbGVuZ3RocwotICogdW5saWtlIHRoZSBBTlNJIEMtbGlrZSB1X3N0cmNtcCgp
IGFuZCB1X21lbWNtcCgpIGV0Yy4KLSAqIE5VTC10ZXJtaW5hdGVkIHN0cmluZ3MgYXJlIHBvc3Np
YmxlIHdpdGggbGVuZ3RoIGFyZ3VtZW50cyBvZiAtMS4KLSAqCi0gKiBAcGFyYW0gczEgRmlyc3Qg
c291cmNlIHN0cmluZy4KLSAqIEBwYXJhbSBsZW5ndGgxIExlbmd0aCBvZiBmaXJzdCBzb3VyY2Ug
c3RyaW5nLCBvciAtMSBpZiBOVUwtdGVybWluYXRlZC4KLSAqCi0gKiBAcGFyYW0gczIgU2Vjb25k
IHNvdXJjZSBzdHJpbmcuCi0gKiBAcGFyYW0gbGVuZ3RoMiBMZW5ndGggb2Ygc2Vjb25kIHNvdXJj
ZSBzdHJpbmcsIG9yIC0xIGlmIE5VTC10ZXJtaW5hdGVkLgotICoKLSAqIEBwYXJhbSBjb2RlUG9p
bnRPcmRlciBDaG9vc2UgYmV0d2VlbiBjb2RlIHVuaXQgb3JkZXIgKEZBTFNFKQotICogICAgICAg
ICAgICAgICAgICAgICAgIGFuZCBjb2RlIHBvaW50IG9yZGVyIChUUlVFKS4KLSAqCi0gKiBAcmV0
dXJuIDwwIG9yIDAgb3IgPjAgYXMgdXN1YWwgZm9yIHN0cmluZyBjb21wYXJpc29ucwotICoKLSAq
IEBzdGFibGUgSUNVIDIuMgotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdV9zdHJD
b21wYXJlKGNvbnN0IFVDaGFyICpzMSwgaW50MzJfdCBsZW5ndGgxLAotICAgICAgICAgICAgIGNv
bnN0IFVDaGFyICpzMiwgaW50MzJfdCBsZW5ndGgyLAotICAgICAgICAgICAgIFVCb29sIGNvZGVQ
b2ludE9yZGVyKTsKLQotLyoqCi0gKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgKGJpbmFy
eSBvcmRlcikKLSAqIGFzIHByZXNlbnRlZCBieSBVQ2hhckl0ZXJhdG9yIG9iamVjdHMuCi0gKiBX
b3JrcyBvdGhlcndpc2UganVzdCBsaWtlIHVfc3RyQ29tcGFyZSgpLgotICoKLSAqIEJvdGggaXRl
cmF0b3JzIGFyZSByZXNldCB0byB0aGVpciBzdGFydCBwb3NpdGlvbnMuCi0gKiBXaGVuIHRoZSBm
dW5jdGlvbiByZXR1cm5zLCBpdCBpcyB1bmRlZmluZWQgd2hlcmUgdGhlIGl0ZXJhdG9ycwotICog
aGF2ZSBzdG9wcGVkLgotICoKLSAqIEBwYXJhbSBpdGVyMSBGaXJzdCBzb3VyY2Ugc3RyaW5nIGl0
ZXJhdG9yLgotICogQHBhcmFtIGl0ZXIyIFNlY29uZCBzb3VyY2Ugc3RyaW5nIGl0ZXJhdG9yLgot
ICogQHBhcmFtIGNvZGVQb2ludE9yZGVyIENob29zZSBiZXR3ZWVuIGNvZGUgdW5pdCBvcmRlciAo
RkFMU0UpCi0gKiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNvZGUgcG9pbnQgb3JkZXIgKFRS
VUUpLgotICoKLSAqIEByZXR1cm4gPDAgb3IgMCBvciA+MCBhcyB1c3VhbCBmb3Igc3RyaW5nIGNv
bXBhcmlzb25zCi0gKgotICogQHNlZSB1X3N0ckNvbXBhcmUKLSAqCi0gKiBAc3RhYmxlIElDVSAy
LjYKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVfc3RyQ29tcGFyZUl0ZXIoVUNo
YXJJdGVyYXRvciAqaXRlcjEsIFVDaGFySXRlcmF0b3IgKml0ZXIyLCBVQm9vbCBjb2RlUG9pbnRP
cmRlcik7Ci0KLSNpZm5kZWYgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKLS8qIHNlZSBhbHNv
IHVuaXN0ci5oIGFuZCB1bm9ybS5oICovCi0vKioKLSAqIE9wdGlvbiBiaXQgZm9yIHVfc3RyQ2Fz
ZUNvbXBhcmUsIHVfc3RyY2FzZWNtcCwgdW5vcm1fY29tcGFyZSwgZXRjOgotICogQ29tcGFyZSBz
dHJpbmdzIGluIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBjb2RlIHVuaXQgb3JkZXIuCi0g
KiBAc3RhYmxlIElDVSAyLjIKLSAqLwotI2RlZmluZSBVX0NPTVBBUkVfQ09ERV9QT0lOVF9PUkRF
UiAgMHg4MDAwCi0jZW5kaWYKLQotLyoqCi0gKiBDb21wYXJlIHR3byBzdHJpbmdzIGNhc2UtaW5z
ZW5zaXRpdmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KLSAqIFRoaXMgaXMgZXF1aXZhbGVu
dCB0bwotICogICB1X3N0ckNvbXBhcmUodV9zdHJGb2xkQ2FzZShzMSwgb3B0aW9ucyksCi0gKiAg
ICAgICAgICAgICAgICB1X3N0ckZvbGRDYXNlKHMyLCBvcHRpb25zKSwKLSAqICAgICAgICAgICAg
ICAgIChvcHRpb25zJlVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSKSE9MCkuCi0gKgotICogVGhl
IGNvbXBhcmlzb24gY2FuIGJlIGRvbmUgaW4gVVRGLTE2IGNvZGUgdW5pdCBvcmRlciBvciBpbiBj
b2RlIHBvaW50IG9yZGVyLgotICogVGhleSBkaWZmZXIgb25seSB3aGVuIGNvbXBhcmluZyBzdXBw
bGVtZW50YXJ5IGNvZGUgcG9pbnRzIChVKzEwMDAwLi5VKzEwZmZmZikKLSAqIHRvIEJNUCBjb2Rl
IHBvaW50cyBuZWFyIHRoZSBlbmQgb2YgdGhlIEJNUCAoaS5lLiwgVStlMDAwLi5VK2ZmZmYpLgot
ICogSW4gY29kZSB1bml0IG9yZGVyLCBoaWdoIEJNUCBjb2RlIHBvaW50cyBzb3J0IGFmdGVyIHN1
cHBsZW1lbnRhcnkgY29kZSBwb2ludHMKLSAqIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkIGFzIHBh
aXJzIG9mIHN1cnJvZ2F0ZXMgd2hpY2ggYXJlIGF0IFUrZDgwMC4uVStkZmZmLgotICoKLSAqIFRo
aXMgZnVuY3Rpb25zIHdvcmtzIHdpdGggc3RyaW5ncyBvZiBkaWZmZXJlbnQgZXhwbGljaXRseSBz
cGVjaWZpZWQgbGVuZ3RocwotICogdW5saWtlIHRoZSBBTlNJIEMtbGlrZSB1X3N0cmNtcCgpIGFu
ZCB1X21lbWNtcCgpIGV0Yy4KLSAqIE5VTC10ZXJtaW5hdGVkIHN0cmluZ3MgYXJlIHBvc3NpYmxl
IHdpdGggbGVuZ3RoIGFyZ3VtZW50cyBvZiAtMS4KLSAqCi0gKiBAcGFyYW0gczEgRmlyc3Qgc291
cmNlIHN0cmluZy4KLSAqIEBwYXJhbSBsZW5ndGgxIExlbmd0aCBvZiBmaXJzdCBzb3VyY2Ugc3Ry
aW5nLCBvciAtMSBpZiBOVUwtdGVybWluYXRlZC4KLSAqCi0gKiBAcGFyYW0gczIgU2Vjb25kIHNv
dXJjZSBzdHJpbmcuCi0gKiBAcGFyYW0gbGVuZ3RoMiBMZW5ndGggb2Ygc2Vjb25kIHNvdXJjZSBz
dHJpbmcsIG9yIC0xIGlmIE5VTC10ZXJtaW5hdGVkLgotICoKLSAqIEBwYXJhbSBvcHRpb25zIEEg
Yml0IHNldCBvZiBvcHRpb25zOgotICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1
c2VkIGZvciBkZWZhdWx0IG9wdGlvbnM6Ci0gKiAgICAgQ29tcGFyaXNvbiBpbiBjb2RlIHVuaXQg
b3JkZXIgd2l0aCBkZWZhdWx0IGNhc2UgZm9sZGluZy4KLSAqCi0gKiAgIC0gVV9DT01QQVJFX0NP
REVfUE9JTlRfT1JERVIKLSAqICAgICBTZXQgdG8gY2hvb3NlIGNvZGUgcG9pbnQgb3JkZXIgaW5z
dGVhZCBvZiBjb2RlIHVuaXQgb3JkZXIKLSAqICAgICAoc2VlIHVfc3RyQ29tcGFyZSBmb3IgZGV0
YWlscykuCi0gKgotICogICAtIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCi0gKgotICog
QHBhcmFtIHBFcnJvckNvZGUgTXVzdCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYW4gZXJyb3IgY29k
ZSB2YWx1ZSwKLSAqICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBm
YWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KLSAqCi0gKiBAcmV0dXJuIDwwIG9yIDAg
b3IgPjAgYXMgdXN1YWwgZm9yIHN0cmluZyBjb21wYXJpc29ucwotICoKLSAqIEBzdGFibGUgSUNV
IDIuMgotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdV9zdHJDYXNlQ29tcGFyZShj
b25zdCBVQ2hhciAqczEsIGludDMyX3QgbGVuZ3RoMSwKLSAgICAgICAgICAgICAgICAgY29uc3Qg
VUNoYXIgKnMyLCBpbnQzMl90IGxlbmd0aDIsCi0gICAgICAgICAgICAgICAgIHVpbnQzMl90IG9w
dGlvbnMsCi0gICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwotCi0vKioK
LSAqIENvbXBhcmUgdHdvIHVzdHJpbmdzIGZvciBiaXR3aXNlIGVxdWFsaXR5LiAKLSAqIENvbXBh
cmVzIGF0IG1vc3QgPGNvZGU+bjwvY29kZT4gY2hhcmFjdGVycy4KLSAqCi0gKiBAcGFyYW0gdWNz
MSBBIHN0cmluZyB0byBjb21wYXJlLgotICogQHBhcmFtIHVjczIgQSBzdHJpbmcgdG8gY29tcGFy
ZS4KLSAqIEBwYXJhbSBuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGNvbXBh
cmUuCi0gKiBAcmV0dXJuIDAgaWYgPGNvZGU+czE8L2NvZGU+IGFuZCA8Y29kZT5zMjwvY29kZT4g
YXJlIGJpdHdpc2UgZXF1YWw7IGEgbmVnYXRpdmUKLSAqIHZhbHVlIGlmIDxjb2RlPnMxPC9jb2Rl
PiBpcyBiaXR3aXNlIGxlc3MgdGhhbiA8Y29kZT5zMjwvY29kZT47IGEgcG9zaXRpdmUKLSAqIHZh
bHVlIGlmIDxjb2RlPnMxPC9jb2RlPiBpcyBiaXR3aXNlIGdyZWF0ZXIgdGhhbiA8Y29kZT5zMjwv
Y29kZT4uCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9S
VDIKLXVfc3RybmNtcChjb25zdCBVQ2hhciAgICAgKnVjczEsIAotICAgICBjb25zdCBVQ2hhciAg
ICAgKnVjczIsIAotICAgICBpbnQzMl90ICAgICBuKTsKLQotLyoqCi0gKiBDb21wYXJlIHR3byBV
bmljb2RlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KLSAqIFRoaXMgaXMgZGlmZmVyZW50
IGluIFVURi0xNiBmcm9tIHVfc3RybmNtcCgpIGlmIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyBh
cmUgcHJlc2VudC4KLSAqIEZvciBkZXRhaWxzLCBzZWUgdV9zdHJDb21wYXJlKCkuCi0gKgotICog
QHBhcmFtIHMxIEEgc3RyaW5nIHRvIGNvbXBhcmUuCi0gKiBAcGFyYW0gczIgQSBzdHJpbmcgdG8g
Y29tcGFyZS4KLSAqIEBwYXJhbSBuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRv
IGNvbXBhcmUuCi0gKiBAcmV0dXJuIGEgbmVnYXRpdmUvemVyby9wb3NpdGl2ZSBpbnRlZ2VyIGNv
cnJlc3BvbmRpbmcgdG8gd2hldGhlcgotICogdGhlIGZpcnN0IHN0cmluZyBpcyBsZXNzIHRoYW4v
ZXF1YWwgdG8vZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQgb25lCi0gKiBpbiBjb2RlIHBvaW50IG9y
ZGVyCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIK
LXVfc3RybmNtcENvZGVQb2ludE9yZGVyKGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMy
LCBpbnQzMl90IG4pOwotCi0vKioKLSAqIENvbXBhcmUgdHdvIHN0cmluZ3MgY2FzZS1pbnNlbnNp
dGl2ZWx5IHVzaW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgotICogVGhpcyBpcyBlcXVpdmFsZW50IHRv
IHVfc3RyY21wKHVfc3RyRm9sZENhc2UoczEsIG9wdGlvbnMpLCB1X3N0ckZvbGRDYXNlKHMyLCBv
cHRpb25zKSkuCi0gKgotICogQHBhcmFtIHMxIEEgc3RyaW5nIHRvIGNvbXBhcmUuCi0gKiBAcGFy
YW0gczIgQSBzdHJpbmcgdG8gY29tcGFyZS4KLSAqIEBwYXJhbSBvcHRpb25zIEEgYml0IHNldCBv
ZiBvcHRpb25zOgotICogICAtIFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBk
ZWZhdWx0IG9wdGlvbnM6Ci0gKiAgICAgQ29tcGFyaXNvbiBpbiBjb2RlIHVuaXQgb3JkZXIgd2l0
aCBkZWZhdWx0IGNhc2UgZm9sZGluZy4KLSAqCi0gKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRf
T1JERVIKLSAqICAgICBTZXQgdG8gY2hvb3NlIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBj
b2RlIHVuaXQgb3JkZXIKLSAqICAgICAoc2VlIHVfc3RyQ29tcGFyZSBmb3IgZGV0YWlscykuCi0g
KgotICogICAtIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCi0gKgotICogQHJldHVybiBB
IG5lZ2F0aXZlLCB6ZXJvLCBvciBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNvbXBh
cmlzb24gcmVzdWx0LgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIGludDMyX3Qg
VV9FWFBPUlQyCi11X3N0cmNhc2VjbXAoY29uc3QgVUNoYXIgKnMxLCBjb25zdCBVQ2hhciAqczIs
IHVpbnQzMl90IG9wdGlvbnMpOwotCi0vKioKLSAqIENvbXBhcmUgdHdvIHN0cmluZ3MgY2FzZS1p
bnNlbnNpdGl2ZWx5IHVzaW5nIGZ1bGwgY2FzZSBmb2xkaW5nLgotICogVGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHVfc3RyY21wKHVfc3RyRm9sZENhc2UoczEsIGF0IG1vc3Qgbiwgb3B0aW9ucyksCi0g
KiB1X3N0ckZvbGRDYXNlKHMyLCBhdCBtb3N0IG4sIG9wdGlvbnMpKS4KLSAqCi0gKiBAcGFyYW0g
czEgQSBzdHJpbmcgdG8gY29tcGFyZS4KLSAqIEBwYXJhbSBzMiBBIHN0cmluZyB0byBjb21wYXJl
LgotICogQHBhcmFtIG4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgZWFjaCBzdHJp
bmcgdG8gY2FzZS1mb2xkIGFuZCB0aGVuIGNvbXBhcmUuCi0gKiBAcGFyYW0gb3B0aW9ucyBBIGJp
dCBzZXQgb2Ygb3B0aW9uczoKLSAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNl
ZCBmb3IgZGVmYXVsdCBvcHRpb25zOgotICogICAgIENvbXBhcmlzb24gaW4gY29kZSB1bml0IG9y
ZGVyIHdpdGggZGVmYXVsdCBjYXNlIGZvbGRpbmcuCi0gKgotICogICAtIFVfQ09NUEFSRV9DT0RF
X1BPSU5UX09SREVSCi0gKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50IG9yZGVyIGluc3Rl
YWQgb2YgY29kZSB1bml0IG9yZGVyCi0gKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFp
bHMpLgotICoKLSAqICAgLSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQotICoKLSAqIEBy
ZXR1cm4gQSBuZWdhdGl2ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRpY2F0aW5nIHRo
ZSBjb21wYXJpc29uIHJlc3VsdC4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBp
bnQzMl90IFVfRVhQT1JUMgotdV9zdHJuY2FzZWNtcChjb25zdCBVQ2hhciAqczEsIGNvbnN0IFVD
aGFyICpzMiwgaW50MzJfdCBuLCB1aW50MzJfdCBvcHRpb25zKTsKLQotLyoqCi0gKiBDb21wYXJl
IHR3byBzdHJpbmdzIGNhc2UtaW5zZW5zaXRpdmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4K
LSAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byB1X3N0cmNtcCh1X3N0ckZvbGRDYXNlKHMxLCBuLCBv
cHRpb25zKSwKLSAqIHVfc3RyRm9sZENhc2UoczIsIG4sIG9wdGlvbnMpKS4KLSAqCi0gKiBAcGFy
YW0gczEgQSBzdHJpbmcgdG8gY29tcGFyZS4KLSAqIEBwYXJhbSBzMiBBIHN0cmluZyB0byBjb21w
YXJlLgotICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gZWFjaCBz
dHJpbmcgdG8gY2FzZS1mb2xkIGFuZCB0aGVuIGNvbXBhcmUuCi0gKiBAcGFyYW0gb3B0aW9ucyBB
IGJpdCBzZXQgb2Ygb3B0aW9uczoKLSAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMg
dXNlZCBmb3IgZGVmYXVsdCBvcHRpb25zOgotICogICAgIENvbXBhcmlzb24gaW4gY29kZSB1bml0
IG9yZGVyIHdpdGggZGVmYXVsdCBjYXNlIGZvbGRpbmcuCi0gKgotICogICAtIFVfQ09NUEFSRV9D
T0RFX1BPSU5UX09SREVSCi0gKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50IG9yZGVyIGlu
c3RlYWQgb2YgY29kZSB1bml0IG9yZGVyCi0gKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRl
dGFpbHMpLgotICoKLSAqICAgLSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQotICoKLSAq
IEByZXR1cm4gQSBuZWdhdGl2ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRpY2F0aW5n
IHRoZSBjb21wYXJpc29uIHJlc3VsdC4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJM
RSBpbnQzMl90IFVfRVhQT1JUMgotdV9tZW1jYXNlY21wKGNvbnN0IFVDaGFyICpzMSwgY29uc3Qg
VUNoYXIgKnMyLCBpbnQzMl90IGxlbmd0aCwgdWludDMyX3Qgb3B0aW9ucyk7Ci0KLS8qKgotICog
Q29weSBhIHVzdHJpbmcuIEFkZHMgYSBudWxsIHRlcm1pbmF0b3IuCi0gKgotICogQHBhcmFtIGRz
dCBUaGUgZGVzdGluYXRpb24gc3RyaW5nLgotICogQHBhcmFtIHNyYyBUaGUgc291cmNlIHN0cmlu
Zy4KLSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwvY29kZT4uCi0gKiBAc3RhYmxl
IElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgotdV9zdHJjcHkoVUNoYXIg
ICAgICpkc3QsIAotICAgIGNvbnN0IFVDaGFyICAgICAqc3JjKTsKLQotLyoqCi0gKiBDb3B5IGEg
dXN0cmluZy4KLSAqIENvcGllcyBhdCBtb3N0IDxjb2RlPm48L2NvZGU+IGNoYXJhY3RlcnMuICBU
aGUgcmVzdWx0IHdpbGwgYmUgbnVsbCB0ZXJtaW5hdGVkCi0gKiBpZiB0aGUgbGVuZ3RoIG9mIDxj
b2RlPnNyYzwvY29kZT4gaXMgbGVzcyB0aGFuIDxjb2RlPm48L2NvZGU+LgotICoKLSAqIEBwYXJh
bSBkc3QgVGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KLSAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSBz
dHJpbmcuCi0gKiBAcGFyYW0gbiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBj
b3B5LgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gPGNvZGU+ZHN0PC9jb2RlPi4KLSAqIEBzdGFi
bGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQ2hhciogVV9FWFBPUlQyCi11X3N0cm5jcHkoVUNo
YXIgICAgICpkc3QsIAotICAgICBjb25zdCBVQ2hhciAgICAgKnNyYywgCi0gICAgIGludDMyX3Qg
ICAgIG4pOwotCi0jaWYgIVVDT05GSUdfTk9fQ09OVkVSU0lPTgotCi0vKioKLSAqIENvcHkgYSBi
eXRlIHN0cmluZyBlbmNvZGVkIGluIHRoZSBkZWZhdWx0IGNvZGVwYWdlIHRvIGEgdXN0cmluZy4K
LSAqIEFkZHMgYSBudWxsIHRlcm1pbmF0b3IuCi0gKiBQZXJmb3JtcyBhIGhvc3QgYnl0ZSB0byBV
Q2hhciBjb252ZXJzaW9uCi0gKgotICogQHBhcmFtIGRzdCBUaGUgZGVzdGluYXRpb24gc3RyaW5n
LgotICogQHBhcmFtIHNyYyBUaGUgc291cmNlIHN0cmluZy4KLSAqIEByZXR1cm4gQSBwb2ludGVy
IHRvIDxjb2RlPmRzdDwvY29kZT4uCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUg
VUNoYXIqIFVfRVhQT1JUMiB1X3Vhc3RyY3B5KFVDaGFyICpkc3QsCi0gICAgICAgICAgICAgICBj
b25zdCBjaGFyICpzcmMgKTsKLQotLyoqCi0gKiBDb3B5IGEgYnl0ZSBzdHJpbmcgZW5jb2RlZCBp
biB0aGUgZGVmYXVsdCBjb2RlcGFnZSB0byBhIHVzdHJpbmcuCi0gKiBDb3BpZXMgYXQgbW9zdCA8
Y29kZT5uPC9jb2RlPiBjaGFyYWN0ZXJzLiAgVGhlIHJlc3VsdCB3aWxsIGJlIG51bGwgdGVybWlu
YXRlZAotICogaWYgdGhlIGxlbmd0aCBvZiA8Y29kZT5zcmM8L2NvZGU+IGlzIGxlc3MgdGhhbiA8
Y29kZT5uPC9jb2RlPi4KLSAqIFBlcmZvcm1zIGEgaG9zdCBieXRlIHRvIFVDaGFyIGNvbnZlcnNp
b24KLSAqCi0gKiBAcGFyYW0gZHN0IFRoZSBkZXN0aW5hdGlvbiBzdHJpbmcuCi0gKiBAcGFyYW0g
c3JjIFRoZSBzb3VyY2Ugc3RyaW5nLgotICogQHBhcmFtIG4gVGhlIG1heGltdW0gbnVtYmVyIG9m
IGNoYXJhY3RlcnMgdG8gY29weS4KLSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwv
Y29kZT4uCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JU
MiB1X3Vhc3RybmNweShVQ2hhciAqZHN0LAotICAgICAgICAgICAgY29uc3QgY2hhciAqc3JjLAot
ICAgICAgICAgICAgaW50MzJfdCBuKTsKLQotLyoqCi0gKiBDb3B5IHVzdHJpbmcgdG8gYSBieXRl
IHN0cmluZyBlbmNvZGVkIGluIHRoZSBkZWZhdWx0IGNvZGVwYWdlLgotICogQWRkcyBhIG51bGwg
dGVybWluYXRvci4KLSAqIFBlcmZvcm1zIGEgVUNoYXIgdG8gaG9zdCBieXRlIGNvbnZlcnNpb24K
LSAqCi0gKiBAcGFyYW0gZHN0IFRoZSBkZXN0aW5hdGlvbiBzdHJpbmcuCi0gKiBAcGFyYW0gc3Jj
IFRoZSBzb3VyY2Ugc3RyaW5nLgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gPGNvZGU+ZHN0PC9j
b2RlPi4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBjaGFyKiBVX0VYUE9SVDIg
dV9hdXN0cmNweShjaGFyICpkc3QsCi0gICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjICk7Ci0K
LS8qKgotICogQ29weSB1c3RyaW5nIHRvIGEgYnl0ZSBzdHJpbmcgZW5jb2RlZCBpbiB0aGUgZGVm
YXVsdCBjb2RlcGFnZS4KLSAqIENvcGllcyBhdCBtb3N0IDxjb2RlPm48L2NvZGU+IGNoYXJhY3Rl
cnMuICBUaGUgcmVzdWx0IHdpbGwgYmUgbnVsbCB0ZXJtaW5hdGVkCi0gKiBpZiB0aGUgbGVuZ3Ro
IG9mIDxjb2RlPnNyYzwvY29kZT4gaXMgbGVzcyB0aGFuIDxjb2RlPm48L2NvZGU+LgotICogUGVy
Zm9ybXMgYSBVQ2hhciB0byBob3N0IGJ5dGUgY29udmVyc2lvbgotICoKLSAqIEBwYXJhbSBkc3Qg
VGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KLSAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSBzdHJpbmcu
Ci0gKiBAcGFyYW0gbiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb3B5Lgot
ICogQHJldHVybiBBIHBvaW50ZXIgdG8gPGNvZGU+ZHN0PC9jb2RlPi4KLSAqIEBzdGFibGUgSUNV
IDIuMAotICovCi1VX1NUQUJMRSBjaGFyKiBVX0VYUE9SVDIgdV9hdXN0cm5jcHkoY2hhciAqZHN0
LAotICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywKLSAgICAgICAgICAgIGludDMyX3QgbiAp
OwotCi0jZW5kaWYKLQotLyoqCi0gKiBTeW5vbnltIGZvciBtZW1jcHkoKSwgYnV0IHdpdGggVUNo
YXJzIG9ubHkuCi0gKiBAcGFyYW0gZGVzdCBUaGUgZGVzdGluYXRpb24gc3RyaW5nCi0gKiBAcGFy
YW0gc3JjIFRoZSBzb3VyY2Ugc3RyaW5nCi0gKiBAcGFyYW0gY291bnQgVGhlIG51bWJlciBvZiBj
aGFyYWN0ZXJzIHRvIGNvcHkKLSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRlc3Q8L2Nv
ZGU+Ci0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgot
dV9tZW1jcHkoVUNoYXIgKmRlc3QsIGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3QgY291bnQpOwot
Ci0vKioKLSAqIFN5bm9ueW0gZm9yIG1lbW1vdmUoKSwgYnV0IHdpdGggVUNoYXJzIG9ubHkuCi0g
KiBAcGFyYW0gZGVzdCBUaGUgZGVzdGluYXRpb24gc3RyaW5nCi0gKiBAcGFyYW0gc3JjIFRoZSBz
b3VyY2Ugc3RyaW5nCi0gKiBAcGFyYW0gY291bnQgVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRv
IG1vdmUKLSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRlc3Q8L2NvZGU+Ci0gKiBAc3Rh
YmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgotdV9tZW1tb3ZlKFVD
aGFyICpkZXN0LCBjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IGNvdW50KTsKLQotLyoqCi0gKiBJ
bml0aWFsaXplIDxjb2RlPmNvdW50PC9jb2RlPiBjaGFyYWN0ZXJzIG9mIDxjb2RlPmRlc3Q8L2Nv
ZGU+IHRvIDxjb2RlPmM8L2NvZGU+LgotICoKLSAqIEBwYXJhbSBkZXN0IFRoZSBkZXN0aW5hdGlv
biBzdHJpbmcuCi0gKiBAcGFyYW0gYyBUaGUgY2hhcmFjdGVyIHRvIGluaXRpYWxpemUgdGhlIHN0
cmluZy4KLSAqIEBwYXJhbSBjb3VudCBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0
byBzZXQuCi0gKiBAcmV0dXJuIEEgcG9pbnRlciB0byA8Y29kZT5kZXN0PC9jb2RlPi4KLSAqIEBz
dGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBVQ2hhciogVV9FWFBPUlQyCi11X21lbXNldChV
Q2hhciAqZGVzdCwgVUNoYXIgYywgaW50MzJfdCBjb3VudCk7Ci0KLS8qKgotICogQ29tcGFyZSB0
aGUgZmlyc3QgPGNvZGU+Y291bnQ8L2NvZGU+IFVDaGFycyBvZiBlYWNoIGJ1ZmZlci4KLSAqCi0g
KiBAcGFyYW0gYnVmMSBUaGUgZmlyc3Qgc3RyaW5nIHRvIGNvbXBhcmUuCi0gKiBAcGFyYW0gYnVm
MiBUaGUgc2Vjb25kIHN0cmluZyB0byBjb21wYXJlLgotICogQHBhcmFtIGNvdW50IFRoZSBtYXhp
bXVtIG51bWJlciBvZiBVQ2hhcnMgdG8gY29tcGFyZS4KLSAqIEByZXR1cm4gV2hlbiBidWYxIDwg
YnVmMiwgYSBuZWdhdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQuCi0gKiAgICAgIFdoZW4gYnVmMSA9
PSBidWYyLCAwIGlzIHJldHVybmVkLgotICogICAgICBXaGVuIGJ1ZjEgPiBidWYyLCBhIHBvc2l0
aXZlIG51bWJlciBpcyByZXR1cm5lZC4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJM
RSBpbnQzMl90IFVfRVhQT1JUMgotdV9tZW1jbXAoY29uc3QgVUNoYXIgKmJ1ZjEsIGNvbnN0IFVD
aGFyICpidWYyLCBpbnQzMl90IGNvdW50KTsKLQotLyoqCi0gKiBDb21wYXJlIHR3byBVbmljb2Rl
IHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlci4KLSAqIFRoaXMgaXMgZGlmZmVyZW50IGluIFVU
Ri0xNiBmcm9tIHVfbWVtY21wKCkgaWYgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSBwcmVz
ZW50LgotICogRm9yIGRldGFpbHMsIHNlZSB1X3N0ckNvbXBhcmUoKS4KLSAqCi0gKiBAcGFyYW0g
czEgQSBzdHJpbmcgdG8gY29tcGFyZS4KLSAqIEBwYXJhbSBzMiBBIHN0cmluZyB0byBjb21wYXJl
LgotICogQHBhcmFtIGNvdW50IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGNv
bXBhcmUuCi0gKiBAcmV0dXJuIGEgbmVnYXRpdmUvemVyby9wb3NpdGl2ZSBpbnRlZ2VyIGNvcnJl
c3BvbmRpbmcgdG8gd2hldGhlcgotICogdGhlIGZpcnN0IHN0cmluZyBpcyBsZXNzIHRoYW4vZXF1
YWwgdG8vZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQgb25lCi0gKiBpbiBjb2RlIHBvaW50IG9yZGVy
Ci0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVf
bWVtY21wQ29kZVBvaW50T3JkZXIoY29uc3QgVUNoYXIgKnMxLCBjb25zdCBVQ2hhciAqczIsIGlu
dDMyX3QgY291bnQpOwotCi0vKioKLSAqIEZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBC
TVAgY29kZSBwb2ludCBpbiBhIHN0cmluZy4KLSAqIEEgc3Vycm9nYXRlIGNvZGUgcG9pbnQgaXMg
Zm91bmQgb25seSBpZiBpdHMgbWF0Y2ggaW4gdGhlIHRleHQgaXMgbm90Ci0gKiBwYXJ0IG9mIGEg
c3Vycm9nYXRlIHBhaXIuCi0gKiBBIE5VTCBjaGFyYWN0ZXIgaXMgZm91bmQgYXQgdGhlIHN0cmlu
ZyB0ZXJtaW5hdG9yLgotICoKLSAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChjb250
YWlucyA8Y29kZT5jb3VudDwvY29kZT4gVUNoYXJzKS4KLSAqIEBwYXJhbSBjIFRoZSBCTVAgY29k
ZSBwb2ludCB0byBmaW5kLgotICogQHBhcmFtIGNvdW50IFRoZSBsZW5ndGggb2YgdGhlIHN0cmlu
Zy4KLSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIDxjb2Rl
PmM8L2NvZGU+IGluIDxjb2RlPnM8L2NvZGU+Ci0gKiAgICAgICAgIG9yIDxjb2RlPk5VTEw8L2Nv
ZGU+IGlmIDxjb2RlPmM8L2NvZGU+IGlzIG5vdCBpbiA8Y29kZT5zPC9jb2RlPi4KLSAqIEBzdGFi
bGUgSUNVIDIuMAotICoKLSAqIEBzZWUgdV9zdHJjaHIKLSAqIEBzZWUgdV9tZW1jaHIzMgotICog
QHNlZSB1X3N0ckZpbmRGaXJzdAotICovCi1VX1NUQUJMRSBVQ2hhciogVV9FWFBPUlQyCi11X21l
bWNocihjb25zdCBVQ2hhciAqcywgVUNoYXIgYywgaW50MzJfdCBjb3VudCk7Ci0KLS8qKgotICog
RmluZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIGNvZGUgcG9pbnQgaW4gYSBzdHJpbmcuCi0g
KiBBIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IGlzIGZvdW5kIG9ubHkgaWYgaXRzIG1hdGNoIGluIHRo
ZSB0ZXh0IGlzIG5vdAotICogcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLgotICogQSBOVUwgY2hh
cmFjdGVyIGlzIGZvdW5kIGF0IHRoZSBzdHJpbmcgdGVybWluYXRvci4KLSAqCi0gKiBAcGFyYW0g
cyBUaGUgc3RyaW5nIHRvIHNlYXJjaCAoY29udGFpbnMgPGNvZGU+Y291bnQ8L2NvZGU+IFVDaGFy
cykuCi0gKiBAcGFyYW0gYyBUaGUgY29kZSBwb2ludCB0byBmaW5kLgotICogQHBhcmFtIGNvdW50
IFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KLSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBm
aXJzdCBvY2N1cnJlbmNlIG9mIDxjb2RlPmM8L2NvZGU+IGluIDxjb2RlPnM8L2NvZGU+Ci0gKiAg
ICAgICAgIG9yIDxjb2RlPk5VTEw8L2NvZGU+IGlmIDxjb2RlPmM8L2NvZGU+IGlzIG5vdCBpbiA8
Y29kZT5zPC9jb2RlPi4KLSAqIEBzdGFibGUgSUNVIDIuMAotICoKLSAqIEBzZWUgdV9zdHJjaHIz
MgotICogQHNlZSB1X21lbWNocgotICogQHNlZSB1X3N0ckZpbmRGaXJzdAotICovCi1VX1NUQUJM
RSBVQ2hhciogVV9FWFBPUlQyCi11X21lbWNocjMyKGNvbnN0IFVDaGFyICpzLCBVQ2hhcjMyIGMs
IGludDMyX3QgY291bnQpOwotCi0vKioKLSAqIEZpbmQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBh
IEJNUCBjb2RlIHBvaW50IGluIGEgc3RyaW5nLgotICogQSBzdXJyb2dhdGUgY29kZSBwb2ludCBp
cyBmb3VuZCBvbmx5IGlmIGl0cyBtYXRjaCBpbiB0aGUgdGV4dCBpcyBub3QKLSAqIHBhcnQgb2Yg
YSBzdXJyb2dhdGUgcGFpci4KLSAqIEEgTlVMIGNoYXJhY3RlciBpcyBmb3VuZCBhdCB0aGUgc3Ry
aW5nIHRlcm1pbmF0b3IuCi0gKgotICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byBzZWFyY2ggKGNv
bnRhaW5zIDxjb2RlPmNvdW50PC9jb2RlPiBVQ2hhcnMpLgotICogQHBhcmFtIGMgVGhlIEJNUCBj
b2RlIHBvaW50IHRvIGZpbmQuCi0gKiBAcGFyYW0gY291bnQgVGhlIGxlbmd0aCBvZiB0aGUgc3Ry
aW5nLgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiA8Y29k
ZT5jPC9jb2RlPiBpbiA8Y29kZT5zPC9jb2RlPgotICogICAgICAgICBvciA8Y29kZT5OVUxMPC9j
b2RlPiBpZiA8Y29kZT5jPC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+czwvY29kZT4uCi0gKiBAc3Rh
YmxlIElDVSAyLjQKLSAqCi0gKiBAc2VlIHVfc3RycmNocgotICogQHNlZSB1X21lbXJjaHIzMgot
ICogQHNlZSB1X3N0ckZpbmRMYXN0Ci0gKi8KLVVfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIKLXVf
bWVtcmNocihjb25zdCBVQ2hhciAqcywgVUNoYXIgYywgaW50MzJfdCBjb3VudCk7Ci0KLS8qKgot
ICogRmluZCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgY29kZSBwb2ludCBpbiBhIHN0cmluZy4K
LSAqIEEgc3Vycm9nYXRlIGNvZGUgcG9pbnQgaXMgZm91bmQgb25seSBpZiBpdHMgbWF0Y2ggaW4g
dGhlIHRleHQgaXMgbm90Ci0gKiBwYXJ0IG9mIGEgc3Vycm9nYXRlIHBhaXIuCi0gKiBBIE5VTCBj
aGFyYWN0ZXIgaXMgZm91bmQgYXQgdGhlIHN0cmluZyB0ZXJtaW5hdG9yLgotICoKLSAqIEBwYXJh
bSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChjb250YWlucyA8Y29kZT5jb3VudDwvY29kZT4gVUNo
YXJzKS4KLSAqIEBwYXJhbSBjIFRoZSBjb2RlIHBvaW50IHRvIGZpbmQuCi0gKiBAcGFyYW0gY291
bnQgVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gdGhl
IGxhc3Qgb2NjdXJyZW5jZSBvZiA8Y29kZT5jPC9jb2RlPiBpbiA8Y29kZT5zPC9jb2RlPgotICog
ICAgICAgICBvciA8Y29kZT5OVUxMPC9jb2RlPiBpZiA8Y29kZT5jPC9jb2RlPiBpcyBub3QgaW4g
PGNvZGU+czwvY29kZT4uCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqCi0gKiBAc2VlIHVfc3RycmNo
cjMyCi0gKiBAc2VlIHVfbWVtcmNocgotICogQHNlZSB1X3N0ckZpbmRMYXN0Ci0gKi8KLVVfU1RB
QkxFIFVDaGFyKiBVX0VYUE9SVDIKLXVfbWVtcmNocjMyKGNvbnN0IFVDaGFyICpzLCBVQ2hhcjMy
IGMsIGludDMyX3QgY291bnQpOwotCi0vKioKLSAqIFVuaWNvZGUgU3RyaW5nIGxpdGVyYWxzIGlu
IEMuCi0gKiBXZSBuZWVkIG9uZSBtYWNybyB0byBkZWNsYXJlIGEgdmFyaWFibGUgZm9yIHRoZSBz
dHJpbmcKLSAqIGFuZCB0byBzdGF0aWNhbGx5IHByZWluaXRpYWxpemUgaXQgaWYgcG9zc2libGUs
Ci0gKiBhbmQgYSBzZWNvbmQgbWFjcm8gdG8gZHluYW1pY2FsbHkgaW50aWFsaXplIHN1Y2ggYSBz
dHJpbmcgdmFyaWFibGUgaWYgbmVjZXNzYXJ5LgotICoKLSAqIFRoZSBtYWNyb3MgYXJlIGRlZmlu
ZWQgZm9yIG1heGltdW0gcGVyZm9ybWFuY2UuCi0gKiBUaGV5IHdvcmsgb25seSBmb3Igc3RyaW5n
cyB0aGF0IGNvbnRhaW4gImludmFyaWFudCBjaGFyYWN0ZXJzIiwgaS5lLiwKLSAqIG9ubHkgbGF0
aW4gbGV0dGVycywgZGlnaXRzLCBhbmQgc29tZSBwdW5jdHVhdGlvbi4KLSAqIFNlZSB1dHlwZXMu
aCBmb3IgZGV0YWlscy4KLSAqCi0gKiBBIHBhaXIgb2YgbWFjcm9zIGZvciBhIHNpbmdsZSBzdHJp
bmcgbXVzdCBiZSB1c2VkIHdpdGggdGhlIHNhbWUKLSAqIHBhcmFtZXRlcnMuCi0gKiBUaGUgc3Ry
aW5nIHBhcmFtZXRlciBtdXN0IGJlIGEgQyBzdHJpbmcgbGl0ZXJhbC4KLSAqIFRoZSBsZW5ndGgg
b2YgdGhlIHN0cmluZywgbm90IGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcKLSAqIDxjb2RlPk5V
TDwvY29kZT4sIG11c3QgYmUgc3BlY2lmaWVkIGFzIGEgY29uc3RhbnQuCi0gKiBUaGUgVV9TVFJJ
TkdfREVDTCBtYWNybyBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgZm9yIG9uZQotICog
c3VjaCBzdHJpbmcgdmFyaWFibGUgYmVmb3JlIGl0IGlzIHVzZWQuCi0gKgotICogVXNhZ2U6Ci0g
KiA8cHJlPgotICogJiMzMjsgICBVX1NUUklOR19ERUNMKHVzdHJpbmdWYXIxLCAiUXVpY2stRm94
IDIiLCAxMSk7Ci0gKiAmIzMyOyAgIFVfU1RSSU5HX0RFQ0wodXN0cmluZ1ZhcjIsICJqdW1wcyA1
JSIsIDgpOwotICogJiMzMjsgICBzdGF0aWMgVUJvb2wgZGlkSW5pdD1GQUxTRTsKLSAqICYjMzI7
Ci0gKiAmIzMyOyAgIGludDMyX3QgZnVuY3Rpb24oKSB7Ci0gKiAmIzMyOyAgICAgICBpZighZGlk
SW5pdCkgewotICogJiMzMjsgICAgICAgICAgIFVfU1RSSU5HX0lOSVQodXN0cmluZ1ZhcjEsICJR
dWljay1Gb3ggMiIsIDExKTsKLSAqICYjMzI7ICAgICAgICAgICBVX1NUUklOR19JTklUKHVzdHJp
bmdWYXIyLCAianVtcHMgNSUiLCA4KTsKLSAqICYjMzI7ICAgICAgICAgICBkaWRJbml0PVRSVUU7
Ci0gKiAmIzMyOyAgICAgICB9Ci0gKiAmIzMyOyAgICAgICByZXR1cm4gdV9zdHJjbXAodXN0cmlu
Z1ZhcjEsIHVzdHJpbmdWYXIyKTsKLSAqICYjMzI7ICAgfQotICogPC9wcmU+Ci0gKiBAc3RhYmxl
IElDVSAyLjAKLSAqLwotI2lmIFVfU0laRU9GX1dDSEFSX1Q9PVVfU0laRU9GX1VDSEFSICYmIFVf
Q0hBUlNFVF9GQU1JTFk9PVVfQVNDSUlfRkFNSUxZCi0jICAgZGVmaW5lIFVfU1RSSU5HX0RFQ0wo
dmFyLCBjcywgbGVuZ3RoKSBzdGF0aWMgY29uc3Qgd2NoYXJfdCB2YXJbKGxlbmd0aCkrMV09eyBM
ICMjIGNzIH0KLSAgICAvKipAc3RhYmxlIElDVSAyLjAgKi8KLSMgICBkZWZpbmUgVV9TVFJJTkdf
SU5JVCh2YXIsIGNzLCBsZW5ndGgpCi0jZWxpZiBVX1NJWkVPRl9VQ0hBUj09MSAmJiBVX0NIQVJT
RVRfRkFNSUxZPT1VX0FTQ0lJX0ZBTUlMWQotIyAgIGRlZmluZSBVX1NUUklOR19ERUNMKHZhciwg
Y3MsIGxlbmd0aCkgc3RhdGljIGNvbnN0IFVDaGFyIHZhclsobGVuZ3RoKSsxXT17IChjb25zdCBV
Q2hhciAqKWNzIH0KLSAgICAvKipAc3RhYmxlIElDVSAyLjAgKi8KLSMgICBkZWZpbmUgVV9TVFJJ
TkdfSU5JVCh2YXIsIGNzLCBsZW5ndGgpCi0jZWxzZQotIyAgIGRlZmluZSBVX1NUUklOR19ERUNM
KHZhciwgY3MsIGxlbmd0aCkgc3RhdGljIFVDaGFyIHZhclsobGVuZ3RoKSsxXQotICAgIC8qKkBz
dGFibGUgSUNVIDIuMCAqLwotIyAgIGRlZmluZSBVX1NUUklOR19JTklUKHZhciwgY3MsIGxlbmd0
aCkgdV9jaGFyc1RvVUNoYXJzKGNzLCB2YXIsIGxlbmd0aCsxKQotI2VuZGlmCi0KLS8qKgotICog
VW5lc2NhcGUgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyBhbmQgd3JpdGUgdGhlIHJlc3VsdGluZwot
ICogVW5pY29kZSBjaGFyYWN0ZXJzIHRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuICBUaGUgZm9s
bG93aW5nIGVzY2FwZQotICogc2VxdWVuY2VzIGFyZSByZWNvZ25pemVkOgotICoKLSAqIFxcdWho
aGggICAgICAgNCBoZXggZGlnaXRzOyBoIGluIFswLTlBLUZhLWZdCi0gKiBcXFVoaGhoaGhoaCAg
IDggaGV4IGRpZ2l0cwotICogXFx4aGggICAgICAgICAxLTIgaGV4IGRpZ2l0cwotICogXFx4e2gu
Li59ICAgICAxLTggaGV4IGRpZ2l0cwotICogXFxvb28gICAgICAgICAxLTMgb2N0YWwgZGlnaXRz
OyBvIGluIFswLTddCi0gKiBcXGNYICAgICAgICAgIGNvbnRyb2wtWDsgWCBpcyBtYXNrZWQgd2l0
aCAweDFGCi0gKgotICogYXMgd2VsbCBhcyB0aGUgc3RhbmRhcmQgQU5TSSBDIGVzY2FwZXM6Ci0g
KgotICogXFxhID0+IFUrMDAwNywgXFxiID0+IFUrMDAwOCwgXFx0ID0+IFUrMDAwOSwgXFxuID0+
IFUrMDAwQSwKLSAqIFxcdiA9PiBVKzAwMEIsIFxcZiA9PiBVKzAwMEMsIFxcciA9PiBVKzAwMEQs
IFxcZSA9PiBVKzAwMUIsCi0gKiBcXCIgPT4gVSswMDIyLCBcXCcgPT4gVSswMDI3LCBcXD8gPT4g
VSswMDNGLCBcXFxcID0+IFUrMDA1QwotICoKLSAqIEFueXRoaW5nIGVsc2UgZm9sbG93aW5nIGEg
YmFja3NsYXNoIGlzIGdlbmVyaWNhbGx5IGVzY2FwZWQuICBGb3IKLSAqIGV4YW1wbGUsICJbYVxc
LXpdIiByZXR1cm5zICJbYS16XSIuCi0gKgotICogSWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIGls
bC1mb3JtZWQsIHRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkKLSAqIHN0cmluZy4gIEFuIGV4
YW1wbGUgb2YgYW4gaWxsLWZvcm1lZCBzZXF1ZW5jZSBpcyAiXFx1IiBmb2xsb3dlZCBieQotICog
ZmV3ZXIgdGhhbiA0IGhleCBkaWdpdHMuCi0gKgotICogVGhlIGFib3ZlIGNoYXJhY3RlcnMgYXJl
IHJlY29nbml6ZWQgaW4gdGhlIGNvbXBpbGVyJ3MgY29kZXBhZ2UsCi0gKiB0aGF0IGlzLCB0aGV5
IGFyZSBjb2RlZCBhcyAndScsICdcXCcsIGV0Yy4gIENoYXJhY3RlcnMgdGhhdCBhcmUKLSAqIG5v
dCBwYXJ0cyBvZiBlc2NhcGUgc2VxdWVuY2VzIGFyZSBjb252ZXJ0ZWQgdXNpbmcgdV9jaGFyc1Rv
VUNoYXJzKCkuCi0gKgotICogVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIFVuaWNvZGVTdHJp
bmc6OnVuZXNjYXBlKCkgYnV0IG5vdAotICogaWRlbnRpY2FsIHRvIGl0LiAgVGhlIGxhdHRlciB0
YWtlcyBhIHNvdXJjZSBVbmljb2RlU3RyaW5nLCBzbyBpdAotICogZG9lcyBlc2NhcGUgcmVjb2du
aXRpb24gYnV0IG5vIGNvbnZlcnNpb24uCi0gKgotICogQHBhcmFtIHNyYyBhIHplcm8tdGVybWlu
YXRlZCBzdHJpbmcgb2YgaW52YXJpYW50IGNoYXJhY3RlcnMKLSAqIEBwYXJhbSBkZXN0IHBvaW50
ZXIgdG8gYnVmZmVyIHRvIHJlY2VpdmUgY29udmVydGVkIGFuZCB1bmVzY2FwZWQKLSAqIHRleHQg
YW5kLCBpZiB0aGVyZSBpcyByb29tLCBhIHplcm8gdGVybWluYXRvci4gIE1heSBiZSBOVUxMIGZv
cgotICogcHJlZmxpZ2h0aW5nLCBpbiB3aGljaCBjYXNlIG5vIFVDaGFycyB3aWxsIGJlIHdyaXR0
ZW4sIGJ1dCB0aGUKLSAqIHJldHVybiB2YWx1ZSB3aWxsIHN0aWxsIGJlIHZhbGlkLiAgT24gZXJy
b3IsIGFuIGVtcHR5IHN0cmluZyBpcwotICogc3RvcmVkIGhlcmUgKGlmIHBvc3NpYmxlKS4KLSAq
IEBwYXJhbSBkZXN0Q2FwYWNpdHkgdGhlIG51bWJlciBvZiBVQ2hhcnMgdGhhdCBtYXkgYmUgd3Jp
dHRlbiBhdAotICogZGVzdC4gIElnbm9yZWQgaWYgZGVzdCA9PSBOVUxMLgotICogQHJldHVybiB0
aGUgbGVuZ3RoIG9mIHVuZXNjYXBlZCBzdHJpbmcuCi0gKiBAc2VlIHVfdW5lc2NhcGVBdAotICog
QHNlZSBVbmljb2RlU3RyaW5nI3VuZXNjYXBlKCkKLSAqIEBzZWUgVW5pY29kZVN0cmluZyN1bmVz
Y2FwZUF0KCkKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQ
T1JUMgotdV91bmVzY2FwZShjb25zdCBjaGFyICpzcmMsCi0gICAgICAgICAgIFVDaGFyICpkZXN0
LCBpbnQzMl90IGRlc3RDYXBhY2l0eSk7Ci0KLVVfQ0RFQ0xfQkVHSU4KLS8qKgotICogQ2FsbGJh
Y2sgZnVuY3Rpb24gZm9yIHVfdW5lc2NhcGVBdCgpIHRoYXQgcmV0dXJucyBhIGNoYXJhY3RlciBv
ZgotICogdGhlIHNvdXJjZSB0ZXh0IGdpdmVuIGFuIG9mZnNldCBhbmQgYSBjb250ZXh0IHBvaW50
ZXIuICBUaGUgY29udGV4dAotICogcG9pbnRlciB3aWxsIGJlIHdoYXRldmVyIGlzIHBhc3NlZCBp
bnRvIHVfdW5lc2NhcGVBdCgpLgotICoKLSAqIEBwYXJhbSBvZmZzZXQgcG9pbnRlciB0byB0aGUg
b2Zmc2V0IHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdV91bmVzY2FwZUF0KCkuCi0gKiBAcGFyYW0g
Y29udGV4dCBhbiBvcGFxdWUgcG9pbnRlciBwYXNzZWQgZGlyZWN0bHkgaW50byB1X3VuZXNjYXBl
QXQoKQotICogQHJldHVybiB0aGUgY2hhcmFjdGVyIHJlcHJlc2VudGVkIGJ5IHRoZSBlc2NhcGUg
c2VxdWVuY2UgYXQKLSAqIG9mZnNldAotICogQHNlZSB1X3VuZXNjYXBlQXQKLSAqIEBzdGFibGUg
SUNVIDIuMAotICovCi10eXBlZGVmIFVDaGFyIChVX0NBTExDT05WICpVTkVTQ0FQRV9DSEFSX0FU
KShpbnQzMl90IG9mZnNldCwgdm9pZCAqY29udGV4dCk7Ci1VX0NERUNMX0VORAotCi0vKioKLSAq
IFVuZXNjYXBlIGEgc2luZ2xlIHNlcXVlbmNlLiBUaGUgY2hhcmFjdGVyIGF0IG9mZnNldC0xIGlz
IGFzc3VtZWQKLSAqICh3aXRob3V0IGNoZWNraW5nKSB0byBiZSBhIGJhY2tzbGFzaC4gIFRoaXMg
bWV0aG9kIHRha2VzIGEgY2FsbGJhY2sKLSAqIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiB0aGF0IHJl
dHVybnMgdGhlIFVDaGFyIGF0IGEgZ2l2ZW4gb2Zmc2V0LiAgQnkKLSAqIHZhcnlpbmcgdGhpcyBj
YWxsYmFjaywgSUNVIGZ1bmN0aW9ucyBhcmUgYWJsZSB0byB1bmVzY2FwZSBjaGFyKgotICogc3Ry
aW5ncywgVW5pY29kZVN0cmluZyBvYmplY3RzLCBhbmQgVUZJTEUgcG9pbnRlcnMuCi0gKgotICog
SWYgb2Zmc2V0IGlzIG91dCBvZiByYW5nZSwgb3IgaWYgdGhlIGVzY2FwZSBzZXF1ZW5jZSBpcyBp
bGwtZm9ybWVkLAotICogKFVDaGFyMzIpMHhGRkZGRkZGRiBpcyByZXR1cm5lZC4gIFNlZSBkb2N1
bWVudGF0aW9uIG9mIHVfdW5lc2NhcGUoKQotICogZm9yIGEgbGlzdCBvZiByZWNvZ25pemVkIHNl
cXVlbmNlcy4KLSAqCi0gKiBAcGFyYW0gY2hhckF0IGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgcmV0
dXJucyBhIFVDaGFyIG9mIHRoZSBzb3VyY2UKLSAqIHRleHQgZ2l2ZW4gYW4gb2Zmc2V0IGFuZCBh
IGNvbnRleHQgcG9pbnRlci4KLSAqIEBwYXJhbSBvZmZzZXQgcG9pbnRlciB0byB0aGUgb2Zmc2V0
IHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gY2hhckF0LgotICogVGhlIG9mZnNldCB2YWx1ZSB3aWxs
IGJlIHVwZGF0ZWQgdXBvbiByZXR1cm4gdG8gcG9pbnQgYWZ0ZXIgdGhlCi0gKiBsYXN0IHBhcnNl
ZCBjaGFyYWN0ZXIgb2YgdGhlIGVzY2FwZSBzZXF1ZW5jZS4gIE9uIGVycm9yIHRoZSBvZmZzZXQK
LSAqIGlzIHVuY2hhbmdlZC4KLSAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBjaGFyYWN0
ZXJzIGluIHRoZSBzb3VyY2UgdGV4dC4gIFRoZQotICogbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIHNv
dXJjZSB0ZXh0IGlzIGNvbnNpZGVyZWQgdG8gYmUgYXQgb2Zmc2V0Ci0gKiBsZW5ndGgtMS4KLSAq
IEBwYXJhbSBjb250ZXh0IGFuIG9wYXF1ZSBwb2ludGVyIHBhc3NlZCBkaXJlY3RseSBpbnRvIGNo
YXJBdC4KLSAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciByZXByZXNlbnRlZCBieSB0aGUgZXNjYXBl
IHNlcXVlbmNlIGF0Ci0gKiBvZmZzZXQsIG9yIChVQ2hhcjMyKTB4RkZGRkZGRkYgb24gZXJyb3Iu
Ci0gKiBAc2VlIHVfdW5lc2NhcGUoKQotICogQHNlZSBVbmljb2RlU3RyaW5nI3VuZXNjYXBlKCkK
LSAqIEBzZWUgVW5pY29kZVN0cmluZyN1bmVzY2FwZUF0KCkKLSAqIEBzdGFibGUgSUNVIDIuMAot
ICovCi1VX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgotdV91bmVzY2FwZUF0KFVORVNDQVBFX0NI
QVJfQVQgY2hhckF0LAotICAgICAgICAgICAgIGludDMyX3QgKm9mZnNldCwKLSAgICAgICAgICAg
ICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgICAgICB2b2lkICpjb250ZXh0KTsKLQotLyoqCi0g
KiBVcHBlcmNhc2UgdGhlIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuCi0gKiBDYXNpbmcgaXMgbG9j
YWxlLWRlcGVuZGVudCBhbmQgY29udGV4dC1zZW5zaXRpdmUuCi0gKiBUaGUgcmVzdWx0IG1heSBi
ZSBsb25nZXIgb3Igc2hvcnRlciB0aGFuIHRoZSBvcmlnaW5hbC4KLSAqIFRoZSBzb3VyY2Ugc3Ry
aW5nIGFuZCB0aGUgZGVzdGluYXRpb24gYnVmZmVyIGFyZSBhbGxvd2VkIHRvIG92ZXJsYXAuCi0g
KgotICogQHBhcmFtIGRlc3QgICAgICBBIGJ1ZmZlciBmb3IgdGhlIHJlc3VsdCBzdHJpbmcuIFRo
ZSByZXN1bHQgd2lsbCBiZSB6ZXJvLXRlcm1pbmF0ZWQgaWYKLSAqICAgICAgICAgICAgICAgICAg
dGhlIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2guCi0gKiBAcGFyYW0gZGVzdENhcGFjaXR5IFRoZSBz
aXplIG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiBVQ2hhcnMpLiBJZiBpdCBpcyAwLCB0aGVuCi0g
KiAgICAgICAgICAgICAgICAgIGRlc3QgbWF5IGJlIE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxs
IG9ubHkgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdAotICogICAgICAgICAgICAgICAg
ICB3aXRob3V0IHdyaXRpbmcgYW55IG9mIHRoZSByZXN1bHQgc3RyaW5nLgotICogQHBhcmFtIHNy
YyAgICAgICBUaGUgb3JpZ2luYWwgc3RyaW5nCi0gKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBsZW5n
dGggb2YgdGhlIG9yaWdpbmFsIHN0cmluZy4gSWYgLTEsIHRoZW4gc3JjIG11c3QgYmUgemVyby10
ZXJtaW5hdGVkLgotICogQHBhcmFtIGxvY2FsZSAgICBUaGUgbG9jYWxlIHRvIGNvbnNpZGVyLCBv
ciAiIiBmb3IgdGhlIHJvb3QgbG9jYWxlIG9yIE5VTEwgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4K
LSAqIEBwYXJhbSBwRXJyb3JDb2RlIE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9y
IGNvZGUgdmFsdWUsCi0gKiAgICAgICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRl
IGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCi0gKiBAcmV0dXJuIFRoZSBsZW5n
dGggb2YgdGhlIHJlc3VsdCBzdHJpbmcuIEl0IG1heSBiZSBncmVhdGVyIHRoYW4gZGVzdENhcGFj
aXR5LiBJbiB0aGF0IGNhc2UsCi0gKiAgICAgICAgIG9ubHkgc29tZSBvZiB0aGUgcmVzdWx0IHdh
cyB3cml0dGVuIHRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuCi0gKiBAc3RhYmxlIElDVSAyLjAK
LSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVfc3RyVG9VcHBlcihVQ2hhciAqZGVz
dCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCi0gICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywg
aW50MzJfdCBzcmNMZW5ndGgsCi0gICAgICAgICAgICAgY29uc3QgY2hhciAqbG9jYWxlLAotICAg
ICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwotCi0vKioKLSAqIExvd2VyY2FzZSB0
aGUgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4KLSAqIENhc2luZyBpcyBsb2NhbGUtZGVwZW5kZW50
IGFuZCBjb250ZXh0LXNlbnNpdGl2ZS4KLSAqIFRoZSByZXN1bHQgbWF5IGJlIGxvbmdlciBvciBz
aG9ydGVyIHRoYW4gdGhlIG9yaWdpbmFsLgotICogVGhlIHNvdXJjZSBzdHJpbmcgYW5kIHRoZSBk
ZXN0aW5hdGlvbiBidWZmZXIgYXJlIGFsbG93ZWQgdG8gb3ZlcmxhcC4KLSAqCi0gKiBAcGFyYW0g
ZGVzdCAgICAgIEEgYnVmZmVyIGZvciB0aGUgcmVzdWx0IHN0cmluZy4gVGhlIHJlc3VsdCB3aWxs
IGJlIHplcm8tdGVybWluYXRlZCBpZgotICogICAgICAgICAgICAgICAgICB0aGUgYnVmZmVyIGlz
IGxhcmdlIGVub3VnaC4KLSAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgVGhlIHNpemUgb2YgdGhlIGJ1
ZmZlciAobnVtYmVyIG9mIFVDaGFycykuIElmIGl0IGlzIDAsIHRoZW4KLSAqICAgICAgICAgICAg
ICAgICAgZGVzdCBtYXkgYmUgTlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgb25seSByZXR1cm4g
dGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0Ci0gKiAgICAgICAgICAgICAgICAgIHdpdGhvdXQgd3Jp
dGluZyBhbnkgb2YgdGhlIHJlc3VsdCBzdHJpbmcuCi0gKiBAcGFyYW0gc3JjICAgICAgIFRoZSBv
cmlnaW5hbCBzdHJpbmcKLSAqIEBwYXJhbSBzcmNMZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgb3Jp
Z2luYWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBzcmMgbXVzdCBiZSB6ZXJvLXRlcm1pbmF0ZWQuCi0g
KiBAcGFyYW0gbG9jYWxlICAgIFRoZSBsb2NhbGUgdG8gY29uc2lkZXIsIG9yICIiIGZvciB0aGUg
cm9vdCBsb2NhbGUgb3IgTlVMTCBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlLgotICogQHBhcmFtIHBF
cnJvckNvZGUgTXVzdCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwK
LSAqICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJl
Zm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KLSAqIEByZXR1cm4gVGhlIGxlbmd0aCBvZiB0aGUgcmVz
dWx0IHN0cmluZy4gSXQgbWF5IGJlIGdyZWF0ZXIgdGhhbiBkZXN0Q2FwYWNpdHkuIEluIHRoYXQg
Y2FzZSwKLSAqICAgICAgICAgb25seSBzb21lIG9mIHRoZSByZXN1bHQgd2FzIHdyaXR0ZW4gdG8g
dGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJM
RSBpbnQzMl90IFVfRVhQT1JUMgotdV9zdHJUb0xvd2VyKFVDaGFyICpkZXN0LCBpbnQzMl90IGRl
c3RDYXBhY2l0eSwKLSAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xl
bmd0aCwKLSAgICAgICAgICAgICBjb25zdCBjaGFyICpsb2NhbGUsCi0gICAgICAgICAgICAgVUVy
cm9yQ29kZSAqcEVycm9yQ29kZSk7Ci0KLSNpZiAhVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04K
LQotLyoqCi0gKiBUaXRsZWNhc2UgYSBzdHJpbmcuCi0gKiBDYXNpbmcgaXMgbG9jYWxlLWRlcGVu
ZGVudCBhbmQgY29udGV4dC1zZW5zaXRpdmUuCi0gKiBUaXRsZWNhc2luZyB1c2VzIGEgYnJlYWsg
aXRlcmF0b3IgdG8gZmluZCB0aGUgZmlyc3QgY2hhcmFjdGVycyBvZiB3b3JkcwotICogdGhhdCBh
cmUgdG8gYmUgdGl0bGVjYXNlZC4gSXQgdGl0bGVjYXNlcyB0aG9zZSBjaGFyYWN0ZXJzIGFuZCBs
b3dlcmNhc2VzCi0gKiBhbGwgb3RoZXJzLgotICoKLSAqIFRoZSB0aXRsZWNhc2UgYnJlYWsgaXRl
cmF0b3IgY2FuIGJlIHByb3ZpZGVkIHRvIGN1c3RvbWl6ZSBmb3IgYXJiaXRyYXJ5Ci0gKiBzdHls
ZXMsIHVzaW5nIHJ1bGVzIGFuZCBkaWN0aW9uYXJpZXMgYmV5b25kIHRoZSBzdGFuZGFyZCBpdGVy
YXRvcnMuCi0gKiBJdCBtYXkgYmUgbW9yZSBlZmZpY2llbnQgdG8gYWx3YXlzIHByb3ZpZGUgYW4g
aXRlcmF0b3IgdG8gYXZvaWQKLSAqIG9wZW5pbmcgYW5kIGNsb3Npbmcgb25lIGZvciBlYWNoIHN0
cmluZy4KLSAqIFRoZSBzdGFuZGFyZCB0aXRsZWNhc2UgaXRlcmF0b3IgZm9yIHRoZSByb290IGxv
Y2FsZSBpbXBsZW1lbnRzIHRoZQotICogYWxnb3JpdGhtIG9mIFVuaWNvZGUgVFIgMjEuCi0gKgot
ICogVGhpcyBmdW5jdGlvbiB1c2VzIG9ubHkgdGhlIGZpcnN0KCkgYW5kIG5leHQoKSBtZXRob2Rz
IG9mIHRoZQotICogcHJvdmlkZWQgYnJlYWsgaXRlcmF0b3IuCi0gKgotICogVGhlIHJlc3VsdCBt
YXkgYmUgbG9uZ2VyIG9yIHNob3J0ZXIgdGhhbiB0aGUgb3JpZ2luYWwuCi0gKiBUaGUgc291cmNl
IHN0cmluZyBhbmQgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBhcmUgYWxsb3dlZCB0byBvdmVybGFw
LgotICoKLSAqIEBwYXJhbSBkZXN0ICAgICAgQSBidWZmZXIgZm9yIHRoZSByZXN1bHQgc3RyaW5n
LiBUaGUgcmVzdWx0IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCi0gKiAgICAgICAgICAgICAg
ICAgIHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgotICogQHBhcmFtIGRlc3RDYXBhY2l0eSBU
aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChudW1iZXIgb2YgVUNoYXJzKS4gSWYgaXQgaXMgMCwgdGhl
bgotICogICAgICAgICAgICAgICAgICBkZXN0IG1heSBiZSBOVUxMIGFuZCB0aGUgZnVuY3Rpb24g
d2lsbCBvbmx5IHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQKLSAqICAgICAgICAgICAg
ICAgICAgd2l0aG91dCB3cml0aW5nIGFueSBvZiB0aGUgcmVzdWx0IHN0cmluZy4KLSAqIEBwYXJh
bSBzcmMgICAgICAgVGhlIG9yaWdpbmFsIHN0cmluZwotICogQHBhcmFtIHNyY0xlbmd0aCBUaGUg
bGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcuIElmIC0xLCB0aGVuIHNyYyBtdXN0IGJlIHpl
cm8tdGVybWluYXRlZC4KLSAqIEBwYXJhbSB0aXRsZUl0ZXIgQSBicmVhayBpdGVyYXRvciB0byBm
aW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIG9mIHdvcmRzCi0gKiAgICAgICAgICAgICAgICAgIHRo
YXQgYXJlIHRvIGJlIHRpdGxlY2FzZWQuCi0gKiAgICAgICAgICAgICAgICAgIElmIG5vbmUgaXMg
cHJvdmlkZWQgKE5VTEwpLCB0aGVuIGEgc3RhbmRhcmQgdGl0bGVjYXNlCi0gKiAgICAgICAgICAg
ICAgICAgIGJyZWFrIGl0ZXJhdG9yIGlzIG9wZW5lZC4KLSAqIEBwYXJhbSBsb2NhbGUgICAgVGhl
IGxvY2FsZSB0byBjb25zaWRlciwgb3IgIiIgZm9yIHRoZSByb290IGxvY2FsZSBvciBOVUxMIGZv
ciB0aGUgZGVmYXVsdCBsb2NhbGUuCi0gKiBAcGFyYW0gcEVycm9yQ29kZSBNdXN0IGJlIGEgdmFs
aWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLAotICogICAgICAgICAgICAgICAgICB3
aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxs
LgotICogQHJldHVybiBUaGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgc3RyaW5nLiBJdCBtYXkgYmUg
Z3JlYXRlciB0aGFuIGRlc3RDYXBhY2l0eS4gSW4gdGhhdCBjYXNlLAotICogICAgICAgICBvbmx5
IHNvbWUgb2YgdGhlIHJlc3VsdCB3YXMgd3JpdHRlbiB0byB0aGUgZGVzdGluYXRpb24gYnVmZmVy
LgotICogQHN0YWJsZSBJQ1UgMi4xCi0gKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCi11
X3N0clRvVGl0bGUoVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LAotICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLAotICAgICAgICAgICAgIFVC
cmVha0l0ZXJhdG9yICp0aXRsZUl0ZXIsCi0gICAgICAgICAgICAgY29uc3QgY2hhciAqbG9jYWxl
LAotICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwotCi0jZW5kaWYKLQotLyoq
Ci0gKiBDYXNlLWZvbGQgdGhlIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuCi0gKiBDYXNlLWZvbGRp
bmcgaXMgbG9jYWxlLWluZGVwZW5kZW50IGFuZCBub3QgY29udGV4dC1zZW5zaXRpdmUsCi0gKiBi
dXQgdGhlcmUgaXMgYW4gb3B0aW9uIGZvciB3aGV0aGVyIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSBt
YXBwaW5ncyBmb3IgZG90dGVkIEkKLSAqIGFuZCBkb3RsZXNzIGkgdGhhdCBhcmUgbWFya2VkIHdp
dGggJ0knIGluIENhc2VGb2xkaW5nLnR4dC4KLSAqIFRoZSByZXN1bHQgbWF5IGJlIGxvbmdlciBv
ciBzaG9ydGVyIHRoYW4gdGhlIG9yaWdpbmFsLgotICogVGhlIHNvdXJjZSBzdHJpbmcgYW5kIHRo
ZSBkZXN0aW5hdGlvbiBidWZmZXIgYXJlIGFsbG93ZWQgdG8gb3ZlcmxhcC4KLSAqCi0gKiBAcGFy
YW0gZGVzdCAgICAgIEEgYnVmZmVyIGZvciB0aGUgcmVzdWx0IHN0cmluZy4gVGhlIHJlc3VsdCB3
aWxsIGJlIHplcm8tdGVybWluYXRlZCBpZgotICogICAgICAgICAgICAgICAgICB0aGUgYnVmZmVy
IGlzIGxhcmdlIGVub3VnaC4KLSAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgVGhlIHNpemUgb2YgdGhl
IGJ1ZmZlciAobnVtYmVyIG9mIFVDaGFycykuIElmIGl0IGlzIDAsIHRoZW4KLSAqICAgICAgICAg
ICAgICAgICAgZGVzdCBtYXkgYmUgTlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgb25seSByZXR1
cm4gdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0Ci0gKiAgICAgICAgICAgICAgICAgIHdpdGhvdXQg
d3JpdGluZyBhbnkgb2YgdGhlIHJlc3VsdCBzdHJpbmcuCi0gKiBAcGFyYW0gc3JjICAgICAgIFRo
ZSBvcmlnaW5hbCBzdHJpbmcKLSAqIEBwYXJhbSBzcmNMZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUg
b3JpZ2luYWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBzcmMgbXVzdCBiZSB6ZXJvLXRlcm1pbmF0ZWQu
Ci0gKiBAcGFyYW0gb3B0aW9ucyAgIEVpdGhlciBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIFVfRk9M
RF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCi0gKiBAcGFyYW0gcEVycm9yQ29kZSBNdXN0IGJlIGEg
dmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLAotICogICAgICAgICAgICAgICAg
ICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBj
YWxsLgotICogQHJldHVybiBUaGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgc3RyaW5nLiBJdCBtYXkg
YmUgZ3JlYXRlciB0aGFuIGRlc3RDYXBhY2l0eS4gSW4gdGhhdCBjYXNlLAotICogICAgICAgICBv
bmx5IHNvbWUgb2YgdGhlIHJlc3VsdCB3YXMgd3JpdHRlbiB0byB0aGUgZGVzdGluYXRpb24gYnVm
ZmVyLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQy
Ci11X3N0ckZvbGRDYXNlKFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKLSAgICAg
ICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgsCi0gICAgICAgICAg
ICAgIHVpbnQzMl90IG9wdGlvbnMsCi0gICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNv
ZGUpOwotCi0vKioKLSAqIENvbnZlcnRzIGEgc2VxdWVuY2Ugb2YgVUNoYXJzIHRvIHdjaGFyX3Qg
dW5pdHMuCi0gKgotICogQHBhcmFtIGRlc3QgICAgICAgICAgQSBidWZmZXIgZm9yIHRoZSByZXN1
bHQgc3RyaW5nLiBUaGUgcmVzdWx0IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCi0gKiAgICAg
ICAgICAgICAgICAgICAgICB0aGUgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KLSAqIEBwYXJhbSBk
ZXN0Q2FwYWNpdHkgIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiB3Y2hhcl90J3Mp
LiBJZiBpdCBpcyAwLCB0aGVuCi0gKiAgICAgICAgICAgICAgICAgICAgICBkZXN0IG1heSBiZSBO
VUxMIGFuZCB0aGUgZnVuY3Rpb24gd2lsbCBvbmx5IHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSAK
LSAqICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB3aXRob3V0IHdyaXRpbmcgYW55IG9mIHRo
ZSByZXN1bHQgc3RyaW5nIChwcmUtZmxpZ2h0aW5nKS4KLSAqIEBwYXJhbSBwRGVzdExlbmd0aCAg
IEEgcG9pbnRlciB0byByZWNlaXZlIHRoZSBudW1iZXIgb2YgdW5pdHMgd3JpdHRlbiB0byB0aGUg
ZGVzdGluYXRpb24uIElmIAotICogICAgICAgICAgICAgICAgICAgICAgcERlc3RMZW5ndGghPU5V
TEwgdGhlbiAqcERlc3RMZW5ndGggaXMgYWx3YXlzIHNldCB0byB0aGUgCi0gKiAgICAgICAgICAg
ICAgICAgICAgICBudW1iZXIgb2Ygb3V0cHV0IHVuaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRy
YW5zZm9ybWF0aW9uIG9mIAotICogICAgICAgICAgICAgICAgICAgICAgYWxsIHRoZSBpbnB1dCB1
bml0cywgZXZlbiBpbiBjYXNlIG9mIGEgYnVmZmVyIG92ZXJmbG93LgotICogQHBhcmFtIHNyYyAg
ICAgICAgICAgVGhlIG9yaWdpbmFsIHNvdXJjZSBzdHJpbmcKLSAqIEBwYXJhbSBzcmNMZW5ndGgg
ICAgIFRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIHN0cmluZy4gSWYgLTEsIHRoZW4gc3JjIG11
c3QgYmUgemVyby10ZXJtaW5hdGVkLgotICogQHBhcmFtIHBFcnJvckNvZGUgICAgTXVzdCBiZSBh
IHZhbGlkIHBvaW50ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwKLSAqICAgICAgICAgICAgICAg
ICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1bmN0
aW9uIGNhbGwuCi0gKiBAcmV0dXJuIFRoZSBwb2ludGVyIHRvIGRlc3RpbmF0aW9uIGJ1ZmZlci4K
LSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB3Y2hhcl90KiBVX0VYUE9SVDIKLXVf
c3RyVG9XQ1Mod2NoYXJfdCAqZGVzdCwgCi0gICAgICAgICAgIGludDMyX3QgZGVzdENhcGFjaXR5
LAotICAgICAgICAgICBpbnQzMl90ICpwRGVzdExlbmd0aCwKLSAgICAgICAgICAgY29uc3QgVUNo
YXIgKnNyYywgCi0gICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAotICAgICAgICAgICBVRXJy
b3JDb2RlICpwRXJyb3JDb2RlKTsKLS8qKgotICogQ29udmVydHMgYSBzZXF1ZW5jZSBvZiB3Y2hh
cl90IHVuaXRzIHRvIFVDaGFycwotICoKLSAqIEBwYXJhbSBkZXN0ICAgICAgICAgIEEgYnVmZmVy
IGZvciB0aGUgcmVzdWx0IHN0cmluZy4gVGhlIHJlc3VsdCB3aWxsIGJlIHplcm8tdGVybWluYXRl
ZCBpZgotICogICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2gu
Ci0gKiBAcGFyYW0gZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChudW1iZXIg
b2YgVUNoYXJzKS4gSWYgaXQgaXMgMCwgdGhlbgotICogICAgICAgICAgICAgICAgICAgICAgZGVz
dCBtYXkgYmUgTlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgb25seSByZXR1cm4gdGhlIGxlbmd0
aCBvZiB0aGUgCi0gKiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgd2l0aG91dCB3cml0aW5n
IGFueSBvZiB0aGUgcmVzdWx0IHN0cmluZyAocHJlLWZsaWdodGluZykuCi0gKiBAcGFyYW0gcERl
c3RMZW5ndGggICBBIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgbnVtYmVyIG9mIHVuaXRzIHdyaXR0
ZW4gdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiAKLSAqICAgICAgICAgICAgICAgICAgICAgIHBEZXN0
TGVuZ3RoIT1OVUxMIHRoZW4gKnBEZXN0TGVuZ3RoIGlzIGFsd2F5cyBzZXQgdG8gdGhlIAotICog
ICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIG91dHB1dCB1bml0cyBjb3JyZXNwb25kaW5n
IHRvIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiAKLSAqICAgICAgICAgICAgICAgICAgICAgIGFsbCB0
aGUgaW5wdXQgdW5pdHMsIGV2ZW4gaW4gY2FzZSBvZiBhIGJ1ZmZlciBvdmVyZmxvdy4KLSAqIEBw
YXJhbSBzcmMgICAgICAgICAgIFRoZSBvcmlnaW5hbCBzb3VyY2Ugc3RyaW5nCi0gKiBAcGFyYW0g
c3JjTGVuZ3RoICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcuIElmIC0xLCB0
aGVuIHNyYyBtdXN0IGJlIHplcm8tdGVybWluYXRlZC4KLSAqIEBwYXJhbSBwRXJyb3JDb2RlICAg
IE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9yIGNvZGUgdmFsdWUsCi0gKiAgICAg
ICAgICAgICAgICAgICAgICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3Jl
IHRoZSBmdW5jdGlvbiBjYWxsLgotICogQHJldHVybiBUaGUgcG9pbnRlciB0byBkZXN0aW5hdGlv
biBidWZmZXIuCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUNoYXIqIFVfRVhQ
T1JUMgotdV9zdHJGcm9tV0NTKFVDaGFyICAgKmRlc3QsCi0gICAgICAgICAgICAgaW50MzJfdCBk
ZXN0Q2FwYWNpdHksIAotICAgICAgICAgICAgIGludDMyX3QgKnBEZXN0TGVuZ3RoLAotICAgICAg
ICAgICAgIGNvbnN0IHdjaGFyX3QgKnNyYywKLSAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0
aCwKLSAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLS8qKgotICogQ29udmVy
dHMgYSBzZXF1ZW5jZSBvZiBVQ2hhcnMgKFVURi0xNikgdG8gVVRGLTggYnl0ZXMKLSAqCi0gKiBA
cGFyYW0gZGVzdCAgICAgICAgICBBIGJ1ZmZlciBmb3IgdGhlIHJlc3VsdCBzdHJpbmcuIFRoZSBy
ZXN1bHQgd2lsbCBiZSB6ZXJvLXRlcm1pbmF0ZWQgaWYKLSAqICAgICAgICAgICAgICAgICAgICAg
IHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgotICogQHBhcmFtIGRlc3RDYXBhY2l0eSAgVGhl
IHNpemUgb2YgdGhlIGJ1ZmZlciAobnVtYmVyIG9mIGNoYXJzKS4gSWYgaXQgaXMgMCwgdGhlbgot
ICogICAgICAgICAgICAgICAgICAgICAgZGVzdCBtYXkgYmUgTlVMTCBhbmQgdGhlIGZ1bmN0aW9u
IHdpbGwgb25seSByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgCi0gKiAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgd2l0aG91dCB3cml0aW5nIGFueSBvZiB0aGUgcmVzdWx0IHN0cmluZyAocHJl
LWZsaWdodGluZykuCi0gKiBAcGFyYW0gcERlc3RMZW5ndGggICBBIHBvaW50ZXIgdG8gcmVjZWl2
ZSB0aGUgbnVtYmVyIG9mIHVuaXRzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiAKLSAq
ICAgICAgICAgICAgICAgICAgICAgIHBEZXN0TGVuZ3RoIT1OVUxMIHRoZW4gKnBEZXN0TGVuZ3Ro
IGlzIGFsd2F5cyBzZXQgdG8gdGhlIAotICogICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9m
IG91dHB1dCB1bml0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiAKLSAq
ICAgICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgaW5wdXQgdW5pdHMsIGV2ZW4gaW4gY2FzZSBv
ZiBhIGJ1ZmZlciBvdmVyZmxvdy4KLSAqIEBwYXJhbSBzcmMgICAgICAgICAgIFRoZSBvcmlnaW5h
bCBzb3VyY2Ugc3RyaW5nCi0gKiBAcGFyYW0gc3JjTGVuZ3RoICAgICBUaGUgbGVuZ3RoIG9mIHRo
ZSBvcmlnaW5hbCBzdHJpbmcuIElmIC0xLCB0aGVuIHNyYyBtdXN0IGJlIHplcm8tdGVybWluYXRl
ZC4KLSAqIEBwYXJhbSBwRXJyb3JDb2RlICAgIE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFu
IGVycm9yIGNvZGUgdmFsdWUsCi0gKiAgICAgICAgICAgICAgICAgICAgICB3aGljaCBtdXN0IG5v
dCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgotICogQHJldHVy
biBUaGUgcG9pbnRlciB0byBkZXN0aW5hdGlvbiBidWZmZXIuCi0gKiBAc3RhYmxlIElDVSAyLjAK
LSAqLwotVV9TVEFCTEUgY2hhciogVV9FWFBPUlQyIAotdV9zdHJUb1VURjgoY2hhciAqZGVzdCwg
ICAgICAgICAgIAotICAgICAgICAgICAgaW50MzJfdCBkZXN0Q2FwYWNpdHksCi0gICAgICAgICAg
ICBpbnQzMl90ICpwRGVzdExlbmd0aCwKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsIAot
ICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCi0gICAgICAgICAgICBVRXJyb3JDb2RlICpw
RXJyb3JDb2RlKTsKLQotLyoqCi0gKiBDb252ZXJ0cyBhIHNlcXVlbmNlIG9mIFVURi04IGJ5dGVz
IHRvIFVDaGFycyAoVVRGLTE2KS4KLSAqCi0gKiBAcGFyYW0gZGVzdCAgICAgICAgICBBIGJ1ZmZl
ciBmb3IgdGhlIHJlc3VsdCBzdHJpbmcuIFRoZSByZXN1bHQgd2lsbCBiZSB6ZXJvLXRlcm1pbmF0
ZWQgaWYKLSAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdo
LgotICogQHBhcmFtIGRlc3RDYXBhY2l0eSAgVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAobnVtYmVy
IG9mIFVDaGFycykuIElmIGl0IGlzIDAsIHRoZW4KLSAqICAgICAgICAgICAgICAgICAgICAgIGRl
c3QgbWF5IGJlIE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBsZW5n
dGggb2YgdGhlIAotICogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHdpdGhvdXQgd3JpdGlu
ZyBhbnkgb2YgdGhlIHJlc3VsdCBzdHJpbmcgKHByZS1mbGlnaHRpbmcpLgotICogQHBhcmFtIHBE
ZXN0TGVuZ3RoICAgQSBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIG51bWJlciBvZiB1bml0cyB3cml0
dGVuIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgCi0gKiAgICAgICAgICAgICAgICAgICAgICBwRGVz
dExlbmd0aCE9TlVMTCB0aGVuICpwRGVzdExlbmd0aCBpcyBhbHdheXMgc2V0IHRvIHRoZSAKLSAq
ICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBvdXRwdXQgdW5pdHMgY29ycmVzcG9uZGlu
ZyB0byB0aGUgdHJhbnNmb3JtYXRpb24gb2YgCi0gKiAgICAgICAgICAgICAgICAgICAgICBhbGwg
dGhlIGlucHV0IHVuaXRzLCBldmVuIGluIGNhc2Ugb2YgYSBidWZmZXIgb3ZlcmZsb3cuCi0gKiBA
cGFyYW0gc3JjICAgICAgICAgICBUaGUgb3JpZ2luYWwgc291cmNlIHN0cmluZwotICogQHBhcmFt
IHNyY0xlbmd0aCAgICAgVGhlIGxlbmd0aCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJZiAtMSwg
dGhlbiBzcmMgbXVzdCBiZSB6ZXJvLXRlcm1pbmF0ZWQuCi0gKiBAcGFyYW0gcEVycm9yQ29kZSAg
ICBNdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLAotICogICAg
ICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9y
ZSB0aGUgZnVuY3Rpb24gY2FsbC4KLSAqIEByZXR1cm4gVGhlIHBvaW50ZXIgdG8gZGVzdGluYXRp
b24gYnVmZmVyLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIFVDaGFyKiBVX0VY
UE9SVDIKLXVfc3RyRnJvbVVURjgoVUNoYXIgKmRlc3QsICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwKLSAgICAgICAgICAgICAgaW50MzJfdCAqcERlc3RM
ZW5ndGgsCi0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywgCi0gICAgICAgICAgICAgIGlu
dDMyX3Qgc3JjTGVuZ3RoLAotICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsK
LQotLyoqCi0gKiBDb252ZXJ0cyBhIHNlcXVlbmNlIG9mIFVDaGFycyAoVVRGLTE2KSB0byBVVEYz
MiB1bml0cy4KLSAqCi0gKiBAcGFyYW0gZGVzdCAgICAgICAgICBBIGJ1ZmZlciBmb3IgdGhlIHJl
c3VsdCBzdHJpbmcuIFRoZSByZXN1bHQgd2lsbCBiZSB6ZXJvLXRlcm1pbmF0ZWQgaWYKLSAqICAg
ICAgICAgICAgICAgICAgICAgIHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgotICogQHBhcmFt
IGRlc3RDYXBhY2l0eSAgVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAobnVtYmVyIG9mIFVDaGFyMzJz
KS4gSWYgaXQgaXMgMCwgdGhlbgotICogICAgICAgICAgICAgICAgICAgICAgZGVzdCBtYXkgYmUg
TlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgb25seSByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUg
Ci0gKiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgd2l0aG91dCB3cml0aW5nIGFueSBvZiB0
aGUgcmVzdWx0IHN0cmluZyAocHJlLWZsaWdodGluZykuCi0gKiBAcGFyYW0gcERlc3RMZW5ndGgg
ICBBIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgbnVtYmVyIG9mIHVuaXRzIHdyaXR0ZW4gdG8gdGhl
IGRlc3RpbmF0aW9uLiBJZiAKLSAqICAgICAgICAgICAgICAgICAgICAgIHBEZXN0TGVuZ3RoIT1O
VUxMIHRoZW4gKnBEZXN0TGVuZ3RoIGlzIGFsd2F5cyBzZXQgdG8gdGhlIAotICogICAgICAgICAg
ICAgICAgICAgICAgbnVtYmVyIG9mIG91dHB1dCB1bml0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0
cmFuc2Zvcm1hdGlvbiBvZiAKLSAqICAgICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgaW5wdXQg
dW5pdHMsIGV2ZW4gaW4gY2FzZSBvZiBhIGJ1ZmZlciBvdmVyZmxvdy4KLSAqIEBwYXJhbSBzcmMg
ICAgICAgICAgIFRoZSBvcmlnaW5hbCBzb3VyY2Ugc3RyaW5nCi0gKiBAcGFyYW0gc3JjTGVuZ3Ro
ICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcuIElmIC0xLCB0aGVuIHNyYyBt
dXN0IGJlIHplcm8tdGVybWluYXRlZC4KLSAqIEBwYXJhbSBwRXJyb3JDb2RlICAgIE11c3QgYmUg
YSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9yIGNvZGUgdmFsdWUsCi0gKiAgICAgICAgICAgICAg
ICAgICAgICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5j
dGlvbiBjYWxsLgotICogQHJldHVybiBUaGUgcG9pbnRlciB0byBkZXN0aW5hdGlvbiBidWZmZXIu
Ci0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUNoYXIzMiogVV9FWFBPUlQyIAot
dV9zdHJUb1VURjMyKFVDaGFyMzIgKmRlc3QsIAotICAgICAgICAgICAgIGludDMyX3QgIGRlc3RD
YXBhY2l0eSwKLSAgICAgICAgICAgICBpbnQzMl90ICAqcERlc3RMZW5ndGgsCi0gICAgICAgICAg
ICAgY29uc3QgVUNoYXIgKnNyYywgCi0gICAgICAgICAgICAgaW50MzJfdCAgc3JjTGVuZ3RoLAot
ICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwotCi0vKioKLSAqIENvbnZlcnRz
IGEgc2VxdWVuY2Ugb2YgVVRGMzIgdW5pdHMgdG8gVUNoYXJzIChVVEYtMTYpCi0gKgotICogQHBh
cmFtIGRlc3QgICAgICAgICAgQSBidWZmZXIgZm9yIHRoZSByZXN1bHQgc3RyaW5nLiBUaGUgcmVz
dWx0IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCi0gKiAgICAgICAgICAgICAgICAgICAgICB0
aGUgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KLSAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgIFRoZSBz
aXplIG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiBVQ2hhcnMpLiBJZiBpdCBpcyAwLCB0aGVuCi0g
KiAgICAgICAgICAgICAgICAgICAgICBkZXN0IG1heSBiZSBOVUxMIGFuZCB0aGUgZnVuY3Rpb24g
d2lsbCBvbmx5IHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSAKLSAqICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCB3aXRob3V0IHdyaXRpbmcgYW55IG9mIHRoZSByZXN1bHQgc3RyaW5nIChwcmUt
ZmxpZ2h0aW5nKS4KLSAqIEBwYXJhbSBwRGVzdExlbmd0aCAgIEEgcG9pbnRlciB0byByZWNlaXZl
IHRoZSBudW1iZXIgb2YgdW5pdHMgd3JpdHRlbiB0byB0aGUgZGVzdGluYXRpb24uIElmIAotICog
ICAgICAgICAgICAgICAgICAgICAgcERlc3RMZW5ndGghPU5VTEwgdGhlbiAqcERlc3RMZW5ndGgg
aXMgYWx3YXlzIHNldCB0byB0aGUgCi0gKiAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Yg
b3V0cHV0IHVuaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRyYW5zZm9ybWF0aW9uIG9mIAotICog
ICAgICAgICAgICAgICAgICAgICAgYWxsIHRoZSBpbnB1dCB1bml0cywgZXZlbiBpbiBjYXNlIG9m
IGEgYnVmZmVyIG92ZXJmbG93LgotICogQHBhcmFtIHNyYyAgICAgICAgICAgVGhlIG9yaWdpbmFs
IHNvdXJjZSBzdHJpbmcKLSAqIEBwYXJhbSBzcmNMZW5ndGggICAgIFRoZSBsZW5ndGggb2YgdGhl
IG9yaWdpbmFsIHN0cmluZy4gSWYgLTEsIHRoZW4gc3JjIG11c3QgYmUgemVyby10ZXJtaW5hdGVk
LgotICogQHBhcmFtIHBFcnJvckNvZGUgICAgTXVzdCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYW4g
ZXJyb3IgY29kZSB2YWx1ZSwKLSAqICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90
IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCi0gKiBAcmV0dXJu
IFRoZSBwb2ludGVyIHRvIGRlc3RpbmF0aW9uIGJ1ZmZlci4KLSAqIEBzdGFibGUgSUNVIDIuMAot
ICovCi1VX1NUQUJMRSBVQ2hhciogVV9FWFBPUlQyIAotdV9zdHJGcm9tVVRGMzIoVUNoYXIgICAq
ZGVzdCwKLSAgICAgICAgICAgICAgIGludDMyX3QgZGVzdENhcGFjaXR5LCAKLSAgICAgICAgICAg
ICAgIGludDMyX3QgKnBEZXN0TGVuZ3RoLAotICAgICAgICAgICAgICAgY29uc3QgVUNoYXIzMiAq
c3JjLAotICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCi0gICAgICAgICAgICAgICBV
RXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQotI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9p
Y3UvdW5pY29kZS91dGY4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNv
ZGUvdXRmOC5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2Rl
L3V0ZjguaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MjcgKzAsMCBAQAotLyoKLSoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKLSoKLSogICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNCwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcwotKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmln
aHRzIFJlc2VydmVkLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIGZpbGUgbmFtZTog
IHV0ZjguaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCi0qICAgdGFiIHNpemU6ICAgOCAobm90
IHVzZWQpCi0qICAgaW5kZW50YXRpb246NAotKgotKiAgIGNyZWF0ZWQgb246IDE5OTlzZXAxMwot
KiAgIGNyZWF0ZWQgYnk6IE1hcmt1cyBXLiBTY2hlcmVyCi0qLwotCi0vKioKLSAqIFxmaWxlCi0g
KiBcYnJpZWYgQyBBUEk6IDgtYml0IFVuaWNvZGUgaGFuZGxpbmcgbWFjcm9zCi0gKiAKLSAqIFRo
aXMgZmlsZSBkZWZpbmVzIG1hY3JvcyB0byBkZWFsIHdpdGggOC1iaXQgVW5pY29kZSAoVVRGLTgp
IGNvZGUgdW5pdHMgKGJ5dGVzKSBhbmQgc3RyaW5ncy4KLSAqIHV0ZjguaCBpcyBpbmNsdWRlZCBi
eSB1dGYuaCBhZnRlciB1bmljb2RlL3VtYWNoaW5lLmgKLSAqIGFuZCBzb21lIGNvbW1vbiBkZWZp
bml0aW9ucy4KLSAqCi0gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdXRmLmggYW5kIHRoZSBJ
Q1UgVXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0ZXIKLSAqIChodHRwOi8vb3NzLnNvZnR3YXJlLmli
bS5jb20vaWN1L3VzZXJndWlkZS8pLgotICoKLSAqIDxlbT5Vc2FnZTo8L2VtPgotICogSUNVIGNv
ZGluZyBndWlkZWxpbmVzIGZvciBpZigpIHN0YXRlbWVudHMgc2hvdWxkIGJlIGZvbGxvd2VkIHdo
ZW4gdXNpbmcgdGhlc2UgbWFjcm9zLgotICogQ29tcG91bmQgc3RhdGVtZW50cyAoY3VybHkgYnJh
Y2VzIHt9KSBtdXN0IGJlIHVzZWQgIGZvciBpZi1lbHNlLXdoaWxlLi4uIAotICogYm9kaWVzIGFu
ZCBhbGwgbWFjcm8gc3RhdGVtZW50cyBzaG91bGQgYmUgdGVybWluYXRlZCB3aXRoIHNlbWljb2xv
bi4KLSAqLwotCi0jaWZuZGVmIF9fVVRGOF9IX18KLSNkZWZpbmUgX19VVEY4X0hfXwotCi0vKiB1
dGYuaCBtdXN0IGJlIGluY2x1ZGVkIGZpcnN0LiAqLwotI2lmbmRlZiBfX1VURl9IX18KLSMgICBp
bmNsdWRlICJ1bmljb2RlL3V0Zi5oIgotI2VuZGlmCi0KLS8qIGludGVybmFsIGRlZmluaXRpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICov
Ci0KLS8qKgotICogXHZhciB1dGY4X2NvdW50VHJhaWxCeXRlcwotICogSW50ZXJuYWwgYXJyYXkg
d2l0aCBudW1iZXJzIG9mIHRyYWlsIGJ5dGVzIGZvciBhbnkgZ2l2ZW4gYnl0ZSB1c2VkIGluCi0g
KiBsZWFkIGJ5dGUgcG9zaXRpb24uCi0gKiBAaW50ZXJuYWwKLSAqLwotI2lmZGVmIFVfVVRGOF9J
TVBMCi1VX0lOVEVSTkFMIGNvbnN0IHVpbnQ4X3QgCi0jZWxpZiBkZWZpbmVkKFVfU1RBVElDX0lN
UExFTUVOVEFUSU9OKQotVV9DRlVOQyBjb25zdCB1aW50OF90Ci0jZWxzZQotVV9DRlVOQyBVX0lN
UE9SVCBjb25zdCB1aW50OF90IC8qIFVfSU1QT1JUMj8gKi8gLypVX0lNUE9SVCovIAotI2VuZGlm
Ci11dGY4X2NvdW50VHJhaWxCeXRlc1syNTZdOwotCi0vKioKLSAqIENvdW50IHRoZSB0cmFpbCBi
eXRlcyBmb3IgYSBVVEYtOCBsZWFkIGJ5dGUuCi0gKiBAaW50ZXJuYWwKLSAqLwotI2RlZmluZSBV
OF9DT1VOVF9UUkFJTF9CWVRFUyhsZWFkQnl0ZSkgKHV0ZjhfY291bnRUcmFpbEJ5dGVzWyh1aW50
OF90KWxlYWRCeXRlXSkKLQotLyoqCi0gKiBNYXNrIGEgVVRGLTggbGVhZCBieXRlLCBsZWF2ZSBv
bmx5IHRoZSBsb3dlciBiaXRzIHRoYXQgZm9ybSBwYXJ0IG9mIHRoZSBjb2RlIHBvaW50IHZhbHVl
LgotICogQGludGVybmFsCi0gKi8KLSNkZWZpbmUgVThfTUFTS19MRUFEX0JZVEUobGVhZEJ5dGUs
IGNvdW50VHJhaWxCeXRlcykgKChsZWFkQnl0ZSkmPSgxPDwoNi0oY291bnRUcmFpbEJ5dGVzKSkp
LTEpCi0KLS8qKgotICogRnVuY3Rpb24gZm9yIGhhbmRsaW5nICJuZXh0IGNvZGUgcG9pbnQiIHdp
dGggZXJyb3ItY2hlY2tpbmcuCi0gKiBAaW50ZXJuYWwKLSAqLwotVV9JTlRFUk5BTCBVQ2hhcjMy
IFVfRVhQT1JUMgotdXRmOF9uZXh0Q2hhclNhZmVCb2R5KGNvbnN0IHVpbnQ4X3QgKnMsIGludDMy
X3QgKnBpLCBpbnQzMl90IGxlbmd0aCwgVUNoYXIzMiBjLCBVQm9vbCBzdHJpY3QpOwotCi0vKioK
LSAqIEZ1bmN0aW9uIGZvciBoYW5kbGluZyAiYXBwZW5kIGNvZGUgcG9pbnQiIHdpdGggZXJyb3It
Y2hlY2tpbmcuCi0gKiBAaW50ZXJuYWwKLSAqLwotVV9JTlRFUk5BTCBpbnQzMl90IFVfRVhQT1JU
MgotdXRmOF9hcHBlbmRDaGFyU2FmZUJvZHkodWludDhfdCAqcywgaW50MzJfdCBpLCBpbnQzMl90
IGxlbmd0aCwgVUNoYXIzMiBjLCBVQm9vbCAqcElzRXJyb3IpOwotCi0vKioKLSAqIEZ1bmN0aW9u
IGZvciBoYW5kbGluZyAicHJldmlvdXMgY29kZSBwb2ludCIgd2l0aCBlcnJvci1jaGVja2luZy4K
LSAqIEBpbnRlcm5hbAotICovCi1VX0lOVEVSTkFMIFVDaGFyMzIgVV9FWFBPUlQyCi11dGY4X3By
ZXZDaGFyU2FmZUJvZHkoY29uc3QgdWludDhfdCAqcywgaW50MzJfdCBzdGFydCwgaW50MzJfdCAq
cGksIFVDaGFyMzIgYywgVUJvb2wgc3RyaWN0KTsKLQotLyoqCi0gKiBGdW5jdGlvbiBmb3IgaGFu
ZGxpbmcgInNraXAgYmFja3dhcmQgb25lIGNvZGUgcG9pbnQiIHdpdGggZXJyb3ItY2hlY2tpbmcu
Ci0gKiBAaW50ZXJuYWwKLSAqLwotVV9JTlRFUk5BTCBpbnQzMl90IFVfRVhQT1JUMgotdXRmOF9i
YWNrMVNhZmVCb2R5KGNvbnN0IHVpbnQ4X3QgKnMsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7
Ci0KLS8qIHNpbmdsZS1jb2RlIHBvaW50IGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qKgotICogRG9lcyB0aGlzIGNvZGUgdW5p
dCAoYnl0ZSkgZW5jb2RlIGEgY29kZSBwb2ludCBieSBpdHNlbGYgKFVTLUFTQ0lJIDAuLjB4N2Yp
PwotICogQHBhcmFtIGMgOC1iaXQgY29kZSB1bml0IChieXRlKQotICogQHJldHVybiBUUlVFIG9y
IEZBTFNFCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVOF9JU19TSU5HTEUoYykg
KCgoYykmMHg4MCk9PTApCi0KLS8qKgotICogSXMgdGhpcyBjb2RlIHVuaXQgKGJ5dGUpIGEgVVRG
LTggbGVhZCBieXRlPwotICogQHBhcmFtIGMgOC1iaXQgY29kZSB1bml0IChieXRlKQotICogQHJl
dHVybiBUUlVFIG9yIEZBTFNFCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVOF9J
U19MRUFEKGMpICgodWludDhfdCkoKGMpLTB4YzApPDB4M2UpCi0KLS8qKgotICogSXMgdGhpcyBj
b2RlIHVuaXQgKGJ5dGUpIGEgVVRGLTggdHJhaWwgYnl0ZT8KLSAqIEBwYXJhbSBjIDgtYml0IGNv
ZGUgdW5pdCAoYnl0ZSkKLSAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQotICogQHN0YWJsZSBJQ1Ug
Mi40Ci0gKi8KLSNkZWZpbmUgVThfSVNfVFJBSUwoYykgKCgoYykmMHhjMCk9PTB4ODApCi0KLS8q
KgotICogSG93IG1hbnkgY29kZSB1bml0cyAoYnl0ZXMpIGFyZSB1c2VkIGZvciB0aGUgVVRGLTgg
ZW5jb2RpbmcKLSAqIG9mIHRoaXMgVW5pY29kZSBjb2RlIHBvaW50PwotICogQHBhcmFtIGMgMzIt
Yml0IGNvZGUgcG9pbnQKLSAqIEByZXR1cm4gMS4uNCwgb3IgMCBpZiBjIGlzIGEgc3Vycm9nYXRl
IG9yIG5vdCBhIFVuaWNvZGUgY29kZSBwb2ludAotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNk
ZWZpbmUgVThfTEVOR1RIKGMpIFwKLSAgICAoKHVpbnQzMl90KShjKTw9MHg3ZiA/IDEgOiBcCi0g
ICAgICAgICgodWludDMyX3QpKGMpPD0weDdmZiA/IDIgOiBcCi0gICAgICAgICAgICAoKHVpbnQz
Ml90KShjKTw9MHhkN2ZmID8gMyA6IFwKLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KShjKTw9
MHhkZmZmIHx8ICh1aW50MzJfdCkoYyk+MHgxMGZmZmYgPyAwIDogXAotICAgICAgICAgICAgICAg
ICAgICAoKHVpbnQzMl90KShjKTw9MHhmZmZmID8gMyA6IDQpXAotICAgICAgICAgICAgICAgICkg
XAotICAgICAgICAgICAgKSBcCi0gICAgICAgICkgXAotICAgICkKLQotLyoqCi0gKiBUaGUgbWF4
aW11bSBudW1iZXIgb2YgVVRGLTggY29kZSB1bml0cyAoYnl0ZXMpIHBlciBVbmljb2RlIGNvZGUg
cG9pbnQgKFUrMDAwMC4uVSsxMGZmZmYpLgotICogQHJldHVybiA0Ci0gKiBAc3RhYmxlIElDVSAy
LjQKLSAqLwotI2RlZmluZSBVOF9NQVhfTEVOR1RIIDQKLQotLyoqCi0gKiBHZXQgYSBjb2RlIHBv
aW50IGZyb20gYSBzdHJpbmcgYXQgYSByYW5kb20tYWNjZXNzIG9mZnNldCwKLSAqIHdpdGhvdXQg
Y2hhbmdpbmcgdGhlIG9mZnNldC4KLSAqIFRoZSBvZmZzZXQgbWF5IHBvaW50IHRvIGVpdGhlciB0
aGUgbGVhZCBieXRlIG9yIG9uZSBvZiB0aGUgdHJhaWwgYnl0ZXMKLSAqIGZvciBhIGNvZGUgcG9p
bnQsIGluIHdoaWNoIGNhc2UgdGhlIG1hY3JvIHdpbGwgcmVhZCBhbGwgb2YgdGhlIGJ5dGVzCi0g
KiBmb3IgdGhlIGNvZGUgcG9pbnQuCi0gKiBUaGUgcmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUg
b2Zmc2V0IHBvaW50cyB0byBhbiBpbGxlZ2FsIFVURi04Ci0gKiBieXRlIHNlcXVlbmNlLgotICog
SXRlcmF0aW9uIHRocm91Z2ggYSBzdHJpbmcgaXMgbW9yZSBlZmZpY2llbnQgd2l0aCBVOF9ORVhU
X1VOU0FGRSBvciBVOF9ORVhULgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJp
bmcKLSAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKLSAqIEBwYXJhbSBjIG91dHB1dCBVQ2hhcjMy
IHZhcmlhYmxlCi0gKiBAc2VlIFU4X0dFVAotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZp
bmUgVThfR0VUX1VOU0FGRShzLCBpLCBjKSB7IFwKLSAgICBpbnQzMl90IF91OF9nZXRfdW5zYWZl
X2luZGV4PShpbnQzMl90KShpKTsgXAotICAgIFU4X1NFVF9DUF9TVEFSVF9VTlNBRkUocywgX3U4
X2dldF91bnNhZmVfaW5kZXgpOyBcCi0gICAgVThfTkVYVF9VTlNBRkUocywgX3U4X2dldF91bnNh
ZmVfaW5kZXgsIGMpOyBcCi19Ci0KLS8qKgotICogR2V0IGEgY29kZSBwb2ludCBmcm9tIGEgc3Ry
aW5nIGF0IGEgcmFuZG9tLWFjY2VzcyBvZmZzZXQsCi0gKiB3aXRob3V0IGNoYW5naW5nIHRoZSBv
ZmZzZXQuCi0gKiBUaGUgb2Zmc2V0IG1heSBwb2ludCB0byBlaXRoZXIgdGhlIGxlYWQgYnl0ZSBv
ciBvbmUgb2YgdGhlIHRyYWlsIGJ5dGVzCi0gKiBmb3IgYSBjb2RlIHBvaW50LCBpbiB3aGljaCBj
YXNlIHRoZSBtYWNybyB3aWxsIHJlYWQgYWxsIG9mIHRoZSBieXRlcwotICogZm9yIHRoZSBjb2Rl
IHBvaW50LgotICogSWYgdGhlIG9mZnNldCBwb2ludHMgdG8gYW4gaWxsZWdhbCBVVEYtOCBieXRl
IHNlcXVlbmNlLCB0aGVuCi0gKiBjIGlzIHNldCB0byBhIG5lZ2F0aXZlIHZhbHVlLgotICogSXRl
cmF0aW9uIHRocm91Z2ggYSBzdHJpbmcgaXMgbW9yZSBlZmZpY2llbnQgd2l0aCBVOF9ORVhUX1VO
U0FGRSBvciBVOF9ORVhULgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcK
LSAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBzdHJpbmcgb2Zmc2V0Ci0gKiBAcGFyYW0gaSBzdHJp
bmcgb2Zmc2V0LCBzdGFydDw9aTxsZW5ndGgKLSAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0
aAotICogQHBhcmFtIGMgb3V0cHV0IFVDaGFyMzIgdmFyaWFibGUsIHNldCB0byA8MCBpbiBjYXNl
IG9mIGFuIGVycm9yCi0gKiBAc2VlIFU4X0dFVF9VTlNBRkUKLSAqIEBzdGFibGUgSUNVIDIuNAot
ICovCi0jZGVmaW5lIFU4X0dFVChzLCBzdGFydCwgaSwgbGVuZ3RoLCBjKSB7IFwKLSAgICBpbnQz
Ml90IF91OF9nZXRfaW5kZXg9KGludDMyX3QpKGkpOyBcCi0gICAgVThfU0VUX0NQX1NUQVJUKHMs
IHN0YXJ0LCBfdThfZ2V0X2luZGV4KTsgXAotICAgIFU4X05FWFQocywgX3U4X2dldF9pbmRleCwg
bGVuZ3RoLCBjKTsgXAotfQotCi0vKiBkZWZpbml0aW9ucyB3aXRoIGZvcndhcmQgaXRlcmF0aW9u
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKioKLSAqIEdl
dCBhIGNvZGUgcG9pbnQgZnJvbSBhIHN0cmluZyBhdCBhIGNvZGUgcG9pbnQgYm91bmRhcnkgb2Zm
c2V0LAotICogYW5kIGFkdmFuY2UgdGhlIG9mZnNldCB0byB0aGUgbmV4dCBjb2RlIHBvaW50IGJv
dW5kYXJ5LgotICogKFBvc3QtaW5jcmVtZW50aW5nIGZvcndhcmQgaXRlcmF0aW9uLikKLSAqICJV
bnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi04LgotICoKLSAqIFRoZSBvZmZz
ZXQgbWF5IHBvaW50IHRvIHRoZSBsZWFkIGJ5dGUgb2YgYSBtdWx0aS1ieXRlIHNlcXVlbmNlLAot
ICogaW4gd2hpY2ggY2FzZSB0aGUgbWFjcm8gd2lsbCByZWFkIHRoZSB3aG9sZSBzZXF1ZW5jZS4K
LSAqIFRoZSByZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgdHJh
aWwgYnl0ZQotICogb3IgYW4gaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZS4KLSAqCi0gKiBAcGFyYW0g
cyBjb25zdCB1aW50OF90ICogc3RyaW5nCi0gKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0Ci0gKiBA
cGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJpYWJsZQotICogQHNlZSBVOF9ORVhUCi0gKiBAc3Rh
YmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVOF9ORVhUX1VOU0FGRShzLCBpLCBjKSB7IFwKLSAg
ICAoYyk9KHMpWyhpKSsrXTsgXAotICAgIGlmKCh1aW50OF90KSgoYyktMHhjMCk8MHgzNSkgeyBc
Ci0gICAgICAgIHVpbnQ4X3QgX19jb3VudD1VOF9DT1VOVF9UUkFJTF9CWVRFUyhjKTsgXAotICAg
ICAgICBVOF9NQVNLX0xFQURfQllURShjLCBfX2NvdW50KTsgXAotICAgICAgICBzd2l0Y2goX19j
b3VudCkgeyBcCi0gICAgICAgIC8qIGVhY2ggZm9sbG93aW5nIGJyYW5jaCBmYWxscyB0aHJvdWdo
IHRvIHRoZSBuZXh0IG9uZSAqLyBcCi0gICAgICAgIGNhc2UgMzogXAotICAgICAgICAgICAgKGMp
PSgoYyk8PDYpfCgocylbKGkpKytdJjB4M2YpOyBcCi0gICAgICAgIGNhc2UgMjogXAotICAgICAg
ICAgICAgKGMpPSgoYyk8PDYpfCgocylbKGkpKytdJjB4M2YpOyBcCi0gICAgICAgIGNhc2UgMTog
XAotICAgICAgICAgICAgKGMpPSgoYyk8PDYpfCgocylbKGkpKytdJjB4M2YpOyBcCi0gICAgICAg
IC8qIG5vIG90aGVyIGJyYW5jaGVzIHRvIG9wdGltaXplIHN3aXRjaCgpICovIFwKLSAgICAgICAg
ICAgIGJyZWFrOyBcCi0gICAgICAgIH0gXAotICAgIH0gXAotfQotCi0vKioKLSAqIEdldCBhIGNv
ZGUgcG9pbnQgZnJvbSBhIHN0cmluZyBhdCBhIGNvZGUgcG9pbnQgYm91bmRhcnkgb2Zmc2V0LAot
ICogYW5kIGFkdmFuY2UgdGhlIG9mZnNldCB0byB0aGUgbmV4dCBjb2RlIHBvaW50IGJvdW5kYXJ5
LgotICogKFBvc3QtaW5jcmVtZW50aW5nIGZvcndhcmQgaXRlcmF0aW9uLikKLSAqICJTYWZlIiBt
YWNybywgY2hlY2tzIGZvciBpbGxlZ2FsIHNlcXVlbmNlcyBhbmQgZm9yIHN0cmluZyBib3VuZGFy
aWVzLgotICoKLSAqIFRoZSBvZmZzZXQgbWF5IHBvaW50IHRvIHRoZSBsZWFkIGJ5dGUgb2YgYSBt
dWx0aS1ieXRlIHNlcXVlbmNlLAotICogaW4gd2hpY2ggY2FzZSB0aGUgbWFjcm8gd2lsbCByZWFk
IHRoZSB3aG9sZSBzZXF1ZW5jZS4KLSAqIElmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgdHJhaWwg
Ynl0ZSBvciBhbiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlLCB0aGVuCi0gKiBjIGlzIHNldCB0byBh
IG5lZ2F0aXZlIHZhbHVlLgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcK
LSAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQsIGk8bGVuZ3RoCi0gKiBAcGFyYW0gbGVuZ3RoIHN0
cmluZyBsZW5ndGgKLSAqIEBwYXJhbSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlhYmxlLCBzZXQgdG8g
PDAgaW4gY2FzZSBvZiBhbiBlcnJvcgotICogQHNlZSBVOF9ORVhUX1VOU0FGRQotICogQHN0YWJs
ZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVThfTkVYVChzLCBpLCBsZW5ndGgsIGMpIHsgXAotICAg
IChjKT0ocylbKGkpKytdOyBcCi0gICAgaWYoKCh1aW50OF90KShjKSk+PTB4ODApIHsgXAotICAg
ICAgICBpZihVOF9JU19MRUFEKGMpKSB7IFwKLSAgICAgICAgICAgIChjKT11dGY4X25leHRDaGFy
U2FmZUJvZHkoKGNvbnN0IHVpbnQ4X3QgKilzLCAmKGkpLCAoaW50MzJfdCkobGVuZ3RoKSwgYywg
LTEpOyBcCi0gICAgICAgIH0gZWxzZSB7IFwKLSAgICAgICAgICAgIChjKT1VX1NFTlRJTkVMOyBc
Ci0gICAgICAgIH0gXAotICAgIH0gXAotfQotCi0vKioKLSAqIEFwcGVuZCBhIGNvZGUgcG9pbnQg
dG8gYSBzdHJpbmcsIG92ZXJ3cml0aW5nIDEgdG8gNCBieXRlcy4KLSAqIFRoZSBvZmZzZXQgcG9p
bnRzIHRvIHRoZSBjdXJyZW50IGVuZCBvZiB0aGUgc3RyaW5nIGNvbnRlbnRzCi0gKiBhbmQgaXMg
YWR2YW5jZWQgKHBvc3QtaW5jcmVtZW50KS4KLSAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIGEg
dmFsaWQgY29kZSBwb2ludCBhbmQgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUgc3RyaW5nLgotICog
T3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIHVuZGVmaW5lZC4KLSAqCi0gKiBAcGFyYW0gcyBjb25z
dCB1aW50OF90ICogc3RyaW5nIGJ1ZmZlcgotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAotICog
QHBhcmFtIGMgY29kZSBwb2ludCB0byBhcHBlbmQKLSAqIEBzZWUgVThfQVBQRU5ECi0gKiBAc3Rh
YmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVOF9BUFBFTkRfVU5TQUZFKHMsIGksIGMpIHsgXAot
ICAgIGlmKCh1aW50MzJfdCkoYyk8PTB4N2YpIHsgXAotICAgICAgICAocylbKGkpKytdPSh1aW50
OF90KShjKTsgXAotICAgIH0gZWxzZSB7IFwKLSAgICAgICAgaWYoKHVpbnQzMl90KShjKTw9MHg3
ZmYpIHsgXAotICAgICAgICAgICAgKHMpWyhpKSsrXT0odWludDhfdCkoKChjKT4+Nil8MHhjMCk7
IFwKLSAgICAgICAgfSBlbHNlIHsgXAotICAgICAgICAgICAgaWYoKHVpbnQzMl90KShjKTw9MHhm
ZmZmKSB7IFwKLSAgICAgICAgICAgICAgICAocylbKGkpKytdPSh1aW50OF90KSgoKGMpPj4xMil8
MHhlMCk7IFwKLSAgICAgICAgICAgIH0gZWxzZSB7IFwKLSAgICAgICAgICAgICAgICAocylbKGkp
KytdPSh1aW50OF90KSgoKGMpPj4xOCl8MHhmMCk7IFwKLSAgICAgICAgICAgICAgICAocylbKGkp
KytdPSh1aW50OF90KSgoKChjKT4+MTIpJjB4M2YpfDB4ODApOyBcCi0gICAgICAgICAgICB9IFwK
LSAgICAgICAgICAgIChzKVsoaSkrK109KHVpbnQ4X3QpKCgoKGMpPj42KSYweDNmKXwweDgwKTsg
XAotICAgICAgICB9IFwKLSAgICAgICAgKHMpWyhpKSsrXT0odWludDhfdCkoKChjKSYweDNmKXww
eDgwKTsgXAotICAgIH0gXAotfQotCi0vKioKLSAqIEFwcGVuZCBhIGNvZGUgcG9pbnQgdG8gYSBz
dHJpbmcsIG92ZXJ3cml0aW5nIDEgb3IgMiBjb2RlIHVuaXRzLgotICogVGhlIG9mZnNldCBwb2lu
dHMgdG8gdGhlIGN1cnJlbnQgZW5kIG9mIHRoZSBzdHJpbmcgY29udGVudHMKLSAqIGFuZCBpcyBh
ZHZhbmNlZCAocG9zdC1pbmNyZW1lbnQpLgotICogIlNhZmUiIG1hY3JvLCBjaGVja3MgZm9yIGEg
dmFsaWQgY29kZSBwb2ludC4KLSAqIElmIGEgbm9uLUFTQ0lJIGNvZGUgcG9pbnQgaXMgd3JpdHRl
biwgY2hlY2tzIGZvciBzdWZmaWNpZW50IHNwYWNlIGluIHRoZSBzdHJpbmcuCi0gKiBJZiB0aGUg
Y29kZSBwb2ludCBpcyBub3QgdmFsaWQgb3IgdHJhaWwgYnl0ZXMgZG8gbm90IGZpdCwKLSAqIHRo
ZW4gaXNFcnJvciBpcyBzZXQgdG8gVFJVRS4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCB1aW50OF90
ICogc3RyaW5nIGJ1ZmZlcgotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgaTxsZW5ndGgKLSAq
IEBwYXJhbSBsZW5ndGggc2l6ZSBvZiB0aGUgc3RyaW5nIGJ1ZmZlcgotICogQHBhcmFtIGMgY29k
ZSBwb2ludCB0byBhcHBlbmQKLSAqIEBwYXJhbSBpc0Vycm9yIG91dHB1dCBVQm9vbCBzZXQgdG8g
VFJVRSBpZiBhbiBlcnJvciBvY2N1cnMsIG90aGVyd2lzZSBub3QgbW9kaWZpZWQKLSAqIEBzZWUg
VThfQVBQRU5EX1VOU0FGRQotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVThfQVBQ
RU5EKHMsIGksIGxlbmd0aCwgYywgaXNFcnJvcikgeyBcCi0gICAgaWYoKHVpbnQzMl90KShjKTw9
MHg3ZikgeyBcCi0gICAgICAgIChzKVsoaSkrK109KHVpbnQ4X3QpKGMpOyBcCi0gICAgfSBlbHNl
IHsgXAotICAgICAgICAoaSk9dXRmOF9hcHBlbmRDaGFyU2FmZUJvZHkocywgKGludDMyX3QpKGkp
LCAoaW50MzJfdCkobGVuZ3RoKSwgYywgJihpc0Vycm9yKSk7IFwKLSAgICB9IFwKLX0KLQotLyoq
Ci0gKiBBZHZhbmNlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRh
cnkgdG8gdGhlIG5leHQuCi0gKiAoUG9zdC1pbmNyZW1lbnRpbmcgaXRlcmF0aW9uLikKLSAqICJV
bnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi04LgotICoKLSAqIEBwYXJhbSBz
IGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKLSAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKLSAqIEBz
ZWUgVThfRldEXzEKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVmaW5lIFU4X0ZXRF8xX1VO
U0FGRShzLCBpKSB7IFwKLSAgICAoaSkrPTErVThfQ09VTlRfVFJBSUxfQllURVMoKHMpW2ldKTsg
XAotfQotCi0vKioKLSAqIEFkdmFuY2UgdGhlIHN0cmluZyBvZmZzZXQgZnJvbSBvbmUgY29kZSBw
b2ludCBib3VuZGFyeSB0byB0aGUgbmV4dC4KLSAqIChQb3N0LWluY3JlbWVudGluZyBpdGVyYXRp
b24uKQotICogIlNhZmUiIG1hY3JvLCBjaGVja3MgZm9yIGlsbGVnYWwgc2VxdWVuY2VzIGFuZCBm
b3Igc3RyaW5nIGJvdW5kYXJpZXMuCi0gKgotICogQHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0
cmluZwotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgaTxsZW5ndGgKLSAqIEBwYXJhbSBsZW5n
dGggc3RyaW5nIGxlbmd0aAotICogQHNlZSBVOF9GV0RfMV9VTlNBRkUKLSAqIEBzdGFibGUgSUNV
IDIuNAotICovCi0jZGVmaW5lIFU4X0ZXRF8xKHMsIGksIGxlbmd0aCkgeyBcCi0gICAgdWludDhf
dCBfX2I9KHMpWyhpKSsrXTsgXAotICAgIGlmKFU4X0lTX0xFQUQoX19iKSkgeyBcCi0gICAgICAg
IHVpbnQ4X3QgX19jb3VudD1VOF9DT1VOVF9UUkFJTF9CWVRFUyhfX2IpOyBcCi0gICAgICAgIGlm
KChpKStfX2NvdW50PihsZW5ndGgpKSB7IFwKLSAgICAgICAgICAgIF9fY291bnQ9KHVpbnQ4X3Qp
KChsZW5ndGgpLShpKSk7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIHdoaWxlKF9fY291bnQ+MCAm
JiBVOF9JU19UUkFJTCgocylbaV0pKSB7IFwKLSAgICAgICAgICAgICsrKGkpOyBcCi0gICAgICAg
ICAgICAtLV9fY291bnQ7IFwKLSAgICAgICAgfSBcCi0gICAgfSBcCi19Ci0KLS8qKgotICogQWR2
YW5jZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRo
ZSBuLXRoIG5leHQgb25lLAotICogaS5lLiwgbW92ZSBmb3J3YXJkIGJ5IG4gY29kZSBwb2ludHMu
Ci0gKiAoUG9zdC1pbmNyZW1lbnRpbmcgaXRlcmF0aW9uLikKLSAqICJVbnNhZmUiIG1hY3JvLCBh
c3N1bWVzIHdlbGwtZm9ybWVkIFVURi04LgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3Qg
KiBzdHJpbmcKLSAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKLSAqIEBwYXJhbSBuIG51bWJlciBv
ZiBjb2RlIHBvaW50cyB0byBza2lwCi0gKiBAc2VlIFU4X0ZXRF9OCi0gKiBAc3RhYmxlIElDVSAy
LjQKLSAqLwotI2RlZmluZSBVOF9GV0RfTl9VTlNBRkUocywgaSwgbikgeyBcCi0gICAgaW50MzJf
dCBfX049KG4pOyBcCi0gICAgd2hpbGUoX19OPjApIHsgXAotICAgICAgICBVOF9GV0RfMV9VTlNB
RkUocywgaSk7IFwKLSAgICAgICAgLS1fX047IFwKLSAgICB9IFwKLX0KLQotLyoqCi0gKiBBZHZh
bmNlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhl
IG4tdGggbmV4dCBvbmUsCi0gKiBpLmUuLCBtb3ZlIGZvcndhcmQgYnkgbiBjb2RlIHBvaW50cy4K
LSAqIChQb3N0LWluY3JlbWVudGluZyBpdGVyYXRpb24uKQotICogIlNhZmUiIG1hY3JvLCBjaGVj
a3MgZm9yIGlsbGVnYWwgc2VxdWVuY2VzIGFuZCBmb3Igc3RyaW5nIGJvdW5kYXJpZXMuCi0gKgot
ICogQHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0cmluZwotICogQHBhcmFtIGkgc3RyaW5nIG9m
ZnNldCwgaTxsZW5ndGgKLSAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAotICogQHBhcmFt
IG4gbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRvIHNraXAKLSAqIEBzZWUgVThfRldEX05fVU5TQUZF
Ci0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVOF9GV0RfTihzLCBpLCBsZW5ndGgs
IG4pIHsgXAotICAgIGludDMyX3QgX19OPShuKTsgXAotICAgIHdoaWxlKF9fTj4wICYmIChpKTwo
bGVuZ3RoKSkgeyBcCi0gICAgICAgIFU4X0ZXRF8xKHMsIGksIGxlbmd0aCk7IFwKLSAgICAgICAg
LS1fX047IFwKLSAgICB9IFwKLX0KLQotLyoqCi0gKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9m
ZnNldCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkKLSAqIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUg
cG9pbnQuCi0gKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIFVURi04IHRyYWlsIGJ5dGUsCi0g
KiB0aGVuIHRoZSBvZmZzZXQgaXMgbW92ZWQgYmFja3dhcmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcg
bGVhZCBieXRlLgotICogT3RoZXJ3aXNlLCBpdCBpcyBub3QgbW9kaWZpZWQuCi0gKiAiVW5zYWZl
IiBtYWNybywgYXNzdW1lcyB3ZWxsLWZvcm1lZCBVVEYtOC4KLSAqCi0gKiBAcGFyYW0gcyBjb25z
dCB1aW50OF90ICogc3RyaW5nCi0gKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0Ci0gKiBAc2VlIFU4
X1NFVF9DUF9TVEFSVAotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVThfU0VUX0NQ
X1NUQVJUX1VOU0FGRShzLCBpKSB7IFwKLSAgICB3aGlsZShVOF9JU19UUkFJTCgocylbaV0pKSB7
IC0tKGkpOyB9IFwKLX0KLQotLyoqCi0gKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9mZnNldCB0
byBhIGNvZGUgcG9pbnQgYm91bmRhcnkKLSAqIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUgcG9pbnQu
Ci0gKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIFVURi04IHRyYWlsIGJ5dGUsCi0gKiB0aGVu
IHRoZSBvZmZzZXQgaXMgbW92ZWQgYmFja3dhcmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVhZCBi
eXRlLgotICogT3RoZXJ3aXNlLCBpdCBpcyBub3QgbW9kaWZpZWQuCi0gKiAiU2FmZSIgbWFjcm8s
IGNoZWNrcyBmb3IgaWxsZWdhbCBzZXF1ZW5jZXMgYW5kIGZvciBzdHJpbmcgYm91bmRhcmllcy4K
LSAqCi0gKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3RyaW5nCi0gKiBAcGFyYW0gc3RhcnQg
c3RhcnRpbmcgc3RyaW5nIG9mZnNldCAodXN1YWxseSAwKQotICogQHBhcmFtIGkgc3RyaW5nIG9m
ZnNldCwgc3RhcnQ8PWkKLSAqIEBzZWUgVThfU0VUX0NQX1NUQVJUX1VOU0FGRQotICogQHN0YWJs
ZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVThfU0VUX0NQX1NUQVJUKHMsIHN0YXJ0LCBpKSB7IFwK
LSAgICBpZihVOF9JU19UUkFJTCgocylbKGkpXSkpIHsgXAotICAgICAgICAoaSk9dXRmOF9iYWNr
MVNhZmVCb2R5KHMsIHN0YXJ0LCAoaW50MzJfdCkoaSkpOyBcCi0gICAgfSBcCi19Ci0KLS8qIGRl
ZmluaXRpb25zIHdpdGggYmFja3dhcmQgaXRlcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICovCi0KLS8qKgotICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9t
IG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUKLSAqIGFuZCBnZXQg
dGhlIGNvZGUgcG9pbnQgYmV0d2VlbiB0aGVtLgotICogKFByZS1kZWNyZW1lbnRpbmcgYmFja3dh
cmQgaXRlcmF0aW9uLikKLSAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVU
Ri04LgotICoKLSAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBzdHJp
bmcgbGVuZ3RoLgotICogSWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgYSBtdWx0aS1ieXRlIHNlcXVl
bmNlLCB0aGVuIHRoZSBtYWNybyB3aWxsIHJlYWQKLSAqIHRoZSB3aG9sZSBzZXF1ZW5jZS4KLSAq
IElmIHRoZSBvZmZzZXQgaXMgYmVoaW5kIGEgbGVhZCBieXRlLCB0aGVuIHRoYXQgaXRzZWxmCi0g
KiB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSBjb2RlIHBvaW50LgotICogVGhlIHJlc3VsdCBpcyB1
bmRlZmluZWQgaWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgYW4gaWxsZWdhbCBVVEYtOCBzZXF1ZW5j
ZS4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3RyaW5nCi0gKiBAcGFyYW0gaSBz
dHJpbmcgb2Zmc2V0Ci0gKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJpYWJsZQotICogQHNl
ZSBVOF9QUkVWCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVOF9QUkVWX1VOU0FG
RShzLCBpLCBjKSB7IFwKLSAgICAoYyk9KHMpWy0tKGkpXTsgXAotICAgIGlmKFU4X0lTX1RSQUlM
KGMpKSB7IFwKLSAgICAgICAgdWludDhfdCBfX2IsIF9fY291bnQ9MSwgX19zaGlmdD02OyBcCi1c
Ci0gICAgICAgIC8qIGMgaXMgYSB0cmFpbCBieXRlICovIFwKLSAgICAgICAgKGMpJj0weDNmOyBc
Ci0gICAgICAgIGZvcig7OykgeyBcCi0gICAgICAgICAgICBfX2I9KHMpWy0tKGkpXTsgXAotICAg
ICAgICAgICAgaWYoX19iPj0weGMwKSB7IFwKLSAgICAgICAgICAgICAgICBVOF9NQVNLX0xFQURf
QllURShfX2IsIF9fY291bnQpOyBcCi0gICAgICAgICAgICAgICAgKGMpfD0oVUNoYXIzMilfX2I8
PF9fc2hpZnQ7IFwKLSAgICAgICAgICAgICAgICBicmVhazsgXAotICAgICAgICAgICAgfSBlbHNl
IHsgXAotICAgICAgICAgICAgICAgIChjKXw9KFVDaGFyMzIpKF9fYiYweDNmKTw8X19zaGlmdDsg
XAotICAgICAgICAgICAgICAgICsrX19jb3VudDsgXAotICAgICAgICAgICAgICAgIF9fc2hpZnQr
PTY7IFwKLSAgICAgICAgICAgIH0gXAotICAgICAgICB9IFwKLSAgICB9IFwKLX0KLQotLyoqCi0g
KiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8g
dGhlIHByZXZpb3VzIG9uZQotICogYW5kIGdldCB0aGUgY29kZSBwb2ludCBiZXR3ZWVuIHRoZW0u
Ci0gKiAoUHJlLWRlY3JlbWVudGluZyBiYWNrd2FyZCBpdGVyYXRpb24uKQotICogIlNhZmUiIG1h
Y3JvLCBjaGVja3MgZm9yIGlsbGVnYWwgc2VxdWVuY2VzIGFuZCBmb3Igc3RyaW5nIGJvdW5kYXJp
ZXMuCi0gKgotICogVGhlIGlucHV0IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUgYXMgdGhlIHN0cmlu
ZyBsZW5ndGguCi0gKiBJZiB0aGUgb2Zmc2V0IGlzIGJlaGluZCBhIG11bHRpLWJ5dGUgc2VxdWVu
Y2UsIHRoZW4gdGhlIG1hY3JvIHdpbGwgcmVhZAotICogdGhlIHdob2xlIHNlcXVlbmNlLgotICog
SWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgYSBsZWFkIGJ5dGUsIHRoZW4gdGhhdCBpdHNlbGYKLSAq
IHdpbGwgYmUgcmV0dXJuZWQgYXMgdGhlIGNvZGUgcG9pbnQuCi0gKiBJZiB0aGUgb2Zmc2V0IGlz
IGJlaGluZCBhbiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlLCB0aGVuIGMgaXMgc2V0IHRvIGEgbmVn
YXRpdmUgdmFsdWUuCi0gKgotICogQHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0cmluZwotICog
QHBhcmFtIHN0YXJ0IHN0YXJ0aW5nIHN0cmluZyBvZmZzZXQgKHVzdWFsbHkgMCkKLSAqIEBwYXJh
bSBpIHN0cmluZyBvZmZzZXQsIHN0YXJ0PD1pCi0gKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2
YXJpYWJsZSwgc2V0IHRvIDwwIGluIGNhc2Ugb2YgYW4gZXJyb3IKLSAqIEBzZWUgVThfUFJFVl9V
TlNBRkUKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVmaW5lIFU4X1BSRVYocywgc3RhcnQs
IGksIGMpIHsgXAotICAgIChjKT0ocylbLS0oaSldOyBcCi0gICAgaWYoKGMpPj0weDgwKSB7IFwK
LSAgICAgICAgaWYoKGMpPD0weGJmKSB7IFwKLSAgICAgICAgICAgIChjKT11dGY4X3ByZXZDaGFy
U2FmZUJvZHkocywgc3RhcnQsICYoaSksIGMsIC0xKTsgXAotICAgICAgICB9IGVsc2UgeyBcCi0g
ICAgICAgICAgICAoYyk9VV9TRU5USU5FTDsgXAotICAgICAgICB9IFwKLSAgICB9IFwKLX0KLQot
LyoqCi0gKiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRh
cnkgdG8gdGhlIHByZXZpb3VzIG9uZS4KLSAqIChQcmUtZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0
ZXJhdGlvbi4pCi0gKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3Ry
aW5nIGxlbmd0aC4KLSAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi04
LgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKLSAqIEBwYXJhbSBpIHN0
cmluZyBvZmZzZXQKLSAqIEBzZWUgVThfQkFDS18xCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwot
I2RlZmluZSBVOF9CQUNLXzFfVU5TQUZFKHMsIGkpIHsgXAotICAgIHdoaWxlKFU4X0lTX1RSQUlM
KChzKVstLShpKV0pKSB7fSBcCi19Ci0KLS8qKgotICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBm
cm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUuCi0gKiAoUHJl
LWRlY3JlbWVudGluZyBiYWNrd2FyZCBpdGVyYXRpb24uKQotICogVGhlIGlucHV0IG9mZnNldCBt
YXkgYmUgdGhlIHNhbWUgYXMgdGhlIHN0cmluZyBsZW5ndGguCi0gKiAiU2FmZSIgbWFjcm8sIGNo
ZWNrcyBmb3IgaWxsZWdhbCBzZXF1ZW5jZXMgYW5kIGZvciBzdHJpbmcgYm91bmRhcmllcy4KLSAq
Ci0gKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3RyaW5nCi0gKiBAcGFyYW0gc3RhcnQgc3Rh
cnRpbmcgc3RyaW5nIG9mZnNldCAodXN1YWxseSAwKQotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNl
dCwgc3RhcnQ8PWkKLSAqIEBzZWUgVThfQkFDS18xX1VOU0FGRQotICogQHN0YWJsZSBJQ1UgMi40
Ci0gKi8KLSNkZWZpbmUgVThfQkFDS18xKHMsIHN0YXJ0LCBpKSB7IFwKLSAgICBpZihVOF9JU19U
UkFJTCgocylbLS0oaSldKSkgeyBcCi0gICAgICAgIChpKT11dGY4X2JhY2sxU2FmZUJvZHkocywg
c3RhcnQsIChpbnQzMl90KShpKSk7IFwKLSAgICB9IFwKLX0KLQotLyoqCi0gKiBNb3ZlIHRoZSBz
dHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGggb25l
IGJlZm9yZSBpdCwKLSAqIGkuZS4sIG1vdmUgYmFja3dhcmQgYnkgbiBjb2RlIHBvaW50cy4KLSAq
IChQcmUtZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCi0gKiBUaGUgaW5wdXQgb2Zm
c2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KLSAqICJVbnNhZmUiIG1h
Y3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi04LgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IHVp
bnQ4X3QgKiBzdHJpbmcKLSAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKLSAqIEBwYXJhbSBuIG51
bWJlciBvZiBjb2RlIHBvaW50cyB0byBza2lwCi0gKiBAc2VlIFU4X0JBQ0tfTgotICogQHN0YWJs
ZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVThfQkFDS19OX1VOU0FGRShzLCBpLCBuKSB7IFwKLSAg
ICBpbnQzMl90IF9fTj0obik7IFwKLSAgICB3aGlsZShfX04+MCkgeyBcCi0gICAgICAgIFU4X0JB
Q0tfMV9VTlNBRkUocywgaSk7IFwKLSAgICAgICAgLS1fX047IFwKLSAgICB9IFwKLX0KLQotLyoq
Ci0gKiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkg
dG8gdGhlIG4tdGggb25lIGJlZm9yZSBpdCwKLSAqIGkuZS4sIG1vdmUgYmFja3dhcmQgYnkgbiBj
b2RlIHBvaW50cy4KLSAqIChQcmUtZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCi0g
KiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4K
LSAqICJTYWZlIiBtYWNybywgY2hlY2tzIGZvciBpbGxlZ2FsIHNlcXVlbmNlcyBhbmQgZm9yIHN0
cmluZyBib3VuZGFyaWVzLgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcK
LSAqIEBwYXJhbSBzdGFydCBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZwotICogQHBh
cmFtIGkgc3RyaW5nIG9mZnNldCwgaTxsZW5ndGgKLSAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2Rl
IHBvaW50cyB0byBza2lwCi0gKiBAc2VlIFU4X0JBQ0tfTl9VTlNBRkUKLSAqIEBzdGFibGUgSUNV
IDIuNAotICovCi0jZGVmaW5lIFU4X0JBQ0tfTihzLCBzdGFydCwgaSwgbikgeyBcCi0gICAgaW50
MzJfdCBfX049KG4pOyBcCi0gICAgd2hpbGUoX19OPjAgJiYgKGkpPihzdGFydCkpIHsgXAotICAg
ICAgICBVOF9CQUNLXzEocywgc3RhcnQsIGkpOyBcCi0gICAgICAgIC0tX19OOyBcCi0gICAgfSBc
Ci19Ci0KLS8qKgotICogQWRqdXN0IGEgcmFuZG9tLWFjY2VzcyBvZmZzZXQgdG8gYSBjb2RlIHBv
aW50IGJvdW5kYXJ5IGFmdGVyIGEgY29kZSBwb2ludC4KLSAqIElmIHRoZSBvZmZzZXQgaXMgYmVo
aW5kIGEgcGFydGlhbCBtdWx0aS1ieXRlIHNlcXVlbmNlLAotICogdGhlbiB0aGUgb2Zmc2V0IGlz
IGluY3JlbWVudGVkIHRvIGJlaGluZCB0aGUgd2hvbGUgc2VxdWVuY2UuCi0gKiBPdGhlcndpc2Us
IGl0IGlzIG5vdCBtb2RpZmllZC4KLSAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1l
IGFzIHRoZSBzdHJpbmcgbGVuZ3RoLgotICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgd2VsbC1m
b3JtZWQgVVRGLTguCi0gKgotICogQHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0cmluZwotICog
QHBhcmFtIGkgc3RyaW5nIG9mZnNldAotICogQHNlZSBVOF9TRVRfQ1BfTElNSVQKLSAqIEBzdGFi
bGUgSUNVIDIuNAotICovCi0jZGVmaW5lIFU4X1NFVF9DUF9MSU1JVF9VTlNBRkUocywgaSkgeyBc
Ci0gICAgVThfQkFDS18xX1VOU0FGRShzLCBpKTsgXAotICAgIFU4X0ZXRF8xX1VOU0FGRShzLCBp
KTsgXAotfQotCi0vKioKLSAqIEFkanVzdCBhIHJhbmRvbS1hY2Nlc3Mgb2Zmc2V0IHRvIGEgY29k
ZSBwb2ludCBib3VuZGFyeSBhZnRlciBhIGNvZGUgcG9pbnQuCi0gKiBJZiB0aGUgb2Zmc2V0IGlz
IGJlaGluZCBhIHBhcnRpYWwgbXVsdGktYnl0ZSBzZXF1ZW5jZSwKLSAqIHRoZW4gdGhlIG9mZnNl
dCBpcyBpbmNyZW1lbnRlZCB0byBiZWhpbmQgdGhlIHdob2xlIHNlcXVlbmNlLgotICogT3RoZXJ3
aXNlLCBpdCBpcyBub3QgbW9kaWZpZWQuCi0gKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUg
c2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KLSAqICJTYWZlIiBtYWNybywgY2hlY2tzIGZvciBp
bGxlZ2FsIHNlcXVlbmNlcyBhbmQgZm9yIHN0cmluZyBib3VuZGFyaWVzLgotICoKLSAqIEBwYXJh
bSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKLSAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBzdHJp
bmcgb2Zmc2V0ICh1c3VhbGx5IDApCi0gKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBzdGFydDw9
aTw9bGVuZ3RoCi0gKiBAcGFyYW0gbGVuZ3RoIHN0cmluZyBsZW5ndGgKLSAqIEBzZWUgVThfU0VU
X0NQX0xJTUlUX1VOU0FGRQotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVThfU0VU
X0NQX0xJTUlUKHMsIHN0YXJ0LCBpLCBsZW5ndGgpIHsgXAotICAgIGlmKChzdGFydCk8KGkpICYm
IChpKTwobGVuZ3RoKSkgeyBcCi0gICAgICAgIFU4X0JBQ0tfMShzLCBzdGFydCwgaSk7IFwKLSAg
ICAgICAgVThfRldEXzEocywgaSwgbGVuZ3RoKTsgXAotICAgIH0gXAotfQotCi0jZW5kaWYKSW5k
ZXg6IEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V0ZjE2LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXRmMTYuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZh
U2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91dGYxNi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwNSAr
MCwwIEBACi0vKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKgotKiAgIENvcHlyaWdodCAoQykg
MTk5OS0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCi0qICAgQ29ycG9yYXRp
b24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0qCi0qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCi0qICAgZmlsZSBuYW1lOiAgdXRmMTYuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJ
Ci0qICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCi0qICAgaW5kZW50YXRpb246NAotKgotKiAg
IGNyZWF0ZWQgb246IDE5OTlzZXAwOQotKiAgIGNyZWF0ZWQgYnk6IE1hcmt1cyBXLiBTY2hlcmVy
Ci0qLwotCi0vKioKLSAqIFxmaWxlCi0gKiBcYnJpZWYgQyBBUEk6IDE2LWJpdCBVbmljb2RlIGhh
bmRsaW5nIG1hY3JvcwotICogCi0gKiBUaGlzIGZpbGUgZGVmaW5lcyBtYWNyb3MgdG8gZGVhbCB3
aXRoIDE2LWJpdCBVbmljb2RlIChVVEYtMTYpIGNvZGUgdW5pdHMgYW5kIHN0cmluZ3MuCi0gKiB1
dGYxNi5oIGlzIGluY2x1ZGVkIGJ5IHV0Zi5oIGFmdGVyIHVuaWNvZGUvdW1hY2hpbmUuaAotICog
YW5kIHNvbWUgY29tbW9uIGRlZmluaXRpb25zLgotICoKLSAqIEZvciBtb3JlIGluZm9ybWF0aW9u
IHNlZSB1dGYuaCBhbmQgdGhlIElDVSBVc2VyIEd1aWRlIFN0cmluZ3MgY2hhcHRlcgotICogKGh0
dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlLykuCi0gKgotICogPGVtPlVz
YWdlOjwvZW0+Ci0gKiBJQ1UgY29kaW5nIGd1aWRlbGluZXMgZm9yIGlmKCkgc3RhdGVtZW50cyBz
aG91bGQgYmUgZm9sbG93ZWQgd2hlbiB1c2luZyB0aGVzZSBtYWNyb3MuCi0gKiBDb21wb3VuZCBz
dGF0ZW1lbnRzIChjdXJseSBicmFjZXMge30pIG11c3QgYmUgdXNlZCAgZm9yIGlmLWVsc2Utd2hp
bGUuLi4gCi0gKiBib2RpZXMgYW5kIGFsbCBtYWNybyBzdGF0ZW1lbnRzIHNob3VsZCBiZSB0ZXJt
aW5hdGVkIHdpdGggc2VtaWNvbG9uLgotICovCi0KLSNpZm5kZWYgX19VVEYxNl9IX18KLSNkZWZp
bmUgX19VVEYxNl9IX18KLQotLyogdXRmLmggbXVzdCBiZSBpbmNsdWRlZCBmaXJzdC4gKi8KLSNp
Zm5kZWYgX19VVEZfSF9fCi0jICAgaW5jbHVkZSAidW5pY29kZS91dGYuaCIKLSNlbmRpZgotCi0v
KiBzaW5nbGUtY29kZSBwb2ludCBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKioKLSAqIERvZXMgdGhpcyBjb2RlIHVuaXQgYWxv
bmUgZW5jb2RlIGEgY29kZSBwb2ludCAoQk1QLCBub3QgYSBzdXJyb2dhdGUpPwotICogQHBhcmFt
IGMgMTYtYml0IGNvZGUgdW5pdAotICogQHJldHVybiBUUlVFIG9yIEZBTFNFCi0gKiBAc3RhYmxl
IElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfSVNfU0lOR0xFKGMpICFVX0lTX1NVUlJPR0FURShj
KQotCi0vKioKLSAqIElzIHRoaXMgY29kZSB1bml0IGEgbGVhZCBzdXJyb2dhdGUgKFUrZDgwMC4u
VStkYmZmKT8KLSAqIEBwYXJhbSBjIDE2LWJpdCBjb2RlIHVuaXQKLSAqIEByZXR1cm4gVFJVRSBv
ciBGQUxTRQotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVTE2X0lTX0xFQUQoYykg
KCgoYykmMHhmZmZmZmMwMCk9PTB4ZDgwMCkKLQotLyoqCi0gKiBJcyB0aGlzIGNvZGUgdW5pdCBh
IHRyYWlsIHN1cnJvZ2F0ZSAoVStkYzAwLi5VK2RmZmYpPwotICogQHBhcmFtIGMgMTYtYml0IGNv
ZGUgdW5pdAotICogQHJldHVybiBUUlVFIG9yIEZBTFNFCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAq
LwotI2RlZmluZSBVMTZfSVNfVFJBSUwoYykgKCgoYykmMHhmZmZmZmMwMCk9PTB4ZGMwMCkKLQot
LyoqCi0gKiBJcyB0aGlzIGNvZGUgdW5pdCBhIHN1cnJvZ2F0ZSAoVStkODAwLi5VK2RmZmYpPwot
ICogQHBhcmFtIGMgMTYtYml0IGNvZGUgdW5pdAotICogQHJldHVybiBUUlVFIG9yIEZBTFNFCi0g
KiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfSVNfU1VSUk9HQVRFKGMpIFVfSVNf
U1VSUk9HQVRFKGMpCi0KLS8qKgotICogQXNzdW1pbmcgYyBpcyBhIHN1cnJvZ2F0ZSBjb2RlIHBv
aW50IChVMTZfSVNfU1VSUk9HQVRFKGMpKSwKLSAqIGlzIGl0IGEgbGVhZCBzdXJyb2dhdGU/Ci0g
KiBAcGFyYW0gYyAxNi1iaXQgY29kZSB1bml0Ci0gKiBAcmV0dXJuIFRSVUUgb3IgRkFMU0UKLSAq
IEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVmaW5lIFUxNl9JU19TVVJST0dBVEVfTEVBRChjKSAo
KChjKSYweDQwMCk9PTApCi0KLS8qKgotICogSGVscGVyIGNvbnN0YW50IGZvciBVMTZfR0VUX1NV
UFBMRU1FTlRBUlkuCi0gKiBAaW50ZXJuYWwKLSAqLwotI2RlZmluZSBVMTZfU1VSUk9HQVRFX09G
RlNFVCAoKDB4ZDgwMDw8MTBVTCkrMHhkYzAwLTB4MTAwMDApCi0KLS8qKgotICogR2V0IGEgc3Vw
cGxlbWVudGFyeSBjb2RlIHBvaW50IHZhbHVlIChVKzEwMDAwLi5VKzEwZmZmZikKLSAqIGZyb20g
aXRzIGxlYWQgYW5kIHRyYWlsIHN1cnJvZ2F0ZXMuCi0gKiBUaGUgcmVzdWx0IGlzIHVuZGVmaW5l
ZCBpZiB0aGUgaW5wdXQgdmFsdWVzIGFyZSBub3QKLSAqIGxlYWQgYW5kIHRyYWlsIHN1cnJvZ2F0
ZXMuCi0gKgotICogQHBhcmFtIGxlYWQgbGVhZCBzdXJyb2dhdGUgKFUrZDgwMC4uVStkYmZmKQot
ICogQHBhcmFtIHRyYWlsIHRyYWlsIHN1cnJvZ2F0ZSAoVStkYzAwLi5VK2RmZmYpCi0gKiBAcmV0
dXJuIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCAoVSsxMDAwMC4uVSsxMGZmZmYpCi0gKiBAc3Rh
YmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfR0VUX1NVUFBMRU1FTlRBUlkobGVhZCwgdHJh
aWwpIFwKLSAgICAoKChVQ2hhcjMyKShsZWFkKTw8MTBVTCkrKFVDaGFyMzIpKHRyYWlsKS1VMTZf
U1VSUk9HQVRFX09GRlNFVCkKLQotCi0vKioKLSAqIEdldCB0aGUgbGVhZCBzdXJyb2dhdGUgKDB4
ZDgwMC4uMHhkYmZmKSBmb3IgYQotICogc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50ICgweDEwMDAw
Li4weDEwZmZmZikuCi0gKiBAcGFyYW0gc3VwcGxlbWVudGFyeSAzMi1iaXQgY29kZSBwb2ludCAo
VSsxMDAwMC4uVSsxMGZmZmYpCi0gKiBAcmV0dXJuIGxlYWQgc3Vycm9nYXRlIChVK2Q4MDAuLlUr
ZGJmZikgZm9yIHN1cHBsZW1lbnRhcnkKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVmaW5l
IFUxNl9MRUFEKHN1cHBsZW1lbnRhcnkpIChVQ2hhcikoKChzdXBwbGVtZW50YXJ5KT4+MTApKzB4
ZDdjMCkKLQotLyoqCi0gKiBHZXQgdGhlIHRyYWlsIHN1cnJvZ2F0ZSAoMHhkYzAwLi4weGRmZmYp
IGZvciBhCi0gKiBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQgKDB4MTAwMDAuLjB4MTBmZmZmKS4K
LSAqIEBwYXJhbSBzdXBwbGVtZW50YXJ5IDMyLWJpdCBjb2RlIHBvaW50IChVKzEwMDAwLi5VKzEw
ZmZmZikKLSAqIEByZXR1cm4gdHJhaWwgc3Vycm9nYXRlIChVK2RjMDAuLlUrZGZmZikgZm9yIHN1
cHBsZW1lbnRhcnkKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVmaW5lIFUxNl9UUkFJTChz
dXBwbGVtZW50YXJ5KSAoVUNoYXIpKCgoc3VwcGxlbWVudGFyeSkmMHgzZmYpfDB4ZGMwMCkKLQot
LyoqCi0gKiBIb3cgbWFueSAxNi1iaXQgY29kZSB1bml0cyBhcmUgdXNlZCB0byBlbmNvZGUgdGhp
cyBVbmljb2RlIGNvZGUgcG9pbnQ/ICgxIG9yIDIpCi0gKiBUaGUgcmVzdWx0IGlzIG5vdCBkZWZp
bmVkIGlmIGMgaXMgbm90IGEgVW5pY29kZSBjb2RlIHBvaW50IChVKzAwMDAuLlUrMTBmZmZmKS4K
LSAqIEBwYXJhbSBjIDMyLWJpdCBjb2RlIHBvaW50Ci0gKiBAcmV0dXJuIDEgb3IgMgotICogQHN0
YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVTE2X0xFTkdUSChjKSAoKHVpbnQzMl90KShjKTw9
MHhmZmZmID8gMSA6IDIpCi0KLS8qKgotICogVGhlIG1heGltdW0gbnVtYmVyIG9mIDE2LWJpdCBj
b2RlIHVuaXRzIHBlciBVbmljb2RlIGNvZGUgcG9pbnQgKFUrMDAwMC4uVSsxMGZmZmYpLgotICog
QHJldHVybiAyCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfTUFYX0xFTkdU
SCAyCi0KLS8qKgotICogR2V0IGEgY29kZSBwb2ludCBmcm9tIGEgc3RyaW5nIGF0IGEgcmFuZG9t
LWFjY2VzcyBvZmZzZXQsCi0gKiB3aXRob3V0IGNoYW5naW5nIHRoZSBvZmZzZXQuCi0gKiAiVW5z
YWZlIiBtYWNybywgYXNzdW1lcyB3ZWxsLWZvcm1lZCBVVEYtMTYuCi0gKgotICogVGhlIG9mZnNl
dCBtYXkgcG9pbnQgdG8gZWl0aGVyIHRoZSBsZWFkIG9yIHRyYWlsIHN1cnJvZ2F0ZSB1bml0Ci0g
KiBmb3IgYSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQsIGluIHdoaWNoIGNhc2UgdGhlIG1hY3Jv
IHdpbGwgcmVhZAotICogdGhlIGFkamFjZW50IG1hdGNoaW5nIHN1cnJvZ2F0ZSBhcyB3ZWxsLgot
ICogVGhlIHJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIG9mZnNldCBwb2ludHMgdG8gYSBzaW5n
bGUsIHVucGFpcmVkIHN1cnJvZ2F0ZS4KLSAqIEl0ZXJhdGlvbiB0aHJvdWdoIGEgc3RyaW5nIGlz
IG1vcmUgZWZmaWNpZW50IHdpdGggVTE2X05FWFRfVU5TQUZFIG9yIFUxNl9ORVhULgotICoKLSAq
IEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCi0gKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0
Ci0gKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJpYWJsZQotICogQHNlZSBVMTZfR0VUCi0g
KiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfR0VUX1VOU0FGRShzLCBpLCBjKSB7
IFwKLSAgICAoYyk9KHMpW2ldOyBcCi0gICAgaWYoVTE2X0lTX1NVUlJPR0FURShjKSkgeyBcCi0g
ICAgICAgIGlmKFUxNl9JU19TVVJST0dBVEVfTEVBRChjKSkgeyBcCi0gICAgICAgICAgICAoYyk9
VTE2X0dFVF9TVVBQTEVNRU5UQVJZKChjKSwgKHMpWyhpKSsxXSk7IFwKLSAgICAgICAgfSBlbHNl
IHsgXAotICAgICAgICAgICAgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFSWSgocylbKGkpLTFdLCAo
YykpOyBcCi0gICAgICAgIH0gXAotICAgIH0gXAotfQotCi0vKioKLSAqIEdldCBhIGNvZGUgcG9p
bnQgZnJvbSBhIHN0cmluZyBhdCBhIHJhbmRvbS1hY2Nlc3Mgb2Zmc2V0LAotICogd2l0aG91dCBj
aGFuZ2luZyB0aGUgb2Zmc2V0LgotICogIlNhZmUiIG1hY3JvLCBoYW5kbGVzIHVucGFpcmVkIHN1
cnJvZ2F0ZXMgYW5kIGNoZWNrcyBmb3Igc3RyaW5nIGJvdW5kYXJpZXMuCi0gKgotICogVGhlIG9m
ZnNldCBtYXkgcG9pbnQgdG8gZWl0aGVyIHRoZSBsZWFkIG9yIHRyYWlsIHN1cnJvZ2F0ZSB1bml0
Ci0gKiBmb3IgYSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQsIGluIHdoaWNoIGNhc2UgdGhlIG1h
Y3JvIHdpbGwgcmVhZAotICogdGhlIGFkamFjZW50IG1hdGNoaW5nIHN1cnJvZ2F0ZSBhcyB3ZWxs
LgotICogSWYgdGhlIG9mZnNldCBwb2ludHMgdG8gYSBzaW5nbGUsIHVucGFpcmVkIHN1cnJvZ2F0
ZSwgdGhlbiB0aGF0IGl0c2VsZgotICogd2lsbCBiZSByZXR1cm5lZCBhcyB0aGUgY29kZSBwb2lu
dC4KLSAqIEl0ZXJhdGlvbiB0aHJvdWdoIGEgc3RyaW5nIGlzIG1vcmUgZWZmaWNpZW50IHdpdGgg
VTE2X05FWFRfVU5TQUZFIG9yIFUxNl9ORVhULgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IFVDaGFy
ICogc3RyaW5nCi0gKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5nIG9mZnNldCAodXN1YWxs
eSAwKQotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWk8bGVuZ3RoCi0gKiBAcGFy
YW0gbGVuZ3RoIHN0cmluZyBsZW5ndGgKLSAqIEBwYXJhbSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlh
YmxlCi0gKiBAc2VlIFUxNl9HRVRfVU5TQUZFCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2Rl
ZmluZSBVMTZfR0VUKHMsIHN0YXJ0LCBpLCBsZW5ndGgsIGMpIHsgXAotICAgIChjKT0ocylbaV07
IFwKLSAgICBpZihVMTZfSVNfU1VSUk9HQVRFKGMpKSB7IFwKLSAgICAgICAgdWludDE2X3QgX19j
MjsgXAotICAgICAgICBpZihVMTZfSVNfU1VSUk9HQVRFX0xFQUQoYykpIHsgXAotICAgICAgICAg
ICAgaWYoKGkpKzE8KGxlbmd0aCkgJiYgVTE2X0lTX1RSQUlMKF9fYzI9KHMpWyhpKSsxXSkpIHsg
XAotICAgICAgICAgICAgICAgIChjKT1VMTZfR0VUX1NVUFBMRU1FTlRBUlkoKGMpLCBfX2MyKTsg
XAotICAgICAgICAgICAgfSBcCi0gICAgICAgIH0gZWxzZSB7IFwKLSAgICAgICAgICAgIGlmKChp
KS0xPj0oc3RhcnQpICYmIFUxNl9JU19MRUFEKF9fYzI9KHMpWyhpKS0xXSkpIHsgXAotICAgICAg
ICAgICAgICAgIChjKT1VMTZfR0VUX1NVUFBMRU1FTlRBUlkoX19jMiwgKGMpKTsgXAotICAgICAg
ICAgICAgfSBcCi0gICAgICAgIH0gXAotICAgIH0gXAotfQotCi0vKiBkZWZpbml0aW9ucyB3aXRo
IGZvcndhcmQgaXRlcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAqLwotCi0vKioKLSAqIEdldCBhIGNvZGUgcG9pbnQgZnJvbSBhIHN0cmluZyBhdCBhIGNvZGUg
cG9pbnQgYm91bmRhcnkgb2Zmc2V0LAotICogYW5kIGFkdmFuY2UgdGhlIG9mZnNldCB0byB0aGUg
bmV4dCBjb2RlIHBvaW50IGJvdW5kYXJ5LgotICogKFBvc3QtaW5jcmVtZW50aW5nIGZvcndhcmQg
aXRlcmF0aW9uLikKLSAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi0x
Ni4KLSAqCi0gKiBUaGUgb2Zmc2V0IG1heSBwb2ludCB0byB0aGUgbGVhZCBzdXJyb2dhdGUgdW5p
dAotICogZm9yIGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50LCBpbiB3aGljaCBjYXNlIHRoZSBt
YWNybyB3aWxsIHJlYWQKLSAqIHRoZSBmb2xsb3dpbmcgdHJhaWwgc3Vycm9nYXRlIGFzIHdlbGwu
Ci0gKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIHRyYWlsIHN1cnJvZ2F0ZSwgdGhlbiB0aGF0
IGl0c2VsZgotICogd2lsbCBiZSByZXR1cm5lZCBhcyB0aGUgY29kZSBwb2ludC4KLSAqIFRoZSBy
ZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgc2luZ2xlLCB1bnBh
aXJlZCBsZWFkIHN1cnJvZ2F0ZS4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmlu
ZwotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAotICogQHBhcmFtIGMgb3V0cHV0IFVDaGFyMzIg
dmFyaWFibGUKLSAqIEBzZWUgVTE2X05FWFQKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVm
aW5lIFUxNl9ORVhUX1VOU0FGRShzLCBpLCBjKSB7IFwKLSAgICAoYyk9KHMpWyhpKSsrXTsgXAot
ICAgIGlmKFUxNl9JU19MRUFEKGMpKSB7IFwKLSAgICAgICAgKGMpPVUxNl9HRVRfU1VQUExFTUVO
VEFSWSgoYyksIChzKVsoaSkrK10pOyBcCi0gICAgfSBcCi19Ci0KLS8qKgotICogR2V0IGEgY29k
ZSBwb2ludCBmcm9tIGEgc3RyaW5nIGF0IGEgY29kZSBwb2ludCBib3VuZGFyeSBvZmZzZXQsCi0g
KiBhbmQgYWR2YW5jZSB0aGUgb2Zmc2V0IHRvIHRoZSBuZXh0IGNvZGUgcG9pbnQgYm91bmRhcnku
Ci0gKiAoUG9zdC1pbmNyZW1lbnRpbmcgZm9yd2FyZCBpdGVyYXRpb24uKQotICogIlNhZmUiIG1h
Y3JvLCBoYW5kbGVzIHVucGFpcmVkIHN1cnJvZ2F0ZXMgYW5kIGNoZWNrcyBmb3Igc3RyaW5nIGJv
dW5kYXJpZXMuCi0gKgotICogVGhlIG9mZnNldCBtYXkgcG9pbnQgdG8gdGhlIGxlYWQgc3Vycm9n
YXRlIHVuaXQKLSAqIGZvciBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgaW4gd2hpY2ggY2Fz
ZSB0aGUgbWFjcm8gd2lsbCByZWFkCi0gKiB0aGUgZm9sbG93aW5nIHRyYWlsIHN1cnJvZ2F0ZSBh
cyB3ZWxsLgotICogSWYgdGhlIG9mZnNldCBwb2ludHMgdG8gYSB0cmFpbCBzdXJyb2dhdGUgb3IK
LSAqIHRvIGEgc2luZ2xlLCB1bnBhaXJlZCBsZWFkIHN1cnJvZ2F0ZSwgdGhlbiB0aGF0IGl0c2Vs
ZgotICogd2lsbCBiZSByZXR1cm5lZCBhcyB0aGUgY29kZSBwb2ludC4KLSAqCi0gKiBAcGFyYW0g
cyBjb25zdCBVQ2hhciAqIHN0cmluZwotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgaTxsZW5n
dGgKLSAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAotICogQHBhcmFtIGMgb3V0cHV0IFVD
aGFyMzIgdmFyaWFibGUKLSAqIEBzZWUgVTE2X05FWFRfVU5TQUZFCi0gKiBAc3RhYmxlIElDVSAy
LjQKLSAqLwotI2RlZmluZSBVMTZfTkVYVChzLCBpLCBsZW5ndGgsIGMpIHsgXAotICAgIChjKT0o
cylbKGkpKytdOyBcCi0gICAgaWYoVTE2X0lTX0xFQUQoYykpIHsgXAotICAgICAgICB1aW50MTZf
dCBfX2MyOyBcCi0gICAgICAgIGlmKChpKTwobGVuZ3RoKSAmJiBVMTZfSVNfVFJBSUwoX19jMj0o
cylbKGkpXSkpIHsgXAotICAgICAgICAgICAgKysoaSk7IFwKLSAgICAgICAgICAgIChjKT1VMTZf
R0VUX1NVUFBMRU1FTlRBUlkoKGMpLCBfX2MyKTsgXAotICAgICAgICB9IFwKLSAgICB9IFwKLX0K
LQotLyoqCi0gKiBBcHBlbmQgYSBjb2RlIHBvaW50IHRvIGEgc3RyaW5nLCBvdmVyd3JpdGluZyAx
IG9yIDIgY29kZSB1bml0cy4KLSAqIFRoZSBvZmZzZXQgcG9pbnRzIHRvIHRoZSBjdXJyZW50IGVu
ZCBvZiB0aGUgc3RyaW5nIGNvbnRlbnRzCi0gKiBhbmQgaXMgYWR2YW5jZWQgKHBvc3QtaW5jcmVt
ZW50KS4KLSAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIGEgdmFsaWQgY29kZSBwb2ludCBhbmQg
c3VmZmljaWVudCBzcGFjZSBpbiB0aGUgc3RyaW5nLgotICogT3RoZXJ3aXNlLCB0aGUgcmVzdWx0
IGlzIHVuZGVmaW5lZC4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZyBidWZm
ZXIKLSAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKLSAqIEBwYXJhbSBjIGNvZGUgcG9pbnQgdG8g
YXBwZW5kCi0gKiBAc2VlIFUxNl9BUFBFTkQKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVm
aW5lIFUxNl9BUFBFTkRfVU5TQUZFKHMsIGksIGMpIHsgXAotICAgIGlmKCh1aW50MzJfdCkoYyk8
PTB4ZmZmZikgeyBcCi0gICAgICAgIChzKVsoaSkrK109KHVpbnQxNl90KShjKTsgXAotICAgIH0g
ZWxzZSB7IFwKLSAgICAgICAgKHMpWyhpKSsrXT0odWludDE2X3QpKCgoYyk+PjEwKSsweGQ3YzAp
OyBcCi0gICAgICAgIChzKVsoaSkrK109KHVpbnQxNl90KSgoKGMpJjB4M2ZmKXwweGRjMDApOyBc
Ci0gICAgfSBcCi19Ci0KLS8qKgotICogQXBwZW5kIGEgY29kZSBwb2ludCB0byBhIHN0cmluZywg
b3ZlcndyaXRpbmcgMSBvciAyIGNvZGUgdW5pdHMuCi0gKiBUaGUgb2Zmc2V0IHBvaW50cyB0byB0
aGUgY3VycmVudCBlbmQgb2YgdGhlIHN0cmluZyBjb250ZW50cwotICogYW5kIGlzIGFkdmFuY2Vk
IChwb3N0LWluY3JlbWVudCkuCi0gKiAiU2FmZSIgbWFjcm8sIGNoZWNrcyBmb3IgYSB2YWxpZCBj
b2RlIHBvaW50LgotICogSWYgYSBzdXJyb2dhdGUgcGFpciBpcyB3cml0dGVuLCBjaGVja3MgZm9y
IHN1ZmZpY2llbnQgc3BhY2UgaW4gdGhlIHN0cmluZy4KLSAqIElmIHRoZSBjb2RlIHBvaW50IGlz
IG5vdCB2YWxpZCBvciBhIHRyYWlsIHN1cnJvZ2F0ZSBkb2VzIG5vdCBmaXQsCi0gKiB0aGVuIGlz
RXJyb3IgaXMgc2V0IHRvIFRSVUUuCi0gKgotICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJp
bmcgYnVmZmVyCi0gKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBpPGxlbmd0aAotICogQHBhcmFt
IGNhcGFjaXR5IHNpemUgb2YgdGhlIHN0cmluZyBidWZmZXIKLSAqIEBwYXJhbSBjIGNvZGUgcG9p
bnQgdG8gYXBwZW5kCi0gKiBAcGFyYW0gaXNFcnJvciBvdXRwdXQgVUJvb2wgc2V0IHRvIFRSVUUg
aWYgYW4gZXJyb3Igb2NjdXJzLCBvdGhlcndpc2Ugbm90IG1vZGlmaWVkCi0gKiBAc2VlIFUxNl9B
UFBFTkRfVU5TQUZFCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfQVBQRU5E
KHMsIGksIGNhcGFjaXR5LCBjLCBpc0Vycm9yKSB7IFwKLSAgICBpZigodWludDMyX3QpKGMpPD0w
eGZmZmYpIHsgXAotICAgICAgICAocylbKGkpKytdPSh1aW50MTZfdCkoYyk7IFwKLSAgICB9IGVs
c2UgaWYoKHVpbnQzMl90KShjKTw9MHgxMGZmZmYgJiYgKGkpKzE8KGNhcGFjaXR5KSkgeyBcCi0g
ICAgICAgIChzKVsoaSkrK109KHVpbnQxNl90KSgoKGMpPj4xMCkrMHhkN2MwKTsgXAotICAgICAg
ICAocylbKGkpKytdPSh1aW50MTZfdCkoKChjKSYweDNmZil8MHhkYzAwKTsgXAotICAgIH0gZWxz
ZSAvKiBjPjB4MTBmZmZmIG9yIG5vdCBlbm91Z2ggc3BhY2UgKi8geyBcCi0gICAgICAgIChpc0Vy
cm9yKT1UUlVFOyBcCi0gICAgfSBcCi19Ci0KLS8qKgotICogQWR2YW5jZSB0aGUgc3RyaW5nIG9m
ZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBuZXh0LgotICogKFBvc3Qt
aW5jcmVtZW50aW5nIGl0ZXJhdGlvbi4pCi0gKiAiVW5zYWZlIiBtYWNybywgYXNzdW1lcyB3ZWxs
LWZvcm1lZCBVVEYtMTYuCi0gKgotICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKLSAq
IEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKLSAqIEBzZWUgVTE2X0ZXRF8xCi0gKiBAc3RhYmxlIElD
VSAyLjQKLSAqLwotI2RlZmluZSBVMTZfRldEXzFfVU5TQUZFKHMsIGkpIHsgXAotICAgIGlmKFUx
Nl9JU19MRUFEKChzKVsoaSkrK10pKSB7IFwKLSAgICAgICAgKysoaSk7IFwKLSAgICB9IFwKLX0K
LQotLyoqCi0gKiBBZHZhbmNlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQg
Ym91bmRhcnkgdG8gdGhlIG5leHQuCi0gKiAoUG9zdC1pbmNyZW1lbnRpbmcgaXRlcmF0aW9uLikK
LSAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVja3Mg
Zm9yIHN0cmluZyBib3VuZGFyaWVzLgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3Ry
aW5nCi0gKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBpPGxlbmd0aAotICogQHBhcmFtIGxlbmd0
aCBzdHJpbmcgbGVuZ3RoCi0gKiBAc2VlIFUxNl9GV0RfMV9VTlNBRkUKLSAqIEBzdGFibGUgSUNV
IDIuNAotICovCi0jZGVmaW5lIFUxNl9GV0RfMShzLCBpLCBsZW5ndGgpIHsgXAotICAgIGlmKFUx
Nl9JU19MRUFEKChzKVsoaSkrK10pICYmIChpKTwobGVuZ3RoKSAmJiBVMTZfSVNfVFJBSUwoKHMp
W2ldKSkgeyBcCi0gICAgICAgICsrKGkpOyBcCi0gICAgfSBcCi19Ci0KLS8qKgotICogQWR2YW5j
ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBu
LXRoIG5leHQgb25lLAotICogaS5lLiwgbW92ZSBmb3J3YXJkIGJ5IG4gY29kZSBwb2ludHMuCi0g
KiAoUG9zdC1pbmNyZW1lbnRpbmcgaXRlcmF0aW9uLikKLSAqICJVbnNhZmUiIG1hY3JvLCBhc3N1
bWVzIHdlbGwtZm9ybWVkIFVURi0xNi4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0
cmluZwotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAotICogQHBhcmFtIG4gbnVtYmVyIG9mIGNv
ZGUgcG9pbnRzIHRvIHNraXAKLSAqIEBzZWUgVTE2X0ZXRF9OCi0gKiBAc3RhYmxlIElDVSAyLjQK
LSAqLwotI2RlZmluZSBVMTZfRldEX05fVU5TQUZFKHMsIGksIG4pIHsgXAotICAgIGludDMyX3Qg
X19OPShuKTsgXAotICAgIHdoaWxlKF9fTj4wKSB7IFwKLSAgICAgICAgVTE2X0ZXRF8xX1VOU0FG
RShzLCBpKTsgXAotICAgICAgICAtLV9fTjsgXAotICAgIH0gXAotfQotCi0vKioKLSAqIEFkdmFu
Y2UgdGhlIHN0cmluZyBvZmZzZXQgZnJvbSBvbmUgY29kZSBwb2ludCBib3VuZGFyeSB0byB0aGUg
bi10aCBuZXh0IG9uZSwKLSAqIGkuZS4sIG1vdmUgZm9yd2FyZCBieSBuIGNvZGUgcG9pbnRzLgot
ICogKFBvc3QtaW5jcmVtZW50aW5nIGl0ZXJhdGlvbi4pCi0gKiAiU2FmZSIgbWFjcm8sIGhhbmRs
ZXMgdW5wYWlyZWQgc3Vycm9nYXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRhcmllcy4K
LSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZwotICogQHBhcmFtIGkgc3RyaW5n
IG9mZnNldCwgaTxsZW5ndGgKLSAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAotICogQHBh
cmFtIG4gbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRvIHNraXAKLSAqIEBzZWUgVTE2X0ZXRF9OX1VO
U0FGRQotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVTE2X0ZXRF9OKHMsIGksIGxl
bmd0aCwgbikgeyBcCi0gICAgaW50MzJfdCBfX049KG4pOyBcCi0gICAgd2hpbGUoX19OPjAgJiYg
KGkpPChsZW5ndGgpKSB7IFwKLSAgICAgICAgVTE2X0ZXRF8xKHMsIGksIGxlbmd0aCk7IFwKLSAg
ICAgICAgLS1fX047IFwKLSAgICB9IFwKLX0KLQotLyoqCi0gKiBBZGp1c3QgYSByYW5kb20tYWNj
ZXNzIG9mZnNldCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkKLSAqIGF0IHRoZSBzdGFydCBvZiBh
IGNvZGUgcG9pbnQuCi0gKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byB0aGUgdHJhaWwgc3Vycm9n
YXRlIG9mIGEgc3Vycm9nYXRlIHBhaXIsCi0gKiB0aGVuIHRoZSBvZmZzZXQgaXMgZGVjcmVtZW50
ZWQuCi0gKiBPdGhlcndpc2UsIGl0IGlzIG5vdCBtb2RpZmllZC4KLSAqICJVbnNhZmUiIG1hY3Jv
LCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi0xNi4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hh
ciAqIHN0cmluZwotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAotICogQHNlZSBVMTZfU0VUX0NQ
X1NUQVJUCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfU0VUX0NQX1NUQVJU
X1VOU0FGRShzLCBpKSB7IFwKLSAgICBpZihVMTZfSVNfVFJBSUwoKHMpW2ldKSkgeyBcCi0gICAg
ICAgIC0tKGkpOyBcCi0gICAgfSBcCi19Ci0KLS8qKgotICogQWRqdXN0IGEgcmFuZG9tLWFjY2Vz
cyBvZmZzZXQgdG8gYSBjb2RlIHBvaW50IGJvdW5kYXJ5Ci0gKiBhdCB0aGUgc3RhcnQgb2YgYSBj
b2RlIHBvaW50LgotICogSWYgdGhlIG9mZnNldCBwb2ludHMgdG8gdGhlIHRyYWlsIHN1cnJvZ2F0
ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyLAotICogdGhlbiB0aGUgb2Zmc2V0IGlzIGRlY3JlbWVudGVk
LgotICogT3RoZXJ3aXNlLCBpdCBpcyBub3QgbW9kaWZpZWQuCi0gKiAiU2FmZSIgbWFjcm8sIGhh
bmRsZXMgdW5wYWlyZWQgc3Vycm9nYXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRhcmll
cy4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZwotICogQHBhcmFtIHN0YXJ0
IHN0YXJ0aW5nIHN0cmluZyBvZmZzZXQgKHVzdWFsbHkgMCkKLSAqIEBwYXJhbSBpIHN0cmluZyBv
ZmZzZXQsIHN0YXJ0PD1pCi0gKiBAc2VlIFUxNl9TRVRfQ1BfU1RBUlRfVU5TQUZFCi0gKiBAc3Rh
YmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfU0VUX0NQX1NUQVJUKHMsIHN0YXJ0LCBpKSB7
IFwKLSAgICBpZihVMTZfSVNfVFJBSUwoKHMpW2ldKSAmJiAoaSk+KHN0YXJ0KSAmJiBVMTZfSVNf
TEVBRCgocylbKGkpLTFdKSkgeyBcCi0gICAgICAgIC0tKGkpOyBcCi0gICAgfSBcCi19Ci0KLS8q
IGRlZmluaXRpb25zIHdpdGggYmFja3dhcmQgaXRlcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qKgotICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBm
cm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUKLSAqIGFuZCBn
ZXQgdGhlIGNvZGUgcG9pbnQgYmV0d2VlbiB0aGVtLgotICogKFByZS1kZWNyZW1lbnRpbmcgYmFj
a3dhcmQgaXRlcmF0aW9uLikKLSAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVk
IFVURi0xNi4KLSAqCi0gKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUg
c3RyaW5nIGxlbmd0aC4KLSAqIElmIHRoZSBvZmZzZXQgaXMgYmVoaW5kIGEgdHJhaWwgc3Vycm9n
YXRlIHVuaXQKLSAqIGZvciBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgdGhlbiB0aGUgbWFj
cm8gd2lsbCByZWFkCi0gKiB0aGUgcHJlY2VkaW5nIGxlYWQgc3Vycm9nYXRlIGFzIHdlbGwuCi0g
KiBJZiB0aGUgb2Zmc2V0IGlzIGJlaGluZCBhIGxlYWQgc3Vycm9nYXRlLCB0aGVuIHRoYXQgaXRz
ZWxmCi0gKiB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSBjb2RlIHBvaW50LgotICogVGhlIHJlc3Vs
dCBpcyB1bmRlZmluZWQgaWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgYSBzaW5nbGUsIHVucGFpcmVk
IHRyYWlsIHN1cnJvZ2F0ZS4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZwot
ICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAotICogQHBhcmFtIGMgb3V0cHV0IFVDaGFyMzIgdmFy
aWFibGUKLSAqIEBzZWUgVTE2X1BSRVYKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVmaW5l
IFUxNl9QUkVWX1VOU0FGRShzLCBpLCBjKSB7IFwKLSAgICAoYyk9KHMpWy0tKGkpXTsgXAotICAg
IGlmKFUxNl9JU19UUkFJTChjKSkgeyBcCi0gICAgICAgIChjKT1VMTZfR0VUX1NVUFBMRU1FTlRB
UlkoKHMpWy0tKGkpXSwgKGMpKTsgXAotICAgIH0gXAotfQotCi0vKioKLSAqIE1vdmUgdGhlIHN0
cmluZyBvZmZzZXQgZnJvbSBvbmUgY29kZSBwb2ludCBib3VuZGFyeSB0byB0aGUgcHJldmlvdXMg
b25lCi0gKiBhbmQgZ2V0IHRoZSBjb2RlIHBvaW50IGJldHdlZW4gdGhlbS4KLSAqIChQcmUtZGVj
cmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCi0gKiAiU2FmZSIgbWFjcm8sIGhhbmRsZXMg
dW5wYWlyZWQgc3Vycm9nYXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRhcmllcy4KLSAq
Ci0gKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0
aC4KLSAqIElmIHRoZSBvZmZzZXQgaXMgYmVoaW5kIGEgdHJhaWwgc3Vycm9nYXRlIHVuaXQKLSAq
IGZvciBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgdGhlbiB0aGUgbWFjcm8gd2lsbCByZWFk
Ci0gKiB0aGUgcHJlY2VkaW5nIGxlYWQgc3Vycm9nYXRlIGFzIHdlbGwuCi0gKiBJZiB0aGUgb2Zm
c2V0IGlzIGJlaGluZCBhIGxlYWQgc3Vycm9nYXRlIG9yIGJlaGluZCBhIHNpbmdsZSwgdW5wYWly
ZWQKLSAqIHRyYWlsIHN1cnJvZ2F0ZSwgdGhlbiB0aGF0IGl0c2VsZgotICogd2lsbCBiZSByZXR1
cm5lZCBhcyB0aGUgY29kZSBwb2ludC4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0
cmluZwotICogQHBhcmFtIHN0YXJ0IHN0YXJ0aW5nIHN0cmluZyBvZmZzZXQgKHVzdWFsbHkgMCkK
LSAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQsIHN0YXJ0PD1pCi0gKiBAcGFyYW0gYyBvdXRwdXQg
VUNoYXIzMiB2YXJpYWJsZQotICogQHNlZSBVMTZfUFJFVl9VTlNBRkUKLSAqIEBzdGFibGUgSUNV
IDIuNAotICovCi0jZGVmaW5lIFUxNl9QUkVWKHMsIHN0YXJ0LCBpLCBjKSB7IFwKLSAgICAoYyk9
KHMpWy0tKGkpXTsgXAotICAgIGlmKFUxNl9JU19UUkFJTChjKSkgeyBcCi0gICAgICAgIHVpbnQx
Nl90IF9fYzI7IFwKLSAgICAgICAgaWYoKGkpPihzdGFydCkgJiYgVTE2X0lTX0xFQUQoX19jMj0o
cylbKGkpLTFdKSkgeyBcCi0gICAgICAgICAgICAtLShpKTsgXAotICAgICAgICAgICAgKGMpPVUx
Nl9HRVRfU1VQUExFTUVOVEFSWShfX2MyLCAoYykpOyBcCi0gICAgICAgIH0gXAotICAgIH0gXAot
fQotCi0vKioKLSAqIE1vdmUgdGhlIHN0cmluZyBvZmZzZXQgZnJvbSBvbmUgY29kZSBwb2ludCBi
b3VuZGFyeSB0byB0aGUgcHJldmlvdXMgb25lLgotICogKFByZS1kZWNyZW1lbnRpbmcgYmFja3dh
cmQgaXRlcmF0aW9uLikKLSAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRo
ZSBzdHJpbmcgbGVuZ3RoLgotICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgd2VsbC1mb3JtZWQg
VVRGLTE2LgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCi0gKiBAcGFyYW0g
aSBzdHJpbmcgb2Zmc2V0Ci0gKiBAc2VlIFUxNl9CQUNLXzEKLSAqIEBzdGFibGUgSUNVIDIuNAot
ICovCi0jZGVmaW5lIFUxNl9CQUNLXzFfVU5TQUZFKHMsIGkpIHsgXAotICAgIGlmKFUxNl9JU19U
UkFJTCgocylbLS0oaSldKSkgeyBcCi0gICAgICAgIC0tKGkpOyBcCi0gICAgfSBcCi19Ci0KLS8q
KgotICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5
IHRvIHRoZSBwcmV2aW91cyBvbmUuCi0gKiAoUHJlLWRlY3JlbWVudGluZyBiYWNrd2FyZCBpdGVy
YXRpb24uKQotICogVGhlIGlucHV0IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUgYXMgdGhlIHN0cmlu
ZyBsZW5ndGguCi0gKiAiU2FmZSIgbWFjcm8sIGhhbmRsZXMgdW5wYWlyZWQgc3Vycm9nYXRlcyBh
bmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRhcmllcy4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBV
Q2hhciAqIHN0cmluZwotICogQHBhcmFtIHN0YXJ0IHN0YXJ0aW5nIHN0cmluZyBvZmZzZXQgKHVz
dWFsbHkgMCkKLSAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQsIHN0YXJ0PD1pCi0gKiBAc2VlIFUx
Nl9CQUNLXzFfVU5TQUZFCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfQkFD
S18xKHMsIHN0YXJ0LCBpKSB7IFwKLSAgICBpZihVMTZfSVNfVFJBSUwoKHMpWy0tKGkpXSkgJiYg
KGkpPihzdGFydCkgJiYgVTE2X0lTX0xFQUQoKHMpWyhpKS0xXSkpIHsgXAotICAgICAgICAtLShp
KTsgXAotICAgIH0gXAotfQotCi0vKioKLSAqIE1vdmUgdGhlIHN0cmluZyBvZmZzZXQgZnJvbSBv
bmUgY29kZSBwb2ludCBib3VuZGFyeSB0byB0aGUgbi10aCBvbmUgYmVmb3JlIGl0LAotICogaS5l
LiwgbW92ZSBiYWNrd2FyZCBieSBuIGNvZGUgcG9pbnRzLgotICogKFByZS1kZWNyZW1lbnRpbmcg
YmFja3dhcmQgaXRlcmF0aW9uLikKLSAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1l
IGFzIHRoZSBzdHJpbmcgbGVuZ3RoLgotICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgd2VsbC1m
b3JtZWQgVVRGLTE2LgotICoKLSAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCi0gKiBA
cGFyYW0gaSBzdHJpbmcgb2Zmc2V0Ci0gKiBAcGFyYW0gbiBudW1iZXIgb2YgY29kZSBwb2ludHMg
dG8gc2tpcAotICogQHNlZSBVMTZfQkFDS19OCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2Rl
ZmluZSBVMTZfQkFDS19OX1VOU0FGRShzLCBpLCBuKSB7IFwKLSAgICBpbnQzMl90IF9fTj0obik7
IFwKLSAgICB3aGlsZShfX04+MCkgeyBcCi0gICAgICAgIFUxNl9CQUNLXzFfVU5TQUZFKHMsIGkp
OyBcCi0gICAgICAgIC0tX19OOyBcCi0gICAgfSBcCi19Ci0KLS8qKgotICogTW92ZSB0aGUgc3Ry
aW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBuLXRoIG9uZSBi
ZWZvcmUgaXQsCi0gKiBpLmUuLCBtb3ZlIGJhY2t3YXJkIGJ5IG4gY29kZSBwb2ludHMuCi0gKiAo
UHJlLWRlY3JlbWVudGluZyBiYWNrd2FyZCBpdGVyYXRpb24uKQotICogVGhlIGlucHV0IG9mZnNl
dCBtYXkgYmUgdGhlIHNhbWUgYXMgdGhlIHN0cmluZyBsZW5ndGguCi0gKiAiU2FmZSIgbWFjcm8s
IGhhbmRsZXMgdW5wYWlyZWQgc3Vycm9nYXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRh
cmllcy4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZwotICogQHBhcmFtIHN0
YXJ0IHN0YXJ0IG9mIHN0cmluZwotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgaTxsZW5ndGgK
LSAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2RlIHBvaW50cyB0byBza2lwCi0gKiBAc2VlIFUxNl9C
QUNLX05fVU5TQUZFCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfQkFDS19O
KHMsIHN0YXJ0LCBpLCBuKSB7IFwKLSAgICBpbnQzMl90IF9fTj0obik7IFwKLSAgICB3aGlsZShf
X04+MCAmJiAoaSk+KHN0YXJ0KSkgeyBcCi0gICAgICAgIFUxNl9CQUNLXzEocywgc3RhcnQsIGkp
OyBcCi0gICAgICAgIC0tX19OOyBcCi0gICAgfSBcCi19Ci0KLS8qKgotICogQWRqdXN0IGEgcmFu
ZG9tLWFjY2VzcyBvZmZzZXQgdG8gYSBjb2RlIHBvaW50IGJvdW5kYXJ5IGFmdGVyIGEgY29kZSBw
b2ludC4KLSAqIElmIHRoZSBvZmZzZXQgaXMgYmVoaW5kIHRoZSBsZWFkIHN1cnJvZ2F0ZSBvZiBh
IHN1cnJvZ2F0ZSBwYWlyLAotICogdGhlbiB0aGUgb2Zmc2V0IGlzIGluY3JlbWVudGVkLgotICog
T3RoZXJ3aXNlLCBpdCBpcyBub3QgbW9kaWZpZWQuCi0gKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBi
ZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KLSAqICJVbnNhZmUiIG1hY3JvLCBhc3N1
bWVzIHdlbGwtZm9ybWVkIFVURi0xNi4KLSAqCi0gKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0
cmluZwotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAotICogQHNlZSBVMTZfU0VUX0NQX0xJTUlU
Ci0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfU0VUX0NQX0xJTUlUX1VOU0FG
RShzLCBpKSB7IFwKLSAgICBpZihVMTZfSVNfTEVBRCgocylbKGkpLTFdKSkgeyBcCi0gICAgICAg
ICsrKGkpOyBcCi0gICAgfSBcCi19Ci0KLS8qKgotICogQWRqdXN0IGEgcmFuZG9tLWFjY2VzcyBv
ZmZzZXQgdG8gYSBjb2RlIHBvaW50IGJvdW5kYXJ5IGFmdGVyIGEgY29kZSBwb2ludC4KLSAqIElm
IHRoZSBvZmZzZXQgaXMgYmVoaW5kIHRoZSBsZWFkIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBw
YWlyLAotICogdGhlbiB0aGUgb2Zmc2V0IGlzIGluY3JlbWVudGVkLgotICogT3RoZXJ3aXNlLCBp
dCBpcyBub3QgbW9kaWZpZWQuCi0gKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBh
cyB0aGUgc3RyaW5nIGxlbmd0aC4KLSAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1bnBhaXJlZCBz
dXJyb2dhdGVzIGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgotICoKLSAqIEBwYXJh
bSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCi0gKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5n
IG9mZnNldCAodXN1YWxseSAwKQotICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWk8
PWxlbmd0aAotICogQHBhcmFtIGxlbmd0aCBzdHJpbmcgbGVuZ3RoCi0gKiBAc2VlIFUxNl9TRVRf
Q1BfTElNSVRfVU5TQUZFCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVMTZfU0VU
X0NQX0xJTUlUKHMsIHN0YXJ0LCBpLCBsZW5ndGgpIHsgXAotICAgIGlmKChzdGFydCk8KGkpICYm
IChpKTwobGVuZ3RoKSAmJiBVMTZfSVNfTEVBRCgocylbKGkpLTFdKSAmJiBVMTZfSVNfVFJBSUwo
KHMpW2ldKSkgeyBcCi0gICAgICAgICsrKGkpOyBcCi0gICAgfSBcCi19Ci0KLSNlbmRpZgpJbmRl
eDogSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXRmLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdEdsdWUvaWN1L3VuaWNvZGUvdXRmLmgJKHJldmlzaW9uIDc0NjE2KQorKysgSmF2YVNjcmlw
dEdsdWUvaWN1L3VuaWNvZGUvdXRmLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjIxICswLDAgQEAK
LS8qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qCi0qICAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKLSogICBDb3Jwb3JhdGlvbiBhbmQg
b3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSoKLSoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
LSogICBmaWxlIG5hbWU6ICB1dGYuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCi0qICAgdGFi
IHNpemU6ICAgOCAobm90IHVzZWQpCi0qICAgaW5kZW50YXRpb246NAotKgotKiAgIGNyZWF0ZWQg
b246IDE5OTlzZXAwOQotKiAgIGNyZWF0ZWQgYnk6IE1hcmt1cyBXLiBTY2hlcmVyCi0qLwotCi0v
KioKLSAqIFxmaWxlCi0gKiBcYnJpZWYgQyBBUEk6IENvZGUgcG9pbnQgbWFjcm9zCi0gKgotICog
VGhpcyBmaWxlIGRlZmluZXMgbWFjcm9zIGZvciBjaGVja2luZyB3aGV0aGVyIGEgY29kZSBwb2lu
dCBpcwotICogYSBzdXJyb2dhdGUgb3IgYSBub24tY2hhcmFjdGVyIGV0Yy4KLSAqCi0gKiBUaGUg
VUNoYXIgYW5kIFVDaGFyMzIgZGF0YSB0eXBlcyBmb3IgVW5pY29kZSBjb2RlIHVuaXRzIGFuZCBj
b2RlIHBvaW50cwotICogYXJlIGRlZmluZWQgaW4gdW1hY2hpbmVzLmggYmVjYXVzZSB0aGV5IGNh
biBiZSBtYWNoaW5lLWRlcGVuZGVudC4KLSAqCi0gKiB1dGYuaCBpcyBpbmNsdWRlZCBieSB1dHlw
ZXMuaCBhbmQgaXRzZWxmIGluY2x1ZGVzIHV0ZjguaCBhbmQgdXRmMTYuaCBhZnRlciBzb21lCi0g
KiBjb21tb24gZGVmaW5pdGlvbnMuIFRob3NlIGZpbGVzIGRlZmluZSBtYWNyb3MgZm9yIGVmZmlj
aWVudGx5IGdldHRpbmcgY29kZSBwb2ludHMKLSAqIGluIGFuZCBvdXQgb2YgVVRGLTgvMTYgc3Ry
aW5ncy4KLSAqIHV0ZjE2LmggbWFjcm9zIGhhdmUgIlUxNl8iIHByZWZpeGVzLgotICogdXRmOC5o
IGRlZmluZXMgc2ltaWxhciBtYWNyb3Mgd2l0aCAiVThfIiBwcmVmaXhlcyBmb3IgVVRGLTggc3Ry
aW5nIGhhbmRsaW5nLgotICoKLSAqIElDVSBwcm9jZXNzZXMgMTYtYml0IFVuaWNvZGUgc3RyaW5n
cy4KLSAqIE1vc3Qgb2YgdGhlIHRpbWUsIHN1Y2ggc3RyaW5ncyBhcmUgd2VsbC1mb3JtZWQgVVRG
LTE2LgotICogU2luZ2xlLCB1bnBhaXJlZCBzdXJyb2dhdGVzIG11c3QgYmUgaGFuZGxlZCBhcyB3
ZWxsLCBhbmQgYXJlIHRyZWF0ZWQgaW4gSUNVCi0gKiBsaWtlIHJlZ3VsYXIgY29kZSBwb2ludHMg
d2hlcmUgcG9zc2libGUuCi0gKiAoUGFpcnMgb2Ygc3Vycm9nYXRlIGNvZGUgcG9pbnRzIGFyZSBp
bmRpc3Rpbmd1aXNoYWJsZSBmcm9tIHN1cHBsZW1lbnRhcnkKLSAqIGNvZGUgcG9pbnRzIGVuY29k
ZWQgYXMgcGFpcnMgb2Ygc3VwcGxlbWVudGFyeSBjb2RlIHVuaXRzLikKLSAqCi0gKiBJbiBmYWN0
LCBhbG1vc3QgYWxsIFVuaWNvZGUgY29kZSBwb2ludHMgaW4gbm9ybWFsIHRleHQgKD45OSUpCi0g
KiBhcmUgb24gdGhlIEJNUCAoPD1VK2ZmZmYpIGFuZCBldmVuIDw9VStkN2ZmLgotICogSUNVIGZ1
bmN0aW9ucyBoYW5kbGUgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50cyAoVSsxMDAwMC4uVSsxMGZm
ZmYpCi0gKiBidXQgYXJlIG9wdGltaXplZCBmb3IgdGhlIG11Y2ggbW9yZSBmcmVxdWVudGx5IG9j
Y3VycmluZyBCTVAgY29kZSBwb2ludHMuCi0gKgotICogdXRmLmggZGVmaW5lcyBVQ2hhciB0byBi
ZSBhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlci4gSWYgdGhpcyBtYXRjaGVzIHdjaGFyX3QsIHRo
ZW4KLSAqIFVDaGFyIGlzIGRlZmluZWQgdG8gYmUgZXhhY3RseSB3Y2hhcl90LCBvdGhlcndpc2Ug
dWludDE2X3QuCi0gKgotICogVUNoYXIzMiBpcyBkZWZpbmVkIHRvIGJlIGEgc2lnbmVkIDMyLWJp
dCBpbnRlZ2VyIChpbnQzMl90KSwgbGFyZ2UgZW5vdWdoIGZvciBhIDIxLWJpdAotICogVW5pY29k
ZSBjb2RlIHBvaW50IChVbmljb2RlIHNjYWxhciB2YWx1ZSwgMC4uMHgxMGZmZmYpLgotICogQmVm
b3JlIElDVSAyLjQsIHRoZSBkZWZpbml0aW9uIG9mIFVDaGFyMzIgd2FzIHNpbWlsYXJseSBwbGF0
Zm9ybS1kZXBlbmRlbnQgYXMKLSAqIHRoZSBkZWZpbml0aW9uIG9mIFVDaGFyLiBGb3IgZGV0YWls
cyBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIFVDaGFyMzIgaXRzZWxmLgotICoKLSAqIHV0Zi5o
IGFsc28gZGVmaW5lcyBhIHNtYWxsIG51bWJlciBvZiBDIG1hY3JvcyBmb3Igc2luZ2xlIFVuaWNv
ZGUgY29kZSBwb2ludHMuCi0gKiBUaGVzZSBhcmUgc2ltcGxlIGNoZWNrcyBmb3Igc3Vycm9nYXRl
cyBhbmQgbm9uLWNoYXJhY3RlcnMuCi0gKiBGb3IgYWN0dWFsIFVuaWNvZGUgY2hhcmFjdGVyIHBy
b3BlcnRpZXMgc2VlIHVjaGFyLmguCi0gKgotICogQnkgZGVmYXVsdCwgc3RyaW5nIG9wZXJhdGlv
bnMgbXVzdCBiZSBkb25lIHdpdGggZXJyb3IgY2hlY2tpbmcgaW4gY2FzZQotICogYSBzdHJpbmcg
aXMgbm90IHdlbGwtZm9ybWVkIFVURi0xNi4KLSAqIFRoZSBtYWNyb3Mgd2lsbCBkZXRlY3QgaWYg
YSBzdXJyb2dhdGUgY29kZSB1bml0IGlzIHVucGFpcmVkCi0gKiAobGVhZCB1bml0IHdpdGhvdXQg
dHJhaWwgdW5pdCBvciB2aWNlIHZlcnNhKSBhbmQganVzdCByZXR1cm4gdGhlIHVuaXQgaXRzZWxm
Ci0gKiBhcyB0aGUgY29kZSBwb2ludC4KLSAqIChJdCBpcyBhbiBhY2NpZGVudGFsIHByb3BlcnR5
IG9mIFVuaWNvZGUgYW5kIFVURi0xNiB0aGF0IGFsbAotICogbWFsZm9ybWVkIHNlcXVlbmNlcyBj
YW4gYmUgZXhwcmVzc2VkIHVuYW1iaWd1b3VzbHkgd2l0aCBhIGRpc3RpbmN0IHN1YnJhbmdlCi0g
KiBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLikKLSAqCi0gKiBXaGVuIGl0IGlzIHNhZmUgdG8gYXNz
dW1lIHRoYXQgdGV4dCBpcyB3ZWxsLWZvcm1lZCBVVEYtMTYKLSAqIChkb2VzIG5vdCBjb250YWlu
IHNpbmdsZSwgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gb25lIGNhbiB1c2UKLSAqIFUxNl8u
Li5fVU5TQUZFIG1hY3Jvcy4KLSAqIFRoZXNlIGRvIG5vdCBjaGVjayBmb3IgcHJvcGVyIGNvZGUg
dW5pdCBzZXF1ZW5jZXMgb3IgdHJ1bmNhdGVkIHRleHQgYW5kIG1heQotICogeWllbGQgd3Jvbmcg
cmVzdWx0cyBvciBldmVuIGNhdXNlIGEgY3Jhc2ggaWYgdGhleSBhcmUgdXNlZCB3aXRoICJtYWxm
b3JtZWQiCi0gKiB0ZXh0LgotICogSW4gcHJhY3RpY2UsIFUxNl8uLi5fVU5TQUZFIG1hY3JvcyB3
aWxsIHByb2R1Y2Ugc2xpZ2h0bHkgbGVzcyBjb2RlIGJ1dAotICogc2hvdWxkIG5vdCBiZSBmYXN0
ZXIgYmVjYXVzZSB0aGUgcHJvY2Vzc2luZyBpcyBvbmx5IGRpZmZlcmVudCB3aGVuIGEKLSAqIHN1
cnJvZ2F0ZSBjb2RlIHVuaXQgaXMgZGV0ZWN0ZWQsIHdoaWNoIHdpbGwgYmUgcmFyZS4KLSAqCi0g
KiBTaW1pbGFybHkgZm9yIFVURi04LCB0aGVyZSBhcmUgInNhZmUiIG1hY3JvcyB3aXRob3V0IGEg
c3VmZml4LAotICogYW5kIFU4Xy4uLl9VTlNBRkUgdmVyc2lvbnMuCi0gKiBUaGUgcGVyZm9ybWFu
Y2UgZGlmZmVyZW5jZXMgYXJlIG11Y2ggbGFyZ2VyIGhlcmUgYmVjYXVzZSBVVEYtOCBwcm92aWRl
cyBzbwotICogbWFueSBvcHBvcnR1bml0aWVzIGZvciBtYWxmb3JtZWQgc2VxdWVuY2VzLgotICog
VGhlIHVuc2FmZSBVVEYtOCBtYWNyb3MgYXJlIGVudGlyZWx5IGltcGxlbWVudGVkIGluc2lkZSB0
aGUgbWFjcm8gZGVmaW5pdGlvbnMKLSAqIGFuZCBhcmUgZmFzdCwgd2hpbGUgdGhlIHNhZmUgVVRG
LTggbWFjcm9zIGNhbGwgZnVuY3Rpb25zIGZvciBhbGwgYnV0IHRoZQotICogdHJpdmlhbCAoQVND
SUkpIGNhc2VzLgotICoKLSAqIFVubGlrZSB3aXRoIFVURi0xNiwgbWFsZm9ybWVkIHNlcXVlbmNl
cyBjYW5ub3QgYmUgZXhwcmVzc2VkIHdpdGggZGlzdGluY3QKLSAqIGNvZGUgcG9pbnQgdmFsdWVz
ICgwLi5VKzEwZmZmZikuIFRoZXkgYXJlIGluZGljYXRlZCB3aXRoIG5lZ2F0aXZlIHZhbHVlcyBp
bnN0ZWFkLgotICoKLSAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgSUNVIFVzZXIgR3Vp
ZGUgU3RyaW5ncyBjaGFwdGVyCi0gKiAoaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91
c2VyZ3VpZGUvKS4KLSAqCi0gKiA8ZW0+VXNhZ2U6PC9lbT4KLSAqIElDVSBjb2RpbmcgZ3VpZGVs
aW5lcyBmb3IgaWYoKSBzdGF0ZW1lbnRzIHNob3VsZCBiZSBmb2xsb3dlZCB3aGVuIHVzaW5nIHRo
ZXNlIG1hY3Jvcy4KLSAqIENvbXBvdW5kIHN0YXRlbWVudHMgKGN1cmx5IGJyYWNlcyB7fSkgbXVz
dCBiZSB1c2VkICBmb3IgaWYtZWxzZS13aGlsZS4uLiAKLSAqIGJvZGllcyBhbmQgYWxsIG1hY3Jv
IHN0YXRlbWVudHMgc2hvdWxkIGJlIHRlcm1pbmF0ZWQgd2l0aCBzZW1pY29sb24uCi0gKgotICog
QHN0YWJsZSBJQ1UgMi40Ci0gKi8KLQotI2lmbmRlZiBfX1VURl9IX18KLSNkZWZpbmUgX19VVEZf
SF9fCi0KLSNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgotLyogaW5jbHVkZSB0aGUgdXRmWFgu
aCBhZnRlciB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zICovCi0KLS8qIHNpbmdsZS1jb2RlIHBv
aW50IGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCi0KLS8qKgotICogVGhpcyB2YWx1ZSBpcyBpbnRlbmRlZCBmb3Igc2VudGluZWwgdmFs
dWVzIGZvciBBUElzIHRoYXQKLSAqICh0YWtlIG9yKSByZXR1cm4gc2luZ2xlIGNvZGUgcG9pbnRz
IChVQ2hhcjMyKS4KLSAqIEl0IGlzIG91dHNpZGUgb2YgdGhlIFVuaWNvZGUgY29kZSBwb2ludCBy
YW5nZSAwLi4weDEwZmZmZi4KLSAqIAotICogRm9yIGV4YW1wbGUsIGEgImRvbmUiIG9yICJlcnJv
ciIgdmFsdWUgaW4gYSBuZXcgQVBJCi0gKiBjb3VsZCBiZSBpbmRpY2F0ZWQgd2l0aCBVX1NFTlRJ
TkVMLgotICoKLSAqIElDVSBBUElzIGRlc2lnbmVkIGJlZm9yZSBJQ1UgMi40IHVzdWFsbHkgZGVm
aW5lIHNlcnZpY2Utc3BlY2lmaWMgImRvbmUiCi0gKiB2YWx1ZXMsIG1vc3RseSAweGZmZmYuCi0g
KiBUaG9zZSBtYXkgbmVlZCB0byBiZSBkaXN0aW5ndWlzaGVkIGZyb20KLSAqIGFjdHVhbCBVK2Zm
ZmYgdGV4dCBjb250ZW50cyBieSBjYWxsaW5nIGZ1bmN0aW9ucyBsaWtlCi0gKiBDaGFyYWN0ZXJJ
dGVyYXRvcjo6aGFzTmV4dCgpIG9yIFVuaWNvZGVTdHJpbmc6Omxlbmd0aCgpLgotICoKLSAqIEBy
ZXR1cm4gLTEKLSAqIEBzZWUgVUNoYXIzMgotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZp
bmUgVV9TRU5USU5FTCAoLTEpCi0KLS8qKgotICogSXMgdGhpcyBjb2RlIHBvaW50IGEgVW5pY29k
ZSBub25jaGFyYWN0ZXI/Ci0gKiBAcGFyYW0gYyAzMi1iaXQgY29kZSBwb2ludAotICogQHJldHVy
biBUUlVFIG9yIEZBTFNFCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVX0lTX1VO
SUNPREVfTk9OQ0hBUihjKSBcCi0gICAgKChjKT49MHhmZGQwICYmIFwKLSAgICAgKCh1aW50MzJf
dCkoYyk8PTB4ZmRlZiB8fCAoKGMpJjB4ZmZmZSk9PTB4ZmZmZSkgJiYgXAotICAgICAodWludDMy
X3QpKGMpPD0weDEwZmZmZikKLQotLyoqCi0gKiBJcyBjIGEgVW5pY29kZSBjb2RlIHBvaW50IHZh
bHVlICgwLi5VKzEwZmZmZikKLSAqIHRoYXQgY2FuIGJlIGFzc2lnbmVkIGEgY2hhcmFjdGVyPwot
ICoKLSAqIENvZGUgcG9pbnRzIHRoYXQgYXJlIG5vdCBjaGFyYWN0ZXJzIGluY2x1ZGU6Ci0gKiAt
IHNpbmdsZSBzdXJyb2dhdGUgY29kZSBwb2ludHMgKFUrZDgwMC4uVStkZmZmLCAyMDQ4IGNvZGUg
cG9pbnRzKQotICogLSB0aGUgbGFzdCB0d28gY29kZSBwb2ludHMgb24gZWFjaCBwbGFuZSAoVStf
X2ZmZmUgYW5kIFUrX19mZmZmLCAzNCBjb2RlIHBvaW50cykKLSAqIC0gVStmZGQwLi5VK2ZkZWYg
KG5ldyB3aXRoIFVuaWNvZGUgMy4xLCAzMiBjb2RlIHBvaW50cykKLSAqIC0gdGhlIGhpZ2hlc3Qg
VW5pY29kZSBjb2RlIHBvaW50IHZhbHVlIGlzIFUrMTBmZmZmCi0gKgotICogVGhpcyBtZWFucyB0
aGF0IGFsbCBjb2RlIHBvaW50cyBiZWxvdyBVK2Q4MDAgYXJlIGNoYXJhY3RlciBjb2RlIHBvaW50
cywKLSAqIGFuZCB0aGF0IGJvdW5kYXJ5IGlzIHRlc3RlZCBmaXJzdCBmb3IgcGVyZm9ybWFuY2Uu
Ci0gKgotICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKLSAqIEByZXR1cm4gVFJVRSBvciBG
QUxTRQotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVV9JU19VTklDT0RFX0NIQVIo
YykgXAotICAgICgodWludDMyX3QpKGMpPDB4ZDgwMCB8fCBcCi0gICAgICAgICgodWludDMyX3Qp
KGMpPjB4ZGZmZiAmJiBcCi0gICAgICAgICAodWludDMyX3QpKGMpPD0weDEwZmZmZiAmJiBcCi0g
ICAgICAgICAhVV9JU19VTklDT0RFX05PTkNIQVIoYykpKQotCi0jaWZuZGVmIFVfSElERV9EUkFG
VF9BUEkKLQotLyoqCi0gKiBJcyB0aGlzIGNvZGUgcG9pbnQgYSBCTVAgY29kZSBwb2ludCAoVSsw
MDAwLi5VK2ZmZmYpPwotICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKLSAqIEByZXR1cm4g
VFJVRSBvciBGQUxTRQotICogQGRyYWZ0IElDVSAyLjgKLSAqLwotI2RlZmluZSBVX0lTX0JNUChj
KSAoKHVpbnQzMl90KShjKTw9MHhmZmZmKQotCi0vKioKLSAqIElzIHRoaXMgY29kZSBwb2ludCBh
IHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCAoVSsxMDAwMC4uVSsxMGZmZmYpPwotICogQHBhcmFt
IGMgMzItYml0IGNvZGUgcG9pbnQKLSAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQotICogQGRyYWZ0
IElDVSAyLjgKLSAqLwotI2RlZmluZSBVX0lTX1NVUFBMRU1FTlRBUlkoYykgKCh1aW50MzJfdCko
KGMpLTB4MTAwMDApPD0weGZmZmZmKQotCi0jZW5kaWYgLypVX0hJREVfRFJBRlRfQVBJKi8KLSAK
LS8qKgotICogSXMgdGhpcyBjb2RlIHBvaW50IGEgbGVhZCBzdXJyb2dhdGUgKFUrZDgwMC4uVStk
YmZmKT8KLSAqIEBwYXJhbSBjIDMyLWJpdCBjb2RlIHBvaW50Ci0gKiBAcmV0dXJuIFRSVUUgb3Ig
RkFMU0UKLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVmaW5lIFVfSVNfTEVBRChjKSAoKChj
KSYweGZmZmZmYzAwKT09MHhkODAwKQotCi0vKioKLSAqIElzIHRoaXMgY29kZSBwb2ludCBhIHRy
YWlsIHN1cnJvZ2F0ZSAoVStkYzAwLi5VK2RmZmYpPwotICogQHBhcmFtIGMgMzItYml0IGNvZGUg
cG9pbnQKLSAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8K
LSNkZWZpbmUgVV9JU19UUkFJTChjKSAoKChjKSYweGZmZmZmYzAwKT09MHhkYzAwKQotCi0vKioK
LSAqIElzIHRoaXMgY29kZSBwb2ludCBhIHN1cnJvZ2F0ZSAoVStkODAwLi5VK2RmZmYpPwotICog
QHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKLSAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQotICog
QHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVV9JU19TVVJST0dBVEUoYykgKCgoYykmMHhm
ZmZmZjgwMCk9PTB4ZDgwMCkKLQotLyoqCi0gKiBBc3N1bWluZyBjIGlzIGEgc3Vycm9nYXRlIGNv
ZGUgcG9pbnQgKFVfSVNfU1VSUk9HQVRFKGMpKSwKLSAqIGlzIGl0IGEgbGVhZCBzdXJyb2dhdGU/
Ci0gKiBAcGFyYW0gYyAzMi1iaXQgY29kZSBwb2ludAotICogQHJldHVybiBUUlVFIG9yIEZBTFNF
Ci0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVX0lTX1NVUlJPR0FURV9MRUFEKGMp
ICgoKGMpJjB4NDAwKT09MCkKLQotLyogaW5jbHVkZSB0aGUgdXRmWFguaCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUg
InVuaWNvZGUvdXRmOC5oIgotI2luY2x1ZGUgInVuaWNvZGUvdXRmMTYuaCIKLQotLyogdXRmX29s
ZC5oIGNvbnRhaW5zIGRlcHJlY2F0ZWQsIHByZS1JQ1UgMi40IGRlZmluaXRpb25zICovCi0jaW5j
bHVkZSAidW5pY29kZS91dGZfb2xkLmgiCi0KLSNlbmRpZgpJbmRleDogSmF2YVNjcmlwdEdsdWUv
aWN1L3VuaWNvZGUvdXRmX29sZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL2ljdS91
bmljb2RlL3V0Zl9vbGQuaAkocmV2aXNpb24gNzQ2MTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9pY3Uv
dW5pY29kZS91dGZfb2xkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotLyogVGhpcyBm
aWxlIGlzIGludGVudGlvbmFsbHkgbGVmdCBibGFuay4gKi8KSW5kZXg6IEphdmFTY3JpcHRHbHVl
L2ljdS91bmljb2RlL3V0eXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL2ljdS91
bmljb2RlL3V0eXBlcy5oCShyZXZpc2lvbiA3NDYxNikKKysrIEphdmFTY3JpcHRHbHVlL2ljdS91
bmljb2RlL3V0eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc0NSArMCwwIEBACi0vKgotKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1
c2luZXNzIE1hY2hpbmVzCi0qICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCi0qCi0qICBGSUxFIE5BTUUgOiBVVFlQRVMuSCAoZm9y
bWVybHkgcHR5cGVzLmgpCi0qCi0qICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRp
b24KLSogICAxMi8xMS85NiAgICBoZWxlbmEgICAgICBDcmVhdGlvbi4KLSogICAwMi8yNy85NyAg
ICBhbGl1ICAgICAgICBBZGRlZCB0eXBlZGVmcyBmb3IgVUNsYXNzSUQsIGludDgsIGludDE2LCBp
bnQzMiwKLSogICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OCwgdWludDE2LCBhbmQgdWlu
dDMyLgotKiAgIDA0LzAxLzk3ICAgIGFsaXUgICAgICAgIEFkZGVkIFhQX0NQTFVTUExVUyBhbmQg
bW9kaWZpZWQgdG8gd29yayB1bmRlciBDIGFzCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdlbGwgYXMgQysrLgotKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGlmaWVkIHRvIHVz
ZSBtZW1jcHkoKSBmb3IgdXBydl9hcnJheUNvcHkoKSBmbnMuCi0qICAgMDQvMTQvOTcgICAgYWxp
dSAgICAgICAgQWRkZWQgVFBsYXRmb3JtVXRpbGl0aWVzLgotKiAgIDA1LzA3Lzk3ICAgIGFsaXUg
ICAgICAgIEFkZGVkIGltcG9ydC9leHBvcnQgc3BlY2lmaWVycyAocmVwbGFjaW5nIHRoZSBvbGQK
LSogICAgICAgICAgICAgICAgICAgICAgICAgICBicm9rZW4gRVhUX0NMQVNTKS4gIEFkZGVkIHZl
cnNpb24gbnVtYmVyIGZvciBvdXIKLSogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLiAg
Q2xlYW5lZCB1cCBoZWFkZXIuCi0qICAgIDYvMjAvOTcgICAgaGVsZW5hICAgICAgSmF2YSBjbGFz
cyBuYW1lIGNoYW5nZS4KLSogICAwOC8xMS85OCAgICBzdGVwaGVuICAgICBVRXJyb3JDb2RlIGNo
YW5nZWQgZnJvbSB0eXBlZGVmIHRvIGVudW0KLSogICAwOC8xMi85OCAgICBlcm0gICAgICAgICBD
aGFuZ2VkIFRfQU5BTFlUSUNfUEFDS0FHRV9WRVJTSU9OIHRvIDMKLSogICAwOC8xNC85OCAgICBz
dGVwaGVuICAgICBBZGRlZCB1cHJ2X2FycmF5Q29weSgpIGZvciBpbnQ4X3QsIGludDE2X3QsIGlu
dDMyX3QKLSogICAxMi8wOS85OCAgICBqZml0eiAgICAgICBBZGRlZCBCVUZGRVJfT1ZFUkZMT1df
RVJST1IgKGJ1ZyAxMTAwMDY2KQotKiAgIDA0LzIwLzk5ICAgIHN0ZXBoZW4gICAgIENsZWFuZWQg
dXAgJiByZXdvcmtlZCBmb3IgYXV0b2NvbmYuCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVuYW1lZCB0byB1dHlwZXMuaC4KLSogICAwNS8wNS85OSAgICBzdGVwaGVuICAgICBDaGFuZ2Vk
IHRvIHVzZSA8aW50dHlwZXMuaD4KLSogICAxMi8wNy85OSAgICBoZWxlbmEgICAgICBNb3ZlZCBj
b3B5cmlnaHQgbm90aWNlIHN0cmluZyBmcm9tIHVjbnZfYmxkLmggaGVyZS4KLSoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKLSovCi0KLSNpZm5kZWYgVVRZUEVTX0gKLSNkZWZpbmUgVVRZUEVTX0gKLQot
Ci0jaW5jbHVkZSAidW5pY29kZS91bWFjaGluZS5oIgotI2luY2x1ZGUgInVuaWNvZGUvdXRmLmgi
Ci0jaW5jbHVkZSAidW5pY29kZS91dmVyc2lvbi5oIgotI2luY2x1ZGUgInVuaWNvZGUvdWNvbmZp
Zy5oIgotCi0jaWZkZWYgVV9ISURFX0RSQUZUX0FQSQotI2luY2x1ZGUgInVuaWNvZGUvdWRyYWZ0
LmgiCi0jZW5kaWYKLQotI2lmZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQotI2luY2x1ZGUgInVu
aWNvZGUvdWRlcHJjdGQuaCIKLSNlbmRpZgotCi0jaWZkZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJ
Ci0jaW5jbHVkZSAidW5pY29kZS91b2JzbGV0ZS5oIgotI2VuZGlmCi0KLQotLyohCi0gKiBcZmls
ZQotICogXGJyaWVmIEJhc2ljIGRlZmluaXRpb25zIGZvciBJQ1UsIGZvciBib3RoIEMgYW5kIEMr
KyBBUElzCi0gKgotICogVGhpcyBmaWxlIGRlZmluZXMgYmFzaWMgdHlwZXMsIGNvbnN0YW50cywg
YW5kIGVudW1lcmF0aW9ucyBkaXJlY3RseSBvcgotICogaW5kaXJlY3RseSBieSBpbmNsdWRpbmcg
b3RoZXIgaGVhZGVyIGZpbGVzLCBlc3BlY2lhbGx5IHV0Zi5oIGZvciB0aGUKLSAqIGJhc2ljIGNo
YXJhY3RlciBhbmQgc3RyaW5nIGRlZmluaXRpb25zIGFuZCB1bWFjaGluZS5oIGZvciBjb25zaXN0
ZW50Ci0gKiBpbnRlZ2VyIGFuZCBvdGhlciB0eXBlcy4KLSAqLwotCi0vKj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PSovCi0vKiBjaGFyIENoYXJhY3RlciBzZXQgZmFtaWx5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0K
LS8qKgotICogVV9DSEFSU0VUX0ZBTUlMWSBpcyBlcXVhbCB0byB0aGlzIHZhbHVlIHdoZW4gdGhl
IHBsYXRmb3JtIGlzIGFuIEFTQ0lJIGJhc2VkIHBsYXRmb3JtLgotICogQHN0YWJsZSBJQ1UgMi4w
Ci0gKi8KLSNkZWZpbmUgVV9BU0NJSV9GQU1JTFkgMAotCi0vKioKLSAqIFVfQ0hBUlNFVF9GQU1J
TFkgaXMgZXF1YWwgdG8gdGhpcyB2YWx1ZSB3aGVuIHRoZSBwbGF0Zm9ybSBpcyBhbiBFQkNESUMg
YmFzZWQgcGxhdGZvcm0uCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotI2RlZmluZSBVX0VCQ0RJ
Q19GQU1JTFkgMQotCi0vKioKLSAqIFxkZWYgVV9DSEFSU0VUX0ZBTUlMWQotICoKLSAqIDxwPlRo
ZXNlIGRlZmluaXRpb25zIGFsbG93IHRvIHNwZWNpZnkgdGhlIGVuY29kaW5nIG9mIHRleHQKLSAq
IGluIHRoZSBjaGFyIGRhdGEgdHlwZSBhcyBkZWZpbmVkIGJ5IHRoZSBwbGF0Zm9ybSBhbmQgdGhl
IGNvbXBpbGVyLgotICogSXQgaXMgZW5vdWdoIHRvIGRldGVybWluZSB0aGUgY29kZSBwb2ludCB2
YWx1ZXMgb2YgImludmFyaWFudCBjaGFyYWN0ZXJzIiwKLSAqIHdoaWNoIGFyZSB0aGUgb25lcyBz
aGFyZWQgYnkgYWxsIGVuY29kaW5ncyB0aGF0IGFyZSBpbiB1c2UKLSAqIG9uIGEgZ2l2ZW4gcGxh
dGZvcm0uPC9wPgotICoKLSAqIDxwPlRob3NlICJpbnZhcmlhbnQgY2hhcmFjdGVycyIgc2hvdWxk
IGJlIGFsbCB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2UKLSAqIGxhdGluIGxldHRlcnMsIHRo
ZSBkaWdpdHMsIHRoZSBzcGFjZSwgYW5kICJiYXNpYyBwdW5jdHVhdGlvbiIuCi0gKiBBbHNvLCAn
XFxuJywgJ1xccicsICdcXHQnIHNob3VsZCBiZSBhdmFpbGFibGUuPC9wPgotICoKLSAqIDxwPlRo
ZSBsaXN0IG9mICJpbnZhcmlhbnQgY2hhcmFjdGVycyIgaXM6PGJyPgotICogXGNvZGUKLSAqICAg
IEEtWiAgYS16ICAwLTkgIFNQQUNFICAiICAlICAmYW1wOyAgJyAgKCAgKSAgKiAgKyAgLCAgLSAg
LiAgLyAgOiAgOyAgPCAgPSAgPiAgPyAgXwotICogXGVuZGNvZGUKLSAqIDxicj4KLSAqICg1MiBs
ZXR0ZXJzICsgMTAgbnVtYmVycyArIDIwIHB1bmMvc3ltL3NwYWNlID0gODIgdG90YWwpPC9wPgot
ICoKLSAqIDxwPlRoaXMgbWF0Y2hlcyB0aGUgSUJNIFN5bnRhY3RpYyBDaGFyYWN0ZXIgU2V0IChD
UyA2NDApLjwvcD4KLSAqCi0gKiA8cD5JbiBvdGhlciB3b3JkcywgYWxsIHRoZSBncmFwaGljIGNo
YXJhY3RlcnMgaW4gNy1iaXQgQVNDSUkgc2hvdWxkCi0gKiBiZSBzYWZlbHkgYWNjZXNzaWJsZSBl
eGNlcHQgdGhlIGZvbGxvd2luZzo8L3A+Ci0gKgotICogXGNvZGUKLSAqICAgICdcJyA8YmFja3Ns
YXNoPgotICogICAgJ1snIDxsZWZ0IGJyYWNrZXQ+Ci0gKiAgICAnXScgPHJpZ2h0IGJyYWNrZXQ+
Ci0gKiAgICAneycgPGxlZnQgYnJhY2U+Ci0gKiAgICAnfScgPHJpZ2h0IGJyYWNlPgotICogICAg
J14nIDxjaXJjdW1mbGV4PgotICogICAgJ34nIDx0aWxkZT4KLSAqICAgICchJyA8ZXhjbGFtYXRp
b24gbWFyaz4KLSAqICAgICcjJyA8bnVtYmVyIHNpZ24+Ci0gKiAgICAnfCcgPHZlcnRpY2FsIGxp
bmU+Ci0gKiAgICAnJCcgPGRvbGxhciBzaWduPgotICogICAgJ0AnIDxjb21tZXJjaWFsIGF0Pgot
ICogICAgJ2AnIDxncmF2ZSBhY2NlbnQ+Ci0gKiBcZW5kY29kZQotICogQHN0YWJsZSBJQ1UgMi4w
Ci0gKi8KLQotI2lmbmRlZiBVX0NIQVJTRVRfRkFNSUxZCi0jICAgZGVmaW5lIFVfQ0hBUlNFVF9G
QU1JTFkgMAotI2VuZGlmCi0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLS8qIElDVURBVEEgbmFt
aW5nIHNjaGVtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotLyoqCi0gKiBcZGVmIFVfSUNVREFU
QV9UWVBFX0xFVFRFUgotICoKLSAqIFRoaXMgaXMgYSBwbGF0Zm9ybS1kZXBlbmRlbnQgc3RyaW5n
IGNvbnRhaW5pbmcgb25lIGxldHRlcjoKLSAqIC0gYiBmb3IgYmlnLWVuZGlhbiwgQVNDSUktZmFt
aWx5IHBsYXRmb3JtcwotICogLSBsIGZvciBsaXR0bGUtZW5kaWFuLCBBU0NJSS1mYW1pbHkgcGxh
dGZvcm1zCi0gKiAtIGUgZm9yIGJpZy1lbmRpYW4sIEVCQ0RJQy1mYW1pbHkgcGxhdGZvcm1zCi0g
KiBUaGlzIGxldHRlciBpcyBwYXJ0IG9mIHRoZSBjb21tb24gZGF0YSBmaWxlIG5hbWUuCi0gKiBA
c3RhYmxlIElDVSAyLjAKLSAqLwotCi0vKioKLSAqIFxkZWYgVV9JQ1VEQVRBX1RZUEVfTElUTEVU
VEVSCi0gKiBUaGUgbm9uLXN0cmluZyBmb3JtIG9mIFVfSUNVREFUQV9UWVBFX0xFVFRFUgotICog
QHN0YWJsZSBJQ1UgMi4wCi0gKi8KLSNpZiBVX0NIQVJTRVRfRkFNSUxZCi0jICAgaWYgVV9JU19C
SUdfRU5ESUFOCi0gICAvKiBFQkNESUMgLSBzaG91bGQgYWx3YXlzIGJlIEJFICovCi0jICAgICBk
ZWZpbmUgVV9JQ1VEQVRBX1RZUEVfTEVUVEVSICJlIgotIyAgICAgZGVmaW5lIFVfSUNVREFUQV9U
WVBFX0xJVExFVFRFUiBlCi0jICAgZWxzZQotIyAgICAgZXJyb3IgIkRvbid0IGtub3cgd2hhdCB0
byBkbyB3aXRoIGxpdHRsZSBlbmRpYW4gRUJDRElDISIKLSMgICAgIGRlZmluZSBVX0lDVURBVEFf
VFlQRV9MRVRURVIgIngiCi0jICAgICBkZWZpbmUgVV9JQ1VEQVRBX1RZUEVfTElUTEVUVEVSIHgK
LSMgICBlbmRpZgotI2Vsc2UKLSMgICBpZiBVX0lTX0JJR19FTkRJQU4KLSAgICAgIC8qIEJpZy1l
bmRpYW4gQVNDSUkgKi8KLSMgICAgIGRlZmluZSBVX0lDVURBVEFfVFlQRV9MRVRURVIgImIiCi0j
ICAgICBkZWZpbmUgVV9JQ1VEQVRBX1RZUEVfTElUTEVUVEVSIGIKLSMgICBlbHNlCi0gICAgICAv
KiBMaXR0bGUtZW5kaWFuIEFTQ0lJICovCi0jICAgICBkZWZpbmUgVV9JQ1VEQVRBX1RZUEVfTEVU
VEVSICJsIgotIyAgICAgZGVmaW5lIFVfSUNVREFUQV9UWVBFX0xJVExFVFRFUiBsCi0jICAgZW5k
aWYKLSNlbmRpZgotCi0vKioKLSAqIEEgc2luZ2xlIHN0cmluZyBsaXRlcmFsIGNvbnRhaW5pbmcg
dGhlIGljdWRhdGEgc3R1YiBuYW1lLiBpLmUuICdpY3VkdDE4ZScgZm9yCi0gKiBJQ1UgMS44Lngg
b24gRUJDRElDLCBldGMuLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLSNkZWZpbmUgVV9JQ1VE
QVRBX05BTUUgICAgImljdWR0IiBVX0lDVV9WRVJTSU9OX1NIT1JUIFVfSUNVREFUQV9UWVBFX0xF
VFRFUgotCi0KLS8qKgotICogIFVfSUNVX0VOVFJZX1BPSU5UIGlzIHRoZSBuYW1lIG9mIHRoZSBE
TEwgZW50cnkgcG9pbnQgdG8gdGhlIElDVSBkYXRhIGxpYnJhcnkuCi0gKiAgICBEZWZpbmVkIGFz
IGEgbGl0ZXJhbCwgbm90IGEgc3RyaW5nLgotICogICAgVHJpY2t5IFByZXByb2Nlc3NvciB1c2Ug
LSAjIyBvcGVyYXRvciByZXBsYWNlcyBtYWNybyBwYXJhbXRlcnMgd2l0aCB0aGUgbGl0ZXJhbCBz
dHJpbmcKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgY29ycmVzcG9u
ZGluZyBtYWNybyBpbnZvY2F0aW9uLCBfYmVmb3JlXyBvdGhlciBtYWNybyBzdWJzdGl0dXRpb25z
LgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZWVkIGEgbmVzdGVkICNkZWZpbmVz
IHRvIGdldCB0aGUgYWN0dWFsIHZlcnNpb24gbnVtYmVycyByYXRoZXIgdGhhbgotICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGl0ZXJhbCB0ZXh0IFVfSUNVX1ZFUlNJT05fTUFK
T1JfTlVNIGludG8gdGhlIG5hbWUuCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRo
ZSBuZXQgcmVzdWx0IHdpbGwgYmUgc29tZXRoaW5nIG9mIHRoZSBmb3JtCi0gKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjZGVmaW5lIFVfSUNVX0VOVFJZX1BPSU5UIGljdWR0MTlf
ZGF0Ci0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVX0lDVURBVEFfRU5UUllfUE9J
TlQgIFVfREVGMl9JQ1VEQVRBX0VOVFJZX1BPSU5UKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNLCBV
X0lDVV9WRVJTSU9OX01JTk9SX05VTSkKLS8qKgotICogQGludGVybmFsCi0gKi8KLSNkZWZpbmUg
VV9ERUYyX0lDVURBVEFfRU5UUllfUE9JTlQobWFqb3IsIG1pbm9yKSBVX0RFRl9JQ1VEQVRBX0VO
VFJZX1BPSU5UKG1ham9yLCBtaW5vcikKLS8qKgotICogQGludGVybmFsCi0gKi8KLSNkZWZpbmUg
VV9ERUZfSUNVREFUQV9FTlRSWV9QT0lOVChtYWpvciwgbWlub3IpIGljdWR0IyNtYWpvciMjbWlu
b3IjI19kYXQKLQotLyoqCi0gKiBcZGVmIFVfQ0FMTENPTlYKLSAqIFNpbWlsYXIgdG8gVV9DREVD
TF9CRUdJTi9VX0NERUNMX0VORCwgdGhpcyBxdWFsaWZpZXIgaXMgbmVjZXNzYXJ5Ci0gKiBpbiBj
YWxsYmFjayBmdW5jdGlvbiB0eXBlZGVmcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY2FsbGluZyBj
b252ZW50aW9uCi0gKiBpcyBjb21wYXRpYmxlLgotICoKLSAqIFRoaXMgaXMgb25seSB1c2VkIGZv
ciBub24tSUNVLUFQSSBmdW5jdGlvbnMuCi0gKiBXaGVuIGEgZnVuY3Rpb24gaXMgYSBwdWJsaWMg
SUNVIEFQSSwKLSAqIHlvdSBtdXN0IHVzZSB0aGUgVV9DQVBJIGFuZCBVX0VYUE9SVDIgcXVhbGlm
aWVycy4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi0jaWYgZGVmaW5lZChPUzM5MCkgJiYgKF9f
Q09NUElMRVJfVkVSX18gPCAweDQxMDIwMDAwKSAmJiBkZWZpbmVkKFhQX0NQTFVTUExVUykKLSMg
ICAgZGVmaW5lIFVfQ0FMTENPTlYgX19jZGVjbAotI2Vsc2UKLSMgICAgZGVmaW5lIFVfQ0FMTENP
TlYgVV9FWFBPUlQyCi0jZW5kaWYKLQotLyoqCi0gKiBcZGVmIE5VTEwKLSAqIERlZmluZSBOVUxM
IGlmIG5lY2Vzc2FyeSwgdG8gMCBmb3IgQysrIGFuZCB0byAoKHZvaWQgKikwKSBmb3IgQy4KLSAq
IEBzdGFibGUgSUNVIDIuMAotICovCi0jaWZuZGVmIE5VTEwKLSNpZmRlZiBYUF9DUExVU1BMVVMK
LSNkZWZpbmUgTlVMTCAgICAwCi0jZWxzZQotI2RlZmluZSBOVUxMICAgICgodm9pZCAqKTApCi0j
ZW5kaWYKLSNlbmRpZgotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0vKiBDYWxlbmRhci9UaW1l
Wm9uZSBkYXRhIHR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLS8qKgotICogRGF0ZSBhbmQgVGltZSBk
YXRhIHR5cGUuCi0gKiBUaGlzIGlzIGEgcHJpbWl0aXZlIGRhdGEgdHlwZSB0aGF0IGhvbGRzIHRo
ZSBkYXRlIGFuZCB0aW1lCi0gKiBhcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSAx
OTcwLWphbi0wMSwgMDA6MDAgVVRDLgotICogVVRDIGxlYXAgc2Vjb25kcyBhcmUgaWdub3JlZC4K
LSAqIEBzdGFibGUgSUNVIDIuMAotICovCi10eXBlZGVmIGRvdWJsZSBVRGF0ZTsKLQotLyoqIFRo
ZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHBlciBzZWNvbmQgQHN0YWJsZSBJQ1UgMi4wICovCi0j
ZGVmaW5lIFVfTUlMTElTX1BFUl9TRUNPTkQgICAgICAgICgxMDAwKQotLyoqIFRoZSBudW1iZXIg
b2YgbWlsbGlzZWNvbmRzIHBlciBtaW51dGUgQHN0YWJsZSBJQ1UgMi4wICovCi0jZGVmaW5lIFVf
TUlMTElTX1BFUl9NSU5VVEUgICAgICAgKDYwMDAwKQotLyoqIFRoZSBudW1iZXIgb2YgbWlsbGlz
ZWNvbmRzIHBlciBob3VyIEBzdGFibGUgSUNVIDIuMCAqLwotI2RlZmluZSBVX01JTExJU19QRVJf
SE9VUiAgICAgICAoMzYwMDAwMCkKLS8qKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBwZXIg
ZGF5IEBzdGFibGUgSUNVIDIuMCAqLwotI2RlZmluZSBVX01JTExJU19QRVJfREFZICAgICAgICg4
NjQwMDAwMCkKLQotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0vKiBVQ2xhc3NJRC1iYXNlZCBS
VFRJICovCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLS8qKgotICogVUNsYXNzSUQgaXMgdXNl
ZCB0byBpZGVudGlmeSBjbGFzc2VzIHdpdGhvdXQgdXNpbmcgUlRUSSwgc2luY2UgUlRUSQotICog
aXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgYWxsIEMrKyBjb21waWxlcnMuICBFYWNoIGNsYXNzIGhp
ZXJhcmNoeSB3aGljaCBuZWVkcwotICogdG8gaW1wbGVtZW50IHBvbHltb3JwaGljIGNsb25lKCkg
b3Igb3BlcmF0b3I9PSgpIGRlZmluZXMgdHdvIG1ldGhvZHMsCi0gKiBkZXNjcmliZWQgaW4gZGV0
YWlsIGJlbG93LiAgVUNsYXNzSUQgdmFsdWVzIGNhbiBiZSBjb21wYXJlZCB1c2luZwotICogb3Bl
cmF0b3I9PSgpLiBOb3RoaW5nIGVsc2Ugc2hvdWxkIGJlIGRvbmUgd2l0aCB0aGVtLgotICoKLSAq
IFxwYXIKLSAqIGdldER5bmFtaWNDbGFzc0lEKCkgaXMgZGVjbGFyZWQgaW4gdGhlIGJhc2UgY2xh
c3Mgb2YgdGhlIGhpZXJhcmNoeSBhcwotICogYSBwdXJlIHZpcnR1YWwuICBFYWNoIGNvbmNyZXRl
IHN1YmNsYXNzIGltcGxlbWVudHMgaXQgaW4gdGhlIHNhbWUgd2F5OgotICoKLSAqIFxjb2RlCi0g
KiAgICAgIGNsYXNzIEJhc2UgewotICogICAgICBwdWJsaWM6Ci0gKiAgICAgICAgICB2aXJ0dWFs
IFVDbGFzc0lEIGdldER5bmFtaWNDbGFzc0lEKCkgY29uc3QgPSAwOwotICogICAgICB9Ci0gKgot
ICogICAgICBjbGFzcyBEZXJpdmVkIHsKLSAqICAgICAgcHVibGljOgotICogICAgICAgICAgdmly
dHVhbCBVQ2xhc3NJRCBnZXREeW5hbWljQ2xhc3NJRCgpIGNvbnN0Ci0gKiAgICAgICAgICAgIHsg
cmV0dXJuIERlcml2ZWQ6OmdldFN0YXRpY0NsYXNzSUQoKTsgfQotICogICAgICB9Ci0gKiBcZW5k
Y29kZQotICoKLSAqIEVhY2ggY29uY3JldGUgY2xhc3MgaW1wbGVtZW50cyBnZXRTdGF0aWNDbGFz
c0lEKCkgYXMgd2VsbCwgd2hpY2ggYWxsb3dzCi0gKiBjbGllbnRzIHRvIHRlc3QgZm9yIGEgc3Bl
Y2lmaWMgdHlwZS4KLSAqCi0gKiBcY29kZQotICogICAgICBjbGFzcyBEZXJpdmVkIHsKLSAqICAg
ICAgcHVibGljOgotICogICAgICAgICAgc3RhdGljIFVDbGFzc0lEIFVfRVhQT1JUMiBnZXRTdGF0
aWNDbGFzc0lEKCk7Ci0gKiAgICAgIHByaXZhdGU6Ci0gKiAgICAgICAgICBzdGF0aWMgY2hhciBm
Z0NsYXNzSUQ7Ci0gKiAgICAgIH0KLSAqCi0gKiAgICAgIC8vIEluIERlcml2ZWQuY3BwOgotICog
ICAgICBVQ2xhc3NJRCBEZXJpdmVkOjpnZXRTdGF0aWNDbGFzc0lEKCkKLSAqICAgICAgICB7IHJl
dHVybiAoVUNsYXNzSUQpJkRlcml2ZWQ6OmZnQ2xhc3NJRDsgfQotICogICAgICBjaGFyIERlcml2
ZWQ6OmZnQ2xhc3NJRCA9IDA7IC8vIFZhbHVlIGlzIGlycmVsZXZhbnQKLSAqIFxlbmRjb2RlCi0g
KiBAc3RhYmxlIElDVSAyLjAKLSAqLwotdHlwZWRlZiB2b2lkKiBVQ2xhc3NJRDsKLQotLyo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0qLwotLyogU2hhcmVkIGxpYnJhcnkvRExMIGltcG9ydC1leHBvcnQgQVBJ
IGNvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0qLwotCi0vKgotICogQ29udHJvbCBvZiBzeW1ib2wgaW1wb3J0L2V4cG9ydC4KLSAqIElD
VSBpcyBzZXBhcmF0ZWQgaW50byB0aHJlZSBsaWJyYXJpZXMuCi0gKi8KLQotLyoKLSAqIFxkZWYg
VV9DT01CSU5FRF9JTVBMRU1FTlRBVElPTgotICogU2V0IHRvIGV4cG9ydCBsaWJyYXJ5IHN5bWJv
bHMgZnJvbSBpbnNpZGUgdGhlIElDVSBsaWJyYXJ5Ci0gKiB3aGVuIGFsbCBvZiBJQ1UgaXMgaW4g
YSBzaW5nbGUgbGlicmFyeS4KLSAqIFRoaXMgY2FuIGJlIHNldCBhcyBhIGNvbXBpbGVyIG9wdGlv
biB3aGlsZSBidWlsZGluZyBJQ1UsIGFuZCBpdAotICogbmVlZHMgdG8gYmUgdGhlIGZpcnN0IG9u
ZSB0ZXN0ZWQgdG8gb3ZlcnJpZGUgVV9DT01NT05fQVBJLCBVX0kxOE5fQVBJLCBldGMuCi0gKiBA
c3RhYmxlIElDVSAyLjAKLSAqLwotCi0vKioKLSAqIFxkZWYgVV9EQVRBX0FQSQotICogU2V0IHRv
IGV4cG9ydCBsaWJyYXJ5IHN5bWJvbHMgZnJvbSBpbnNpZGUgdGhlIHN0dWJkYXRhIGxpYnJhcnks
Ci0gKiBhbmQgdG8gaW1wb3J0IHRoZW0gZnJvbSBvdXRzaWRlLgotICogQGRyYWZ0IElDVSAzLjAK
LSAqLwotCi0vKioKLSAqIFxkZWYgVV9DT01NT05fQVBJCi0gKiBTZXQgdG8gZXhwb3J0IGxpYnJh
cnkgc3ltYm9scyBmcm9tIGluc2lkZSB0aGUgY29tbW9uIGxpYnJhcnksCi0gKiBhbmQgdG8gaW1w
b3J0IHRoZW0gZnJvbSBvdXRzaWRlLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLQotLyoqCi0g
KiBcZGVmIFVfSTE4Tl9BUEkKLSAqIFNldCB0byBleHBvcnQgbGlicmFyeSBzeW1ib2xzIGZyb20g
aW5zaWRlIHRoZSBpMThuIGxpYnJhcnksCi0gKiBhbmQgdG8gaW1wb3J0IHRoZW0gZnJvbSBvdXRz
aWRlLgotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLQotLyoqCi0gKiBcZGVmIFVfTEFZT1VUX0FQ
SQotICogU2V0IHRvIGV4cG9ydCBsaWJyYXJ5IHN5bWJvbHMgZnJvbSBpbnNpZGUgdGhlIGxheW91
dCBlbmdpbmUgbGlicmFyeSwKLSAqIGFuZCB0byBpbXBvcnQgdGhlbSBmcm9tIG91dHNpZGUuCi0g
KiBAc3RhYmxlIElDVSAyLjAKLSAqLwotCi0vKioKLSAqIFxkZWYgVV9MQVlPVVRFWF9BUEkKLSAq
IFNldCB0byBleHBvcnQgbGlicmFyeSBzeW1ib2xzIGZyb20gaW5zaWRlIHRoZSBsYXlvdXQgZXh0
ZW5zaW9ucyBsaWJyYXJ5LAotICogYW5kIHRvIGltcG9ydCB0aGVtIGZyb20gb3V0c2lkZS4KLSAq
IEBzdGFibGUgSUNVIDIuNgotICovCi0KLS8qKgotICogXGRlZiBVX0lPX0FQSQotICogU2V0IHRv
IGV4cG9ydCBsaWJyYXJ5IHN5bWJvbHMgZnJvbSBpbnNpZGUgdGhlIHVzdGRpbyBsaWJyYXJ5LAot
ICogYW5kIHRvIGltcG9ydCB0aGVtIGZyb20gb3V0c2lkZS4KLSAqIEBzdGFibGUgSUNVIDIuMAot
ICovCi0KLSNpZiBkZWZpbmVkKFVfQ09NQklORURfSU1QTEVNRU5UQVRJT04pCi0jZGVmaW5lIFVf
REFUQV9BUEkgICAgIFVfRVhQT1JUCi0jZGVmaW5lIFVfQ09NTU9OX0FQSSAgIFVfRVhQT1JUCi0j
ZGVmaW5lIFVfSTE4Tl9BUEkgICAgIFVfRVhQT1JUCi0jZGVmaW5lIFVfTEFZT1VUX0FQSSAgIFVf
RVhQT1JUCi0jZGVmaW5lIFVfTEFZT1VURVhfQVBJIFVfRVhQT1JUCi0jZGVmaW5lIFVfSU9fQVBJ
ICAgICAgIFVfRVhQT1JUCi0jZWxpZiBkZWZpbmVkKFVfU1RBVElDX0lNUExFTUVOVEFUSU9OKQot
I2RlZmluZSBVX0RBVEFfQVBJCi0jZGVmaW5lIFVfQ09NTU9OX0FQSQotI2RlZmluZSBVX0kxOE5f
QVBJCi0jZGVmaW5lIFVfTEFZT1VUX0FQSQotI2RlZmluZSBVX0xBWU9VVEVYX0FQSQotI2RlZmlu
ZSBVX0lPX0FQSQotI2VsaWYgZGVmaW5lZChVX0NPTU1PTl9JTVBMRU1FTlRBVElPTikKLSNkZWZp
bmUgVV9EQVRBX0FQSSAgICAgVV9JTVBPUlQKLSNkZWZpbmUgVV9DT01NT05fQVBJICAgVV9FWFBP
UlQKLSNkZWZpbmUgVV9JMThOX0FQSSAgICAgVV9JTVBPUlQKLSNkZWZpbmUgVV9MQVlPVVRfQVBJ
ICAgVV9JTVBPUlQKLSNkZWZpbmUgVV9MQVlPVVRFWF9BUEkgVV9JTVBPUlQKLSNkZWZpbmUgVV9J
T19BUEkgICAgICAgVV9JTVBPUlQKLSNlbGlmIGRlZmluZWQoVV9JMThOX0lNUExFTUVOVEFUSU9O
KQotI2RlZmluZSBVX0RBVEFfQVBJICAgICBVX0lNUE9SVAotI2RlZmluZSBVX0NPTU1PTl9BUEkg
ICBVX0lNUE9SVAotI2RlZmluZSBVX0kxOE5fQVBJICAgICBVX0VYUE9SVAotI2RlZmluZSBVX0xB
WU9VVF9BUEkgICBVX0lNUE9SVAotI2RlZmluZSBVX0xBWU9VVEVYX0FQSSBVX0lNUE9SVAotI2Rl
ZmluZSBVX0lPX0FQSSAgICAgICBVX0lNUE9SVAotI2VsaWYgZGVmaW5lZChVX0xBWU9VVF9JTVBM
RU1FTlRBVElPTikKLSNkZWZpbmUgVV9EQVRBX0FQSSAgICAgVV9JTVBPUlQKLSNkZWZpbmUgVV9D
T01NT05fQVBJICAgVV9JTVBPUlQKLSNkZWZpbmUgVV9JMThOX0FQSSAgICAgVV9JTVBPUlQKLSNk
ZWZpbmUgVV9MQVlPVVRfQVBJICAgVV9FWFBPUlQKLSNkZWZpbmUgVV9MQVlPVVRFWF9BUEkgVV9J
TVBPUlQKLSNkZWZpbmUgVV9JT19BUEkgICAgICAgVV9JTVBPUlQKLSNlbGlmIGRlZmluZWQoVV9M
QVlPVVRFWF9JTVBMRU1FTlRBVElPTikKLSNkZWZpbmUgVV9EQVRBX0FQSSAgICAgVV9JTVBPUlQK
LSNkZWZpbmUgVV9DT01NT05fQVBJICAgVV9JTVBPUlQKLSNkZWZpbmUgVV9JMThOX0FQSSAgICAg
VV9JTVBPUlQKLSNkZWZpbmUgVV9MQVlPVVRfQVBJICAgVV9JTVBPUlQKLSNkZWZpbmUgVV9MQVlP
VVRFWF9BUEkgVV9FWFBPUlQKLSNkZWZpbmUgVV9JT19BUEkgICAgICAgVV9JTVBPUlQKLSNlbGlm
IGRlZmluZWQoVV9JT19JTVBMRU1FTlRBVElPTikKLSNkZWZpbmUgVV9EQVRBX0FQSSAgICAgVV9J
TVBPUlQKLSNkZWZpbmUgVV9DT01NT05fQVBJICAgVV9JTVBPUlQKLSNkZWZpbmUgVV9JMThOX0FQ
SSAgICAgVV9JTVBPUlQKLSNkZWZpbmUgVV9MQVlPVVRfQVBJICAgVV9JTVBPUlQKLSNkZWZpbmUg
VV9MQVlPVVRFWF9BUEkgVV9JTVBPUlQKLSNkZWZpbmUgVV9JT19BUEkgICAgICAgVV9FWFBPUlQK
LSNlbHNlCi0jZGVmaW5lIFVfREFUQV9BUEkgICAgIFVfSU1QT1JUCi0jZGVmaW5lIFVfQ09NTU9O
X0FQSSAgIFVfSU1QT1JUCi0jZGVmaW5lIFVfSTE4Tl9BUEkgICAgIFVfSU1QT1JUCi0jZGVmaW5l
IFVfTEFZT1VUX0FQSSAgIFVfSU1QT1JUCi0jZGVmaW5lIFVfTEFZT1VURVhfQVBJIFVfSU1QT1JU
Ci0jZGVmaW5lIFVfSU9fQVBJICAgICAgIFVfSU1QT1JUCi0jZW5kaWYKLQotLyoqCi0gKiBcZGVm
IFVfU1RBTkRBUkRfQ1BQX05BTUVTUEFDRQotICogQ29udHJvbCBvZiBDKysgTmFtZXNwYWNlCi0g
KiBAc3RhYmxlIElDVSAyLjAKLSAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi0jZGVmaW5lIFVfU1RB
TkRBUkRfQ1BQX05BTUVTUEFDRSAgICAgICAgOjoKLSNlbHNlCi0jZGVmaW5lIFVfU1RBTkRBUkRf
Q1BQX05BTUVTUEFDRQotI2VuZGlmCi0KLQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotLyogR2xv
YmFsIGRlbGV0ZSBvcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLwotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0vKgotICogVGhlIElD
VTRDIGxpYnJhcnkgbXVzdCBub3QgdXNlIHRoZSBnbG9iYWwgbmV3IGFuZCBkZWxldGUgb3BlcmF0
b3JzLgotICogVGhlc2Ugb3BlcmF0b3JzIGhlcmUgYXJlIGRlZmluZWQgdG8gZW5hYmxlIHRlc3Rp
bmcgZm9yIHRoaXMuCi0gKiBTZWUgSml0dGVyYnVnIDI1ODEgZm9yIGRldGFpbHMgb2Ygd2h5IHRo
aXMgaXMgbmVjZXNzYXJ5LgotICoKLSAqIFZlcmlmaWNhdGlvbiB0aGF0IElDVTRDJ3MgbWVtb3J5
IHVzYWdlIGlzIGNvcnJlY3QsIGkuZS4sCi0gKiB0aGF0IGdsb2JhbCBuZXcvZGVsZXRlIGFyZSBu
b3QgdXNlZDoKLSAqCi0gKiBhKSBDaGVjayBmb3IgaW1wb3J0cyBvZiBnbG9iYWwgbmV3L2RlbGV0
ZSAoc2VlIHVvYmplY3QuY3BwIGZvciBkZXRhaWxzKQotICogYikgVmVyaWZ5IHRoYXQgbmV3IGlz
IG5ldmVyIGltcG9ydGVkLgotICogYykgVmVyaWZ5IHRoYXQgZGVsZXRlIGlzIG9ubHkgaW1wb3J0
ZWQgZnJvbSBvYmplY3QgY29kZSBmb3IgaW50ZXJmYWNlL21peGluIGNsYXNzZXMuCi0gKiBkKSBB
ZGQgZ2xvYmFsIGRlbGV0ZSBhbmQgZGVsZXRlW10gb25seSBmb3IgdGhlIElDVTRDIGxpYnJhcnkg
aXRzZWxmCi0gKiAgICBhbmQgZGVmaW5lIHRoZW0gaW4gYSB3YXkgdGhhdCBjcmFzaGVzIG9yIG90
aGVyd2lzZSBlYXNpbHkgc2hvd3MgYSBwcm9ibGVtLgotICoKLSAqIFRoZSBmb2xsb3dpbmcgaW1w
bGVtZW50cyBkKS4KLSAqIFRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbnMgY3Jhc2g7IHRoaXMg
aXMgaW50ZW50aW9uYWwgYW5kIHVzZWQgZm9yIGxpYnJhcnkgZGVidWdnaW5nLgotICoKLSAqIE5v
dGU6IFRoaXMgaXMgY3VycmVudGx5IG9ubHkgZG9uZSBvbiBXaW5kb3dzIGJlY2F1c2UKLSAqIHNv
bWUgTGludXgvVW5peCBjb21waWxlcnMgaGF2ZSBwcm9ibGVtcyB3aXRoIGRlZmluaW5nIGdsb2Jh
bCBuZXcvZGVsZXRlLgotICogT24gV2luZG93cywgV0lOMzIgaXMgZGVmaW5lZCwgYW5kIGl0IGlz
IF9NU0NfVmVyPj0xMjAwIGZvciBNU1ZDIDYuMCBhbmQgaGlnaGVyLgotICovCi0jaWYgZGVmaW5l
ZChYUF9DUExVU1BMVVMpICYmIGRlZmluZWQoV0lOMzIpICYmIChfTVNDX1Zlcj49MTIwMCkgJiYg
KGRlZmluZWQoVV9DT01NT05fSU1QTEVNRU5UQVRJT04pIHx8IGRlZmluZWQoVV9JMThOX0lNUExF
TUVOVEFUSU9OKSB8fCBkZWZpbmVkKFVfTEFZT1VUX0lNUExFTUVOVEFUSU9OKSB8fCBkZWZpbmVk
KFVfVVNURElPX0lNUExFTUVOVEFUSU9OKSkKLQotLyoqCi0gKiBHbG9iYWwgb3BlcmF0b3IgbmV3
LCBkZWZpbmVkIG9ubHkgaW5zaWRlIElDVTRDLCBtdXN0IG5vdCBiZSB1c2VkLgotICogQ3Jhc2hl
cyBpbnRlbnRpb25hbGx5LgotICogQGludGVybmFsCi0gKi8KLWlubGluZSB2b2lkICoKLW9wZXJh
dG9yIG5ldyhzaXplX3QgLypzaXplKi8pIHsKLSAgICBjaGFyICpxPU5VTEw7Ci0gICAgKnE9NTsg
LyogYnJlYWsgaXQgKi8KLSAgICByZXR1cm4gcTsKLX0KLQotLyoqCi0gKiBHbG9iYWwgb3BlcmF0
b3IgbmV3W10sIGRlZmluZWQgb25seSBpbnNpZGUgSUNVNEMsIG11c3Qgbm90IGJlIHVzZWQuCi0g
KiBDcmFzaGVzIGludGVudGlvbmFsbHkuCi0gKiBAaW50ZXJuYWwKLSAqLwotaW5saW5lIHZvaWQg
Kgotb3BlcmF0b3IgbmV3W10oc2l6ZV90IC8qc2l6ZSovKSB7Ci0gICAgY2hhciAqcT1OVUxMOwot
ICAgICpxPTU7IC8qIGJyZWFrIGl0ICovCi0gICAgcmV0dXJuIHE7Ci19Ci0KLS8qKgotICogR2xv
YmFsIG9wZXJhdG9yIGRlbGV0ZSwgZGVmaW5lZCBvbmx5IGluc2lkZSBJQ1U0QywgbXVzdCBub3Qg
YmUgdXNlZC4KLSAqIENyYXNoZXMgaW50ZW50aW9uYWxseS4KLSAqIEBpbnRlcm5hbAotICovCi1p
bmxpbmUgdm9pZAotb3BlcmF0b3IgZGVsZXRlKHZvaWQgKiAvKnAqLykgewotICAgIGNoYXIgKnE9
TlVMTDsKLSAgICAqcT01OyAvKiBicmVhayBpdCAqLwotfQotCi0vKioKLSAqIEdsb2JhbCBvcGVy
YXRvciBkZWxldGVbXSwgZGVmaW5lZCBvbmx5IGluc2lkZSBJQ1U0QywgbXVzdCBub3QgYmUgdXNl
ZC4KLSAqIENyYXNoZXMgaW50ZW50aW9uYWxseS4KLSAqIEBpbnRlcm5hbAotICovCi1pbmxpbmUg
dm9pZAotb3BlcmF0b3IgZGVsZXRlW10odm9pZCAqIC8qcCovKSB7Ci0gICAgY2hhciAqcT1OVUxM
OwotICAgICpxPTU7IC8qIGJyZWFrIGl0ICovCi19Ci0KLSNlbmRpZgotCi0vKj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PSovCi0vKiBVRXJyb3JDb2RlICovCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLS8q
KgotICogRXJyb3IgY29kZSB0byByZXBsYWNlIGV4Y2VwdGlvbiBoYW5kbGluZywgc28gdGhhdCB0
aGUgY29kZSBpcyBjb21wYXRpYmxlIHdpdGggYWxsIEMrKyBjb21waWxlcnMsCi0gKiBhbmQgdG8g
dXNlIHRoZSBzYW1lIG1lY2hhbmlzbSBmb3IgQyBhbmQgQysrLgotICoKLSAqIFxwYXIKLSAqIElD
VSBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgcmVmZXJlbmNlIChDKyspIG9yIGEgcG9pbnRlciAoQykg
dG8gYSBVRXJyb3JDb2RlCi0gKiBmaXJzdCB0ZXN0IGlmKFVfRkFJTFVSRShlcnJvckNvZGUpKSB7
IHJldHVybiBpbW1lZGlhdGVseTsgfQotICogc28gdGhhdCBpbiBhIGNoYWluIG9mIHN1Y2ggZnVu
Y3Rpb25zIHRoZSBmaXJzdCBvbmUgdGhhdCBzZXRzIGFuIGVycm9yIGNvZGUKLSAqIGNhdXNlcyB0
aGUgZm9sbG93aW5nIG9uZXMgdG8gbm90IHBlcmZvcm0gYW55IG9wZXJhdGlvbnMuCi0gKgotICog
XHBhcgotICogRXJyb3IgY29kZXMgc2hvdWxkIGJlIHRlc3RlZCB1c2luZyBVX0ZBSUxVUkUoKSBh
bmQgVV9TVUNDRVNTKCkuCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotdHlwZWRlZiBlbnVtIFVF
cnJvckNvZGUgewotICAgIC8qIFRoZSBvcmRlcmluZyBvZiBVX0VSUk9SX0lORk9fU1RBUlQgVnMg
VV9VU0lOR19GQUxMQkFDS19XQVJOSU5HIGxvb2tzIHdlaXJkCi0gICAgICogYW5kIGlzIHRoYXQg
d2F5IGJlY2F1c2UgVkMrKyBkZWJ1Z2dlciBkaXNwbGF5cyBmaXJzdCBlbmNvdW50ZXJlZCBjb25z
dGFudCwKLSAgICAgKiB3aGljaCBpcyBub3QgdGhlIHdoYXQgdGhlIGNvZGUgaXMgdXNlZCBmb3IK
LSAgICAgKi8KLQotICAgIFVfVVNJTkdfRkFMTEJBQ0tfV0FSTklORyAgPSAtMTI4LCAgIC8qKjwg
QSByZXNvdXJjZSBidW5kbGUgbG9va3VwIHJldHVybmVkIGEgZmFsbGJhY2sgcmVzdWx0IChub3Qg
YW4gZXJyb3IpICovCi0KLSAgICBVX0VSUk9SX1dBUk5JTkdfU1RBUlQgICAgID0gLTEyOCwgICAv
Kio8IFN0YXJ0IG9mIGluZm9ybWF0aW9uIHJlc3VsdHMgKHNlbWFudGljYWxseSBzdWNjZXNzZnVs
KSAqLwotCi0gICAgVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgICA9IC0xMjcsICAgLyoqPCBBIHJl
c291cmNlIGJ1bmRsZSBsb29rdXAgcmV0dXJuZWQgYSByZXN1bHQgZnJvbSB0aGUgcm9vdCBsb2Nh
bGUgKG5vdCBhbiBlcnJvcikgKi8KLQotICAgIFVfU0FGRUNMT05FX0FMTE9DQVRFRF9XQVJOSU5H
ID0gLTEyNiwgLyoqPCBBIFNhZmVDbG9uZSBvcGVyYXRpb24gcmVxdWlyZWQgYWxsb2NhdGluZyBt
ZW1vcnkgKGluZm9ybWF0aW9uYWwgb25seSkgKi8KLQotICAgIFVfU1RBVEVfT0xEX1dBUk5JTkcg
ICAgICAgPSAtMTI1LCAgIC8qKjwgSUNVIGhhcyB0byB1c2UgY29tcGF0aWJpbGl0eSBsYXllciB0
byBjb25zdHJ1Y3QgdGhlIHNlcnZpY2UuIEV4cGVjdCBwZXJmb3JtYW5jZS9tZW1vcnkgdXNhZ2Ug
ZGVncmFkYXRpb24uIENvbnNpZGVyIHVwZ3JhZGluZyAqLwotCi0gICAgVV9TVFJJTkdfTk9UX1RF
Uk1JTkFURURfV0FSTklORyA9IC0xMjQsLyoqPCBBbiBvdXRwdXQgc3RyaW5nIGNvdWxkIG5vdCBi
ZSBOVUwtdGVybWluYXRlZCBiZWNhdXNlIG91dHB1dCBsZW5ndGg9PWRlc3RDYXBhY2l0eS4gKi8K
LQotICAgIFVfU09SVF9LRVlfVE9PX1NIT1JUX1dBUk5JTkcgPSAtMTIzLCAvKio8IE51bWJlciBv
ZiBsZXZlbHMgcmVxdWVzdGVkIGluIGdldEJvdW5kIGlzIGhpZ2hlciB0aGFuIHRoZSBudW1iZXIg
b2YgbGV2ZWxzIGluIHRoZSBzb3J0IGtleSAqLwotCi0gICAgVV9BTUJJR1VPVVNfQUxJQVNfV0FS
TklORyA9IC0xMjIsICAgLyoqPCBUaGlzIGNvbnZlcnRlciBhbGlhcyBjYW4gZ28gdG8gZGlmZmVy
ZW50IGNvbnZlcnRlciBpbXBsZW1lbnRhdGlvbnMgKi8KLQotICAgIFVfRElGRkVSRU5UX1VDQV9W
RVJTSU9OID0gLTEyMSwgICAgIC8qKjwgdWNvbF9vcGVuIGVuY291bnRlcmVkIGEgbWlzbWF0Y2gg
YmV0d2VlbiBVQ0EgdmVyc2lvbiBhbmQgY29sbGF0b3IgaW1hZ2UgdmVyc2lvbiwgc28gdGhlIGNv
bGxhdG9yIHdhcyBjb25zdHJ1Y3RlZCBmcm9tIHJ1bGVzLiBObyBpbXBhY3QgdG8gZnVydGhlciBm
dW5jdGlvbiAqLwotCi0gICAgVV9FUlJPUl9XQVJOSU5HX0xJTUlULCAgICAgICAgICAgICAgLyoq
PCBUaGlzIG11c3QgYWx3YXlzIGJlIHRoZSBsYXN0IHdhcm5pbmcgdmFsdWUgdG8gaW5kaWNhdGUg
dGhlIGxpbWl0IGZvciBVRXJyb3JDb2RlIHdhcm5pbmdzIChsYXN0IHdhcm5pbmcgY29kZSArMSkg
Ki8KLQotCi0gICAgVV9aRVJPX0VSUk9SICAgICAgICAgICAgICA9ICAwLCAgICAgLyoqPCBObyBl
cnJvciwgbm8gd2FybmluZy4gKi8KLQotICAgIFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUiAgPSAg
MSwgICAgIC8qKjwgU3RhcnQgb2YgY29kZXMgaW5kaWNhdGluZyBmYWlsdXJlICovCi0gICAgVV9N
SVNTSU5HX1JFU09VUkNFX0VSUk9SICA9ICAyLCAgICAgLyoqPCBUaGUgcmVxdWVzdGVkIHJlc291
cmNlIGNhbm5vdCBiZSBmb3VuZCAqLwotICAgIFVfSU5WQUxJRF9GT1JNQVRfRVJST1IgICAgPSAg
MywgICAgIC8qKjwgRGF0YSBmb3JtYXQgaXMgbm90IHdoYXQgaXMgZXhwZWN0ZWQgKi8KLSAgICBV
X0ZJTEVfQUNDRVNTX0VSUk9SICAgICAgID0gIDQsICAgICAvKio8IFRoZSByZXF1ZXN0ZWQgZmls
ZSBjYW5ub3QgYmUgZm91bmQgKi8KLSAgICBVX0lOVEVSTkFMX1BST0dSQU1fRVJST1IgID0gIDUs
ICAgICAvKio8IEluZGljYXRlcyBhIGJ1ZyBpbiB0aGUgbGlicmFyeSBjb2RlICovCi0gICAgVV9N
RVNTQUdFX1BBUlNFX0VSUk9SICAgICA9ICA2LCAgICAgLyoqPCBVbmFibGUgdG8gcGFyc2UgYSBt
ZXNzYWdlIChtZXNzYWdlIGZvcm1hdCkgKi8KLSAgICBVX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9S
ID0gIDcsICAgICAvKio8IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yICovCi0gICAgVV9JTkRFWF9P
VVRPRkJPVU5EU19FUlJPUiA9ICA4LCAgICAgLyoqPCBUcnlpbmcgdG8gYWNjZXNzIHRoZSBpbmRl
eCB0aGF0IGlzIG91dCBvZiBib3VuZHMgKi8KLSAgICBVX1BBUlNFX0VSUk9SICAgICAgICAgICAg
ID0gIDksICAgICAvKio8IEVxdWl2YWxlbnQgdG8gSmF2YSBQYXJzZUV4Y2VwdGlvbiAqLwotICAg
IFVfSU5WQUxJRF9DSEFSX0ZPVU5EICAgICAgPSAxMCwgICAgIC8qKjwgQ2hhcmFjdGVyIGNvbnZl
cnNpb246IFVubWFwcGFibGUgaW5wdXQgc2VxdWVuY2UuIEluIG90aGVyIEFQSXM6IEludmFsaWQg
Y2hhcmFjdGVyLiAqLwotICAgIFVfVFJVTkNBVEVEX0NIQVJfRk9VTkQgICAgPSAxMSwgICAgIC8q
KjwgQ2hhcmFjdGVyIGNvbnZlcnNpb246IEluY29tcGxldGUgaW5wdXQgc2VxdWVuY2UuICovCi0g
ICAgVV9JTExFR0FMX0NIQVJfRk9VTkQgICAgICA9IDEyLCAgICAgLyoqPCBDaGFyYWN0ZXIgY29u
dmVyc2lvbjogSWxsZWdhbCBpbnB1dCBzZXF1ZW5jZS9jb21iaW5hdGlvbiBvZiBpbnB1dCB1bml0
cy4uICovCi0gICAgVV9JTlZBTElEX1RBQkxFX0ZPUk1BVCAgICA9IDEzLCAgICAgLyoqPCBDb252
ZXJzaW9uIHRhYmxlIGZpbGUgZm91bmQsIGJ1dCBjb3JydXB0ZWQgKi8KLSAgICBVX0lOVkFMSURf
VEFCTEVfRklMRSAgICAgID0gMTQsICAgICAvKio8IENvbnZlcnNpb24gdGFibGUgZmlsZSBub3Qg
Zm91bmQgKi8KLSAgICBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUiAgID0gMTUsICAgICAvKio8IEEg
cmVzdWx0IHdvdWxkIG5vdCBmaXQgaW4gdGhlIHN1cHBsaWVkIGJ1ZmZlciAqLwotICAgIFVfVU5T
VVBQT1JURURfRVJST1IgICAgICAgPSAxNiwgICAgIC8qKjwgUmVxdWVzdGVkIG9wZXJhdGlvbiBu
b3Qgc3VwcG9ydGVkIGluIGN1cnJlbnQgY29udGV4dCAqLwotICAgIFVfUkVTT1VSQ0VfVFlQRV9N
SVNNQVRDSCAgPSAxNywgICAgIC8qKjwgYW4gb3BlcmF0aW9uIGlzIHJlcXVlc3RlZCBvdmVyIGEg
cmVzb3VyY2UgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IGl0ICovCi0gICAgVV9JTExFR0FMX0VTQ0FQ
RV9TRVFVRU5DRSA9IDE4LCAgICAgLyoqPCBJU08tMjAyMiBpbGxsZWdhbCBlc2NhcGUgc2VxdWVu
Y2UgKi8KLSAgICBVX1VOU1VQUE9SVEVEX0VTQ0FQRV9TRVFVRU5DRSA9IDE5LCAvKio8IElTTy0y
MDIyIHVuc3VwcG9ydGVkIGVzY2FwZSBzZXF1ZW5jZSAqLwotICAgIFVfTk9fU1BBQ0VfQVZBSUxB
QkxFICAgICAgPSAyMCwgICAgIC8qKjwgTm8gc3BhY2UgYXZhaWxhYmxlIGZvciBpbi1idWZmZXIg
ZXhwYW5zaW9uIGZvciBBcmFiaWMgc2hhcGluZyAqLwotICAgIFVfQ0VfTk9UX0ZPVU5EX0VSUk9S
ICAgICAgPSAyMSwgICAgIC8qKjwgQ3VycmVudGx5IHVzZWQgb25seSB3aGlsZSBzZXR0aW5nIHZh
cmlhYmxlIHRvcCwgYnV0IGNhbiBiZSB1c2VkIGdlbmVyYWxseSAqLwotICAgIFVfUFJJTUFSWV9U
T09fTE9OR19FUlJPUiAgPSAyMiwgICAgIC8qKjwgVXNlciB0cmllZCB0byBzZXQgdmFyaWFibGUg
dG9wIHRvIGEgcHJpbWFyeSB0aGF0IGlzIGxvbmdlciB0aGFuIHR3byBieXRlcyAqLwotICAgIFVf
U1RBVEVfVE9PX09MRF9FUlJPUiAgICAgPSAyMywgICAgIC8qKjwgSUNVIGNhbm5vdCBjb25zdHJ1
Y3QgYSBzZXJ2aWNlIGZyb20gdGhpcyBzdGF0ZSwgYXMgaXQgaXMgbm8gbG9uZ2VyIHN1cHBvcnRl
ZCAqLwotICAgIFVfVE9PX01BTllfQUxJQVNFU19FUlJPUiAgPSAyNCwgICAgIC8qKjwgVGhlcmUg
YXJlIHRvbyBtYW55IGFsaWFzZXMgaW4gdGhlIHBhdGggdG8gdGhlIHJlcXVlc3RlZCByZXNvdXJj
ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHZl
cnkgcG9zc2libGUgdGhhdCBhIGNpcmN1bGFyIGFsaWFzIGRlZmluaXRpb24gaGFzIG9jY3VyZWQg
Ki8KLSAgICBVX0VOVU1fT1VUX09GX1NZTkNfRVJST1IgID0gMjUsICAgICAvKio8IFVFbnVtZXJh
dGlvbiBvdXQgb2Ygc3luYyB3aXRoIHVuZGVybHlpbmcgY29sbGVjdGlvbiAqLwotICAgIFVfSU5W
QVJJQU5UX0NPTlZFUlNJT05fRVJST1IgPSAyNiwgIC8qKjwgVW5hYmxlIHRvIGNvbnZlcnQgYSBV
Q2hhciogc3RyaW5nIHRvIGNoYXIqIHdpdGggdGhlIGludmFyaWFudCBjb252ZXJ0ZXIuICovCi0g
ICAgVV9JTlZBTElEX1NUQVRFX0VSUk9SICAgICA9IDI3LCAgICAgLyoqPCBSZXF1ZXN0ZWQgb3Bl
cmF0aW9uIGNhbiBub3QgYmUgY29tcGxldGVkIHdpdGggSUNVIGluIGl0cyBjdXJyZW50IHN0YXRl
ICovCi0gICAgVV9DT0xMQVRPUl9WRVJTSU9OX01JU01BVENIID0gMjgsICAgLyoqPCBDb2xsYXRv
ciB2ZXJzaW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIGJhc2UgdmVyc2lvbiAqLwotICAg
IFVfVVNFTEVTU19DT0xMQVRPUl9FUlJPUiAgPSAyOSwgICAgIC8qKjwgQ29sbGF0b3IgaXMgb3B0
aW9ucyBvbmx5IGFuZCBubyBiYXNlIGlzIHNwZWNpZmllZCAqLwotCi0gICAgVV9TVEFOREFSRF9F
UlJPUl9MSU1JVCwgICAgICAgICAgICAgLyoqPCBUaGlzIG11c3QgYWx3YXlzIGJlIHRoZSBsYXN0
IHZhbHVlIHRvIGluZGljYXRlIHRoZSBsaW1pdCBmb3Igc3RhbmRhcmQgZXJyb3JzICovCi0gICAg
LyoKLSAgICAgKiB0aGUgZXJyb3IgY29kZSByYW5nZSAweDEwMDAwIDB4MTAxMDAgYXJlIHJlc2Vy
dmVkIGZvciBUcmFuc2xpdGVyYXRvcgotICAgICAqLwotICAgIFVfQkFEX1ZBUklBQkxFX0RFRklO
SVRJT049MHgxMDAwMCwvKio8IE1pc3NpbmcgJyQnIG9yIGR1cGxpY2F0ZSB2YXJpYWJsZSBuYW1l
ICovCi0gICAgVV9QQVJTRV9FUlJPUl9TVEFSVCA9IDB4MTAwMDAsICAgIC8qKjwgU3RhcnQgb2Yg
VHJhbnNsaXRlcmF0b3IgZXJyb3JzICovCi0gICAgVV9NQUxGT1JNRURfUlVMRSwgICAgICAgICAg
ICAgICAgIC8qKjwgRWxlbWVudHMgb2YgYSBydWxlIGFyZSBtaXNwbGFjZWQgKi8KLSAgICBVX01B
TEZPUk1FRF9TRVQsICAgICAgICAgICAgICAgICAgLyoqPCBBIFVuaWNvZGVTZXQgcGF0dGVybiBp
cyBpbnZhbGlkKi8KLSAgICBVX01BTEZPUk1FRF9TWU1CT0xfUkVGRVJFTkNFLCAgICAgLyoqPCBV
TlVTRUQgYXMgb2YgSUNVIDIuNCAqLwotICAgIFVfTUFMRk9STUVEX1VOSUNPREVfRVNDQVBFLCAg
ICAgICAvKio8IEEgVW5pY29kZSBlc2NhcGUgcGF0dGVybiBpcyBpbnZhbGlkKi8KLSAgICBVX01B
TEZPUk1FRF9WQVJJQUJMRV9ERUZJTklUSU9OLCAgLyoqPCBBIHZhcmlhYmxlIGRlZmluaXRpb24g
aXMgaW52YWxpZCAqLwotICAgIFVfTUFMRk9STUVEX1ZBUklBQkxFX1JFRkVSRU5DRSwgICAvKio8
IEEgdmFyaWFibGUgcmVmZXJlbmNlIGlzIGludmFsaWQgKi8KLSAgICBVX01JU01BVENIRURfU0VH
TUVOVF9ERUxJTUlURVJTLCAgLyoqPCBVTlVTRUQgYXMgb2YgSUNVIDIuNCAqLwotICAgIFVfTUlT
UExBQ0VEX0FOQ0hPUl9TVEFSVCwgICAgICAgICAvKio8IEEgc3RhcnQgYW5jaG9yIGFwcGVhcnMg
YXQgYW4gaWxsZWdhbCBwb3NpdGlvbiAqLwotICAgIFVfTUlTUExBQ0VEX0NVUlNPUl9PRkZTRVQs
ICAgICAgICAvKio8IEEgY3Vyc29yIG9mZnNldCBvY2N1cnMgYXQgYW4gaWxsZWdhbCBwb3NpdGlv
biAqLwotICAgIFVfTUlTUExBQ0VEX1FVQU5USUZJRVIsICAgICAgICAgICAvKio8IEEgcXVhbnRp
ZmllciBhcHBlYXJzIGFmdGVyIGEgc2VnbWVudCBjbG9zZSBkZWxpbWl0ZXIgKi8KLSAgICBVX01J
U1NJTkdfT1BFUkFUT1IsICAgICAgICAgICAgICAgLyoqPCBBIHJ1bGUgY29udGFpbnMgbm8gb3Bl
cmF0b3IgKi8KLSAgICBVX01JU1NJTkdfU0VHTUVOVF9DTE9TRSwgICAgICAgICAgLyoqPCBVTlVT
RUQgYXMgb2YgSUNVIDIuNCAqLwotICAgIFVfTVVMVElQTEVfQU5URV9DT05URVhUUywgICAgICAg
ICAvKio8IE1vcmUgdGhhbiBvbmUgYW50ZSBjb250ZXh0ICovCi0gICAgVV9NVUxUSVBMRV9DVVJT
T1JTLCAgICAgICAgICAgICAgIC8qKjwgTW9yZSB0aGFuIG9uZSBjdXJzb3IgKi8KLSAgICBVX01V
TFRJUExFX1BPU1RfQ09OVEVYVFMsICAgICAgICAgLyoqPCBNb3JlIHRoYW4gb25lIHBvc3QgY29u
dGV4dCAqLwotICAgIFVfVFJBSUxJTkdfQkFDS1NMQVNILCAgICAgICAgICAgICAvKio8IEEgZGFu
Z2xpbmcgYmFja3NsYXNoICovCi0gICAgVV9VTkRFRklORURfU0VHTUVOVF9SRUZFUkVOQ0UsICAg
IC8qKjwgQSBzZWdtZW50IHJlZmVyZW5jZSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZGVmaW5l
ZCBzZWdtZW50ICovCi0gICAgVV9VTkRFRklORURfVkFSSUFCTEUsICAgICAgICAgICAgIC8qKjwg
QSB2YXJpYWJsZSByZWZlcmVuY2UgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGRlZmluZWQgdmFy
aWFibGUgKi8KLSAgICBVX1VOUVVPVEVEX1NQRUNJQUwsICAgICAgICAgICAgICAgLyoqPCBBIHNw
ZWNpYWwgY2hhcmFjdGVyIHdhcyBub3QgcXVvdGVkIG9yIGVzY2FwZWQgKi8KLSAgICBVX1VOVEVS
TUlOQVRFRF9RVU9URSwgICAgICAgICAgICAgLyoqPCBBIGNsb3Npbmcgc2luZ2xlIHF1b3RlIGlz
IG1pc3NpbmcgKi8KLSAgICBVX1JVTEVfTUFTS19FUlJPUiwgICAgICAgICAgICAgICAgLyoqPCBB
IHJ1bGUgaXMgaGlkZGVuIGJ5IGFuIGVhcmxpZXIgbW9yZSBnZW5lcmFsIHJ1bGUgKi8KLSAgICBV
X01JU1BMQUNFRF9DT01QT1VORF9GSUxURVIsICAgICAgLyoqPCBBIGNvbXBvdW5kIGZpbHRlciBp
cyBpbiBhbiBpbnZhbGlkIGxvY2F0aW9uICovCi0gICAgVV9NVUxUSVBMRV9DT01QT1VORF9GSUxU
RVJTLCAgICAgIC8qKjwgTW9yZSB0aGFuIG9uZSBjb21wb3VuZCBmaWx0ZXIgKi8KLSAgICBVX0lO
VkFMSURfUkJUX1NZTlRBWCwgICAgICAgICAgICAgLyoqPCBBICI6OmlkIiBydWxlIHdhcyBwYXNz
ZWQgdG8gdGhlIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yIHBhcnNlciAqLwotICAgIFVfSU5WQUxJ
RF9QUk9QRVJUWV9QQVRURVJOLCAgICAgICAvKio8IFVOVVNFRCBhcyBvZiBJQ1UgMi40ICovCi0g
ICAgVV9NQUxGT1JNRURfUFJBR01BLCAgICAgICAgICAgICAgIC8qKjwgQSAndXNlJyBwcmFnbWEg
aXMgaW52bGFsaWQgKi8KLSAgICBVX1VOQ0xPU0VEX1NFR01FTlQsICAgICAgICAgICAgICAgLyoq
PCBBIGNsb3NpbmcgJyknIGlzIG1pc3NpbmcgKi8KLSAgICBVX0lMTEVHQUxfQ0hBUl9JTl9TRUdN
RU5ULCAgICAgICAgLyoqPCBVTlVTRUQgYXMgb2YgSUNVIDIuNCAqLwotICAgIFVfVkFSSUFCTEVf
UkFOR0VfRVhIQVVTVEVELCAgICAgICAvKio8IFRvbyBtYW55IHN0YW5kLWlucyBnZW5lcmF0ZWQg
Zm9yIHRoZSBnaXZlbiB2YXJpYWJsZSByYW5nZSAqLwotICAgIFVfVkFSSUFCTEVfUkFOR0VfT1ZF
UkxBUCwgICAgICAgICAvKio8IFRoZSB2YXJpYWJsZSByYW5nZSBvdmVybGFwcyBjaGFyYWN0ZXJz
IHVzZWQgaW4gcnVsZXMgKi8KLSAgICBVX0lMTEVHQUxfQ0hBUkFDVEVSLCAgICAgICAgICAgICAg
LyoqPCBBIHNwZWNpYWwgY2hhcmFjdGVyIGlzIG91dHNpZGUgaXRzIGFsbG93ZWQgY29udGV4dCAq
LwotICAgIFVfSU5URVJOQUxfVFJBTlNMSVRFUkFUT1JfRVJST1IsICAvKio8IEludGVybmFsIHRy
YW5zbGl0ZXJhdG9yIHN5c3RlbSBlcnJvciAqLwotICAgIFVfSU5WQUxJRF9JRCwgICAgICAgICAg
ICAgICAgICAgICAvKio8IEEgIjo6aWQiIHJ1bGUgc3BlY2lmaWVzIGFuIHVua25vd24gdHJhbnNs
aXRlcmF0b3IgKi8KLSAgICBVX0lOVkFMSURfRlVOQ1RJT04sICAgICAgICAgICAgICAgLyoqPCBB
ICImZm4oKSIgcnVsZSBzcGVjaWZpZXMgYW4gdW5rbm93biB0cmFuc2xpdGVyYXRvciAqLwotICAg
IFVfUEFSU0VfRVJST1JfTElNSVQsICAgICAgICAgICAgICAvKio8IFRoZSBsaW1pdCBmb3IgVHJh
bnNsaXRlcmF0b3IgZXJyb3JzICovCi0KLSAgICAvKgotICAgICAqIHRoZSBlcnJvciBjb2RlIHJh
bmdlIDB4MTAxMDAgMHgxMDIwMCBhcmUgcmVzZXJ2ZWQgZm9yIGZvcm1hdHRpbmcgQVBJIHBhcnNp
bmcgZXJyb3IKLSAgICAgKi8KLSAgICBVX1VORVhQRUNURURfVE9LRU49MHgxMDEwMCwgICAgICAg
LyoqPCBTeW50YXggZXJyb3IgaW4gZm9ybWF0IHBhdHRlcm4gKi8KLSAgICBVX0ZNVF9QQVJTRV9F
UlJPUl9TVEFSVD0weDEwMTAwLCAgLyoqPCBTdGFydCBvZiBmb3JtYXQgbGlicmFyeSBlcnJvcnMg
Ki8KLSAgICBVX01VTFRJUExFX0RFQ0lNQUxfU0VQQVJBVE9SUywgICAgLyoqPCBNb3JlIHRoYW4g
b25lIGRlY2ltYWwgc2VwYXJhdG9yIGluIG51bWJlciBwYXR0ZXJuICovCi0gICAgVV9NVUxUSVBM
RV9ERUNJTUFMX1NFUEVSQVRPUlMgPSBVX01VTFRJUExFX0RFQ0lNQUxfU0VQQVJBVE9SUywgLyoq
PCBUeXBvOiBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBVc2UgVV9NVUxUSVBMRV9E
RUNJTUFMX1NFUEFSQVRPUlMgKi8KLSAgICBVX01VTFRJUExFX0VYUE9ORU5USUFMX1NZTUJPTFMs
ICAgLyoqPCBNb3JlIHRoYW4gb25lIGV4cG9uZW50IHN5bWJvbCBpbiBudW1iZXIgcGF0dGVybiAq
LwotICAgIFVfTUFMRk9STUVEX0VYUE9ORU5USUFMX1BBVFRFUk4sICAvKio8IEdyb3VwaW5nIHN5
bWJvbCBpbiBleHBvbmVudCBwYXR0ZXJuICovCi0gICAgVV9NVUxUSVBMRV9QRVJDRU5UX1NZTUJP
TFMsICAgICAgIC8qKjwgTW9yZSB0aGFuIG9uZSBwZXJjZW50IHN5bWJvbCBpbiBudW1iZXIgcGF0
dGVybiAqLwotICAgIFVfTVVMVElQTEVfUEVSTUlMTF9TWU1CT0xTLCAgICAgICAvKio8IE1vcmUg
dGhhbiBvbmUgcGVybWlsbCBzeW1ib2wgaW4gbnVtYmVyIHBhdHRlcm4gKi8KLSAgICBVX01VTFRJ
UExFX1BBRF9TUEVDSUZJRVJTLCAgICAgICAgLyoqPCBNb3JlIHRoYW4gb25lIHBhZCBzeW1ib2wg
aW4gbnVtYmVyIHBhdHRlcm4gKi8KLSAgICBVX1BBVFRFUk5fU1lOVEFYX0VSUk9SLCAgICAgICAg
ICAgLyoqPCBTeW50YXggZXJyb3IgaW4gZm9ybWF0IHBhdHRlcm4gKi8KLSAgICBVX0lMTEVHQUxf
UEFEX1BPU0lUSU9OLCAgICAgICAgICAgLyoqPCBQYWQgc3ltYm9sIG1pc3BsYWNlZCBpbiBudW1i
ZXIgcGF0dGVybiAqLwotICAgIFVfVU5NQVRDSEVEX0JSQUNFUywgICAgICAgICAgICAgICAvKio8
IEJyYWNlcyBkbyBub3QgbWF0Y2ggaW4gbWVzc2FnZSBwYXR0ZXJuICovCi0gICAgVV9VTlNVUFBP
UlRFRF9QUk9QRVJUWSwgICAgICAgICAgIC8qKjwgVU5VU0VEIGFzIG9mIElDVSAyLjQgKi8KLSAg
ICBVX1VOU1VQUE9SVEVEX0FUVFJJQlVURSwgICAgICAgICAgLyoqPCBVTlVTRUQgYXMgb2YgSUNV
IDIuNCAqLwotICAgIFVfRk1UX1BBUlNFX0VSUk9SX0xJTUlULCAgICAgICAgICAvKio8IFRoZSBs
aW1pdCBmb3IgZm9ybWF0IGxpYnJhcnkgZXJyb3JzICovCi0KLSAgICAvKgotICAgICAqIHRoZSBl
cnJvciBjb2RlIHJhbmdlIDB4MTAyMDAgMHgxMDJmZiBhcmUgcmVzZXJ2ZWQgZm9yIEJyZWFrIEl0
ZXJhdG9yIHJlbGF0ZWQgZXJyb3IKLSAgICAgKi8KLSAgICBVX0JSS19FUlJPUl9TVEFSVD0weDEw
MjAwLCAgICAgICAgICAgICAvKio8IFN0YXJ0IG9mIGNvZGVzIGluZGljYXRpbmcgQnJlYWsgSXRl
cmF0b3IgZmFpbHVyZXMgKi8KLSAgICBVX0JSS19JTlRFUk5BTF9FUlJPUiwgICAgICAgICAgICAg
ICAgICAvKio8IEFuIGludGVybmFsIGVycm9yIChidWcpIHdhcyBkZXRlY3RlZC4gICAgICAgICAg
ICAgKi8KLSAgICBVX0JSS19IRVhfRElHSVRTX0VYUEVDVEVELCAgICAgICAgICAgICAvKio8IEhl
eCBkaWdpdHMgZXhwZWN0ZWQgYXMgcGFydCBvZiBhIGVzY2FwZWQgY2hhciBpbiBhIHJ1bGUuICov
Ci0gICAgVV9CUktfU0VNSUNPTE9OX0VYUEVDVEVELCAgICAgICAgICAgICAgLyoqPCBNaXNzaW5n
ICc7JyBhdCB0aGUgZW5kIG9mIGEgUkJCSSBydWxlLiAgICAgICAgICAgICovCi0gICAgVV9CUktf
UlVMRV9TWU5UQVgsICAgICAgICAgICAgICAgICAgICAgLyoqPCBTeW50YXggZXJyb3IgaW4gUkJC
SSBydWxlLiAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgVV9CUktfVU5DTE9TRURfU0VU
LCAgICAgICAgICAgICAgICAgICAgLyoqPCBVbmljb2RlU2V0IHdpdGluZyBhbiBSQkJJIHJ1bGUg
bWlzc2luZyBhIGNsb3NpbmcgJ10nLiAgKi8KLSAgICBVX0JSS19BU1NJR05fRVJST1IsICAgICAg
ICAgICAgICAgICAgICAvKio8IFN5bnRheCBlcnJvciBpbiBSQkJJIHJ1bGUgYXNzaWdubWVudCBz
dGF0ZW1lbnQuICAgKi8KLSAgICBVX0JSS19WQVJJQUJMRV9SRURGSU5JVElPTiwgICAgICAgICAg
ICAvKio8IFJCQkkgcnVsZSAkVmFyaWFibGUgcmVkZWZpbmVkLiAgICAgICAgICAgICAgICAgICAg
Ki8KLSAgICBVX0JSS19NSVNNQVRDSEVEX1BBUkVOLCAgICAgICAgICAgICAgICAvKio8IE1pcy1t
YXRjaGVkIHBhcmVudGhlc2VzIGluIGFuIFJCQkkgcnVsZS4gICAgICAgICAgKi8KLSAgICBVX0JS
S19ORVdfTElORV9JTl9RVU9URURfU1RSSU5HLCAgICAgICAvKio8IE1pc3NpbmcgY2xvc2luZyBx
dW90ZSBpbiBhbiBSQkJJIHJ1bGUuICAgICAgICAgICAgKi8KLSAgICBVX0JSS19VTkRFRklORURf
VkFSSUFCTEUsICAgICAgICAgICAgICAvKio8IFVzZSBvZiBhbiB1bmRlZmluZWQgJFZhcmlhYmxl
IGluIGFuIFJCQkkgcnVsZS4gICAgKi8KLSAgICBVX0JSS19JTklUX0VSUk9SLCAgICAgICAgICAg
ICAgICAgICAgICAvKio8IEluaXRpYWxpemF0aW9uIGZhaWx1cmUuICBQcm9iYWJsZSBtaXNzaW5n
IElDVSBEYXRhLiAqLwotICAgIFVfQlJLX1JVTEVfRU1QVFlfU0VULCAgICAgICAgICAgICAgICAg
IC8qKjwgUnVsZSBjb250YWlucyBhbiBlbXB0eSBVbmljb2RlIFNldC4gICAgICAgICAgICAgICAq
LwotICAgIFVfQlJLX1VOUkVDT0dOSVpFRF9PUFRJT04sICAgICAgICAgICAgIC8qKjwgISFvcHRp
b24gaW4gUkJCSSBydWxlcyBub3QgcmVjb2duaXplZC4gICAgICAgICAgICAqLwotICAgIFVfQlJL
X01BTEZPUk1FRF9SVUxFX1RBRywgICAgICAgICAgICAgIC8qKjwgVGhlIHtubm59IHRhZyBvbiBh
IHJ1bGUgaXMgbWFsIGZvcm1lZCAgICAgICAgICAgICAqLwotICAgIFVfQlJLX0VSUk9SX0xJTUlU
LCAgICAgICAgICAgICAgICAgICAgIC8qKjwgVGhpcyBtdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCB2
YWx1ZSB0byBpbmRpY2F0ZSB0aGUgbGltaXQgZm9yIEJyZWFrIEl0ZXJhdG9yIGZhaWx1cmVzICov
Ci0KLSAgICAvKgotICAgICAqIFRoZSBlcnJvciBjb2RlcyBpbiB0aGUgcmFuZ2UgMHgxMDMwMC0w
eDEwM2ZmIGFyZSByZXNlcnZlZCBmb3IgcmVndWxhciBleHByZXNzaW9uIHJlbGF0ZWQgZXJycnMK
LSAgICAgKi8KLSAgICBVX1JFR0VYX0VSUk9SX1NUQVJUPTB4MTAzMDAsICAgICAgICAgIC8qKjwg
U3RhcnQgb2YgY29kZXMgaW5kaWNhdGluZyBSZWdleHAgZmFpbHVyZXMgICAgICAgICAgKi8KLSAg
ICBVX1JFR0VYX0lOVEVSTkFMX0VSUk9SLCAgICAgICAgICAgICAgIC8qKjwgQW4gaW50ZXJuYWwg
ZXJyb3IgKGJ1Zykgd2FzIGRldGVjdGVkLiAgICAgICAgICAgICAgKi8KLSAgICBVX1JFR0VYX1JV
TEVfU1lOVEFYLCAgICAgICAgICAgICAgICAgIC8qKjwgU3ludGF4IGVycm9yIGluIHJlZ2V4cCBw
YXR0ZXJuLiAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBVX1JFR0VYX0lOVkFMSURfU1RBVEUs
ICAgICAgICAgICAgICAgIC8qKjwgUmVnZXhNYXRjaGVyIGluIGludmFsaWQgc3RhdGUgZm9yIHJl
cXVlc3RlZCBvcGVyYXRpb24gKi8KLSAgICBVX1JFR0VYX0JBRF9FU0NBUEVfU0VRVUVOQ0UsICAg
ICAgICAgIC8qKjwgVW5yZWNvZ25pemVkIGJhY2tzbGFzaCBlc2NhcGUgc2VxdWVuY2UgaW4gcGF0
dGVybiAgKi8KLSAgICBVX1JFR0VYX1BST1BFUlRZX1NZTlRBWCwgICAgICAgICAgICAgIC8qKjwg
SW5jb3JyZWN0IFVuaWNvZGUgcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAg
ICBVX1JFR0VYX1VOSU1QTEVNRU5URUQsICAgICAgICAgICAgICAgIC8qKjwgVXNlIG9mIHJlZ2V4
cCBmZWF0dXJlIHRoYXQgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4gKi8KLSAgICBVX1JFR0VYX01J
U01BVENIRURfUEFSRU4sICAgICAgICAgICAgIC8qKjwgSW5jb3JyZWN0bHkgbmVzdGVkIHBhcmVu
dGhlc2VzIGluIHJlZ2V4cCBwYXR0ZXJuLiAgKi8KLSAgICBVX1JFR0VYX05VTUJFUl9UT09fQklH
LCAgICAgICAgICAgICAgIC8qKjwgRGVjaW1hbCBudW1iZXIgaXMgdG9vIGxhcmdlLiAgICAgICAg
ICAgICAgICAgICAgICAgKi8KLSAgICBVX1JFR0VYX0JBRF9JTlRFUlZBTCwgICAgICAgICAgICAg
ICAgIC8qKjwgRXJyb3IgaW4ge21pbixtYXh9IGludGVydmFsICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KLSAgICBVX1JFR0VYX01BWF9MVF9NSU4sICAgICAgICAgICAgICAgICAgIC8qKjwgSW4g
e21pbixtYXh9LCBtYXggaXMgbGVzcyB0aGFuIG1pbi4gICAgICAgICAgICAgICAgKi8KLSAgICBV
X1JFR0VYX0lOVkFMSURfQkFDS19SRUYsICAgICAgICAgICAgIC8qKjwgQmFjay1yZWZlcmVuY2Ug
dG8gYSBub24tZXhpc3RlbnQgY2FwdHVyZSBncm91cC4gICAgKi8KLSAgICBVX1JFR0VYX0lOVkFM
SURfRkxBRywgICAgICAgICAgICAgICAgIC8qKjwgSW52YWxpZCB2YWx1ZSBmb3IgbWF0Y2ggbW9k
ZSBmbGFncy4gICAgICAgICAgICAgICAgKi8KLSAgICBVX1JFR0VYX0xPT0tfQkVISU5EX0xJTUlU
LCAgICAgICAgICAgIC8qKjwgTG9vay1CZWhpbmQgcGF0dGVybiBtYXRjaGVzIG11c3QgaGF2ZSBh
IGJvdW5kZWQgbWF4aW11bSBsZW5ndGguICAgICovCi0gICAgVV9SRUdFWF9TRVRfQ09OVEFJTlNf
U1RSSU5HLCAgICAgICAgICAvKio8IFJlZ2V4cHMgY2Fubm90IGhhdmUgVW5pY29kZVNldHMgY29u
dGFpbmluZyBzdHJpbmdzLiovCi0gICAgVV9SRUdFWF9FUlJPUl9MSU1JVCwgICAgICAgICAgICAg
ICAgICAvKio8IFRoaXMgbXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgdmFsdWUgdG8gaW5kaWNhdGUg
dGhlIGxpbWl0IGZvciByZWdleHAgZXJyb3JzICovCi0KLSAgICAvKgotICAgICAqIFRoZSBlcnJv
ciBjb2RlIGluIHRoZSByYW5nZSAweDEwNDAwLTB4MTA0ZmYgYXJlIHJlc2VydmVkIGZvciBJRE5B
IHJlbGF0ZWQgZXJyb3IgY29kZXMKLSAgICAgKi8KLSAgICBVX0lETkFfRVJST1JfU1RBUlQ9MHgx
MDQwMCwKLSAgICBVX0lETkFfUFJPSElCSVRFRF9FUlJPUiwKLSAgICBVX0lETkFfVU5BU1NJR05F
RF9FUlJPUiwKLSAgICBVX0lETkFfQ0hFQ0tfQklESV9FUlJPUiwKLSAgICBVX0lETkFfU1REM19B
U0NJSV9SVUxFU19FUlJPUiwKLSAgICBVX0lETkFfQUNFX1BSRUZJWF9FUlJPUiwKLSAgICBVX0lE
TkFfVkVSSUZJQ0FUSU9OX0VSUk9SLAotICAgIFVfSUROQV9MQUJFTF9UT09fTE9OR19FUlJPUiwK
LSAgICBVX0lETkFfRVJST1JfTElNSVQsCi0gICAgLyoKLSAgICAgKiBBbGlhc2VzIGZvciBTdHJp
bmdQcmVwCi0gICAgICovCi0gICAgVV9TVFJJTkdQUkVQX1BST0hJQklURURfRVJST1IgPSBVX0lE
TkFfUFJPSElCSVRFRF9FUlJPUiwKLSAgICBVX1NUUklOR1BSRVBfVU5BU1NJR05FRF9FUlJPUiA9
IFVfSUROQV9VTkFTU0lHTkVEX0VSUk9SLAotICAgIFVfU1RSSU5HUFJFUF9DSEVDS19CSURJX0VS
Uk9SID0gVV9JRE5BX0NIRUNLX0JJRElfRVJST1IsCi0KLQotICAgIFVfRVJST1JfTElNSVQ9VV9J
RE5BX0VSUk9SX0xJTUlUICAgICAgLyoqPCBUaGlzIG11c3QgYWx3YXlzIGJlIHRoZSBsYXN0IHZh
bHVlIHRvIGluZGljYXRlIHRoZSBsaW1pdCBmb3IgVUVycm9yQ29kZSAobGFzdCBlcnJvciBjb2Rl
ICsxKSAqLwotfSBVRXJyb3JDb2RlOwotCi0vKiBVc2UgdGhlIGZvbGxvd2luZyB0byBkZXRlcm1p
bmUgaWYgYW4gVUVycm9yQ29kZSByZXByZXNlbnRzICovCi0vKiBvcGVyYXRpb25hbCBzdWNjZXNz
IG9yIGZhaWx1cmUuICovCi0KLSNpZmRlZiBYUF9DUExVU1BMVVMKLSAgICAvKioKLSAgICAgKiBE
b2VzIHRoZSBlcnJvciBjb2RlIGluZGljYXRlIHN1Y2Nlc3M/Ci0gICAgICogQHN0YWJsZSBJQ1Ug
Mi4wCi0gICAgICovCi0gICAgc3RhdGljCi0gICAgaW5saW5lIFVCb29sIFVfU1VDQ0VTUyhVRXJy
b3JDb2RlIGNvZGUpIHsgcmV0dXJuIChVQm9vbCkoY29kZTw9VV9aRVJPX0VSUk9SKTsgfQotICAg
IC8qKgotICAgICAqIERvZXMgdGhlIGVycm9yIGNvZGUgaW5kaWNhdGUgYSBmYWlsdXJlPwotICAg
ICAqIEBzdGFibGUgSUNVIDIuMAotICAgICAqLwotICAgIHN0YXRpYwotICAgIGlubGluZSBVQm9v
bCBVX0ZBSUxVUkUoVUVycm9yQ29kZSBjb2RlKSB7IHJldHVybiAoVUJvb2wpKGNvZGU+VV9aRVJP
X0VSUk9SKTsgfQotI2Vsc2UKLSAgICAvKioKLSAgICAgKiBEb2VzIHRoZSBlcnJvciBjb2RlIGlu
ZGljYXRlIHN1Y2Nlc3M/Ci0gICAgICogQHN0YWJsZSBJQ1UgMi4wCi0gICAgICovCi0jICAgZGVm
aW5lIFVfU1VDQ0VTUyh4KSAoKHgpPD1VX1pFUk9fRVJST1IpCi0gICAgLyoqCi0gICAgICogRG9l
cyB0aGUgZXJyb3IgY29kZSBpbmRpY2F0ZSBhIGZhaWx1cmU/Ci0gICAgICogQHN0YWJsZSBJQ1Ug
Mi4wCi0gICAgICovCi0jICAgZGVmaW5lIFVfRkFJTFVSRSh4KSAoKHgpPlVfWkVST19FUlJPUikK
LSNlbmRpZgotCi0vKioKLSAqIFJldHVybiBhIHN0cmluZyBmb3IgYSBVRXJyb3JDb2RlIHZhbHVl
LgotICogVGhlIHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBuYW1lIG9mIHRoZSBlcnJv
ciBjb2RlIGNvbnN0YW50Ci0gKiBpbiB0aGUgVUVycm9yQ29kZSBlbnVtIGFib3ZlLgotICogQHN0
YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RBQkxFIGNvbnN0IGNoYXIgKiBVX0VYUE9SVDIKLXVfZXJy
b3JOYW1lKFVFcnJvckNvZGUgY29kZSk7Ci0KLQotI2VuZGlmIC8qIF9VVFlQRVMgKi8KSW5kZXg6
IEphdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V2ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXZlcnNpb24uaAkocmV2aXNpb24gNzQ2MTYpCisrKyBK
YXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91dmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDIxNiArMCwwIEBACi0vKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIENvcHlyaWdodCAo
QykgMjAwMC0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCi0qICAgQ29ycG9y
YXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCi0qCi0qICAgZmlsZSBuYW1lOiAgdXZlcnNpb24uaAotKiAgIGVuY29kaW5nOiAgIFVT
LUFTQ0lJCi0qICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCi0qICAgaW5kZW50YXRpb246NAot
KgotKiAgIENyZWF0ZWQgYnk6IFZsYWRpbWlyIFdlaW5zdGVpbgotKgotKiAgQ29udGFpbnMgYWxs
IHRoZSBpbXBvcnRhbnQgdmVyc2lvbiBudW1iZXJzIGZvciBJQ1UuIAotKiAgR2V0cyBpbmNsdWRl
ZCBieSB1dHlwZXMuaCBhbmQgV2luZG93cyAucmMgZmlsZXMKLSovCi0KLS8qPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ki8KLS8qIE1haW4gSUNVIHZlcnNpb24gaW5mb3JtYXRpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K
LQotI2lmbmRlZiBVVkVSU0lPTl9ICi0jZGVmaW5lIFVWRVJTSU9OX0gKLQotLyoqIElNUE9SVEFO
VDogV2hlbiB1cGRhdGluZyB2ZXJzaW9uLCB0aGUgZm9sbG93aW5nIHRoaW5ncyBuZWVkIHRvIGJl
IGRvbmU6ICAgKi8KLS8qKiBzb3VyY2UvY29tbW9uL3VuaWNvZGUvdXZlcnNpb24uaCAtIHRoaXMg
ZmlsZTogdXBkYXRlIG1ham9yLCBtaW5vciwgICAgICAgICovCi0vKiogICAgICAgIHBhdGNobGV2
ZWwsIHN1ZmZpeCwgdmVyc2lvbiwgc2hvcnQgdmVyc2lvbiBjb25zdGFudHMsIG5hbWVzcGFjZSwg
ICAqLwotLyoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZCBjb3B5cmlnaHQgKi8KLS8qKiBzb3VyY2UvY29tbW9uL2NvbW1vbi5k
c3AgLSB1cGRhdGUgJ091dHB1dCBmaWxlIG5hbWUnIG9uIHRoZSBsaW5rIHRhYiBzbyAgICovCi0v
KiogICAgICAgICAgICAgICAgICAgdGhhdCBpdCBjb250YWlucyB0aGUgbmV3IG1ham9yL21pbm9y
IGNvbWJpbmF0aW9uICAgICAgICAqLwotLyoqIHNvdXJjZS9pMThuL2kxOG4uZHNwIC0gc2FtZSBh
cyBmb3IgdGhlIGNvbW1vbi5kc3AgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qKiBzb3Vy
Y2UvbGF5b3V0L2xheW91dC5kc3AgLSBzYW1lIGFzIGZvciB0aGUgY29tbW9uLmRzcCAgICAgICAg
ICAgICAgICAgICAgICovCi0vKiogc291cmNlL3N0dWJkYXRhL3N0dWJkYXRhLmRzcCAtIHNhbWUg
YXMgZm9yIHRoZSBjb21tb24uZHNwICAgICAgICAgICAgICAgICAqLwotLyoqIHNvdXJjZS9leHRy
YS91c3RkaW8vdXN0ZGlvLmRzcCAtIHNhbWUgYXMgZm9yIHRoZSBjb21tb24uZHNwICAgICAgICAg
ICAgICAgKi8KLS8qKiBzb3VyY2UvZGF0YS9tYWtlZGF0YS5tYWsgLSBjaGFuZ2UgVV9JQ1VEQVRB
X05BTUUgc28gdGhhdCBpdCBjb250YWlucyAgICAgICovCi0vKiogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhlIG5ldyBtYWpvci9taW5vciBjb21iaW5hdGlvbiAgICAgICAgICAgICAgICAq
LwotLyoqIHNvdXJjZS90b29scy9nZW5yZW4vZ2VucmVuLnBsIC0gdXNlIHRoaXMgc2NyaXB0IGFj
Y29yZGluZyB0byB0aGUgUkVBRE1FICAgKi8KLS8qKiAgICAgICAgICAgICAgICAgICAgaW4gdGhh
dCBmb2xkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLSNp
bmNsdWRlICJ1bmljb2RlL3VtYWNoaW5lLmgiCi0KLS8qKiBUaGUgc3RhbmRhcmQgY29weXJpZ2h0
IG5vdGljZSB0aGF0IGdldHMgY29tcGlsZWQgaW50byBlYWNoIGxpYnJhcnkuIAotICogIFRoaXMg
dmFsdWUgd2lsbCBjaGFuZ2UgaW4gdGhlIHN1YnNlcXVlbnQgcmVsZWFzZXMgb2YgSUNVCi0gKiAg
QHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVV9DT1BZUklHSFRfU1RSSU5HIFwKLSAgIiBD
b3B5cmlnaHQgKEMpIDIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9y
YXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gIgotCi0vKiogTWF4aW11bSBs
ZW5ndGggb2YgdGhlIGNvcHlyaWdodCBzdHJpbmcuCi0gKiAgQHN0YWJsZSBJQ1UgMi40Ci0gKi8K
LSNkZWZpbmUgVV9DT1BZUklHSFRfU1RSSU5HX0xFTkdUSCAgMTI4Ci0KLS8qKiBUaGUgY3VycmVu
dCBJQ1UgbWFqb3IgdmVyc2lvbiBhcyBhbiBpbnRlZ2VyLiAKLSAqICBUaGlzIHZhbHVlIHdpbGwg
Y2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQotICogIEBzdGFibGUgSUNV
IDIuNAotICovCi0jZGVmaW5lIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNIDMKLQotLyoqIFRoZSBj
dXJyZW50IElDVSBtaW5vciB2ZXJzaW9uIGFzIGFuIGludGVnZXIuIAotICogIFRoaXMgdmFsdWUg
d2lsbCBjaGFuZ2UgaW4gdGhlIHN1YnNlcXVlbnQgcmVsZWFzZXMgb2YgSUNVCi0gKiAgQHN0YWJs
ZSBJQ1UgMi42Ci0gKi8KLSNkZWZpbmUgVV9JQ1VfVkVSU0lPTl9NSU5PUl9OVU0gMgotCi0vKiog
VGhlIGN1cnJlbnQgSUNVIHBhdGNobGV2ZWwgdmVyc2lvbiBhcyBhbiBpbnRlZ2VyLiAgCi0gKiAg
VGhpcyB2YWx1ZSB3aWxsIGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UK
LSAqICBAc3RhYmxlIElDVSAyLjQKLSAqLwotI2RlZmluZSBVX0lDVV9WRVJTSU9OX1BBVENITEVW
RUxfTlVNIDAKLQotLyoqIEdsdWVkIHZlcnNpb24gc3VmZml4IGZvciByZW5hbWVycyAKLSAqICBU
aGlzIHZhbHVlIHdpbGwgY2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQot
ICogIEBzdGFibGUgSUNVIDIuNgotICovCi0jZGVmaW5lIFVfSUNVX1ZFUlNJT05fU1VGRklYIF8z
XzIKLQotLyoqIFRoZSBjdXJyZW50IElDVSBsaWJyYXJ5IHZlcnNpb24gYXMgYSBkb3R0ZWQtZGVj
aW1hbCBzdHJpbmcuIFRoZSBwYXRjaGxldmVsCi0gKiAgb25seSBhcHBlYXJzIGluIHRoaXMgc3Ry
aW5nIGlmIGl0IG5vbi16ZXJvLiAKLSAqICBUaGlzIHZhbHVlIHdpbGwgY2hhbmdlIGluIHRoZSBz
dWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQotICogIEBzdGFibGUgSUNVIDIuNAotICovCi0jZGVm
aW5lIFVfSUNVX1ZFUlNJT04gIjMuMiIKLQotLyoqIFRoZSBjdXJyZW50IElDVSBsaWJyYXJ5IG1h
am9yL21pbm9yIHZlcnNpb24gYXMgYSBzdHJpbmcgd2l0aG91dCBkb3RzLCBmb3IgbGlicmFyeSBu
YW1lIHN1ZmZpeGVzLiAKLSAqICBUaGlzIHZhbHVlIHdpbGwgY2hhbmdlIGluIHRoZSBzdWJzZXF1
ZW50IHJlbGVhc2VzIG9mIElDVQotICogIEBzdGFibGUgSUNVIDIuNgotICovCi0jZGVmaW5lIFVf
SUNVX1ZFUlNJT05fU0hPUlQgIjMyIgotCi0vKiogQW4gSUNVIHZlcnNpb24gY29uc2lzdHMgb2Yg
dXAgdG8gNCBudW1iZXJzIGZyb20gMC4uMjU1LgotICogIEBzdGFibGUgSUNVIDIuNAotICovCi0j
ZGVmaW5lIFVfTUFYX1ZFUlNJT05fTEVOR1RIIDQKLQotLyoqIEluIGEgc3RyaW5nLCBJQ1UgdmVy
c2lvbiBmaWVsZHMgYXJlIGRlbGltaXRlZCBieSBkb3RzLgotICogIEBzdGFibGUgSUNVIDIuNAot
ICovCi0jZGVmaW5lIFVfVkVSU0lPTl9ERUxJTUlURVIgJy4nCi0KLS8qKiBUaGUgbWF4aW11bSBs
ZW5ndGggb2YgYW4gSUNVIHZlcnNpb24gc3RyaW5nLgotICogIEBzdGFibGUgSUNVIDIuNAotICov
Ci0jZGVmaW5lIFVfTUFYX1ZFUlNJT05fU1RSSU5HX0xFTkdUSCAyMAotCi0vKiogVGhlIGJpbmFy
eSBmb3JtIG9mIGEgdmVyc2lvbiBvbiBJQ1UgQVBJcyBpcyBhbiBhcnJheSBvZiA0IHVpbnQ4X3Qu
Ci0gKiAgQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLXR5cGVkZWYgdWludDhfdCBVVmVyc2lvbkluZm9b
VV9NQVhfVkVSU0lPTl9MRU5HVEhdOwotCi0jaWYgVV9IQVZFX05BTUVTUEFDRSAmJiBkZWZpbmVk
KFhQX0NQTFVTUExVUykKLSNpZiBVX0RJU0FCTEVfUkVOQU1JTkcKLSNkZWZpbmUgVV9JQ1VfTkFN
RVNQQUNFIGljdQotbmFtZXNwYWNlIFVfSUNVX05BTUVTUEFDRSB7IH0KLSNlbHNlCi0jZGVmaW5l
IFVfSUNVX05BTUVTUEFDRSBpY3VfM18yCi1uYW1lc3BhY2UgVV9JQ1VfTkFNRVNQQUNFIHsgfQot
bmFtZXNwYWNlIGljdSA9IFVfSUNVX05BTUVTUEFDRTsKLSNlbmRpZgotVV9OQU1FU1BBQ0VfVVNF
Ci0jZW5kaWYKLQotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0vKiBHZW5lcmFsIHZlcnNpb24g
aGVscGVyIGZ1bmN0aW9ucy4gRGVmaW5pdGlvbnMgaW4gcHV0aWwuYyAgICAgICAgICAgICAgICAg
ICovCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLS8qKgotICogUGFyc2UgYSBzdHJpbmcgd2l0
aCBkb3R0ZWQtZGVjaW1hbCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZAotICogZmlsbCBpbiBhIFVW
ZXJzaW9uSW5mbyBzdHJ1Y3R1cmUgd2l0aCB0aGUgcmVzdWx0LgotICogRGVmaW5pdGlvbiBvZiB0
aGlzIGZ1bmN0aW9uIGxpdmVzIGluIHB1dGlsLmMKLSAqCi0gKiBAcGFyYW0gdmVyc2lvbkFycmF5
IFRoZSBkZXN0aW5hdGlvbiBzdHJ1Y3R1cmUgZm9yIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uLgot
ICogQHBhcmFtIHZlcnNpb25TdHJpbmcgQSBzdHJpbmcgd2l0aCBkb3R0ZWQtZGVjaW1hbCB2ZXJz
aW9uIGluZm9ybWF0aW9uLAotICogICAgICAgICAgICAgICAgICAgICAgd2l0aCB1cCB0byBmb3Vy
IG5vbi1uZWdhdGl2ZSBudW1iZXIgZmllbGRzIHdpdGgKLSAqICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlcyBvZiB1cCB0byAyNTUgZWFjaC4KLSAqIEBzdGFibGUgSUNVIDIuNAotICovCi1VX1NU
QUJMRSB2b2lkIFVfRVhQT1JUMgotdV92ZXJzaW9uRnJvbVN0cmluZyhVVmVyc2lvbkluZm8gdmVy
c2lvbkFycmF5LCBjb25zdCBjaGFyICp2ZXJzaW9uU3RyaW5nKTsKLQotLyoqCi0gKiBXcml0ZSBh
IHN0cmluZyB3aXRoIGRvdHRlZC1kZWNpbWFsIHZlcnNpb24gaW5mb3JtYXRpb24gYWNjb3JkaW5n
Ci0gKiB0byB0aGUgaW5wdXQgVVZlcnNpb25JbmZvLgotICogRGVmaW5pdGlvbiBvZiB0aGlzIGZ1
bmN0aW9uIGxpdmVzIGluIHB1dGlsLmMKLSAqCi0gKiBAcGFyYW0gdmVyc2lvbkFycmF5IFRoZSB2
ZXJzaW9uIGluZm9ybWF0aW9uIHRvIGJlIHdyaXR0ZW4gYXMgYSBzdHJpbmcuCi0gKiBAcGFyYW0g
dmVyc2lvblN0cmluZyBBIHN0cmluZyBidWZmZXIgdGhhdCB3aWxsIGJlIGZpbGxlZCBpbiB3aXRo
Ci0gKiAgICAgICAgICAgICAgICAgICAgICBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoZSBu
dW1lcmljIHZlcnNpb24KLSAqICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGluIHZl
cnNpb25BcnJheS4KLSAqICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWZmZXIgc2l6ZSBtdXN0
IGJlIGF0IGxlYXN0IFVfTUFYX1ZFUlNJT05fU1RSSU5HX0xFTkdUSC4KLSAqIEBzdGFibGUgSUNV
IDIuNAotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdV92ZXJzaW9uVG9TdHJpbmcoVVZl
cnNpb25JbmZvIHZlcnNpb25BcnJheSwgY2hhciAqdmVyc2lvblN0cmluZyk7Ci0KLS8qKgotICog
R2V0cyB0aGUgSUNVIHJlbGVhc2UgdmVyc2lvbi4gIFRoZSB2ZXJzaW9uIGFycmF5IHN0b3JlcyB0
aGUgdmVyc2lvbiBpbmZvcm1hdGlvbgotICogZm9yIElDVS4gIEZvciBleGFtcGxlLCByZWxlYXNl
ICIxLjMuMzEuMiIgaXMgdGhlbiByZXByZXNlbnRlZCBhcyAweDAxMDMxRjAyLgotICogRGVmaW5p
dGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGxpdmVzIGluIHB1dGlsLmMKLSAqCi0gKiBAcGFyYW0gdmVy
c2lvbkFycmF5IHRoZSB2ZXJzaW9uICMgaW5mb3JtYXRpb24sIHRoZSByZXN1bHQgd2lsbCBiZSBm
aWxsZWQgaW4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JU
MgotdV9nZXRWZXJzaW9uKFVWZXJzaW9uSW5mbyB2ZXJzaW9uQXJyYXkpOwotCi0KLS8qPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0gKiBJQ1UgY29sbGF0aW9uIGZyYW1ld29yayB2ZXJzaW9uIGluZm9ybWF0
aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICogVmVyc2lvbiBpbmZvIHRoYXQg
Y2FuIGJlIG9idGFpbmVkIGZyb20gYSBjb2xsYXRvciBpcyBhZmZlY3RlZCBieSB0aGVzZSAgICAK
LSAqIG51bWJlcnMgaW4gYSBzZWNyZXQgYW5kIG1hZ2ljIHdheS4gUGxlYXNlIHVzZSBjb2xsYXRv
ciB2ZXJzaW9uIGFzIHdob2xlCi0gKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICovCi0KLS8qKiBDb2xs
YXRpb24gcnVudGltZSB2ZXJzaW9uIChzb3J0IGtleSBnZW5lcmF0b3IsIHN0cmNvbGwpLiAKLSAq
IElmIHRoZSB2ZXJzaW9uIGlzIGRpZmZlcmVudCwgc29ydGtleXMgZm9yIHRoZSBzYW1lIHN0cmlu
ZyBjb3VsZCBiZSBkaWZmZXJlbnQgCi0gKiB2ZXJzaW9uIDIgd2FzIGluIElDVSAxLjguMS4gY2hh
bmdlZCBpczogY29tcHJlc3Npb24gaW50ZXJ2YWxzLCBGcmVuY2ggc2Vjb25kYXJ5IAotICogY29t
cHJlc3Npb24sIGdlbmVyYXRpbmcgcXVhZCBsZXZlbCBhbHdheXMgd2hlbiBzdHJlbmd0aCBpcyBx
dWFkIG9yIG1vcmUgCi0gKiB2ZXJzaW9uIDQgLSBJQ1UgMi4yIC0gdHJhY2tpbmcgVUNBIGNoYW5n
ZXMsIGlnbm9yZSBjb21wbGV0ZWx5IGlnbm9yYWJsZXMgCi0gKiBpbiBjb250cmFjdGlvbnMsIGln
bm9yZSBwcmltYXJ5IGlnbm9yYWJsZXMgYWZ0ZXIgc2hpZnRlZCAKLSAqIHZlcnNpb24gNSAtIElD
VSAyLjggLSBjaGFuZ2VkIGltcGxpY2l0IGdlbmVyYXRpb24gY29kZQotICogVGhpcyB2YWx1ZSBt
YXkgY2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQotICogQHN0YWJsZSBJ
Q1UgMi40Ci0gKi8KLSNkZWZpbmUgVUNPTF9SVU5USU1FX1ZFUlNJT04gNQotCi0vKiogQnVpbGRl
ciBjb2RlIHZlcnNpb24uIFdoZW4gdGhpcyBpcyBkaWZmZXJlbnQsIHNhbWUgdGFpbG9yaW5nIG1p
Z2h0IHJlc3VsdAotICogaW4gYXNzaWduaW5nIGRpZmZlcmVudCBjb2xsYXRpb24gZWxlbWVudHMg
dG8gY29kZSBwb2ludHMgICAgICAgICAgICAgICAgICAKLSAqIHZlcnNpb24gMiB3YXMgaW4gSUNV
IDEuOC4xLiBhZGRlZCBzdXBwb3J0IGZvciBwcmVmaXhlcywgdHdlYWtlZCBjYW5vbmljYWwgCi0g
KiBjbG9zdXJlLiBIb3dldmVyLCB0aGUgdGFpbG9yaW5ncyBzaG91bGQgcHJvYmFibHkgZ2V0IHNh
bWUgQ0VzIGFzc2lnbmVkICAgIAotICogdmVyc2lvbiA1IC0gSUNVIDIuMiAtIGZpeGVkIHNvbWUg
YnVncywgcmVuYW1lZCBzb21lIGluZGlyZWN0IHZhbHVlcy4gICAgICAKLSAqIHZlcnNpb24gNiAt
IElDVSAyLjggLSBmaXhlZCBidWcgaW4gYnVpbGRlciB0aGF0IGFsbG93ZWQgMHhGRiBpbiBwcmlt
YXJ5IHZhbHVlcwotICogQmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHRoZSBvbGQgcnVsZXMuIAot
ICogVGhpcyB2YWx1ZSBtYXkgY2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElD
VQotICogQHN0YWJsZSBJQ1UgMi40Ci0gKi8KLSNkZWZpbmUgVUNPTF9CVUlMREVSX1ZFUlNJT04g
NgotCi0vKiogKioqIFJlbW92ZWQgKioqIEluc3RlYWQgd2UgdXNlIHRoZSBkYXRhIHdlIHJlYWQg
ZnJvbSBGcmFjdGlvbmFsVUNBLnR4dAotICogVGhpcyBpcyB0aGUgdmVyc2lvbiBvZiBGcmFjdGlv
bmFsVUNBLnR4dCB0YWlsb3JpbmcgcnVsZXMKLSAqIFZlcnNpb24gMSB3YXMgaW4gSUNVIDEuOC4x
LiBWZXJzaW9uIHR3byBjb250YWlucyBjYW5vbmljYWwgY2xvc3VyZSBmb3IKLSAqIHN1cHBsZW1l
bnRhcnkgY29kZSBwb2ludHMgCi0gKiBWZXJzaW9uIDQgaW4gSUNVIDIuMiwgZm9sbG93aW5nIFVD
QT0zLjEuMWQ2LCBVQ0Q9My4yLjAgCi0gKiBUaGlzIHZhbHVlIG1heSBjaGFuZ2UgaW4gdGhlIHN1
YnNlcXVlbnQgcmVsZWFzZXMgb2YgSUNVCi0gKiBAc3RhYmxlIElDVSAyLjQKLSAqLwotLyojZGVm
aW5lIFVDT0xfRlJBQ1RJT05BTF9VQ0FfVkVSU0lPTiA0Ki8KLQotLyoqIFRoaXMgaXMgdGhlIHZl
cnNpb24gb2YgdGhlIHRhaWxvcmluZ3MgCi0gKiAgVGhpcyB2YWx1ZSBtYXkgY2hhbmdlIGluIHRo
ZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQotICogIEBzdGFibGUgSUNVIDIuNAotICovCi0j
ZGVmaW5lIFVDT0xfVEFJTE9SSU5HU19WRVJTSU9OIDEKLQotI2VuZGlmCkluZGV4OiBTb3VyY2Vz
L01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZXMvTWFrZWZpbGUJKHJldmlzaW9uIDApCisr
KyBTb3VyY2VzL01ha2VmaWxlCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitNT0RVTEVT
ID0gSmF2YVNjcmlwdEdsdWUKKworYWxsOgorCUBmb3IgZGlyIGluICQoTU9EVUxFUyk7IGRvICR7
TUFLRX0gJEAgLUMgJCRkaXI7IGV4aXRfc3RhdHVzPSQkPzsgXAorCWlmIFsgJCRleGl0X3N0YXR1
cyAtbmUgMCBdOyB0aGVuIGV4aXQgJCRleGl0X3N0YXR1czsgZmk7IGRvbmUKKworZGVidWcgZCBk
ZXZlbG9wbWVudCBkZXYgZGV2ZWxvcDoKKwlAZm9yIGRpciBpbiAkKE1PRFVMRVMpOyBkbyAke01B
S0V9ICRAIC1DICQkZGlyOyBleGl0X3N0YXR1cz0kJD87IFwKKwlpZiBbICQkZXhpdF9zdGF0dXMg
LW5lIDAgXTsgdGhlbiBleGl0ICQkZXhpdF9zdGF0dXM7IGZpOyBkb25lCisKK3JlbGVhc2UgciBk
ZXBsb3ltZW50IGRlcCBkZXBsb3k6CisJQGZvciBkaXIgaW4gJChNT0RVTEVTKTsgZG8gJHtNQUtF
fSAkQCAtQyAkJGRpcjsgZXhpdF9zdGF0dXM9JCQ/OyBcCisJaWYgWyAkJGV4aXRfc3RhdHVzIC1u
ZSAwIF07IHRoZW4gZXhpdCAkJGV4aXRfc3RhdHVzOyBmaTsgZG9uZQorCitjbGVhbjoKKwlAZm9y
IGRpciBpbiAkKE1PRFVMRVMpOyBkbyAke01BS0V9ICRAIC1DICQkZGlyOyBleGl0X3N0YXR1cz0k
JD87IFwKKwlpZiBbICQkZXhpdF9zdGF0dXMgLW5lIDAgXTsgdGhlbiBleGl0ICQkZXhpdF9zdGF0
dXM7IGZpOyBkb25lCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3NDYxNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTEyLTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZSBKYXZhU2NyaXB0R2x1ZSBpbnRvIFNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNTgzCisKKyAgICAgICAgVGhlc2UgdG9vbHMg
cmVmZXIgdG8gSmF2YVNjcmlwdEdsdWUgYW5kIG5lZWQgdG8gYmUgdXBkYXRlZCB0byBpdHMgbmV3
CisgICAgICAgIGxvY2F0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6Cisg
ICAgICAgICogU2NyaXB0cy9kby1maWxlLXJlbmFtZToKKyAgICAgICAgKiBTY3JpcHRzL2RvLXdl
YmNvcmUtcmVuYW1lOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9i
dWlsZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGRf
dW5pdHRlc3QucHk6CisKIDIwMTAtMTItMjMgIEx1Y2FzIEZvcnNjaGxlciAgPGxmb3JzY2hsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogVG9v
bHMvU2NyaXB0cy9idWlsZC13ZWJraXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQJKHJldmlzaW9uIDc0NjE2KQorKysgVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJ
KHdvcmtpbmcgY29weSkKQEAgLTM5OSw3ICszOTksNyBAQCBpZiAoaXNHdGsoKSkgewogICAgIH0K
IAogICAgICMgQXBwbGUgYnVpbGRzIEphdmFTY3JpcHRHbHVlLCBhbmQgb25seSBvbiB0aGUgTWFj
LgotICAgIHNwbGljZSBAcHJvamVjdHMsIDEsIDAsICJKYXZhU2NyaXB0R2x1ZSI7CisgICAgc3Bs
aWNlIEBwcm9qZWN0cywgMSwgMCwgIlNvdXJjZXMvSmF2YVNjcmlwdEdsdWUiOwogCiAgICAgIyBB
TkdMRSBtdXN0IGNvbWUgYmVmb3JlIFdlYkNvcmUKICAgICBzcGxpY2UgQHByb2plY3RzLCAwLCAw
LCAiQU5HTEUiOwpAQCAtNTE1LDE3ICs1MTUsMTkgQEAgZm9yIG15ICRkaXIgKEBwcm9qZWN0cykg
ewogICAgICAgICBuZXh0OwogICAgIH0KIAorICAgIG15ICRwcm9qZWN0ID0gYmFzZW5hbWUoJGRp
cik7CiAgICAgaWYgKGlzR3RrKCkpIHsKKyAgICAgICAgI0ZJWE1FOiAkZGlyIHNob3VsZCBwcm9i
YWJseSBiZSAkcHJvamVjdC4KICAgICAgICAgJHJlc3VsdCA9IGJ1aWxkR3RrUHJvamVjdCgkZGly
LCAkY2xlYW4sICBAb3B0aW9ucyk7CiAgICAgfSBlbHNpZiAoaXNRdCgpKSB7CisgICAgICAgICNG
SVhNRTogJGRpciBzaG91bGQgcHJvYmFibHkgYmUgJHByb2plY3QuCiAgICAgICAgICRyZXN1bHQg
PSBidWlsZFFNYWtlUXRQcm9qZWN0KCRkaXIsICRjbGVhbiwgQG9wdGlvbnMpOwogICAgIH0gZWxz
aWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewotICAgICAgICAkZGlyID0gIk1pbmlCcm93c2VyIiBp
ZiAkZGlyIGVxICJUb29scy9NaW5pQnJvd3NlciI7CiAgICAgICAgIG15IEBsb2NhbF9vcHRpb25z
ID0gQG9wdGlvbnM7Ci0gICAgICAgIHB1c2ggQGxvY2FsX29wdGlvbnMsIFhjb2RlQ292ZXJhZ2VT
dXBwb3J0T3B0aW9ucygpIGlmICRjb3ZlcmFnZVN1cHBvcnQgJiYgJGRpciBuZSAiQU5HTEUiOwot
ICAgICAgICAkcmVzdWx0ID0gYnVpbGRYQ29kZVByb2plY3QoJGRpciwgJGNsZWFuLCBAbG9jYWxf
b3B0aW9ucywgQEFSR1YpOworICAgICAgICBwdXNoIEBsb2NhbF9vcHRpb25zLCBYY29kZUNvdmVy
YWdlU3VwcG9ydE9wdGlvbnMoKSBpZiAkY292ZXJhZ2VTdXBwb3J0ICYmICRwcm9qZWN0IG5lICJB
TkdMRSI7CisgICAgICAgICRyZXN1bHQgPSBidWlsZFhDb2RlUHJvamVjdCgkcHJvamVjdCwgJGNs
ZWFuLCBAbG9jYWxfb3B0aW9ucywgQEFSR1YpOwogICAgIH0gZWxzaWYgKGlzQXBwbGVXaW5XZWJL
aXQoKSkgewotICAgICAgICBpZiAoJGRpciBlcSAiV2ViS2l0IikgeworICAgICAgICBpZiAoJHBy
b2plY3QgZXEgIldlYktpdCIpIHsKICAgICAgICAgICAgICRyZXN1bHQgPSBidWlsZFZpc3VhbFN0
dWRpb1Byb2plY3QoIndpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5zbG4iLCAkY2xlYW4pOwogICAg
ICAgICB9CiAgICAgfQpJbmRleDogVG9vbHMvU2NyaXB0cy9kby1maWxlLXJlbmFtZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL2RvLWZpbGUtcmVuYW1lCShyZXZpc2lvbiA3NDYxNikKKysr
IFRvb2xzL1NjcmlwdHMvZG8tZmlsZS1yZW5hbWUJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgbXkgJXdvcmRzOwogCiBteSBAcGF0aHM7CiBmaW5kKFwmd2FudGVkLCAiSmF2YVNjcmlw
dENvcmUiKTsKLWZpbmQoXCZ3YW50ZWQsICJKYXZhU2NyaXB0R2x1ZSIpOworZmluZChcJndhbnRl
ZCwgIlNvdXJjZXMvSmF2YVNjcmlwdEdsdWUiKTsKIGZpbmQoXCZ3YW50ZWQsICJXZWJDb3JlIik7
CiBmaW5kKFwmd2FudGVkLCAiV2ViS2l0Iik7CiBmaW5kKFwmd2FudGVkLCAiV2ViS2l0MiIpOwpJ
bmRleDogVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCShyZXZpc2lvbiA3NDYxNikKKysrIFRvb2xzL1Nj
cmlwdHMvZG8td2ViY29yZS1yZW5hbWUJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
bXkgJWRpcmVjdG9yaWVzVG9JZ25vcmUgPSBtYXAgeyAkXyA9PiAxIAogCiBteSBAcGF0aHM7CiBm
aW5kKFwmd2FudGVkLCAiSmF2YVNjcmlwdENvcmUiKTsKLWZpbmQoXCZ3YW50ZWQsICJKYXZhU2Ny
aXB0R2x1ZSIpOworZmluZChcJndhbnRlZCwgIlNvdXJjZXMvSmF2YVNjcmlwdEdsdWUiKTsKIGZp
bmQoXCZ3YW50ZWQsICJXZWJDb3JlIik7CiBmaW5kKFwmd2FudGVkLCAiV2ViS2l0Iik7CiBmaW5k
KFwmd2FudGVkLCAiV2ViS2l0MiIpOwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY29uZmlnL2J1aWxkLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9idWlsZC5weQkocmV2aXNpb24gNzQ2MTYpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGQucHkJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcg
KzU3LDcgQEAgZGVmIF9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxkKHRhcmdldF9wbAogICAgICAg
ICAoIndpbmNlIiwgW10pLAogCiAgICAgICAgICMgRGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgdHJp
Z2dlciBidWlsZHMgb24gb25seSBzb21lIGJvdHMuCi0gICAgICAgICgiSmF2YVNjcmlwdEdsdWUi
LCBbIm1hYyJdKSwKKyAgICAgICAgKCJTb3VyY2VzL0phdmFTY3JpcHRHbHVlIiwgWyJtYWMiXSks
CiAgICAgICAgICgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjIiwgWyJtYWMiLCAid2luIl0pLAog
ICAgICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZCIsIFsibWFjLXNu
b3dsZW9wYXJkIiwgIndpbiJdKSwKICAgICAgICAgKCJXZWJDb3JlL2ltYWdlLWRlY29kZXJzIiwg
WyJjaHJvbWl1bSJdKSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZp
Zy9idWlsZF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDc0NjE2KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIGNsYXNzIFNob3VsZEJ1aWxkVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSkKICAgICAgICAgKFsiV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL2ZvbyIsICJX
ZWJDb3JlL2JhciJdLCBbIioiXSksCiAgICAgICAgIChbIldlYnNpdGVzL2J1Z3Mud2Via2l0Lm9y
Zy9mb28iXSwgW10pLAogICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovZm9vIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLXNub3dsZW9wYXJkIl0pLAotICAg
ICAgICAoWyJKYXZhU2NyaXB0R2x1ZS9mb28iLCAiV2ViQ29yZS9iYXIiXSwgWyIqIl0pLAotICAg
ICAgICAoWyJKYXZhU2NyaXB0R2x1ZS9mb28iXSwgWyJtYWMtbGVvcGFyZCIsICJtYWMtc25vd2xl
b3BhcmQiXSksCisgICAgICAgIChbIlNvdXJjZXMvSmF2YVNjcmlwdEdsdWUvZm9vIiwgIldlYkNv
cmUvYmFyIl0sIFsiKiJdKSwKKyAgICAgICAgKFsiU291cmNlcy9KYXZhU2NyaXB0R2x1ZS9mb28i
XSwgWyJtYWMtbGVvcGFyZCIsICJtYWMtc25vd2xlb3BhcmQiXSksCiAgICAgICAgIChbIkxheW91
dFRlc3RzL2ZvbyJdLCBbIioiXSksCiAgICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLWxpbnV4L2ZvbyJdLCBbImNocm9taXVtLWxpbnV4Il0pLAogICAgICAgICAoWyJMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9jb21wYWN0LzAwMS1leHBlY3RlZC50
eHQiXSwgWyJjaHJvbWl1bS13aW4iXSksCkluZGV4OiBXZWJzaXRlcy9idWdzLndlYmtpdC5vcmcv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc0NjE2KQorKysgV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTEyLTIzICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSBKYXZhU2NyaXB0R2x1ZSBpbnRvIFNvdXJjZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNTgzCisKKyAgICAgICAg
UHJldHR5UGF0Y2gga2VlcHMgYSBsaXN0IG9mIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3JpZXMgdGhh
dCBleGlzdCBpbgorICAgICAgICB0cmFjLgorCisgICAgICAgICogUHJldHR5UGF0Y2gvUHJldHR5
UGF0Y2gucmI6CisKIDIwMTAtMTItMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBPbmUgbW9yZSB0d2VhayBjYXVzZWQgYnkgbW92aW5nIHRoZSB3ZWIgc2l0ZXMg
YXJvdW5kLiAgSSBoYWQgdGhpcwpJbmRleDogV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL1ByZXR0
eVBhdGNoL1ByZXR0eVBhdGNoLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL2J1Z3Mud2Via2l0
Lm9yZy9QcmV0dHlQYXRjaC9QcmV0dHlQYXRjaC5yYgkocmV2aXNpb24gNzQ2MTYpCisrKyBXZWJz
aXRlcy9idWdzLndlYmtpdC5vcmcvUHJldHR5UGF0Y2gvUHJldHR5UGF0Y2gucmIJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDEwICs2NiwxMCBAQCBwcml2YXRlCiAgICAgT1BFTlNPVVJDRV9ESVJTID0g
U2V0Lm5ldyAld1sKICAgICAgICAgRXhhbXBsZXMKICAgICAgICAgSmF2YVNjcmlwdENvcmUKLSAg
ICAgICAgSmF2YVNjcmlwdEdsdWUKICAgICAgICAgTGF5b3V0VGVzdHMKICAgICAgICAgUGFnZUxv
YWRUZXN0cwogICAgICAgICBTdW5TcGlkZXIKKyAgICAgICAgU291cmNlcwogICAgICAgICBUb29s
cwogICAgICAgICBXZWJDb3JlCiAgICAgICAgIFdlYktpdAo=
</data>
<flag name="review"
          id="68532"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="68533"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>