----boundary-LibPST-iamunique-627987861_-_-
Content-type: text/plain
Robert:
thanks a lot for your examples. I am already talking
to the EZ-USB-FX chip over the kernel32, but I am sure
there will be more such nitty-gritty details down the road,
and I do appreciate your showing me how to do the nominally
low-level stuff in a CP way, not the C way.
In my other project, am also now talking to a CAMAC SCSI
controller, and the DLL I am using is sometimes crashing.
I need to guard against wrong bits being sent to that buggy
DLL. Again, your example will be helpful.
It would be nice if the BlackBox web site contained
practical notes and Application Notes section. You see,
it is terrific to have this safe and abstract system.
But then I want to use it for something practical like
talking to an embedded ucontroller. Or processs binary
data coming from some other software system. Or something
of that sort. The examples they give are nice and many,
but "low-level" stuff does not seem to be covered. I do not
blame the company for not showing us everything imaginable.
Other companies have found a practical solution: a section
on their web site with practical notes, enginnering notes,
and application notes, contributed by their own staff
and perhaps also by the users. Look at the Analog Devices
web site. I know that ADI is a large company while
OuS is small, but I also do not expect to see hundreds
of notes.
Our company has left this to outside voluteers, what has
its limits. A more formal approach could perhaps be helpful.
Would be nice if the "knowledge base" on their website
was expanding. (Look at the Xilinx website, they have
a "knowledge base" section.)
Thank you again,
Wojtek Skulski skulski{([at]})nowhere.xy
On Tue, 18 Jun 2002 robert.d.campbell{([at]})nowhere.xy
> Wojtek
>
> I've sent the message below to the mailing list
> twice, but have not received my copy. Let me know
> if you get this please.
>
> Cheers
>
>
>
> Wojtek Skulski wrote
>
> >"My more immediate concern is how to make assignments of bit patterns
> >such as 0ABH to a variable of a given bit width. These variables are
> >directly mapped onto C-style DLL variables like UCHAR or USHORT.
> >I have spent considerable time reading C-headers and trying to match
> >these to variable types CP is giving me. The interesting part is
> >C structures and pointers to C structures.
>
> >Unless I am missing some part of the BlackBox docu, it seems to me
> >they have basically left this whole topic away. There is a page
> >about DLLs, but practical details are scarce.
>
> >In the past, every compiler vendow would have documented the bit
> >layout of their variables. This would make interfacing between
> >say Fortran and C doable. The BB documentatin does not say much
> >how their variables are laid out in memory. This becomes a critical
> >issue once I want to talk to an embedded 8051 microcontroller."
>
>
> The BB documentation addresses variable layout in memory and on disk
> in the language reference and Stores Docus. The mapping of memory bit
> numbers to (eg) INTEGERs is not documented as it might be platform
> specific.
>
> However bit 5 in a set is bit 5 whatever platform is used. It is an
> open secret that on PC's bit 0 is the LSB. What I gues you want to do
> is to set (and process) your bits using the SET abstraction, then map them
> to BYTEs using SYSTEM.VAL in a potentially platform specific way. (Maybe
> some SHORTs are also needed.)
>
> The example below uses this kind of approach to compute a file checksum
> using a 32 bit irreducible polynominal over Galois Field 2 - sounds fancy
> but is simple bit bashing. Setting the bit patterns using the SET
> abstraction is easy; as is converting in and out of INTEGER when required.
>
>
>
> PROCEDURE CheckFile (loc : Files.Locator; fInfo : Files.FileInfo) : INTEGER;
> CONST
> fDatSiz = 102400 * 2;
> mask = {0, 1, 27, 28};
> lowByte = {0 .. 7};
> VAR
> i : INTEGER;
> fIn : Files.File;
> rd : Files.Reader;
> fData : ARRAY fDatSiz OF BYTE;
> cSum : SET;
> BEGIN
> IF ~zpr.cSum OR (fInfo.length > fDatSiz) THEN RETURN 0 END;
> fIn := dir.Old (loc, fInfo.name, TRUE);
> IF fIn = NIL THEN RETURN 0 END;
>
> ASSERT (fIn.Length () = fInfo.length, 65);
> rd := fIn.NewReader (rd);
> rd.ReadBytes (fData, 0, fInfo.length); INC (xCnt, fInfo.length);
>
> cSum := {0};
> FOR i := 0 TO fInfo.length - 1 DO
> cSum := cSum / (SYSTEM.VAL (SET, fData [i]) * lowByte);
> IF 31 IN cSum THEN
> cSum := SYSTEM.LSH (cSum, 1);
> cSum := cSum / mask
> ELSE
> cSum := SYSTEM.LSH (cSum, 1)
> END
> END;
> fIn.Close ();
> RETURN SYSTEM.VAL (INTEGER, cSum)
> END CheckFile;
>
>
> Regards
>
>
> Robert Campbell
>
>
> (Aplogies if this is a repeat.
> I sent this yesterday but did not receive my copy!)
>
>
--------------------------------------------
To unsubscribe from this mailing list, send a message containing the word "unsubscribe" to:
blackbox-request{([at]})nowhere.xy
To get a list of valid e-mail commands and instructions on their usage, send a message containing the word "help" to the above address.
Send any problem reports or questions related to this email list to the list owner at
owner-blackbox{([at]})nowhere.xy
Current posting policy:
a) To post you should use the same address by which you are subscribed to the mailing list. That way, the list server will recognize you as subscriber and forward your posting immediately, without creating any overhead.
b) If, for some reason, you cannot post from the address, by which you are subscribed, your message will be moderated to avoid spam. Please understand that moderation will often cause some delay, in particular over weekends or holydays.
----boundary-LibPST-iamunique-627987861_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFJvYmVydDpccGFyDQpccGFyDQogIHRoYW5rcyBh
IGxvdCBmb3IgeW91ciBleGFtcGxlcy4gSSBhbSBhbHJlYWR5IHRhbGtpbmdccGFyDQp0byB0aGUg
RVotVVNCLUZYIGNoaXAgb3ZlciB0aGUga2VybmVsMzIsIGJ1dCBJIGFtIHN1cmVccGFyDQp0aGVy
ZSB3aWxsIGJlIG1vcmUgc3VjaCBuaXR0eS1ncml0dHkgZGV0YWlscyBkb3duIHRoZSByb2FkLFxw
YXINCmFuZCBJIGRvIGFwcHJlY2lhdGUgeW91ciBzaG93aW5nIG1lIGhvdyB0byBkbyB0aGUgbm9t
aW5hbGx5XHBhcg0KbG93LWxldmVsIHN0dWZmIGluIGEgQ1Agd2F5LCBub3QgdGhlIEMgd2F5Llxw
YXINClxwYXINCkluIG15IG90aGVyIHByb2plY3QsICBhbSBhbHNvIG5vdyB0YWxraW5nIHRvIGEg
Q0FNQUMgU0NTSVxwYXINCmNvbnRyb2xsZXIsIGFuZCB0aGUgRExMIEkgYW0gdXNpbmcgaXMgc29t
ZXRpbWVzIGNyYXNoaW5nLlxwYXINCkkgbmVlZCB0byBndWFyZCBhZ2FpbnN0IHdyb25nIGJpdHMg
YmVpbmcgc2VudCB0byB0aGF0IGJ1Z2d5XHBhcg0KRExMLiBBZ2FpbiwgeW91ciBleGFtcGxlIHdp
bGwgYmUgaGVscGZ1bC5ccGFyDQpccGFyDQpJdCB3b3VsZCBiZSBuaWNlIGlmIHRoZSBCbGFja0Jv
eCB3ZWIgc2l0ZSBjb250YWluZWRccGFyDQpwcmFjdGljYWwgbm90ZXMgYW5kIEFwcGxpY2F0aW9u
IE5vdGVzIHNlY3Rpb24uIFlvdSBzZWUsXHBhcg0KaXQgaXMgdGVycmlmaWMgdG8gaGF2ZSB0aGlz
IHNhZmUgYW5kIGFic3RyYWN0IHN5c3RlbS5ccGFyDQpCdXQgdGhlbiBJIHdhbnQgdG8gdXNlIGl0
IGZvciBzb21ldGhpbmcgcHJhY3RpY2FsIGxpa2VccGFyDQp0YWxraW5nIHRvIGFuIGVtYmVkZGVk
IHVjb250cm9sbGVyLiBPciBwcm9jZXNzcyBiaW5hcnlccGFyDQpkYXRhIGNvbWluZyBmcm9tIHNv
bWUgb3RoZXIgc29mdHdhcmUgc3lzdGVtLiBPciBzb21ldGhpbmdccGFyDQpvZiB0aGF0IHNvcnQu
IFRoZSBleGFtcGxlcyB0aGV5IGdpdmUgYXJlIG5pY2UgYW5kIG1hbnksXHBhcg0KYnV0ICJsb3ct
bGV2ZWwiIHN0dWZmIGRvZXMgbm90IHNlZW0gdG8gYmUgY292ZXJlZC4gSSBkbyBub3RccGFyDQpi
bGFtZSB0aGUgY29tcGFueSBmb3Igbm90IHNob3dpbmcgdXMgZXZlcnl0aGluZyBpbWFnaW5hYmxl
LlxwYXINCk90aGVyIGNvbXBhbmllcyBoYXZlIGZvdW5kIGEgcHJhY3RpY2FsIHNvbHV0aW9uOiBh
IHNlY3Rpb25ccGFyDQpvbiB0aGVpciB3ZWIgc2l0ZSB3aXRoIHByYWN0aWNhbCBub3RlcywgZW5n
aW5uZXJpbmcgbm90ZXMsXHBhcg0KYW5kIGFwcGxpY2F0aW9uIG5vdGVzLCBjb250cmlidXRlZCBi
eSB0aGVpciBvd24gc3RhZmZccGFyDQphbmQgcGVyaGFwcyBhbHNvIGJ5IHRoZSB1c2Vycy4gTG9v
ayBhdCB0aGUgQW5hbG9nIERldmljZXNccGFyDQp3ZWIgc2l0ZS4gSSBrbm93IHRoYXQgQURJIGlz
IGEgbGFyZ2UgY29tcGFueSB3aGlsZVxwYXINCk91UyBpcyBzbWFsbCwgYnV0IEkgYWxzbyBkbyBu
b3QgZXhwZWN0IHRvIHNlZSBodW5kcmVkc1xwYXINCm9mIG5vdGVzLlxwYXINClxwYXINCk91ciBj
b21wYW55IGhhcyBsZWZ0IHRoaXMgdG8gb3V0c2lkZSB2b2x1dGVlcnMsIHdoYXQgaGFzXHBhcg0K
aXRzIGxpbWl0cy4gQSBtb3JlIGZvcm1hbCBhcHByb2FjaCBjb3VsZCBwZXJoYXBzIGJlIGhlbHBm
dWwuXHBhcg0KV291bGQgYmUgbmljZSBpZiB0aGUgImtub3dsZWRnZSBiYXNlIiBvbiB0aGVpciB3
ZWJzaXRlXHBhcg0Kd2FzIGV4cGFuZGluZy4gKExvb2sgYXQgdGhlIFhpbGlueCB3ZWJzaXRlLCB0
aGV5IGhhdmVccGFyDQphICJrbm93bGVkZ2UgYmFzZSIgc2VjdGlvbi4pXHBhcg0KXHBhcg0KVGhh
bmsgeW91IGFnYWluLFxwYXINClxwYXINCldvanRlayBTa3Vsc2tpIHNrdWxza2lAcGFzLnJvY2hl
c3Rlci5lZHVccGFyDQpccGFyDQpPbiBUdWUsIDE4IEp1biAyMDAyIHJvYmVydC5kLmNhbXBiZWxs
QGJhZXN5c3RlbXMuY29tIHdyb3RlOlxwYXINClxwYXINCj4gV29qdGVrXHBhcg0KPlxwYXINCj4g
SSd2ZSBzZW50IHRoZSBtZXNzYWdlIGJlbG93IHRvIHRoZSBtYWlsaW5nIGxpc3RccGFyDQo+IHR3
aWNlLCBidXQgaGF2ZSBub3QgcmVjZWl2ZWQgbXkgY29weS4gTGV0IG1lIGtub3dccGFyDQo+IGlm
IHlvdSBnZXQgdGhpcyBwbGVhc2UuXHBhcg0KPlxwYXINCj4gQ2hlZXJzXHBhcg0KPlxwYXINCj5c
cGFyDQo+XHBhcg0KPiBXb2p0ZWsgU2t1bHNraSB3cm90ZVxwYXINCj5ccGFyDQo+ID4iTXkgbW9y
ZSBpbW1lZGlhdGUgY29uY2VybiBpcyBob3cgdG8gbWFrZSBhc3NpZ25tZW50cyBvZiBiaXQgcGF0
dGVybnNccGFyDQo+ID5zdWNoIGFzIDBBQkggdG8gYSB2YXJpYWJsZSBvZiBhIGdpdmVuIGJpdCB3
aWR0aC4gVGhlc2UgdmFyaWFibGVzIGFyZVxwYXINCj4gPmRpcmVjdGx5IG1hcHBlZCBvbnRvIEMt
c3R5bGUgRExMIHZhcmlhYmxlcyBsaWtlIFVDSEFSIG9yIFVTSE9SVC5ccGFyDQo+ID5JIGhhdmUg
c3BlbnQgY29uc2lkZXJhYmxlIHRpbWUgcmVhZGluZyBDLWhlYWRlcnMgYW5kIHRyeWluZyB0byBt
YXRjaFxwYXINCj4gPnRoZXNlIHRvIHZhcmlhYmxlIHR5cGVzIENQIGlzIGdpdmluZyBtZS4gVGhl
IGludGVyZXN0aW5nIHBhcnQgaXNccGFyDQo+ID5DIHN0cnVjdHVyZXMgYW5kIHBvaW50ZXJzIHRv
IEMgc3RydWN0dXJlcy5ccGFyDQo+XHBhcg0KPiA+VW5sZXNzIEkgYW0gbWlzc2luZyBzb21lIHBh
cnQgb2YgdGhlIEJsYWNrQm94IGRvY3UsIGl0IHNlZW1zIHRvIG1lXHBhcg0KPiA+dGhleSBoYXZl
IGJhc2ljYWxseSBsZWZ0IHRoaXMgd2hvbGUgdG9waWMgYXdheS4gVGhlcmUgaXMgYSBwYWdlXHBh
cg0KPiA+YWJvdXQgRExMcywgYnV0IHByYWN0aWNhbCBkZXRhaWxzIGFyZSBzY2FyY2UuXHBhcg0K
PlxwYXINCj4gPkluIHRoZSBwYXN0LCBldmVyeSBjb21waWxlciB2ZW5kb3cgd291bGQgaGF2ZSBk
b2N1bWVudGVkIHRoZSBiaXRccGFyDQo+ID5sYXlvdXQgb2YgdGhlaXIgdmFyaWFibGVzLiBUaGlz
IHdvdWxkIG1ha2UgaW50ZXJmYWNpbmcgYmV0d2VlblxwYXINCj4gPnNheSBGb3J0cmFuIGFuZCBD
IGRvYWJsZS4gVGhlIEJCIGRvY3VtZW50YXRpbiBkb2VzIG5vdCBzYXkgbXVjaFxwYXINCj4gPmhv
dyB0aGVpciB2YXJpYWJsZXMgYXJlIGxhaWQgb3V0IGluIG1lbW9yeS4gVGhpcyBiZWNvbWVzIGEg
Y3JpdGljYWxccGFyDQo+ID5pc3N1ZSBvbmNlIEkgd2FudCB0byB0YWxrIHRvIGFuIGVtYmVkZGVk
IDgwNTEgbWljcm9jb250cm9sbGVyLiJccGFyDQo+XHBhcg0KPlxwYXINCj4gVGhlIEJCIGRvY3Vt
ZW50YXRpb24gYWRkcmVzc2VzIHZhcmlhYmxlIGxheW91dCBpbiBtZW1vcnkgYW5kIG9uIGRpc2tc
cGFyDQo+IGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UgYW5kIFN0b3JlcyBEb2N1cy4gVGhlIG1h
cHBpbmcgb2YgbWVtb3J5IGJpdFxwYXINCj4gbnVtYmVycyB0byAoZWcpIElOVEVHRVJzIGlzIG5v
dCBkb2N1bWVudGVkIGFzIGl0IG1pZ2h0IGJlIHBsYXRmb3JtXHBhcg0KPiBzcGVjaWZpYy5ccGFy
DQo+XHBhcg0KPiBIb3dldmVyIGJpdCA1IGluIGEgc2V0IGlzIGJpdCA1IHdoYXRldmVyIHBsYXRm
b3JtIGlzIHVzZWQuIEl0IGlzIGFuXHBhcg0KPiBvcGVuIHNlY3JldCB0aGF0IG9uIFBDJ3MgYml0
IDAgaXMgdGhlIExTQi4gV2hhdCBJIGd1ZXMgeW91IHdhbnQgdG8gZG9ccGFyDQo+IGlzIHRvIHNl
dCAoYW5kIHByb2Nlc3MpIHlvdXIgYml0cyB1c2luZyB0aGUgU0VUIGFic3RyYWN0aW9uLCB0aGVu
IG1hcCB0aGVtXHBhcg0KPiB0byBCWVRFcyB1c2luZyBTWVNURU0uVkFMIGluIGEgcG90ZW50aWFs
bHkgcGxhdGZvcm0gc3BlY2lmaWMgd2F5LiAoTWF5YmVccGFyDQo+IHNvbWUgU0hPUlRzIGFyZSBh
bHNvIG5lZWRlZC4pXHBhcg0KPlxwYXINCj4gVGhlIGV4YW1wbGUgYmVsb3cgdXNlcyB0aGlzIGtp
bmQgb2YgYXBwcm9hY2ggdG8gY29tcHV0ZSBhIGZpbGUgY2hlY2tzdW1ccGFyDQo+IHVzaW5nIGEg
MzIgYml0IGlycmVkdWNpYmxlIHBvbHlub21pbmFsIG92ZXIgR2Fsb2lzIEZpZWxkIDIgLSBzb3Vu
ZHMgZmFuY3lccGFyDQo+IGJ1dCBpcyBzaW1wbGUgYml0IGJhc2hpbmcuIFNldHRpbmcgdGhlIGJp
dCBwYXR0ZXJucyB1c2luZyB0aGUgU0VUXHBhcg0KPiBhYnN0cmFjdGlvbiBpcyBlYXN5OyBhcyBp
cyBjb252ZXJ0aW5nIGluIGFuZCBvdXQgb2YgSU5URUdFUiB3aGVuIHJlcXVpcmVkLlxwYXINCj5c
cGFyDQo+XHBhcg0KPlxwYXINCj4gUFJPQ0VEVVJFICBDaGVja0ZpbGUgKGxvYyA6IEZpbGVzLkxv
Y2F0b3I7IGZJbmZvIDogRmlsZXMuRmlsZUluZm8pIDogSU5URUdFUjtccGFyDQo+ICAgQ09OU1Rc
cGFyDQo+ICAgICBmRGF0U2l6ICA9ICAxMDI0MDAgKiAyO1xwYXINCj4gICAgIG1hc2sgICAgID0g
IFx7MCwgMSwgMjcsIDI4XH07XHBhcg0KPiAgICAgbG93Qnl0ZSAgPSAgXHswIC4uIDdcfTtccGFy
DQo+ICAgVkFSXHBhcg0KPiAgICAgaSAgICAgIDogIElOVEVHRVI7XHBhcg0KPiAgICAgZkluICAg
IDogIEZpbGVzLkZpbGU7XHBhcg0KPiAgICAgcmQgICAgIDogIEZpbGVzLlJlYWRlcjtccGFyDQo+
ICAgICBmRGF0YSAgOiAgQVJSQVkgIGZEYXRTaXogIE9GICBCWVRFO1xwYXINCj4gICAgIGNTdW0g
ICA6ICBTRVQ7XHBhcg0KPiAgIEJFR0lOXHBhcg0KPiAgICAgSUYgIH56cHIuY1N1bSAgT1IgIChm
SW5mby5sZW5ndGggID4gIGZEYXRTaXopICBUSEVOICBSRVRVUk4gIDAgIEVORDtccGFyDQo+ICAg
ICBmSW4gIDo9ICBkaXIuT2xkIChsb2MsIGZJbmZvLm5hbWUsIFRSVUUpO1xwYXINCj4gICAgIElG
ICBmSW4gID0gIE5JTCAgVEhFTiAgUkVUVVJOICAwICBFTkQ7XHBhcg0KPlxwYXINCj4gICAgIEFT
U0VSVCAoZkluLkxlbmd0aCAoKSAgPSAgZkluZm8ubGVuZ3RoLCA2NSk7XHBhcg0KPiAgICAgcmQg
IDo9ICBmSW4uTmV3UmVhZGVyIChyZCk7XHBhcg0KPiAgICAgcmQuUmVhZEJ5dGVzIChmRGF0YSwg
MCwgZkluZm8ubGVuZ3RoKTsgIElOQyAoeENudCwgZkluZm8ubGVuZ3RoKTtccGFyDQo+XHBhcg0K
PiAgICAgY1N1bSAgOj0gIFx7MFx9O1xwYXINCj4gICAgIEZPUiAgaSAgOj0gIDAgIFRPICBmSW5m
by5sZW5ndGggLSAxICBET1xwYXINCj4gICAgICAgY1N1bSAgIDo9ICBjU3VtIC8gKFNZU1RFTS5W
QUwgKFNFVCwgZkRhdGEgW2ldKSAqIGxvd0J5dGUpO1xwYXINCj4gICAgICAgSUYgIDMxICBJTiAg
Y1N1bSAgVEhFTlxwYXINCj4gICAgICAgICBjU3VtICA6PSAgU1lTVEVNLkxTSCAoY1N1bSwgMSk7
XHBhcg0KPiAgICAgICAgIGNTdW0gIDo9ICBjU3VtIC8gbWFza1xwYXINCj4gICAgICAgRUxTRVxw
YXINCj4gICAgICAgICBjU3VtICA6PSAgU1lTVEVNLkxTSCAoY1N1bSwgMSlccGFyDQo+ICAgICAg
IEVORFxwYXINCj4gICAgIEVORDtccGFyDQo+ICAgICBmSW4uQ2xvc2UgKCk7XHBhcg0KPiAgICAg
UkVUVVJOICBTWVNURU0uVkFMIChJTlRFR0VSLCBjU3VtKVxwYXINCj4gICBFTkQgIENoZWNrRmls
ZTtccGFyDQo+XHBhcg0KPlxwYXINCj4gUmVnYXJkc1xwYXINCj5ccGFyDQo+XHBhcg0KPiBSb2Jl
cnQgQ2FtcGJlbGxccGFyDQo+XHBhcg0KPlxwYXINCj4gKEFwbG9naWVzIGlmIHRoaXMgaXMgYSBy
ZXBlYXQuXHBhcg0KPiBJIHNlbnQgdGhpcyB5ZXN0ZXJkYXkgYnV0IGRpZCBub3QgcmVjZWl2ZSBt
eSBjb3B5ISlccGFyDQo+XHBhcg0KPlxwYXINClxwYXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXHBhcg0KXHBhcg0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlz
IG1haWxpbmcgbGlzdCwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgd29yZCAidW5zdWJz
Y3JpYmUiIHRvOlxwYXINCiAgIGJsYWNrYm94LXJlcXVlc3RAb2Jlcm9uLmNoXHBhcg0KXHBhcg0K
VG8gZ2V0IGEgbGlzdCBvZiB2YWxpZCBlLW1haWwgY29tbWFuZHMgYW5kIGluc3RydWN0aW9ucyBv
biB0aGVpciB1c2FnZSwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgd29yZCAiaGVscCIg
dG8gdGhlIGFib3ZlIGFkZHJlc3MuXHBhcg0KXHBhcg0KU2VuZCBhbnkgcHJvYmxlbSByZXBvcnRz
IG9yIHF1ZXN0aW9ucyByZWxhdGVkIHRvIHRoaXMgZW1haWwgbGlzdCB0byB0aGUgbGlzdCBvd25l
ciBhdFxwYXINCiAgIG93bmVyLWJsYWNrYm94QG9iZXJvbi5jaFxwYXINClxwYXINCkN1cnJlbnQg
cG9zdGluZyBwb2xpY3k6XHBhcg0KXHBhcg0KYSkgVG8gcG9zdCB5b3Ugc2hvdWxkIHVzZSB0aGUg
c2FtZSBhZGRyZXNzIGJ5IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJlZCB0byB0aGUgbWFpbGluZyBs
aXN0LiBUaGF0IHdheSwgdGhlIGxpc3Qgc2VydmVyIHdpbGwgcmVjb2duaXplIHlvdSBhcyBzdWJz
Y3JpYmVyIGFuZCBmb3J3YXJkIHlvdXIgcG9zdGluZyBpbW1lZGlhdGVseSwgd2l0aG91dCBjcmVh
dGluZyBhbnkgb3ZlcmhlYWQuXHBhcg0KXHBhcg0KYikgSWYsIGZvciBzb21lIHJlYXNvbiwgeW91
IGNhbm5vdCBwb3N0IGZyb20gdGhlIGFkZHJlc3MsIGJ5IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJl
ZCwgeW91ciBtZXNzYWdlIHdpbGwgYmUgbW9kZXJhdGVkIHRvIGF2b2lkIHNwYW0uIFBsZWFzZSB1
bmRlcnN0YW5kIHRoYXQgbW9kZXJhdGlvbiB3aWxsIG9mdGVuIGNhdXNlIHNvbWUgZGVsYXksIGlu
IHBhcnRpY3VsYXIgb3ZlciB3ZWVrZW5kcyBvciBob2x5ZGF5cy5ccGFyDQp9
----boundary-LibPST-iamunique-627987861_-_---
Received on Tue Jun 18 2002 - 15:54:46 UTC