Re: [BLACKBOX] Pause or single-step a program
----boundary-LibPST-iamunique-871902483_-_-
Content-type: text/plain
Stephen,
I don't have a definitive answer (yet) but here is what the BlackBox documentation says
about debugging
(From Dev/Docu/User-Man)
ASSERT(x, n)
---
You can use trap codes 0..19 freely in your programs, typically as temporary breakpoints during debugging. By convention, the other trap codes are generated by various assertions, i.e., statements which check a certain condition, and terminate the command if the condition is violated. Conditions which must be fulfilled upon entry of a procedure are called preconditions, conditions which must be fulfilled upon exit of a procedure are called postconditions, and conditions which must be fulfilled in between are called invariants. Most procedures in the BlackBox Component Framework check some preconditions. Typically, trap numbers are kept unique inside of a procedure. Thus, if a trap occurs, consult the documentation (or source, if available) of the trapped procedure. There you should get more information about the cause of the trap.
The developer may even provide a plain-text description of the trap's cause, by providing suitable resources in the subsystem's string resource file: module name without subsystem prefix, followed by ".", followed by the procedure name, followed by ".", followed by the trap number. The following are examples:
Math.Power.23 Pre: x # 1.0 OR ABS(y) # INF
Views.View.CopyFrom.20 Views.CopyFrom and Views.CopyFromModelView must not both
be overwritten
If such a resource exists, the corresponding text is shown in the trap display.
It should be noted that at no time during debugging the normal BlackBox Component Builder environment is left, there is no special "debugging mode" or "debugging environment"; everything is integrated instead!
Example: ObxTrap docu
The BlackBox debugger is a cross between a "post-mortem" debugger and a "run-time" debugger. It is invoked after a command has trapped (post-mortem), but it doesn't cause a termination of the BlackBox environment (run-time). Some features, such as the Info->View State command, which makes it possible to follow data structures starting from a selected view, are usually associated with run-time debuggers only.
It is typical for object-oriented programs that their control flows can become extremely convoluted and hard to follow. Thus following a program statement for statement (single step), by message sends, or by procedure calls in practice turns out to be unpractical for debugging large systems. Instead, BlackBox uses a more effective debugging strategy:
Let errors become manifest as soon as possible.
Instead of waiting for some error to occur, and then trying to find one's way backward to the cause of the error, it was attempted to flag errors as closely to their cause as possible. This is the only way to truly save debugging time. The language implementation follows the same strategy, by checking index overflows when accessing arrays, by checking NIL accesses when dereferencing a pointer, etc. In addition to these built-in checks, Component Pascal provides the standard procedure ASSERT, which allows to test for an arbitrary condition. If the condition is violated, a trap window is opened. Procedures of the BlackBox Component Framework consequently use assertions e.g. at the beginning of a procedure to check whether its input is valid. This prevents that a procedure with illegal input may perform any damage to the rest of the system.
This defensive programming strategy has proven itself again and again during the development of BlackBox, and is strongly recommended for serious development work.
On 9/2/2011 2:19 PM, Stephen R. Troy wrote:
Dear List,
I need to debug a program. I want to be able to pause normal execution so I can examine the values of certain variables, then resume execution. I can see an obvious way to do it, by calling a procedure that will execute a loop until the value of a global Boolean variable changes. But since this requirement must have come up before, I hoped somebody could suggest a more elegant method. Thanks for any suggestions.
Steve Troy
---- To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy
---- To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy
----boundary-LibPST-iamunique-871902483_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbWh0bWwxIFxkZWZmMHtcZm9udHRibA0Ke1xmMFxm
c3dpc3NcZmNoYXJzZXQwIEFyaWFsO30NCntcZjFcZm1vZGVybiBDb3VyaWVyIE5ldzt9DQp7XGYy
XGZuaWxcZmNoYXJzZXQyIFN5bWJvbDt9DQp7XGYzXGZtb2Rlcm5cZmNoYXJzZXQwIENvdXJpZXIg
TmV3O319DQp7XGNvbG9ydGJsXHJlZDBcZ3JlZW4wXGJsdWUwO1xyZWQwXGdyZWVuMFxibHVlMjU1
O30NClx1YzFccGFyZFxwbGFpblxkZWZ0YWIzNjAgXGYwXGZzMjQgDQp7XCpcaHRtbHRhZzE5IDxo
dG1sPn0NCntcKlxodG1sdGFnMiBccGFyIH0NCntcKlxodG1sdGFnMjQyICAgfQ0Ke1wqXGh0bWx0
YWczNCA8aGVhZD59DQp7XCpcaHRtbHRhZzEgXHBhciB9DQp7XCpcaHRtbHRhZzI0MSAgICAgfQ0K
e1wqXGh0bWx0YWcxIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDEgICB9DQp7XCpcaHRtbHRhZzQxIDwv
aGVhZD59DQp7XCpcaHRtbHRhZzIgXHBhciB9DQp7XCpcaHRtbHRhZzI0MiAgIH0NCntcKlxodG1s
dGFnNTAgPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiIgdGV4dD0iIzAwMDAwMCI+fVxodG1scnRmIFx2
aWV3a2luZDUNCntcKlxiYWNrZ3JvdW5kIHtcc2hwe1wqXHNocGluc3R7XHNwe1xzbiBmaWxsQ29s
b3J9e1xzdiAxNjc3NzIxNX19e1xzcHtcc24gZkZpbGxlZH17XHN2IDF9fX19fVxodG1scnRmMCAN
CntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1sdGFnMjQwICAgICB9e1wqXGh0bWx0YWc2NH1c
aHRtbHJ0ZiB7XGh0bWxydGYwIFN0ZXBoZW4sDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRm
IFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAg
ICB9SSBkb24ndCBoYXZlIGEgZGVmaW5pdGl2ZSBhbnN3ZXIgKHlldCkgYnV0IGhlcmUgaXMgd2hh
dCB0aGUgQmxhY2tCb3gNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0K
e1wqXGh0bWx0YWc4NCAgICAgfWRvY3VtZW50YXRpb24gc2F5cw0Ke1wqXGh0bWx0YWcxMTYgPGJy
Pn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0
bWx0YWc4NCAgICAgfWFib3V0IGRlYnVnZ2luZw0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0
ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAg
ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfShGcm9tIERldi9Eb2N1L1VzZXIt
TWFuKQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfUFTU0VSVCh4LCBuKQ0Ke1wqXGh0
bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxw
YXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfS0tLQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0
ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAg
ICAgfVlvdSBjYW4gdXNlIHRyYXAgY29kZXMgMC4uMTkgZnJlZWx5IGluIHlvdXIgcHJvZ3JhbXMs
IHR5cGljYWxseSBhcw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzg0ICAgICB9dGVtcG9yYXJ5IGJyZWFrcG9pbnRzIGR1cmluZyBkZWJ1Z2dpbmcu
IEJ5IGNvbnZlbnRpb24sIHRoZSBvdGhlcg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBc
aHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9dHJhcCBjb2RlcyBhcmUgZ2VuZXJhdGVkIGJ5
IHZhcmlvdXMgYXNzZXJ0aW9ucywgaS5lLiwgc3RhdGVtZW50cw0Ke1wqXGh0bWx0YWc0IFxwYXIg
fVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9d2hpY2ggY2hlY2sgYSBj
ZXJ0YWluIGNvbmRpdGlvbiwgYW5kIHRlcm1pbmF0ZSB0aGUgY29tbWFuZCBpZiB0aGUNCntcKlxo
dG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfWNv
bmRpdGlvbiBpcyB2aW9sYXRlZC4gQ29uZGl0aW9ucyB3aGljaCBtdXN0IGJlIGZ1bGZpbGxlZCB1
cG9uIGVudHJ5DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxo
dG1sdGFnODQgICAgIH1vZiBhIHByb2NlZHVyZSBhcmUgY2FsbGVkIHByZWNvbmRpdGlvbnMsIGNv
bmRpdGlvbnMgd2hpY2ggbXVzdCBiZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRt
bHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9ZnVsZmlsbGVkIHVwb24gZXhpdCBvZiBhIHByb2Nl
ZHVyZSBhcmUgY2FsbGVkIHBvc3Rjb25kaXRpb25zLCBhbmQNCntcKlxodG1sdGFnNCBccGFyIH1c
aHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfWNvbmRpdGlvbnMgd2hpY2gg
bXVzdCBiZSBmdWxmaWxsZWQgaW4gYmV0d2VlbiBhcmUgY2FsbGVkIGludmFyaWFudHMuDQp7XCpc
aHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH1N
b3N0IHByb2NlZHVyZXMgaW4gdGhlIEJsYWNrQm94IENvbXBvbmVudCBGcmFtZXdvcmsgY2hlY2sg
c29tZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
Zzg0ICAgICB9cHJlY29uZGl0aW9ucy4gVHlwaWNhbGx5LCB0cmFwIG51bWJlcnMgYXJlIGtlcHQg
dW5pcXVlIGluc2lkZSBvZiBhDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRm
MCANCntcKlxodG1sdGFnODQgICAgIH1wcm9jZWR1cmUuIFRodXMsIGlmIGEgdHJhcCBvY2N1cnMs
IGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gKG9yDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxy
dGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH1zb3VyY2UsIGlmIGF2YWlsYWJsZSkg
b2YgdGhlIHRyYXBwZWQgcHJvY2VkdXJlLiBUaGVyZSB5b3Ugc2hvdWxkIGdldA0Ke1wqXGh0bWx0
YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9bW9yZSBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgY2F1c2Ugb2YgdGhlIHRyYXAuDQp7XCpcaHRtbHRhZzExNiA8
YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpc
aHRtbHRhZzg0ICAgICB9VGhlIGRldmVsb3BlciBtYXkgZXZlbiBwcm92aWRlIGEgcGxhaW4tdGV4
dCBkZXNjcmlwdGlvbiBvZiB0aGUNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxy
dGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfXRyYXAncyBjYXVzZSwgYnkgcHJvdmlkaW5nIHN1aXRh
YmxlIHJlc291cmNlcyBpbiB0aGUgc3Vic3lzdGVtJ3MNCntcKlxodG1sdGFnNCBccGFyIH1caHRt
bHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfXN0cmluZyByZXNvdXJjZSBmaWxl
OiBtb2R1bGUgbmFtZSB3aXRob3V0IHN1YnN5c3RlbSBwcmVmaXgsIGZvbGxvd2VkDQp7XCpcaHRt
bHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH1ieSAi
LiIsIGZvbGxvd2VkIGJ5IHRoZSBwcm9jZWR1cmUgbmFtZSwgZm9sbG93ZWQgYnkgIi4iLCBmb2xs
b3dlZCBieQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRt
bHRhZzg0ICAgICB9dGhlIHRyYXAgbnVtYmVyLiBUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlczoN
CntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1s
dGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0
bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFn
ODQgICAgIH1NYXRoLlBvd2VyLjIzXCdhMFwnYTBcJ2EwIFByZTogeCAjIDEuMFwnYTAgT1JcJ2Ew
IEFCUyh5KSAjIElORg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxy
dGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfQ0Ke1wqXGh0bWx0
YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIg
fQ0Ke1wqXGh0bWx0YWc4NCAgICAgfVZpZXdzLlZpZXcuQ29weUZyb20uMjBcJ2EwXCdhMFwnYTAg
Vmlld3MuQ29weUZyb20gYW5kIFZpZXdzLkNvcHlGcm9tTW9kZWxWaWV3DQp7XCpcaHRtbHRhZzQg
XHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH1tdXN0IG5vdCBi
b3RoDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpc
aHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICB9XCdhMFwnYTBcJ2EwIGJlIG92ZXJ3
cml0dGVuDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICB9SWYgc3VjaCBhIHJlc291cmNl
IGV4aXN0cywgdGhlIGNvcnJlc3BvbmRpbmcgdGV4dCBpcyBzaG93biBpbiB0aGUNCntcKlxodG1s
dGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfXRyYXAg
ZGlzcGxheS4NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCAN
CntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2
IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntc
KlxodG1sdGFnODQgICAgIH1JdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBhdCBubyB0aW1lIGR1cmlu
ZyBkZWJ1Z2dpbmcgdGhlIG5vcm1hbA0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRt
bHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9QmxhY2tCb3ggQ29tcG9uZW50IEJ1aWxkZXIgZW52
aXJvbm1lbnQgaXMgbGVmdCwgdGhlcmUgaXMgbm8gc3BlY2lhbA0Ke1wqXGh0bWx0YWc0IFxwYXIg
fVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9ImRlYnVnZ2luZyBtb2Rl
IiBvciAiZGVidWdnaW5nIGVudmlyb25tZW50IjsgZXZlcnl0aGluZyBpcw0Ke1wqXGh0bWx0YWc0
IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9aW50ZWdyYXRl
ZCBpbnN0ZWFkIQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYw
IA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfQ0Ke1wqXGh0bWx0YWcx
MTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0K
e1wqXGh0bWx0YWc4NCAgICAgfUV4YW1wbGU6IE9ieFRyYXBcJ2EwXCdhMGRvY3UNCntcKlxodG1s
dGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFy
IH0NCntcKlxodG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxp
bmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICAgIH1U
aGUgQmxhY2tCb3ggZGVidWdnZXIgaXMgYSBjcm9zcyBiZXR3ZWVuIGEgInBvc3QtbW9ydGVtIiBk
ZWJ1Z2dlcg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRt
bHRhZzg0ICAgICB9YW5kIGEgInJ1bi10aW1lIiBkZWJ1Z2dlci4gSXQgaXMgaW52b2tlZCBhZnRl
ciBhIGNvbW1hbmQgaGFzIHRyYXBwZWQNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfShwb3N0LW1vcnRlbSksIGJ1dCBpdCBkb2Vzbid0
IGNhdXNlIGEgdGVybWluYXRpb24gb2YgdGhlIEJsYWNrQm94DQp7XCpcaHRtbHRhZzQgXHBhciB9
XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH1lbnZpcm9ubWVudCAocnVu
LXRpbWUpLiBTb21lIGZlYXR1cmVzLCBzdWNoIGFzIHRoZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxo
dG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9SW5mby0NCntcKlxodG1sdGFn
ODQgJmd0O31caHRtbHJ0ZiA+XGh0bWxydGYwIFZpZXdcJ2EwU3RhdGUgY29tbWFuZCwgd2hpY2gg
bWFrZXMgaXQgcG9zc2libGUgdG8gZm9sbG93IGRhdGENCntcKlxodG1sdGFnNCBccGFyIH1caHRt
bHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfXN0cnVjdHVyZXMgc3RhcnRpbmcg
ZnJvbSBhIHNlbGVjdGVkIHZpZXcsIGFyZSB1c3VhbGx5IGFzc29jaWF0ZWQNCntcKlxodG1sdGFn
NCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfXdpdGggcnVu
LXRpbWUgZGVidWdnZXJzIG9ubHkuDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5l
DQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICB9DQp7
XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
ZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICB9SXQgaXMgdHlwaWNhbCBmb3Igb2JqZWN0LW9y
aWVudGVkIHByb2dyYW1zIHRoYXQgdGhlaXIgY29udHJvbCBmbG93cw0Ke1wqXGh0bWx0YWc0IFxw
YXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9Y2FuIGJlY29tZSBl
eHRyZW1lbHkgY29udm9sdXRlZCBhbmQgaGFyZCB0byBmb2xsb3cuIFRodXMgZm9sbG93aW5nIGEN
CntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAg
ICAgfXByb2dyYW0gc3RhdGVtZW50IGZvciBzdGF0ZW1lbnQgKHNpbmdsZSBzdGVwKSwgYnkgbWVz
c2FnZSBzZW5kcywgb3INCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0K
e1wqXGh0bWx0YWc4NCAgICAgfWJ5IHByb2NlZHVyZSBjYWxscyBpbiBwcmFjdGljZSB0dXJucyBv
dXQgdG8gYmUgdW5wcmFjdGljYWwgZm9yDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxo
dG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH1kZWJ1Z2dpbmcgbGFyZ2Ugc3lzdGVtcy4gSW5z
dGVhZCwgQmxhY2tCb3ggdXNlcyBhIG1vcmUgZWZmZWN0aXZlDQp7XCpcaHRtbHRhZzQgXHBhciB9
XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH1kZWJ1Z2dpbmcgc3RyYXRl
Z3k6DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpc
aHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+
fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRt
bHRhZzg0ICAgICB9TGV0IGVycm9ycyBiZWNvbWUgbWFuaWZlc3QgYXMgc29vbiBhcyBwb3NzaWJs
ZS4NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxo
dG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59
XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1s
dGFnODQgICAgIH1JbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHNvbWUgZXJyb3IgdG8gb2NjdXIsIGFu
ZCB0aGVuIHRyeWluZyB0byBmaW5kDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1s
cnRmMCANCntcKlxodG1sdGFnODQgICAgIH1vbmUncyB3YXkgYmFja3dhcmQgdG8gdGhlIGNhdXNl
IG9mIHRoZSBlcnJvciwgaXQgd2FzIGF0dGVtcHRlZCB0bw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxo
dG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9ZmxhZyBlcnJvcnMgYXMgY2xv
c2VseSB0byB0aGVpciBjYXVzZSBhcyBwb3NzaWJsZS4gVGhpcyBpcyB0aGUgb25seQ0Ke1wqXGh0
bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9d2F5
IHRvIHRydWx5IHNhdmUgZGVidWdnaW5nIHRpbWUuIFRoZSBsYW5ndWFnZSBpbXBsZW1lbnRhdGlv
bg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0
ICAgICB9Zm9sbG93cyB0aGUgc2FtZSBzdHJhdGVneSwgYnkgY2hlY2tpbmcgaW5kZXggb3ZlcmZs
b3dzIHdoZW4NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc4NCAgICAgfWFjY2Vzc2luZyBhcnJheXMsIGJ5IGNoZWNraW5nIE5JTCBhY2Nlc3NlcyB3
aGVuIGRlcmVmZXJlbmNpbmcgYQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzg0ICAgICB9cG9pbnRlciwgZXRjLiBJbiBhZGRpdGlvbiB0byB0aGVz
ZSBidWlsdC1pbiBjaGVja3MsIENvbXBvbmVudCBQYXNjYWwNCntcKlxodG1sdGFnNCBccGFyIH1c
aHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfXByb3ZpZGVzIHRoZSBzdGFu
ZGFyZCBwcm9jZWR1cmUgQVNTRVJULCB3aGljaCBhbGxvd3MgdG8gdGVzdCBmb3IgYW4NCntcKlxo
dG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfWFy
Yml0cmFyeSBjb25kaXRpb24uIElmIHRoZSBjb25kaXRpb24gaXMgdmlvbGF0ZWQsIGEgdHJhcCB3
aW5kb3cgaXMNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc4NCAgICAgfW9wZW5lZC4gUHJvY2VkdXJlcyBvZiB0aGUgQmxhY2tCb3ggQ29tcG9uZW50
IEZyYW1ld29yayBjb25zZXF1ZW50bHkNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfXVzZSBhc3NlcnRpb25zIGUuZy4gYXQgdGhlIGJl
Z2lubmluZyBvZiBhIHByb2NlZHVyZSB0byBjaGVjayB3aGV0aGVyDQp7XCpcaHRtbHRhZzQgXHBh
ciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH1pdHMgaW5wdXQgaXMg
dmFsaWQuIFRoaXMgcHJldmVudHMgdGhhdCBhIHByb2NlZHVyZSB3aXRoIGlsbGVnYWwNCntcKlxo
dG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfWlu
cHV0IG1heSBwZXJmb3JtIGFueSBkYW1hZ2UgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4NCntc
KlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFn
NCBccGFyIH0NCntcKlxodG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxy
dGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQg
ICAgIH1UaGlzIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBzdHJhdGVneSBoYXMgcHJvdmVuIGl0c2Vs
ZiBhZ2FpbiBhbmQNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc4NCAgICAgfWFnYWluIGR1cmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgQmxhY2tCb3gs
IGFuZCBpcyBzdHJvbmdseQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAg
DQp7XCpcaHRtbHRhZzg0ICAgICB9cmVjb21tZW5kZWQgZm9yIHNlcmlvdXMgZGV2ZWxvcG1lbnQg
d29yay4NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntc
KlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2IDxi
cj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxo
dG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1s
cnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICAgIH1PbiA5LzIvMjAx
MSAyOjE5IFBNLCBTdGVwaGVuIFIuIFRyb3kgd3JvdGU6DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0
bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgIH17XCpcaHRtbHRhZzcyfVxodG1s
cnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWc5NiA8YmxvY2txdW90ZVxwYXIgY2l0ZT0i
bWlkOjIwMTEwOTAyMTQxOTU5LjViNzYzM2FlYWFkMjY5MmViMTI5NTFjYjU1Mjk1YjVmLmY5NTFi
MzgzMjYud2JlQGVtYWlsMTQuc2VjdXJlc2VydmVyLm5ldCJccGFyICAgICAgIHR5cGU9ImNpdGUi
Pn1caHRtbHJ0ZiBccGFyDQp7XGh0bWxydGYwIHtcKlxodG1sdGFnNjR9XGh0bWxydGYge1xodG1s
cnRmMCBcbGkzNjAgDQp7XCpcaHRtbHRhZzg0IDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpWZXJk
YW5hOyBjb2xvcjojMDAwMDAwO1xwYXIgICAgICAgICBmb250LXNpemU6MTBwdDsiPn1caHRtbHJ0
ZiB7XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgICAg
IH1caHRtbHJ0ZiB9XGh0bWxydGYwIHtcKlxodG1sdGFnNzJ9XGh0bWxydGZccGFyfVxodG1scnRm
MA0KDQp7XCpcaHRtbHRhZzk2IDxkaXY+fVxodG1scnRmIHtcaHRtbHJ0ZjAge1wqXGh0bWx0YWc2
NH1caHRtbHJ0ZiB7XGh0bWxydGYwIFxsaTM2MCBcaHRtbHJ0ZiB7XGh0bWxydGYwIERlYXIgTGlz
dCxcaHRtbHJ0ZiB9XGh0bWxydGYwIHtcKlxodG1sdGFnNzJ9XGh0bWxydGZccGFyfVxodG1scnRm
MA0KDQp7XCpcaHRtbHRhZzEwNCA8L2Rpdj59XGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1s
dGFnMCBccGFyIH0NCntcKlxodG1sdGFnMjQwICAgICAgICAgfQ0Ke1wqXGh0bWx0YWc5NiA8ZGl2
Pn1caHRtbHJ0ZiB7XGh0bWxydGYwIHtcKlxodG1sdGFnNjR9XGh0bWxydGYge1xodG1scnRmMCBc
bGkzNjAgXGh0bWxydGYge1xodG1scnRmMCBJIG5lZWQgdG8gZGVidWcgYSBwcm9ncmFtLlwnYTAg
SSB3YW50IHRvIGJlIGFibGUgdG8gcGF1c2UNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAg
XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgICAgICAgfW5vcm1hbCBleGVjdXRpb24gc28g
SSBjYW4gZXhhbWluZSB0aGUgdmFsdWVzIG9mIGNlcnRhaW4NCntcKlxodG1sdGFnNCBccGFyIH1c
aHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgICAgICAgfXZhcmlhYmxlcywg
dGhlbiByZXN1bWUgZXhlY3V0aW9uLlwnYTAgSSBjYW4gc2VlIGFuIG9idmlvdXMgd2F5IHRvDQp7
XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAg
ICAgICAgIH1kbyBpdCwgYnkgY2FsbGluZyBhIHByb2NlZHVyZSB0aGF0IHdpbGwgZXhlY3V0ZSBh
IGxvb3AgdW50aWwNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc4NCAgICAgICAgICAgfXRoZSB2YWx1ZSBvZiBhIGdsb2JhbCBCb29sZWFuIHZhcmlh
YmxlIGNoYW5nZXMuXCdhMCBCdXQgc2luY2UNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAg
XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgICAgICAgfXRoaXMgcmVxdWlyZW1lbnQgbXVz
dCBoYXZlIGNvbWUgdXAgYmVmb3JlLCBJIGhvcGVkIHNvbWVib2R5DQp7XCpcaHRtbHRhZzQgXHBh
ciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgICAgICAgIH1jb3VsZCBz
dWdnZXN0IGEgbW9yZSBlbGVnYW50IG1ldGhvZC5cJ2EwIFRoYW5rcyBmb3IgYW55DQp7XCpcaHRt
bHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICAgICAgICAg
IH1zdWdnZXN0aW9ucy5caHRtbHJ0ZiB9XGh0bWxydGYwIHtcKlxodG1sdGFnNzJ9XGh0bWxydGZc
cGFyfVxodG1scnRmMA0KDQp7XCpcaHRtbHRhZzEwNCA8L2Rpdj59XGh0bWxydGYgfVxodG1scnRm
MCANCntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1sdGFnMjQwICAgICAgICAgfQ0Ke1wqXGh0
bWx0YWc5NiA8ZGl2Pn1caHRtbHJ0ZiB7XGh0bWxydGYwIHtcKlxodG1sdGFnNjR9XGh0bWxydGYg
e1xodG1scnRmMCBcbGkzNjAgXGh0bWxydGYge1xodG1scnRmMCBTdGV2ZSBUcm95XGh0bWxydGYg
fVxodG1scnRmMCB7XCpcaHRtbHRhZzcyfVxodG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0
bWx0YWcxMDQgPC9kaXY+fVxodG1scnRmIH1caHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9
DQp7XCpcaHRtbHRhZzI0MCAgICAgICAgIH0NCntcKlxodG1sdGFnOTYgPGRpdj59XGh0bWxydGYg
e1xodG1scnRmMCANCntcKlxodG1sdGFnMTEyIDxicj59XGh0bWxydGYgXHBhcg0KXGh0bWxydGYw
IA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICAgICAgICB9DQp7XCpcaHRt
bHRhZzEwNCA8L2Rpdj59XGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0N
CntcKlxodG1sdGFnMjQwICAgICAgIH0NCntcKlxodG1sdGFnMjQ4IDwvc3Bhbj59DQp7XCpcaHRt
bHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzI0MCAgICAgICB9DQp7XCpcaHRtbHRhZzY0IDxwPn1c
aHRtbHJ0ZiBccGFyDQpcaHRtbHJ0ZjAgXGh0bWxydGYge1xodG1scnRmMCBcbGkzNjAgDQp7XCpc
aHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICAgICAgfS0tLS0NCntcKlxodG1sdGFn
NCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgICAgIH1UbyB1
bnN1YnNjcmliZSwgc2VuZCBhIG1lc3NhZ2Ugd2l0aCBib2R5ICJTSUdOT0ZGIEJMQUNLQk9YIiB0
bw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0
ICAgICAgICAgfXt9DQp7XCpcaHRtbHRhZzg0IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstYWJicmV2
aWF0ZWQiIGhyZWY9Im1haWx0bzpMSVNUU0VSVkBMSVNUUy5PQkVST04uQ0giPn1caHRtbHJ0ZiB7
XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJtYWlsdG86TElTVFNFUlZATElTVFMuT0JFUk9O
LkNIIn19e1xmbGRyc2x0XGNmMVx1bCBcaHRtbHJ0ZjAgTElTVFNFUlZATElTVFMuT0JFUk9OLkNI
XGh0bWxydGYgfVxodG1scnRmMCBcaHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc5MiA8
L2E+fQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
Zzg0ICAgICAgIH1caHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQpcaHRtbHJ0ZiBccGFyDQpcaHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzcyIDwvcD59DQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRh
ZzI0MCAgICAgfQ0Ke1wqXGh0bWx0YWcxMDQgPC9ibG9ja3F1b3RlPn1caHRtbHJ0ZiB9XGh0bWxy
dGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICB9DQp7XCpcaHRtbHRh
ZzU4IDwvYm9keT59DQp7XCpcaHRtbHRhZzIgXHBhciB9DQp7XCpcaHRtbHRhZzI3IDwvaHRtbD59
DQp7XCpcaHRtbHRhZzMgXHBhciB9DQp7XCpcaHRtbHRhZzY0IDxwPn1caHRtbHJ0ZiB7XGh0bWxy
dGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfS0tLS0NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0
ZiAgXGh0bWxydGYwIFRvIHVuc3Vic2NyaWJlLCBzZW5kIGEgbWVzc2FnZSB3aXRoIGJvZHkgIlNJ
R05PRkYgQkxBQ0tCT1giIHRvIExJU1RTRVJWQExJU1RTLk9CRVJPTi5DSA0Ke1wqXGh0bWx0YWc0
IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgXGh0bWxydGZ9fQAw6G1WVxiRcGDA1fA8EA==
----boundary-LibPST-iamunique-871902483_-_---
Received on Fri Sep 02 2011 - 23:56:15 UTC
This archive was generated by hypermail 2.3.0
: Thu Sep 26 2013 - 06:30:11 UTC