This is the mail archive of the
libstdc++-prs@sourceware.cygnus.com
mailing list for the libstdc++ project.
libstdc++/57: can't build last gcc snapshot on alphaev5-unknown-linux-gnu
- To: libstdc++-gnats at sourceware dot cygnus dot com
- Subject: libstdc++/57: can't build last gcc snapshot on alphaev5-unknown-linux-gnu
- From: albert at ravel dot mpg dot uni-rostock dot de
- Date: 8 May 2000 22:01:21 -0000
- Reply-To: albert at ravel dot mpg dot uni-rostock dot de
- Resent-Cc: libstdc++-prs at sourceware dot cygnus dot com
- Resent-Reply-To: libstdc++-gnats@sourceware.cygnus.com, albert@ravel.mpg.uni-rostock.de
>Number: 57
>Category: libstdc++
>Synopsis: can't build last gcc snapshot on alphaev5-unknown-linux-gnu
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon May 08 15:07:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: libstdc++-v3/src/complex_io.cc
>Release: egcs-20000501
>Organization:
>Environment:
Alpha 21164, RedHat Linux 5.1 (kernel 2.0.34), gcc-2.95.2
>Description:
All was as usually:
1. cd /tmp/egcs-build
2. ../egcs-20000501/configure --prefix=/home/albert/local --enable-libstdc++-v3
3. make bootstrap-lean
... and building was broken at this point:
/tmp/egcs-build/gcc/g++ -B/tmp/egcs-build/gcc/ -B/home/albert/local/alphaev5-unknown-linux-gnu/bin/ -DHAVE_CONFIG_H -I. -I../../../../egcs-20000501/libstdc++-v3/src -I.. -nostdinc++ -I../../../../egcs-20000501/libstdc++-v3 -I../../../../egcs-20000501/libstdc++-v3/libio -I../../../../egcs-20000501/libstdc++-v3/config/cpu/alpha -I../../../../egcs-20000501/libstdc++-v3/config/gnu-linux -I/home/albert/local/include -g -O2 -fvtable-thunks -D_GNU_SOURCE -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -Werror -g -c -fPIC -DPIC ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc -o .libs/complex_io.lo
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: In function 'std::basic_istream < _CharT,
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: _Traits > & std::operator
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: ( std::basic_istream < _CharT, _Traits > & ,
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: std::complex < _Tp > & ) [with _Tp = float,
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: _CharT = char, _Traits =
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: std::char_traits < char > ]':
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:97: instantiated from here
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: Internal compiler error.
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: Please submit a full bug report.
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: See
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: < URL:http://www.gnu.org/software/gcc/bugs.html >
../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: for instructions.
make[4]: *** [complex_io.lo] Error 1
make[4]: Leaving directory '/tmp/egcs-build/alphaev5-unknown-linux-gnu/libstdc++-v3/src'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/tmp/egcs-build/alphaev5-unknown-linux-gnu/libstdc++-v3'
make[2]: *** [all-recursive-am] Error 2
make[2]: Leaving directory '/tmp/egcs-build/alphaev5-unknown-linux-gnu/libstdc++-v3'
make[1]: *** [all-target-libstdc++-v3] Error 2
make[1]: Leaving directory '/tmp/egcs-build'
make: *** [bootstrap-lean] Error 2
Attachment is config.log from /tmp/egcs-build/alphaev5-unknown-linux-gnu/libstdc++-v3
Regards,
Albert Zhykhar
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="config.log"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="config.log"
VGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hp
bGUKcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2Vz
IGEgbWlzdGFrZS4KCmNvbmZpZ3VyZTo2MDQ6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUKY29u
ZmlndXJlOjYyNTogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlCmNvbmZpZ3VyZTo2NDM6IGNo
ZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlCmNvbmZpZ3VyZTo2OTI6IGNoZWNraW5nIGZvciBhIEJT
RCBjb21wYXRpYmxlIGluc3RhbGwKY29uZmlndXJlOjc0NTogY2hlY2tpbmcgd2hldGhlciBidWls
ZCBlbnZpcm9ubWVudCBpcyBzYW5lCmNvbmZpZ3VyZTo4MDI6IGNoZWNraW5nIHdoZXRoZXIgbWFr
ZSBzZXRzICR7TUFLRX0KY29uZmlndXJlOjgzNTogY2hlY2tpbmcgZm9yIEN5Z3dpbiBlbnZpcm9u
bWVudApjb25maWd1cmU6ODUxOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3Mt
YnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdu
dS9iaW4vIC1jIC1nIC1PMiAgY29uZnRlc3QuYyAxPiY1CmNvbmZpZ3VyZTogSW4gZnVuY3Rpb24g
YG1haW4nOgpjb25maWd1cmU6ODQ3OiBgX19DWUdXSU4zMl9fJyB1bmRlY2xhcmVkIChmaXJzdCB1
c2UgaW4gdGhpcyBmdW5jdGlvbikKY29uZmlndXJlOjg0NzogKEVhY2ggdW5kZWNsYXJlZCBpZGVu
dGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZQpjb25maWd1cmU6ODQ3OiBmb3IgZWFjaCBmdW5j
dGlvbiBpdCBhcHBlYXJzIGluLikKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5l
IDg0MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKCmludCBtYWluKCkgewoKI2lm
bmRlZiBfX0NZR1dJTl9fCiNkZWZpbmUgX19DWUdXSU5fXyBfX0NZR1dJTjMyX18KI2VuZGlmCnJl
dHVybiBfX0NZR1dJTl9fOwo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTo4Njg6IGNoZWNraW5nIGZv
ciBtaW5ndzMyIGVudmlyb25tZW50CmNvbmZpZ3VyZTo4ODA6IC90bXAvZWdjcy1idWlsZC9nY2Mv
eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1
LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmln
dXJlOiBJbiBmdW5jdGlvbiBgbWFpbic6CmNvbmZpZ3VyZTo4NzY6IGBfX01JTkdXMzJfXycgdW5k
ZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCmNvbmZpZ3VyZTo4NzY6IChFYWNo
IHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UKY29uZmlndXJlOjg3
NjogZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbi4pCmNvbmZpZ3VyZTogZmFpbGVkIHBy
b2dyYW0gd2FzOgojbGluZSA4NzMgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCgpp
bnQgbWFpbigpIHsKcmV0dXJuIF9fTUlOR1czMl9fOwo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTo5
Mjc6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUKY29uZmlndXJlOjk2ODogY2hlY2tpbmcgZm9y
IHdvcmtpbmcgYWNsb2NhbApjb25maWd1cmU6OTgxOiBjaGVja2luZyBmb3Igd29ya2luZyBhdXRv
Y29uZgpjb25maWd1cmU6OTk0OiBjaGVja2luZyBmb3Igd29ya2luZyBhdXRvbWFrZQpjb25maWd1
cmU6MTAwNzogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b2hlYWRlcgpjb25maWd1cmU6MTAyMDog
Y2hlY2tpbmcgZm9yIHdvcmtpbmcgbWFrZWluZm8KY29uZmlndXJlOjEwNDY6IGNoZWNraW5nIGZv
ciBnY2MKY29uZmlndXJlOjExMjU6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBD
CmNvbmZpZ3VyZToxMTM0OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVp
bGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9i
aW4vIC1FIGNvbmZ0ZXN0LmMKY29uZmlndXJlOjExNDk6IGNoZWNraW5nIHdoZXRoZXIgL3RtcC9l
Z2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQv
bG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyBhY2NlcHRzIC1nCmNvbmZpZ3Vy
ZToxMTg2OiBjaGVja2luZyBmb3IgYysrCmNvbmZpZ3VyZToxMjE5OiBjaGVja2luZyB3aGV0aGVy
IHdlIGFyZSB1c2luZyBHTlUgQysrCmNvbmZpZ3VyZToxMjI4OiAvdG1wL2VnY3MtYnVpbGQvZ2Nj
L2crKyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1
LXVua25vd24tbGludXgtZ251L2Jpbi8gLUUgY29uZnRlc3QuQwpjb25maWd1cmU6MTI0MzogY2hl
Y2tpbmcgd2hldGhlciAvdG1wL2VnY3MtYnVpbGQvZ2NjL2crKyAtQi90bXAvZWdjcy1idWlsZC9n
Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g
YWNjZXB0cyAtZwpjb25maWd1cmU6MTI3NjogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUKY29u
ZmlndXJlOjEyOTc6IGNoZWNraW5nIGZvciBhcwpjb25maWd1cmU6MTMyOTogY2hlY2tpbmcgZm9y
IGFyCmNvbmZpZ3VyZToxMzYxOiBjaGVja2luZyBmb3IgcmFubGliCmNvbmZpZ3VyZToxNDM4OiBj
aGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsCmNvbmZpZ3VyZToxNDkyOiBjaGVj
a2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1h
a2VmaWxlcwpjb25maWd1cmU6MTY1MDogY2hlY2tpbmcgZm9yIHJhbmxpYgpjb25maWd1cmU6MTY4
OTogY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgR0NDCmNvbmZpZ3VyZToxNzUxOiBjaGVja2luZyBp
ZiB0aGUgbGlua2VyIChsZCkgaXMgR05VIGxkCkdOVSBsZCB2ZXJzaW9uIDIuOS41ICh3aXRoIEJG
RCAyLjkuNS4wLjMyKQpjb25maWd1cmU6MTc2NzogY2hlY2tpbmcgZm9yIEJTRC1jb21wYXRpYmxl
IG5tCmNvbmZpZ3VyZToxODAzOiBjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzCmx0Y29uZmln
OjU4NjogY2hlY2tpbmcgZm9yIG9iamVjdCBzdWZmaXgKbHRjb25maWc6NTg3OiAvdG1wL2VnY3Mt
YnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2Nh
bC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAgY29uZnRlc3QuYyAx
PiY1Cmx0Y29uZmlnOjcxNzogY2hlY2tpbmcgaWYgL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIFBJ
QyBmbGFnIC1mUElDIHdvcmtzCmx0Y29uZmlnOjcxODogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2Nj
IC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5r
bm93bi1saW51eC1nbnUvYmluLyAtYyAtZyAtTzIgLWZQSUMgLURQSUMgIGNvbmZ0ZXN0LmMgMT4m
NQpsdGNvbmZpZzo3NjA6IGNoZWNraW5nIGlmIC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyBzdXBw
b3J0cyAtYyAtbyBmaWxlLm8KbHRjb25maWc6NzYxOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg
LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu
b3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAtYyAtbyBjb25mdGVzdDIubyAgY29uZnRlc3Qu
YyAxPiY1Cmx0Y29uZmlnOjc4ODogY2hlY2tpbmcgaWYgL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2Nj
IHN1cHBvcnRzIC1jIC1vIGZpbGUubG8KbHRjb25maWc6Nzg5OiAvdG1wL2VnY3MtYnVpbGQvZ2Nj
L3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2
NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAtYyAtbyBjb25mdGVzdC5sbyAgY29u
ZnRlc3QuYyAxPiY1Cmx0Y29uZmlnOjg0MDogY2hlY2tpbmcgaWYgL3RtcC9lZ2NzLWJ1aWxkL2dj
Yy94Z2NjIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMKbHRjb25maWc6ODQxOiAv
dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs
YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAtZm5v
LXJ0dGkgLWZuby1leGNlcHRpb25zIC1jIGNvbmZ0ZXN0LmMgIGNvbmZ0ZXN0LmMgMT4mNQpsdGNv
bmZpZzo4ODQ6IGNoZWNraW5nIGlmIC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyBzdGF0aWMgZmxh
ZyAtc3RhdGljIHdvcmtzCmx0Y29uZmlnOjg4NTogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1C
L3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93
bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICAtc3RhdGljIGNvbmZ0ZXN0LmMg
IDE+JjUKR05VIGxkIHZlcnNpb24gMi45LjUgKHdpdGggQkZEIDIuOS41LjAuMzIpCmx0Y29uZmln
OjE0NDc6IGNoZWNraW5nIGlmIGdsb2JhbF9zeW1ib2xfcGlwZSB3b3JrcwpsdGNvbmZpZzoxNDQ4
OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21l
L2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAg
Y29uZnRlc3QuYyAxPiY1Cmx0Y29uZmlnOjE0NTE6IGV2YWwgIm5tIGNvbmZ0ZXN0Lm8gfCBzZWQg
LW4gLWUgJ3MvXi4qWyAJXVwoW0FCQ0RHSVNUV11cKVsgCV1bIAldKlwoXClcKFtfQS1aYS16XVtf
QS1aYS16MC05XSpcKSQvXDEgXDJcMyBcMy9wJyA+IGNvbmZ0ZXN0Lm5tIgpsdGNvbmZpZzoxNTAz
OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21l
L2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0
IC1nIC1PMiAtZm5vLWJ1aWx0aW4gLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9ucyAgIGNvbmZ0ZXN0
LmMgY29uZnRlc3RtLm8gMT4mNQpsdGNvbmZpZzoxOTc3OiBjaGVja2luZyBmb3IgZGxvcGVuCmx0
Y29uZmlnOjIwMDQ6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n
Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g
LW8gY29uZnRlc3QgLWcgLU8yIC1mbm8tYnVpbHRpbiAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25z
ICAgY29uZnRlc3QuYyAgMT4mNQovdG1wL2NjdXlEczZpLm86IEluIGZ1bmN0aW9uIGBtYWluJzoK
L3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9s
dGNvbmZpZzoxOTk4OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBkbG9wZW4nCi90bXAvZWdjcy1i
dWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvbHRjb25maWc6MTk5
ODogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZGxvcGVuJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQg
MSBleGl0IHN0YXR1cwpsdGNvbmZpZzogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAxOTgyICJs
dGNvbmZpZyIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9w
ZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBk
bG9wZW4oKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBn
Y2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBj
aGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAg
IGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBs
eS4gICovCmNoYXIgZGxvcGVuKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5
IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFs
d2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVk
CiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFu
IGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9kbG9wZW4pIHx8IGRlZmluZWQgKF9fc3R1
Yl9fX2Rsb3BlbikKY2hva2UgbWUKI2Vsc2UKZGxvcGVuKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsg
fQpsdGNvbmZpZzoyMDIyOiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwKbHRjb25maWc6MjA0
MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9t
ZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVz
dCAtZyAtTzIgLWZuby1idWlsdGluIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMgICBjb25mdGVz
dC5jIC1sZGwgICAxPiY1Cmx0Y29uZmlnOjIyMTA6IGNoZWNraW5nIGZvciBkbGZjbi5oCmx0Y29u
ZmlnOjIyMjA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2Mv
IC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMg
LWcgLU8yIC1mbm8tYnVpbHRpbiAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zICBjb25mdGVzdC5j
IDE+JjUgY29uZnRlc3QuYyA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0Cmx0Y29uZmlnOjIyNDg6
IGNoZWNraW5nIHdoZXRoZXIgYSBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmCmx0Y29uZmlnOjIz
MDI6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hv
bWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRl
c3QgLWcgLU8yIC1mbm8tYnVpbHRpbiAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zICAtREhBVkVf
RExGQ05fSCAgLVdsLC0tZXhwb3J0LWR5bmFtaWMgY29uZnRlc3QuYyAtbGRsICAxPiY1Cmx0Y29u
ZmlnOjIzMjE6IGNoZWNraW5nIHdoZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNh
biBkbG9wZW4gaXRzZWxmCmx0Y29uZmlnOjIzNzU6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt
Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v
d24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yIC1mbm8tYnVpbHRpbiAtZm5vLXJ0
dGkgLWZuby1leGNlcHRpb25zICAtREhBVkVfRExGQ05fSCAgLVdsLC0tZXhwb3J0LWR5bmFtaWMg
LXN0YXRpYyBjb25mdGVzdC5jIC1sZGwgIDE+JjUKbHRjb25maWc6IGZhaWxlZCBwcm9ncmFtIHdh
czoKI2xpbmUgMjMyOSAibHRjb25maWciCgojaWYgSEFWRV9ETEZDTl9ICiNpbmNsdWRlIDxkbGZj
bi5oPgojZW5kaWYKCiNpbmNsdWRlIDxzdGRpby5oPgoKI2lmZGVmIFJUTERfR0xPQkFMCiMgZGVm
aW5lIExURExfR0xPQkFMCVJUTERfR0xPQkFMCiNlbHNlCiMgaWZkZWYgRExfR0xPQkFMCiMgIGRl
ZmluZSBMVERMX0dMT0JBTAlETF9HTE9CQUwKIyBlbHNlCiMgIGRlZmluZSBMVERMX0dMT0JBTAkw
CiMgZW5kaWYKI2VuZGlmCgovKiBXZSBtYXkgaGF2ZSB0byBkZWZpbmUgTFRETF9MQVpZX09SX05P
VyBpbiB0aGUgY29tbWFuZCBsaW5lIGlmIHdlCiAgIGZpbmQgb3V0IGl0IGRvZXMgbm90IHdvcmsg
aW4gc29tZSBwbGF0Zm9ybS4gKi8KI2lmbmRlZiBMVERMX0xBWllfT1JfTk9XCiMgaWZkZWYgUlRM
RF9MQVpZCiMgIGRlZmluZSBMVERMX0xBWllfT1JfTk9XCVJUTERfTEFaWQojIGVsc2UKIyAgaWZk
ZWYgRExfTEFaWQojICAgZGVmaW5lIExURExfTEFaWV9PUl9OT1cJRExfTEFaWQojICBlbHNlCiMg
ICBpZmRlZiBSVExEX05PVwojICAgIGRlZmluZSBMVERMX0xBWllfT1JfTk9XCVJUTERfTk9XCiMg
ICBlbHNlCiMgICAgaWZkZWYgRExfTk9XCiMgICAgIGRlZmluZSBMVERMX0xBWllfT1JfTk9XCURM
X05PVwojICAgIGVsc2UKIyAgICAgZGVmaW5lIExURExfTEFaWV9PUl9OT1cJMAojICAgIGVuZGlm
CiMgICBlbmRpZgojICBlbmRpZgojIGVuZGlmCiNlbmRpZgoKZm5vcmQoKSB7IGludCBpPTQyO30K
bWFpbigpIHsgdm9pZCAqc2VsZiwgKnB0cjEsICpwdHIyOyBzZWxmPWRsb3BlbigwLExURExfR0xP
QkFMfExURExfTEFaWV9PUl9OT1cpOwogICAgaWYoc2VsZikgeyBwdHIxPWRsc3ltKHNlbGYsImZu
b3JkIik7IHB0cjI9ZGxzeW0oc2VsZiwiX2Zub3JkIik7CiAgICBpZihwdHIxIHx8IHB0cjIpIGV4
aXQoMCk7IH0gZXhpdCgxKTsgfSAKCmNvbmZpZ3VyZToxOTkzOiBjaGVja2luZyBob3cgdG8gcnVu
IHRoZSBDIHByZXByb2Nlc3Nvcgpjb25maWd1cmU6MjAxNDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94
Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUt
dW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3QuYyA+L2Rldi9udWxsIDI+Y29uZnRl
c3Qub3V0CmNvbmZpZ3VyZToyMDc0OiBjaGVja2luZyBmb3IgZysrIHRoYXQgd2lsbCBzdWNjZXNz
ZnVsbGx5IGNvbXBpbGUgdGhpcyBjb2RlCmNvbmZpZ3VyZToyMDk3OiBjaGVja2luZyBmb3IgZysr
IHRoYXQgc3VwcG9ydHMgbmV3IGlubGluaW5nIG1lY2hhbmlzbQpjb25maWd1cmU6MjEzMTogY2hl
Y2tpbmcgZm9yIGNwdSBwcmltaXRpdmVzIGRpcmVjdG9yeQpjb25maWd1cmU6MjE5MDogY2hlY2tp
bmcgZm9yIGNzdGRpbyB0byB1c2UKY29uZmlndXJlOjIyMTQ6IGNoZWNraW5nIGZvciBsaWJpby5o
CmNvbmZpZ3VyZToyMjI0OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVp
bGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9i
aW4vIC1FICBjb25mdGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQKY29uZmlndXJlOjIy
NTk6IGNoZWNraW5nIGZvciBfR19jb25maWcuaApjb25maWd1cmU6MjI2OTogL3RtcC9lZ2NzLWJ1
aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwv
YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3QuYyA+L2Rldi9udWxs
IDI+Y29uZnRlc3Qub3V0CmNvbmZpZ3VyZToyMzQ4OiBjaGVja2luZyBmb3IgdGhyZWFkcyBwYWNr
YWdlIHRvIHVzZQpjb25maWd1cmU6MjU4NTogY2hlY2tpbmcgZm9yIG5hbi5oCmNvbmZpZ3VyZToy
NTk1OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9o
b21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1FICBjb25m
dGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQKY29uZmlndXJlOjI1ODU6IGNoZWNraW5n
IGZvciBpZWVlZnAuaApjb25maWd1cmU6MjU5NTogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1C
L3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93
bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3QuYyA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0
CmNvbmZpZ3VyZToyNTkxOjE5OiBpZWVlZnAuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpj
b25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJlIgojaW5j
bHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPGllZWVmcC5oPgpjb25maWd1cmU6MjU4NTogY2hl
Y2tpbmcgZm9yIGVuZGlhbi5oCmNvbmZpZ3VyZToyNTk1OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn
Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11
bmtub3duLWxpbnV4LWdudS9iaW4vIC1FICBjb25mdGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVz
dC5vdXQKY29uZmlndXJlOjI1ODU6IGNoZWNraW5nIGZvciBzeXMvaXNhX2RlZnMuaApjb25maWd1
cmU6MjU5NTogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8g
LUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAg
Y29uZnRlc3QuYyA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0CmNvbmZpZ3VyZToyNTkxOjI1OiBz
eXMvaXNhX2RlZnMuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpjb25maWd1cmU6IGZhaWxl
ZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMu
aCIKI2luY2x1ZGUgPHN5cy9pc2FfZGVmcy5oPgpjb25maWd1cmU6MjU4NTogY2hlY2tpbmcgZm9y
IG1hY2hpbmUvZW5kaWFuLmgKY29uZmlndXJlOjI1OTU6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj
YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu
a25vd24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0
Lm91dApjb25maWd1cmU6MjU5MToyNzogbWFjaGluZS9lbmRpYW4uaDogTm8gc3VjaCBmaWxlIG9y
IGRpcmVjdG9yeQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29u
ZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPG1hY2hpbmUvZW5kaWFuLmg+
CmNvbmZpZ3VyZToyNTg1OiBjaGVja2luZyBmb3IgbWFjaGluZS9wYXJhbS5oCmNvbmZpZ3VyZToy
NTk1OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9o
b21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1FICBjb25m
dGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQKY29uZmlndXJlOjI1OTE6MjY6IG1hY2hp
bmUvcGFyYW0uaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpjb25maWd1cmU6IGZhaWxlZCBw
cm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIK
I2luY2x1ZGUgPG1hY2hpbmUvcGFyYW0uaD4KY29uZmlndXJlOjI1ODU6IGNoZWNraW5nIGZvciBz
eXMvbWFjaGluZS5oCmNvbmZpZ3VyZToyNTk1OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIv
dG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3du
LWxpbnV4LWdudS9iaW4vIC1FICBjb25mdGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQK
Y29uZmlndXJlOjI1OTE6MjQ6IHN5cy9tYWNoaW5lLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rv
cnkKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI1OTAgImNvbmZpZ3VyZSIK
I2luY2x1ZGUgImNvbmZkZWZzLmgiCiNpbmNsdWRlIDxzeXMvbWFjaGluZS5oPgpjb25maWd1cmU6
MjU4NTogY2hlY2tpbmcgZm9yIGZwLmgKY29uZmlndXJlOjI1OTU6IC90bXAvZWdjcy1idWlsZC9n
Y2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhh
ZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNv
bmZ0ZXN0Lm91dApjb25maWd1cmU6MjU5MToxNTogZnAuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVj
dG9yeQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJl
IgojaW5jbHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPGZwLmg+CmNvbmZpZ3VyZToyNTg1OiBj
aGVja2luZyBmb3IgbG9jYWxlLmgKY29uZmlndXJlOjI1OTU6IC90bXAvZWdjcy1idWlsZC9nY2Mv
eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1
LXVua25vd24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0
ZXN0Lm91dApjb25maWd1cmU6MjU4NTogY2hlY2tpbmcgZm9yIGZsb2F0LmgKY29uZmlndXJlOjI1
OTU6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hv
bWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0
ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dApjb25maWd1cmU6MjU4NTogY2hlY2tpbmcg
Zm9yIGludHR5cGVzLmgKY29uZmlndXJlOjI1OTU6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt
Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v
d24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91
dApjb25maWd1cmU6MjU5MToyMTogaW50dHlwZXMuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9y
eQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJlIgoj
aW5jbHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPGludHR5cGVzLmg+CmNvbmZpZ3VyZToyNjI1
OiBjaGVja2luZyBmb3IgR05VIEMrKyBfX2NvbXBsZXhfXyBzdXBwb3J0CmNvbmZpZ3VyZToyNjQ4
OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL2crKyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUv
YWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yIC1m
dnRhYmxlLXRodW5rcyAtRF9HTlVfU09VUkNFICBjb25mdGVzdC5DIDE+JjUKY29uZmlndXJlOjI2
ODA6IGNoZWNraW5nIGZvciBHTlUgQysrIF9fY29tcGxleF9fIGZsb2F0IHN1cHBvcnQKY29uZmln
dXJlOjI3MjA6IC90bXAvZWdjcy1idWlsZC9nY2MvZysrIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8g
LUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtYyAt
ZyAtTzIgLWZ2dGFibGUtdGh1bmtzIC1EX0dOVV9TT1VSQ0UgIGNvbmZ0ZXN0LkMgMT4mNQpjb25m
aWd1cmU6Mjc1MTogY2hlY2tpbmcgZm9yIF9fYnVpbHRpbl9zaW5mCmNvbmZpZ3VyZToyNzYwOiAv
dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs
YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAgY29u
ZnRlc3QuYyAxPiY1CmNvbmZpZ3VyZToyNzc5OiBjaGVja2luZyBmb3IgX19idWlsdGluX2Nvc2YK
Y29uZmlndXJlOjI3ODg6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls
ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp
bi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmlndXJlOjI4MDc6IGNoZWNraW5nIGZv
ciBfX2J1aWx0aW5fZmFic2YKY29uZmlndXJlOjI4MTY6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj
YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu
a25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmlndXJl
OjI4MzU6IGNoZWNraW5nIGZvciBfX2J1aWx0aW5fc3FydGYKY29uZmlndXJlOjI4NDQ6IC90bXAv
ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0
L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVz
dC5jIDE+JjUKY29uZmlndXJlOjI4NjQ6IGNoZWNraW5nIGZvciBzaW4gaW4gLWxtCmNvbmZpZ3Vy
ZToyODgzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAt
Qi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNv
bmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgLWxtICAgMT4mNQpjb25maWd1cmU6Mjg3Njogd2Fy
bmluZzogY29uZmxpY3RpbmcgdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uIGBzaW4nCmNvbmZp
Z3VyZToyOTEwOiBjaGVja2luZyBmb3IgY29tcGxleC5oCmNvbmZpZ3VyZToyOTIwOiAvdG1wL2Vn
Y3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9s
b2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1FICBjb25mdGVzdC5jID4vZGV2
L251bGwgMj5jb25mdGVzdC5vdXQKY29uZmlndXJlOjI5MTY6MjA6IGNvbXBsZXguaDogTm8gc3Vj
aCBmaWxlIG9yIGRpcmVjdG9yeQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUg
MjkxNSAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPGNvbXBsZXgu
aD4KY29uZmlndXJlOjI5NTI6IGNoZWNraW5nIGZvciBjY29zCmNvbmZpZ3VyZToyOTgwOiAvdG1w
L2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVy
dC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1P
MiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2M2a0k4T08ubzogSW4gZnVuY3Rpb24gYG1h
aW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysr
LXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjY29zJwovdG1wL2Vn
Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy
ZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjY29zJwpjb2xsZWN0MjogbGQgcmV0dXJu
ZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1
NyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBk
ZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hp
Y2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBjY29zKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFz
c2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQg
YW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUg
cmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBw
cm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGNjb3MoKTsKCmludCBtYWluKCkg
ewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2gg
aXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0
aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFu
ZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2Nj
b3MpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2Njb3MpCmNob2tlIG1lCiNlbHNlCmNjb3MoKTsKI2Vu
ZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY2Nvc2YKY29u
ZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n
Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g
LW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY3dCUU15ci5v
OiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxp
bnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2Ug
dG8gYGNjb3NmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGli
c3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjY29zZicK
Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv
Z3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q
IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg
cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY2Nvc2YoKTsgYmVs
b3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFs
IHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2Ug
aW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5k
IHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIg
Y2Nvc2YoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlz
IGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0
aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGlu
ZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwoj
aWYgZGVmaW5lZCAoX19zdHViX2Njb3NmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jY29zZikKY2hv
a2UgbWUKI2Vsc2UKY2Nvc2YoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUy
OiBjaGVja2luZyBmb3IgY2Nvc2gKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2Mv
eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1
LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAg
LWxtIDE+JjUKL3RtcC9jY1lNMzlnNC5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1i
dWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5
NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNjb3NoJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFl
djUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmlu
ZWQgcmVmZXJlbmNlIHRvIGBjY29zaCcKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0
dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIK
I2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBt
YWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGlj
dCB3aXRoIGNoYXIgY2Nvc2goKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92
ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICov
Ci8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv
ZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3Vs
ZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY2Nvc2goKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdO
VSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50
cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0
dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFs
IG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2Njb3NoKSB8fCBkZWZp
bmVkIChfX3N0dWJfX19jY29zaCkKY2hva2UgbWUKI2Vsc2UKY2Nvc2goKTsKI2VuZGlmCgo7IHJl
dHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY2Nvc2hmCmNvbmZpZ3VyZToy
OTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9o
b21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0
ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NnNU01MEcubzogSW4gZnVu
Y3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv
bGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjY29z
aGYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst
djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNjb3NoZicKY29sbGVj
dDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3
YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3Rl
bSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90
eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY2Nvc2hmKCk7IGJlbG93LiAg
Ki8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90
b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBt
aWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVu
IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGNjb3No
ZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9y
IGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVO
T1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0
YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBk
ZWZpbmVkIChfX3N0dWJfY2Nvc2hmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jY29zaGYpCmNob2tl
IG1lCiNlbHNlCmNjb3NoZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6
IGNoZWNraW5nIGZvciBjZXhwCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn
Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11
bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1s
bSAxPiY1Ci90bXAvY2NrOGxaT2oubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVp
bGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0
OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjZXhwJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUt
dW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQg
cmVmZXJlbmNlIHRvIGBjZXhwJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpj
b25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1NyAiY29uZmlndXJlIgojaW5j
bHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3Jv
cyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdp
dGggY2hhciBjZXhwKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlk
ZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBX
ZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBn
Y2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp
bGwgYXBwbHkuICAqLwpjaGFyIGNleHAoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxp
YnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAg
dG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkg
bmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUg
aXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2NleHApIHx8IGRlZmluZWQgKF9f
c3R1Yl9fX2NleHApCmNob2tlIG1lCiNlbHNlCmNleHAoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9
CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY2V4cGYKY29uZmlndXJlOjI5ODA6IC90bXAv
ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0
L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8y
ICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY3o2THVTdC5vOiBJbiBmdW5jdGlvbiBgbWFp
bic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst
djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNleHBmJwovdG1wL2Vn
Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy
ZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjZXhwZicKY29sbGVjdDI6IGxkIHJldHVy
bmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5
NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8g
ZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdo
aWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY2V4cGYoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8
YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9p
ZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRo
ZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50
IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY2V4cGYoKTsKCmludCBtYWlu
KCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hp
Y2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1
bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9f
IGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHVi
X2NleHBmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jZXhwZikKY2hva2UgbWUKI2Vsc2UKY2V4cGYo
KTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY19s
b2cKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1i
dWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251
L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY3Bt
S0RyNi5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtu
b3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZl
cmVuY2UgdG8gYGNfbG9nJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1n
bnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBj
X2xvZycKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWls
ZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZz
LmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxs
eSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY19sb2co
KTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGlu
dGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJl
Y2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0
aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICov
CmNoYXIgY19sb2coKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5l
cyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZh
aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNv
bWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMu
ICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2NfbG9nKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jX2xv
ZykKY2hva2UgbWUKI2Vsc2UKY19sb2coKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3Vy
ZToyOTUyOiBjaGVja2luZyBmb3IgY19sb2dmCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVp
bGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9h
bHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0
ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NkWkNwTkoubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1w
L2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZp
Z3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjX2xvZ2YnCi90bXAvZWdjcy1idWls
ZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6
IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNfbG9nZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEg
ZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNv
bmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5l
IF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNh
biBjb25mbGljdCB3aXRoIGNoYXIgY19sb2dmKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2Vy
dC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4g
ZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0
dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90
b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGNfbG9nZigpOwoKaW50IG1haW4oKSB7
CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBp
dCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rp
b25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5k
IHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfY19s
b2dmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jX2xvZ2YpCmNob2tlIG1lCiNlbHNlCmNfbG9nZigp
OwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6IGNoZWNraW5nIGZvciBjbG9n
MTAKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1i
dWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251
L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY3pY
TE0yai5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtu
b3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZl
cmVuY2UgdG8gYGNsb2cxMCcKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgt
Z251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBg
Y2xvZzEwJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZh
aWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1NyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRl
ZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1
bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBjbG9n
MTAoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2My
IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFy
IGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1
aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4g
ICovCmNoYXIgY2xvZzEwKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRl
ZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5
cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAg
ICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFs
aWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9jbG9nMTApIHx8IGRlZmluZWQgKF9fc3R1Yl9f
X2Nsb2cxMCkKY2hva2UgbWUKI2Vsc2UKY2xvZzEwKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpj
b25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9yIGNsb2cxMGYKY29uZmlndXJlOjI5ODA6IC90bXAv
ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0
L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8y
ICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jYzFPWmcxVy5vOiBJbiBmdW5jdGlvbiBgbWFp
bic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst
djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNsb2cxMGYnCi90bXAv
ZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmln
dXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNsb2cxMGYnCmNvbGxlY3QyOiBsZCBy
ZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGlu
ZSAyOTU3ICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVy
IHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAg
ICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGNsb2cxMGYoKTsgYmVsb3cuICAqLwojaW5j
bHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0
byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1h
dGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFy
Z3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY2xvZzEwZigpOwoK
aW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0
aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4g
IFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5n
IHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVk
IChfX3N0dWJfY2xvZzEwZikgfHwgZGVmaW5lZCAoX19zdHViX19fY2xvZzEwZikKY2hva2UgbWUK
I2Vsc2UKY2xvZzEwZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6IGNo
ZWNraW5nIGZvciBjcG93CmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg
LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu
b3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAx
PiY1Ci90bXAvY2NRbVJaQXEubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQv
YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1
bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjcG93JwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5r
bm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVm
ZXJlbmNlIHRvIGBjcG93Jwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25m
aWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1NyAiY29uZmlndXJlIgojaW5jbHVk
ZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBh
bmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGgg
Y2hhciBjcG93KCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBh
bnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1
c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2My
CiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwg
YXBwbHkuICAqLwpjaGFyIGNwb3coKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJh
cnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8g
YWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFt
ZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMg
YW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2Nwb3cpIHx8IGRlZmluZWQgKF9fc3R1
Yl9fX2Nwb3cpCmNob2tlIG1lCiNlbHNlCmNwb3coKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNv
bmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3Bvd2YKY29uZmlndXJlOjI5ODA6IC90bXAvZWdj
cy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xv
Y2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAg
Y29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY2lYTFdVSi5vOiBJbiBmdW5jdGlvbiBgbWFpbic6
Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMv
Y29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNwb3dmJwovdG1wL2VnY3Mt
YnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToy
OTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjcG93ZicKY29sbGVjdDI6IGxkIHJldHVybmVk
IDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcg
ImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm
aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNo
IGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3Bvd2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNz
ZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBh
biBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy
ZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHBy
b3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY3Bvd2YoKTsKCmludCBtYWluKCkg
ewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2gg
aXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0
aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFu
ZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2Nw
b3dmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jcG93ZikKY2hva2UgbWUKI2Vsc2UKY3Bvd2YoKTsK
I2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3Npbgpj
b25maWd1cmU6Mjk4MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxk
L2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmlu
LyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjRUp1WFpt
Lm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24t
bGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJlZmVyZW5j
ZSB0byBgY3NpbicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xp
YnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY3NpbicK
Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv
Z3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q
IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg
cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3NpbigpOyBiZWxv
dy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwg
cHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBp
bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQg
dGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBj
c2luKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBm
b3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGgg
RU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcg
c3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lm
IGRlZmluZWQgKF9fc3R1Yl9jc2luKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jc2luKQpjaG9rZSBt
ZQojZWxzZQpjc2luKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6Mjk1MjogY2hl
Y2tpbmcgZm9yIGNzaW5mCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg
LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu
b3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAx
PiY1Ci90bXAvY2NNaVViSVoubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQv
YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1
bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjc2luZicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVu
a25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJl
ZmVyZW5jZSB0byBgY3NpbmYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNv
bmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAyOTU3ICJjb25maWd1cmUiCiNpbmNs
dWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9z
IGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0
aCBjaGFyIGNzaW5mKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlk
ZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBX
ZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBn
Y2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp
bGwgYXBwbHkuICAqLwpjaGFyIGNzaW5mKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBs
aWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAg
IHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5
IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1l
IGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9jc2luZikgfHwgZGVmaW5lZCAo
X19zdHViX19fY3NpbmYpCmNob2tlIG1lCiNlbHNlCmNzaW5mKCk7CiNlbmRpZgoKOyByZXR1cm4g
MDsgfQpjb25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9yIGNzaW5oCmNvbmZpZ3VyZToyOTgwOiAv
dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs
YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1n
IC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NjMUpkamYubzogSW4gZnVuY3Rpb24g
YG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3Rk
YysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjc2luaCcKL3Rt
cC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25m
aWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY3NpbmgnCmNvbGxlY3QyOiBsZCBy
ZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGlu
ZSAyOTU3ICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVy
IHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAg
ICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGNzaW5oKCk7IGJlbG93LiAgKi8KI2luY2x1
ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8g
YXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRj
aCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1
bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGNzaW5oKCk7CgppbnQg
bWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25z
IHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29t
ZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0
aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9f
c3R1Yl9jc2luaCkgfHwgZGVmaW5lZCAoX19zdHViX19fY3NpbmgpCmNob2tlIG1lCiNlbHNlCmNz
aW5oKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9y
IGNzaW5oZgpjb25maWd1cmU6Mjk4MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9l
Z2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51
eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1w
L2NjbnQ1YUNILm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1
LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVk
IHJlZmVyZW5jZSB0byBgY3NpbmhmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1s
aW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNl
IHRvIGBjc2luaGYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3Vy
ZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAyOTU3ICJjb25maWd1cmUiCiNpbmNsdWRlICJj
b25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBo
b3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFy
IGNzaW5oZigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55
IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNl
IGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgog
ICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFw
cGx5LiAgKi8KY2hhciBjc2luaGYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJh
cnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8g
YWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFt
ZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMg
YW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2NzaW5oZikgfHwgZGVmaW5lZCAoX19z
dHViX19fY3NpbmhmKQpjaG9rZSBtZQojZWxzZQpjc2luaGYoKTsKI2VuZGlmCgo7IHJldHVybiAw
OyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3NxcnQKY29uZmlndXJlOjI5ODA6IC90
bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxi
ZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcg
LU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY1hJT3Yzai5vOiBJbiBmdW5jdGlvbiBg
bWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRj
KystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNzcXJ0JwovdG1w
L2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZp
Z3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjc3FydCcKY29sbGVjdDI6IGxkIHJl
dHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5l
IDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIg
dG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAg
IHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3NxcnQoKTsgYmVsb3cuICAqLwojaW5jbHVk
ZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBh
dm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNo
IHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3Vt
ZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY3NxcnQoKTsKCmludCBt
YWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMg
d2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21l
IGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRo
IF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19z
dHViX2NzcXJ0KSB8fCBkZWZpbmVkIChfX3N0dWJfX19jc3FydCkKY2hva2UgbWUKI2Vsc2UKY3Nx
cnQoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3Ig
Y3NxcnRmCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2Vn
Y3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4
LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAv
Y2NYOXU5WVcubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUt
dW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQg
cmVmZXJlbmNlIHRvIGBjc3FydGYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxp
bnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2Ug
dG8gYGNzcXJ0ZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJl
OiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNv
bmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhv
cGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIg
Y3NxcnRmKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkg
Z2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2Ug
Y2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAg
ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw
bHkuICAqLwpjaGFyIGNzcXJ0ZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFy
eSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBh
bHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1l
ZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBh
biBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfY3NxcnRmKSB8fCBkZWZpbmVkIChfX3N0
dWJfX19jc3FydGYpCmNob2tlIG1lCiNlbHNlCmNzcXJ0ZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7
IH0KY29uZmlndXJlOjI5NTI6IGNoZWNraW5nIGZvciBjdGFuCmNvbmZpZ3VyZToyOTgwOiAvdG1w
L2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVy
dC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1P
MiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2MzSHBYdXoubzogSW4gZnVuY3Rpb24gYG1h
aW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysr
LXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdGFuJwovdG1wL2Vn
Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy
ZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdGFuJwpjb2xsZWN0MjogbGQgcmV0dXJu
ZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1
NyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBk
ZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hp
Y2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBjdGFuKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFz
c2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQg
YW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUg
cmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBw
cm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGN0YW4oKTsKCmludCBtYWluKCkg
ewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2gg
aXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0
aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFu
ZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2N0
YW4pIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2N0YW4pCmNob2tlIG1lCiNlbHNlCmN0YW4oKTsKI2Vu
ZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3RhbmYKY29u
ZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n
Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g
LW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY2hnMjA0Yi5v
OiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxp
bnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2Ug
dG8gYGN0YW5mJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGli
c3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdGFuZicK
Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv
Z3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q
IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg
cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3RhbmYoKTsgYmVs
b3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFs
IHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2Ug
aW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5k
IHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIg
Y3RhbmYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlz
IGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0
aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGlu
ZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwoj
aWYgZGVmaW5lZCAoX19zdHViX2N0YW5mKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jdGFuZikKY2hv
a2UgbWUKI2Vsc2UKY3RhbmYoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUy
OiBjaGVja2luZyBmb3IgY3RhbmgKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2Mv
eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1
LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAg
LWxtIDE+JjUKL3RtcC9jY2VOOVlPbC5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1i
dWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5
NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGN0YW5oJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFl
djUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmlu
ZWQgcmVmZXJlbmNlIHRvIGBjdGFuaCcKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0
dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIK
I2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBt
YWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGlj
dCB3aXRoIGNoYXIgY3RhbmgoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92
ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICov
Ci8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv
ZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3Vs
ZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY3RhbmgoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdO
VSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50
cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0
dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFs
IG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2N0YW5oKSB8fCBkZWZp
bmVkIChfX3N0dWJfX19jdGFuaCkKY2hva2UgbWUKI2Vsc2UKY3RhbmgoKTsKI2VuZGlmCgo7IHJl
dHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3RhbmhmCmNvbmZpZ3VyZToy
OTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9o
b21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0
ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NrbDRNa1kubzogSW4gZnVu
Y3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv
bGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdGFu
aGYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst
djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGN0YW5oZicKY29sbGVj
dDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3
YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3Rl
bSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90
eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3RhbmhmKCk7IGJlbG93LiAg
Ki8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90
b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBt
aWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVu
IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGN0YW5o
ZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9y
IGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVO
T1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0
YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBk
ZWZpbmVkIChfX3N0dWJfY3RhbmhmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jdGFuaGYpCmNob2tl
IG1lCiNlbHNlCmN0YW5oZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6
IGNoZWNraW5nIGZvciBjYXJnCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn
Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11
bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1s
bSAxPiY1Ci90bXAvY2N3UzZOZUIubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVp
bGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0
OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjYXJnJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUt
dW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQg
cmVmZXJlbmNlIHRvIGBjYXJnJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpj
b25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1NyAiY29uZmlndXJlIgojaW5j
bHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3Jv
cyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdp
dGggY2hhciBjYXJnKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlk
ZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBX
ZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBn
Y2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp
bGwgYXBwbHkuICAqLwpjaGFyIGNhcmcoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxp
YnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAg
dG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkg
bmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUg
aXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2NhcmcpIHx8IGRlZmluZWQgKF9f
c3R1Yl9fX2NhcmcpCmNob2tlIG1lCiNlbHNlCmNhcmcoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9
CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY2FyZ2YKY29uZmlndXJlOjI5ODA6IC90bXAv
ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0
L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8y
ICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY21jUUpZZC5vOiBJbiBmdW5jdGlvbiBgbWFp
bic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst
djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNhcmdmJwovdG1wL2Vn
Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy
ZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjYXJnZicKY29sbGVjdDI6IGxkIHJldHVy
bmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5
NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8g
ZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdo
aWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY2FyZ2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8
YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9p
ZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRo
ZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50
IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY2FyZ2YoKTsKCmludCBtYWlu
KCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hp
Y2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1
bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9f
IGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHVi
X2NhcmdmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jYXJnZikKY2hva2UgbWUKI2Vsc2UKY2FyZ2Yo
KTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgbmFu
CmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVp
bGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9i
aW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NzbVFZ
MVEubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93
bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJl
bmNlIHRvIGBuYW4nCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9s
aWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG5hbicK
Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv
Z3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q
IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg
cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgbmFuKCk7IGJlbG93
LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBw
cm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGlu
dCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0
aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIG5h
bigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9y
IGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVO
T1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0
YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBk
ZWZpbmVkIChfX3N0dWJfbmFuKSB8fCBkZWZpbmVkIChfX3N0dWJfX19uYW4pCmNob2tlIG1lCiNl
bHNlCm5hbigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6IGNoZWNraW5n
IGZvciBoeXBvdApjb25maWd1cmU6Mjk4MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3Rt
cC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1s
aW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpj
b25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9yIGh5cG90Zgpjb25maWd1cmU6Mjk4MDogL3RtcC9l
Z2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQv
bG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIg
ICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9yIGF0YW4y
Zgpjb25maWd1cmU6Mjk4MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1
aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv
YmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6
Mjk1MjogY2hlY2tpbmcgZm9yIGV4cGYKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9n
Y2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhh
ZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3Qu
YyAgLWxtIDE+JjUKY29uZmlndXJlOjI5NTI6IGNoZWNraW5nIGZvciBjb3B5c2lnbmYKY29uZmln
dXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2Mv
IC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8g
Y29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKY29uZmlndXJlOjMwMDk6IGNo
ZWNraW5nIGZvciBjb3B5c2lnbmwKY29uZmlndXJlOjMwMzc6IC90bXAvZWdjcy1idWlsZC9nY2Mv
eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1
LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAg
LWxtIDE+JjUKL3RtcC9jY09RbFpPai5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1i
dWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMw
MzE6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNvcHlzaWdubCcKL3RtcC9lZ2NzLWJ1aWxkL2Fs
cGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzAzMTogdW5k
ZWZpbmVkIHJlZmVyZW5jZSB0byBgY29weXNpZ25sJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBl
eGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzAxNCAiY29u
ZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUg
X19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2Fu
IGNvbmZsaWN0IHdpdGggY2hhciBjb3B5c2lnbmwoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNz
ZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBh
biBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy
ZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHBy
b3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY29weXNpZ25sKCk7CgppbnQgbWFp
bigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdo
aWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBm
dW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBf
XyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1
Yl9jb3B5c2lnbmwpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2NvcHlzaWdubCkKY2hva2UgbWUKI2Vs
c2UKY29weXNpZ25sKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzEyMjogY2hl
Y2tpbmcgZm9yIG1vZGYKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt
Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v
d24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+
JjUKY29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBpc25hbgpjb25maWd1cmU6MzE1MDogL3Rt
cC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJl
cnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAt
TzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIGlz
bmFuZgpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2Nz
LWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1n
bnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1
cmU6MzEyMjogY2hlY2tpbmcgZm9yIGlzbmFubApjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1
aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwv
YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25m
dGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIGlzaW5mCmNvbmZp
Z3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2Nj
LyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1v
IGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBj
aGVja2luZyBmb3IgaXNpbmZmCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn
Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11
bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1s
bSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgaXNpbmZsCmNvbmZpZ3VyZTozMTUw
OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21l
L2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0
IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBm
b3IgY29weXNpZ24KY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90
bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24t
bGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUK
Y29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBjb3B5c2lnbmwKY29uZmlndXJlOjMxMjI6IGNo
ZWNraW5nIGZvciBjb3NmCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg
LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu
b3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAx
PiY1CmNvbmZpZ3VyZTozMTM0OiB3YXJuaW5nOiBjb25mbGljdGluZyB0eXBlcyBmb3IgYnVpbHQt
aW4gZnVuY3Rpb24gYGNvc2YnCmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgY29zaGYKY29u
ZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n
Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g
LW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKY29uZmlndXJlOjMxMjI6
IGNoZWNraW5nIGZvciBsb2dmCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn
Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11
bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1s
bSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgbG9nMTBmCmNvbmZpZ3VyZTozMTUw
OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21l
L2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0
IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBm
b3IgcG93Zgpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9l
Z2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51
eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25m
aWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIHNpbmYKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1i
dWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2Fs
L2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29u
ZnRlc3QuYyAgLWxtIDE+JjUKY29uZmlndXJlOjMxMzQ6IHdhcm5pbmc6IGNvbmZsaWN0aW5nIHR5
cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbiBgc2luZicKY29uZmlndXJlOjMxMjI6IGNoZWNraW5n
IGZvciBzaW5oZgpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3Rt
cC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1s
aW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpj
b25maWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIHNxcnRmCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2Vn
Y3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9s
b2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAg
IGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTM0OiB3YXJuaW5nOiBjb25mbGljdGlu
ZyB0eXBlcyBmb3IgYnVpbHQtaW4gZnVuY3Rpb24gYHNxcnRmJwpjb25maWd1cmU6MzEyMjogY2hl
Y2tpbmcgZm9yIHRhbmYKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt
Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v
d24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+
JjUKY29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciB0YW5oZgpjb25maWd1cmU6MzE1MDogL3Rt
cC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJl
cnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAt
TzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIHN0
cnRvZgpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2Nz
LWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1n
bnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1
cmU6MzEyMjogY2hlY2tpbmcgZm9yIHN0cnRvbGQKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1i
dWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2Fs
L2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29u
ZnRlc3QuYyAgLWxtIDE+JjUKY29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBmYWJzZgpjb25m
aWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2dj
Yy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAt
byBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6MzEzNDog
d2FybmluZzogY29uZmxpY3RpbmcgdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uIGBmYWJzZicK
Y29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBzaW5jb3MKY29uZmlndXJlOjMxNTA6IC90bXAv
ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0
L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8y
ICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY2FxUUNCMS5vOiBJbiBmdW5jdGlvbiBgbWFp
bic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst
djMvY29uZmlndXJlOjMxNDQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNpbmNvcycKL3RtcC9l
Z2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1
cmU6MzE0NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2luY29zJwpjb2xsZWN0MjogbGQgcmV0
dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUg
MzEyNyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0
byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAg
d2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBzaW5jb3MoKTsgYmVsb3cuICAqLwojaW5jbHVk
ZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBh
dm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNo
IHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3Vt
ZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgc2luY29zKCk7CgppbnQg
bWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25z
IHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29t
ZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0
aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9f
c3R1Yl9zaW5jb3MpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX3NpbmNvcykKY2hva2UgbWUKI2Vsc2UK
c2luY29zKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcg
Zm9yIHNpbmNvc2YKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90
bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24t
bGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUK
L3RtcC9jY1NyRkpNRS5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBo
YWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMxNDQ6IHVuZGVm
aW5lZCByZWZlcmVuY2UgdG8gYHNpbmNvc2YnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtu
b3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMxNDQ6IHVuZGVmaW5lZCByZWZl
cmVuY2UgdG8gYHNpbmNvc2YnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNv
bmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTI3ICJjb25maWd1cmUiCiNpbmNs
dWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9z
IGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0
aCBjaGFyIHNpbmNvc2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJy
aWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8q
IFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBh
IGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBz
dGlsbCBhcHBseS4gICovCmNoYXIgc2luY29zZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05V
IEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRz
CiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1
YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwg
bmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfc2luY29zZikgfHwgZGVm
aW5lZCAoX19zdHViX19fc2luY29zZikKY2hva2UgbWUKI2Vsc2UKc2luY29zZigpOwojZW5kaWYK
CjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBzaW5jb3NsCmNvbmZp
Z3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2Nj
LyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1v
IGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NzajdKbGgubzog
SW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51
eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMTQ0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRv
IGBzaW5jb3NsJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGli
c3RkYysrLXYzL2NvbmZpZ3VyZTozMTQ0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzaW5jb3Ns
Jwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBw
cm9ncmFtIHdhczoKI2xpbmUgMzEyNyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIK
LyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZl
dyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBzaW5jb3NsKCk7
IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRl
cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNh
dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGlu
IGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpj
aGFyIHNpbmNvc2woKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5l
cyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZh
aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNv
bWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMu
ICAqLwojaWYgZGVmaW5lZCAoX19zdHViX3NpbmNvc2wpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX3Np
bmNvc2wpCmNob2tlIG1lCiNlbHNlCnNpbmNvc2woKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNv
bmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgZmluaXRlCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2Vn
Y3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9s
b2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAg
IGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgZmluaXRl
CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgZnFmaW5pdGUKY29uZmlndXJlOjMxNTA6IC90
bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxi
ZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcg
LU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY0hiTUd6bS5vOiBJbiBmdW5jdGlvbiBg
bWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRj
KystdjMvY29uZmlndXJlOjMxNDQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGZxZmluaXRlJwov
dG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2Nv
bmZpZ3VyZTozMTQ0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBmcWZpbml0ZScKY29sbGVjdDI6
IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6
CiNsaW5lIDMxMjcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBo
ZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBl
cywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgZnFmaW5pdGUoKTsgYmVsb3cuICAq
LwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3Rv
dHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1p
Z2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4g
aXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgZnFmaW5p
dGUoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZv
ciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBF
Tk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBz
dGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYg
ZGVmaW5lZCAoX19zdHViX2ZxZmluaXRlKSB8fCBkZWZpbmVkIChfX3N0dWJfX19mcWZpbml0ZSkK
Y2hva2UgbWUKI2Vsc2UKZnFmaW5pdGUoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3Vy
ZTozMTIyOiBjaGVja2luZyBmb3IgZnBjbGFzcwpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1
aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwv
YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25m
dGVzdC5jICAtbG0gMT4mNQovdG1wL2NjNnNKQ09TLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3Rt
cC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25m
aWd1cmU6MzE0NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZnBjbGFzcycKL3RtcC9lZ2NzLWJ1
aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzE0
NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZnBjbGFzcycKY29sbGVjdDI6IGxkIHJldHVybmVk
IDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxMjcg
ImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm
aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNo
IGNhbiBjb25mbGljdCB3aXRoIGNoYXIgZnBjbGFzcygpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxh
c3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lk
IGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhl
IHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg
cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBmcGNsYXNzKCk7CgppbnQgbWFp
bigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdo
aWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBm
dW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBf
XyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1
Yl9mcGNsYXNzKSB8fCBkZWZpbmVkIChfX3N0dWJfX19mcGNsYXNzKQpjaG9rZSBtZQojZWxzZQpm
cGNsYXNzKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcg
Zm9yIHFmcGNsYXNzCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIv
dG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3du
LWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1
Ci90bXAvY2NvYlE1ZXYubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxw
aGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMTQ0OiB1bmRl
ZmluZWQgcmVmZXJlbmNlIHRvIGBxZnBjbGFzcycKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVu
a25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzE0NDogdW5kZWZpbmVkIHJl
ZmVyZW5jZSB0byBgcWZwY2xhc3MnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVz
CmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTI3ICJjb25maWd1cmUiCiNp
bmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFj
cm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qg
d2l0aCBjaGFyIHFmcGNsYXNzKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBP
dmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAq
LwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg
b2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291
bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIHFmcGNsYXNzKCk7CgppbnQgbWFpbigpIHsKCi8qIFRo
ZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxl
bWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJl
IGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5v
cm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9xZnBjbGFzcykg
fHwgZGVmaW5lZCAoX19zdHViX19fcWZwY2xhc3MpCmNob2tlIG1lCiNlbHNlCnFmcGNsYXNzKCk7
CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9tb2Rm
CmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVp
bGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9i
aW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NFS2Ft
RzcubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93
bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJl
bmNlIHRvIGBfbW9kZicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251
L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX21v
ZGYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVk
IHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5o
IgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkg
ZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9tb2RmKCk7
IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRl
cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNh
dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGlu
IGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpj
aGFyIF9tb2RmKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMg
dGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWls
IHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21l
dGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAg
Ki8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fbW9kZikgfHwgZGVmaW5lZCAoX19zdHViX19fX21vZGYp
CmNob2tlIG1lCiNlbHNlCl9tb2RmKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6
MzE4NTogY2hlY2tpbmcgZm9yIF9pc25hbgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxk
L2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxw
aGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVz
dC5jICAtbG0gMT4mNQovdG1wL2NjOE1zQllKLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9l
Z2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1
cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX2lzbmFuJwovdG1wL2VnY3MtYnVpbGQv
YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1
bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfaXNuYW4nCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4
aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25m
aWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBf
X3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4g
Y29uZmxpY3Qgd2l0aCBjaGFyIF9pc25hbigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQu
aD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVy
cm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVy
biB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90
eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfaXNuYW4oKTsKCmludCBtYWluKCkgewoK
LyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQg
aW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9u
cyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0
aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19pc25h
bikgfHwgZGVmaW5lZCAoX19zdHViX19fX2lzbmFuKQpjaG9rZSBtZQojZWxzZQpfaXNuYW4oKTsK
I2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX2lzbmFu
Zgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1
aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv
YmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjS1Ix
eHRtLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25v
d24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVy
ZW5jZSB0byBgX2lzbmFuZicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgt
Z251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBg
X2lzbmFuZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBm
YWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZk
ZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVm
dWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX2lz
bmFuZigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdj
YzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNo
YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAg
YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5
LiAgKi8KY2hhciBfaXNuYW5mKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5
IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFs
d2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVk
CiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFu
IGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9faXNuYW5mKSB8fCBkZWZpbmVkIChfX3N0
dWJfX19faXNuYW5mKQpjaG9rZSBtZQojZWxzZQpfaXNuYW5mKCk7CiNlbmRpZgoKOyByZXR1cm4g
MDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9pc25hbmwKY29uZmlndXJlOjMyMTM6
IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUv
YWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3Qg
LWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY1Ywa2phdy5vOiBJbiBmdW5jdGlv
biBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJz
dGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9pc25hbmwn
Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMv
Y29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9pc25hbmwnCmNvbGxlY3Qy
OiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2Fz
OgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0g
aGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlw
ZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9pc25hbmwoKTsgYmVsb3cuICAq
LwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3Rv
dHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1p
Z2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4g
aXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX2lzbmFu
bCgpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9y
IGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVO
T1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0
YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBk
ZWZpbmVkIChfX3N0dWJfX2lzbmFubCkgfHwgZGVmaW5lZCAoX19zdHViX19fX2lzbmFubCkKY2hv
a2UgbWUKI2Vsc2UKX2lzbmFubCgpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMx
ODU6IGNoZWNraW5nIGZvciBfaXNpbmYKY29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9n
Y2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhh
ZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3Qu
YyAgLWxtIDE+JjUKL3RtcC9jYzFNT2RHYS5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdj
cy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJl
OjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9pc2luZicKL3RtcC9lZ2NzLWJ1aWxkL2Fs
cGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5k
ZWZpbmVkIHJlZmVyZW5jZSB0byBgX2lzaW5mJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0
IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmln
dXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19z
dHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNv
bmZsaWN0IHdpdGggY2hhciBfaXNpbmYoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+
Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv
ci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4g
dHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlw
ZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX2lzaW5mKCk7CgppbnQgbWFpbigpIHsKCi8q
IFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGlt
cGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMg
YXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhl
IG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9faXNpbmYp
IHx8IGRlZmluZWQgKF9fc3R1Yl9fX19pc2luZikKY2hva2UgbWUKI2Vsc2UKX2lzaW5mKCk7CiNl
bmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9pc2luZmYK
Y29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls
ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp
bi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY1Rsem1h
UC5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3du
LWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVu
Y2UgdG8gYF9pc2luZmYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdu
dS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9p
c2luZmYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFp
bGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVm
cy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVs
bHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9pc2lu
ZmYoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2My
IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFy
IGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1
aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4g
ICovCmNoYXIgX2lzaW5mZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBk
ZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdh
eXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAog
ICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBh
bGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfX2lzaW5mZikgfHwgZGVmaW5lZCAoX19zdHVi
X19fX2lzaW5mZikKY2hva2UgbWUKI2Vsc2UKX2lzaW5mZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7
IH0KY29uZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfaXNpbmZsCmNvbmZpZ3VyZTozMjEzOiAv
dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs
YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1n
IC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NaRHRZQXIubzogSW4gZnVuY3Rpb24g
YG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3Rk
YysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfaXNpbmZsJwov
dG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2Nv
bmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfaXNpbmZsJwpjb2xsZWN0Mjog
bGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoK
I2xpbmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhl
YWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVz
LAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfaXNpbmZsKCk7IGJlbG93LiAgKi8K
I2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5
cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdo
dCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0
cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9pc2luZmwo
KTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBm
dW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9T
WVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFy
dGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVm
aW5lZCAoX19zdHViX19pc2luZmwpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19pc2luZmwpCmNob2tl
IG1lCiNlbHNlCl9pc2luZmwoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTozMTg1
OiBjaGVja2luZyBmb3IgX2NvcHlzaWduCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQv
Z2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBo
YWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0
LmMgIC1sbSAxPiY1Ci90bXAvY2NsMjhnVXcubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2Vn
Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy
ZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfY29weXNpZ24nCi90bXAvZWdjcy1idWls
ZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6
IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9jb3B5c2lnbicKY29sbGVjdDI6IGxkIHJldHVybmVk
IDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAg
ImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm
aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNo
IGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX2NvcHlzaWduKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUg
PGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZv
aWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0
aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVu
dCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9jb3B5c2lnbigpOwoKaW50
IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9u
cyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNv
bWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdp
dGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChf
X3N0dWJfX2NvcHlzaWduKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fY29weXNpZ24pCmNob2tlIG1l
CiNlbHNlCl9jb3B5c2lnbigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxODU6
IGNoZWNraW5nIGZvciBfY29weXNpZ25sCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQv
Z2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBo
YWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0
LmMgIC1sbSAxPiY1Ci90bXAvY2NXUTNITEcubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2Vn
Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy
ZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfY29weXNpZ25sJwovdG1wL2VnY3MtYnVp
bGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3
OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfY29weXNpZ25sJwpjb2xsZWN0MjogbGQgcmV0dXJu
ZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5
MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBk
ZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hp
Y2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfY29weXNpZ25sKCk7IGJlbG93LiAgKi8KI2luY2x1
ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8g
YXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRj
aCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1
bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9jb3B5c2lnbmwoKTsK
CmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5j
dGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMu
ICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGlu
ZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5l
ZCAoX19zdHViX19jb3B5c2lnbmwpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19jb3B5c2lnbmwpCmNo
b2tlIG1lCiNlbHNlCl9jb3B5c2lnbmwoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3Vy
ZTozMTg1OiBjaGVja2luZyBmb3IgX2Nvc2YKY29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWls
ZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2Fs
cGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRl
c3QuYyAgLWxtIDE+JjUKL3RtcC9jY0lhNU1Fai5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAv
ZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmln
dXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9jb3NmJwovdG1wL2VnY3MtYnVpbGQv
YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1
bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfY29zZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhp
dCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZp
Z3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9f
c3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBj
b25mbGljdCB3aXRoIGNoYXIgX2Nvc2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+
Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv
ci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4g
dHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlw
ZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX2Nvc2YoKTsKCmludCBtYWluKCkgewoKLyog
VGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1w
bGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBh
cmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUg
bm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19jb3NmKSB8
fCBkZWZpbmVkIChfX3N0dWJfX19fY29zZikKY2hva2UgbWUKI2Vsc2UKX2Nvc2YoKTsKI2VuZGlm
Cgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX2Nvc2hmCmNvbmZp
Z3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2Nj
LyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1v
IGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NJelpsU1Yubzog
SW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51
eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRv
IGBfY29zaGYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJz
dGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9jb3NoZicK
Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv
Z3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q
IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg
cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX2Nvc2hmKCk7IGJl
bG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5h
bCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNl
IGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFu
ZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFy
IF9jb3NoZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRo
aXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3
aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRo
aW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICov
CiNpZiBkZWZpbmVkIChfX3N0dWJfX2Nvc2hmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fY29zaGYp
CmNob2tlIG1lCiNlbHNlCl9jb3NoZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJl
OjMxODU6IGNoZWNraW5nIGZvciBfbG9nZgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxk
L2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxw
aGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVz
dC5jICAtbG0gMT4mNQovdG1wL2NjUVM0SE55Lm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9l
Z2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1
cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX2xvZ2YnCi90bXAvZWdjcy1idWlsZC9h
bHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVu
ZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9sb2dmJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0
IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmln
dXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19z
dHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNv
bmZsaWN0IHdpdGggY2hhciBfbG9nZigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4K
LyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9y
LiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0
eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBl
IHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfbG9nZigpOwoKaW50IG1haW4oKSB7CgovKiBU
aGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBs
ZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFy
ZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBu
b3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfX2xvZ2YpIHx8
IGRlZmluZWQgKF9fc3R1Yl9fX19sb2dmKQpjaG9rZSBtZQojZWxzZQpfbG9nZigpOwojZW5kaWYK
CjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfbG9nMTBmCmNvbmZp
Z3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2Nj
LyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1v
IGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NTYTl4amQubzog
SW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51
eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRv
IGBfbG9nMTBmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGli
c3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfbG9nMTBm
Jwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBw
cm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIK
LyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZl
dyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfbG9nMTBmKCk7
IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRl
cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNh
dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGlu
IGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpj
aGFyIF9sb2cxMGYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5l
cyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZh
aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNv
bWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMu
ICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19sb2cxMGYpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19s
b2cxMGYpCmNob2tlIG1lCiNlbHNlCl9sb2cxMGYoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNv
bmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX3Bvd2YKY29uZmlndXJlOjMyMTM6IC90bXAvZWdj
cy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xv
Y2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAg
Y29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY05wOGxkcC5vOiBJbiBmdW5jdGlvbiBgbWFpbic6
Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMv
Y29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9wb3dmJwovdG1wL2VnY3Mt
YnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToz
MjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfcG93ZicKY29sbGVjdDI6IGxkIHJldHVybmVk
IDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAg
ImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm
aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNo
IGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX3Bvd2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNz
ZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBh
biBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy
ZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHBy
b3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX3Bvd2YoKTsKCmludCBtYWluKCkg
ewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2gg
aXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0
aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFu
ZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19w
b3dmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fcG93ZikKY2hva2UgbWUKI2Vsc2UKX3Bvd2YoKTsK
I2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX3NpbmYK
Y29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls
ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp
bi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jYzUxdW8x
MS5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3du
LWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVu
Y2UgdG8gYF9zaW5mJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv
bGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfc2lu
ZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQg
cHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgi
Ci8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBm
ZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX3NpbmYoKTsg
YmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVy
bmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1
c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4g
YW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNo
YXIgX3NpbmYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0
aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwg
d2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0
aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAq
LwojaWYgZGVmaW5lZCAoX19zdHViX19zaW5mKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fc2luZikK
Y2hva2UgbWUKI2Vsc2UKX3NpbmYoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToz
MTg1OiBjaGVja2luZyBmb3IgX3NpbmhmCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQv
Z2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBo
YWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0
LmMgIC1sbSAxPiY1Ci90bXAvY2NKUGYyeUUubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2Vn
Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy
ZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfc2luaGYnCi90bXAvZWdjcy1idWlsZC9h
bHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVu
ZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9zaW5oZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhp
dCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZp
Z3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9f
c3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBj
b25mbGljdCB3aXRoIGNoYXIgX3NpbmhmKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5o
PgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJy
b3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJu
IHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5
cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9zaW5oZigpOwoKaW50IG1haW4oKSB7Cgov
KiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBp
bXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25z
IGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRo
ZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfX3Npbmhm
KSB8fCBkZWZpbmVkIChfX3N0dWJfX19fc2luaGYpCmNob2tlIG1lCiNlbHNlCl9zaW5oZigpOwoj
ZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfc3FydGYK
Y29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls
ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp
bi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY0haZVo0
Zy5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3du
LWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVu
Y2UgdG8gYF9zcXJ0ZicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251
L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3Nx
cnRmJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxl
ZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMu
aCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5
IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfc3FydGYo
KTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGlu
dGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJl
Y2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0
aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICov
CmNoYXIgX3NxcnRmKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmlu
ZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBm
YWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBz
b21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFz
LiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fc3FydGYpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19z
cXJ0ZikKY2hva2UgbWUKI2Vsc2UKX3NxcnRmKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25m
aWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF90YW5mCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3Mt
YnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2Nh
bC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNv
bmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NselcwVlQubzogSW4gZnVuY3Rpb24gYG1haW4nOgov
dG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2Nv
bmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfdGFuZicKL3RtcC9lZ2NzLWJ1
aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIw
NzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3RhbmYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAx
IGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJj
b25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmlu
ZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBj
YW4gY29uZmxpY3Qgd2l0aCBjaGFyIF90YW5mKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2Vy
dC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4g
ZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0
dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90
b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF90YW5mKCk7CgppbnQgbWFpbigpIHsK
Ci8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0
IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlv
bnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQg
dGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fdGFu
ZikgfHwgZGVmaW5lZCAoX19zdHViX19fX3RhbmYpCmNob2tlIG1lCiNlbHNlCl90YW5mKCk7CiNl
bmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF90YW5oZgpj
b25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxk
L2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmlu
LyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjTjg0bmZ3
Lm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24t
bGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5j
ZSB0byBgX3RhbmhmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv
bGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfdGFu
aGYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVk
IHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5o
IgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkg
ZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF90YW5oZigp
OyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50
ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVj
YXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRp
biBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8K
Y2hhciBfdGFuaGYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5l
cyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZh
aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNv
bWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMu
ICAqLwojaWYgZGVmaW5lZCAoX19zdHViX190YW5oZikgfHwgZGVmaW5lZCAoX19zdHViX19fX3Rh
bmhmKQpjaG9rZSBtZQojZWxzZQpfdGFuaGYoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZp
Z3VyZTozMTg1OiBjaGVja2luZyBmb3IgX3N0cnRvZgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2Nz
LWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9j
YWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBj
b25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjOFlxdWlJLm86IEluIGZ1bmN0aW9uIGBtYWluJzoK
L3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9j
b25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3N0cnRvZicKL3RtcC9lZ2Nz
LWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6
MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3N0cnRvZicKY29sbGVjdDI6IGxkIHJldHVy
bmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMx
OTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8g
ZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdo
aWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX3N0cnRvZigpOyBiZWxvdy4gICovCiNpbmNsdWRl
IDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2
b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2gg
dGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1l
bnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfc3RydG9mKCk7CgppbnQg
bWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25z
IHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29t
ZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0
aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9f
c3R1Yl9fc3RydG9mKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fc3RydG9mKQpjaG9rZSBtZQojZWxz
ZQpfc3RydG9mKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tp
bmcgZm9yIF9zdHJ0b2xkCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg
LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu
b3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAx
PiY1Ci90bXAvY2M2SW5xRmsubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQv
YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1
bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfc3RydG9sZCcKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1
LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVk
IHJlZmVyZW5jZSB0byBgX3N0cnRvbGQnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3Rh
dHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUi
CiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIg
bWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxp
Y3Qgd2l0aCBjaGFyIF9zdHJ0b2xkKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgov
KiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3Iu
ICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5
cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUg
d291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9zdHJ0b2xkKCk7CgppbnQgbWFpbigpIHsKCi8q
IFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGlt
cGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMg
YXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhl
IG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fc3RydG9s
ZCkgfHwgZGVmaW5lZCAoX19zdHViX19fX3N0cnRvbGQpCmNob2tlIG1lCiNlbHNlCl9zdHJ0b2xk
KCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9m
YWJzZgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2Nz
LWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1n
bnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2Nj
Y1BuYWtYLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVu
a25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJl
ZmVyZW5jZSB0byBgX2ZhYnNmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51
eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRv
IGBfZmFic2YnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTog
ZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25m
ZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3Bl
ZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9m
YWJzZigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdj
YzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNo
YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAg
YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5
LiAgKi8KY2hhciBfZmFic2YoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkg
ZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3
YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQK
ICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4g
YWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19mYWJzZikgfHwgZGVmaW5lZCAoX19zdHVi
X19fX2ZhYnNmKQpjaG9rZSBtZQojZWxzZQpfZmFic2YoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9
CmNvbmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX3NpbmNvcwpjb25maWd1cmU6MzIxMzogL3Rt
cC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJl
cnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAt
TzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2Nja1VrcXp6Lm86IEluIGZ1bmN0aW9uIGBt
YWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMr
Ky12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3NpbmNvcycKL3Rt
cC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25m
aWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3NpbmNvcycKY29sbGVjdDI6IGxk
IHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNs
aW5lIDMxOTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFk
ZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywK
ICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX3NpbmNvcygpOyBiZWxvdy4gICovCiNp
bmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBl
IHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQg
bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMg
YXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfc2luY29zKCk7
CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVu
Y3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lT
LiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRp
bmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmlu
ZWQgKF9fc3R1Yl9fc2luY29zKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fc2luY29zKQpjaG9rZSBt
ZQojZWxzZQpfc2luY29zKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTog
Y2hlY2tpbmcgZm9yIF9zaW5jb3NmCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2Nj
L3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2
NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMg
IC1sbSAxPiY1Ci90bXAvY2NtYU5aaWMubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3Mt
YnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToz
MjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfc2luY29zZicKL3RtcC9lZ2NzLWJ1aWxkL2Fs
cGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5k
ZWZpbmVkIHJlZmVyZW5jZSB0byBgX3NpbmNvc2YnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4
aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25m
aWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBf
X3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4g
Y29uZmxpY3Qgd2l0aCBjaGFyIF9zaW5jb3NmKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2Vy
dC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4g
ZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0
dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90
b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9zaW5jb3NmKCk7CgppbnQgbWFpbigp
IHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNo
IGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5j
dGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBh
bmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9f
c2luY29zZikgfHwgZGVmaW5lZCAoX19zdHViX19fX3NpbmNvc2YpCmNob2tlIG1lCiNlbHNlCl9z
aW5jb3NmKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcg
Zm9yIF9zaW5jb3NsCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIv
dG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3du
LWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1
Ci90bXAvY2NmOE8xVGwubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxw
aGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRl
ZmluZWQgcmVmZXJlbmNlIHRvIGBfc2luY29zbCcKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVu
a25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJl
ZmVyZW5jZSB0byBgX3NpbmNvc2wnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVz
CmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNp
bmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFj
cm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qg
d2l0aCBjaGFyIF9zaW5jb3NsKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBP
dmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAq
LwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg
b2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291
bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9zaW5jb3NsKCk7CgppbnQgbWFpbigpIHsKCi8qIFRo
ZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxl
bWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJl
IGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5v
cm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fc2luY29zbCkg
fHwgZGVmaW5lZCAoX19zdHViX19fX3NpbmNvc2wpCmNob2tlIG1lCiNlbHNlCl9zaW5jb3NsKCk7
CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9maW5p
dGUKY29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1i
dWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251
L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY2RZ
b1pLWS5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtu
b3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZl
cmVuY2UgdG8gYF9maW5pdGUnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4
LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8g
YF9maW5pdGUnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTog
ZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25m
ZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3Bl
ZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9m
aW5pdGUoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBn
Y2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBj
aGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAg
IGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBs
eS4gICovCmNoYXIgX2Zpbml0ZSgpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFy
eSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBh
bHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1l
ZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBh
biBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfX2Zpbml0ZSkgfHwgZGVmaW5lZCAoX19z
dHViX19fX2Zpbml0ZSkKY2hva2UgbWUKI2Vsc2UKX2Zpbml0ZSgpOwojZW5kaWYKCjsgcmV0dXJu
IDA7IH0KY29uZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfZmluaXRlZgpjb25maWd1cmU6MzIx
MzogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9t
ZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVz
dCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjOWVKRXBCLm86IEluIGZ1bmN0
aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xp
YnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX2Zpbml0
ZWYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst
djMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9maW5pdGVmJwpjb2xs
ZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFt
IHdhczoKI2xpbmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lz
dGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90
b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfZmluaXRlZigpOyBiZWxv
dy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwg
cHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBp
bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQg
dGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBf
ZmluaXRlZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRo
aXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3
aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRo
aW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICov
CiNpZiBkZWZpbmVkIChfX3N0dWJfX2Zpbml0ZWYpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19maW5p
dGVmKQpjaG9rZSBtZQojZWxzZQpfZmluaXRlZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29u
ZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfcWZpbml0ZQpjb25maWd1cmU6MzIxMzogL3RtcC9l
Z2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQv
bG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIg
ICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjUFJ1TEhkLm86IEluIGZ1bmN0aW9uIGBtYWlu
JzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12
My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3FmaW5pdGUnCi90bXAv
ZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmln
dXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9xZmluaXRlJwpjb2xsZWN0MjogbGQg
cmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xp
bmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRl
ciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAog
ICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfcWZpbml0ZSgpOyBiZWxvdy4gICovCiNp
bmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBl
IHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQg
bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMg
YXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfcWZpbml0ZSgp
OwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1
bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZ
Uy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0
aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZp
bmVkIChfX3N0dWJfX3FmaW5pdGUpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19xZmluaXRlKQpjaG9r
ZSBtZQojZWxzZQpfcWZpbml0ZSgpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMx
ODU6IGNoZWNraW5nIGZvciBfZnBjbGFzcwpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxk
L2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxw
aGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVz
dC5jICAtbG0gMT4mNQovdG1wL2NjWjVweXZTLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9l
Z2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1
cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX2ZwY2xhc3MnCi90bXAvZWdjcy1idWls
ZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6
IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9mcGNsYXNzJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQg
MSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAi
Y29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZp
bmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2gg
Y2FuIGNvbmZsaWN0IHdpdGggY2hhciBfZnBjbGFzcygpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxh
c3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lk
IGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhl
IHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg
cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfZnBjbGFzcygpOwoKaW50IG1h
aW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3
aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUg
ZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGgg
X18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0
dWJfX2ZwY2xhc3MpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19mcGNsYXNzKQpjaG9rZSBtZQojZWxz
ZQpfZnBjbGFzcygpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxODU6IGNoZWNr
aW5nIGZvciBfcWZwY2xhc3MKY29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj
YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu
a25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxt
IDE+JjUKL3RtcC9jY2J4SGN6dy5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWls
ZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6
IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9xZnBjbGFzcycKL3RtcC9lZ2NzLWJ1aWxkL2FscGhh
ZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZp
bmVkIHJlZmVyZW5jZSB0byBgX3FmcGNsYXNzJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0
IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmln
dXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19z
dHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNv
bmZsaWN0IHdpdGggY2hhciBfcWZwY2xhc3MoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0
Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBl
cnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1
cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3Rv
dHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX3FmcGNsYXNzKCk7CgppbnQgbWFpbigp
IHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNo
IGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5j
dGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBh
bmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9f
cWZwY2xhc3MpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19xZnBjbGFzcykKY2hva2UgbWUKI2Vsc2UK
X3FmcGNsYXNzKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzI0MzogY2hlY2tp
bmcgZm9yIHdjaGFyLmgKY29uZmlndXJlOjMyNTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt
Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v
d24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91
dApjb25maWd1cmU6MzI3MTogY2hlY2tpbmcgZm9yIG5hdGl2ZSBtYnN0YXRlX3QKY29uZmlndXJl
OjMyODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1C
L2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcg
LU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmlndXJlOjMyOTk6IGNoZWNraW5nIGZvciBXQ0hBUl9N
SU4gYW5kIFdDSEFSX01BWApjb25maWd1cmU6MzMwODogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2Nj
IC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5r
bm93bi1saW51eC1nbnUvYmluLyAtYyAtZyAtTzIgIGNvbmZ0ZXN0LmMgMT4mNQpjb25maWd1cmU6
MzMyOTogY2hlY2tpbmcgZm9yIFdFT0YKY29uZmlndXJlOjMzNDA6IC90bXAvZWdjcy1idWlsZC9n
Y2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhh
ZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29u
ZmlndXJlOjMzNTU6IGNoZWNraW5nIGZvciB3Y3NsZW4KY29uZmlndXJlOjMzODM6IC90bXAvZWdj
cy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xv
Y2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAg
Y29uZnRlc3QuYyAgMT4mNQpjb25maWd1cmU6MzM1NTogY2hlY2tpbmcgZm9yIHdtZW1jaHIKY29u
ZmlndXJlOjMzODM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n
Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g
LW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgMT4mNQpjb25maWd1cmU6MzM1NTogY2hl
Y2tpbmcgZm9yIHdtZW1jbXAKY29uZmlndXJlOjMzODM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj
YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu
a25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgMT4m
NQpjb25maWd1cmU6MzM1NTogY2hlY2tpbmcgZm9yIHdtZW1jcHkKY29uZmlndXJlOjMzODM6IC90
bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxi
ZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcg
LU8yICAgY29uZnRlc3QuYyAgMT4mNQpjb25maWd1cmU6MzM1NTogY2hlY2tpbmcgZm9yIHdtZW1t
b3ZlCmNvbmZpZ3VyZTozMzgzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3Mt
YnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdu
dS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIDE+JjUKY29uZmlndXJlOjMz
NTU6IGNoZWNraW5nIGZvciB3bWVtc2V0CmNvbmZpZ3VyZTozMzgzOiAvdG1wL2VnY3MtYnVpbGQv
Z2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBo
YWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0
LmMgIDE+JjUKY29uZmlndXJlOjM0MTI6IGNoZWNraW5nIGZvciB3aWRlIGNoYXJhY3RlciBzdXBw
b3J0CmNvbmZpZ3VyZTozNDQwOiBjaGVja2luZyBmb3IgY3R5cGUuaApjb25maWd1cmU6MzQ1MDog
L3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9h
bGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3Qu
YyA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0CmNvbmZpZ3VyZTozNDcxOiBjaGVja2luZyBmb3Ig
Z251LWxpbnV4IDxjdHlwZT4KY29uZmlndXJlOjM0ODQ6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj
YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu
a25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmlndXJl
OjM2OTA6IGNoZWNraW5nIGZvciB1bmlzdGQuaApjb25maWd1cmU6MzcwMDogL3RtcC9lZ2NzLWJ1
aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwv
YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3QuYyA+L2Rldi9udWxs
IDI+Y29uZnRlc3Qub3V0CmNvbmZpZ3VyZTozNzI5OiBjaGVja2luZyBmb3IgZ2V0cGFnZXNpemUK
Y29uZmlndXJlOjM3NTc6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls
ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp
bi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgMT4mNQpjb25maWd1cmU6Mzc4Mjog
Y2hlY2tpbmcgZm9yIHdvcmtpbmcgbW1hcApjb25maWd1cmU6MzkzMDogL3RtcC9lZ2NzLWJ1aWxk
L2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxw
aGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVz
dC5jICAxPiY1CmNvbmZpZ3VyZTogSW4gZnVuY3Rpb24gYG1haW4nOgpjb25maWd1cmU6MzkwMDog
d2FybmluZzogY2FzdCBmcm9tIHBvaW50ZXIgdG8gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZQpj
b25maWd1cmU6Mzk5MzogY2hlY2tpbmcgZm9yIExDX01FU1NBR0VTCmNvbmZpZ3VyZTo0MDA1OiAv
dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs
YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1n
IC1PMiAgIGNvbmZ0ZXN0LmMgIDE+JjUK