[kaffe] updated ARM Patch, and portability woes

Dalibor Topic robilad@yahoo.com
Thu, 22 Aug 2002 03:58:02 -0700 (PDT)


--0-2053099146-1030013882=:52945
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,

here's an updated version of the ARM patch. It allows
the interpreter to run (ie. to make rt.jar using kjc)
again on the skiff cluster (ipaqs). Jit is still
broken though.

This patch fixes compile problems, and the interpreter
on ipaqs. Compiling the interpreter with -O0
(convenient for gdb) now also gives you a working
interpreter.

The interesting changes are in common.h, where the
first change is necessary to get interpreter working
when compiled with -O0. It checks if the last default
parameter has size 2, and copies its first part into
correct position.

The second change special cases returning references:
interpreter would fail because references were somehow
 broken upon return.

I'd really like to see someone who understands the ARM
platform to take a look at it. I haven't got an ARM,
and have no idea about its calling conventions,
signedness issues etc.

If someone wants to fix the remaining bugs with the
interpreter: you want to take a look at what's
happening when doubles are passed as parameters:
something is very wrong there according to
DoubleComp.java regression test. The long bits that
represent a NaN are returned as 0, and that seems
quite weird. 

I believe that's due to doubleToLong in
kaffe/kaffevm/fp.c using jvalue to convert the bit
pattern of a double into a long. As jvalue is a union,
the C standard says that you can only safely read back
from a union the type that you've written to it, and
long and double are not the same type, so we get
undefined behaviour. I assume that's also the reason
why common.h return value failed for the interpreter.

The interpreter still has various bugs: it will
apparently happily hang itself on a couple of tests.
:)

During the compilation of the interpreter I got a lot
of interesting warnings from gcc 3.0 ( I compiled with
*all* warnings enabled, not just -Wall). I've attached
them for reference and inspiration. If someone would
like to attempt to fix them, I'd be more than happy to
merge the changes in. The warnings are a condensed
form of the original warnings, created with grep
warning | sort | uniq .

best regards,

dalibor topic

__________________________________________________
Do You Yahoo!?
HotJobs - Search Thousands of New Jobs
http://www.hotjobs.com
--0-2053099146-1030013882=:52945
Content-Type: application/octet-stream; name="arm.diff"
Content-Transfer-Encoding: base64
Content-Description: arm.diff
Content-Disposition: attachment; filename="arm.diff"

SW5kZXg6IGNvbmZpZy9hcm0vY29tbW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9rYWZmZS9rYWZmZS9jb25maWcvYXJtL2Nv
bW1vbi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcjEuNSBj
b21tb24uaAo0M2M0Myw0NQo8ICAgICAgIGlmICgoQ0FMTCktPmNhbGxzaXpl
WzNdID09IDIpIGFyZ3MrKzsJCQkJXAotLS0KPiAgICAgICBpZiAoKENBTEwp
LT5jYWxsc2l6ZVszXSA9PSAyKSB7CQkJCQlcCj4gCSphcmdzKysgPSAoKENB
TEwpLT5hcmdzW2FyZ2lkeF0uaikgPj4gMzI7CQkJXAo+IAl9CQkJCQkJCQlc
CjkwYTkzLDk1Cj4gCWJyZWFrOwkJCQkJCQkJXAo+ICAgICBjYXNlICdMJzoJ
CQkJCQkJCVwKPiAJKENBTEwpLT5yZXQtPmwgPSByMDsJCQkJCQlcCkluZGV4
OiBjb25maWcvYXJtL2xpbnV4L21kLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9rYWZmZS9rYWZmZS9jb25maWcvYXJtL2xpbnV4
L21kLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1yMS4yIG1k
LmMKMTNhMTQKPiAjaW5jbHVkZSA8c2NoZWQuaD4KSW5kZXg6IGthZmZlL2th
ZmZldm0vaml0L21hY2hpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL2thZmZlL2thZmZlL2thZmZlL2thZmZldm0vaml0L21h
Y2hpbmUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNgpkaWZmIC1yMS4x
NiBtYWNoaW5lLmgKODBjODAKPCAgIGdldEZpZWxkKChjb25zdEluZGV4KShJ
RFgpLCB4bWV0aC0+Y2xhc3MsIHRydWUsICZmaW5mbywgZWluZm8pCi0tLQo+
ICAgZ2V0RmllbGQoKGNvbnN0SW5kZXgpKElEWCksIG1ldGgtPmNsYXNzLCB0
cnVlLCAmZmluZm8sIGVpbmZvKQo=

