This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c/2845: Function array causes bug report in 2.96, gives just errors in 2.95



>Number:         2845
>Category:       c
>Synopsis:       Function array causes bug report in 2.96, gives just errors in 2.95
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          ice-on-illegal-code
>Submitter-Id:   net
>Arrival-Date:   Wed May 16 11:36:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     jdomm@yahoo.com
>Release:        2.96
>Organization:
>Environment:
i386, Compaq Presario 1850R 	
>Description:
When the function array does not have the correct parentheses
around it, the 2.95 gcc gives the proper error.  The 2.96 
gcc crashes with a segmentation fault and a request for a 
bug report.
>How-To-Repeat:
Set up a function array like so:

void *CommandExecute[](void) = {
     Blink(),
     EmptyFunc(),
};
>Fix:
Write the array like so:

void (*CommandExecute[])(void) =
{
     Blink,
     EmptyFunc,
};
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="test-broke.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test-broke.i"

IyAxICJ0ZXN0LWJyb2tlLmMiCgoKCiMgNjkgIi91c3IvaW5jbHVkZS9jdXJzZXMuaCIgMSAzCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBjaHR5cGU7CgoKIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDEgMwojIDI4MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDMxMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoj
IDE5OSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMzQgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAyIDMKCgoKCgojIDQzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTYvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3Qg
X19nbnVjX3ZhX2xpc3Q7CiMgMzkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgojIDMwICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191
X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVk
IGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQg
X19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25f
XyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFk
X3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9p
bnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19p
bm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190
Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5
cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9u
ZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2lu
dCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNp
ZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNf
dDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3di
bGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tp
ZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBfX2ZkX21hc2s7CgoKIyAxMDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlwZWRl
ZiBzdHJ1Y3QKICB7CgoKCgoKCiAgICBfX2ZkX21hc2sgX19mZHNfYml0c1sxMDI0IC8gKDggKiBz
aXplb2YgKF9fZmRfbWFzaykpXTsKCgogIH0gX19mZF9zZXQ7CgoKdHlwZWRlZiBpbnQgX19rZXlf
dDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBs
b25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlw
ZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25n
IF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVk
ZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoK
dHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
X190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fc29ja2xlbl90OwoKCgoKCiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0
eXBlcy5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCnN0cnVjdCBf
X3NjaGVkX3BhcmFtCiAgewogICAgaW50IHNjaGVkX3ByaW9yaXR5OwogIH07CiMgMjQgIi91c3Iv
aW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMKCgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxv
Y2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBl
ZGVmIHN0cnVjdAp7CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAg
c3RydWN0IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsK
ICBpbnQgX19zY29wZTsKICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3Nl
dDsKICB2b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9h
dHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19j
X2xvY2s7CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoK
CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7
CiAgaW50IF9fbV9yZXNlcnZlZDsKICBpbnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9f
bV9vd25lcjsKICBpbnQgX19tX2tpbmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9s
b2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4
a2luZDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2Vf
dDsKCgojIDE0MCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CgojIDE2NiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMiAzCiMgNDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgoKCnR5cGVkZWYg
c3RydWN0IF9JT19GSUxFIEZJTEU7CgojIDU4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDMx
ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAzCiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMSAzCiMgMjg3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKIyAzMTIgIi91c3Iv
bGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5
cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5o
IiAyIDMKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgNDYgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAxIDMKIyA2MiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1
Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hh
ciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwojIDI1ICIvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmgiIDIgMwoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAg
X19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29m
ZjY0X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NSAi
L3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMjkgIi91c3IvaW5jbHVkZS9nY29udi5oIiAx
IDMKIyA0NiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvZ2Nv
bnYuaCIgMiAzCgoKCgoKCgplbnVtCnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09O
ViwKICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBV
VCwKICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dD
T05WX0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9f
R0NPTlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgw
MDAxLAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29u
dl9zdGVwOwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9v
YmplY3Q7CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29u
dl9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X2luaXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29u
dl9lbmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2dj
b252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
LCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHN0cnVj
dCBfX2djb252X3RyYW5zX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNo
YXIgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3Qg
Y2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2Zj
dCkgKHZvaWQgKiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNf
ZW5kX2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhCnsKCiAgX19nY29u
dl90cmFuc19mY3QgX190cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3Ry
YW5zX2NvbnRleHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7
CiAgdm9pZCAqX19kYXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsK
CgoKc3RydWN0IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAq
X19zaGxpYl9oYW5kbGU7CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50
ZXI7CgogIF9fY29uc3QgY2hhciAqX19mcm9tX25hbWU7CiAgX19jb25zdCBjaGFyICpfX3RvX25h
bWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19pbml0X2ZjdDsK
ICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVkZWRfZnJvbTsK
ICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsKICBpbnQgX19t
YXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsKfTsKCgoK
c3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsKICB1
bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoKICBpbnQgX19p
bnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21ic3RhdGVf
dCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19nY29udl90
cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252X2luZm8Kewog
IHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBzOwogIF9fZXh0
ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YVswXTsKfSAqX19nY29udl90
OwoKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlwZWRlZiB1bmlvbgp7CiAg
c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAgIHN0cnVjdCBfX2djb252
X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAgfSBfX2Nv
bWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50
MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7Cgoj
IDMxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgNTIgIi91c3IvaW5jbHVkZS9saWJpby5o
IiAzCiMgMTU3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3Ry
dWN0IF9JT19GSUxFOwoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1
Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9f
RklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTkwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
Mwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2
dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRfbm9jb252Cn07CgojIDI2
MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdz
OwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3JlYWRfZW5kOwogIGNoYXIq
IF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRl
X3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19idWZfYmFzZTsKICBjaGFy
KiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBjaGFyICpfSU9fYmFja3Vw
X2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtl
cnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Js
a3NpemU7CiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2Nv
bHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsK
CgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMDYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiAg
X19vZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwoK
ICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2YgKGludCkgLSAyICogc2l6
ZW9mICh2b2lkICopXTsKCn07CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoK
c3RydWN0IF9JT19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJf
MV9zdGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4
dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQ1ICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9f
Y29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19z
c2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5
cGVkZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3Ms
IGludCBfX3cpOwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsK
CgojIDM5NyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAo
X0lPX0ZJTEUgKik7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKik7CmV4dGVybiBpbnQg
X19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KTsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRlcmZsb3cg
KF9JT19GSUxFICopOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKTsKZXh0ZXJu
IHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90KTsKCiMgNDI3ICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCk7CmV4
dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKTsKZXh0ZXJuIGludCBf
SU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9JT19GSUxF
ICpfX2ZwKTsKCmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAoX0lPX0ZJTEUgKl9fZnApOwoK
CgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopOwpleHRlcm4gdm9pZCBf
SU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICopOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUg
KF9JT19GSUxFICopOwoKIyA0NTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQg
X0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJp
Y3QpOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0
IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlz
dCk7CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90
KTsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90KTsK
CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50
LCBpbnQpOwpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0
X3QsIGludCk7CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKik7
CgojIDU4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCnR5cGVkZWYgX0dfZnBvc190IGZw
b3NfdDsKIyAxMTEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCmV4dGVybiBGSUxFICpzdGRp
bjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoKCgoKZXh0ZXJu
IGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSk7CgpleHRlcm4gaW50IHJlbmFt
ZSAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldyk7CgoKCgpleHRlcm4g
RklMRSAqdG1wZmlsZSAodm9pZCk7CiMgMTQyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChj
aGFyICpfX3MpOwojIDE1OSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRl
bXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngpCiBfX2F0dHJp
YnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3Ry
ZWFtKTsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSk7CgoKCmV4dGVybiBpbnQg
ZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CiMgMTgyICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp
bGVuYW1lLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21v
ZGVzKTsKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
aWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7
CiMgMjEyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZmRvcGVuIChpbnQg
X19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKTsKIyAyMzUgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAq
X19yZXN0cmljdCBfX2J1Zik7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBp
bnQgX19tb2Rlcywgc2l6ZV90IF9fbik7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSk7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklM
RSAqX19zdHJlYW0pOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgLi4uKTsKCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLik7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
Li4uKTsKCgpleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNf
dmFfbGlzdCBfX2FyZyk7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCjsKCmV4dGVybiBpbnQgdnNwcmlu
dGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKTsKCgoKZXh0ZXJu
IGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
CiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVy
biBpbnQgX192c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4s
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMywgMCkpKTsKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CiMgMzA5ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMwpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwK
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KTsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
Li4uKTsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAog
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
OwoKIyAzMzUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZmdldGMgKEZJTEUg
Kl9fc3RyZWFtKTsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSk7CgoKZXh0ZXJuIGlu
dCBnZXRjaGFyICh2b2lkKTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpOwoKCgoKZXh0ZXJu
IGludCBmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwoKCgoKZXh0ZXJuIGludCBmcHV0
YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKTsKCgpleHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpOwoKCgoKCgoKZXh0
ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgoKZXh0
ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBp
bnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYyk7CgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxF
ICpfX3N0cmVhbSk7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSk7
CgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQo7CgojIDQwMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcyk7CgoKIyA0MjUgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCjsKCgoKCgoKCgpleHRlcm4gaW50IHB1dHMgKF9f
Y29uc3QgY2hhciAqX19zKTsKCgoKZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9f
c3RyZWFtKTsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwg
c2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSk7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpf
X3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3Vu
bG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
KTsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmlj
dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKZXh0ZXJuIGludCBmc2Vl
ayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpOwoKZXh0ZXJu
IGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJ
TEUgKl9fc3RyZWFtKTsKCgoKCgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwojIDQ5NSAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpCjsKCmV4dGVybiBpbnQgZnNldHBv
cyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3Bvcyk7CiMgNTMxICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pOwoK
ZXh0ZXJuIGludCBmZW9mIChGSUxFICpfX3N0cmVhbSk7CgpleHRlcm4gaW50IGZlcnJvciAoRklM
RSAqX19zdHJlYW0pOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJu
IGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKCgoKCmV4dGVybiB2b2lkIHBl
cnJvciAoX19jb25zdCBjaGFyICpfX3MpOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJu
IF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwojIDU2MiAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKTsKCgoKCmV4dGVy
biBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CgoKCgoKCmV4dGVybiBGSUxF
ICpwb3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2Rlcyk7
CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKTsKCgoKCgpleHRlcm4gY2hhciAq
Y3Rlcm1pZCAoY2hhciAqX19zKTsKIyA2MDkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVy
biB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pOwoKCgpleHRlcm4gaW50IGZ0cnlsb2Nr
ZmlsZSAoRklMRSAqX19zdHJlYW0pOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpf
X3N0cmVhbSk7CiMgNjMzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDcyICIvdXNyL2luY2x1
ZGUvY3Vyc2VzLmgiIDIgMwoKIyA1NSAiL3Vzci9pbmNsdWRlL3VuY3RybC5oIiAxIDMKCgpleHRl
cm4gY2hhciAqdW5jdHJsKGNodHlwZSk7CgojIDczICIvdXNyL2luY2x1ZGUvY3Vyc2VzLmgiIDIg
MwoKIyAxMTAgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRl
L3N0ZGFyZy5oIiAxIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDc0ICIvdXNy
L2luY2x1ZGUvY3Vyc2VzLmgiIDIgMwojIDk2ICIvdXNyL2luY2x1ZGUvY3Vyc2VzLmgiIDMKdHlw
ZWRlZiB1bnNpZ25lZCBib29sOwojIDEyOCAiL3Vzci9pbmNsdWRlL2N1cnNlcy5oIiAzCmV4dGVy
biBpbnQgQ09MT1JTOwpleHRlcm4gaW50IENPTE9SX1BBSVJTOwoKIyAxNDIgIi91c3IvaW5jbHVk
ZS9jdXJzZXMuaCIgMwpleHRlcm4gY2h0eXBlIGFjc19tYXBbXTsKCgojIDIzMSAiL3Vzci9pbmNs
dWRlL2N1cnNlcy5oIiAzCnR5cGVkZWYgc3RydWN0IHNjcmVlbiBTQ1JFRU47CnR5cGVkZWYgc3Ry
dWN0IF93aW5fc3QgV0lORE9XOwoKdHlwZWRlZiBjaHR5cGUgYXR0cl90OwoKIyAyNTMgIi91c3Iv
aW5jbHVkZS9jdXJzZXMuaCIgMwpzdHJ1Y3QgbGRhdAp7CiAgICAgICAgY2h0eXBlICp0ZXh0Owog
ICAgICAgIHNob3J0IGZpcnN0Y2hhcjsKICAgICAgICBzaG9ydCBsYXN0Y2hhcjsKICAgICAgICBz
aG9ydCBvbGRpbmRleDsKfTsKCnN0cnVjdCBfd2luX3N0CnsKICAgICAgICBzaG9ydCBfY3VyeSwg
X2N1cng7CgoKICAgICAgICBzaG9ydCBfbWF4eSwgX21heHg7CiAgICAgICAgc2hvcnQgX2JlZ3ks
IF9iZWd4OwoKICAgICAgICBzaG9ydCBfZmxhZ3M7CgoKICAgICAgICBhdHRyX3QgX2F0dHJzOwog
ICAgICAgIGNodHlwZSBfYmtnZDsKCgogICAgICAgIGJvb2wgX25vdGltZW91dDsKICAgICAgICBi
b29sIF9jbGVhcjsKICAgICAgICBib29sIF9sZWF2ZW9rOwogICAgICAgIGJvb2wgX3Njcm9sbDsK
ICAgICAgICBib29sIF9pZGxvazsKICAgICAgICBib29sIF9pZGNvazsKICAgICAgICBib29sIF9p
bW1lZDsKICAgICAgICBib29sIF9zeW5jOwogICAgICAgIGJvb2wgX3VzZV9rZXlwYWQ7CiAgICAg
ICAgaW50IF9kZWxheTsKCiAgICAgICAgc3RydWN0IGxkYXQgKl9saW5lOwoKCiAgICAgICAgc2hv
cnQgX3JlZ3RvcDsKICAgICAgICBzaG9ydCBfcmVnYm90dG9tOwoKCiAgICAgICAgaW50IF9wYXJ4
OwogICAgICAgIGludCBfcGFyeTsKICAgICAgICBXSU5ET1cgKl9wYXJlbnQ7CgoKICAgICAgICBz
dHJ1Y3QgcGRhdAogICAgICAgIHsKICAgICAgICAgICAgc2hvcnQgX3BhZF95LCBfcGFkX3g7CiAg
ICAgICAgICAgIHNob3J0IF9wYWRfdG9wLCBfcGFkX2xlZnQ7CiAgICAgICAgICAgIHNob3J0IF9w
YWRfYm90dG9tLCBfcGFkX3JpZ2h0OwogICAgICAgIH0gX3BhZDsKCiAgICAgICAgc2hvcnQgX3lv
ZmZzZXQ7Cn07CgpleHRlcm4gV0lORE9XICpzdGRzY3I7CmV4dGVybiBXSU5ET1cgKmN1cnNjcjsK
ZXh0ZXJuIFdJTkRPVyAqbmV3c2NyOwoKZXh0ZXJuIGludCBMSU5FUzsKZXh0ZXJuIGludCBDT0xT
OwpleHRlcm4gaW50IFRBQlNJWkU7CgoKCgpleHRlcm4gaW50IEVTQ0RFTEFZOwoKCmV4dGVybiBp
bnQgZGVmaW5lX2tleSAoY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IGtleW9rIChpbnQsIGJvb2wp
OwpleHRlcm4gaW50IHJlc2l6ZXRlcm0gKGludCwgaW50KTsKZXh0ZXJuIGludCB1c2VfZGVmYXVs
dF9jb2xvcnMgKHZvaWQpOwpleHRlcm4gaW50IHdyZXNpemUgKFdJTkRPVyAqLCBpbnQsIGludCk7
CgpleHRlcm4gY2hhciB0dHl0eXBlW107CgoKCgoKCgojIDM3MiAiL3Vzci9pbmNsdWRlL2N1cnNl
cy5oIiAzCmV4dGVybiBpbnQgYWRkY2goY29uc3QgY2h0eXBlKTsKZXh0ZXJuIGludCBhZGRjaG5z
dHIoY29uc3QgY2h0eXBlICosIGludCk7CmV4dGVybiBpbnQgYWRkY2hzdHIoY29uc3QgY2h0eXBl
ICopOwpleHRlcm4gaW50IGFkZG5zdHIoY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IGFk
ZHN0cihjb25zdCBjaGFyICopOwoKCgoKCgoKZXh0ZXJuIGludCBhdHRyb2ZmKGludCk7CmV4dGVy
biBpbnQgYXR0cm9uKGludCk7CmV4dGVybiBpbnQgYXR0cnNldChpbnQpOwpleHRlcm4gaW50IGF0
dHJfZ2V0KHZvaWQpOwpleHRlcm4gaW50IGF0dHJfb2ZmKGludCk7CmV4dGVybiBpbnQgYXR0cl9v
bihpbnQpOwpleHRlcm4gaW50IGF0dHJfc2V0KGludCk7CmV4dGVybiBpbnQgYmF1ZHJhdGUodm9p
ZCk7CmV4dGVybiBpbnQgYmVlcCh2b2lkKTsKZXh0ZXJuIGludCBia2dkKGNodHlwZSk7CmV4dGVy
biB2b2lkIGJrZ2RzZXQoY2h0eXBlKTsKCgoKCmV4dGVybiBpbnQgYm9yZGVyKGNodHlwZSxjaHR5
cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUpOwoKCgpleHRlcm4g
aW50IGJveChXSU5ET1cgKiwgY2h0eXBlLCBjaHR5cGUpOwoKCgpleHRlcm4gYm9vbCBjYW5fY2hh
bmdlX2NvbG9yKHZvaWQpOwpleHRlcm4gaW50IGNicmVhayh2b2lkKTsKZXh0ZXJuIGludCBjaGdh
dChpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7CmV4dGVybiBpbnQgY2xlYXIodm9p
ZCk7CmV4dGVybiBpbnQgY2xlYXJvayhXSU5ET1cgKixib29sKTsKZXh0ZXJuIGludCBjbHJ0b2Jv
dCh2b2lkKTsKZXh0ZXJuIGludCBjbHJ0b2VvbCh2b2lkKTsKZXh0ZXJuIGludCBjb2xvcl9jb250
ZW50KHNob3J0LHNob3J0KixzaG9ydCosc2hvcnQqKTsKZXh0ZXJuIGludCBjb2xvcl9zZXQoc2hv
cnQsdm9pZCopOwpleHRlcm4gaW50IENPTE9SX1BBSVIoaW50KTsKZXh0ZXJuIGludCBjb3B5d2lu
KGNvbnN0IFdJTkRPVyosV0lORE9XKixpbnQsaW50LGludCxpbnQsaW50LGludCxpbnQpOwpleHRl
cm4gaW50IGN1cnNfc2V0KGludCk7CmV4dGVybiBpbnQgZGVmX3Byb2dfbW9kZSh2b2lkKTsKZXh0
ZXJuIGludCBkZWZfc2hlbGxfbW9kZSh2b2lkKTsKZXh0ZXJuIGludCBkZWxheV9vdXRwdXQoaW50
KTsKZXh0ZXJuIGludCBkZWxjaCh2b2lkKTsKZXh0ZXJuIHZvaWQgZGVsc2NyZWVuKFNDUkVFTiAq
KTsKZXh0ZXJuIGludCBkZWx3aW4oV0lORE9XICopOwpleHRlcm4gaW50IGRlbGV0ZWxuKHZvaWQp
OwpleHRlcm4gV0lORE9XICpkZXJ3aW4oV0lORE9XICosaW50LGludCxpbnQsaW50KTsKZXh0ZXJu
IGludCBkb3VwZGF0ZSh2b2lkKTsKZXh0ZXJuIFdJTkRPVyAqZHVwd2luKFdJTkRPVyAqKTsKZXh0
ZXJuIGludCBlY2hvKHZvaWQpOwpleHRlcm4gaW50IGVjaG9jaGFyKGNvbnN0IGNodHlwZSk7CgoK
CgpleHRlcm4gaW50IGVuZHdpbih2b2lkKTsKZXh0ZXJuIGNoYXIgZXJhc2VjaGFyKHZvaWQpOwoK
CgpleHRlcm4gdm9pZCBmaWx0ZXIodm9pZCk7CmV4dGVybiBpbnQgZmxhc2godm9pZCk7CmV4dGVy
biBpbnQgZmx1c2hpbnAodm9pZCk7CmV4dGVybiBjaHR5cGUgZ2V0YmtnZChXSU5ET1cgKik7CgoK
CgpleHRlcm4gaW50IGdldGNoKHZvaWQpOwpleHRlcm4gaW50IGdldG5zdHIoY2hhciAqLCBpbnQp
OwoKCgpleHRlcm4gaW50IGdldHN0cihjaGFyICopOwoKCgpleHRlcm4gV0lORE9XICpnZXR3aW4o
RklMRSAqKTsKCgoKZXh0ZXJuIGludCBoYWxmZGVsYXkoaW50KTsKZXh0ZXJuIGJvb2wgaGFzX2Nv
bG9ycyh2b2lkKTsKZXh0ZXJuIGludCBoYXNfaWModm9pZCk7CmV4dGVybiBpbnQgaGFzX2lsKHZv
aWQpOwpleHRlcm4gaW50IGhsaW5lKGNodHlwZSwgaW50KTsKCgoKZXh0ZXJuIHZvaWQgaWRjb2so
V0lORE9XICosIGJvb2wpOwpleHRlcm4gaW50IGlkbG9rKFdJTkRPVyAqLCBib29sKTsKZXh0ZXJu
IHZvaWQgaW1tZWRvayhXSU5ET1cgKiwgYm9vbCk7CmV4dGVybiBjaHR5cGUgaW5jaCh2b2lkKTsK
ZXh0ZXJuIGludCBpbmNobnN0cihjaHR5cGUgKiwgaW50KTsKZXh0ZXJuIGludCBpbmNoc3RyKGNo
dHlwZSAqKTsKZXh0ZXJuIFdJTkRPVyAqaW5pdHNjcih2b2lkKTsKZXh0ZXJuIGludCBpbml0X2Nv
bG9yKHNob3J0LHNob3J0LHNob3J0LHNob3J0KTsKZXh0ZXJuIGludCBpbml0X3BhaXIoc2hvcnQs
c2hvcnQsc2hvcnQpOwpleHRlcm4gaW50IGlubnN0cihjaGFyICosIGludCk7CgoKCmV4dGVybiBp
bnQgaW5zY2goY2h0eXBlKTsKZXh0ZXJuIGludCBpbnNkZWxsbihpbnQpOwpleHRlcm4gaW50IGlu
c2VydGxuKHZvaWQpOwpleHRlcm4gaW50IGluc25zdHIoY29uc3QgY2hhciAqLCBpbnQpOwpleHRl
cm4gaW50IGluc3N0cihjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGluc3RyKGNoYXIgKik7CgoK
CgoKZXh0ZXJuIGludCBpbnRyZmx1c2goV0lORE9XICosYm9vbCk7CgoKCgoKCmV4dGVybiBpbnQg
aXNlbmR3aW4odm9pZCk7CmV4dGVybiBpbnQgaXNfbGluZXRvdWNoZWQoV0lORE9XICosaW50KTsK
ZXh0ZXJuIGludCBpc193aW50b3VjaGVkKFdJTkRPVyAqKTsKZXh0ZXJuIGNvbnN0IGNoYXIgKmtl
eW5hbWUoaW50KTsKCgoKZXh0ZXJuIGludCBrZXlwYWQoV0lORE9XICosYm9vbCk7CmV4dGVybiBj
aGFyIGtpbGxjaGFyKHZvaWQpOwoKCgpleHRlcm4gaW50IGxlYXZlb2soV0lORE9XICosYm9vbCk7
CmV4dGVybiBjaGFyICpsb25nbmFtZSh2b2lkKTsKZXh0ZXJuIGludCBtZXRhKFdJTkRPVyAqLGJv
b2wpOwpleHRlcm4gaW50IG1vdmUoaW50LCBpbnQpOwpleHRlcm4gaW50IG12YWRkY2goaW50LCBp
bnQsIGNvbnN0IGNodHlwZSk7CmV4dGVybiBpbnQgbXZhZGRjaG5zdHIoaW50LCBpbnQsIGNvbnN0
IGNodHlwZSAqLCBpbnQpOwpleHRlcm4gaW50IG12YWRkY2hzdHIoaW50LCBpbnQsIGNvbnN0IGNo
dHlwZSAqKTsKZXh0ZXJuIGludCBtdmFkZG5zdHIoaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50
KTsKZXh0ZXJuIGludCBtdmFkZHN0cihpbnQsIGludCwgY29uc3QgY2hhciAqKTsKCgoKCgoKCmV4
dGVybiBpbnQgbXZjaGdhdChpbnQsIGludCwgaW50LCBhdHRyX3QsIHNob3J0LCBjb25zdCB2b2lk
ICopOwpleHRlcm4gaW50IG12Y3VyKGludCxpbnQsaW50LGludCk7CmV4dGVybiBpbnQgbXZkZWxj
aChpbnQsIGludCk7CmV4dGVybiBpbnQgbXZkZXJ3aW4oV0lORE9XICosIGludCwgaW50KTsKZXh0
ZXJuIGludCBtdmdldGNoKGludCwgaW50KTsKZXh0ZXJuIGludCBtdmdldG5zdHIoaW50LCBpbnQs
IGNoYXIgKiwgaW50KTsKCgoKZXh0ZXJuIGludCBtdmdldHN0cihpbnQsIGludCwgY2hhciAqKTsK
CgoKCgoKZXh0ZXJuIGludCBtdmhsaW5lKGludCwgaW50LCBjaHR5cGUsIGludCk7CgoKCmV4dGVy
biBjaHR5cGUgbXZpbmNoKGludCwgaW50KTsKZXh0ZXJuIGludCBtdmluY2huc3RyKGludCwgaW50
LCBjaHR5cGUgKiwgaW50KTsKZXh0ZXJuIGludCBtdmluY2hzdHIoaW50LCBpbnQsIGNodHlwZSAq
KTsKZXh0ZXJuIGludCBtdmlubnN0cihpbnQsIGludCwgY2hhciAqLCBpbnQpOwoKCgpleHRlcm4g
aW50IG12aW5zY2goaW50LCBpbnQsIGNodHlwZSk7CmV4dGVybiBpbnQgbXZpbnNuc3RyKGludCwg
aW50LCBjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgbXZpbnNzdHIoaW50LCBpbnQsIGNv
bnN0IGNoYXIgKik7CmV4dGVybiBpbnQgbXZpbnN0cihpbnQsIGludCwgY2hhciAqKTsKIyA1Njgg
Ii91c3IvaW5jbHVkZS9jdXJzZXMuaCIgMwpleHRlcm4gaW50IG12cHJpbnR3KGludCxpbnQsY29u
c3QgY2hhciAqLC4uLikKOwpleHRlcm4gaW50IG12c2NhbncoaW50LGludCxjb25zdCBjaGFyICos
Li4uKQo7CmV4dGVybiBpbnQgbXZ2bGluZShpbnQsIGludCwgY2h0eXBlLCBpbnQpOwoKCgpleHRl
cm4gaW50IG12d2FkZGNoKFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2h0eXBlKTsKZXh0ZXJu
IGludCBtdndhZGRjaG5zdHIoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaHR5cGUgKiwgaW50
KTsKZXh0ZXJuIGludCBtdndhZGRjaHN0cihXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNodHlw
ZSAqKTsKZXh0ZXJuIGludCBtdndhZGRuc3RyKFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2hh
ciAqLCBpbnQpOwpleHRlcm4gaW50IG12d2FkZHN0cihXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0
IGNoYXIgKik7CgoKCgoKCgpleHRlcm4gaW50IG12d2NoZ2F0KFdJTkRPVyAqLCBpbnQsIGludCwg
aW50LCBhdHRyX3QsIHNob3J0LCBjb25zdCB2b2lkICopOwpleHRlcm4gaW50IG12d2RlbGNoKFdJ
TkRPVyAqLCBpbnQsIGludCk7CmV4dGVybiBpbnQgbXZ3Z2V0Y2goV0lORE9XICosIGludCwgaW50
KTsKZXh0ZXJuIGludCBtdndnZXRuc3RyKFdJTkRPVyAqLCBpbnQsIGludCwgY2hhciAqLCBpbnQp
OwoKCgpleHRlcm4gaW50IG12d2dldHN0cihXSU5ET1cgKiwgaW50LCBpbnQsIGNoYXIgKik7CgoK
CgoKCmV4dGVybiBpbnQgbXZ3aGxpbmUoV0lORE9XICosIGludCwgaW50LCBjaHR5cGUsIGludCk7
CgoKCmV4dGVybiBpbnQgbXZ3aW4oV0lORE9XICosaW50LGludCk7CmV4dGVybiBjaHR5cGUgbXZ3
aW5jaChXSU5ET1cgKiwgaW50LCBpbnQpOwpleHRlcm4gaW50IG12d2luY2huc3RyKFdJTkRPVyAq
LCBpbnQsIGludCwgY2h0eXBlICosIGludCk7CmV4dGVybiBpbnQgbXZ3aW5jaHN0cihXSU5ET1cg
KiwgaW50LCBpbnQsIGNodHlwZSAqKTsKZXh0ZXJuIGludCBtdndpbm5zdHIoV0lORE9XICosIGlu
dCwgaW50LCBjaGFyICosIGludCk7CgoKCmV4dGVybiBpbnQgbXZ3aW5zY2goV0lORE9XICosIGlu
dCwgaW50LCBjaHR5cGUpOwpleHRlcm4gaW50IG12d2luc25zdHIoV0lORE9XICosIGludCwgaW50
LCBjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgbXZ3aW5zc3RyKFdJTkRPVyAqLCBpbnQs
IGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBtdndpbnN0cihXSU5ET1cgKiwgaW50LCBp
bnQsIGNoYXIgKik7CiMgNjI3ICIvdXNyL2luY2x1ZGUvY3Vyc2VzLmgiIDMKZXh0ZXJuIGludCBt
dndwcmludHcoV0lORE9XKixpbnQsaW50LGNvbnN0IGNoYXIgKiwuLi4pCjsKZXh0ZXJuIGludCBt
dndzY2FudyhXSU5ET1cgKixpbnQsaW50LGNvbnN0IGNoYXIgKiwuLi4pCjsKZXh0ZXJuIGludCBt
dnd2bGluZShXSU5ET1cgKixpbnQsIGludCwgY2h0eXBlLCBpbnQpOwoKCgpleHRlcm4gaW50IG5h
cG1zKGludCk7CmV4dGVybiBXSU5ET1cgKm5ld3BhZChpbnQsaW50KTsKZXh0ZXJuIFNDUkVFTiAq
bmV3dGVybShjb25zdCBjaGFyICosRklMRSAqLEZJTEUgKik7CmV4dGVybiBXSU5ET1cgKm5ld3dp
bihpbnQsaW50LGludCxpbnQpOwpleHRlcm4gaW50IG5sKHZvaWQpOwpleHRlcm4gaW50IG5vY2Jy
ZWFrKHZvaWQpOwpleHRlcm4gaW50IG5vZGVsYXkoV0lORE9XICosYm9vbCk7CmV4dGVybiBpbnQg
bm9lY2hvKHZvaWQpOwpleHRlcm4gaW50IG5vbmwodm9pZCk7CmV4dGVybiBpbnQgbm9xaWZsdXNo
KHZvaWQpOwpleHRlcm4gaW50IG5vcmF3KHZvaWQpOwpleHRlcm4gaW50IG5vdGltZW91dChXSU5E
T1cgKixib29sKTsKZXh0ZXJuIGludCBvdmVybGF5KGNvbnN0IFdJTkRPVyosV0lORE9XICopOwpl
eHRlcm4gaW50IG92ZXJ3cml0ZShjb25zdCBXSU5ET1cqLFdJTkRPVyAqKTsKZXh0ZXJuIGludCBw
YWlyX2NvbnRlbnQoc2hvcnQsc2hvcnQqLHNob3J0Kik7CmV4dGVybiBpbnQgUEFJUl9OVU1CRVIo
aW50KTsKZXh0ZXJuIGludCBwZWNob2NoYXIoV0lORE9XICosIGNvbnN0IGNodHlwZSk7CgoKCmV4
dGVybiBpbnQgcG5vdXRyZWZyZXNoKFdJTkRPVyosaW50LGludCxpbnQsaW50LGludCxpbnQpOwpl
eHRlcm4gaW50IHByZWZyZXNoKFdJTkRPVyAqLGludCxpbnQsaW50LGludCxpbnQsaW50KTsKZXh0
ZXJuIGludCBwcmludHcoY29uc3QgY2hhciAqLC4uLikKOwpleHRlcm4gaW50IHB1dHAoY29uc3Qg
Y2hhciAqKTsKZXh0ZXJuIGludCBwdXR3aW4oV0lORE9XICosIEZJTEUgKik7CmV4dGVybiBpbnQg
cWlmbHVzaCh2b2lkKTsKZXh0ZXJuIGludCByYXcodm9pZCk7CmV4dGVybiBpbnQgcmVkcmF3d2lu
KFdJTkRPVyAqKTsKZXh0ZXJuIGludCByZWZyZXNoKHZvaWQpOwpleHRlcm4gaW50IHJlc2V0dHko
dm9pZCk7CmV4dGVybiBpbnQgcmVzZXRfcHJvZ19tb2RlKHZvaWQpOwpleHRlcm4gaW50IHJlc2V0
X3NoZWxsX21vZGUodm9pZCk7CmV4dGVybiBpbnQgcmlwb2ZmbGluZShpbnQsIGludCAoKmluaXQp
KFdJTkRPVyAqLCBpbnQpKTsKZXh0ZXJuIGludCBzYXZldHR5KHZvaWQpOwpleHRlcm4gaW50IHNj
YW53KGNvbnN0IGNoYXIgKiwuLi4pCjsKZXh0ZXJuIGludCBzY3JfZHVtcChjb25zdCBjaGFyICop
OwpleHRlcm4gaW50IHNjcl9pbml0KGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc2NybChpbnQp
OwpleHRlcm4gaW50IHNjcm9sbChXSU5ET1cgKik7CmV4dGVybiBpbnQgc2Nyb2xsb2soV0lORE9X
ICosYm9vbCk7CmV4dGVybiBpbnQgc2NyX3Jlc3RvcmUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGlu
dCBzY3Jfc2V0KGNvbnN0IGNoYXIgKik7CgoKCmV4dGVybiBpbnQgc2V0c2NycmVnKGludCxpbnQp
OwpleHRlcm4gU0NSRUVOICpzZXRfdGVybShTQ1JFRU4gKik7CmV4dGVybiBpbnQgc2xrX2F0dHJv
ZmYoY29uc3QgYXR0cl90KTsKZXh0ZXJuIGludCBzbGtfYXR0cl9vZmYoYXR0cl90KTsKZXh0ZXJu
IGludCBzbGtfYXR0cm9uKGNvbnN0IGF0dHJfdCk7CmV4dGVybiBpbnQgc2xrX2F0dHJfb24oYXR0
cl90KTsKZXh0ZXJuIGludCBzbGtfYXR0cnNldChjb25zdCBhdHRyX3QpOwpleHRlcm4gYXR0cl90
IHNsa19hdHRyKHZvaWQpOwpleHRlcm4gaW50IHNsa19hdHRyX3NldChhdHRyX3QpOwpleHRlcm4g
aW50IHNsa19jbGVhcih2b2lkKTsKZXh0ZXJuIGludCBzbGtfaW5pdChpbnQpOwpleHRlcm4gY2hh
ciAqc2xrX2xhYmVsKGludCk7CmV4dGVybiBpbnQgc2xrX25vdXRyZWZyZXNoKHZvaWQpOwpleHRl
cm4gaW50IHNsa19yZWZyZXNoKHZvaWQpOwpleHRlcm4gaW50IHNsa19yZXN0b3JlKHZvaWQpOwpl
eHRlcm4gaW50IHNsa19zZXQoaW50LGNvbnN0IGNoYXIgKixpbnQpOwpleHRlcm4gaW50IHNsa190
b3VjaCh2b2lkKTsKCgoKZXh0ZXJuIGludCBzdGFuZG91dCh2b2lkKTsKZXh0ZXJuIGludCBzdGFu
ZGVuZCh2b2lkKTsKZXh0ZXJuIGludCBzdGFydF9jb2xvcih2b2lkKTsKZXh0ZXJuIFdJTkRPVyAq
c3VicGFkKFdJTkRPVyAqLCBpbnQsIGludCwgaW50LCBpbnQpOwpleHRlcm4gV0lORE9XICpzdWJ3
aW4oV0lORE9XICosaW50LGludCxpbnQsaW50KTsKZXh0ZXJuIGludCBzeW5jb2soV0lORE9XICos
IGJvb2wpOwpleHRlcm4gY2h0eXBlIHRlcm1hdHRycyh2b2lkKTsKZXh0ZXJuIGF0dHJfdCB0ZXJt
X2F0dHJzKHZvaWQpOwpleHRlcm4gY2hhciAqdGVybW5hbWUodm9pZCk7CmV4dGVybiBpbnQgdGln
ZXRmbGFnKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdGlnZXRudW0oY29uc3QgY2hhciAqKTsK
ZXh0ZXJuIGNoYXIgKnRpZ2V0c3RyKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdGltZW91dChp
bnQpOwpleHRlcm4gaW50IHR5cGVhaGVhZChpbnQpOwpleHRlcm4gaW50IHVuZ2V0Y2goaW50KTsK
CgoKZXh0ZXJuIGludCB1bnRvdWNod2luKFdJTkRPVyAqKTsKZXh0ZXJuIHZvaWQgdXNlX2Vudihi
b29sKTsKZXh0ZXJuIGludCB2aWRhdHRyKGNodHlwZSk7CmV4dGVybiBpbnQgdmlkX2F0dHIoYXR0
cl90KTsKZXh0ZXJuIGludCB2aWRwdXRzKGNodHlwZSwgaW50ICgqKShpbnQpKTsKCgoKZXh0ZXJu
IGludCB2bGluZShjaHR5cGUsIGludCk7CgoKCmV4dGVybiBpbnQgdndwcmludHcoV0lORE9XICos
Y29uc3QgY2hhciAqLHZhX2xpc3QpOwpleHRlcm4gaW50IHZ3X3ByaW50dyhXSU5ET1cgKixjb25z
dCBjaGFyICosdmFfbGlzdCk7CmV4dGVybiBpbnQgdndzY2FudyhXSU5ET1cgKixjb25zdCBjaGFy
ICosdmFfbGlzdCk7CmV4dGVybiBpbnQgdndfc2NhbncoV0lORE9XICosY29uc3QgY2hhciAqLHZh
X2xpc3QpOwpleHRlcm4gaW50IHdhZGRjaChXSU5ET1cgKiwgY29uc3QgY2h0eXBlKTsKZXh0ZXJu
IGludCB3YWRkY2huc3RyKFdJTkRPVyAqLGNvbnN0IGNodHlwZSAqY29uc3QsaW50KTsKZXh0ZXJu
IGludCB3YWRkY2hzdHIoV0lORE9XICosY29uc3QgY2h0eXBlICopOwpleHRlcm4gaW50IHdhZGRu
c3RyKFdJTkRPVyAqLGNvbnN0IGNoYXIgKmNvbnN0LGludCk7CmV4dGVybiBpbnQgd2FkZHN0cihX
SU5ET1cgKixjb25zdCBjaGFyICopOwoKCgoKCgpleHRlcm4gaW50IHdhdHRyb24oV0lORE9XICos
IGludCk7CmV4dGVybiBpbnQgd2F0dHJvZmYoV0lORE9XICosIGludCk7CmV4dGVybiBpbnQgd2F0
dHJzZXQoV0lORE9XICosIGludCk7CmV4dGVybiBhdHRyX3Qgd2F0dHJfZ2V0KFdJTkRPVyAqKTsK
ZXh0ZXJuIGludCB3YXR0cl9vbihXSU5ET1cgKiwgY29uc3QgYXR0cl90KTsKZXh0ZXJuIGludCB3
YXR0cl9vZmYoV0lORE9XICosIGNvbnN0IGF0dHJfdCk7CmV4dGVybiBpbnQgd2F0dHJfc2V0KFdJ
TkRPVyAqLCBhdHRyX3QpOwpleHRlcm4gaW50IHdia2dkKFdJTkRPVyAqLGNvbnN0IGNodHlwZSk7
CmV4dGVybiB2b2lkIHdia2dkc2V0KFdJTkRPVyAqLGNodHlwZSk7CgoKCgpleHRlcm4gaW50IHdi
b3JkZXIoV0lORE9XICosY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUs
Y2h0eXBlLGNodHlwZSk7CgoKCmV4dGVybiBpbnQgd2NoZ2F0KFdJTkRPVyAqLCBpbnQsIGF0dHJf
dCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7CmV4dGVybiBpbnQgd2NsZWFyKFdJTkRPVyAqKTsKZXh0
ZXJuIGludCB3Y2xydG9ib3QoV0lORE9XICopOwpleHRlcm4gaW50IHdjbHJ0b2VvbChXSU5ET1cg
Kik7CmV4dGVybiBpbnQgd2NvbG9yX3NldChXSU5ET1cqLHNob3J0LHZvaWQqKTsKZXh0ZXJuIHZv
aWQgd2N1cnN5bmN1cChXSU5ET1cgKik7CmV4dGVybiBpbnQgd2RlbGNoKFdJTkRPVyAqKTsKZXh0
ZXJuIGludCB3ZGVsZXRlbG4oV0lORE9XICopOwpleHRlcm4gaW50IHdlY2hvY2hhcihXSU5ET1cg
KiwgY29uc3QgY2h0eXBlKTsKCgoKZXh0ZXJuIGludCB3ZXJhc2UoV0lORE9XICopOwoKCgpleHRl
cm4gaW50IHdnZXRjaChXSU5ET1cgKik7CmV4dGVybiBpbnQgd2dldG5zdHIoV0lORE9XICosY2hh
ciAqLGludCk7CgoKCmV4dGVybiBpbnQgd2dldHN0cihXSU5ET1cgKiwgY2hhciAqKTsKCgoKCmV4
dGVybiBpbnQgd2hsaW5lKFdJTkRPVyAqLCBjaHR5cGUsIGludCk7CgoKCmV4dGVybiBjaHR5cGUg
d2luY2goV0lORE9XICopOwpleHRlcm4gaW50IHdpbmNobnN0cihXSU5ET1cgKiwgY2h0eXBlICos
IGludCk7CmV4dGVybiBpbnQgd2luY2hzdHIoV0lORE9XICosIGNodHlwZSAqKTsKZXh0ZXJuIGlu
dCB3aW5uc3RyKFdJTkRPVyAqLCBjaGFyICosIGludCk7CgoKCmV4dGVybiBpbnQgd2luc2NoKFdJ
TkRPVyAqLCBjaHR5cGUpOwpleHRlcm4gaW50IHdpbnNkZWxsbihXSU5ET1cgKixpbnQpOwpleHRl
cm4gaW50IHdpbnNlcnRsbihXSU5ET1cgKik7CmV4dGVybiBpbnQgd2luc25zdHIoV0lORE9XICos
IGNvbnN0IGNoYXIgKixpbnQpOwpleHRlcm4gaW50IHdpbnNzdHIoV0lORE9XICosIGNvbnN0IGNo
YXIgKik7CmV4dGVybiBpbnQgd2luc3RyKFdJTkRPVyAqLCBjaGFyICopOwojIDgxNiAiL3Vzci9p
bmNsdWRlL2N1cnNlcy5oIiAzCmV4dGVybiBpbnQgd21vdmUoV0lORE9XICosaW50LGludCk7CmV4
dGVybiBpbnQgd25vdXRyZWZyZXNoKFdJTkRPVyAqKTsKZXh0ZXJuIGludCB3cHJpbnR3KFdJTkRP
VyAqLGNvbnN0IGNoYXIgKiwuLi4pCjsKZXh0ZXJuIGludCB3cmVkcmF3bG4oV0lORE9XICosaW50
LGludCk7CmV4dGVybiBpbnQgd3JlZnJlc2goV0lORE9XICopOwpleHRlcm4gaW50IHdzY2FudyhX
SU5ET1cgKixjb25zdCBjaGFyICosLi4uKQo7CmV4dGVybiBpbnQgd3NjcmwoV0lORE9XICosaW50
KTsKZXh0ZXJuIGludCB3c2V0c2NycmVnKFdJTkRPVyAqLGludCxpbnQpOwpleHRlcm4gaW50IHdz
dGFuZG91dChXSU5ET1cgKik7CmV4dGVybiBpbnQgd3N0YW5kZW5kKFdJTkRPVyAqKTsKZXh0ZXJu
IHZvaWQgd3N5bmNkb3duKFdJTkRPVyAqKTsKZXh0ZXJuIHZvaWQgd3N5bmN1cChXSU5ET1cgKik7
CmV4dGVybiBpbnQgd3RpbWVvdXQoV0lORE9XICosaW50KTsKZXh0ZXJuIGludCB3dG91Y2hsbihX
SU5ET1cgKixpbnQsaW50LGludCk7CgoKCmV4dGVybiBpbnQgd3ZsaW5lKFdJTkRPVyAqLGNodHlw
ZSxpbnQpOwojIDEyNjggIi91c3IvaW5jbHVkZS9jdXJzZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbW1hc2tfdDsKCnR5cGVkZWYgc3RydWN0CnsKICAgIHNob3J0IGlkOwogICAgaW50IHgs
IHksIHo7CiAgICBtbWFza190IGJzdGF0ZTsKfQpNRVZFTlQ7CgpleHRlcm4gaW50IGdldG1vdXNl
KE1FVkVOVCAqKTsKZXh0ZXJuIGludCB1bmdldG1vdXNlKE1FVkVOVCAqKTsKZXh0ZXJuIG1tYXNr
X3QgbW91c2VtYXNrKG1tYXNrX3QsIG1tYXNrX3QgKik7CmV4dGVybiBib29sIHdlbmNsb3NlKGNv
bnN0IFdJTkRPVyAqLCBpbnQsIGludCk7CmV4dGVybiBpbnQgbW91c2VpbnRlcnZhbChpbnQpOwoK
CgpleHRlcm4gaW50IG1jcHJpbnQoY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IGhhc19rZXkoaW50
KTsKCgoKZXh0ZXJuIHZvaWQgX3RyYWNlZihjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiB2b2lk
IF90cmFjZWR1bXAoY29uc3QgY2hhciAqLCBXSU5ET1cgKik7CmV4dGVybiBjaGFyICpfdHJhY2Vh
dHRyKGF0dHJfdCk7CmV4dGVybiBjaGFyICpfdHJhY2VhdHRyMihpbnQsIGNodHlwZSk7CmV4dGVy
biBjaGFyICpfdHJhY2ViaXRzKHZvaWQpOwpleHRlcm4gY2hhciAqX3RyYWNlY2hhcihjb25zdCB1
bnNpZ25lZCBjaGFyKTsKZXh0ZXJuIGNoYXIgKl90cmFjZWNodHlwZShjaHR5cGUpOwpleHRlcm4g
Y2hhciAqX3RyYWNlY2h0eXBlMihpbnQsIGNodHlwZSk7CmV4dGVybiBjaGFyICpfdHJhY2Vtb3Vz
ZShjb25zdCBNRVZFTlQgKik7CmV4dGVybiB2b2lkIHRyYWNlKGNvbnN0IHVuc2lnbmVkIGludCk7
CgoKIyA0ICJ0ZXN0LWJyb2tlLmMiIDIKCnZvaWQgKkNvbW1hbmRFeGVjdXRlW10odm9pZCkgPSB7
CiAgICAgQmxpbmtEcml2ZUxFRHMoKSAsCiAgICAgRW1wdHlGdW5jKCkgLAp9OwoKaW50IG1haW4o
dm9pZCkKewogIGluaXRzY3IoKTsKICBjYnJlYWsoKTsKICBub25sKCk7CiAgaW50cmZsdXNoKHN0
ZHNjciwgKChib29sKTApKTsKICBrZXlwYWQoc3Rkc2NyLCAoKGJvb2wpMSkpOwoKCgogIG5vY2Jy
ZWFrKCk7CiAgZW5kd2luKCk7CgogIHJldHVybiAwOwp9Cg==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]