- GftThreads

From: [at]} <René>
Date: Wed, 27 Apr 2005 23:16:26 -0400

----boundary-LibPST-iamunique-842511577_-_- Content-type: text/plain We have been experimenting with windows threads in Component Pascal for a long while. As a matter of fact we have implemented a subset of MODULA-3 thread interface in Component Pascal. I can mention the most striking troubles we have run into: 1. Threads can not use Out or StdLog. We have develop ad hoc modules for multi-thread output. 2. Neither can they use ASSERT: if the assertion fails the system will hang up. The big problem is that Run Time Support, and BlackBox modules do use ASSERT, so even if your code avoid it you can be trapped and hang the system up. 3. Don't use HALT. 4. Finally: garbage collection is not thread safe. Which is a very big problem! (It was pointed out to us by Oberon Microsystem at the very beginning of our project). Cheers: René Dorta. Universidad de Carabobo. Venezuela. Douglas G. Danforth wrote: Folks, I have implemented a module GftThreads that works for simple tasks and operates in nanosecond response times (16ns on my machine). The simple interface (patterned a little after Services.Action) looks like. DEFINITION GftThreads; TYPE Action = POINTER TO ABSTRACT RECORD (a: Action) Do, NEW, ABSTRACT; (a: Action) Start, NEW; (a: Action) Stop, NEW END; END GftThreads. Calling action.Start puts the function action.Do into a tight loop running in a child thread. Calling action.Stop from the parent terminates this loop and the thread. The child shares the memory space of the parent. However, I am getting in over my head. The functions that the user places in action.Do must be 'thread-safe'. Neither Out.String, nor XYplane.Dot seem to satisfy the 'thread-safe' condition. They both work for a single Start-Stop pair but a second Start causes the system to hang (for Out there seems to be an interaction with the routines that write to the log and preconditions are violated). I would like the user not have to worry about 'thread-safety' and so believe something like critical regions are necessary. Does anyone have experience with Windows' threads that could give some pointers? -Doug --- BlackBox --- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy ----boundary-LibPST-iamunique-842511577_-_- Content-type: application/rtf Content-transfer-encoding: base64 Content-Disposition: attachment; filename="rtf-body.rtf" e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbWh0bWwxIFxkZWZmMHtcZm9udHRibA0Ke1xmMFxm c3dpc3NcZmNoYXJzZXQwIEFyaWFsO30NCntcZjFcZm1vZGVybiBDb3VyaWVyIE5ldzt9DQp7XGYy XGZuaWxcZmNoYXJzZXQyIFN5bWJvbDt9DQp7XGYzXGZtb2Rlcm5cZmNoYXJzZXQwIENvdXJpZXIg TmV3O319DQp7XGNvbG9ydGJsXHJlZDBcZ3JlZW4wXGJsdWUwO1xyZWQwXGdyZWVuMFxibHVlMjU1 O30NClx1YzFccGFyZFxwbGFpblxkZWZ0YWIzNjAgXGYwXGZzMjQgDQp7XCpcaHRtbHRhZzI0MyA8 IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwv L0VOIj59DQp7XCpcaHRtbHRhZzMgXHBhciB9DQp7XCpcaHRtbHRhZzE5IDxodG1sPn0NCntcKlxo dG1sdGFnMiBccGFyIH0NCntcKlxodG1sdGFnMzQgPGhlYWQ+fQ0Ke1wqXGh0bWx0YWcxIFxwYXIg fQ0Ke1wqXGh0bWx0YWcyNDEgICB9DQp7XCpcaHRtbHRhZzEgXHBhciB9DQp7XCpcaHRtbHRhZzI0 MSAgIH0NCntcKlxodG1sdGFnMTc3IDx0aXRsZT59DQp7XCpcaHRtbHRhZzI0MSB9DQp7XCpcaHRt bHRhZzE4NSA8L3RpdGxlPn0NCntcKlxodG1sdGFnMSBccGFyIH0NCntcKlxodG1sdGFnNDEgPC9o ZWFkPn0NCntcKlxodG1sdGFnMiBccGFyIH0NCntcKlxodG1sdGFnNTAgPGJvZHkgdGV4dD0iIzAw MDAwMCIgYmdjb2xvcj0iI2ZmZmZmZiI+fVxodG1scnRmIFx2aWV3a2luZDUNCntcKlxiYWNrZ3Jv dW5kIHtcc2hwe1wqXHNocGluc3R7XHNwe1xzbiBmaWxsQ29sb3J9e1xzdiAxNjc3NzIxNX19e1xz cHtcc24gZkZpbGxlZH17XHN2IDF9fX19fVxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH17 XCpcaHRtbHRhZzY0fVxodG1scnRmIHtcaHRtbHJ0ZjAgV2UgaGF2ZSBiZWVuIGV4cGVyaW1lbnRp bmcgd2l0aCB3aW5kb3dzIHRocmVhZHMgaW4gQ29tcG9uZW50IFBhc2NhbCBmb3INCntcKlxodG1s dGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIGEgbG9uZyB3aGlsZS4gQXMgYSBtYXR0ZXIg b2YgZmFjdCB3ZSBoYXZlIGltcGxlbWVudGVkIGEgc3Vic2V0IG9mDQp7XCpcaHRtbHRhZzQgXHBh ciB9XGh0bWxydGYgIFxodG1scnRmMCBNT0RVTEEtMyB0aHJlYWQgaW50ZXJmYWNlIGluIENvbXBv bmVudCBQYXNjYWwuIEkgY2FuIG1lbnRpb24gdGhlIG1vc3QNCntcKlxodG1sdGFnNCBccGFyIH1c aHRtbHJ0ZiAgXGh0bWxydGYwIHN0cmlraW5nIHRyb3VibGVzIHdlIGhhdmUgcnVuIGludG86IA0K e1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0 YWc0IFxwYXIgfXtcKlxodG1sdGFnNzJ9XGh0bWxydGZccGFyfVxodG1scnRmMA0KDQp7XCpcaHRt bHRhZzk2IDxvbD59XGh0bWxydGYgXHBhcg0Ke1xodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFy IH0NCntcKlxodG1sdGFnMjQwICAgfQ0Ke1wqXGh0bWx0YWc2NCA8bGk+fVxodG1scnRmIHt7XCpc cG5ccG5sdmxib2R5XHBuZGVjXHBuc3RhcnQxXHBuaW5kZW50MzYwe1xwbnR4dGEgLn19XGh0bWxy dGYwIFxsaTM2MCBcZmktMzYwIHtccG50ZXh0IDEuXHRhYn1UaHJlYWRzIGNhbiBub3QgdXNlIE91 dCBvciBTdGRMb2cuIFdlIGhhdmUgZGV2ZWxvcCANCntcKlxodG1sdGFnODQgPGk+fVxodG1scnRm IHtcaSBcaHRtbHJ0ZjAgYWQgaG9jDQp7XCpcaHRtbHRhZzkyIDwvaT59XGh0bWxydGYgfVxodG1s cnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIG1vZHVsZXMgZm9y IG11bHRpLXRocmVhZCBvdXRwdXQuDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5l DQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgfVxodG1s cnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWc3MiA8L2xpPn0NCntcKlxodG1sdGFnMCBc cGFyIH0NCntcKlxodG1sdGFnMjQwICAgfQ0Ke1wqXGh0bWx0YWc2NCA8bGk+fVxodG1scnRmIHt7 XCpccG5ccG5sdmxib2R5XHBuZGVjXHBuc3RhcnQyXHBuaW5kZW50MzYwe1xwbnR4dGEgLn19XGh0 bWxydGYwIFxsaTM2MCBcZmktMzYwIHtccG50ZXh0IDIuXHRhYn1OZWl0aGVyIGNhbiB0aGV5IHVz ZSBBU1NFUlQ6IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMgdGhlIHN5c3RlbQ0Ke1wqXGh0bWx0YWc0 IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgd2lsbCBoYW5nIHVwLiBUaGUgYmlnIHByb2JsZW0g aXMgdGhhdCBSdW4gVGltZSBTdXBwb3J0LCBhbmQgQmxhY2tCb3gNCntcKlxodG1sdGFnNCBccGFy IH1caHRtbHJ0ZiAgXGh0bWxydGYwIG1vZHVsZXMgZG8gdXNlIEFTU0VSVCwgc28gZXZlbiBpZiB5 b3VyIGNvZGUgYXZvaWQgaXQgeW91IGNhbiBiZSB0cmFwcGVkDQp7XCpcaHRtbHRhZzQgXHBhciB9 XGh0bWxydGYgIFxodG1scnRmMCBhbmQgaGFuZyB0aGUgc3lzdGVtIHVwLlxodG1scnRmXHBhcn1c aHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWc3MiA8L2xpPn0NCntcKlxodG1sdGFnMCBccGFyIH0NCntc KlxodG1sdGFnMjQwICAgfQ0Ke1wqXGh0bWx0YWc2NCA8bGk+fVxodG1scnRmIHt7XCpccG5ccG5s dmxib2R5XHBuZGVjXHBuc3RhcnQzXHBuaW5kZW50MzYwe1xwbnR4dGEgLn19XGh0bWxydGYwIFxs aTM2MCBcZmktMzYwIHtccG50ZXh0IDMuXHRhYn1Eb24ndCB1c2UgSEFMVC4NCntcKlxodG1sdGFn MTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0N CntcKlxodG1sdGFnODQgICB9XGh0bWxydGZccGFyfVxodG1scnRmMA0KDQp7XCpcaHRtbHRhZzcy IDwvbGk+fQ0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICB9DQp7XCpcaHRt bHRhZzY0IDxsaT59XGh0bWxydGYge3tcKlxwblxwbmx2bGJvZHlccG5kZWNccG5zdGFydDRccG5p bmRlbnQzNjB7XHBudHh0YSAufX1caHRtbHJ0ZjAgXGxpMzYwIFxmaS0zNjAge1xwbnRleHQgNC5c dGFifUZpbmFsbHk6IGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUuIFdoaWNo IGlzIGEgdmVyeQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgYmlnIHBy b2JsZW0hIChJdCB3YXMgcG9pbnRlZCBvdXQgdG8gdXMgYnkgT2Jlcm9uIE1pY3Jvc3lzdGVtIGF0 IHRoZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgdmVyeSBiZWdpbm5p bmcgb2Ygb3VyIHByb2plY3QpLg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0K XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH1caHRtbHJ0 ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFnNzIgPC9saT59DQp7XCpcaHRtbHRhZzAgXHBh ciB9DQp7XCpcaHRtbHRhZzEwNCA8L29sPn1caHRtbHJ0ZiB9XHBhcg0KXGh0bWxydGYwIA0Ke1wq XGh0bWx0YWcwIFxwYXIgfXtcKlxodG1sdGFnNjR9XGh0bWxydGYge1xodG1scnRmMCBDaGVlcnM6 DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRt bHRhZzQgXHBhciB9UmVuDQp7XCpcaHRtbHRhZzg0ICZlYWN1dGU7fVxodG1scnRmIFwnZTlcaHRt bHJ0ZjAgIERvcnRhLiBVbml2ZXJzaWRhZCBkZSBDYXJhYm9iby4gVmVuZXp1ZWxhLg0Ke1wqXGh0 bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxw YXIgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq XGh0bWx0YWc0IFxwYXIgfURvdWdsYXMgRy4gRGFuZm9ydGggd3JvdGU6DQp7XCpcaHRtbHRhZzEx NiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9e1wq XGh0bWx0YWc3Mn1caHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFnOTYgPGJsb2Nr cXVvdGUgdHlwZT0iY2l0ZSJccGFyICBjaXRlPSJtaWRBTUVUSFlTVDIyRHJlQkJzUXdZMDAwMDAz NzNAYW1ldGh5c3QyLm9iZXJvbi5jaCI+fVxodG1scnRmIFxwYXINCntcaHRtbHJ0ZjAge1wqXGh0 bWx0YWc2NH1caHRtbHJ0ZiB7XGh0bWxydGYwIFxsaTM2MCBGb2xrcywNCntcKlxodG1sdGFnNCBc cGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFn MTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1J IGhhdmUgaW1wbGVtZW50ZWQgYSBtb2R1bGUgR2Z0VGhyZWFkcyB0aGF0IHdvcmtzIGZvciBzaW1w bGUgdGFza3MgYW5kDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBvcGVy YXRlcyBpbiBuYW5vc2Vjb25kIHJlc3BvbnNlIHRpbWVzICgxNm5zIG9uIG15IG1hY2hpbmUpLg0K e1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAg fQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0 bWx0YWc0IFxwYXIgfVRoZSBzaW1wbGUgaW50ZXJmYWNlIChwYXR0ZXJuZWQgYSBsaXR0bGUgYWZ0 ZXIgU2VydmljZXMuQWN0aW9uKSBsb29rcw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBc aHRtbHJ0ZjAgbGlrZS4NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0K e1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxo dG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRt bHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBh ciB9REVGSU5JVElPTiBHZnRUaHJlYWRzOw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBc aHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0 ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAg IH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxo dG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0 ZjAgIFRZUEUNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0 bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRm MCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwn YTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYw IA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgQWN0aW9uID0g UE9JTlRFUiBUTyBBQlNUUkFDVCBSRUNPUkQNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAg XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxy dGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQg Jm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRt bHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxo dG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7 XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICAoYTogQWN0aW9uKSBE bywgTkVXLCBBQlNUUkFDVDsNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYw IA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUN ClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxo dG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2Ew XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAN CntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh Zzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICAoYTogQWN0aW9uKSBTdGFydCwgTkVX Ow0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0 ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq XGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1s cnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpc aHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAm bmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1s cnRmIFwnYTBcaHRtbHJ0ZjAgIChhOiBBY3Rpb24pIFN0b3AsIE5FVw0Ke1wqXGh0bWx0YWc0IFxw YXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcx MTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0K e1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFn ODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31c aHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBFTkQ7DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYg IFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1s cnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0 ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq XGh0bWx0YWc0IFxwYXIgfUVORCBHZnRUaHJlYWRzLg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1s cnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1c aHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0 YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCAN CntcKlxodG1sdGFnNCBccGFyIH1DYWxsaW5nIGFjdGlvbi5TdGFydCBwdXRzIHRoZSBmdW5jdGlv biBhY3Rpb24uRG8gaW50byBhIHRpZ2h0IGxvb3ANCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0 ZiAgXGh0bWxydGYwIHJ1bm5pbmcgaW4gYSBjaGlsZCB0aHJlYWQuIENhbGxpbmcgYWN0aW9uLlN0 b3AgZnJvbSB0aGUgcGFyZW50DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRm MCB0ZXJtaW5hdGVzIHRoaXMgbG9vcCBhbmQgdGhlIHRocmVhZC4NCntcKlxodG1sdGFnODQgJm5i c3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIFRoZSBjaGlsZCBzaGFyZXMgdGhlIG1lbW9yeSBz cGFjZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgb2YgdGhlIHBhcmVu dC4NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4 NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntc KlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+ fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9SG93ZXZlciwg SSBhbSBnZXR0aW5nIGluIG92ZXIgbXkgaGVhZC4NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1s cnRmIFwnYTBcaHRtbHJ0ZjAgIFRoZSBmdW5jdGlvbnMgdGhhdCB0aGUgdXNlcg0Ke1wqXGh0bWx0 YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgcGxhY2VzIGluIGFjdGlvbi5EbyBtdXN0IGJl ICd0aHJlYWQtc2FmZScuDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxy dGYwICBOZWl0aGVyIE91dC5TdHJpbmcsIG5vcg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm ICBcaHRtbHJ0ZjAgWFlwbGFuZS5Eb3Qgc2VlbSB0byBzYXRpc2Z5IHRoZSAndGhyZWFkLXNhZmUn IGNvbmRpdGlvbi4NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAg IFRoZXkgYm90aA0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgd29yayAN CntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgZm9yIGEgc2luZ2xl IFN0YXJ0LVN0b3AgcGFpciBidXQgYSBzZWNvbmQgU3RhcnQgY2F1c2VzIHRoZSBzeXN0ZW0NCntc KlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHRvIGhhbmcgKGZvciBPdXQgdGhl cmUgc2VlbXMgdG8gYmUgYW4gaW50ZXJhY3Rpb24gd2l0aCB0aGUgcm91dGluZXMNCntcKlxodG1s dGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHRoYXQgd3JpdGUgdG8gdGhlIGxvZyBhbmQg cHJlY29uZGl0aW9ucyBhcmUgdmlvbGF0ZWQpLg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm ICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRt bHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4 NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntc KlxodG1sdGFnNCBccGFyIH1JIHdvdWxkIGxpa2UgdGhlIHVzZXIgbm90IGhhdmUgdG8gd29ycnkg YWJvdXQgJ3RocmVhZC1zYWZldHknIGFuZCBzbw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm ICBcaHRtbHJ0ZjAgYmVsaWV2ZSBzb21ldGhpbmcgbGlrZSBjcml0aWNhbCByZWdpb25zIGFyZSBu ZWNlc3NhcnkuDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxo dG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0 ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcx MTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfURv ZXMgYW55b25lIGhhdmUgZXhwZXJpZW5jZSB3aXRoIFdpbmRvd3MnIHRocmVhZHMgdGhhdCBjb3Vs ZCBnaXZlIHNvbWUNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHBvaW50 ZXJzPw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh Zzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0K e1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxi cj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0tRG91Zw0K e1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAg fQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0 bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0 bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0tLS0gQmxhY2tCb3gN CntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAg IH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxo dG1sdGFnNCBccGFyIH0tLS0gc2VuZCBzdWJqZWN0IEhFTFAgb3IgVU5TVUJTQ1JJQkUgdG8ge30N CntcKlxodG1sdGFnODQgPGEgY2xhc3M9Im1vei10eHQtbGluay1hYmJyZXZpYXRlZCIgaHJlZj0i bWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCI+fVxodG1scnRmIHtcZmllbGR7XCpcZmxkaW5zdHtI WVBFUkxJTksgIm1haWx0bzpibGFja2JveEBvYmVyb24uY2gifX17XGZsZHJzbHRcY2YxXHVsIFxo dG1scnRmMCBibGFja2JveEBvYmVyb24uY2hcaHRtbHJ0ZiB9XGh0bWxydGYwIFxodG1scnRmIH1c aHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzkyIDwvYT59DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxy dGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxo dG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRh Zzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0K e1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxi cj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH17XCpcaHRt bHRhZzcyfVxodG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWcxMDQgPC9ibG9ja3F1 b3RlPn1caHRtbHJ0ZiB9XHBhcg0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wq XGh0bWx0YWc1OCA8L2JvZHk+fQ0Ke1wqXGh0bWx0YWcyIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNyA8 L2h0bWw+fQ0Ke1wqXGh0bWx0YWczIFxwYXIgfQ0Ke1wqXGh0bWx9fQBDaENXVlJGS1Y= ----boundary-LibPST-iamunique-842511577_-_--- Received on Thu Apr 28 2005 - 05:16:26 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:15 UTC