[kaffe] sysdepCallMethod() tests galore

Gwenole Beauchesne gbeauchesne@mandrakesoft.com
Mon May 26 07:28:01 2003


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---1463777692-1049142873-1053959458=:15107
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Fri, 16 May 2003, Timothy Stack wrote:

> I'd like to add this to the test/internal directory, but I need to know 
> what a correct run is supposed to look like.  Can you send what the output 
> is supposed to look like, or better, make the test do the checks itself 
> with assert().

OK, I updated the tests with a few checks against the returned value 
through sysdepCallMethod, then abort() if that differs.

Steps to reproduce:
- Kaffe is configured
- Be in developers, and sh ./test_sysdepCallMethod.c ;-)
- ./test_sysdepCallMethod

[...]

# add_fidjffijddjjiidfd: f, 1, i, 2, d, 3, j, 4, f, 5, f, 6, i, 7, j, 8, 
d, 9, d, 10, j, 11, j, 12, i, 13, i, 14, d, 15, f, 16, d, 17 => i
returns: 153
returns: 153

However, I only tested that on IA-64 and AMD64 so some changes may be 
needed to accomodate other ports. Besides, I found some sort of TestNative 
in test/regression but I couldn't test it.

Bye,
Gwenole.

---1463777692-1049142873-1053959458=:15107
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="test_sysdepCallMethod.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0305261630580.15107@thalys.mandrakesoft.com>
Content-Description: sysdepCallMethod() tests
Content-Disposition: attachment; filename="test_sysdepCallMethod.c"

