[ODE] dCylinder - Ray collision

Olivier Michel Olivier.Michel at cyberbotics.com
Wed Jan 22 01:58:02 2003


This is a multi-part message in MIME format.
--------------090909020908010200050607
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

slipch wrote:

>Hello Olivier,
>
>Monday, January 20, 2003, 12:35:18 PM, you wrote:
>
>OM> I noticed that the dCylinder contrib misses the Cylinder - Ray collision.
>OM> Did anyone already implemented this ? If not, I will do it and 
>OM> contribute it to the dCylinder contrib.
>
>It has not been implemented yet. If you do not need precise Cylinder
>-Ray you may use CCylinder -Ray or Box - Ray collide functions.
>  
>
Actually, I needed precise Cylinder - Ray collision detection. So, I 
implemented it. Here is the new version of the dCylinder contribution, 
including the Cylinder - Ray collision detection. It is based on the new 
zip file you sent on the mailing list (hence works the new collision 
detection system). I tested it with several cases (hopefully all the 
possible cases, with top, bottom and side of the cylinder, using 
different positions and orientations of the cylinder) and it seems to 
work nicely. How shall we proceed to include it to the CVS ?

-Olivier

--------------090909020908010200050607
Content-Type: application/zip;
 name="dCylinder.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="dCylinder.zip"

