----boundary-LibPST-iamunique-47749460_-_-
Content-type: text/plain
Hi everybody
I would like to contribute a few thoughts to this issue since I have invested quite some time looking into it and even had started inverting some of the interaction messaging protocols. I believe I correctly concluded two important facts concerning this matter:
a) Yes, it is a delicate matter, when Actions are called during user interaction and mouse tracking in particular.
b) Program Control Inversion doesn't simplify the matter at all.
I guess it simply makes sense to hand over control to the mouse interactor as there can be only one at a time.
Even if control was inverted the problem of Actions being run during ongoing interaction would persist.
What probably would make sense is an option to specify for Action, whether or not it wishes to be run during user interaction as well.
And a very important thing is to allow Actions to query the state of interaction, which by the way is possible in BB 2.0.
Aha, and yes, third conclusion:
c) Depriving Actions of running during user interaction is a NO GO ;)
Best regards
Marco
Oberon microsystems AG, Tech-Support wrote:
Dear Alexander,
thanks for your observation. We intentionally decided not to apply
Marco's entire patch to HostPorts.Rider.Input: We included the statement
WinApi.Sleep(1) but we deliberately left out the proposed call to
Services.actionHook.Step.
The reason for this is that we did not want to break the contract for
objects of type Services.Action as specified in the documentation for
the module Services: "Actions are objects whose Do procedures are called
in a deferred way, when the system is idle again." Calling
Services.actionHook.Step from within HostPorts.Rider.Input would break
this since it leads to actions being executed while the system is not
idle. This could break all sorts of assumptions on which actions should
be able to rely on.
Yes, freezing background tasks while polling for input is an annoyance.
But for the above mentioned reason we would rather live with the problem
than complicating the programming model for Services.Actions. In my
opinion, the real solution would be to attack the problem's root cause
by eliminating the polling loops. This would lead to complete inversion
of control and thus to smoother cooperative multitasking.
with best regards,
Marc
-----Original Message-----
From: blackbox{([at]})nowhere.xy
Behalf Of Alexander Iljin
Sent: Samstag, 26. Mai 2007 09:12
To: Blackbox
Subject: [BlackBox] - 1.6-rc5: Background multitasking
Hello, BlackBox developers!
I see the following lines in the BlackBox 1.6-rc5 changelog:
Host/Mod/Ports
- 20060325, mc, Rider.Input changed for the benefit of
background task response.
But in fact Marco Ciot's contribution is not included. It
would be if HostPorts.Rider.Input would contain a call to
Services.actionHook.Step, but it does not. The background
tasks freeze while user holds a mouse button or is otherwise
stuck in an Input-related loop.
I've created a simple module that allows to test that. Here it is:
StdCoder.Decode ..,,
..UV....3Qw7uP5PRPPNR9Rbf9b8R79FTvMf1GomCrlAy2xhX,Cb2x
hXhC6FU1xhiZiVBhihgmRiioedhgrZcZRiXFfaqmSrtuGfa4700zdGrr8rmCLL
CJuyKtYcZRiX
7.2.s,MtD.,6.5Qw7uP51QCPuP7PNN9F9vQAy1xB.gdj,UBxhYhAbf9P0G2sId
vPZntgcghghZ
cZRC8T0E.kNS.H.Lt,2.,U08J99SdfJHPNjvQCJuGKfaqmY6MwdONl1QCh0708
T,U..w.gu4.,
sUGpmWbBxhYhAbndMHT9NY6Mw.sQq2Y6cwB.0.zC,w,wu2E.0.oZ,U00.bnUGL
u8ro8quGrmCL
WKqtE0E.kN0.,6.I16.M.6.JFyuv.U.2m,.T10.uFq8Ua5V0cUXDF9fR5uPPPP
1fP7PNZvQRtI
dHf.2UlbcZpC.c9h0E.8z,U.EEE.E1U.M3MK1.,6.o1.8T5U.E8E.E1U.M3seM
.3gwP.,6..EB
U.U,2.I3.0ES9.I.cTM.9.e3Y.2U5Vz5ZegVI3hdRiUghjZgpZhZ3Ychgg3in3
YohgnZiUIcgB
gXRh0xhs3YWBgXRhbJijhiiZgUghpZhoBhoBgnRhdphbpZUYej3YnZiVJio3Yo
hgnNORvNN769
9S9vMf9R996d9O996BvPN9PTvRHfPD965vPP1cCPc.3uNPPRN9RRtIdPMgVBAf
jhiUwidZhg3Y
nhgZ3YnhglhiZphoBhVZhUohphhWhgmRiUAgk3iZBgmBhixgUAhi3Yo3hZ7HTv
N,tRHfP7vPj9
69fR9fQn96bPN5vPR9NR76RuPj96VfQ9vQb961fP796FvPN9N,NMRPS,NPTPRb
PN,dMf9RdvPR
961fPnvRFPNZPN,tRH9RFPOR96Ahn7NTvMq40mvaKrUaxhm3YnhgqhgmBgg3Yn
hgXVnpZUAda3
Ytxhp3YnhgZ7RFPMd96d9O9HrKrq.LPN99Q,NMV9Q..9Ha69,7RFHr0Gu663PM
51oBq4a4.jvP
ZvOb961vQ,NOd96b9OTPRN9NRN1P6JT96bnr0LEGLoa4P1YZUggs,kmoA.QA.U
b,RVjN1JN8PM
HT8Ff8H9863uNPPRQbBgV7AdB3eDJeI3YHhgmpidRgZRig2YAxhbRbBgV7YeN3
e3hV7AV,RgoB
hjphUgbU2eDBdCZe3JeUYeD3YGhc1xdGZcU2ZHhgm,umUCKua4H769eH7uCPM1
OpU8p4ak2CKr
GLR0mYuIeKoXKIdin4ak24KR0mUCKua4rN1P6IZuH5OF7OJZOF,781fC,NEUd6
FTP9,78HtCPc
E9uFHeHPM0HeH5885fPdP8rN1H6HTvNRNGR9RFtMR9R2YAxhbpZAphcAZvg,bO
NZfRU2xhABgo
hgm3ZVZZUQeZ,6JHvMLvQFN8LtI9fQh1IiZRijZhpZidxhiN19eH7867uPrN1P
6I.sIdPMZHJ0
GIamRI6UXpB,dCv76VtCPM0ROFj881P8rN1H..70..EryqvamRqkWuIWQeoBAi
n4qEc..T9QJ7
6F,.Cpm.IeZhhjpiZBcXZC2ZVBZvkk0GRqHEuoYmo4KIbG2yavgVBgcCFVSqqE
L8ssHpmsETfP
dfQT9PNPNZvQRtIQcoJigZcZRiX3Ulb8..umVyKrG5EWKqtCK.Q6AAELUm,..U
np3.6F6.ZD,6
.636.M00.,..1cUXDJ9XGhighgmRiiQ88pum470,Mwd0UnpZGhighA70,cw5.,
6.QJw.0kFF.0
U18J.QiiQ8CJuaLqKKWKqt2Ul1.RVtZBE.8z1U..2,I92U.E,,.RNEd1YCG259
.G.0..676.16
.6.665hK2.,6TxR.eKZM.M.6.,U0KyB.,..e,2.A.c8U.E.0t.U..61lbAUgQn
Pt0lLU8ssHor
kmsQCor..c2E..U6U..HE.6RvuQ0mHCe.az86Utj0GTkWaUKZM03b,...
--- end of encoding ---
---=====---
Alexander
--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
----boundary-LibPST-iamunique-47749460_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbWh0bWwxIFxkZWZmMHtcZm9udHRibA0Ke1xmMFxm
c3dpc3MgQXJpYWw7fQ0Ke1xmMVxmbW9kZXJuIENvdXJpZXIgTmV3O30NCntcZjJcZm5pbFxmY2hh
cnNldDIgU3ltYm9sO30NCntcZjNcZm1vZGVyblxmY2hhcnNldDAgQ291cmllciBOZXc7fX0NCntc
Y29sb3J0YmxccmVkMFxncmVlbjBcYmx1ZTA7XHJlZDBcZ3JlZW4wXGJsdWUyNTU7fQ0KXHVjMVxw
YXJkXHBsYWluXGRlZnRhYjM2MCBcZjBcZnMyNCANCntcKlxodG1sdGFnMjQzIDwhRE9DVFlQRSBo
dG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPn0NCntc
KlxodG1sdGFnMyBccGFyIH0NCntcKlxodG1sdGFnMTkgPGh0bWw+fQ0Ke1wqXGh0bWx0YWcyIFxw
YXIgfQ0Ke1wqXGh0bWx0YWczNCA8aGVhZD59DQp7XCpcaHRtbHRhZzEgXHBhciB9DQp7XCpcaHRt
bHRhZzI0MSAgIH0NCntcKlxodG1sdGFnMSBccGFyIH0NCntcKlxodG1sdGFnMjQxICAgfQ0Ke1wq
XGh0bWx0YWcxNzcgPHRpdGxlPn0NCntcKlxodG1sdGFnMjQxIH0NCntcKlxodG1sdGFnMTg1IDwv
dGl0bGU+fQ0Ke1wqXGh0bWx0YWcxIFxwYXIgfQ0Ke1wqXGh0bWx0YWc0MSA8L2hlYWQ+fQ0Ke1wq
XGh0bWx0YWcyIFxwYXIgfQ0Ke1wqXGh0bWx0YWc1MCA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0
ZXh0PSIjMDAwMDAwIj59XGh0bWxydGYgXHZpZXdraW5kNQ0Ke1wqXGJhY2tncm91bmQge1xzaHB7
XCpcc2hwaW5zdHtcc3B7XHNuIGZpbGxDb2xvcn17XHN2IDE2Nzc3MjE1fX17XHNwe1xzbiBmRmls
bGVkfXtcc3YgMX19fX19XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfXtcKlxodG1sdGFn
NjR9XGh0bWxydGYge1xodG1scnRmMCBIaSBldmVyeWJvZHkNCntcKlxodG1sdGFnMTE2IDxicj59
XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1JIHdvdWxkIGxp
a2UgdG8gY29udHJpYnV0ZSBhIGZldyB0aG91Z2h0cyB0byB0aGlzIGlzc3VlIHNpbmNlIEkgaGF2
ZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgaW52ZXN0ZWQgcXVpdGUg
c29tZSB0aW1lIGxvb2tpbmcgaW50byBpdCBhbmQgZXZlbiBoYWQgc3RhcnRlZCBpbnZlcnRpbmcN
CntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHNvbWUgb2YgdGhlIGludGVy
YWN0aW9uIG1lc3NhZ2luZyBwcm90b2NvbHMuIEkgYmVsaWV2ZSBJIGNvcnJlY3RseQ0Ke1wqXGh0
bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgY29uY2x1ZGVkIHR3byBpbXBvcnRhbnQg
ZmFjdHMgY29uY2VybmluZyB0aGlzIG1hdHRlcjoNCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxy
dGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnMTE2
IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1hKSBZ
ZXMsIGl0IGlzIGEgZGVsaWNhdGUgbWF0dGVyLCB3aGVuIEFjdGlvbnMgYXJlIGNhbGxlZCBkdXJp
bmcgdXNlcg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgaW50ZXJhY3Rp
b24gYW5kIG1vdXNlIHRyYWNraW5nIGluIHBhcnRpY3VsYXIuDQp7XCpcaHRtbHRhZzExNiA8YnI+
fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9YikgUHJvZ3Jh
bSBDb250cm9sIEludmVyc2lvbiBkb2Vzbid0IHNpbXBsaWZ5IHRoZSBtYXR0ZXIgYXQgYWxsLg0K
e1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0
YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYw
IA0Ke1wqXGh0bWx0YWc0IFxwYXIgfUkgZ3Vlc3MgaXQgc2ltcGx5IG1ha2VzIHNlbnNlIHRvIGhh
bmQgb3ZlciBjb250cm9sIHRvIHRoZSBtb3VzZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm
ICBcaHRtbHJ0ZjAgaW50ZXJhY3RvciBhcyB0aGVyZSBjYW4gYmUgb25seSBvbmUgYXQgYSB0aW1l
Lg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc0IFxwYXIgfUV2ZW4gaWYgY29udHJvbCB3YXMgaW52ZXJ0ZWQgdGhlIHByb2JsZW0gb2Yg
QWN0aW9ucyBiZWluZyBydW4gZHVyaW5nDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxo
dG1scnRmMCBvbmdvaW5nIGludGVyYWN0aW9uIHdvdWxkIHBlcnNpc3QuDQp7XCpcaHRtbHRhZzEx
NiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7
XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
ZzQgXHBhciB9V2hhdCBwcm9iYWJseSB3b3VsZCBtYWtlIHNlbnNlIGlzIGFuIG9wdGlvbiB0byBz
cGVjaWZ5IGZvciBBY3Rpb24sDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRm
MCB3aGV0aGVyIG9yIG5vdCBpdCB3aXNoZXMgdG8gYmUgcnVuIGR1cmluZyB1c2VyIGludGVyYWN0
aW9uIGFzIHdlbGwuDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9QW5kIGEgdmVyeSBpbXBvcnRhbnQgdGhpbmcgaXMgdG8g
YWxsb3cgQWN0aW9ucyB0byBxdWVyeSB0aGUgc3RhdGUgb2YNCntcKlxodG1sdGFnNCBccGFyIH1c
aHRtbHJ0ZiAgXGh0bWxydGYwIGludGVyYWN0aW9uLCB3aGljaCBieSB0aGUgd2F5IGlzIHBvc3Np
YmxlIGluIEJCIDIuMC4NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1s
cnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYg
XGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1BaGEsIGFuZCB5ZXMsIHRoaXJk
IGNvbmNsdXNpb246DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxs
aW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9YykgRGVwcml2aW5nIEFjdGlvbnMg
b2YgcnVubmluZyBkdXJpbmcgdXNlciBpbnRlcmFjdGlvbiBpcyBhIE5PIEdPIDspDQp7XCpcaHRt
bHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBh
ciB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpc
aHRtbHRhZzQgXHBhciB9QmVzdCByZWdhcmRzDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRm
IFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9TWFyY28NCntcKlxodG1sdGFn
MTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0N
CntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1s
dGFnNCBccGFyIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRm
MCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxp
bmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1PYmVyb24gbWljcm9zeXN0ZW1zIEFH
LCBUZWNoLVN1cHBvcnQgd3JvdGU6DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1s
cnRmMCB7XCpcaHRtbHRhZzcyfVxodG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWc5
NiA8YmxvY2txdW90ZSBjaXRlPSJtaWQ6QU1FVEhZU1QyRXNCazMxVFoxNDAwMDAwMTUxQGFtZXRo
eXN0Mi5vYmVyb24uY2giXHBhciAgdHlwZT0iY2l0ZSI+fVxodG1scnRmIFxwYXINCntcaHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzI0MCAgIH0NCntcKlxodG1sdGFn
MTI4IDxwcmUgd3JhcD0iIj59XGh0bWxydGYge1xwYXJkXHBsYWluXGYxXGZzMjAgXGh0bWxydGYw
IFxodG1scnRmIHtcaHRtbHJ0ZjAgXGxpMzYwIERlYXIgQWxleGFuZGVyLFxsaW5lDQpcbGluZQ0K
dGhhbmtzIGZvciB5b3VyIG9ic2VydmF0aW9uLiBXZSBpbnRlbnRpb25hbGx5IGRlY2lkZWQgbm90
IHRvIGFwcGx5XGxpbmUNCk1hcmNvJ3MgZW50aXJlIHBhdGNoIHRvIEhvc3RQb3J0cy5SaWRlci5J
bnB1dDogV2UgaW5jbHVkZWQgdGhlIHN0YXRlbWVudFxsaW5lDQpXaW5BcGkuU2xlZXAoMSkgYnV0
IHdlIGRlbGliZXJhdGVseSBsZWZ0IG91dCB0aGUgcHJvcG9zZWQgY2FsbCB0b1xsaW5lDQpTZXJ2
aWNlcy5hY3Rpb25Ib29rLlN0ZXAuXGxpbmUNClxsaW5lDQpUaGUgcmVhc29uIGZvciB0aGlzIGlz
IHRoYXQgd2UgZGlkIG5vdCB3YW50IHRvIGJyZWFrIHRoZSBjb250cmFjdCBmb3JcbGluZQ0Kb2Jq
ZWN0cyBvZiB0eXBlIFNlcnZpY2VzLkFjdGlvbiBhcyBzcGVjaWZpZWQgaW4gdGhlIGRvY3VtZW50
YXRpb24gZm9yXGxpbmUNCnRoZSBtb2R1bGUgU2VydmljZXM6ICJBY3Rpb25zIGFyZSBvYmplY3Rz
IHdob3NlIERvIHByb2NlZHVyZXMgYXJlIGNhbGxlZFxsaW5lDQppbiBhIGRlZmVycmVkIHdheSwg
d2hlbiB0aGUgc3lzdGVtIGlzIGlkbGUgYWdhaW4uIiBDYWxsaW5nXGxpbmUNClNlcnZpY2VzLmFj
dGlvbkhvb2suU3RlcCBmcm9tIHdpdGhpbiBIb3N0UG9ydHMuUmlkZXIuSW5wdXQgd291bGQgYnJl
YWtcbGluZQ0KdGhpcyBzaW5jZSBpdCBsZWFkcyB0byBhY3Rpb25zIGJlaW5nIGV4ZWN1dGVkIHdo
aWxlIHRoZSBzeXN0ZW0gaXMgbm90XGxpbmUNCmlkbGUuIFRoaXMgY291bGQgYnJlYWsgYWxsIHNv
cnRzIG9mIGFzc3VtcHRpb25zIG9uIHdoaWNoIGFjdGlvbnMgc2hvdWxkXGxpbmUNCmJlIGFibGUg
dG8gcmVseSBvbi5cbGluZQ0KXGxpbmUNClllcywgZnJlZXppbmcgYmFja2dyb3VuZCB0YXNrcyB3
aGlsZSBwb2xsaW5nIGZvciBpbnB1dCBpcyBhbiBhbm5veWFuY2UuXGxpbmUNCkJ1dCBmb3IgdGhl
IGFib3ZlIG1lbnRpb25lZCByZWFzb24gd2Ugd291bGQgcmF0aGVyIGxpdmUgd2l0aCB0aGUgcHJv
YmxlbVxsaW5lDQp0aGFuIGNvbXBsaWNhdGluZyB0aGUgcHJvZ3JhbW1pbmcgbW9kZWwgZm9yIFNl
cnZpY2VzLkFjdGlvbnMuIEluIG15XGxpbmUNCm9waW5pb24sIHRoZSByZWFsIHNvbHV0aW9uIHdv
dWxkIGJlIHRvIGF0dGFjayB0aGUgcHJvYmxlbSdzIHJvb3QgY2F1c2VcbGluZQ0KYnkgZWxpbWlu
YXRpbmcgdGhlIHBvbGxpbmcgbG9vcHMuIFRoaXMgd291bGQgbGVhZCB0byBjb21wbGV0ZSBpbnZl
cnNpb25cbGluZQ0Kb2YgY29udHJvbCBhbmQgdGh1cyB0byBzbW9vdGhlciBjb29wZXJhdGl2ZSBt
dWx0aXRhc2tpbmcuXGxpbmUNClxsaW5lDQp3aXRoIGJlc3QgcmVnYXJkcyxcbGluZQ0KTWFyY1xs
aW5lDQpcbGluZQ0KXGxpbmUNCiAgXGh0bWxydGZccGFyfVxodG1scnRmMA0KDQp7XCpcaHRtbHRh
ZzEzNiA8L3ByZT59XGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0NCntc
KlxodG1sdGFnMjQwICAgfQ0Ke1wqXGh0bWx0YWc5NiA8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj59
XGh0bWxydGYgXHBhcg0Ke1xodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1s
dGFnMjQwICAgICB9DQp7XCpcaHRtbHRhZzEyOCA8cHJlIHdyYXA9IiI+fVxodG1scnRmIHtccGFy
ZFxwbGFpblxmMVxmczIwIFxodG1scnRmMCBcaHRtbHJ0ZiB7XGh0bWxydGYwIFxsaTcyMCAtLS0t
LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLVxsaW5lDQpGcm9tOiB7fQ0Ke1wqXGh0bWx0YWc4NCA8YSBj
bGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJtYWlsdG86YmxhY2tib3hAb2Jl
cm9uLmNoIj59XGh0bWxydGYge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAibWFpbHRvOmJs
YWNrYm94QG9iZXJvbi5jaCJ9fXtcZmxkcnNsdFxjZjFcdWwgXGh0bWxydGYwIGJsYWNrYm94QG9i
ZXJvbi5jaFxodG1scnRmIH1caHRtbHJ0ZjAgXGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1s
dGFnOTIgPC9hPn0gW3t9DQp7XCpcaHRtbHRhZzg0IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstZnJl
ZXRleHQiIGhyZWY9Im1haWx0bzpibGFja2JveEBvYmVyb24uY2giPn1caHRtbHJ0ZiB7XGZpZWxk
e1wqXGZsZGluc3R7SFlQRVJMSU5LICJtYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoIn19e1xmbGRy
c2x0XGNmMVx1bCBcaHRtbHJ0ZjAgbWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaFxodG1scnRmIH1c
aHRtbHJ0ZjAgXGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnOTIgPC9hPn1dIE9uIFxs
aW5lDQpCZWhhbGYgT2YgQWxleGFuZGVyIElsamluXGxpbmUNClNlbnQ6IFNhbXN0YWcsIDI2LiBN
YWkgMjAwNyAwOToxMlxsaW5lDQpUbzogQmxhY2tib3hcbGluZQ0KU3ViamVjdDogW0JsYWNrQm94
XSAtIDEuNi1yYzU6IEJhY2tncm91bmQgbXVsdGl0YXNraW5nXGxpbmUNClxsaW5lDQpIZWxsbywg
QmxhY2tCb3ggZGV2ZWxvcGVycyFcbGluZQ0KXGxpbmUNCiAgSSBzZWUgdGhlIGZvbGxvd2luZyBs
aW5lcyBpbiB0aGUgQmxhY2tCb3ggMS42LXJjNSBjaGFuZ2Vsb2c6XGxpbmUNClxsaW5lDQpIb3N0
L01vZC9Qb3J0c1xsaW5lDQotIDIwMDYwMzI1LCBtYywgUmlkZXIuSW5wdXQgY2hhbmdlZCBmb3Ig
dGhlIGJlbmVmaXQgb2YgXGxpbmUNCmJhY2tncm91bmQgdGFzayByZXNwb25zZS5cbGluZQ0KXGxp
bmUNCiAgQnV0IGluIGZhY3QgTWFyY28gQ2lvdCdzIGNvbnRyaWJ1dGlvbiBpcyBub3QgaW5jbHVk
ZWQuIEl0IFxsaW5lDQp3b3VsZCBiZSBpZiBIb3N0UG9ydHMuUmlkZXIuSW5wdXQgd291bGQgY29u
dGFpbiBhIGNhbGwgdG8gXGxpbmUNClNlcnZpY2VzLmFjdGlvbkhvb2suU3RlcCwgYnV0IGl0IGRv
ZXMgbm90LiBUaGUgYmFja2dyb3VuZCBcbGluZQ0KdGFza3MgZnJlZXplIHdoaWxlIHVzZXIgaG9s
ZHMgYSBtb3VzZSBidXR0b24gb3IgaXMgb3RoZXJ3aXNlIFxsaW5lDQpzdHVjayBpbiBhbiBJbnB1
dC1yZWxhdGVkIGxvb3AuXGxpbmUNCiAgSSd2ZSBjcmVhdGVkIGEgc2ltcGxlIG1vZHVsZSB0aGF0
IGFsbG93cyB0byB0ZXN0IHRoYXQuIEhlcmUgaXQgaXM6XGxpbmUNClxsaW5lDQpTdGRDb2Rlci5E
ZWNvZGUgLi4sLCBcbGluZQ0KLi5VVi4uLi4zUXc3dVA1UFJQUE5SOVJiZjliOFI3OUZUdk1mMUdv
bUNybEF5MnhoWCxDYjJ4XGxpbmUNCiBcbGluZQ0KaFhoQzZGVTF4aGlaaVZCaGloZ21SaWlvZWRo
Z3JaY1pSaVhGZmFxbVNydHVHZmE0NzAwemRHcnI4cm1DTExcbGluZQ0KQ0p1eUt0WWNaUmlYXGxp
bmUNCiBcbGluZQ0KNy4yLnMsTXRELiw2LjVRdzd1UDUxUUNQdVA3UE5OOUY5dlFBeTF4Qi5nZGos
VUJ4aFloQWJmOVAwRzJzSWRcbGluZQ0KdlBabnRnY2doZ2haXGxpbmUNCiBcbGluZQ0KY1pSQzhU
MEUua05TLkguTHQsMi4sVTA4Sjk5U2RmSkhQTmp2UUNKdUdLZmFxbVk2TXdkT05sMVFDaDA3MDhc
bGluZQ0KVCxVLi53Lmd1NC4sXGxpbmUNCiBcbGluZQ0Kc1VHcG1XYkJ4aFloQWJuZE1IVDlOWTZN
dy5zUXEyWTZjd0IuMC56Qyx3LHd1MkUuMC5vWixVMDAuYm5VR0xcbGluZQ0KdThybzhxdUdybUNM
XGxpbmUNCiBcbGluZQ0KV0txdEUwRS5rTjAuLDYuSTE2Lk0uNi5KRnl1di5VLjJtLC5UMTAudUZx
OFVhNVYwY1VYREY5ZlI1dVBQUFBcbGluZQ0KMWZQN1BOWnZRUnRJXGxpbmUNCiBcbGluZQ0KZEhm
LjJVbGJjWnBDLmM5aDBFLjh6LFUuRUVFLkUxVS5NM01LMS4sNi5vMS44VDVVLkU4RS5FMVUuTTNz
ZU1cbGluZQ0KLjNnd1AuLDYuLkVCXGxpbmUNCiBcbGluZQ0KVS5VLDIuSTMuMEVTOS5JLmNUTS45
LmUzWS4yVTVWejVaZWdWSTNoZFJpVWdoalpncFpoWjNZY2hnZzNpbjNcbGluZQ0KWW9oZ25aaVVJ
Y2dCXGxpbmUNCiBcbGluZQ0KZ1hSaDB4aHMzWVdCZ1hSaGJKaWpoaWlaZ1VnaHBaaG9CaG9CZ25S
aGRwaGJwWlVZZWozWW5aaVZKaW8zWW9cbGluZQ0KaGduTk9Sdk5ONzY5XGxpbmUNCiBcbGluZQ0K
OVM5dk1mOVI5OTZkOU85OTZCdlBOOVBUdlJIZlBEOTY1dlBQMWNDUGMuM3VOUFBSTjlSUnRJZFBN
Z1ZCQWZcbGluZQ0KamhpVXdpZFpoZzNZXGxpbmUNCiBcbGluZQ0KbmhnWjNZbmhnbGhpWnBob0Jo
VlpoVW9ocGhoV2hnbVJpVUFnazNpWkJnbUJoaXhnVUFoaTNZbzNoWjdIVHZcbGluZQ0KTix0Ukhm
UDd2UGo5XGxpbmUNCiBcbGluZQ0KNjlmUjlmUW45NmJQTjV2UFI5TlI3NlJ1UGo5NlZmUTl2UWI5
NjFmUDc5NkZ2UE45TixOTVJQUyxOUFRQUmJcbGluZQ0KUE4sZE1mOVJkdlBSXGxpbmUNCiBcbGlu
ZQ0KOTYxZlBudlJGUE5aUE4sdFJIOVJGUE9SOTZBaG43TlR2TXE0MG12YUtyVWF4aG0zWW5oZ3Fo
Z21CZ2czWW5cbGluZQ0KaGdYVm5wWlVBZGEzXGxpbmUNCiBcbGluZQ0KWXR4aHAzWW5oZ1o3UkZQ
TWQ5NmQ5TzlIcktycS5MUE45OVEsTk1WOVEuLjlIYTY5LDdSRkhyMEd1NjYzUE1cbGluZQ0KNTFv
QnE0YTQuanZQXGxpbmUNCiBcbGluZQ0KWnZPYjk2MXZRLE5PZDk2YjlPVFBSTjlOUk4xUDZKVDk2
Ym5yMExFR0xvYTRQMVlaVWdncyxrbW9BLlFBLlVcbGluZQ0KYixSVmpOMUpOOFBNXGxpbmUNCiBc
bGluZQ0KSFQ4RmY4SDk4NjN1TlBQUlFiQmdWN0FkQjNlREplSTNZSGhnbXBpZFJnWlJpZzJZQXho
YlJiQmdWN1llTjNcbGluZQ0KZTNoVjdBVixSZ29CXGxpbmUNCiBcbGluZQ0KaGpwaFVnYlUyZURC
ZENaZTNKZVVZZUQzWUdoYzF4ZEdaY1UyWkhoZ20sdW1VQ0t1YTRINzY5ZUg3dUNQTTFcbGluZQ0K
T3BVOHA0YWsyQ0tyXGxpbmUNCiBcbGluZQ0KR0xSMG1ZdUllS29YS0lkaW40YWsyNEtSMG1VQ0t1
YTRyTjFQNkladUg1T0Y3T0paT0YsNzgxZkMsTkVVZDZcbGluZQ0KRlRQOSw3OEh0Q1BjXGxpbmUN
CiBcbGluZQ0KRTl1RkhlSFBNMEhlSDU4ODVmUGRQOHJOMUg2SFR2TlJOR1I5UkZ0TVI5UjJZQXho
YnBaQXBoY0FadmcsYk9cbGluZQ0KTlpmUlUyeGhBQmdvXGxpbmUNCiBcbGluZQ0KaGdtM1pWWlpV
UWVaLDZKSHZNTHZRRk44THRJOWZRaDFJaVpSaWpaaHBaaWR4aGlOMTllSDc4Njd1UHJOMVBcbGlu
ZQ0KNkkuc0lkUE1aSEowXGxpbmUNCiBcbGluZQ0KR0lhbVJJNlVYcEIsZEN2NzZWdENQTTBST0Zq
ODgxUDhyTjFILi43MC4uRXJ5cXZhbVJxa1d1SVdRZW9CQWlcbGluZQ0KbjRxRWMuLlQ5UUo3XGxp
bmUNCiBcbGluZQ0KNkYsLkNwbS5JZVpoaGpwaVpCY1haQzJaVkJadmtrMEdScUhFdW9ZbW80S0li
RzJ5YXZnVkJnY0NGVlNxcUVcbGluZQ0KTDhzc0hwbXNFVGZQXGxpbmUNCiBcbGluZQ0KZGZRVDlQ
TlBOWnZRUnRJUWNvSmlnWmNaUmlYM1VsYjguLnVtVnlLckc1RVdLcXRDSy5RNkFBRUxVbSwuLlVc
bGluZQ0KbnAzLjZGNi5aRCw2XGxpbmUNCiBcbGluZQ0KLjYzNi5NMDAuLC4uMWNVWERKOVhHaGln
aGdtUmlpUTg4cHVtNDcwLE13ZDBVbnBaR2hpZ2hBNzAsY3c1LixcbGluZQ0KNi5RSncuMGtGRi4w
XGxpbmUNCiBcbGluZQ0KVTE4Si5RaWlROENKdWFMcUtLV0txdDJVbDEuUlZ0WkJFLjh6MVUuLjIs
STkyVS5FLCwuUk5FZDFZQ0cyNTlcbGluZQ0KLkcuMC4uNjc2LjE2XGxpbmUNCiBcbGluZQ0KLjYu
NjY1aEsyLiw2VHhSLmVLWk0uTS42LixVMEt5Qi4sLi5lLDIuQS5jOFUuRS4wdC5VLi42MWxiQVVn
UW5cbGluZQ0KUHQwbExVOHNzSG9yXGxpbmUNCiBrbXNRQ29yLi5jMkUuLlU2VS4uSEUuNlJ2dVEw
bUhDZS5hejg2VXRqMEdUa1dhVUtaTTAzYiwuLi5cbGluZQ0KIC0tLSBlbmQgb2YgZW5jb2Rpbmcg
LS0tXGxpbmUNClxsaW5lDQotLS09PT09PS0tLVxsaW5lDQogQWxleGFuZGVyXGxpbmUNClxsaW5l
DQotLS0gQmxhY2tCb3hcbGluZQ0KLS0tIHNlbmQgc3ViamVjdCBIRUxQIG9yIFVOU1VCU0NSSUJF
IHRvIHt9DQp7XCpcaHRtbHRhZzg0IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstYWJicmV2aWF0ZWQi
IGhyZWY9Im1haWx0bzpibGFja2JveEBvYmVyb24uY2giPn1caHRtbHJ0ZiB7XGZpZWxke1wqXGZs
ZGluc3R7SFlQRVJMSU5LICJtYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoIn19e1xmbGRyc2x0XGNm
MVx1bCBcaHRtbHJ0ZjAgYmxhY2tib3hAb2Jlcm9uLmNoXGh0bWxydGYgfVxodG1scnRmMCBcaHRt
bHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc5MiA8L2E+fVxsaW5lDQpcbGluZQ0KXGxpbmUN
CiAgICBcaHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFnMTM2IDwvcHJlPn1caHRt
bHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICB9
DQp7XCpcaHRtbHRhZzEwNCA8L2Jsb2NrcXVvdGU+fVxodG1scnRmIH1ccGFyDQpcaHRtbHJ0ZjAg
DQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzI0MCAgIH0NCntcKlxodG1sdGFnMTI4
IDxwcmUgd3JhcD0iIj59XGh0bWxydGYge1xwYXJkXHBsYWluXGYxXGZzMjAgXGh0bWxydGYwIFxo
dG1scnRmIHtcaHRtbHJ0ZjAgXGxpMzYwIA0Ke1wqXGh0bWx0YWcyNDQgPCEtLS0tPn1cbGluZQ0K
LS0tIEJsYWNrQm94XGxpbmUNCi0tLSBzZW5kIHN1YmplY3QgSEVMUCBvciBVTlNVQlNDUklCRSB0
byB7fQ0Ke1wqXGh0bWx0YWc4NCA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBo
cmVmPSJtYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoIj59XGh0bWxydGYge1xmaWVsZHtcKlxmbGRp
bnN0e0hZUEVSTElOSyAibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCJ9fXtcZmxkcnNsdFxjZjFc
dWwgXGh0bWxydGYwIGJsYWNrYm94QG9iZXJvbi5jaFxodG1scnRmIH1caHRtbHJ0ZjAgXGh0bWxy
dGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnOTIgPC9hPn1cbGluZQ0KXGxpbmUNClxsaW5lDQog
IFxodG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWcxMzYgPC9wcmU+fVxodG1scnRm
IH1caHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzEwNCA8L2Jsb2Nr
cXVvdGU+fVxodG1scnRmIH1ccGFyDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7
XCpcaHRtbHRhZzExMiA8YnI+fVxodG1scnRmIFxwYXINClxodG1scnRmMCANCntcKlxodG1sdGFn
MCBccGFyIH0NCntcKlxodG1sdGFnNTggPC9ib2R5Pn0NCntcKlxodG1sdGFnMiBccGFyIH0NCntc
KlxodG1sdGFnMjcgPC9odG1sPn0NCntcKlxodG1sdGFnMyBccGFyIH0NCntcKlxodG1sfX0AbnRj
S2x4b2RH
----boundary-LibPST-iamunique-47749460_-_---
Received on Sun May 27 2007 - 01:11:11 UTC