Re: Unsigned integer math in BlackBox

From: [at]} <Wojtek>
Date: Sun, 16 Nov 2003 16:43:53 -0500 (EST)

----boundary-LibPST-iamunique-982277013_-_-
Content-type: text/plain

Bernard:

thank you for reminding me of unions in SYSTEM. I will add unions
to my bag of tricks, though the spirit of BB/CP prohibits using SYSTEM
unless absolutely necessary.

There is actually a third way, that is providing good application notes
dealing with such low-level issues. BlackBox vendor is one of few vendors
I know of who do not bother to write application notes and reference
materials. The quality of the compiler is outstanding, but the quality
of its surrounding documentation -- well, we all know. I had to painfully
reinvent things which most likely are well known but undocumented.

Wojtek Skulski skulski{([at]})nowhere.xy
On Sun, 16 Nov 2003, Bernhard Treutwein wrote:

> Dear Wojtek,
>
> on the one hand I agree absolutely that unsigned should be
> available (at least in SYSTEM or some other low level module).
> It is necessary for interfacing ...
>
> but on the other hand your problem might be easily solved by applying
> low level system tag "union" and doing the old and dirty trick
> of overlaying different structures on the same memory:
>
> IMPORT SYSTEM;
>
> TYPE
>
> Dirt = RECORD [ union ]
> i : INTEGER;
> h, l : BYTE (* maybe also the other way round, i.e., l, h *)
> END;
>
> VAR
> dirty : Dirt;
>
> ...
> dirty.h := byte; dirty.l := byte;
> memPtr := dirty.i;
> ...
>
> I know this is against the spirit of BB/CP, but in the case
> of hardware interfacing/language interfacing almost anything
> sacrifices the means used.
>
>
> ----- Original Message -----
> From: "Wojtek Skulski" <skulski{([at]})nowhere.xy
> To: "BlackBox" <blackbox{([at]})nowhere.xy
> Cc: "Wojtek Skulski" <skulski{([at]})nowhere.xy
> Sent: Sunday, November 16, 2003 6:04 PM
> Subject: Unsigned integer math in BlackBox
>
>
> > Hello:
> >
> > I just reached a conclusion, that lack of unsigned integer math
> > in BlackBox is a royal pain in the bottom. If not for my respect
> > to our OuS friends, I would have used more explicit language
> > to describe their language design decision.
> >
> > Here is the story. For last three days I has chasing missing bits
> > in the memory pointer which I read from an field-programmable
> > gate array. As usual in such circumstances, I was suspecting
> > bad FPGA timing, or bugs in the embedded microcontroller C-code,
> > or perhaps bad solder joints on my PCB. It did not occur to me
> > that our rock-solid BlackBox can introduce subtle bugs. Right?
> > Wrong. It can and it did. Here is how.
> >
> > The FPGA memory pointer is read in two 8-bit chunks, an MSB and LSB.
> > The LSB contains lower 8 bits, while the MSB contains the remaining
> > bits. The MSB and LSB arrive in a byte buffer, and then they are
> > combined in the PC into one word. Written in the (vastly inferior
> > and known for its obscurity) C-language this would have been simple:
> >
> > unsigned char lsb, msb;
> > unsigned int memPtr;
> > msb = buffer [2];
> > lsb = buffer [3];
> > memPtr = (msb << 8) + lsb;
> >
> > In the (vastly superior and known for its clarity) Component Pascal
> > I have written code, which I thought was doing the same thing.
> >
> > VAR buffer: ARRAY 256 of BYTE;
> > memPtr: INTEGER;
> > memPtr := ASH (buffer [2], 8) + buffer [3];
> >
> > This is nice and looks innocent enough. Then the hell broke loose.
> > Sometimes the memory pointer was correct. But sometimes it was not.
> > Sometimes, but not always, bits were missing in the upper part of
> > the pointer. After three days of debugging it turned out that
> > the correct code should have been:
> >
> > VAR lsb, msb: INTEGER;
> > buffer: ARRAY 256 of BYTE;
> > memPtr: INTEGER;
> > msb := ORD (BITS (ASH (buffer [2], 8)) * {8..15});
> > lsb := ORD (BITS (buffer [3]) * {0..7});
> > memPtr := msb + lsb;
> >
> > I leave it to you to figure out why this obfuscated code is the
> > correct CP version of "(msb << 8) + lsb". It is also important
> > to note that the bug was showing only for some bit patterns,
> > but not for the others, what made it exceptionally hard to debug
> > the original CP code.
> >
> > I want to point out that the CP language is not complete. The unsigned
> > math should have been there. The users have been arguing with OuS for
> > years that the unsigned math is essential, all in vain. I hope that
> > I have made it more clear why the unsigned should have been in the
> > language.
> >
> > Thank you,
> >
> > Wojtek Skulski skulski{([at]})nowhere.xy
> >
> > --------------------------------------------
> >
> > 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.
>
>
>