I2lmIDANCmV4ZWMgJHtDQzotZ2NjfSAkQ0ZMQUdTIC1JLi4gLUkuLi9pbmNs
dWRlIC1JLi4vY29uZmlnIC1JLi4va2FmZmUgJDAgLW8gJHswJSUuY30NCiNl
bmRpZg0KDQojaW5jbHVkZSA8c3RkaW8uaD4NCiNpbmNsdWRlIDxzdGRpbnQu
aD4NCiNpbmNsdWRlIDxsaW1pdHMuaD4NCiNpbmNsdWRlIDxmbG9hdC5oPg0K
I2luY2x1ZGUgPG1hdGguaD4NCg0KI2RlZmluZSBORUVEX3N5c2RlcENhbGxN
ZXRob2QgMQ0KI2luY2x1ZGUgImthZmZldm0vZ3R5cGVzLmgiDQojaW5jbHVk
ZSAia2FmZmV2bS9zdXBwb3J0LmgiDQojaW5jbHVkZSAibWQuaCINCg0Kc3Rh
dGljIGNvbnN0IGNoYXIgY2hhcl92ID0gJ1YnOw0Kc3RhdGljIGNvbnN0IGNo
YXIgY2hhcl9jID0gJ0MnOw0Kc3RhdGljIGNvbnN0IGNoYXIgY2hhcl9zID0g
J1MnOw0Kc3RhdGljIGNvbnN0IGNoYXIgY2hhcl9pID0gJ0knOw0Kc3RhdGlj
IGNvbnN0IGNoYXIgY2hhcl9qID0gJ0onOw0Kc3RhdGljIGNvbnN0IGNoYXIg
Y2hhcl9mID0gJ0YnOw0Kc3RhdGljIGNvbnN0IGNoYXIgY2hhcl9kID0gJ0Qn
Ow0KI2RlZmluZSBKVFlQRUNIQVIoVCkgKGNoYXJfIyNUKQ0KDQpzdGF0aWMg
aW50IGFyZ3NpemUoY2hhciB0eXBlKSB7DQogIGludCBzID0gMDsNCiAgc3dp
dGNoICh0eXBlKSB7DQogIGNhc2UgJ1YnOg0KICAgIHMgPSAwOw0KICAgIGJy
ZWFrOw0KICBjYXNlICdDJzoNCiAgY2FzZSAnUyc6DQogIGNhc2UgJ0knOg0K
ICBjYXNlICdGJzoNCiAgICBzID0gMTsNCiAgICBicmVhazsNCiAgY2FzZSAn
Sic6DQogIGNhc2UgJ0QnOg0KICAgIHMgPSAyOw0KICAgIGJyZWFrOw0KICBk
ZWZhdWx0Og0KICAgIGFib3J0KCk7DQogIH0NCiAgcmV0dXJuIHM7DQp9DQoN
CnN0YXRpYyB2b2lkIHByaW50X2p2YWx1ZShjb25zdCBjaGFyICptc2csIGNv
bnN0IGp2YWx1ZSAqdmFsdWUsIGNoYXIgdHlwZSkgew0KICBpZiAobXNnKQ0K
ICAgIHByaW50ZigiJXMiLCBtc2cpOw0KICBzd2l0Y2ggKHR5cGUpIHsNCiAg
Y2FzZSAnVic6DQogICAgcHJpbnRmKCJ2b2lkIik7DQogICAgYnJlYWs7DQog
IGNhc2UgJ0MnOg0KICAgIHByaW50ZigiJWMiLCB2YWx1ZS0+Yyk7DQogICAg
YnJlYWs7DQogIGNhc2UgJ1MnOg0KICAgIHByaW50ZigiJWQiLCB2YWx1ZS0+
cyk7DQogICAgYnJlYWs7DQogIGNhc2UgJ0knOg0KICAgIHByaW50ZigiJWQi
LCB2YWx1ZS0+aSk7DQogICAgYnJlYWs7DQogIGNhc2UgJ0onOg0KICAgIHBy
aW50ZigiJWxsZCIsIHZhbHVlLT5qKTsNCiAgICBicmVhazsNCiAgY2FzZSAn
Ric6DQogICAgcHJpbnRmKCIlZiIsIHZhbHVlLT5mKTsNCiAgICBicmVhazsN
CiAgY2FzZSAnRCc6DQogICAgcHJpbnRmKCIlbGYiLCB2YWx1ZS0+ZCk7DQog
ICAgYnJlYWs7DQogIGRlZmF1bHQ6DQogICAgYWJvcnQoKTsNCiAgfQ0KfQ0K
DQojZGVmaW5lIENBTExfSU5WT0tFX0RPX1BSRVBBUkVfTihBUkdOTywgVFlQ
RSwgVkFMKQlcDQogIGFyZ3NbQVJHTk9dLlRZUEUgPSBWQUw7CQkJCVwNCiAg
Y2FsbC5jYWxsc2l6ZVtBUkdOT10gPSBhcmdzaXplKEpUWVBFQ0hBUihUWVBF
KSk7CVwNCiAgY2FsbC5jYWxsdHlwZVtBUkdOT10gPSBKVFlQRUNIQVIoVFlQ
RSk7DQoNCiNkZWZpbmUgQ0FMTF9JTlZPS0VfUFJFUEFSRV8wKC4uLikJCS8q
IG5vdGhpbmcgKi8NCiNkZWZpbmUgQ0FMTF9JTlZPS0VfUFJFUEFSRV8xKFRZ
UEUsIFZBTCwgLi4uKQlDQUxMX0lOVk9LRV9ET19QUkVQQVJFX04oMCwgVFlQ
RSwgVkFMKQ0KI2RlZmluZSBDQUxMX0lOVk9LRV9QUkVQQVJFXzIoVFlQRSwg
VkFMLCAuLi4pCUNBTExfSU5WT0tFX0RPX1BSRVBBUkVfTigxLCBUWVBFLCBW
QUwpOyBDQUxMX0lOVk9LRV9QUkVQQVJFXzEoX19WQV9BUkdTX18pDQojZGVm
aW5lIENBTExfSU5WT0tFX1BSRVBBUkVfMyhUWVBFLCBWQUwsIC4uLikJQ0FM
TF9JTlZPS0VfRE9fUFJFUEFSRV9OKDIsIFRZUEUsIFZBTCk7IENBTExfSU5W
T0tFX1BSRVBBUkVfMihfX1ZBX0FSR1NfXykNCiNkZWZpbmUgQ0FMTF9JTlZP
S0VfUFJFUEFSRV80KFRZUEUsIFZBTCwgLi4uKQlDQUxMX0lOVk9LRV9ET19Q
UkVQQVJFX04oMywgVFlQRSwgVkFMKTsgQ0FMTF9JTlZPS0VfUFJFUEFSRV8z
KF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0lOVk9LRV9QUkVQQVJFXzUo
VFlQRSwgVkFMLCAuLi4pCUNBTExfSU5WT0tFX0RPX1BSRVBBUkVfTig0LCBU
WVBFLCBWQUwpOyBDQUxMX0lOVk9LRV9QUkVQQVJFXzQoX19WQV9BUkdTX18p
DQojZGVmaW5lIENBTExfSU5WT0tFX1BSRVBBUkVfNihUWVBFLCBWQUwsIC4u
LikJQ0FMTF9JTlZPS0VfRE9fUFJFUEFSRV9OKDUsIFRZUEUsIFZBTCk7IENB
TExfSU5WT0tFX1BSRVBBUkVfNShfX1ZBX0FSR1NfXykNCiNkZWZpbmUgQ0FM
TF9JTlZPS0VfUFJFUEFSRV83KFRZUEUsIFZBTCwgLi4uKQlDQUxMX0lOVk9L
RV9ET19QUkVQQVJFX04oNiwgVFlQRSwgVkFMKTsgQ0FMTF9JTlZPS0VfUFJF
UEFSRV82KF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0lOVk9LRV9QUkVQ
QVJFXzgoVFlQRSwgVkFMLCAuLi4pCUNBTExfSU5WT0tFX0RPX1BSRVBBUkVf
Tig3LCBUWVBFLCBWQUwpOyBDQUxMX0lOVk9LRV9QUkVQQVJFXzcoX19WQV9B
UkdTX18pDQojZGVmaW5lIENBTExfSU5WT0tFX1BSRVBBUkVfOShUWVBFLCBW
QUwsIC4uLikJQ0FMTF9JTlZPS0VfRE9fUFJFUEFSRV9OKDgsIFRZUEUsIFZB
TCk7IENBTExfSU5WT0tFX1BSRVBBUkVfOChfX1ZBX0FSR1NfXykNCiNkZWZp
bmUgQ0FMTF9JTlZPS0VfUFJFUEFSRV8xMChUWVBFLCBWQUwsIC4uLikJQ0FM
TF9JTlZPS0VfRE9fUFJFUEFSRV9OKDksIFRZUEUsIFZBTCk7IENBTExfSU5W
T0tFX1BSRVBBUkVfOShfX1ZBX0FSR1NfXykNCiNkZWZpbmUgQ0FMTF9JTlZP
S0VfUFJFUEFSRV8xMShUWVBFLCBWQUwsIC4uLikJQ0FMTF9JTlZPS0VfRE9f
UFJFUEFSRV9OKDEwLCBUWVBFLCBWQUwpOyBDQUxMX0lOVk9LRV9QUkVQQVJF
XzEwKF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0lOVk9LRV9QUkVQQVJF
XzEyKFRZUEUsIFZBTCwgLi4uKQlDQUxMX0lOVk9LRV9ET19QUkVQQVJFX04o
MTEsIFRZUEUsIFZBTCk7IENBTExfSU5WT0tFX1BSRVBBUkVfMTEoX19WQV9B
UkdTX18pDQojZGVmaW5lIENBTExfSU5WT0tFX1BSRVBBUkVfMTMoVFlQRSwg
VkFMLCAuLi4pCUNBTExfSU5WT0tFX0RPX1BSRVBBUkVfTigxMiwgVFlQRSwg
VkFMKTsgQ0FMTF9JTlZPS0VfUFJFUEFSRV8xMihfX1ZBX0FSR1NfXykNCiNk
ZWZpbmUgQ0FMTF9JTlZPS0VfUFJFUEFSRV8xNChUWVBFLCBWQUwsIC4uLikJ
Q0FMTF9JTlZPS0VfRE9fUFJFUEFSRV9OKDEzLCBUWVBFLCBWQUwpOyBDQUxM
X0lOVk9LRV9QUkVQQVJFXzEzKF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxM
X0lOVk9LRV9QUkVQQVJFXzE1KFRZUEUsIFZBTCwgLi4uKQlDQUxMX0lOVk9L
RV9ET19QUkVQQVJFX04oMTQsIFRZUEUsIFZBTCk7IENBTExfSU5WT0tFX1BS
RVBBUkVfMTQoX19WQV9BUkdTX18pDQojZGVmaW5lIENBTExfSU5WT0tFX1BS
RVBBUkVfMTYoVFlQRSwgVkFMLCAuLi4pCUNBTExfSU5WT0tFX0RPX1BSRVBB
UkVfTigxNSwgVFlQRSwgVkFMKTsgQ0FMTF9JTlZPS0VfUFJFUEFSRV8xNShf
X1ZBX0FSR1NfXykNCiNkZWZpbmUgQ0FMTF9JTlZPS0VfUFJFUEFSRV8xNyhU
WVBFLCBWQUwsIC4uLikJQ0FMTF9JTlZPS0VfRE9fUFJFUEFSRV9OKDE2LCBU
WVBFLCBWQUwpOyBDQUxMX0lOVk9LRV9QUkVQQVJFXzE2KF9fVkFfQVJHU19f
KQ0KI2RlZmluZSBDQUxMX0lOVk9LRV9QUkVQQVJFXzE4KFRZUEUsIFZBTCwg
Li4uKQlDQUxMX0lOVk9LRV9ET19QUkVQQVJFX04oMTcsIFRZUEUsIFZBTCk7
IENBTExfSU5WT0tFX1BSRVBBUkVfMTcoX19WQV9BUkdTX18pDQojZGVmaW5l
IENBTExfSU5WT0tFX1BSRVBBUkVfMTkoVFlQRSwgVkFMLCAuLi4pCUNBTExf
SU5WT0tFX0RPX1BSRVBBUkVfTigxOCwgVFlQRSwgVkFMKTsgQ0FMTF9JTlZP
S0VfUFJFUEFSRV8xOChfX1ZBX0FSR1NfXykNCiNkZWZpbmUgQ0FMTF9JTlZP
S0VfUFJFUEFSRV8yMChUWVBFLCBWQUwsIC4uLikJQ0FMTF9JTlZPS0VfRE9f
UFJFUEFSRV9OKDE5LCBUWVBFLCBWQUwpOyBDQUxMX0lOVk9LRV9QUkVQQVJF
XzE5KF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0lOVk9LRV9QUkVQQVJF
KE5BUkdTLCAuLi4pCQlDQUxMX0lOVk9LRV9QUkVQQVJFXyMjTkFSR1MoX19W
QV9BUkdTX18pDQoNCiNkZWZpbmUgU1dBUChYLCBZKSBkbyB7CQkJCVwNCiAg
dHlwZW9mKFgpIFQgPSBYOwkJCQlcDQogIFggPSBZOwkJCQkJXA0KICBZID0g
VDsJCQkJCVwNCn0gd2hpbGUgKDApDQoNCiNkZWZpbmUgUkVUVkFMX09LX3Yo
UkVULCBSRVRWQUwpCTENCiNkZWZpbmUgUkVUVkFMX09LX2MoUkVULCBSRVRW
QUwpCSgoUkVUKS5jID09IChSRVRWQUwpKQ0KI2RlZmluZSBSRVRWQUxfT0tf
cyhSRVQsIFJFVFZBTCkJKChSRVQpLnMgPT0gKFJFVFZBTCkpDQojZGVmaW5l
IFJFVFZBTF9PS19pKFJFVCwgUkVUVkFMKQkoKFJFVCkuaSA9PSAoUkVUVkFM
KSkNCiNkZWZpbmUgUkVUVkFMX09LX2ooUkVULCBSRVRWQUwpCSgoUkVUKS5q
ID09IChSRVRWQUwpKQ0KI2RlZmluZSBSRVRWQUxfT0tfZihSRVQsIFJFVFZB
TCkJKChSRVQpLmYgPT0gKFJFVFZBTCkpDQojZGVmaW5lIFJFVFZBTF9PS19k
KFJFVCwgUkVUVkFMKQkoKFJFVCkuZCA9PSAoUkVUVkFMKSkNCg0KI2RlZmlu
ZSBDQUxMX0lOVk9LRShGVU5DLCBSRVRUWVBFLCBSRVRWQUwsIE5BUkdTLCAu
Li4pIGRvIHsJXA0KICBqdmFsdWUgYXJnc1tOQVJHU107CQkJCQkJXA0KICBq
dmFsdWUgcmV0OwkJCQkJCQlcDQogIGNhbGxNZXRob2RJbmZvIGNhbGw7CQkJ
CQkJXA0KICBpbnQgaSwgcyA9IDA7CQkJCQkJCVwNCiAgY2FsbC5mdW5jdGlv
biA9ICZGVU5DOwkJCQkJXA0KICBjYWxsLnJldCA9ICZyZXQ7CQkJCQkJXA0K
ICBjYWxsLnJldHNpemUgPSBhcmdzaXplKEpUWVBFQ0hBUihSRVRUWVBFKSk7
CQkJXA0KICBjYWxsLnJldHR5cGUgPSBKVFlQRUNIQVIoUkVUVFlQRSk7CQkJ
CVwNCiAgY2FsbC5ucmFyZ3MgPSBOQVJHUzsJCQkJCQlcDQogIGNhbGwuYXJn
cyA9IGFyZ3M7CQkJCQkJXA0KICBDQUxMX0lOVk9LRV9QUkVQQVJFKE5BUkdT
LCAjI19fVkFfQVJHU19fLCAxKTsJCQlcDQogIGZvciAoaSA9IDA7IGkgPCBO
QVJHUzsgaSsrKQkJCQkJXA0KICAgIHMgKz0gY2FsbC5jYWxsc2l6ZVtpXTsJ
CQkJCVwNCiAgLyogcmV2ZXJzZSBhcmd1bWVudHMgKi8JCQkJCVwNCiAgZm9y
IChpID0gMDsgaSA8IE5BUkdTLzI7IGkrKykgewkJCQlcDQogICAgY29uc3Qg
aW50IHggPSBpLCB5ID0gTkFSR1MgLSBpIC0gMTsJCQkJXA0KICAgIFNXQVAo
YXJnc1t4XSwgYXJnc1t5XSk7CQkJCQlcDQogICAgU1dBUChjYWxsLmNhbGxz
aXplW3hdLCBjYWxsLmNhbGxzaXplW3ldKTsJCQlcDQogICAgU1dBUChjYWxs
LmNhbGx0eXBlW3hdLCBjYWxsLmNhbGx0eXBlW3ldKTsJCQlcDQogIH0JCQkJ
CQkJCVwNCiAgY2FsbC5hcmdzaXplID0gczsJCQkJCQlcDQogIHN5c2RlcENh
bGxNZXRob2QoJmNhbGwpOwkJCQkJXA0KICBwcmludF9qdmFsdWUoInJldHVy
bnM6ICIsICZyZXQsIGNhbGwucmV0dHlwZSk7CQlcDQogIGlmIChjYWxsLnJl
dHR5cGUgIT0gJ1YnICYmICFSRVRWQUxfT0tfIyNSRVRUWVBFKHJldCwgUkVU
VkFMKSkJXA0KICAgIGFib3J0KCk7CQkJCQkJCVwNCiAgcHJpbnRmKCJcbiIp
OwkJCQkJCQlcDQp9IHdoaWxlICgwKQ0KDQojZGVmaW5lIENBTExfRElSRUNU
X0VYUEFORF8wKC4uLikJCS8qIG5vdGhpbmcgKi8NCiNkZWZpbmUgQ0FMTF9E
SVJFQ1RfRVhQQU5EXzEoVFlQRSwgVkFMKQkJVkFMDQojZGVmaW5lIENBTExf
RElSRUNUX0VYUEFORF8yKFRZUEUsIFZBTCwgLi4uKQlWQUwsIENBTExfRElS
RUNUX0VYUEFORF8xKF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJUkVD
VF9FWFBBTkRfMyhUWVBFLCBWQUwsIC4uLikJVkFMLCBDQUxMX0RJUkVDVF9F
WFBBTkRfMihfX1ZBX0FSR1NfXykNCiNkZWZpbmUgQ0FMTF9ESVJFQ1RfRVhQ
QU5EXzQoVFlQRSwgVkFMLCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1RfRVhQQU5E
XzMoX19WQV9BUkdTX18pDQojZGVmaW5lIENBTExfRElSRUNUX0VYUEFORF81
KFRZUEUsIFZBTCwgLi4uKQlWQUwsIENBTExfRElSRUNUX0VYUEFORF80KF9f
VkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJUkVDVF9FWFBBTkRfNihUWVBF
LCBWQUwsIC4uLikJVkFMLCBDQUxMX0RJUkVDVF9FWFBBTkRfNShfX1ZBX0FS
R1NfXykNCiNkZWZpbmUgQ0FMTF9ESVJFQ1RfRVhQQU5EXzcoVFlQRSwgVkFM
LCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1RfRVhQQU5EXzYoX19WQV9BUkdTX18p
DQojZGVmaW5lIENBTExfRElSRUNUX0VYUEFORF84KFRZUEUsIFZBTCwgLi4u
KQlWQUwsIENBTExfRElSRUNUX0VYUEFORF83KF9fVkFfQVJHU19fKQ0KI2Rl
ZmluZSBDQUxMX0RJUkVDVF9FWFBBTkRfOShUWVBFLCBWQUwsIC4uLikJVkFM
LCBDQUxMX0RJUkVDVF9FWFBBTkRfOChfX1ZBX0FSR1NfXykNCiNkZWZpbmUg
Q0FMTF9ESVJFQ1RfRVhQQU5EXzEwKFRZUEUsIFZBTCwgLi4uKQlWQUwsIENB
TExfRElSRUNUX0VYUEFORF85KF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxM
X0RJUkVDVF9FWFBBTkRfMTEoVFlQRSwgVkFMLCAuLi4pCVZBTCwgQ0FMTF9E
SVJFQ1RfRVhQQU5EXzEwKF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJ
UkVDVF9FWFBBTkRfMTIoVFlQRSwgVkFMLCAuLi4pCVZBTCwgQ0FMTF9ESVJF
Q1RfRVhQQU5EXzExKF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJUkVD
VF9FWFBBTkRfMTMoVFlQRSwgVkFMLCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1Rf
RVhQQU5EXzEyKF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJUkVDVF9F
WFBBTkRfMTQoVFlQRSwgVkFMLCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1RfRVhQ
QU5EXzEzKF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJUkVDVF9FWFBB
TkRfMTUoVFlQRSwgVkFMLCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1RfRVhQQU5E
XzE0KF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJUkVDVF9FWFBBTkRf
MTYoVFlQRSwgVkFMLCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1RfRVhQQU5EXzE1
KF9fVkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJUkVDVF9FWFBBTkRfMTco
VFlQRSwgVkFMLCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1RfRVhQQU5EXzE2KF9f
VkFfQVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJUkVDVF9FWFBBTkRfMTgoVFlQ
RSwgVkFMLCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1RfRVhQQU5EXzE3KF9fVkFf
QVJHU19fKQ0KI2RlZmluZSBDQUxMX0RJUkVDVF9FWFBBTkRfMTkoVFlQRSwg
VkFMLCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1RfRVhQQU5EXzE4KF9fVkFfQVJH
U19fKQ0KI2RlZmluZSBDQUxMX0RJUkVDVF9FWFBBTkRfMjAoVFlQRSwgVkFM
LCAuLi4pCVZBTCwgQ0FMTF9ESVJFQ1RfRVhQQU5EXzE5KF9fVkFfQVJHU19f
KQ0KI2RlZmluZSBDQUxMX0RJUkVDVF9BUkdTKE5BUkdTLCAuLi4pCQlDQUxM
X0RJUkVDVF9FWFBBTkRfIyNOQVJHUyhfX1ZBX0FSR1NfXykNCg0KI2RlZmlu
ZSBDQUxMX0RJUkVDVF9SRVRfdihSRVRWQUwsIFRZUEUsIEZVTkMpCUZVTkMN
CiNkZWZpbmUgQ0FMTF9ESVJFQ1RfUkVUX3goUkVUVkFMLCBUWVBFLCBGVU5D
KQlSRVRWQUwuVFlQRSA9IEZVTkMNCiNkZWZpbmUgQ0FMTF9ESVJFQ1RfUkVU
X2MJCQlDQUxMX0RJUkVDVF9SRVRfeA0KI2RlZmluZSBDQUxMX0RJUkVDVF9S
RVRfcwkJCUNBTExfRElSRUNUX1JFVF94DQojZGVmaW5lIENBTExfRElSRUNU
X1JFVF9pCQkJQ0FMTF9ESVJFQ1RfUkVUX3gNCiNkZWZpbmUgQ0FMTF9ESVJF
Q1RfUkVUX2oJCQlDQUxMX0RJUkVDVF9SRVRfeA0KI2RlZmluZSBDQUxMX0RJ
UkVDVF9SRVRfZgkJCUNBTExfRElSRUNUX1JFVF94DQojZGVmaW5lIENBTExf
RElSRUNUX1JFVF9kCQkJQ0FMTF9ESVJFQ1RfUkVUX3gNCg0KI2RlZmluZSBE
T19DQUxMX0RJUkVDVChGVU5DLCBSRVRWQUwsIFJFVFRZUEUsIE5BUkdTLCAu
Li4pIFwNCiAgQ0FMTF9ESVJFQ1RfUkVUXyMjUkVUVFlQRShSRVRWQUwsIFJF
VFRZUEUsIEZVTkMpKENBTExfRElSRUNUX0FSR1MoTkFSR1MsIF9fVkFfQVJH
U19fKSkNCg0KI2RlZmluZSBDQUxMX0RJUkVDVChGVU5DLCBSRVRUWVBFLCBS
RVRWQUwsIE5BUkdTLCAuLi4pIGRvIHsJCVwNCiAganZhbHVlIHJldHZhbDsJ
CQkJCQkJXA0KICBjaGFyIHJldHR5cGUgPSBKVFlQRUNIQVIoUkVUVFlQRSk7
CQkJCQlcDQogIERPX0NBTExfRElSRUNUKEZVTkMsIHJldHZhbCwgUkVUVFlQ
RSwgTkFSR1MsIF9fVkFfQVJHU19fKTsJCVwNCiAgcHJpbnRfanZhbHVlKCJy
ZXR1cm5zOiAiLCAmcmV0dmFsLCByZXR0eXBlKTsJCQkJXA0KICBwcmludGYo
IlxuIik7CQkJCQkJCQlcDQp9IHdoaWxlICgwKQ0KDQojZGVmaW5lIENBTEwo
RlVOQywgUkVUVFlQRSwgUkVUVkFMLCBOQVJHUywgLi4uKQkJICAgICAgCQlc
DQogIHByaW50ZigiIyAlczogJXMgPT4gJXNcbiIsICNGVU5DLCAjX19WQV9B
UkdTX18sICNSRVRUWVBFKTsJCVwNCiAgQ0FMTF9ESVJFQ1QoRlVOQywgUkVU
VFlQRSwgUkVUVkFMLCBOQVJHUywgX19WQV9BUkdTX18pOwkJXA0KICBDQUxM
X0lOVk9LRShGVU5DLCBSRVRUWVBFLCBSRVRWQUwsIE5BUkdTLCBfX1ZBX0FS
R1NfXyk7CQlcDQogIHByaW50ZigiXG4iKTsNCiAgDQoNCnN0YXRpYyB2b2lk
IGZfdl92KHZvaWQpDQp7DQp9DQoNCnN0YXRpYyB2b2lkIGZfdl9pKGppbnQg
aSkNCnsNCiAgcHJpbnRmKCIlZFxuIiwgaSk7DQp9DQoNCnN0YXRpYyB2b2lk
IGZfdl9paihqaW50IGksIGpsb25nIGopDQp7DQogIHByaW50ZigiJWQsICVs
bGRcbiIsIGksIGopOw0KfQ0KDQpzdGF0aWMgdm9pZCBmX3ZfY2lqKGpjaGFy
IGMsIGppbnQgaSwgamxvbmcgaikNCnsNCiAgcHJpbnRmKCIlYywgJWQsICVs
bGRcbiIsIGMsIGksIGopOw0KfQ0KDQpzdGF0aWMgdm9pZCBmX3ZfY3NpamZk
KGpjaGFyIGMsIGpzaG9ydCBzLCBqaW50IGksIGpsb25nIGosIGpmbG9hdCBm
LCBqZG91YmxlIGQpDQp7DQogIHByaW50ZigiJWMsICVkLCAlZCwgJWxsZCwg
JWYsICVsZlxuIiwgYywgcywgaSwgaiwgZiwgZCk7DQp9DQoNCnN0YXRpYyB2
b2lkIGZfdl9mZmZmZmZmZmZmZmZmZmZmKGpmbG9hdCBwMSwgamZsb2F0IHAy
LCBqZmxvYXQgcDMsIGpmbG9hdCBwNCwNCgkJCQkJCQkJIGpmbG9hdCBwNSwg
amZsb2F0IHA2LCBqZmxvYXQgcDcsIGpmbG9hdCBwOCwNCgkJCQkJCQkJIGpm
bG9hdCBwOSwgamZsb2F0IHAxMCwgamZsb2F0IHAxMSwgamZsb2F0IHAxMiwN
CgkJCQkJCQkJIGpmbG9hdCBwMTMsIGpmbG9hdCBwMTQsIGpmbG9hdCBwMTUs
IGpmbG9hdCBwMTYpDQp7DQogIHByaW50ZigiJWYsICVmLCAlZiwgJWYsICVm
LCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWZc
biIsDQoJCSBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBw
MTAsIHAxMSwgcDEyLCBwMTMsIHAxNCwgcDE1LCBwMTYpOw0KfQ0KDQpzdGF0
aWMgdm9pZCBmX3ZfaWlpaWlpaWlpaShqaW50IHAxLCBqaW50IHAyLCBqaW50
IHAzLCBqaW50IHA0LCBqaW50IHA1LA0KCQkJICAgamludCBwNiwgamludCBw
NywgamludCBwOCwgamludCBwOSwgamludCBwMTApDQp7DQogIHByaW50Zigi
JWQsICVkLCAlZCwgJWQsICVkLCAlZCwgJWQsICVkLCAlZCwgJWRcbiIsDQoJ
IHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCk7DQp9
DQoNCnN0YXRpYyB2b2lkIGZfdl9maWRqZmZpamRkamppaWRmZChqZmxvYXQg
cDEsIGppbnQgcDIsIGpkb3VibGUgcDMsIGpsb25nIHA0LCBqZmxvYXQgcDUs
DQoJCQkJICBqZmxvYXQgcDYsIGppbnQgcDcsIGpsb25nIHA4LCBqZG91Ymxl
IHA5LCBqZG91YmxlIHAxMCwNCgkJCQkgIGpsb25nIHAxMSwgamxvbmcgcDEy
LCBqaW50IHAxMywgamludCBwMTQsIGpkb3VibGUgcDE1LA0KCQkJCSAgamZs
b2F0IHAxNiwgamRvdWJsZSBwMTcpDQp7DQogIHByaW50ZigiJWYsICVkLCAl
bGYsICVsbGQsICVmLCAlZiwgJWQsICVsbGQsICVsZiwgJWxmLCAlbGxkLCAl
bGxkLCAlZCwgJWQsICVsZiwgJWYsICVsZlxuIiwNCgkgcDEsIHAyLCBwMywg
cDQsIHA1LCBwNiwgcDcsIHA4LCBwOSwgcDEwLCBwMTEsIHAxMiwgcDEzLCBw
MTQsIHAxNSwgcDE2LCBwMTcpOw0KfQ0KDQpzdGF0aWMgamNoYXIgZl9jX2Mo
amNoYXIgYykNCnsNCiAgcHJpbnRmKCIlY1xuIiwgYyk7DQogIHJldHVybiBj
ICsgJ0EnIC0gJ2EnOw0KfQ0KDQpzdGF0aWMganNob3J0IGZfc19paShqaW50
IHgsIGppbnQgeSkNCnsNCiAgcHJpbnRmKCIlZCwgJWRcbiIsIHgsIHkpOw0K
ICByZXR1cm4geCArIHk7DQp9DQoNCnN0YXRpYyBqaW50IGFkZF8yaShqaW50
IHAxLCBqaW50IHAyKQ0Kew0KICBwcmludGYoIiVkLCAlZFxuIiwgcDEsIHAy
KTsNCiAgcmV0dXJuIHAxICsgcDI7DQp9DQoNCnN0YXRpYyBqbG9uZyBhZGRf
MmooamxvbmcgcDEsIGpsb25nIHAyKQ0Kew0KICBwcmludGYoIiVsbGQsICVs
bGRcbiIsIHAxLCBwMik7DQogIHJldHVybiBwMSArIHAyOw0KfQ0KDQpzdGF0
aWMgamludCBhZGRfMTJpKGppbnQgcDEsIGppbnQgcDIsIGppbnQgcDMsIGpp
bnQgcDQsDQoJCSAgIGppbnQgcDUsIGppbnQgcDYsIGppbnQgcDcsIGppbnQg
cDgsDQoJCSAgIGppbnQgcDksIGppbnQgcDEwLCBqaW50IHAxMSwgamludCBw
MTIpDQp7DQogIHJldHVybiBwMSArIHAyICsgcDMgKyBwNCArIHA1ICsgcDYg
KyBwNyArIHA4ICsgcDkgKyBwMTAgKyBwMTEgKyBwMTI7DQp9DQoNCnN0YXRp
YyBqZmxvYXQgYWRkXzJmKGpmbG9hdCBwMSwgamZsb2F0IHAyKQ0Kew0KICBy
ZXR1cm4gcDEgKyBwMjsNCn0NCg0Kc3RhdGljIGpmbG9hdCBhZGRfMTBmKGpm
bG9hdCBwMSwgamZsb2F0IHAyLCBqZmxvYXQgcDMsIGpmbG9hdCBwNCwgamZs
b2F0IHA1LA0KCQkgICAgIGpmbG9hdCBwNiwgamZsb2F0IHA3LCBqZmxvYXQg
cDgsIGpmbG9hdCBwOSwgamZsb2F0IHAxMCkgew0KICByZXR1cm4gcDEgKyBw
MiArIHAzICsgcDQgKyBwNSArIHA2ICsgcDcgKyBwOCArIHA5ICsgcDEwOw0K
fQ0KDQpzdGF0aWMgamRvdWJsZSBhZGRfMTBkKGpkb3VibGUgcDEsIGpkb3Vi
bGUgcDIsIGpkb3VibGUgcDMsIGpkb3VibGUgcDQsIGpkb3VibGUgcDUsDQoJ
CSAgICAgIGpkb3VibGUgcDYsIGpkb3VibGUgcDcsIGpkb3VibGUgcDgsIGpk
b3VibGUgcDksIGpkb3VibGUgcDEwKSB7DQogIHJldHVybiBwMSArIHAyICsg
cDMgKyBwNCArIHA1ICsgcDYgKyBwNyArIHA4ICsgcDkgKyBwMTA7DQp9DQoN
CnN0YXRpYyBqZmxvYXQgYWRkXzIwZihqZmxvYXQgcDEsIGpmbG9hdCBwMiwg
amZsb2F0IHAzLCBqZmxvYXQgcDQsIGpmbG9hdCBwNSwNCgkJICAgICBqZmxv
YXQgcDYsIGpmbG9hdCBwNywgamZsb2F0IHA4LCBqZmxvYXQgcDksIGpmbG9h
dCBwMTAsDQoJCSAgICAgamZsb2F0IHAxMSwgamZsb2F0IHAxMiwgamZsb2F0
IHAxMywgamZsb2F0IHAxNCwgamZsb2F0IHAxNSwNCgkJICAgICBqZmxvYXQg
cDE2LCBqZmxvYXQgcDE3LCBqZmxvYXQgcDE4LCBqZmxvYXQgcDE5LCBqZmxv
YXQgcDIwKQ0Kew0KICByZXR1cm4gcDEgKyBwMiArIHAzICsgcDQgKyBwNSAr
IHA2ICsgcDcgKyBwOCArIHA5ICsgcDEwICsgcDExICsgcDEyICsgcDEzICsN
CiAgICBwMTQgKyBwMTUgKyBwMTYgKyBwMTcgKyBwMTggKyBwMTkgKyBwMjA7
DQp9DQoNCnN0YXRpYyBqbG9uZyBhZGRfamlqaWlqaWlqaShqbG9uZyBwMSwg
amludCBwMiwgamxvbmcgcDMsIGppbnQgcDQsIGppbnQgcDUsDQoJCQkgICAg
amxvbmcgcDYsIGppbnQgcDcsIGppbnQgcDgsIGpsb25nIHA5LCBqaW50IHAx
MCkNCnsNCiAgcmV0dXJuIHAxICsgcDIgKyBwMyArIHA0ICsgcDUgKyBwNiAr
IHA3ICsgcDggKyBwOSArIHAxMDsNCn0NCg0Kc3RhdGljIGpsb25nIGFkZF9p
amlqamlqamlqKGppbnQgcDEsIGpsb25nIHAyLCBqaW50IHAzLCBqbG9uZyBw
NCwgamxvbmcgcDUsDQoJCQkgICAgamludCBwNiwgamxvbmcgcDcsIGpsb25n
IHA4LCBqaW50IHA5LCBqbG9uZyBwMTApDQp7DQogIHJldHVybiBwMSArIHAy
ICsgcDMgKyBwNCArIHA1ICsgcDYgKyBwNyArIHA4ICsgcDkgKyBwMTA7DQp9
DQoNCnN0YXRpYyBqZG91YmxlIGFkZF9mZmRkZmZkZGZkZihqZmxvYXQgcDEs
IGpmbG9hdCBwMiwgamRvdWJsZSBwMywgamRvdWJsZSBwNCwNCgkJCSAgICAg
ICBqZmxvYXQgcDUsIGpmbG9hdCBwNiwgamRvdWJsZSBwNywgamRvdWJsZSBw
OCwNCgkJCSAgICAgICBqZmxvYXQgcDksIGpkb3VibGUgcDEwLCBqZmxvYXQg
cDExKQ0Kew0KICByZXR1cm4gcDEgKyBwMiArIHAzICsgcDQgKyBwNSArIHA2
ICsgcDcgKyBwOCArIHA5ICsgcDEwICsgcDExOw0KfQ0KDQpzdGF0aWMgamlu
dCBhZGRfZmlkamZmaWpkZGpqaWlkZmQoamZsb2F0IHAxLCBqaW50IHAyLCBq
ZG91YmxlIHAzLCBqbG9uZyBwNCwgamZsb2F0IHA1LA0KCQkJCSAgamZsb2F0
IHA2LCBqaW50IHA3LCBqbG9uZyBwOCwgamRvdWJsZSBwOSwgamRvdWJsZSBw
MTAsDQoJCQkJICBqbG9uZyBwMTEsIGpsb25nIHAxMiwgamludCBwMTMsIGpp
bnQgcDE0LCBqZG91YmxlIHAxNSwNCgkJCQkgIGpmbG9hdCBwMTYsIGpkb3Vi
bGUgcDE3KQ0Kew0KICByZXR1cm4gcDEgKyBwMiArIHAzICsgcDQgKyBwNSAr
IHA2ICsgcDcgKyBwOCArIHA5DQogICAgKyBwMTAgKyBwMTEgKyBwMTIgKyBw
MTMgKyBwMTQgKyBwMTUgKyBwMTYgKyBwMTc7DQp9DQoNCmludCBtYWluKHZv
aWQpIHsNCiAgQ0FMTChmX3ZfdiwgdiwgMCwgMCk7DQogIENBTEwoZl92X2ks
IHYsIDAsIDEsIGksIDEpOw0KICBDQUxMKGZfdl9paiwgdiwgMCwgMiwgaSwg
MSwgaiwgMik7DQogIENBTEwoZl92X2NpaiwgdiwgMCwgMywgYywgJ2MnLCBp
LCAxLCBqLCAyKTsNCiAgQ0FMTChmX3ZfY3NpamZkLCB2LCAwLCA2LCBjLCAn
YycsIHMsIDE2Mzg0LCBpLCAxMDczNzQxODIzLCBqLCA0NjExNjg2MDE4NDI3
Mzg3OTAzLCBmLCAxLjAsIGQsIDMuMTQpOw0KICBDQUxMKGZfY19jLCBjLCAn
WicsIDEsIGMsICd6Jyk7DQogIENBTEwoZl9zX2lpLCBzLCAzLCAyLCBpLCAx
LCBpLCAyKTsNCg0KICAvLyBwcmludCBtYW55IGludHMNCiAgQ0FMTChmX3Zf
aWlpaWlpaWlpaSwNCiAgICAgICB2LCAwLA0KICAgICAgIDEwLA0KICAgICAg
IGksIDEsIGksIDIsIGksIDMsIGksIDQsIGksIDUsIGksIDYsIGksIDcsIGks
IDgsIGksIDksIGksIDEwKTsNCg0KICAvLyBwcmludCBtYW55IGZsb2F0cw0K
ICBDQUxMKGZfdl9mZmZmZmZmZmZmZmZmZmZmLA0KICAgICAgIHYsIDAsDQog
ICAgICAgMTYsDQogICAgICAgZiwgRkxUX01JTiwgZiwgRkxUX01BWCwgZiwg
TV9FLCBmLCBNX0xPRzJFLCBmLCBNX0xPRzEwRSwNCiAgICAgICBmLCBNX0xO
MiwgZiwgTV9MTjEwLCBmLCBNX1BJLCBmLCBNX1BJXzIsIGYsIE1fUElfNCwN
CiAgICAgICBmLCBNXzFfUEksIGYsIE1fUElfMiwgZiwgRkxUX01JTiwgZiwg
RkxUX01BWCwNCiAgICAgICBmLCBNX1NRUlQyLCBmLCBNX1NRUlQxXzIpOw0K
DQogIC8vIHByaW50IG1peGVkIGZsb2F0cywgZG91YmxlcywgaW50cyBhbmQg
bG9uZ3MNCiAgQ0FMTChmX3ZfZmlkamZmaWpkZGpqaWlkZmQsDQogICAgICAg
diwgMCwNCiAgICAgICAxNywNCiAgICAgICBmLCAxLCBpLCAyLCBkLCAzLCBq
LCA0LCBmLCA1LCBmLCA2LCBpLCA3LCBqLCA4LCBkLCA5LA0KICAgICAgIGQs
IDEwLCBqLCAxMSwgaiwgMTIsIGksIDEzLCBpLCAxNCwgZCwgMTUsIGYsIDE2
LCBkLCAxNyk7DQoNCiAgLy8gYWRkIHR3byBpbnRzDQogIENBTEwoYWRkXzJp
LCBpLCAzLCAyLCBpLCAxLCBpLCAyKTsNCg0KICAvLyBhZGQgdHdvIGxvbmdz
DQogIENBTEwoYWRkXzJqLCBqLCAzLCAyLCBqLCAxLCBqLCAyKTsNCg0KICAv
LyBhZGQgbWFueSBpbnRzDQogIENBTEwoYWRkXzEyaSwgaSwgNzgsIDEyLCBp
LCAxLCBpLCAyLCBpLCAzLCBpLCA0LCBpLCA1LCBpLCA2LCBpLCA3LCBpLCA4
LCBpLCA5LCBpLCAxMCwgaSwgMTEsIGksIDEyKTsNCg0KICAvLyBhZGQgdHdv
IGZsb2F0cw0KICBDQUxMKGFkZF8yZiwgZiwgMy4wLCAyLCBmLCAxLjAsIGYs
IDIuMCk7DQoNCiAgLy8gYWRkIG1hbnkgZmxvYXRzDQogIENBTEwoYWRkXzEw
ZiwNCiAgICAgICBmLCA1NS4wLA0KICAgICAgIDEwLA0KICAgICAgIGYsIDEs
IGYsIDIsIGYsIDMsIGYsIDQsIGYsIDUsIGYsIDYsIGYsIDcsIGYsIDgsIGYs
IDksIGYsIDEwKTsNCg0KICAvLyBhZGQgbWFueSBkb3VibGVzDQogIENBTEwo
YWRkXzEwZCwNCiAgICAgICBkLCA1NSwNCiAgICAgICAxMCwNCiAgICAgICBk
LCAxLCBkLCAyLCBkLCAzLCBkLCA0LCBkLCA1LCBkLCA2LCBkLCA3LCBkLCA4
LCBkLCA5LCBkLCAxMCk7DQoNCiAgLy8gYWRkIG1hbnkgbWFueSBmbG9hdHMN
CiAgQ0FMTChhZGRfMjBmLA0KICAgICAgIGYsIDIxMCwNCiAgICAgICAyMCwN
CiAgICAgICBmLCAxLCBmLCAyLCBmLCAzLCBmLCA0LCBmLCA1LCBmLCA2LCBm
LCA3LCBmLCA4LCBmLCA5LCBmLCAxMCwNCiAgICAgICBmLCAxMSwgZiwgMTIs
IGYsIDEzLCBmLCAxNCwgZiwgMTUsIGYsIDE2LCBmLCAxNywgZiwgMTgsIGYs
IDE5LCBmLCAyMCk7DQoNCiAgLy8gYWRkIG1peGVkIGludHMNCiAgQ0FMTChh
ZGRfamlqaWlqaWlqaSwNCiAgICAgICBqLCA1NSwNCiAgICAgICAxMCwNCiAg
ICAgICBqLCAxLCBpLCAyLCBqLCAzLCBpLCA0LCBpLCA1LCBqLCA2LCBpLCA3
LCBpLCA4LCBqLCA5LCBpLCAxMCk7DQoNCiAgLy8gYWRkIG1peGVkIGludHMg
Mg0KICBDQUxMKGFkZF9pamlqamlqamlqLA0KICAgICAgIGosIDU1LA0KICAg
ICAgIDEwLA0KICAgICAgIGksIDEsIGosIDIsIGksIDMsIGosIDQsIGosIDUs
IGksIDYsIGosIDcsIGosIDgsIGksIDksIGosIDEwKTsNCg0KICAvLyBhZGQg
bWl4ZWQgZmxvYXRzDQogIENBTEwoYWRkX2ZmZGRmZmRkZmRmLA0KICAgICAg
IGQsIDY2LA0KICAgICAgIDExLA0KICAgICAgIGYsIDEsIGYsIDIsIGQsIDMs
IGQsIDQsIGYsIDUsIGYsIDYsIGQsIDcsIGQsIDgsIGYsIDksIGQsIDEwLCBm
LCAxMSk7DQoNCiAgLy8gYWRkIG1peGVkIGZsb2F0cywgZG91YmxlcywgaW50
cyBhbmQgbG9uZ3MNCiAgQ0FMTChhZGRfZmlkamZmaWpkZGpqaWlkZmQsDQog
ICAgICAgaSwgMTUzLA0KICAgICAgIDE3LA0KICAgICAgIGYsIDEsIGksIDIs
IGQsIDMsIGosIDQsIGYsIDUsIGYsIDYsIGksIDcsIGosIDgsIGQsIDksDQog
ICAgICAgZCwgMTAsIGosIDExLCBqLCAxMiwgaSwgMTMsIGksIDE0LCBkLCAx
NSwgZiwgMTYsIGQsIDE3KTsNCn0NCg==
---1463777692-1049142873-1053959458=:15107--