Erroneous behavior
Sebastien DECUGIS <[email protected]> Thu, 27 May 2004 16:23:39 +0200
| Newsgroups | gmane.comp.lib.phil |
|---|---|
| Organization | Bull S.A. |
| Message-ID | <[email protected]> |
--=-KdbXRDfItqtfagPFdSkX Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hi, I've run into an issue with pthread_cond_timedwait() and clock_settime(). The basics of my attached test is: clock_gettime() -> time in ts create a thread [thread] pthread_cond_timedwait() with timeout =3D ts + 20sec [main]clock_settime() with new ts > timeout In this situation, the POSIX IEEE 1003.1 (2004) standard states that the behavior of the thread should be as if the time had runned out (please refer to the clock_settime() reference, =A74). But when I run my test with a fresh nptl (cvs from monday), I have to wait for the timeout as if the clock had not been changed. Please note that even if I signal the condition, I get the ETIMEDOUT error code return (which is normal). I think this is due to the absolute timeout parameter being tranformed into a relative timeout in the pthread_cond_timedwait routine. Is this operation unavoidable? Maybe a workaround would be to wake every threads waiting (in pthread_cond_timedwait) on a given clock when this clock is set forward. At worst, it results in a legal spurious wakeup, if the time out is not expired. Please let me know if this is a kernel issue? Thank you, Sebastien. --=20 S=E9bastien DECUGIS Bull S.A. NPTL Tests & Trace project http://nptl.bullopensource.org/phpBB/ --=-KdbXRDfItqtfagPFdSkX Content-Disposition: attachment; filename=test.tar.gz Content-Type: application/x-compressed-tar; name=test.tar.gz Content-Transfer-Encoding: base64 H4sIAG34tUAAA+xbbXMbx5H2V27dj5jQZRnwQRAhynIsWrmCSUhmQpEqgozOdbliDXYHwFqLXdzO LiGcz//9+ume2RcQoOg4cuqqjhXFwL709Hs/3TMYPH7WDz/7tH8Hg4OD58+ffXZAf99s/PfgYPDN 88Hzz+iRr78+/ObZ4PApPT84ePbNZ+rgE/PFf6UtdK7UZ8XcRNk9mvjY/f+jf0++CtRX6jhbrvN4 Ni9UJ+yqpwcHz3rq+zJJ1Lg/7PeVGtJHvm9VbqzJb03U5/dyowsTqcn6hRqbibZFbFJ1YsJyFtsA T1zNY6uWeTbL9ULRx2lujLLZtFjp3BypdVaqUKdENYptkceTsjAqLpROoydZrhZZFE/XdAGkyjQy uSI7qMLkC6uyqbo1uY2zVD3FF9x5fX6tXpvU5DpRb8tJEofqLA5Nao3SFkSWuGjnzDO/8QoMjR1D 6lVGq+iCaEK+bQLUfEYqTpnEPFsST3NdgPNVViZE3KjSmmmZ9BQ9CjrvTq9+uLi+UsPzH9W74eXl 8PzqxyO1iot5VhbK3BqhFS+WSUykiZtcp8WaBMPbb0aXxz/QK8PvT89Or35UpJtXp1fno/FYvbq4 VEP1dnh5dXp8fTa8VG+vL99ejEdegB9JxXbOXM31rSFVhyYmAyqtQjL7QzSXZOkMpMAtPVwr5EjF U5VmRU+t8rgw9yq0p07TsN9TX3/LajUkqFFvEx0a9ViNS7x+eHhAfpfZgkz6ZqgOng4Gg8eDw4Nv eup6POzXDmU1v61jcoMiU5FZZCmZhXyRpJqUM1hmWczJO6ObMEujmyJemGil4UjBV0/o/9QTMgk9 ncObyG3TGWkjnWb5QqfEERE9HY1GalxEilLTYX/QQ1gcqlEUQxgFIp9HZhqnRt2Quk///eb4Znxx fXk8woODwdMzYvfzOA2TMjLqO8dNf/6n5lVbRDqf3b0YZ3evJfGELqrm1TIlZ7xLMydpcLF11Sz0 cp7lZuNpk+fp5mJQFpYiFa2MSg35CgwbJln4/saaAvdVTm4L4VmbxXppSBmK1i7DIvg52PPaX1Cg fLgpEHmL4sNRfUPMguthGtF1eVWBtl2akG7gIy1C9+K0UGGRJ+5jHh4FvyjyKg3T3dATQeBt8eps +Prm6vTN6ATBpjoD9d13avB1l+0dUxqjyCQR4LeQaVqmIdvTfIgR0ezh2i+tSDsUaSRii/zw3fAv o3OlKvLPfhX5NHN0KcnxU6n5UKhpomcU9ZZf31zx+OL8BItWKx7yinh5kmWJoQyqrc3CWFersMVI x5W7tgienr8bnl41RHjKBI/ncQKeYCE1ywqmwiZUMD7RJkK1sq/PL0fji7O/jk46ediD9bvqb8HP 9G9vSU5YTDv79SPqeDgevfhbqkYs/BcRhf0Xlr6/MdbqmeEv+z3lKLGKiGxX6B4pUIUaOwP68rfg l0CimP6QFsQTxGyS+J4Et1kcbdzquGsUdV24KbuTgY/V7kS3o0K9VJ3mpS69QU8Fe6QlqMLVIVs4 9dBye0SIXmt7Pp7tRMXjP8H9u3DgqergwT+8VAfdYO9n1dKioVS6f53qScI5iFeSBVBrGoLsQyO/ OIbG8SyltA2WlpTR0sKbkIvSStIcLqxBFGmQ+QVbCCv1Py+bXuHFHKWFr7fIno33MuI72OP387Ah cjvVitgU3T3lFSCfnAjQxi9qRS5nVKfjiUEt6tEjd4XZe9QOgq481PV8jo34KSLIMoPQcZNezW5L XIljcLH5yshnkF2v+vvyMrNxnVZ+IRZDeMNhd/pGmf427yjTbZ6401Ho9TJP1fn12dkRwqfh3ick SFDFUpTdhPYGt/BNKm6VyVbIcoV+T9kFXuXQQyicSCXtc/QhtGpKHHgbISefbJkULw/YmE0/0kWR E2ehPrpbTLZWEikj9WU4BV/YrCyF7TVqS7DHvMd4QYUx0WBrOmwwy4AMSNdxSolUJ/F/myqzqlud 2yqJM29G/O/kqg+DksEfCau4QPzhgrC5zR2wROcRRwls9KvdocGiJkg01aRYYcv5wOaylZpl5VD/ liVZI6AmGD6b/GTC4p6F/aJID79xaajfy1tzUBU/yoxkqRgv9iuG2CYc0rSYWIhCX7lvdf06oSBp rBUpW4YhFSyC9slaEV5Ux2P2+z4VryolvXYpyXMl4XF6siUVVEaYmYIfgyGgEgqXX6sTIqGcN1Oj lS3aPNxjIOH6eG6Iy9Xc0Gs5ygY6M+tEsWtbmIWTpBZDQOFMQGGHmCbWC/tRzhl2buedY7OVtapl 7AOWoWx97zq2Wuexoh5CU3+Tl4BPhGizguDIO52nFPQvmlIz4l05fBdmeV4uCWg5ixObJiEykjWg syirkzJUBaa8Q7VRNHsTQWdPiwSGJd7mZsmtiSu+wKJ0QS8MlWTJMXvuer+4vaEmLXSe27wsVwvr P/8rdSZHYPPpgcJ3T5nJUQD475Sl6vzoOAq50xeGBFvwWxu+zA91HhVzSWG9ViUik51csZAbNvuI V7ultVvYu4Zj7Oxu0V2gOtkyb7FLNYwqY4VhdoO1R64Ut7lU6gFITbfS7d6exzY+1Txqwqyuxybs HvcBhIqjX8eSgwebTO3ZcG6im3VskqgjZD+ui3+AMpzJfBxcVWYJ3RAJpoN9gCB8OPinhxM4Jpxh rtOZ2ZJcb3VSmn6/3w6kd8C9jx0W3nwFftmTWlLkWVRS37+gVL+ggiENWpY2wE3Da3Ynvfv19NCs B+YbYftSPT949scDil0E7+iDDguqPQPK0OY9ShB1e8xcJbLP2Y5yBjzAITRtIvpWUrkr3rZk+2vF sy3xVEfPdJx2NyK4CWNXmXgNNX1ZM3qRVRlLb281dof0Zgj9IyJI2H4d34ofZlwuHaPEZ7Zckk1K wgzcbqG6MHt34q7h31x6GWqiY2sIPqfCJO0Xkvqme1+ads9hf7/c5ohs5raqcaqTO9JHHfU1dq7l Up1ZlkV/6HrhINqfMzddbZabDcl+omc6vtg8OE85ykx1qilD1yVlax+3beVPmJ/xD3jiXtVFhPDS rGioMF7Qp1gjM3TIZygmZOjrlOqEa0wKWsOhvb0KD/sW17fbR8Hn8RTDvZOL8enr8+HZHht/G6S3 TJ1B/d+hD7uFN6eVzw19n+4yEArHTw9wl09ZVP9ZHlvnIz8GaULWiZb8HxdWCuQ/r4o9vreKMaNf PVHy1qcuQ4d5xJ+6VTtY93sthODnsWCviiPOu5hauGxb5fBWXuOy5EYurPoX6ouIB5zcarbQTfXm 9in0Cz8a3Zls/21/bez+i/0027+f8NykLs7o227CMhm7Q5b/57tF1+uEmD6XS2wLpTNLSWm1o8m9 iagXyLN1lR4e0Noy/+69tufvbKPrVR46Uzj2jfHDVpIsUi3z8MHdG05WW9eop3MyD+P5XDWPe0Og qRrAVbO1BV3t4IPOZ2EPwDiXwfbtf/wnD9qwa0dgpLi5enPZ4w/H42rqxiO3oJ5zXKFXxVY4w2+P M8CYo/CS8gp2yDo342N2vMsx5BayqnX3+Ozi+C8349HZ6Pjq9OK82xqoXJFTUwtL76H0kAcmMbug WwYPV97LMTg2iZHR49Z3jsdCn8GIIwIrPB6cyRzZceguddvd+NhJ3BhgehAiVm9MMBu9fptInWi4 4+euAe0m9igXJi20q2QV0QEoIZYaZmeb//77/2enx6Pz49EnXYPPfzzbdf7j2eFgcIDzH8+eY6v3 2SHOfxz+//mP3+dvbw+bgLz5PzofXQ7P1Nvr78kpFDvGeBTIA/T3V3/Woqf+XKZGDb79dhAEzaMj x126+Mdve3zrI+cAAqb59betgwC9u+cAejgI0DgJoHASIFCjW5OvM+ICZxFMvogLlDfMB3CkAYCw cZ6Enp3Q0gvcjI0NZNOC3kzcAQcybIlA5cMaMmJATqACHluG2TpJshXOvACwgfG3VAoWFPSkAAVg 7ihZnggvMuRSLzn+UdKnoisc8t6JXuk1Dr/kAQ7ERBjVEkyZ8/PEvJtyxEVfqe/XgMNFri3xt/2k RuBPavCQqyCwLEvNSo1DJGQHLKXuWwr3As/z48f0SHuKVonjz/BAUFILQ8vSkm/0Zaco2HWIZImD LXxcg/XjNo5aXhLUXvKlbWgwZWl0una9tj+Os5pnoFwW84xKSpgtyA/oyaC0Yj5iqTPOFr5F3+WR LeHCjNyFjwcFXtln8STX+XrX8Zg4JcCtoz4B0R/dcSYIi2NLYIZV7zjGzlOW4SCLegcotiLFLo1+ D220Tkb16l3bKeFZtwnlDNiDTwZUfUJDEl4Q+e2c2Tu+17SpLuAVAZ8J4u3T2jsasSMhc4c/6jHF d/IZu0LA8YSTYbQ0Tj/gYNcqtvNur1rKnzwiImUegnRkcJAJCkMHEReBf5Gclr42XmWkWY/+Kjbo dXI+RTyGwiWIpCo1K+HX6/3I7dM5cu8BUz1dmdZb4yAsW+cqw6sFAQ8JHTn81qvPwzhd5kBzMcMT K+RJGZM4CshZkZ74cFLKoe4WccfoiHG4tH0vtzJYJTfVCTd5qh9cyTutVSikbcLDeEp3Ji+ADumJ Jd2MJ3FCfbPLQ6AsGg22WrSpyR44cuqvTt2xKl5laB/4wFXPP7GVnC1DdC1O5T2/kRTQtyJmiTln qKkhQrwO1V4182M08o6YSKWkHOSVWgusV4QRn1/rS5TxuxvuTK+sOcB6las13IvuBg3Pw6lGcomK Dzsnl6BnFt4Z+IyhTCHX4jD0Kc4DbxrEsNnmJe78zYpsWpilfaE6gy7XJSmTba2TWwadp13SH8W5 c5NGZVrNY1IqdGT5ZmJmFOZc8SxXY1fyek0Ltw9PNtdjroeJJQ3BFkbDYpw+v7ReFFBFsJBA4vAc jd7hncMFrHDjqzAfzSQglUa2MoWk0zSrjzJiSZauVWzIEKfTOzWGmY/lmKalFI5VeJcNrC21tRh7 peAvcNnCNj2I2HUmwwEY7xxyANLVdB7dkkliaoYxbhaRUGRIEVTaF7beF2A2uIhY2QYEAUrN6Ez8 LoGnFbh69CU9sCwF/Iu7vMLtZN3jRZrpCSxxd0mlm9YKcZiRhKISwtK74rjE7QJ19p3h3MoZhA80 8d4GsmMuEjeO06IyUnBqUXpVOSFEnEbxbRyVYEplE04kskiFZ3rYNDPkmyFHm0yoazL0XypDhhD0 uu+SJk6yFmxmdh7W+EJHfKoXswLHIanACSThN6kwVCSu6VzrSwc3kOXpMvRePacZmPU9BlvC/lXk cn3yY0TJhwgUkqBXpy/n64F4WyhoYJoB7fWDfwk+Co7p7tXo8s1YDc9PFAamp2h45Uzu8cXbH0/P X/fUyen46vL0+2vc4gffXJycvjo9HuICmD/oyxmbLVDJuSMrGxtSsjOf5e9dZgAyJLPZQEM1qL1L AOnqdHOdduZZguJi9dpB2wUhUNJ64zxzsOWENcfrdnjRF7XvvxX+qB+fGFJcL2DMUrHPZaEhA7jn vEc+uc+iTLREM6/sqQULQ3VOmdjtrlR3FJ+cXFNdzeNbshj5F1MR5muBE716ITEdMy8kOS0rzzq1 OXduUVbYvOFpA8BEL3AMVD0EJEB+b7qM9Sm3qs04G87ys8WChGKz1DOorPMDZUZKBNiK61UvYEEG 73wEN6rOhScxQVp3Ow28ZdR+c/V9IM8RUrmLDE5xOooIFHCYWLVPtWOfAmVI6f1WAILftQKw2hUX LSEZTAJ41ghZvMO5w5GkWEZlZWFjDnmqoETdu4pGtpwGeZneUb1Lyh7pmKhXnawiapRH6wMt7pWg AdazFHB7ygvCtlwDOI3GBVdEdcfRAr9yh9KgWQJ6pdyVUMYCcxND+JwTF8m5heNuP3jnTspUTpaX gNugZbGKrzuVkFFmpBIM+gJi9PohDavHao7Ml7aJY2DeJrgGbI5TjhBsCJUExCj4KM2bGv8GUM0y DsustImsTjmHczn5Ll1xv5KAEIwRHJPNp4I60lzmcUKEicaID0z7yn+k3huzREjAAxy6C+Q16ysW 8A/a41YmlM4PwuuJNTiZj1pGslWkAzzDILLuDxtAoK261m8e6nUC/oVDfW7aPU2mqqwknQ6DV4dj KNXO15aCI3F+LcHs2zVZSQDe2lHRDie6QaZgvgoeNfAXiu4H35l70Mye87T2HIfvmKJIlW93GJ8x XWYLJLPREyXXxYWwuzMV91wtFT9tAk1O7e1E6BL8th/rjJ1wg0BPKG63+CW5BgHuhTHiJCKFbWwH 2hcBD450t24CQl1a6SAqzDiNEymfIemWFUsyIrydyzENi7zqd9y5F2R9S84RCj4D8eEJ53jyVF/4 mNzhg30TCqjINvRFynGR5Vpbyukgs6LizHcZgOVFVdb5mpVSZ6I7KdAZlmnwewy7sykfamkiKsoR 2q2ioQXvzyhRHI1xHlVU4EC7kIAv/SJ+2PXQvVK9L/QpfkkDXIk9E5nNcHeA8VSuUYYozzjhKdFS gm30hKJK+KhsWGFIT7R9FkZEwPX49QZBBoluD1ZmTHlElTZHtuDGUPHEHlojoxBQgkOLP6VpVlJ2 wRDQFWEOilbGU1sznmYC7sLu3qcDTEv9S88jsMo/XBQIH9UL3XpgwdM1jvjWr+Q4Azlts7mYwmbA uDJqksTXL5BT3Oxm6jY2q42cyFRqhNcZfQgNp6sX/kctVckurEmmfubobcA/d6M/1Dou6ZUniPJl SpC2VN6TJNbKQF6auwjhv8o4lxGMUNwg1u8ScvdzE352IUMFnsm5alL5K69Zhwc3o0EMLED3eVvH Gjd4YQWhneRXBAztDM0e1yXMHib80wubYZOIR7mARjkjxBp34GGLM5/wMyxgHd5bkI5v0YcVc5O2 YlAsC8TDIdrDHItn1bWcGZW2in0OpY2ExPMO3uNuLo2hc1lULwQbTmf1oqEVeptTD/eYkmKkNYlt q6gEm0WFE2sTcLqiJTR8U+je8lkoaGtABsD1OET6PAEBHgxTD/EBI3Fn+gCmzd0yHmSWXC1kHIJf baD5FLFyM9N5RMWA7U8vqRXKtAzHrujFXmObAJzy/L2oEqbTExcjAKPG/I+Bqi2C5ugIP8/h7i7H jgahAGZWBgH03JEiK825caiX4vYmMB9MLu2vH5zJbAgjjGSrshsNVJYTnEt4n/XW+982KEAyn6Zo LWLZyVkg0+nZDFryZF3PI3JAK9sIBZtYixOkO/ewE4l08V2r2ywpMdSfUtdriyzHj8ckp9fyCfat s9Ak9/mvwZ2kTfZpdClbq9zh/VB9U4RN7tFCSjH18OdpFzVKjt9XM3CyXlgWnG+AyLbU32DsI27A PDxVjKJ2gShKBhiZuZiSkQZOtVf4aRhSTV4CruBHy/UvBjHnLeSQO8+UuRAuKDIIQfFBWjApAKpu Qnou5n3UNn8kvRsJSq1pi8MGdsYLiVq20HlM/l/6wVA9JETRETR2RCrsVYjsrmS6iieG3D0cyImF HOkMPwKQX8yJXGujc96oqdsKBkicENY9B8gdgkqxnSUD6FQ29BgYuR0u3yGg+pncY22nuKa/9rgK i+6ZwqbGW7/VbhunZQcGflKAH2aD3foXSf4OG4S7vCuWH1hzGDR6VsanrjCzgaT2b+xD7RAZGIWn ZzohXlLJZw7GuG1bGQ9MeXyYAokiU1Lbdmfc4ccIKHp4v+KvibU+HrwsbwVQdeV1aMtJL7k74DUu J746TET7BF2AXFobZNM6qchETHjhbUExx6KqnHgIm3FuUtvuzPgYYF/2c/g0dcW0TOSq0JfVA15d lvT7MXf4ouu0SIleKa67FursktJyZ9L4VTL7yhQ/9+dfD8vRU+6z3POSh/N4KTvKKNiBr19gLnZz MoY9mJAniW4Ch1oikvIHMvwtlA5sF+B3f7C48WC2d0eeZrjwFh+qhpvHYTePNwerUU8FapuvddC2 y7jQUSYdTbgDCWCnbh0JC/0TI4AFeTSj045ICI7fkxubRKCJRRrvOgkDqlG5NK3ukCcPmZB42/Kj UyKtlinjFua5WipwsP1/27u23raxI/x+fsWBX2IDitIt2m0XDgLQMm1zV5YcXez4bSWLttlIokBK SfXvO9/MnMNDSorR3QJ9ER9245g817nPN5OJcigHmuunR0r+ecdaCEaHiRVwALI1GidjQqf1mQkX yXlABlvHE01FMzWsBO/BVq37ysJcJ9GMVTYG2KE+Z26zMcqD0S82bOeXZp9ZWZOS2m4j37y8BrI9 04y5BDkXK3KaAlBJMEgjXBQcBrIG1v6tshlARRIIknAN+X8cRBf7NbRaaraEEUoF9ab/XiGQyw6U qnonzgNTBdlMBJiIKlZrwzbOd7YG84PTH54d8hN5JaFBzhVNNlADa1Vm0CIZLrKW99yzLOP50B0w TOh6HxKJWfFhuDQ7Xy80hLPQgpigz7855EJWVPAbvzBmHb4muDeQxW4B5A8i0cWQyrlIlnmGph9s 7v1drs65d6G3CZJcrRs+WJkhKOmS00w6CrdgYeu3D6OYSRw5zBe4+BK2radyNaRHIvzAxSAetC6b uQ/B3sDjnTivrOAk3Ws2zaQ/D9IhPnuvjuLufmQcUi45ctPTrSTGOF5RM7AbwftTDTAeDLKfSXAH CccnTzUy/0SDurU7XrMBizQ1Io4OZvTfJPZkxX75pnGIDRdHoQ4/tyWPwihxMVB+ZOq/seN1CGpo MJASP1xkx41OpBmXSNbfCFJEmLgeSwwS/G5dxN0si9ZIZ6cHkqEOQqHiKSPNoJHL503B+aoa4ER9 sCqo/s56Z1OFqwoApms6ildOcbVNnZMUoSJWEnm29N8n6bvjOFBTSoE45n00PLJ/tG3yLIqdwynE oj4zACVAXvu/NrMXjuWJkRJ4p5JzNmSJQuOk7qVnvU+XP0C8xp5KtnmRKbZQ89XErpu0PGuZgArZ GOZzZEIA7Zy6QurpVldFlh9bJOQuu4krSX3m9DSgfsQmWsFXTdHgkZak24SXoS4Q/MS8XjUe/lYg F4p/wudhTD9Xa7wEaofIq8wWmzmxaSrJIklgkA55UbuykvomTNsEaL0UEGveb/WZqv6dS4Tp7Qjz AO9p2n8XmTRxt+vRM9z1CkMJRtQW+ZbchO17hhQEzB3YCW4WEn5i9uYMw8l9gk1TLDNSC1zBwmF7 /xO5kWxV0D5kiyx52LFQyCeIgVbljndKh6Qdz+oy0DcSIx4giVxAaflwEF/yD5YvNlyQ9NkJSNEf X9M5LGlxhoGkWwpTpmzlierlIcCMT5v5hCRtVjxtFiVLbZFw08m8EuFpOHyARDUSlHT5FPdSkJZo IFcVQLkUEjLhtMigJrWQ22pTsATbE3Ojm9mofuafhOsD9ElZwSoQ6CdS3Wr0jMN1DqinsToJHGTc lo0H4Wi2vHlen5wLN9lknNdW6LJ8iqTBpl8KHXGtMMzKwa5dsRj9LR9fNb7CQFT8SuAZjvpXHJLH gVl7y/eY5oBae0iOeQGug9hapI5O413x70jhF5yDBLpvZ0npzDhqZ9GlPgmjEVWe50sJeJcsOBnX 8hT4bBMylvijcw2ioo5I070Movowy5dyATPSPjNGljLUypavTDMwBlm914IFfq1ufZUw0kUK/MTj JVQMqiYUQfyaZ2wTjhpcE5IpQ+KwUMyC6D4DnL6rkzilY0i/CQNM011tJVq1XO+IZ3Yi/tl2ybVm nOKDol4bEisrA/gE0gcOHMqOUQGhpd4paKWi/um2ymyFfrrI6Moc2cESQSqy61XW1rHrBrBEn8xm EncAEdB1v6R4ffXKGfTaFgPQC+k1ycUZEcR+K1ogPlnXP62VA0g4Z8lGwAItDKuDENGxKXWCdAaV uJTk1NNEtGsgi8nIz4mDkSIpWaAHS0Sx7bMPMGr6cZrPdlAGbLz80mYkzEEoOk7KoS+K9FtWSmME XDlAzdrwsjSua+N+SLrYALBiwU5o52ftEHsLx2DmAWGShs8g3Gnt5SorGLbuwkwlGFe/kPIIrJDs TkAX6INZSiQ2ZxEvgCOewiMoJc1BhMgQSDauXc9OOhjEVxFvxBXSHW9o05CL7o3lZjFNiwof6nxj juY8s7feeHfHkRBRGQDqVNOeQHgDqFW4EU5alRfHKtthNKrgeRBArRvUDiTmMoRuUXnhUAO1qfY3 ITX7mpA2914lNOQQtvuOoJEk23oMS+7sfPcJfNM3WqKasCUqoEt/aTvj0WFQA+5gW2EHf8JYOJG/ IQq11PxdjYMbRrVQGueItcVoqB+MYuhhvleetJqGXgv4fGQo5t44+cZ0h/j1nEs48kXK3cUM6wMf ZCw94lnLNKDESt9EjTiPSH5WrQWQ8Zd8MmfuXkmjXUd2YhaQyNkInJe+r4IA/FeuwqdWNyMj5Yvc ++yo/BFsw4wEjKoR/8mLyJP5tip16vV9v1q+/5/a9iLuRONhbEc3sb0b9K8H0a1Nhg4Ve2mvBnFs +1e2cxMNruMW3hvEeCMcCxjZYAB6q88/x19GcW9k7+LBbTIa0WgXjza6u6PBo4tubLvRA51m/KUT 343sw03cM30M/5DQeoajCB8kPfswSEZJ75oHBBB3kFzfjOxNv3sZDxit+4Fm5w+lc248NLSO++Sy vqmTaEjLPvHNe93isTk08v0t6V22bJzwQPGXu0E8pP0bGju5pRXH9Muk1+mOLxkIfEEj9PojOifa Ga1z1Oejce+60WkxNL5ptvwFcvjNnr9WjpAGoQMfJMPfbDQ0erCfx5EfiE6XxriNeh2+qMZFYrv2 sT+G1qB9dy/xgnEv4KBiexlfobz3nq6X3qRphuPbWM97OOID6nZtL+7QeqPBox3Gg/ukg3Mwg/gu Suj4gZEeDKRIWGTLX9u4PKKS+B40MO51sdtB/HlM+9lDCRgjuiZqw2EG924eEpocN9S8/BZ/Qr+o Lv+RyKhvb6NHAWY/KnnQMj1yu04VRBQVdUYXfZzBBa0n4WXRQnAguKLL6Da6joct44mAp1YwecsO 7+JOgj/Q74n06K67cirERZ/HuEX6Cx3ERnSd2BroUK8MPAha6zkaobmbfHlazd2gP9BFtz8EsdEk o8jyiun/FzHeHsQ9Oi9mp6jTGQ+ItfAGvqDVDMfEbEmPL8Vgv8zNyeDS8ROfs72Kku54sENjNHOf jhBDMq35C3FENjxrMQ3Y5Iqm6tzo7dka1z7aG7qKi5heiy7vE0gemccQLwwTPZO+jqDnyIKNi09p f/z+HgA/sP945UZgUhF7oxJhHbH+p798hMDtkbGjWg79zp1mnJFinecrUs5qDVU4yqC+TVF6qixf uP6jXBvyQSRMtim9/hHXTj1uuAwIJnBM+hUuhhg9gnNnHZStTV0XiA70BTs7PdeDUlCfLHbhQ1cR 50Ky6/VEU06VaeTBvM5ylDAEnQi7QuXkGVvDiv3XC/cy4/s4x4TfaI4FmUFfLCoVKIIZJAPhW7rV nBUZ76WaaRXYmCE8GIrHCHufu2w/2/An3hw4IXt+qWEru8ozaXybAwGl5a+cKlCQHwqYYAAoCPIj zpO/d4iB4ADekbGGDJUMPSXf49mSyp8ImEg6xjMq/BOPVS+m/ggkwieagYeA1mej55PM+7/orC8I yvV+uOcb3fRrdqNH6x02lKpCinrL/m6VDONRTuso6bNd+7m9/wDe7MyvRpc25he4CDk0f6YzPz1/ pDU/6dWU6cT4AqMDjhxfFVfxws8qdet/uqe/wiOCNOYPmvrvMYH5+329/f9YPb8xKErkEEGIEUEY TSQwQwukzBLWMrcEKfIlbUjqAcn4R0OUucQ9a3CNGjy15cSjqyqZ4BwLj+idZ19FmBpGP2baE6WU kooa0JU4KFU41fWSLOxvYto7+v75l1aDncHN1tZ5eefzJ/IltII0uhj2u2R7dB9Du/mcaULJwaLx vv2da1e/v2tXbNGUB5XuYWWQzjEPd6eriwceQSupfPTIOWTn4XRP78KFtAW48rpdwc3jLFeF+Xbr 4zX4r5V+Xd1trbak5kUerD7rP3NiRXMh1XycOC4R49wivIGMG+eDyUvj+EJQ+rR3aVrJJHF65v9p ahY5Dfn+iVbwlcMai3S5oQNLF+X795Dk7EqXm0zyur7iX2tIdLMMzUMxMr8CTsm39Nmpq3v3YGT9 epEWZ1YquQtTwoGfS6ZjKXh2pJpRRleF5qoCnJOqTsXZH9mzWaJQvpR6zRvFqU/039M4FwwVfwMy lWqLx3ybz7bL1PE4dOJ06ycSdFC1AGYRWCgqgnVyGuj3gM7fIT3GiEFix1IKekurOBXAYMozH1Kj yX7FauzN5OlrWrAI/ChAko10IB9tidXy5aeW/YlstSKbcx8SGC3yixb6dZSZq/C6JwrSuO4Bseuj LJo3qiIcoJ/wfjm2YYI6WN9ywCfZilAWTZCidf92xlwaS/gQjXHocK7PhNgXXcXJR1kJGRqM7Qpn DOLqpUelGB3chZBEKHx3IFFX1D0jg87Vz+zpdWH297rYDW3+v/vYHJ/jc3yOz/E5Psfn+Byf43N8 js/x+fHzH0t7HU8AeAAA --=-KdbXRDfItqtfagPFdSkX Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline