public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c++/8841: Internal compiler error building ICU2.2 with gcc 3.2 on CygWin
@ 2002-12-06  5:26 bradley
  0 siblings, 0 replies; only message in thread
From: bradley @ 2002-12-06  5:26 UTC (permalink / raw)
  To: gcc-gnats; +Cc: britten


>Number:         8841
>Category:       c++
>Synopsis:       Internal compiler error building ICU2.2 with gcc 3.2 on CygWin
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 06 05:26:03 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Patrick Bradley
>Release:        gcc version 3.2 20020927 (prerelease)
>Organization:
>Environment:
cygwin on windows NT4.0 (build 1381: Service pack 6)
Intel processor ~1800 Mhz
Using the "out of the box" gcc configuration from cygwin ie:
Configured with: /netrel/src/gcc-3.2-3/configure --enable-languages=c,c++,f77,java --enable-libgcj --enable-threads=posix --with-system-zlib --enable-nls --without-included-gettext --enable-interprete
r --disable-sjlj-exceptions --disable-version-specific-runtime-libs --enable-shared --build=i686-pc-linux --host=i686-pc-cygwin --target=i686-pc-cygwin --enable-haifa --prefix=/usr --exec-prefix=/usr
--sysconfdir=/etc --libdir=/usr/lib --includedir=/nonexistent/include --libexecdir=/usr/sbin
Thread model: posix
>Description:
I'm trying to build ICU 2.2 on CygWin using the gcc 3.2 compiler. The build process is going well up to the following file where gcc complains about an internal error.

make[0]: Making `all' in `i18n'
make[1]: Entering directory `/cygdrive/c/third_party_cygwin/icu/source/i18n'
c++ -D_REENTRANT -I. -I../common -I../common -D_REENTRANT -DHAVE_CONFIG_H -DU_I18N_IMPLEMENTATION  -c -DPIC  -o ucol_elm.o ucol_elm.cpp
../common/unicode/normlzr.h: In static member function `static
   UNormalizationCheckResult icu_2_2::Normalizer::quickCheck(const
   icu_2_2::UnicodeString&, UNormalizationMode, UErrorCode&)':
../common/unicode/normlzr.h:1103: Internal compiler error in
   rest_of_compilation, at toplev.c:3491
Please submit a full bug report,
[...]
>How-To-Repeat:
See attachement
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="ucol_elm.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ucol_elm.ii"

IyAxICJ1Y29sX2VsbS5jcHAiDQojIDEgIjxidWlsdC1pbj4iDQojIDEgIjxjb21tYW5kIGxpbmU+
Ig0KIyAxICJ1Y29sX2VsbS5jcHAiDQojIDI2ICJ1Y29sX2VsbS5jcHAiDQojIDEgIi4uL2NvbW1v
bi91bmljb2RlL3VjaGFyLmgiIDENCiMgMjYgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQoj
IDEgIi4uL2NvbW1vbi91bmljb2RlL3V0eXBlcy5oIiAxDQojIDM2ICIuLi9jb21tb24vdW5pY29k
ZS91dHlwZXMuaCINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvdW1hY2hpbmUuaCIgMQ0KIyA1MyAi
Li4vY29tbW9uL3VuaWNvZGUvdW1hY2hpbmUuaCINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvcGxh
dGZvcm0uaCIgMQ0KIyAxNDkgIi4uL2NvbW1vbi91bmljb2RlL3BsYXRmb3JtLmgiDQojIDEgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzDQojIDIwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL19hbnNpLmgiIDEgMw0KIyAxNSAiL3Vzci9pbmNsdWRl
L19hbnNpLmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL25ld2xpYi5oIiAxIDMNCiMgMTYgIi91c3Iv
aW5jbHVkZS9fYW5zaS5oIiAyIDMNCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jb25maWcuaCIgMSAz
DQoNCg0KDQojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2llZWVmcC5oIiAxIDMNCiMgNSAiL3Vz
ci9pbmNsdWRlL3N5cy9jb25maWcuaCIgMiAzDQojIDE3ICIvdXNyL2luY2x1ZGUvX2Fuc2kuaCIg
MiAzDQojIDIxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMw0KDQoNCg0KdHlwZWRlZiBz
aG9ydCBpbnQgX19pbnQxNl90Ow0KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZf
dDsNCg0KDQoNCg0KDQp0eXBlZGVmIGludCBfX2ludDMyX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VpbnQzMl90Ow0KDQoNCg0KDQoNCg0KX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9u
ZyBfX2ludDY0X3Q7DQpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9f
dWludDY0X3Q7DQoNCg0KDQoNCg0KDQojIDEgIi91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmgiIDEg
Mw0KIyAxMiAiL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCIgMw0KdHlwZWRlZiBsb25nIF9vZmZf
dDsNCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgX29mZjY0X3Q7DQoNCg0KdHlwZWRl
ZiBpbnQgX3NzaXplX3Q7DQoNCg0KDQoNCg0KIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMt
Y3lnd2luLzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMNCiMgMzIzICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtY3lnd2luLzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzDQp0eXBlZGVmIHVuc2lnbmVk
IGludCB3aW50X3Q7DQojIDIzICIvdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIiAyIDMNCg0KDQp0
eXBlZGVmIHN0cnVjdA0Kew0KICBpbnQgX19jb3VudDsNCiAgdW5pb24NCiAgew0KICAgIHdpbnRf
dCBfX3djaDsNCiAgICB1bnNpZ25lZCBjaGFyIF9fd2NoYls0XTsNCiAgfSBfX3ZhbHVlOw0KfSBf
bWJzdGF0ZV90Ow0KDQp0eXBlZGVmIGludCBfZmxvY2tfdDsNCiMgNDggIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzDQojIDU5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMNCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
DQojIDE0OSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjIvaW5jbHVkZS9zdGRk
ZWYuaCIgMw0KdHlwZWRlZiBpbnQgcHRyZGlmZl90Ow0KIyAyMDMgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1jeWd3aW4vMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDMNCnR5cGVkZWYgdW5zaWduZWQg
aW50IHNpemVfdDsNCiMgNjAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzDQojIDEgIi91
c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDEgMw0KIyAxMCAiL3Vzci9pbmNsdWRlL21hY2hp
bmUvdHlwZXMuaCIgMw0KdHlwZWRlZiBsb25nIGludCBfX29mZl90Ow0KdHlwZWRlZiBpbnQgX19w
aWRfdDsNCg0KX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19sb2ZmX3Q7DQoj
IDYxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMw0KIyA4MiAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAzDQp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9jaGFyOw0KdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCB1X3Nob3J0Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ7DQp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgdV9sb25nOw0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hv
cnQ7DQp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Ow0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGNsb2NrX3Q7DQoNCg0KDQoNCnR5cGVkZWYgbG9uZyB0aW1lX3Q7DQoNCg0KDQoNCnN0cnVj
dCB0aW1lc3BlYyB7DQogIHRpbWVfdCB0dl9zZWM7DQogIGxvbmcgdHZfbnNlYzsNCn07DQoNCnN0
cnVjdCBpdGltZXJzcGVjIHsNCiAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOw0KICBzdHJ1
Y3QgdGltZXNwZWMgaXRfdmFsdWU7DQp9Ow0KDQoNCnR5cGVkZWYgbG9uZyBkYWRkcl90Ow0KdHlw
ZWRlZiBjaGFyICogY2FkZHJfdDsNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW5vX3Q7DQoj
IDEzMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
dm1fb2Zmc2V0X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdm1fc2l6ZV90Ow0KDQoNCg0KdHlw
ZWRlZiBjaGFyIGludDhfdDsNCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2ludDhfdDsNCnR5cGVk
ZWYgc2hvcnQgaW50MTZfdDsNCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9pbnQxNl90Ow0KdHlw
ZWRlZiBpbnQgaW50MzJfdDsNCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdDsNCnR5cGVk
ZWYgbG9uZyBsb25nIGludDY0X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1X2ludDY0
X3Q7DQp0eXBlZGVmIGludDMyX3QgcmVnaXN0ZXJfdDsNCiMgMTY5ICIvdXNyL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDMNCnR5cGVkZWYgaW50IHBpZF90Ow0KdHlwZWRlZiBsb25nIGtleV90Ow0KdHlw
ZWRlZiBfc3NpemVfdCBzc2l6ZV90Ow0KDQoNCnR5cGVkZWYgY2hhciAqIGFkZHJfdDsNCnR5cGVk
ZWYgaW50IG1vZGVfdDsNCiMgMTg4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMNCnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgbmxpbmtfdDsNCiMgMjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMNCnR5cGVkZWYgbG9uZyBmZF9tYXNrOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfdHlwZXNfZmRfc2V0IHsNCiAgICAgICAgZmRfbWFzayBmZHNfYml0c1soKCg2NCkrKCgoc2l6
ZW9mIChmZF9tYXNrKSAqIDgpKS0xKSkvKChzaXplb2YgKGZkX21hc2spICogOCkpKV07DQp9IF90
eXBlc19mZF9zZXQ7DQojIDI0NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgY2xvY2tpZF90Ow0KDQoNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
dGltZXJfdDsNCg0KDQoNCg0KdHlwZWRlZiBsb25nIHVzZWNvbmRzX3Q7DQoNCg0KIyAxICIvdXNy
L2luY2x1ZGUvc3lzL2ZlYXR1cmVzLmgiIDEgMw0KIyAyNSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0
dXJlcy5oIiAzDQpleHRlcm4gIkMiIHsNCiMgOTMgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXMu
aCIgMw0KfQ0KIyAyNjAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzDQojIDM2NCAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQojIDEgIi91c3IvaW5jbHVkZS9jeWd3aW4vdHlwZXMu
aCIgMSAzDQojIDEzICIvdXNyL2luY2x1ZGUvY3lnd2luL3R5cGVzLmgiIDMNCmV4dGVybiAiQyIN
CnsNCg0KDQoNCg0KDQojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMw0KIyAy
MSAiL3Vzci9pbmNsdWRlL2N5Z3dpbi90eXBlcy5oIiAyIDMNCg0KdHlwZWRlZiBzdHJ1Y3QgdGlt
ZXNwZWMgdGltZXNwZWNfdCwgdGltZXN0cnVjX3Q7DQoNCnR5cGVkZWYgbG9uZyBfX29mZjMyX3Q7
DQp0eXBlZGVmIGxvbmcgbG9uZyBfX29mZjY0X3Q7DQoNCg0KDQp0eXBlZGVmIF9fb2ZmMzJfdCBv
ZmZfdDsNCg0KDQp0eXBlZGVmIHNob3J0IF9fZGV2MTZfdDsNCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBfX2RldjMyX3Q7DQoNCg0KDQp0eXBlZGVmIF9fZGV2MTZfdCBkZXZfdDsNCg0KDQp0eXBlZGVm
IGxvbmcgYmxrc2l6ZV90Ow0KDQp0eXBlZGVmIGxvbmcgX19ibGtjbnQzMl90Ow0KdHlwZWRlZiBs
b25nIGxvbmcgX19ibGtjbnQ2NF90Ow0KDQoNCg0KdHlwZWRlZiBfX2Jsa2NudDMyX3QgYmxrY250
X3Q7DQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3VpZDE2X3Q7DQp0eXBlZGVmIHVuc2ln
bmVkIHNob3J0IF9fZ2lkMTZfdDsNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VpZDMyX3Q7DQp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19naWQzMl90Ow0KDQoNCg0KDQp0eXBlZGVmIF9fdWlkMTZf
dCB1aWRfdDsNCnR5cGVkZWYgX19naWQxNl90IGdpZF90Ow0KDQoNCg0KDQp0eXBlZGVmIHZvaWQg
KnB0aHJlYWRfdDsNCnR5cGVkZWYgdm9pZCAqcHRocmVhZF9tdXRleF90Ow0KDQp0eXBlZGVmIHZv
aWQgKnB0aHJlYWRfa2V5X3Q7DQp0eXBlZGVmIHZvaWQgKnB0aHJlYWRfYXR0cl90Ow0KdHlwZWRl
ZiB2b2lkICpwdGhyZWFkX211dGV4YXR0cl90Ow0KdHlwZWRlZiB2b2lkICpwdGhyZWFkX2NvbmRh
dHRyX3Q7DQp0eXBlZGVmIHZvaWQgKnB0aHJlYWRfY29uZF90Ow0KDQoNCnR5cGVkZWYgc3RydWN0
DQp7DQogIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsNCiAgaW50IHN0YXRlOw0KfQ0KcHRocmVhZF9v
bmNlX3Q7DQp0eXBlZGVmIHZvaWQgKnB0aHJlYWRfcndsb2NrX3Q7DQp0eXBlZGVmIHZvaWQgKnB0
aHJlYWRfcndsb2NrYXR0cl90Ow0KIyAxMDQgIi91c3IvaW5jbHVkZS9jeWd3aW4vdHlwZXMuaCIg
Mw0KfQ0KIyAzNjUgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzDQojIDE1MCAiLi4vY29t
bW9uL3VuaWNvZGUvcGxhdGZvcm0uaCIgMg0KIyAxNjAgIi4uL2NvbW1vbi91bmljb2RlL3BsYXRm
b3JtLmgiDQp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsNCiMgMTgzICIuLi9jb21tb24vdW5pY29kZS9w
bGF0Zm9ybS5oIg0KICAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnQzMl90Ow0KIyAxOTMg
Ii4uL2NvbW1vbi91bmljb2RlL3BsYXRmb3JtLmgiDQogICAgdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGxvbmcgdWludDY0X3Q7DQojIDU0ICIuLi9jb21tb24vdW5pY29kZS91bWFjaGluZS5oIiAyDQoj
IDE2NyAiLi4vY29tbW9uL3VuaWNvZGUvdW1hY2hpbmUuaCINCnR5cGVkZWYgaW50OF90IFVCb29s
Ow0KIyAxOTEgIi4uL2NvbW1vbi91bmljb2RlL3VtYWNoaW5lLmgiDQojIDEgIi4uL2NvbW1vbi91
bmljb2RlL3VyZW5hbWUuaCIgMQ0KIyAxOTIgIi4uL2NvbW1vbi91bmljb2RlL3VtYWNoaW5lLmgi
IDINCiMgMzcgIi4uL2NvbW1vbi91bmljb2RlL3V0eXBlcy5oIiAyDQojIDEgIi4uL2NvbW1vbi91
bmljb2RlL3V0Zi5oIiAxDQojIDk1ICIuLi9jb21tb24vdW5pY29kZS91dGYuaCINCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQoj
IDk2ICIuLi9jb21tb24vdW5pY29kZS91dGYuaCIgMg0KIyAxNTcgIi4uL2NvbW1vbi91bmljb2Rl
L3V0Zi5oIg0KICAgIHR5cGVkZWYgdWludDMyX3QgVUNoYXIzMjsNCiMgMTY3ICIuLi9jb21tb24v
dW5pY29kZS91dGYuaCINCnR5cGVkZWYgaW50MzJfdCBVVGV4dE9mZnNldDsNCiMgMjUwICIuLi9j
b21tb24vdW5pY29kZS91dGYuaCINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvdXRmOC5oIiAxDQoj
IDQ2ICIuLi9jb21tb24vdW5pY29kZS91dGY4LmgiDQpleHRlcm4gIkMiIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIGNvbnN0IHVpbnQ4X3QNCnV0ZjhfY291bnRUcmFpbEJ5dGVzXzJfMlsyNTZd
Ow0KIyA2MCAiLi4vY29tbW9uL3VuaWNvZGUvdXRmOC5oIg0KZXh0ZXJuICJDIiBVQ2hhcjMyDQp1
dGY4X25leHRDaGFyU2FmZUJvZHlfMl8yKGNvbnN0IHVpbnQ4X3QgKnMsIGludDMyX3QgKnBpLCBp
bnQzMl90IGxlbmd0aCwgVUNoYXIzMiBjLCBVQm9vbCBzdHJpY3QsIFVCb29sICpwSXNFcnJvcik7
DQoNCmV4dGVybiAiQyIgaW50MzJfdA0KdXRmOF9hcHBlbmRDaGFyU2FmZUJvZHlfMl8yKHVpbnQ4
X3QgKnMsIGludDMyX3QgaSwgaW50MzJfdCBsZW5ndGgsIFVDaGFyMzIgYyk7DQoNCmV4dGVybiAi
QyIgVUNoYXIzMg0KdXRmOF9wcmV2Q2hhclNhZmVCb2R5XzJfMihjb25zdCB1aW50OF90ICpzLCBp
bnQzMl90IHN0YXJ0LCBpbnQzMl90ICpwaSwgVUNoYXIzMiBjLCBVQm9vbCBzdHJpY3QpOw0KDQpl
eHRlcm4gIkMiIGludDMyX3QNCnV0ZjhfYmFjazFTYWZlQm9keV8yXzIoY29uc3QgdWludDhfdCAq
cywgaW50MzJfdCBzdGFydCwgaW50MzJfdCBpKTsNCiMgMjUxICIuLi9jb21tb24vdW5pY29kZS91
dGYuaCIgMg0KIyAxICIuLi9jb21tb24vdW5pY29kZS91dGYxNi5oIiAxDQojIDI1MiAiLi4vY29t
bW9uL3VuaWNvZGUvdXRmLmgiIDINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvdXRmMzIuaCIgMQ0K
IyAyNTMgIi4uL2NvbW1vbi91bmljb2RlL3V0Zi5oIiAyDQojIDI4MyAiLi4vY29tbW9uL3VuaWNv
ZGUvdXRmLmgiDQogICAgICAgIHR5cGVkZWYgd2NoYXJfdCBVQ2hhcjsNCiMgMzggIi4uL2NvbW1v
bi91bmljb2RlL3V0eXBlcy5oIiAyDQojIDEgIi4uL2NvbW1vbi91bmljb2RlL3V2ZXJzaW9uLmgi
IDENCiMgNzYgIi4uL2NvbW1vbi91bmljb2RlL3V2ZXJzaW9uLmgiDQp0eXBlZGVmIHVpbnQ4X3Qg
VVZlcnNpb25JbmZvWzRdOw0KDQoNCg0KbmFtZXNwYWNlIGljdV8yXzIgeyB9DQpuYW1lc3BhY2Ug
aWN1ID0gaWN1XzJfMjsNCnVzaW5nIG5hbWVzcGFjZSBpY3VfMl8yOw0KIyAxMDAgIi4uL2NvbW1v
bi91bmljb2RlL3V2ZXJzaW9uLmgiDQpleHRlcm4gIkMiIHZvaWQNCnVfdmVyc2lvbkZyb21TdHJp
bmdfMl8yKFVWZXJzaW9uSW5mbyB2ZXJzaW9uQXJyYXksIGNvbnN0IGNoYXIgKnZlcnNpb25TdHJp
bmcpOw0KIyAxMTQgIi4uL2NvbW1vbi91bmljb2RlL3V2ZXJzaW9uLmgiDQpleHRlcm4gIkMiIHZv
aWQNCnVfdmVyc2lvblRvU3RyaW5nXzJfMihVVmVyc2lvbkluZm8gdmVyc2lvbkFycmF5LCBjaGFy
ICp2ZXJzaW9uU3RyaW5nKTsNCiMgMTI1ICIuLi9jb21tb24vdW5pY29kZS91dmVyc2lvbi5oIg0K
ZXh0ZXJuICJDIiB2b2lkDQp1X2dldFZlcnNpb25fMl8yKFVWZXJzaW9uSW5mbyB2ZXJzaW9uQXJy
YXkpOw0KIyAzOSAiLi4vY29tbW9uL3VuaWNvZGUvdXR5cGVzLmgiIDINCiMgMTkzICIuLi9jb21t
b24vdW5pY29kZS91dHlwZXMuaCINCnR5cGVkZWYgZG91YmxlIFVEYXRlOw0KIyAyNDggIi4uL2Nv
bW1vbi91bmljb2RlL3V0eXBlcy5oIg0KdHlwZWRlZiB2b2lkKiBVQ2xhc3NJRDsNCiMgMzUwICIu
Li9jb21tb24vdW5pY29kZS91dHlwZXMuaCINCnR5cGVkZWYgZW51bSBVRXJyb3JDb2RlIHsNCg0K
DQoNCg0KDQogICAgVV9VU0lOR19GQUxMQkFDS19XQVJOSU5HID0gLTEyOCwNCg0KICAgIFVfVVNJ
TkdfRkFMTEJBQ0tfRVJST1IgPSAtMTI4LA0KDQogICAgVV9FUlJPUl9XQVJOSU5HX1NUQVJUID0g
LTEyOCwNCg0KDQogICAgVV9FUlJPUl9JTkZPX1NUQVJUID0gVV9FUlJPUl9XQVJOSU5HX1NUQVJU
LA0KDQogICAgVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgPSAtMTI3LA0KDQogICAgVV9VU0lOR19E
RUZBVUxUX0VSUk9SID0gLTEyNywNCg0KICAgIFVfU0FGRUNMT05FX0FMTE9DQVRFRF9XQVJOSU5H
ID0gLTEyNiwNCg0KICAgIFVfU0FGRUNMT05FX0FMTE9DQVRFRF9FUlJPUiA9IC0xMjYsDQoNCiAg
ICBVX1NUQVRFX09MRF9XQVJOSU5HID0gLTEyNSwNCg0KICAgIFVfU1RSSU5HX05PVF9URVJNSU5B
VEVEX1dBUk5JTkcgPSAtMTI0LA0KDQogICAgVV9TT1JUX0tFWV9UT09fU0hPUlRfV0FSTklORyA9
IC0xMjMsDQoNCiAgICBVX0FNQklHVU9VU19BTElBU19XQVJOSU5HID0gLTEyMiwNCg0KICAgIFVf
RVJST1JfV0FSTklOR19MSU1JVCwNCg0KDQogICAgVV9FUlJPUl9JTkZPX0xJTUlUID0gVV9FUlJP
Ul9XQVJOSU5HX0xJTUlULA0KDQogICAgVV9aRVJPX0VSUk9SID0gMCwNCg0KICAgIFVfSUxMRUdB
TF9BUkdVTUVOVF9FUlJPUiA9IDEsDQogICAgVV9NSVNTSU5HX1JFU09VUkNFX0VSUk9SID0gMiwN
CiAgICBVX0lOVkFMSURfRk9STUFUX0VSUk9SID0gMywNCiAgICBVX0ZJTEVfQUNDRVNTX0VSUk9S
ID0gNCwNCiAgICBVX0lOVEVSTkFMX1BST0dSQU1fRVJST1IgPSA1LA0KICAgIFVfTUVTU0FHRV9Q
QVJTRV9FUlJPUiA9IDYsDQogICAgVV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUiA9IDcsDQogICAg
VV9JTkRFWF9PVVRPRkJPVU5EU19FUlJPUiA9IDgsDQogICAgVV9QQVJTRV9FUlJPUiA9IDksDQog
ICAgVV9JTlZBTElEX0NIQVJfRk9VTkQgPSAxMCwNCiAgICBVX1RSVU5DQVRFRF9DSEFSX0ZPVU5E
ID0gMTEsDQogICAgVV9JTExFR0FMX0NIQVJfRk9VTkQgPSAxMiwNCiAgICBVX0lOVkFMSURfVEFC
TEVfRk9STUFUID0gMTMsDQogICAgVV9JTlZBTElEX1RBQkxFX0ZJTEUgPSAxNCwNCiAgICBVX0JV
RkZFUl9PVkVSRkxPV19FUlJPUiA9IDE1LA0KICAgIFVfVU5TVVBQT1JURURfRVJST1IgPSAxNiwN
CiAgICBVX1JFU09VUkNFX1RZUEVfTUlTTUFUQ0ggPSAxNywNCiAgICBVX0lMTEVHQUxfRVNDQVBF
X1NFUVVFTkNFID0gMTgsDQogICAgVV9VTlNVUFBPUlRFRF9FU0NBUEVfU0VRVUVOQ0UgPSAxOSwN
CiAgICBVX05PX1NQQUNFX0FWQUlMQUJMRSA9IDIwLA0KICAgIFVfQ0VfTk9UX0ZPVU5EX0VSUk9S
ID0gMjEsDQogICAgVV9QUklNQVJZX1RPT19MT05HX0VSUk9SID0gMjIsDQogICAgVV9TVEFURV9U
T09fT0xEX0VSUk9SID0gMjMsDQogICAgVV9UT09fTUFOWV9BTElBU0VTX0VSUk9SID0gMjQsDQoN
CiAgICBVX0VOVU1fT1VUX09GX1NZTkNfRVJST1IgPSAyNSwNCiAgICBVX0lOVkFSSUFOVF9DT05W
RVJTSU9OX0VSUk9SID0gMjYsDQoNCiAgICBVX1NUQU5EQVJEX0VSUk9SX0xJTUlULA0KDQoNCg0K
ICAgIFVfQkFEX1ZBUklBQkxFX0RFRklOSVRJT049MHgxMDAwMCwNCiAgICBVX1BBUlNFX0VSUk9S
X1NUQVJUID0gMHgxMDAwMCwNCiAgICBVX01BTEZPUk1FRF9SVUxFLA0KICAgIFVfTUFMRk9STUVE
X1NFVCwNCiAgICBVX01BTEZPUk1FRF9TWU1CT0xfUkVGRVJFTkNFLA0KICAgIFVfTUFMRk9STUVE
X1VOSUNPREVfRVNDQVBFLA0KICAgIFVfTUFMRk9STUVEX1ZBUklBQkxFX0RFRklOSVRJT04sDQog
ICAgVV9NQUxGT1JNRURfVkFSSUFCTEVfUkVGRVJFTkNFLA0KICAgIFVfTUlTTUFUQ0hFRF9TRUdN
RU5UX0RFTElNSVRFUlMsDQogICAgVV9NSVNQTEFDRURfQU5DSE9SX1NUQVJULA0KICAgIFVfTUlT
UExBQ0VEX0NVUlNPUl9PRkZTRVQsDQogICAgVV9NSVNQTEFDRURfUVVBTlRJRklFUiwNCiAgICBV
X01JU1NJTkdfT1BFUkFUT1IsDQogICAgVV9NSVNTSU5HX1NFR01FTlRfQ0xPU0UsDQogICAgVV9N
VUxUSVBMRV9BTlRFX0NPTlRFWFRTLA0KICAgIFVfTVVMVElQTEVfQ1VSU09SUywNCiAgICBVX01V
TFRJUExFX1BPU1RfQ09OVEVYVFMsDQogICAgVV9UUkFJTElOR19CQUNLU0xBU0gsDQogICAgVV9V
TkRFRklORURfU0VHTUVOVF9SRUZFUkVOQ0UsDQogICAgVV9VTkRFRklORURfVkFSSUFCTEUsDQog
ICAgVV9VTlFVT1RFRF9TUEVDSUFMLA0KICAgIFVfVU5URVJNSU5BVEVEX1FVT1RFLA0KICAgIFVf
UlVMRV9NQVNLX0VSUk9SLA0KICAgIFVfTUlTUExBQ0VEX0NPTVBPVU5EX0ZJTFRFUiwNCiAgICBV
X01VTFRJUExFX0NPTVBPVU5EX0ZJTFRFUlMsDQogICAgVV9JTlZBTElEX1JCVF9TWU5UQVgsDQog
ICAgVV9JTlZBTElEX1BST1BFUlRZX1BBVFRFUk4sDQogICAgVV9NQUxGT1JNRURfUFJBR01BLA0K
ICAgIFVfVU5DTE9TRURfU0VHTUVOVCwNCiAgICBVX0lMTEVHQUxfQ0hBUl9JTl9TRUdNRU5ULA0K
ICAgIFVfVkFSSUFCTEVfUkFOR0VfRVhIQVVTVEVELA0KICAgIFVfVkFSSUFCTEVfUkFOR0VfT1ZF
UkxBUCwNCiAgICBVX0lMTEVHQUxfQ0hBUkFDVEVSLA0KICAgIFVfSU5URVJOQUxfVFJBTlNMSVRF
UkFUT1JfRVJST1IsDQogICAgVV9JTlZBTElEX0lELA0KICAgIFVfSU5WQUxJRF9GVU5DVElPTiwN
CiAgICBVX1BBUlNFX0VSUk9SX0xJTUlULA0KDQoNCg0KDQogICAgVV9VTkVYUEVDVEVEX1RPS0VO
PTB4MTAxMDAsDQogICAgVV9GTVRfUEFSU0VfRVJST1JfU1RBUlQ9MHgxMDEwMCwNCiAgICBVX01V
TFRJUExFX0RFQ0lNQUxfU0VQRVJBVE9SUywNCiAgICBVX01VTFRJUExFX0VYUE9ORU5USUFMX1NZ
TUJPTFMsDQogICAgVV9NQUxGT1JNRURfRVhQT05FTlRJQUxfUEFUVEVSTiwNCiAgICBVX01VTFRJ
UExFX1BFUkNFTlRfU1lNQk9MUywNCiAgICBVX01VTFRJUExFX1BFUk1JTExfU1lNQk9MUywNCiAg
ICBVX01VTFRJUExFX1BBRF9TUEVDSUZJRVJTLA0KICAgIFVfUEFUVEVSTl9TWU5UQVhfRVJST1Is
DQogICAgVV9JTExFR0FMX1BBRF9QT1NJVElPTiwNCiAgICBVX1VOTUFUQ0hFRF9CUkFDRVMsDQog
ICAgVV9VTlNVUFBPUlRFRF9QUk9QRVJUWSwNCiAgICBVX1VOU1VQUE9SVEVEX0FUVFJJQlVURSwN
CiAgICBVX0ZNVF9QQVJTRV9FUlJPUl9MSU1JVCwNCg0KDQoNCg0KICAgIFVfQlJLX0VSUk9SX1NU
QVJUPTB4MTAyMDAsDQogICAgVV9CUktfSU5URVJOQUxfRVJST1IsDQogICAgVV9CUktfSEVYX0RJ
R0lUU19FWFBFQ1RFRCwNCiAgICBVX0JSS19TRU1JQ09MT05fRVhQRUNURUQsDQogICAgVV9CUktf
UlVMRV9TWU5UQVgsDQogICAgVV9CUktfVU5DTE9TRURfU0VULA0KICAgIFVfQlJLX0FTU0lHTl9F
UlJPUiwNCiAgICBVX0JSS19WQVJJQUJMRV9SRURGSU5JVElPTiwNCiAgICBVX0JSS19NSVNNQVRD
SEVEX1BBUkVOLA0KICAgIFVfQlJLX05FV19MSU5FX0lOX1FVT1RFRF9TVFJJTkcsDQogICAgVV9C
UktfVU5ERUZJTkVEX1ZBUklBQkxFLA0KICAgIFVfQlJLX0VSUk9SX0xJTUlULA0KDQogICAgVV9F
UlJPUl9MSU1JVD1VX0JSS19FUlJPUl9MSU1JVA0KfSBVRXJyb3JDb2RlOw0KIyA1MDMgIi4uL2Nv
bW1vbi91bmljb2RlL3V0eXBlcy5oIg0KICAgIHN0YXRpYw0KICAgIGlubGluZSBVQm9vbCBVX1NV
Q0NFU1MoVUVycm9yQ29kZSBjb2RlKSB7IHJldHVybiAoVUJvb2wpKGNvZGU8PVVfWkVST19FUlJP
Uik7IH0NCg0KDQoNCg0KICAgIHN0YXRpYw0KICAgIGlubGluZSBVQm9vbCBVX0ZBSUxVUkUoVUVy
cm9yQ29kZSBjb2RlKSB7IHJldHVybiAoVUJvb2wpKGNvZGU+VV9aRVJPX0VSUk9SKTsgfQ0KIyA1
MjkgIi4uL2NvbW1vbi91bmljb2RlL3V0eXBlcy5oIg0KZXh0ZXJuICJDIiBjb25zdCBjaGFyICoN
CnVfZXJyb3JOYW1lXzJfMihVRXJyb3JDb2RlIGNvZGUpOw0KDQoNCg0KDQoNCg0KDQojIDEgIi4u
L2NvbW1vbi91bmljb2RlL3B1dGlsLmgiIDENCiMgMjcgIi4uL2NvbW1vbi91bmljb2RlL3B1dGls
LmgiDQojIDEgIi4uL2NvbW1vbi91bmljb2RlL3V0eXBlcy5oIiAxDQojIDI4ICIuLi9jb21tb24v
dW5pY29kZS9wdXRpbC5oIiAyDQojIDQ3ICIuLi9jb21tb24vdW5pY29kZS9wdXRpbC5oIg0KZXh0
ZXJuICJDIiBVQm9vbCB1cHJ2X2lzTmFOXzJfMihkb3VibGUpOw0KZXh0ZXJuICJDIiBVQm9vbCB1
cHJ2X2lzSW5maW5pdGVfMl8yKGRvdWJsZSk7DQpleHRlcm4gIkMiIFVCb29sIHVwcnZfaXNQb3Np
dGl2ZUluZmluaXR5XzJfMihkb3VibGUpOw0KZXh0ZXJuICJDIiBVQm9vbCB1cHJ2X2lzTmVnYXRp
dmVJbmZpbml0eV8yXzIoZG91YmxlKTsNCmV4dGVybiAiQyIgZG91YmxlIHVwcnZfZ2V0TmFOXzJf
Mih2b2lkKTsNCmV4dGVybiAiQyIgZG91YmxlIHVwcnZfZ2V0SW5maW5pdHlfMl8yKHZvaWQpOw0K
DQpleHRlcm4gIkMiIGRvdWJsZSB1cHJ2X3RydW5jXzJfMihkb3VibGUgZCk7DQpleHRlcm4gIkMi
IGRvdWJsZSB1cHJ2X2Zsb29yXzJfMihkb3VibGUgeCk7DQpleHRlcm4gIkMiIGRvdWJsZSB1cHJ2
X2NlaWxfMl8yKGRvdWJsZSB4KTsNCmV4dGVybiAiQyIgZG91YmxlIHVwcnZfZmFic18yXzIoZG91
YmxlIHgpOw0KZXh0ZXJuICJDIiBkb3VibGUgdXBydl9tb2RmXzJfMihkb3VibGUgeCwgZG91Ymxl
KiB5KTsNCmV4dGVybiAiQyIgZG91YmxlIHVwcnZfZm1vZF8yXzIoZG91YmxlIHgsIGRvdWJsZSB5
KTsNCmV4dGVybiAiQyIgZG91YmxlIHVwcnZfcG93XzJfMihkb3VibGUgeCwgZG91YmxlIHkpOw0K
ZXh0ZXJuICJDIiBkb3VibGUgdXBydl9wb3cxMF8yXzIoaW50MzJfdCB4KTsNCmV4dGVybiAiQyIg
ZG91YmxlIHVwcnZfZm1heF8yXzIoZG91YmxlIHgsIGRvdWJsZSB5KTsNCmV4dGVybiAiQyIgZG91
YmxlIHVwcnZfZm1pbl8yXzIoZG91YmxlIHgsIGRvdWJsZSB5KTsNCmV4dGVybiAiQyIgaW50MzJf
dCB1cHJ2X21heF8yXzIoaW50MzJfdCB4LCBpbnQzMl90IHkpOw0KZXh0ZXJuICJDIiBpbnQzMl90
IHVwcnZfbWluXzJfMihpbnQzMl90IHgsIGludDMyX3QgeSk7DQojIDc3ICIuLi9jb21tb24vdW5p
Y29kZS9wdXRpbC5oIg0KZXh0ZXJuICJDIiBkb3VibGUgdXBydl9tYXhNYW50aXNzYV8yXzIodm9p
ZCk7DQojIDg5ICIuLi9jb21tb24vdW5pY29kZS9wdXRpbC5oIg0KZXh0ZXJuICJDIiBpbnQxNl90
IHVwcnZfbG9nMTBfMl8yKGRvdWJsZSBkKTsNCg0KZXh0ZXJuICJDIiBkb3VibGUgdXBydl9sb2df
Ml8yKGRvdWJsZSBkKTsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGRvdWJsZSB1cHJ2X3JvdW5kXzJf
Mihkb3VibGUgeCk7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgaW50MzJfdCB1cHJ2X2RpZ2l0
c0FmdGVyRGVjaW1hbF8yXzIoZG91YmxlIHgpOw0KIyAxMzkgIi4uL2NvbW1vbi91bmljb2RlL3B1
dGlsLmgiDQpleHRlcm4gIkMiIHZvaWQgdXBydl90enNldF8yXzIodm9pZCk7DQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGludDMyX3QgdXBydl90aW1lem9uZV8yXzIodm9pZCk7DQojIDE1NSAiLi4v
Y29tbW9uL3VuaWNvZGUvcHV0aWwuaCINCmV4dGVybiAiQyIgY2hhciogdXBydl90em5hbWVfMl8y
KGludCBuKTsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgaW50MzJfdCB1cHJ2X2dldFVUQ3RpbWVf
Ml8yKHZvaWQpOw0KIyAxODUgIi4uL2NvbW1vbi91bmljb2RlL3B1dGlsLmgiDQpleHRlcm4gIkMi
IGNvbnN0IGNoYXIqIHVfZ2V0RGF0YURpcmVjdG9yeV8yXzIodm9pZCk7DQojIDIwMCAiLi4vY29t
bW9uL3VuaWNvZGUvcHV0aWwuaCINCmV4dGVybiAiQyIgdm9pZCB1X3NldERhdGFEaXJlY3Rvcnlf
Ml8yKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IGNoYXIqIHVwcnZfZ2V0RGVmYXVsdENvZGVwYWdlXzJfMih2b2lkKTsNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBjaGFyKiB1cHJ2X2dldERlZmF1bHRMb2NhbGVJRF8yXzIodm9pZCk7
DQojIDIyOCAiLi4vY29tbW9uL3VuaWNvZGUvcHV0aWwuaCINCmV4dGVybiAiQyIgZG91YmxlIHVw
cnZfbmV4dERvdWJsZV8yXzIoZG91YmxlIGQsIFVCb29sIHBvc2l0aXZlKTsNCiMgMjY4ICIuLi9j
b21tb24vdW5pY29kZS9wdXRpbC5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1X2NoYXJzVG9VQ2hhcnNf
Ml8yKGNvbnN0IGNoYXIgKmNzLCBVQ2hhciAqdXMsIGludDMyX3QgbGVuZ3RoKTsNCiMgMjg4ICIu
Li9jb21tb24vdW5pY29kZS9wdXRpbC5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1X1VDaGFyc1RvQ2hh
cnNfMl8yKGNvbnN0IFVDaGFyICp1cywgY2hhciAqY3MsIGludDMyX3QgbGVuZ3RoKTsNCiMgNTM5
ICIuLi9jb21tb24vdW5pY29kZS91dHlwZXMuaCIgMg0KIyAyNyAiLi4vY29tbW9uL3VuaWNvZGUv
dWNoYXIuaCIgMg0KDQpleHRlcm4gIkMiIHsNCiMgMTAwICIuLi9jb21tb24vdW5pY29kZS91Y2hh
ci5oIg0KZW51bSBVUHJvcGVydHkgew0KDQoNCiAgICBVQ0hBUl9BTFBIQUJFVElDLA0KDQogICAg
VUNIQVJfQklOQVJZX1NUQVJUPVVDSEFSX0FMUEhBQkVUSUMsDQoNCiAgICBVQ0hBUl9BU0NJSV9I
RVhfRElHSVQsDQoNCg0KDQogICAgVUNIQVJfQklESV9DT05UUk9MLA0KDQoNCg0KDQogICAgVUNI
QVJfQklESV9NSVJST1JFRCwNCg0KICAgIFVDSEFSX0RBU0gsDQoNCg0KDQogICAgVUNIQVJfREVG
QVVMVF9JR05PUkFCTEVfQ09ERV9QT0lOVCwNCg0KDQogICAgVUNIQVJfREVQUkVDQVRFRCwNCg0K
DQogICAgVUNIQVJfRElBQ1JJVElDLA0KDQoNCg0KICAgIFVDSEFSX0VYVEVOREVSLA0KDQoNCg0K
ICAgIFVDSEFSX0ZVTExfQ09NUE9TSVRJT05fRVhDTFVTSU9OLA0KDQoNCg0KICAgIFVDSEFSX0dS
QVBIRU1FX0JBU0UsDQoNCg0KDQogICAgVUNIQVJfR1JBUEhFTUVfRVhURU5ELA0KDQoNCiAgICBV
Q0hBUl9HUkFQSEVNRV9MSU5LLA0KDQoNCiAgICBVQ0hBUl9IRVhfRElHSVQsDQoNCg0KICAgIFVD
SEFSX0hZUEhFTiwNCg0KDQoNCiAgICBVQ0hBUl9JRF9DT05USU5VRSwNCg0KDQoNCiAgICBVQ0hB
Ul9JRF9TVEFSVCwNCg0KDQogICAgVUNIQVJfSURFT0dSQVBISUMsDQoNCg0KDQogICAgVUNIQVJf
SURTX0JJTkFSWV9PUEVSQVRPUiwNCg0KDQoNCiAgICBVQ0hBUl9JRFNfVFJJTkFSWV9PUEVSQVRP
UiwNCg0KDQogICAgVUNIQVJfSk9JTl9DT05UUk9MLA0KDQoNCg0KICAgIFVDSEFSX0xPR0lDQUxf
T1JERVJfRVhDRVBUSU9OLA0KDQoNCiAgICBVQ0hBUl9MT1dFUkNBU0UsDQoNCiAgICBVQ0hBUl9N
QVRILA0KDQoNCg0KICAgIFVDSEFSX05PTkNIQVJBQ1RFUl9DT0RFX1BPSU5ULA0KDQogICAgVUNI
QVJfUVVPVEFUSU9OX01BUkssDQoNCg0KDQogICAgVUNIQVJfUkFESUNBTCwNCg0KDQoNCg0KICAg
IFVDSEFSX1NPRlRfRE9UVEVELA0KDQoNCg0KICAgIFVDSEFSX1RFUk1JTkFMX1BVTkNUVUFUSU9O
LA0KDQoNCg0KICAgIFVDSEFSX1VOSUZJRURfSURFT0dSQVBILA0KDQoNCiAgICBVQ0hBUl9VUFBF
UkNBU0UsDQoNCg0KDQogICAgVUNIQVJfV0hJVEVfU1BBQ0UsDQoNCg0KDQogICAgVUNIQVJfWElE
X0NPTlRJTlVFLA0KDQoNCiAgICBVQ0hBUl9YSURfU1RBUlQsDQoNCiAgICBVQ0hBUl9CSU5BUllf
TElNSVQsDQoNCg0KDQogICAgVUNIQVJfQklESV9DTEFTUz0weDEwMDAsDQoNCiAgICBVQ0hBUl9J
TlRfU1RBUlQ9VUNIQVJfQklESV9DTEFTUywNCg0KDQogICAgVUNIQVJfQkxPQ0ssDQoNCg0KICAg
IFVDSEFSX0NBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MsDQoNCg0KICAgIFVDSEFSX0RFQ09NUE9T
SVRJT05fVFlQRSwNCg0KDQoNCiAgICBVQ0hBUl9FQVNUX0FTSUFOX1dJRFRILA0KDQoNCiAgICBV
Q0hBUl9HRU5FUkFMX0NBVEVHT1JZLA0KDQoNCiAgICBVQ0hBUl9KT0lOSU5HX0dST1VQLA0KDQoN
CiAgICBVQ0hBUl9KT0lOSU5HX1RZUEUsDQoNCg0KICAgIFVDSEFSX0xJTkVfQlJFQUssDQoNCg0K
ICAgIFVDSEFSX05VTUVSSUNfVFlQRSwNCg0KDQogICAgVUNIQVJfU0NSSVBULA0KDQoNCiAgICBV
Q0hBUl9JTlRfTElNSVQNCn07DQoNCg0KdHlwZWRlZiBlbnVtIFVQcm9wZXJ0eSBVUHJvcGVydHk7
DQoNCg0KDQoNCg0KDQplbnVtIFVDaGFyQ2F0ZWdvcnkNCnsNCg0KICAgIFVfVU5BU1NJR05FRCA9
IDAsDQoNCiAgICBVX0dFTkVSQUxfT1RIRVJfVFlQRVMgPSAwLA0KDQogICAgVV9VUFBFUkNBU0Vf
TEVUVEVSID0gMSwNCg0KICAgIFVfTE9XRVJDQVNFX0xFVFRFUiA9IDIsDQoNCiAgICBVX1RJVExF
Q0FTRV9MRVRURVIgPSAzLA0KDQogICAgVV9NT0RJRklFUl9MRVRURVIgPSA0LA0KDQogICAgVV9P
VEhFUl9MRVRURVIgPSA1LA0KDQogICAgVV9OT05fU1BBQ0lOR19NQVJLID0gNiwNCg0KICAgIFVf
RU5DTE9TSU5HX01BUksgPSA3LA0KDQogICAgVV9DT01CSU5JTkdfU1BBQ0lOR19NQVJLID0gOCwN
Cg0KICAgIFVfREVDSU1BTF9ESUdJVF9OVU1CRVIgPSA5LA0KDQogICAgVV9MRVRURVJfTlVNQkVS
ID0gMTAsDQoNCiAgICBVX09USEVSX05VTUJFUiA9IDExLA0KDQogICAgVV9TUEFDRV9TRVBBUkFU
T1IgPSAxMiwNCg0KICAgIFVfTElORV9TRVBBUkFUT1IgPSAxMywNCg0KICAgIFVfUEFSQUdSQVBI
X1NFUEFSQVRPUiA9IDE0LA0KDQogICAgVV9DT05UUk9MX0NIQVIgPSAxNSwNCg0KICAgIFVfRk9S
TUFUX0NIQVIgPSAxNiwNCg0KICAgIFVfUFJJVkFURV9VU0VfQ0hBUiA9IDE3LA0KDQogICAgVV9T
VVJST0dBVEUgPSAxOCwNCg0KICAgIFVfREFTSF9QVU5DVFVBVElPTiA9IDE5LA0KDQogICAgVV9T
VEFSVF9QVU5DVFVBVElPTiA9IDIwLA0KDQogICAgVV9FTkRfUFVOQ1RVQVRJT04gPSAyMSwNCg0K
ICAgIFVfQ09OTkVDVE9SX1BVTkNUVUFUSU9OID0gMjIsDQoNCiAgICBVX09USEVSX1BVTkNUVUFU
SU9OID0gMjMsDQoNCiAgICBVX01BVEhfU1lNQk9MID0gMjQsDQoNCiAgICBVX0NVUlJFTkNZX1NZ
TUJPTCA9IDI1LA0KDQogICAgVV9NT0RJRklFUl9TWU1CT0wgPSAyNiwNCg0KICAgIFVfT1RIRVJf
U1lNQk9MID0gMjcsDQoNCiAgICBVX0lOSVRJQUxfUFVOQ1RVQVRJT04gPSAyOCwNCg0KICAgIFVf
RklOQUxfUFVOQ1RVQVRJT04gPSAyOSwNCg0KICAgIFVfQ0hBUl9DQVRFR09SWV9DT1VOVA0KfTsN
Cg0KdHlwZWRlZiBlbnVtIFVDaGFyQ2F0ZWdvcnkgVUNoYXJDYXRlZ29yeTsNCiMgNDIwICIuLi9j
b21tb24vdW5pY29kZS91Y2hhci5oIg0KZW51bSBVQ2hhckRpcmVjdGlvbiB7DQoNCiAgICBVX0xF
RlRfVE9fUklHSFQgPSAwLA0KDQogICAgVV9SSUdIVF9UT19MRUZUID0gMSwNCg0KICAgIFVfRVVS
T1BFQU5fTlVNQkVSID0gMiwNCg0KICAgIFVfRVVST1BFQU5fTlVNQkVSX1NFUEFSQVRPUiA9IDMs
DQoNCiAgICBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SID0gNCwNCg0KICAgIFVfQVJBQklD
X05VTUJFUiA9IDUsDQoNCiAgICBVX0NPTU1PTl9OVU1CRVJfU0VQQVJBVE9SID0gNiwNCg0KICAg
IFVfQkxPQ0tfU0VQQVJBVE9SID0gNywNCg0KICAgIFVfU0VHTUVOVF9TRVBBUkFUT1IgPSA4LA0K
DQogICAgVV9XSElURV9TUEFDRV9ORVVUUkFMID0gOSwNCg0KICAgIFVfT1RIRVJfTkVVVFJBTCA9
IDEwLA0KDQogICAgVV9MRUZUX1RPX1JJR0hUX0VNQkVERElORyA9IDExLA0KDQogICAgVV9MRUZU
X1RPX1JJR0hUX09WRVJSSURFID0gMTIsDQoNCiAgICBVX1JJR0hUX1RPX0xFRlRfQVJBQklDID0g
MTMsDQoNCiAgICBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5HID0gMTQsDQoNCiAgICBVX1JJR0hU
X1RPX0xFRlRfT1ZFUlJJREUgPSAxNSwNCg0KICAgIFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCA9
IDE2LA0KDQogICAgVV9ESVJfTk9OX1NQQUNJTkdfTUFSSyA9IDE3LA0KDQogICAgVV9CT1VOREFS
WV9ORVVUUkFMID0gMTgsDQoNCiAgICBVX0NIQVJfRElSRUNUSU9OX0NPVU5UDQp9Ow0KDQp0eXBl
ZGVmIGVudW0gVUNoYXJEaXJlY3Rpb24gVUNoYXJEaXJlY3Rpb247DQoNCg0KDQoNCg0KDQplbnVt
IFVCbG9ja0NvZGUgew0KDQogICAgVUJMT0NLX0JBU0lDX0xBVElOID0gMSwNCg0KICAgIFVfQkFT
SUNfTEFUSU4gPSAxLA0KDQoNCiAgICBVQkxPQ0tfTEFUSU5fMV9TVVBQTEVNRU5UPTIsDQoNCiAg
ICBVX0xBVElOXzFfU1VQUExFTUVOVD0yLA0KDQoNCiAgICBVQkxPQ0tfTEFUSU5fRVhURU5ERURf
QSA9MywNCg0KICAgIFVfTEFUSU5fRVhURU5ERURfQT0zLA0KDQoNCiAgICBVQkxPQ0tfTEFUSU5f
RVhURU5ERURfQiA9NCwNCg0KICAgIFVfTEFUSU5fRVhURU5ERURfQj00LA0KDQoNCiAgICBVQkxP
Q0tfSVBBX0VYVEVOU0lPTlMgPTUsDQoNCiAgICBVX0lQQV9FWFRFTlNJT05TPTUsDQoNCg0KICAg
IFVCTE9DS19TUEFDSU5HX01PRElGSUVSX0xFVFRFUlMgPTYsDQoNCiAgICBVX1NQQUNJTkdfTU9E
SUZJRVJfTEVUVEVSUz02LA0KDQoNCiAgICBVQkxPQ0tfQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01B
UktTID03LA0KDQogICAgVV9DT01CSU5JTkdfRElBQ1JJVElDQUxfTUFSS1M9NywNCg0KDQoNCg0K
DQogICAgVUJMT0NLX0dSRUVLID04LA0KDQogICAgVV9HUkVFSz04LA0KDQoNCiAgICBVQkxPQ0tf
Q1lSSUxMSUMgPTksDQoNCiAgICBVX0NZUklMTElDPTksDQoNCg0KICAgIFVCTE9DS19BUk1FTklB
TiA9MTAsDQoNCiAgICBVX0FSTUVOSUFOPTEwLA0KDQoNCiAgICBVQkxPQ0tfSEVCUkVXID0xMSwN
Cg0KICAgIFVfSEVCUkVXPTExLA0KDQoNCiAgICBVQkxPQ0tfQVJBQklDID0xMiwNCg0KICAgIFVf
QVJBQklDPTEyLA0KDQoNCiAgICBVQkxPQ0tfU1lSSUFDID0xMywNCg0KICAgIFVfU1lSSUFDPTEz
LA0KDQoNCiAgICBVQkxPQ0tfVEhBQU5BID0xNCwNCg0KICAgIFVfVEhBQU5BPTE0LA0KDQoNCiAg
ICBVQkxPQ0tfREVWQU5BR0FSSSA9MTUsDQoNCiAgICBVX0RFVkFOQUdBUkk9MTUsDQoNCg0KICAg
IFVCTE9DS19CRU5HQUxJID0xNiwNCg0KICAgIFVfQkVOR0FMST0xNiwNCg0KDQogICAgVUJMT0NL
X0dVUk1VS0hJID0xNywNCg0KICAgIFVfR1VSTVVLSEk9MTcsDQoNCg0KICAgIFVCTE9DS19HVUpB
UkFUSSA9MTgsDQoNCiAgICBVX0dVSkFSQVRJPTE4LA0KDQoNCiAgICBVQkxPQ0tfT1JJWUEgPTE5
LA0KDQogICAgVV9PUklZQT0xOSwNCg0KDQogICAgVUJMT0NLX1RBTUlMID0yMCwNCg0KICAgIFVf
VEFNSUw9MjAsDQoNCg0KICAgIFVCTE9DS19URUxVR1UgPTIxLA0KDQogICAgVV9URUxVR1U9MjEs
DQoNCg0KICAgIFVCTE9DS19LQU5OQURBID0yMiwNCg0KICAgIFVfS0FOTkFEQT0yMiwNCg0KDQog
ICAgVUJMT0NLX01BTEFZQUxBTSA9MjMsDQoNCiAgICBVX01BTEFZQUxBTT0yMywNCg0KDQogICAg
VUJMT0NLX1NJTkhBTEEgPTI0LA0KDQogICAgVV9TSU5IQUxBPTI0LA0KDQoNCiAgICBVQkxPQ0tf
VEhBSSA9MjUsDQoNCiAgICBVX1RIQUk9MjUsDQoNCg0KICAgIFVCTE9DS19MQU8gPTI2LA0KDQog
ICAgVV9MQU89MjYsDQoNCg0KICAgIFVCTE9DS19USUJFVEFOID0yNywNCg0KICAgIFVfVElCRVRB
Tj0yNywNCg0KDQogICAgVUJMT0NLX01ZQU5NQVIgPTI4LA0KDQogICAgVV9NWUFOTUFSPTI4LA0K
DQoNCiAgICBVQkxPQ0tfR0VPUkdJQU4gPTI5LA0KDQogICAgVV9HRU9SR0lBTj0yOSwNCg0KDQog
ICAgVUJMT0NLX0hBTkdVTF9KQU1PID0zMCwNCg0KICAgIFVfSEFOR1VMX0pBTU89MzAsDQoNCg0K
ICAgIFVCTE9DS19FVEhJT1BJQyA9MzEsDQoNCiAgICBVX0VUSElPUElDPTMxLA0KDQoNCiAgICBV
QkxPQ0tfQ0hFUk9LRUUgPTMyLA0KDQogICAgVV9DSEVST0tFRT0zMiwNCg0KDQogICAgVUJMT0NL
X1VOSUZJRURfQ0FOQURJQU5fQUJPUklHSU5BTF9TWUxMQUJJQ1MgPTMzLA0KDQogICAgVV9VTklG
SUVEX0NBTkFESUFOX0FCT1JJR0lOQUxfU1lMTEFCSUNTPTMzLA0KDQoNCiAgICBVQkxPQ0tfT0dI
QU0gPTM0LA0KDQogICAgVV9PR0hBTT0zNCwNCg0KDQogICAgVUJMT0NLX1JVTklDID0zNSwNCg0K
ICAgIFVfUlVOSUM9MzUsDQoNCg0KICAgIFVCTE9DS19LSE1FUiA9MzYsDQoNCiAgICBVX0tITUVS
PTM2LA0KDQoNCiAgICBVQkxPQ0tfTU9OR09MSUFOID0zNywNCg0KICAgIFVfTU9OR09MSUFOPTM3
LA0KDQoNCiAgICBVQkxPQ0tfTEFUSU5fRVhURU5ERURfQURESVRJT05BTCA9MzgsDQoNCiAgICBV
X0xBVElOX0VYVEVOREVEX0FERElUSU9OQUw9MzgsDQoNCg0KICAgIFVCTE9DS19HUkVFS19FWFRF
TkRFRCA9MzksDQoNCiAgICBVX0dSRUVLX0VYVEVOREVEPTM5LA0KDQoNCiAgICBVQkxPQ0tfR0VO
RVJBTF9QVU5DVFVBVElPTiA9NDAsDQoNCiAgICBVX0dFTkVSQUxfUFVOQ1RVQVRJT049NDAsDQoN
Cg0KICAgIFVCTE9DS19TVVBFUlNDUklQVFNfQU5EX1NVQlNDUklQVFMgPTQxLA0KDQogICAgVV9T
VVBFUlNDUklQVFNfQU5EX1NVQlNDUklQVFM9NDEsDQoNCg0KICAgIFVCTE9DS19DVVJSRU5DWV9T
WU1CT0xTID00MiwNCg0KICAgIFVfQ1VSUkVOQ1lfU1lNQk9MUz00MiwNCg0KDQoNCg0KDQogICAg
VUJMT0NLX0NPTUJJTklOR19NQVJLU19GT1JfU1lNQk9MUyA9NDMsDQoNCiAgICBVX0NPTUJJTklO
R19NQVJLU19GT1JfU1lNQk9MUz00MywNCg0KDQogICAgVUJMT0NLX0xFVFRFUkxJS0VfU1lNQk9M
UyA9NDQsDQoNCiAgICBVX0xFVFRFUkxJS0VfU1lNQk9MUz00NCwNCg0KDQogICAgVUJMT0NLX05V
TUJFUl9GT1JNUyA9NDUsDQoNCiAgICBVX05VTUJFUl9GT1JNUz00NSwNCg0KDQogICAgVUJMT0NL
X0FSUk9XUyA9NDYsDQoNCiAgICBVX0FSUk9XUz00NiwNCg0KDQogICAgVUJMT0NLX01BVEhFTUFU
SUNBTF9PUEVSQVRPUlMgPTQ3LA0KDQogICAgVV9NQVRIRU1BVElDQUxfT1BFUkFUT1JTPTQ3LA0K
DQoNCiAgICBVQkxPQ0tfTUlTQ0VMTEFORU9VU19URUNITklDQUwgPTQ4LA0KDQogICAgVV9NSVND
RUxMQU5FT1VTX1RFQ0hOSUNBTD00OCwNCg0KDQogICAgVUJMT0NLX0NPTlRST0xfUElDVFVSRVMg
PTQ5LA0KDQogICAgVV9DT05UUk9MX1BJQ1RVUkVTPTQ5LA0KDQoNCiAgICBVQkxPQ0tfT1BUSUNB
TF9DSEFSQUNURVJfUkVDT0dOSVRJT04gPTUwLA0KDQogICAgVV9PUFRJQ0FMX0NIQVJBQ1RFUl9S
RUNPR05JVElPTj01MCwNCg0KDQogICAgVUJMT0NLX0VOQ0xPU0VEX0FMUEhBTlVNRVJJQ1MgPTUx
LA0KDQogICAgVV9FTkNMT1NFRF9BTFBIQU5VTUVSSUNTPTUxLA0KDQoNCiAgICBVQkxPQ0tfQk9Y
X0RSQVdJTkcgPTUyLA0KDQogICAgVV9CT1hfRFJBV0lORz01MiwNCg0KDQogICAgVUJMT0NLX0JM
T0NLX0VMRU1FTlRTID01MywNCg0KICAgIFVfQkxPQ0tfRUxFTUVOVFM9NTMsDQoNCg0KICAgIFVC
TE9DS19HRU9NRVRSSUNfU0hBUEVTID01NCwNCg0KICAgIFVfR0VPTUVUUklDX1NIQVBFUz01NCwN
Cg0KDQogICAgVUJMT0NLX01JU0NFTExBTkVPVVNfU1lNQk9MUyA9NTUsDQoNCiAgICBVX01JU0NF
TExBTkVPVVNfU1lNQk9MUz01NSwNCg0KDQogICAgVUJMT0NLX0RJTkdCQVRTID01NiwNCg0KICAg
IFVfRElOR0JBVFM9NTYsDQoNCg0KICAgIFVCTE9DS19CUkFJTExFX1BBVFRFUk5TID01NywNCg0K
ICAgIFVfQlJBSUxMRV9QQVRURVJOUz01NywNCg0KDQogICAgVUJMT0NLX0NKS19SQURJQ0FMU19T
VVBQTEVNRU5UID01OCwNCg0KICAgIFVfQ0pLX1JBRElDQUxTX1NVUFBMRU1FTlQ9NTgsDQoNCg0K
ICAgIFVCTE9DS19LQU5HWElfUkFESUNBTFMgPTU5LA0KDQogICAgVV9LQU5HWElfUkFESUNBTFM9
NTksDQoNCg0KICAgIFVCTE9DS19JREVPR1JBUEhJQ19ERVNDUklQVElPTl9DSEFSQUNURVJTID02
MCwNCg0KICAgIFVfSURFT0dSQVBISUNfREVTQ1JJUFRJT05fQ0hBUkFDVEVSUz02MCwNCg0KDQog
ICAgVUJMT0NLX0NKS19TWU1CT0xTX0FORF9QVU5DVFVBVElPTiA9NjEsDQoNCiAgICBVX0NKS19T
WU1CT0xTX0FORF9QVU5DVFVBVElPTj02MSwNCg0KDQogICAgVUJMT0NLX0hJUkFHQU5BID02MiwN
Cg0KICAgIFVfSElSQUdBTkE9NjIsDQoNCg0KICAgIFVCTE9DS19LQVRBS0FOQSA9NjMsDQoNCiAg
ICBVX0tBVEFLQU5BPTYzLA0KDQoNCiAgICBVQkxPQ0tfQk9QT01PRk8gPTY0LA0KDQogICAgVV9C
T1BPTU9GTz02NCwNCg0KDQogICAgVUJMT0NLX0hBTkdVTF9DT01QQVRJQklMSVRZX0pBTU8gPTY1
LA0KDQogICAgVV9IQU5HVUxfQ09NUEFUSUJJTElUWV9KQU1PPTY1LA0KDQoNCiAgICBVQkxPQ0tf
S0FOQlVOID02NiwNCg0KICAgIFVfS0FOQlVOPTY2LA0KDQoNCiAgICBVQkxPQ0tfQk9QT01PRk9f
RVhURU5ERUQgPTY3LA0KDQogICAgVV9CT1BPTU9GT19FWFRFTkRFRD02NywNCg0KDQogICAgVUJM
T0NLX0VOQ0xPU0VEX0NKS19MRVRURVJTX0FORF9NT05USFMgPTY4LA0KDQogICAgVV9FTkNMT1NF
RF9DSktfTEVUVEVSU19BTkRfTU9OVEhTPTY4LA0KDQoNCiAgICBVQkxPQ0tfQ0pLX0NPTVBBVElC
SUxJVFkgPTY5LA0KDQogICAgVV9DSktfQ09NUEFUSUJJTElUWT02OSwNCg0KDQogICAgVUJMT0NL
X0NKS19VTklGSUVEX0lERU9HUkFQSFNfRVhURU5TSU9OX0EgPTcwLA0KDQogICAgVV9DSktfVU5J
RklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9BPTcwLA0KDQoNCiAgICBVQkxPQ0tfQ0pLX1VOSUZJ
RURfSURFT0dSQVBIUyA9NzEsDQoNCiAgICBVX0NKS19VTklGSUVEX0lERU9HUkFQSFM9NzEsDQoN
Cg0KICAgIFVCTE9DS19ZSV9TWUxMQUJMRVMgPTcyLA0KDQogICAgVV9ZSV9TWUxMQUJMRVM9NzIs
DQoNCg0KICAgIFVCTE9DS19ZSV9SQURJQ0FMUyA9NzMsDQoNCiAgICBVX1lJX1JBRElDQUxTPTcz
LA0KDQoNCiAgICBVQkxPQ0tfSEFOR1VMX1NZTExBQkxFUyA9NzQsDQoNCiAgICBVX0hBTkdVTF9T
WUxMQUJMRVM9NzQsDQoNCg0KICAgIFVCTE9DS19ISUdIX1NVUlJPR0FURVMgPTc1LA0KDQogICAg
VV9ISUdIX1NVUlJPR0FURVM9NzUsDQoNCg0KICAgIFVCTE9DS19ISUdIX1BSSVZBVEVfVVNFX1NV
UlJPR0FURVMgPTc2LA0KDQogICAgVV9ISUdIX1BSSVZBVEVfVVNFX1NVUlJPR0FURVM9NzYsDQoN
Cg0KICAgIFVCTE9DS19MT1dfU1VSUk9HQVRFUyA9NzcsDQoNCiAgICBVX0xPV19TVVJST0dBVEVT
PTc3LA0KIyA4NzEgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQogICAgVUJMT0NLX1BSSVZB
VEVfVVNFID0gNzgsDQojIDg4MSAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCINCiAgICBVQkxP
Q0tfUFJJVkFURV9VU0VfQVJFQSA9VUJMT0NLX1BSSVZBVEVfVVNFLA0KDQogICAgVV9QUklWQVRF
X1VTRV9BUkVBPTc4LA0KDQoNCiAgICBVQkxPQ0tfQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBI
UyA9NzksDQoNCiAgICBVX0NKS19DT01QQVRJQklMSVRZX0lERU9HUkFQSFM9NzksDQoNCg0KICAg
IFVCTE9DS19BTFBIQUJFVElDX1BSRVNFTlRBVElPTl9GT1JNUyA9ODAsDQoNCiAgICBVX0FMUEhB
QkVUSUNfUFJFU0VOVEFUSU9OX0ZPUk1TPTgwLA0KDQoNCiAgICBVQkxPQ0tfQVJBQklDX1BSRVNF
TlRBVElPTl9GT1JNU19BID04MSwNCg0KICAgIFVfQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19B
PTgxLA0KDQoNCiAgICBVQkxPQ0tfQ09NQklOSU5HX0hBTEZfTUFSS1MgPTgyLA0KDQogICAgVV9D
T01CSU5JTkdfSEFMRl9NQVJLUz04MiwNCg0KDQogICAgVUJMT0NLX0NKS19DT01QQVRJQklMSVRZ
X0ZPUk1TID04MywNCg0KICAgIFVfQ0pLX0NPTVBBVElCSUxJVFlfRk9STVM9ODMsDQoNCg0KICAg
IFVCTE9DS19TTUFMTF9GT1JNX1ZBUklBTlRTID04NCwNCg0KICAgIFVfU01BTExfRk9STV9WQVJJ
QU5UUz04NCwNCg0KDQogICAgVUJMT0NLX0FSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQiA9ODUs
DQoNCiAgICBVX0FSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQj04NSwNCg0KDQogICAgVUJMT0NL
X1NQRUNJQUxTID04NiwNCg0KICAgIFVfU1BFQ0lBTFM9ODYsDQoNCg0KICAgIFVCTE9DS19IQUxG
V0lEVEhfQU5EX0ZVTExXSURUSF9GT1JNUyA9ODcsDQoNCiAgICBVX0hBTEZXSURUSF9BTkRfRlVM
TFdJRFRIX0ZPUk1TPTg3LA0KDQoNCiAgICBVQkxPQ0tfT0xEX0lUQUxJQyA9IDg4ICwNCg0KICAg
IFVCTE9DS19HT1RISUMgPSA4OSAsDQoNCiAgICBVQkxPQ0tfREVTRVJFVCA9IDkwICwNCg0KICAg
IFVCTE9DS19CWVpBTlRJTkVfTVVTSUNBTF9TWU1CT0xTID0gOTEgLA0KDQogICAgVUJMT0NLX01V
U0lDQUxfU1lNQk9MUyA9IDkyICwNCg0KICAgIFVCTE9DS19NQVRIRU1BVElDQUxfQUxQSEFOVU1F
UklDX1NZTUJPTFMgPSA5MyAsDQoNCiAgICBVQkxPQ0tfQ0pLX1VOSUZJRURfSURFT0dSQVBIU19F
WFRFTlNJT05fQiA9IDk0ICwNCg0KICAgIFVCTE9DS19DSktfQ09NUEFUSUJJTElUWV9JREVPR1JB
UEhTX1NVUFBMRU1FTlQgPSA5NSAsDQoNCiAgICBVQkxPQ0tfVEFHUyA9IDk2LA0KDQoNCg0KDQog
ICAgVUJMT0NLX0NZUklMTElDX1NVUFBMRU1FTlRBUlkgPSA5NywNCg0KICAgIFVCTE9DS19UQUdB
TE9HID0gOTgsDQoNCiAgICBVQkxPQ0tfSEFOVU5PTyA9IDk5LA0KDQogICAgVUJMT0NLX0JVSElE
ID0gMTAwLA0KDQogICAgVUJMT0NLX1RBR0JBTldBID0gMTAxLA0KDQogICAgVUJMT0NLX01JU0NF
TExBTkVPVVNfTUFUSEVNQVRJQ0FMX1NZTUJPTFNfQSA9IDEwMiwNCg0KICAgIFVCTE9DS19TVVBQ
TEVNRU5UQUxfQVJST1dTX0EgPSAxMDMsDQoNCiAgICBVQkxPQ0tfU1VQUExFTUVOVEFMX0FSUk9X
U19CID0gMTA0LA0KDQogICAgVUJMT0NLX01JU0NFTExBTkVPVVNfTUFUSEVNQVRJQ0FMX1NZTUJP
TFNfQiA9IDEwNSwNCg0KICAgIFVCTE9DS19TVVBQTEVNRU5UQUxfTUFUSEVNQVRJQ0FMX09QRVJB
VE9SUyA9IDEwNiwNCg0KICAgIFVCTE9DS19LQVRBS0FOQV9QSE9ORVRJQ19FWFRFTlNJT05TID0g
MTA3LA0KDQogICAgVUJMT0NLX1ZBUklBVElPTl9TRUxFQ1RPUlMgPSAxMDgsDQoNCiAgICBVQkxP
Q0tfU1VQUExFTUVOVEFSWV9QUklWQVRFX1VTRV9BUkVBX0EgPSAxMDksDQoNCiAgICBVQkxPQ0tf
U1VQUExFTUVOVEFSWV9QUklWQVRFX1VTRV9BUkVBX0IgPSAxMTAsDQoNCg0KICAgIFVCTE9DS19D
T1VOVCwNCg0KICAgIFVfU0NSSVBUX0NPVU5UPVVCTE9DS19DT1VOVCwNCg0KDQogICAgVUJMT0NL
X0lOVkFMSURfQ09ERT0tMSwNCg0KDQogICAgVV9DSEFSX1NDUklQVF9DT1VOVCA9VUJMT0NLX0NP
VU5ULA0KDQogICAgVV9OT19TQ1JJUFQgPSBVQkxPQ0tfQ09VTlQNCn07DQoNCg0KdHlwZWRlZiBl
bnVtIFVCbG9ja0NvZGUgVUJsb2NrQ29kZTsNCg0KDQoNCg0KDQplbnVtIFVDZWxsV2lkdGgNCnsN
Cg0KICAgIFVfWkVST19XSURUSCA9IDAsDQoNCiAgICBVX0hBTEZfV0lEVEggPSAxLA0KDQogICAg
VV9GVUxMX1dJRFRIID0gMiwNCg0KICAgIFVfTkVVVFJBTF9XSURUSCA9IDMsDQoNCiAgICBVX0NF
TExfV0lEVEhfQ09VTlQNCn07DQoNCg0KdHlwZWRlZiBlbnVtIFVDZWxsV2lkdGggVUNlbGxXaWR0
aDsNCg0KDQoNCg0KDQoNCg0KZW51bSBVRWFzdEFzaWFuV2lkdGggew0KICAgIFVfRUFfTkVVVFJB
TCwNCiAgICBVX0VBX0FNQklHVU9VUywNCiAgICBVX0VBX0hBTEZXSURUSCwNCiAgICBVX0VBX0ZV
TExXSURUSCwNCiAgICBVX0VBX05BUlJPVywNCiAgICBVX0VBX1dJREUsDQogICAgVV9FQV9DT1VO
VA0KfTsNCnR5cGVkZWYgZW51bSBVRWFzdEFzaWFuV2lkdGggVUVhc3RBc2lhbldpZHRoOw0KIyAx
MDUwICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZW51bSBVQ2hhck5hbWVDaG9pY2Ugew0K
ICAgIFVfVU5JQ09ERV9DSEFSX05BTUUsDQogICAgVV9VTklDT0RFXzEwX0NIQVJfTkFNRSwNCiAg
ICBVX0VYVEVOREVEX0NIQVJfTkFNRSwNCiAgICBVX0NIQVJfTkFNRV9DSE9JQ0VfQ09VTlQNCn07
DQoNCg0KdHlwZWRlZiBlbnVtIFVDaGFyTmFtZUNob2ljZSBVQ2hhck5hbWVDaG9pY2U7DQoNCg0K
DQoNCg0KDQoNCmVudW0gVURlY29tcG9zaXRpb25UeXBlIHsNCiAgICBVX0RUX05PTkUsDQogICAg
VV9EVF9DQU5PTklDQUwsDQogICAgVV9EVF9DT01QQVQsDQogICAgVV9EVF9DSVJDTEUsDQogICAg
VV9EVF9GSU5BTCwNCiAgICBVX0RUX0ZPTlQsDQogICAgVV9EVF9GUkFDVElPTiwNCiAgICBVX0RU
X0lOSVRJQUwsDQogICAgVV9EVF9JU09MQVRFRCwNCiAgICBVX0RUX01FRElBTCwNCiAgICBVX0RU
X05BUlJPVywNCiAgICBVX0RUX05PQlJFQUssDQogICAgVV9EVF9TTUFMTCwNCiAgICBVX0RUX1NR
VUFSRSwNCiAgICBVX0RUX1NVQiwNCiAgICBVX0RUX1NVUEVSLA0KICAgIFVfRFRfVkVSVElDQUws
DQogICAgVV9EVF9XSURFLA0KICAgIFVfRFRfQ09VTlQNCn07DQp0eXBlZGVmIGVudW0gVURlY29t
cG9zaXRpb25UeXBlIFVEZWNvbXBvc2l0aW9uVHlwZTsNCg0KDQoNCg0KDQoNCg0KZW51bSBVSm9p
bmluZ1R5cGUgew0KICAgIFVfSlRfTk9OX0pPSU5JTkcsDQogICAgVV9KVF9KT0lOX0NBVVNJTkcs
DQogICAgVV9KVF9EVUFMX0pPSU5JTkcsDQogICAgVV9KVF9MRUZUX0pPSU5JTkcsDQogICAgVV9K
VF9SSUdIVF9KT0lOSU5HLA0KICAgIFVfSlRfVFJBTlNQQVJFTlQsDQogICAgVV9KVF9DT1VOVA0K
fTsNCnR5cGVkZWYgZW51bSBVSm9pbmluZ1R5cGUgVUpvaW5pbmdUeXBlOw0KDQoNCg0KDQoNCg0K
DQplbnVtIFVKb2luaW5nR3JvdXAgew0KICAgIFVfSkdfTk9fSk9JTklOR19HUk9VUCwNCiAgICBV
X0pHX0FJTiwNCiAgICBVX0pHX0FMQVBILA0KICAgIFVfSkdfQUxFRiwNCiAgICBVX0pHX0JFSCwN
CiAgICBVX0pHX0JFVEgsDQogICAgVV9KR19EQUwsDQogICAgVV9KR19EQUxBVEhfUklTSCwNCiAg
ICBVX0pHX0UsDQogICAgVV9KR19GRUgsDQogICAgVV9KR19GSU5BTF9TRU1LQVRILA0KICAgIFVf
SkdfR0FGLA0KICAgIFVfSkdfR0FNQUwsDQogICAgVV9KR19IQUgsDQogICAgVV9KR19IQU1aQV9P
Tl9IRUhfR09BTCwNCiAgICBVX0pHX0hFLA0KICAgIFVfSkdfSEVILA0KICAgIFVfSkdfSEVIX0dP
QUwsDQogICAgVV9KR19IRVRILA0KICAgIFVfSkdfS0FGLA0KICAgIFVfSkdfS0FQSCwNCiAgICBV
X0pHX0tOT1RURURfSEVILA0KICAgIFVfSkdfTEFNLA0KICAgIFVfSkdfTEFNQURILA0KICAgIFVf
SkdfTUVFTSwNCiAgICBVX0pHX01JTSwNCiAgICBVX0pHX05PT04sDQogICAgVV9KR19OVU4sDQog
ICAgVV9KR19QRSwNCiAgICBVX0pHX1FBRiwNCiAgICBVX0pHX1FBUEgsDQogICAgVV9KR19SRUgs
DQogICAgVV9KR19SRVZFUlNFRF9QRSwNCiAgICBVX0pHX1NBRCwNCiAgICBVX0pHX1NBREhFLA0K
ICAgIFVfSkdfU0VFTiwNCiAgICBVX0pHX1NFTUtBVEgsDQogICAgVV9KR19TSElOLA0KICAgIFVf
SkdfU1dBU0hfS0FGLA0KICAgIFVfSkdfU1lSSUFDX1dBVywNCiAgICBVX0pHX1RBSCwNCiAgICBV
X0pHX1RBVywNCiAgICBVX0pHX1RFSF9NQVJCVVRBLA0KICAgIFVfSkdfVEVUSCwNCiAgICBVX0pH
X1dBVywNCiAgICBVX0pHX1lFSCwNCiAgICBVX0pHX1lFSF9CQVJSRUUsDQogICAgVV9KR19ZRUhf
V0lUSF9UQUlMLA0KICAgIFVfSkdfWVVESCwNCiAgICBVX0pHX1lVREhfSEUsDQogICAgVV9KR19a
QUlOLA0KICAgIFVfSkdfQ09VTlQNCn07DQp0eXBlZGVmIGVudW0gVUpvaW5pbmdHcm91cCBVSm9p
bmluZ0dyb3VwOw0KDQoNCg0KDQoNCg0KDQplbnVtIFVMaW5lQnJlYWsgew0KICAgIFVfTEJfVU5L
Tk9XTiwNCiAgICBVX0xCX0FNQklHVU9VUywNCiAgICBVX0xCX0FMUEhBQkVUSUMsDQogICAgVV9M
Ql9CUkVBS19CT1RILA0KICAgIFVfTEJfQlJFQUtfQUZURVIsDQogICAgVV9MQl9CUkVBS19CRUZP
UkUsDQogICAgVV9MQl9NQU5EQVRPUllfQlJFQUssDQogICAgVV9MQl9DT05USU5HRU5UX0JSRUFL
LA0KICAgIFVfTEJfQ0xPU0VfUFVOQ1RVQVRJT04sDQogICAgVV9MQl9DT01CSU5JTkdfTUFSSywN
CiAgICBVX0xCX0NBUlJJQUdFX1JFVFVSTiwNCiAgICBVX0xCX0VYQ0xBTUFUSU9OLA0KICAgIFVf
TEJfR0xVRSwNCiAgICBVX0xCX0hZUEhFTiwNCiAgICBVX0xCX0lERU9HUkFQSElDLA0KICAgIFVf
TEJfSU5TRVBFUkFCTEUsDQogICAgVV9MQl9JTkZJWF9OVU1FUklDLA0KICAgIFVfTEJfTElORV9G
RUVELA0KICAgIFVfTEJfTk9OU1RBUlRFUiwNCiAgICBVX0xCX05VTUVSSUMsDQogICAgVV9MQl9P
UEVOX1BVTkNUVUFUSU9OLA0KICAgIFVfTEJfUE9TVEZJWF9OVU1FUklDLA0KICAgIFVfTEJfUFJF
RklYX05VTUVSSUMsDQogICAgVV9MQl9RVU9UQVRJT04sDQogICAgVV9MQl9DT01QTEVYX0NPTlRF
WFQsDQogICAgVV9MQl9TVVJST0dBVEUsDQogICAgVV9MQl9TUEFDRSwNCiAgICBVX0xCX0JSRUFL
X1NZTUJPTFMsDQogICAgVV9MQl9aV1NQQUNFLA0KICAgIFVfTEJfQ09VTlQNCn07DQp0eXBlZGVm
IGVudW0gVUxpbmVCcmVhayBVTGluZUJyZWFrOw0KDQoNCg0KDQoNCg0KDQplbnVtIFVOdW1lcmlj
VHlwZSB7DQogICAgVV9OVF9OT05FLA0KICAgIFVfTlRfREVDSU1BTCwNCiAgICBVX05UX0RJR0lU
LA0KICAgIFVfTlRfTlVNRVJJQywNCiAgICBVX05UX0NPVU5UDQp9Ow0KdHlwZWRlZiBlbnVtIFVO
dW1lcmljVHlwZSBVTnVtZXJpY1R5cGU7DQojIDEyNDkgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFy
LmgiDQpleHRlcm4gIkMiIFVCb29sDQp1X2hhc0JpbmFyeVByb3BlcnR5XzJfMihVQ2hhcjMyIGMs
IFVQcm9wZXJ0eSB3aGljaCk7DQojIDEyNjQgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQpl
eHRlcm4gIkMiIFVCb29sDQp1X2lzVUFscGhhYmV0aWNfMl8yKFVDaGFyMzIgYyk7DQojIDEyNzkg
Ii4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIFVCb29sDQp1X2lzVUxvd2Vy
Y2FzZV8yXzIoVUNoYXIzMiBjKTsNCiMgMTI5NCAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCIN
CmV4dGVybiAiQyIgVUJvb2wNCnVfaXNVVXBwZXJjYXNlXzJfMihVQ2hhcjMyIGMpOw0KIyAxMzEw
ICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJDIiBVQm9vbA0KdV9pc1VXaGl0
ZVNwYWNlXzJfMihVQ2hhcjMyIGMpOw0KIyAxMzUzICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5o
Ig0KZXh0ZXJuICJDIiBpbnQzMl90DQp1X2dldEludFByb3BlcnR5VmFsdWVfMl8yKFVDaGFyMzIg
YywgVVByb3BlcnR5IHdoaWNoKTsNCiMgMTM3NSAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCIN
CmV4dGVybiAiQyIgaW50MzJfdA0KdV9nZXRJbnRQcm9wZXJ0eU1pblZhbHVlXzJfMihVUHJvcGVy
dHkgd2hpY2gpOw0KIyAxNDA0ICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJD
IiBpbnQzMl90DQp1X2dldEludFByb3BlcnR5TWF4VmFsdWVfMl8yKFVQcm9wZXJ0eSB3aGljaCk7
DQojIDE0MjMgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIGRvdWJsZQ0K
dV9nZXROdW1lcmljVmFsdWVfMl8yKFVDaGFyMzIgYyk7DQojIDE0NDcgIi4uL2NvbW1vbi91bmlj
b2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIFVCb29sDQp1X2lzbG93ZXJfMl8yKFVDaGFyMzIgYyk7
DQojIDE0NjEgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIFVCb29sDQp1
X2lzdXBwZXJfMl8yKFVDaGFyMzIgYyk7DQojIDE0NzUgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFy
LmgiDQpleHRlcm4gIkMiIFVCb29sDQp1X2lzdGl0bGVfMl8yKFVDaGFyMzIgYyk7DQojIDE0ODUg
Ii4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIFVCb29sDQp1X2lzZGlnaXRf
Ml8yKFVDaGFyMzIgYyk7DQojIDE0OTYgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQpleHRl
cm4gIkMiIFVCb29sDQp1X2lzYWxudW1fMl8yKFVDaGFyMzIgYyk7DQojIDE1MTQgIi4uL2NvbW1v
bi91bmljb2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIFVCb29sDQp1X2lzZGVmaW5lZF8yXzIoVUNo
YXIzMiBjKTsNCiMgMTUyOCAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCINCmV4dGVybiAiQyIg
VUJvb2wNCnVfaXNhbHBoYV8yXzIoVUNoYXIzMiBjKTsNCiMgMTUzOCAiLi4vY29tbW9uL3VuaWNv
ZGUvdWNoYXIuaCINCmV4dGVybiAiQyIgVUJvb2wNCnVfaXNzcGFjZV8yXzIoVUNoYXIzMiBjKTsN
CiMgMTU2OSAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCINCmV4dGVybiAiQyIgVUJvb2wNCnVf
aXNXaGl0ZXNwYWNlXzJfMihVQ2hhcjMyIGMpOw0KIyAxNTg3ICIuLi9jb21tb24vdW5pY29kZS91
Y2hhci5oIg0KZXh0ZXJuICJDIiBVQm9vbA0KdV9pc2NudHJsXzJfMihVQ2hhcjMyIGMpOw0KIyAx
NjAxICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJDIiBVQm9vbA0KdV9pc3By
aW50XzJfMihVQ2hhcjMyIGMpOw0KIyAxNjE1ICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0K
ZXh0ZXJuICJDIiBVQm9vbA0KdV9pc2Jhc2VfMl8yKFVDaGFyMzIgYyk7DQojIDE2MzAgIi4uL2Nv
bW1vbi91bmljb2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIFVDaGFyRGlyZWN0aW9uDQp1X2NoYXJE
aXJlY3Rpb25fMl8yKFVDaGFyMzIgYyk7DQojIDE2NDMgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFy
LmgiDQpleHRlcm4gIkMiIFVCb29sDQp1X2lzTWlycm9yZWRfMl8yKFVDaGFyMzIgYyk7DQojIDE2
NjIgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIFVDaGFyMzINCnVfY2hh
ck1pcnJvcl8yXzIoVUNoYXIzMiBjKTsNCiMgMTcyMyAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIu
aCINCmV4dGVybiAiQyIgdWludDE2X3QNCnVfY2hhckNlbGxXaWR0aF8yXzIoVUNoYXIzMiBjKTsN
CiMgMTczNiAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCINCmV4dGVybiAiQyIgaW50OF90DQp1
X2NoYXJUeXBlXzJfMihVQ2hhcjMyIGMpOw0KIyAxNzY4ICIuLi9jb21tb24vdW5pY29kZS91Y2hh
ci5oIg0KdHlwZWRlZiBVQm9vbA0KVUNoYXJFbnVtVHlwZVJhbmdlKGNvbnN0IHZvaWQgKmNvbnRl
eHQsIFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgbGltaXQsIFVDaGFyQ2F0ZWdvcnkgdHlwZSk7DQoj
IDE3OTAgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIHZvaWQNCnVfZW51
bUNoYXJUeXBlc18yXzIoVUNoYXJFbnVtVHlwZVJhbmdlICplbnVtUmFuZ2UsIGNvbnN0IHZvaWQg
KmNvbnRleHQpOw0KIyAxODAwICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJD
IiB1aW50OF90DQp1X2dldENvbWJpbmluZ0NsYXNzXzJfMihVQ2hhcjMyIGMpOw0KIyAxODExICIu
Li9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1X2NoYXJEaWdp
dFZhbHVlXzJfMihVQ2hhcjMyIGMpOw0KIyAxODIyICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5o
Ig0KZXh0ZXJuICJDIiBVQmxvY2tDb2RlDQp1YmxvY2tfZ2V0Q29kZV8yXzIoVUNoYXIzMiBjaCk7
DQojIDE4NTcgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgiDQpleHRlcm4gIkMiIGludDMyX3QN
CnVfY2hhck5hbWVfMl8yKFVDaGFyMzIgY29kZSwgVUNoYXJOYW1lQ2hvaWNlIG5hbWVDaG9pY2Us
DQogICAgICAgICAgIGNoYXIgKmJ1ZmZlciwgaW50MzJfdCBidWZmZXJMZW5ndGgsDQogICAgICAg
ICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOw0KIyAxODg0ICIuLi9jb21tb24vdW5pY29kZS91
Y2hhci5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1X2dldElTT0NvbW1lbnRfMl8yKFVDaGFyMzIg
YywNCiAgICAgICAgICAgICAgICBjaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwNCiAg
ICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCiMgMTkwOCAiLi4vY29tbW9u
L3VuaWNvZGUvdWNoYXIuaCINCmV4dGVybiAiQyIgVUNoYXIzMg0KdV9jaGFyRnJvbU5hbWVfMl8y
KFVDaGFyTmFtZUNob2ljZSBuYW1lQ2hvaWNlLA0KICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
bmFtZSwNCiAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOw0KIyAxOTI5ICIu
Li9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KdHlwZWRlZiBVQm9vbCBVRW51bUNoYXJOYW1lc0Zu
KHZvaWQgKmNvbnRleHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIzMiBj
b2RlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyTmFtZUNob2ljZSBuYW1l
Q2hvaWNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpOw0KIyAxOTU1
ICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1X2VudW1DaGFy
TmFtZXNfMl8yKFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgbGltaXQsDQogICAgICAgICAgICAgICAg
VUVudW1DaGFyTmFtZXNGbiAqZm4sDQogICAgICAgICAgICAgICAgdm9pZCAqY29udGV4dCwNCiAg
ICAgICAgICAgICAgICBVQ2hhck5hbWVDaG9pY2UgbmFtZUNob2ljZSwNCiAgICAgICAgICAgICAg
ICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCiMgMTk3OCAiLi4vY29tbW9uL3VuaWNvZGUvdWNo
YXIuaCINCmV4dGVybiAiQyIgVUJvb2wNCnVfaXNJRFN0YXJ0XzJfMihVQ2hhcjMyIGMpOw0KIyAy
MDA1ICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJDIiBVQm9vbA0KdV9pc0lE
UGFydF8yXzIoVUNoYXIzMiBjKTsNCiMgMjAzMiAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCIN
CmV4dGVybiAiQyIgVUJvb2wNCnVfaXNJRElnbm9yYWJsZV8yXzIoVUNoYXIzMiBjKTsNCiMgMjA1
NSAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCINCmV4dGVybiAiQyIgVUJvb2wNCnVfaXNKYXZh
SURTdGFydF8yXzIoVUNoYXIzMiBjKTsNCiMgMjA4NiAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIu
aCINCmV4dGVybiAiQyIgVUJvb2wNCnVfaXNKYXZhSURQYXJ0XzJfMihVQ2hhcjMyIGMpOw0KIyAy
MTExICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJDIiBVQ2hhcjMyDQp1X3Rv
bG93ZXJfMl8yKFVDaGFyMzIgYyk7DQojIDIxMjkgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFyLmgi
DQpleHRlcm4gIkMiIFVDaGFyMzINCnVfdG91cHBlcl8yXzIoVUNoYXIzMiBjKTsNCiMgMjE0NiAi
Li4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCINCmV4dGVybiAiQyIgVUNoYXIzMg0KdV90b3RpdGxl
XzJfMihVQ2hhcjMyIGMpOw0KIyAyMTgzICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0
ZXJuICJDIiBVQ2hhcjMyDQp1X2ZvbGRDYXNlXzJfMihVQ2hhcjMyIGMsIHVpbnQzMl90IG9wdGlv
bnMpOw0KIyAyMjIxICIuLi9jb21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJDIiBpbnQz
Ml90DQp1X2RpZ2l0XzJfMihVQ2hhcjMyIGNoLCBpbnQ4X3QgcmFkaXgpOw0KIyAyMjUwICIuLi9j
b21tb24vdW5pY29kZS91Y2hhci5oIg0KZXh0ZXJuICJDIiBVQ2hhcjMyDQp1X2ZvckRpZ2l0XzJf
MihpbnQzMl90IGRpZ2l0LCBpbnQ4X3QgcmFkaXgpOw0KIyAyMjY3ICIuLi9jb21tb24vdW5pY29k
ZS91Y2hhci5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1X2NoYXJBZ2VfMl8yKFVDaGFyMzIgYywgVVZl
cnNpb25JbmZvIHZlcnNpb25BcnJheSk7DQojIDIyNzcgIi4uL2NvbW1vbi91bmljb2RlL3VjaGFy
LmgiDQpleHRlcm4gIkMiIHZvaWQNCnVfZ2V0VW5pY29kZVZlcnNpb25fMl8yKFVWZXJzaW9uSW5m
byBpbmZvKTsNCiMgMjMwMSAiLi4vY29tbW9uL3VuaWNvZGUvdWNoYXIuaCINCmV4dGVybiAiQyIg
aW50MzJfdA0KdV9nZXRGQ19ORktDX0Nsb3N1cmVfMl8yKFVDaGFyMzIgYywgVUNoYXIgKmRlc3Qs
IGludDMyX3QgZGVzdENhcGFjaXR5LCBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCg0KDQoNCg0K
DQoNCg0KdHlwZWRlZiBVQmxvY2tDb2RlIFVDaGFyU2NyaXB0Ow0KDQp9DQojIDI3ICJ1Y29sX2Vs
bS5jcHAiIDINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiIDENCiMgMjUgIi4uL2Nv
bW1vbi91bmljb2RlL3VuaXN0ci5oIg0KIyAxICIuLi9jb21tb24vdW5pY29kZS91b2JqZWN0Lmgi
IDENCiMgMjIgIi4uL2NvbW1vbi91bmljb2RlL3VvYmplY3QuaCINCm5hbWVzcGFjZSBpY3VfMl8y
IHsNCiMgNjMgIi4uL2NvbW1vbi91bmljb2RlL3VvYmplY3QuaCINCmNsYXNzIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIFVPYmplY3Qgew0KcHVibGljOg0KDQoNCg0KDQoNCiAgICB2aXJ0dWFs
IGlubGluZSB+VU9iamVjdCgpIHt9DQojIDgyICIuLi9jb21tb24vdW5pY29kZS91b2JqZWN0Lmgi
DQogICAgdm9pZCAqb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKTsNCiAgICB2b2lkICpvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSk7DQojIDkzICIuLi9jb21tb24vdW5pY29kZS91b2JqZWN0Lmgi
DQogICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCAqcCk7DQogICAgdm9pZCBvcGVyYXRvciBk
ZWxldGVbXSh2b2lkICpwKTsNCg0KDQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgaW5saW5lIFVDbGFz
c0lEIGdldER5bmFtaWNDbGFzc0lEKCkgY29uc3QgPSAwOw0KDQpwcm90ZWN0ZWQ6DQojIDEzNSAi
Li4vY29tbW9uL3VuaWNvZGUvdW9iamVjdC5oIg0KfTsNCg0KfQ0KIyAyNiAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pc3RyLmgiIDINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvcmVwLmgiIDENCiMgMjAg
Ii4uL2NvbW1vbi91bmljb2RlL3JlcC5oIg0KbmFtZXNwYWNlIGljdV8yXzIgew0KDQpjbGFzcyBV
bmljb2RlU3RyaW5nOw0KIyA2NSAiLi4vY29tbW9uL3VuaWNvZGUvcmVwLmgiDQpjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBSZXBsYWNlYWJsZSA6IHB1YmxpYyBVT2JqZWN0IHsNCg0K
cHVibGljOg0KDQoNCg0KDQogICAgdmlydHVhbCB+UmVwbGFjZWFibGUoKTsNCg0KDQoNCg0KDQoN
CiAgICBpbmxpbmUgaW50MzJfdCBsZW5ndGgoKSBjb25zdDsNCiMgODggIi4uL2NvbW1vbi91bmlj
b2RlL3JlcC5oIg0KICAgIGlubGluZSBVQ2hhciBjaGFyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0
Ow0KIyAxMDIgIi4uL2NvbW1vbi91bmljb2RlL3JlcC5oIg0KICAgIGlubGluZSBVQ2hhcjMyIGNo
YXIzMkF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsNCiMgMTE0ICIuLi9jb21tb24vdW5pY29kZS9y
ZXAuaCINCiAgICB2aXJ0dWFsIHZvaWQgZXh0cmFjdEJldHdlZW4oaW50MzJfdCBzdGFydCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsaW1pdCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBjb25zdCA9IDA7DQoj
IDEzOCAiLi4vY29tbW9uL3VuaWNvZGUvcmVwLmgiDQogICAgdmlydHVhbCB2b2lkIGhhbmRsZVJl
cGxhY2VCZXR3ZWVuKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgbGltaXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpID0gMDsNCiMgMTY2ICIuLi9jb21tb24v
dW5pY29kZS9yZXAuaCINCiAgICB2aXJ0dWFsIHZvaWQgY29weShpbnQzMl90IHN0YXJ0LCBpbnQz
Ml90IGxpbWl0LCBpbnQzMl90IGRlc3QpID0gMDsNCiMgMTc3ICIuLi9jb21tb24vdW5pY29kZS9y
ZXAuaCINCiAgICB2aXJ0dWFsIFVCb29sIGhhc01ldGFEYXRhKCkgY29uc3Q7DQoNCnByb3RlY3Rl
ZDoNCg0KDQoNCg0KICAgIFJlcGxhY2VhYmxlKCk7DQoNCg0KDQoNCiAgICB2aXJ0dWFsIGludDMy
X3QgZ2V0TGVuZ3RoKCkgY29uc3QgPSAwOw0KDQoNCg0KDQogICAgdmlydHVhbCBVQ2hhciBnZXRD
aGFyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0ID0gMDsNCg0KDQoNCg0KICAgIHZpcnR1YWwgVUNo
YXIzMiBnZXRDaGFyMzJBdChpbnQzMl90IG9mZnNldCkgY29uc3QgPSAwOw0KfTsNCg0KaW5saW5l
IFJlcGxhY2VhYmxlOjpSZXBsYWNlYWJsZSgpIHt9DQoNCmlubGluZSBSZXBsYWNlYWJsZTo6flJl
cGxhY2VhYmxlKCkge30NCg0KaW5saW5lIGludDMyX3QNClJlcGxhY2VhYmxlOjpsZW5ndGgoKSBj
b25zdCB7DQogICAgcmV0dXJuIGdldExlbmd0aCgpOw0KfQ0KDQppbmxpbmUgVUNoYXINClJlcGxh
Y2VhYmxlOjpjaGFyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0IHsNCiAgICByZXR1cm4gZ2V0Q2hh
ckF0KG9mZnNldCk7DQp9DQoNCmlubGluZSBVQ2hhcjMyDQpSZXBsYWNlYWJsZTo6Y2hhcjMyQXQo
aW50MzJfdCBvZmZzZXQpIGNvbnN0IHsNCiAgICByZXR1cm4gZ2V0Q2hhcjMyQXQob2Zmc2V0KTsN
Cn0NCg0KDQoNCn0NCiMgMjcgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIiAyDQoNCnN0cnVj
dCBVQ29udmVydGVyOw0KY2xhc3MgU3RyaW5nVGhyZWFkVGVzdDsNCiMgNDEgIi4uL2NvbW1vbi91
bmljb2RlL3VuaXN0ci5oIg0KbmFtZXNwYWNlIGljdV8yXzIgew0KDQpjbGFzcyBMb2NhbGU7DQpj
bGFzcyBVQ2hhclJlZmVyZW5jZTsNCmNsYXNzIFVuaWNvZGVDb252ZXJ0ZXI7DQpjbGFzcyBTdHJp
bmdDaGFyYWN0ZXJJdGVyYXRvcjsNCmNsYXNzIEJyZWFrSXRlcmF0b3I7DQojIDE1NiAiLi4vY29t
bW9uL3VuaWNvZGUvdW5pc3RyLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBV
bmljb2RlU3RyaW5nIDogcHVibGljIFJlcGxhY2VhYmxlDQp7DQpwdWJsaWM6DQojIDE3MyAiLi4v
Y29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBVQm9vbCBvcGVyYXRvcj09IChjb25z
dCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsNCiMgMTgyICIuLi9jb21tb24vdW5pY29kZS91
bmlzdHIuaCINCiAgaW5saW5lIFVCb29sIG9wZXJhdG9yIT0gKGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHRleHQpIGNvbnN0Ow0KIyAxOTEgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxp
bmUgVUJvb2wgb3BlcmF0b3I+IChjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsNCiMg
MjAwICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIFVCb29sIG9wZXJhdG9y
PCAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3Q7DQojIDIwOSAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBVQm9vbCBvcGVyYXRvcj49IChjb25zdCBVbmljb2Rl
U3RyaW5nJiB0ZXh0KSBjb25zdDsNCiMgMjE4ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCIN
CiAgaW5saW5lIFVCb29sIG9wZXJhdG9yPD0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNv
bnN0Ow0KIyAyMzEgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgaW50OF90
IGNvbXBhcmUoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3Q7DQojIDI0NyAiLi4vY29t
bW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQ4X3QgY29tcGFyZShpbnQzMl90IHN0
YXJ0LA0KICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICBjb25zdCBVbmljb2RlU3Ry
aW5nJiBzcmNUZXh0KSBjb25zdDsNCiMgMjY4ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCIN
CiAgIGlubGluZSBpbnQ4X3QgY29tcGFyZShpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgaW50MzJf
dCBsZW5ndGgsDQogICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LA0KICAgICAg
ICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsN
CiMgMjg2ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDhfdCBjb21w
YXJlKGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBj
b25zdDsNCiMgMzAzICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDhf
dCBjb21wYXJlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAg
ICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycykgY29uc3Q7DQojIDMyNCAiLi4vY29tbW9uL3VuaWNv
ZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQ4X3QgY29tcGFyZShpbnQzMl90IHN0YXJ0LA0KICAg
ICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsDQog
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNv
bnN0Ow0KIyAzNDcgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgaW50OF90
IGNvbXBhcmVCZXR3ZWVuKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICBpbnQzMl90IGxpbWl0
LA0KICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwNCiAgICAgICAgICAg
IGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICBpbnQzMl90IHNyY0xpbWl0KSBjb25zdDsN
CiMgMzcwICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDhfdCBjb21w
YXJlQ29kZVBvaW50T3JkZXIoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3Q7DQojIDM5
MSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQ4X3QgY29tcGFyZUNv
ZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KSBjb25zdDsNCiMgNDE2ICIuLi9j
b21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgIGlubGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQb2lu
dE9yZGVyKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Ow0KIyA0NDAgIi4uL2Nv
bW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgaW50OF90IGNvbXBhcmVDb2RlUG9pbnRP
cmRlcihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsNCiMgNDYyICIuLi9jb21tb24vdW5p
Y29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDhfdCBjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50
MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyICpzcmNDaGFycykgY29uc3Q7DQojIDQ4NyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgi
DQogIGlubGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3Ro
KSBjb25zdDsNCiMgNTE0ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGlu
dDhfdCBjb21wYXJlQ29kZVBvaW50T3JkZXJCZXR3ZWVuKGludDMyX3Qgc3RhcnQsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0
cmluZyYgc3JjVGV4dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90IHNyY0xpbWl0KSBjb25zdDsNCiMgNTM4ICIuLi9jb21tb24vdW5p
Y29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDhfdCBjYXNlQ29tcGFyZShjb25zdCBVbmljb2Rl
U3RyaW5nJiB0ZXh0LCB1aW50MzJfdCBvcHRpb25zKSBjb25zdDsNCiMgNTYwICIuLi9jb21tb24v
dW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDhfdCBjYXNlQ29tcGFyZShpbnQzMl90IHN0
YXJ0LA0KICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICBjb25zdCBVbmljb2RlU3Ry
aW5nJiBzcmNUZXh0LA0KICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7DQojIDU4NyAi
Li4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUo
aW50MzJfdCBzdGFydCwNCiAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgY29uc3Qg
VW5pY29kZVN0cmluZyYgc3JjVGV4dCwNCiAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAg
ICAgICBpbnQzMl90IHNyY0xlbmd0aCwNCiAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0
Ow0KIyA2MTMgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgaW50OF90IGNh
c2VDb21wYXJlKGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoLA0KICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7DQojIDYzNyAiLi4vY29tbW9u
L3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJfdCBz
dGFydCwNCiAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgY29uc3QgVUNoYXIgKnNy
Y0NoYXJzLA0KICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7DQojIDY2NCAiLi4vY29t
bW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJf
dCBzdGFydCwNCiAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgY29uc3QgVUNoYXIg
KnNyY0NoYXJzLA0KICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoLA0KICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7DQojIDY5MyAiLi4v
Y29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmVCZXR3
ZWVuKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICBpbnQzMl90IGxpbWl0LA0KICAgICAgICAg
ICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwNCiAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsDQogICAgICAgICAgICBpbnQzMl90IHNyY0xpbWl0LA0KICAgICAgICAgICAgdWludDMy
X3Qgb3B0aW9ucykgY29uc3Q7DQojIDcwNyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQog
IGlubGluZSBVQm9vbCBzdGFydHNXaXRoKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0
Ow0KIyA3MTkgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgVUJvb2wgc3Rh
cnRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LA0KICAgICAgICAgICAgaW50MzJf
dCBzcmNTdGFydCwNCiAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsNCiMgNzMx
ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIFVCb29sIHN0YXJ0c1dpdGgo
Y29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNv
bnN0Ow0KIyA3NDMgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgVUJvb2wg
c3RhcnRzV2l0aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsDQogICAgICAgICAgICBpbnQzMl90IHNy
Y1N0YXJ0LA0KICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0Ow0KIyA3NTQgIi4u
L2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgVUJvb2wgZW5kc1dpdGgoY29uc3Qg
VW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3Q7DQojIDc2NiAiLi4vY29tbW9uL3VuaWNvZGUvdW5p
c3RyLmgiDQogIGlubGluZSBVQm9vbCBlbmRzV2l0aChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNU
ZXh0LA0KICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgaW50MzJfdCBzcmNM
ZW5ndGgpIGNvbnN0Ow0KIyA3NzggIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxp
bmUgVUJvb2wgZW5kc1dpdGgoY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAgIGludDMy
X3Qgc3JjTGVuZ3RoKSBjb25zdDsNCiMgNzkxICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCIN
CiAgaW5saW5lIFVCb29sIGVuZHNXaXRoKGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAg
ICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsN
CiMgODA2ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMyX3QgaW5k
ZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsNCiMgODE3ICIuLi9jb21tb24v
dW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMyX3QgaW5kZXhPZihjb25zdCBVbmljb2Rl
U3RyaW5nJiB0ZXh0LA0KICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdDsNCiMgODMx
ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMyX3QgaW5kZXhPZihj
b25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LA0KICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LA0K
ICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7DQojIDg1MSAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQzMl90IGluZGV4T2YoY29uc3QgVW5pY29kZVN0
cmluZyYgc3JjVGV4dCwNCiAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAg
ICAgICAgaW50MzJfdCBzcmNMZW5ndGgsDQogICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsDQog
ICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsNCiMgODY4ICIuLi9jb21tb24vdW5p
Y29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMyX3QgaW5kZXhPZihjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsDQogICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0KSBjb25zdDsNCiMgODg0ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCIN
CiAgaW5saW5lIGludDMyX3QgaW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsDQogICAgICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LA0K
ICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7DQojIDkwNSAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pc3RyLmgiDQogIGludDMyX3QgaW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMs
DQogICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoLA0KICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICBp
bnQzMl90IGxlbmd0aCkgY29uc3Q7DQojIDkxOCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgi
DQogIGlubGluZSBpbnQzMl90IGluZGV4T2YoVUNoYXIgYykgY29uc3Q7DQojIDk0MSAiLi4vY29t
bW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQzMl90IGluZGV4T2YoVUNoYXIzMiBj
KSBjb25zdDsNCiMgOTUxICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGlu
dDMyX3QgaW5kZXhPZihVQ2hhciBjLA0KICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25z
dDsNCiMgOTc2ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMyX3Qg
aW5kZXhPZihVQ2hhcjMyIGMsDQogICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0Ow0K
IyA5ODkgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgaW50MzJfdCBpbmRl
eE9mKFVDaGFyIGMsDQogICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAg
IGludDMyX3QgbGVuZ3RoKSBjb25zdDsNCiMgMTAxNyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3Ry
LmgiDQogIGlubGluZSBpbnQzMl90IGluZGV4T2YoVUNoYXIzMiBjLA0KICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7DQojIDEw
MjkgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgaW50MzJfdCBsYXN0SW5k
ZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdDsNCiMgMTA0MCAiLi4vY29tbW9u
L3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKGNvbnN0IFVu
aWNvZGVTdHJpbmcmIHRleHQsDQogICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0Ow0K
IyAxMDU0ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMyX3QgbGFz
dEluZGV4T2YoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwNCiAgICAgICAgICAgICAgaW50MzJf
dCBzdGFydCwNCiAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0Ow0KIyAxMDc0ICIu
Li9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2Yo
Y29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwNCiAgICAgICAgICAgICAgaW50MzJfdCBzcmNT
dGFydCwNCiAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsDQogICAgICAgICAgICAgIGlu
dDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsNCiMgMTA5
MCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQzMl90IGxhc3RJbmRl
eE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgsDQogICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0Ow0KIyAxMTA2ICIuLi9jb21t
b24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoY29uc3Qg
VUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwNCiAgICAg
ICAgICAgICAgaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNv
bnN0Ow0KIyAxMTI3ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW50MzJfdCBsYXN0
SW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsDQogICAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsDQogICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7DQojIDEx
NDAgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgaW50MzJfdCBsYXN0SW5k
ZXhPZihVQ2hhciBjKSBjb25zdDsNCiMgMTE2MyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgi
DQogIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKFVDaGFyMzIgYykgY29uc3Q7DQojIDExNzMg
Ii4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhP
ZihVQ2hhciBjLA0KICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdDsNCiMgMTE5OCAi
Li4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9m
KFVDaGFyMzIgYywNCiAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3Q7DQojIDEyMTEg
Ii4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhP
ZihVQ2hhciBjLA0KICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICBp
bnQzMl90IGxlbmd0aCkgY29uc3Q7DQojIDEyMzkgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5o
Ig0KICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihVQ2hhcjMyIGMsDQogICAgICAgICAgICAg
IGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsNCiMg
MTI1MiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBVQ2hhciBjaGFyQXQo
aW50MzJfdCBvZmZzZXQpIGNvbnN0Ow0KDQoNCg0KDQoNCg0KDQogIGlubGluZSBVQ2hhciBvcGVy
YXRvciBbXSAoaW50MzJfdCBvZmZzZXQpIGNvbnN0Ow0KIyAxMjcxICIuLi9jb21tb24vdW5pY29k
ZS91bmlzdHIuaCINCiAgaW5saW5lIFVDaGFyMzIgY2hhcjMyQXQoaW50MzJfdCBvZmZzZXQpIGNv
bnN0Ow0KIyAxMjg3ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMy
X3QgZ2V0Q2hhcjMyU3RhcnQoaW50MzJfdCBvZmZzZXQpIGNvbnN0Ow0KIyAxMzA5ICIuLi9jb21t
b24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMyX3QgZ2V0Q2hhclN0YXJ0KGludDMy
X3Qgb2Zmc2V0KSBjb25zdDsNCiMgMTMyNiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQog
IGlubGluZSBpbnQzMl90IGdldENoYXIzMkxpbWl0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsNCiMg
MTM0OSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQzMl90IGdldENo
YXJMaW1pdChpbnQzMl90IG9mZnNldCkgY29uc3Q7DQojIDEzOTIgIi4uL2NvbW1vbi91bmljb2Rl
L3VuaXN0ci5oIg0KICBpbnQzMl90IG1vdmVJbmRleDMyKGludDMyX3QgaW5kZXgsIGludDMyX3Qg
ZGVsdGEpIGNvbnN0Ow0KIyAxNDExICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5s
aW5lIHZvaWQgZXh0cmFjdChpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICBpbnQzMl90IGxlbmd0
aCwNCiAgICAgICAgICAgVUNoYXIgKmRzdCwNCiAgICAgICAgICAgaW50MzJfdCBkc3RTdGFydCA9
IDApIGNvbnN0Ow0KIyAxNDM3ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW50MzJf
dA0KICBleHRyYWN0KFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwNCiAgICAgICAg
ICBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0Ow0KIyAxNDUxICIuLi9jb21tb24vdW5pY29k
ZS91bmlzdHIuaCINCiAgaW5saW5lIHZvaWQgZXh0cmFjdChpbnQzMl90IHN0YXJ0LA0KICAgICAg
ICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBj
b25zdDsNCiMgMTQ2NiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSB2b2lk
IGV4dHJhY3RCZXR3ZWVuKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgIGludDMyX3QgbGlt
aXQsDQogICAgICAgICAgICAgIFVDaGFyICpkc3QsDQogICAgICAgICAgICAgIGludDMyX3QgZHN0
U3RhcnQgPSAwKSBjb25zdDsNCiMgMTQ4MCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQog
IHZpcnR1YWwgdm9pZCBleHRyYWN0QmV0d2VlbihpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAg
ICBpbnQzMl90IGxpbWl0LA0KICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiB0YXJnZXQpIGNv
bnN0Ow0KIyAxNTA0ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGludDMy
X3QgZXh0cmFjdChpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0
TGVuZ3RoLA0KICAgICAgICAgICAgICAgICBjaGFyICp0YXJnZXQsDQogICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKmNvZGVwYWdlID0gMCkgY29uc3Q7DQojIDE1MzMgIi4uL2NvbW1vbi91bmlj
b2RlL3VuaXN0ci5oIg0KICBpbnQzMl90IGV4dHJhY3QoaW50MzJfdCBzdGFydCwNCiAgICAgICAg
ICAgaW50MzJfdCBzdGFydExlbmd0aCwNCiAgICAgICAgICAgY2hhciAqdGFyZ2V0LA0KICAgICAg
ICAgICB1aW50MzJfdCB0YXJnZXRMZW5ndGgsDQogICAgICAgICAgIGNvbnN0IGNoYXIgKmNvZGVw
YWdlID0gMCkgY29uc3Q7DQojIDE1NTYgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBp
bnQzMl90IGV4dHJhY3QoY2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksDQogICAgICAg
ICAgICAgICAgICBVQ29udmVydGVyICpjbnYsDQogICAgICAgICAgICAgICAgICBVRXJyb3JDb2Rl
ICZlcnJvckNvZGUpIGNvbnN0Ow0KIyAxNTY4ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCIN
CiAgaW5saW5lIGludDMyX3QgbGVuZ3RoKHZvaWQpIGNvbnN0Ow0KIyAxNTgyICIuLi9jb21tb24v
dW5pY29kZS91bmlzdHIuaCINCiAgaW50MzJfdA0KICBjb3VudENoYXIzMihpbnQzMl90IHN0YXJ0
PTAsIGludDMyX3QgbGVuZ3RoPTB4N2ZmZmZmZmYpIGNvbnN0Ow0KDQoNCg0KDQoNCg0KICBpbmxp
bmUgVUJvb2wgaXNFbXB0eSh2b2lkKSBjb25zdDsNCiMgMTYwMSAiLi4vY29tbW9uL3VuaWNvZGUv
dW5pc3RyLmgiDQogIGlubGluZSBVQm9vbCBlbXB0eSh2b2lkKSBjb25zdDsNCiMgMTYxMiAiLi4v
Y29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBpbnQzMl90IGdldENhcGFjaXR5KHZv
aWQpIGNvbnN0Ow0KIyAxNjIxICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5l
IGludDMyX3QgaGFzaENvZGUodm9pZCkgY29uc3Q7DQoNCg0KDQoNCg0KDQoNCiAgaW5saW5lIFVC
b29sIGlzQm9ndXModm9pZCkgY29uc3Q7DQojIDE2NDUgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0
ci5oIg0KICAgVW5pY29kZVN0cmluZyYgb3BlcmF0b3I9IChjb25zdCBVbmljb2RlU3RyaW5nJiBz
cmNUZXh0KTsNCiMgMTY1NCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBV
bmljb2RlU3RyaW5nJiBvcGVyYXRvcj0gKFVDaGFyIGNoKTsNCiMgMTY2MyAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBVbmljb2RlU3RyaW5nJiBvcGVyYXRvcj0gKFVDaGFy
MzIgY2gpOw0KIyAxNjc2ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIFVu
aWNvZGVTdHJpbmcmIHNldFRvKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsDQogICAgICAg
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0KTsNCiMgMTY5MiAiLi4vY29tbW9uL3VuaWNvZGUvdW5p
c3RyLmgiDQogIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVbmljb2RlU3RyaW5n
JiBzcmNUZXh0LA0KICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAg
ICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsNCiMgMTcwNCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3Ry
LmgiDQogIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVbmljb2RlU3RyaW5nJiBz
cmNUZXh0KTsNCiMgMTcxNCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBV
bmljb2RlU3RyaW5nJiBzZXRUbyhjb25zdCBVQ2hhciAqc3JjQ2hhcnMsDQogICAgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCk7DQojIDE3MjUgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5o
Ig0KICBVbmljb2RlU3RyaW5nJiBzZXRUbyhVQ2hhciBzcmNDaGFyKTsNCiMgMTczNSAiLi4vY29t
bW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIFVuaWNvZGVTdHJpbmcmIHNldFRvKFVDaGFyMzIgc3Jj
Q2hhcik7DQojIDE3NTcgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBVbmljb2RlU3Ry
aW5nICZzZXRUbyhVQm9vbCBpc1Rlcm1pbmF0ZWQsDQogICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFVDaGFyICp0ZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHRleHRMZW5n
dGgpOw0KIyAxNzgwICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgVW5pY29kZVN0cmlu
ZyAmc2V0VG8oVUNoYXIgKmJ1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBi
dWZmTGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGJ1ZmZDYXBhY2l0eSk7
DQojIDE4MDUgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICB2b2lkIHNldFRvQm9ndXMo
KTsNCiMgMTgxNCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIFVuaWNvZGVTdHJpbmcm
IHNldENoYXJBdChpbnQzMl90IG9mZnNldCwNCiAgICAgICAgICAgICAgIFVDaGFyIGNoKTsNCiMg
MTgyNyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogaW5saW5lIFVuaWNvZGVTdHJpbmcm
IG9wZXJhdG9yKz0gKFVDaGFyIGNoKTsNCiMgMTgzNiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3Ry
LmgiDQogaW5saW5lIFVuaWNvZGVTdHJpbmcmIG9wZXJhdG9yKz0gKFVDaGFyMzIgY2gpOw0KIyAx
ODQ2ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIFVuaWNvZGVTdHJpbmcm
IG9wZXJhdG9yKz0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpOw0KIyAxODYyICIuLi9j
b21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChj
b25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LA0KICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFy
dCwNCiAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsNCiMgMTg3MyAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBlbmQoY29uc3QgVW5p
Y29kZVN0cmluZyYgc3JjVGV4dCk7DQojIDE4ODggIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5o
Ig0KICBpbmxpbmUgVW5pY29kZVN0cmluZyYgYXBwZW5kKGNvbnN0IFVDaGFyICpzcmNDaGFycywN
CiAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCk7DQojIDE5MDAgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgVW5p
Y29kZVN0cmluZyYgYXBwZW5kKGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAgICAgIGlu
dDMyX3Qgc3JjTGVuZ3RoKTsNCg0KDQoNCg0KDQoNCg0KICBpbmxpbmUgVW5pY29kZVN0cmluZyYg
YXBwZW5kKFVDaGFyIHNyY0NoYXIpOw0KDQoNCg0KDQoNCg0KDQogIGlubGluZSBVbmljb2RlU3Ry
aW5nJiBhcHBlbmQoVUNoYXIzMiBzcmNDaGFyKTsNCiMgMTkzNSAiLi4vY29tbW9uL3VuaWNvZGUv
dW5pc3RyLmgiDQogIGlubGluZSBVbmljb2RlU3RyaW5nJiBpbnNlcnQoaW50MzJfdCBzdGFydCwN
CiAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsDQogICAgICAgICAgICBp
bnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpOw0KIyAxOTQ4
ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGlu
c2VydChpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3Jj
VGV4dCk7DQojIDE5NjQgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgVW5p
Y29kZVN0cmluZyYgaW5zZXJ0KGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICBjb25zdCBVQ2hh
ciAqc3JjQ2hhcnMsDQogICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgpOw0KIyAxOTc4ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCIN
CiAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGluc2VydChpbnQzMl90IHN0YXJ0LA0KICAgICAgICAg
ICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgp
Ow0KIyAxOTkwICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIFVuaWNvZGVT
dHJpbmcmIGluc2VydChpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgVUNoYXIgc3JjQ2hhcik7
DQojIDIwMDEgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgVW5pY29kZVN0
cmluZyYgaW5zZXJ0KGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICBVQ2hhcjMyIHNyY0NoYXIp
Ow0KIyAyMDI0ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgVW5pY29kZVN0cmluZyYg
cmVwbGFjZShpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAg
ICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsDQogICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7DQojIDIwNDIg
Ii4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBVbmljb2RlU3RyaW5nJiByZXBsYWNlKGlu
dDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICAgICAg
Y29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCk7DQojIDIwNjMgIi4uL2NvbW1vbi91bmljb2Rl
L3VuaXN0ci5oIg0KICBVbmljb2RlU3RyaW5nJiByZXBsYWNlKGludDMyX3Qgc3RhcnQsDQogICAg
ICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0No
YXJzLA0KICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpOw0KIyAyMDgxICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5s
aW5lIFVuaWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICBp
bnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsDQogICAg
ICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpOw0KIyAyMDk3ICIuLi9jb21tb24vdW5pY29kZS91
bmlzdHIuaCINCiAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBzdGFydCwN
CiAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAgICBVQ2hhciBzcmNDaGFy
KTsNCiMgMjExMiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBVbmljb2Rl
U3RyaW5nJiByZXBsYWNlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgaW50MzJfdCBsZW5n
dGgsDQogICAgICAgICAgICAgVUNoYXIzMiBzcmNDaGFyKTsNCiMgMjEyNSAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBVbmljb2RlU3RyaW5nJiByZXBsYWNlQmV0d2Vlbihp
bnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsDQogICAgICAgICAg
ICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCk7DQojIDIxNDMgIi4uL2NvbW1vbi91
bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgVW5pY29kZVN0cmluZyYgcmVwbGFjZUJldHdlZW4o
aW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LA0KICAgICAgICAg
ICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsDQogICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xpbWl0KTsNCiMgMjE1
OSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIHZpcnR1YWwgdm9pZCBoYW5kbGVSZXBs
YWNlQmV0d2VlbihpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCBsaW1pdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpOw0KDQoNCg0KDQoNCiAgdmlydHVhbCBVQm9vbCBo
YXNNZXRhRGF0YSgpIGNvbnN0Ow0KIyAyMTg0ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCIN
CiAgdmlydHVhbCB2b2lkIGNvcHkoaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1pdCwgaW50MzJf
dCBkZXN0KTsNCiMgMjE5NiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIGlubGluZSBV
bmljb2RlU3RyaW5nJiBmaW5kQW5kUmVwbGFjZShjb25zdCBVbmljb2RlU3RyaW5nJiBvbGRUZXh0
LA0KICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG5ld1RleHQpOw0KIyAyMjEw
ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGZp
bmRBbmRSZXBsYWNlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICAgaW50MzJfdCBsZW5n
dGgsDQogICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgb2xkVGV4dCwNCiAgICAg
ICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBuZXdUZXh0KTsNCiMgMjIzMiAiLi4vY29t
bW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIFVuaWNvZGVTdHJpbmcmIGZpbmRBbmRSZXBsYWNlKGlu
dDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICAg
ICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgb2xkVGV4dCwNCiAgICAgICAgICAgICAgICBpbnQz
Ml90IG9sZFN0YXJ0LA0KICAgICAgICAgICAgICAgIGludDMyX3Qgb2xkTGVuZ3RoLA0KICAgICAg
ICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG5ld1RleHQsDQogICAgICAgICAgICAgICAg
aW50MzJfdCBuZXdTdGFydCwNCiAgICAgICAgICAgICAgICBpbnQzMl90IG5ld0xlbmd0aCk7DQoj
IDIyNDkgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgVW5pY29kZVN0cmlu
ZyYgcmVtb3ZlKHZvaWQpOw0KIyAyMjU5ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAg
aW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlbW92ZShpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoID0gKGludDMyX3QpKChpbnQzMl90KSgy
MTQ3NDgzNjQ3KSkpOw0KIyAyMjcwICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5s
aW5lIFVuaWNvZGVTdHJpbmcmIHJlbW92ZUJldHdlZW4oaW50MzJfdCBzdGFydCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsaW1pdCA9IChpbnQzMl90KSgo
aW50MzJfdCkoMjE0NzQ4MzY0NykpKTsNCiMgMjI4NyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3Ry
LmgiDQogIFVCb29sIHBhZExlYWRpbmcoaW50MzJfdCB0YXJnZXRMZW5ndGgsDQogICAgICAgICAg
ICAgICAgICAgIFVDaGFyIHBhZENoYXIgPSAweDAwMjApOw0KIyAyMzAxICIuLi9jb21tb24vdW5p
Y29kZS91bmlzdHIuaCINCiAgVUJvb2wgcGFkVHJhaWxpbmcoaW50MzJfdCB0YXJnZXRMZW5ndGgs
DQogICAgICAgICAgICAgICAgICAgICBVQ2hhciBwYWRDaGFyID0gMHgwMDIwKTsNCg0KDQoNCg0K
DQoNCg0KICBpbmxpbmUgVUJvb2wgdHJ1bmNhdGUoaW50MzJfdCB0YXJnZXRMZW5ndGgpOw0KDQoN
Cg0KDQoNCg0KICBVbmljb2RlU3RyaW5nJiB0cmltKHZvaWQpOw0KIyAyMzI3ICIuLi9jb21tb24v
dW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJldmVyc2Uodm9pZCk7
DQojIDIzMzcgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgVW5pY29kZVN0
cmluZyYgcmV2ZXJzZShpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgIGludDMyX3QgbGVuZ3Ro
KTsNCg0KDQoNCg0KDQoNCg0KICBVbmljb2RlU3RyaW5nJiB0b1VwcGVyKHZvaWQpOw0KIyAyMzU1
ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgVW5pY29kZVN0cmluZyYgdG9VcHBlcihj
b25zdCBMb2NhbGUmIGxvY2FsZSk7DQoNCg0KDQoNCg0KDQoNCiAgVW5pY29kZVN0cmluZyYgdG9M
b3dlcih2b2lkKTsNCiMgMjM3MiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIFVuaWNv
ZGVTdHJpbmcmIHRvTG93ZXIoY29uc3QgTG9jYWxlJiBsb2NhbGUpOw0KIyAyMzk5ICIuLi9jb21t
b24vdW5pY29kZS91bmlzdHIuaCINCiAgVW5pY29kZVN0cmluZyAmdG9UaXRsZShCcmVha0l0ZXJh
dG9yICp0aXRsZUl0ZXIpOw0KIyAyNDI3ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAg
VW5pY29kZVN0cmluZyAmdG9UaXRsZShCcmVha0l0ZXJhdG9yICp0aXRsZUl0ZXIsIGNvbnN0IExv
Y2FsZSAmbG9jYWxlKTsNCiMgMjQ0MCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIFVu
aWNvZGVTdHJpbmcgJmZvbGRDYXNlKHVpbnQzMl90IG9wdGlvbnM9MCApOw0KIyAyNDg4ICIuLi9j
b21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgVUNoYXIgKmdldEJ1ZmZlcihpbnQzMl90IG1pbkNh
cGFjaXR5KTsNCiMgMjUxMCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIHZvaWQgcmVs
ZWFzZUJ1ZmZlcihpbnQzMl90IG5ld0xlbmd0aD0tMSk7DQojIDI1NDIgIi4uL2NvbW1vbi91bmlj
b2RlL3VuaXN0ci5oIg0KICBpbmxpbmUgY29uc3QgVUNoYXIgKmdldEJ1ZmZlcigpIGNvbnN0Ow0K
IyAyNTc3ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW5saW5lIGNvbnN0IFVDaGFy
ICpnZXRUZXJtaW5hdGVkQnVmZmVyKCk7DQojIDI1ODYgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0
ci5oIg0KICBVbmljb2RlU3RyaW5nKCk7DQojIDI1OTkgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0
ci5oIg0KICBVbmljb2RlU3RyaW5nKGludDMyX3QgY2FwYWNpdHksIFVDaGFyMzIgYywgaW50MzJf
dCBjb3VudCk7DQoNCg0KDQoNCg0KDQogIFVuaWNvZGVTdHJpbmcoVUNoYXIgY2gpOw0KDQoNCg0K
DQoNCg0KICBVbmljb2RlU3RyaW5nKFVDaGFyMzIgY2gpOw0KDQoNCg0KDQoNCg0KDQogIFVuaWNv
ZGVTdHJpbmcoY29uc3QgVUNoYXIgKnRleHQpOw0KIyAyNjMwICIuLi9jb21tb24vdW5pY29kZS91
bmlzdHIuaCINCiAgVW5pY29kZVN0cmluZyhjb25zdCBVQ2hhciAqdGV4dCwNCiAgICAgICAgaW50
MzJfdCB0ZXh0TGVuZ3RoKTsNCiMgMjY1MiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQog
IFVuaWNvZGVTdHJpbmcoVUJvb2wgaXNUZXJtaW5hdGVkLA0KICAgICAgICAgICAgICAgIGNvbnN0
IFVDaGFyICp0ZXh0LA0KICAgICAgICAgICAgICAgIGludDMyX3QgdGV4dExlbmd0aCk7DQojIDI2
NzQgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBVbmljb2RlU3RyaW5nKFVDaGFyICpi
dWZmZXIsIGludDMyX3QgYnVmZkxlbmd0aCwgaW50MzJfdCBidWZmQ2FwYWNpdHkpOw0KIyAyNjg3
ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgVW5pY29kZVN0cmluZyhjb25zdCBjaGFy
ICpjb2RlcGFnZURhdGEsDQogICAgICAgIGNvbnN0IGNoYXIgKmNvZGVwYWdlID0gMCk7DQojIDI3
MDIgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBVbmljb2RlU3RyaW5nKGNvbnN0IGNo
YXIgKmNvZGVwYWdlRGF0YSwNCiAgICAgICAgaW50MzJfdCBkYXRhTGVuZ3RoLA0KICAgICAgICBj
b25zdCBjaGFyICpjb2RlcGFnZSA9IDApOw0KIyAyNzI3ICIuLi9jb21tb24vdW5pY29kZS91bmlz
dHIuaCINCiAgVW5pY29kZVN0cmluZygNCiAgICAgICAgY29uc3QgY2hhciAqc3JjLCBpbnQzMl90
IHNyY0xlbmd0aCwNCiAgICAgICAgVUNvbnZlcnRlciAqY252LA0KICAgICAgICBVRXJyb3JDb2Rl
ICZlcnJvckNvZGUpOw0KDQoNCg0KDQoNCg0KDQogIFVuaWNvZGVTdHJpbmcoY29uc3QgVW5pY29k
ZVN0cmluZyYgdGhhdCk7DQoNCg0KDQoNCg0KDQoNCiAgVW5pY29kZVN0cmluZyhjb25zdCBVbmlj
b2RlU3RyaW5nJiBzcmMsIGludDMyX3Qgc3JjU3RhcnQpOw0KIyAyNzU1ICIuLi9jb21tb24vdW5p
Y29kZS91bmlzdHIuaCINCiAgVW5pY29kZVN0cmluZyhjb25zdCBVbmljb2RlU3RyaW5nJiBzcmMs
IGludDMyX3Qgc3JjU3RhcnQsIGludDMyX3Qgc3JjTGVuZ3RoKTsNCg0KDQoNCg0KICB+VW5pY29k
ZVN0cmluZygpOw0KIyAyNzg3ICIuLi9jb21tb24vdW5pY29kZS91bmlzdHIuaCINCiAgaW50MzJf
dCBudW1EaXNwbGF5Q2VsbHMoaW50MzJfdCBzdGFydCA9IDAsDQogICAgICAgICAgICAgIGludDMy
X3QgbGVuZ3RoID0gKChpbnQzMl90KSgyMTQ3NDgzNjQ3KSksDQogICAgICAgICAgICAgIFVCb29s
IGFzaWFuID0gMSkgY29uc3Q7DQojIDI3OTggIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0K
ICBVQ2hhclJlZmVyZW5jZSBvcGVyYXRvcltdIChpbnQzMl90IHBvcyk7DQojIDI4MzMgIi4uL2Nv
bW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBVbmljb2RlU3RyaW5nIHVuZXNjYXBlKCkgY29uc3Q7
DQojIDI4NTQgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBVQ2hhcjMyIHVuZXNjYXBl
QXQoaW50MzJfdCAmb2Zmc2V0KSBjb25zdDsNCg0KDQoNCg0KDQoNCiAgdmlydHVhbCBpbmxpbmUg
VUNsYXNzSUQgZ2V0RHluYW1pY0NsYXNzSUQoKSBjb25zdCB7IHJldHVybiBnZXRTdGF0aWNDbGFz
c0lEKCk7IH0NCg0KDQoNCg0KDQoNCiAgc3RhdGljIGlubGluZSBVQ2xhc3NJRCBnZXRTdGF0aWND
bGFzc0lEKCkgeyByZXR1cm4gKFVDbGFzc0lEKSZmZ0NsYXNzSUQ7IH0NCg0KDQoNCg0KDQpwcm90
ZWN0ZWQ6DQoNCg0KDQogIHZpcnR1YWwgaW50MzJfdCBnZXRMZW5ndGgoKSBjb25zdDsNCg0KDQoN
Cg0KDQogIHZpcnR1YWwgVUNoYXIgZ2V0Q2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsNCg0K
DQoNCg0KDQogIHZpcnR1YWwgVUNoYXIzMiBnZXRDaGFyMzJBdChpbnQzMl90IG9mZnNldCkgY29u
c3Q7DQoNCnByaXZhdGU6DQoNCiAgaW5saW5lIGludDhfdA0KICBkb0NvbXBhcmUoaW50MzJfdCBz
dGFydCwNCiAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICAgIGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHNyY1RleHQsDQogICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAg
ICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsNCg0KICBpbnQ4X3QgZG9Db21wYXJlKGludDMy
X3Qgc3RhcnQsDQogICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICBjb25zdCBV
Q2hhciAqc3JjQ2hhcnMsDQogICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAg
IGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsNCg0KICBpbmxpbmUgaW50OF90DQogIGRvQ29tcGFy
ZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2Rl
U3RyaW5nJiBzcmNUZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0
YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7
DQoNCiAgaW50OF90IGRvQ29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7DQoNCiAgaW5saW5lIGlu
dDhfdA0KICBkb0Nhc2VDb21wYXJlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICAgaW50
MzJfdCBsZW5ndGgsDQogICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4
dCwNCiAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgICAgIGlu
dDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0
Ow0KDQogIGludDhfdA0KICBkb0Nhc2VDb21wYXJlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAg
ICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0No
YXJzLA0KICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgsDQogICAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29u
c3Q7DQoNCiAgaW50MzJfdCBkb0luZGV4T2YoVUNoYXIgYywNCiAgICAgICAgICAgIGludDMyX3Qg
c3RhcnQsDQogICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Q7DQoNCg0KICBpbnQzMl90
IGRvSW5kZXhPZihVQ2hhcjMyIGMsDQogICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHN0
YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0Ow0KDQog
IGludDMyX3QgZG9MYXN0SW5kZXhPZihVQ2hhciBjLA0KICAgICAgICAgICAgICAgIGludDMyX3Qg
c3RhcnQsDQogICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0Ow0KDQoNCiAgaW50
MzJfdCBkb0xhc3RJbmRleE9mKFVDaGFyMzIgYywNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoKSBjb25zdDsNCg0KICB2b2lkIGRvRXh0cmFjdChpbnQzMl90IHN0YXJ0LA0KICAgICAgICAg
aW50MzJfdCBsZW5ndGgsDQogICAgICAgICBVQ2hhciAqZHN0LA0KICAgICAgICAgaW50MzJfdCBk
c3RTdGFydCkgY29uc3Q7DQoNCiAgaW5saW5lIHZvaWQgZG9FeHRyYWN0KGludDMyX3Qgc3RhcnQs
DQogICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgIFVuaWNvZGVTdHJpbmcmIHRhcmdl
dCkgY29uc3Q7DQoNCiAgaW5saW5lIFVDaGFyIGRvQ2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25z
dDsNCg0KICBVbmljb2RlU3RyaW5nJiBkb1JlcGxhY2UoaW50MzJfdCBzdGFydCwNCiAgICAgICAg
ICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmlu
ZyYgc3JjVGV4dCwNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAg
ICAgICBpbnQzMl90IHNyY0xlbmd0aCk7DQoNCiAgVW5pY29kZVN0cmluZyYgZG9SZXBsYWNlKGlu
dDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3Rh
cnQsDQogICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7DQoNCiAgVW5pY29kZVN0cmlu
ZyYgZG9SZXZlcnNlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0
aCk7DQoNCg0KICBpbnQzMl90IGRvSGFzaENvZGUodm9pZCkgY29uc3Q7DQoNCg0KICBpbmxpbmUg
VUNoYXIqIGdldEFycmF5U3RhcnQodm9pZCk7DQogIGlubGluZSBjb25zdCBVQ2hhciogZ2V0QXJy
YXlTdGFydCh2b2lkKSBjb25zdDsNCg0KDQoNCg0KDQogIFVCb29sIGFsbG9jYXRlKGludDMyX3Qg
Y2FwYWNpdHkpOw0KDQoNCiAgdm9pZCByZWxlYXNlQXJyYXkodm9pZCk7DQoNCg0KICBpbmxpbmUg
dm9pZCBwaW5JbmRpY2VzKGludDMyX3QmIHN0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QmIGxlbmd0aCkgY29uc3Q7DQoNCg0KICBpbnQzMl90IGRvRXh0cmFjdChpbnQzMl90
IHN0YXJ0LCBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgY2hhciAqZGVzdCwg
aW50MzJfdCBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgICAgICAgICAgIFVDb252ZXJ0ZXIgKmNu
diwNCiAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsNCiMg
MzAxNiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3RyLmgiDQogIHZvaWQgZG9Db2RlcGFnZUNyZWF0
ZShjb25zdCBjaGFyICpjb2RlcGFnZURhdGEsDQogICAgICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IGRhdGFMZW5ndGgsDQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb2Rl
cGFnZSk7DQoNCg0KDQoNCg0KICB2b2lkDQogIGRvQ29kZXBhZ2VDcmVhdGUoY29uc3QgY2hhciAq
Y29kZXBhZ2VEYXRhLA0KICAgICAgICAgICAgICAgICAgIGludDMyX3QgZGF0YUxlbmd0aCwNCiAg
ICAgICAgICAgICAgICAgICBVQ29udmVydGVyICpjb252ZXJ0ZXIsDQogICAgICAgICAgICAgICAg
ICAgVUVycm9yQ29kZSAmc3RhdHVzKTsNCiMgMzA0MCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc3Ry
LmgiDQogIFVCb29sIGNsb25lQXJyYXlJZk5lZWRlZChpbnQzMl90IG5ld0NhcGFjaXR5ID0gLTEs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBncm93Q2FwYWNpdHkgPSAtMSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBkb0NvcHlBcnJheSA9IDEsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqKnBCdWZmZXJUb0RlbGV0ZSA9IDAsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgZm9yY2VDbG9uZSA9IDApOw0KDQoNCiAg
VW5pY29kZVN0cmluZyAmDQogIGNhc2VNYXAoQnJlYWtJdGVyYXRvciAqdGl0bGVJdGVyLA0KICAg
ICAgICAgIGNvbnN0IExvY2FsZSYgbG9jYWxlLA0KICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMs
DQogICAgICAgICAgaW50MzJfdCB0b1doaWNoQ2FzZSk7DQoNCg0KICB2b2lkIGFkZFJlZih2b2lk
KTsNCiAgaW50MzJfdCByZW1vdmVSZWYodm9pZCk7DQogIGludDMyX3QgcmVmQ291bnQodm9pZCkg
Y29uc3Q7DQogIGludDMyX3Qgc2V0UmVmQ291bnQoaW50MzJfdCBjb3VudCk7DQoNCg0KICBlbnVt
IHsNCg0KDQoNCiAgICBVU19TVEFDS0JVRl9TSVpFPTcsDQoNCg0KDQogICAga0ludmFsaWRVQ2hh
cj0weGZmZmYsDQogICAga0dyb3dTaXplPTEyOCwNCiAgICBrSW52YWxpZEhhc2hDb2RlPTAsDQog
ICAga0VtcHR5SGFzaENvZGU9MSwNCg0KDQogICAga0lzQm9ndXM9MSwNCiAgICBrVXNpbmdTdGFj
a0J1ZmZlcj0yLA0KICAgIGtSZWZDb3VudGVkPTQsDQogICAga0J1ZmZlcklzUmVhZG9ubHk9OCwN
CiAgICBrT3BlbkdldEJ1ZmZlcj0xNiwNCg0KDQoNCiAgICBrU2hvcnRTdHJpbmc9a1VzaW5nU3Rh
Y2tCdWZmZXIsDQogICAga0xvbmdTdHJpbmc9a1JlZkNvdW50ZWQsDQogICAga1JlYWRvbmx5QWxp
YXM9a0J1ZmZlcklzUmVhZG9ubHksDQogICAga1dyaXRhYmxlQWxpYXM9MA0KICB9Ow0KDQogIGZy
aWVuZCBjbGFzcyBVbmljb2RlQ29udmVydGVyOw0KDQogIGZyaWVuZCBjbGFzcyBTdHJpbmdDaGFy
YWN0ZXJJdGVyYXRvcjsNCiAgZnJpZW5kIGNsYXNzIFN0cmluZ1RocmVhZFRlc3Q7DQojIDMxMDUg
Ii4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0KICBpbnQzMl90IGZMZW5ndGg7DQogIGludDMy
X3QgZkNhcGFjaXR5Ow0KICBVQ2hhciAqZkFycmF5Ow0KICB1aW50MTZfdCBmRmxhZ3M7DQoNCg0K
DQogIFVDaGFyIGZTdGFja0J1ZmZlciBbIFVTX1NUQUNLQlVGX1NJWkUgXTsNCg0KDQoNCg0KDQog
IHN0YXRpYyBjb25zdCBjaGFyIGZnQ2xhc3NJRDsNCn07DQoNCn0NCg0KDQoNCg0KDQppbmxpbmUg
dm9pZA0KdXBydl9hcnJheUNvcHkoY29uc3QgaWN1XzJfMjo6IFVuaWNvZGVTdHJpbmcgKnNyYywg
aWN1XzJfMjo6IFVuaWNvZGVTdHJpbmcgKmRzdCwgaW50MzJfdCBjb3VudCkNCnsgd2hpbGUoY291
bnQtLSA+IDApICpkc3QrKyA9ICpzcmMrKzsgfQ0KDQppbmxpbmUgdm9pZA0KdXBydl9hcnJheUNv
cHkoY29uc3QgaWN1XzJfMjo6IFVuaWNvZGVTdHJpbmcgKnNyYywgaW50MzJfdCBzcmNTdGFydCwN
CiAgICAgICAgaWN1XzJfMjo6IFVuaWNvZGVTdHJpbmcgKmRzdCwgaW50MzJfdCBkc3RTdGFydCwg
aW50MzJfdCBjb3VudCkNCnsgdXBydl9hcnJheUNvcHkoc3JjK3NyY1N0YXJ0LCBkc3QrZHN0U3Rh
cnQsIGNvdW50KTsgfQ0KDQpuYW1lc3BhY2UgaWN1XzJfMiB7DQoNCg0KDQoNCg0KDQoNCmlubGlu
ZSBVQm9vbA0KVW5pY29kZVN0cmluZzo6b3BlcmF0b3I9PSAoY29uc3QgVW5pY29kZVN0cmluZyYg
dGV4dCkgY29uc3QNCnsNCiAgaWYoaXNCb2d1cygpKSB7DQogICAgcmV0dXJuIHRleHQuaXNCb2d1
cygpOw0KICB9IGVsc2Ugew0KICAgIHJldHVybg0KICAgICAgIXRleHQuaXNCb2d1cygpICYmDQog
ICAgICBmTGVuZ3RoID09IHRleHQuZkxlbmd0aCAmJg0KICAgICAgZG9Db21wYXJlKDAsIGZMZW5n
dGgsIHRleHQsIDAsIHRleHQuZkxlbmd0aCkgPT0gMDsNCiAgfQ0KfQ0KDQppbmxpbmUgVUJvb2wN
ClVuaWNvZGVTdHJpbmc6Om9wZXJhdG9yIT0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNv
bnN0DQp7IHJldHVybiAoISBvcGVyYXRvcj09KHRleHQpKTsgfQ0KDQppbmxpbmUgVUJvb2wNClVu
aWNvZGVTdHJpbmc6Om9wZXJhdG9yPiAoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3QN
CnsgcmV0dXJuIGRvQ29tcGFyZSgwLCBmTGVuZ3RoLCB0ZXh0LCAwLCB0ZXh0LmZMZW5ndGgpID09
IDE7IH0NCg0KaW5saW5lIFVCb29sDQpVbmljb2RlU3RyaW5nOjpvcGVyYXRvcjwgKGNvbnN0IFVu
aWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0DQp7IHJldHVybiBkb0NvbXBhcmUoMCwgZkxlbmd0aCwg
dGV4dCwgMCwgdGV4dC5mTGVuZ3RoKSA9PSAtMTsgfQ0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGVT
dHJpbmc6Om9wZXJhdG9yPj0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQpIGNvbnN0DQp7IHJl
dHVybiBkb0NvbXBhcmUoMCwgZkxlbmd0aCwgdGV4dCwgMCwgdGV4dC5mTGVuZ3RoKSAhPSAtMTsg
fQ0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGVTdHJpbmc6Om9wZXJhdG9yPD0gKGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHRleHQpIGNvbnN0DQp7IHJldHVybiBkb0NvbXBhcmUoMCwgZkxlbmd0aCwgdGV4
dCwgMCwgdGV4dC5mTGVuZ3RoKSAhPSAxOyB9DQoNCmlubGluZSBpbnQ4X3QNClVuaWNvZGVTdHJp
bmc6OmNvbXBhcmUoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3QNCnsgcmV0dXJuIGRv
Q29tcGFyZSgwLCBmTGVuZ3RoLCB0ZXh0LCAwLCB0ZXh0LmZMZW5ndGgpOyB9DQoNCmlubGluZSBp
bnQ4X3QNClVuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAg
ICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYg
c3JjVGV4dCkgY29uc3QNCnsgcmV0dXJuIGRvQ29tcGFyZShzdGFydCwgbGVuZ3RoLCBzcmNUZXh0
LCAwLCBzcmNUZXh0LmZMZW5ndGgpOyB9DQoNCmlubGluZSBpbnQ4X3QNClVuaWNvZGVTdHJpbmc6
OmNvbXBhcmUoY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgICAgaW50MzJfdCBz
cmNMZW5ndGgpIGNvbnN0DQp7IHJldHVybiBkb0NvbXBhcmUoMCwgZkxlbmd0aCwgc3JjQ2hhcnMs
IDAsIHNyY0xlbmd0aCk7IH0NCg0KaW5saW5lIGludDhfdA0KVW5pY29kZVN0cmluZzo6Y29tcGFy
ZShpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAg
ICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LA0KICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdA0K
eyByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCBsZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNM
ZW5ndGgpOyB9DQoNCmlubGluZSBpbnQ4X3QNClVuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJf
dCBzdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAg
Y29uc3QgVUNoYXIgKnNyY0NoYXJzKSBjb25zdA0KeyByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCBs
ZW5ndGgsIHNyY0NoYXJzLCAwLCBsZW5ndGgpOyB9DQoNCmlubGluZSBpbnQ4X3QNClVuaWNvZGVT
dHJpbmc6OmNvbXBhcmUoaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoLA0KICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAg
ICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBj
b25zdA0KeyByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCBsZW5ndGgsIHNyY0NoYXJzLCBzcmNTdGFy
dCwgc3JjTGVuZ3RoKTsgfQ0KDQppbmxpbmUgaW50OF90DQpVbmljb2RlU3RyaW5nOjpjb21wYXJl
QmV0d2VlbihpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICAgICAgaW50MzJfdCBsaW1pdCwN
CiAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsDQogICAgICAg
ICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgICAgICAgaW50MzJfdCBz
cmNMaW1pdCkgY29uc3QNCnsgcmV0dXJuIGRvQ29tcGFyZShzdGFydCwgbGltaXQgLSBzdGFydCwN
CiAgICAgICAgICAgc3JjVGV4dCwgc3JjU3RhcnQsIHNyY0xpbWl0IC0gc3JjU3RhcnQpOyB9DQoN
CmlubGluZSBpbnQ4X3QNClVuaWNvZGVTdHJpbmc6OmRvQ29tcGFyZShpbnQzMl90IHN0YXJ0LA0K
ICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAgICAgY29uc3QgVW5pY29k
ZVN0cmluZyYgc3JjVGV4dCwNCiAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAg
ICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0DQp7DQogIGNvbnN0IFVDaGFyICpzcmND
aGFyczsNCiAgaWYoIXNyY1RleHQuaXNCb2d1cygpKSB7DQogICAgc3JjVGV4dC5waW5JbmRpY2Vz
KHNyY1N0YXJ0LCBzcmNMZW5ndGgpOw0KICAgIHNyY0NoYXJzPXNyY1RleHQuZ2V0QXJyYXlTdGFy
dCgpOw0KICB9IGVsc2Ugew0KICAgIHNyY0NoYXJzPTA7DQogIH0NCiAgcmV0dXJuIGRvQ29tcGFy
ZShzdGFydCwgbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCk7DQp9DQoNCmlu
bGluZSBpbnQ4X3QNClVuaWNvZGVTdHJpbmc6OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdA0KeyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3Jk
ZXIoMCwgZkxlbmd0aCwgdGV4dCwgMCwgdGV4dC5mTGVuZ3RoKTsgfQ0KDQppbmxpbmUgaW50OF90
DQpVbmljb2RlU3RyaW5nOjpjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFydCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNU
ZXh0KSBjb25zdA0KeyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQsIGxlbmd0
aCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5mTGVuZ3RoKTsgfQ0KDQppbmxpbmUgaW50OF90DQpVbmlj
b2RlU3RyaW5nOjpjb21wYXJlQ29kZVBvaW50T3JkZXIoY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBj
b25zdA0KeyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoMCwgZkxlbmd0aCwgc3JjQ2hh
cnMsIDAsIHNyY0xlbmd0aCk7IH0NCg0KaW5saW5lIGludDhfdA0KVW5pY29kZVN0cmluZzo6Y29t
cGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdA0KeyByZXR1cm4g
ZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQsIGxlbmd0aCwgc3JjVGV4dCwgc3JjU3RhcnQs
IHNyY0xlbmd0aCk7IH0NCg0KaW5saW5lIGludDhfdA0KVW5pY29kZVN0cmluZzo6Y29tcGFyZUNv
ZGVQb2ludE9yZGVyKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzKSBjb25zdA0KeyByZXR1cm4gZG9Db21wYXJlQ29k
ZVBvaW50T3JkZXIoc3RhcnQsIGxlbmd0aCwgc3JjQ2hhcnMsIDAsIGxlbmd0aCk7IH0NCg0KaW5s
aW5lIGludDhfdA0KVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVyKGludDMyX3Qg
c3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5n
dGgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNy
Y0NoYXJzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNM
ZW5ndGgpIGNvbnN0DQp7IHJldHVybiBkb0NvbXBhcmVDb2RlUG9pbnRPcmRlcihzdGFydCwgbGVu
Z3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCk7IH0NCg0KaW5saW5lIGludDhfdA0K
VW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVyQmV0d2VlbihpbnQzMl90IHN0YXJ0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxp
bWl0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBV
bmljb2RlU3RyaW5nJiBzcmNUZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xpbWl0KSBjb25zdA0KeyByZXR1cm4gZG9Db21w
YXJlQ29kZVBvaW50T3JkZXIoc3RhcnQsIGxpbWl0IC0gc3RhcnQsDQogICAgICAgICAgIHNyY1Rl
eHQsIHNyY1N0YXJ0LCBzcmNMaW1pdCAtIHNyY1N0YXJ0KTsgfQ0KDQppbmxpbmUgaW50OF90DQpV
bmljb2RlU3RyaW5nOjpkb0NvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBz
cmNUZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBz
cmNTdGFydCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoKSBjb25zdA0Kew0KICBjb25zdCBVQ2hhciAqc3JjQ2hhcnM7DQogIGlmKCFzcmNU
ZXh0LmlzQm9ndXMoKSkgew0KICAgIHNyY1RleHQucGluSW5kaWNlcyhzcmNTdGFydCwgc3JjTGVu
Z3RoKTsNCiAgICBzcmNDaGFycz1zcmNUZXh0LmdldEFycmF5U3RhcnQoKTsNCiAgfSBlbHNlIHsN
CiAgICBzcmNDaGFycz0wOw0KICB9DQogIHJldHVybiBkb0NvbXBhcmVDb2RlUG9pbnRPcmRlcihz
dGFydCwgbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCk7DQp9DQoNCmlubGlu
ZSBpbnQ4X3QNClVuaWNvZGVTdHJpbmc6OmNhc2VDb21wYXJlKGNvbnN0IFVuaWNvZGVTdHJpbmcg
JnRleHQsIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0IHsNCiAgcmV0dXJuIGRvQ2FzZUNvbXBhcmUo
MCwgZkxlbmd0aCwgdGV4dCwgMCwgdGV4dC5mTGVuZ3RoLCBvcHRpb25zKTsNCn0NCg0KaW5saW5l
IGludDhfdA0KVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4dCwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0IHsNCiAgcmV0dXJuIGRvQ2FzZUNvbXBh
cmUoc3RhcnQsIGxlbmd0aCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5mTGVuZ3RoLCBvcHRpb25zKTsN
Cn0NCg0KaW5saW5lIGludDhfdA0KVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoY29uc3QgVUNo
YXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7
DQogIHJldHVybiBkb0Nhc2VDb21wYXJlKDAsIGZMZW5ndGgsIHNyY0NoYXJzLCAwLCBzcmNMZW5n
dGgsIG9wdGlvbnMpOw0KfQ0KDQppbmxpbmUgaW50OF90DQpVbmljb2RlU3RyaW5nOjpjYXNlQ29t
cGFyZShpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBs
ZW5ndGgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nICZz
cmNUZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Qgew0KICByZXR1cm4gZG9DYXNl
Q29tcGFyZShzdGFydCwgbGVuZ3RoLCBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGVuZ3RoLCBvcHRp
b25zKTsNCn0NCg0KaW5saW5lIGludDhfdA0KVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50
MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Qgew0KICByZXR1cm4g
ZG9DYXNlQ29tcGFyZShzdGFydCwgbGVuZ3RoLCBzcmNDaGFycywgMCwgbGVuZ3RoLCBvcHRpb25z
KTsNCn0NCg0KaW5saW5lIGludDhfdA0KVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJf
dCBzdGFydCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3Qgb3B0aW9ucykgY29uc3Qgew0KICByZXR1cm4gZG9DYXNlQ29tcGFyZShzdGFydCwgbGVu
Z3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCwgb3B0aW9ucyk7DQp9DQoNCmlubGlu
ZSBpbnQ4X3QNClVuaWNvZGVTdHJpbmc6OmNhc2VDb21wYXJlQmV0d2VlbihpbnQzMl90IHN0YXJ0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyAmc3JjVGV4
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGltaXQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Qgew0K
ICByZXR1cm4gZG9DYXNlQ29tcGFyZShzdGFydCwgbGltaXQgLSBzdGFydCwgc3JjVGV4dCwgc3Jj
U3RhcnQsIHNyY0xpbWl0IC0gc3JjU3RhcnQsIG9wdGlvbnMpOw0KfQ0KDQppbmxpbmUgaW50OF90
DQpVbmljb2RlU3RyaW5nOjpkb0Nhc2VDb21wYXJlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nICZzcmNUZXh0LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3Qgb3B0aW9ucykgY29uc3QNCnsNCiAgY29uc3QgVUNoYXIgKnNyY0NoYXJzOw0KICBpZighc3Jj
VGV4dC5pc0JvZ3VzKCkpIHsNCiAgICBzcmNUZXh0LnBpbkluZGljZXMoc3JjU3RhcnQsIHNyY0xl
bmd0aCk7DQogICAgc3JjQ2hhcnM9c3JjVGV4dC5nZXRBcnJheVN0YXJ0KCk7DQogIH0gZWxzZSB7
DQogICAgc3JjQ2hhcnM9MDsNCiAgfQ0KICByZXR1cm4gZG9DYXNlQ29tcGFyZShzdGFydCwgbGVu
Z3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCwgb3B0aW9ucyk7DQp9DQoNCmlubGlu
ZSBpbnQzMl90DQpVbmljb2RlU3RyaW5nOjppbmRleE9mKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRl
eHQpIGNvbnN0DQp7IHJldHVybiBpbmRleE9mKHRleHQsIDAsIHRleHQuZkxlbmd0aCwgMCwgZkxl
bmd0aCk7IH0NCg0KaW5saW5lIGludDMyX3QNClVuaWNvZGVTdHJpbmc6OmluZGV4T2YoY29uc3Qg
VW5pY29kZVN0cmluZyYgdGV4dCwNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0
DQp7IHJldHVybiBpbmRleE9mKHRleHQsIDAsIHRleHQuZkxlbmd0aCwgc3RhcnQsIGZMZW5ndGgg
LSBzdGFydCk7IH0NCg0KaW5saW5lIGludDMyX3QNClVuaWNvZGVTdHJpbmc6OmluZGV4T2YoY29u
c3QgVW5pY29kZVN0cmluZyYgdGV4dCwNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsDQog
ICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3QNCnsgcmV0dXJuIGluZGV4T2YodGV4
dCwgMCwgdGV4dC5mTGVuZ3RoLCBzdGFydCwgbGVuZ3RoKTsgfQ0KDQppbmxpbmUgaW50MzJfdA0K
VW5pY29kZVN0cmluZzo6aW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LA0KICAg
ICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3Jj
TGVuZ3RoLA0KICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgIGlu
dDMyX3QgbGVuZ3RoKSBjb25zdA0Kew0KICBpZighc3JjVGV4dC5pc0JvZ3VzKCkpIHsNCiAgICBz
cmNUZXh0LnBpbkluZGljZXMoc3JjU3RhcnQsIHNyY0xlbmd0aCk7DQogICAgaWYoc3JjTGVuZ3Ro
ID4gMCkgew0KICAgICAgcmV0dXJuIGluZGV4T2Yoc3JjVGV4dC5nZXRBcnJheVN0YXJ0KCksIHNy
Y1N0YXJ0LCBzcmNMZW5ndGgsIHN0YXJ0LCBsZW5ndGgpOw0KICAgIH0NCiAgfQ0KICByZXR1cm4g
LTE7DQp9DQoNCmlubGluZSBpbnQzMl90DQpVbmljb2RlU3RyaW5nOjppbmRleE9mKGNvbnN0IFVD
aGFyICpzcmNDaGFycywNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAg
ICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3QNCnsgcmV0dXJuIGluZGV4T2Yoc3JjQ2hhcnMs
IDAsIHNyY0xlbmd0aCwgc3RhcnQsIGZMZW5ndGggLSBzdGFydCk7IH0NCg0KaW5saW5lIGludDMy
X3QNClVuaWNvZGVTdHJpbmc6OmluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAg
ICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsDQogICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0
LA0KICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0DQp7IHJldHVybiBpbmRleE9m
KHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgsIHN0YXJ0LCBsZW5ndGgpOyB9DQoNCmlubGluZSBpbnQz
Ml90DQpVbmljb2RlU3RyaW5nOjppbmRleE9mKFVDaGFyIGMpIGNvbnN0DQp7IHJldHVybiBkb0lu
ZGV4T2YoYywgMCwgZkxlbmd0aCk7IH0NCg0KaW5saW5lIGludDMyX3QNClVuaWNvZGVTdHJpbmc6
OmluZGV4T2YoVUNoYXIzMiBjKSBjb25zdCB7DQogIHJldHVybiBpbmRleE9mKGMsIDAsIGZMZW5n
dGgpOw0KfQ0KDQppbmxpbmUgaW50MzJfdA0KVW5pY29kZVN0cmluZzo6aW5kZXhPZihVQ2hhciBj
LA0KICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3QNCnsgcmV0dXJuIGRvSW5kZXhP
ZihjLCBzdGFydCwgZkxlbmd0aCAtIHN0YXJ0KTsgfQ0KDQppbmxpbmUgaW50MzJfdA0KVW5pY29k
ZVN0cmluZzo6aW5kZXhPZihVQ2hhcjMyIGMsDQogICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0
KSBjb25zdCB7DQogIHJldHVybiBpbmRleE9mKGMsIHN0YXJ0LCBmTGVuZ3RoIC0gc3RhcnQpOw0K
fQ0KDQppbmxpbmUgaW50MzJfdA0KVW5pY29kZVN0cmluZzo6aW5kZXhPZihVQ2hhciBjLA0KICAg
ICAgICAgICAgICAgaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3Ro
KSBjb25zdA0KeyByZXR1cm4gZG9JbmRleE9mKGMsIHN0YXJ0LCBsZW5ndGgpOyB9DQoNCmlubGlu
ZSBpbnQzMl90DQpVbmljb2RlU3RyaW5nOjppbmRleE9mKFVDaGFyMzIgYywNCiAgICAgICAgICAg
ICAgIGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29uc3Qg
ew0KICBpZigodWludDMyX3QpYzwweGQ4MDApIHsNCiAgICByZXR1cm4gZG9JbmRleE9mKChVQ2hh
ciljLCBzdGFydCwgbGVuZ3RoKTsNCiAgfSBlbHNlIHsNCiAgICByZXR1cm4gZG9JbmRleE9mKGMs
IHN0YXJ0LCBsZW5ndGgpOw0KICB9DQp9DQoNCmlubGluZSBpbnQzMl90DQpVbmljb2RlU3RyaW5n
OjpsYXN0SW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0KSBjb25zdA0KeyByZXR1cm4g
bGFzdEluZGV4T2YodGV4dCwgMCwgdGV4dC5mTGVuZ3RoLCAwLCBmTGVuZ3RoKTsgfQ0KDQppbmxp
bmUgaW50MzJfdA0KVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoY29uc3QgVW5pY29kZVN0cmlu
ZyYgdGV4dCwNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0DQp7IHJldHVybiBs
YXN0SW5kZXhPZih0ZXh0LCAwLCB0ZXh0LmZMZW5ndGgsIHN0YXJ0LCBmTGVuZ3RoIC0gc3RhcnQp
OyB9DQoNCmlubGluZSBpbnQzMl90DQpVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBV
bmljb2RlU3RyaW5nJiB0ZXh0LA0KICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwNCiAgICAg
ICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdA0KeyByZXR1cm4gbGFzdEluZGV4T2YodGV4
dCwgMCwgdGV4dC5mTGVuZ3RoLCBzdGFydCwgbGVuZ3RoKTsgfQ0KDQppbmxpbmUgaW50MzJfdA0K
VW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwN
CiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90
IHNyY0xlbmd0aCwNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAg
ICBpbnQzMl90IGxlbmd0aCkgY29uc3QNCnsNCiAgaWYoIXNyY1RleHQuaXNCb2d1cygpKSB7DQog
ICAgc3JjVGV4dC5waW5JbmRpY2VzKHNyY1N0YXJ0LCBzcmNMZW5ndGgpOw0KICAgIGlmKHNyY0xl
bmd0aCA+IDApIHsNCiAgICAgIHJldHVybiBsYXN0SW5kZXhPZihzcmNUZXh0LmdldEFycmF5U3Rh
cnQoKSwgc3JjU3RhcnQsIHNyY0xlbmd0aCwgc3RhcnQsIGxlbmd0aCk7DQogICAgfQ0KICB9DQog
IHJldHVybiAtMTsNCn0NCg0KaW5saW5lIGludDMyX3QNClVuaWNvZGVTdHJpbmc6Omxhc3RJbmRl
eE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoLA0KICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3QNCnsgcmV0dXJuIGxhc3RJ
bmRleE9mKHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgsIHN0YXJ0LCBmTGVuZ3RoIC0gc3RhcnQpOyB9
DQoNCmlubGluZSBpbnQzMl90DQpVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBVQ2hh
ciAqc3JjQ2hhcnMsDQogICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwNCiAgICAgICAg
ICAgICAgIGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29u
c3QNCnsgcmV0dXJuIGxhc3RJbmRleE9mKHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgsIHN0YXJ0LCBs
ZW5ndGgpOyB9DQoNCmlubGluZSBpbnQzMl90DQpVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihV
Q2hhciBjKSBjb25zdA0KeyByZXR1cm4gZG9MYXN0SW5kZXhPZihjLCAwLCBmTGVuZ3RoKTsgfQ0K
DQppbmxpbmUgaW50MzJfdA0KVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoVUNoYXIzMiBjKSBj
b25zdCB7DQogIHJldHVybiBsYXN0SW5kZXhPZihjLCAwLCBmTGVuZ3RoKTsNCn0NCg0KaW5saW5l
IGludDMyX3QNClVuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKFVDaGFyIGMsDQogICAgICAgICAg
ICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdA0KeyByZXR1cm4gZG9MYXN0SW5kZXhPZihjLCBzdGFy
dCwgZkxlbmd0aCAtIHN0YXJ0KTsgfQ0KDQppbmxpbmUgaW50MzJfdA0KVW5pY29kZVN0cmluZzo6
bGFzdEluZGV4T2YoVUNoYXIzMiBjLA0KICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29u
c3Qgew0KICByZXR1cm4gbGFzdEluZGV4T2YoYywgc3RhcnQsIGZMZW5ndGggLSBzdGFydCk7DQp9
DQoNCmlubGluZSBpbnQzMl90DQpVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihVQ2hhciBjLA0K
ICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoKSBjb25zdA0KeyByZXR1cm4gZG9MYXN0SW5kZXhPZihjLCBzdGFydCwgbGVuZ3RoKTsgfQ0K
DQppbmxpbmUgaW50MzJfdA0KVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoVUNoYXIzMiBjLA0K
ICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoKSBjb25zdCB7DQogIGlmKCh1aW50MzJfdCljPDB4ZDgwMCkgew0KICAgIHJldHVybiBkb0xh
c3RJbmRleE9mKChVQ2hhciljLCBzdGFydCwgbGVuZ3RoKTsNCiAgfSBlbHNlIHsNCiAgICByZXR1
cm4gZG9MYXN0SW5kZXhPZihjLCBzdGFydCwgbGVuZ3RoKTsNCiAgfQ0KfQ0KDQppbmxpbmUgVUJv
b2wNClVuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkg
Y29uc3QNCnsgcmV0dXJuIGNvbXBhcmUoMCwgdGV4dC5mTGVuZ3RoLCB0ZXh0LCAwLCB0ZXh0LmZM
ZW5ndGgpID09IDA7IH0NCg0KaW5saW5lIFVCb29sDQpVbmljb2RlU3RyaW5nOjpzdGFydHNXaXRo
KGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsDQogICAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsDQogICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdA0KeyByZXR1cm4g
ZG9Db21wYXJlKDAsIHNyY0xlbmd0aCwgc3JjVGV4dCwgc3JjU3RhcnQsIHNyY0xlbmd0aCkgPT0g
MDsgfQ0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgoY29uc3QgVUNo
YXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QNCnsg
cmV0dXJuIGRvQ29tcGFyZSgwLCBzcmNMZW5ndGgsIHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgpID09
IDA7IH0NCg0KaW5saW5lIFVCb29sDQpVbmljb2RlU3RyaW5nOjpzdGFydHNXaXRoKGNvbnN0IFVD
aGFyICpzcmNDaGFycywNCiAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAg
ICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0DQp7IHJldHVybiBkb0NvbXBhcmUoMCwgc3Jj
TGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCkgPT0gMDt9DQoNCmlubGluZSBV
Qm9vbA0KVW5pY29kZVN0cmluZzo6ZW5kc1dpdGgoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkg
Y29uc3QNCnsgcmV0dXJuIGRvQ29tcGFyZShmTGVuZ3RoIC0gdGV4dC5mTGVuZ3RoLCB0ZXh0LmZM
ZW5ndGgsDQogICAgICAgICAgIHRleHQsIDAsIHRleHQuZkxlbmd0aCkgPT0gMDsgfQ0KDQppbmxp
bmUgVUJvb2wNClVuaWNvZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNy
Y1RleHQsDQogICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpIGNvbnN0DQp7IHJldHVybiBkb0NvbXBhcmUoZkxlbmd0aCAtIHNyY0xlbmd0
aCwgc3JjTGVuZ3RoLA0KICAgICAgICAgICBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGVuZ3RoKSA9
PSAwOyB9DQoNCmlubGluZSBVQm9vbA0KVW5pY29kZVN0cmluZzo6ZW5kc1dpdGgoY29uc3QgVUNo
YXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0DQp7IHJl
dHVybiBkb0NvbXBhcmUoZkxlbmd0aCAtIHNyY0xlbmd0aCwgc3JjTGVuZ3RoLA0KICAgICAgICAg
ICBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKSA9PSAwOyB9DQoNCmlubGluZSBVQm9vbA0KVW5pY29k
ZVN0cmluZzo6ZW5kc1dpdGgoY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdA0KeyBy
ZXR1cm4gZG9Db21wYXJlKGZMZW5ndGggLSBzcmNMZW5ndGgsIHNyY0xlbmd0aCwNCiAgICAgICAg
ICAgc3JjQ2hhcnMsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpID09IDA7fQ0KDQoNCg0KaW5saW5lIFVu
aWNvZGVTdHJpbmcmDQpVbmljb2RlU3RyaW5nOjpyZXBsYWNlKGludDMyX3Qgc3RhcnQsDQogICAg
ICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHNyY1RleHQpDQp7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgc3JjVGV4
dCwgMCwgc3JjVGV4dC5mTGVuZ3RoKTsgfQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNv
ZGVTdHJpbmc6OnJlcGxhY2UoaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3Qg
bGVuZ3RoLA0KICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwNCiAg
ICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90IHNy
Y0xlbmd0aCkNCnsgcmV0dXJuIGRvUmVwbGFjZShzdGFydCwgbGVuZ3RoLCBzcmNUZXh0LCBzcmNT
dGFydCwgc3JjTGVuZ3RoKTsgfQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJp
bmc6OnJlcGxhY2UoaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3Ro
LA0KICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgpDQp7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgc3Jj
Q2hhcnMsIDAsIHNyY0xlbmd0aCk7IH0NCg0KaW5saW5lIFVuaWNvZGVTdHJpbmcmDQpVbmljb2Rl
U3RyaW5nOjpyZXBsYWNlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90IGxl
bmd0aCwNCiAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAgICAg
ICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkN
CnsgcmV0dXJuIGRvUmVwbGFjZShzdGFydCwgbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNy
Y0xlbmd0aCk7IH0NCg0KaW5saW5lIFVuaWNvZGVTdHJpbmcmDQpVbmljb2RlU3RyaW5nOjpyZXBs
YWNlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAg
ICAgICAgICAgIFVDaGFyIHNyY0NoYXIpDQp7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIGxlbmd0
aCwgJnNyY0NoYXIsIDAsIDEpOyB9DQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29kZVN0
cmluZzo6cmVwbGFjZShpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICAgaW50MzJfdCBsZW5n
dGgsDQogICAgICAgICAgICAgICBVQ2hhcjMyIHNyY0NoYXIpIHsNCiAgVUNoYXIgYnVmZmVyWzJd
Ow0KICBpbnQzMl90IGNvdW50ID0gMDsNCiAgeyBpZigodWludDMyX3QpKHNyY0NoYXIpPD0weGZm
ZmYpIHsgKGJ1ZmZlcilbKGNvdW50KSsrXT0odWludDE2X3QpKHNyY0NoYXIpOyB9IGVsc2UgeyAo
YnVmZmVyKVsoY291bnQpKytdPSh1aW50MTZfdCkoKChzcmNDaGFyKT4+MTApKzB4ZDdjMCk7IChi
dWZmZXIpWyhjb3VudCkrK109KHVpbnQxNl90KSgoKHNyY0NoYXIpJjB4M2ZmKXwweGRjMDApOyB9
IH07DQogIHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgYnVmZmVyLCAwLCBjb3VudCk7
DQp9DQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29kZVN0cmluZzo6cmVwbGFjZUJldHdl
ZW4oaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsDQogICAg
ICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KQ0KeyByZXR1cm4gZG9S
ZXBsYWNlKHN0YXJ0LCBsaW1pdCAtIHN0YXJ0LCBzcmNUZXh0LCAwLCBzcmNUZXh0LmZMZW5ndGgp
OyB9DQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29kZVN0cmluZzo6cmVwbGFjZUJldHdl
ZW4oaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsDQogICAg
ICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LA0KICAgICAgICAgICAg
ICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGlt
aXQpDQp7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIGxpbWl0IC0gc3RhcnQsIHNyY1RleHQsIHNy
Y1N0YXJ0LCBzcmNMaW1pdCAtIHNyY1N0YXJ0KTsgfQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYN
ClVuaWNvZGVTdHJpbmc6OmZpbmRBbmRSZXBsYWNlKGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRl
eHQsDQogICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBuZXdUZXh0KQ0KeyBy
ZXR1cm4gZmluZEFuZFJlcGxhY2UoMCwgZkxlbmd0aCwgb2xkVGV4dCwgMCwgb2xkVGV4dC5mTGVu
Z3RoLA0KICAgICAgICAgICAgbmV3VGV4dCwgMCwgbmV3VGV4dC5mTGVuZ3RoKTsgfQ0KDQppbmxp
bmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJpbmc6OmZpbmRBbmRSZXBsYWNlKGludDMyX3Qg
c3RhcnQsDQogICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAgICAg
ICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIG9sZFRleHQsDQogICAgICAgICAgICAgICAgICBjb25z
dCBVbmljb2RlU3RyaW5nJiBuZXdUZXh0KQ0KeyByZXR1cm4gZmluZEFuZFJlcGxhY2Uoc3RhcnQs
IGxlbmd0aCwgb2xkVGV4dCwgMCwgb2xkVGV4dC5mTGVuZ3RoLA0KICAgICAgICAgICAgbmV3VGV4
dCwgMCwgbmV3VGV4dC5mTGVuZ3RoKTsgfQ0KDQoNCg0KDQppbmxpbmUgdm9pZA0KVW5pY29kZVN0
cmluZzo6ZG9FeHRyYWN0KGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgaW50MzJfdCBsZW5n
dGgsDQogICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBjb25zdA0KeyB0YXJnZXQu
cmVwbGFjZSgwLCB0YXJnZXQuZkxlbmd0aCwgKnRoaXMsIHN0YXJ0LCBsZW5ndGgpOyB9DQoNCmlu
bGluZSB2b2lkDQpVbmljb2RlU3RyaW5nOjpleHRyYWN0KGludDMyX3Qgc3RhcnQsDQogICAgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCwNCiAgICAgICAgICAgICAgIFVDaGFyICp0YXJnZXQsDQog
ICAgICAgICAgICAgICBpbnQzMl90IHRhcmdldFN0YXJ0KSBjb25zdA0KeyBkb0V4dHJhY3Qoc3Rh
cnQsIGxlbmd0aCwgdGFyZ2V0LCB0YXJnZXRTdGFydCk7IH0NCg0KaW5saW5lIHZvaWQNClVuaWNv
ZGVTdHJpbmc6OmV4dHJhY3QoaW50MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgIGludDMyX3Qg
bGVuZ3RoLA0KICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBjb25zdA0KeyBk
b0V4dHJhY3Qoc3RhcnQsIGxlbmd0aCwgdGFyZ2V0KTsgfQ0KDQppbmxpbmUgaW50MzJfdA0KVW5p
Y29kZVN0cmluZzo6ZXh0cmFjdChpbnQzMl90IHN0YXJ0LA0KICAgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsDQogICAgICAgICAgICAgICBjaGFyICpkc3QsDQogICAgICAgICAgICAgICBjb25z
dCBjaGFyICpjb2RlcGFnZSkgY29uc3QNCg0Kew0KDQogIHJldHVybiBleHRyYWN0KHN0YXJ0LCBs
ZW5ndGgsIGRzdCwgZHN0IT0wID8gMHhmZmZmZmZmZiA6IDAsIGNvZGVwYWdlKTsNCn0NCg0KaW5s
aW5lIHZvaWQNClVuaWNvZGVTdHJpbmc6OmV4dHJhY3RCZXR3ZWVuKGludDMyX3Qgc3RhcnQsDQog
ICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LA0KICAgICAgICAgICAgICAgICAgVUNoYXIg
KmRzdCwNCiAgICAgICAgICAgICAgICAgIGludDMyX3QgZHN0U3RhcnQpIGNvbnN0DQp7IGRvRXh0
cmFjdChzdGFydCwgbGltaXQgLSBzdGFydCwgZHN0LCBkc3RTdGFydCk7IH0NCg0KaW5saW5lIFVD
aGFyDQpVbmljb2RlU3RyaW5nOjpkb0NoYXJBdChpbnQzMl90IG9mZnNldCkgY29uc3QNCnsNCiAg
aWYoKHVpbnQzMl90KW9mZnNldCA8ICh1aW50MzJfdClmTGVuZ3RoKSB7DQogICAgcmV0dXJuIGZB
cnJheVtvZmZzZXRdOw0KICB9IGVsc2Ugew0KICAgIHJldHVybiBrSW52YWxpZFVDaGFyOw0KICB9
DQp9DQoNCmlubGluZSBVQ2hhcg0KVW5pY29kZVN0cmluZzo6Y2hhckF0KGludDMyX3Qgb2Zmc2V0
KSBjb25zdA0KeyByZXR1cm4gZG9DaGFyQXQob2Zmc2V0KTsgfQ0KDQppbmxpbmUgVUNoYXINClVu
aWNvZGVTdHJpbmc6Om9wZXJhdG9yW10gKGludDMyX3Qgb2Zmc2V0KSBjb25zdA0KeyByZXR1cm4g
ZG9DaGFyQXQob2Zmc2V0KTsgfQ0KDQppbmxpbmUgVUNoYXIzMg0KVW5pY29kZVN0cmluZzo6Y2hh
cjMyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0DQp7DQogIGlmKCh1aW50MzJfdClvZmZzZXQgPCAo
dWludDMyX3QpZkxlbmd0aCkgew0KICAgIFVDaGFyMzIgYzsNCiAgICB7IChjKT0oZkFycmF5KVtv
ZmZzZXRdOyBpZigoKChjKSYweGZmZmZmODAwKT09MHhkODAwKSkgeyB1aW50MTZfdCBfX2MyOyBp
ZigoKChjKSYweDQwMCk9PTApKSB7IGlmKChvZmZzZXQpKzE8KGZMZW5ndGgpICYmICgoKF9fYzI9
KGZBcnJheSlbKG9mZnNldCkrMV0pJjB4ZmZmZmZjMDApPT0weGRjMDApKSB7IChjKT0oKCgoYykp
PDwxMFVMKSsoX19jMiktKCgweGQ4MDA8PDEwVUwpKzB4ZGMwMC0weDEwMDAwKSk7IH0gZWxzZSBp
ZigwKSB7IChjKT0weGZmZmY7IH0gfSBlbHNlIHsgaWYoKG9mZnNldCktMT49KDApICYmICgoKF9f
YzI9KGZBcnJheSlbKG9mZnNldCktMV0pJjB4ZmZmZmZjMDApPT0weGQ4MDApKSB7IChjKT0oKChf
X2MyKTw8MTBVTCkrKChjKSktKCgweGQ4MDA8PDEwVUwpKzB4ZGMwMC0weDEwMDAwKSk7IH0gZWxz
ZSBpZigwKSB7IChjKT0weGZmZmY7IH0gfSB9IGVsc2UgaWYoKDApICYmICEoKHVpbnQzMl90KShj
KTwweGQ4MDAgfHwgKCh1aW50MzJfdCkoYyk+MHhkZmZmICYmICh1aW50MzJfdCkoYyk8PTB4MTBm
ZmZmICYmICEoKGMpPj0weGZkZDAgJiYgKCh1aW50MzJfdCkoYyk8PTB4ZmRlZiB8fCAoKGMpJjB4
ZmZmZSk9PTB4ZmZmZSkgJiYgKHVpbnQzMl90KShjKTw9MHgxMGZmZmYpKSkpIHsgKGMpPTB4ZmZm
ZjsgfSB9Ow0KICAgIHJldHVybiBjOw0KICB9IGVsc2Ugew0KICAgIHJldHVybiBrSW52YWxpZFVD
aGFyOw0KICB9DQp9DQoNCmlubGluZSBpbnQzMl90DQpVbmljb2RlU3RyaW5nOjpnZXRDaGFyMzJT
dGFydChpbnQzMl90IG9mZnNldCkgY29uc3Qgew0KICBpZigodWludDMyX3Qpb2Zmc2V0IDwgKHVp
bnQzMl90KWZMZW5ndGgpIHsNCiAgICB7IGlmKCgoKChmQXJyYXkpW29mZnNldF0pJjB4ZmZmZmZj
MDApPT0weGRjMDApICYmIChvZmZzZXQpPigwKSAmJiAoKCgoZkFycmF5KVsob2Zmc2V0KS0xXSkm
MHhmZmZmZmMwMCk9PTB4ZDgwMCkpIHsgLS0ob2Zmc2V0KTsgfSB9Ow0KICAgIHJldHVybiBvZmZz
ZXQ7DQogIH0gZWxzZSB7DQogICAgcmV0dXJuIDA7DQogIH0NCn0NCg0KaW5saW5lIGludDMyX3QN
ClVuaWNvZGVTdHJpbmc6OmdldENoYXIzMkxpbWl0KGludDMyX3Qgb2Zmc2V0KSBjb25zdCB7DQog
IGlmKCh1aW50MzJfdClvZmZzZXQgPCAodWludDMyX3QpZkxlbmd0aCkgew0KICAgIHsgaWYoKDAp
PChvZmZzZXQpICYmIChvZmZzZXQpPChmTGVuZ3RoKSAmJiAoKCgoZkFycmF5KVsob2Zmc2V0KS0x
XSkmMHhmZmZmZmMwMCk9PTB4ZDgwMCkgJiYgKCgoKGZBcnJheSlbb2Zmc2V0XSkmMHhmZmZmZmMw
MCk9PTB4ZGMwMCkpIHsgKysob2Zmc2V0KTsgfSB9Ow0KICAgIHJldHVybiBvZmZzZXQ7DQogIH0g
ZWxzZSB7DQogICAgcmV0dXJuIGZMZW5ndGg7DQogIH0NCn0NCg0KaW5saW5lIGludDMyX3QNClVu
aWNvZGVTdHJpbmc6OmdldENoYXJTdGFydChpbnQzMl90IG9mZnNldCkgY29uc3Qgew0KICByZXR1
cm4gZ2V0Q2hhcjMyU3RhcnQob2Zmc2V0KTsNCn0NCg0KaW5saW5lIGludDMyX3QNClVuaWNvZGVT
dHJpbmc6OmdldENoYXJMaW1pdChpbnQzMl90IG9mZnNldCkgY29uc3Qgew0KICByZXR1cm4gZ2V0
Q2hhcjMyTGltaXQob2Zmc2V0KTsNCn0NCg0KaW5saW5lIFVCb29sDQpVbmljb2RlU3RyaW5nOjpp
c0VtcHR5KCkgY29uc3Qgew0KICByZXR1cm4gZkxlbmd0aCA9PSAwOw0KfQ0KDQppbmxpbmUgVUJv
b2wNClVuaWNvZGVTdHJpbmc6OmVtcHR5KCkgY29uc3Qgew0KICByZXR1cm4gaXNFbXB0eSgpOw0K
fQ0KDQoNCg0KDQppbmxpbmUgaW50MzJfdA0KVW5pY29kZVN0cmluZzo6bGVuZ3RoKCkgY29uc3QN
CnsgcmV0dXJuIGZMZW5ndGg7IH0NCg0KaW5saW5lIGludDMyX3QNClVuaWNvZGVTdHJpbmc6Omdl
dENhcGFjaXR5KCkgY29uc3QNCnsgcmV0dXJuIGZDYXBhY2l0eTsgfQ0KDQppbmxpbmUgaW50MzJf
dA0KVW5pY29kZVN0cmluZzo6aGFzaENvZGUoKSBjb25zdA0KeyByZXR1cm4gZG9IYXNoQ29kZSgp
OyB9DQoNCmlubGluZSBVQm9vbA0KVW5pY29kZVN0cmluZzo6aXNCb2d1cygpIGNvbnN0DQp7IHJl
dHVybiAoVUJvb2wpKGZGbGFncyAmIGtJc0JvZ3VzKTsgfQ0KDQppbmxpbmUgY29uc3QgVUNoYXIg
Kg0KVW5pY29kZVN0cmluZzo6Z2V0QnVmZmVyKCkgY29uc3Qgew0KICBpZighKGZGbGFncyYoa0lz
Qm9ndXN8a09wZW5HZXRCdWZmZXIpKSkgew0KICAgIHJldHVybiBmQXJyYXk7DQogIH0gZWxzZSB7
DQogICAgcmV0dXJuIDA7DQogIH0NCn0NCg0KDQoNCg0KaW5saW5lIGNvbnN0IFVDaGFyICoNClVu
aWNvZGVTdHJpbmc6OmdldFRlcm1pbmF0ZWRCdWZmZXIoKSB7DQogIGlmKGZGbGFncyYoa0lzQm9n
dXN8a09wZW5HZXRCdWZmZXIpKSB7DQogICAgcmV0dXJuIDA7DQogIH0gZWxzZSBpZihmTGVuZ3Ro
PGZDYXBhY2l0eSAmJiBmQXJyYXlbZkxlbmd0aF09PTApIHsNCiAgICByZXR1cm4gZkFycmF5Ow0K
ICB9IGVsc2UgaWYoY2xvbmVBcnJheUlmTmVlZGVkKGZMZW5ndGgrMSkpIHsNCiAgICBmQXJyYXlb
Zkxlbmd0aF09MDsNCiAgICByZXR1cm4gZkFycmF5Ow0KICB9IGVsc2Ugew0KICAgIHJldHVybiAw
Ow0KICB9DQp9DQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29kZVN0cmluZzo6b3BlcmF0
b3I9IChVQ2hhciBjaCkNCnsgcmV0dXJuIGRvUmVwbGFjZSgwLCBmTGVuZ3RoLCAmY2gsIDAsIDEp
OyB9DQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29kZVN0cmluZzo6b3BlcmF0b3I9IChV
Q2hhcjMyIGNoKQ0KeyByZXR1cm4gcmVwbGFjZSgwLCBmTGVuZ3RoLCBjaCk7IH0NCg0KaW5saW5l
IFVuaWNvZGVTdHJpbmcmDQpVbmljb2RlU3RyaW5nOjpzZXRUbyhjb25zdCBVbmljb2RlU3RyaW5n
JiBzcmNUZXh0LA0KICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsDQogICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgpDQp7IHJldHVybiBkb1JlcGxhY2UoMCwgZkxlbmd0aCwgc3JjVGV4
dCwgc3JjU3RhcnQsIHNyY0xlbmd0aCk7IH0NCg0KaW5saW5lIFVuaWNvZGVTdHJpbmcmDQpVbmlj
b2RlU3RyaW5nOjpzZXRUbyhjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0LA0KICAgICAgICAg
ICAgIGludDMyX3Qgc3JjU3RhcnQpDQp7IHJldHVybiBkb1JlcGxhY2UoMCwgZkxlbmd0aCwgc3Jj
VGV4dCwgc3JjU3RhcnQsIHNyY1RleHQuZkxlbmd0aCAtIHNyY1N0YXJ0KTsgfQ0KDQppbmxpbmUg
VW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJpbmc6OnNldFRvKGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHNyY1RleHQpDQp7IHJldHVybiBkb1JlcGxhY2UoMCwgZkxlbmd0aCwgc3JjVGV4dCwgMCwgc3Jj
VGV4dC5mTGVuZ3RoKTsgfQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJpbmc6
OnNldFRvKGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAgICAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCkNCnsgcmV0dXJuIGRvUmVwbGFjZSgwLCBmTGVuZ3RoLCBzcmNDaGFycywgMCwgc3JjTGVu
Z3RoKTsgfQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJpbmc6OnNldFRvKFVD
aGFyIHNyY0NoYXIpDQp7IHJldHVybiBkb1JlcGxhY2UoMCwgZkxlbmd0aCwgJnNyY0NoYXIsIDAs
IDEpOyB9DQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29kZVN0cmluZzo6c2V0VG8oVUNo
YXIzMiBzcmNDaGFyKQ0KeyByZXR1cm4gcmVwbGFjZSgwLCBmTGVuZ3RoLCBzcmNDaGFyKTsgfQ0K
DQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJpbmc6Om9wZXJhdG9yKz0gKFVDaGFy
IGNoKQ0KeyByZXR1cm4gZG9SZXBsYWNlKGZMZW5ndGgsIDAsICZjaCwgMCwgMSk7IH0NCg0KaW5s
aW5lIFVuaWNvZGVTdHJpbmcmDQpVbmljb2RlU3RyaW5nOjpvcGVyYXRvcis9IChVQ2hhcjMyIGNo
KSB7DQogIFVDaGFyIGJ1ZmZlclsyXTsNCiAgaW50MzJfdCBsZW5ndGggPSAwOw0KICB7IGlmKCh1
aW50MzJfdCkoY2gpPD0weGZmZmYpIHsgKGJ1ZmZlcilbKGxlbmd0aCkrK109KHVpbnQxNl90KShj
aCk7IH0gZWxzZSB7IChidWZmZXIpWyhsZW5ndGgpKytdPSh1aW50MTZfdCkoKChjaCk+PjEwKSsw
eGQ3YzApOyAoYnVmZmVyKVsobGVuZ3RoKSsrXT0odWludDE2X3QpKCgoY2gpJjB4M2ZmKXwweGRj
MDApOyB9IH07DQogIHJldHVybiBkb1JlcGxhY2UoZkxlbmd0aCwgMCwgYnVmZmVyLCAwLCBsZW5n
dGgpOw0KfQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJpbmc6Om9wZXJhdG9y
Kz0gKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQpDQp7IHJldHVybiBkb1JlcGxhY2UoZkxl
bmd0aCwgMCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5mTGVuZ3RoKTsgfQ0KDQppbmxpbmUgVW5pY29k
ZVN0cmluZyYNClVuaWNvZGVTdHJpbmc6OmFwcGVuZChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNU
ZXh0LA0KICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgICBpbnQz
Ml90IHNyY0xlbmd0aCkNCnsgcmV0dXJuIGRvUmVwbGFjZShmTGVuZ3RoLCAwLCBzcmNUZXh0LCBz
cmNTdGFydCwgc3JjTGVuZ3RoKTsgfQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVT
dHJpbmc6OmFwcGVuZChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KQ0KeyByZXR1cm4gZG9S
ZXBsYWNlKGZMZW5ndGgsIDAsIHNyY1RleHQsIDAsIHNyY1RleHQuZkxlbmd0aCk7IH0NCg0KaW5s
aW5lIFVuaWNvZGVTdHJpbmcmDQpVbmljb2RlU3RyaW5nOjphcHBlbmQoY29uc3QgVUNoYXIgKnNy
Y0NoYXJzLA0KICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgICBp
bnQzMl90IHNyY0xlbmd0aCkNCnsgcmV0dXJuIGRvUmVwbGFjZShmTGVuZ3RoLCAwLCBzcmNDaGFy
cywgc3JjU3RhcnQsIHNyY0xlbmd0aCk7IH0NCg0KaW5saW5lIFVuaWNvZGVTdHJpbmcmDQpVbmlj
b2RlU3RyaW5nOjphcHBlbmQoY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAgICAgICAgICBp
bnQzMl90IHNyY0xlbmd0aCkNCnsgcmV0dXJuIGRvUmVwbGFjZShmTGVuZ3RoLCAwLCBzcmNDaGFy
cywgMCwgc3JjTGVuZ3RoKTsgfQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJp
bmc6OmFwcGVuZChVQ2hhciBzcmNDaGFyKQ0KeyByZXR1cm4gZG9SZXBsYWNlKGZMZW5ndGgsIDAs
ICZzcmNDaGFyLCAwLCAxKTsgfQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJp
bmc6OmFwcGVuZChVQ2hhcjMyIHNyY0NoYXIpIHsNCiAgVUNoYXIgYnVmZmVyWzJdOw0KICBpbnQz
Ml90IGxlbmd0aCA9IDA7DQogIHsgaWYoKHVpbnQzMl90KShzcmNDaGFyKTw9MHhmZmZmKSB7IChi
dWZmZXIpWyhsZW5ndGgpKytdPSh1aW50MTZfdCkoc3JjQ2hhcik7IH0gZWxzZSB7IChidWZmZXIp
WyhsZW5ndGgpKytdPSh1aW50MTZfdCkoKChzcmNDaGFyKT4+MTApKzB4ZDdjMCk7IChidWZmZXIp
WyhsZW5ndGgpKytdPSh1aW50MTZfdCkoKChzcmNDaGFyKSYweDNmZil8MHhkYzAwKTsgfSB9Ow0K
ICByZXR1cm4gZG9SZXBsYWNlKGZMZW5ndGgsIDAsIGJ1ZmZlciwgMCwgbGVuZ3RoKTsNCn0NCg0K
aW5saW5lIFVuaWNvZGVTdHJpbmcmDQpVbmljb2RlU3RyaW5nOjppbnNlcnQoaW50MzJfdCBzdGFy
dCwNCiAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwNCiAgICAgICAg
ICAgICAgaW50MzJfdCBzcmNTdGFydCwNCiAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgp
DQp7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5n
dGgpOyB9DQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29kZVN0cmluZzo6aW5zZXJ0KGlu
dDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQp
DQp7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY1RleHQsIDAsIHNyY1RleHQuZkxlbmd0
aCk7IH0NCg0KaW5saW5lIFVuaWNvZGVTdHJpbmcmDQpVbmljb2RlU3RyaW5nOjppbnNlcnQoaW50
MzJfdCBzdGFydCwNCiAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLA0KICAgICAg
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LA0KICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0
aCkNCnsgcmV0dXJuIGRvUmVwbGFjZShzdGFydCwgMCwgc3JjQ2hhcnMsIHNyY1N0YXJ0LCBzcmNM
ZW5ndGgpOyB9DQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29kZVN0cmluZzo6aW5zZXJ0
KGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywNCiAg
ICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpDQp7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQs
IDAsIHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgpOyB9DQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0K
VW5pY29kZVN0cmluZzo6aW5zZXJ0KGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgIFVDaGFy
IHNyY0NoYXIpDQp7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsICZzcmNDaGFyLCAwLCAxKTsg
fQ0KDQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJpbmc6Omluc2VydChpbnQzMl90
IHN0YXJ0LA0KICAgICAgICAgICAgICBVQ2hhcjMyIHNyY0NoYXIpDQp7IHJldHVybiByZXBsYWNl
KHN0YXJ0LCAwLCBzcmNDaGFyKTsgfQ0KDQoNCmlubGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29k
ZVN0cmluZzo6cmVtb3ZlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgaW50MzJfdCBsZW5n
dGgpDQp7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgX19udWxsLCAwLCAwKTsgfQ0K
DQppbmxpbmUgVW5pY29kZVN0cmluZyYNClVuaWNvZGVTdHJpbmc6OnJlbW92ZSgpDQp7IHJldHVy
biBkb1JlcGxhY2UoMCwgZkxlbmd0aCwgMCwgMCwgMCk7IH0NCg0KaW5saW5lIFVuaWNvZGVTdHJp
bmcmDQpVbmljb2RlU3RyaW5nOjpyZW1vdmVCZXR3ZWVuKGludDMyX3Qgc3RhcnQsDQogICAgICAg
ICAgICAgICAgaW50MzJfdCBsaW1pdCkNCnsgcmV0dXJuIGRvUmVwbGFjZShzdGFydCwgbGltaXQg
LSBzdGFydCwgX19udWxsLCAwLCAwKTsgfQ0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGVTdHJpbmc6
OnRydW5jYXRlKGludDMyX3QgdGFyZ2V0TGVuZ3RoKQ0Kew0KICBpZigodWludDMyX3QpdGFyZ2V0
TGVuZ3RoIDwgKHVpbnQzMl90KWZMZW5ndGgpIHsNCiAgICBmTGVuZ3RoID0gdGFyZ2V0TGVuZ3Ro
Ow0KICAgIHJldHVybiAxOw0KICB9IGVsc2Ugew0KICAgIHJldHVybiAwOw0KICB9DQp9DQoNCmlu
bGluZSBVbmljb2RlU3RyaW5nJg0KVW5pY29kZVN0cmluZzo6cmV2ZXJzZSgpDQp7IHJldHVybiBk
b1JldmVyc2UoMCwgZkxlbmd0aCk7IH0NCg0KaW5saW5lIFVuaWNvZGVTdHJpbmcmDQpVbmljb2Rl
U3RyaW5nOjpyZXZlcnNlKGludDMyX3Qgc3RhcnQsDQogICAgICAgICAgICAgICBpbnQzMl90IGxl
bmd0aCkNCnsgcmV0dXJuIGRvUmV2ZXJzZShzdGFydCwgbGVuZ3RoKTsgfQ0KDQoNCg0KDQoNCg0K
aW5saW5lIHZvaWQNClVuaWNvZGVTdHJpbmc6OnBpbkluZGljZXMoaW50MzJfdCYgc3RhcnQsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QmIGxlbmd0aCkgY29uc3QNCnsNCg0KICBp
ZihzdGFydCA8IDApIHsNCiAgICBzdGFydCA9IDA7DQogIH0gZWxzZSBpZihzdGFydCA+IGZMZW5n
dGgpIHsNCiAgICBzdGFydCA9IGZMZW5ndGg7DQogIH0NCiAgaWYobGVuZ3RoIDwgMCkgew0KICAg
IGxlbmd0aCA9IDA7DQogIH0gZWxzZSBpZihsZW5ndGggPiAoZkxlbmd0aCAtIHN0YXJ0KSkgew0K
ICAgIGxlbmd0aCA9IChmTGVuZ3RoIC0gc3RhcnQpOw0KICB9DQp9DQoNCmlubGluZSBVQ2hhcioN
ClVuaWNvZGVTdHJpbmc6OmdldEFycmF5U3RhcnQoKQ0KeyByZXR1cm4gZkFycmF5OyB9DQoNCmlu
bGluZSBjb25zdCBVQ2hhcioNClVuaWNvZGVTdHJpbmc6OmdldEFycmF5U3RhcnQoKSBjb25zdA0K
eyByZXR1cm4gZkFycmF5OyB9DQojIDQwMTIgIi4uL2NvbW1vbi91bmljb2RlL3VuaXN0ci5oIg0K
Y2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgVUNoYXJSZWZlcmVuY2UgOiBwdWJsaWMg
VU9iamVjdCB7DQpwdWJsaWM6DQogIFVDaGFyUmVmZXJlbmNlKCk7DQogIGlubGluZSBVQ2hhclJl
ZmVyZW5jZShVbmljb2RlU3RyaW5nICpzdHJpbmcsDQogICAgICAgICBpbnQzMl90IHBvcyk7DQog
IGlubGluZSBVQ2hhclJlZmVyZW5jZShjb25zdCBVQ2hhclJlZmVyZW5jZSYgdGhhdCk7DQogIH5V
Q2hhclJlZmVyZW5jZSgpOw0KDQogIGlubGluZSBVQ2hhclJlZmVyZW5jZSYgb3BlcmF0b3I9IChj
b25zdCBVQ2hhclJlZmVyZW5jZSYgdGhhdCk7DQogIGlubGluZSBVQ2hhclJlZmVyZW5jZSYgb3Bl
cmF0b3I9IChVQ2hhciBjKTsNCg0KICBpbmxpbmUgb3BlcmF0b3IgVUNoYXIoKTsNCg0KDQoNCg0K
DQoNCiAgdmlydHVhbCBpbmxpbmUgVUNsYXNzSUQgZ2V0RHluYW1pY0NsYXNzSUQoKSBjb25zdCB7
IHJldHVybiBnZXRTdGF0aWNDbGFzc0lEKCk7IH0NCg0KDQoNCg0KDQoNCiAgc3RhdGljIGlubGlu
ZSBVQ2xhc3NJRCBnZXRTdGF0aWNDbGFzc0lEKCkgeyByZXR1cm4gKFVDbGFzc0lEKSZmZ0NsYXNz
SUQ7IH0NCg0KcHJpdmF0ZToNCiAgVW5pY29kZVN0cmluZyAqZlN0cmluZzsNCiAgaW50MzJfdCBm
UG9zOw0KDQoNCg0KDQoNCiAgc3RhdGljIGNvbnN0IGNoYXIgZmdDbGFzc0lEOw0KfTsNCg0KDQoN
Cg0KDQppbmxpbmUNClVDaGFyUmVmZXJlbmNlOjpVQ2hhclJlZmVyZW5jZShVbmljb2RlU3RyaW5n
ICpzdHJpbmcsDQogICAgICAgICAgICAgICAgICAgaW50MzJfdCBwb3MpDQogIDogVU9iamVjdCgp
LCBmU3RyaW5nKHN0cmluZyksIGZQb3MocG9zKQ0Ke30NCg0KaW5saW5lDQpVQ2hhclJlZmVyZW5j
ZTo6VUNoYXJSZWZlcmVuY2UoY29uc3QgVUNoYXJSZWZlcmVuY2UmIHRoYXQpDQo6IFVPYmplY3Qo
dGhhdCkNCnsgdGhpcy0+b3BlcmF0b3I9KHRoYXQpOyB9DQoNCmlubGluZQ0KVUNoYXJSZWZlcmVu
Y2U6On5VQ2hhclJlZmVyZW5jZSgpDQp7fQ0KDQppbmxpbmUgVUNoYXJSZWZlcmVuY2UmDQpVQ2hh
clJlZmVyZW5jZTo6b3BlcmF0b3I9IChjb25zdCBVQ2hhclJlZmVyZW5jZSYgdGhhdCkNCnsgZlN0
cmluZy0+c2V0Q2hhckF0KGZQb3MsIHRoYXQuZlN0cmluZy0+Y2hhckF0KHRoYXQuZlBvcykpOyBy
ZXR1cm4gKnRoaXM7IH0NCg0KaW5saW5lIFVDaGFyUmVmZXJlbmNlJg0KVUNoYXJSZWZlcmVuY2U6
Om9wZXJhdG9yPSAoVUNoYXIgYykNCnsgZlN0cmluZy0+c2V0Q2hhckF0KGZQb3MsIGMpOyByZXR1
cm4gKnRoaXM7IH0NCg0KaW5saW5lDQpVQ2hhclJlZmVyZW5jZTo6b3BlcmF0b3IgVUNoYXIoKQ0K
eyByZXR1cm4gZlN0cmluZy0+Y2hhckF0KGZQb3MpOyB9DQoNCn0NCiMgMjggInVjb2xfZWxtLmNw
cCIgMg0KIyAxICJ1Y29sX2VsbS5oIiAxDQojIDI0ICJ1Y29sX2VsbS5oIg0KIyAxICJ1Y29sX2Nu
dC5oIiAxDQojIDI1ICJ1Y29sX2NudC5oIg0KIyAxICIuLi9jb21tb24vdXRyaWUuaCIgMQ0KIyAy
MiAiLi4vY29tbW9uL3V0cmllLmgiDQpleHRlcm4gIkMiIHsNCiMgNTAgIi4uL2NvbW1vbi91dHJp
ZS5oIg0KZW51bSB7DQoNCiAgICBVVFJJRV9TSElGVD01LA0KDQoNCiAgICBVVFJJRV9EQVRBX0JM
T0NLX0xFTkdUSD0xPDxVVFJJRV9TSElGVCwNCg0KDQogICAgVVRSSUVfTUFTSz1VVFJJRV9EQVRB
X0JMT0NLX0xFTkdUSC0xLA0KDQoNCg0KDQoNCiAgICBVVFJJRV9MRUFEX0lOREVYX0RJU1A9MHgy
ODAwPj5VVFJJRV9TSElGVCwNCiMgNzMgIi4uL2NvbW1vbi91dHJpZS5oIg0KICAgIFVUUklFX0lO
REVYX1NISUZUPTIsDQoNCg0KICAgIFVUUklFX0RBVEFfR1JBTlVMQVJJVFk9MTw8VVRSSUVfSU5E
RVhfU0hJRlQsDQoNCg0KICAgIFVUUklFX1NVUlJPR0FURV9CTE9DS19CSVRTPTEwLVVUUklFX1NI
SUZULA0KDQoNCg0KDQoNCg0KICAgIFVUUklFX1NVUlJPR0FURV9CTE9DS19DT1VOVD0oMTw8VVRS
SUVfU1VSUk9HQVRFX0JMT0NLX0JJVFMpLA0KDQoNCiAgICBVVFJJRV9CTVBfSU5ERVhfTEVOR1RI
PTB4MTAwMDA+PlVUUklFX1NISUZUDQp9Ow0KIyAxMjAgIi4uL2NvbW1vbi91dHJpZS5oIg0KdHlw
ZWRlZiBpbnQzMl90DQpVVHJpZUdldEZvbGRpbmdPZmZzZXQodWludDMyX3QgZGF0YSk7DQojIDEz
MiAiLi4vY29tbW9uL3V0cmllLmgiDQpzdHJ1Y3QgVVRyaWUgew0KICAgIGNvbnN0IHVpbnQxNl90
ICppbmRleDsNCiAgICBjb25zdCB1aW50MzJfdCAqZGF0YTMyOw0KDQoNCg0KDQoNCg0KICAgIFVU
cmllR2V0Rm9sZGluZ09mZnNldCAqZ2V0Rm9sZGluZ09mZnNldDsNCg0KICAgIGludDMyX3QgaW5k
ZXhMZW5ndGgsIGRhdGFMZW5ndGg7DQogICAgdWludDMyX3QgaW5pdGlhbFZhbHVlOw0KICAgIFVC
b29sIGlzTGF0aW4xTGluZWFyOw0KfTsNCg0KdHlwZWRlZiBzdHJ1Y3QgVVRyaWUgVVRyaWU7DQoj
IDQyNyAiLi4vY29tbW9uL3V0cmllLmgiDQp0eXBlZGVmIHVpbnQzMl90DQpVVHJpZUVudW1WYWx1
ZShjb25zdCB2b2lkICpjb250ZXh0LCB1aW50MzJfdCB2YWx1ZSk7DQojIDQ0MyAiLi4vY29tbW9u
L3V0cmllLmgiDQp0eXBlZGVmIFVCb29sDQpVVHJpZUVudW1SYW5nZShjb25zdCB2b2lkICpjb250
ZXh0LCBVQ2hhcjMyIHN0YXJ0LCBVQ2hhcjMyIGxpbWl0LCB1aW50MzJfdCB2YWx1ZSk7DQojIDQ2
MiAiLi4vY29tbW9uL3V0cmllLmgiDQpleHRlcm4gIkMiIHZvaWQNCnV0cmllX2VudW1fMl8yKFVU
cmllICp0cmllLA0KICAgICAgICAgICBVVHJpZUVudW1WYWx1ZSAqZW51bVZhbHVlLCBVVHJpZUVu
dW1SYW5nZSAqZW51bVJhbmdlLCBjb25zdCB2b2lkICpjb250ZXh0KTsNCiMgNDc3ICIuLi9jb21t
b24vdXRyaWUuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdXRyaWVfdW5zZXJpYWxpemVfMl8yKFVU
cmllICp0cmllLCBjb25zdCB1aW50OF90ICpkYXRhLCBpbnQzMl90IGxlbmd0aCwgVUVycm9yQ29k
ZSAqcEVycm9yQ29kZSk7DQojIDQ4NyAiLi4vY29tbW9uL3V0cmllLmgiDQpzdHJ1Y3QgVU5ld1Ry
aWUgew0KDQoNCg0KDQogICAgaW50MzJfdCBpbmRleFsoMHgxMTAwMDA+PlVUUklFX1NISUZUKV07
DQogICAgdWludDMyX3QgKmRhdGE7DQoNCiAgICBpbnQzMl90IGluZGV4TGVuZ3RoLCBkYXRhQ2Fw
YWNpdHksIGRhdGFMZW5ndGg7DQogICAgVUJvb2wgaXNBbGxvY2F0ZWQsIGlzRGF0YUFsbG9jYXRl
ZDsNCiAgICBVQm9vbCBpc0xhdGluMUxpbmVhciwgaXNDb21wYWN0ZWQ7DQoNCg0KDQoNCg0KICAg
IGludDMyX3QgbWFwWygweDExMDAwMCtVVFJJRV9EQVRBX0JMT0NLX0xFTkdUSCsweDQwMCk+PlVU
UklFX1NISUZUXTsNCn07DQoNCnR5cGVkZWYgc3RydWN0IFVOZXdUcmllIFVOZXdUcmllOw0KIyA1
MjYgIi4uL2NvbW1vbi91dHJpZS5oIg0KdHlwZWRlZiB1aW50MzJfdA0KVU5ld1RyaWVHZXRGb2xk
ZWRWYWx1ZShVTmV3VHJpZSAqdHJpZSwgVUNoYXIzMiBzdGFydCwgaW50MzJfdCBvZmZzZXQpOw0K
IyA1NTMgIi4uL2NvbW1vbi91dHJpZS5oIg0KZXh0ZXJuICJDIiBVTmV3VHJpZSAqDQp1dHJpZV9v
cGVuXzJfMihVTmV3VHJpZSAqZmlsbEluLA0KICAgICAgICAgICB1aW50MzJfdCAqYWxpYXNEYXRh
LCBpbnQzMl90IG1heERhdGFMZW5ndGgsDQogICAgICAgICAgIHVpbnQzMl90IGluaXRpYWxWYWx1
ZSwgVUJvb2wgbGF0aW4xTGluZWFyKTsNCiMgNTY4ICIuLi9jb21tb24vdXRyaWUuaCINCmV4dGVy
biAiQyIgVU5ld1RyaWUgKg0KdXRyaWVfY2xvbmVfMl8yKFVOZXdUcmllICpmaWxsSW4sIGNvbnN0
IFVOZXdUcmllICpvdGhlciwgdWludDMyX3QgKmFsaWFzRGF0YSwgaW50MzJfdCBhbGlhc0RhdGFM
ZW5ndGgpOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHZvaWQNCnV0cmllX2Nsb3NlXzJfMihV
TmV3VHJpZSAqdHJpZSk7DQojIDU5MCAiLi4vY29tbW9uL3V0cmllLmgiDQpleHRlcm4gIkMiIHVp
bnQzMl90ICoNCnV0cmllX2dldERhdGFfMl8yKFVOZXdUcmllICp0cmllLCBpbnQzMl90ICpwTGVu
Z3RoKTsNCiMgNjAxICIuLi9jb21tb24vdXRyaWUuaCINCmV4dGVybiAiQyIgVUJvb2wNCnV0cmll
X3NldDMyXzJfMihVTmV3VHJpZSAqdHJpZSwgVUNoYXIzMiBjLCB1aW50MzJfdCB2YWx1ZSk7DQoj
IDYxNCAiLi4vY29tbW9uL3V0cmllLmgiDQpleHRlcm4gIkMiIHVpbnQzMl90DQp1dHJpZV9nZXQz
Ml8yXzIoVU5ld1RyaWUgKnRyaWUsIFVDaGFyMzIgYywgVUJvb2wgKnBJbkJsb2NrWmVybyk7DQoj
IDYyOSAiLi4vY29tbW9uL3V0cmllLmgiDQpleHRlcm4gIkMiIFVCb29sDQp1dHJpZV9zZXRSYW5n
ZTMyXzJfMihVTmV3VHJpZSAqdHJpZSwgVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBsaW1pdCwgdWlu
dDMyX3QgdmFsdWUsIFVCb29sIG92ZXJ3cml0ZSk7DQojIDY1NiAiLi4vY29tbW9uL3V0cmllLmgi
DQpleHRlcm4gIkMiIGludDMyX3QNCnV0cmllX3NlcmlhbGl6ZV8yXzIoVU5ld1RyaWUgKnRyaWUs
IHVpbnQ4X3QgKmRhdGEsIGludDMyX3QgY2FwYWNpdHksDQogICAgICAgICAgICAgICAgVU5ld1Ry
aWVHZXRGb2xkZWRWYWx1ZSAqZ2V0Rm9sZGVkVmFsdWUsDQogICAgICAgICAgICAgICAgVUJvb2wg
cmVkdWNlVG8xNkJpdHMsDQogICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7
DQoNCn0NCiMgMjYgInVjb2xfY250LmgiIDINCiMgMSAiLi4vY29tbW9uL3VoYXNoLmgiIDENCiMg
NzYgIi4uL2NvbW1vbi91aGFzaC5oIg0KZXh0ZXJuICJDIiB7DQojIDg4ICIuLi9jb21tb24vdWhh
c2guaCINCnVuaW9uIFVIYXNoVG9rIHsNCiAgICB2b2lkKiBwb2ludGVyOw0KICAgIGludDMyX3Qg
aW50ZWdlcjsNCn07DQp0eXBlZGVmIHVuaW9uIFVIYXNoVG9rIFVIYXNoVG9rOw0KDQoNCg0KDQpz
dHJ1Y3QgVUhhc2hFbGVtZW50IHsNCg0KICAgIGludDMyX3QgaGFzaGNvZGU7DQogICAgVUhhc2hU
b2sgdmFsdWU7DQogICAgVUhhc2hUb2sga2V5Ow0KfTsNCnR5cGVkZWYgc3RydWN0IFVIYXNoRWxl
bWVudCBVSGFzaEVsZW1lbnQ7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIGludDMyX3QgVUhhc2hGdW5j
dGlvbihjb25zdCBVSGFzaFRvayBrZXkpOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIFVCb29sIFVL
ZXlDb21wYXJhdG9yKGNvbnN0IFVIYXNoVG9rIGtleTEsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVUhhc2hUb2sga2V5Mik7DQoNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgdm9pZCBVT2JqZWN0RGVsZXRlcih2b2lkKiBvYmopOw0KDQoNCg0KDQoNCmVudW0gVUhh
c2hSZXNpemVQb2xpY3kgew0KICAgIFVfR1JPVywNCiAgICBVX0dST1dfQU5EX1NIUklOSywNCiAg
ICBVX0ZJWEVEDQp9Ow0KDQoNCg0KDQoNCnN0cnVjdCBVSGFzaHRhYmxlIHsNCg0KDQoNCiAgICBV
SGFzaEVsZW1lbnQgKmVsZW1lbnRzOw0KDQoNCg0KICAgIGludDMyX3QgY291bnQ7DQoNCg0KICAg
IGludDMyX3QgbGVuZ3RoOw0KDQogICAgaW50MzJfdCBwcmltZUluZGV4Ow0KDQoNCg0KDQogICAg
aW50MzJfdCBoaWdoV2F0ZXJNYXJrOw0KICAgIGludDMyX3QgbG93V2F0ZXJNYXJrOw0KICAgIGZs
b2F0IGhpZ2hXYXRlclJhdGlvOw0KICAgIGZsb2F0IGxvd1dhdGVyUmF0aW87DQoNCg0KDQogICAg
VUhhc2hGdW5jdGlvbiAqa2V5SGFzaGVyOw0KDQogICAgVUtleUNvbXBhcmF0b3IgKmtleUNvbXBh
cmF0b3I7DQoNCiAgICBVT2JqZWN0RGVsZXRlciAqa2V5RGVsZXRlcjsNCg0KICAgIFVPYmplY3RE
ZWxldGVyICp2YWx1ZURlbGV0ZXI7DQoNCn07DQp0eXBlZGVmIHN0cnVjdCBVSGFzaHRhYmxlIFVI
YXNodGFibGU7DQoNCn0NCiMgMTk1ICIuLi9jb21tb24vdWhhc2guaCINCmV4dGVybiAiQyIgVUhh
c2h0YWJsZSoNCnVoYXNoX29wZW5fMl8yKFVIYXNoRnVuY3Rpb24gKmtleUhhc2gsDQogICAgICAg
ICAgIFVLZXlDb21wYXJhdG9yICprZXlDb21wLA0KICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0
dXMpOw0KIyAyMTEgIi4uL2NvbW1vbi91aGFzaC5oIg0KZXh0ZXJuICJDIiBVSGFzaHRhYmxlKg0K
dWhhc2hfb3BlblNpemVfMl8yKFVIYXNoRnVuY3Rpb24gKmtleUhhc2gsDQogICAgICAgICAgICAg
ICBVS2V5Q29tcGFyYXRvciAqa2V5Q29tcCwNCiAgICAgICAgICAgICAgIGludDMyX3Qgc2l6ZSwN
CiAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7DQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiB2b2lkDQp1aGFzaF9jbG9zZV8yXzIoVUhhc2h0YWJsZSAqaGFzaCk7DQojIDIzMiAiLi4vY29t
bW9uL3VoYXNoLmgiDQpleHRlcm4gIkMiIFVIYXNoRnVuY3Rpb24gKg0KdWhhc2hfc2V0S2V5SGFz
aGVyXzJfMihVSGFzaHRhYmxlICpoYXNoLCBVSGFzaEZ1bmN0aW9uICpmbik7DQojIDI0MiAiLi4v
Y29tbW9uL3VoYXNoLmgiDQpleHRlcm4gIkMiIFVLZXlDb21wYXJhdG9yICoNCnVoYXNoX3NldEtl
eUNvbXBhcmF0b3JfMl8yKFVIYXNodGFibGUgKmhhc2gsIFVLZXlDb21wYXJhdG9yICpmbik7DQoj
IDI1NSAiLi4vY29tbW9uL3VoYXNoLmgiDQpleHRlcm4gIkMiIFVPYmplY3REZWxldGVyICoNCnVo
YXNoX3NldEtleURlbGV0ZXJfMl8yKFVIYXNodGFibGUgKmhhc2gsIFVPYmplY3REZWxldGVyICpm
bik7DQojIDI2OCAiLi4vY29tbW9uL3VoYXNoLmgiDQpleHRlcm4gIkMiIFVPYmplY3REZWxldGVy
ICoNCnVoYXNoX3NldFZhbHVlRGVsZXRlcl8yXzIoVUhhc2h0YWJsZSAqaGFzaCwgVU9iamVjdERl
bGV0ZXIgKmZuKTsNCiMgMjc4ICIuLi9jb21tb24vdWhhc2guaCINCmV4dGVybiAiQyIgdm9pZA0K
dWhhc2hfc2V0UmVzaXplUG9saWN5XzJfMihVSGFzaHRhYmxlICpoYXNoLCBlbnVtIFVIYXNoUmVz
aXplUG9saWN5IHBvbGljeSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGludDMyX3QNCnVoYXNo
X2NvdW50XzJfMihjb25zdCBVSGFzaHRhYmxlICpoYXNoKTsNCiMgMzAyICIuLi9jb21tb24vdWhh
c2guaCINCmV4dGVybiAiQyIgdm9pZCoNCnVoYXNoX3B1dF8yXzIoVUhhc2h0YWJsZSAqaGFzaCwN
CiAgICAgICAgICB2b2lkICprZXksDQogICAgICAgICAgdm9pZCAqdmFsdWUsDQogICAgICAgICAg
VUVycm9yQ29kZSAqc3RhdHVzKTsNCiMgMzIwICIuLi9jb21tb24vdWhhc2guaCINCmV4dGVybiAi
QyIgdm9pZCoNCnVoYXNoX2lwdXRfMl8yKFVIYXNodGFibGUgKmhhc2gsDQogICAgICAgICAgIGlu
dDMyX3Qga2V5LA0KICAgICAgICAgICB2b2lkKiB2YWx1ZSwNCiAgICAgICAgICAgVUVycm9yQ29k
ZSAqc3RhdHVzKTsNCiMgMzM4ICIuLi9jb21tb24vdWhhc2guaCINCmV4dGVybiAiQyIgaW50MzJf
dA0KdWhhc2hfcHV0aV8yXzIoVUhhc2h0YWJsZSAqaGFzaCwNCiAgICAgICAgICAgdm9pZCoga2V5
LA0KICAgICAgICAgICBpbnQzMl90IHZhbHVlLA0KICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0
dXMpOw0KIyAzNTEgIi4uL2NvbW1vbi91aGFzaC5oIg0KZXh0ZXJuICJDIiB2b2lkKg0KdWhhc2hf
Z2V0XzJfMihjb25zdCBVSGFzaHRhYmxlICpoYXNoLA0KICAgICAgICAgIGNvbnN0IHZvaWQgKmtl
eSk7DQojIDM2MiAiLi4vY29tbW9uL3VoYXNoLmgiDQpleHRlcm4gIkMiIHZvaWQqDQp1aGFzaF9p
Z2V0XzJfMihjb25zdCBVSGFzaHRhYmxlICpoYXNoLA0KICAgICAgICAgICBpbnQzMl90IGtleSk7
DQojIDM3MyAiLi4vY29tbW9uL3VoYXNoLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVoYXNoX2dl
dGlfMl8yKGNvbnN0IFVIYXNodGFibGUgKmhhc2gsDQogICAgICAgICAgIGNvbnN0IHZvaWQqIGtl
eSk7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgdm9pZCoNCnVoYXNoX3JlbW92ZV8yXzIoVUhh
c2h0YWJsZSAqaGFzaCwNCiAgICAgICAgICAgICBjb25zdCB2b2lkICprZXkpOw0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIHZvaWQqDQp1aGFzaF9pcmVtb3ZlXzJfMihVSGFzaHRhYmxlICpoYXNo
LA0KICAgICAgICAgICAgICBpbnQzMl90IGtleSk7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
aW50MzJfdA0KdWhhc2hfcmVtb3ZlaV8yXzIoVUhhc2h0YWJsZSAqaGFzaCwNCiAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCoga2V5KTsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHZvaWQNCnVoYXNoX3Jl
bW92ZUFsbF8yXzIoVUhhc2h0YWJsZSAqaGFzaCk7DQojIDQyNSAiLi4vY29tbW9uL3VoYXNoLmgi
DQpleHRlcm4gIkMiIGNvbnN0IFVIYXNoRWxlbWVudCoNCnVoYXNoX2ZpbmRfMl8yKGNvbnN0IFVI
YXNodGFibGUgKmhhc2gsIGNvbnN0IHZvaWQqIGtleSk7DQojIDQ0MSAiLi4vY29tbW9uL3VoYXNo
LmgiDQpleHRlcm4gIkMiIGNvbnN0IFVIYXNoRWxlbWVudCoNCnVoYXNoX25leHRFbGVtZW50XzJf
Mihjb25zdCBVSGFzaHRhYmxlICpoYXNoLA0KICAgICAgICAgICAgICAgICAgaW50MzJfdCAqcG9z
KTsNCiMgNDU2ICIuLi9jb21tb24vdWhhc2guaCINCmV4dGVybiAiQyIgdm9pZCoNCnVoYXNoX3Jl
bW92ZUVsZW1lbnRfMl8yKFVIYXNodGFibGUgKmhhc2gsIGNvbnN0IFVIYXNoRWxlbWVudCogZSk7
DQojIDQ2OCAiLi4vY29tbW9uL3VoYXNoLmgiDQpleHRlcm4gIkMiIFVIYXNoVG9rDQp1aGFzaF90
b2tpXzJfMihpbnQzMl90IGkpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBVSGFzaFRvaw0KdWhh
c2hfdG9rcF8yXzIodm9pZCogcCk7DQojIDQ5MCAiLi4vY29tbW9uL3VoYXNoLmgiDQpleHRlcm4g
IkMiIGludDMyX3QNCnVoYXNoX2hhc2hVQ2hhcnNfMl8yKGNvbnN0IFVIYXNoVG9rIGtleSk7DQoj
IDUwMCAiLi4vY29tbW9uL3VoYXNoLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVoYXNoX2hhc2hD
aGFyc18yXzIoY29uc3QgVUhhc2hUb2sga2V5KTsNCg0KDQpleHRlcm4gIkMiIGludDMyX3QNCnVo
YXNoX2hhc2hVQ2hhcnNOXzJfMihjb25zdCBVQ2hhciAqa2V5LCBpbnQzMl90IGxlbmd0aCk7DQoj
IDUxNCAiLi4vY29tbW9uL3VoYXNoLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVoYXNoX2hhc2hJ
Q2hhcnNfMl8yKGNvbnN0IFVIYXNoVG9rIGtleSk7DQojIDUyNCAiLi4vY29tbW9uL3VoYXNoLmgi
DQpleHRlcm4gIkMiIFVCb29sDQp1aGFzaF9jb21wYXJlVUNoYXJzXzJfMihjb25zdCBVSGFzaFRv
ayBrZXkxLCBjb25zdCBVSGFzaFRvayBrZXkyKTsNCiMgNTM0ICIuLi9jb21tb24vdWhhc2guaCIN
CmV4dGVybiAiQyIgVUJvb2wNCnVoYXNoX2NvbXBhcmVDaGFyc18yXzIoY29uc3QgVUhhc2hUb2sg
a2V5MSwgY29uc3QgVUhhc2hUb2sga2V5Mik7DQojIDU0NCAiLi4vY29tbW9uL3VoYXNoLmgiDQpl
eHRlcm4gIkMiIFVCb29sDQp1aGFzaF9jb21wYXJlSUNoYXJzXzJfMihjb25zdCBVSGFzaFRvayBr
ZXkxLCBjb25zdCBVSGFzaFRvayBrZXkyKTsNCiMgNTU2ICIuLi9jb21tb24vdWhhc2guaCINCmV4
dGVybiAiQyIgaW50MzJfdA0KdWhhc2hfaGFzaFVuaWNvZGVTdHJpbmdfMl8yKGNvbnN0IFVIYXNo
VG9rIGtleSk7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgaW50MzJfdA0KdWhhc2hfaGFzaENh
c2VsZXNzVW5pY29kZVN0cmluZ18yXzIoY29uc3QgVUhhc2hUb2sga2V5KTsNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBVQm9vbA0KdWhhc2hfY29tcGFyZVVuaWNvZGVTdHJpbmdfMl8yKGNvbnN0
IFVIYXNoVG9rIGtleTEsIGNvbnN0IFVIYXNoVG9rIGtleTIpOw0KIyA1ODQgIi4uL2NvbW1vbi91
aGFzaC5oIg0KZXh0ZXJuICJDIiBVQm9vbA0KdWhhc2hfY29tcGFyZUNhc2VsZXNzVW5pY29kZVN0
cmluZ18yXzIoY29uc3QgVUhhc2hUb2sga2V5MSwgY29uc3QgVUhhc2hUb2sga2V5Mik7DQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiB2b2lkDQp1aGFzaF9kZWxldGVVbmljb2RlU3RyaW5nXzJfMih2b2lk
ICpvYmopOw0KIyA2MDMgIi4uL2NvbW1vbi91aGFzaC5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1
aGFzaF9oYXNoTG9uZ18yXzIoY29uc3QgVUhhc2hUb2sga2V5KTsNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBVQm9vbA0KdWhhc2hfY29tcGFyZUxvbmdfMl8yKGNvbnN0IFVIYXNoVG9rIGtleTEs
IGNvbnN0IFVIYXNoVG9rIGtleTIpOw0KIyA2MjMgIi4uL2NvbW1vbi91aGFzaC5oIg0KZXh0ZXJu
ICJDIiB2b2lkDQp1aGFzaF9kZWxldGVIYXNodGFibGVfMl8yKHZvaWQgKm9iaik7DQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiB2b2lkDQp1aGFzaF9kZWxldGVVVmVjdG9yXzJfMih2b2lkICpvYmopOw0K
DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB2b2lkDQp1aGFzaF9mcmVlQmxvY2tfMl8yKHZvaWQgKm9i
aik7DQojIDI3ICJ1Y29sX2NudC5oIiAyDQojIDEgInVjb2xfZWxtLmgiIDENCiMgMjggInVjb2xf
Y250LmgiIDINCiMgMSAidWNvbF9pbXAuaCIgMQ0KIyAyOSAidWNvbF9pbXAuaCINCiMgMSAidW5p
Y29kZS91Y29sLmgiIDENCiMgMTIgInVuaWNvZGUvdWNvbC5oIg0KIyAxICIuLi9jb21tb24vdW5p
Y29kZS91bm9ybS5oIiAxDQojIDE5ICIuLi9jb21tb24vdW5pY29kZS91bm9ybS5oIg0KIyAxICIu
Li9jb21tb24vdW5pY29kZS91aXRlci5oIiAxDQojIDMwICIuLi9jb21tb24vdW5pY29kZS91aXRl
ci5oIg0KICAgIG5hbWVzcGFjZSBpY3VfMl8yIHsNCg0KICAgIGNsYXNzIENoYXJhY3Rlckl0ZXJh
dG9yOw0KICAgIGNsYXNzIFJlcGxhY2VhYmxlOw0KDQogICAgfQ0KDQoNCmV4dGVybiAiQyIgew0K
DQpzdHJ1Y3QgVUNoYXJJdGVyYXRvcjsNCnR5cGVkZWYgc3RydWN0IFVDaGFySXRlcmF0b3IgVUNo
YXJJdGVyYXRvcjsNCg0KDQoNCg0KDQoNCg0KZW51bSBVQ2hhckl0ZXJhdG9yT3JpZ2luIHsNCiAg
ICBVSVRFUl9TVEFSVCwgVUlURVJfQ1VSUkVOVCwgVUlURVJfTElNSVQsIFVJVEVSX1pFUk8sIFVJ
VEVSX0xFTkdUSA0KfTsNCnR5cGVkZWYgZW51bSBVQ2hhckl0ZXJhdG9yT3JpZ2luIFVDaGFySXRl
cmF0b3JPcmlnaW47DQojIDY4ICIuLi9jb21tb24vdW5pY29kZS91aXRlci5oIg0KdHlwZWRlZiBp
bnQzMl90DQpVQ2hhckl0ZXJhdG9yR2V0SW5kZXgoVUNoYXJJdGVyYXRvciAqaXRlciwgVUNoYXJJ
dGVyYXRvck9yaWdpbiBvcmlnaW4pOw0KIyA5MSAiLi4vY29tbW9uL3VuaWNvZGUvdWl0ZXIuaCIN
CnR5cGVkZWYgaW50MzJfdA0KVUNoYXJJdGVyYXRvck1vdmUoVUNoYXJJdGVyYXRvciAqaXRlciwg
aW50MzJfdCBkZWx0YSwgVUNoYXJJdGVyYXRvck9yaWdpbiBvcmlnaW4pOw0KIyAxMDYgIi4uL2Nv
bW1vbi91bmljb2RlL3VpdGVyLmgiDQp0eXBlZGVmIFVCb29sDQpVQ2hhckl0ZXJhdG9ySGFzTmV4
dChVQ2hhckl0ZXJhdG9yICppdGVyKTsNCiMgMTIwICIuLi9jb21tb24vdW5pY29kZS91aXRlci5o
Ig0KdHlwZWRlZiBVQm9vbA0KVUNoYXJJdGVyYXRvckhhc1ByZXZpb3VzKFVDaGFySXRlcmF0b3Ig
Kml0ZXIpOw0KIyAxMzUgIi4uL2NvbW1vbi91bmljb2RlL3VpdGVyLmgiDQp0eXBlZGVmIGludDMy
X3QNClVDaGFySXRlcmF0b3JDdXJyZW50KFVDaGFySXRlcmF0b3IgKml0ZXIpOw0KIyAxNTEgIi4u
L2NvbW1vbi91bmljb2RlL3VpdGVyLmgiDQp0eXBlZGVmIGludDMyX3QNClVDaGFySXRlcmF0b3JO
ZXh0KFVDaGFySXRlcmF0b3IgKml0ZXIpOw0KIyAxNjcgIi4uL2NvbW1vbi91bmljb2RlL3VpdGVy
LmgiDQp0eXBlZGVmIGludDMyX3QNClVDaGFySXRlcmF0b3JQcmV2aW91cyhVQ2hhckl0ZXJhdG9y
ICppdGVyKTsNCiMgMTgxICIuLi9jb21tb24vdW5pY29kZS91aXRlci5oIg0KdHlwZWRlZiBpbnQz
Ml90DQpVQ2hhckl0ZXJhdG9yUmVzZXJ2ZWQoVUNoYXJJdGVyYXRvciAqaXRlciwgaW50MzJfdCBz
b21ldGhpbmcpOw0KIyAyMDYgIi4uL2NvbW1vbi91bmljb2RlL3VpdGVyLmgiDQpzdHJ1Y3QgVUNo
YXJJdGVyYXRvciB7DQoNCg0KDQoNCiAgICBjb25zdCB2b2lkICpjb250ZXh0Ow0KDQoNCg0KDQoN
CiAgICBpbnQzMl90IGxlbmd0aDsNCg0KDQoNCg0KDQogICAgaW50MzJfdCBzdGFydDsNCg0KDQoN
Cg0KDQogICAgaW50MzJfdCBpbmRleDsNCg0KDQoNCg0KDQogICAgaW50MzJfdCBsaW1pdDsNCg0K
DQoNCg0KICAgIGludDMyX3QgcmVzZXJ2ZWRGaWVsZDsNCg0KDQoNCg0KDQoNCg0KICAgIFVDaGFy
SXRlcmF0b3JHZXRJbmRleCAqZ2V0SW5kZXg7DQojIDI1OCAiLi4vY29tbW9uL3VuaWNvZGUvdWl0
ZXIuaCINCiAgICBVQ2hhckl0ZXJhdG9yTW92ZSAqbW92ZTsNCg0KDQoNCg0KDQoNCg0KICAgIFVD
aGFySXRlcmF0b3JIYXNOZXh0ICpoYXNOZXh0Ow0KDQoNCg0KDQoNCg0KICAgIFVDaGFySXRlcmF0
b3JIYXNQcmV2aW91cyAqaGFzUHJldmlvdXM7DQoNCg0KDQoNCg0KDQoNCiAgICBVQ2hhckl0ZXJh
dG9yQ3VycmVudCAqY3VycmVudDsNCiMgMjkwICIuLi9jb21tb24vdW5pY29kZS91aXRlci5oIg0K
ICAgIFVDaGFySXRlcmF0b3JOZXh0ICpuZXh0Ow0KIyAyOTkgIi4uL2NvbW1vbi91bmljb2RlL3Vp
dGVyLmgiDQogICAgVUNoYXJJdGVyYXRvclByZXZpb3VzICpwcmV2aW91czsNCg0KDQoNCg0KDQoN
CiAgICBVQ2hhckl0ZXJhdG9yUmVzZXJ2ZWQgKnJlc2VydmVkRm47DQp9Ow0KIyAzMjcgIi4uL2Nv
bW1vbi91bmljb2RlL3VpdGVyLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVpdGVyX2N1cnJlbnQz
Ml8yXzIoVUNoYXJJdGVyYXRvciAqaXRlcik7DQojIDM0NCAiLi4vY29tbW9uL3VuaWNvZGUvdWl0
ZXIuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdWl0ZXJfbmV4dDMyXzJfMihVQ2hhckl0ZXJhdG9y
ICppdGVyKTsNCiMgMzYxICIuLi9jb21tb24vdW5pY29kZS91aXRlci5oIg0KZXh0ZXJuICJDIiBp
bnQzMl90DQp1aXRlcl9wcmV2aW91czMyXzJfMihVQ2hhckl0ZXJhdG9yICppdGVyKTsNCiMgMzgz
ICIuLi9jb21tb24vdW5pY29kZS91aXRlci5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1aXRlcl9zZXRT
dHJpbmdfMl8yKFVDaGFySXRlcmF0b3IgKml0ZXIsIGNvbnN0IFVDaGFyICpzLCBpbnQzMl90IGxl
bmd0aCk7DQojIDQwNSAiLi4vY29tbW9uL3VuaWNvZGUvdWl0ZXIuaCINCmV4dGVybiAiQyIgdm9p
ZA0KdWl0ZXJfc2V0Q2hhcmFjdGVySXRlcmF0b3JfMl8yKFVDaGFySXRlcmF0b3IgKml0ZXIsIENo
YXJhY3Rlckl0ZXJhdG9yICpjaGFySXRlcik7DQojIDQyNyAiLi4vY29tbW9uL3VuaWNvZGUvdWl0
ZXIuaCINCmV4dGVybiAiQyIgdm9pZA0KdWl0ZXJfc2V0UmVwbGFjZWFibGVfMl8yKFVDaGFySXRl
cmF0b3IgKml0ZXIsIGNvbnN0IFJlcGxhY2VhYmxlICpyZXApOw0KDQoNCg0KfQ0KIyAyMCAiLi4v
Y29tbW9uL3VuaWNvZGUvdW5vcm0uaCIgMg0KIyAxMjQgIi4uL2NvbW1vbi91bmljb2RlL3Vub3Jt
LmgiDQp0eXBlZGVmIGVudW0gew0KDQogIFVOT1JNX05PTkUgPSAxLA0KDQogIFVOT1JNX05GRCA9
IDIsDQoNCiAgVU5PUk1fTkZLRCA9IDMsDQoNCiAgVU5PUk1fTkZDID0gNCwNCg0KICBVTk9STV9E
RUZBVUxUID0gVU5PUk1fTkZDLA0KDQogIFVOT1JNX05GS0MgPTUsDQoNCiAgVU5PUk1fRkNEID0g
NiwNCg0KDQogIFVOT1JNX01PREVfQ09VTlQsDQoNCg0KDQoNCg0KDQoNCiAgVUNPTF9OT19OT1JN
QUxJWkFUSU9OID0gMSwNCg0KDQoNCg0KICBVQ09MX0RFQ09NUF9DQU4gPSAyLA0KDQoNCg0KDQog
IFVDT0xfREVDT01QX0NPTVBBVCA9IDMsDQoNCg0KDQoNCiAgVUNPTF9ERUZBVUxUX05PUk1BTEla
QVRJT04gPSBVQ09MX0RFQ09NUF9DT01QQVQsDQoNCg0KDQoNCiAgVUNPTF9ERUNPTVBfQ0FOX0NP
TVBfQ09NUEFUID0gNCwNCg0KDQoNCg0KICBVQ09MX0RFQ09NUF9DT01QQVRfQ09NUF9DQU4gPTUs
DQoNCg0KDQoNCg0KICBVQ09MX0lHTk9SRV9IQU5HVUwgPSAxNiwNCg0KDQoNCg0KICBVTk9STV9J
R05PUkVfSEFOR1VMID0gMTYNCn0gVU5vcm1hbGl6YXRpb25Nb2RlOw0KIyAyMDcgIi4uL2NvbW1v
bi91bmljb2RlL3Vub3JtLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVub3JtX25vcm1hbGl6ZV8y
XzIoY29uc3QgVUNoYXIgKnNvdXJjZSwgaW50MzJfdCBzb3VyY2VMZW5ndGgsDQogICAgICAgICAg
ICAgICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsIGludDMyX3Qgb3B0aW9ucywNCiAgICAgICAg
ICAgICAgICBVQ2hhciAqcmVzdWx0LCBpbnQzMl90IHJlc3VsdExlbmd0aCwNCiAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOw0KIyAyMjUgIi4uL2NvbW1vbi91bmljb2RlL3Vub3Jt
LmgiDQp0eXBlZGVmIGVudW0gVU5vcm1hbGl6YXRpb25DaGVja1Jlc3VsdCB7DQoNCg0KDQogIFVO
T1JNX05PLA0KDQoNCg0KICBVTk9STV9ZRVMsDQoNCg0KDQoNCiAgVU5PUk1fTUFZQkUNCn0gVU5v
cm1hbGl6YXRpb25DaGVja1Jlc3VsdDsNCiMgMjYxICIuLi9jb21tb24vdW5pY29kZS91bm9ybS5o
Ig0KZXh0ZXJuICJDIiBVTm9ybWFsaXphdGlvbkNoZWNrUmVzdWx0DQp1bm9ybV9xdWlja0NoZWNr
XzJfMihjb25zdCBVQ2hhciAqc291cmNlLCBpbnQzMl90IHNvdXJjZWxlbmd0aCwNCiAgICAgICAg
ICAgICAgICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsDQogICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUgKnN0YXR1cyk7DQojIDI4NyAiLi4vY29tbW9uL3VuaWNvZGUvdW5vcm0uaCINCmV4dGVy
biAiQyIgVUJvb2wNCnVub3JtX2lzTm9ybWFsaXplZF8yXzIoY29uc3QgVUNoYXIgKnNyYywgaW50
MzJfdCBzcmNMZW5ndGgsDQogICAgICAgICAgICAgICAgICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1v
ZGUsDQogICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQojIDM2NSAi
Li4vY29tbW9uL3VuaWNvZGUvdW5vcm0uaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdW5vcm1fbmV4
dF8yXzIoVUNoYXJJdGVyYXRvciAqc3JjLA0KICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJf
dCBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBpbnQz
Ml90IG9wdGlvbnMsDQogICAgICAgICAgIFVCb29sIGRvTm9ybWFsaXplLCBVQm9vbCAqcE5lZWRl
ZFRvTm9ybWFsaXplLA0KICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCiMgMzk4
ICIuLi9jb21tb24vdW5pY29kZS91bm9ybS5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1bm9ybV9w
cmV2aW91c18yXzIoVUNoYXJJdGVyYXRvciAqc3JjLA0KICAgICAgICAgICAgICAgVUNoYXIgKmRl
c3QsIGludDMyX3QgZGVzdENhcGFjaXR5LA0KICAgICAgICAgICAgICAgVU5vcm1hbGl6YXRpb25N
b2RlIG1vZGUsIGludDMyX3Qgb3B0aW9ucywNCiAgICAgICAgICAgICAgIFVCb29sIGRvTm9ybWFs
aXplLCBVQm9vbCAqcE5lZWRlZFRvTm9ybWFsaXplLA0KICAgICAgICAgICAgICAgVUVycm9yQ29k
ZSAqcEVycm9yQ29kZSk7DQojIDQ0MiAiLi4vY29tbW9uL3VuaWNvZGUvdW5vcm0uaCINCmV4dGVy
biAiQyIgaW50MzJfdA0KdW5vcm1fY29uY2F0ZW5hdGVfMl8yKGNvbnN0IFVDaGFyICpsZWZ0LCBp
bnQzMl90IGxlZnRMZW5ndGgsDQogICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqcmlnaHQs
IGludDMyX3QgcmlnaHRMZW5ndGgsDQogICAgICAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50
MzJfdCBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgICAgICAgICBVTm9ybWFsaXphdGlvbk1vZGUg
bW9kZSwgaW50MzJfdCBvcHRpb25zLA0KICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVy
cm9yQ29kZSk7DQojIDUzNyAiLi4vY29tbW9uL3VuaWNvZGUvdW5vcm0uaCINCmV4dGVybiAiQyIg
aW50MzJfdA0KdW5vcm1fY29tcGFyZV8yXzIoY29uc3QgVUNoYXIgKnMxLCBpbnQzMl90IGxlbmd0
aDEsDQogICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzMiwgaW50MzJfdCBsZW5ndGgyLA0KICAg
ICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zLA0KICAgICAgICAgICAgICBVRXJyb3JDb2RlICpw
RXJyb3JDb2RlKTsNCiMgMTMgInVuaWNvZGUvdWNvbC5oIiAyDQojIDEgIi4uL2NvbW1vbi91bmlj
b2RlL3BhcnNlZXJyLmgiIDENCiMgMjEgIi4uL2NvbW1vbi91bmljb2RlL3BhcnNlZXJyLmgiDQpl
bnVtIHsgVV9QQVJTRV9DT05URVhUX0xFTiA9IDE2IH07DQojIDQwICIuLi9jb21tb24vdW5pY29k
ZS9wYXJzZWVyci5oIg0KdHlwZWRlZiBzdHJ1Y3QgX1VQYXJzZUVycm9yIHsNCiMgNjIgIi4uL2Nv
bW1vbi91bmljb2RlL3BhcnNlZXJyLmgiDQogICAgaW50MzJfdCBsaW5lOw0KIyA3MiAiLi4vY29t
bW9uL3VuaWNvZGUvcGFyc2VlcnIuaCINCiAgICBpbnQzMl90IG9mZnNldDsNCg0KDQoNCg0KDQog
ICAgVUNoYXIgcHJlQ29udGV4dFtVX1BBUlNFX0NPTlRFWFRfTEVOXTsNCg0KDQoNCg0KDQogICAg
VUNoYXIgcG9zdENvbnRleHRbVV9QQVJTRV9DT05URVhUX0xFTl07DQoNCn0gVVBhcnNlRXJyb3I7
DQojIDE0ICJ1bmljb2RlL3Vjb2wuaCIgMg0KIyAxICIuLi9jb21tb24vdW5pY29kZS91bG9jLmgi
IDENCiMgMjYyICIuLi9jb21tb24vdW5pY29kZS91bG9jLmgiDQp0eXBlZGVmIGVudW0gew0KDQog
IFVMT0NfQUNUVUFMX0xPQ0FMRSA9IDAsDQoNCiAgVUxPQ19WQUxJRF9MT0NBTEUgPSAxLA0KDQog
IFVMT0NfUkVRVUVTVEVEX0xPQ0FMRSA9IDIsDQogIFVMT0NfREFUQV9MT0NBTEVfVFlQRV9MSU1J
VA0KfSBVTG9jRGF0YUxvY2FsZVR5cGUgOw0KIyAyODIgIi4uL2NvbW1vbi91bmljb2RlL3Vsb2Mu
aCINCmV4dGVybiAiQyIgY29uc3QgY2hhcioNCnVsb2NfZ2V0RGVmYXVsdF8yXzIodm9pZCk7DQoj
IDI5NCAiLi4vY29tbW9uL3VuaWNvZGUvdWxvYy5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1bG9jX3Nl
dERlZmF1bHRfMl8yKGNvbnN0IGNoYXIqIGxvY2FsZUlELA0KICAgICAgICBVRXJyb3JDb2RlKiBz
dGF0dXMpOw0KIyAzMTAgIi4uL2NvbW1vbi91bmljb2RlL3Vsb2MuaCINCmV4dGVybiAiQyIgaW50
MzJfdA0KdWxvY19nZXRMYW5ndWFnZV8yXzIoY29uc3QgY2hhciogbG9jYWxlSUQsDQogICAgICAg
ICBjaGFyKiBsYW5ndWFnZSwNCiAgICAgICAgIGludDMyX3QgbGFuZ3VhZ2VDYXBhY2l0eSwNCiAg
ICAgICAgIFVFcnJvckNvZGUqIGVycik7DQojIDMyOCAiLi4vY29tbW9uL3VuaWNvZGUvdWxvYy5o
Ig0KZXh0ZXJuICJDIiBpbnQzMl90DQp1bG9jX2dldENvdW50cnlfMl8yKGNvbnN0IGNoYXIqIGxv
Y2FsZUlELA0KICAgICAgICBjaGFyKiBjb3VudHJ5LA0KICAgICAgICBpbnQzMl90IGNvdW50cnlD
YXBhY2l0eSwNCiAgICAgICAgVUVycm9yQ29kZSogZXJyKTsNCiMgMzQ2ICIuLi9jb21tb24vdW5p
Y29kZS91bG9jLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVsb2NfZ2V0VmFyaWFudF8yXzIoY29u
c3QgY2hhciogbG9jYWxlSUQsDQogICAgICAgIGNoYXIqIHZhcmlhbnQsDQogICAgICAgIGludDMy
X3QgdmFyaWFudENhcGFjaXR5LA0KICAgICAgICBVRXJyb3JDb2RlKiBlcnIpOw0KIyAzNjggIi4u
L2NvbW1vbi91bmljb2RlL3Vsb2MuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdWxvY19nZXROYW1l
XzJfMihjb25zdCBjaGFyKiBsb2NhbGVJRCwNCiAgICAgICAgIGNoYXIqIG5hbWUsDQogICAgICAg
ICBpbnQzMl90IG5hbWVDYXBhY2l0eSwNCiAgICAgICAgIFVFcnJvckNvZGUqIGVycik7DQojIDM4
MSAiLi4vY29tbW9uL3VuaWNvZGUvdWxvYy5oIg0KZXh0ZXJuICJDIiBjb25zdCBjaGFyKg0KdWxv
Y19nZXRJU08zTGFuZ3VhZ2VfMl8yKGNvbnN0IGNoYXIqIGxvY2FsZUlEKTsNCiMgMzkyICIuLi9j
b21tb24vdW5pY29kZS91bG9jLmgiDQpleHRlcm4gIkMiIGNvbnN0IGNoYXIqDQp1bG9jX2dldElT
TzNDb3VudHJ5XzJfMihjb25zdCBjaGFyKiBsb2NhbGVJRCk7DQojIDQwMiAiLi4vY29tbW9uL3Vu
aWNvZGUvdWxvYy5oIg0KZXh0ZXJuICJDIiB1aW50MzJfdA0KdWxvY19nZXRMQ0lEXzJfMihjb25z
dCBjaGFyKiBsb2NhbGVJRCk7DQojIDQyMSAiLi4vY29tbW9uL3VuaWNvZGUvdWxvYy5oIg0KZXh0
ZXJuICJDIiBpbnQzMl90DQp1bG9jX2dldERpc3BsYXlMYW5ndWFnZV8yXzIoY29uc3QgY2hhciog
bG9jYWxlLA0KICAgICAgICAgICAgY29uc3QgY2hhciogaW5Mb2NhbGUsDQogICAgICAgICAgICBV
Q2hhciogbGFuZ3VhZ2UsDQogICAgICAgICAgICBpbnQzMl90IGxhbmd1YWdlQ2FwYWNpdHksDQog
ICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOw0KIyA0NDQgIi4uL2NvbW1vbi91bmljb2Rl
L3Vsb2MuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdWxvY19nZXREaXNwbGF5Q291bnRyeV8yXzIo
Y29uc3QgY2hhciogbG9jYWxlLA0KICAgICAgICAgICAgY29uc3QgY2hhciogaW5Mb2NhbGUsDQog
ICAgICAgICAgICBVQ2hhciogY291bnRyeSwNCiAgICAgICAgICAgIGludDMyX3QgY291bnRyeUNh
cGFjaXR5LA0KICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsNCiMgNDY4ICIuLi9jb21t
b24vdW5pY29kZS91bG9jLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVsb2NfZ2V0RGlzcGxheVZh
cmlhbnRfMl8yKGNvbnN0IGNoYXIqIGxvY2FsZSwNCiAgICAgICAgICAgIGNvbnN0IGNoYXIqIGlu
TG9jYWxlLA0KICAgICAgICAgICAgICAgVUNoYXIqIHZhcmlhbnQsDQogICAgICAgICAgICAgaW50
MzJfdCB2YXJpYW50Q2FwYWNpdHksDQogICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOw0K
IyA0OTEgIi4uL2NvbW1vbi91bmljb2RlL3Vsb2MuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdWxv
Y19nZXREaXNwbGF5TmFtZV8yXzIoY29uc3QgY2hhciogbG9jYWxlSUQsDQogICAgICAgICAgICBj
b25zdCBjaGFyKiBpbkxvY2FsZUlELA0KICAgICAgICAgICAgVUNoYXIqIHJlc3VsdCwNCiAgICAg
ICAgICAgIGludDMyX3QgbWF4UmVzdWx0U2l6ZSwNCiAgICAgICAgICAgIFVFcnJvckNvZGUqIGVy
cik7DQojIDUwOSAiLi4vY29tbW9uL3VuaWNvZGUvdWxvYy5oIg0KZXh0ZXJuICJDIiBjb25zdCBj
aGFyKg0KdWxvY19nZXRBdmFpbGFibGVfMl8yKGludDMyX3Qgbik7DQoNCg0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgaW50MzJfdCB1bG9jX2NvdW50QXZhaWxhYmxlXzJfMih2b2lkKTsNCiMgNTI5ICIu
Li9jb21tb24vdW5pY29kZS91bG9jLmgiDQpleHRlcm4gIkMiIGNvbnN0IGNoYXIqIGNvbnN0Kg0K
dWxvY19nZXRJU09MYW5ndWFnZXNfMl8yKHZvaWQpOw0KIyA1NDEgIi4uL2NvbW1vbi91bmljb2Rl
L3Vsb2MuaCINCmV4dGVybiAiQyIgY29uc3QgY2hhciogY29uc3QqDQp1bG9jX2dldElTT0NvdW50
cmllc18yXzIodm9pZCk7DQojIDU1NyAiLi4vY29tbW9uL3VuaWNvZGUvdWxvYy5oIg0KZXh0ZXJu
ICJDIiBpbnQzMl90DQp1bG9jX2dldFBhcmVudF8yXzIoY29uc3QgY2hhciogbG9jYWxlSUQsDQog
ICAgICAgICAgICAgICAgIGNoYXIqIHBhcmVudCwNCiAgICAgICAgICAgICAgICAgaW50MzJfdCBw
YXJlbnRDYXBhY2l0eSwNCiAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogZXJyKTsNCiMgMTUg
InVuaWNvZGUvdWNvbC5oIiAyDQojIDUyICJ1bmljb2RlL3Vjb2wuaCINCnN0cnVjdCBjb2xsSXRl
cmF0ZTsNCg0KdHlwZWRlZiBzdHJ1Y3QgY29sbEl0ZXJhdGUgY29sbEl0ZXJhdGU7DQoNCg0KDQoN
CnN0cnVjdCBVQ29sbGF0b3I7DQoNCnR5cGVkZWYgc3RydWN0IFVDb2xsYXRvciBVQ29sbGF0b3I7
DQojIDc0ICJ1bmljb2RlL3Vjb2wuaCINCnR5cGVkZWYgZW51bSB7DQoNCiAgVUNPTF9FUVVBTCA9
IDAsDQoNCiAgVUNPTF9HUkVBVEVSID0gMSwNCg0KICBVQ09MX0xFU1MgPSAtMQ0KfSBVQ29sbGF0
aW9uUmVzdWx0IDsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSB7DQoNCiAgVUNPTF9ERUZBVUxU
ID0gLTEsDQoNCg0KICBVQ09MX1BSSU1BUlkgPSAwLA0KDQogIFVDT0xfU0VDT05EQVJZID0gMSwN
Cg0KICBVQ09MX1RFUlRJQVJZID0gMiwNCg0KICBVQ09MX0RFRkFVTFRfU1RSRU5HVEggPSBVQ09M
X1RFUlRJQVJZLA0KICBVQ09MX0NFX1NUUkVOR1RIX0xJTUlULA0KDQogIFVDT0xfUVVBVEVSTkFS
WT0zLA0KDQogIFVDT0xfSURFTlRJQ0FMPTE1LA0KICBVQ09MX1NUUkVOR1RIX0xJTUlULA0KDQoN
Cg0KDQogIFVDT0xfT0ZGID0gMTYsDQoNCg0KDQogIFVDT0xfT04gPSAxNywNCg0KDQogIFVDT0xf
U0hJRlRFRCA9IDIwLA0KDQogIFVDT0xfTk9OX0lHTk9SQUJMRSA9IDIxLA0KDQoNCg0KICBVQ09M
X0xPV0VSX0ZJUlNUID0gMjQsDQoNCiAgVUNPTF9VUFBFUl9GSVJTVCA9IDI1LA0KDQogIFVDT0xf
QVRUUklCVVRFX1ZBTFVFX0NPVU5UDQoNCn0gVUNvbEF0dHJpYnV0ZVZhbHVlOw0KIyAxNTYgInVu
aWNvZGUvdWNvbC5oIg0KdHlwZWRlZiBVQ29sQXR0cmlidXRlVmFsdWUgVUNvbGxhdGlvblN0cmVu
Z3RoOw0KDQoNCg0KdHlwZWRlZiBlbnVtIHsNCg0KDQoNCg0KICAgICBVQ09MX0ZSRU5DSF9DT0xM
QVRJT04sDQojIDE3NCAidW5pY29kZS91Y29sLmgiDQogICAgIFVDT0xfQUxURVJOQVRFX0hBTkRM
SU5HLA0KDQoNCg0KDQoNCg0KICAgICBVQ09MX0NBU0VfRklSU1QsDQoNCg0KDQoNCg0KDQoNCiAg
ICAgVUNPTF9DQVNFX0xFVkVMLA0KDQoNCg0KDQoNCg0KDQogICAgIFVDT0xfTk9STUFMSVpBVElP
Tl9NT0RFLA0KDQogICAgIFVDT0xfREVDT01QT1NJVElPTl9NT0RFID0gVUNPTF9OT1JNQUxJWkFU
SU9OX01PREUsDQojIDIxMCAidW5pY29kZS91Y29sLmgiDQogICAgIFVDT0xfU1RSRU5HVEgsDQoN
Cg0KDQoNCg0KICAgICBVQ09MX0hJUkFHQU5BX1FVQVRFUk5BUllfTU9ERSwNCiAgICAgVUNPTF9B
VFRSSUJVVEVfQ09VTlQNCn0gVUNvbEF0dHJpYnV0ZTsNCg0KDQp0eXBlZGVmIGVudW0gew0KDQog
IFVDT0xfVEFJTE9SSU5HX09OTFksDQoNCiAgVUNPTF9GVUxMX1JVTEVTDQp9IFVDb2xSdWxlT3B0
aW9uIDsNCiMgMjQ1ICJ1bmljb2RlL3Vjb2wuaCINCmV4dGVybiAiQyIgVUNvbGxhdG9yKg0KdWNv
bF9vcGVuXzJfMihjb25zdCBjaGFyICpsb2MsIFVFcnJvckNvZGUgKnN0YXR1cyk7DQojIDI3MyAi
dW5pY29kZS91Y29sLmgiDQpleHRlcm4gIkMiIFVDb2xsYXRvcioNCnVjb2xfb3BlblJ1bGVzXzJf
MiggY29uc3QgVUNoYXIgKnJ1bGVzLA0KICAgICAgICAgICAgICAgIGludDMyX3QgcnVsZXNMZW5n
dGgsDQogICAgICAgICAgICAgICAgVUNvbEF0dHJpYnV0ZVZhbHVlIG5vcm1hbGl6YXRpb25Nb2Rl
LA0KICAgICAgICAgICAgICAgIFVDb2xsYXRpb25TdHJlbmd0aCBzdHJlbmd0aCwNCiAgICAgICAg
ICAgICAgICBVUGFyc2VFcnJvciAqcGFyc2VFcnJvciwNCiAgICAgICAgICAgICAgICBVRXJyb3JD
b2RlICpzdGF0dXMpOw0KIyAyOTEgInVuaWNvZGUvdWNvbC5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1
Y29sX2Nsb3NlXzJfMihVQ29sbGF0b3IgKmNvbGwpOw0KIyAzMDkgInVuaWNvZGUvdWNvbC5oIg0K
ZXh0ZXJuICJDIiBVQ29sbGF0aW9uUmVzdWx0DQp1Y29sX3N0cmNvbGxfMl8yKCBjb25zdCBVQ29s
bGF0b3IgKmNvbGwsDQogICAgICAgIGNvbnN0IFVDaGFyICpzb3VyY2UsDQogICAgICAgIGludDMy
X3Qgc291cmNlTGVuZ3RoLA0KICAgICAgICBjb25zdCBVQ2hhciAqdGFyZ2V0LA0KICAgICAgICBp
bnQzMl90IHRhcmdldExlbmd0aCk7DQojIDMzMCAidW5pY29kZS91Y29sLmgiDQpleHRlcm4gIkMi
IFVCb29sDQp1Y29sX2dyZWF0ZXJfMl8yKGNvbnN0IFVDb2xsYXRvciAqY29sbCwNCiAgICAgICAg
ICAgICBjb25zdCBVQ2hhciAqc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbmd0aCwNCiAgICAgICAg
ICAgICBjb25zdCBVQ2hhciAqdGFyZ2V0LCBpbnQzMl90IHRhcmdldExlbmd0aCk7DQojIDM0OSAi
dW5pY29kZS91Y29sLmgiDQpleHRlcm4gIkMiIFVCb29sDQp1Y29sX2dyZWF0ZXJPckVxdWFsXzJf
Mihjb25zdCBVQ29sbGF0b3IgKmNvbGwsDQogICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFy
ICpzb3VyY2UsIGludDMyX3Qgc291cmNlTGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICBjb25z
dCBVQ2hhciAqdGFyZ2V0LCBpbnQzMl90IHRhcmdldExlbmd0aCk7DQojIDM2OCAidW5pY29kZS91
Y29sLmgiDQpleHRlcm4gIkMiIFVCb29sDQp1Y29sX2VxdWFsXzJfMihjb25zdCBVQ29sbGF0b3Ig
KmNvbGwsDQogICAgICAgICAgIGNvbnN0IFVDaGFyICpzb3VyY2UsIGludDMyX3Qgc291cmNlTGVu
Z3RoLA0KICAgICAgICAgICBjb25zdCBVQ2hhciAqdGFyZ2V0LCBpbnQzMl90IHRhcmdldExlbmd0
aCk7DQojIDM4MiAidW5pY29kZS91Y29sLmgiDQpleHRlcm4gIkMiIFVDb2xsYXRpb25TdHJlbmd0
aA0KdWNvbF9nZXRTdHJlbmd0aF8yXzIoY29uc3QgVUNvbGxhdG9yICpjb2xsKTsNCiMgMzk0ICJ1
bmljb2RlL3Vjb2wuaCINCmV4dGVybiAiQyIgdm9pZA0KdWNvbF9zZXRTdHJlbmd0aF8yXzIoVUNv
bGxhdG9yICpjb2xsLA0KICAgICAgICAgICAgICAgICBVQ29sbGF0aW9uU3RyZW5ndGggc3RyZW5n
dGgpOw0KIyA0MTAgInVuaWNvZGUvdWNvbC5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1Y29sX2dl
dERpc3BsYXlOYW1lXzJfMiggY29uc3QgY2hhciAqb2JqTG9jLA0KICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZGlzcExvYywNCiAgICAgICAgICAgIFVDaGFyICpyZXN1bHQsDQogICAgICAgICAgICBp
bnQzMl90IHJlc3VsdExlbmd0aCwNCiAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7DQoj
IDQyNiAidW5pY29kZS91Y29sLmgiDQpleHRlcm4gIkMiIGNvbnN0IGNoYXIqDQp1Y29sX2dldEF2
YWlsYWJsZV8yXzIoaW50MzJfdCBpbmRleCk7DQojIDQzNyAidW5pY29kZS91Y29sLmgiDQpleHRl
cm4gIkMiIGludDMyX3QNCnVjb2xfY291bnRBdmFpbGFibGVfMl8yKHZvaWQpOw0KIyA0NDggInVu
aWNvZGUvdWNvbC5oIg0KZXh0ZXJuICJDIiBjb25zdCBVQ2hhcioNCnVjb2xfZ2V0UnVsZXNfMl8y
KCBjb25zdCBVQ29sbGF0b3IgKmNvbGwsDQogICAgICAgIGludDMyX3QgKmxlbmd0aCk7DQojIDQ2
NCAidW5pY29kZS91Y29sLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVjb2xfZ2V0U29ydEtleV8y
XzIoY29uc3QgVUNvbGxhdG9yICpjb2xsLA0KICAgICAgICBjb25zdCBVQ2hhciAqc291cmNlLA0K
ICAgICAgICBpbnQzMl90IHNvdXJjZUxlbmd0aCwNCiAgICAgICAgdWludDhfdCAqcmVzdWx0LA0K
ICAgICAgICBpbnQzMl90IHJlc3VsdExlbmd0aCk7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0g
ew0KDQogIFVDT0xfQk9VTkRfTE9XRVIgPSAwLA0KDQogIFVDT0xfQk9VTkRfVVBQRVIgPSAxLA0K
DQogIFVDT0xfQk9VTkRfVVBQRVJfTE9ORyA9IDIsDQogIFVDT0xfQk9VTkRfVkFMVUVfQ09VTlQN
Cn0gVUNvbEJvdW5kTW9kZTsNCiMgNTIzICJ1bmljb2RlL3Vjb2wuaCINCmV4dGVybiAiQyIgaW50
MzJfdA0KdWNvbF9nZXRCb3VuZF8yXzIoY29uc3QgdWludDhfdCAqc291cmNlLA0KICAgICAgICBp
bnQzMl90IHNvdXJjZUxlbmd0aCwNCiAgICAgICAgVUNvbEJvdW5kTW9kZSBib3VuZFR5cGUsDQog
ICAgICAgIHVpbnQzMl90IG5vT2ZMZXZlbHMsDQogICAgICAgIHVpbnQ4X3QgKnJlc3VsdCwNCiAg
ICAgICAgaW50MzJfdCByZXN1bHRMZW5ndGgsDQogICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgdm9pZA0KdWNvbF9nZXRWZXJzaW9uXzJfMihjb25z
dCBVQ29sbGF0b3IqIGNvbGwsIFVWZXJzaW9uSW5mbyBpbmZvKTsNCiMgNTYyICJ1bmljb2RlL3Vj
b2wuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdWNvbF9tZXJnZVNvcnRrZXlzXzJfMihjb25zdCB1
aW50OF90ICpzcmMxLCBpbnQzMl90IHNyYzFMZW5ndGgsDQogICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqc3JjMiwgaW50MzJfdCBzcmMyTGVuZ3RoLA0KICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5KTsNCiMgNTc4ICJ1bmljb2RlL3Vj
b2wuaCINCmV4dGVybiAiQyIgdm9pZA0KdWNvbF9zZXRBdHRyaWJ1dGVfMl8yKFVDb2xsYXRvciAq
Y29sbCwgVUNvbEF0dHJpYnV0ZSBhdHRyLCBVQ29sQXR0cmlidXRlVmFsdWUgdmFsdWUsIFVFcnJv
ckNvZGUgKnN0YXR1cyk7DQojIDU5MiAidW5pY29kZS91Y29sLmgiDQpleHRlcm4gIkMiIFVDb2xB
dHRyaWJ1dGVWYWx1ZQ0KdWNvbF9nZXRBdHRyaWJ1dGVfMl8yKGNvbnN0IFVDb2xsYXRvciAqY29s
bCwgVUNvbEF0dHJpYnV0ZSBhdHRyLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KIyA2MTQgInVuaWNv
ZGUvdWNvbC5oIg0KZXh0ZXJuICJDIiB1aW50MzJfdA0KdWNvbF9zZXRWYXJpYWJsZVRvcF8yXzIo
VUNvbGxhdG9yICpjb2xsLA0KICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqdmFyVG9w
LCBpbnQzMl90IGxlbiwNCiAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsN
CiMgNjMwICJ1bmljb2RlL3Vjb2wuaCINCmV4dGVybiAiQyIgdWludDMyX3QgdWNvbF9nZXRWYXJp
YWJsZVRvcF8yXzIoY29uc3QgVUNvbGxhdG9yICpjb2xsLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0K
IyA2NDMgInVuaWNvZGUvdWNvbC5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1Y29sX3Jlc3RvcmVWYXJp
YWJsZVRvcF8yXzIoVUNvbGxhdG9yICpjb2xsLCBjb25zdCB1aW50MzJfdCB2YXJUb3AsIFVFcnJv
ckNvZGUgKnN0YXR1cyk7DQojIDY2OCAidW5pY29kZS91Y29sLmgiDQpleHRlcm4gIkMiIFVDb2xs
YXRvcioNCnVjb2xfc2FmZUNsb25lXzJfMihjb25zdCBVQ29sbGF0b3IgKmNvbGwsDQogICAgICAg
ICAgICAgICB2b2lkICpzdGFja0J1ZmZlciwNCiAgICAgICAgICAgICAgIGludDMyX3QgKnBCdWZm
ZXJTaXplLA0KICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsNCiMgNjg4ICJ1bmlj
b2RlL3Vjb2wuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdWNvbF9nZXRSdWxlc0V4XzJfMihjb25z
dCBVQ29sbGF0b3IgKmNvbGwsIFVDb2xSdWxlT3B0aW9uIGRlbHRhLCBVQ2hhciAqYnVmZmVyLCBp
bnQzMl90IGJ1ZmZlckxlbik7DQoNCg0KDQoNCg0KDQojIDEgInVuaWNvZGUvdWNvbGVpdHIuaCIg
MQ0KIyAyNSAidW5pY29kZS91Y29sZWl0ci5oIg0KIyAxICJ1bmljb2RlL3Vjb2wuaCIgMQ0KIyAy
NiAidW5pY29kZS91Y29sZWl0ci5oIiAyDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgVUNvbGxh
dGlvbkVsZW1lbnRzIFVDb2xsYXRpb25FbGVtZW50czsNCiMgMTA0ICJ1bmljb2RlL3Vjb2xlaXRy
LmgiDQpleHRlcm4gIkMiIFVDb2xsYXRpb25FbGVtZW50cyoNCnVjb2xfb3BlbkVsZW1lbnRzXzJf
Mihjb25zdCBVQ29sbGF0b3IgKmNvbGwsDQogICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAq
dGV4dCwNCiAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgdGV4dExlbmd0aCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7DQojIDExNyAidW5pY29kZS91
Y29sZWl0ci5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1Y29sX2tleUhhc2hDb2RlXzJfMihjb25z
dCB1aW50OF90KiBrZXksIGludDMyX3QgbGVuZ3RoKTsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiB2b2lkDQp1Y29sX2Nsb3NlRWxlbWVudHNfMl8yKFVDb2xsYXRpb25FbGVtZW50cyAqZWxlbXMp
Ow0KIyAxMzggInVuaWNvZGUvdWNvbGVpdHIuaCINCmV4dGVybiAiQyIgdm9pZA0KdWNvbF9yZXNl
dF8yXzIoVUNvbGxhdGlvbkVsZW1lbnRzICplbGVtcyk7DQojIDE1MCAidW5pY29kZS91Y29sZWl0
ci5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1Y29sX25leHRfMl8yKFVDb2xsYXRpb25FbGVtZW50
cyAqZWxlbXMsIFVFcnJvckNvZGUgKnN0YXR1cyk7DQojIDE2OSAidW5pY29kZS91Y29sZWl0ci5o
Ig0KZXh0ZXJuICJDIiBpbnQzMl90DQp1Y29sX3ByZXZpb3VzXzJfMihVQ29sbGF0aW9uRWxlbWVu
dHMgKmVsZW1zLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KIyAxODMgInVuaWNvZGUvdWNvbGVpdHIu
aCINCmV4dGVybiAiQyIgaW50MzJfdA0KdWNvbF9nZXRNYXhFeHBhbnNpb25fMl8yKGNvbnN0IFVD
b2xsYXRpb25FbGVtZW50cyAqZWxlbXMsIGludDMyX3Qgb3JkZXIpOw0KIyAxOTggInVuaWNvZGUv
dWNvbGVpdHIuaCINCmV4dGVybiAiQyIgdm9pZA0KdWNvbF9zZXRUZXh0XzJfMiggVUNvbGxhdGlv
bkVsZW1lbnRzICplbGVtcywNCiAgICAgICAgICAgICBjb25zdCBVQ2hhciAqdGV4dCwNCiAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IHRleHRMZW5ndGgsDQogICAgICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSAqc3RhdHVzKTsNCiMgMjEzICJ1bmljb2RlL3Vjb2xlaXRyLmgiDQpleHRlcm4gIkMi
IGludDMyX3QNCnVjb2xfZ2V0T2Zmc2V0XzJfMihjb25zdCBVQ29sbGF0aW9uRWxlbWVudHMgKmVs
ZW1zKTsNCiMgMjI4ICJ1bmljb2RlL3Vjb2xlaXRyLmgiDQpleHRlcm4gIkMiIHZvaWQNCnVjb2xf
c2V0T2Zmc2V0XzJfMihVQ29sbGF0aW9uRWxlbWVudHMgKmVsZW1zLA0KICAgICAgICAgICAgICAg
aW50MzJfdCBvZmZzZXQsDQogICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOw0KIyA2
OTcgInVuaWNvZGUvdWNvbC5oIiAyDQojIDcxOSAidW5pY29kZS91Y29sLmgiDQpleHRlcm4gIkMi
IFVDb2xsYXRvciAqDQp1Y29sX29wZW5WZXJzaW9uXzJfMihjb25zdCBjaGFyICpsb2MsDQogICAg
ICAgICAgICAgICAgIFVWZXJzaW9uSW5mbyB2ZXJzaW9uLA0KICAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlICpzdGF0dXMpOw0KIyA3MzIgInVuaWNvZGUvdWNvbC5oIg0KZXh0ZXJuICJDIiBVTm9y
bWFsaXphdGlvbk1vZGUNCnVjb2xfZ2V0Tm9ybWFsaXphdGlvbl8yXzIoY29uc3QgVUNvbGxhdG9y
KiBjb2xsKTsNCiMgNzQ1ICJ1bmljb2RlL3Vjb2wuaCINCmV4dGVybiAiQyIgdm9pZA0KdWNvbF9z
ZXROb3JtYWxpemF0aW9uXzJfMiggVUNvbGxhdG9yICpjb2xsLA0KICAgICAgICAgICAgVU5vcm1h
bGl6YXRpb25Nb2RlIG1vZGUpOw0KIyA3NjMgInVuaWNvZGUvdWNvbC5oIg0KZXh0ZXJuICJDIiBj
b25zdCBjaGFyICoNCnVjb2xfZ2V0TG9jYWxlXzJfMihjb25zdCBVQ29sbGF0b3IgKmNvbGwsIFVM
b2NEYXRhTG9jYWxlVHlwZSB0eXBlLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KIyAzMCAidWNvbF9p
bXAuaCIgMg0KDQoNCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvdXJlcy5oIiAxDQojIDEyNSAiLi4v
Y29tbW9uL3VuaWNvZGUvdXJlcy5oIg0Kc3RydWN0IFVSZXNvdXJjZUJ1bmRsZTsNCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgVVJlc291cmNlQnVuZGxlIFVSZXNvdXJjZUJ1bmRsZTsNCg0KDQoNCg0K
DQp0eXBlZGVmIGVudW0gew0KICAgIFJFU19OT05FPS0xLA0KICAgIFJFU19TVFJJTkc9MCwNCiAg
ICBSRVNfQklOQVJZPTEsDQogICAgUkVTX1RBQkxFPTIsDQoNCg0KDQogICAgUkVTX0FMSUFTPTMs
DQoNCiAgICBSRVNfSU5UPTcsDQogICAgUkVTX0FSUkFZPTgsDQoNCiAgICBSRVNfSU5UX1ZFQ1RP
Uj0xNCwNCiAgICBSRVNfUkVTRVJWRUQ9MTUNCn0gVVJlc1R5cGU7DQojIDE4MyAiLi4vY29tbW9u
L3VuaWNvZGUvdXJlcy5oIg0KZXh0ZXJuICJDIiBVUmVzb3VyY2VCdW5kbGUqDQp1cmVzX29wZW5f
Ml8yKGNvbnN0IGNoYXIqIHBhdGgsDQogICAgICAgICAgY29uc3QgY2hhciogbG9jYWxlLA0KICAg
ICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7DQojIDIwNSAiLi4vY29tbW9uL3VuaWNvZGUvdXJl
cy5oIg0KZXh0ZXJuICJDIiBVUmVzb3VyY2VCdW5kbGUqDQp1cmVzX29wZW5EaXJlY3RfMl8yKGNv
bnN0IGNoYXIqIHBhdGgsDQogICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYWxlLA0KICAg
ICAgICAgICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7DQojIDIyOSAiLi4vY29tbW9uL3VuaWNv
ZGUvdXJlcy5oIg0KZXh0ZXJuICJDIiBVUmVzb3VyY2VCdW5kbGUqDQp1cmVzX29wZW5XXzJfMihj
b25zdCB3Y2hhcl90KiBwYXRoLA0KICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhbGUsDQogICAg
ICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7DQojIDI0OCAiLi4vY29tbW9uL3VuaWNvZGUvdXJl
cy5oIg0KZXh0ZXJuICJDIiBVUmVzb3VyY2VCdW5kbGUqDQp1cmVzX29wZW5VXzJfMihjb25zdCBV
Q2hhciogcGF0aCwNCiAgICAgICAgICAgY29uc3QgY2hhciogbG9jYWxlLA0KICAgICAgICAgICBV
RXJyb3JDb2RlKiBzdGF0dXMpOw0KIyAyNjkgIi4uL2NvbW1vbi91bmljb2RlL3VyZXMuaCINCmV4
dGVybiAiQyIgaW50MzJfdA0KdXJlc19jb3VudEFycmF5SXRlbXNfMl8yKGNvbnN0IFVSZXNvdXJj
ZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsDQogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiByZXNvdXJjZUtleSwNCiAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVycik7DQoj
IDI4MSAiLi4vY29tbW9uL3VuaWNvZGUvdXJlcy5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1cmVzX2Ns
b3NlXzJfMihVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlKTsNCiMgMjk0ICIuLi9jb21t
b24vdW5pY29kZS91cmVzLmgiDQpleHRlcm4gIkMiIGNvbnN0IGNoYXIqDQp1cmVzX2dldFZlcnNp
b25OdW1iZXJfMl8yKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUpOw0KIyAz
MDYgIi4uL2NvbW1vbi91bmljb2RlL3VyZXMuaCINCmV4dGVybiAiQyIgdm9pZA0KdXJlc19nZXRW
ZXJzaW9uXzJfMihjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc0IsDQogICAgICAgICAgICAgICAg
VVZlcnNpb25JbmZvIHZlcnNpb25JbmZvKTsNCiMgMzIxICIuLi9jb21tb24vdW5pY29kZS91cmVz
LmgiDQpleHRlcm4gIkMiIGNvbnN0IGNoYXIqDQp1cmVzX2dldExvY2FsZV8yXzIoY29uc3QgVVJl
c291cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwNCiAgICAgICAgICAgICAgIFVFcnJvckNvZGUq
IHN0YXR1cyk7DQojIDMzOCAiLi4vY29tbW9uL3VuaWNvZGUvdXJlcy5oIg0KZXh0ZXJuICJDIiB2
b2lkDQp1cmVzX29wZW5GaWxsSW5fMl8yKFVSZXNvdXJjZUJ1bmRsZSAqciwNCiAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBwYXRoLA0KICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2Fs
ZUlELA0KICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7DQojIDM2MSAiLi4vY29t
bW9uL3VuaWNvZGUvdXJlcy5oIg0KZXh0ZXJuICJDIiBjb25zdCBVQ2hhcioNCnVyZXNfZ2V0U3Ry
aW5nXzJfMihjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLA0KICAgICAgICAg
ICAgICAgaW50MzJfdCogbGVuLA0KICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsN
CiMgMzgzICIuLi9jb21tb24vdW5pY29kZS91cmVzLmgiDQpleHRlcm4gIkMiIGNvbnN0IHVpbnQ4
X3QqDQp1cmVzX2dldEJpbmFyeV8yXzIoY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1
bmRsZSwNCiAgICAgICAgICAgICAgIGludDMyX3QqIGxlbiwNCiAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUqIHN0YXR1cyk7DQojIDQwNSAiLi4vY29tbW9uL3VuaWNvZGUvdXJlcy5oIg0KZXh0ZXJu
ICJDIiBjb25zdCBpbnQzMl90Kg0KdXJlc19nZXRJbnRWZWN0b3JfMl8yKGNvbnN0IFVSZXNvdXJj
ZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsDQogICAgICAgICAgICAgICAgICBpbnQzMl90KiBsZW4s
DQogICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOw0KIyA0MjYgIi4uL2NvbW1v
bi91bmljb2RlL3VyZXMuaCINCmV4dGVybiAiQyIgdWludDMyX3QNCnVyZXNfZ2V0VUludF8yXzIo
Y29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwNCiAgICAgICAgICAgICBVRXJy
b3JDb2RlICpzdGF0dXMpOw0KIyA0NDYgIi4uL2NvbW1vbi91bmljb2RlL3VyZXMuaCINCmV4dGVy
biAiQyIgaW50MzJfdA0KdXJlc19nZXRJbnRfMl8yKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVz
b3VyY2VCdW5kbGUsDQogICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOw0KIyA0NjEgIi4u
L2NvbW1vbi91bmljb2RlL3VyZXMuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdXJlc19nZXRTaXpl
XzJfMihVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxlKTsNCiMgNDcyICIuLi9jb21tb24v
dW5pY29kZS91cmVzLmgiDQpleHRlcm4gIkMiIFVSZXNUeXBlDQp1cmVzX2dldFR5cGVfMl8yKFVS
ZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUpOw0KIyA0ODMgIi4uL2NvbW1vbi91bmljb2Rl
L3VyZXMuaCINCmV4dGVybiAiQyIgY29uc3QgY2hhciAqDQp1cmVzX2dldEtleV8yXzIoVVJlc291
cmNlQnVuZGxlICpyZXNCKTsNCiMgNDk2ICIuLi9jb21tb24vdW5pY29kZS91cmVzLmgiDQpleHRl
cm4gIkMiIHZvaWQNCnVyZXNfcmVzZXRJdGVyYXRvcl8yXzIoVVJlc291cmNlQnVuZGxlICpyZXNv
dXJjZUJ1bmRsZSk7DQojIDUwNiAiLi4vY29tbW9uL3VuaWNvZGUvdXJlcy5oIg0KZXh0ZXJuICJD
IiBVQm9vbA0KdXJlc19oYXNOZXh0XzJfMihVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxl
KTsNCiMgNTIxICIuLi9jb21tb24vdW5pY29kZS91cmVzLmgiDQpleHRlcm4gIkMiIFVSZXNvdXJj
ZUJ1bmRsZSoNCnVyZXNfZ2V0TmV4dFJlc291cmNlXzJfMihVUmVzb3VyY2VCdW5kbGUgKnJlc291
cmNlQnVuZGxlLA0KICAgICAgICAgICAgICAgICAgICAgVVJlc291cmNlQnVuZGxlICpmaWxsSW4s
DQogICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOw0KIyA1MzggIi4uL2Nv
bW1vbi91bmljb2RlL3VyZXMuaCINCmV4dGVybiAiQyIgY29uc3QgVUNoYXIqDQp1cmVzX2dldE5l
eHRTdHJpbmdfMl8yKFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUsDQogICAgICAgICAg
ICAgICAgICAgaW50MzJfdCogbGVuLA0KICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiog
a2V5LA0KICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7DQojIDU1NiAiLi4v
Y29tbW9uL3VuaWNvZGUvdXJlcy5oIg0KZXh0ZXJuICJDIiBVUmVzb3VyY2VCdW5kbGUqDQp1cmVz
X2dldEJ5SW5kZXhfMl8yKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUsDQog
ICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleFIsDQogICAgICAgICAgICAgICAgVVJlc291cmNl
QnVuZGxlICpmaWxsSW4sDQogICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsNCiMg
NTczICIuLi9jb21tb24vdW5pY29kZS91cmVzLmgiDQpleHRlcm4gIkMiIGNvbnN0IFVDaGFyKg0K
dXJlc19nZXRTdHJpbmdCeUluZGV4XzJfMihjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc0IsDQog
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleFMsDQogICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCogbGVuLA0KICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1
cyk7DQojIDU5MSAiLi4vY29tbW9uL3VuaWNvZGUvdXJlcy5oIg0KZXh0ZXJuICJDIiBVUmVzb3Vy
Y2VCdW5kbGUqDQp1cmVzX2dldEJ5S2V5XzJfMihjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc291
cmNlQnVuZGxlLA0KICAgICAgICAgICAgICBjb25zdCBjaGFyKiBrZXksDQogICAgICAgICAgICAg
IFVSZXNvdXJjZUJ1bmRsZSAqZmlsbEluLA0KICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0
dXMpOw0KIyA2MDkgIi4uL2NvbW1vbi91bmljb2RlL3VyZXMuaCINCmV4dGVybiAiQyIgY29uc3Qg
VUNoYXIqDQp1cmVzX2dldFN0cmluZ0J5S2V5XzJfMihjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJl
c0IsDQogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGtleSwNCiAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCogbGVuLA0KICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0
dXMpOw0KDQoNCg0KDQpuYW1lc3BhY2UgaWN1XzJfMiB7DQojIDYzMCAiLi4vY29tbW9uL3VuaWNv
ZGUvdXJlcy5oIg0KaW5saW5lIFVuaWNvZGVTdHJpbmcNCnVyZXNfZ2V0VW5pY29kZVN0cmluZyhj
b25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc0IsDQogICAgICAgICAgICAgICAgICAgICAgVUVycm9y
Q29kZSogc3RhdHVzKQ0Kew0KICAgIGludDMyX3QgbGVuID0gMDsNCiAgICBjb25zdCBVQ2hhciAq
ciA9IHVyZXNfZ2V0U3RyaW5nXzJfMihyZXNCLCAmbGVuLCBzdGF0dXMpOw0KICAgIHJldHVybiBV
bmljb2RlU3RyaW5nKDEsIHIsIGxlbik7DQp9DQojIDY0OSAiLi4vY29tbW9uL3VuaWNvZGUvdXJl
cy5oIg0KaW5saW5lIFVuaWNvZGVTdHJpbmcNCnVyZXNfZ2V0TmV4dFVuaWNvZGVTdHJpbmcoVVJl
c291cmNlQnVuZGxlICpyZXNCLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICoqIGtleSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKQ0K
ew0KICAgIGludDMyX3QgbGVuID0gMDsNCiAgICBjb25zdCBVQ2hhciogciA9IHVyZXNfZ2V0TmV4
dFN0cmluZ18yXzIocmVzQiwgJmxlbiwga2V5LCBzdGF0dXMpOw0KICAgIHJldHVybiBVbmljb2Rl
U3RyaW5nKDEsIHIsIGxlbik7DQp9DQojIDY2OCAiLi4vY29tbW9uL3VuaWNvZGUvdXJlcy5oIg0K
aW5saW5lIFVuaWNvZGVTdHJpbmcNCnVyZXNfZ2V0VW5pY29kZVN0cmluZ0J5SW5kZXgoY29uc3Qg
VVJlc291cmNlQnVuZGxlICpyZXNCLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IGluZGV4UywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3Rh
dHVzKQ0Kew0KICAgIGludDMyX3QgbGVuID0gMDsNCiAgICBjb25zdCBVQ2hhciogciA9IHVyZXNf
Z2V0U3RyaW5nQnlJbmRleF8yXzIocmVzQiwgaW5kZXhTLCAmbGVuLCBzdGF0dXMpOw0KICAgIHJl
dHVybiBVbmljb2RlU3RyaW5nKDEsIHIsIGxlbik7DQp9DQojIDY4OCAiLi4vY29tbW9uL3VuaWNv
ZGUvdXJlcy5oIg0KaW5saW5lIFVuaWNvZGVTdHJpbmcNCnVyZXNfZ2V0VW5pY29kZVN0cmluZ0J5
S2V5KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzQiwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGtleSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNv
ZGUqIHN0YXR1cykNCnsNCiAgICBpbnQzMl90IGxlbiA9IDA7DQogICAgY29uc3QgVUNoYXIqIHIg
PSB1cmVzX2dldFN0cmluZ0J5S2V5XzJfMihyZXNCLCBrZXksICZsZW4sIHN0YXR1cyk7DQogICAg
cmV0dXJuIFVuaWNvZGVTdHJpbmcoMSwgciwgbGVuKTsNCn0NCg0KfQ0KIyAzMyAidWNvbF9pbXAu
aCIgMg0KIyAxICIuLi9jb21tb24vdW5pY29kZS91ZGF0YS5oIiAxDQojIDIyICIuLi9jb21tb24v
dW5pY29kZS91ZGF0YS5oIg0KZXh0ZXJuICJDIiB7DQojIDU4ICIuLi9jb21tb24vdW5pY29kZS91
ZGF0YS5oIg0KdHlwZWRlZiBzdHJ1Y3Qgew0KDQogICAgdWludDE2X3Qgc2l6ZTsNCg0KDQogICAg
dWludDE2X3QgcmVzZXJ2ZWRXb3JkOw0KDQoNCg0KICAgIHVpbnQ4X3QgaXNCaWdFbmRpYW47DQoN
Cg0KICAgIHVpbnQ4X3QgY2hhcnNldEZhbWlseTsNCg0KDQogICAgdWludDhfdCBzaXplb2ZVQ2hh
cjsNCg0KDQogICAgdWludDhfdCByZXNlcnZlZEJ5dGU7DQoNCg0KICAgIHVpbnQ4X3QgZGF0YUZv
cm1hdFs0XTsNCg0KDQogICAgdWludDhfdCBmb3JtYXRWZXJzaW9uWzRdOw0KICAgIHVpbnQ4X3Qg
ZGF0YVZlcnNpb25bNF07DQp9IFVEYXRhSW5mbzsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgVURhdGFNZW1vcnkgVURhdGFNZW1vcnk7DQojIDEwNyAiLi4vY29tbW9uL3VuaWNvZGUvdWRh
dGEuaCINCnR5cGVkZWYgVUJvb2wNClVEYXRhTWVtb3J5SXNBY2NlcHRhYmxlKHZvaWQgKmNvbnRl
eHQsDQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFy
ICpuYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVURhdGFJbmZvICpwSW5mbyk7
DQojIDEzMiAiLi4vY29tbW9uL3VuaWNvZGUvdWRhdGEuaCINCmV4dGVybiAiQyIgVURhdGFNZW1v
cnkgKg0KdWRhdGFfb3Blbl8yXzIoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqdHlwZSwg
Y29uc3QgY2hhciAqbmFtZSwNCiAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQoj
IDE5NCAiLi4vY29tbW9uL3VuaWNvZGUvdWRhdGEuaCINCmV4dGVybiAiQyIgVURhdGFNZW1vcnkg
Kg0KdWRhdGFfb3BlbkNob2ljZV8yXzIoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqdHlw
ZSwgY29uc3QgY2hhciAqbmFtZSwNCiAgICAgICAgICAgICAgICAgVURhdGFNZW1vcnlJc0FjY2Vw
dGFibGUgKmlzQWNjZXB0YWJsZSwgdm9pZCAqY29udGV4dCwNCiAgICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSAqcEVycm9yQ29kZSk7DQojIDIwNiAiLi4vY29tbW9uL3VuaWNvZGUvdWRhdGEuaCIN
CmV4dGVybiAiQyIgdm9pZA0KdWRhdGFfY2xvc2VfMl8yKFVEYXRhTWVtb3J5ICpwRGF0YSk7DQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3Qgdm9pZCAqDQp1ZGF0YV9nZXRNZW1vcnlfMl8y
KFVEYXRhTWVtb3J5ICpwRGF0YSk7DQojIDIzNiAiLi4vY29tbW9uL3VuaWNvZGUvdWRhdGEuaCIN
CmV4dGVybiAiQyIgdm9pZA0KdWRhdGFfZ2V0SW5mb18yXzIoVURhdGFNZW1vcnkgKnBEYXRhLCBV
RGF0YUluZm8gKnBJbmZvKTsNCiMgMjcxICIuLi9jb21tb24vdW5pY29kZS91ZGF0YS5oIg0KZXh0
ZXJuICJDIiB2b2lkDQp1ZGF0YV9zZXRDb21tb25EYXRhXzJfMihjb25zdCB2b2lkICpkYXRhLCBV
RXJyb3JDb2RlICplcnIpOw0KIyAyOTcgIi4uL2NvbW1vbi91bmljb2RlL3VkYXRhLmgiDQpleHRl
cm4gIkMiIHZvaWQNCnVkYXRhX3NldEFwcERhdGFfMl8yKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0
IHZvaWQgKmRhdGEsIFVFcnJvckNvZGUgKmVycik7DQoNCn0NCiMgMzQgInVjb2xfaW1wLmgiIDIN
Cg0KDQpzdGF0aWMgY29uc3QgVURhdGFJbmZvIHVjYURhdGFJbmZvPXsNCiAgICBzaXplb2YoVURh
dGFJbmZvKSwNCiAgICAwLA0KDQogICAgMCwNCiAgICAwLA0KICAgIHNpemVvZihVQ2hhciksDQog
ICAgMCwNCg0KICAgIHsweDU1LCAweDQzLCAweDZmLCAweDZjfSwNCg0KICAgIHsyLCAwLCAwLCAw
fSwNCiAgICB7MywgMCwgMCwgMH0NCn07DQoNCg0Kc3RhdGljIGNvbnN0IFVEYXRhSW5mbyBpbnZV
Y2FEYXRhSW5mbz17DQogICAgc2l6ZW9mKFVEYXRhSW5mbyksDQogICAgMCwNCg0KICAgIDAsDQog
ICAgMCwNCiAgICBzaXplb2YoVUNoYXIpLA0KICAgIDAsDQoNCiAgICB7MHg0OSwgMHg2RSwgMHg3
NiwgMHg0M30sDQoNCiAgICB7MiwgMCwgMCwgMH0sDQogICAgezMsIDAsIDAsIDB9DQp9Ow0KIyAx
MzEgInVjb2xfaW1wLmgiDQpzdHJ1Y3QgY29sbEl0ZXJhdGUgew0KICBVQ2hhciAqc3RyaW5nOw0K
DQoNCiAgVUNoYXIgKmVuZHA7DQogIFVDaGFyICpwb3M7DQoNCiAgdWludDMyX3QgKnRvUmV0dXJu
Ow0KICB1aW50MzJfdCAqQ0Vwb3M7DQogIFVDaGFyICp3cml0YWJsZUJ1ZmZlcjsNCiAgdWludDMy
X3Qgd3JpdGFibGVCdWZTaXplOw0KICBVQ2hhciAqZmNkUG9zaXRpb247DQogIGNvbnN0IFVDb2xs
YXRvciAqY29sbDsNCiAgdWludDhfdCBmbGFnczsNCiAgdWludDhfdCBvcmlnRmxhZ3M7DQogIHVp
bnQzMl90IENFc1s1MTJdOw0KICBVQ2hhciBzdGFja1dyaXRhYmxlQnVmZmVyWzI1Nl07DQp9Ow0K
DQoNCg0KDQoNCnN0cnVjdCBjb2xsSXRlcmF0ZVN0YXRlIHsNCiAgICBVQ2hhciAqcG9zOw0KICAg
IFVDaGFyICpmY2RQb3NpdGlvbjsNCiAgICBVQ2hhciAqYnVmZmVyYWRkcmVzczsNCiAgICB1aW50
MzJfdCBidWZmZXJzaXplOw0KICAgIHVpbnQ4X3QgZmxhZ3M7DQogICAgdWludDhfdCBvcmlnRmxh
Z3M7DQp9Ow0KDQpleHRlcm4gIkMiIHZvaWQNCnVwcnZfaW5pdF9jb2xsSXRlcmF0ZV8yXzIoY29u
c3QgVUNvbGxhdG9yICpjb2xsYXRvciwgY29uc3QgVUNoYXIgKnNvdXJjZVN0cmluZywgaW50MzJf
dCBzb3VyY2VMZW4sIGNvbGxJdGVyYXRlICpzKTsNCg0KDQpzdHJ1Y3QgVUNvbGxhdGlvbkVsZW1l
bnRzDQp7DQoNCg0KDQogICAgICAgIGNvbGxJdGVyYXRlIGl0ZXJhdG9yZGF0YV87DQoNCg0KDQog
ICAgICAgIFVCb29sIHJlc2V0XzsNCg0KDQoNCiAgICAgICAgVUJvb2wgaXNXcml0YWJsZTsNCn07
DQojIDI4NSAidWNvbF9pbXAuaCINCmV4dGVybiAiQyINCnVpbnQzMl90IHVjb2xfcHJ2X2dldFNw
ZWNpYWxDRV8yXzIoY29uc3QgVUNvbGxhdG9yICpjb2xsLCBVQ2hhciBjaCwgdWludDMyX3QgQ0Us
IGNvbGxJdGVyYXRlICpzb3VyY2UsIFVFcnJvckNvZGUgKnN0YXR1cyk7DQoNCmV4dGVybiAiQyIN
CnVpbnQzMl90IHVjb2xfcHJ2X2dldFNwZWNpYWxQcmV2Q0VfMl8yKGNvbnN0IFVDb2xsYXRvciAq
Y29sbCwgVUNoYXIgY2gsIHVpbnQzMl90IENFLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2xsSXRlcmF0ZSAqc291cmNlLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KZXh0ZXJuICJDIiB1aW50
MzJfdCB1Y29sX2dldE5leHRDRV8yXzIoY29uc3QgVUNvbGxhdG9yICpjb2xsLCBjb2xsSXRlcmF0
ZSAqY29sbGF0aW9uU291cmNlLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KZXh0ZXJuICJDIiB1aW50
MzJfdCB1Y29sX2dldFByZXZDRV8yXzIoY29uc3QgVUNvbGxhdG9yICpjb2xsLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsSXRlcmF0ZSAqY29sbGF0aW9uU291
cmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2Rl
ICpzdGF0dXMpOw0KDQpleHRlcm4gIkMiIGludDMyX3QNCnVjb2xfZ2V0U29ydEtleVdpdGhBbGxv
Y2F0aW9uXzJfMihjb25zdCBVQ29sbGF0b3IgKmNvbGwsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBVQ2hhciAqc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbmd0aCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKipwUmVzdWx0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQoNCg0Kdm9pZCAqdWNv
bF9nZXRBQnVmZmVyKGNvbnN0IFVDb2xsYXRvciAqY29sbCwgdWludDMyX3Qgc2l6ZSk7DQoNCg0K
ZXh0ZXJuICJDIg0KaW50MzJfdA0KdWNvbF9jYWxjU29ydEtleV8yXzIoY29uc3QgVUNvbGxhdG9y
ICpjb2xsLA0KICAgICAgICBjb25zdCBVQ2hhciAqc291cmNlLA0KICAgICAgICBpbnQzMl90IHNv
dXJjZUxlbmd0aCwNCiAgICAgICAgdWludDhfdCAqKnJlc3VsdCwNCiAgICAgICAgdWludDMyX3Qg
cmVzdWx0TGVuZ3RoLA0KICAgICAgICBVQm9vbCBhbGxvY2F0ZVByaW1hcnksDQogICAgICAgIFVF
cnJvckNvZGUgKnN0YXR1cyk7DQoNCmV4dGVybiAiQyINCmludDMyX3QNCnVjb2xfY2FsY1NvcnRL
ZXlTaW1wbGVUZXJ0aWFyeV8yXzIoY29uc3QgVUNvbGxhdG9yICpjb2xsLA0KICAgICAgICBjb25z
dCBVQ2hhciAqc291cmNlLA0KICAgICAgICBpbnQzMl90IHNvdXJjZUxlbmd0aCwNCiAgICAgICAg
dWludDhfdCAqKnJlc3VsdCwNCiAgICAgICAgdWludDMyX3QgcmVzdWx0TGVuZ3RoLA0KICAgICAg
ICBVQm9vbCBhbGxvY2F0ZVByaW1hcnksDQogICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7DQoN
CmV4dGVybiAiQyINCmludDMyX3QNCnVjb2xfZ2V0U29ydEtleVNpemVfMl8yKGNvbnN0IFVDb2xs
YXRvciAqY29sbCwgY29sbEl0ZXJhdGUgKnMsDQogICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
Y3VycmVudFNpemUsIFVDb2xBdHRyaWJ1dGVWYWx1ZSBzdHJlbmd0aCwNCiAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCBsZW4pOw0KIyAzNDAgInVjb2xfaW1wLmgiDQpleHRlcm4gIkMiIHVpbnQ4
X3QqDQp1Y29sX2Nsb25lUnVsZURhdGFfMl8yKGNvbnN0IFVDb2xsYXRvciAqY29sbCwgaW50MzJf
dCAqbGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KIyA0MTMgInVjb2xfaW1wLmgiDQplbnVt
IHsNCiAgICBVQ09MX0JZVEVfWkVSTyA9IDB4MDAsDQogICAgVUNPTF9CWVRFX0xFVkVMX1NFUEFS
QVRPUiA9IDB4MDEsDQogICAgVUNPTF9CWVRFX1NPUlRLRVlfR0xVRSA9IDB4MDIsDQogICAgVUNP
TF9CWVRFX1NISUZUX1BSRUZJWCA9IDB4MDMsDQogICAgVUNPTF9CWVRFX1VOU0hJRlRFRF9NSU4g
PSBVQ09MX0JZVEVfU0hJRlRfUFJFRklYLA0KICAgIFVDT0xfQllURV9GSVJTVF9UQUlMT1JFRCA9
IDB4MDQsDQogICAgVUNPTF9CWVRFX0NPTU1PTiA9IDB4MDUsDQogICAgVUNPTF9CWVRFX0ZJUlNU
X1VDQSA9IFVDT0xfQllURV9DT01NT04sDQogICAgVUNPTF9CWVRFX0xBU1RfTEFUSU5fUFJJTUFS
WSA9IDB4NEMsDQogICAgVUNPTF9CWVRFX0ZJUlNUX05PTl9MQVRJTl9QUklNQVJZID0gMHg0RCwN
CiAgICBVQ09MX0JZVEVfVU5TSElGVEVEX01BWCA9IDB4RkYNCn07DQojIDQ5OCAidWNvbF9pbXAu
aCINCnR5cGVkZWYgZW51bSB7DQogICAgTk9UX0ZPVU5EX1RBRyA9IDAsDQogICAgRVhQQU5TSU9O
X1RBRyA9IDEsDQogICAgQ09OVFJBQ1RJT05fVEFHID0gMiwNCiAgICBUSEFJX1RBRyA9IDMsDQog
ICAgQ0hBUlNFVF9UQUcgPSA0LA0KICAgIFNVUlJPR0FURV9UQUcgPSA1LA0KICAgIEhBTkdVTF9T
WUxMQUJMRV9UQUcgPSA2LA0KICAgIExFQURfU1VSUk9HQVRFX1RBRyA9IDcsDQogICAgVFJBSUxf
U1VSUk9HQVRFX1RBRyA9IDgsDQogICAgQ0pLX0lNUExJQ0lUX1RBRyA9IDksDQogICAgSU1QTElD
SVRfVEFHID0gMTAsDQogICAgU1BFQ19QUk9DX1RBRyA9IDExLA0KDQogICAgTE9OR19QUklNQVJZ
X1RBRyA9IDEyLA0KDQoNCiAgICBDRV9UQUdTX0NPVU5UDQp9IFVDb2xDRVRhZ3M7DQojIDUyNSAi
dWNvbF9pbXAuaCINCnR5cGVkZWYgc3RydWN0IHsNCiAgICAgIHVpbnQzMl90IHZhcmlhYmxlVG9w
VmFsdWU7DQogICAgICBVQ29sQXR0cmlidXRlVmFsdWUgZnJlbmNoQ29sbGF0aW9uOw0KICAgICAg
VUNvbEF0dHJpYnV0ZVZhbHVlIGFsdGVybmF0ZUhhbmRsaW5nOw0KICAgICAgVUNvbEF0dHJpYnV0
ZVZhbHVlIGNhc2VGaXJzdDsNCiAgICAgIFVDb2xBdHRyaWJ1dGVWYWx1ZSBjYXNlTGV2ZWw7DQog
ICAgICBVQ29sQXR0cmlidXRlVmFsdWUgbm9ybWFsaXphdGlvbk1vZGU7DQogICAgICBVQ29sQXR0
cmlidXRlVmFsdWUgc3RyZW5ndGg7DQogICAgICBVQ29sQXR0cmlidXRlVmFsdWUgaGlyYWdhbmFR
Ow0KfSBVQ29sT3B0aW9uU2V0Ow0KDQp0eXBlZGVmIHN0cnVjdCB7DQogIHVpbnQzMl90IFVDQV9G
SVJTVF9URVJUSUFSWV9JR05PUkFCTEVbMl07DQogIHVpbnQzMl90IFVDQV9MQVNUX1RFUlRJQVJZ
X0lHTk9SQUJMRVsyXTsNCiAgdWludDMyX3QgVUNBX0ZJUlNUX1BSSU1BUllfSUdOT1JBQkxFWzJd
Ow0KICB1aW50MzJfdCBVQ0FfRklSU1RfU0VDT05EQVJZX0lHTk9SQUJMRVsyXTsNCiAgdWludDMy
X3QgVUNBX0xBU1RfU0VDT05EQVJZX0lHTk9SQUJMRVsyXTsNCiAgdWludDMyX3QgVUNBX0xBU1Rf
UFJJTUFSWV9JR05PUkFCTEVbMl07DQogIHVpbnQzMl90IFVDQV9GSVJTVF9WQVJJQUJMRVsyXTsN
CiAgdWludDMyX3QgVUNBX0xBU1RfVkFSSUFCTEVbMl07DQogIHVpbnQzMl90IFVDQV9GSVJTVF9O
T05fVkFSSUFCTEVbMl07DQogIHVpbnQzMl90IFVDQV9MQVNUX05PTl9WQVJJQUJMRVsyXTsNCiAg
dWludDMyX3QgVUNBX1JFU0VUX1RPUF9WQUxVRVsyXTsNCiAgdWludDMyX3QgVUNBX0ZJUlNUX0lN
UExJQ0lUWzJdOw0KICB1aW50MzJfdCBVQ0FfTEFTVF9JTVBMSUNJVFsyXTsNCiAgdWludDMyX3Qg
VUNBX0ZJUlNUX1RSQUlMSU5HWzJdOw0KICB1aW50MzJfdCBVQ0FfTEFTVF9UUkFJTElOR1syXTsN
CiMgNTY1ICJ1Y29sX2ltcC5oIg0KICB1aW50MzJfdCBVQ0FfUFJJTUFSWV9UT1BfTUlOOw0KICB1
aW50MzJfdCBVQ0FfUFJJTUFSWV9JTVBMSUNJVF9NSU47DQogIHVpbnQzMl90IFVDQV9QUklNQVJZ
X0lNUExJQ0lUX01BWDsNCiAgdWludDMyX3QgVUNBX1BSSU1BUllfVFJBSUxJTkdfTUlOOw0KICB1
aW50MzJfdCBVQ0FfUFJJTUFSWV9UUkFJTElOR19NQVg7DQogIHVpbnQzMl90IFVDQV9QUklNQVJZ
X1NQRUNJQUxfTUlOOw0KICB1aW50MzJfdCBVQ0FfUFJJTUFSWV9TUEVDSUFMX01BWDsNCn0gVUNB
Q29uc3RhbnRzOw0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgICBpbnQzMl90IHNpemU7DQoNCg0K
ICAgICAgdWludDMyX3Qgb3B0aW9uczsNCiAgICAgIHVpbnQzMl90IFVDQUNvbnN0czsNCiAgICAg
IHVpbnQzMl90IGNvbnRyYWN0aW9uVUNBQ29tYm9zOw0KICAgICAgdWludDMyX3QgdW51c2VkUmVz
ZXJ2ZWQxOw0KICAgICAgdWludDMyX3QgbWFwcGluZ1Bvc2l0aW9uOw0KICAgICAgdWludDMyX3Qg
ZXhwYW5zaW9uOw0KICAgICAgdWludDMyX3QgY29udHJhY3Rpb25JbmRleDsNCiAgICAgIHVpbnQz
Ml90IGNvbnRyYWN0aW9uQ0VzOw0KICAgICAgdWludDMyX3QgY29udHJhY3Rpb25TaXplOw0KDQoN
CiAgICAgIHVpbnQzMl90IGVuZEV4cGFuc2lvbkNFOw0KDQogICAgICB1aW50MzJfdCBleHBhbnNp
b25DRVNpemU7DQoNCg0KDQogICAgICBpbnQzMl90IGVuZEV4cGFuc2lvbkNFQ291bnQ7DQogICAg
ICB1aW50MzJfdCB1bnNhZmVDUDsNCiAgICAgIHVpbnQzMl90IGNvbnRyRW5kQ1A7DQoNCg0KICAg
ICAgaW50MzJfdCBDRWNvdW50Ow0KICAgICAgVUJvb2wgamFtb1NwZWNpYWw7DQogICAgICB1aW50
OF90IHBhZGRpbmdbM107DQogICAgICBVVmVyc2lvbkluZm8gdmVyc2lvbjsNCiAgICAgIGNoYXIg
Y2hhcnNldE5hbWVbMzJdOw0KICAgICAgdWludDhfdCByZXNlcnZlZFs2NF07DQp9IFVDQVRhYmxl
SGVhZGVyOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB7DQoNCg0KICB1aW50OF90IHNp
emVMbzsNCiAgdWludDhfdCBzaXplSGk7DQoNCiAgdWludDhfdCBpc0JpZ0VuZGlhbjsNCg0KICB1
aW50OF90IGNoYXJzZXRGYW1pbHk7DQoNCiAgdWludDhfdCBpY3VWZXJzaW9uWzRdOw0KDQogIHVp
bnQ4X3QgdHlwZTsNCg0KICB1aW50OF90IHJlc2VydmVkWzddOw0KfSBVU3RhdGVTdHJ1Y3Q7DQoN
Cg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KDQogIHVpbnQ4X3Qgc2l6ZUxvOw0KICB1aW50OF90
IHNpemVIaTsNCg0KICB1aW50OF90IGNvbnRhaW5zVGFpbG9yaW5nOw0KDQogIHVpbnQ4X3QgY29u
dGFpbnNVQ0E7DQoNCiAgdWludDhfdCB2ZXJzaW9uSW5mb1s0XTsNCg0KDQogIHVpbnQ4X3QgY2hh
cnNldE5hbWVbMzJdOw0KDQogIHVpbnQ4X3QgbG9jYWxlWzMyXTsNCg0KDQoNCg0KICB1aW50MzJf
dCB2YXJpYWJsZVRvcFZhbHVlOw0KDQogIHVpbnQzMl90IGFsdGVybmF0ZUhhbmRsaW5nOw0KDQog
IHVpbnQzMl90IGZyZW5jaENvbGxhdGlvbjsNCg0KICB1aW50MzJfdCBjYXNlRmlyc3Q7DQoNCiAg
dWludDMyX3QgY2FzZUxldmVsOw0KDQogIHVpbnQzMl90IG5vcm1hbGl6YXRpb25Nb2RlOw0KDQog
IHVpbnQzMl90IHN0cmVuZ3RoOw0KDQogIHVpbnQ4X3QgcmVzZXJ2ZWRbMTJdOw0KfSBVQ29sU3Rh
dGVTdHJ1Y3Q7DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAg
dWludDMyX3QgYnl0ZVNpemU7DQogIHVpbnQzMl90IHRhYmxlU2l6ZTsNCiAgdWludDMyX3QgY29u
dHNTaXplOw0KICB1aW50MzJfdCB0YWJsZTsNCiAgdWludDMyX3QgY29udHM7DQp9IEludmVyc2VU
YWJsZUhlYWRlcjsNCg0KdHlwZWRlZiBpbnQzMl90DQpTb3J0S2V5R2VuZXJhdG9yKGNvbnN0IFVD
b2xsYXRvciAqY29sbCwNCiAgICAgICAgY29uc3QgVUNoYXIgKnNvdXJjZSwNCiAgICAgICAgaW50
MzJfdCBzb3VyY2VMZW5ndGgsDQogICAgICAgIHVpbnQ4X3QgKipyZXN1bHQsDQogICAgICAgIHVp
bnQzMl90IHJlc3VsdExlbmd0aCwNCiAgICAgICAgVUJvb2wgYWxsb2NhdGVQcmltYXJ5LA0KICAg
ICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOw0KDQpzdHJ1Y3QgVUNvbGxhdG9yIHsNCiAgICBVQ29s
T3B0aW9uU2V0ICpvcHRpb25zOw0KICAgIFNvcnRLZXlHZW5lcmF0b3IgKnNvcnRLZXlHZW47DQog
ICAgY2hhciogcmVxdWVzdGVkTG9jYWxlOw0KICAgIFVSZXNvdXJjZUJ1bmRsZSAqcmI7DQogICAg
VVJlc291cmNlQnVuZGxlICpiaW5hcnk7DQogICAgY29uc3QgVUNBVGFibGVIZWFkZXIgKmltYWdl
Ow0KDQogICAgVVRyaWUgKm1hcHBpbmc7DQogICAgY29uc3QgdWludDMyX3QgKmxhdGluT25lTWFw
cGluZzsNCiAgICBjb25zdCB1aW50MzJfdCAqZXhwYW5zaW9uOw0KICAgIGNvbnN0IFVDaGFyICpj
b250cmFjdGlvbkluZGV4Ow0KICAgIGNvbnN0IHVpbnQzMl90ICpjb250cmFjdGlvbkNFczsNCiAg
ICBjb25zdCB1aW50OF90ICpzY3JpcHRPcmRlcjsNCg0KICAgIGNvbnN0IHVpbnQzMl90ICplbmRF
eHBhbnNpb25DRTsNCg0KICAgIGNvbnN0IHVpbnQzMl90ICpsYXN0RW5kRXhwYW5zaW9uQ0U7DQog
ICAgY29uc3QgdWludDhfdCAqZXhwYW5zaW9uQ0VTaXplOw0KDQoNCg0KICAgIGNvbnN0IHVpbnQ4
X3QgKnVuc2FmZUNQOw0KICAgIGNvbnN0IHVpbnQ4X3QgKmNvbnRyRW5kQ1A7DQogICAgVUNoYXIg
bWluVW5zYWZlQ1A7DQogICAgVUNoYXIgbWluQ29udHJFbmRDUDsNCg0KICAgIGNvbnN0IFVDaGFy
ICpydWxlczsNCiAgICBpbnQzMl90IHJ1bGVzTGVuZ3RoOw0KDQogICAgVUVycm9yQ29kZSBlcnJv
ckNvZGU7DQoNCiAgICB1aW50MzJfdCB2YXJpYWJsZVRvcFZhbHVlOw0KICAgIFVDb2xBdHRyaWJ1
dGVWYWx1ZSBmcmVuY2hDb2xsYXRpb247DQogICAgVUNvbEF0dHJpYnV0ZVZhbHVlIGFsdGVybmF0
ZUhhbmRsaW5nOw0KICAgIFVDb2xBdHRyaWJ1dGVWYWx1ZSBjYXNlRmlyc3Q7DQogICAgVUNvbEF0
dHJpYnV0ZVZhbHVlIGNhc2VMZXZlbDsNCiAgICBVQ29sQXR0cmlidXRlVmFsdWUgbm9ybWFsaXph
dGlvbk1vZGU7DQogICAgVUNvbEF0dHJpYnV0ZVZhbHVlIHN0cmVuZ3RoOw0KICAgIFVDb2xBdHRy
aWJ1dGVWYWx1ZSBoaXJhZ2FuYVE7DQogICAgVUJvb2wgdmFyaWFibGVUb3BWYWx1ZWlzRGVmYXVs
dDsNCiAgICBVQm9vbCBmcmVuY2hDb2xsYXRpb25pc0RlZmF1bHQ7DQogICAgVUJvb2wgYWx0ZXJu
YXRlSGFuZGxpbmdpc0RlZmF1bHQ7DQogICAgVUJvb2wgY2FzZUZpcnN0aXNEZWZhdWx0Ow0KICAg
IFVCb29sIGNhc2VMZXZlbGlzRGVmYXVsdDsNCiAgICBVQm9vbCBub3JtYWxpemF0aW9uTW9kZWlz
RGVmYXVsdDsNCiAgICBVQm9vbCBzdHJlbmd0aGlzRGVmYXVsdDsNCiAgICBVQm9vbCBoaXJhZ2Fu
YVFpc0RlZmF1bHQ7DQogICAgVUJvb2wgaGFzUmVhbERhdGE7DQoNCg0KDQogICAgVUJvb2wgZnJl
ZU9uQ2xvc2U7DQogICAgVUJvb2wgZnJlZU9wdGlvbnNPbkNsb3NlOw0KICAgIFVCb29sIGZyZWVS
dWxlc09uQ2xvc2U7DQoNCiAgICBpbnQzMl90IHRlcnRpYXJ5QWRkaXRpb247DQogICAgdWludDhf
dCBjYXNlU3dpdGNoOw0KICAgIHVpbnQ4X3QgdGVydGlhcnlDb21tb247DQogICAgdWludDhfdCB0
ZXJ0aWFyeU1hc2s7DQogICAgdWludDhfdCB0ZXJ0aWFyeVRvcDsNCiAgICB1aW50OF90IHRlcnRp
YXJ5Qm90dG9tOw0KICAgIHVpbnQ4X3QgdGVydGlhcnlUb3BDb3VudDsNCiAgICB1aW50OF90IHRl
cnRpYXJ5Qm90dG9tQ291bnQ7DQoNCiAgICBVRGF0YUluZm8gZGF0YUluZm87DQoNCn07DQoNCn0N
Cg0KDQoNCmV4dGVybiAiQyINCnZvaWQgdWNvbF9pbml0VUNBXzJfMihVRXJyb3JDb2RlICpzdGF0
dXMpOw0KDQpleHRlcm4gIkMiDQpVQ29sbGF0b3IqIHVjb2xfaW5pdENvbGxhdG9yXzJfMihjb25z
dCBVQ0FUYWJsZUhlYWRlciAqaW1hZ2UsIFVDb2xsYXRvciAqZmlsbEluLCBVRXJyb3JDb2RlICpz
dGF0dXMpOw0KDQpleHRlcm4gIkMiDQp2b2lkIHVjb2xfc2V0T3B0aW9uc0Zyb21IZWFkZXJfMl8y
KFVDb2xsYXRvciogcmVzdWx0LCBVQ29sT3B0aW9uU2V0ICogb3B0cywgVUVycm9yQ29kZSAqc3Rh
dHVzKTsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyINCnZvaWQgdWNvbF91cGRhdGVJbnRlcm5hbFN0
YXRlXzJfMihVQ29sbGF0b3IgKmNvbGwpOw0KDQpleHRlcm4gIkMiIHVpbnQzMl90IHVjb2xfZ2V0
Rmlyc3RDRV8yXzIoY29uc3QgVUNvbGxhdG9yICpjb2xsLCBVQ2hhciB1LCBVRXJyb3JDb2RlICpz
dGF0dXMpOw0KZXh0ZXJuICJDIiBjaGFyKiB1Y29sX3NvcnRLZXlUb1N0cmluZ18yXzIoY29uc3Qg
VUNvbGxhdG9yICpjb2xsLCBjb25zdCB1aW50OF90ICpzb3J0a2V5LCBjaGFyICpidWZmZXIsIHVp
bnQzMl90ICpsZW4pOw0KZXh0ZXJuICJDIiBVQm9vbCB1Y29sX2lzVGFpbG9yZWRfMl8yKGNvbnN0
IFVDb2xsYXRvciAqY29sbCwgY29uc3QgVUNoYXIgdSwgVUVycm9yQ29kZSAqc3RhdHVzKTsNCg0K
ZXh0ZXJuICJDIiBjb25zdCBJbnZlcnNlVGFibGVIZWFkZXIqIHVjb2xfaW5pdEludmVyc2VVQ0Ff
Ml8yKFVFcnJvckNvZGUgKnN0YXR1cyk7DQpleHRlcm4gIkMiIGludDMyX3QgdWNvbF9pbnZfZ2V0
TmV4dENFXzJfMih1aW50MzJfdCBDRSwgdWludDMyX3QgY29udENFLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqbmV4dENFLCB1aW50MzJfdCAq
bmV4dENvbnRDRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3Qgc3RyZW5ndGgpOw0KZXh0ZXJuICJDIiBpbnQzMl90IHVjb2xfaW52X2dldFByZXZD
RV8yXzIodWludDMyX3QgQ0UsIHVpbnQzMl90IGNvbnRDRSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnByZXZDRSwgdWludDMyX3QgKnByZXZD
b250Q0UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHN0cmVuZ3RoKTsNCmV4dGVybiAiQyIgdm9pZA0KdXBydl91Y2FfaW5pdEltcGxpY2l0Q29u
c3RhbnRzXzJfMih1aW50MzJfdCBiYXNlQnl0ZSk7DQojIDgwNyAidWNvbF9pbXAuaCINCnN0YXRp
YyBpbmxpbmUgVUJvb2wgdWNvbF91bnNhZmVDUChVQ2hhciBjLCBjb25zdCBVQ29sbGF0b3IgKmNv
bGwpIHsNCiAgICBpbnQzMl90IGhhc2g7DQogICAgdWludDhfdCBodGJ5dGU7DQoNCiAgICBpZiAo
YyA8IGNvbGwtPm1pblVuc2FmZUNQKSB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAg
IGhhc2ggPSBjOw0KICAgIGlmIChoYXNoID49IDEwNTYqOCkgew0KICAgICAgaWYoKCgoYykmMHhm
ZmZmZmMwMCk9PTB4ZDgwMCkgfHwgKCgoYykmMHhmZmZmZmMwMCk9PTB4ZGMwMCkpIHsNCg0KDQog
ICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgfQ0KICAgICAgICBoYXNoID0gKGhhc2ggJiAw
eDFmZmYpICsgMjU2Ow0KICAgIH0NCiAgICBodGJ5dGUgPSBjb2xsLT51bnNhZmVDUFtoYXNoPj4z
XTsNCiAgICByZXR1cm4gKCgoaHRieXRlID4+IChoYXNoICYgNykpICYgMSkgPT0gMSk7DQp9DQoj
IDI5ICJ1Y29sX2NudC5oIiAyDQoNCm5hbWVzcGFjZSBpY3VfMl8yIHsNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgc3RydWN0IENvbnRyYWN0aW9uVGFibGUgQ29udHJhY3Rpb25UYWJsZTsNCnN0cnVjdCBD
b250cmFjdGlvblRhYmxlIHsNCiAgICBVQ2hhciAqY29kZVBvaW50czsNCiAgICB1aW50MzJfdCAq
Q0VzOw0KICAgIHVpbnQzMl90IHBvc2l0aW9uOw0KICAgIHVpbnQzMl90IHNpemU7DQp9Ow0KDQpz
dHJ1Y3QgQ250VGFibGUgew0KICAgIENvbnRyYWN0aW9uVGFibGUgKiplbGVtZW50czsNCg0KICAg
IFVOZXdUcmllICptYXBwaW5nOw0KICAgIFVDaGFyICpjb2RlUG9pbnRzOw0KICAgIHVpbnQzMl90
ICpDRXM7DQogICAgaW50MzJfdCAqb2Zmc2V0czsNCiAgICBpbnQzMl90IHBvc2l0aW9uOw0KICAg
IGludDMyX3Qgc2l6ZTsNCiAgICBpbnQzMl90IGNhcGFjaXR5Ow0KICAgIFVDb2xDRVRhZ3MgY3Vy
cmVudFRhZzsNCn07DQoNCmV4dGVybiAiQyIgQ250VGFibGUqDQoNCnVwcnZfY250dGFiX29wZW5f
Ml8yKFVOZXdUcmllICptYXBwaW5nLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KZXh0ZXJuICJDIiBD
bnRUYWJsZSoNCnVwcnZfY250dGFiX2Nsb25lXzJfMihDbnRUYWJsZSAqdGFibGUsIFVFcnJvckNv
ZGUgKnN0YXR1cyk7DQpleHRlcm4gIkMiIHZvaWQNCnVwcnZfY250dGFiX2Nsb3NlXzJfMihDbnRU
YWJsZSAqdGFibGUpOw0KDQoNCmV4dGVybiAiQyIgaW50MzJfdA0KdXBydl9jbnR0YWJfY29uc3Ry
dWN0VGFibGVfMl8yKENudFRhYmxlICp0YWJsZSwgdWludDMyX3QgbWFpbk9mZnNldCwgVUVycm9y
Q29kZSAqc3RhdHVzKTsNCg0KZXh0ZXJuICJDIiB1aW50MzJfdA0KdXBydl9jbnR0YWJfYWRkQ29u
dHJhY3Rpb25fMl8yKENudFRhYmxlICp0YWJsZSwgdWludDMyX3QgZWxlbWVudCwgVUNoYXIgY29k
ZVBvaW50LCB1aW50MzJfdCB2YWx1ZSwgVUVycm9yQ29kZSAqc3RhdHVzKTsNCg0KZXh0ZXJuICJD
IiB1aW50MzJfdA0KdXBydl9jbnR0YWJfc2V0Q29udHJhY3Rpb25fMl8yKENudFRhYmxlICp0YWJs
ZSwgdWludDMyX3QgZWxlbWVudCwgdWludDMyX3Qgb2Zmc2V0LCBVQ2hhciBjb2RlUG9pbnQsIHVp
bnQzMl90IHZhbHVlLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KDQpleHRlcm4gIkMiIHVpbnQzMl90
DQp1cHJ2X2NudHRhYl9pbnNlcnRDb250cmFjdGlvbl8yXzIoQ250VGFibGUgKnRhYmxlLCB1aW50
MzJfdCBlbGVtZW50LCBVQ2hhciBjb2RlUG9pbnQsIHVpbnQzMl90IHZhbHVlLCBVRXJyb3JDb2Rl
ICpzdGF0dXMpOw0KDQpleHRlcm4gIkMiIHVpbnQzMl90DQp1cHJ2X2NudHRhYl9jaGFuZ2VMYXN0
Q0VfMl8yKENudFRhYmxlICp0YWJsZSwgdWludDMyX3QgZWxlbWVudCwgdWludDMyX3QgdmFsdWUs
IFVFcnJvckNvZGUgKnN0YXR1cyk7DQoNCmV4dGVybiAiQyIgaW50MzJfdA0KdXBydl9jbnR0YWJf
ZmluZENQXzJfMihDbnRUYWJsZSAqdGFibGUsIHVpbnQzMl90IGVsZW1lbnQsIFVDaGFyIGNvZGVQ
b2ludCwgVUVycm9yQ29kZSAqc3RhdHVzKTsNCg0KZXh0ZXJuICJDIiB1aW50MzJfdA0KdXBydl9j
bnR0YWJfZ2V0Q0VfMl8yKENudFRhYmxlICp0YWJsZSwgdWludDMyX3QgZWxlbWVudCwgdWludDMy
X3QgcG9zaXRpb24sIFVFcnJvckNvZGUgKnN0YXR1cyk7DQoNCmV4dGVybiAiQyIgdWludDMyX3QN
CnVwcnZfY250dGFiX2NoYW5nZUNvbnRyYWN0aW9uXzJfMihDbnRUYWJsZSAqdGFibGUsIHVpbnQz
Ml90IGVsZW1lbnQsIFVDaGFyIGNvZGVQb2ludCwgdWludDMyX3QgbmV3Q0UsIFVFcnJvckNvZGUg
KnN0YXR1cyk7DQoNCmV4dGVybiAiQyIgdWludDMyX3QNCnVwcnZfY250dGFiX2ZpbmRDRV8yXzIo
Q250VGFibGUgKnRhYmxlLCB1aW50MzJfdCBlbGVtZW50LCBVQ2hhciBjb2RlUG9pbnQsIFVFcnJv
ckNvZGUgKnN0YXR1cyk7DQoNCmV4dGVybiAiQyIgVUJvb2wNCnVwcnZfY250dGFiX2lzVGFpbG9y
ZWRfMl8yKENudFRhYmxlICp0YWJsZSwgdWludDMyX3QgZWxlbWVudCwgVUNoYXIgKnp0U3RyaW5n
LCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KDQp9DQojIDI1ICJ1Y29sX2VsbS5oIiAyDQojIDMzICJ1
Y29sX2VsbS5oIg0KbmFtZXNwYWNlIGljdV8yXzIgew0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAg
dWludDMyX3QgKkNFczsNCiAgICBpbnQzMl90IHBvc2l0aW9uOw0KICAgIGludDMyX3Qgc2l6ZTsN
Cn0gRXhwYW5zaW9uVGFibGU7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBVQ2hhciBwcmVmaXhD
aGFyc1sxMjhdOw0KICAgIFVDaGFyICpwcmVmaXg7DQogICAgdWludDMyX3QgcHJlZml4U2l6ZTsN
CiAgICBVQ2hhciB1Y2hhcnNbMTI4XTsNCiAgICBVQ2hhciAqY1BvaW50czsNCiAgICB1aW50MzJf
dCBjU2l6ZTsNCiAgICB1aW50MzJfdCBub09mQ0VzOw0KICAgIHVpbnQzMl90IENFc1sxMjhdOw0K
ICAgIHVpbnQzMl90IG1hcENFOw0KICAgIHVpbnQzMl90IHNpemVQcmltWzEyOF07DQogICAgdWlu
dDMyX3Qgc2l6ZVNlY1sxMjhdOw0KICAgIHVpbnQzMl90IHNpemVUZXJbMTI4XTsNCiAgICBVQm9v
bCB2YXJpYWJsZVRvcDsNCiAgICBVQm9vbCBjYXNlQml0Ow0KICAgIFVCb29sIGlzVGhhaTsNCn0g
VUNBRWxlbWVudHM7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgdWludDMyX3QgKmVuZEV4cGFuc2lv
bkNFOw0KICBVQm9vbCAqaXNWOw0KICBpbnQgcG9zaXRpb247DQogIGludCBzaXplOw0KICB1aW50
OF90IG1heExTaXplOw0KICB1aW50OF90IG1heFZTaXplOw0KICB1aW50OF90IG1heFRTaXplOw0K
fSBNYXhKYW1vRXhwYW5zaW9uVGFibGU7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgdWludDMyX3Qg
KmVuZEV4cGFuc2lvbkNFOw0KICB1aW50OF90ICpleHBhbnNpb25DRVNpemU7DQogIGludCBwb3Np
dGlvbjsNCiAgaW50IHNpemU7DQp9IE1heEV4cGFuc2lvblRhYmxlOw0KDQp0eXBlZGVmIHN0cnVj
dCB7DQoNCiAgVU5ld1RyaWUgKm1hcHBpbmc7DQogIEV4cGFuc2lvblRhYmxlICpleHBhbnNpb25z
Ow0KICBzdHJ1Y3QgQ250VGFibGUgKmNvbnRyYWN0aW9uczsNCiAgVUNBVGFibGVIZWFkZXIgKmlt
YWdlOw0KICBVQ29sT3B0aW9uU2V0ICpvcHRpb25zOw0KICBNYXhFeHBhbnNpb25UYWJsZSAqbWF4
RXhwYW5zaW9uczsNCiAgTWF4SmFtb0V4cGFuc2lvblRhYmxlICptYXhKYW1vRXhwYW5zaW9uczsN
CiAgdWludDhfdCAqdW5zYWZlQ1A7DQogIHVpbnQ4X3QgKmNvbnRyRW5kQ1A7DQogIGNvbnN0IFVD
b2xsYXRvciAqVUNBOw0KICBVSGFzaHRhYmxlICpwcmVmaXhMb29rdXA7DQp9IHRlbXBVQ0FUYWJs
ZTsNCg0KZXh0ZXJuICJDIiB0ZW1wVUNBVGFibGUgKiB1cHJ2X3VjYV9pbml0VGVtcFRhYmxlXzJf
MihVQ0FUYWJsZUhlYWRlciAqaW1hZ2UsIFVDb2xPcHRpb25TZXQgKm9wdHMsIGNvbnN0IFVDb2xs
YXRvciAqVUNBLCBVQ29sQ0VUYWdzIGluaXRUYWcsIFVFcnJvckNvZGUgKnN0YXR1cyk7DQpleHRl
cm4gIkMiIHRlbXBVQ0FUYWJsZSAqIHVwcnZfdWNhX2Nsb25lVGVtcFRhYmxlXzJfMih0ZW1wVUNB
VGFibGUgKnQsIFVFcnJvckNvZGUgKnN0YXR1cyk7DQpleHRlcm4gIkMiIHZvaWQgdXBydl91Y2Ff
Y2xvc2VUZW1wVGFibGVfMl8yKHRlbXBVQ0FUYWJsZSAqdCk7DQpleHRlcm4gIkMiIHVpbnQzMl90
IHVwcnZfdWNhX2FkZEFuRWxlbWVudF8yXzIodGVtcFVDQVRhYmxlICp0LCBVQ0FFbGVtZW50cyAq
ZWxlbWVudCwgVUVycm9yQ29kZSAqc3RhdHVzKTsNCmV4dGVybiAiQyIgVUNBVGFibGVIZWFkZXIg
KiB1cHJ2X3VjYV9hc3NlbWJsZVRhYmxlXzJfMih0ZW1wVUNBVGFibGUgKnQsIFVFcnJvckNvZGUg
KnN0YXR1cyk7DQpleHRlcm4gIkMiIGludDMyX3QNCnVwcnZfdWNhX2Nhbm9uaWNhbENsb3N1cmVf
Ml8yKHRlbXBVQ0FUYWJsZSAqdCwgVUVycm9yQ29kZSAqc3RhdHVzKTsNCg0KDQoNCg0KDQp9DQoj
IDI5ICJ1Y29sX2VsbS5jcHAiIDINCiMgMSAiLi4vY29tbW9uL3Vub3JtaW1wLmgiIDENCiMgMjMg
Ii4uL2NvbW1vbi91bm9ybWltcC5oIg0KIyAxICIuLi9jb21tb24vdW5pY29kZS91c2V0LmgiIDEN
CiMgMjQgIi4uL2NvbW1vbi91bmljb2RlL3VzZXQuaCINCnN0cnVjdCBVU2V0Ow0KdHlwZWRlZiBz
dHJ1Y3QgVVNldCBVU2V0Ow0KDQplbnVtIHsNCiAgICBVU0VUX1NFUklBTElaRURfU1RBVElDX0FS
UkFZX0NBUEFDSVRZPTgNCn07DQoNCg0KDQoNCg0Kc3RydWN0IFVTZXJpYWxpemVkU2V0IHsNCiAg
ICBjb25zdCB1aW50MTZfdCAqYXJyYXk7DQogICAgaW50MzJfdCBibXBMZW5ndGgsIGxlbmd0aDsN
CiAgICB1aW50MTZfdCBzdGF0aWNBcnJheVtVU0VUX1NFUklBTElaRURfU1RBVElDX0FSUkFZX0NB
UEFDSVRZXTsNCn07DQp0eXBlZGVmIHN0cnVjdCBVU2VyaWFsaXplZFNldCBVU2VyaWFsaXplZFNl
dDsNCiMgNTUgIi4uL2NvbW1vbi91bmljb2RlL3VzZXQuaCINCmV4dGVybiAiQyIgVVNldCoNCnVz
ZXRfb3Blbl8yXzIoVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBlbmQpOw0KIyA2NiAiLi4vY29tbW9u
L3VuaWNvZGUvdXNldC5oIg0KZXh0ZXJuICJDIiBVU2V0Kg0KdXNldF9vcGVuUGF0dGVybl8yXzIo
Y29uc3QgVUNoYXIqIHBhdHRlcm4sIGludDMyX3QgcGF0dGVybkxlbmd0aCwNCiAgICAgICAgICAg
ICAgICAgVUVycm9yQ29kZSogZWMpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB2b2lkDQp1c2V0
X2Nsb3NlXzJfMihVU2V0KiBzZXQpOw0KIyA5MiAiLi4vY29tbW9uL3VuaWNvZGUvdXNldC5oIg0K
ZXh0ZXJuICJDIiBpbnQzMl90DQp1c2V0X3RvUGF0dGVybl8yXzIoY29uc3QgVVNldCogc2V0LA0K
ICAgICAgICAgICAgICAgVUNoYXIqIHJlc3VsdCwgaW50MzJfdCByZXN1bHRDYXBhY2l0eSwNCiAg
ICAgICAgICAgICAgIFVCb29sIGVzY2FwZVVucHJpbnRhYmxlLA0KICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSogZWMpOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHZvaWQNCnVzZXRfYWRkXzJf
MihVU2V0KiBzZXQsIFVDaGFyMzIgYyk7DQojIDExNCAiLi4vY29tbW9uL3VuaWNvZGUvdXNldC5o
Ig0KZXh0ZXJuICJDIiB2b2lkDQp1c2V0X2FkZFN0cmluZ18yXzIoVVNldCogc2V0LCBjb25zdCBV
Q2hhciogc3RyLCBpbnQzMl90IHN0ckxlbik7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgdm9p
ZA0KdXNldF9yZW1vdmVfMl8yKFVTZXQqIHNldCwgVUNoYXIzMiBjKTsNCiMgMTMzICIuLi9jb21t
b24vdW5pY29kZS91c2V0LmgiDQpleHRlcm4gIkMiIHZvaWQNCnVzZXRfcmVtb3ZlU3RyaW5nXzJf
MihVU2V0KiBzZXQsIGNvbnN0IFVDaGFyKiBzdHIsIGludDMyX3Qgc3RyTGVuKTsNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiB2b2lkDQp1c2V0X2NvbXBsZW1lbnRfMl8yKFVTZXQqIHNldCk7DQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIHZvaWQNCnVzZXRfY2xlYXJfMl8yKFVTZXQqIHNldCk7DQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgVUJvb2wNCnVzZXRfaXNFbXB0eV8yXzIoY29uc3QgVVNl
dCogc2V0KTsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgVUJvb2wNCnVzZXRfY29udGFpbnNfMl8y
KGNvbnN0IFVTZXQqIHNldCwgVUNoYXIzMiBjKTsNCiMgMTc3ICIuLi9jb21tb24vdW5pY29kZS91
c2V0LmgiDQpleHRlcm4gIkMiIFVCb29sDQp1c2V0X2NvbnRhaW5zU3RyaW5nXzJfMihjb25zdCBV
U2V0KiBzZXQsIGNvbnN0IFVDaGFyKiBzdHIsIGludDMyX3Qgc3RyTGVuKTsNCiMgMTg3ICIuLi9j
b21tb24vdW5pY29kZS91c2V0LmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVzZXRfc2l6ZV8yXzIo
Y29uc3QgVVNldCogc2V0KTsNCiMgMTk3ICIuLi9jb21tb24vdW5pY29kZS91c2V0LmgiDQpleHRl
cm4gIkMiIGludDMyX3QNCnVzZXRfZ2V0SXRlbUNvdW50XzJfMihjb25zdCBVU2V0KiBzZXQpOw0K
IyAyMTcgIi4uL2NvbW1vbi91bmljb2RlL3VzZXQuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdXNl
dF9nZXRJdGVtXzJfMihjb25zdCBVU2V0KiBzZXQsIGludDMyX3QgaXRlbUluZGV4LA0KICAgICAg
ICAgICAgIFVDaGFyMzIqIHN0YXJ0LCBVQ2hhcjMyKiBlbmQsDQogICAgICAgICAgICAgVUNoYXIq
IHN0ciwgaW50MzJfdCBzdHJDYXBhY2l0eSwNCiAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7
DQojIDI3NSAiLi4vY29tbW9uL3VuaWNvZGUvdXNldC5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1
c2V0X3NlcmlhbGl6ZV8yXzIoY29uc3QgVVNldCogc2V0LCB1aW50MTZfdCogZGVzdCwgaW50MzJf
dCBkZXN0Q2FwYWNpdHksIFVFcnJvckNvZGUqIHBFcnJvckNvZGUpOw0KIyAyODUgIi4uL2NvbW1v
bi91bmljb2RlL3VzZXQuaCINCmV4dGVybiAiQyIgVUJvb2wNCnVzZXRfZ2V0U2VyaWFsaXplZFNl
dF8yXzIoVVNlcmlhbGl6ZWRTZXQqIGZpbGxTZXQsIGNvbnN0IHVpbnQxNl90KiBzcmMsIGludDMy
X3Qgc3JjTGVuZ3RoKTsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHZvaWQNCnVzZXRfc2V0U2VyaWFs
aXplZFRvT25lXzJfMihVU2VyaWFsaXplZFNldCogZmlsbFNldCwgVUNoYXIzMiBjKTsNCg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiBVQm9vbA0KdXNldF9zZXJpYWxpemVkQ29udGFpbnNfMl8yKGNv
bnN0IFVTZXJpYWxpemVkU2V0KiBzZXQsIFVDaGFyMzIgYyk7DQojIDMxMiAiLi4vY29tbW9uL3Vu
aWNvZGUvdXNldC5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1c2V0X2dldFNlcmlhbGl6ZWRSYW5n
ZUNvdW50XzJfMihjb25zdCBVU2VyaWFsaXplZFNldCogc2V0KTsNCiMgMzI3ICIuLi9jb21tb24v
dW5pY29kZS91c2V0LmgiDQpleHRlcm4gIkMiIFVCb29sDQp1c2V0X2dldFNlcmlhbGl6ZWRSYW5n
ZV8yXzIoY29uc3QgVVNlcmlhbGl6ZWRTZXQqIHNldCwgaW50MzJfdCByYW5nZUluZGV4LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgVUNoYXIzMiogcFN0YXJ0LCBVQ2hhcjMyKiBwRW5kKTsNCiMg
MjQgIi4uL2NvbW1vbi91bm9ybWltcC5oIiAyDQoNCiMgMSAiLi4vY29tbW9uL3VzdHJfaW1wLmgi
IDENCiMgMTkgIi4uL2NvbW1vbi91c3RyX2ltcC5oIg0KIyAxICIuLi9jb21tb24vdW5pY29kZS91
Y252LmgiIDENCiMgMzEgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCnN0cnVjdCBVQ29udmVy
dGVyOw0KDQoNCnR5cGVkZWYgc3RydWN0IFVDb252ZXJ0ZXIgVUNvbnZlcnRlcjsNCg0KDQojIDEg
Ii4uL2NvbW1vbi91bmljb2RlL3VjbnZfZXJyLmgiIDENCiMgODggIi4uL2NvbW1vbi91bmljb2Rl
L3VjbnZfZXJyLmgiDQp0eXBlZGVmIGVudW0gew0KICAgIFVDTlZfVU5BU1NJR05FRCA9IDAsDQoN
CiAgICBVQ05WX0lMTEVHQUwgPSAxLA0KDQoNCg0KDQoNCg0KDQogICAgVUNOVl9JUlJFR1VMQVIg
PSAyLA0KDQoNCg0KDQogICAgVUNOVl9SRVNFVCA9IDMsDQoNCg0KICAgIFVDTlZfQ0xPU0UgPSA0
LA0KDQogICAgVUNOVl9DTE9ORSA9IDUNCiMgMTE4ICIuLi9jb21tb24vdW5pY29kZS91Y252X2Vy
ci5oIg0KfSBVQ29udmVydGVyQ2FsbGJhY2tSZWFzb247DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCB7DQogICAgdWludDE2X3Qgc2l6ZTsNCiAgICBVQm9vbCBmbHVzaDsNCiAgICBVQ29udmVy
dGVyICpjb252ZXJ0ZXI7DQogICAgY29uc3QgVUNoYXIgKnNvdXJjZTsNCiAgICBjb25zdCBVQ2hh
ciAqc291cmNlTGltaXQ7DQogICAgY2hhciAqdGFyZ2V0Ow0KICAgIGNvbnN0IGNoYXIgKnRhcmdl
dExpbWl0Ow0KICAgIGludDMyX3QgKm9mZnNldHM7DQp9IFVDb252ZXJ0ZXJGcm9tVW5pY29kZUFy
Z3M7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgdWludDE2X3Qgc2l6ZTsNCiAg
ICBVQm9vbCBmbHVzaDsNCiAgICBVQ29udmVydGVyICpjb252ZXJ0ZXI7DQogICAgY29uc3QgY2hh
ciAqc291cmNlOw0KICAgIGNvbnN0IGNoYXIgKnNvdXJjZUxpbWl0Ow0KICAgIFVDaGFyICp0YXJn
ZXQ7DQogICAgY29uc3QgVUNoYXIgKnRhcmdldExpbWl0Ow0KICAgIGludDMyX3QgKm9mZnNldHM7
DQp9IFVDb252ZXJ0ZXJUb1VuaWNvZGVBcmdzOw0KIyAxNTkgIi4uL2NvbW1vbi91bmljb2RlL3Vj
bnZfZXJyLmgiDQpleHRlcm4gIkMiIHZvaWQgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tfU1RPUF8yXzIg
KA0KICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29udGV4dCwNCiAgICAgICAgICAgICAg
ICAgIFVDb252ZXJ0ZXJGcm9tVW5pY29kZUFyZ3MgKmZyb21VQXJncywNCiAgICAgICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyKiBjb2RlVW5pdHMsDQogICAgICAgICAgICAgICAgICBpbnQzMl90IGxl
bmd0aCwNCiAgICAgICAgICAgICAgICAgIFVDaGFyMzIgY29kZVBvaW50LA0KICAgICAgICAgICAg
ICAgICAgVUNvbnZlcnRlckNhbGxiYWNrUmVhc29uIHJlYXNvbiwNCiAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUgKiBlcnIpOw0KIyAxNzcgIi4uL2NvbW1vbi91bmljb2RlL3VjbnZfZXJyLmgi
DQpleHRlcm4gIkMiIHZvaWQgVUNOVl9UT19VX0NBTExCQUNLX1NUT1BfMl8yICgNCiAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKmNvbnRleHQsDQogICAgICAgICAgICAgICAgICBVQ29udmVy
dGVyVG9Vbmljb2RlQXJncyAqZnJvbVVBcmdzLA0KICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogY29kZVVuaXRzLA0KICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAg
ICAgICAgICAgICBVQ29udmVydGVyQ2FsbGJhY2tSZWFzb24gcmVhc29uLA0KICAgICAgICAgICAg
ICAgICAgVUVycm9yQ29kZSAqIGVycik7DQojIDE5NyAiLi4vY29tbW9uL3VuaWNvZGUvdWNudl9l
cnIuaCINCmV4dGVybiAiQyIgdm9pZCBVQ05WX0ZST01fVV9DQUxMQkFDS19TS0lQXzJfMiAoDQog
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb250ZXh0LA0KICAgICAgICAgICAgICAgICAg
VUNvbnZlcnRlckZyb21Vbmljb2RlQXJncyAqZnJvbVVBcmdzLA0KICAgICAgICAgICAgICAgICAg
Y29uc3QgVUNoYXIqIGNvZGVVbml0cywNCiAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3Ro
LA0KICAgICAgICAgICAgICAgICAgVUNoYXIzMiBjb2RlUG9pbnQsDQogICAgICAgICAgICAgICAg
ICBVQ29udmVydGVyQ2FsbGJhY2tSZWFzb24gcmVhc29uLA0KICAgICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSAqIGVycik7DQojIDIyMCAiLi4vY29tbW9uL3VuaWNvZGUvdWNudl9lcnIuaCINCmV4
dGVybiAiQyIgdm9pZCBVQ05WX0ZST01fVV9DQUxMQkFDS19TVUJTVElUVVRFXzJfMiAoDQogICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb250ZXh0LA0KICAgICAgICAgICAgICAgICAgVUNv
bnZlcnRlckZyb21Vbmljb2RlQXJncyAqZnJvbVVBcmdzLA0KICAgICAgICAgICAgICAgICAgY29u
c3QgVUNoYXIqIGNvZGVVbml0cywNCiAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0K
ICAgICAgICAgICAgICAgICAgVUNoYXIzMiBjb2RlUG9pbnQsDQogICAgICAgICAgICAgICAgICBV
Q29udmVydGVyQ2FsbGJhY2tSZWFzb24gcmVhc29uLA0KICAgICAgICAgICAgICAgICAgVUVycm9y
Q29kZSAqIGVycik7DQojIDI2OSAiLi4vY29tbW9uL3VuaWNvZGUvdWNudl9lcnIuaCINCmV4dGVy
biAiQyIgdm9pZCBVQ05WX0ZST01fVV9DQUxMQkFDS19FU0NBUEVfMl8yICgNCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmNvbnRleHQsDQogICAgICAgICAgICAgICAgICBVQ29udmVydGVy
RnJvbVVuaWNvZGVBcmdzICpmcm9tVUFyZ3MsDQogICAgICAgICAgICAgICAgICBjb25zdCBVQ2hh
ciogY29kZVVuaXRzLA0KICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAg
ICAgICAgICAgICBVQ2hhcjMyIGNvZGVQb2ludCwNCiAgICAgICAgICAgICAgICAgIFVDb252ZXJ0
ZXJDYWxsYmFja1JlYXNvbiByZWFzb24sDQogICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICog
ZXJyKTsNCiMgMjkxICIuLi9jb21tb24vdW5pY29kZS91Y252X2Vyci5oIg0KZXh0ZXJuICJDIiB2
b2lkIFVDTlZfVE9fVV9DQUxMQkFDS19TS0lQXzJfMiAoDQogICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpjb250ZXh0LA0KICAgICAgICAgICAgICAgICAgVUNvbnZlcnRlclRvVW5pY29kZUFy
Z3MgKmZyb21VQXJncywNCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvZGVVbml0cywN
CiAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgVUNv
bnZlcnRlckNhbGxiYWNrUmVhc29uIHJlYXNvbiwNCiAgICAgICAgICAgICAgICAgIFVFcnJvckNv
ZGUgKiBlcnIpOw0KIyAzMTAgIi4uL2NvbW1vbi91bmljb2RlL3VjbnZfZXJyLmgiDQpleHRlcm4g
IkMiIHZvaWQgVUNOVl9UT19VX0NBTExCQUNLX1NVQlNUSVRVVEVfMl8yICgNCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmNvbnRleHQsDQogICAgICAgICAgICAgICAgICBVQ29udmVydGVy
VG9Vbmljb2RlQXJncyAqZnJvbVVBcmdzLA0KICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
Y29kZVVuaXRzLA0KICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICAg
ICAgICAgICBVQ29udmVydGVyQ2FsbGJhY2tSZWFzb24gcmVhc29uLA0KICAgICAgICAgICAgICAg
ICAgVUVycm9yQ29kZSAqIGVycik7DQojIDMyNiAiLi4vY29tbW9uL3VuaWNvZGUvdWNudl9lcnIu
aCINCmV4dGVybiAiQyIgdm9pZCBVQ05WX1RPX1VfQ0FMTEJBQ0tfRVNDQVBFXzJfMiAoDQogICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb250ZXh0LA0KICAgICAgICAgICAgICAgICAgVUNv
bnZlcnRlclRvVW5pY29kZUFyZ3MgKmZyb21VQXJncywNCiAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGNvZGVVbml0cywNCiAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAg
ICAgICAgICAgICAgICAgVUNvbnZlcnRlckNhbGxiYWNrUmVhc29uIHJlYXNvbiwNCiAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUgKiBlcnIpOw0KIyAzOCAiLi4vY29tbW9uL3VuaWNvZGUvdWNu
di5oIiAyDQojIDEgIi4uL2NvbW1vbi91bmljb2RlL3VlbnVtLmgiIDENCiMgMjUgIi4uL2NvbW1v
bi91bmljb2RlL3VlbnVtLmgiDQpzdHJ1Y3QgVUVudW1lcmF0aW9uOw0KDQp0eXBlZGVmIHN0cnVj
dCBVRW51bWVyYXRpb24gVUVudW1lcmF0aW9uOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHZv
aWQNCnVlbnVtX2Nsb3NlXzJfMihVRW51bWVyYXRpb24qIGVuKTsNCiMgNTEgIi4uL2NvbW1vbi91
bmljb2RlL3VlbnVtLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVlbnVtX2NvdW50XzJfMihVRW51
bWVyYXRpb24qIGVuLCBVRXJyb3JDb2RlKiBzdGF0dXMpOw0KIyA3NCAiLi4vY29tbW9uL3VuaWNv
ZGUvdWVudW0uaCINCmV4dGVybiAiQyIgY29uc3QgVUNoYXIqDQp1ZW51bV91bmV4dF8yXzIoVUVu
dW1lcmF0aW9uKiBlbiwNCiAgICAgICAgICAgIGludDMyX3QqIHJlc3VsdExlbmd0aCwNCiAgICAg
ICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7DQojIDEwNiAiLi4vY29tbW9uL3VuaWNvZGUvdWVu
dW0uaCINCmV4dGVybiAiQyIgY29uc3QgY2hhcioNCnVlbnVtX25leHRfMl8yKFVFbnVtZXJhdGlv
biogZW4sDQogICAgICAgICAgIGludDMyX3QqIHJlc3VsdExlbmd0aCwNCiAgICAgICAgICAgVUVy
cm9yQ29kZSogc3RhdHVzKTsNCiMgMTE5ICIuLi9jb21tb24vdW5pY29kZS91ZW51bS5oIg0KZXh0
ZXJuICJDIiB2b2lkDQp1ZW51bV9yZXNldF8yXzIoVUVudW1lcmF0aW9uKiBlbiwgVUVycm9yQ29k
ZSogc3RhdHVzKTsNCiMgMzkgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCIgMg0KDQpleHRlcm4g
IkMiIHsNCiMgNTcgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCnR5cGVkZWYgZW51bSB7DQog
ICAgVUNOVl9VTlNVUFBPUlRFRF9DT05WRVJURVIgPSAtMSwNCiAgICBVQ05WX1NCQ1MgPSAwLA0K
ICAgIFVDTlZfREJDUyA9IDEsDQogICAgVUNOVl9NQkNTID0gMiwNCiAgICBVQ05WX0xBVElOXzEg
PSAzLA0KICAgIFVDTlZfVVRGOCA9IDQsDQogICAgVUNOVl9VVEYxNl9CaWdFbmRpYW4gPSA1LA0K
ICAgIFVDTlZfVVRGMTZfTGl0dGxlRW5kaWFuID0gNiwNCiAgICBVQ05WX1VURjMyX0JpZ0VuZGlh
biA9IDcsDQogICAgVUNOVl9VVEYzMl9MaXR0bGVFbmRpYW4gPSA4LA0KICAgIFVDTlZfRUJDRElD
X1NUQVRFRlVMID0gOSwNCiAgICBVQ05WX0lTT18yMDIyID0gMTAsDQoNCiAgICBVQ05WX0xNQkNT
XzEgPSAxMSwNCiAgICBVQ05WX0xNQkNTXzIsDQogICAgVUNOVl9MTUJDU18zLA0KICAgIFVDTlZf
TE1CQ1NfNCwNCiAgICBVQ05WX0xNQkNTXzUsDQogICAgVUNOVl9MTUJDU182LA0KICAgIFVDTlZf
TE1CQ1NfOCwNCiAgICBVQ05WX0xNQkNTXzExLA0KICAgIFVDTlZfTE1CQ1NfMTYsDQogICAgVUNO
Vl9MTUJDU18xNywNCiAgICBVQ05WX0xNQkNTXzE4LA0KICAgIFVDTlZfTE1CQ1NfMTksDQogICAg
VUNOVl9MTUJDU19MQVNUID0gVUNOVl9MTUJDU18xOSwNCiAgICBVQ05WX0haLA0KICAgIFVDTlZf
U0NTVSwNCiAgICBVQ05WX0lTQ0lJLA0KICAgIFVDTlZfVVNfQVNDSUksDQogICAgVUNOVl9VVEY3
LA0KICAgIFVDTlZfQk9DVTEsDQogICAgVUNOVl9VVEYxNiwNCiAgICBVQ05WX1VURjMyLA0KICAg
IFVDTlZfQ0VTVTgsDQoNCg0KICAgIFVDTlZfTlVNQkVSX09GX1NVUFBPUlRFRF9DT05WRVJURVJf
VFlQRVMNCg0KfSBVQ29udmVydGVyVHlwZTsNCiMgMTA4ICIuLi9jb21tb24vdW5pY29kZS91Y252
LmgiDQp0eXBlZGVmIGVudW0gew0KICAgIFVDTlZfVU5LTk9XTiA9IC0xLA0KICAgIFVDTlZfSUJN
ID0gMA0KfSBVQ29udmVydGVyUGxhdGZvcm07DQojIDEyNSAiLi4vY29tbW9uL3VuaWNvZGUvdWNu
di5oIg0KdHlwZWRlZiB2b2lkICggKlVDb252ZXJ0ZXJUb1VDYWxsYmFjaykgKA0KICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCogY29udGV4dCwNCiAgICAgICAgICAgICAgICAgIFVDb252ZXJ0
ZXJUb1VuaWNvZGVBcmdzICphcmdzLA0KICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29k
ZVBvaW50cywNCiAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAg
ICAgICAgVUNvbnZlcnRlckNhbGxiYWNrUmVhc29uIHJlYXNvbiwNCiAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUgKik7DQojIDE0NSAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KdHlwZWRl
ZiB2b2lkICggKlVDb252ZXJ0ZXJGcm9tVUNhbGxiYWNrKSAoDQogICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQqIGNvbnRleHQsDQogICAgICAgICAgICAgICAgICAgIFVDb252ZXJ0ZXJGcm9t
VW5pY29kZUFyZ3MgKmFyZ3MsDQogICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjb2Rl
VW5pdHMsDQogICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAgICAgICAgICAg
ICAgICAgICBVQ2hhcjMyIGNvZGVQb2ludCwNCiAgICAgICAgICAgICAgICAgICAgVUNvbnZlcnRl
ckNhbGxiYWNrUmVhc29uIHJlYXNvbiwNCiAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAq
KTsNCg0KfQ0KIyAyMDQgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAiQyIgaW50
DQp1Y252X2NvbXBhcmVOYW1lc18yXzIoY29uc3QgY2hhciAqbmFtZTEsIGNvbnN0IGNoYXIgKm5h
bWUyKTsNCiMgMjM3ICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRlcm4gIkMiIFVDb252
ZXJ0ZXIqDQp1Y252X29wZW5fMl8yIChjb25zdCBjaGFyICpjb252ZXJ0ZXJOYW1lLCBVRXJyb3JD
b2RlICogZXJyKTsNCiMgMjY0ICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRlcm4gIkMi
IFVDb252ZXJ0ZXIqDQp1Y252X29wZW5VXzJfMiAoY29uc3QgVUNoYXIgKiBuYW1lLA0KICAgICAg
ICAgICAgVUVycm9yQ29kZSAqIGVycik7DQojIDMzMSAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5o
Ig0KZXh0ZXJuICJDIiBVQ29udmVydGVyKg0KdWNudl9vcGVuQ0NTSURfMl8yIChpbnQzMl90IGNv
ZGVwYWdlLA0KICAgICAgICAgICAgICAgIFVDb252ZXJ0ZXJQbGF0Zm9ybSBwbGF0Zm9ybSwNCiAg
ICAgICAgICAgICAgICBVRXJyb3JDb2RlICogZXJyKTsNCiMgMzYzICIuLi9jb21tb24vdW5pY29k
ZS91Y252LmgiDQpleHRlcm4gIkMiIFVDb252ZXJ0ZXIqDQp1Y252X29wZW5QYWNrYWdlIChjb25z
dCBjaGFyICpwYWNrYWdlTmFtZSwgY29uc3QgY2hhciAqY29udmVydGVyTmFtZSwgVUVycm9yQ29k
ZSAqIGVycik7DQojIDM4MiAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiBV
Q29udmVydGVyICoNCnVjbnZfc2FmZUNsb25lXzJfMihjb25zdCBVQ29udmVydGVyICpjbnYsDQog
ICAgICAgICAgICAgICB2b2lkICpzdGFja0J1ZmZlciwNCiAgICAgICAgICAgICAgIGludDMyX3Qg
KnBCdWZmZXJTaXplLA0KICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsNCiMgNDAy
ICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRlcm4gIkMiIHZvaWQNCnVjbnZfY2xvc2Vf
Ml8yIChVQ29udmVydGVyICogY29udmVydGVyKTsNCiMgNDE5ICIuLi9jb21tb24vdW5pY29kZS91
Y252LmgiDQpleHRlcm4gIkMiIHZvaWQNCnVjbnZfZ2V0U3Vic3RDaGFyc18yXzIgKGNvbnN0IFVD
b252ZXJ0ZXIgKiBjb252ZXJ0ZXIsDQogICAgICAgICAgICAgICAgICAgIGNoYXIgKnN1YkNoYXJz
LA0KICAgICAgICAgICAgICAgICAgICBpbnQ4X3QgKiBsZW4sDQogICAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUgKiBlcnIpOw0KIyA0MzcgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCmV4
dGVybiAiQyIgdm9pZA0KdWNudl9zZXRTdWJzdENoYXJzXzJfMiAoVUNvbnZlcnRlciAqIGNvbnZl
cnRlciwNCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3ViQ2hhcnMsDQogICAgICAg
ICAgICAgICAgICAgIGludDhfdCBsZW4sDQogICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUg
KiBlcnIpOw0KIyA0NTYgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAiQyIgdm9p
ZA0KdWNudl9nZXRJbnZhbGlkQ2hhcnNfMl8yIChjb25zdCBVQ29udmVydGVyICogY29udmVydGVy
LA0KICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmVyckJ5dGVzLA0KICAgICAgICAgICAgICAg
ICAgICAgIGludDhfdCAqIGxlbiwNCiAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICog
ZXJyKTsNCiMgNDc1ICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRlcm4gIkMiIHZvaWQN
CnVjbnZfZ2V0SW52YWxpZFVDaGFyc18yXzIgKGNvbnN0IFVDb252ZXJ0ZXIgKiBjb252ZXJ0ZXIs
DQogICAgICAgICAgICAgICAgICAgICAgIFVDaGFyICplcnJVQ2hhcnMsDQogICAgICAgICAgICAg
ICAgICAgICAgIGludDhfdCAqIGxlbiwNCiAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29k
ZSAqIGVycik7DQojIDQ4OCAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiB2
b2lkDQp1Y252X3Jlc2V0XzJfMiAoVUNvbnZlcnRlciAqIGNvbnZlcnRlcik7DQojIDQ5OSAiLi4v
Y29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1Y252X3Jlc2V0VG9Vbmlj
b2RlXzJfMihVQ29udmVydGVyICpjb252ZXJ0ZXIpOw0KIyA1MTAgIi4uL2NvbW1vbi91bmljb2Rl
L3VjbnYuaCINCmV4dGVybiAiQyIgdm9pZA0KdWNudl9yZXNldEZyb21Vbmljb2RlXzJfMihVQ29u
dmVydGVyICpjb252ZXJ0ZXIpOw0KIyA1MjEgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCmV4
dGVybiAiQyIgaW50OF90DQp1Y252X2dldE1heENoYXJTaXplXzJfMiAoY29uc3QgVUNvbnZlcnRl
ciAqIGNvbnZlcnRlcik7DQojIDUzMyAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJu
ICJDIiBpbnQ4X3QNCnVjbnZfZ2V0TWluQ2hhclNpemVfMl8yIChjb25zdCBVQ29udmVydGVyICog
Y29udmVydGVyKTsNCiMgNTUwICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRlcm4gIkMi
IGludDMyX3QNCnVjbnZfZ2V0RGlzcGxheU5hbWVfMl8yIChjb25zdCBVQ29udmVydGVyICogY29u
dmVydGVyLA0KICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGlzcGxheUxvY2FsZSwN
CiAgICAgICAgICAgICAgICAgICAgIFVDaGFyICogZGlzcGxheU5hbWUsDQogICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IGRpc3BsYXlOYW1lQ2FwYWNpdHksDQogICAgICAgICAgICAgICAgICAg
ICBVRXJyb3JDb2RlICogZXJyKTsNCiMgNTY3ICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpl
eHRlcm4gIkMiIGNvbnN0IGNoYXIgKg0KdWNudl9nZXROYW1lXzJfMiAoY29uc3QgVUNvbnZlcnRl
ciAqIGNvbnZlcnRlciwgVUVycm9yQ29kZSAqIGVycik7DQojIDU5NCAiLi4vY29tbW9uL3VuaWNv
ZGUvdWNudi5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1Y252X2dldENDU0lEXzJfMiAoY29uc3Qg
VUNvbnZlcnRlciAqIGNvbnZlcnRlciwNCiAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKiBlcnIp
Ow0KIyA2MDggIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAiQyIgVUNvbnZlcnRl
clBsYXRmb3JtDQp1Y252X2dldFBsYXRmb3JtXzJfMiAoY29uc3QgVUNvbnZlcnRlciAqIGNvbnZl
cnRlciwNCiAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKiBlcnIpOw0KIyA2MjAgIi4uL2Nv
bW1vbi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAiQyIgVUNvbnZlcnRlclR5cGUNCnVjbnZfZ2V0
VHlwZV8yXzIgKGNvbnN0IFVDb252ZXJ0ZXIgKiBjb252ZXJ0ZXIpOw0KIyA2MzggIi4uL2NvbW1v
bi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAiQyIgdm9pZCB1Y252X2dldFN0YXJ0ZXJzXzJfMihj
b25zdCBVQ29udmVydGVyKiBjb252ZXJ0ZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVQm9vbCBzdGFydGVyc1syNTZdLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVUVycm9yQ29kZSogZXJyKTsNCiMgNjU0ICIuLi9jb21tb24vdW5pY29k
ZS91Y252LmgiDQpleHRlcm4gIkMiIHZvaWQNCnVjbnZfZ2V0VG9VQ2FsbEJhY2tfMl8yIChjb25z
dCBVQ29udmVydGVyICogY29udmVydGVyLA0KICAgICAgICAgICAgICAgICAgICAgVUNvbnZlcnRl
clRvVUNhbGxiYWNrICphY3Rpb24sDQogICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICoq
Y29udGV4dCk7DQojIDY3MCAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiB2
b2lkDQp1Y252X2dldEZyb21VQ2FsbEJhY2tfMl8yIChjb25zdCBVQ29udmVydGVyICogY29udmVy
dGVyLA0KICAgICAgICAgICAgICAgICAgICAgICBVQ29udmVydGVyRnJvbVVDYWxsYmFjayAqYWN0
aW9uLA0KICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICoqY29udGV4dCk7DQojIDY4
OSAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1Y252X3NldFRv
VUNhbGxCYWNrXzJfMiAoVUNvbnZlcnRlciAqIGNvbnZlcnRlciwNCiAgICAgICAgICAgICAgICAg
ICAgIFVDb252ZXJ0ZXJUb1VDYWxsYmFjayBuZXdBY3Rpb24sDQogICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkKiBuZXdDb250ZXh0LA0KICAgICAgICAgICAgICAgICAgICAgVUNvbnZlcnRl
clRvVUNhbGxiYWNrICpvbGRBY3Rpb24sDQogICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
Kiogb2xkQ29udGV4dCwNCiAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKiBlcnIpOw0K
IyA3MTEgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAiQyIgdm9pZA0KdWNudl9z
ZXRGcm9tVUNhbGxCYWNrXzJfMiAoVUNvbnZlcnRlciAqIGNvbnZlcnRlciwNCiAgICAgICAgICAg
ICAgICAgICAgICAgVUNvbnZlcnRlckZyb21VQ2FsbGJhY2sgbmV3QWN0aW9uLA0KICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpuZXdDb250ZXh0LA0KICAgICAgICAgICAgICAgICAg
ICAgICBVQ29udmVydGVyRnJvbVVDYWxsYmFjayAqb2xkQWN0aW9uLA0KICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICoqb2xkQ29udGV4dCwNCiAgICAgICAgICAgICAgICAgICAgICAg
VUVycm9yQ29kZSAqIGVycik7DQojIDc3MSAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0
ZXJuICJDIiB2b2lkDQp1Y252X2Zyb21Vbmljb2RlXzJfMiAoVUNvbnZlcnRlciAqIGNvbnZlcnRl
ciwNCiAgICAgICAgICAgICAgICAgIGNoYXIgKip0YXJnZXQsDQogICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICp0YXJnZXRMaW1pdCwNCiAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICoq
IHNvdXJjZSwNCiAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICogc291cmNlTGltaXQsDQog
ICAgICAgICAgICAgICAgICBpbnQzMl90KiBvZmZzZXRzLA0KICAgICAgICAgICAgICAgICAgVUJv
b2wgZmx1c2gsDQogICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICogZXJyKTsNCiMgODM0ICIu
Li9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRlcm4gIkMiIHZvaWQNCnVjbnZfdG9Vbmljb2Rl
XzJfMiAoVUNvbnZlcnRlciAqIGNvbnZlcnRlciwNCiAgICAgICAgICAgICAgICBVQ2hhciAqKiB0
YXJnZXQsDQogICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKiB0YXJnZXRMaW1pdCwNCiAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICoqc291cmNlLA0KICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKnNvdXJjZUxpbWl0LA0KICAgICAgICAgICAgICAgIGludDMyX3QqIG9mZnNldHMsDQogICAg
ICAgICAgICAgICAgVUJvb2wgZmx1c2gsDQogICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqIGVy
cik7DQojIDg3MSAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiBpbnQzMl90
DQp1Y252X2Zyb21VQ2hhcnNfMl8yKFVDb252ZXJ0ZXIgKmNudiwNCiAgICAgICAgICAgICAgICBj
aGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwNCiAgICAgICAgICAgICAgICBjb25zdCBV
Q2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwNCiAgICAgICAgICAgICAgICBVRXJyb3JDb2Rl
ICpwRXJyb3JDb2RlKTsNCiMgOTA0ICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRlcm4g
IkMiIGludDMyX3QNCnVjbnZfdG9VQ2hhcnNfMl8yKFVDb252ZXJ0ZXIgKmNudiwNCiAgICAgICAg
ICAgICAgVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LA0KICAgICAgICAgICAgICBj
b25zdCBjaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgICBVRXJyb3JD
b2RlICpwRXJyb3JDb2RlKTsNCiMgOTUyICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRl
cm4gIkMiIFVDaGFyMzINCnVjbnZfZ2V0TmV4dFVDaGFyXzJfMiAoVUNvbnZlcnRlciAqIGNvbnZl
cnRlciwNCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqc291cmNlLA0KICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKiBzb3VyY2VMaW1pdCwNCiAgICAgICAgICAgICAgICAgICBV
RXJyb3JDb2RlICogZXJyKTsNCiMgOTgxICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRl
cm4gIkMiIGludDMyX3QNCnVjbnZfY29udmVydF8yXzIgKGNvbnN0IGNoYXIgKnRvQ29udmVydGVy
TmFtZSwNCiAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbUNvbnZlcnRlck5hbWUsDQogICAg
ICAgICAgICAgIGNoYXIgKnRhcmdldCwNCiAgICAgICAgICAgICAgaW50MzJfdCB0YXJnZXRDYXBh
Y2l0eSwNCiAgICAgICAgICAgICAgY29uc3QgY2hhciAqc291cmNlLA0KICAgICAgICAgICAgICBp
bnQzMl90IHNvdXJjZUxlbmd0aCwNCiAgICAgICAgICAgICAgVUVycm9yQ29kZSAqIGVycik7DQoj
IDk5NyAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1Y252
X2ZsdXNoQ2FjaGVfMl8yICh2b2lkKTsNCiMgMTAwOCAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5o
Ig0KZXh0ZXJuICJDIiBpbnQzMl90DQp1Y252X2NvdW50QXZhaWxhYmxlXzJfMiAodm9pZCk7DQoj
IDEwMTkgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAiQyIgY29uc3QgY2hhcioN
CnVjbnZfZ2V0QXZhaWxhYmxlTmFtZV8yXzIgKGludDMyX3Qgbik7DQojIDEwMzIgIi4uL2NvbW1v
bi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAiQyIgdWludDE2X3QNCnVjbnZfY291bnRBbGlhc2Vz
XzJfMihjb25zdCBjaGFyICphbGlhcywgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQojIDEwNDcg
Ii4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAiQyIgY29uc3QgY2hhciAqDQp1Y252
X2dldEFsaWFzXzJfMihjb25zdCBjaGFyICphbGlhcywgdWludDE2X3QgbiwgVUVycm9yQ29kZSAq
cEVycm9yQ29kZSk7DQojIDEwNjMgIi4uL2NvbW1vbi91bmljb2RlL3VjbnYuaCINCmV4dGVybiAi
QyIgdm9pZA0KdWNudl9nZXRBbGlhc2VzXzJfMihjb25zdCBjaGFyICphbGlhcywgY29uc3QgY2hh
ciAqKmFsaWFzZXMsIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOw0KIyAxMDg5ICIuLi9jb21tb24v
dW5pY29kZS91Y252LmgiDQpleHRlcm4gIkMiIFVFbnVtZXJhdGlvbiAqDQp1Y252X29wZW5TdGFu
ZGFyZE5hbWVzXzJfMihjb25zdCBjaGFyICpjb252TmFtZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqc3RhbmRhcmQsDQogICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNv
ZGUgKnBFcnJvckNvZGUpOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHVpbnQxNl90DQp1Y252
X2NvdW50U3RhbmRhcmRzXzJfMih2b2lkKTsNCiMgMTExMCAiLi4vY29tbW9uL3VuaWNvZGUvdWNu
di5oIg0KZXh0ZXJuICJDIiBjb25zdCBjaGFyICoNCnVjbnZfZ2V0U3RhbmRhcmRfMl8yKHVpbnQx
Nl90IG4sIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOw0KIyAxMTI0ICIuLi9jb21tb24vdW5pY29k
ZS91Y252LmgiDQpleHRlcm4gIkMiIGNvbnN0IGNoYXIgKg0KdWNudl9nZXRTdGFuZGFyZE5hbWVf
Ml8yKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnN0YW5kYXJkLCBVRXJyb3JDb2RlICpw
RXJyb3JDb2RlKTsNCiMgMTEzNyAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJD
IiBjb25zdCBjaGFyICoNCnVjbnZfZ2V0RGVmYXVsdE5hbWVfMl8yICh2b2lkKTsNCiMgMTE0OCAi
Li4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1Y252X3NldERlZmF1
bHROYW1lXzJfMiAoY29uc3QgY2hhciAqbmFtZSk7DQojIDExNjggIi4uL2NvbW1vbi91bmljb2Rl
L3VjbnYuaCINCmV4dGVybiAiQyIgdm9pZA0KdWNudl9maXhGaWxlU2VwYXJhdG9yXzJfMihjb25z
dCBVQ29udmVydGVyICpjbnYsIFVDaGFyKiBzb3VyY2UsIGludDMyX3Qgc291cmNlTGVuKTsNCiMg
MTE3OSAiLi4vY29tbW9uL3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiBVQm9vbA0KdWNudl9p
c0FtYmlndW91c18yXzIoY29uc3QgVUNvbnZlcnRlciAqY252KTsNCiMgMTE4OSAiLi4vY29tbW9u
L3VuaWNvZGUvdWNudi5oIg0KZXh0ZXJuICJDIiB2b2lkDQp1Y252X3NldEZhbGxiYWNrXzJfMihV
Q29udmVydGVyICpjbnYsIFVCb29sIHVzZXNGYWxsYmFjayk7DQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgVUJvb2wNCnVjbnZfdXNlc0ZhbGxiYWNrXzJfMihjb25zdCBVQ29udmVydGVyICpjbnYp
Ow0KIyAxMjM1ICIuLi9jb21tb24vdW5pY29kZS91Y252LmgiDQpleHRlcm4gIkMiIGNvbnN0IGNo
YXIqDQp1Y252X2RldGVjdFVuaWNvZGVTaWduYXR1cmVfMl8yKCBjb25zdCBjaGFyKiBzb3VyY2Us
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc291cmNlTGVuZ3RoLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBzaWduYXR1cmVMZW5ndGgsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIHBFcnJvckNvZGUpOw0KIyAyMCAi
Li4vY29tbW9uL3VzdHJfaW1wLmgiIDINCg0KDQoNCg0KDQogICAgdHlwZWRlZiB2b2lkICpVQnJl
YWtJdGVyYXRvcjsNCiMgNTEgIi4uL2NvbW1vbi91c3RyX2ltcC5oIg0KZXh0ZXJuICJDIiBpbnQz
Ml90DQp1cHJ2X3N0ckNvbXBhcmVfMl8yKGNvbnN0IFVDaGFyICpzMSwgaW50MzJfdCBsZW5ndGgx
LA0KICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzMiwgaW50MzJfdCBsZW5ndGgyLA0KICAg
ICAgICAgICAgICAgIFVCb29sIHN0cm5jbXBTdHlsZSwgVUJvb2wgY29kZVBvaW50T3JkZXIpOw0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIFVCb29sDQp1cHJ2X2hhdmVQcm9wZXJ0aWVzXzJfMih2
b2lkKTsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgVUJvb2wNClVHcm93QnVmZmVyKHZvaWQgKmNvbnRl
eHQsDQogICAgICAgICAgICBVQ2hhciAqKnBCdWZmZXIsDQogICAgICAgICAgICBpbnQzMl90ICpw
Q2FwYWNpdHksDQogICAgICAgICAgICBpbnQzMl90IHJlcUNhcGFjaXR5LA0KICAgICAgICAgICAg
aW50MzJfdCBsZW5ndGgpOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIFVCb29sDQp1X2dyb3dC
dWZmZXJGcm9tU3RhdGljXzJfMih2b2lkICpjb250ZXh0LA0KICAgICAgICAgICAgICAgICAgICAg
ICBVQ2hhciAqKnBCdWZmZXIsIGludDMyX3QgKnBDYXBhY2l0eSwgaW50MzJfdCByZXFDYXBhY2l0
eSwNCiAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpOw0KIyA5NiAiLi4vY29t
bW9uL3VzdHJfaW1wLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVfaW50ZXJuYWxTdHJUb0xvd2Vy
XzJfMihVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwNCiAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3Qgc3JjU3RhcnQsIGludDMyX3Qgc3JjTGltaXQsDQogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpsb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICBVRXJyb3JD
b2RlICpwRXJyb3JDb2RlKTsNCg0KDQoNCg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1X2ludGVybmFs
U3RyVG9VcHBlcl8yXzIoVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LA0KICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgsDQogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsb2NhbGUsDQogICAgICAgICAgICAgICAgICAg
ICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCg0KDQoNCg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1
X2ludGVybmFsU3RyVG9UaXRsZV8yXzIoVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5
LA0KICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5n
dGgsDQogICAgICAgICAgICAgICAgICAgICBVQnJlYWtJdGVyYXRvciAqdGl0bGVJdGVyLA0KICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbG9jYWxlLA0KICAgICAgICAgICAgICAgICAg
ICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBpbnQzMl90
DQp1X2ludGVybmFsU3RyRm9sZENhc2VfMl8yKFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBh
Y2l0eSwNCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IHNy
Y0xlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zLA0KICAgICAg
ICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOw0KIyAxNDEgIi4uL2NvbW1v
bi91c3RyX2ltcC5oIg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1X2ludGVybmFsVG9Mb3dlcl8yXzIo
VUNoYXIzMiBjLCBVQ2hhckl0ZXJhdG9yICppdGVyLA0KICAgICAgICAgICAgICAgICAgVUNoYXIg
KmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LA0KICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqbG9jYWxlKTsNCiMgMTU1ICIuLi9jb21tb24vdXN0cl9pbXAuaCINCmV4dGVybiAiQyIgaW50
MzJfdA0KdV9pbnRlcm5hbFRvVXBwZXJfMl8yKFVDaGFyMzIgYywgVUNoYXJJdGVyYXRvciAqaXRl
ciwNCiAgICAgICAgICAgICAgICAgIFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwN
CiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxvY2FsZSk7DQojIDE2OSAiLi4vY29tbW9u
L3VzdHJfaW1wLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVfaW50ZXJuYWxUb1RpdGxlXzJfMihV
Q2hhcjMyIGMsIFVDaGFySXRlcmF0b3IgKml0ZXIsDQogICAgICAgICAgICAgICAgICBVQ2hhciAq
ZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpsb2NhbGUpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1X2ludGVybmFsRm9s
ZENhc2VfMl8yKFVDaGFyMzIgYywNCiAgICAgICAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50
MzJfdCBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucyk7
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgVUNvbnZlcnRlcioNCnVfZ2V0RGVmYXVsdENvbnZl
cnRlcl8yXzIoVUVycm9yQ29kZSAqc3RhdHVzKTsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgdm9p
ZA0KdV9yZWxlYXNlRGVmYXVsdENvbnZlcnRlcl8yXzIoVUNvbnZlcnRlciAqY29udmVydGVyKTsN
CiMgMjE0ICIuLi9jb21tb24vdXN0cl9pbXAuaCINCmV4dGVybiAiQyIgaW50MzJfdA0KdV90ZXJt
aW5hdGVVQ2hhcnNfMl8yKFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwgaW50MzJf
dCBsZW5ndGgsIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
aW50MzJfdA0KdV90ZXJtaW5hdGVDaGFyc18yXzIoY2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2Fw
YWNpdHksIGludDMyX3QgbGVuZ3RoLCBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGludDMyX3QNCnVfdGVybWluYXRlVUNoYXIzMnNfMl8yKFVDaGFyMzIgKmRl
c3QsIGludDMyX3QgZGVzdENhcGFjaXR5LCBpbnQzMl90IGxlbmd0aCwgVUVycm9yQ29kZSAqcEVy
cm9yQ29kZSk7DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1X3Rlcm1pbmF0ZVdDaGFy
c18yXzIod2NoYXJfdCAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksIGludDMyX3QgbGVuZ3Ro
LCBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCiMgMjQ1ICIuLi9jb21tb24vdXN0cl9pbXAuaCIN
CmV4dGVybiAiQyIgY29uc3QgVUNoYXIgKg0KdXBydl9zdHJGaW5kU3Vycm9nYXRlXzJfMihjb25z
dCBVQ2hhciAqcywgaW50MzJfdCBsZW5ndGgsIFVDaGFyIHN1cnJvZ2F0ZSk7DQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IFVDaGFyICoNCnVwcnZfc3RyRmluZExhc3RTdXJyb2dhdGVfMl8y
KGNvbnN0IFVDaGFyICpzLCBpbnQzMl90IGxlbmd0aCwgVUNoYXIgc3Vycm9nYXRlKTsNCiMgMjYg
Ii4uL2NvbW1vbi91bm9ybWltcC5oIiAyDQojIDM0ICIuLi9jb21tb24vdW5vcm1pbXAuaCINCmVu
dW0gew0KDQogICAgX05PUk1fUUNfTkZDPTB4MTEsDQogICAgX05PUk1fUUNfTkZLQz0weDIyLA0K
ICAgIF9OT1JNX1FDX05GRD00LA0KICAgIF9OT1JNX1FDX05GS0Q9OCwNCg0KICAgIF9OT1JNX1FD
X0FOWV9OTz0weGYsDQoNCg0KICAgIF9OT1JNX1FDX01BWUJFPTB4MTAsDQogICAgX05PUk1fUUNf
QU5ZX01BWUJFPTB4MzAsDQoNCiAgICBfTk9STV9RQ19NQVNLPTB4M2YsDQoNCiAgICBfTk9STV9D
T01CSU5FU19GV0Q9MHg0MCwNCiAgICBfTk9STV9DT01CSU5FU19CQUNLPTB4ODAsDQogICAgX05P
Uk1fQ09NQklORVNfQU5ZPTB4YzAsDQoNCiAgICBfTk9STV9DQ19TSElGVD04LA0KICAgIF9OT1JN
X0NDX01BU0s9MHhmZjAwLA0KDQogICAgX05PUk1fRVhUUkFfU0hJRlQ9MTYsDQogICAgX05PUk1f
RVhUUkFfSU5ERVhfVE9QPTB4ZmMwMCwNCg0KICAgIF9OT1JNX0VYVFJBX1NVUlJPR0FURV9NQVNL
PTB4M2ZmLA0KICAgIF9OT1JNX0VYVFJBX1NVUlJPR0FURV9UT1A9MHgzZjAsDQoNCiAgICBfTk9S
TV9FWFRSQV9IQU5HVUw9X05PUk1fRVhUUkFfU1VSUk9HQVRFX1RPUCwNCiAgICBfTk9STV9FWFRS
QV9KQU1PX0wsDQogICAgX05PUk1fRVhUUkFfSkFNT19WLA0KICAgIF9OT1JNX0VYVFJBX0pBTU9f
VA0KfTsNCiMgNzYgIi4uL2NvbW1vbi91bm9ybWltcC5oIg0KZW51bSB7DQogICAgX05PUk1fQVVY
X0NPTVBfRVhfU0hJRlQ9MTAsDQogICAgX05PUk1fQVVYX1VOU0FGRV9TSElGVD0xMQ0KfTsNCiMg
ODggIi4uL2NvbW1vbi91bm9ybWltcC5oIg0KZW51bSB7DQogICAgX05PUk1fU0VUX0lOREVYX0NB
Tk9OX1NFVFNfTEVOR1RILA0KICAgIF9OT1JNX1NFVF9JTkRFWF9DQU5PTl9CTVBfVEFCTEVfTEVO
R1RILA0KICAgIF9OT1JNX1NFVF9JTkRFWF9DQU5PTl9TVVBQX1RBQkxFX0xFTkdUSCwNCg0KICAg
IF9OT1JNX1NFVF9JTkRFWF9UT1A9MzINCn07DQojIDEwNiAiLi4vY29tbW9uL3Vub3JtaW1wLmgi
DQplbnVtIHsNCiAgICBfTk9STV9JTkRFWF9UUklFX1NJWkUsDQogICAgX05PUk1fSU5ERVhfVUNI
QVJfQ09VTlQsDQoNCiAgICBfTk9STV9JTkRFWF9DT01CSU5FX0RBVEFfQ09VTlQsDQogICAgX05P
Uk1fSU5ERVhfQ09NQklORV9GV0RfQ09VTlQsDQogICAgX05PUk1fSU5ERVhfQ09NQklORV9CT1RI
X0NPVU5ULA0KICAgIF9OT1JNX0lOREVYX0NPTUJJTkVfQkFDS19DT1VOVCwNCg0KICAgIF9OT1JN
X0lOREVYX01JTl9ORkNfTk9fTUFZQkUsDQogICAgX05PUk1fSU5ERVhfTUlOX05GS0NfTk9fTUFZ
QkUsDQogICAgX05PUk1fSU5ERVhfTUlOX05GRF9OT19NQVlCRSwNCiAgICBfTk9STV9JTkRFWF9N
SU5fTkZLRF9OT19NQVlCRSwNCg0KICAgIF9OT1JNX0lOREVYX0ZDRF9UUklFX1NJWkUsDQoNCiAg
ICBfTk9STV9JTkRFWF9BVVhfVFJJRV9TSVpFLA0KICAgIF9OT1JNX0lOREVYX0NBTk9OX1NFVF9D
T1VOVCwNCg0KICAgIF9OT1JNX0lOREVYX1RPUD0zMg0KfTsNCg0KZW51bSB7DQoNCiAgICBfTk9S
TV9NSU5fV0lUSF9MRUFEX0NDPTB4MzAwDQp9Ow0KDQplbnVtIHsNCg0KDQoNCg0KDQoNCg0KICAg
IF9OT1JNX0RFQ09NUF9GTEFHX0xFTkdUSF9IQVNfQ0M9MHg4MCwNCg0KDQoNCiAgICBfTk9STV9E
RUNPTVBfTEVOR1RIX01BU0s9MHg3Zg0KfTsNCiMgMTYwICIuLi9jb21tb24vdW5vcm1pbXAuaCIN
CmV4dGVybiAiQyIgVUJvb2wNCnVub3JtX2hhdmVEYXRhXzJfMihVRXJyb3JDb2RlICpwRXJyb3JD
b2RlKTsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgaW50MzJfdA0KdW5vcm1faW50ZXJuYWxOb3Jt
YWxpemVfMl8yKFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsIFVCb29sIGlnbm9yZUhh
bmd1bCwNCiAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOw0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgaW50MzJfdA0KdW5vcm1fZGVjb21wb3NlXzJfMihVQ2hhciAq
ZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgICAgICAgY29uc3QgVUNoYXIg
KnNyYywgaW50MzJfdCBzcmNMZW5ndGgsDQogICAgICAgICAgICAgICAgVUJvb2wgY29tcGF0LCBV
Qm9vbCBpZ25vcmVIYW5ndWwsDQogICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29k
ZSk7DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBpbnQzMl90DQp1bm9ybV9jb21wb3NlXzJfMihVQ2hh
ciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgICAgIGNvbnN0IFVDaGFy
ICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgICBVQm9vbCBjb21wYXQsIFVC
b29sIGlnbm9yZUhhbmd1bCwNCiAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7
DQojIDIxNSAiLi4vY29tbW9uL3Vub3JtaW1wLmgiDQpleHRlcm4gIkMiIGludDMyX3QNCnVub3Jt
X2NtcEVxdWl2Rm9sZF8yXzIoY29uc3QgVUNoYXIgKnMxLCBpbnQzMl90IGxlbmd0aDEsDQogICAg
ICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90IGxlbmd0aDIsDQogICAgICAg
ICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucywNCiAgICAgICAgICAgICAgICAgICBVRXJyb3JD
b2RlICpwRXJyb3JDb2RlKTsNCiMgMjI5ICIuLi9jb21tb24vdW5vcm1pbXAuaCINCmV4dGVybiAi
QyIgY29uc3QgdWludDE2X3QgKg0KdW5vcm1fZ2V0RkNEVHJpZV8yXzIoVUVycm9yQ29kZSAqcEVy
cm9yQ29kZSk7DQoNCg0KDQpuYW1lc3BhY2UgaWN1XzJfMiB7DQojIDI0OCAiLi4vY29tbW9uL3Vu
b3JtaW1wLmgiDQppbmxpbmUgdWludDE2X3QNCnVub3JtX2dldEZDRDE2KGNvbnN0IHVpbnQxNl90
ICpmY2RUcmllSW5kZXgsIFVDaGFyIGMpIHsNCiAgICByZXR1cm4NCiAgICAgICAgZmNkVHJpZUlu
ZGV4Ww0KICAgICAgICAgICAgKGZjZFRyaWVJbmRleFsNCiAgICAgICAgICAgICAgICBjPj5VVFJJ
RV9TSElGVA0KICAgICAgICAgICAgXTw8VVRSSUVfSU5ERVhfU0hJRlQpKw0KICAgICAgICAgICAg
KGMmVVRSSUVfTUFTSykNCiAgICAgICAgXTsNCn0NCiMgMjcwICIuLi9jb21tb24vdW5vcm1pbXAu
aCINCmlubGluZSB1aW50MTZfdA0KdW5vcm1fZ2V0RkNEMTZGcm9tU3Vycm9nYXRlUGFpcihjb25z
dCB1aW50MTZfdCAqZmNkVHJpZUluZGV4LCB1aW50MTZfdCBmY2QxNiwgVUNoYXIgYzIpIHsNCiAg
ICByZXR1cm4NCiAgICAgICAgZmNkVHJpZUluZGV4Ww0KICAgICAgICAgICAgKGZjZFRyaWVJbmRl
eFsNCiAgICAgICAgICAgICAgICAoaW50MzJfdClmY2QxNisoKGMyJjB4M2ZmKT4+VVRSSUVfU0hJ
RlQpDQogICAgICAgICAgICBdPDxVVFJJRV9JTkRFWF9TSElGVCkrDQogICAgICAgICAgICAoYzIm
VVRSSUVfTUFTSykNCiAgICAgICAgXTsNCn0NCg0KfQ0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IGludDMyX3QNCnVub3JtX2dldERlY29tcG9zaXRpb25fMl8yKFVDaGFyMzIgYywgVUJvb2wgY29t
cGF0LA0KICAgICAgICAgICAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2Fw
YWNpdHkpOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgVUJvb2wNCnVub3JtX2ludGVybmFsSXNGdWxs
Q29tcG9zaXRpb25FeGNsdXNpb25fMl8yKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBVQm9vbA0KdW5vcm1faXNDYW5vblNhZmVTdGFydF8yXzIoVUNoYXIzMiBjKTsNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIFVCb29sDQp1bm9ybV9nZXRDYW5vblN0YXJ0U2V0XzJfMihVQ2hhcjMyIGMs
IFVTZXJpYWxpemVkU2V0ICpmaWxsU2V0KTsNCiMgMzAgInVjb2xfZWxtLmNwcCIgMg0KIyAxICJj
YW5pdGVyLmgiIDENCiMgMTQgImNhbml0ZXIuaCINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvdW5p
c2V0LmgiIDENCiMgMTMgIi4uL2NvbW1vbi91bmljb2RlL3VuaXNldC5oIg0KIyAxICIuLi9jb21t
b24vdW5pY29kZS91bmlmaWx0LmgiIDENCiMgMTEgIi4uL2NvbW1vbi91bmljb2RlL3VuaWZpbHQu
aCINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pZnVuY3QuaCIgMQ0KIyAxNiAiLi4vY29tbW9u
L3VuaWNvZGUvdW5pZnVuY3QuaCINCm5hbWVzcGFjZSBpY3VfMl8yIHsNCg0KY2xhc3MgVW5pY29k
ZU1hdGNoZXI7DQpjbGFzcyBVbmljb2RlUmVwbGFjZXI7DQpjbGFzcyBUcmFuc2xpdGVyYXRpb25S
dWxlRGF0YTsNCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIFVu
aWNvZGVGdW5jdG9yIDogcHVibGljIFVPYmplY3Qgew0KDQogcHVibGljOg0KDQoNCg0KDQogICAg
dmlydHVhbCB+VW5pY29kZUZ1bmN0b3IoKTsNCg0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIFVuaWNv
ZGVGdW5jdG9yKiBjbG9uZSgpIGNvbnN0ID0gMDsNCiMgNTIgIi4uL2NvbW1vbi91bmljb2RlL3Vu
aWZ1bmN0LmgiDQogICAgdmlydHVhbCBVbmljb2RlTWF0Y2hlciogdG9NYXRjaGVyKCkgY29uc3Q7
DQojIDYzICIuLi9jb21tb24vdW5pY29kZS91bmlmdW5jdC5oIg0KICAgIHZpcnR1YWwgVW5pY29k
ZVJlcGxhY2VyKiB0b1JlcGxhY2VyKCkgY29uc3Q7DQojIDc2ICIuLi9jb21tb24vdW5pY29kZS91
bmlmdW5jdC5oIg0KICAgIHN0YXRpYyBVQ2xhc3NJRCBnZXRTdGF0aWNDbGFzc0lEKHZvaWQpIHsg
cmV0dXJuIChVQ2xhc3NJRCkmZmdDbGFzc0lEOyB9DQojIDEwMCAiLi4vY29tbW9uL3VuaWNvZGUv
dW5pZnVuY3QuaCINCiAgICB2aXJ0dWFsIFVDbGFzc0lEIGdldER5bmFtaWNDbGFzc0lEKHZvaWQp
IGNvbnN0IHsgcmV0dXJuIGdldFN0YXRpY0NsYXNzSUQoKTsgfTsNCiMgMTEwICIuLi9jb21tb24v
dW5pY29kZS91bmlmdW5jdC5oIg0KICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKGNvbnN0IFRyYW5z
bGl0ZXJhdGlvblJ1bGVEYXRhKikgPSAwOw0KDQogcHJvdGVjdGVkOg0KDQogICAgVW5pY29kZUZ1
bmN0b3IoKTsNCg0KIHByaXZhdGU6DQoNCg0KDQoNCg0KICAgIHN0YXRpYyBjb25zdCBjaGFyIGZn
Q2xhc3NJRDsNCn07DQoNCmlubGluZSBVbmljb2RlRnVuY3Rvcjo6VW5pY29kZUZ1bmN0b3IoKSB7
fQ0KaW5saW5lIFVuaWNvZGVGdW5jdG9yOjp+VW5pY29kZUZ1bmN0b3IoKSB7fQ0KDQp9DQojIDEy
ICIuLi9jb21tb24vdW5pY29kZS91bmlmaWx0LmgiIDINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUv
dW5pbWF0Y2guaCIgMQ0KIyAxMyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pbWF0Y2guaCINCm5hbWVz
cGFjZSBpY3VfMl8yIHsNCg0KY2xhc3MgUmVwbGFjZWFibGU7DQpjbGFzcyBVbmljb2RlU3RyaW5n
Ow0KY2xhc3MgVW5pY29kZVNldDsNCg0KDQoNCg0KDQplbnVtIFVNYXRjaERlZ3JlZSB7DQoNCg0K
DQoNCg0KDQogICAgVV9NSVNNQVRDSCwNCiMgNDEgIi4uL2NvbW1vbi91bmljb2RlL3VuaW1hdGNo
LmgiDQogICAgVV9QQVJUSUFMX01BVENILA0KIyA1MCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pbWF0
Y2guaCINCiAgICBVX01BVENIDQp9Ow0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIFVuaWNvZGVNYXRjaGVyIHsNCg0KcHVibGljOg0KIyAxMDYgIi4uL2NvbW1vbi91
bmljb2RlL3VuaW1hdGNoLmgiDQogICAgdmlydHVhbCBVTWF0Y2hEZWdyZWUgbWF0Y2hlcyhjb25z
dCBSZXBsYWNlYWJsZSYgdGV4dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDMyX3QmIG9mZnNldCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
bGltaXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBpbmNyZW1lbnRh
bCkgPSAwOw0KIyAxMjIgIi4uL2NvbW1vbi91bmljb2RlL3VuaW1hdGNoLmgiDQogICAgdmlydHVh
bCBVbmljb2RlU3RyaW5nJiB0b1BhdHRlcm4oVW5pY29kZVN0cmluZyYgcmVzdWx0LA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sIGVzY2FwZVVucHJpbnRhYmxlID0g
MCkgY29uc3QgPSAwOw0KDQoNCg0KDQoNCg0KDQogICAgdmlydHVhbCBVQm9vbCBtYXRjaGVzSW5k
ZXhWYWx1ZSh1aW50OF90IHYpIGNvbnN0ID0gMDsNCg0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIHZv
aWQgYWRkTWF0Y2hTZXRUbyhVbmljb2RlU2V0JiB0b1VuaW9uVG8pIGNvbnN0ID0gMDsNCn07DQoN
Cn0NCiMgMTMgIi4uL2NvbW1vbi91bmljb2RlL3VuaWZpbHQuaCIgMg0KDQpuYW1lc3BhY2UgaWN1
XzJfMiB7DQojIDUwICIuLi9jb21tb24vdW5pY29kZS91bmlmaWx0LmgiDQpjbGFzcyBfX2F0dHJp
YnV0ZV9fKChkbGxpbXBvcnQpKSBVbmljb2RlRmlsdGVyIDogcHVibGljIFVuaWNvZGVGdW5jdG9y
LCBwdWJsaWMgVW5pY29kZU1hdGNoZXIgew0KDQpwdWJsaWM6DQoNCg0KDQoNCiAgICB2aXJ0dWFs
IH5Vbmljb2RlRmlsdGVyKCk7DQojIDY2ICIuLi9jb21tb24vdW5pY29kZS91bmlmaWx0LmgiDQog
ICAgdmlydHVhbCBVQm9vbCBjb250YWlucyhVQ2hhcjMyIGMpIGNvbnN0ID0gMDsNCg0KDQoNCg0K
DQogICAgdmlydHVhbCBVbmljb2RlTWF0Y2hlciogdG9NYXRjaGVyKCkgY29uc3Q7DQoNCg0KDQoN
CiAgICBVbmljb2RlU3RyaW5nJiB0b1BhdHRlcm4oVW5pY29kZVN0cmluZyYgcmVzdWx0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBlc2NhcGVVbnByaW50YWJsZSkgY29uc3Q7
DQoNCg0KDQoNCiAgICBVQm9vbCBtYXRjaGVzSW5kZXhWYWx1ZSh1aW50OF90IHYpIGNvbnN0Ow0K
DQoNCg0KDQogICAgdmlydHVhbCBVTWF0Y2hEZWdyZWUgbWF0Y2hlcyhjb25zdCBSZXBsYWNlYWJs
ZSYgdGV4dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QmIG9mZnNl
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGltaXQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBpbmNyZW1lbnRhbCk7DQoNCg0KDQoN
CiAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShjb25zdCBUcmFuc2xpdGVyYXRpb25SdWxlRGF0YSop
IHt9DQoNCg0KDQoNCg0KDQogICAgdmlydHVhbCBpbmxpbmUgVUNsYXNzSUQgZ2V0RHluYW1pY0Ns
YXNzSUQoKSBjb25zdCB7IHJldHVybiBnZXRTdGF0aWNDbGFzc0lEKCk7IH0NCg0KDQoNCg0KDQoN
CiAgICBzdGF0aWMgaW5saW5lIFVDbGFzc0lEIGdldFN0YXRpY0NsYXNzSUQoKSB7IHJldHVybiAo
VUNsYXNzSUQpJmZnQ2xhc3NJRDsgfQ0KDQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBhZGRN
YXRjaFNldFRvKFVuaWNvZGVTZXQmIHRvVW5pb25UbykgY29uc3Q7DQoNCnByb3RlY3RlZDoNCg0K
ICAgIFVuaWNvZGVGaWx0ZXIoKTsNCg0KcHJpdmF0ZToNCg0KDQoNCg0KDQogICAgc3RhdGljIGNv
bnN0IGNoYXIgZmdDbGFzc0lEOw0KfTsNCg0KaW5saW5lIFVuaWNvZGVGaWx0ZXI6OlVuaWNvZGVG
aWx0ZXIoKSB7fQ0KaW5saW5lIFVuaWNvZGVGaWx0ZXI6On5Vbmljb2RlRmlsdGVyKCkge30NCg0K
fQ0KIyAxNCAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc2V0LmgiIDINCg0KDQoNCm5hbWVzcGFjZSBp
Y3VfMl8yIHsNCg0KY2xhc3MgUGFyc2VQb3NpdGlvbjsNCmNsYXNzIFN5bWJvbFRhYmxlOw0KY2xh
c3MgVHJhbnNsaXRlcmF0aW9uUnVsZVBhcnNlcjsNCmNsYXNzIFRyYW5zbGl0ZXJhdGlvblJ1bGU7
DQpjbGFzcyBUcmFuc2xpdGVyYXRvcjsNCmNsYXNzIFRyYW5zbGl0ZXJhdG9yUGFyc2VyOw0KY2xh
c3MgVVZlY3RvcjsNCiMgMjE5ICIuLi9jb21tb24vdW5pY29kZS91bmlzZXQuaCINCmNsYXNzIF9f
YXR0cmlidXRlX18oKGRsbGltcG9ydCkpIFVuaWNvZGVTZXQgOiBwdWJsaWMgVW5pY29kZUZpbHRl
ciB7DQoNCiAgICBpbnQzMl90IGxlbjsNCiAgICBpbnQzMl90IGNhcGFjaXR5Ow0KICAgIGludDMy
X3QgYnVmZmVyQ2FwYWNpdHk7DQogICAgVUNoYXIzMiogbGlzdDsNCiAgICBVQ2hhcjMyKiBidWZm
ZXI7DQoNCiAgICBVVmVjdG9yKiBzdHJpbmdzOw0KIyAyMzggIi4uL2NvbW1vbi91bmljb2RlL3Vu
aXNldC5oIg0KICAgIFVuaWNvZGVTdHJpbmcgcGF0Ow0KDQpwdWJsaWM6DQoNCg0KDQoNCiAgICBz
dGF0aWMgY29uc3QgVUNoYXIzMiBNSU5fVkFMVUU7DQoNCg0KDQoNCiAgICBzdGF0aWMgY29uc3Qg
VUNoYXIzMiBNQVhfVkFMVUU7DQoNCg0KDQoNCg0KcHVibGljOg0KDQoNCg0KDQoNCiAgICBVbmlj
b2RlU2V0KCk7DQojIDI3MSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc2V0LmgiDQogICAgVW5pY29k
ZVNldChVQ2hhcjMyIHN0YXJ0LCBVQ2hhcjMyIGVuZCk7DQojIDI4MSAiLi4vY29tbW9uL3VuaWNv
ZGUvdW5pc2V0LmgiDQogICAgVW5pY29kZVNldChjb25zdCBVbmljb2RlU3RyaW5nJiBwYXR0ZXJu
LA0KICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKTsNCg0KDQoNCg0KDQoNCg0KICAg
IFVuaWNvZGVTZXQoaW50OF90IGNhdGVnb3J5LCBVRXJyb3JDb2RlJiBzdGF0dXMpOw0KDQoNCg0K
DQoNCiAgICBVbmljb2RlU2V0KGNvbnN0IFVuaWNvZGVTZXQmIG8pOw0KDQoNCg0KDQoNCiAgICB2
aXJ0dWFsIH5Vbmljb2RlU2V0KCk7DQoNCg0KDQoNCg0KICAgIFVuaWNvZGVTZXQmIG9wZXJhdG9y
PShjb25zdCBVbmljb2RlU2V0JiBvKTsNCiMgMzIxICIuLi9jb21tb24vdW5pY29kZS91bmlzZXQu
aCINCiAgICB2aXJ0dWFsIFVCb29sIG9wZXJhdG9yPT0oY29uc3QgVW5pY29kZVNldCYgbykgY29u
c3Q7DQoNCg0KDQoNCg0KDQogICAgVUJvb2wgb3BlcmF0b3IhPShjb25zdCBVbmljb2RlU2V0JiBv
KSBjb25zdDsNCg0KDQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgVW5pY29kZUZ1bmN0b3IqIGNsb25l
KCkgY29uc3Q7DQojIDM0NSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc2V0LmgiDQogICAgdmlydHVh
bCBpbnQzMl90IGhhc2hDb2RlKHZvaWQpIGNvbnN0Ow0KIyAzNTkgIi4uL2NvbW1vbi91bmljb2Rl
L3VuaXNldC5oIg0KICAgIFVuaWNvZGVTZXQmIHNldChVQ2hhcjMyIHN0YXJ0LCBVQ2hhcjMyIGVu
ZCk7DQoNCg0KDQoNCg0KICAgIHN0YXRpYyBVQm9vbCByZXNlbWJsZXNQYXR0ZXJuKGNvbnN0IFVu
aWNvZGVTdHJpbmcmIHBhdHRlcm4sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBwb3MpOw0KIyAzNzcgIi4uL2NvbW1vbi91bmljb2RlL3VuaXNldC5oIg0KICAgIHZp
cnR1YWwgVW5pY29kZVNldCYgYXBwbHlQYXR0ZXJuKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBhdHRl
cm4sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3Rh
dHVzKTsNCiMgMzkyICIuLi9jb21tb24vdW5pY29kZS91bmlzZXQuaCINCiAgICB2aXJ0dWFsIFVu
aWNvZGVTdHJpbmcmIHRvUGF0dGVybihVbmljb2RlU3RyaW5nJiByZXN1bHQsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgZXNjYXBlVW5wcmludGFibGUgPSAwKSBj
b25zdDsNCiMgNDAyICIuLi9jb21tb24vdW5pY29kZS91bmlzZXQuaCINCiAgICB2aXJ0dWFsIGlu
dDMyX3Qgc2l6ZSh2b2lkKSBjb25zdDsNCg0KDQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgVUJvb2wg
aXNFbXB0eSh2b2lkKSBjb25zdDsNCg0KDQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgVUJvb2wgY29u
dGFpbnMoVUNoYXIzMiBjKSBjb25zdDsNCiMgNDI4ICIuLi9jb21tb24vdW5pY29kZS91bmlzZXQu
aCINCiAgICB2aXJ0dWFsIFVCb29sIGNvbnRhaW5zKFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgZW5k
KSBjb25zdDsNCg0KDQoNCg0KDQoNCg0KICAgIFVCb29sIGNvbnRhaW5zKGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHMpIGNvbnN0Ow0KDQoNCg0KDQoNCg0KDQogICAgdmlydHVhbCBVQm9vbCBjb250YWlu
c0FsbChjb25zdCBVbmljb2RlU2V0JiBjKSBjb25zdDsNCg0KDQoNCg0KDQoNCg0KICAgIFVCb29s
IGNvbnRhaW5zQWxsKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHMpIGNvbnN0Ow0KIyA0NjEgIi4uL2Nv
bW1vbi91bmljb2RlL3VuaXNldC5oIg0KICAgIFVCb29sIGNvbnRhaW5zTm9uZShVQ2hhcjMyIHN0
YXJ0LCBVQ2hhcjMyIGVuZCkgY29uc3Q7DQoNCg0KDQoNCg0KDQoNCiAgICBVQm9vbCBjb250YWlu
c05vbmUoY29uc3QgVW5pY29kZVNldCYgYykgY29uc3Q7DQoNCg0KDQoNCg0KDQoNCiAgICBVQm9v
bCBjb250YWluc05vbmUoY29uc3QgVW5pY29kZVN0cmluZyYgcykgY29uc3Q7DQojIDQ4NiAiLi4v
Y29tbW9uL3VuaWNvZGUvdW5pc2V0LmgiDQogICAgaW5saW5lIFVCb29sIGNvbnRhaW5zU29tZShV
Q2hhcjMyIHN0YXJ0LCBVQ2hhcjMyIGVuZCkgY29uc3Q7DQoNCg0KDQoNCg0KDQoNCiAgICBpbmxp
bmUgVUJvb2wgY29udGFpbnNTb21lKGNvbnN0IFVuaWNvZGVTZXQmIHMpIGNvbnN0Ow0KDQoNCg0K
DQoNCg0KDQogICAgaW5saW5lIFVCb29sIGNvbnRhaW5zU29tZShjb25zdCBVbmljb2RlU3RyaW5n
JiBzKSBjb25zdDsNCg0KDQoNCg0KICAgIFVNYXRjaERlZ3JlZSBtYXRjaGVzKGNvbnN0IFJlcGxh
Y2VhYmxlJiB0ZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QmIG9mZnNldCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgIFVCb29sIGluY3JlbWVudGFsKTsNCg0KIHByaXZhdGU6DQojIDUzNCAiLi4vY29t
bW9uL3VuaWNvZGUvdW5pc2V0LmgiDQogICAgc3RhdGljIGludDMyX3QgbWF0Y2hSZXN0KGNvbnN0
IFJlcGxhY2VhYmxlJiB0ZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IHN0YXJ0LCBpbnQzMl90IGxpbWl0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBVbmljb2RlU3RyaW5nJiBzKTsNCiMgNTQ3ICIuLi9jb21tb24vdW5pY29kZS91bmlzZXQuaCIN
CiAgICBpbnQzMl90IGZpbmRDb2RlUG9pbnQoVUNoYXIzMiBjKSBjb25zdDsNCg0KIHB1YmxpYzoN
Cg0KDQoNCg0KDQoNCg0KICAgIHZvaWQgYWRkTWF0Y2hTZXRUbyhVbmljb2RlU2V0JiB0b1VuaW9u
VG8pIGNvbnN0Ow0KIyA1NjYgIi4uL2NvbW1vbi91bmljb2RlL3VuaXNldC5oIg0KICAgIGludDMy
X3QgaW5kZXhPZihVQ2hhcjMyIGMpIGNvbnN0Ow0KIyA1NzYgIi4uL2NvbW1vbi91bmljb2RlL3Vu
aXNldC5oIg0KICAgIFVDaGFyMzIgY2hhckF0KGludDMyX3QgaW5kZXgpIGNvbnN0Ow0KIyA1OTEg
Ii4uL2NvbW1vbi91bmljb2RlL3VuaXNldC5oIg0KICAgIHZpcnR1YWwgVW5pY29kZVNldCYgYWRk
KFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgZW5kKTsNCg0KDQoNCg0KDQoNCg0KICAgIFVuaWNvZGVT
ZXQmIGFkZChVQ2hhcjMyIGMpOw0KIyA2MTAgIi4uL2NvbW1vbi91bmljb2RlL3VuaXNldC5oIg0K
ICAgIFVuaWNvZGVTZXQmIGFkZChjb25zdCBVbmljb2RlU3RyaW5nJiBzKTsNCg0KIHByaXZhdGU6
DQoNCg0KDQoNCg0KICAgIHN0YXRpYyBpbnQzMl90IGdldFNpbmdsZUNQKGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHMpOw0KDQogICAgdm9pZCBfYWRkKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHMpOw0KDQog
cHVibGljOg0KDQoNCg0KDQoNCg0KICAgIFVuaWNvZGVTZXQmIGFkZEFsbChjb25zdCBVbmljb2Rl
U3RyaW5nJiBzKTsNCg0KDQoNCg0KDQoNCg0KICAgIFVuaWNvZGVTZXQmIHJldGFpbkFsbChjb25z
dCBVbmljb2RlU3RyaW5nJiBzKTsNCg0KDQoNCg0KDQoNCg0KICAgIFVuaWNvZGVTZXQmIGNvbXBs
ZW1lbnRBbGwoY29uc3QgVW5pY29kZVN0cmluZyYgcyk7DQoNCg0KDQoNCg0KDQoNCiAgICBVbmlj
b2RlU2V0JiByZW1vdmVBbGwoY29uc3QgVW5pY29kZVN0cmluZyYgcyk7DQojIDY2MiAiLi4vY29t
bW9uL3VuaWNvZGUvdW5pc2V0LmgiDQogICAgc3RhdGljIFVuaWNvZGVTZXQqIGNyZWF0ZUZyb20o
Y29uc3QgVW5pY29kZVN0cmluZyYgcyk7DQojIDY3MSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc2V0
LmgiDQogICAgc3RhdGljIFVuaWNvZGVTZXQqIGNyZWF0ZUZyb21BbGwoY29uc3QgVW5pY29kZVN0
cmluZyYgcyk7DQojIDY4NSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc2V0LmgiDQogICAgdmlydHVh
bCBVbmljb2RlU2V0JiByZXRhaW4oVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBlbmQpOw0KDQoNCg0K
DQoNCg0KICAgIFVuaWNvZGVTZXQmIHJldGFpbihVQ2hhcjMyIGMpOw0KIyA3MDYgIi4uL2NvbW1v
bi91bmljb2RlL3VuaXNldC5oIg0KICAgIHZpcnR1YWwgVW5pY29kZVNldCYgcmVtb3ZlKFVDaGFy
MzIgc3RhcnQsIFVDaGFyMzIgZW5kKTsNCg0KDQoNCg0KDQoNCg0KICAgIFVuaWNvZGVTZXQmIHJl
bW92ZShVQ2hhcjMyIGMpOw0KIyA3MjMgIi4uL2NvbW1vbi91bmljb2RlL3VuaXNldC5oIg0KICAg
IFVuaWNvZGVTZXQmIHJlbW92ZShjb25zdCBVbmljb2RlU3RyaW5nJiBzKTsNCg0KDQoNCg0KDQoN
Cg0KICAgIHZpcnR1YWwgVW5pY29kZVNldCYgY29tcGxlbWVudCh2b2lkKTsNCiMgNzQ2ICIuLi9j
b21tb24vdW5pY29kZS91bmlzZXQuaCINCiAgICB2aXJ0dWFsIFVuaWNvZGVTZXQmIGNvbXBsZW1l
bnQoVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBlbmQpOw0KDQoNCg0KDQoNCg0KDQogICAgVW5pY29k
ZVNldCYgY29tcGxlbWVudChVQ2hhcjMyIGMpOw0KIyA3NjQgIi4uL2NvbW1vbi91bmljb2RlL3Vu
aXNldC5oIg0KICAgIFVuaWNvZGVTZXQmIGNvbXBsZW1lbnQoY29uc3QgVW5pY29kZVN0cmluZyYg
cyk7DQojIDc3NyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc2V0LmgiDQogICAgdmlydHVhbCBVbmlj
b2RlU2V0JiBhZGRBbGwoY29uc3QgVW5pY29kZVNldCYgYyk7DQojIDc4OSAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pc2V0LmgiDQogICAgdmlydHVhbCBVbmljb2RlU2V0JiByZXRhaW5BbGwoY29uc3Qg
VW5pY29kZVNldCYgYyk7DQojIDgwMSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc2V0LmgiDQogICAg
dmlydHVhbCBVbmljb2RlU2V0JiByZW1vdmVBbGwoY29uc3QgVW5pY29kZVNldCYgYyk7DQojIDgx
MSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pc2V0LmgiDQogICAgdmlydHVhbCBVbmljb2RlU2V0JiBj
b21wbGVtZW50QWxsKGNvbnN0IFVuaWNvZGVTZXQmIGMpOw0KDQoNCg0KDQoNCg0KICAgIHZpcnR1
YWwgVW5pY29kZVNldCYgY2xlYXIodm9pZCk7DQoNCg0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIGlu
dDMyX3QgZ2V0UmFuZ2VDb3VudCh2b2lkKSBjb25zdDsNCg0KDQoNCg0KDQoNCg0KICAgIHZpcnR1
YWwgVUNoYXIzMiBnZXRSYW5nZVN0YXJ0KGludDMyX3QgaW5kZXgpIGNvbnN0Ow0KDQoNCg0KDQoN
Cg0KDQogICAgdmlydHVhbCBVQ2hhcjMyIGdldFJhbmdlRW5kKGludDMyX3QgaW5kZXgpIGNvbnN0
Ow0KIyA4OTEgIi4uL2NvbW1vbi91bmljb2RlL3VuaXNldC5oIg0KICAgIGludDMyX3Qgc2VyaWFs
aXplKHVpbnQxNl90ICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwgVUVycm9yQ29kZSYgZWMp
IGNvbnN0Ow0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIFVuaWNvZGVTZXQmIGNvbXBhY3QoKTsNCiMg
OTEwICIuLi9jb21tb24vdW5pY29kZS91bmlzZXQuaCINCiAgICBzdGF0aWMgVUNsYXNzSUQgZ2V0
U3RhdGljQ2xhc3NJRCh2b2lkKSB7IHJldHVybiAoVUNsYXNzSUQpJmZnQ2xhc3NJRDsgfQ0KIyA5
MTkgIi4uL2NvbW1vbi91bmljb2RlL3VuaXNldC5oIg0KICAgIHZpcnR1YWwgVUNsYXNzSUQgZ2V0
RHluYW1pY0NsYXNzSUQodm9pZCkgY29uc3QgeyByZXR1cm4gZ2V0U3RhdGljQ2xhc3NJRCgpOyB9
Ow0KDQpwcml2YXRlOg0KDQoNCg0KICAgIGZyaWVuZCBjbGFzcyBVU2V0QWNjZXNzOw0KDQogICAg
aW50MzJfdCBnZXRTdHJpbmdDb3VudCgpIGNvbnN0Ow0KDQogICAgY29uc3QgVW5pY29kZVN0cmlu
ZyogZ2V0U3RyaW5nKGludDMyX3QgaW5kZXgpIGNvbnN0Ow0KDQpwcml2YXRlOg0KDQogICAgc3Rh
dGljIGNvbnN0IGNoYXIgZmdDbGFzc0lEOw0KDQoNCg0KDQoNCiAgICBmcmllbmQgY2xhc3MgVHJh
bnNsaXRlcmF0b3I7DQogICAgZnJpZW5kIGNsYXNzIFRyYW5zbGl0ZXJhdG9yUGFyc2VyOw0KICAg
IGZyaWVuZCBjbGFzcyBUcmFuc2xpdGVyYXRvcklEUGFyc2VyOw0KICAgIGZyaWVuZCBjbGFzcyBU
cmFuc2xpdGVyYXRpb25SdWxlOw0KDQogICAgZnJpZW5kIGNsYXNzIFJCQklSdWxlU2Nhbm5lcjsN
CiMgOTY0ICIuLi9jb21tb24vdW5pY29kZS91bmlzZXQuaCINCiAgICBVbmljb2RlU2V0KGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4sIFBhcnNlUG9zaXRpb24mIHBvcywNCiAgICAgICAgICAg
ICAgIGNvbnN0IFN5bWJvbFRhYmxlJiBzeW1ib2xzLA0KICAgICAgICAgICAgICAgVUVycm9yQ29k
ZSYgc3RhdHVzKTsNCg0KDQoNCg0KDQoNCiAgICBVbmljb2RlU2V0KGNvbnN0IFVuaWNvZGVTdHJp
bmcmIHBhdHRlcm4sIFBhcnNlUG9zaXRpb24mIHBvcywNCiAgICAgICAgICAgICAgIFVFcnJvckNv
ZGUmIHN0YXR1cyk7DQoNCg0KDQoNCg0KDQogICAgdmlydHVhbCBVQm9vbCBtYXRjaGVzSW5kZXhW
YWx1ZSh1aW50OF90IHYpIGNvbnN0Ow0KDQpwcml2YXRlOg0KIyAxMDEzICIuLi9jb21tb24vdW5p
Y29kZS91bmlzZXQuaCINCiAgICB2b2lkIGFwcGx5UGF0dGVybihjb25zdCBVbmljb2RlU3RyaW5n
JiBwYXR0ZXJuLA0KICAgICAgICAgICAgICAgICAgICAgIFBhcnNlUG9zaXRpb24mIHBvcywNCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTeW1ib2xUYWJsZSogc3ltYm9scywNCiAgICAgICAg
ICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpOw0KDQoNCg0KDQoNCiAgICB2b2lkIGVu
c3VyZUNhcGFjaXR5KGludDMyX3QgbmV3TGVuKTsNCg0KICAgIHZvaWQgZW5zdXJlQnVmZmVyQ2Fw
YWNpdHkoaW50MzJfdCBuZXdMZW4pOw0KDQogICAgdm9pZCBzd2FwQnVmZmVycyh2b2lkKTsNCg0K
ICAgIFVCb29sIGFsbG9jYXRlU3RyaW5ncygpOw0KDQogICAgdm9pZCBfYXBwbHlQYXR0ZXJuKGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4sDQogICAgICAgICAgICAgICAgICAgICAgIFBhcnNl
UG9zaXRpb24mIHBvcywNCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3ltYm9sVGFibGUq
IHN5bWJvbHMsDQogICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIHJlYnVpbHRQ
YXQsDQogICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7DQoNCiAgICBV
bmljb2RlU3RyaW5nJiBfdG9QYXR0ZXJuKFVuaWNvZGVTdHJpbmcmIHJlc3VsdCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVCb29sIGVzY2FwZVVucHJpbnRhYmxlKSBjb25zdDsNCg0K
ICAgIFVuaWNvZGVTdHJpbmcmIF9nZW5lcmF0ZVBhdHRlcm4oVW5pY29kZVN0cmluZyYgcmVzdWx0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgZXNjYXBlVW5wcmlu
dGFibGUpIGNvbnN0Ow0KDQogICAgc3RhdGljIHZvaWQgX2FwcGVuZFRvUGF0KFVuaWNvZGVTdHJp
bmcmIGJ1ZiwgY29uc3QgVW5pY29kZVN0cmluZyYgcywgVUJvb2wgZXNjYXBlVW5wcmludGFibGUp
Ow0KDQogICAgc3RhdGljIHZvaWQgX2FwcGVuZFRvUGF0KFVuaWNvZGVTdHJpbmcmIGJ1ZiwgVUNo
YXIzMiBjLCBVQm9vbCBlc2NhcGVVbnByaW50YWJsZSk7DQoNCg0KDQoNCg0KICAgIHZvaWQgZXhj
bHVzaXZlT3IoY29uc3QgVUNoYXIzMiogb3RoZXIsIGludDMyX3Qgb3RoZXJMZW4sIGludDhfdCBw
b2xhcml0eSk7DQoNCiAgICB2b2lkIGFkZChjb25zdCBVQ2hhcjMyKiBvdGhlciwgaW50MzJfdCBv
dGhlckxlbiwgaW50OF90IHBvbGFyaXR5KTsNCg0KICAgIHZvaWQgcmV0YWluKGNvbnN0IFVDaGFy
MzIqIG90aGVyLCBpbnQzMl90IG90aGVyTGVuLCBpbnQ4X3QgcG9sYXJpdHkpOw0KDQogICAgZnJp
ZW5kIGNsYXNzIFVuaWNvZGVTZXRJdGVyYXRvcjsNCn07DQoNCmlubGluZSBVQm9vbCBVbmljb2Rl
U2V0OjpvcGVyYXRvciE9KGNvbnN0IFVuaWNvZGVTZXQmIG8pIGNvbnN0IHsNCiAgICByZXR1cm4g
IW9wZXJhdG9yPT0obyk7DQp9DQoNCmlubGluZSBVQm9vbCBVbmljb2RlU2V0Ojpjb250YWluc1Nv
bWUoVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBlbmQpIGNvbnN0IHsNCiAgICByZXR1cm4gIWNvbnRh
aW5zTm9uZShzdGFydCwgZW5kKTsNCn0NCg0KaW5saW5lIFVCb29sIFVuaWNvZGVTZXQ6OmNvbnRh
aW5zU29tZShjb25zdCBVbmljb2RlU2V0JiBzKSBjb25zdCB7DQogICAgcmV0dXJuICFjb250YWlu
c05vbmUocyk7DQp9DQoNCmlubGluZSBVQm9vbCBVbmljb2RlU2V0Ojpjb250YWluc1NvbWUoY29u
c3QgVW5pY29kZVN0cmluZyYgcykgY29uc3Qgew0KICAgIHJldHVybiAhY29udGFpbnNOb25lKHMp
Ow0KfQ0KDQp9DQojIDE1ICJjYW5pdGVyLmgiIDINCiMgMSAiLi4vY29tbW9uL3VuaWNvZGUvbm9y
bWx6ci5oIiAxDQojIDE1ICIuLi9jb21tb24vdW5pY29kZS9ub3JtbHpyLmgiDQojIDEgIi4uL2Nv
bW1vbi91bmljb2RlL2NoYXJpdGVyLmgiIDENCiMgMTcgIi4uL2NvbW1vbi91bmljb2RlL2NoYXJp
dGVyLmgiDQpuYW1lc3BhY2UgaWN1XzJfMiB7DQojIDg1ICIuLi9jb21tb24vdW5pY29kZS9jaGFy
aXRlci5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgRm9yd2FyZENoYXJhY3Rl
ckl0ZXJhdG9yIDogcHVibGljIFVPYmplY3Qgew0KcHVibGljOg0KDQoNCg0KDQoNCiAgZW51bSB7
IERPTkUgPSAweGZmZmYgfTsNCg0KDQoNCg0KDQogIHZpcnR1YWwgfkZvcndhcmRDaGFyYWN0ZXJJ
dGVyYXRvcigpIHt9DQojIDEwOCAiLi4vY29tbW9uL3VuaWNvZGUvY2hhcml0ZXIuaCINCiAgdmly
dHVhbCBVQm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvciYgdGhh
dCkgY29uc3QgPSAwOw0KIyAxMjAgIi4uL2NvbW1vbi91bmljb2RlL2NoYXJpdGVyLmgiDQogIGlu
bGluZSBVQm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvciYgdGhh
dCkgY29uc3Q7DQoNCg0KDQoNCg0KDQogIHZpcnR1YWwgaW50MzJfdCBoYXNoQ29kZSh2b2lkKSBj
b25zdCA9IDA7DQojIDEzNiAiLi4vY29tbW9uL3VuaWNvZGUvY2hhcml0ZXIuaCINCiAgdmlydHVh
bCBVQ2xhc3NJRCBnZXREeW5hbWljQ2xhc3NJRCh2b2lkKSBjb25zdCA9IDA7DQojIDE0NiAiLi4v
Y29tbW9uL3VuaWNvZGUvY2hhcml0ZXIuaCINCiAgdmlydHVhbCBVQ2hhciBuZXh0UG9zdEluYyh2
b2lkKSA9IDA7DQojIDE1NiAiLi4vY29tbW9uL3VuaWNvZGUvY2hhcml0ZXIuaCINCiAgdmlydHVh
bCBVQ2hhcjMyIG5leHQzMlBvc3RJbmModm9pZCkgPSAwOw0KIyAxNjcgIi4uL2NvbW1vbi91bmlj
b2RlL2NoYXJpdGVyLmgiDQogIHZpcnR1YWwgVUJvb2wgaGFzTmV4dCgpID0gMDsNCg0KcHJvdGVj
dGVkOg0KDQogIEZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvcigpIDogVU9iamVjdCgpIHt9DQoNCg0K
ICBGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgRm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9y
ICZvdGhlcikgOiBVT2JqZWN0KG90aGVyKSB7fQ0KDQoNCg0KDQogIEZvcndhcmRDaGFyYWN0ZXJJ
dGVyYXRvciAmb3BlcmF0b3I9KGNvbnN0IEZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvciYpIHsgcmV0
dXJuICp0aGlzOyB9DQp9Ow0KIyAzNTEgIi4uL2NvbW1vbi91bmljb2RlL2NoYXJpdGVyLmgiDQpj
bGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBDaGFyYWN0ZXJJdGVyYXRvciA6IHB1Ymxp
YyBGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3Igew0KcHVibGljOg0KDQoNCg0KDQogIGVudW0gRU9y
aWdpbiB7IGtTdGFydCwga0N1cnJlbnQsIGtFbmQgfTsNCiMgMzY3ICIuLi9jb21tb24vdW5pY29k
ZS9jaGFyaXRlci5oIg0KICB2aXJ0dWFsIENoYXJhY3Rlckl0ZXJhdG9yKiBjbG9uZSh2b2lkKSBj
b25zdCA9IDA7DQojIDM3NiAiLi4vY29tbW9uL3VuaWNvZGUvY2hhcml0ZXIuaCINCiAgdmlydHVh
bCBVQ2hhciBmaXJzdCh2b2lkKSA9IDA7DQojIDM4NiAiLi4vY29tbW9uL3VuaWNvZGUvY2hhcml0
ZXIuaCINCiAgdmlydHVhbCBVQ2hhciBmaXJzdFBvc3RJbmModm9pZCk7DQojIDM5NyAiLi4vY29t
bW9uL3VuaWNvZGUvY2hhcml0ZXIuaCINCiAgdmlydHVhbCBVQ2hhcjMyIGZpcnN0MzIodm9pZCkg
PSAwOw0KIyA0MDcgIi4uL2NvbW1vbi91bmljb2RlL2NoYXJpdGVyLmgiDQogIHZpcnR1YWwgVUNo
YXIzMiBmaXJzdDMyUG9zdEluYyh2b2lkKTsNCiMgNDE2ICIuLi9jb21tb24vdW5pY29kZS9jaGFy
aXRlci5oIg0KICBpbmxpbmUgaW50MzJfdCBzZXRUb1N0YXJ0KCk7DQojIDQyNSAiLi4vY29tbW9u
L3VuaWNvZGUvY2hhcml0ZXIuaCINCiAgdmlydHVhbCBVQ2hhciBsYXN0KHZvaWQpID0gMDsNCiMg
NDM0ICIuLi9jb21tb24vdW5pY29kZS9jaGFyaXRlci5oIg0KICB2aXJ0dWFsIFVDaGFyMzIgbGFz
dDMyKHZvaWQpID0gMDsNCiMgNDQzICIuLi9jb21tb24vdW5pY29kZS9jaGFyaXRlci5oIg0KICBp
bmxpbmUgaW50MzJfdCBzZXRUb0VuZCgpOw0KIyA0NTMgIi4uL2NvbW1vbi91bmljb2RlL2NoYXJp
dGVyLmgiDQogIHZpcnR1YWwgVUNoYXIgc2V0SW5kZXgoaW50MzJfdCBwb3NpdGlvbikgPSAwOw0K
IyA0NjYgIi4uL2NvbW1vbi91bmljb2RlL2NoYXJpdGVyLmgiDQogIHZpcnR1YWwgVUNoYXIzMiBz
ZXRJbmRleDMyKGludDMyX3QgcG9zaXRpb24pID0gMDsNCg0KDQoNCg0KDQoNCiAgdmlydHVhbCBV
Q2hhciBjdXJyZW50KHZvaWQpIGNvbnN0ID0gMDsNCg0KDQoNCg0KDQoNCiAgdmlydHVhbCBVQ2hh
cjMyIGN1cnJlbnQzMih2b2lkKSBjb25zdCA9IDA7DQojIDQ4OSAiLi4vY29tbW9uL3VuaWNvZGUv
Y2hhcml0ZXIuaCINCiAgdmlydHVhbCBVQ2hhciBuZXh0KHZvaWQpID0gMDsNCiMgNTAxICIuLi9j
b21tb24vdW5pY29kZS9jaGFyaXRlci5oIg0KICB2aXJ0dWFsIFVDaGFyMzIgbmV4dDMyKHZvaWQp
ID0gMDsNCiMgNTEwICIuLi9jb21tb24vdW5pY29kZS9jaGFyaXRlci5oIg0KICB2aXJ0dWFsIFVD
aGFyIHByZXZpb3VzKHZvaWQpID0gMDsNCiMgNTE5ICIuLi9jb21tb24vdW5pY29kZS9jaGFyaXRl
ci5oIg0KICB2aXJ0dWFsIFVDaGFyMzIgcHJldmlvdXMzMih2b2lkKSA9IDA7DQojIDUzMCAiLi4v
Y29tbW9uL3VuaWNvZGUvY2hhcml0ZXIuaCINCiAgdmlydHVhbCBVQm9vbCBoYXNQcmV2aW91cygp
ID0gMDsNCiMgNTQyICIuLi9jb21tb24vdW5pY29kZS9jaGFyaXRlci5oIg0KICBpbmxpbmUgaW50
MzJfdCBzdGFydEluZGV4KHZvaWQpIGNvbnN0Ow0KIyA1NTMgIi4uL2NvbW1vbi91bmljb2RlL2No
YXJpdGVyLmgiDQogIGlubGluZSBpbnQzMl90IGVuZEluZGV4KHZvaWQpIGNvbnN0Ow0KIyA1NjMg
Ii4uL2NvbW1vbi91bmljb2RlL2NoYXJpdGVyLmgiDQogIGlubGluZSBpbnQzMl90IGdldEluZGV4
KHZvaWQpIGNvbnN0Ow0KDQoNCg0KDQoNCg0KDQogIGlubGluZSBpbnQzMl90IGdldExlbmd0aCgp
IGNvbnN0Ow0KIyA1ODQgIi4uL2NvbW1vbi91bmljb2RlL2NoYXJpdGVyLmgiDQogIHZpcnR1YWwg
aW50MzJfdCBtb3ZlKGludDMyX3QgZGVsdGEsIEVPcmlnaW4gb3JpZ2luKSA9IDA7DQojIDU5NyAi
Li4vY29tbW9uL3VuaWNvZGUvY2hhcml0ZXIuaCINCiAgdmlydHVhbCBpbnQzMl90IG1vdmUzMihp
bnQzMl90IGRlbHRhLCBFT3JpZ2luIG9yaWdpbikgPSAwOw0KDQoNCg0KDQoNCg0KDQogIHZpcnR1
YWwgdm9pZCBnZXRUZXh0KFVuaWNvZGVTdHJpbmcmIHJlc3VsdCkgPSAwOw0KDQpwcm90ZWN0ZWQ6
DQogIENoYXJhY3Rlckl0ZXJhdG9yKCkge30NCiAgQ2hhcmFjdGVySXRlcmF0b3IoaW50MzJfdCBs
ZW5ndGgpOw0KICBDaGFyYWN0ZXJJdGVyYXRvcihpbnQzMl90IGxlbmd0aCwgaW50MzJfdCBwb3Np
dGlvbik7DQogIENoYXJhY3Rlckl0ZXJhdG9yKGludDMyX3QgbGVuZ3RoLCBpbnQzMl90IHRleHRC
ZWdpbiwgaW50MzJfdCB0ZXh0RW5kLCBpbnQzMl90IHBvc2l0aW9uKTsNCg0KDQoNCg0KICBDaGFy
YWN0ZXJJdGVyYXRvcihjb25zdCBDaGFyYWN0ZXJJdGVyYXRvciAmdGhhdCk7DQoNCg0KDQoNCg0K
DQoNCiAgQ2hhcmFjdGVySXRlcmF0b3IgJm9wZXJhdG9yPShjb25zdCBDaGFyYWN0ZXJJdGVyYXRv
ciAmdGhhdCk7DQoNCiAgaW50MzJfdCB0ZXh0TGVuZ3RoOw0KICBpbnQzMl90IHBvczsNCiAgaW50
MzJfdCBiZWdpbjsNCiAgaW50MzJfdCBlbmQ7DQp9Ow0KDQppbmxpbmUgVUJvb2wNCkZvcndhcmRD
aGFyYWN0ZXJJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBGb3J3YXJkQ2hhcmFjdGVySXRlcmF0
b3ImIHRoYXQpIGNvbnN0IHsNCiAgcmV0dXJuICFvcGVyYXRvcj09KHRoYXQpOw0KfQ0KDQppbmxp
bmUgaW50MzJfdA0KQ2hhcmFjdGVySXRlcmF0b3I6OnNldFRvU3RhcnQoKSB7DQogIHJldHVybiBt
b3ZlKDAsIGtTdGFydCk7DQp9DQoNCmlubGluZSBpbnQzMl90DQpDaGFyYWN0ZXJJdGVyYXRvcjo6
c2V0VG9FbmQoKSB7DQogIHJldHVybiBtb3ZlKDAsIGtFbmQpOw0KfQ0KDQppbmxpbmUgaW50MzJf
dA0KQ2hhcmFjdGVySXRlcmF0b3I6OnN0YXJ0SW5kZXgodm9pZCkgY29uc3Qgew0KICByZXR1cm4g
YmVnaW47DQp9DQoNCmlubGluZSBpbnQzMl90DQpDaGFyYWN0ZXJJdGVyYXRvcjo6ZW5kSW5kZXgo
dm9pZCkgY29uc3Qgew0KICByZXR1cm4gZW5kOw0KfQ0KDQppbmxpbmUgaW50MzJfdA0KQ2hhcmFj
dGVySXRlcmF0b3I6OmdldEluZGV4KHZvaWQpIGNvbnN0IHsNCiAgcmV0dXJuIHBvczsNCn0NCg0K
aW5saW5lIGludDMyX3QNCkNoYXJhY3Rlckl0ZXJhdG9yOjpnZXRMZW5ndGgodm9pZCkgY29uc3Qg
ew0KICByZXR1cm4gdGV4dExlbmd0aDsNCn0NCg0KfQ0KIyAxNiAiLi4vY29tbW9uL3VuaWNvZGUv
bm9ybWx6ci5oIiAyDQoNCg0Kc3RydWN0IFVDaGFySXRlcmF0b3I7DQp0eXBlZGVmIHN0cnVjdCBV
Q2hhckl0ZXJhdG9yIFVDaGFySXRlcmF0b3I7DQoNCm5hbWVzcGFjZSBpY3VfMl8yIHsNCiMgMTEy
ICIuLi9jb21tb24vdW5pY29kZS9ub3JtbHpyLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSBOb3JtYWxpemVyIDogcHVibGljIFVPYmplY3Qgew0KcHVibGljOg0KDQoNCg0KDQoN
CiAgZW51bSB7DQogICAgICBET05FPTB4ZmZmZg0KICB9Ow0KIyAxMzUgIi4uL2NvbW1vbi91bmlj
b2RlL25vcm1senIuaCINCiAgTm9ybWFsaXplcihjb25zdCBVbmljb2RlU3RyaW5nJiBzdHIsIFVO
b3JtYWxpemF0aW9uTW9kZSBtb2RlKTsNCiMgMTQ4ICIuLi9jb21tb24vdW5pY29kZS9ub3JtbHpy
LmgiDQogIE5vcm1hbGl6ZXIoY29uc3QgVUNoYXIqIHN0ciwgaW50MzJfdCBsZW5ndGgsIFVOb3Jt
YWxpemF0aW9uTW9kZSBtb2RlKTsNCiMgMTYwICIuLi9jb21tb24vdW5pY29kZS9ub3JtbHpyLmgi
DQogIE5vcm1hbGl6ZXIoY29uc3QgQ2hhcmFjdGVySXRlcmF0b3ImIGl0ZXIsIFVOb3JtYWxpemF0
aW9uTW9kZSBtb2RlKTsNCg0KDQoNCg0KDQoNCiAgTm9ybWFsaXplcihjb25zdCBOb3JtYWxpemVy
JiBjb3B5KTsNCg0KDQoNCg0KDQogIH5Ob3JtYWxpemVyKCk7DQojIDE5NyAiLi4vY29tbW9uL3Vu
aWNvZGUvbm9ybWx6ci5oIg0KICBzdGF0aWMgdm9pZCBub3JtYWxpemUoY29uc3QgVW5pY29kZVN0
cmluZyYgc291cmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgVU5vcm1hbGl6YXRpb25Nb2Rl
IG1vZGUsIGludDMyX3Qgb3B0aW9ucywNCiAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVT
dHJpbmcmIHJlc3VsdCwNCiAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1
cyk7DQojIDIyMyAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICBzdGF0aWMgdm9pZCBj
b21wb3NlKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNvdXJjZSwNCiAgICAgICAgICAgICAgICAgICAg
ICBVQm9vbCBjb21wYXQsIGludDMyX3Qgb3B0aW9ucywNCiAgICAgICAgICAgICAgICAgICAgICBV
bmljb2RlU3RyaW5nJiByZXN1bHQsDQogICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAm
c3RhdHVzKTsNCiMgMjUwICIuLi9jb21tb24vdW5pY29kZS9ub3JtbHpyLmgiDQogIHN0YXRpYyB2
b2lkIGRlY29tcG9zZShjb25zdCBVbmljb2RlU3RyaW5nJiBzb3VyY2UsDQogICAgICAgICAgICAg
ICAgICAgICAgICBVQm9vbCBjb21wYXQsIGludDMyX3Qgb3B0aW9ucywNCiAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIHJlc3VsdCwNCiAgICAgICAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUgJnN0YXR1cyk7DQojIDI3NSAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6ci5o
Ig0KICBzdGF0aWMgaW5saW5lIFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1bHQNCiAgcXVpY2tDaGVj
ayhjb25zdCBVbmljb2RlU3RyaW5nICZzb3VyY2UsIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBV
RXJyb3JDb2RlICZzdGF0dXMpOw0KIyAyOTggIi4uL2NvbW1vbi91bmljb2RlL25vcm1senIuaCIN
CiAgc3RhdGljIGlubGluZSBVQm9vbA0KICBpc05vcm1hbGl6ZWQoY29uc3QgVW5pY29kZVN0cmlu
ZyAmc3JjLCBVTm9ybWFsaXphdGlvbk1vZGUgbW9kZSwgVUVycm9yQ29kZSAmZXJyb3JDb2RlKTsN
CiMgMzMwICIuLi9jb21tb24vdW5pY29kZS9ub3JtbHpyLmgiDQogIHN0YXRpYyBVbmljb2RlU3Ry
aW5nICYNCiAgY29uY2F0ZW5hdGUoVW5pY29kZVN0cmluZyAmbGVmdCwgVW5pY29kZVN0cmluZyAm
cmlnaHQsDQogICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcgJnJlc3VsdCwNCiAgICAgICAgICAg
ICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsIGludDMyX3Qgb3B0aW9ucywNCiAgICAgICAgICAg
ICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKTsNCiMgMzk4ICIuLi9jb21tb24vdW5pY29kZS9ub3Jt
bHpyLmgiDQogIHN0YXRpYyBpbmxpbmUgaW50MzJfdA0KICBjb21wYXJlKGNvbnN0IFVuaWNvZGVT
dHJpbmcgJnMxLCBjb25zdCBVbmljb2RlU3RyaW5nICZzMiwNCiAgICAgICAgICB1aW50MzJfdCBv
cHRpb25zLA0KICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7DQojIDQxNSAiLi4vY29t
bW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICBVQ2hhcjMyIGN1cnJlbnQodm9pZCk7DQojIDQyNSAi
Li4vY29tbW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICBVQ2hhcjMyIGZpcnN0KHZvaWQpOw0KIyA0
MzUgIi4uL2NvbW1vbi91bmljb2RlL25vcm1senIuaCINCiAgVUNoYXIzMiBsYXN0KHZvaWQpOw0K
IyA0NDUgIi4uL2NvbW1vbi91bmljb2RlL25vcm1senIuaCINCiAgVUNoYXIzMiBuZXh0KHZvaWQp
Ow0KIyA0NTUgIi4uL2NvbW1vbi91bmljb2RlL25vcm1senIuaCINCiAgVUNoYXIzMiBwcmV2aW91
cyh2b2lkKTsNCiMgNDc2ICIuLi9jb21tb24vdW5pY29kZS9ub3JtbHpyLmgiDQogIFVDaGFyMzIg
c2V0SW5kZXgoaW50MzJfdCBpbmRleCk7DQojIDQ4NyAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6
ci5oIg0KICB2b2lkIHNldEluZGV4T25seShpbnQzMl90IGluZGV4KTsNCg0KDQoNCg0KDQoNCiAg
dm9pZCByZXNldCh2b2lkKTsNCiMgNTEwICIuLi9jb21tb24vdW5pY29kZS9ub3JtbHpyLmgiDQog
IGludDMyX3QgZ2V0SW5kZXgodm9pZCkgY29uc3Q7DQojIDUyMCAiLi4vY29tbW9uL3VuaWNvZGUv
bm9ybWx6ci5oIg0KICBpbnQzMl90IHN0YXJ0SW5kZXgodm9pZCkgY29uc3Q7DQojIDUzMiAiLi4v
Y29tbW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICBpbnQzMl90IGVuZEluZGV4KHZvaWQpIGNvbnN0
Ow0KIyA1NDIgIi4uL2NvbW1vbi91bmljb2RlL25vcm1senIuaCINCiAgVUJvb2wgb3BlcmF0b3I9
PShjb25zdCBOb3JtYWxpemVyJiB0aGF0KSBjb25zdDsNCiMgNTUyICIuLi9jb21tb24vdW5pY29k
ZS9ub3JtbHpyLmgiDQogIGlubGluZSBVQm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vcm1hbGl6ZXIm
IHRoYXQpIGNvbnN0Ow0KDQoNCg0KDQoNCg0KDQogIE5vcm1hbGl6ZXIqIGNsb25lKHZvaWQpIGNv
bnN0Ow0KDQoNCg0KDQoNCg0KDQogIGludDMyX3QgaGFzaENvZGUodm9pZCkgY29uc3Q7DQojIDU4
OSAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICB2b2lkIHNldE1vZGUoVU5vcm1hbGl6
YXRpb25Nb2RlIG5ld01vZGUpOw0KIyA2MDEgIi4uL2NvbW1vbi91bmljb2RlL25vcm1senIuaCIN
CiAgVU5vcm1hbGl6YXRpb25Nb2RlIGdldFVNb2RlKHZvaWQpIGNvbnN0Ow0KIyA2MTkgIi4uL2Nv
bW1vbi91bmljb2RlL25vcm1senIuaCINCiAgdm9pZCBzZXRPcHRpb24oaW50MzJfdCBvcHRpb24s
DQogICAgICAgICBVQm9vbCB2YWx1ZSk7DQojIDYzMiAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6
ci5oIg0KICBVQm9vbCBnZXRPcHRpb24oaW50MzJfdCBvcHRpb24pIGNvbnN0Ow0KIyA2NDIgIi4u
L2NvbW1vbi91bmljb2RlL25vcm1senIuaCINCiAgdm9pZCBzZXRUZXh0KGNvbnN0IFVuaWNvZGVT
dHJpbmcmIG5ld1RleHQsDQogICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cyk7DQojIDY1MyAi
Li4vY29tbW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICB2b2lkIHNldFRleHQoY29uc3QgQ2hhcmFj
dGVySXRlcmF0b3ImIG5ld1RleHQsDQogICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cyk7DQoj
IDY2NSAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICB2b2lkIHNldFRleHQoY29uc3Qg
VUNoYXIqIG5ld1RleHQsDQogICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLA0KICAg
ICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKTsNCg0KDQoNCg0KDQoNCiAgdm9pZCBnZXRUZXh0
KFVuaWNvZGVTdHJpbmcmIHJlc3VsdCk7DQoNCg0KDQoNCg0KDQogIHZpcnR1YWwgaW5saW5lIFVD
bGFzc0lEIGdldER5bmFtaWNDbGFzc0lEKCkgY29uc3QgeyByZXR1cm4gZ2V0U3RhdGljQ2xhc3NJ
RCgpOyB9DQoNCg0KDQoNCg0KDQogIHN0YXRpYyBpbmxpbmUgVUNsYXNzSUQgZ2V0U3RhdGljQ2xh
c3NJRCgpIHsgcmV0dXJuIChVQ2xhc3NJRCkmZmdDbGFzc0lEOyB9DQojIDY5OCAiLi4vY29tbW9u
L3VuaWNvZGUvbm9ybWx6ci5oIg0KICBlbnVtIHsNCiAgICBDT01QQVRfQklUID0gMSwNCiAgICBE
RUNPTVBfQklUID0gMiwNCiAgICBDT01QT1NFX0JJVCA9IDQsDQogICAgRkNEX0JJVCA9IDgNCiAg
fTsNCg0KDQoNCg0KDQogIGVudW0gRU1vZGUgew0KIyA3MjMgIi4uL2NvbW1vbi91bmljb2RlL25v
cm1senIuaCINCiAgICBOT19PUCA9IDAsDQojIDc0MCAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6
ci5oIg0KICAgIENPTVBPU0UgPSBDT01QT1NFX0JJVCwNCiMgNzU3ICIuLi9jb21tb24vdW5pY29k
ZS9ub3JtbHpyLmgiDQogICAgQ09NUE9TRV9DT01QQVQgPSBDT01QT1NFX0JJVCB8IENPTVBBVF9C
SVQsDQojIDc3NCAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICAgIERFQ09NUCA9IERF
Q09NUF9CSVQsDQojIDc5MSAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICAgIERFQ09N
UF9DT01QQVQgPSBERUNPTVBfQklUIHwgQ09NUEFUX0JJVCwNCg0KDQoNCg0KICAgIEZDRCA9IEZD
RF9CSVQNCiAgfTsNCg0KDQogIGVudW0gew0KIyA4MTkgIi4uL2NvbW1vbi91bmljb2RlL25vcm1s
enIuaCINCiAgICBJR05PUkVfSEFOR1VMID0gMHgwMDENCiAgfTsNCiMgODMyICIuLi9jb21tb24v
dW5pY29kZS9ub3JtbHpyLmgiDQogIE5vcm1hbGl6ZXIoY29uc3QgVW5pY29kZVN0cmluZyYgc3Ry
LA0KICAgICAgICAgRU1vZGUgbW9kZSk7DQojIDg1MyAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6
ci5oIg0KICBOb3JtYWxpemVyKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHN0ciwNCiAgICAgICAgIEVN
b2RlIG1vZGUsDQogICAgICAgICBpbnQzMl90IG9wdCk7DQojIDg2OCAiLi4vY29tbW9uL3VuaWNv
ZGUvbm9ybWx6ci5oIg0KICBOb3JtYWxpemVyKGNvbnN0IFVDaGFyKiBzdHIsDQogICAgICAgICBp
bnQzMl90IGxlbmd0aCwNCiAgICAgICAgIEVNb2RlIG1vZGUpOw0KIyA4ODcgIi4uL2NvbW1vbi91
bmljb2RlL25vcm1senIuaCINCiAgTm9ybWFsaXplcihjb25zdCBVQ2hhciogc3RyLA0KICAgICAg
ICAgaW50MzJfdCBsZW5ndGgsDQogICAgICAgICBFTW9kZSBtb2RlLA0KICAgICAgICAgaW50MzJf
dCBvcHRpb24pOw0KIyA5MDIgIi4uL2NvbW1vbi91bmljb2RlL25vcm1senIuaCINCiAgTm9ybWFs
aXplcihjb25zdCBDaGFyYWN0ZXJJdGVyYXRvciYgaXRlciwNCiAgICAgICAgIEVNb2RlIG1vZGUp
Ow0KIyA5MjAgIi4uL2NvbW1vbi91bmljb2RlL25vcm1senIuaCINCiAgTm9ybWFsaXplcihjb25z
dCBDaGFyYWN0ZXJJdGVyYXRvciYgaXRlciwNCiAgICAgICAgIEVNb2RlIG1vZGUsDQogICAgICAg
ICBpbnQzMl90IG9wdCk7DQojIDk0NCAiLi4vY29tbW9uL3VuaWNvZGUvbm9ybWx6ci5oIg0KICBp
bmxpbmUgc3RhdGljIHZvaWQNCiAgbm9ybWFsaXplKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNvdXJj
ZSwNCiAgICAgICAgICAgIEVNb2RlIG1vZGUsDQogICAgICAgICAgICBpbnQzMl90IG9wdGlvbnMs
DQogICAgICAgICAgICBVbmljb2RlU3RyaW5nJiByZXN1bHQsDQogICAgICAgICAgICBVRXJyb3JD
b2RlICZzdGF0dXMpOw0KIyA5NjcgIi4uL2NvbW1vbi91bmljb2RlL25vcm1senIuaCINCiAgaW5s
aW5lIHN0YXRpYyBVTm9ybWFsaXphdGlvbkNoZWNrUmVzdWx0DQogIHF1aWNrQ2hlY2soY29uc3Qg
VW5pY29kZVN0cmluZyYgc291cmNlLA0KICAgICAgICAgICAgIEVNb2RlIG1vZGUsDQogICAgICAg
ICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKTsNCiMgOTc5ICIuLi9jb21tb24vdW5pY29kZS9ub3Jt
bHpyLmgiDQogIGlubGluZSBzdGF0aWMgVU5vcm1hbGl6YXRpb25Nb2RlIGdldFVOb3JtYWxpemF0
aW9uTW9kZShFTW9kZSBtb2RlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpOw0KIyA5ODkgIi4uL2NvbW1vbi91bmlj
b2RlL25vcm1senIuaCINCiAgaW5saW5lIHN0YXRpYyBFTW9kZSBnZXROb3JtYWxpemVyRU1vZGUo
VU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7DQojIDEwMTggIi4uL2NvbW1vbi91bmljb2Rl
L25vcm1senIuaCINCiAgaW5saW5lIHZvaWQgc2V0TW9kZShFTW9kZSBuZXdNb2RlKTsNCg0KDQoN
Cg0KDQoNCg0KICBpbmxpbmUgRU1vZGUgZ2V0TW9kZSh2b2lkKSBjb25zdDsNCg0KcHJpdmF0ZToN
Cg0KDQoNCg0KDQoNCiAgVUJvb2wgbmV4dE5vcm1hbGl6ZSgpOw0KICBVQm9vbCBwcmV2aW91c05v
cm1hbGl6ZSgpOw0KDQogIHZvaWQgaW5pdChDaGFyYWN0ZXJJdGVyYXRvciAqaXRlcik7DQogIHZv
aWQgY2xlYXJCdWZmZXIodm9pZCk7DQoNCg0KDQogIGlubGluZSBzdGF0aWMgVU5vcm1hbGl6YXRp
b25Nb2RlIGdldFVNb2RlKEVNb2RlIG1vZGUpOw0KDQoNCg0KDQoNCiAgVU5vcm1hbGl6YXRpb25N
b2RlIGZVTW9kZTsNCiAgaW50MzJfdCBmT3B0aW9uczsNCg0KDQogIFVDaGFySXRlcmF0b3IgKnRl
eHQ7DQoNCg0KDQogIGludDMyX3QgY3VycmVudEluZGV4LCBuZXh0SW5kZXg7DQoNCg0KICBVbmlj
b2RlU3RyaW5nIGJ1ZmZlcjsNCiAgaW50MzJfdCBidWZmZXJQb3M7DQoNCg0KDQoNCg0KICBzdGF0
aWMgY29uc3QgY2hhciBmZ0NsYXNzSUQ7DQp9Ow0KDQoNCg0KDQoNCmlubGluZSBVQm9vbA0KTm9y
bWFsaXplcjo6b3BlcmF0b3IhPSAoY29uc3QgTm9ybWFsaXplciYgb3RoZXIpIGNvbnN0DQp7IHJl
dHVybiAhIG9wZXJhdG9yPT0ob3RoZXIpOyB9DQoNCmlubGluZSB2b2lkDQpOb3JtYWxpemVyOjpu
b3JtYWxpemUoY29uc3QgVW5pY29kZVN0cmluZyYgc291cmNlLA0KICAgICAgICAgICAgICAgICAg
ICAgIEVNb2RlIG1vZGUsIGludDMyX3Qgb3B0aW9ucywNCiAgICAgICAgICAgICAgICAgICAgICBV
bmljb2RlU3RyaW5nJiByZXN1bHQsDQogICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAm
c3RhdHVzKSB7DQogIG5vcm1hbGl6ZShzb3VyY2UsIGdldFVOb3JtYWxpemF0aW9uTW9kZShtb2Rl
LCBzdGF0dXMpLCBvcHRpb25zLCByZXN1bHQsIHN0YXR1cyk7DQp9DQoNCmlubGluZSBVTm9ybWFs
aXphdGlvbkNoZWNrUmVzdWx0DQpOb3JtYWxpemVyOjpxdWlja0NoZWNrKGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHNvdXJjZSwNCiAgICAgICAgICAgICAgICAgICAgICAgRU1vZGUgbW9kZSwNCiAgICAg
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKSB7DQogIHJldHVybiBxdWlja0No
ZWNrKHNvdXJjZSwgZ2V0VU5vcm1hbGl6YXRpb25Nb2RlKG1vZGUsIHN0YXR1cyksIHN0YXR1cyk7
DQp9DQoNCmlubGluZSBVTm9ybWFsaXphdGlvbkNoZWNrUmVzdWx0DQpOb3JtYWxpemVyOjpxdWlj
a0NoZWNrKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNvdXJjZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsDQogICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUgJnN0YXR1cykgew0KICAgIGlmKFVfRkFJTFVSRShzdGF0dXMpKSB7DQogICAgICAgIHJl
dHVybiBVTk9STV9NQVlCRTsNCiAgICB9DQoNCiAgICByZXR1cm4gdW5vcm1fcXVpY2tDaGVja18y
XzIoc291cmNlLmdldEJ1ZmZlcigpLCBzb3VyY2UubGVuZ3RoKCksDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kZSwgJnN0YXR1cyk7DQp9DQoNCmlubGluZSBVQm9vbA0KTm9ybWFsaXpl
cjo6aXNOb3JtYWxpemVkKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNvdXJjZSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICBVTm9ybWFsaXphdGlvbk1vZGUgbW9kZSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpIHsNCiAgICBpZihVX0ZBSUxVUkUoc3RhdHVzKSkg
ew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICByZXR1cm4gdW5vcm1faXNOb3JtYWxp
emVkXzJfMihzb3VyY2UuZ2V0QnVmZmVyKCksIHNvdXJjZS5sZW5ndGgoKSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vZGUsICZzdGF0dXMpOw0KfQ0KDQppbmxpbmUgaW50MzJfdA0K
Tm9ybWFsaXplcjo6Y29tcGFyZShjb25zdCBVbmljb2RlU3RyaW5nICZzMSwgY29uc3QgVW5pY29k
ZVN0cmluZyAmczIsDQogICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMsDQogICAg
ICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgew0KDQogIHJldHVybiB1bm9y
bV9jb21wYXJlXzJfMihzMS5nZXRCdWZmZXIoKSwgczEubGVuZ3RoKCksDQogICAgICAgICAgICAg
ICAgICAgICAgIHMyLmdldEJ1ZmZlcigpLCBzMi5sZW5ndGgoKSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucywNCiAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yQ29kZSk7DQp9DQoN
CmlubGluZSB2b2lkDQpOb3JtYWxpemVyOjpzZXRNb2RlKEVNb2RlIG5ld01vZGUpIHsNCiAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7DQogIGZVTW9kZSA9IGdldFVOb3JtYWxpemF0
aW9uTW9kZShuZXdNb2RlLCBzdGF0dXMpOw0KfQ0KDQppbmxpbmUgTm9ybWFsaXplcjo6RU1vZGUN
Ck5vcm1hbGl6ZXI6OmdldE1vZGUoKSBjb25zdCB7DQogIFVFcnJvckNvZGUgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOw0KICByZXR1cm4gZ2V0Tm9ybWFsaXplckVNb2RlKGZVTW9kZSwgc3RhdHVzKTsN
Cn0NCg0KaW5saW5lIFVOb3JtYWxpemF0aW9uTW9kZSBOb3JtYWxpemVyOjpnZXRVTm9ybWFsaXph
dGlvbk1vZGUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXI6
OkVNb2RlIG1vZGUsIFVFcnJvckNvZGUgJnN0YXR1cykNCnsNCiAgaWYgKFVfU1VDQ0VTUyhzdGF0
dXMpKQ0KICB7DQogICAgc3dpdGNoIChtb2RlKQ0KICAgIHsNCiAgICBjYXNlIE5vcm1hbGl6ZXI6
Ok5PX09QIDoNCiAgICAgIHJldHVybiBVTk9STV9OT05FOw0KICAgIGNhc2UgTm9ybWFsaXplcjo6
Q09NUE9TRSA6DQogICAgICByZXR1cm4gVU5PUk1fTkZDOw0KICAgIGNhc2UgTm9ybWFsaXplcjo6
Q09NUE9TRV9DT01QQVQgOg0KICAgICAgcmV0dXJuIFVOT1JNX05GS0M7DQogICAgY2FzZSBOb3Jt
YWxpemVyOjpERUNPTVAgOg0KICAgICAgcmV0dXJuIFVOT1JNX05GRDsNCiAgICBjYXNlIE5vcm1h
bGl6ZXI6OkRFQ09NUF9DT01QQVQgOg0KICAgICAgcmV0dXJuIFVOT1JNX05GS0Q7DQogICAgY2Fz
ZSBOb3JtYWxpemVyOjpGQ0Q6DQogICAgICByZXR1cm4gVU5PUk1fRkNEOw0KICAgIGRlZmF1bHQg
Og0KICAgICAgc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOw0KICAgIH0NCiAgfQ0K
ICByZXR1cm4gVU5PUk1fREVGQVVMVDsNCn0NCg0KaW5saW5lIFVOb3JtYWxpemF0aW9uTW9kZQ0K
Tm9ybWFsaXplcjo6Z2V0VU1vZGUoTm9ybWFsaXplcjo6RU1vZGUgbW9kZSkgew0KICBzd2l0Y2go
bW9kZSkgew0KICBjYXNlIE5vcm1hbGl6ZXI6Ok5PX09QIDoNCiAgICByZXR1cm4gVU5PUk1fTk9O
RTsNCiAgY2FzZSBOb3JtYWxpemVyOjpDT01QT1NFIDoNCiAgICByZXR1cm4gVU5PUk1fTkZDOw0K
ICBjYXNlIE5vcm1hbGl6ZXI6OkNPTVBPU0VfQ09NUEFUIDoNCiAgICByZXR1cm4gVU5PUk1fTkZL
QzsNCiAgY2FzZSBOb3JtYWxpemVyOjpERUNPTVAgOg0KICAgIHJldHVybiBVTk9STV9ORkQ7DQog
IGNhc2UgTm9ybWFsaXplcjo6REVDT01QX0NPTVBBVCA6DQogICAgcmV0dXJuIFVOT1JNX05GS0Q7
DQogIGNhc2UgTm9ybWFsaXplcjo6RkNEOg0KICAgIHJldHVybiBVTk9STV9GQ0Q7DQogIGRlZmF1
bHQgOg0KICAgIHJldHVybiBVTk9STV9ERUZBVUxUOw0KICB9DQp9DQoNCmlubGluZSBOb3JtYWxp
emVyOjpFTW9kZSBOb3JtYWxpemVyOjpnZXROb3JtYWxpemVyRU1vZGUoDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsIFVFcnJvckNvZGUg
JnN0YXR1cykNCnsNCiAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKQ0KICB7DQogICAgc3dpdGNoICht
b2RlKQ0KICAgIHsNCiAgICBjYXNlIFVOT1JNX05PTkUgOg0KICAgICAgcmV0dXJuIE5vcm1hbGl6
ZXI6Ok5PX09QOw0KICAgIGNhc2UgVU5PUk1fTkZEIDoNCiAgICAgIHJldHVybiBOb3JtYWxpemVy
OjpERUNPTVA7DQogICAgY2FzZSBVTk9STV9ORktEIDoNCiAgICAgIHJldHVybiBOb3JtYWxpemVy
OjpERUNPTVBfQ09NUEFUOw0KICAgIGNhc2UgVU5PUk1fTkZDIDoNCiAgICAgIHJldHVybiBOb3Jt
YWxpemVyOjpDT01QT1NFOw0KICAgIGNhc2UgVU5PUk1fTkZLQyA6DQogICAgICByZXR1cm4gTm9y
bWFsaXplcjo6Q09NUE9TRV9DT01QQVQ7DQogICAgY2FzZSBVTk9STV9GQ0Q6DQogICAgICByZXR1
cm4gTm9ybWFsaXplcjo6RkNEOw0KICAgIGRlZmF1bHQgOg0KICAgICAgc3RhdHVzID0gVV9JTExF
R0FMX0FSR1VNRU5UX0VSUk9SOw0KICAgIH0NCiAgfQ0KICByZXR1cm4gTm9ybWFsaXplcjo6REVD
T01QX0NPTVBBVDsNCn0NCg0KfQ0KIyAxNiAiY2FuaXRlci5oIiAyDQojIDEgIi4uL2NvbW1vbi91
bmljb2RlL3VuaWNvZGUuaCIgMQ0KIyAzMyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5oIg0K
bmFtZXNwYWNlIGljdV8yXzIgew0KIyA1NSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5oIg0K
Y2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgVW5pY29kZQ0Kew0KcHVibGljOg0KDQoN
Cg0KDQoNCg0KDQogICAgZW51bSB7DQoNCiAgICAgICAgTUlOX1ZBTFVFPTAsDQoNCg0KDQoNCg0K
DQogICAgICAgIE1BWF9WQUxVRT0weDEwZmZmZiwNCiMgODMgIi4uL2NvbW1vbi91bmljb2RlL3Vu
aWNvZGUuaCINCiAgICAgICAgTUFYX0NIQVJfTEVOR1RIPTIsDQojIDk1ICIuLi9jb21tb24vdW5p
Y29kZS91bmljb2RlLmgiDQogICAgICAgIE1JTl9SQURJWD0yLA0KIyAxMDcgIi4uL2NvbW1vbi91
bmljb2RlL3VuaWNvZGUuaCINCiAgICAgICAgTUFYX1JBRElYPTM2DQogICAgfTsNCg0KDQoNCg0K
DQoNCg0KICAgIGVudW0gRVVuaWNvZGVHZW5lcmFsVHlwZXMNCiAgICB7DQogICAgICAgIFVOQVNT
SUdORUQgPSAwLA0KICAgICAgICBVUFBFUkNBU0VfTEVUVEVSID0gMSwNCiAgICAgICAgTE9XRVJD
QVNFX0xFVFRFUiA9IDIsDQogICAgICAgIFRJVExFQ0FTRV9MRVRURVIgPSAzLA0KICAgICAgICBN
T0RJRklFUl9MRVRURVIgPSA0LA0KICAgICAgICBPVEhFUl9MRVRURVIgPSA1LA0KICAgICAgICBO
T05fU1BBQ0lOR19NQVJLID0gNiwNCiAgICAgICAgRU5DTE9TSU5HX01BUksgPSA3LA0KICAgICAg
ICBDT01CSU5JTkdfU1BBQ0lOR19NQVJLID0gOCwNCiAgICAgICAgREVDSU1BTF9ESUdJVF9OVU1C
RVIgPSA5LA0KICAgICAgICBMRVRURVJfTlVNQkVSID0gMTAsDQogICAgICAgIE9USEVSX05VTUJF
UiA9IDExLA0KICAgICAgICBTUEFDRV9TRVBBUkFUT1IgPSAxMiwNCiAgICAgICAgTElORV9TRVBB
UkFUT1IgPSAxMywNCiAgICAgICAgUEFSQUdSQVBIX1NFUEFSQVRPUiA9IDE0LA0KICAgICAgICBD
T05UUk9MID0gMTUsDQogICAgICAgIEZPUk1BVCA9IDE2LA0KICAgICAgICBQUklWQVRFX1VTRSA9
IDE3LA0KICAgICAgICBTVVJST0dBVEUgPSAxOCwNCiAgICAgICAgREFTSF9QVU5DVFVBVElPTiA9
IDE5LA0KICAgICAgICBTVEFSVF9QVU5DVFVBVElPTiA9IDIwLA0KICAgICAgICBFTkRfUFVOQ1RV
QVRJT04gPSAyMSwNCiAgICAgICAgQ09OTkVDVE9SX1BVTkNUVUFUSU9OID0gMjIsDQogICAgICAg
IE9USEVSX1BVTkNUVUFUSU9OID0gMjMsDQogICAgICAgIE1BVEhfU1lNQk9MID0gMjQsDQogICAg
ICAgIENVUlJFTkNZX1NZTUJPTCA9IDI1LA0KICAgICAgICBNT0RJRklFUl9TWU1CT0wgPSAyNiwN
CiAgICAgICAgT1RIRVJfU1lNQk9MID0gMjcsDQogICAgICAgIElOSVRJQUxfUFVOQ1RVQVRJT04g
PSAyOCwNCiAgICAgICAgRklOQUxfUFVOQ1RVQVRJT04gPSAyOSwNCiAgICAgICAgR0VORVJBTF9U
WVBFU19DT1VOVCA9IDMwDQogICAgfTsNCg0KDQoNCg0KDQoNCg0KICAgIGVudW0gRVVuaWNvZGVT
Y3JpcHQNCiAgICB7DQogICAgICAgIGtCYXNpY0xhdGluPVVCTE9DS19CQVNJQ19MQVRJTiwNCiAg
ICAgICAga0xhdGluMVN1cHBsZW1lbnQsDQogICAgICAgIGtMYXRpbkV4dGVuZGVkQSwNCiAgICAg
ICAga0xhdGluRXh0ZW5kZWRCLA0KICAgICAgICBrSVBBRXh0ZW5zaW9uLA0KICAgICAgICBrU3Bh
Y2luZ01vZGlmaWVyLA0KICAgICAgICBrQ29tYmluaW5nRGlhY3JpdGljYWwsDQogICAgICAgIGtH
cmVlaywNCiAgICAgICAga0N5cmlsbGljLA0KICAgICAgICBrQXJtZW5pYW4sDQogICAgICAgIGtI
ZWJyZXcsDQogICAgICAgIGtBcmFiaWMsDQogICAgICAgIGtTeXJpYWMsDQogICAgICAgIGtUaGFh
bmEsDQogICAgICAgIGtEZXZhbmFnYXJpLA0KICAgICAgICBrQmVuZ2FsaSwNCiAgICAgICAga0d1
cm11a2hpLA0KICAgICAgICBrR3VqYXJhdGksDQogICAgICAgIGtPcml5YSwNCiAgICAgICAga1Rh
bWlsLA0KICAgICAgICBrVGVsdWd1LA0KICAgICAgICBrS2FubmFkYSwNCiAgICAgICAga01hbGF5
YWxhbSwNCiAgICAgICAga1NpbmhhbGEsDQogICAgICAgIGtUaGFpLA0KICAgICAgICBrTGFvLA0K
ICAgICAgICBrVGliZXRhbiwNCiAgICAgICAga015YW5tYXIsDQogICAgICAgIGtHZW9yZ2lhbiwN
CiAgICAgICAga0hhbmd1bEphbW8sDQogICAgICAgIGtFdGhpb3BpYywNCiAgICAgICAga0NoZXJv
a2VlLA0KICAgICAgICBrVW5pZmllZENhbmFkaWFuQWJvcmlnaW5hbFN5bGxhYmljcywNCiAgICAg
ICAga29naGFtLA0KICAgICAgICBrUnVuaWMsDQogICAgICAgIGtLaG1lciwNCiAgICAgICAga01v
bmdvbGlhbiwNCiAgICAgICAga0xhdGluRXh0ZW5kZWRBZGRpdGlvbmFsLA0KICAgICAgICBrR3Jl
ZWtFeHRlbmRlZCwNCiAgICAgICAga0dlbmVyYWxQdW5jdHVhdGlvbiwNCiAgICAgICAga1N1cGVy
U3ViU2NyaXB0LA0KICAgICAgICBrQ3VycmVuY3lTeW1ib2xTY3JpcHQsDQogICAgICAgIGtTeW1i
b2xDb21iaW5pbmdNYXJrLA0KICAgICAgICBrTGV0dGVybGlrZVN5bWJvbCwNCiAgICAgICAga051
bWJlckZvcm0sDQogICAgICAgIGtBcnJvdywNCiAgICAgICAga01hdGhPcGVyYXRvciwNCiAgICAg
ICAga01pc2NUZWNobmljYWwsDQogICAgICAgIGtDb250cm9sUGljdHVyZSwNCiAgICAgICAga09w
dGljYWxDaGFyYWN0ZXIsDQogICAgICAgIGtFbmNsb3NlZEFscGhhbnVtZXJpYywNCiAgICAgICAg
a0JveERyYXdpbmcsDQogICAgICAgIGtCbG9ja0VsZW1lbnQsDQogICAgICAgIGtHZW9tZXRyaWNT
aGFwZSwNCiAgICAgICAga01pc2NTeW1ib2wsDQogICAgICAgIGtEaW5nYmF0LA0KICAgICAgICBr
QnJhaWxsZVBhdHRlcm5zLA0KICAgICAgICBrQ0pLUmFkaWNhbHNTdXBwbGVtZW50LA0KICAgICAg
ICBrS2FuZ3hpUmFkaWNhbHMsDQogICAgICAgIGtJZGVvZ3JhcGhpY0Rlc2NyaXB0aW9uQ2hhcmFj
dGVycywNCiAgICAgICAga0NKS1N5bWJvbFB1bmN0dWF0aW9uLA0KICAgICAgICBrSGlyYWdhbmEs
DQogICAgICAgIGtLYXRha2FuYSwNCiAgICAgICAga0JvcG9tb2ZvLA0KICAgICAgICBrSGFuZ3Vs
Q29tcGF0aWJpbGl0eUphbW8sDQogICAgICAgIGtLYW5idW4sDQogICAgICAgIGtCb3BvbW9mb0V4
dGVuZGVkLA0KICAgICAgICBrRW5jbG9zZWRDSktMZXR0ZXJNb250aCwNCiAgICAgICAga0NKS0Nv
bXBhdGliaWxpdHksDQogICAgICAgIGtDSktVbmlmaWVkSWRlb2dyYXBoRXh0ZW5zaW9uQSwNCiAg
ICAgICAga0NKS1VuaWZpZWRJZGVvZ3JhcGgsDQogICAgICAgIGtZaVN5bGxhYmxlcywNCiAgICAg
ICAga1lpUmFkaWNhbHMsDQogICAgICAgIGtIYW5ndWxTeWxsYWJsZSwNCiAgICAgICAga0hpZ2hT
dXJyb2dhdGUsDQogICAgICAgIGtIaWdoUHJpdmF0ZVVzZVN1cnJvZ2F0ZSwNCiAgICAgICAga0xv
d1N1cnJvZ2F0ZSwNCiAgICAgICAga1ByaXZhdGVVc2UsDQogICAgICAgIGtDSktDb21wYXRpYmls
aXR5SWRlb2dyYXBoLA0KICAgICAgICBrQWxwaGFiZXRpY1ByZXNlbnRhdGlvbiwNCiAgICAgICAg
a0FyYWJpY1ByZXNlbnRhdGlvbkEsDQogICAgICAgIGtDb21iaW5pbmdIYWxmTWFyaywNCiAgICAg
ICAga0NKS0NvbXBhdGliaWxpdHlGb3JtLA0KICAgICAgICBrU21hbGxGb3JtVmFyaWFudCwNCiAg
ICAgICAga0FyYWJpY1ByZXNlbnRhdGlvbkIsDQogICAgICAgIGtOb1NjcmlwdCwNCiAgICAgICAg
a0hhbGZ3aWR0aEZ1bGx3aWR0aEZvcm0sDQogICAgICAgIGtTY3JpcHRDb3VudD1VQkxPQ0tfQ09V
TlQNCiAgICB9Ow0KDQoNCg0KDQoNCg0KICAgIGVudW0gRURpcmVjdGlvblByb3BlcnR5IHsNCiAg
ICAgICAgTEVGVF9UT19SSUdIVCA9IDAsDQogICAgICAgIFJJR0hUX1RPX0xFRlQgPSAxLA0KICAg
ICAgICBFVVJPUEVBTl9OVU1CRVIgPSAyLA0KICAgICAgICBFVVJPUEVBTl9OVU1CRVJfU0VQQVJB
VE9SID0gMywNCiAgICAgICAgRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IgPSA0LA0KICAgICAg
ICBBUkFCSUNfTlVNQkVSID0gNSwNCiAgICAgICAgQ09NTU9OX05VTUJFUl9TRVBBUkFUT1IgPSA2
LA0KICAgICAgICBCTE9DS19TRVBBUkFUT1IgPSA3LA0KICAgICAgICBTRUdNRU5UX1NFUEFSQVRP
UiA9IDgsDQogICAgICAgIFdISVRFX1NQQUNFX05FVVRSQUwgPSA5LA0KICAgICAgICBPVEhFUl9O
RVVUUkFMID0gMTAsDQogICAgICAgIExFRlRfVE9fUklHSFRfRU1CRURESU5HID0gMTEsDQogICAg
ICAgIExFRlRfVE9fUklHSFRfT1ZFUlJJREUgPSAxMiwNCiAgICAgICAgUklHSFRfVE9fTEVGVF9B
UkFCSUMgPSAxMywNCiAgICAgICAgUklHSFRfVE9fTEVGVF9FTUJFRERJTkcgPSAxNCwNCiAgICAg
ICAgUklHSFRfVE9fTEVGVF9PVkVSUklERSA9IDE1LA0KICAgICAgICBQT1BfRElSRUNUSU9OQUxf
Rk9STUFUID0gMTYsDQogICAgICAgIERJUl9OT05fU1BBQ0lOR19NQVJLID0gMTcsDQogICAgICAg
IEJPVU5EQVJZX05FVVRSQUwgPSAxOA0KICAgIH07DQoNCg0KDQoNCg0KDQoNCiAgICBlbnVtIEVD
ZWxsV2lkdGhzDQogICAgew0KICAgICAgICBaRVJPX1dJRFRIID0gMCwNCiAgICAgICAgSEFMRl9X
SURUSCA9IDEsDQogICAgICAgIEZVTExfV0lEVEggPSAyLA0KICAgICAgICBORVVUUkFMID0gMw0K
ICAgIH07DQojIDMwMSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5oIg0KICAgIHN0YXRpYyBp
bmxpbmUgVUJvb2wgaXNTaW5nbGUoVUNoYXIgYyk7DQojIDMxMiAiLi4vY29tbW9uL3VuaWNvZGUv
dW5pY29kZS5oIg0KICAgIHN0YXRpYyBpbmxpbmUgVUJvb2wgaXNMZWFkKFVDaGFyIGMpOw0KIyAz
MjMgIi4uL2NvbW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5lIFVCb29s
IGlzVHJhaWwoVUNoYXIgYyk7DQojIDMzNiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5oIg0K
ICAgIHN0YXRpYyBpbmxpbmUgVUJvb2wgaXNTdXJyb2dhdGUoVUNoYXIzMiBjKTsNCiMgMzUxICIu
Li9jb21tb24vdW5pY29kZS91bmljb2RlLmgiDQogICAgc3RhdGljIGlubGluZSBVQm9vbCBpc1Vu
aWNvZGVDaGFyKFVDaGFyMzIgYyk7DQojIDM2NSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5o
Ig0KICAgIHN0YXRpYyBpbmxpbmUgVUJvb2wgaXNFcnJvcihVQ2hhcjMyIGMpOw0KIyAzNzcgIi4u
L2NvbW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5lIFVCb29sIGlzVmFs
aWQoVUNoYXIzMiBjKTsNCiMgMzkxICIuLi9jb21tb24vdW5pY29kZS91bmljb2RlLmgiDQogICAg
c3RhdGljIGlubGluZSBVQm9vbCBuZWVkTXVsdGlwbGVVQ2hhcihVQ2hhcjMyIGMpOw0KIyA0MDIg
Ii4uL2NvbW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5lIGludDMyX3Qg
Y2hhckxlbmd0aChVQ2hhcjMyIGMpOw0KIyA0MTggIi4uL2NvbW1vbi91bmljb2RlL3VuaWNvZGUu
aCINCiAgICBzdGF0aWMgaW5saW5lIGludDMyX3QgYXJyYXlTaXplKGludDMyX3Qgc2l6ZSk7DQoj
IDQzMyAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5oIg0KICAgIHN0YXRpYyBpbmxpbmUgVUJv
b2wgaXNMb3dlckNhc2UoVUNoYXIzMiBjaCk7DQojIDQ0NyAiLi4vY29tbW9uL3VuaWNvZGUvdW5p
Y29kZS5oIg0KICAgIHN0YXRpYyBpbmxpbmUgVUJvb2wgaXNVcHBlckNhc2UoVUNoYXIzMiBjaCk7
DQojIDQ2MSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5oIg0KICAgIHN0YXRpYyBpbmxpbmUg
VUJvb2wgaXNUaXRsZUNhc2UoVUNoYXIzMiBjaCk7DQojIDQ3NSAiLi4vY29tbW9uL3VuaWNvZGUv
dW5pY29kZS5oIg0KICAgIHN0YXRpYyBpbmxpbmUgVUJvb2wgaXNEaWdpdChVQ2hhcjMyIGNoKTsN
CiMgNDkzICIuLi9jb21tb24vdW5pY29kZS91bmljb2RlLmgiDQogICAgc3RhdGljIGlubGluZSBV
Qm9vbCBpc0RlZmluZWQoVUNoYXIzMiBjaCk7DQojIDUwNiAiLi4vY29tbW9uL3VuaWNvZGUvdW5p
Y29kZS5oIg0KICAgIHN0YXRpYyBpbmxpbmUgVUJvb2wgaXNDb250cm9sKFVDaGFyMzIgY2gpOw0K
IyA1MTkgIi4uL2NvbW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5lIFVC
b29sIGlzUHJpbnRhYmxlKFVDaGFyMzIgY2gpOw0KIyA1MzMgIi4uL2NvbW1vbi91bmljb2RlL3Vu
aWNvZGUuaCINCiAgICAgc3RhdGljIGlubGluZSBVQm9vbCBpc0Jhc2VGb3JtKFVDaGFyMzIgY2gp
Ow0KIyA1NTEgIi4uL2NvbW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5l
IFVCb29sIGlzTGV0dGVyKFVDaGFyMzIgY2gpOw0KIyA1NzQgIi4uL2NvbW1vbi91bmljb2RlL3Vu
aWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5lIFVCb29sIGlzSmF2YUlkZW50aWZpZXJTdGFydChV
Q2hhcjMyIGNoKTsNCiMgNjA1ICIuLi9jb21tb24vdW5pY29kZS91bmljb2RlLmgiDQogICAgc3Rh
dGljIGlubGluZSBVQm9vbCBpc0phdmFJZGVudGlmaWVyUGFydChVQ2hhcjMyIGNoKTsNCiMgNjIy
ICIuLi9jb21tb24vdW5pY29kZS91bmljb2RlLmgiDQogICAgc3RhdGljIGlubGluZSBVQm9vbCBp
c1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoVUNoYXIzMiBjaCk7DQojIDY1MSAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pY29kZS5oIg0KICAgIHN0YXRpYyBpbmxpbmUgVUJvb2wgaXNVbmljb2RlSWRlbnRp
ZmllclBhcnQoVUNoYXIzMiBjaCk7DQojIDY3OSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5o
Ig0KICAgIHN0YXRpYyBpbmxpbmUgVUJvb2wgaXNJZGVudGlmaWVySWdub3JhYmxlKFVDaGFyMzIg
Y2gpOw0KIyA3MDYgIi4uL2NvbW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgIHN0YXRpYyBpbmxp
bmUgVUNoYXIzMiB0b0xvd2VyQ2FzZShVQ2hhcjMyIGNoKTsNCiMgNzMwICIuLi9jb21tb24vdW5p
Y29kZS91bmljb2RlLmgiDQogICAgc3RhdGljIGlubGluZSBVQ2hhcjMyIHRvVXBwZXJDYXNlKFVD
aGFyMzIgY2gpOw0KIyA3NTAgIi4uL2NvbW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0
aWMgaW5saW5lIFVDaGFyMzIgdG9UaXRsZUNhc2UoVUNoYXIzMiBjaCk7DQojIDc2NiAiLi4vY29t
bW9uL3VuaWNvZGUvdW5pY29kZS5oIg0KICAgIHN0YXRpYyBpbmxpbmUgVUNoYXIzMg0KICAgIGZv
bGRDYXNlKFVDaGFyMzIgYywgdWludDMyX3Qgb3B0aW9ucyk7DQojIDc3OCAiLi4vY29tbW9uL3Vu
aWNvZGUvdW5pY29kZS5oIg0KICAgIHN0YXRpYyBpbmxpbmUgVUJvb2wgaXNTcGFjZUNoYXIoVUNo
YXIzMiBjaCk7DQojIDgwOSAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5oIg0KICAgIHN0YXRp
YyBpbmxpbmUgVUJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyMzIgY2gpOw0KIyA4NDYgIi4uL2NvbW1v
bi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5lIGludDhfdCBnZXRUeXBlKFVD
aGFyMzIgY2gpOw0KIyA4NTYgIi4uL2NvbW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0
aWMgaW5saW5lIHVpbnQ4X3QgZ2V0Q29tYmluaW5nQ2xhc3MoVUNoYXIzMiBjKTsNCiMgODcwICIu
Li9jb21tb24vdW5pY29kZS91bmljb2RlLmgiDQogICAgc3RhdGljIGlubGluZSBFRGlyZWN0aW9u
UHJvcGVydHkgY2hhcmFjdGVyRGlyZWN0aW9uKFVDaGFyMzIgY2gpOw0KIyA4ODMgIi4uL2NvbW1v
bi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5lIFVCb29sIGlzTWlycm9yZWQo
VUNoYXIzMiBjKTsNCiMgOTAyICIuLi9jb21tb24vdW5pY29kZS91bmljb2RlLmgiDQogICAgc3Rh
dGljIGlubGluZSBVQ2hhcjMyIGNoYXJNaXJyb3IoVUNoYXIzMiBjKTsNCiMgOTExICIuLi9jb21t
b24vdW5pY29kZS91bmljb2RlLmgiDQogICAgc3RhdGljIGlubGluZSBFVW5pY29kZVNjcmlwdCBn
ZXRTY3JpcHQoVUNoYXIzMiBjaCk7DQojIDk2NiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5o
Ig0KICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgZ2V0Q2VsbFdpZHRoKFVDaGFyMzIgY2gpOw0K
IyA5OTYgIi4uL2NvbW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5lIGlu
dDMyX3QNCiAgICBnZXRDaGFyTmFtZSh1aW50MzJfdCBjb2RlLA0KICAgICAgICAgICAgICAgIGNo
YXIgKmJ1ZmZlciwgaW50MzJfdCBidWZmZXJMZW5ndGgsDQogICAgICAgICAgICAgICAgVUNoYXJO
YW1lQ2hvaWNlIG5hbWVDaG9pY2U9VV9VTklDT0RFX0NIQVJfTkFNRSk7DQojIDEwMTIgIi4uL2Nv
bW1vbi91bmljb2RlL3VuaWNvZGUuaCINCiAgICBzdGF0aWMgaW5saW5lIGludDMyX3QgZGlnaXRW
YWx1ZShVQ2hhcjMyIGNoKTsNCiMgMTA1MiAiLi4vY29tbW9uL3VuaWNvZGUvdW5pY29kZS5oIg0K
ICAgIHN0YXRpYyBpbmxpbmUgaW50MzJfdCBkaWdpdChVQ2hhcjMyIGNoLCBpbnQ4X3QgcmFkaXgp
Ow0KIyAxMDgyICIuLi9jb21tb24vdW5pY29kZS91bmljb2RlLmgiDQogICAgc3RhdGljIGlubGlu
ZSBVQ2hhcjMyIGZvckRpZ2l0KGludDMyX3QgZGlnaXQsIGludDhfdCByYWRpeCk7DQoNCg0KDQoN
Cg0KDQoNCiAgICBzdGF0aWMgdm9pZCBnZXRVbmljb2RlVmVyc2lvbihVVmVyc2lvbkluZm8gaW5m
byk7DQoNCnByb3RlY3RlZDoNCg0KDQoNCg0KDQogICAgVW5pY29kZSgpOw0KDQoNCg0KICAgIFVu
aWNvZGUoY29uc3QgVW5pY29kZSAmb3RoZXIpOw0KICAgIH5Vbmljb2RlKCk7DQoNCg0KDQoNCiAg
ICBjb25zdCBVbmljb2RlICZvcGVyYXRvcj0oY29uc3QgVW5pY29kZSAmb3RoZXIpOw0KfTsNCg0K
DQoNCmlubGluZSBVQm9vbA0KVW5pY29kZTo6aXNTaW5nbGUoVUNoYXIgYykgew0KICAgIHJldHVy
biAhKCgoYykmMHhmZmZmZjgwMCk9PTB4ZDgwMCk7DQp9DQoNCmlubGluZSBVQm9vbA0KVW5pY29k
ZTo6aXNMZWFkKFVDaGFyIGMpIHsNCiAgICByZXR1cm4gKCgoYykmMHhmZmZmZmMwMCk9PTB4ZDgw
MCk7DQp9DQoNCmlubGluZSBVQm9vbA0KVW5pY29kZTo6aXNUcmFpbChVQ2hhciBjKSB7DQogICAg
cmV0dXJuICgoKGMpJjB4ZmZmZmZjMDApPT0weGRjMDApOw0KfQ0KDQppbmxpbmUgVUJvb2wNClVu
aWNvZGU6OmlzU3Vycm9nYXRlKFVDaGFyMzIgYykgew0KICAgIHJldHVybiAoKChjKSYweGZmZmZm
ODAwKT09MHhkODAwKTsNCn0NCg0KaW5saW5lIFVCb29sDQpVbmljb2RlOjppc1VuaWNvZGVDaGFy
KFVDaGFyMzIgYykgew0KICAgIHJldHVybiAoKHVpbnQzMl90KShjKTwweGQ4MDAgfHwgKCh1aW50
MzJfdCkoYyk+MHhkZmZmICYmICh1aW50MzJfdCkoYyk8PTB4MTBmZmZmICYmICEoKGMpPj0weGZk
ZDAgJiYgKCh1aW50MzJfdCkoYyk8PTB4ZmRlZiB8fCAoKGMpJjB4ZmZmZSk9PTB4ZmZmZSkgJiYg
KHVpbnQzMl90KShjKTw9MHgxMGZmZmYpKSk7DQp9DQoNCmlubGluZSBVQm9vbA0KVW5pY29kZTo6
aXNFcnJvcihVQ2hhcjMyIGMpIHsNCiAgICByZXR1cm4gKCgoYykmMHhmZmZlKT09MHhmZmZlIHx8
IChjKT09MHgxNSB8fCAoYyk9PTB4OWYpOw0KfQ0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGU6Omlz
VmFsaWQoVUNoYXIzMiBjKSB7DQogICAgcmV0dXJuICgoKHVpbnQzMl90KShjKTwweGQ4MDAgfHwg
KCh1aW50MzJfdCkoYyk+MHhkZmZmICYmICh1aW50MzJfdCkoYyk8PTB4MTBmZmZmICYmICEoKGMp
Pj0weGZkZDAgJiYgKCh1aW50MzJfdCkoYyk8PTB4ZmRlZiB8fCAoKGMpJjB4ZmZmZSk9PTB4ZmZm
ZSkgJiYgKHVpbnQzMl90KShjKTw9MHgxMGZmZmYpKSkgJiYgKGMpIT0weDE1ICYmIChjKSE9MHg5
Zik7DQp9DQoNCmlubGluZSBVQm9vbA0KVW5pY29kZTo6bmVlZE11bHRpcGxlVUNoYXIoVUNoYXIz
MiBjKSB7DQogICAgcmV0dXJuICgodWludDMyX3QpKGMpPjB4ZmZmZik7DQp9DQoNCmlubGluZSBp
bnQzMl90DQpVbmljb2RlOjpjaGFyTGVuZ3RoKFVDaGFyMzIgYykgew0KICAgIHJldHVybiAoKHVp
bnQzMl90KShjKTw9MHhmZmZmID8gMSA6IDIpOw0KfQ0KDQppbmxpbmUgaW50MzJfdA0KVW5pY29k
ZTo6YXJyYXlTaXplKGludDMyX3Qgc2l6ZSkgew0KICAgIHJldHVybiAoc2l6ZSk7DQp9DQoNCg0K
aW5saW5lIFVCb29sDQpVbmljb2RlOjppc0xvd2VyQ2FzZShVQ2hhcjMyIGNoKSB7DQogICAgcmV0
dXJuIHVfaXNsb3dlcl8yXzIoY2gpOw0KfQ0KDQoNCmlubGluZSBVQm9vbA0KVW5pY29kZTo6aXNV
cHBlckNhc2UoVUNoYXIzMiBjaCkgew0KICAgIHJldHVybiB1X2lzdXBwZXJfMl8yKGNoKTsNCn0N
Cg0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGU6OmlzVGl0bGVDYXNlKFVDaGFyMzIgY2gpIHsNCiAg
ICByZXR1cm4gdV9pc3RpdGxlXzJfMihjaCk7DQp9DQoNCg0KaW5saW5lIFVCb29sDQpVbmljb2Rl
Ojppc0RpZ2l0KFVDaGFyMzIgY2gpIHsNCiAgICByZXR1cm4gdV9pc2RpZ2l0XzJfMihjaCk7DQp9
DQoNCg0KaW5saW5lIFVCb29sDQpVbmljb2RlOjppc0RlZmluZWQoVUNoYXIzMiBjaCkgew0KICAg
IHJldHVybiB1X2lzZGVmaW5lZF8yXzIoY2gpOw0KfQ0KDQoNCmlubGluZSBVQm9vbA0KVW5pY29k
ZTo6aXNDb250cm9sKFVDaGFyMzIgY2gpIHsNCiAgICByZXR1cm4gdV9pc2NudHJsXzJfMihjaCk7
DQp9DQoNCg0KaW5saW5lIFVCb29sDQpVbmljb2RlOjppc1ByaW50YWJsZShVQ2hhcjMyIGNoKSB7
DQogICAgcmV0dXJuIHVfaXNwcmludF8yXzIoY2gpOw0KfQ0KDQoNCmlubGluZSBVQm9vbA0KVW5p
Y29kZTo6aXNCYXNlRm9ybShVQ2hhcjMyIGNoKSB7DQogICAgcmV0dXJuIHVfaXNiYXNlXzJfMihj
aCk7DQp9DQoNCg0KaW5saW5lIFVCb29sDQpVbmljb2RlOjppc0xldHRlcihVQ2hhcjMyIGNoKSB7
DQogICAgcmV0dXJuIHVfaXNhbHBoYV8yXzIoY2gpOw0KfQ0KDQoNCmlubGluZSBVQm9vbA0KVW5p
Y29kZTo6aXNKYXZhSWRlbnRpZmllclN0YXJ0KFVDaGFyMzIgY2gpIHsNCiAgICByZXR1cm4gdV9p
c0phdmFJRFN0YXJ0XzJfMihjaCk7DQp9DQoNCg0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGU6Omlz
SmF2YUlkZW50aWZpZXJQYXJ0KFVDaGFyMzIgY2gpIHsNCiAgICByZXR1cm4gdV9pc0phdmFJRFBh
cnRfMl8yKGNoKTsNCn0NCg0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGU6OmlzVW5pY29kZUlkZW50
aWZpZXJTdGFydChVQ2hhcjMyIGNoKSB7DQogICAgcmV0dXJuIHVfaXNJRFN0YXJ0XzJfMihjaCk7
DQp9DQoNCg0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGU6OmlzVW5pY29kZUlkZW50aWZpZXJQYXJ0
KFVDaGFyMzIgY2gpIHsNCiAgICByZXR1cm4gdV9pc0lEUGFydF8yXzIoY2gpOw0KfQ0KDQoNCmlu
bGluZSBVQm9vbA0KVW5pY29kZTo6aXNJZGVudGlmaWVySWdub3JhYmxlKFVDaGFyMzIgY2gpIHsN
CiAgICByZXR1cm4gdV9pc0lESWdub3JhYmxlXzJfMihjaCk7DQp9DQoNCg0KaW5saW5lIFVDaGFy
MzINClVuaWNvZGU6OnRvTG93ZXJDYXNlKFVDaGFyMzIgY2gpIHsNCiAgICByZXR1cm4gdV90b2xv
d2VyXzJfMihjaCk7DQp9DQoNCg0KaW5saW5lIFVDaGFyMzINClVuaWNvZGU6OnRvVXBwZXJDYXNl
KFVDaGFyMzIgY2gpIHsNCiAgICByZXR1cm4gdV90b3VwcGVyXzJfMihjaCk7DQp9DQoNCg0KaW5s
aW5lIFVDaGFyMzINClVuaWNvZGU6OnRvVGl0bGVDYXNlKFVDaGFyMzIgY2gpIHsNCiAgICByZXR1
cm4gdV90b3RpdGxlXzJfMihjaCk7DQp9DQoNCg0KaW5saW5lIFVDaGFyMzINClVuaWNvZGU6OmZv
bGRDYXNlKFVDaGFyMzIgY2gsIHVpbnQzMl90IG9wdGlvbnMpIHsNCiAgICByZXR1cm4gdV9mb2xk
Q2FzZV8yXzIoY2gsIG9wdGlvbnMpOw0KfQ0KDQoNCmlubGluZSBVQm9vbA0KVW5pY29kZTo6aXNT
cGFjZUNoYXIoVUNoYXIzMiBjaCkgew0KICAgIHJldHVybiB1X2lzc3BhY2VfMl8yKGNoKTsNCn0N
Cg0KDQppbmxpbmUgVUJvb2wNClVuaWNvZGU6OmlzV2hpdGVzcGFjZShVQ2hhcjMyIGNoKSB7DQog
ICAgcmV0dXJuIHVfaXNXaGl0ZXNwYWNlXzJfMihjaCk7DQp9DQoNCg0KaW5saW5lIGludDhfdA0K
VW5pY29kZTo6Z2V0VHlwZShVQ2hhcjMyIGNoKSB7DQogICAgcmV0dXJuIHVfY2hhclR5cGVfMl8y
KGNoKTsNCn0NCg0KaW5saW5lIHVpbnQ4X3QNClVuaWNvZGU6OmdldENvbWJpbmluZ0NsYXNzKFVD
aGFyMzIgYykgew0KICAgIHJldHVybiB1X2dldENvbWJpbmluZ0NsYXNzXzJfMihjKTsNCn0NCg0K
DQppbmxpbmUgVW5pY29kZTo6RURpcmVjdGlvblByb3BlcnR5DQpVbmljb2RlOjpjaGFyYWN0ZXJE
aXJlY3Rpb24oVUNoYXIzMiBjaCkgew0KICAgIHJldHVybiAoRURpcmVjdGlvblByb3BlcnR5KXVf
Y2hhckRpcmVjdGlvbl8yXzIoY2gpOw0KfQ0KDQoNCmlubGluZSBVQm9vbA0KVW5pY29kZTo6aXNN
aXJyb3JlZChVQ2hhcjMyIGNoKSB7DQogICAgcmV0dXJuIHVfaXNNaXJyb3JlZF8yXzIoY2gpOw0K
fQ0KDQoNCmlubGluZSBVQ2hhcjMyDQpVbmljb2RlOjpjaGFyTWlycm9yKFVDaGFyMzIgY2gpIHsN
CiAgICByZXR1cm4gdV9jaGFyTWlycm9yXzJfMihjaCk7DQp9DQoNCg0KaW5saW5lIFVuaWNvZGU6
OkVVbmljb2RlU2NyaXB0DQpVbmljb2RlOjpnZXRTY3JpcHQoVUNoYXIzMiBjaCkgew0KICAgIHJl
dHVybiAoRVVuaWNvZGVTY3JpcHQpIHVibG9ja19nZXRDb2RlXzJfMihjaCk7DQp9DQoNCg0KaW5s
aW5lIHVpbnQxNl90DQpVbmljb2RlOjpnZXRDZWxsV2lkdGgoVUNoYXIzMiBjaCkgew0KICAgIHJl
dHVybiB1X2NoYXJDZWxsV2lkdGhfMl8yKGNoKTsNCn0NCg0KaW5saW5lIGludDMyX3QNClVuaWNv
ZGU6OmdldENoYXJOYW1lKHVpbnQzMl90IGNvZGUsDQogICAgICAgICAgICAgICAgICAgICBjaGFy
ICpidWZmZXIsIGludDMyX3QgYnVmZmVyTGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICAgVUNo
YXJOYW1lQ2hvaWNlIG5hbWVDaG9pY2UpIHsNCiAgICBVRXJyb3JDb2RlIGVycm9yQ29kZT1VX1pF
Uk9fRVJST1I7DQogICAgaW50MzJfdCBsZW5ndGg9dV9jaGFyTmFtZV8yXzIoY29kZSwgbmFtZUNo
b2ljZSwgYnVmZmVyLCBidWZmZXJMZW5ndGgsICZlcnJvckNvZGUpOw0KICAgIHJldHVybiBVX1NV
Q0NFU1MoZXJyb3JDb2RlKSA/IGxlbmd0aCA6IDA7DQp9DQoNCmlubGluZSBpbnQzMl90DQpVbmlj
b2RlOjpkaWdpdFZhbHVlKFVDaGFyMzIgY2gpIHsNCiAgICByZXR1cm4gdV9jaGFyRGlnaXRWYWx1
ZV8yXzIoY2gpOw0KfQ0KDQppbmxpbmUgaW50MzJfdA0KVW5pY29kZTo6ZGlnaXQoVUNoYXIzMiBj
aCwgaW50OF90IHJhZGl4KSB7DQogICAgcmV0dXJuIHVfZGlnaXRfMl8yKGNoLCByYWRpeCk7DQp9
DQoNCmlubGluZSBVQ2hhcjMyDQpVbmljb2RlOjpmb3JEaWdpdChpbnQzMl90IGRpZ2l0LCBpbnQ4
X3QgcmFkaXgpIHsNCiAgICByZXR1cm4gdV9mb3JEaWdpdF8yXzIoZGlnaXQsIHJhZGl4KTsNCn0N
Cg0KaW5saW5lIHZvaWQNClVuaWNvZGU6OmdldFVuaWNvZGVWZXJzaW9uKFVWZXJzaW9uSW5mbyB2
ZXJzaW9uQXJyYXkpIHsNCiAgICB1X2dldFVuaWNvZGVWZXJzaW9uXzJfMih2ZXJzaW9uQXJyYXkp
Ow0KfQ0KfQ0KIyAxNyAiY2FuaXRlci5oIiAyDQoNCg0KDQpuYW1lc3BhY2UgaWN1XzJfMiB7DQoN
CmNsYXNzIEhhc2h0YWJsZTsNCiMgNTcgImNhbml0ZXIuaCINCmNsYXNzIENhbm9uaWNhbEl0ZXJh
dG9yIDogcHVibGljIFVPYmplY3Qgew0KcHVibGljOg0KDQoNCg0KDQogICAgQ2Fub25pY2FsSXRl
cmF0b3IoVW5pY29kZVN0cmluZyBzb3VyY2UsIFVFcnJvckNvZGUgJnN0YXR1cyk7DQoNCg0KDQoN
CiAgICB+Q2Fub25pY2FsSXRlcmF0b3IoKTsNCg0KDQoNCg0KICAgIFVuaWNvZGVTdHJpbmcgZ2V0
U291cmNlKCk7DQoNCg0KDQoNCiAgICB2b2lkIHJlc2V0KCk7DQoNCg0KDQoNCg0KICAgIFVuaWNv
ZGVTdHJpbmcgbmV4dCgpOw0KDQoNCg0KDQoNCg0KICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFVu
aWNvZGVTdHJpbmcgJm5ld1NvdXJjZSwgVUVycm9yQ29kZSAmc3RhdHVzKTsNCiMgMTAxICJjYW5p
dGVyLmgiDQogICAgc3RhdGljIHZvaWQgcGVybXV0ZShVbmljb2RlU3RyaW5nICZzb3VyY2UsIFVC
b29sIHNraXBaZXJvcywgSGFzaHRhYmxlICpyZXN1bHQsIFVFcnJvckNvZGUgJnN0YXR1cyk7DQoN
Cg0KDQoNCg0KDQogICAgdmlydHVhbCBpbmxpbmUgVUNsYXNzSUQgZ2V0RHluYW1pY0NsYXNzSUQo
KSBjb25zdCB7IHJldHVybiBnZXRTdGF0aWNDbGFzc0lEKCk7IH0NCg0KDQoNCg0KDQoNCiAgICBz
dGF0aWMgaW5saW5lIFVDbGFzc0lEIGdldFN0YXRpY0NsYXNzSUQoKSB7IHJldHVybiAoVUNsYXNz
SUQpJmZnQ2xhc3NJRDsgfQ0KDQpwcml2YXRlOg0KDQoNCg0KICAgIFVuaWNvZGVTdHJpbmcgc291
cmNlOw0KICAgIFVCb29sIGRvbmU7DQoNCg0KDQogICAgVW5pY29kZVN0cmluZyAqKnBpZWNlczsN
CiAgICBpbnQzMl90IHBpZWNlc19sZW5ndGg7DQogICAgaW50MzJfdCAqcGllY2VzX2xlbmd0aHM7
DQoNCg0KICAgIGludDMyX3QgKmN1cnJlbnQ7DQogICAgaW50MzJfdCBjdXJyZW50X2xlbmd0aDsN
Cg0KDQogICAgVW5pY29kZVN0cmluZyBidWZmZXI7DQoNCg0KICAgIFVuaWNvZGVTdHJpbmcgKmdl
dEVxdWl2YWxlbnRzKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNlZ21lbnQsIGludDMyX3QgJnJlc3Vs
dF9sZW4sIFVFcnJvckNvZGUgJnN0YXR1cyk7DQoNCg0KICAgIEhhc2h0YWJsZSAqZ2V0RXF1aXZh
bGVudHMyKGNvbnN0IFVDaGFyICpzZWdtZW50LCBpbnQzMl90IHNlZ0xlbiwgVUVycm9yQ29kZSAm
c3RhdHVzKTsNCiMgMTUwICJjYW5pdGVyLmgiDQogICAgSGFzaHRhYmxlICpleHRyYWN0KFVDaGFy
MzIgY29tcCwgY29uc3QgVUNoYXIgKnNlZ21lbnQsIGludDMyX3Qgc2VnTGVuLCBpbnQzMl90IHNl
Z21lbnRQb3MsIFVFcnJvckNvZGUgJnN0YXR1cyk7DQoNCg0KICAgIHZvaWQgY2xlYW5QaWVjZXMo
KTsNCg0KDQoNCg0KDQogICAgc3RhdGljIGNvbnN0IGNoYXIgZmdDbGFzc0lEOw0KfTsNCn0NCiMg
MzEgInVjb2xfZWxtLmNwcCIgMg0KIyAxICIuLi9jb21tb24vY21lbW9yeS5oIiAxDQojIDI4ICIu
Li9jb21tb24vY21lbW9yeS5oIg0KIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMw0KIyAx
NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzDQojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1w
Yy1jeWd3aW4vMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMw0KIyAxNSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAyIDMNCg0KIyAxICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDEgMw0KIyA5ICIv
dXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMNCmV4dGVybiAiQyIgew0KIyAxOSAiL3Vzci9pbmNs
dWRlL3N5cy9yZWVudC5oIiAzDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19VTG9uZzsNCiMgNDAg
Ii91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMw0Kc3RydWN0IF9CaWdpbnQNCnsNCiAgc3RydWN0
IF9CaWdpbnQgKl9uZXh0Ow0KICBpbnQgX2ssIF9tYXh3ZHMsIF9zaWduLCBfd2RzOw0KICBfX1VM
b25nIF94WzFdOw0KfTsNCg0KDQpzdHJ1Y3QgX190bQ0Kew0KICBpbnQgX190bV9zZWM7DQogIGlu
dCBfX3RtX21pbjsNCiAgaW50IF9fdG1faG91cjsNCiAgaW50IF9fdG1fbWRheTsNCiAgaW50IF9f
dG1fbW9uOw0KICBpbnQgX190bV95ZWFyOw0KICBpbnQgX190bV93ZGF5Ow0KICBpbnQgX190bV95
ZGF5Ow0KICBpbnQgX190bV9pc2RzdDsNCn07DQojIDY4ICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50
LmgiIDMNCnN0cnVjdCBfYXRleGl0IHsNCiAgICAgICAgc3RydWN0IF9hdGV4aXQgKl9uZXh0Ow0K
ICAgICAgICBpbnQgX2luZDsNCiAgICAgICAgdm9pZCAoKl9mbnNbMzJdKSh2b2lkKTsNCiAgICAg
ICAgdm9pZCAqX2ZuYXJnc1szMl07DQogICAgICAgIF9fVUxvbmcgX2ZudHlwZXM7DQp9Ow0KIyA5
MSAiL3Vzci9pbmNsdWRlL3N5cy9yZWVudC5oIiAzDQpzdHJ1Y3QgX19zYnVmIHsNCiAgICAgICAg
dW5zaWduZWQgY2hhciAqX2Jhc2U7DQogICAgICAgIGludCBfc2l6ZTsNCn07DQoNCg0KDQoNCg0K
DQp0eXBlZGVmIGxvbmcgX2Zwb3NfdDsNCiMgMTU2ICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50Lmgi
IDMNCnN0cnVjdCBfX3NGSUxFIHsNCiAgdW5zaWduZWQgY2hhciAqX3A7DQogIGludCBfcjsNCiAg
aW50IF93Ow0KICBzaG9ydCBfZmxhZ3M7DQogIHNob3J0IF9maWxlOw0KICBzdHJ1Y3QgX19zYnVm
IF9iZjsNCiAgaW50IF9sYmZzaXplOw0KDQoNCg0KDQoNCg0KICB2b2lkICogX2Nvb2tpZTsNCg0K
ICBfc3NpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSAoKl9yZWFkKSAodm9pZCAqIF9j
b29raWUsIGNoYXIgKl9idWYsIGludCBfbik7DQogIF9zc2l6ZV90IF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpICgqX3dyaXRlKSAodm9pZCAqIF9jb29raWUsIGNvbnN0IGNoYXIgKl9idWYsIGlu
dCBfbik7DQoNCiAgX2Zwb3NfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSAoKl9zZWVrKSAo
dm9pZCAqIF9jb29raWUsIF9mcG9zX3QgX29mZnNldCwgaW50IF93aGVuY2UpOw0KICBpbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgKCpfY2xvc2UpICh2b2lkICogX2Nvb2tpZSk7DQoNCg0K
ICBzdHJ1Y3QgX19zYnVmIF91YjsNCiAgdW5zaWduZWQgY2hhciAqX3VwOw0KICBpbnQgX3VyOw0K
DQoNCiAgdW5zaWduZWQgY2hhciBfdWJ1ZlszXTsNCiAgdW5zaWduZWQgY2hhciBfbmJ1ZlsxXTsN
Cg0KDQogIHN0cnVjdCBfX3NidWYgX2xiOw0KDQoNCiAgaW50IF9ibGtzaXplOw0KICBpbnQgX29m
ZnNldDsNCg0KDQogIHN0cnVjdCBfcmVlbnQgKl9kYXRhOw0KDQoNCg0KICBfZmxvY2tfdCBfbG9j
azsNCg0KfTsNCiMgMjQ5ICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMNCnR5cGVkZWYgc3Ry
dWN0IF9fc0ZJTEUgX19GSUxFOw0KDQoNCnN0cnVjdCBfZ2x1ZQ0Kew0KICBzdHJ1Y3QgX2dsdWUg
Kl9uZXh0Ow0KICBpbnQgX25pb2JzOw0KICBfX0ZJTEUgKl9pb2JzOw0KfTsNCiMgMjgwICIvdXNy
L2luY2x1ZGUvc3lzL3JlZW50LmgiIDMNCnN0cnVjdCBfcmFuZDQ4IHsNCiAgdW5zaWduZWQgc2hv
cnQgX3NlZWRbM107DQogIHVuc2lnbmVkIHNob3J0IF9tdWx0WzNdOw0KICB1bnNpZ25lZCBzaG9y
dCBfYWRkOw0KDQoNCg0KDQp9Ow0KIyA1MzIgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMw0K
c3RydWN0IF9yZWVudA0Kew0KICBpbnQgX2Vycm5vOw0KDQoNCg0KDQogIF9fRklMRSAqX3N0ZGlu
LCAqX3N0ZG91dCwgKl9zdGRlcnI7DQoNCiAgaW50IF9pbmM7DQogIGNoYXIgX2VtZXJnZW5jeVsy
NV07DQoNCiAgaW50IF9jdXJyZW50X2NhdGVnb3J5Ow0KICBjb25zdCBjaGFyICpfY3VycmVudF9s
b2NhbGU7DQoNCiAgaW50IF9fc2RpZGluaXQ7DQoNCiAgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Nk
ZWNsX18pKSAoKl9fY2xlYW51cCkgKHN0cnVjdCBfcmVlbnQgKik7DQoNCg0KICBzdHJ1Y3QgX0Jp
Z2ludCAqX3Jlc3VsdDsNCiAgaW50IF9yZXN1bHRfazsNCiAgc3RydWN0IF9CaWdpbnQgKl9wNXM7
DQogIHN0cnVjdCBfQmlnaW50ICoqX2ZyZWVsaXN0Ow0KDQoNCiAgaW50IF9jdnRsZW47DQogIGNo
YXIgKl9jdnRidWY7DQoNCiAgdW5pb24NCiAgICB7DQogICAgICBzdHJ1Y3QNCiAgICAgICAgew0K
ICAgICAgICAgIHVuc2lnbmVkIGludCBfdW51c2VkX3JhbmQ7DQogICAgICAgICAgY2hhciAqIF9z
dHJ0b2tfbGFzdDsNCiAgICAgICAgICBjaGFyIF9hc2N0aW1lX2J1ZlsyNl07DQogICAgICAgICAg
c3RydWN0IF9fdG0gX2xvY2FsdGltZV9idWY7DQogICAgICAgICAgaW50IF9nYW1tYV9zaWduZ2Ft
Ow0KICAgICAgICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9uZyBsb25nIF9yYW5kX25leHQ7
DQogICAgICAgICAgc3RydWN0IF9yYW5kNDggX3I0ODsNCiAgICAgICAgICBfbWJzdGF0ZV90IF9t
Ymxlbl9zdGF0ZTsNCiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnRvd2Nfc3RhdGU7DQogICAgICAg
ICAgX21ic3RhdGVfdCBfd2N0b21iX3N0YXRlOw0KICAgICAgICAgIGNoYXIgX2w2NGFfYnVmWzhd
Ow0KICAgICAgICAgIGNoYXIgX3NpZ25hbF9idWZbMjRdOw0KICAgICAgICAgIGludCBfZ2V0ZGF0
ZV9lcnI7DQogICAgICAgICAgX21ic3RhdGVfdCBfbWJybGVuX3N0YXRlOw0KICAgICAgICAgIF9t
YnN0YXRlX3QgX21icnRvd2Nfc3RhdGU7DQogICAgICAgICAgX21ic3RhdGVfdCBfbWJzcnRvd2Nz
X3N0YXRlOw0KICAgICAgICAgIF9tYnN0YXRlX3QgX3djcnRvbWJfc3RhdGU7DQogICAgICAgICAg
X21ic3RhdGVfdCBfd2NzcnRvbWJzX3N0YXRlOw0KICAgICAgICB9IF9yZWVudDsNCg0KDQoNCiAg
ICAgIHN0cnVjdA0KICAgICAgICB7DQoNCiAgICAgICAgICB1bnNpZ25lZCBjaGFyICogX25leHRm
WzMwXTsNCiAgICAgICAgICB1bnNpZ25lZCBpbnQgX25tYWxsb2NbMzBdOw0KICAgICAgICB9IF91
bnVzZWQ7DQogICAgfSBfbmV3Ow0KDQoNCiAgc3RydWN0IF9hdGV4aXQgKl9hdGV4aXQ7DQogIHN0
cnVjdCBfYXRleGl0IF9hdGV4aXQwOw0KDQoNCiAgdm9pZCAoKiooX3NpZ19mdW5jKSkoaW50KTsN
Cg0KDQoNCg0KICBzdHJ1Y3QgX2dsdWUgX19zZ2x1ZTsNCiAgX19GSUxFIF9fc2ZbM107DQp9Ow0K
IyA3MjggIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMw0KZXh0ZXJuIHN0cnVjdCBfcmVlbnQg
Kl9pbXB1cmVfcHRyIDsNCg0Kdm9pZCBfcmVjbGFpbV9yZWVudCAoc3RydWN0IF9yZWVudCAqKTsN
CiMgNzQ2ICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMNCn0NCiMgMTcgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMiAzDQojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3N0ZGxpYi5oIiAxIDMN
CiMgMTggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzDQoNCiMgMSAiL3Vzci9pbmNsdWRlL2Fs
bG9jYS5oIiAxIDMNCiMgMjAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzDQoNCg0KZXh0ZXJu
ICJDIiB7DQoNCnR5cGVkZWYgc3RydWN0DQp7DQogIGludCBxdW90Ow0KICBpbnQgcmVtOw0KfSBk
aXZfdDsNCg0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgbG9uZyBxdW90Ow0KICBsb25nIHJlbTsNCn0g
bGRpdl90Ow0KIyA0NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzDQpleHRlcm4gX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgaW50IF9fbWJfY3VyX21heDsNCg0KDQoNCnZvaWQgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChub3JldHVybikp
Ow0KaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGFicyAoaW50KTsNCmludCBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpKHZvaWQpKTsNCmRvdWJs
ZSBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBhdG9mIChjb25zdCBjaGFyICpfX25wdHIpOw0K
DQpmbG9hdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBhdG9mZiAoY29uc3QgY2hhciAqX19u
cHRyKTsNCg0KaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGF0b2kgKGNvbnN0IGNoYXIg
Kl9fbnB0cik7DQpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGF0b2wgKGNvbnN0IGNo
YXIgKl9fbnB0cik7DQp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYnNlYXJjaCAo
Y29uc3Qgdm9pZCAqIF9fa2V5LCBjb25zdCB2b2lkICogX19iYXNlLCBzaXplX3QgX19ubWVtYiwg
c2l6ZV90IF9fc2l6ZSwgaW50ICgqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9jb21wYXIp
IChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOw0KDQoNCg0KDQp2b2lkICogX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSk7
DQpkaXZfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBkaXYgKGludCBfX251bWVyLCBpbnQg
X19kZW5vbSk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGV4aXQgKGludCBfX3N0
YXR1cykgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIGZyZWUgKHZvaWQgKik7DQpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgZ2V0ZW52IChjb25zdCBjaGFyICpfX3N0cmluZyk7DQpjaGFyICogX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgX2dldGVudl9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKl9fc3Ry
aW5nKTsNCmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZmluZGVudiAoY29uc3Qg
Y2hhciAqLCBpbnQgKik7DQpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2ZpbmRl
bnZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGludCAqKTsNCmxvbmcgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgbGFicyAobG9uZyk7DQpsZGl2X3QgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgbGRpdiAobG9uZyBfX251bWVyLCBsb25nIF9fZGVub20pOw0Kdm9pZCAqIF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1hbGxvYyAoc2l6ZV90IF9fc2l6ZSk7DQppbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbWJsZW4gKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfbWJsZW5fciAoc3RydWN0IF9yZWVudCAqLCBj
b25zdCBjaGFyICosIHNpemVfdCwgX21ic3RhdGVfdCAqKTsNCmludCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBtYnRvd2MgKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOw0KaW50
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9tYnRvd2NfciAoc3RydWN0IF9yZWVudCAqLCB3
Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBfbWJzdGF0ZV90ICopOw0KaW50IF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIHdjdG9tYiAoY2hhciAqLCB3Y2hhcl90KTsNCmludCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfd2N0b21iX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAq
LCB3Y2hhcl90LCBfbWJzdGF0ZV90ICopOw0Kc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIG1ic3Rvd2NzICh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCnNpemVfdCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfbWJzdG93Y3NfciAoc3RydWN0IF9yZWVudCAqLCB3
Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBfbWJzdGF0ZV90ICopOw0Kc2l6ZV90IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHdjc3RvbWJzIChjaGFyICosIGNvbnN0IHdjaGFyX3Qg
Kiwgc2l6ZV90KTsNCnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfd2NzdG9tYnNf
ciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90LCBfbWJz
dGF0ZV90ICopOw0KDQoNCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBta3N0ZW1wIChj
aGFyICopOw0KY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1rdGVtcCAoY2hhciAq
KTsNCg0KDQp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHFzb3J0ICh2b2lkICogX19i
YXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgaW50KCpfY29tcGFyKShjb25zdCB2
b2lkICosIGNvbnN0IHZvaWQgKikpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHJh
bmQgKHZvaWQpOw0Kdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHJlYWxsb2MgKHZv
aWQgKiBfX3IsIHNpemVfdCBfX3NpemUpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBzcmFuZCAodW5zaWduZWQgX19zZWVkKTsNCmRvdWJsZSBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBzdHJ0b2QgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BUUik7DQpkb3VibGUg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3N0cnRvZF9yIChzdHJ1Y3QgX3JlZW50ICosY29u
c3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSKTsNCg0KZmxvYXQgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgc3RydG9kZiAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSKTsN
Cg0KbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJ0b2wgKGNvbnN0IGNoYXIgKl9f
biwgY2hhciAqKl9fZW5kX1BUUiwgaW50IF9fYmFzZSk7DQpsb25nIF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIF9zdHJ0b2xfciAoc3RydWN0IF9yZWVudCAqLGNvbnN0IGNoYXIgKl9fbiwgY2hh
ciAqKl9fZW5kX1BUUiwgaW50IF9fYmFzZSk7DQp1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHN0cnRvdWwgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BUUiwg
aW50IF9fYmFzZSk7DQp1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9z
dHJ0b3VsX3IgKHN0cnVjdCBfcmVlbnQgKixjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9Q
VFIsIGludCBfX2Jhc2UpOw0KDQppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3lzdGVt
IChjb25zdCBjaGFyICpfX3N0cmluZyk7DQoNCg0KbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBhNjRsIChjb25zdCBjaGFyICpfX2lucHV0KTsNCmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBsNjRhIChsb25nIF9faW5wdXQpOw0KY2hhciAqIF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIF9sNjRhX3IgKHN0cnVjdCBfcmVlbnQgKixsb25nIF9faW5wdXQpOw0KaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpKGludCwgdm9p
ZCAqKSx2b2lkICogX19hcmcpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfRXhp
dCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsNCmludCBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBwdXRlbnYgKGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsNCmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfcHV0ZW52X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29u
c3QgY2hhciAqX19zdHJpbmcpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNldGVu
diAoY29uc3QgY2hhciAqX19zdHJpbmcsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX292ZXJ3
cml0ZSk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3NldGVudl9yIChzdHJ1Y3Qg
X3JlZW50ICosIGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBjb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQg
X19vdmVyd3JpdGUpOw0KDQpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2N2dCAo
ZG91YmxlLGludCxjaGFyICopOw0KY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdj
dnRmIChmbG9hdCxpbnQsY2hhciAqKTsNCmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBmY3Z0IChkb3VibGUsaW50LGludCAqLGludCAqKTsNCmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBmY3Z0ZiAoZmxvYXQsaW50LGludCAqLGludCAqKTsNCmNoYXIgKiBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBlY3Z0IChkb3VibGUsaW50LGludCAqLGludCAqKTsNCmNoYXIg
KiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBlY3Z0YnVmIChkb3VibGUsIGludCwgaW50Kiwg
aW50KiwgY2hhciAqKTsNCmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmY3Z0YnVm
IChkb3VibGUsIGludCwgaW50KiwgaW50KiwgY2hhciAqKTsNCmNoYXIgKiBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBlY3Z0ZiAoZmxvYXQsaW50LGludCAqLGludCAqKTsNCmNoYXIgKiBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBkdG9hIChkb3VibGUsIGludCwgaW50LCBpbnQgKiwgaW50
KiwgY2hhcioqKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSByYW5kX3IgKHVuc2ln
bmVkICpfX3NlZWQpOw0KDQpkb3VibGUgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZHJhbmQ0
OCAodm9pZCk7DQpkb3VibGUgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2RyYW5kNDhfciAo
c3RydWN0IF9yZWVudCAqKTsNCmRvdWJsZSBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBlcmFu
ZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOw0KZG91YmxlIF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIF9lcmFuZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNdKTsNCmxv
bmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgWzNd
KTsNCmxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2pyYW5kNDhfciAoc3RydWN0IF9y
ZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBbN10pOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBfbGNvbmc0OF9yIChzdHJ1Y3QgX3JlZW50ICosIHVuc2lnbmVkIHNob3J0IFs3
XSk7DQpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGxyYW5kNDggKHZvaWQpOw0KbG9u
ZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfbHJhbmQ0OF9yIChzdHJ1Y3QgX3JlZW50ICop
Ow0KbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBtcmFuZDQ4ICh2b2lkKTsNCmxvbmcg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX21yYW5kNDhfciAoc3RydWN0IF9yZWVudCAqKTsN
CmxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbnJhbmQ0OCAodW5zaWduZWQgc2hvcnQg
WzNdKTsNCmxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX25yYW5kNDhfciAoc3RydWN0
IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOw0KdW5zaWduZWQgc2hvcnQgKg0KICAgICAg
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNlZWQ0OCAodW5zaWduZWQgc2hvcnQgWzNdKTsN
CnVuc2lnbmVkIHNob3J0ICoNCiAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfc2Vl
ZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNdKTsNCnZvaWQgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgc3JhbmQ0OCAobG9uZyk7DQp2b2lkIF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIF9zcmFuZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgbG9uZyk7DQpsb25nIGxv
bmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RydG9sbCAoY29uc3QgY2hhciAqX19uLCBj
aGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsNCmxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBfc3RydG9sbF9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKl9fbiwg
Y2hhciAqKl9fZW5kX1BUUiwgaW50IF9fYmFzZSk7DQp1bnNpZ25lZCBsb25nIGxvbmcgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgc3RydG91bGwgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9f
ZW5kX1BUUiwgaW50IF9fYmFzZSk7DQp1bnNpZ25lZCBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgX3N0cnRvdWxsX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19u
LCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsNCg0KDQoNCg0KY2hhciAqIF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIHJlYWxwYXRoIChjb25zdCBjaGFyICosIGNoYXIgKik7DQp2b2lk
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHVuc2V0ZW52IChjb25zdCBjaGFyICpfX3N0cmlu
Zyk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF91bnNldGVudl9yIChzdHJ1Y3Qg
X3JlZW50ICosIGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX2Nk
ZWNsX18pKSByYW5kb20gKHZvaWQpOw0KbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBz
cmFuZG9tICh1bnNpZ25lZCBfX3NlZWQpOw0KY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIHB0c25hbWUgKGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ3JhbnRw
dCAoaW50KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB1bmxvY2twdCAoaW50KTsN
Cg0KDQoNCg0KY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9kdG9hX3IgKHN0cnVj
dCBfcmVlbnQgKiwgZG91YmxlLCBpbnQsIGludCwgaW50ICosIGludCosIGNoYXIqKik7DQoNCg0K
DQoNCg0KDQoNCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfc3lzdGVtX3IgKHN0cnVj
dCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsNCg0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBfX2VwcmludGYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQs
IGNvbnN0IGNoYXIgKik7DQojIDIwOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzDQp9DQojIDI5
ICIuLi9jb21tb24vY21lbW9yeS5oIiAyDQojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAz
DQojIDE0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMNCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWN5Z3dpbi8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQojIDE1ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDIgMw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KDQp2b2lkICogX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgbWVtY2hyIChjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsN
CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBtZW1jbXAgKGNvbnN0IHZvaWQgKiwgY29u
c3Qgdm9pZCAqLCBzaXplX3QpOw0Kdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1l
bWNweSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7DQp2b2lkICogX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgbWVtbW92ZSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7DQp2
b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbWVtc2V0ICh2b2lkICosIGludCwgc2l6
ZV90KTsNCmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cmNhdCAoY2hhciAqLCBj
b25zdCBjaGFyICopOw0KY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RyY2hyIChj
b25zdCBjaGFyICosIGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RyY21w
IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgc3RyY29sbCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOw0KY2hhciAqX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgc3RyY3B5IChjaGFyICosIGNvbnN0IGNoYXIgKik7DQpzaXpl
X3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RyY3NwbiAoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICopOw0KY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RyZXJyb3IgKGlu
dCk7DQpzaXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RybGVuIChjb25zdCBjaGFy
ICopOw0KY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RybmNhdCAoY2hhciAqLCBj
b25zdCBjaGFyICosIHNpemVfdCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3Ry
bmNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DQpjaGFyICpfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBzdHJuY3B5IChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90
KTsNCmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnBicmsgKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqKTsNCmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnJj
aHIgKGNvbnN0IGNoYXIgKiwgaW50KTsNCnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBzdHJzcG4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsNCmNoYXIgKl9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIHN0cnN0ciAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOw0KDQoN
CmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnRvayAoY2hhciAqLCBjb25zdCBj
aGFyICopOw0KDQoNCnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJ4ZnJtIChj
aGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCg0KDQpjaGFyICpfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBzdHJ0b2tfciAoY2hhciAqLCBjb25zdCBjaGFyICosIGNoYXIgKiopOw0KDQpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYmNtcCAoY29uc3Qgdm9pZCAqLCBjb25zdCB2
b2lkICosIHNpemVfdCk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGJjb3B5IChj
b25zdCB2b2lkICosIHZvaWQgKiwgc2l6ZV90KTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgYnplcm8gKHZvaWQgKiwgc2l6ZV90KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBmZnMgKGludCk7DQpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBpbmRleCAo
Y29uc3QgY2hhciAqLCBpbnQpOw0Kdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1l
bWNjcHkgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7DQp2b2lkICogX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgbWVtcGNweSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVf
dCk7DQpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSByaW5kZXggKGNvbnN0IGNoYXIg
KiwgaW50KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJjYXNlY21wIChjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBzdHJkdXAgKGNvbnN0IGNoYXIgKik7DQpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBfc3RyZHVwX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsNCmNoYXIgKl9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cm5kdXAgKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCmNo
YXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9zdHJuZHVwX3IgKHN0cnVjdCBfcmVlbnQg
KiwgY29uc3QgY2hhciAqLCBzaXplX3QpOw0KY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgc3RyZXJyb3JfciAoaW50LCBjaGFyICosIHNpemVfdCk7DQpzaXplX3QgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgc3RybGNhdCAoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DQpz
aXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RybGNweSAoY2hhciAqLCBjb25zdCBj
aGFyICosIHNpemVfdCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RybmNhc2Vj
bXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOw0Kc2l6ZV90IF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIHN0cm5sZW4gKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCmNoYXIg
Kl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnNlcCAoY2hhciAqKiwgY29uc3QgY2hhciAq
KTsNCmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cmx3ciAoY2hhciAqKTsNCmNo
YXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnVwciAoY2hhciAqKTsNCg0KDQpjb25z
dCBjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJzaWduYWwgKGludCBfX3NpZ25v
KTsNCg0KaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnRvc2lnbm8gKGNvbnN0IGNo
YXIgKl9fbmFtZSk7DQojIDk4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMNCn0NCiMgMzAgIi4u
L2NvbW1vbi9jbWVtb3J5LmgiIDINCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB2b2lkICoNCnVw
cnZfbWFsbG9jKHNpemVfdCBzKTsNCg0KZXh0ZXJuICJDIiB2b2lkICoNCnVwcnZfcmVhbGxvYyh2
b2lkICptZW0sIHNpemVfdCBzaXplKTsNCg0KZXh0ZXJuICJDIiB2b2lkDQp1cHJ2X2ZyZWUodm9p
ZCAqbWVtKTsNCg0KDQoNCg0KDQp0eXBlZGVmIHVuaW9uIHsNCiAgICBsb25nIHQxOw0KICAgIGRv
dWJsZSB0MjsNCiAgICB2b2lkICp0MzsNCn0gVUFsaWduZWRNZW1vcnk7DQojIDMyICJ1Y29sX2Vs
bS5jcHAiIDINCg0KbmFtZXNwYWNlIGljdV8yXzIgew0KDQpzdGF0aWMgdWludDMyX3QgdXBydl91
Y2FfcHJvY2Vzc0NvbnRyYWN0aW9uKENudFRhYmxlICpjb250cmFjdGlvbnMsIFVDQUVsZW1lbnRz
ICplbGVtZW50LCB1aW50MzJfdCBleGlzdGluZ0NFLCBVRXJyb3JDb2RlICpzdGF0dXMpOw0KDQpl
eHRlcm4gIkMiIHsNCnN0YXRpYyBpbnQzMl90DQpwcmVmaXhMb29rdXBIYXNoKGNvbnN0IFVIYXNo
VG9rIGUpIHsNCiAgVUNBRWxlbWVudHMgKmVsZW1lbnQgPSAoVUNBRWxlbWVudHMgKillLnBvaW50
ZXI7DQogIFVDaGFyIGJ1ZlsyNTZdOw0KICBVSGFzaFRvayBrZXk7DQogIGtleS5wb2ludGVyID0g
YnVmOw0KICA6OiBtZW1jcHkoYnVmLCBlbGVtZW50LT5jUG9pbnRzLCBlbGVtZW50LT5jU2l6ZSpz
aXplb2YoVUNoYXIpKTsNCiAgYnVmW2VsZW1lbnQtPmNTaXplXSA9IDA7DQoNCg0KICByZXR1cm4g
dWhhc2hfaGFzaFVDaGFyc18yXzIoa2V5KTsNCn0NCg0Kc3RhdGljIGludDhfdA0KcHJlZml4TG9v
a3VwQ29tcChjb25zdCBVSGFzaFRvayBlMSwgY29uc3QgVUhhc2hUb2sgZTIpIHsNCiAgVUNBRWxl
bWVudHMgKmVsZW1lbnQxID0gKFVDQUVsZW1lbnRzICopZTEucG9pbnRlcjsNCiAgVUNBRWxlbWVu
dHMgKmVsZW1lbnQyID0gKFVDQUVsZW1lbnRzICopZTIucG9pbnRlcjsNCg0KICBVQ2hhciBidWYx
WzI1Nl07DQogIFVIYXNoVG9rIGtleTE7DQogIGtleTEucG9pbnRlciA9IGJ1ZjE7DQogIDo6IG1l
bWNweShidWYxLCBlbGVtZW50MS0+Y1BvaW50cywgZWxlbWVudDEtPmNTaXplKnNpemVvZihVQ2hh
cikpOw0KICBidWYxW2VsZW1lbnQxLT5jU2l6ZV0gPSAwOw0KDQogIFVDaGFyIGJ1ZjJbMjU2XTsN
CiAgVUhhc2hUb2sga2V5MjsNCiAga2V5Mi5wb2ludGVyID0gYnVmMjsNCiAgOjogbWVtY3B5KGJ1
ZjIsIGVsZW1lbnQyLT5jUG9pbnRzLCBlbGVtZW50Mi0+Y1NpemUqc2l6ZW9mKFVDaGFyKSk7DQog
IGJ1ZjJbZWxlbWVudDItPmNTaXplXSA9IDA7DQoNCiAgcmV0dXJuIHVoYXNoX2NvbXBhcmVVQ2hh
cnNfMl8yKGtleTEsIGtleTIpOw0KfQ0KfQ0KDQpzdGF0aWMgaW50MzJfdCB1cHJ2X3VjYV9hZGRF
eHBhbnNpb24oRXhwYW5zaW9uVGFibGUgKmV4cGFuc2lvbnMsIHVpbnQzMl90IHZhbHVlLCBVRXJy
b3JDb2RlICpzdGF0dXMpIHsNCiAgICBpZihVX0ZBSUxVUkUoKnN0YXR1cykpIHsNCiAgICAgICAg
cmV0dXJuIDA7DQogICAgfQ0KICAgIGlmKGV4cGFuc2lvbnMtPkNFcyA9PSBfX251bGwpIHsNCiAg
ICAgICAgZXhwYW5zaW9ucy0+Q0VzID0gKHVpbnQzMl90ICopdXBydl9tYWxsb2MoMTAyNCpzaXpl
b2YodWludDMyX3QpKTsNCg0KICAgICAgICBpZiAoZXhwYW5zaW9ucy0+Q0VzID09IF9fbnVsbCkg
ew0KICAgICAgICAgICAgKnN0YXR1cyA9IFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1I7DQogICAg
ICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgfQ0KICAgICAgICBleHBhbnNpb25zLT5zaXplID0g
MTAyNDsNCiAgICAgICAgZXhwYW5zaW9ucy0+cG9zaXRpb24gPSAwOw0KICAgIH0NCg0KICAgIGlm
KGV4cGFuc2lvbnMtPnBvc2l0aW9uID09IGV4cGFuc2lvbnMtPnNpemUpIHsNCiAgICAgICAgdWlu
dDMyX3QgKm5ld0RhdGEgPSAodWludDMyX3QgKil1cHJ2X3JlYWxsb2MoZXhwYW5zaW9ucy0+Q0Vz
LCAyKmV4cGFuc2lvbnMtPnNpemUqc2l6ZW9mKHVpbnQzMl90KSk7DQogICAgICAgIGlmKG5ld0Rh
dGEgPT0gX19udWxsKSB7DQoNCg0KDQogICAgICAgICAgICAqc3RhdHVzID0gVV9NRU1PUllfQUxM
T0NBVElPTl9FUlJPUjsNCiAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgfQ0KICAgICAg
ICBleHBhbnNpb25zLT5DRXMgPSBuZXdEYXRhOw0KICAgICAgICBleHBhbnNpb25zLT5zaXplICo9
IDI7DQogICAgfQ0KDQogICAgZXhwYW5zaW9ucy0+Q0VzW2V4cGFuc2lvbnMtPnBvc2l0aW9uXSA9
IHZhbHVlOw0KICAgIHJldHVybihleHBhbnNpb25zLT5wb3NpdGlvbisrKTsNCn0NCg0KZXh0ZXJu
ICJDIiB0ZW1wVUNBVGFibGUqDQp1cHJ2X3VjYV9pbml0VGVtcFRhYmxlXzJfMihVQ0FUYWJsZUhl
YWRlciAqaW1hZ2UsIFVDb2xPcHRpb25TZXQgKm9wdHMsIGNvbnN0IFVDb2xsYXRvciAqVUNBLCBV
Q29sQ0VUYWdzIGluaXRUYWcsIFVFcnJvckNvZGUgKnN0YXR1cykgew0KICB0ZW1wVUNBVGFibGUg
KnQgPSAodGVtcFVDQVRhYmxlICopdXBydl9tYWxsb2Moc2l6ZW9mKHRlbXBVQ0FUYWJsZSkpOw0K
DQogIGlmICh0ID09IF9fbnVsbCkgew0KICAgICAgKnN0YXR1cyA9IFVfTUVNT1JZX0FMTE9DQVRJ
T05fRVJST1I7DQogICAgICByZXR1cm4gX19udWxsOw0KICB9DQogIE1heEV4cGFuc2lvblRhYmxl
ICptYXhldCA9IChNYXhFeHBhbnNpb25UYWJsZSAqKXVwcnZfbWFsbG9jKA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKE1heEV4cGFuc2lv
blRhYmxlKSk7DQoNCiAgaWYgKG1heGV0ID09IF9fbnVsbCkgew0KICAgICAgKnN0YXR1cyA9IFVf
TUVNT1JZX0FMTE9DQVRJT05fRVJST1I7DQogICAgICB1cHJ2X2ZyZWUodCk7DQogICAgICByZXR1
cm4gX19udWxsOw0KICB9DQogIE1heEphbW9FeHBhbnNpb25UYWJsZSAqbWF4amV0ID0gKE1heEph
bW9FeHBhbnNpb25UYWJsZSAqKXVwcnZfbWFsbG9jKA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoTWF4SmFtb0V4cGFuc2lvblRhYmxlKSk7DQoN
CiAgaWYgKG1heGpldCA9PSBfX251bGwpIHsNCiAgICAgICpzdGF0dXMgPSBVX01FTU9SWV9BTExP
Q0FUSU9OX0VSUk9SOw0KICAgICAgdXBydl9mcmVlKHQpOw0KICAgICAgdXBydl9mcmVlKG1heGV0
KTsNCiAgICAgIHJldHVybiBfX251bGw7DQogIH0NCiAgdC0+aW1hZ2UgPSBpbWFnZTsNCiAgdC0+
b3B0aW9ucyA9IG9wdHM7DQoNCiAgdC0+VUNBID0gVUNBOw0KICB0LT5leHBhbnNpb25zID0gKEV4
cGFuc2lvblRhYmxlICopdXBydl9tYWxsb2Moc2l6ZW9mKEV4cGFuc2lvblRhYmxlKSk7DQoNCiAg
aWYgKHQtPmV4cGFuc2lvbnMgPT0gX19udWxsKSB7DQogICAgICAqc3RhdHVzID0gVV9NRU1PUllf
QUxMT0NBVElPTl9FUlJPUjsNCiAgICAgIHVwcnZfZnJlZSh0KTsNCiAgICAgIHVwcnZfZnJlZSht
YXhldCk7DQogICAgICB1cHJ2X2ZyZWUobWF4amV0KTsNCiAgICAgIHJldHVybiBfX251bGw7DQog
IH0NCiAgOjogbWVtc2V0KHQtPmV4cGFuc2lvbnMsIDAsIHNpemVvZihFeHBhbnNpb25UYWJsZSkp
Ow0KDQogIHQtPm1hcHBpbmcgPSB1dHJpZV9vcGVuXzJfMihfX251bGwsIF9fbnVsbCwgMHgxMDAw
MDAsIDB4RjAwMDAwMDAgfCAoaW5pdFRhZzw8MjQpLCAxKTsNCiAgdC0+cHJlZml4TG9va3VwID0g
dWhhc2hfb3Blbl8yXzIocHJlZml4TG9va3VwSGFzaCwgcHJlZml4TG9va3VwQ29tcCwgc3RhdHVz
KTsNCiAgdWhhc2hfc2V0VmFsdWVEZWxldGVyXzJfMih0LT5wcmVmaXhMb29rdXAsIHVoYXNoX2Zy
ZWVCbG9ja18yXzIpOw0KDQogIHQtPmNvbnRyYWN0aW9ucyA9IHVwcnZfY250dGFiX29wZW5fMl8y
KHQtPm1hcHBpbmcsIHN0YXR1cyk7DQoNCg0KICB0LT5tYXhFeHBhbnNpb25zID0gbWF4ZXQ7DQog
IGlmIChVQ0EgIT0gX19udWxsKSB7DQoNCiAgICBtYXhldC0+c2l6ZSA9IChVQ0EtPmxhc3RFbmRF
eHBhbnNpb25DRSAtIFVDQS0+ZW5kRXhwYW5zaW9uQ0UpDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgMjsNCiAgICBtYXhldC0+cG9zaXRpb24gPSBtYXhldC0+c2l6ZSAtIDE7DQogICAg
bWF4ZXQtPmVuZEV4cGFuc2lvbkNFID0NCiAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3Qg
Kil1cHJ2X21hbGxvYyhzaXplb2YodWludDMyX3QpICogbWF4ZXQtPnNpemUpOw0KDQogICAgaWYg
KG1heGV0LT5lbmRFeHBhbnNpb25DRSA9PSBfX251bGwpIHsNCiAgICAgICAgKnN0YXR1cyA9IFVf
TUVNT1JZX0FMTE9DQVRJT05fRVJST1I7DQogICAgICAgIHJldHVybiBfX251bGw7DQogICAgfQ0K
ICAgIG1heGV0LT5leHBhbnNpb25DRVNpemUgPQ0KICAgICAgICAgICAgICAgICAgICAgICAgKHVp
bnQ4X3QgKil1cHJ2X21hbGxvYyhzaXplb2YodWludDhfdCkgKiBtYXhldC0+c2l6ZSk7DQoNCiAg
ICBpZiAobWF4ZXQtPmV4cGFuc2lvbkNFU2l6ZSA9PSBfX251bGwpIHsNCiAgICAgICAgKnN0YXR1
cyA9IFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1I7DQogICAgICAgIHVwcnZfZnJlZShtYXhldC0+
ZW5kRXhwYW5zaW9uQ0UpOw0KICAgICAgICByZXR1cm4gX19udWxsOw0KICAgIH0NCg0KICAgICoo
bWF4ZXQtPmVuZEV4cGFuc2lvbkNFKSA9IDA7DQogICAgKihtYXhldC0+ZXhwYW5zaW9uQ0VTaXpl
KSA9IDA7DQogICAgOjogbWVtY3B5KG1heGV0LT5lbmRFeHBhbnNpb25DRSArIDEsIFVDQS0+ZW5k
RXhwYW5zaW9uQ0UsIHNpemVvZih1aW50MzJfdCkgKiAobWF4ZXQtPnNpemUgLSAxKSk7DQoNCiAg
ICA6OiBtZW1jcHkobWF4ZXQtPmV4cGFuc2lvbkNFU2l6ZSArIDEsIFVDQS0+ZXhwYW5zaW9uQ0VT
aXplLCBzaXplb2YodWludDhfdCkgKiAobWF4ZXQtPnNpemUgLSAxKSk7DQoNCiAgfQ0KICBlbHNl
IHsNCiAgICBtYXhldC0+c2l6ZSA9IDA7DQogIH0NCiAgdC0+bWF4SmFtb0V4cGFuc2lvbnMgPSBt
YXhqZXQ7DQogIG1heGpldC0+ZW5kRXhwYW5zaW9uQ0UgPSBfX251bGw7DQogIG1heGpldC0+aXNW
ID0gX19udWxsOw0KICBtYXhqZXQtPnNpemUgPSAwOw0KICBtYXhqZXQtPnBvc2l0aW9uID0gMDsN
CiAgbWF4amV0LT5tYXhMU2l6ZSA9IDE7DQogIG1heGpldC0+bWF4VlNpemUgPSAxOw0KICBtYXhq
ZXQtPm1heFRTaXplID0gMTsNCg0KICB0LT51bnNhZmVDUCA9ICh1aW50OF90ICopdXBydl9tYWxs
b2MoMTA1Nik7DQoNCiAgaWYgKHQtPnVuc2FmZUNQID09IF9fbnVsbCkgew0KICAgICAgKnN0YXR1
cyA9IFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1I7DQogICAgICByZXR1cm4gX19udWxsOw0KICB9
DQogIHQtPmNvbnRyRW5kQ1AgPSAodWludDhfdCAqKXVwcnZfbWFsbG9jKDEwNTYpOw0KDQogIGlm
ICh0LT5jb250ckVuZENQID09IF9fbnVsbCkgew0KICAgICAgKnN0YXR1cyA9IFVfTUVNT1JZX0FM
TE9DQVRJT05fRVJST1I7DQogICAgICB1cHJ2X2ZyZWUodC0+dW5zYWZlQ1ApOw0KICAgICAgcmV0
dXJuIF9fbnVsbDsNCiAgfQ0KICA6OiBtZW1zZXQodC0+dW5zYWZlQ1AsIDAsIDEwNTYpOw0KICA6
OiBtZW1zZXQodC0+Y29udHJFbmRDUCwgMCwgMTA1Nik7DQpyZXR1cm4gdDsNCn0NCg0KZXh0ZXJu
ICJDIiB0ZW1wVUNBVGFibGUqDQp1cHJ2X3VjYV9jbG9uZVRlbXBUYWJsZV8yXzIodGVtcFVDQVRh
YmxlICp0LCBVRXJyb3JDb2RlICpzdGF0dXMpIHsNCiAgaWYoVV9GQUlMVVJFKCpzdGF0dXMpKSB7
DQogICAgcmV0dXJuIF9fbnVsbDsNCiAgfQ0KDQogIHRlbXBVQ0FUYWJsZSAqciA9ICh0ZW1wVUNB
VGFibGUgKil1cHJ2X21hbGxvYyhzaXplb2YodGVtcFVDQVRhYmxlKSk7DQoNCiAgaWYgKHIgPT0g
X19udWxsKSB7DQogICAgKnN0YXR1cyA9IFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1I7DQogICAg
cmV0dXJuIF9fbnVsbDsNCiAgfQ0KICA6OiBtZW1zZXQociwgMCwgc2l6ZW9mKHRlbXBVQ0FUYWJs
ZSkpOw0KDQoNCiAgaWYodC0+bWFwcGluZyAhPSBfX251bGwpIHsNCg0KICAgIHItPm1hcHBpbmcg
PSB1dHJpZV9jbG9uZV8yXzIoX19udWxsLCB0LT5tYXBwaW5nLCBfX251bGwsIDApOw0KICB9DQoN
Cg0KDQogIHItPnByZWZpeExvb2t1cCA9IF9fbnVsbDsNCg0KDQogIGlmKHQtPmV4cGFuc2lvbnMg
IT0gX19udWxsKSB7DQogICAgci0+ZXhwYW5zaW9ucyA9IChFeHBhbnNpb25UYWJsZSAqKXVwcnZf
bWFsbG9jKHNpemVvZihFeHBhbnNpb25UYWJsZSkpOw0KDQogICAgaWYgKHItPmV4cGFuc2lvbnMg
PT0gX19udWxsKSB7DQogICAgICAgICpzdGF0dXMgPSBVX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9S
Ow0KICAgICAgICByZXR1cm4gX19udWxsOw0KICAgIH0NCiAgICByLT5leHBhbnNpb25zLT5wb3Np
dGlvbiA9IHQtPmV4cGFuc2lvbnMtPnBvc2l0aW9uOw0KICAgIHItPmV4cGFuc2lvbnMtPnNpemUg
PSB0LT5leHBhbnNpb25zLT5zaXplOw0KICAgIGlmKHQtPmV4cGFuc2lvbnMtPkNFcyAhPSBfX251
bGwpIHsNCiAgICAgIHItPmV4cGFuc2lvbnMtPkNFcyA9ICh1aW50MzJfdCAqKXVwcnZfbWFsbG9j
KHNpemVvZih1aW50MzJfdCkqdC0+ZXhwYW5zaW9ucy0+c2l6ZSk7DQoNCiAgICAgIGlmIChyLT5l
eHBhbnNpb25zLT5DRXMgPT0gX19udWxsKSB7DQogICAgICAgICAgKnN0YXR1cyA9IFVfTUVNT1JZ
X0FMTE9DQVRJT05fRVJST1I7DQogICAgICAgICAgcmV0dXJuIF9fbnVsbDsNCiAgICAgIH0NCiAg
ICAgIDo6IG1lbWNweShyLT5leHBhbnNpb25zLT5DRXMsIHQtPmV4cGFuc2lvbnMtPkNFcywgc2l6
ZW9mKHVpbnQzMl90KSp0LT5leHBhbnNpb25zLT5zaXplKTsNCiAgICB9IGVsc2Ugew0KICAgICAg
ci0+ZXhwYW5zaW9ucy0+Q0VzID0gX19udWxsOw0KICAgIH0NCiAgfQ0KDQogIGlmKHQtPmNvbnRy
YWN0aW9ucyAhPSBfX251bGwpIHsNCiAgICByLT5jb250cmFjdGlvbnMgPSB1cHJ2X2NudHRhYl9j
bG9uZV8yXzIodC0+Y29udHJhY3Rpb25zLCBzdGF0dXMpOw0KICAgIHItPmNvbnRyYWN0aW9ucy0+
bWFwcGluZyA9IHItPm1hcHBpbmc7DQogIH0NCg0KICBpZih0LT5tYXhFeHBhbnNpb25zICE9IF9f
bnVsbCkgew0KICAgIHItPm1heEV4cGFuc2lvbnMgPSAoTWF4RXhwYW5zaW9uVGFibGUgKil1cHJ2
X21hbGxvYyhzaXplb2YoTWF4RXhwYW5zaW9uVGFibGUpKTsNCg0KICAgIGlmIChyLT5tYXhFeHBh
bnNpb25zID09IF9fbnVsbCkgew0KICAgICAgICAqc3RhdHVzID0gVV9NRU1PUllfQUxMT0NBVElP
Tl9FUlJPUjsNCiAgICAgICAgcmV0dXJuIF9fbnVsbDsNCiAgICB9DQogICAgci0+bWF4RXhwYW5z
aW9ucy0+c2l6ZSA9IHQtPm1heEV4cGFuc2lvbnMtPnNpemU7DQogICAgci0+bWF4RXhwYW5zaW9u
cy0+cG9zaXRpb24gPSB0LT5tYXhFeHBhbnNpb25zLT5wb3NpdGlvbjsNCiAgICBpZih0LT5tYXhF
eHBhbnNpb25zLT5lbmRFeHBhbnNpb25DRSAhPSBfX251bGwpIHsNCiAgICAgIHItPm1heEV4cGFu
c2lvbnMtPmVuZEV4cGFuc2lvbkNFID0gKHVpbnQzMl90ICopdXBydl9tYWxsb2Moc2l6ZW9mKHVp
bnQzMl90KSp0LT5tYXhFeHBhbnNpb25zLT5zaXplKTsNCg0KICAgICAgaWYgKHItPm1heEV4cGFu
c2lvbnMtPmVuZEV4cGFuc2lvbkNFID09IF9fbnVsbCkgew0KICAgICAgICAgICpzdGF0dXMgPSBV
X01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SOw0KICAgICAgICAgIHJldHVybiBfX251bGw7DQogICAg
ICB9DQogICAgICA6OiBtZW1jcHkoci0+bWF4RXhwYW5zaW9ucy0+ZW5kRXhwYW5zaW9uQ0UsIHQt
Pm1heEV4cGFuc2lvbnMtPmVuZEV4cGFuc2lvbkNFLCB0LT5tYXhFeHBhbnNpb25zLT5zaXplKnNp
emVvZih1aW50MzJfdCkpOw0KICAgIH0gZWxzZSB7DQogICAgICByLT5tYXhFeHBhbnNpb25zLT5l
bmRFeHBhbnNpb25DRSA9IF9fbnVsbDsNCiAgICB9DQogICAgaWYodC0+bWF4RXhwYW5zaW9ucy0+
ZXhwYW5zaW9uQ0VTaXplICE9IF9fbnVsbCkgew0KICAgICAgci0+bWF4RXhwYW5zaW9ucy0+ZXhw
YW5zaW9uQ0VTaXplID0gKHVpbnQ4X3QgKil1cHJ2X21hbGxvYyhzaXplb2YodWludDhfdCkqdC0+
bWF4RXhwYW5zaW9ucy0+c2l6ZSk7DQoNCiAgICAgIGlmIChyLT5tYXhFeHBhbnNpb25zLT5leHBh
bnNpb25DRVNpemUgPT0gX19udWxsKSB7DQogICAgICAgICAgKnN0YXR1cyA9IFVfTUVNT1JZX0FM
TE9DQVRJT05fRVJST1I7DQogICAgICAgICAgcmV0dXJuIF9fbnVsbDsNCiAgICAgIH0NCiAgICAg
IDo6IG1lbWNweShyLT5tYXhFeHBhbnNpb25zLT5leHBhbnNpb25DRVNpemUsIHQtPm1heEV4cGFu
c2lvbnMtPmV4cGFuc2lvbkNFU2l6ZSwgdC0+bWF4RXhwYW5zaW9ucy0+c2l6ZSpzaXplb2YodWlu
dDhfdCkpOw0KICAgIH0gZWxzZSB7DQogICAgICByLT5tYXhFeHBhbnNpb25zLT5leHBhbnNpb25D
RVNpemUgPSBfX251bGw7DQogICAgfQ0KICB9DQoNCiAgaWYodC0+bWF4SmFtb0V4cGFuc2lvbnMg
IT0gX19udWxsKSB7DQogICAgci0+bWF4SmFtb0V4cGFuc2lvbnMgPSAoTWF4SmFtb0V4cGFuc2lv
blRhYmxlICopdXBydl9tYWxsb2Moc2l6ZW9mKE1heEphbW9FeHBhbnNpb25UYWJsZSkpOw0KDQog
ICAgaWYgKHItPm1heEphbW9FeHBhbnNpb25zID09IF9fbnVsbCkgew0KICAgICAgICAqc3RhdHVz
ID0gVV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUjsNCiAgICAgICAgcmV0dXJuIF9fbnVsbDsNCiAg
ICB9DQogICAgci0+bWF4SmFtb0V4cGFuc2lvbnMtPnNpemUgPSB0LT5tYXhKYW1vRXhwYW5zaW9u
cy0+c2l6ZTsNCiAgICByLT5tYXhKYW1vRXhwYW5zaW9ucy0+cG9zaXRpb24gPSB0LT5tYXhKYW1v
RXhwYW5zaW9ucy0+cG9zaXRpb247DQogICAgci0+bWF4SmFtb0V4cGFuc2lvbnMtPm1heExTaXpl
ID0gdC0+bWF4SmFtb0V4cGFuc2lvbnMtPm1heExTaXplOw0KICAgIHItPm1heEphbW9FeHBhbnNp
b25zLT5tYXhWU2l6ZSA9IHQtPm1heEphbW9FeHBhbnNpb25zLT5tYXhWU2l6ZTsNCiAgICByLT5t
YXhKYW1vRXhwYW5zaW9ucy0+bWF4VFNpemUgPSB0LT5tYXhKYW1vRXhwYW5zaW9ucy0+bWF4VFNp
emU7DQogICAgaWYodC0+bWF4SmFtb0V4cGFuc2lvbnMtPnNpemUgIT0gMCkgew0KICAgICAgci0+
bWF4SmFtb0V4cGFuc2lvbnMtPmVuZEV4cGFuc2lvbkNFID0gKHVpbnQzMl90ICopdXBydl9tYWxs
b2Moc2l6ZW9mKHVpbnQzMl90KSp0LT5tYXhKYW1vRXhwYW5zaW9ucy0+c2l6ZSk7DQoNCiAgICAg
IGlmIChyLT5tYXhKYW1vRXhwYW5zaW9ucy0+ZW5kRXhwYW5zaW9uQ0UgPT0gX19udWxsKSB7DQog
ICAgICAgICAgKnN0YXR1cyA9IFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1I7DQogICAgICAgICAg
cmV0dXJuIF9fbnVsbDsNCiAgICAgIH0NCiAgICAgIDo6IG1lbWNweShyLT5tYXhKYW1vRXhwYW5z
aW9ucy0+ZW5kRXhwYW5zaW9uQ0UsIHQtPm1heEphbW9FeHBhbnNpb25zLT5lbmRFeHBhbnNpb25D
RSwgdC0+bWF4SmFtb0V4cGFuc2lvbnMtPnNpemUqc2l6ZW9mKHVpbnQzMl90KSk7DQogICAgICBy
LT5tYXhKYW1vRXhwYW5zaW9ucy0+aXNWID0gKFVCb29sICopdXBydl9tYWxsb2Moc2l6ZW9mKFVC
b29sKSp0LT5tYXhKYW1vRXhwYW5zaW9ucy0+c2l6ZSk7DQoNCiAgICAgIGlmIChyLT5tYXhKYW1v
RXhwYW5zaW9ucy0+aXNWID09IF9fbnVsbCkgew0KICAgICAgICAgICpzdGF0dXMgPSBVX01FTU9S
WV9BTExPQ0FUSU9OX0VSUk9SOw0KICAgICAgICAgIHJldHVybiBfX251bGw7DQogICAgICB9DQog
ICAgICA6OiBtZW1jcHkoci0+bWF4SmFtb0V4cGFuc2lvbnMtPmlzViwgdC0+bWF4SmFtb0V4cGFu
c2lvbnMtPmlzViwgdC0+bWF4SmFtb0V4cGFuc2lvbnMtPnNpemUqc2l6ZW9mKFVCb29sKSk7DQog
ICAgfSBlbHNlIHsNCiAgICAgIHItPm1heEphbW9FeHBhbnNpb25zLT5lbmRFeHBhbnNpb25DRSA9
IF9fbnVsbDsNCiAgICAgIHItPm1heEphbW9FeHBhbnNpb25zLT5pc1YgPSBfX251bGw7DQogICAg
fQ0KICB9DQoNCiAgaWYodC0+dW5zYWZlQ1AgIT0gX19udWxsKSB7DQogICAgci0+dW5zYWZlQ1Ag
PSAodWludDhfdCAqKXVwcnZfbWFsbG9jKDEwNTYpOw0KDQogICAgaWYgKHItPnVuc2FmZUNQID09
IF9fbnVsbCkgew0KICAgICAgICAqc3RhdHVzID0gVV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUjsN
CiAgICAgICAgcmV0dXJuIF9fbnVsbDsNCiAgICB9DQogICAgOjogbWVtY3B5KHItPnVuc2FmZUNQ
LCB0LT51bnNhZmVDUCwgMTA1Nik7DQogIH0NCg0KICBpZih0LT5jb250ckVuZENQICE9IF9fbnVs
bCkgew0KICAgIHItPmNvbnRyRW5kQ1AgPSAodWludDhfdCAqKXVwcnZfbWFsbG9jKDEwNTYpOw0K
DQogICAgaWYgKHItPmNvbnRyRW5kQ1AgPT0gX19udWxsKSB7DQogICAgICAgICpzdGF0dXMgPSBV
X01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SOw0KICAgICAgICByZXR1cm4gX19udWxsOw0KICAgIH0N
CiAgICA6OiBtZW1jcHkoci0+Y29udHJFbmRDUCwgdC0+Y29udHJFbmRDUCwgMTA1Nik7DQogIH0N
Cg0KICByLT5VQ0EgPSB0LT5VQ0E7DQogIHItPmltYWdlID0gdC0+aW1hZ2U7DQogIHItPm9wdGlv
bnMgPSB0LT5vcHRpb25zOw0KDQogIHJldHVybiByOw0KfQ0KDQoNCmV4dGVybiAiQyIgdm9pZA0K
dXBydl91Y2FfY2xvc2VUZW1wVGFibGVfMl8yKHRlbXBVQ0FUYWJsZSAqdCkgew0KICBpZih0ICE9
IF9fbnVsbCkgew0KICAgIHVwcnZfZnJlZSh0LT5leHBhbnNpb25zLT5DRXMpOw0KICAgIHVwcnZf
ZnJlZSh0LT5leHBhbnNpb25zKTsNCiAgICBpZih0LT5jb250cmFjdGlvbnMgIT0gX19udWxsKSB7
DQogICAgICB1cHJ2X2NudHRhYl9jbG9zZV8yXzIodC0+Y29udHJhY3Rpb25zKTsNCiAgICB9DQoN
CiAgICB1dHJpZV9jbG9zZV8yXzIodC0+bWFwcGluZyk7DQoNCiAgICBpZih0LT5wcmVmaXhMb29r
dXAgIT0gX19udWxsKSB7DQogICAgICB1aGFzaF9jbG9zZV8yXzIodC0+cHJlZml4TG9va3VwKTsN
CiAgICB9DQoNCiAgICB1cHJ2X2ZyZWUodC0+bWF4RXhwYW5zaW9ucy0+ZW5kRXhwYW5zaW9uQ0Up
Ow0KICAgIHVwcnZfZnJlZSh0LT5tYXhFeHBhbnNpb25zLT5leHBhbnNpb25DRVNpemUpOw0KICAg
IHVwcnZfZnJlZSh0LT5tYXhFeHBhbnNpb25zKTsNCg0KICAgIGlmICh0LT5tYXhKYW1vRXhwYW5z
aW9ucy0+c2l6ZSA+IDApIHsNCiAgICAgIHVwcnZfZnJlZSh0LT5tYXhKYW1vRXhwYW5zaW9ucy0+
ZW5kRXhwYW5zaW9uQ0UpOw0KICAgICAgdXBydl9mcmVlKHQtPm1heEphbW9FeHBhbnNpb25zLT5p
c1YpOw0KICAgIH0NCiAgICB1cHJ2X2ZyZWUodC0+bWF4SmFtb0V4cGFuc2lvbnMpOw0KDQogICAg
dXBydl9mcmVlKHQtPnVuc2FmZUNQKTsNCiAgICB1cHJ2X2ZyZWUodC0+Y29udHJFbmRDUCk7DQoN
CiAgICB1cHJ2X2ZyZWUodCk7DQogIH0NCn0NCiMgMzk4ICJ1Y29sX2VsbS5jcHAiDQppbnQgdXBy
dl91Y2Ffc2V0TWF4RXhwYW5zaW9uKHVpbnQzMl90IGVuZGV4cGFuc2lvbiwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCBleHBhbnNpb25zaXplLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXhFeHBhbnNpb25UYWJsZSAqbWF4ZXhwYW5zaW9uLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpDQp7DQogIGlmIChtYXhleHBh
bnNpb24tPnNpemUgPT0gMCkgew0KDQogICAgbWF4ZXhwYW5zaW9uLT5lbmRFeHBhbnNpb25DRSA9
DQogICAgICAgICAgICAgICAodWludDMyX3QgKil1cHJ2X21hbGxvYygxMDI0ICogc2l6ZW9mKGlu
dDMyX3QpKTsNCg0KICAgIGlmIChtYXhleHBhbnNpb24tPmVuZEV4cGFuc2lvbkNFID09IF9fbnVs
bCkgew0KICAgICAgICAqc3RhdHVzID0gVV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUjsNCiAgICAg
ICAgcmV0dXJuIDA7DQogICAgfQ0KICAgICoobWF4ZXhwYW5zaW9uLT5lbmRFeHBhbnNpb25DRSkg
PSAwOw0KICAgIG1heGV4cGFuc2lvbi0+ZXhwYW5zaW9uQ0VTaXplID0NCiAgICAgICAgICAgICAg
ICh1aW50OF90ICopdXBydl9tYWxsb2MoMTAyNCAqIHNpemVvZih1aW50OF90KSk7DQogICAgICAg
ICAgICAgICAgICAgICAgIDsNCiAgICBpZiAobWF4ZXhwYW5zaW9uLT5leHBhbnNpb25DRVNpemUg
PT0gX19udWxsKSB7DQogICAgICAgICpzdGF0dXMgPSBVX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9S
Ow0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQogICAgKihtYXhleHBhbnNpb24tPmV4cGFuc2lv
bkNFU2l6ZSkgPSAwOw0KICAgIG1heGV4cGFuc2lvbi0+c2l6ZSA9IDEwMjQ7DQogICAgbWF4ZXhw
YW5zaW9uLT5wb3NpdGlvbiA9IDA7DQogIH0NCg0KICBpZiAobWF4ZXhwYW5zaW9uLT5wb3NpdGlv
biArIDEgPT0gbWF4ZXhwYW5zaW9uLT5zaXplKSB7DQogICAgdWludDMyX3QgKm5ld2VlY2UgPSAo
dWludDMyX3QgKil1cHJ2X3JlYWxsb2MobWF4ZXhwYW5zaW9uLT5lbmRFeHBhbnNpb25DRSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqIG1heGV4cGFuc2lvbi0+c2l6ZSAq
IHNpemVvZih1aW50MzJfdCkpOw0KICAgIHVpbnQ4X3QgKm5ld2VjZXMgPSAodWludDhfdCAqKXVw
cnZfcmVhbGxvYyhtYXhleHBhbnNpb24tPmV4cGFuc2lvbkNFU2l6ZSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIgKiBtYXhleHBhbnNpb24tPnNpemUgKiBzaXplb2YodWlu
dDhfdCkpOw0KICAgIGlmIChuZXdlZWNlID09IF9fbnVsbCB8fCBuZXdlY2VzID09IF9fbnVsbCkg
ew0KDQoNCg0KICAgICAgKnN0YXR1cyA9IFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1I7DQogICAg
ICByZXR1cm4gLTE7DQogICAgfQ0KICAgIG1heGV4cGFuc2lvbi0+ZW5kRXhwYW5zaW9uQ0UgPSBu
ZXdlZWNlOw0KICAgIG1heGV4cGFuc2lvbi0+ZXhwYW5zaW9uQ0VTaXplID0gbmV3ZWNlczsNCiAg
ICBtYXhleHBhbnNpb24tPnNpemUgKj0gMjsNCiAgfQ0KDQogIHVpbnQzMl90ICpwZW5kZXhwYW5z
aW9uY2UgPSBtYXhleHBhbnNpb24tPmVuZEV4cGFuc2lvbkNFOw0KICB1aW50OF90ICpwZXhwYW5z
aW9uc2l6ZSA9IG1heGV4cGFuc2lvbi0+ZXhwYW5zaW9uQ0VTaXplOw0KICBpbnQgcG9zID0gbWF4
ZXhwYW5zaW9uLT5wb3NpdGlvbjsNCg0KICB1aW50MzJfdCAqc3RhcnQgPSBwZW5kZXhwYW5zaW9u
Y2U7DQogIHVpbnQzMl90ICpsaW1pdCA9IHBlbmRleHBhbnNpb25jZSArIHBvczsNCg0KDQoNCiAg
dWludDMyX3QgKm1pZDsNCiAgaW50IHJlc3VsdCA9IC0xOw0KICB3aGlsZSAoc3RhcnQgPCBsaW1p
dCAtIDEpIHsNCiAgICBtaWQgPSBzdGFydCArICgobGltaXQgLSBzdGFydCkgPj4gMSk7DQogICAg
aWYgKGVuZGV4cGFuc2lvbiA8PSAqbWlkKSB7DQogICAgICBsaW1pdCA9IG1pZDsNCiAgICB9DQog
ICAgZWxzZSB7DQogICAgICBzdGFydCA9IG1pZDsNCiAgICB9DQogIH0NCg0KICBpZiAoKnN0YXJ0
ID09IGVuZGV4cGFuc2lvbikgew0KICAgIHJlc3VsdCA9IHN0YXJ0IC0gcGVuZGV4cGFuc2lvbmNl
Ow0KICB9DQogIGVsc2UNCiAgICBpZiAoKmxpbWl0ID09IGVuZGV4cGFuc2lvbikgew0KICAgICAg
cmVzdWx0ID0gbGltaXQgLSBwZW5kZXhwYW5zaW9uY2U7DQogICAgfQ0KDQogIGlmIChyZXN1bHQg
PiAtMSkgew0KDQoNCiAgICB1aW50OF90ICpjdXJyZW50c2l6ZSA9IHBleHBhbnNpb25zaXplICsg
cmVzdWx0Ow0KICAgIGlmICgqY3VycmVudHNpemUgPCBleHBhbnNpb25zaXplKSB7DQogICAgICAq
Y3VycmVudHNpemUgPSBleHBhbnNpb25zaXplOw0KICAgIH0NCiAgfQ0KICBlbHNlIHsNCg0KDQoN
CiAgICBpbnQgc2hpZnRzaXplID0gKHBlbmRleHBhbnNpb25jZSArIHBvcykgLSBzdGFydDsNCiAg
ICB1aW50MzJfdCAqc2hpZnRwb3MgPSBzdGFydCArIDE7DQogICAgdWludDhfdCAqc2l6ZXNoaWZ0
cG9zID0gcGV4cGFuc2lvbnNpemUgKyAoc2hpZnRwb3MgLSBwZW5kZXhwYW5zaW9uY2UpOw0KDQoN
CiAgICBpZiAoc2hpZnRzaXplID09IDAgfHwgKihwZW5kZXhwYW5zaW9uY2UgKyBwb3MpIDwgZW5k
ZXhwYW5zaW9uKSB7DQogICAgICAqKHBlbmRleHBhbnNpb25jZSArIHBvcyArIDEpID0gZW5kZXhw
YW5zaW9uOw0KICAgICAgKihwZXhwYW5zaW9uc2l6ZSArIHBvcyArIDEpID0gZXhwYW5zaW9uc2l6
ZTsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICA6OiBtZW1tb3ZlKHNoaWZ0cG9zICsgMSwgc2hp
ZnRwb3MsIHNoaWZ0c2l6ZSAqIHNpemVvZihpbnQzMl90KSk7DQogICAgICA6OiBtZW1tb3ZlKHNp
emVzaGlmdHBvcyArIDEsIHNpemVzaGlmdHBvcywgc2hpZnRzaXplICogc2l6ZW9mKHVpbnQ4X3Qp
KTsNCg0KICAgICAgKnNoaWZ0cG9zID0gZW5kZXhwYW5zaW9uOw0KICAgICAgKnNpemVzaGlmdHBv
cyA9IGV4cGFuc2lvbnNpemU7DQogICAgfQ0KICAgIG1heGV4cGFuc2lvbi0+cG9zaXRpb24gKys7
DQojIDUyNCAidWNvbF9lbG0uY3BwIg0KICB9DQoNCiAgcmV0dXJuIG1heGV4cGFuc2lvbi0+cG9z
aXRpb247DQp9DQojIDU0MCAidWNvbF9lbG0uY3BwIg0KaW50IHVwcnZfdWNhX3NldE1heEphbW9F
eHBhbnNpb24oVUNoYXIgY2gsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBlbmRleHBhbnNpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90IGV4cGFuc2lvbnNpemUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhK
YW1vRXhwYW5zaW9uVGFibGUgKm1heGV4cGFuc2lvbiwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cykNCnsNCiAgVUJvb2wgaXNWID0gMTsNCiAgaWYg
KCgodWludDMyX3QpY2ggLSAweDExMDApIDw9ICgweDExMTIgLSAweDExMDApKSB7DQoNCg0KICAg
ICAgaWYgKG1heGV4cGFuc2lvbi0+bWF4TFNpemUgPCBleHBhbnNpb25zaXplKSB7DQogICAgICAg
ICAgbWF4ZXhwYW5zaW9uLT5tYXhMU2l6ZSA9IGV4cGFuc2lvbnNpemU7DQogICAgICB9DQogICAg
ICByZXR1cm4gbWF4ZXhwYW5zaW9uLT5wb3NpdGlvbjsNCiAgfQ0KDQogIGlmICgoKHVpbnQzMl90
KWNoIC0gMHgxMTYxKSA8PSAoMHgxMTc1IC0gMHgxMTYxKSkgew0KDQogICAgICBpZiAobWF4ZXhw
YW5zaW9uLT5tYXhWU2l6ZSA8IGV4cGFuc2lvbnNpemUpIHsNCiAgICAgICAgICBtYXhleHBhbnNp
b24tPm1heFZTaXplID0gZXhwYW5zaW9uc2l6ZTsNCiAgICAgIH0NCiAgfQ0KDQogIGlmICgoKHVp
bnQzMl90KWNoIC0gMHgxMUE4KSA8PSAoMHgxMUMyIC0gMHgxMUE4KSkgew0KICAgICAgaXNWID0g
MDsNCg0KICAgICAgaWYgKG1heGV4cGFuc2lvbi0+bWF4VFNpemUgPCBleHBhbnNpb25zaXplKSB7
DQogICAgICAgICAgbWF4ZXhwYW5zaW9uLT5tYXhUU2l6ZSA9IGV4cGFuc2lvbnNpemU7DQogICAg
ICB9DQogIH0NCg0KICBpZiAobWF4ZXhwYW5zaW9uLT5zaXplID09IDApIHsNCg0KICAgIG1heGV4
cGFuc2lvbi0+ZW5kRXhwYW5zaW9uQ0UgPQ0KICAgICAgICAgICAgICAgKHVpbnQzMl90ICopdXBy
dl9tYWxsb2MoMTAyNCAqIHNpemVvZih1aW50MzJfdCkpOw0KICAgICAgICAgICAgICAgICAgICAg
ICA7DQogICAgaWYgKG1heGV4cGFuc2lvbi0+ZW5kRXhwYW5zaW9uQ0UgPT0gX19udWxsKSB7DQog
ICAgICAgICpzdGF0dXMgPSBVX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SOw0KICAgICAgICByZXR1
cm4gMDsNCiAgICB9DQogICAgKihtYXhleHBhbnNpb24tPmVuZEV4cGFuc2lvbkNFKSA9IDA7DQog
ICAgbWF4ZXhwYW5zaW9uLT5pc1YgPQ0KICAgICAgICAgICAgICAgICAoVUJvb2wgKil1cHJ2X21h
bGxvYygxMDI0ICogc2l6ZW9mKFVCb29sKSk7DQogICAgICAgICAgICAgICAgICAgICAgIDsNCiAg
ICBpZiAobWF4ZXhwYW5zaW9uLT5pc1YgPT0gX19udWxsKSB7DQogICAgICAgICpzdGF0dXMgPSBV
X01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SOw0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQogICAg
KihtYXhleHBhbnNpb24tPmlzVikgPSAwOw0KICAgIG1heGV4cGFuc2lvbi0+c2l6ZSA9IDEwMjQ7
DQogICAgbWF4ZXhwYW5zaW9uLT5wb3NpdGlvbiA9IDA7DQogIH0NCg0KICBpZiAobWF4ZXhwYW5z
aW9uLT5wb3NpdGlvbiArIDEgPT0gbWF4ZXhwYW5zaW9uLT5zaXplKSB7DQogICAgdWludDMyX3Qg
Km5ld2VlY2UgPSAodWludDMyX3QgKil1cHJ2X3JlYWxsb2MobWF4ZXhwYW5zaW9uLT5lbmRFeHBh
bnNpb25DRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqIG1heGV4cGFu
c2lvbi0+c2l6ZSAqIHNpemVvZih1aW50MzJfdCkpOw0KICAgIFVCb29sICpuZXdpc1YgPSAoVUJv
b2wgKil1cHJ2X3JlYWxsb2MobWF4ZXhwYW5zaW9uLT5pc1YsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIgKiBtYXhleHBhbnNpb24tPnNpemUgKiBzaXplb2YoVUJvb2wpKTsN
CiAgICBpZiAobmV3ZWVjZSA9PSBfX251bGwgfHwgbmV3aXNWID09IF9fbnVsbCkgew0KDQoNCg0K
ICAgICAgKnN0YXR1cyA9IFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1I7DQogICAgICByZXR1cm4g
LTE7DQogICAgfQ0KICAgIG1heGV4cGFuc2lvbi0+ZW5kRXhwYW5zaW9uQ0UgPSBuZXdlZWNlOw0K
ICAgIG1heGV4cGFuc2lvbi0+aXNWID0gbmV3aXNWOw0KICAgIG1heGV4cGFuc2lvbi0+c2l6ZSAq
PSAyOw0KICB9DQoNCiAgdWludDMyX3QgKnBlbmRleHBhbnNpb25jZSA9IG1heGV4cGFuc2lvbi0+
ZW5kRXhwYW5zaW9uQ0U7DQogIGludCBwb3MgPSBtYXhleHBhbnNpb24tPnBvc2l0aW9uOw0KDQog
IHdoaWxlIChwb3MgPiAwKSB7DQogICAgICBwb3MgLS07DQogICAgICBpZiAoKihwZW5kZXhwYW5z
aW9uY2UgKyBwb3MpID09IGVuZGV4cGFuc2lvbikgew0KICAgICAgICAgIHJldHVybiBtYXhleHBh
bnNpb24tPnBvc2l0aW9uOw0KICAgICAgfQ0KICB9DQoNCiAgKihwZW5kZXhwYW5zaW9uY2UgKyBt
YXhleHBhbnNpb24tPnBvc2l0aW9uKSA9IGVuZGV4cGFuc2lvbjsNCiAgKihtYXhleHBhbnNpb24t
PmlzViArIG1heGV4cGFuc2lvbi0+cG9zaXRpb24pID0gaXNWOw0KICBtYXhleHBhbnNpb24tPnBv
c2l0aW9uICsrOw0KDQogIHJldHVybiBtYXhleHBhbnNpb24tPnBvc2l0aW9uOw0KfQ0KDQoNCnN0
YXRpYyB2b2lkIENvbnRyRW5kQ1BTZXQodWludDhfdCAqdGFibGUsIFVDaGFyIGMpIHsNCiAgICB1
aW50MzJfdCBoYXNoOw0KICAgIHVpbnQ4X3QgKmh0Qnl0ZTsNCg0KICAgIGhhc2ggPSBjOw0KICAg
IGlmIChoYXNoID49IDEwNTYqOCkgew0KICAgICAgICBoYXNoID0gKGhhc2ggJiAweDFmZmYpICsg
MjU2Ow0KICAgIH0NCiAgICBodEJ5dGUgPSAmdGFibGVbaGFzaD4+M107DQogICAgKmh0Qnl0ZSB8
PSAoMSA8PCAoaGFzaCAmIDcpKTsNCn0NCg0KDQpzdGF0aWMgdm9pZCB1bnNhZmVDUFNldCh1aW50
OF90ICp0YWJsZSwgVUNoYXIgYykgew0KICAgIHVpbnQzMl90IGhhc2g7DQogICAgdWludDhfdCAq
aHRCeXRlOw0KDQogICAgaGFzaCA9IGM7DQogICAgaWYgKGhhc2ggPj0gMTA1Nio4KSB7DQogICAg
ICAgIGlmIChoYXNoID49IDB4ZDgwMCAmJiBoYXNoIDw9IDB4ZjhmZikgew0KDQoNCiAgICAgICAg
ICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBoYXNoID0gKGhhc2ggJiAweDFmZmYpICsg
MjU2Ow0KICAgIH0NCiAgICBodEJ5dGUgPSAmdGFibGVbaGFzaD4+M107DQogICAgKmh0Qnl0ZSB8
PSAoMSA8PCAoaGFzaCAmIDcpKTsNCn0NCg0KDQoNCnN0YXRpYyB2b2lkIHVwcnZfdWNhX3Vuc2Fm
ZUNQQWRkQ0NOWih0ZW1wVUNBVGFibGUgKnQsIFVFcnJvckNvZGUgKnN0YXR1cykgew0KDQogICAg
VUNoYXIgYzsNCiAgICB1aW50MTZfdCBmY2Q7DQoNCiAgICBjb25zdCB1aW50MTZfdCAqZmNkVHJp
ZURhdGE7DQoNCiAgICBmY2RUcmllRGF0YSA9IHVub3JtX2dldEZDRFRyaWVfMl8yKHN0YXR1cyk7
DQogICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgew0KICAgICAgICByZXR1cm47DQogICAgfQ0K
DQogICAgZm9yIChjPTA7IGM8MHhmZmZmOyBjKyspIHsNCiAgICAgICAgZmNkID0gdW5vcm1fZ2V0
RkNEMTYoZmNkVHJpZURhdGEsIGMpOw0KICAgICAgICBpZiAoZmNkID49IDB4MTAwIHx8DQogICAg
ICAgICAgICAoKCgoYykmMHhmZmZmZmMwMCk9PTB4ZDgwMCkgJiYgZmNkICE9IDApKQ0KICAgICAg
ICAgICAgICAgIHVuc2FmZUNQU2V0KHQtPnVuc2FmZUNQLCBjKTsNCiAgICB9DQoNCiAgICBpZih0
LT5wcmVmaXhMb29rdXAgIT0gX19udWxsKSB7DQogICAgICBpbnQzMl90IGkgPSAtMTsNCiAgICAg
IGNvbnN0IFVIYXNoRWxlbWVudCAqZSA9IF9fbnVsbDsNCiAgICAgIFVDQUVsZW1lbnRzICplbGVt
ZW50ID0gX19udWxsOw0KICAgICAgVUNoYXIgTkZDYnVmWzI1Nl07DQogICAgICB1aW50MzJfdCBO
RkNidWZMZW4gPSAwOw0KICAgICAgd2hpbGUoKGUgPSB1aGFzaF9uZXh0RWxlbWVudF8yXzIodC0+
cHJlZml4TG9va3VwLCAmaSkpICE9IF9fbnVsbCkgew0KICAgICAgICBlbGVtZW50ID0gKFVDQUVs
ZW1lbnRzICopZS0+dmFsdWUucG9pbnRlcjsNCg0KDQoNCiAgICAgICAgTkZDYnVmTGVuID0gdW5v
cm1fbm9ybWFsaXplXzJfMihlbGVtZW50LT5jUG9pbnRzLCBlbGVtZW50LT5jU2l6ZSwgVU5PUk1f
TkZDLCAwLA0KICAgICAgICAgIE5GQ2J1ZiwgMjU2LCBzdGF0dXMpOw0KICAgICAgICB1bnNhZmVD
UFNldCh0LT51bnNhZmVDUCwgTkZDYnVmWzBdKTsNCiAgICAgIH0NCiAgICB9DQp9DQoNCnVpbnQz
Ml90IHVwcnZfdWNhX2FkZFByZWZpeCh0ZW1wVUNBVGFibGUgKnQsIHVpbnQzMl90IENFLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNBRWxlbWVudHMgKmVsZW1lbnQsIFVFcnJv
ckNvZGUgKnN0YXR1cykgew0KDQoNCg0KDQogICAgQ250VGFibGUgKmNvbnRyYWN0aW9ucyA9IHQt
PmNvbnRyYWN0aW9uczsNCiAgICBVQ2hhcjMyIGNwOw0KICAgIHVpbnQzMl90IGNwc2l6ZSA9IDA7
DQogICAgVUNoYXIgKm9sZENQID0gZWxlbWVudC0+Y1BvaW50czsNCiAgICB1aW50MzJfdCBvbGRD
UFNpemUgPSBlbGVtZW50LT5jU2l6ZTsNCg0KDQogICAgY29udHJhY3Rpb25zLT5jdXJyZW50VGFn
ID0gU1BFQ19QUk9DX1RBRzsNCg0KDQogICAgdWludDMyX3QgaiA9IDA7DQojIDcyNSAidWNvbF9l
bG0uY3BwIg0KICAgIGZvciAoaiA9IDE7IGo8ZWxlbWVudC0+cHJlZml4U2l6ZTsgaisrKSB7DQoN
Cg0KICAgICAgaWYoISgoKChlbGVtZW50LT5wcmVmaXhbal0pJjB4ZmZmZmZjMDApPT0weGRjMDAp
KSkgew0KICAgICAgICB1bnNhZmVDUFNldCh0LT51bnNhZmVDUCwgZWxlbWVudC0+cHJlZml4W2pd
KTsNCiAgICAgIH0NCiAgICB9DQoNCiAgICBVQ2hhciB0ZW1wUHJlZml4ID0gMDsNCg0KICAgIGZv
cihqID0gMDsgaiA8IGVsZW1lbnQtPnByZWZpeFNpemUvMjsgaisrKSB7DQoNCiAgICAgIHRlbXBQ
cmVmaXggPSAqKCBlbGVtZW50LT5wcmVmaXgrZWxlbWVudC0+cHJlZml4U2l6ZS1qLTEpOw0KICAg
ICAgKiggZWxlbWVudC0+cHJlZml4K2VsZW1lbnQtPnByZWZpeFNpemUtai0xKSA9IGVsZW1lbnQt
PnByZWZpeFtqXTsNCiAgICAgIGVsZW1lbnQtPnByZWZpeFtqXSA9IHRlbXBQcmVmaXg7DQogICAg
fQ0KIyA3NTEgInVjb2xfZWxtLmNwcCINCiAgICBpZighKCgoKGVsZW1lbnQtPmNQb2ludHNbMF0p
JjB4ZmZmZmZjMDApPT0weGRjMDApKSkgew0KICAgICAgdW5zYWZlQ1BTZXQodC0+dW5zYWZlQ1As
IGVsZW1lbnQtPmNQb2ludHNbMF0pOw0KICAgIH0NCiMgNzYyICJ1Y29sX2VsbS5jcHAiDQogICAg
ZWxlbWVudC0+Y1BvaW50cyA9IGVsZW1lbnQtPnByZWZpeDsNCiAgICBlbGVtZW50LT5jU2l6ZSA9
IGVsZW1lbnQtPnByZWZpeFNpemU7DQoNCg0KDQoNCiAgICBpZighKCgoKGVsZW1lbnQtPmNQb2lu
dHNbZWxlbWVudC0+Y1NpemUgLTFdKSYweGZmZmZmYzAwKT09MHhkYzAwKSkpIHsNCiAgICAgIENv
bnRyRW5kQ1BTZXQodC0+Y29udHJFbmRDUCwgZWxlbWVudC0+Y1BvaW50c1tlbGVtZW50LT5jU2l6
ZSAtMV0pOw0KICAgIH0NCg0KDQogICAgeyAoY3ApPShlbGVtZW50LT5jUG9pbnRzKVsoY3BzaXpl
KSsrXTsgaWYoKCgoY3ApJjB4ZmZmZmZjMDApPT0weGQ4MDApKSB7IHVpbnQxNl90IF9fYzI7IGlm
KChjcHNpemUpPChlbGVtZW50LT5jU2l6ZSkgJiYgKCgoX19jMj0oZWxlbWVudC0+Y1BvaW50cylb
KGNwc2l6ZSldKSYweGZmZmZmYzAwKT09MHhkYzAwKSkgeyArKyhjcHNpemUpOyAoY3ApPSgoKChj
cCkpPDwxMFVMKSsoX19jMiktKCgweGQ4MDA8PDEwVUwpKzB4ZGMwMC0weDEwMDAwKSk7IH0gZWxz
ZSBpZigwKSB7IChjcCk9MHhmZmZmOyB9IH0gZWxzZSBpZigoMCkgJiYgISgodWludDMyX3QpKGNw
KTwweGQ4MDAgfHwgKCh1aW50MzJfdCkoY3ApPjB4ZGZmZiAmJiAodWludDMyX3QpKGNwKTw9MHgx
MGZmZmYgJiYgISgoY3ApPj0weGZkZDAgJiYgKCh1aW50MzJfdCkoY3ApPD0weGZkZWYgfHwgKChj
cCkmMHhmZmZlKT09MHhmZmZlKSAmJiAodWludDMyX3QpKGNwKTw9MHgxMGZmZmYpKSkpIHsgKGNw
KT0weGZmZmY7IH0gfTsNCg0KDQoNCiAgICBpZigoKCgodWludDMyX3QpKGVsZW1lbnQtPnByZWZp
eFswXSkgLSAweDExMDApIDw9ICgweDExMTIgLSAweDExMDApKSB8fCAoKCh1aW50MzJfdCkoZWxl
bWVudC0+cHJlZml4WzBdKSAtIDB4MTE2MSkgPD0gKDB4MTE3NSAtIDB4MTE2MSkpIHx8ICgoKHVp
bnQzMl90KShlbGVtZW50LT5wcmVmaXhbMF0pIC0gMHgxMUE4KSA8PSAoMHgxMUMyIC0gMHgxMUE4
KSkpKSB7DQogICAgICB0LT5pbWFnZS0+amFtb1NwZWNpYWwgPSAxOw0KICAgIH0NCg0KDQoNCiAg
ICBpZighKCgoKCgoQ0UpKSYweEYwMDAwMDAwKT4+MjgpPT0weEYpICYmICgoKCgoQ0UpKSYweDBG
MDAwMDAwKT4+MjQpID09IFNQRUNfUFJPQ19UQUcpKSkgew0KDQogICAgICBpbnQzMl90IGZpcnN0
Q29udHJhY3Rpb25PZmZzZXQgPSAwOw0KICAgICAgaW50MzJfdCBjb250cmFjdGlvbk9mZnNldCA9
IDA7DQogICAgICBmaXJzdENvbnRyYWN0aW9uT2Zmc2V0ID0gdXBydl9jbnR0YWJfYWRkQ29udHJh
Y3Rpb25fMl8yKGNvbnRyYWN0aW9ucywgMHhGRkZGRkYsIDAsIENFLCBzdGF0dXMpOw0KICAgICAg
dWludDMyX3QgbmV3Q0UgPSB1cHJ2X3VjYV9wcm9jZXNzQ29udHJhY3Rpb24oY29udHJhY3Rpb25z
LCBlbGVtZW50LCAweEYwMDAwMDAwLCBzdGF0dXMpOw0KICAgICAgY29udHJhY3Rpb25PZmZzZXQg
PSB1cHJ2X2NudHRhYl9hZGRDb250cmFjdGlvbl8yXzIoY29udHJhY3Rpb25zLCBmaXJzdENvbnRy
YWN0aW9uT2Zmc2V0LCAqZWxlbWVudC0+cHJlZml4LCBuZXdDRSwgc3RhdHVzKTsNCiAgICAgIGNv
bnRyYWN0aW9uT2Zmc2V0ID0gdXBydl9jbnR0YWJfYWRkQ29udHJhY3Rpb25fMl8yKGNvbnRyYWN0
aW9ucywgZmlyc3RDb250cmFjdGlvbk9mZnNldCwgMHhGRkZGLCBDRSwgc3RhdHVzKTsNCiAgICAg
IENFID0gKDB4RjAwMDAwMDAgfCAoKFNQRUNfUFJPQ19UQUcpPDwyNCkgfCAoKGZpcnN0Q29udHJh
Y3Rpb25PZmZzZXQpKSYweEZGRkZGRik7DQogICAgfSBlbHNlIHsNCg0KDQogICAgICBpbnQzMl90
IHBvc2l0aW9uID0gdXBydl9jbnR0YWJfZmluZENQXzJfMihjb250cmFjdGlvbnMsIENFLCAqZWxl
bWVudC0+cHJlZml4LCBzdGF0dXMpOw0KICAgICAgaWYocG9zaXRpb24gPiAwKSB7DQogICAgICAg
IHVpbnQzMl90IGVDRSA9IHVwcnZfY250dGFiX2dldENFXzJfMihjb250cmFjdGlvbnMsIENFLCBw
b3NpdGlvbiwgc3RhdHVzKTsNCiAgICAgICAgdWludDMyX3QgbmV3Q0UgPSB1cHJ2X3VjYV9wcm9j
ZXNzQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBlbGVtZW50LCBlQ0UsIHN0YXR1cyk7DQogICAg
ICAgIHVwcnZfY250dGFiX3NldENvbnRyYWN0aW9uXzJfMihjb250cmFjdGlvbnMsIENFLCBwb3Np
dGlvbiwgKihlbGVtZW50LT5wcmVmaXgpLCBuZXdDRSwgc3RhdHVzKTsNCiAgICAgIH0gZWxzZSB7
DQogICAgICAgIHVwcnZfdWNhX3Byb2Nlc3NDb250cmFjdGlvbihjb250cmFjdGlvbnMsIGVsZW1l
bnQsIDB4RjAwMDAwMDAsIHN0YXR1cyk7DQogICAgICAgIHVwcnZfY250dGFiX2luc2VydENvbnRy
YWN0aW9uXzJfMihjb250cmFjdGlvbnMsIENFLCAqKGVsZW1lbnQtPnByZWZpeCksIGVsZW1lbnQt
Pm1hcENFLCBzdGF0dXMpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIGVsZW1lbnQtPmNQb2ludHMg
PSBvbGRDUDsNCiAgICBlbGVtZW50LT5jU2l6ZSA9IG9sZENQU2l6ZTsNCg0KICAgIHJldHVybiBD
RTsNCn0NCg0KDQoNCg0KDQoNCnVpbnQzMl90IHVwcnZfdWNhX2FkZENvbnRyYWN0aW9uKHRlbXBV
Q0FUYWJsZSAqdCwgdWludDMyX3QgQ0UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVQ0FFbGVtZW50cyAqZWxlbWVudCwgVUVycm9yQ29kZSAqc3RhdHVzKSB7DQogICAgQ250VGFi
bGUgKmNvbnRyYWN0aW9ucyA9IHQtPmNvbnRyYWN0aW9uczsNCiAgICBVQ2hhcjMyIGNwOw0KICAg
IHVpbnQzMl90IGNwc2l6ZSA9IDA7DQoNCiAgICBjb250cmFjdGlvbnMtPmN1cnJlbnRUYWcgPSBD
T05UUkFDVElPTl9UQUc7DQoNCg0KICAgIHsgKGNwKT0oZWxlbWVudC0+Y1BvaW50cylbKGNwc2l6
ZSkrK107IGlmKCgoKGNwKSYweGZmZmZmYzAwKT09MHhkODAwKSkgeyB1aW50MTZfdCBfX2MyOyBp
ZigoY3BzaXplKTwoZWxlbWVudC0+Y1NpemUpICYmICgoKF9fYzI9KGVsZW1lbnQtPmNQb2ludHMp
WyhjcHNpemUpXSkmMHhmZmZmZmMwMCk9PTB4ZGMwMCkpIHsgKysoY3BzaXplKTsgKGNwKT0oKCgo
Y3ApKTw8MTBVTCkrKF9fYzIpLSgoMHhkODAwPDwxMFVMKSsweGRjMDAtMHgxMDAwMCkpOyB9IGVs
c2UgaWYoMCkgeyAoY3ApPTB4ZmZmZjsgfSB9IGVsc2UgaWYoKDApICYmICEoKHVpbnQzMl90KShj
cCk8MHhkODAwIHx8ICgodWludDMyX3QpKGNwKT4weGRmZmYgJiYgKHVpbnQzMl90KShjcCk8PTB4
MTBmZmZmICYmICEoKGNwKT49MHhmZGQwICYmICgodWludDMyX3QpKGNwKTw9MHhmZGVmIHx8ICgo
Y3ApJjB4ZmZmZSk9PTB4ZmZmZSkgJiYgKHVpbnQzMl90KShjcCk8PTB4MTBmZmZmKSkpKSB7IChj
cCk9MHhmZmZmOyB9IH07DQoNCiAgICBpZihjcHNpemU8ZWxlbWVudC0+Y1NpemUpIHsNCiAgICAg
IHVpbnQzMl90IGogPSAwOw0KICAgICAgZm9yIChqPTE7IGo8ZWxlbWVudC0+Y1NpemU7IGorKykg
ew0KDQoNCiAgICAgICAgaWYoISgoKChlbGVtZW50LT5jUG9pbnRzW2pdKSYweGZmZmZmYzAwKT09
MHhkYzAwKSkpIHsNCiAgICAgICAgICB1bnNhZmVDUFNldCh0LT51bnNhZmVDUCwgZWxlbWVudC0+
Y1BvaW50c1tqXSk7DQogICAgICAgIH0NCiAgICAgIH0NCg0KDQoNCiAgICAgIGlmKCEoKCgoZWxl
bWVudC0+Y1BvaW50c1tlbGVtZW50LT5jU2l6ZSAtMV0pJjB4ZmZmZmZjMDApPT0weGRjMDApKSkg
ew0KICAgICAgICBDb250ckVuZENQU2V0KHQtPmNvbnRyRW5kQ1AsIGVsZW1lbnQtPmNQb2ludHNb
ZWxlbWVudC0+Y1NpemUgLTFdKTsNCiAgICAgIH0NCg0KDQoNCiAgICAgIGlmKCgoKCh1aW50MzJf
dCkoZWxlbWVudC0+Y1BvaW50c1swXSkgLSAweDExMDApIDw9ICgweDExMTIgLSAweDExMDApKSB8
fCAoKCh1aW50MzJfdCkoZWxlbWVudC0+Y1BvaW50c1swXSkgLSAweDExNjEpIDw9ICgweDExNzUg
LSAweDExNjEpKSB8fCAoKCh1aW50MzJfdCkoZWxlbWVudC0+Y1BvaW50c1swXSkgLSAweDExQTgp
IDw9ICgweDExQzIgLSAweDExQTgpKSkpIHsNCiAgICAgICAgdC0+aW1hZ2UtPmphbW9TcGVjaWFs
ID0gMTsNCiAgICAgIH0NCg0KDQogICAgICBlbGVtZW50LT5jUG9pbnRzKz1jcHNpemU7DQogICAg
ICBlbGVtZW50LT5jU2l6ZS09Y3BzaXplOw0KICAgICAgaWYoISgoKCgoKENFKSkmMHhGMDAwMDAw
MCk+PjI4KT09MHhGKSAmJiAoKCgoKENFKSkmMHgwRjAwMDAwMCk+PjI0KSA9PSBDT05UUkFDVElP
Tl9UQUcpKSkgew0KDQogICAgICAgIGludDMyX3QgZmlyc3RDb250cmFjdGlvbk9mZnNldCA9IDA7
DQogICAgICAgIGludDMyX3QgY29udHJhY3Rpb25PZmZzZXQgPSAwOw0KICAgICAgICBmaXJzdENv
bnRyYWN0aW9uT2Zmc2V0ID0gdXBydl9jbnR0YWJfYWRkQ29udHJhY3Rpb25fMl8yKGNvbnRyYWN0
aW9ucywgMHhGRkZGRkYsIDAsIENFLCBzdGF0dXMpOw0KICAgICAgICB1aW50MzJfdCBuZXdDRSA9
IHVwcnZfdWNhX3Byb2Nlc3NDb250cmFjdGlvbihjb250cmFjdGlvbnMsIGVsZW1lbnQsIDB4RjAw
MDAwMDAsIHN0YXR1cyk7DQogICAgICAgIGNvbnRyYWN0aW9uT2Zmc2V0ID0gdXBydl9jbnR0YWJf
YWRkQ29udHJhY3Rpb25fMl8yKGNvbnRyYWN0aW9ucywgZmlyc3RDb250cmFjdGlvbk9mZnNldCwg
KmVsZW1lbnQtPmNQb2ludHMsIG5ld0NFLCBzdGF0dXMpOw0KICAgICAgICBjb250cmFjdGlvbk9m
ZnNldCA9IHVwcnZfY250dGFiX2FkZENvbnRyYWN0aW9uXzJfMihjb250cmFjdGlvbnMsIGZpcnN0
Q29udHJhY3Rpb25PZmZzZXQsIDB4RkZGRiwgQ0UsIHN0YXR1cyk7DQogICAgICAgIENFID0gKDB4
RjAwMDAwMDAgfCAoKENPTlRSQUNUSU9OX1RBRyk8PDI0KSB8ICgoZmlyc3RDb250cmFjdGlvbk9m
ZnNldCkpJjB4RkZGRkZGKTsNCiAgICAgIH0gZWxzZSB7DQoNCg0KICAgICAgICBpbnQzMl90IHBv
c2l0aW9uID0gdXBydl9jbnR0YWJfZmluZENQXzJfMihjb250cmFjdGlvbnMsIENFLCAqZWxlbWVu
dC0+Y1BvaW50cywgc3RhdHVzKTsNCiAgICAgICAgaWYocG9zaXRpb24gPiAwKSB7DQogICAgICAg
ICAgdWludDMyX3QgZUNFID0gdXBydl9jbnR0YWJfZ2V0Q0VfMl8yKGNvbnRyYWN0aW9ucywgQ0Us
IHBvc2l0aW9uLCBzdGF0dXMpOw0KICAgICAgICAgIHVpbnQzMl90IG5ld0NFID0gdXBydl91Y2Ff
cHJvY2Vzc0NvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgZWxlbWVudCwgZUNFLCBzdGF0dXMpOw0K
ICAgICAgICAgIHVwcnZfY250dGFiX3NldENvbnRyYWN0aW9uXzJfMihjb250cmFjdGlvbnMsIENF
LCBwb3NpdGlvbiwgKihlbGVtZW50LT5jUG9pbnRzKSwgbmV3Q0UsIHN0YXR1cyk7DQogICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgdWludDMyX3QgbmV3Q0UgPSB1cHJ2X3VjYV9wcm9jZXNzQ29u
dHJhY3Rpb24oY29udHJhY3Rpb25zLCBlbGVtZW50LCAweEYwMDAwMDAwLCBzdGF0dXMpOw0KICAg
ICAgICAgIHVwcnZfY250dGFiX2luc2VydENvbnRyYWN0aW9uXzJfMihjb250cmFjdGlvbnMsIENF
LCAqKGVsZW1lbnQtPmNQb2ludHMpLCBuZXdDRSwgc3RhdHVzKTsNCiAgICAgICAgfQ0KICAgICAg
fQ0KICAgICAgZWxlbWVudC0+Y1BvaW50cy09Y3BzaXplOw0KICAgICAgZWxlbWVudC0+Y1NpemUr
PWNwc2l6ZTsNCg0KICAgICAgdXRyaWVfc2V0MzJfMl8yKHQtPm1hcHBpbmcsIGNwLCBDRSk7DQog
ICAgfSBlbHNlIGlmKCEoKCgoKChDRSkpJjB4RjAwMDAwMDApPj4yOCk9PTB4RikgJiYgKCgoKChD
RSkpJjB4MEYwMDAwMDApPj4yNCkgPT0gQ09OVFJBQ1RJT05fVEFHKSkpIHsNCg0KICAgICAgdXRy
aWVfc2V0MzJfMl8yKHQtPm1hcHBpbmcsIGNwLCBlbGVtZW50LT5tYXBDRSk7DQogICAgfSBlbHNl
IHsNCiAgICAgIHVwcnZfY250dGFiX2NoYW5nZUNvbnRyYWN0aW9uXzJfMihjb250cmFjdGlvbnMs
IENFLCAwLCBlbGVtZW50LT5tYXBDRSwgc3RhdHVzKTsNCiAgICAgIHVwcnZfY250dGFiX2NoYW5n
ZUNvbnRyYWN0aW9uXzJfMihjb250cmFjdGlvbnMsIENFLCAweEZGRkYsIGVsZW1lbnQtPm1hcENF
LCBzdGF0dXMpOw0KICAgIH0NCiAgICByZXR1cm4gQ0U7DQp9DQoNCg0Kc3RhdGljIHVpbnQzMl90
IHVwcnZfdWNhX3Byb2Nlc3NDb250cmFjdGlvbihDbnRUYWJsZSAqY29udHJhY3Rpb25zLCBVQ0FF
bGVtZW50cyAqZWxlbWVudCwgdWludDMyX3QgZXhpc3RpbmdDRSwgVUVycm9yQ29kZSAqc3RhdHVz
KSB7DQogICAgaW50MzJfdCBmaXJzdENvbnRyYWN0aW9uT2Zmc2V0ID0gMDsNCiAgICBpbnQzMl90
IGNvbnRyYWN0aW9uT2Zmc2V0ID0gMDsNCg0KDQogICAgaWYoVV9GQUlMVVJFKCpzdGF0dXMpKSB7
DQogICAgICAgIHJldHVybiAweEYwMDAwMDAwOw0KICAgIH0NCg0KDQogICAgaWYoZWxlbWVudC0+
Y1NpemUgPT0gMSkgew0KICAgICAgaWYoKCgoKCgoZXhpc3RpbmdDRSkpJjB4RjAwMDAwMDApPj4y
OCk9PTB4RikgJiYgKCgoKCgoZXhpc3RpbmdDRSkpJjB4MEYwMDAwMDApPj4yNCkgPT0gQ09OVFJB
Q1RJT05fVEFHKXx8KCgoKChleGlzdGluZ0NFKSkmMHgwRjAwMDAwMCk+PjI0KSA9PSBTUEVDX1BS
T0NfVEFHKSkpICYmICgoVUNvbENFVGFncykoKChleGlzdGluZ0NFKSYweDBGMDAwMDAwKT4+MjQp
ID09IGNvbnRyYWN0aW9ucy0+Y3VycmVudFRhZykpIHsNCiAgICAgICAgdXBydl9jbnR0YWJfY2hh
bmdlQ29udHJhY3Rpb25fMl8yKGNvbnRyYWN0aW9ucywgZXhpc3RpbmdDRSwgMCwgZWxlbWVudC0+
bWFwQ0UsIHN0YXR1cyk7DQogICAgICAgIHVwcnZfY250dGFiX2NoYW5nZUNvbnRyYWN0aW9uXzJf
Mihjb250cmFjdGlvbnMsIGV4aXN0aW5nQ0UsIDB4RkZGRiwgZWxlbWVudC0+bWFwQ0UsIHN0YXR1
cyk7DQogICAgICAgIHJldHVybiBleGlzdGluZ0NFOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAg
cmV0dXJuIGVsZW1lbnQtPm1hcENFOw0KICAgICAgfQ0KICAgIH0NCg0KDQoNCg0KDQoNCiAgICBl
bGVtZW50LT5jUG9pbnRzKys7DQogICAgZWxlbWVudC0+Y1NpemUtLTsNCiAgICBpZighKCgoKCgo
ZXhpc3RpbmdDRSkpJjB4RjAwMDAwMDApPj4yOCk9PTB4RikgJiYgKCgoKCgoZXhpc3RpbmdDRSkp
JjB4MEYwMDAwMDApPj4yNCkgPT0gQ09OVFJBQ1RJT05fVEFHKXx8KCgoKChleGlzdGluZ0NFKSkm
MHgwRjAwMDAwMCk+PjI0KSA9PSBTUEVDX1BST0NfVEFHKSkpKSB7DQoNCiAgICAgIGZpcnN0Q29u
dHJhY3Rpb25PZmZzZXQgPSB1cHJ2X2NudHRhYl9hZGRDb250cmFjdGlvbl8yXzIoY29udHJhY3Rp
b25zLCAweEZGRkZGRiwgMCwgZXhpc3RpbmdDRSwgc3RhdHVzKTsNCiAgICAgIHVpbnQzMl90IG5l
d0NFID0gdXBydl91Y2FfcHJvY2Vzc0NvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgZWxlbWVudCwg
MHhGMDAwMDAwMCwgc3RhdHVzKTsNCiAgICAgIGNvbnRyYWN0aW9uT2Zmc2V0ID0gdXBydl9jbnR0
YWJfYWRkQ29udHJhY3Rpb25fMl8yKGNvbnRyYWN0aW9ucywgZmlyc3RDb250cmFjdGlvbk9mZnNl
dCwgKmVsZW1lbnQtPmNQb2ludHMsIG5ld0NFLCBzdGF0dXMpOw0KICAgICAgY29udHJhY3Rpb25P
ZmZzZXQgPSB1cHJ2X2NudHRhYl9hZGRDb250cmFjdGlvbl8yXzIoY29udHJhY3Rpb25zLCBmaXJz
dENvbnRyYWN0aW9uT2Zmc2V0LCAweEZGRkYsIGV4aXN0aW5nQ0UsIHN0YXR1cyk7DQogICAgICBl
eGlzdGluZ0NFID0gKDB4RjAwMDAwMDAgfCAoKGNvbnRyYWN0aW9ucy0+Y3VycmVudFRhZyk8PDI0
KSB8ICgoZmlyc3RDb250cmFjdGlvbk9mZnNldCkpJjB4RkZGRkZGKTsNCiAgICB9IGVsc2Ugew0K
DQoNCiAgICAgIGludDMyX3QgcG9zaXRpb24gPSB1cHJ2X2NudHRhYl9maW5kQ1BfMl8yKGNvbnRy
YWN0aW9ucywgZXhpc3RpbmdDRSwgKmVsZW1lbnQtPmNQb2ludHMsIHN0YXR1cyk7DQogICAgICBp
Zihwb3NpdGlvbiA+IDApIHsNCiAgICAgICAgdWludDMyX3QgZUNFID0gdXBydl9jbnR0YWJfZ2V0
Q0VfMl8yKGNvbnRyYWN0aW9ucywgZXhpc3RpbmdDRSwgcG9zaXRpb24sIHN0YXR1cyk7DQogICAg
ICAgIHVpbnQzMl90IG5ld0NFID0gdXBydl91Y2FfcHJvY2Vzc0NvbnRyYWN0aW9uKGNvbnRyYWN0
aW9ucywgZWxlbWVudCwgZUNFLCBzdGF0dXMpOw0KICAgICAgICB1cHJ2X2NudHRhYl9zZXRDb250
cmFjdGlvbl8yXzIoY29udHJhY3Rpb25zLCBleGlzdGluZ0NFLCBwb3NpdGlvbiwgKihlbGVtZW50
LT5jUG9pbnRzKSwgbmV3Q0UsIHN0YXR1cyk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB1aW50
MzJfdCBuZXdDRSA9IHVwcnZfdWNhX3Byb2Nlc3NDb250cmFjdGlvbihjb250cmFjdGlvbnMsIGVs
ZW1lbnQsIDB4RjAwMDAwMDAsIHN0YXR1cyk7DQogICAgICAgIHVwcnZfY250dGFiX2luc2VydENv
bnRyYWN0aW9uXzJfMihjb250cmFjdGlvbnMsIGV4aXN0aW5nQ0UsICooZWxlbWVudC0+Y1BvaW50
cyksIG5ld0NFLCBzdGF0dXMpOw0KICAgICAgfQ0KICAgIH0NCiAgICBlbGVtZW50LT5jUG9pbnRz
LS07DQogICAgZWxlbWVudC0+Y1NpemUrKzsNCiAgICByZXR1cm4gZXhpc3RpbmdDRTsNCn0NCg0K
c3RhdGljIHVpbnQzMl90IHVwcnZfdWNhX2ZpbmFsaXplQWRkaXRpb24odGVtcFVDQVRhYmxlICp0
LCBVQ0FFbGVtZW50cyAqZWxlbWVudCwgVUVycm9yQ29kZSAqc3RhdHVzKSB7DQogIHVpbnQzMl90
IENFID0gMHhGMDAwMDAwMDsNCg0KDQoNCiAgdWludDMyX3QgaSA9IDA7DQogIGlmKGVsZW1lbnQt
Pm1hcENFID09IDApIHsNCiAgICBmb3IoaSA9IDA7IGkgPCBlbGVtZW50LT5jU2l6ZTsgaSsrKSB7
DQogICAgICBpZighKCgoZWxlbWVudC0+Y1BvaW50c1tpXSkmMHhmZmZmZmMwMCk9PTB4ZGMwMCkp
IHsNCiAgICAgICAgdW5zYWZlQ1BTZXQodC0+dW5zYWZlQ1AsIGVsZW1lbnQtPmNQb2ludHNbaV0p
Ow0KICAgICAgfQ0KICAgIH0NCiAgfQ0KICBpZihlbGVtZW50LT5jU2l6ZSA+IDEpIHsNCiAgICB1
aW50MzJfdCBpID0gMDsNCiAgICBVQ2hhcjMyIGNwOw0KDQogICAgeyAoY3ApPShlbGVtZW50LT5j
UG9pbnRzKVsoaSkrK107IGlmKCgoKGNwKSYweGZmZmZmYzAwKT09MHhkODAwKSkgeyB1aW50MTZf
dCBfX2MyOyBpZigoaSk8KGVsZW1lbnQtPmNTaXplKSAmJiAoKChfX2MyPShlbGVtZW50LT5jUG9p
bnRzKVsoaSldKSYweGZmZmZmYzAwKT09MHhkYzAwKSkgeyArKyhpKTsgKGNwKT0oKCgoY3ApKTw8
MTBVTCkrKF9fYzIpLSgoMHhkODAwPDwxMFVMKSsweGRjMDAtMHgxMDAwMCkpOyB9IGVsc2UgaWYo
MCkgeyAoY3ApPTB4ZmZmZjsgfSB9IGVsc2UgaWYoKDApICYmICEoKHVpbnQzMl90KShjcCk8MHhk
ODAwIHx8ICgodWludDMyX3QpKGNwKT4weGRmZmYgJiYgKHVpbnQzMl90KShjcCk8PTB4MTBmZmZm
ICYmICEoKGNwKT49MHhmZGQwICYmICgodWludDMyX3QpKGNwKTw9MHhmZGVmIHx8ICgoY3ApJjB4
ZmZmZSk9PTB4ZmZmZSkgJiYgKHVpbnQzMl90KShjcCk8PTB4MTBmZmZmKSkpKSB7IChjcCk9MHhm
ZmZmOyB9IH07DQoNCiAgICBDRSA9IHV0cmllX2dldDMyXzJfMih0LT5tYXBwaW5nLCBjcCwgX19u
dWxsKTsNCg0KICAgIENFID0gdXBydl91Y2FfYWRkQ29udHJhY3Rpb24odCwgQ0UsIGVsZW1lbnQs
IHN0YXR1cyk7DQogIH0gZWxzZSB7DQoNCiAgICBDRSA9IHV0cmllX2dldDMyXzJfMih0LT5tYXBw
aW5nLCBlbGVtZW50LT5jUG9pbnRzWzBdLCBfX251bGwpOw0KDQogICAgaWYoIENFICE9IDB4RjAw
MDAwMDApIHsNCiAgICAgIGlmKCgoKCgoKENFKSkmMHhGMDAwMDAwMCk+PjI4KT09MHhGKSAmJiAo
KCgoKChDRSkpJjB4MEYwMDAwMDApPj4yNCkgPT0gQ09OVFJBQ1RJT05fVEFHKXx8KCgoKChDRSkp
JjB4MEYwMDAwMDApPj4yNCkgPT0gU1BFQ19QUk9DX1RBRykpKSApIHsNCiAgICAgICAgaWYoISgo
KCgoKGVsZW1lbnQtPm1hcENFKSkmMHhGMDAwMDAwMCk+PjI4KT09MHhGKSAmJiAoKCgoKGVsZW1l
bnQtPm1hcENFKSkmMHgwRjAwMDAwMCk+PjI0KSA9PSBTUEVDX1BST0NfVEFHKSkpIHsNCg0KICAg
ICAgICAgICAgdXBydl9jbnR0YWJfc2V0Q29udHJhY3Rpb25fMl8yKHQtPmNvbnRyYWN0aW9ucywg
Q0UsIDAsIDAsIGVsZW1lbnQtPm1hcENFLCBzdGF0dXMpOw0KDQogICAgICAgICAgICB1cHJ2X2Nu
dHRhYl9jaGFuZ2VMYXN0Q0VfMl8yKHQtPmNvbnRyYWN0aW9ucywgQ0UsIGVsZW1lbnQtPm1hcENF
LCBzdGF0dXMpOw0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KDQogICAgICAgIHV0cmllX3Nl
dDMyXzJfMih0LT5tYXBwaW5nLCBlbGVtZW50LT5jUG9pbnRzWzBdLCBlbGVtZW50LT5tYXBDRSk7
DQoNCg0KDQoNCiAgICAgIH0NCiAgICB9IGVsc2Ugew0KDQogICAgICB1dHJpZV9zZXQzMl8yXzIo
dC0+bWFwcGluZywgZWxlbWVudC0+Y1BvaW50c1swXSwgZWxlbWVudC0+bWFwQ0UpOw0KICAgIH0N
CiAgfQ0KICByZXR1cm4gQ0U7DQp9DQoNCg0KZXh0ZXJuICJDIiB1aW50MzJfdA0KdXBydl91Y2Ff
YWRkQW5FbGVtZW50XzJfMih0ZW1wVUNBVGFibGUgKnQsIFVDQUVsZW1lbnRzICplbGVtZW50LCBV
RXJyb3JDb2RlICpzdGF0dXMpIHsNCiAgRXhwYW5zaW9uVGFibGUgKmV4cGFuc2lvbnMgPSB0LT5l
eHBhbnNpb25zOw0KDQogIHVpbnQzMl90IGkgPSAxOw0KICB1aW50MzJfdCBleHBhbnNpb24gPSAw
Ow0KICB1aW50MzJfdCBDRTsNCg0KICBpZihVX0ZBSUxVUkUoKnN0YXR1cykpIHsNCiAgICAgIHJl
dHVybiAweEZGRkY7DQogIH0NCiAgaWYoZWxlbWVudC0+bm9PZkNFcyA9PSAxKSB7DQogICAgaWYo
ZWxlbWVudC0+aXNUaGFpID09IDApIHsNCiAgICAgIGVsZW1lbnQtPm1hcENFID0gZWxlbWVudC0+
Q0VzWzBdOw0KICAgIH0gZWxzZSB7DQogICAgICBleHBhbnNpb24gPSAodWludDMyX3QpKDB4RjAw
MDAwMDAgfCAoVEhBSV9UQUc8PDI0KQ0KICAgICAgICB8ICgodXBydl91Y2FfYWRkRXhwYW5zaW9u
KGV4cGFuc2lvbnMsIGVsZW1lbnQtPkNFc1swXSwgc3RhdHVzKSsoKCgoc2l6ZW9mKFVDQVRhYmxl
SGVhZGVyKSkrKCgoKHNpemVvZihVQ0FUYWJsZUhlYWRlcikpJTQpIT0wKT8oNC0oc2l6ZW9mKFVD
QVRhYmxlSGVhZGVyKSklNCk6MCkpKygoc2l6ZW9mKFVDb2xPcHRpb25TZXQpKSsoKCgoc2l6ZW9m
KFVDb2xPcHRpb25TZXQpKSU0KSE9MCk/KDQtKHNpemVvZihVQ29sT3B0aW9uU2V0KSklNCk6MCkp
KT4+MikpPDw0KQ0KICAgICAgICB8IDB4MSk7DQogICAgICBlbGVtZW50LT5tYXBDRSA9IGV4cGFu
c2lvbjsNCiAgICB9DQogIH0gZWxzZSB7DQojIDEwMjcgInVjb2xfZWxtLmNwcCINCiAgICBpZihl
bGVtZW50LT5ub09mQ0VzID09IDINCiAgICAgICYmICgoKGVsZW1lbnQtPkNFc1sxXSkgJiAweEMw
KSA9PSAweEMwKQ0KICAgICAgJiYgKGVsZW1lbnQtPkNFc1sxXSAmICh+KDB4RkYgPDwgMjQgfCAw
eEMwKSkpID09IDANCiAgICAgICYmICgoKGVsZW1lbnQtPkNFc1swXT4+OCkgJiAweEZGKSA9PSBV
Q09MX0JZVEVfQ09NTU9OKQ0KICAgICAgJiYgKChlbGVtZW50LT5DRXNbMF0gJiAweEZGKSA9PSBV
Q09MX0JZVEVfQ09NTU9OKQ0KICAgICAgKSB7DQoNCg0KDQogICAgICBlbGVtZW50LT5tYXBDRSA9
IDB4RjAwMDAwMDAgfCAoTE9OR19QUklNQVJZX1RBRzw8MjQpDQogICAgICAgIHwgKChlbGVtZW50
LT5DRXNbMF0+PjgpICYgMHhGRkZGMDApDQogICAgICAgIHwgKChlbGVtZW50LT5DRXNbMV0+PjI0
KSAmIDB4RkYpOw0KICAgIH0gZWxzZSB7DQogICAgICBleHBhbnNpb24gPSAodWludDMyX3QpKDB4
RjAwMDAwMDAgfCAoRVhQQU5TSU9OX1RBRzw8MjQpDQogICAgICAgIHwgKCh1cHJ2X3VjYV9hZGRF
eHBhbnNpb24oZXhwYW5zaW9ucywgZWxlbWVudC0+Q0VzWzBdLCBzdGF0dXMpKygoKChzaXplb2Yo
VUNBVGFibGVIZWFkZXIpKSsoKCgoc2l6ZW9mKFVDQVRhYmxlSGVhZGVyKSklNCkhPTApPyg0LShz
aXplb2YoVUNBVGFibGVIZWFkZXIpKSU0KTowKSkrKChzaXplb2YoVUNvbE9wdGlvblNldCkpKygo
KChzaXplb2YoVUNvbE9wdGlvblNldCkpJTQpIT0wKT8oNC0oc2l6ZW9mKFVDb2xPcHRpb25TZXQp
KSU0KTowKSkpPj4yKSk8PDQpDQogICAgICAgICYgMHhGRkZGRjApOw0KDQogICAgICBmb3IoaSA9
IDE7IGk8ZWxlbWVudC0+bm9PZkNFczsgaSsrKSB7DQogICAgICAgIHVwcnZfdWNhX2FkZEV4cGFu
c2lvbihleHBhbnNpb25zLCBlbGVtZW50LT5DRXNbaV0sIHN0YXR1cyk7DQogICAgICB9DQogICAg
ICBpZihlbGVtZW50LT5ub09mQ0VzIDw9IDB4Rikgew0KICAgICAgICBleHBhbnNpb24gfD0gZWxl
bWVudC0+bm9PZkNFczsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHVwcnZfdWNhX2FkZEV4cGFu
c2lvbihleHBhbnNpb25zLCAwLCBzdGF0dXMpOw0KICAgICAgfQ0KICAgICAgZWxlbWVudC0+bWFw
Q0UgPSBleHBhbnNpb247DQogICAgICB1cHJ2X3VjYV9zZXRNYXhFeHBhbnNpb24oZWxlbWVudC0+
Q0VzW2VsZW1lbnQtPm5vT2ZDRXMgLSAxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodWludDhfdCllbGVtZW50LT5ub09mQ0VzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHQtPm1heEV4cGFuc2lvbnMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dHVzKTsNCiAgICAgIGlmKCgoKCh1aW50MzJfdCkoZWxlbWVudC0+Y1BvaW50c1swXSkgLSAweDEx
MDApIDw9ICgweDExMTIgLSAweDExMDApKSB8fCAoKCh1aW50MzJfdCkoZWxlbWVudC0+Y1BvaW50
c1swXSkgLSAweDExNjEpIDw9ICgweDExNzUgLSAweDExNjEpKSB8fCAoKCh1aW50MzJfdCkoZWxl
bWVudC0+Y1BvaW50c1swXSkgLSAweDExQTgpIDw9ICgweDExQzIgLSAweDExQTgpKSkpIHsNCiAg
ICAgICAgdC0+aW1hZ2UtPmphbW9TcGVjaWFsID0gMTsNCiAgICAgICAgdXBydl91Y2Ffc2V0TWF4
SmFtb0V4cGFuc2lvbihlbGVtZW50LT5jUG9pbnRzWzBdLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudC0+Q0VzW2VsZW1lbnQtPm5vT2ZDRXMgLSAxXSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50OF90KWVsZW1lbnQtPm5vT2ZDRXMsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT5tYXhKYW1vRXhwYW5zaW9ucywNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyk7DQogICAgICB9DQogICAgfQ0KICB9
DQoNCg0KDQoNCg0KICBpZihlbGVtZW50LT5wcmVmaXhTaXplIT0wKSB7DQoNCg0KDQoNCg0KICAg
IFVDQUVsZW1lbnRzICpjb21wb3NlZCA9IChVQ0FFbGVtZW50cyAqKXVwcnZfbWFsbG9jKHNpemVv
ZihVQ0FFbGVtZW50cykpOw0KDQogICAgaWYgKGNvbXBvc2VkID09IF9fbnVsbCkgew0KICAgICAg
ICAqc3RhdHVzID0gVV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUjsNCiAgICAgICAgcmV0dXJuIDA7
DQogICAgfQ0KICAgIDo6IG1lbWNweShjb21wb3NlZCwgZWxlbWVudCwgc2l6ZW9mKFVDQUVsZW1l
bnRzKSk7DQogICAgY29tcG9zZWQtPmNQb2ludHMgPSBjb21wb3NlZC0+dWNoYXJzOw0KICAgIGNv
bXBvc2VkLT5wcmVmaXggPSBjb21wb3NlZC0+cHJlZml4Q2hhcnM7DQoNCiAgICBjb21wb3NlZC0+
cHJlZml4U2l6ZSA9IHVub3JtX25vcm1hbGl6ZV8yXzIoZWxlbWVudC0+cHJlZml4LCBlbGVtZW50
LT5wcmVmaXhTaXplLCBVTk9STV9ORkMsIDAsIGNvbXBvc2VkLT5wcmVmaXgsIDEyOCwgc3RhdHVz
KTsNCg0KDQogICAgaWYodC0+cHJlZml4TG9va3VwICE9IF9fbnVsbCkgew0KICAgICAgVUNBRWxl
bWVudHMgKnVDRSA9IChVQ0FFbGVtZW50cyAqKXVoYXNoX2dldF8yXzIodC0+cHJlZml4TG9va3Vw
LCBlbGVtZW50KTsNCiAgICAgIGlmKHVDRSAhPSBfX251bGwpIHsNCiAgICAgICAgZWxlbWVudC0+
bWFwQ0UgPSB1cHJ2X3VjYV9hZGRQcmVmaXgodCwgdUNFLT5tYXBDRSwgZWxlbWVudCwgc3RhdHVz
KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIGVsZW1lbnQtPm1hcENFID0gdXBydl91Y2FfYWRk
UHJlZml4KHQsIDB4RjAwMDAwMDAsIGVsZW1lbnQsIHN0YXR1cyk7DQogICAgICAgIHVDRSA9IChV
Q0FFbGVtZW50cyAqKXVwcnZfbWFsbG9jKHNpemVvZihVQ0FFbGVtZW50cykpOw0KDQogICAgICAg
IGlmICh1Q0UgPT0gX19udWxsKSB7DQogICAgICAgICAgICAqc3RhdHVzID0gVV9NRU1PUllfQUxM
T0NBVElPTl9FUlJPUjsNCiAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICB9DQogICAgICAg
IDo6IG1lbWNweSh1Q0UsIGVsZW1lbnQsIHNpemVvZihVQ0FFbGVtZW50cykpOw0KICAgICAgICB1
Q0UtPmNQb2ludHMgPSB1Q0UtPnVjaGFyczsNCiAgICAgICAgdWhhc2hfcHV0XzJfMih0LT5wcmVm
aXhMb29rdXAsIHVDRSwgdUNFLCBzdGF0dXMpOw0KICAgICAgfQ0KICAgICAgaWYoY29tcG9zZWQt
PnByZWZpeFNpemUgIT0gZWxlbWVudC0+cHJlZml4U2l6ZSB8fCA6OiBtZW1jbXAoY29tcG9zZWQt
PnByZWZpeCwgZWxlbWVudC0+cHJlZml4LGVsZW1lbnQtPnByZWZpeFNpemUpKSB7DQoNCiAgICAg
ICAgY29tcG9zZWQtPm1hcENFID0gdXBydl91Y2FfYWRkUHJlZml4KHQsIGVsZW1lbnQtPm1hcENF
LCBjb21wb3NlZCwgc3RhdHVzKTsNCiAgICAgIH0NCiAgICB9DQogICAgdXBydl9mcmVlKGNvbXBv
c2VkKTsNCiAgfQ0KDQoNCg0KDQogIGlmKGVsZW1lbnQtPmNTaXplID4gMSAmJiAhKGVsZW1lbnQt
PmNTaXplPT0yICYmICgoKGVsZW1lbnQtPmNQb2ludHNbMF0pJjB4ZmZmZmZjMDApPT0weGQ4MDAp
ICYmICgoKGVsZW1lbnQtPmNQb2ludHNbMV0pJjB4ZmZmZmZjMDApPT0weGRjMDApKSkgew0KICAg
IFVuaWNvZGVTdHJpbmcgc291cmNlKGVsZW1lbnQtPmNQb2ludHMsIGVsZW1lbnQtPmNTaXplKTsN
CiAgICBDYW5vbmljYWxJdGVyYXRvciBpdChzb3VyY2UsICpzdGF0dXMpOw0KICAgIHNvdXJjZSA9
IGl0Lm5leHQoKTsNCiAgICB3aGlsZShzb3VyY2UubGVuZ3RoKCkgPiAwKSB7DQogICAgICBpZihO
b3JtYWxpemVyOjpxdWlja0NoZWNrKHNvdXJjZSwgVU5PUk1fRkNELCAqc3RhdHVzKSAhPSBVTk9S
TV9OTykgew0KICAgICAgICBlbGVtZW50LT5jU2l6ZSA9IHNvdXJjZS5leHRyYWN0KGVsZW1lbnQt
PmNQb2ludHMsIDEyOCwgKnN0YXR1cyk7DQogICAgICAgIHVwcnZfdWNhX2ZpbmFsaXplQWRkaXRp
b24odCwgZWxlbWVudCwgc3RhdHVzKTsNCiAgICAgIH0NCiAgICAgIHNvdXJjZSA9IGl0Lm5leHQo
KTsNCiAgICB9DQogICAgQ0UgPSBlbGVtZW50LT5tYXBDRTsNCiAgfSBlbHNlIHsNCiAgICAgIENF
ID0gdXBydl91Y2FfZmluYWxpemVBZGRpdGlvbih0LCBlbGVtZW50LCBzdGF0dXMpOw0KICB9DQoN
CiAgcmV0dXJuIENFOw0KfQ0KDQoNCg0Kdm9pZCB1cHJ2X3VjYV9nZXRNYXhFeHBhbnNpb25KYW1v
KFVOZXdUcmllICptYXBwaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1h
eEV4cGFuc2lvblRhYmxlICptYXhleHBhbnNpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWF4SmFtb0V4cGFuc2lvblRhYmxlICptYXhqYW1vZXhwYW5zaW9uLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sIGphbW9zcGVjaWFsLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cykNCnsNCiAgY29uc3Qg
dWludDMyX3QgVkJBU0UgPSAweDExNjE7DQogIGNvbnN0IHVpbnQzMl90IFRCQVNFID0gMHgxMUE4
Ow0KICBjb25zdCB1aW50MzJfdCBWQ09VTlQgPSAyMTsNCiAgY29uc3QgdWludDMyX3QgVENPVU5U
ID0gMjg7DQoNCiAgdWludDMyX3QgdiA9IFZCQVNFICsgVkNPVU5UIC0gMTsNCiAgdWludDMyX3Qg
dCA9IFRCQVNFICsgVENPVU5UIC0gMTsNCiAgdWludDMyX3QgY2U7DQoNCiAgd2hpbGUgKHYgPj0g
VkJBU0UpIHsNCg0KICAgICAgY2UgPSB1dHJpZV9nZXQzMl8yXzIobWFwcGluZywgdiwgX19udWxs
KTsNCiAgICAgIGlmIChjZSA8IDB4RjAwMDAwMDApIHsNCiAgICAgICAgICB1cHJ2X3VjYV9zZXRN
YXhFeHBhbnNpb24oY2UsIDIsIG1heGV4cGFuc2lvbiwgc3RhdHVzKTsNCiAgICAgIH0NCiAgICAg
IHYgLS07DQogIH0NCg0KICB3aGlsZSAodCA+PSBUQkFTRSkNCiAgew0KDQogICAgICBjZSA9IHV0
cmllX2dldDMyXzJfMihtYXBwaW5nLCB0LCBfX251bGwpOw0KICAgICAgaWYgKGNlIDwgMHhGMDAw
MDAwMCkgew0KICAgICAgICAgIHVwcnZfdWNhX3NldE1heEV4cGFuc2lvbihjZSwgMywgbWF4ZXhw
YW5zaW9uLCBzdGF0dXMpOw0KICAgICAgfQ0KICAgICAgdCAtLTsNCiAgfQ0KDQogIGlmIChqYW1v
c3BlY2lhbCkgew0KDQogICAgICBpbnQgY291bnQgPSBtYXhqYW1vZXhwYW5zaW9uLT5wb3NpdGlv
bjsNCiAgICAgIHVpbnQ4X3QgbWF4VFNpemUgPSAodWludDhfdCkobWF4amFtb2V4cGFuc2lvbi0+
bWF4TFNpemUgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhqYW1vZXhw
YW5zaW9uLT5tYXhWU2l6ZSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
eGphbW9leHBhbnNpb24tPm1heFRTaXplKTsNCiAgICAgIHVpbnQ4X3QgbWF4VlNpemUgPSAodWlu
dDhfdCkobWF4amFtb2V4cGFuc2lvbi0+bWF4TFNpemUgKw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXhqYW1vZXhwYW5zaW9uLT5tYXhWU2l6ZSk7DQoNCiAgICAgIHdoaWxl
IChjb3VudCA+IDApIHsNCiAgICAgICAgICBjb3VudCAtLTsNCiAgICAgICAgICBpZiAoKihtYXhq
YW1vZXhwYW5zaW9uLT5pc1YgKyBjb3VudCkgPT0gMSkgew0KICAgICAgICAgICAgICAgIHVwcnZf
dWNhX3NldE1heEV4cGFuc2lvbigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KihtYXhqYW1vZXhwYW5zaW9uLT5lbmRFeHBhbnNpb25DRSArIGNvdW50KSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4VlNpemUsIG1heGV4cGFuc2lvbiwgc3RhdHVzKTsN
CiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgdXBydl91Y2Ff
c2V0TWF4RXhwYW5zaW9uKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKG1h
eGphbW9leHBhbnNpb24tPmVuZEV4cGFuc2lvbkNFICsgY291bnQpLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXhUU2l6ZSwgbWF4ZXhwYW5zaW9uLCBzdGF0dXMpOw0KICAg
ICAgICAgIH0NCiAgICAgIH0NCiAgfQ0KfQ0KDQpleHRlcm4gIkMiIHsNCnN0YXRpYyBpbmxpbmUg
dWludDMyX3QNCmdldEZvbGRlZFZhbHVlKFVOZXdUcmllICp0cmllLCBVQ2hhcjMyIHN0YXJ0LCBp
bnQzMl90IG9mZnNldCkNCnsNCiAgdWludDMyX3QgdmFsdWU7DQogIHVpbnQzMl90IHRhZzsNCiAg
VUNoYXIzMiBsaW1pdDsNCiAgVUJvb2wgaW5CbG9ja1plcm87DQoNCiAgbGltaXQ9c3RhcnQrMHg0
MDA7DQogIHdoaWxlKHN0YXJ0PGxpbWl0KSB7DQogICAgICB2YWx1ZT11dHJpZV9nZXQzMl8yXzIo
dHJpZSwgc3RhcnQsICZpbkJsb2NrWmVybyk7DQogICAgICB0YWcgPSAoKCh2YWx1ZSkmMHgwRjAw
MDAwMCk+PjI0KTsNCiAgICAgIGlmKGluQmxvY2taZXJvID09IDEpIHsNCiAgICAgICAgICBzdGFy
dCs9VVRSSUVfREFUQV9CTE9DS19MRU5HVEg7DQogICAgICB9IGVsc2UgaWYoISgoKCgodmFsdWUp
JjB4RjAwMDAwMDApPj4yOCk9PTB4RikgJiYgKHRhZyA9PSBJTVBMSUNJVF9UQUcgfHwgdGFnID09
IE5PVF9GT1VORF9UQUcpKSkgew0KIyAxMjIyICJ1Y29sX2VsbS5jcHAiDQogICAgICAgICAgcmV0
dXJuICh1aW50MzJfdCkoMHhGMDAwMDAwMCB8IChTVVJST0dBVEVfVEFHPDwyNCkgfCBvZmZzZXQp
Ow0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgICArK3N0YXJ0Ow0KICAgICAgfQ0KICB9DQogIHJl
dHVybiAwOw0KfQ0KfQ0KIyAxMjUyICJ1Y29sX2VsbS5jcHAiDQpleHRlcm4gIkMiIFVDQVRhYmxl
SGVhZGVyKg0KdXBydl91Y2FfYXNzZW1ibGVUYWJsZV8yXzIodGVtcFVDQVRhYmxlICp0LCBVRXJy
b3JDb2RlICpzdGF0dXMpIHsNCg0KICAgIFVOZXdUcmllICptYXBwaW5nID0gdC0+bWFwcGluZzsN
CiAgICBFeHBhbnNpb25UYWJsZSAqZXhwYW5zaW9ucyA9IHQtPmV4cGFuc2lvbnM7DQogICAgQ250
VGFibGUgKmNvbnRyYWN0aW9ucyA9IHQtPmNvbnRyYWN0aW9uczsNCiAgICBNYXhFeHBhbnNpb25U
YWJsZSAqbWF4ZXhwYW5zaW9uID0gdC0+bWF4RXhwYW5zaW9uczsNCg0KICAgIGlmKFVfRkFJTFVS
RSgqc3RhdHVzKSkgew0KICAgICAgICByZXR1cm4gX19udWxsOw0KICAgIH0NCg0KICAgIHVpbnQz
Ml90IGJlZm9yZUNvbnRyYWN0aW9ucyA9ICh1aW50MzJfdCkoKCgoKHNpemVvZihVQ0FUYWJsZUhl
YWRlcikpKygoKChzaXplb2YoVUNBVGFibGVIZWFkZXIpKSU0KSE9MCk/KDQtKHNpemVvZihVQ0FU
YWJsZUhlYWRlcikpJTQpOjApKSsoKHNpemVvZihVQ29sT3B0aW9uU2V0KSkrKCgoKHNpemVvZihV
Q29sT3B0aW9uU2V0KSklNCkhPTApPyg0LShzaXplb2YoVUNvbE9wdGlvblNldCkpJTQpOjApKSkr
KChleHBhbnNpb25zLT5wb3NpdGlvbipzaXplb2YodWludDMyX3QpKSsoKCgoZXhwYW5zaW9ucy0+
cG9zaXRpb24qc2l6ZW9mKHVpbnQzMl90KSklNCkhPTApPyg0LShleHBhbnNpb25zLT5wb3NpdGlv
bipzaXplb2YodWludDMyX3QpKSU0KTowKSkpL3NpemVvZihVQ2hhcikpOw0KDQogICAgaW50MzJf
dCBjb250cmFjdGlvbnNTaXplID0gMDsNCiAgICBjb250cmFjdGlvbnNTaXplID0gdXBydl9jbnR0
YWJfY29uc3RydWN0VGFibGVfMl8yKGNvbnRyYWN0aW9ucywgYmVmb3JlQ29udHJhY3Rpb25zLCBz
dGF0dXMpOw0KDQoNCg0KDQogICAgdXBydl91Y2FfZ2V0TWF4RXhwYW5zaW9uSmFtbyhtYXBwaW5n
LCBtYXhleHBhbnNpb24sIHQtPm1heEphbW9FeHBhbnNpb25zLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdC0+aW1hZ2UtPmphbW9TcGVjaWFsLCBzdGF0dXMpOw0KDQoNCg0KDQoN
Cg0KDQogICAgaW50MzJfdCBtYXBwaW5nU2l6ZSA9IHV0cmllX3NlcmlhbGl6ZV8yXzIobWFwcGlu
ZywgX19udWxsLCAwLCBnZXRGb2xkZWRWYWx1ZSAsIDAsIHN0YXR1cyk7DQoNCiAgICB1aW50MzJf
dCB0YWJsZU9mZnNldCA9IDA7DQogICAgdWludDhfdCAqZGF0YVN0YXJ0Ow0KDQoNCg0KICAgIHVp
bnQzMl90IHRvQWxsb2NhdGUgPSh1aW50MzJfdCkoKCgoc2l6ZW9mKFVDQVRhYmxlSGVhZGVyKSkr
KCgoKHNpemVvZihVQ0FUYWJsZUhlYWRlcikpJTQpIT0wKT8oNC0oc2l6ZW9mKFVDQVRhYmxlSGVh
ZGVyKSklNCk6MCkpKygoc2l6ZW9mKFVDb2xPcHRpb25TZXQpKSsoKCgoc2l6ZW9mKFVDb2xPcHRp
b25TZXQpKSU0KSE9MCk/KDQtKHNpemVvZihVQ29sT3B0aW9uU2V0KSklNCk6MCkpKSsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXhwYW5zaW9ucy0+cG9zaXRpb24qc2l6
ZW9mKHVpbnQzMl90KSkrKCgoKGV4cGFuc2lvbnMtPnBvc2l0aW9uKnNpemVvZih1aW50MzJfdCkp
JTQpIT0wKT8oNC0oZXhwYW5zaW9ucy0+cG9zaXRpb24qc2l6ZW9mKHVpbnQzMl90KSklNCk6MCkp
Kw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYXBwaW5nU2l6ZSkrKCgo
KG1hcHBpbmdTaXplKSU0KSE9MCk/KDQtKG1hcHBpbmdTaXplKSU0KTowKSkrDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNvbnRyYWN0aW9uc1NpemUqKHNpemVvZihVQ2hh
cikrc2l6ZW9mKHVpbnQzMl90KSkpKygoKChjb250cmFjdGlvbnNTaXplKihzaXplb2YoVUNoYXIp
K3NpemVvZih1aW50MzJfdCkpKSU0KSE9MCk/KDQtKGNvbnRyYWN0aW9uc1NpemUqKHNpemVvZihV
Q2hhcikrc2l6ZW9mKHVpbnQzMl90KSkpJTQpOjApKSsNCg0KDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKyAoKG1heGV4cGFuc2lvbi0+cG9zaXRpb24gKiBzaXplb2YodWlu
dDMyX3QpKSsoKCgobWF4ZXhwYW5zaW9uLT5wb3NpdGlvbiAqIHNpemVvZih1aW50MzJfdCkpJTQp
IT0wKT8oNC0obWF4ZXhwYW5zaW9uLT5wb3NpdGlvbiAqIHNpemVvZih1aW50MzJfdCkpJTQpOjAp
KSArDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1heGV4cGFuc2lv
bi0+cG9zaXRpb24gKiBzaXplb2YodWludDhfdCkpKygoKChtYXhleHBhbnNpb24tPnBvc2l0aW9u
ICogc2l6ZW9mKHVpbnQ4X3QpKSU0KSE9MCk/KDQtKG1heGV4cGFuc2lvbi0+cG9zaXRpb24gKiBz
aXplb2YodWludDhfdCkpJTQpOjApKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCgxMDU2KSsoKCgoMTA1NiklNCkhPTApPyg0LSgxMDU2KSU0KTowKSkgKw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoMTA1NikrKCgoKDEwNTYpJTQpIT0wKT8o
NC0oMTA1NiklNCk6MCkpKTsNCg0KDQogICAgZGF0YVN0YXJ0ID0gKHVpbnQ4X3QgKil1cHJ2X21h
bGxvYyh0b0FsbG9jYXRlKTsNCg0KICAgIGlmIChkYXRhU3RhcnQgPT0gX19udWxsKSB7DQogICAg
ICAgICpzdGF0dXMgPSBVX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SOw0KICAgICAgICByZXR1cm4g
X19udWxsOw0KICAgIH0NCg0KICAgIFVDQVRhYmxlSGVhZGVyICpteURhdGEgPSAoVUNBVGFibGVI
ZWFkZXIgKilkYXRhU3RhcnQ7DQogICAgOjogbWVtY3B5KG15RGF0YSwgdC0+aW1hZ2UsIHNpemVv
ZihVQ0FUYWJsZUhlYWRlcikpOw0KDQogICAgbXlEYXRhLT5jb250cmFjdGlvblNpemUgPSBjb250
cmFjdGlvbnNTaXplOw0KDQogICAgdGFibGVPZmZzZXQgKz0gKHVpbnQzMl90KSgoKHNpemVvZihV
Q0FUYWJsZUhlYWRlcikpKygoKChzaXplb2YoVUNBVGFibGVIZWFkZXIpKSU0KSE9MCk/KDQtKHNp
emVvZihVQ0FUYWJsZUhlYWRlcikpJTQpOjApKSk7DQoNCiAgICBteURhdGEtPm9wdGlvbnMgPSB0
YWJsZU9mZnNldDsNCiAgICA6OiBtZW1jcHkoZGF0YVN0YXJ0K3RhYmxlT2Zmc2V0LCB0LT5vcHRp
b25zLCBzaXplb2YoVUNvbE9wdGlvblNldCkpOw0KICAgIHRhYmxlT2Zmc2V0ICs9ICh1aW50MzJf
dCkoKChzaXplb2YoVUNvbE9wdGlvblNldCkpKygoKChzaXplb2YoVUNvbE9wdGlvblNldCkpJTQp
IT0wKT8oNC0oc2l6ZW9mKFVDb2xPcHRpb25TZXQpKSU0KTowKSkpOw0KDQoNCg0KICAgIG15RGF0
YS0+ZXhwYW5zaW9uID0gdGFibGVPZmZzZXQ7DQogICAgbWVtY3B5KGRhdGFTdGFydCt0YWJsZU9m
ZnNldCwgZXhwYW5zaW9ucy0+Q0VzLCBleHBhbnNpb25zLT5wb3NpdGlvbipzaXplb2YodWludDMy
X3QpKTsNCiAgICB0YWJsZU9mZnNldCArPSAodWludDMyX3QpKCgoZXhwYW5zaW9ucy0+cG9zaXRp
b24qc2l6ZW9mKHVpbnQzMl90KSkrKCgoKGV4cGFuc2lvbnMtPnBvc2l0aW9uKnNpemVvZih1aW50
MzJfdCkpJTQpIT0wKT8oNC0oZXhwYW5zaW9ucy0+cG9zaXRpb24qc2l6ZW9mKHVpbnQzMl90KSkl
NCk6MCkpKTsNCg0KDQogICAgaWYoY29udHJhY3Rpb25zU2l6ZSAhPSAwKSB7DQoNCg0KICAgICAg
bXlEYXRhLT5jb250cmFjdGlvbkluZGV4ID0gdGFibGVPZmZzZXQ7DQogICAgICBtZW1jcHkoZGF0
YVN0YXJ0K3RhYmxlT2Zmc2V0LCBjb250cmFjdGlvbnMtPmNvZGVQb2ludHMsIGNvbnRyYWN0aW9u
c1NpemUqc2l6ZW9mKFVDaGFyKSk7DQogICAgICB0YWJsZU9mZnNldCArPSAodWludDMyX3QpKCgo
Y29udHJhY3Rpb25zU2l6ZSpzaXplb2YoVUNoYXIpKSsoKCgoY29udHJhY3Rpb25zU2l6ZSpzaXpl
b2YoVUNoYXIpKSU0KSE9MCk/KDQtKGNvbnRyYWN0aW9uc1NpemUqc2l6ZW9mKFVDaGFyKSklNCk6
MCkpKTsNCg0KDQoNCiAgICAgIG15RGF0YS0+Y29udHJhY3Rpb25DRXMgPSB0YWJsZU9mZnNldDsN
CiAgICAgIG1lbWNweShkYXRhU3RhcnQrdGFibGVPZmZzZXQsIGNvbnRyYWN0aW9ucy0+Q0VzLCBj
b250cmFjdGlvbnNTaXplKnNpemVvZih1aW50MzJfdCkpOw0KICAgICAgdGFibGVPZmZzZXQgKz0g
KHVpbnQzMl90KSgoKGNvbnRyYWN0aW9uc1NpemUqc2l6ZW9mKHVpbnQzMl90KSkrKCgoKGNvbnRy
YWN0aW9uc1NpemUqc2l6ZW9mKHVpbnQzMl90KSklNCkhPTApPyg0LShjb250cmFjdGlvbnNTaXpl
KnNpemVvZih1aW50MzJfdCkpJTQpOjApKSk7DQogICAgfSBlbHNlIHsNCiAgICAgIG15RGF0YS0+
Y29udHJhY3Rpb25JbmRleCA9IDA7DQogICAgICBteURhdGEtPmNvbnRyYWN0aW9uSW5kZXggPSAw
Ow0KICAgIH0NCg0KDQoNCg0KDQoNCiAgICBteURhdGEtPm1hcHBpbmdQb3NpdGlvbiA9IHRhYmxl
T2Zmc2V0Ow0KICAgIHV0cmllX3NlcmlhbGl6ZV8yXzIobWFwcGluZywgZGF0YVN0YXJ0K3RhYmxl
T2Zmc2V0LCB0b0FsbG9jYXRlLXRhYmxlT2Zmc2V0LCBnZXRGb2xkZWRWYWx1ZSwgMCwgc3RhdHVz
KTsNCiMgMTM2MSAidWNvbF9lbG0uY3BwIg0KICAgIHRhYmxlT2Zmc2V0ICs9ICgobWFwcGluZ1Np
emUpKygoKChtYXBwaW5nU2l6ZSklNCkhPTApPyg0LShtYXBwaW5nU2l6ZSklNCk6MCkpOw0KDQoN
CiAgICBpbnQzMl90IGkgPSAwOw0KDQoNCiAgICBteURhdGEtPmVuZEV4cGFuc2lvbkNFID0gdGFi
bGVPZmZzZXQ7DQogICAgbXlEYXRhLT5lbmRFeHBhbnNpb25DRUNvdW50ID0gbWF4ZXhwYW5zaW9u
LT5wb3NpdGlvbjsNCg0KICAgIDo6IG1lbWNweShkYXRhU3RhcnQgKyB0YWJsZU9mZnNldCwgbWF4
ZXhwYW5zaW9uLT5lbmRFeHBhbnNpb25DRSArIDEsIG1heGV4cGFuc2lvbi0+cG9zaXRpb24gKiBz
aXplb2YodWludDMyX3QpKTsNCg0KICAgIHRhYmxlT2Zmc2V0ICs9ICh1aW50MzJfdCkoKChtYXhl
eHBhbnNpb24tPnBvc2l0aW9uICogc2l6ZW9mKHVpbnQzMl90KSkrKCgoKG1heGV4cGFuc2lvbi0+
cG9zaXRpb24gKiBzaXplb2YodWludDMyX3QpKSU0KSE9MCk/KDQtKG1heGV4cGFuc2lvbi0+cG9z
aXRpb24gKiBzaXplb2YodWludDMyX3QpKSU0KTowKSkpOw0KICAgIG15RGF0YS0+ZXhwYW5zaW9u
Q0VTaXplID0gdGFibGVPZmZzZXQ7DQogICAgOjogbWVtY3B5KGRhdGFTdGFydCArIHRhYmxlT2Zm
c2V0LCBtYXhleHBhbnNpb24tPmV4cGFuc2lvbkNFU2l6ZSArIDEsIG1heGV4cGFuc2lvbi0+cG9z
aXRpb24gKiBzaXplb2YodWludDhfdCkpOw0KDQogICAgdGFibGVPZmZzZXQgKz0gKHVpbnQzMl90
KSgoKG1heGV4cGFuc2lvbi0+cG9zaXRpb24gKiBzaXplb2YodWludDhfdCkpKygoKChtYXhleHBh
bnNpb24tPnBvc2l0aW9uICogc2l6ZW9mKHVpbnQ4X3QpKSU0KSE9MCk/KDQtKG1heGV4cGFuc2lv
bi0+cG9zaXRpb24gKiBzaXplb2YodWludDhfdCkpJTQpOjApKSk7DQoNCg0KICAgIHVwcnZfdWNh
X3Vuc2FmZUNQQWRkQ0NOWih0LCBzdGF0dXMpOw0KICAgIGlmICh0LT5VQ0EgIT0gMCkgew0KICAg
ICAgIGZvciAoaT0wOyBpPDEwNTY7IGkrKykgew0KICAgICAgICAgICB0LT51bnNhZmVDUFtpXSB8
PSB0LT5VQ0EtPnVuc2FmZUNQW2ldOw0KICAgICAgIH0NCiAgICB9DQogICAgbXlEYXRhLT51bnNh
ZmVDUCA9IHRhYmxlT2Zmc2V0Ow0KICAgIDo6IG1lbWNweShkYXRhU3RhcnQgKyB0YWJsZU9mZnNl
dCwgdC0+dW5zYWZlQ1AsIDEwNTYpOw0KICAgIHRhYmxlT2Zmc2V0ICs9ICgoMTA1NikrKCgoKDEw
NTYpJTQpIT0wKT8oNC0oMTA1NiklNCk6MCkpOw0KDQoNCg0KICAgIGlmICh0LT5VQ0EgIT0gMCkg
ew0KICAgICAgICBmb3IgKGk9MDsgaTwxMDU2OyBpKyspIHsNCiAgICAgICAgICAgIHQtPmNvbnRy
RW5kQ1BbaV0gfD0gdC0+VUNBLT5jb250ckVuZENQW2ldOw0KICAgICAgICB9DQogICAgfQ0KICAg
IG15RGF0YS0+Y29udHJFbmRDUCA9IHRhYmxlT2Zmc2V0Ow0KICAgIDo6IG1lbWNweShkYXRhU3Rh
cnQgKyB0YWJsZU9mZnNldCwgdC0+Y29udHJFbmRDUCwgMTA1Nik7DQogICAgdGFibGVPZmZzZXQg
Kz0gKCgxMDU2KSsoKCgoMTA1NiklNCkhPTApPyg0LSgxMDU2KSU0KTowKSk7DQoNCiAgICBpZih0
YWJsZU9mZnNldCAhPSB0b0FsbG9jYXRlKSB7DQoNCg0KDQogICAgICAgICpzdGF0dXMgPSBVX0lO
VEVSTkFMX1BST0dSQU1fRVJST1I7DQogICAgICAgIHVwcnZfZnJlZShkYXRhU3RhcnQpOw0KICAg
ICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBteURhdGEtPnNpemUgPSB0YWJsZU9mZnNldDsN
Cg0KDQoNCiAgICByZXR1cm4gbXlEYXRhOw0KfQ0KDQoNCnN0cnVjdCBlbnVtU3RydWN0IHsNCiAg
dGVtcFVDQVRhYmxlICp0Ow0KICBVQ29sbGF0b3IgKnRlbXBDb2xsOw0KICBVQ29sbGF0aW9uRWxl
bWVudHMqIGNvbEVsOw0KICBpbnQzMl90IG5vT2ZDbG9zdXJlczsNCiAgVUVycm9yQ29kZSAqc3Rh
dHVzOw0KfTsNCmV4dGVybiAiQyIgew0Kc3RhdGljIFVCb29sDQpfZW51bUNhdGVnb3J5UmFuZ2VD
bG9zdXJlQ2F0ZWdvcnkoY29uc3Qgdm9pZCAqY29udGV4dCwgVUNoYXIzMiBzdGFydCwgVUNoYXIz
MiBsaW1pdCwgVUNoYXJDYXRlZ29yeSB0eXBlKSB7DQoNCiAgVUVycm9yQ29kZSAqc3RhdHVzID0g
KChlbnVtU3RydWN0ICopY29udGV4dCktPnN0YXR1czsNCiAgdGVtcFVDQVRhYmxlICp0ID0gKChl
bnVtU3RydWN0ICopY29udGV4dCktPnQ7DQogIFVDb2xsYXRvciAqdGVtcENvbGwgPSAoKGVudW1T
dHJ1Y3QgKiljb250ZXh0KS0+dGVtcENvbGw7DQogIFVDb2xsYXRpb25FbGVtZW50cyogY29sRWwg
PSAoKGVudW1TdHJ1Y3QgKiljb250ZXh0KS0+Y29sRWw7DQogIFVDQUVsZW1lbnRzIGVsOw0KICBV
Q2hhciBkZWNvbXBbMjU2XSA9IHsgMCB9Ow0KICBpbnQzMl90IG5vT2ZEZWMgPSAwOw0KDQogIFVD
aGFyMzIgdTMyID0gMDsNCiAgVUNoYXIgY29tcFsyXTsNCiAgdWludDMyX3QgbGVuID0gMDsNCg0K
ICBpZiAodHlwZSAhPSBVX1VOQVNTSUdORUQgJiYgdHlwZSAhPSBVX1BSSVZBVEVfVVNFX0NIQVIp
IHsNCiAgICBmb3IodTMyID0gc3RhcnQ7IHUzMiA8IGxpbWl0OyB1MzIrKykgew0KICAgICAgbm9P
ZkRlYyA9IHVub3JtX2dldERlY29tcG9zaXRpb25fMl8yKHUzMiwgMCwgZGVjb21wLCAyNTYpOw0K
DQoNCiAgICAgIGlmKG5vT2ZEZWMgPiAwKQ0KICAgICAgew0KICAgICAgICBsZW4gPSAwOw0KICAg
ICAgICB7IGlmKCh1aW50MzJfdCkodTMyKTw9MHhmZmZmKSB7IChjb21wKVsobGVuKSsrXT0odWlu
dDE2X3QpKHUzMik7IH0gZWxzZSB7IChjb21wKVsobGVuKSsrXT0odWludDE2X3QpKCgodTMyKT4+
MTApKzB4ZDdjMCk7IChjb21wKVsobGVuKSsrXT0odWludDE2X3QpKCgodTMyKSYweDNmZil8MHhk
YzAwKTsgfSB9Ow0KICAgICAgICBpZih1Y29sX3N0cmNvbGxfMl8yKHRlbXBDb2xsLCBjb21wLCBs
ZW4sIGRlY29tcCwgbm9PZkRlYykgIT0gVUNPTF9FUVVBTCkgew0KIyAxNDU4ICJ1Y29sX2VsbS5j
cHAiDQogICAgICAgICAgKChlbnVtU3RydWN0ICopY29udGV4dCktPm5vT2ZDbG9zdXJlcysrOw0K
ICAgICAgICAgIGVsLmNQb2ludHMgPSBkZWNvbXA7DQogICAgICAgICAgZWwuY1NpemUgPSBub09m
RGVjOw0KICAgICAgICAgIGVsLm5vT2ZDRXMgPSAwOw0KICAgICAgICAgIGVsLnByZWZpeCA9IGVs
LnByZWZpeENoYXJzOw0KICAgICAgICAgIGVsLnByZWZpeFNpemUgPSAwOw0KDQogICAgICAgICAg
VUNBRWxlbWVudHMgKnByZWZpeD0oVUNBRWxlbWVudHMgKil1aGFzaF9nZXRfMl8yKHQtPnByZWZp
eExvb2t1cCwgJmVsKTsNCiAgICAgICAgICBpZihwcmVmaXggPT0gX19udWxsKSB7DQogICAgICAg
ICAgICBlbC5jUG9pbnRzID0gY29tcDsNCiAgICAgICAgICAgIGVsLmNTaXplID0gbGVuOw0KICAg
ICAgICAgICAgZWwucHJlZml4ID0gZWwucHJlZml4Q2hhcnM7DQogICAgICAgICAgICBlbC5wcmVm
aXhTaXplID0gMDsNCiAgICAgICAgICAgIGVsLm5vT2ZDRXMgPSAwOw0KICAgICAgICAgICAgdWNv
bF9zZXRUZXh0XzJfMihjb2xFbCwgZGVjb21wLCBub09mRGVjLCBzdGF0dXMpOw0KICAgICAgICAg
ICAgd2hpbGUoKGVsLkNFc1tlbC5ub09mQ0VzXSA9IHVjb2xfbmV4dF8yXzIoY29sRWwsIHN0YXR1
cykpICE9IDB4RkZGRkZGRkYpIHsNCiAgICAgICAgICAgICAgZWwubm9PZkNFcysrOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBlbC5jUG9pbnRzID0gY29t
cDsNCiAgICAgICAgICAgIGVsLmNTaXplID0gbGVuOw0KICAgICAgICAgICAgZWwucHJlZml4ID0g
ZWwucHJlZml4Q2hhcnM7DQogICAgICAgICAgICBlbC5wcmVmaXhTaXplID0gMDsNCiAgICAgICAg
ICAgIGVsLm5vT2ZDRXMgPSAxOw0KICAgICAgICAgICAgZWwuQ0VzWzBdID0gcHJlZml4LT5tYXBD
RTsNCg0KDQoNCg0KDQogICAgICAgICAgfQ0KICAgICAgICAgIGlmKCgoKCh1aW50MzJfdCkoZWwu
Y1BvaW50c1swXSkgLSAweGU0MCkgPD0gKDB4ZTQ0IC0gMHhlNDApKSB8fCAoKCh1aW50MzJfdCko
ZWwuY1BvaW50c1swXSkgLSAweGVjMCkgPD0gKDB4ZWM0IC0gMHhlYzApKSkpIHsNCiAgICAgICAg
ICAgIGVsLmlzVGhhaSA9IDE7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGVsLmlz
VGhhaSA9IDA7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgdXBydl91Y2FfYWRkQW5FbGVtZW50
XzJfMih0LCAmZWwsIHN0YXR1cyk7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogIH0NCiAg
cmV0dXJuIDE7DQp9DQp9DQoNCmV4dGVybiAiQyIgaW50MzJfdA0KdXBydl91Y2FfY2Fub25pY2Fs
Q2xvc3VyZV8yXzIodGVtcFVDQVRhYmxlICp0LCBVRXJyb3JDb2RlICpzdGF0dXMpDQp7DQogIGVu
dW1TdHJ1Y3QgY29udGV4dDsNCiAgY29udGV4dC5ub09mQ2xvc3VyZXMgPSAwOw0KICBpZihVX1NV
Q0NFU1MoKnN0YXR1cykpIHsNCiAgICBVQ29sbGF0b3IgKnRlbXBDb2xsID0gX19udWxsOw0KICAg
IHRlbXBVQ0FUYWJsZSAqdGVtcFRhYmxlID0gdXBydl91Y2FfY2xvbmVUZW1wVGFibGVfMl8yKHQs
IHN0YXR1cyk7DQoNCiAgICBVQ0FUYWJsZUhlYWRlciAqdGVtcERhdGEgPSB1cHJ2X3VjYV9hc3Nl
bWJsZVRhYmxlXzJfMih0ZW1wVGFibGUsIHN0YXR1cyk7DQogICAgdGVtcENvbGwgPSB1Y29sX2lu
aXRDb2xsYXRvcl8yXzIodGVtcERhdGEsIDAsIHN0YXR1cyk7DQogICAgdXBydl91Y2FfY2xvc2VU
ZW1wVGFibGVfMl8yKHRlbXBUYWJsZSk7DQoNCiAgICBpZihVX1NVQ0NFU1MoKnN0YXR1cykpIHsN
CiAgICAgIHRlbXBDb2xsLT5yYiA9IF9fbnVsbDsNCiAgICAgIHRlbXBDb2xsLT5iaW5hcnkgPSBf
X251bGw7DQogICAgICB0ZW1wQ29sbC0+cmVxdWVzdGVkTG9jYWxlID0gX19udWxsOw0KICAgICAg
dGVtcENvbGwtPmhhc1JlYWxEYXRhID0gMTsNCiAgICB9IGVsc2UgaWYodGVtcERhdGEgIT0gMCkg
ew0KICAgICAgdXBydl9mcmVlKHRlbXBEYXRhKTsNCiAgICB9DQoNCg0KICAgIFVDb2xsYXRpb25F
bGVtZW50cyogY29sRWwgPSB1Y29sX29wZW5FbGVtZW50c18yXzIodGVtcENvbGwsIF9fbnVsbCwg
MCwgc3RhdHVzKTsNCg0KICAgIGNvbnRleHQudCA9IHQ7DQogICAgY29udGV4dC50ZW1wQ29sbCA9
IHRlbXBDb2xsOw0KICAgIGNvbnRleHQuY29sRWwgPSBjb2xFbDsNCiAgICBjb250ZXh0LnN0YXR1
cyA9IHN0YXR1czsNCiAgICB1X2VudW1DaGFyVHlwZXNfMl8yKF9lbnVtQ2F0ZWdvcnlSYW5nZUNs
b3N1cmVDYXRlZ29yeSwgJmNvbnRleHQpOw0KDQogICAgdWNvbF9jbG9zZUVsZW1lbnRzXzJfMihj
b2xFbCk7DQogICAgdWNvbF9jbG9zZV8yXzIodGVtcENvbGwpOw0KICB9DQogIHJldHVybiBjb250
ZXh0Lm5vT2ZDbG9zdXJlczsNCn0NCg0KfQ0K


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-12-06 13:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-12-06  5:26 c++/8841: Internal compiler error building ICU2.2 with gcc 3.2 on CygWin bradley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).