--------------------------------------------

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-982277013_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIEJlcm5hcmQ6XHBhcg0KXHBhcg0KdGhhbmsgeW91
IGZvciByZW1pbmRpbmcgbWUgb2YgdW5pb25zIGluIFNZU1RFTS4gSSB3aWxsIGFkZCB1bmlvbnNc
cGFyDQp0byBteSBiYWcgb2YgdHJpY2tzLCB0aG91Z2ggdGhlIHNwaXJpdCBvZiBCQi9DUCBwcm9o
aWJpdHMgdXNpbmcgU1lTVEVNXHBhcg0KdW5sZXNzIGFic29sdXRlbHkgbmVjZXNzYXJ5LlxwYXIN
ClxwYXINClRoZXJlIGlzIGFjdHVhbGx5IGEgdGhpcmQgd2F5LCB0aGF0IGlzIHByb3ZpZGluZyBn
b29kIGFwcGxpY2F0aW9uIG5vdGVzXHBhcg0KZGVhbGluZyB3aXRoIHN1Y2ggbG93LWxldmVsIGlz
c3Vlcy4gQmxhY2tCb3ggdmVuZG9yIGlzIG9uZSBvZiBmZXcgdmVuZG9yc1xwYXINCkkga25vdyBv
ZiB3aG8gZG8gbm90IGJvdGhlciB0byB3cml0ZSBhcHBsaWNhdGlvbiBub3RlcyBhbmQgcmVmZXJl
bmNlXHBhcg0KbWF0ZXJpYWxzLiBUaGUgcXVhbGl0eSBvZiB0aGUgY29tcGlsZXIgaXMgb3V0c3Rh
bmRpbmcsIGJ1dCB0aGUgcXVhbGl0eVxwYXINCm9mIGl0cyBzdXJyb3VuZGluZyBkb2N1bWVudGF0
aW9uIC0tIHdlbGwsIHdlIGFsbCBrbm93LiBJIGhhZCB0byBwYWluZnVsbHlccGFyDQpyZWludmVu
dCB0aGluZ3Mgd2hpY2ggbW9zdCBsaWtlbHkgYXJlIHdlbGwga25vd24gYnV0IHVuZG9jdW1lbnRl
ZC5ccGFyDQpccGFyDQpXb2p0ZWsgU2t1bHNraSBza3Vsc2tpQHBhcy5yb2NoZXN0ZXIuZWR1XHBh
cg0KT24gU3VuLCAxNiBOb3YgMjAwMywgQmVybmhhcmQgVHJldXR3ZWluIHdyb3RlOlxwYXINClxw
YXINCj4gRGVhciBXb2p0ZWssXHBhcg0KPlxwYXINCj4gb24gdGhlIG9uZSBoYW5kIEkgYWdyZWUg
YWJzb2x1dGVseSB0aGF0IHVuc2lnbmVkIHNob3VsZCBiZVxwYXINCj4gYXZhaWxhYmxlIChhdCBs
ZWFzdCBpbiBTWVNURU0gb3Igc29tZSBvdGhlciBsb3cgbGV2ZWwgbW9kdWxlKS5ccGFyDQo+IEl0
IGlzIG5lY2Vzc2FyeSBmb3IgaW50ZXJmYWNpbmcgLi4uXHBhcg0KPlxwYXINCj4gYnV0IG9uIHRo
ZSBvdGhlciBoYW5kIHlvdXIgcHJvYmxlbSBtaWdodCBiZSBlYXNpbHkgc29sdmVkIGJ5IGFwcGx5
aW5nXHBhcg0KPiBsb3cgbGV2ZWwgc3lzdGVtIHRhZyAidW5pb24iIGFuZCBkb2luZyB0aGUgb2xk
IGFuZCBkaXJ0eSB0cmlja1xwYXINCj4gb2Ygb3ZlcmxheWluZyBkaWZmZXJlbnQgc3RydWN0dXJl
cyBvbiB0aGUgc2FtZSBtZW1vcnk6XHBhcg0KPlxwYXINCj4gSU1QT1JUIFNZU1RFTTtccGFyDQo+
XHBhcg0KPiBUWVBFXHBhcg0KPlxwYXINCj4gRGlydCA9IFJFQ09SRCBbIHVuaW9uIF1ccGFyDQo+
ICAgICBpIDogSU5URUdFUjtccGFyDQo+ICAgICBoLCBsIDogQllURSAgKCogbWF5YmUgYWxzbyB0
aGUgb3RoZXIgd2F5IHJvdW5kLCBpLmUuLCBsLCBoICopXHBhcg0KPiBFTkQ7XHBhcg0KPlxwYXIN
Cj4gVkFSXHBhcg0KPiAgICAgZGlydHkgOiBEaXJ0O1xwYXINCj5ccGFyDQo+IC4uLlxwYXINCj4g
ICAgIGRpcnR5LmggOj0gYnl0ZTsgZGlydHkubCA6PSBieXRlO1xwYXINCj4gICAgIG1lbVB0ciA6
PSBkaXJ0eS5pO1xwYXINCj4gLi4uXHBhcg0KPlxwYXINCj4gSSBrbm93IHRoaXMgaXMgYWdhaW5z
dCB0aGUgc3Bpcml0IG9mIEJCL0NQLCBidXQgaW4gdGhlIGNhc2VccGFyDQo+IG9mIGhhcmR3YXJl
IGludGVyZmFjaW5nL2xhbmd1YWdlIGludGVyZmFjaW5nIGFsbW9zdCBhbnl0aGluZ1xwYXINCj4g
c2FjcmlmaWNlcyB0aGUgbWVhbnMgdXNlZC5ccGFyDQo+XHBhcg0KPlxwYXINCj4gLS0tLS0gT3Jp
Z2luYWwgTWVzc2FnZSAtLS0tLVxwYXINCj4gRnJvbTogIldvanRlayBTa3Vsc2tpIiA8c2t1bHNr
aUBwYXMucm9jaGVzdGVyLmVkdT5ccGFyDQo+IFRvOiAiQmxhY2tCb3giIDxibGFja2JveEBvYmVy
b24uY2g+XHBhcg0KPiBDYzogIldvanRlayBTa3Vsc2tpIiA8c2t1bHNraUBwYXMucm9jaGVzdGVy
LmVkdT5ccGFyDQo+IFNlbnQ6IFN1bmRheSwgTm92ZW1iZXIgMTYsIDIwMDMgNjowNCBQTVxwYXIN
Cj4gU3ViamVjdDogVW5zaWduZWQgaW50ZWdlciBtYXRoIGluIEJsYWNrQm94XHBhcg0KPlxwYXIN
Cj5ccGFyDQo+ID4gSGVsbG86XHBhcg0KPiA+XHBhcg0KPiA+ICBJIGp1c3QgcmVhY2hlZCBhIGNv
bmNsdXNpb24sIHRoYXQgbGFjayBvZiB1bnNpZ25lZCBpbnRlZ2VyIG1hdGhccGFyDQo+ID4gaW4g
QmxhY2tCb3ggaXMgYSByb3lhbCBwYWluIGluIHRoZSBib3R0b20uIElmIG5vdCBmb3IgbXkgcmVz
cGVjdFxwYXINCj4gPiB0byBvdXIgT3VTIGZyaWVuZHMsIEkgd291bGQgaGF2ZSB1c2VkIG1vcmUg
ZXhwbGljaXQgbGFuZ3VhZ2VccGFyDQo+ID4gdG8gZGVzY3JpYmUgdGhlaXIgbGFuZ3VhZ2UgZGVz
aWduIGRlY2lzaW9uLlxwYXINCj4gPlxwYXINCj4gPiBIZXJlIGlzIHRoZSBzdG9yeS4gRm9yIGxh
c3QgdGhyZWUgZGF5cyBJIGhhcyBjaGFzaW5nIG1pc3NpbmcgYml0c1xwYXINCj4gPiBpbiB0aGUg
bWVtb3J5IHBvaW50ZXIgd2hpY2ggSSByZWFkIGZyb20gYW4gZmllbGQtcHJvZ3JhbW1hYmxlXHBh
cg0KPiA+IGdhdGUgYXJyYXkuIEFzIHVzdWFsIGluIHN1Y2ggY2lyY3Vtc3RhbmNlcywgSSB3YXMg
c3VzcGVjdGluZ1xwYXINCj4gPiBiYWQgRlBHQSB0aW1pbmcsIG9yIGJ1Z3MgaW4gdGhlIGVtYmVk
ZGVkIG1pY3JvY29udHJvbGxlciBDLWNvZGUsXHBhcg0KPiA+IG9yIHBlcmhhcHMgYmFkIHNvbGRl
ciBqb2ludHMgb24gbXkgUENCLiBJdCBkaWQgbm90IG9jY3VyIHRvIG1lXHBhcg0KPiA+IHRoYXQg
b3VyIHJvY2stc29saWQgQmxhY2tCb3ggY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncy4gUmlnaHQ/
XHBhcg0KPiA+IFdyb25nLiBJdCBjYW4gYW5kIGl0IGRpZC4gSGVyZSBpcyBob3cuXHBhcg0KPiA+
XHBhcg0KPiA+IFRoZSBGUEdBIG1lbW9yeSBwb2ludGVyIGlzIHJlYWQgaW4gdHdvIDgtYml0IGNo
dW5rcywgYW4gTVNCIGFuZCBMU0IuXHBhcg0KPiA+IFRoZSBMU0IgY29udGFpbnMgbG93ZXIgOCBi
aXRzLCB3aGlsZSB0aGUgTVNCIGNvbnRhaW5zIHRoZSByZW1haW5pbmdccGFyDQo+ID4gYml0cy4g
VGhlIE1TQiBhbmQgTFNCIGFycml2ZSBpbiBhIGJ5dGUgYnVmZmVyLCBhbmQgdGhlbiB0aGV5IGFy
ZVxwYXINCj4gPiBjb21iaW5lZCBpbiB0aGUgUEMgaW50byBvbmUgd29yZC4gV3JpdHRlbiBpbiB0
aGUgKHZhc3RseSBpbmZlcmlvclxwYXINCj4gPiBhbmQga25vd24gZm9yIGl0cyBvYnNjdXJpdHkp
IEMtbGFuZ3VhZ2UgdGhpcyB3b3VsZCBoYXZlIGJlZW4gc2ltcGxlOlxwYXINCj4gPlxwYXINCj4g
PiAgIHVuc2lnbmVkIGNoYXIgbHNiLCBtc2I7XHBhcg0KPiA+ICAgdW5zaWduZWQgaW50IG1lbVB0
cjtccGFyDQo+ID4gICBtc2IgPSBidWZmZXIgWzJdO1xwYXINCj4gPiAgIGxzYiA9IGJ1ZmZlciBb
M107XHBhcg0KPiA+ICAgbWVtUHRyID0gKG1zYiA8PCA4KSArIGxzYjtccGFyDQo+ID5ccGFyDQo+
ID4gSW4gdGhlICh2YXN0bHkgc3VwZXJpb3IgYW5kIGtub3duIGZvciBpdHMgY2xhcml0eSkgQ29t
cG9uZW50IFBhc2NhbFxwYXINCj4gPiBJIGhhdmUgd3JpdHRlbiBjb2RlLCB3aGljaCBJIHRob3Vn
aHQgd2FzIGRvaW5nIHRoZSBzYW1lIHRoaW5nLlxwYXINCj4gPlxwYXINCj4gPiAgICBWQVIgYnVm
ZmVyOiBBUlJBWSAyNTYgb2YgQllURTtccGFyDQo+ID4gICAgICAgIG1lbVB0cjogSU5URUdFUjtc
cGFyDQo+ID4gICAgbWVtUHRyIDo9ICBBU0ggKGJ1ZmZlciBbMl0sIDgpICsgYnVmZmVyIFszXTtc
cGFyDQo+ID5ccGFyDQo+ID4gVGhpcyBpcyBuaWNlIGFuZCBsb29rcyBpbm5vY2VudCBlbm91Z2gu
IFRoZW4gdGhlIGhlbGwgYnJva2UgbG9vc2UuXHBhcg0KPiA+IFNvbWV0aW1lcyB0aGUgbWVtb3J5
IHBvaW50ZXIgd2FzIGNvcnJlY3QuIEJ1dCBzb21ldGltZXMgaXQgd2FzIG5vdC5ccGFyDQo+ID4g
U29tZXRpbWVzLCBidXQgbm90IGFsd2F5cywgYml0cyB3ZXJlIG1pc3NpbmcgaW4gdGhlIHVwcGVy
IHBhcnQgb2ZccGFyDQo+ID4gdGhlIHBvaW50ZXIuIEFmdGVyIHRocmVlIGRheXMgb2YgZGVidWdn
aW5nIGl0IHR1cm5lZCBvdXQgdGhhdFxwYXINCj4gPiB0aGUgY29ycmVjdCBjb2RlIHNob3VsZCBo
YXZlIGJlZW46XHBhcg0KPiA+XHBhcg0KPiA+ICAgVkFSICBsc2IsIG1zYjogSU5URUdFUjtccGFy
DQo+ID4gICAgICAgIGJ1ZmZlcjogQVJSQVkgMjU2IG9mIEJZVEU7XHBhcg0KPiA+ICAgICAgICBt
ZW1QdHI6IElOVEVHRVI7XHBhcg0KPiA+ICAgbXNiICA6PSBPUkQgKEJJVFMgKEFTSCAoYnVmZmVy
IFsyXSwgOCkpICogXHs4Li4xNVx9KTtccGFyDQo+ID4gICBsc2IgIDo9IE9SRCAoQklUUyAoYnVm
ZmVyIFszXSkgKiBcezAuLjdcfSk7XHBhcg0KPiA+ICAgbWVtUHRyIDo9ICBtc2IgKyBsc2I7XHBh
cg0KPiA+XHBhcg0KPiA+IEkgbGVhdmUgaXQgdG8geW91IHRvIGZpZ3VyZSBvdXQgd2h5IHRoaXMg
b2JmdXNjYXRlZCBjb2RlIGlzIHRoZVxwYXINCj4gPiBjb3JyZWN0IENQIHZlcnNpb24gb2YgIiht
c2IgPDwgOCkgKyBsc2IiLiBJdCBpcyBhbHNvIGltcG9ydGFudFxwYXINCj4gPiB0byBub3RlIHRo
YXQgdGhlIGJ1ZyB3YXMgc2hvd2luZyBvbmx5IGZvciBzb21lIGJpdCBwYXR0ZXJucyxccGFyDQo+
ID4gYnV0IG5vdCBmb3IgdGhlIG90aGVycywgd2hhdCBtYWRlIGl0IGV4Y2VwdGlvbmFsbHkgaGFy
ZCB0byBkZWJ1Z1xwYXINCj4gPiB0aGUgb3JpZ2luYWwgQ1AgY29kZS5ccGFyDQo+ID5ccGFyDQo+
ID4gSSB3YW50IHRvIHBvaW50IG91dCB0aGF0IHRoZSBDUCBsYW5ndWFnZSBpcyBub3QgY29tcGxl
dGUuIFRoZSB1bnNpZ25lZFxwYXINCj4gPiBtYXRoIHNob3VsZCBoYXZlIGJlZW4gdGhlcmUuIFRo
ZSB1c2VycyBoYXZlIGJlZW4gYXJndWluZyB3aXRoIE91UyBmb3JccGFyDQo+ID4geWVhcnMgdGhh
dCB0aGUgdW5zaWduZWQgbWF0aCBpcyBlc3NlbnRpYWwsIGFsbCBpbiB2YWluLiBJIGhvcGUgdGhh
dFxwYXINCj4gPiBJIGhhdmUgbWFkZSBpdCBtb3JlIGNsZWFyIHdoeSB0aGUgdW5zaWduZWQgc2hv
dWxkIGhhdmUgYmVlbiBpbiB0aGVccGFyDQo+ID4gbGFuZ3VhZ2UuXHBhcg0KPiA+XHBhcg0KPiA+
IFRoYW5rIHlvdSxccGFyDQo+ID5ccGFyDQo+ID4gV29qdGVrIFNrdWxza2kgc2t1bHNraUBwYXMu
cm9jaGVzdGVyLmVkdVxwYXINCj4gPlxwYXINCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxwYXINCj4gPlxwYXINCj4gPiBUbyB1bnN1YnNjcmliZSBmcm9t
IHRoaXMgbWFpbGluZyBsaXN0LCBzZW5kIGEgbWVzc2FnZSBjb250YWluaW5nIHRoZSB3b3JkXHBh
cg0KPiAidW5zdWJzY3JpYmUiIHRvOlxwYXINCj4gPiAgICBibGFja2JveC1yZXF1ZXN0QG9iZXJv
bi5jaFxwYXINCj4gPlxwYXINCj4gPiBUbyBnZXQgYSBsaXN0IG9mIHZhbGlkIGUtbWFpbCBjb21t
YW5kcyBhbmQgaW5zdHJ1Y3Rpb25zIG9uIHRoZWlyIHVzYWdlLFxwYXINCj4gc2VuZCBhIG1lc3Nh
Z2UgY29udGFpbmluZyB0aGUgd29yZCAiaGVscCIgdG8gdGhlIGFib3ZlIGFkZHJlc3MuXHBhcg0K
PiA+XHBhcg0KPiA+IFNlbmQgYW55IHByb2JsZW0gcmVwb3J0cyBvciBxdWVzdGlvbnMgcmVsYXRl
ZCB0byB0aGlzIGVtYWlsIGxpc3QgdG8gdGhlXHBhcg0KPiBsaXN0IG93bmVyIGF0XHBhcg0KPiA+
ICAgIG93bmVyLWJsYWNrYm94QG9iZXJvbi5jaFxwYXINCj4gPlxwYXINCj4gPiBDdXJyZW50IHBv
c3RpbmcgcG9saWN5OlxwYXINCj4gPlxwYXINCj4gPiBhKSBUbyBwb3N0IHlvdSBzaG91bGQgdXNl
IHRoZSBzYW1lIGFkZHJlc3MgYnkgd2hpY2ggeW91IGFyZSBzdWJzY3JpYmVkIHRvXHBhcg0KPiB0
aGUgbWFpbGluZyBsaXN0LiBUaGF0IHdheSwgdGhlIGxpc3Qgc2VydmVyIHdpbGwgcmVjb2duaXpl
IHlvdSBhcyBzdWJzY3JpYmVyXHBhcg0KPiBhbmQgZm9yd2FyZCB5b3VyIHBvc3RpbmcgaW1tZWRp
YXRlbHksIHdpdGhvdXQgY3JlYXRpbmcgYW55IG92ZXJoZWFkLlxwYXINCj4gPlxwYXINCj4gPiBi
KSBJZiwgZm9yIHNvbWUgcmVhc29uLCB5b3UgY2Fubm90IHBvc3QgZnJvbSB0aGUgYWRkcmVzcywg
Ynkgd2hpY2ggeW91IGFyZVxwYXINCj4gc3Vic2NyaWJlZCwgeW91ciBtZXNzYWdlIHdpbGwgYmUg
bW9kZXJhdGVkIHRvIGF2b2lkIHNwYW0uIFBsZWFzZSB1bmRlcnN0YW5kXHBhcg0KPiB0aGF0IG1v
ZGVyYXRpb24gd2lsbCBvZnRlbiBjYXVzZSBzb21lIGRlbGF5LCBpbiBwYXJ0aWN1bGFyIG92ZXIg
d2Vla2VuZHMgb3JccGFyDQo+IGhvbHlkYXlzLlxwYXINCj5ccGFyDQo+XHBhcg0KPlxwYXINClxw
YXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHBhcg0KXHBh
cg0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIG1haWxpbmcgbGlzdCwgc2VuZCBhIG1lc3NhZ2Ug
Y29udGFpbmluZyB0aGUgd29yZCAidW5zdWJzY3JpYmUiIHRvOlxwYXINCiAgIGJsYWNrYm94LXJl
cXVlc3RAb2Jlcm9uLmNoXHBhcg0KXHBhcg0KVG8gZ2V0IGEgbGlzdCBvZiB2YWxpZCBlLW1haWwg
Y29tbWFuZHMgYW5kIGluc3RydWN0aW9ucyBvbiB0aGVpciB1c2FnZSwgc2VuZCBhIG1lc3NhZ2Ug
Y29udGFpbmluZyB0aGUgd29yZCAiaGVscCIgdG8gdGhlIGFib3ZlIGFkZHJlc3MuXHBhcg0KXHBh
cg0KU2VuZCBhbnkgcHJvYmxlbSByZXBvcnRzIG9yIHF1ZXN0aW9ucyByZWxhdGVkIHRvIHRoaXMg
ZW1haWwgbGlzdCB0byB0aGUgbGlzdCBvd25lciBhdFxwYXINCiAgIG93bmVyLWJsYWNrYm94QG9i
ZXJvbi5jaFxwYXINClxwYXINCkN1cnJlbnQgcG9zdGluZyBwb2xpY3k6XHBhcg0KXHBhcg0KYSkg
VG8gcG9zdCB5b3Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBhZGRyZXNzIGJ5IHdoaWNoIHlvdSBhcmUg
c3Vic2NyaWJlZCB0byB0aGUgbWFpbGluZyBsaXN0LiBUaGF0IHdheSwgdGhlIGxpc3Qgc2VydmVy
IHdpbGwgcmVjb2duaXplIHlvdSBhcyBzdWJzY3JpYmVyIGFuZCBmb3J3YXJkIHlvdXIgcG9zdGlu
ZyBpbW1lZGlhdGVseSwgd2l0aG91dCBjcmVhdGluZyBhbnkgb3ZlcmhlYWQuXHBhcg0KXHBhcg0K
YikgSWYsIGZvciBzb21lIHJlYXNvbiwgeW91IGNhbm5vdCBwb3N0IGZyb20gdGhlIGFkZHJlc3Ms
IGJ5IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJlZCwgeW91ciBtZXNzYWdlIHdpbGwgYmUgbW9kZXJh
dGVkIHRvIGF2b2lkIHNwYW0uIFBsZWFzZSB1bmRlcnN0YW5kIHRoYXQgbW9kZXJhdGlvbiB3aWxs
IG9mdGVuIGNhdXNlIHNvbWUgZGVsYXksIGluIHBhcnRpY3VsYXIgb3ZlciB3ZWVrZW5kcyBvciBo
b2x5ZGF5cy5ccGFyDQp9fQBhbS4g


----boundary-LibPST-iamunique-982277013_-_---
Received on Sun Nov 16 2003 - 22:43:53 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:29:02 UTC