--0-2053099146-1030013882=:52945
Content-Type: application/octet-stream; name="gcc-warnings-uniq-arm.bz2"
Content-Transfer-Encoding: base64
Content-Description: gcc-warnings-uniq-arm.bz2
Content-Disposition: attachment; filename="gcc-warnings-uniq-arm.bz2"

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
vqrg5hb5CahjAsqi2qum2rctU1SBZqxtKbRpGUnS2+XVea23yhhUyqV30GpV
ySqM4d0Oyk0JdbVRwiQW1KtWq4TYOV31VspOVKu99U+0P5X23+h+3/o6/2Zj
/B+1ru9njl3y+H1JH7Q6B+4OUm/E/B4SBmC+xTj/3uj2/Q9Hwema8HWQjp4H
TemxnOc5NcKZwxkfftVAa/Sp6DPvvvpXMb84KJPeYSChn/1CqHDnP8vNK9LL
RepBuT+vuaV/1a4qr3NVk+rA++1xHR/uvZk/a5780V1X1/zvfvBl/aPnxVbk
ruvIG3Dv3EZ/T5Q51WJbrAiad5DuT7Jxjdn58YiMYnnPncZXkv+yTCTySe3w
T5rW5PUkJLkkn1Jcmfa75JqSSSaduSKuaOakVpfspWoTa01iX7CSS/kpLH+G
Gyy+ptpKSVJ38ou5JckkySSckkkkn19j461qSTtW5d2sirpu5PqTqTJPzSWb
+vuP3Mz7Sb9avLq4AAAAAAey1e3nAAQd3QF+Z3EAPfue3dAAAAABbxqqiH54
kr7vSVR1H4+d/dMvvT4VuQyd+/rwtJ9Tlm+8Og7TwH0+eeRPt+z9d3fy3jN7
vq69Uf5LSZIHvYfO8kPzfm/XkreT8klsVuHOp7+ch4v4Pmjf6b5Mbknkn5ZP
klyevLuSdznn6PVH1/s/LzHuH9/WZcnkkkhJ5Jr7/fM6k/tk5J9fpP7fzV6O
Hg+2ivYn6x8CENJET0xfaeqdgIgUGHt8mFe0J39gv8BEepkBITWECGbcPkOs
tfymaHjD5/jX9B9uxzLeBsUVKNpilTdmEtXfIvLskBixDgbXuWdwV5TkNRBy
M913gS4yxEdgcHq7sMAAR5MAQAw824OBAzW/FnrmqqqmxhJBGCReXZayEWVa
hSAvT1111zXRF33c6jw6vY5479NNaaWtWr6q+i1hfP56S2irG7ITsdHRs9S5
dPKcpjU5E8uO7j2M9eHo/kr5weo7ZFnbmSmKwuK+hjWvXLi0qPX4zIbvHeN2
zCrNsyWY6uTN73WPGn33y/rn9baHXn3rnEdj0RZesnZta681Ut3x19evp349
tt/cgtAGNAAEIiACIlAABoAAAAKCgDVFQIIlqbRERURERERgggiIiCCDAVtQ
ABKgIzagQAAAALas21pW2lrWwABf07CB2vZw6p6Hm72Pfxzs4m7Fc73ZdPHd
k4/AULEigRi+ShIoFta7ppFAj1CbAu2oVbjn2POc7dm9wsRREzkP03nBMCEI
fEuxAbvQQcRPfy4GJaGCBAfmGQXQoEQfpQRFwJHiRG+HwdTFCutzlCIHiMOx
M941jBs2PhFDJE2MoT4CotY6sR7/LG5Q/F1o2RMDmEmSycLHz7aN72bL9k9b
rNErXvmGmVw2SQ3oQOz56KGXuT8YhDLCEDQHkdxIkW4hGYEyMMBUIgWPmBgT
UyMkd4J4NFLB4wO1FxlSJYofhjtjgGEMgZdTVCN9A6BdiIp+hDVEZPe6XRcJ
Y6M0aPtuVoxIZnDT99YcdxI2CmkkW5owFdQ0giT4vA7gLmjzNGbIcLjPtPK+
eE5itazeH16KhyrMzM57coT634gkUMAQlhBifl0KzxqjtiA6DwpmHOy0uJDV
w2Zqy0khw1BLXRZYjBDh04nLsQNku0Q7UHHWTDLnldSe7Q65F2j2MPLhlWig
Xbqw82KmYMuE4eoE0OTTUKsyUKLuPNVBl+x47Fd5kYHd5jmu5mgREF56byry
NNhEeNEDTcjnuQI6ZDE7xOiX8RkWIbJeB4ufOOWLvyfxyoBHV9RXLAnzoRpd
iKf0p/akKEvg4L/QQKUf1sQbWG/wX42ywvigc9aww4kOb1ZwTZ9/f3LNmjOr
7PoL0KKYns1ARM+ZD0mG4v1ZxNN6js3vqBrkgyrCu7E+/kQYN9AUgdafYO6x
W5BVVHK29wIMH2g2QlYIe0mQhHQlVCRbg00IRoq6DthxG8EQOtOJIMU7goM7
4G5hrHCaMo3I/YcrHHqlXpiTvO/yS3p9nNkQITiQRb2IXoqiQQWi7hrFQdfq
kQWbvWNnzNU/kgrC9qCAIx6P2LsfVg2SEQVCDGoCiIzJPWq8O8664KFwvTuN
3EfO53zbcDGn7XIvMWTMs6R6m3f15d56t0YxThXEkwMfmaWJ+YXJDYOD8JSe
OoMFzyGq3A9OJIme0OyrrGxgJEr32hQa2gxrso7zrKDpcD6jsCr7Bfh2jfFj
ct7+IR0PWF12Q+sbTQ1EjB1njgsAl+wiE8jfMvQRBHVygaHo3m43SxUSCIPU
ZQkZMAgiOyHB4e4CIlq6gb0sFyAmgnQ5pzlZOxbEXPuRzHYyjsJFPqMeQ77z
G6A6y78uZraO9vJ8r7BwNViHj5wuYr6lb886qHW4ddbLzfirfeufJx50155X
fmJfiWK65w1htU2cUJ39u98B3ruxwlWvTddinBPSHKSIvT+ldUMoB2gxL+ZD
QYQNj1Dg2xlCvEtfH2wqgz8/VCh9VnYEFtWKFeg/JKWi9KkD8aE0QTT6nh9z
E9Dde2ImhXgvIR19Vlz7p6RMRWTnVghDIaoGThFC5aBA77yQjZHMF9D0F4Ps
cz36t1AuJLYMhYtfgl879qQN0N1v1Cg2Kp0AaO1dmw0PM+/Weptjhu14bQlZ
VWHYWifMJ/lDRVjBplAw+6eW/qLGzh14bt7epM5rK6cK2I4KysrNG6+RZLGv
K7SOXd1sayuVkdTqm/PfOeZNcbtSbn3NzzV1T05Ow6M26RxOvNjfOtwZtLMG
EqEqyBDVaNUZXlDtFDDcpCt6r92tujx04149a2d27NNOl7dV2q2u7UcjBvXG
1Zk1bGVqZYsrZqeVbVlckPjCJPCdGKVSqWqqqySYhiSaSkpMXwtUtbXSkvmt
LpSZKSkpKSkpKSkmMc0PqQ8m6i3JN1XWTJNra18bVLkRRERYiKIiIiIiNqAC
DERERGYxjQttpGMRCRjGIxjGMYxjC21AKbZWIiIxG2lr1on3d9/eq2vW1vQI
IIIittWriZEcRFRk9ydndrPG+f1u/mP1/K/s1r+p+0wKPgCRG6jbglef9x+t
06/eXh/BqMQFxUFu+pRt5hLWGrpzVmlkmEOCEdvP+NMmcLGFwWkeQF9A7BIP
ltE5eVe75eZFxD2xN0gX4EjmgGCRClQYfhj5+9DYxsVNMjTfkZ53oU8DSolt
I3BcoEERdl+FWgkHHRBtCwKNFH2Eb6glkck29Pa7uZxaO06vrGVTG1eg36rw
rI4DjzWLdTpJJLEhKUzERE3ezZIyzbqU9Bs4jV3YrxgkwauFTZd7tBWND3Rg
z17PCeHUN73dbbbdYM3ru6NLZmPapSr4IaMMW13YqOZ3Xc2Xm9673RkVVghp
d27Ml4kjcII5NjRGyrF1WxnzBmYN2O/2hoDflZgDfyVVUemqIle2qqi2sS8+
YHvepoyg9e9E65vLAoq1VA2r0ZvWqOdV8LOdm3nXldYN7N7CMsTmpJlit+cz
NjLDTryR8+t5vgUcaDiVS1SNVRrmetVA52dazhZdnc3ndaaqg6arpoq2ilqq
eshWFygPfNtVPUT10wZggWYBtG9SAsK62hluESNNMGaCGAaiGUrINsHKEu2A
U1O9+gNrAWqFGxCqI1FPWuK1dVz15zSHTQbSmZnBDAX1V1xzeNLsYTu+1b2p
BIzTIDAI0VShRdRMbCztve2Heptu8zHN9MEr+Gn0+BSrhI8N4/sVl3Ps3EJK
ftO7dTc6V3VHroekae9m9znd3dV93CDuaSqZudaYbg6Kyz4ksCgCNZGOmbra
FdYarupzgtgWecFYG9pbuP1Zgq8F+rlySxCGgKQQ5nqbb0Vb5atfXpj9RNlz
PXl+lZkOdu1SEgbfJXZzLDHRU9z3q5kk8eHLOXTfpwf3x3ybWUDyfh0mzF4V
HBlD786sUxNe/kuq1M5vCRm94UbSqI1g0UWT4/Tp3uy7sNnMmGpowSqRqxqq
EQKZJT2NFmd8k3i9He6ycrSFXyUVSQy2Zx6FsxbFeU7wIfJseW2SWaGDghgw
xqiJWt6IlhrqzdxzsYY8vvLysooWvCyPe8QnNUDoeQdB+6nUraSW6DXvX7xK
WhariBGhrSO7ol9QheTSpZq4BpImWQI1Uaq0sQrcy8s4y8s8zAt6q3uBVsBJ
YkMIBaywAcgldVdSVdFTpuO27pqpvj5o1VaDtAOxoC7lVOnQhgVlhAOPrfGF
JUTWitwd81Q4UTM+n1Ep9mGrGxA3rL9m+6rvL7azFmZmYbKzEl22houVgo4e
hzz3n5DPHxHcC44XVeNvLpqginQjaRxjgsB9yfhu2S6SXw94Dw6X2hKIL4UE
muWmro59K+HdVZnYhQm5tKhqWJ4xQUG5KmKtWTXimjRwK68x7JlyCWJajcSl
Ob4Ab1/OG9IYegtADfC3pAooM/B8aD6aPEq2qj7buofh1M/GfZ/CSMK4clVt
C27lWrJyyXCobYBNH41BTYaYyNO/z1+yfipWiitNGnlNEaLh51rVVpp0vt/L
JNe9/GvjQVjVG+pVTvXheeblF1ck9ZxDSqgGWveASXvKBD3iU7kntVZVYGam
mSb5nnNHE6RaLaLYigc5czWsma1p8JTrai7ylC2rNQKUozWFve7K83rS9ebr
jpCICNdpEo7nLxt0d3tiaxzR0XNJiO8G9dQ4aSBxFKpSiINzrSzEEEdZLPHE
UpQ2ladMQhHkS415PzAKg+y7H0+vPmOLrWWepndV3VfVFVuWi7rdLWdMvI7P
sI7l0u9WZmZWYHmEvI0iKm5Z1jCPDBtp5U7abzOs1V4oxzYncMyynnsRlZey
SRBcn472nhhBQ66D2K33erm3h1DZerNrERp0TszLCOBuxbV9xwtV3B2L4gYt
97ZaSRSDHvc0b1JeF83r9X7r+CivlekD0lApT6+Znyab8NDeGX69827flycq
x4rUQhqBaKEmm8DtL0wrNZVjjrMxS70GmjToQq0qzUZi2VlyS4bza9OroF1s
gWNVELvORdHN0TDTciQLL1u3FCraRBH470X5fNb867e9USPTLoHkoIlcadxk
GXYsTfXjKtj2A+wo+EB9j6Kaxrziyd7NnTjoGVKibJG4A6he0zp3GXQsAkQg
CwQwQADvWLqvJaxg4KB2sqZdAjtA0NtYXeSYyQamurTZqsni+nqRKqvrtWPn
8qtwV6Uy2s37dxmrurtTLE2rhbqOj4XeTMvu3d3d3doZhNjrW6NOS+S0KYO9
hitiGhr1S26qUosvuGpa7Og4M1XowwpIpezguGZ6oJ4VQDziaSX3Njlmj6P5
9TNbTIVVm/Ja1dbUpdbc6dvVizlrmS93smU4nyEXS6zLvdVPcMy2BhEkglnN
XSGPGTStuBh8DAM3bMOgPfqzg57h7TMNm0bMAwSCKjaXbJSadbM1WKUjRENp
EtJRqSs2ejMVaNkdSqsfN51mj1rmbHYk3WrJy/eBxXWyFESiNHnb27N26p3v
fDDvU2dLJQvmu5yOQM17LELCAQIICICN7ZnqSqHvJM0ESEAQQCNZys2i/sHf
Nj4AcDouVQpSdudatWaoMw61p000mQFqNCPi61CpRCBRYPffVNxJBge9Xaft
+21rc7czDeb9aWHtaw3KKNY9S52BnlkCZY90WdgNVVSg6onsrbuRWsSrVXR8
EF4cGa4VNN90QrBJNmV3dYwWLuxWCwWqslHNt6braslYtXXC849a2vCxt2ka
7t7LtKVIt6cDcyHs7pqWqtzeG2cvJ5y94dt6rDy90kkkkklK7StJpEkk7Dwq
3raXOwGbvgMlgAtho6cV0H642k4JNuHZySJzV6zTyVPbySt+6s47rSKU63Az
rq8lMHhfsEIJ8QRLxQavqwsWUOOUTlaICQmmT65Y1baFYnj/xeTiW4rKPynY
UEdBsRHlUjVYkUUiXcNpc8bJ1r0WXrgFHxIBR8s/KYPU+GfdVTHk8AsG8Wor
7by9B8L8DAjjAK2ApQeofSE/RpJd9wqp8fm8jzqVsaaM1VJofV0u4Q/e3rRS
pYd2Cuu7vuW7u7t7tLNKSVGu7ExiUzrUqxbWVMPp72gPs41vbpVVqXDXKCVW
NOUiROoDe8UGva8sawkrTpM5e6VO7UyvWd++Xq+3ao5DzzvjHtUccujecC+x
SGOs1iSTAJRNZaVUQ3YDNwOWBHS5eA2wp6uViOOoBarkr1rCx9eWN3yV9rbE
eE+JFg+V+p+R8OUvuiLsCj4kEgqckBRzRLXkY4BPRRFsSzEu6gPYqAzo17Bd
e77L+lsNsbWeREBBSam1XsFBEGN6dlZtmqMdqqLTUncxzKiC1L8y/eR8z5Je
eORKRz02m6pLkJECcdoFAQwoJACFhom1zF1KkFslj1dgvLN+8yPCy0vBAiri
h2rKGjPqtGT47ixv7dtq3CPsy5dvmOFi8ajNfAAe74arvN+voszJmE2olrsx
jadzMo7rbzXD9mdvdfGScLTwTk+pHpgdunWZb2gZRRCOdDGxiXhr9VViSXY7
DOnsViWeNcexI1QegjG64i5dq6IJvNcFu2pgWxZpwX6ACJmgqE7ROQr4zfE3
Y4RIL7HY5ECgQaY+Q6NU/xt/pXhhw+SQQ/SXxoYWReDGEkIMC9lP3XZdj1Yi
QikERF7NsGgjKuZvKWBngUvNijucBVGxhOeCSVhBKghQniQof0j1uYb9bXiS
rNUBTOi3J7zdSSrVqVWZFLjdjHLNaJvzl1tNC9ux62gULFjaFtoXtX4+FY0l
nkfWRQSAIepVn1jdHFXNJBgIRubpsopxigLoFBkZBkXvNThtEgYKV2kX115z
R1g7i2rxfZm59KXuXTtRWw2iXUm6+rHd1h3pxsctXw2XK2ugn1fKOX9LtXd3
FZiWkXBnDKsGtsnrvVRoaAL8k8rDSGQO8Cl9q01Sy+nslVWGoOecxcknJ3de
wU/ZIT4MXV7hPpvlFr4qs0vKoTDmAGhA9eveuuzegoHu0SHdnGGVNNvsPGkj
eLfeSokkkknXd5zVb3c8ADDsNvaIId++y4MtHOdmZXC5sd8A1cqDiN1dp7vp
OTeonJNXIcEiMg0OtOZ06q/bjm795a663RxdSa1uqbYRqFI+mEk/PwGtD1BU
o0soTHQkEflQcDa9FuNz1xyjdoYQbbefVV2AhuNmUn4Ckage1ZAdEUDDPBVE
x1N+FyMRexokvoU/D7Ifp1pr27jRNABRFk2gwAyGMuGepgk2Sa5adl/eXzcf
2+Y0o410k7Xde8Rz2N91/Prl792ZmZmZSr2IlTGV2fX2HRUytBHp3mMo4TOk
Rs2IM5zKpZRG2rzA8K7LgMhRRaoA7npEI/VbxpLKVTd7LpJzDDlnGcvnBw1t
WdSDjzHMdyKzmA9LOHN05sfnVLWK1sG3K0YtwKb34wwAYABrYAUWaNW7GwJ6
VqF7t7K+ouDrvuTdKlSwidW7XLL3ltZVEwGzl0hDuqccq1Jss4NldVUSLGWS
lSzszIlF1xWTeLceXRJJOuAk3Txdi2+3Zdq7u92XvFBcICkXlSgBVvXbpxPl
3WmxFCcqaV0GdmwDF5rEFdGSHFfUU2b7HEKFxTiL6d2y4blPhzw5myuuPqyZ
hFvHtRdzZN5au87LqiRy4vMvcvksSZqrku1lZlViyqxtvMBFq8Yb3dXPdur5
ZTgFnm0Nm495kkkkk9fBDap0sjlM5cXuUpK9WtVu7tV1PyWddAU+tlbzb5OY
sFZj5mYjaE3c6gtRxEPZpnfB0ObMknOq4HJtcKc18dUi4jowAPS4NGyQQSSC
Cd2ZhCcpzLg1xzeze7u5JJJJbu7u7q3Mqqrb3cxbdVVO71u4kkkkkkkklu7r
2p3KStTdHbzMzUkkkkkkt3d3d1bmVVVt7uYtuqqnd63cSSSSSSSSS3d22d5R
qZSxRG7bISsyNit3EkkklNukpUTEWklmpJJJTbpKVOGZvKmhjJ8hQ4xaO0NZ
rBym28vpJHPNg0eeV3O4TO7EFwSs6S1r7Enm5nTKzWx0BO2dtZtLbmoxHukT
qz1vUX3nmxqZxYlw0UQTje0GuLNqsvVmsrqvrsLLeRLawSg8bSpohws8qoVm
jD1AA+E95heIB8Lfsz3hYnvPx8YDZVNcXmTHnSPo7vtJSXdRpLtGe16gS5Ee
7iKnYcUrW/O+B67autkL9ROitzj08nd5l5Gs1DMFshs4KHSdNjspnL2gbXX2
5yE5pK3Boc125UkM09ejcFVvHgwrrMd68yrvs12qcbYqrV486/VQ0KgZLUKF
Xg4KjapbTrE9PW8qssaIdsnGOtuqu+3lgmqC5syjW7WZavHTOsFXt9yu72+x
bFd3avq8ebatvCXMrtsKtm9WaUXLrjqcla7fDQ7sF8RTLO7mpLs25V4acu42
6oNXuussOZpuaY8y426oNXumqd6arM13VTMe2oYA7oMOq8L9YIhe16hlOYAx
fuF54jJNAtDe09Xl6vLfUavfeqiQNE5LdokBPLm53SQLwkB7wkBEw2l8yzCx
i1MaaNxVN3eZmbiy6eYnEouaW4kkkkpt0lKqNhZcbNLcSSSSU26SlWwZm0sw
YNm4pUQdrAty5W7vdxPBdt7t7uXT7MW3pLNOZdir4NBHMvK5verLsabPpkLz
cipRRRRTB2U+6KlFFFFF6p0ddm73d3dwpCNDhooUIIM6KZUxbS3edSrtqnmz
l18m85jlUqHNompVIkkqzRJJN5l5nLgt2FSUy1qV2JVOm+C3FLoknsytkkkn
UKuDCVbOZh7M7djc5YDa7Rzpc3q66PbVQJQ53VXLalvIKdVFiiiiiiFHO2Ll
FF/uUql0Tt1JJ4B/Lcx3zlrCNhJdYK+zoELvu0POmbzWnLW3SJO5lbJJI4La
M4ZtVbc1WDazVBazuzRpt90VKKKKKIR7mb0kHhkci63UdMfKhVKxPnMlySDw
Oy/ho00/qkkok6kTLq5JO2ZnZW93Pu7u47Hr2wMu8FCxooQQTTfMJTLj5ZU1
2hdjnJkiVoqzzvhmDkNB72Z2MnIkjmXk3u4bm6qocFAj0OUHvMZ2SrrNcIPc
vO4nyDVbBAnLmo4zexmH1gxDAFmMMxFlZEysDKxTKwrKwswsrF5MLVZVlZQx
WUWYpKSzVUbG0bE2Ubm5zc2ioqxYtt0tSW1bvm7a1xkGVld+abalG+VtZU1k
GmVa5b7nlurTZavFt1JprXNkiphu01cqjSaMaI1vk+b1pqskshtZFzGVDXU3
t3m1kpvSKt1fOu3jajbXZypNjVy5VOWABIZiWDFiDIXPHhFd96Nvd2Du7d1Z
vRsu7ZuRwyRwyRwz9FVVFSSZqO7hmZjSy+aqbsJm7gkzMhl3da1UzIaVVVQ0
qqqhV3Lp2zcokyVTUdC5+AeH4QAz4PdyhQD3vfJeGimqBaKrXvqzBGkK17/C
97zejLWiSoNGsGTalKhZqUtRV8VUcNyt2+LtqlnisaitzauV2bl3O1TSzSrm
27LlRW62auW3S4WuTNcq9/n7xt6ZZiLe7XILQFrrryXtrSVW1QiKBEakoCU1
fOttzZNRtjFSwtSpoVaoQ6986d+vfrdmGGejp034VXggjVJZI4sZJZB2UyLi
zI68TVNRTEFClOkulBC0WqlJUSu+blmqa0LUW7ZrmqNq7Rs1zRt7fBzOlznO
0kkszMzMxJJJLMzMzMSSSS6AHz5b52LXburcuRRbqlSk2osUsqSyxOpROnHb
oNyWFWWxZWAysZWTt/0D/QPQP0Q+P+X/J+T8f9Xl/BXCfI+t8aPvn3/F/5+7
5Ptfg6TTofdvVVVFHSPk882keWnEjp29U/DZ4f3fwwx7ejzX9fLXHPqW7Rtx
uF4b/XKlf6/J+i/mv+1tsud87y/Z7Nbwwtu/LydsLev32DjfZ1FA2T8LAOwu
7iwbJGGR+mVMlk5hWpsjsilosqipfXuQZbVnu5SPD3vp+Pn9/X2eZ1eHO128
vhnf3yT0p6dpPskNZ2d/nO23mZHUlTGsXh+P+9vUn71nx/nfYdv69z5TzXNk
syZ3e/z8c2vZh8+R63qWRVdn3H8n8X8fWv/MfW/kz2x8P0TzyfUS+Pzvlr19
b6X0hPKfn4OJ9jDJtk/nXq/N9Dnp7j7GLfPNZKdfue8llC9nw3G/j3736WLb
pkjBf4XF2rn4W7p2eavYH6f1+F8l7nd7fDV3+qzUzfztbb8Hjtq9HeHz+Cxs
x8nLj4U5vv6B9LyujXzp1v6P+E/6ck6/R3W24+eebvx6fR7tRyFkVWqu23w/
Ptr3VRQUFiQYmIltq1YrlD4SPVrnqm+nTTL7Peh15txMw5dF0O5H0/ouRYn2
rhfMVdb5P0N28fk019r4mPhOWW3h+RjJ+Lh4vVHp83sRZt9HR8p7/jI7jwjb
n8F6Opk+Xk8u83os9qzvN7ErIZlTuZRzjTDrnf9nc47v+p/g995j7rIX73tb
b8MnI7o7yYlrw+17o+08D3rHpbJ5fKY9PDmPubH2u13defFnxuyBWzzxmPOz
7fw16vY902+z69P1/fV1XfU7vzvBufn4+Odn7OqOnwj78r7vbnPig7P0v6uT
GMY9Z/a4+kdz3+w/nPhwPd4+Ps9z7bTZiv2d/D+qZq83sa5cuxeDve6fX93s
9KfW+/P++53W9u2eHn8MVwzUj37LrLmT1XVzcuX9LvLgmnyvlmZkObe7YYkd
L3fdq+rxu643gX2b0LbefN7F+DU0+lu935/j16j2r9rvr4f95w6r1y8p7Pbc
rnvvlG3CFdqPx+7vfefjPNDnq/f2T0J7Zv2T4t3Pmr6ms3y+F8NvhfH9NhjH
iiI1LVa8oeEmgfXk75p7/nfse/q0eaAPAkfTHX3BQ+TONHyRzeDPNgPZI+cM
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
Rlz3udapVqenEf6bUPaqvCqqfX/fiodFDufyHwahXLOnu21mrim71MmJlJVx
lWxEm+P5nrvqPYPDqDcZ89WkyqvfAvzQ6rPb7VdRxO3IJJMWd0n9rcX4TZBW
LbNtCtaSVVTxE1tpbLCrtqq1UDDJrDJfo4fTrbbV91vqREkRERESVMZmRgY5
aHO2Y4srrFfAqdt62lB4UKf1CfaPpwLug3V+1mZu4UYWF/Csyqv0e5ocKOFp
2+VSS+SSyRPgd+ZmZm1O46Te2HC2pPuqTZ/be4M8EPJwy8R+AdiqO+wBwyhT
kblUc5vSrVCmnTtvILzg7PLGdulaR5PArudOZNsWZmZmV21+3Go/owrrt4w2
mzrKsRxRvBWt7dXPZsybgVps67u0U3nAUu8c0k8qoGIFYzDtw9nXvN1Vt03/
O0N5JrlaNValsSMRa6W3LfBXSmTcq6XPLjtLC7FtIRkaSyBKIXULVgwhYy7J
ZN5Cdu5SRbeNd5dK5dlddumSyZblRYijaqzZDlBkkiBMlbJvm+ZqTnfNJKYp
bsWFVx8kp34sh2DSaT0Jb44KGZnxqJ0S3oquSTwzGV/hrXfUTuHNFyI5junW
8biTaTRScCUr8m5XTvlJ2g6zqi62+1r6PlW+m3xaLFixYsWLFsxZizENFT20
Jfwr67WMjMelKV37NrNz2DSx/kaKpuJwfyuJjGRmetRtPN3JxcbiwzP12E50
6ulVcB+FwVcPuLRKeKGtm2GW8skMyrLIywYZTGSaZ6kaT6vD4VSnD3sqF+D7
9kOVD9pt7pHFWq/NlBzvZ45nbk/N3OX0hljL74Or/P28qq99Kth19J/51MAX
ldHUS99PaP0c/XjSrecuVVU8x7Z1g+F+/NL4Qfbc5DlTjRkImimIZCu7WlJ1
fhXkHZZfJka0xljLGMynqmyG99/jJ83OT6d3ziWkYK4PjKS5KON5/NRbwr7U
X6eRNqq7QfXW/T+u+/b5fPhtb5foAAA+Ovtr7826M8L3iXxqrCgeglfLWrW8
N4Vvb2szFN4kFiO9hb1i9nKTzkLWfLbX0o/LPfu/jjXNriocEUuexvOXk4be
24/C+CHlbHnF4qsqzEkyZZFhVVjKlTMxhFmEofwlByXdf+L9mzg7dL5wr4+d
7bCmKt/ryqqfq+pwpzKn48ex8X1T9JGPqrKmiTMp++I+90crQkfwthpxqF4S
oOr7vCg+q/Lm+xVye55WQjzbe13Sfh+9+WL7L1kLCn8WtNYxla8XkT7H5eWA
AAAAAAAAAAAAAAAAAAAAAERO34NWi6SyWrFZMiVJWVf4uII+2JInC23p6XJU
py9Sb2wrazLMsyzLMsyzR8/wk3k27Xuu9DVnczTLwZrdq1RnEVXSK5NUKfH+
ik/L7XPU00LOOuakYTns4ScBKu3G1ErCHXrT6vL05x9nmzo6nu9rsb9jtLHa
stb221lSjm6XcXa6pluROXO66Xd10ndXwbkTvLrxzplMIkkSd1uoSRNm2KJE
67Na1cAxTCcXi9XBWfEXwqPRRD9sRSyG22zK2pW1FstoWdjvQ5cbhVLj5zrD
rWNsPRJsfDV8EbaqOOWsYZhbWGmU7Xddy8B4vfdq9Fw9HRTFi83HOzBHDmuY
lkFHwUn9e/43gO/le251C9CnJSPC2qMrFPT8t99mQaG8P/Kxa56n/hD3dm+D
y+mVGDKrMR7yk96XjLg9vzl2f0/p68ZwT22Ms15Tr5p9cjz93ctnoylcuW2T
i4c+kj2+2x0UXCU2x7PZ28aD4vntcYjAK+hrxDMqlmFmTMMsrVAyiYUN7CTc
6I4IOC+K3/LNmy3mnC31eC+FKf3Jap5mzHwmMmZ6n8PhZ+H8lrXF5q5z7Xff
D7fZ5Q59/fZFa9Il6YGZknRDVXnO2ZZLaTI2rXtavcHx+bX0VtRtK0i0pNuS
qozgLi1/mrHsHaSnk+tDzg0563ce3hpr4mR65fWe68uRS2ZUx70LXSg89HKT
uxeHZ3O9ScZSnDDMZlKc32k6VGQsGhshMlWU8RlUmIyrMmrYDVVFqKcCplQt
LdNljRzVdrlvh+Ha7bWvZkJLEhV4xO3WljhpDZ/VG0htVs79nG1ZEkDpdbDG
YxmRlWW0R4K9DMjtLv5OvSlLj3vek7V3HxznSl3Oii5d81QnChXXhZa0lH16
LflWxVonCbtla1INgXCDa4SrS2Lffe3kav6/u/NW28m2SUmiM2VNVGYVF1eF
B14ORsPQePi2rkXCDqhODMkSQLZVFX4SqlsisDELVtVbr9e7VXPp21NNa+FU
p5WvPvyJBdJxwwqXCp41VOfJv3CpruXDFW1UPVzv/jqPV1HYODKRWonbKm6J
rCV2imSJJhFmqWZtc3Qx7IklzJppckb5abbMbaayFYob76opaMjtb8S2tVJn
JM2pVGWxf88qswosypypG3RSfworJlV41KYgHZBbtEPvNKJkqnyE173N/Uij
9GVQeL7rVRvY4Ez+gvZvtL+N9of5ZSH6fhs01UmvxNzr4j6yqq1e48TVd8U7
n50faH2mIpZr2T4xbmWYpGeI+HnPd16XYCvExy63khqqXNTD3ylXMqYlE+jG
2PVYpPqxLMghtSlxrFVsuv3GyHoM4jJONGVM953/q1bb0jiT4+rzft6vWR84
V8DpFM71D9+5fWHwSrerbZ8eAX0S3fbdwAIvPqnT27UxV/dDlNqzOHIvMI+O
VY8uL4W9DfpVDDtATtAT4Huyowx/GcuBf5uxT3e3e+19UoO54fay7hF6c/Vy
m/j+f62pRk0b1bLYshtOHE0ll1dPb8IVy/galVGuJS1VA/sXz5P4P485X85J
YsTJYTMlTMVGWRjBZklMjJVZYZMVVmJo2xqo2aWllYrVq/s/FWljbunP6nhi
yt1DkoO96J6NVOWEXkrp0221NUHg/IrzQV6G/P4OVVHCDZv1T9zxqo7HryuN
+9ValBtOf8GGuNquFwgJ+3rwqvLm+5mb+NGT06l/Rdaqp5HVSuIZlKsqzMMi
ljEoYyLCYhlYYmJkMUYyMVYmKrKDWtRSsjd0umvT6capVtVd5g7fdjYOkhlI
tWSmW+C1XOu6Z3cWNpSKLt10rqY6W6KeeXkFeUIRKS0ulK/PCoFojg1LJcIC
KrGcnNUX50ab5Eq3t58vxXCVUcf834j8Jv5CZVQfkV4JfW9jBe19bxrk+/IC
2V6nGt6+t72kV+365mZmYAAAO8mZmbbPzbWr5q1X8lkymMGZZH2n9Hyoru8K
9Yp0yKfE+NZdLxX1Ivs6U5Spd3y580Wb3tpV7zuOVvCtfMbINH7t6OqrBvKD
lPGKDdDNZRVe9jMVT2VGw9UcZsKW4ZA1ti79yp8mD4vlaa+DR2V7XZOELFO0
4JILYdKU59o7UzLK9AK91pQ9UjeAnuL53a7j6eheGS8DdVbllVU9/nxbZjg+
P/9wVJwMxwpDoqrGzYpmVjbVR7b9dVH1pvdIjot/Kqqcik4KThLgV0TeW1Sn
11VTaFcpTfilLiG1UrutrFnf1Q22OSk/lSAkmDoQxZ8ESPB67I/BQb3faT77
qtjodpgHZmAogMOec+9Mx2SL8cgeT+ey3vM6Cp3u6ohCUVcICIRKoYStWbEo
/z4z7TSYZ9fWXgm4VNw4TV2ONKNG+WMm0vIZINAlJI2jBiwhEWLsQ1sm0UDe
rKwQj+hCixCisGROkn4yejwnPoODAT98taOXnvpz0XLzDXzin0vpZw7T+Oqq
p8uuY5RTPdeLlEZJqhU62vK68uD7XCFcVPd4rfkxhD/G8mq5TnjPvXUqm1Pf
weBttid0Hk4TkOt1KnSKMWWWYWKZtiiyapNtqNSltCSFMwtNmha2r3tV7fLV
q0pI9ebO1yKcbtsauzHd3c6dJf2e/dBxqc+JU7PoW3fN+HV2VcMSxiUWktKa
xYtKZCqxpBmWYlMwsMU+kGKkOG0RqripMoNVVkKwS21lz8bdYqpLCrBKHGZL
JMzrT42r1akdaeTz05cx7aQ7O62OH9Ly6UpbdyYjvaxmMxm02nHUK7pe1pFP
DgONVOWgoKCgoigonavV61tMrelx9WTzeP/enPw2y/hByUmuRT1WzV5ayiyx
s1KkqNrzdtbBTVqcthLZIvpCvAKrhETUiDJpctbXj4eOnsp106SXprpqts1x
iGlevrddYN6XonGfm5dXSSG/DWufRqhrdYauWKiDolQ0kq5KSBKhFCUihJSJ
B16lNRIRmYERqxqzJV3LIQERl1aFsYAtKJmIQiyru4aTSJqjUqibyaMLLskI
SyEqF2tRU3hZSUqXUC2iNm7pslKrZKOmtyk3u68mV3VzEXdat8npyyyWyyrK
4shktcoNa82g06V1DKa5koaEHOXRd3ZVHEapMQw0cKv9UhRwZyKFY8KPHLqN
dhTRVZZ1fKuF6yJ0bTqbJNml5rXGOVnRCyBlS8ZwmboF5bcNMupDjnZlnSue
pYz6oJOyuuTFFHVWIZhkDdUMTYzl9elXFXinm/Yd5bzwRa7IxPeFV7rS44uj
lTrIzzsGKsKMY8dam7NYl9WMZLLFWWFojDK7VVyHhIbzaobKVrJMKlrlZiVR
kKWh3budvOHmq0dLwGp+t2E9XMSPvpV3MXXNNrzSaE81W1Xa3tVWuvPw6+8o
2jbDZGRYlmBqydrJOfpxqFyOeGT0uXc6RhOZ4ThE8bFqS1JAtKq1bAzJLITF
RZBkSmSzjpSe82Mo6yoNmhxabxDdi62u+Dzp12oPEkTw73Dad1ykdSd2d58I
CcLR7H4050pX0m/viPskebalLYZmJixVmU82Kq7GlJiUvO04NaTVnpB95su+
2TUVmFT+XuoOTyHgyysysxkxllEwbbRWJktSMKojbImKSltFpZJUymGjWqWM
kmaaiqa1lLbEbUsiZTMSSmWllVpNqwAAC1FYmTNsjaaam2WjRNMg2U1mSqLU
iWowjArNU21tNVep7G8n5IZ8LDLDFqsskyyssV98gvJzRfo9G0fF3Kq+pRel
lRtVUuZpdENf4XwMjObAllRMTaFfk7pz1/N/hf8epU4dPxnFWSS51bxTJT1v
zk6vdSlb/2LSVRw+P804WR9FjuFHusyMbt17Mr6OeorR8nCUGtsdeLEfRKox
SZybNhLnO9Sc3u/f66s+9bSO1J1o/D1zAAAfp33Pwb5N9u+rfFttRa1r8EtX
CCnBu87tlR/D4ucR55IYwZfqfGvueS6s75Dm5uMoM4GqFPLVHDHPcU7nUay8
KtUxwytsm3uOddz/l4xIL4FTfUg4MSR0eIrdHnvNDd2lU7VK8X7PPt4Qbyfj
cXPOPAnnkZvqk4zMWVV7rCPMp7qD6PTrTr7ajebLJNIGs9ibRdXGo1v18Ofj
wfDLje35ckgn9siHCm64RGVwVTFlMk/Hkysz/jVLzUD3OdUb/4u5IpwoSGsP
rVcA

--0-2053099146-1030013882=:52945--