UEsDBAoAAAAAANxMNi4AAAAAAAAAAAAAAAAKABUAZEN5bGluZGVyL1VUCQADoFguPhZZLj5V
eAQA9AH0AVBLAwQUAAAACACVTDYuuuuiFwckAAAgnwAAFwAVAGRDeWxpbmRlci9kQ3lsaW5k
ZXIuY3BwVVQJAAMaWC4+8lguPlV4BAD0ATYA7D1rc9u2sp+VGf8HTDrT6kFJBqi2OXGUU9vt
PdO5aV076Z2509PJpSTa4gktsiTlRzL573cfAAhS1MOOk+acaVrJJHaxWACLxe5iSX0RLabx
chaKZ8ksHMJnMH++9+gLU/p4dnwbR4tZmA3mj/ceDYfiIroKFyIQaRItijAT/5d+JYoECmbH
yaIIpsU/wuTSE1lYLLOFKOZhBSCCgqikoifyN1EqJrdFmA/2Hu09yotsOS3E7Ma0KN61AHOq
7/YeCTE7C4NYZMEsWuZe/PYA4fpOxOHiopiLIE4WF+JWBDdRLobDvUfvD5A48CpsV47jIM9/
zaGFsehLgn8xC8+jRSh+/vWn49c/Hb78b9HevzmHfx0Xenzy86vD41ft1EPeO6LddvvWxYL2
dB5k3Q4Ae6JNWB0iMfzY/7Y0MY2yaRz+iFOWh9MiShb3a6KYw7jOkjAX50kcJ9fR4uIplQdv
oKy4TgS3lIsgF4skuwziHOUjjYMFFC6kt1CemIYkOyRDuZim0pumygsWMz2dgJlJL1NIGUZ+
losYxz9ZiOt5NJ2bNr4yZCPTr7LCebK0DZxI70SJfokG3ReTsLgOQxZRoo7N5+k8zEJxHYEo
aSaBO80V8IT0W/jvxPdORvcnqSxJ6iOvFmAaRisU0TlSgDoRDmGlCUSeJpfpElaNmEV5ESym
IXawDwzRnxH8UXwHf0ZYIVqIxzQSj4Vp6DIMFjw6lulKT/TAEdM5zCEMdmHb+yTSHC1oBCdJ
EotV4W1PkwVyhAqhi1JVuUeB0rqiBgHhq2EqgwkX/wPEk8zn3nfe7T1i0FSOZ9+fvJKjNhJe
yM6BhagSokCyHUiSE2g0apPMVyCv1Ri+u/CxpXm0gFLZJ6gtTeW4PYVChbidISGVQAVA1Z/K
GtD0Ik7H71LZXcjf9n/vpaq7UHDhccnIlIxMyRNT8uT39y6VBd4cn528fCmxL97YK/tjcF4c
y/G7OAXyfRghbAVuJN9IulF8o6q0Xxyrsp5y6ym3njL1qNuH3pF37B29PsTPa+V9byGF9Arl
Fb5XjKDskMYfOF4gr0d8B5zy/XF5D59OP5PdDLcCoDk+Gh7yFcwIfHfhA/ffj6mkfwzX0Xn7
+2f7g/MOblF5chlez4NCwA4WLC5CkSfxklbR3iPQFMMhaImC1nIYzsIZasM8BGyoZjBot6Ly
NA2yoAjttpdrjOs565UoE+HsAtVrmmZJMJ0DvJDjPvDWy//IivN2/3vsX6tQVNh3C0F36X2Z
FA2ivd97FMIlyLqmoisQvqbRc4reO0OpakOpYCgVDKXqZmrnoXQGU7xDvv2mzozu2hl/tTOj
ps5YWTwxItxbwFcXZIlkEe6kuVN4p/CuIsUnqlpTVWqqSk3F5khZ16/W9St1/Updv9rqqFpz
VKk5qtQc1Vp9IV9Duyc+LrwTWq9wLela0rWi6/pqla+hzZORU2vk1BpVarn1lNOaclpTTmtq
pTXltKac1pTTmrKtGR0QY9dYHuHKw69S9cbYAwMcIXDUOXDqKltXYV1VqatsXYV1lamLAiza
2O4zpA/WXgskGmk9wzp4TwWSC3wqaL3T6xqLD+iaNh3o53h/8PV5t00j3KNR67gI0kGQhCCr
CMpBUISgDMJ7/NYrhFtX61pX21pX21pXTa1j47UBGX1mAzLaNCCjbQMy2jYgo0rrrLDWi8yo
WWTW8Ci38Si38SgbePysRGbULDJ/7oB8YpExvnW2DHkTM/9dJdGMHI/jOAEfqjjUNoIw5rI1
cAPwwapFy8CjFlp1QDpZxZ0YXNaN3SBO50BS34FHEcAMvSOX3ZI5wFvcsMDrTif4tw98wF8N
kBogNUAagNIApQGKAdzYMlhOAEyKGbqwnHQc4B8SQBaWVkAKnX8GTaqgGUBkHwl38YsgqOJn
4tlY7JOVIuDfcCi+++47QQ4xWnZkwE1CcRnM4CsB9y1LJsu8YGweIqC8f6ALcJSELXiPXyhW
hjxyAfxMo7Q96xzUiLShZz3qe/cP1enO6jTbDEKkEv7eyopmnSzQvFienyPrSVpEl9HbUKDr
iQEccMNh4qEz4D9OOcyhXcZpEE+XcYA2LsduwhtwzcDLPH4sTKTlKLlZFTtpRemnoMiiG1+c
SRYlxyszIR23KH67IoTgcLk1LUG1gplHs1Ajl24NhSasyM7CtJh7xHwX+8zYeHsZ3Ey9agyr
q0eD8SnIsyLtXpp63MYxDb7bmS4Dzuzkc/GR9I6Ud+R7Z1LCR8EHrhVcK7hWcO3DtQ/Xvu/x
hJ8C5ilgngLmKWCeAuYpYJ4C5ilgngJm7uVgg3o5wnNEgC+fhRq4j7xocRVmxWvmiSwaku0L
cFGuqDfiPINOc+giF8k5+OQ3QpK0w4VCUUFZuApNkXRXutIrXdZXutIrXdZXutIrXdqV/tOv
L179+MuL/wXTwJeiDUMLYgNrFtUvMZqmWLHGyOwWOXG6g3Kg44S5GArFoENQEixxB+IQtUL8
tnv2w+GLNujgDhT5UKTh5VzN47fj+O1QDc6p8AgVDYkZ2uJO7SNlAbIK8C1AuQDL8Fn0L/QZ
z+RXXRTpaBAOKK5k+5glRVCJOp1JijedUb9AhrRaBK/9TPb2QYJ6+9AwCNYqQBLAXwUoVj0g
hRWYtNSUWgUQNeWvAgw1v0pNWWq+WgUQNd9fBSgzWqfc1/8KJjkAEf+UO6lLFJX4TonPjJwq
p6KiisqpqKiicioqU9F3KvpU0Xcq+lTRdyr6vmFWTy8oa/D2TayPw9Xg/ZPzn1MRriQOGpoI
PCLniY2t7w8cWhj05Gg7ajJcpXiThouwyFhMODKOpbqdCG6p3XauOg4pYgmKI+YjDrILiv4R
4TwBdztDHqZJNhNRYZhAVNYhRm1cR3GMGyIGO2BBNrVM/SOAjjFqYtTWAOgV4VNhtCWNEJHi
XYhOHaZJvLxcYH9B/KHRM8X8BxhxcVgrg5jUDc0p92YgEoy3Xkd56Da2T8tJK/GSmuYhMN1c
VTowUa5ORVrSTHQeXSC3q4OWz5NlPMPxOo+jNA1nA/fk4dUPL1+1w5s0kx5+K9pbvOm0I/6J
pPJS+AipA/qTrlAQ/2kMGMB6jgaMkZ86KAfbhouAIqondWBuyx0Lr2xxtZ9gd5jmn4n9jsWi
HRWhwK8ufM+LIScj7McF9DEqbvWmVCXJO6QhsV8qyLosje1CgXuxRC04HIINMxMUOwtoQSHt
8AamajmdYxANBhsk5TyYhmbJuOdNOOq43WDEoQ0qH8ypI9lFrQEXqovKAi58uPA7Him5fRMT
WMMi8kCXV9K7Ut6Vz5glm7YPGOWzfGI1ZJKx7eEAHrdcB7dkeepTAZGfPhW41485ziUH5324
Q6Zh7EFcHRiwjaz3oB/YF4AzfRCIa1AkEQp/QbYtaUFcDdhlHKXzKIO1BG2Ly+hijocIgvoA
jPyxjN7oM5AsWRYUxF8WeL/AOCiRAzRuCno3fYMSCFw9GwOzHpCaJmh6Rmh73Yo8xgbiWxHe
YE1AoYVB9Tf1pZw/2jZkG/cYMBq8Nm/m3ZznEabVzKjs0EbkSaOr0Vxaoa/Hsom+rNFXlj4J
iiL60lMOfd/SJ74301c1+r6l75MgEn3lmb0G1McSZOmc6GzSJXQot/A/pj6paJSWq1D2D0oc
rWzZdGzjSYstklyknCLFRX7HobCbRmrUSaCVBI2adpHqqzdCfaEJ6/3M0TgATYM8J+xpluS8
eS7CIMNdp9Q9SHqLVuJdF6xt3BaWWbN2sqdAWfIvD4j8gn+nCVj70QL/4sFX7rsR1eLwxoP/
U/Ro3yEbl8EbZPfwRp+qYhfCDGyGWYTuXUZq5TZGdaot+zTJIz473nuEDZvTr1SR+uv0zb3k
e5LDwxuMiZAj0Cc3oH+GNn8XCRwQWBJYElgS+GsXrAisCKwI/DcLnv1MEwJ+q98+vOFzgWWu
u0VGkTPAtptmWpqmEcTTHMldLLRjzd/noD7b0RgENnrmw1ev18G4RKS9luh3jU17/JgXLgwG
jDnZt7xY/i7I2O/LAdw85Ru8PtjWRm/MhLvobXTB0Pkt6o42NikfsEllm+zJjY2qB2zULxsl
VxAnd7KM4llpQNoZtevStQL0/Datwor4TraL72Sz+E42i+9kZ/Ely0iv5zGr4JocdWGj6mF8
ogEqAarWQhVA9eZAmwD66F3qXw9tnC71pYd+eJf4NntNT/PT8QjZIzyPUewpyHC4CG9wn8/A
rSlwuI1FMAfLIcZYUhxHOcaMrMtq58omjegFG4DLUZsj7XP2HZVDXiO2XfAk8fz0SNX0zsgX
1+Nc8DTxDPVI2SDCqIKgGEERgiKEJ40zVfBUUZ+Ta1SsVRFk6wjkT2tt7JErmRxLcVTwitpF
kvEtgiI2pSjRpUncG/QXWHB03lzgaTTGeDQJ8pquyXjETulUD+QRWkvK2fgqFxk3rRMu2Bjl
OcJum+QGmAbcVDBYgOMBardWTJaOnpwzHFlMVcAVADMD2OXEQNE3FjhygYqAct9CnxgoTwBF
KWm/tdk30BuUo6ZZCPLatn5D+71OcOCFMvYKs9QaV+jG5bl5AW5evM7yFJxAUsdBpdTR8cTc
ZqU4U0AAvwrQxjDODtuaWBdHU/YQGa/uphSAUlcrBkxjAQt0k4L4ulQQeXAZYmwBhr70/MHc
h8kibV5OVNPal7W1Lzeufblt7X+9be03a2m79j+fZdAsvfIe0vtAm8ufIb0fRXa/MWq+SXLh
NttJcFVNcJVrWNTlVtUsi7rYflMzLepSK/c3i+3nLbSqWWjvrXBZKDer4/8skf3WaKeK708O
LYdTebMEEZlhunVwE+Y2JoPB2mkQG+eUXF4dV8JwJJEgu6NtQgYdRFk5/9kSunzYcAN6+bOX
MM7g6y9AGvALk68XCq8VX/t47XdccjFTKyOeSgzHIi5jm1vDGG7MYmskYxg3xDLcQhvNGMYP
F88og63DIU182GB8kwqzlvdNWEa66+HLpRI3om1ilx0To8IQKZ57+bKfkuTiCabxHShQ6vco
TIoRMF96+14fMZ6UUS5LQVkKqqQgSwoYo/MVU1De3xoo+JaCX6WgmBWi4DMF35P7a9YLjQBH
Qi/MAQYGSNCI9oy2N6nn5pwlHNg4bBnaN7QW4iJOJpQBnGTgwgb85ANLmpYim13A9yw+GmYO
UC1QusBRDahc4JPfV5MMWthwm+Tm+bed8pB1nw9Z9QH5mTTH2JSBYqo77JWSfrDKF8r6wSpH
KO0H7y1LOAAVQW8chr69aRiGvr1pGIa+vSmHgY/8EZiXZwpm8irpDu28wwjIJq+z5+JbZpGf
NtCuVbKoemNpIGZhmKIrzIdvpTy4qQKB5riMOnnCBvC88wDR7KnCmshJoKNQkqNQiNlCGvrU
FLYmO5+8byHUb4KCwkQwN7vNYaA2hmPLI1F177ex3BtTV0XXPA/RFWAm6MBWY5Sp5LQW3nID
Tf1tkaagGmnCsx3TMse3zFHtdub9VeZNtEqnCZGI6BCk44s2CoeoS8dka8BsY/DRDNcnDkCW
zX7iIGTZ8McNRLpLlrPfMPfqoDZ7lJG2oaGlXrdoJYOd4oxnI7aebuCE1FD/SVmHazXm/qXA
ROClE2DF+5J5/ZJS9HZZIMQh553tMmDEYlcPxXp8rV9BlQ/SJNe9Mjkw3Ta13iOihkmnhlHc
rME1XBuF0ih4rQPNDjcej/B5nlZrV26ocdRgrU0tt1pOuy3OzxSC27ZCwCv/oLqDjJ1Uwrr6
3zDQTOvTrPqyrU++8hub/lSrv7HxugZYzdhc2cQb9vCdplWW07p+Cxeb9/Bdt3CDJPgvDJe+
eIon7Qfbd/idBvHP2OKbZnF1mxebdvl6H9bu9FoYdtUtlq6OH2zSbI5+0W5c9wH/rcndhf8/
LHdX1pJ35T2ydx1yqkbuT0jmlfBRd83onWPP58gvJuHyDvBvm3MrV5Nu5dqs2yYCGPs0mfYb
MnJx0CgLV1bSYgnA6bnKTaSlwXNSIZpSILSD/1cuHZXWc+mqgc9KHm89kInZZLiVPIcLUMr4
/RTrd0wQ1WTMSZMyh2atXsQY+uWEJXqcWZQpc8Nhmlbr00N+Onojy4q0hWkaOplKduwEk1h9
aJDzr6ype2dNrWQaBZxsZIOPK6HH/CsdbyyfMKfTACeTvOk4YLfAuZaentlD1h7vsL5fDcI4
oZeWPaoPtmRLScSoZYJBsarkTqEObeszeNCgfPYuORnVZHx17uD3t/CtEK6pmJaBHgL5NZCO
8ujjnZR2iu4Zn0TRJtA901tBS5/ylDgjF+cbi6NcnCcujqRdqLUmg4KiIyYUwoG0dIJbHo0a
JiikNHSYkZpVchaw49Vuuwf3NevYHjDtHN66r+nLs9Ovmb2q4jg12r324Pb+cS3TdGnw1r2m
3fj2G/guc7DWZa2sEf90AoO3c75Va0vCVWtLxlVrS8qVNqSbTsZXd0PnmLH5GFCtOwZUD553
YfSZPgRUvfJgsEm5+eXG6DiojfoNyrdGaivB5d3VoWpWh7KqDhu0oVrVhk1aTq3XcmpFy/HT
WYq1HD94pepazuCMXJyaljM4T1ycTVquUU81R+Lt6fuD6al1SjZwlWyDbr1T4F5ud+sLc6D+
kGF7+QBxe7kSuK9qq2BD9pHRVgFpK8pxriQfGW0VkLaiJOdK7pHRVgFpK8pyrqQe8UtKGnXV
Wm31WWSJacVktJV0tJXcnEY6HFL2KKUbconzlHX5/pyMHjzRJmvl2ZlcvyKn8law7+jc5TJB
+QdRx2e96FAbxYSoU6P4xAk+gpUsMScNE/75LVTabjWJxPr1WLhUrhOmrjNYB+JoWZjnXNix
oDP0qzC+RWpJQauO/A16Lm/A1X/EbFlAKLJo+kar1DgscnoEB3ucxOBh/7EMZoAgQrigykLX
1iePQR7WHyOKaCjcRwuoo5MwTq5B/vFZItDL0yWdXhte8gKf3cOmQf8CW5NkicOWTOLw0rwV
TL+qiJ5A5ed7bsU8uAqp2gRHKwuvQnK0ZkvKJ8WG4e/A8RRoIA94h7KF08CbTuhhpGpMvDG+
VtucmpFq9rLWh/j4lJlR2myQS0x+MIqL/djt6mo9Y9t0VdmSun9LOxl9FecMPnRi0fBiNXK9
YAbMUiUnezox69njd6NVdJ9+7UV/qt/mYHSeftsFlsvfHV2nX3KB5fagtLZBrt8f3e2x3NtJ
RZH/0ie9VfdeDHxUwit7uoE/KeG8nzf0crKml5M1vZz8Vp4ZNnSz2V1xvRVmU5b9VGU/HftF
lh1VZUcd40WWPVVlT0vLhXzwMh0PaxBn+mGypn1Iv9IODLpfMg9tiV/Y4tiyMa3bl9ZtS1t3
Jc3CuGm32cCQWseQWsOQugtDqmSoYqzvHMHgTvWY1KbU6veNKUy7pTGVu+a/bypT6yHykZDO
n5SORGHZuyYkOYfb/qc63K60etcj9eBBWv36jq2SHr53w5UT+286OnHur/Ste3uBHyt/6+M4
gljfZHAFTnSS7e3ylblg3dIzUuxRs+mt9qrJQHdL5Voz/83WQiXv4dPM/32DnGvzQz5CnPPD
Y50t+zRwJcmrtZLh1aiPmtO7mlHL3C4X9c4JXY3E12RzNeN+hqlctAaTN8Gth3YMOZkBvQ+j
j68w48dyKq+vbk/CaYAOdfWlM5qSeZp/JV7JRDsD2ya94C28TJMsyG6fisvgTViLomlN8Jje
IPO4XPxkWbmb9sAliSbYG9QpoC+uk+xN7pEPfR3yKeXlMi6iNK5R4FhFXgSTKI6KW88hGOZp
OI2COL4lHBoaCptqAoO7pqSR0rOvRuFkBNM16bw+BZXesAFHDVY2xfumQzlZbutV4oZ0KHWH
dKiHyHf6AJ34QAlPG/XijhlP21RjwxsLN8mM2kFm5MPJzKdMofsYOXKfyo5akyRXt6V2lJlt
5tS/dZqc+Q0RfInBLDy+jV/CVNxwClkiPWGvFWeSwUq4yCnzbLd0M62hfzx8+fKHs1f82yHi
+Rg90aKTR2/D5LzyayM6wl9WmGHpP8KCft2knYAhOMYH4+jXJ6hsSwXJFVZ+JMUcGDi/mpDK
san8iz7Gw/oNiKoBUTUgnlm8M/1aQ0vQScPTzrpn8+Z2ysIDBXO2+v5GvsFGTY+RSTAULnEs
vC9tLe/LedxxqvLveTgU3QLuBg86doYKbZdpv71nAiC+iAfPAZAyYj9crp/9CQrOUVwuUBGA
FYK/ZEMvgD34D8md+/DUue1vodPvS3Kz2coTaVDVnistvXmMhZ6ySZEfnL0mdnlI968Ut/Up
bhsy3O6WA4aLlX/6h1cxJjqIylu7/r+9o+tt40Y+u0D/w7YFDGm1ss21EyRV5MJ2ekWA812c
XB/uisBQJMU1ZEuyZAe2U//343xyuEt9OEiufbgiRaLlcEgOZ8iZ4ZCTClXV1e4A1PP4HLpE
DrJBM9VTaPvGVuIQ2r6xlTiDtm9sLX2jCBkF386eFv5LzNNh4aw7rJ+Lw5r7S2sW947WKe4L
rU2pg++N5a631eFZq51t4OlfeCrzPwkhq3jXlKagUa1x+ebL+tak0XDtZh2XWuiz1menSsSs
vYgHiEN7ESsQW/YWc0T6bGfR0c6Ck511D3bW430IWfarO9RKiIHTaIfapfM/5wDFc2a9kSM+
51xwihJK/kIHKdmKUxP+0t5H06GLRy36TfvRjbpULXeh3KXKy1BeRuVnrovq6mm/N79+QQZD
vp+xphvAygVgZQQGdpKKkfY3r6inEbhKmHZ/KbgKn46mCl41uxJm0uGXNZOyyqUfo5gHaxBz
FJDiWjMC4FD173jjJLYu3k9u3/oezx9hFyimZqh0OPEDvKbPoPgXgrepPRvfXGZdyZHQSBlS
RcoYKhJDKCiBmCdewspKYPEfpT+cwYNluNikS1ObeF8KJyXbDNkwC5kOnIlOsOLBmKFtwI+K
NwIWcUmWKVXPc6xsxCwl+6tqpReFVbVSq8WSWmegCywR1eWVy4WVWc9/MB4LIBsLT0Vw8BLe
nyk6FcFxgQFLW0qc6AJTYukaAuSMBNFFjzUqlaYSkjOWKCLa40XKdN9JbhuW6LWkyvTP/FMR
ybb1WDH7v6B9DUHTTMOv8VHNT0EOpqQ6PXSSWxmB+0ltgBWylmT6yV8lnJ++rN9vuRtvlbsQ
h2i8hUZ3WTVTRn9ZNS/+f/UyAR38FAWvir3429Hfv1/c44/FS8RMvXX3TXJrxc7BNxvdjaST
EZJISy4Vc34f18+zqalf9XryyrqXjel6LHsZyJWnY5hOdQhIZ+0/UKbIMJmmB+qOf9t9F0aO
3gFvTjimMlgz1tYZq6mDj/uBjjl3L9jsAwsQbUh9+qDZyfgaRfp1fXwKUF7VlzptNYagnVWp
e0NO28GQQuAcvloHiHOdWIGCrMLd9nTaQqNqTDeEqWhyc/0S9XTC1AbQDkXlNKSMMoeqpym6
hzidzDshqnzN/8jzeuYnaas/nar8H74Oy8SJPVFSi1IKy7jQRYW7cWFpC/npBckI4PIT1zrZ
zU846czCpxocZyHi/LjQOXmmYGPjxG0bdwODQBcpcYD9uhtX3N02wUtZJvaG+pnZoFD3MlsM
IaaXarS7vkv5m7iafNyzdeXjszqCXf+5rCKAj0+rCOCjhO5aDOX+jicZDBo8Yz+25V8VnBbs
iYI9qbZiwZ4r2PN3srzJ7YzIVsNotLkQomKZcaFLFJZSKBtqbMX6QhGGDm94XUcroJcTWitO
yub+8enbkzf/cqdl8xN1r7qz+oqyt8pk41+tcutDbudwRUVHFZ2puLdWxZIqlqbis5UVyZIX
CrR5vC4nFKJFeUqswrEPKwkTsNWSmcweTynDrI+jlGHox1EqMP1nkGqXSLX7WFIpnR6MH+mR
tGoslMvm4+nXWCi9ayGLadpYKOMrkaXJXBKZy88ns8Z0o0kQaVBsG3jQNW2Dr6p5b6xjkozZ
vbiOITJmh+M65sc4cgeyYoCEydKG9pve3Zp2drZam8/+Uuq8H9pXV+ar+rq+0rPKkyYKO+vr
4XWfbpSBkbtjFHlQoVKKfFbR5KvpvCIsU4MlUucBi1xOTmEJaUWve7PrYnA+CwP19PboQJvX
wgpCeGZ3MjsfjuNuznp3hgToh5D+EU7yTTDRv/0mcnNjHteb+fDDzYVnxA+TqJf9eXFVWOXv
qBgRTVklwZ5yEIHqJqyRUBnFEahqwgoJlVEogYjciLVbSFcF18Y8421UyDkDqwOq8rOXdGAO
WQj/jZvvFfVqBNoGHjl5/H1Vmq6oX1DqTKmT0lJKS1MqezF3rnFVXMG5NefRMpxLV2WO4EiY
8pWFzuoQ4PLj+RjoDMECwwyezxrP67YjI0tggODTMb58VGUtXMmx6NR/7lLMARyiHL3YyTY3
s+8aoxdtCOn7449stA9v4DQtvOtUGAMa16wrdG1T+y3tFn4Efb/Z8EXYcIl0xtnmhD+h335P
q3WcIleJKhQUX2mB0TTOrykvIzYgSPs9T7ixN0B/98XD8aDfm86bMuzvwuBg+DgxNkIVrgGP
8My9Nw30hd+QVo7AAM+IKgJ3Avk6pK/AT/ile0WUfpmyS3+MGRrlmQBmxKc3Hy2j+vLgYZsR
ryKEsxAuQJQKUVoI9ZyxZSacOyu0fc4Z7EvKnLlay2Bkh/lhey8/yI86NTrwEKPJHUyGdNc4
JH1JTiYFKp9/MFxhsDFfwyIHYTEXF8MFqdI4uV/cmJ9+gws4YWvFFG8JfIVbIodAgPDTuYoR
5BQxjmylhQ0emW+MmooSpwVTdGeNMj8IBebGABzOtw/bo2Z+EHWFCmU6Ngxsi2E3FOzFTmI8
DzVs+7RvJGCtEAvF5+n53SLC0iV7SU8bzbAJs6cQ+HOTegfXj6myRN0A1t2mRfTJI5FJWcW6
B9kabkGNeGeyNcpQg7eYaufM/kdQrgYV74QEVdag4j1R2Ye8PlfBJRRYZcxxHGa9+ylrg9fO
RVwzAlUSdwC/HI4gHz1sAshB9VNsOJTnGI5GbazmaCLDi6ieWGHPbXLwSvXgeyFKV0fpBKVb
grJcjLKsoywFZWlQmogQg4HjDaI2xVui91+imyaRULHE1MRjAf/TkwexDGwZXI9YxVbvVdzN
B9nsUV5h947kW3d87Y9HcnkzhxV+cN7v8b1eX8J4kvsnfB/OPPLLrIf4IQ8ZNTLkVhjMc7Vk
jEaYcGH4qqZnJhjOandG60zwkdX0jA6aYA+j9Mr62q5LIQGMjNfWLxehGOek7HajcEYwNIAY
lT0Ok7RBJWxuuzsqFQUv5KC5LViskecmEOE7mV0nvIddIWCrtnBWgzyEgK3aglmN7xACtmoL
ZbwwecVzp/lT2/3oYjQhZAYhdT6TUC5AucVQZYAqE1DkXAkPkldDUOZgWPUzNfBnf4OlJRjQ
4WuDj47leBxDr+Ak2TPC4eSWDGfB34jwNbNNG+LSUe3R4rCh9+ugeZtGUzf910Hm/6TRmRO+
dfAgeBqTOhfWweOB7XTtBH+WTNjHyfkgjPbg4NBEDsFpjDzv2+u9f//b03ca1GDcD8VypwNi
qbgdKrcQ6o4FqFQD9NKT8B4IqHTqdgYJGL30UMR01gAHesYGZzNr0WKuno4sVzC/5uV+vYfc
RfqtfKcXa8QHQM3cSTMKure0lQD3JNHM00XN3NdH88zALhvO80Q7bqfeEE6tOSfxyzrRsKOl
zpS2aqVlOEbxde8qpbumtFUr3QunLL7ufaX0iSlthVJ6SpC5dHA0G/p9VRjPs+/baa8/fPUy
m8PfwsCzQl1dzMSDA3HjzSBsF5S7i3sM4IUOgMzVVwEQwbZDU1lMVuR6KM/6rCj0t97fXQ8x
wB5djyBRgkmv4271WWo92GZioVQ4IEQEA0IalZ7i21JdNT36WwM80dQP9XF0mWqh843NvjAE
38/AkXkynmGUj4KnyBI2baR5M6M5OBgM+EtxxiKqhMjyPoZQ6we/dEXu1Je9617jTPrUb+/z
IWk3I7+a/+KnqysuT17izqzLnhY3uyy9DYf/OrwiXs0id6Cud78Kr5wBn8R+3zP2FkdkKb7v
zc5uLiETLOipvawv2uz3TIrAfjQw4UHyQwoffh7JKgQLzjalmgRjLiHWL0uIlcfUyj+DXDXZ
qpOsQrHPo0SudFCa0Hf1+CJRhBbbudDi2CPyDGNWFviS5bopDsAHiXfCMeRoNRfplMuOxU38
ZzibhI9Y81gnKT8+ff0qj/ymObeM8Jft/UvoVzc7lt+nrxo7hded/adt3Br24CqCt/Uu7vKL
O7+UXtzncgBA4PCkdwB3pcDf5he3KfiyKFPoBRyaIdH9wS8LGG0/+Mc/X/58+OsvyIVg6SAx
adA/gBfq/APOQL797Tf/BVBLAwQUAAAACAAyci8uBb0vzqwAAABMAQAAFQAVAGRDeWxpbmRl
ci9kQ3lsaW5kZXIuaFVUCQADcF8lPvJYLj5VeAQA9AE2AH3QwQqDMAwG4Huh7xDwMmXgA+zo
QHYbk51HMVELtUpbh9vTrxWquMHooeFv8hHKWSIbjdQAFi8lfWUeHWeJT6SmfciZdWaqHeAc
4xNnNDsyGqR2W3ehhLV3u7yHg3NJQw8ZFoaEo9gGB6xGUdPlDDbcR8AbCQUmFuqdeuE5SAQM
QhysyF2FEb31Qsg90K7DAuVkV4F067p02ePXKf842R7KNikhjbKBPP/6nQ9QSwMEFAAAAAgA
3Ew2LjQS7I0mAgAAJQUAABQAFQBkQ3lsaW5kZXIvcmVhZG1lLnR4dFVUCQADoFguPvJYLj5V
eAQA9AH0Aa1UTW/bMAy9B8h/IHpKirQrett2WzoUwZAlSLrDdmMkxtYqS4Yk5+Pfj1TsNAaK
7LAZAWKTIt+j36NfSgI9PVrjNAVQFmME45RtNEVInNx6a/3euAIU35lovIufhoPh4Fx0B1/8
offc3faC67qkQL3Q0qLrBVZ4hJHyLgWzaRJp2BxhYc3OcHZuVEl2LNAzQBt9x1PDRQd4CeZu
TrHkLFRH2FEQyuC3kkFXWKaQJ+Hz97050JrCcTe0nqfFg4nc7yfsS3KgAiHzuYfRd5/AmleC
KdY16Yv6fckM3+/ya5yhZi5R2KIi4OjvJqb8hiNWBBih7fg2TYkxl/2ILEPjVJJ338KUuCPw
juBmesOjxkSoZUjtm43N0VyafEudJdPP5KvZE8udI2eYkV7XzIkzUf4noFeEFgJq08TuyZIr
Ujn+3DaNlKDGgJV4YeeNhty967mmtMxZbt6iqjY1GQ7g6vU39IxfXMd//mf82z6B20sGK0pN
cGKw0yFAp1uKWdBMjFjqKIpIpDA7MVFL4eQFTS6ZrVEosoJrqg1r0Z7Pe8iTva3mVCJSBzPW
GBy7sLU/4NkcXItJtJEdppAMQiIXfeAtDpfwsGDnVLxsDVuL2KNJFnzx9PXCZ3rOiCzkyZVn
t3CjLsNrL71eTnagA6r0Hl4G6WqW53cjpSuqKM+tri+hnOXfh/93cbdvPGVCFsHB2pqavy7u
1Ys7Fip5IfVxAo8PD4/DwR9QSwECFwMKAAAAAADcTDYuAAAAAAAAAAAAAAAACgANAAAAAAAA
ABAA/UEAAAAAZEN5bGluZGVyL1VUBQADoFguPlV4AABQSwECFwMUAAAACACVTDYuuuuiFwck
AAAgnwAAFwANAAAAAAABAAAApIE9AAAAZEN5bGluZGVyL2RDeWxpbmRlci5jcHBVVAUAAxpY
Lj5VeAAAUEsBAhcDFAAAAAgAMnIvLgW9L86sAAAATAEAABUADQAAAAAAAQAAAKSBjiQAAGRD
eWxpbmRlci9kQ3lsaW5kZXIuaFVUBQADcF8lPlV4AABQSwECFwMUAAAACADcTDYuNBLsjSYC
AAAlBQAAFAANAAAAAAABAAAAtIGCJQAAZEN5bGluZGVyL3JlYWRtZS50eHRVVAUAA6BYLj5V
eAAAUEsFBgAAAAAEAAQANgEAAO8nAAAAAA==
--------------090909020908010200050607--