- Hiding abstract methods
----boundary-LibPST-iamunique-1593464420_-_-
Content-type: text/plain
Bob,
I am trying to keep the amount of stuff shown to a minimum.
There is also a procedure Run that is exported from M that when called starts up and eventually calls the installed reader and writer (repeatedly).
The reader and writer do not invoke the hidden procedures they are passive and are called by M when needed.
How do I hide the methods of A, Bits, and Ints?
-Doug Danforth
Bob Walkden wrote:
How and when are M's internal procedures invoked? If the client's reader is to invoke them directly then they must be made public. If you want M's hidden procedures to be invoked indirectly by the reader or writer you may need to provide a couple of Notifier procedures in M and have the reader or writer call them explicitly.
--
Regards,
Bob
_____
From: blackbox{([at]})nowhere.xySent: 14 June 2007 22:25
To: BlackBox Mailing List
Subject: [BlackBox] - Hiding abstract methods
Chris,
Here is what I would like the interface to module M to appear
DEFINITION M;
TYPE
A = POINTER TO ABSTRACT RECORD END;
Bits = POINTER TO RECORD (A)
x: POINTER TO ARRAY OF SET
END;
Ints = POINTER TO RECORD (A)
x: POINTER TO ARRAY OF INTEGER
END;
Reader = PROCEDURE (VAR a: A): BOOLEAN;
Writer = PROCEDURE (a: A);
PROCEDURE InstallReader (rd: Reader);
PROCEDURE InstallWriter (wr: Writer);
END M.
One just installs a specific reader that generates a Bits or an Ints.
Internally to M there are many procedures that take the abstract
quantity 'a' when a read operation is done and operate on it with procedures
that are methods of type either Bits or Ints whose definitions are given internally
and are abstractions of the of type A. But the user of M need not know anything
about this and BlackBox should not force the user to see these methods.
How can this be accomplished?
-Doug Danforth
CFB Software wrote:
Hi Doug,
I don't know if I can help but as nobody else has responded yet I'm
willing to give it a try. I'm interested in learning more about the
finer details of issues like this. However, I'm not sure from your
desription that I understand exactly what you are trying to do. Would it
be possible for you to show complete minimal examples of:
a) What you would like the code to look like
b) How you think it needs to be written to make it acceptable to
Blackbox
Regards,
Chris Burrows
CFB Software
http://www.cfbsoftware.com/gpcp
-----Original Message-----
From: blackbox{([at]})nowhere.xy
Behalf Of Douglas G. Danforth
Sent: Wednesday, 13 June 2007 10:22 AM
To: BlackBox Mailing List
Subject: [BlackBox] - Hiding abstract methods
Folks,
I have a conceptual problem on which I would like your advice.
I have an ABSTRACT type A and two concrete types C1 and
C2 which are extensions of A.
TYPE
A* = POINTER TO ABSTRACT RECORD END;
C1* = POINTER TO RECORD(A) END;
C2* = POINTER TO RECORD(A) END;
I would like to export A (as shown with the '*'') but within the
module M where A is defined I *do not want* to export its
methods. I want them to be completely hidden so that the user
of M only needs to create the instance Ci (and fill its
fields (not shown))
and pass Ci to the module M in which the specific methods
appropriate to Ci
are specified (but also not exported). Within M, procedures take 'a'
(an instance of A which is either C1 or C2) and operates on it without
knowledge of its concrete form. The methods of A are simply called
and the concrete forms of those methods as C1 or C2 are actually
run.
Unfortunately, it seems that this scheme of things is not possible in
BlackBox.
I am forced to export the methods of A and also the methods of C1 and
the methods of C2, greatly cluttering the interface to M when
none of that
information will be used by the person operating with M.
Only the existence
of A and the extensions C1 and C2 are needed.
Is there a clean way to hide all of these methods?
-Doug Danforth
--- 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-1593464420_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbWh0bWwxIFxkZWZmMHtcZm9udHRibA0Ke1xmMFxm
c3dpc3NcZmNoYXJzZXQwIEFyaWFsO30NCntcZjFcZm1vZGVybiBDb3VyaWVyIE5ldzt9DQp7XGYy
XGZuaWxcZmNoYXJzZXQyIFN5bWJvbDt9DQp7XGYzXGZtb2Rlcm5cZmNoYXJzZXQwIENvdXJpZXIg
TmV3O30NCntcZjRcZnN3aXNzXGZjaGFyc2V0MCBBcmlhbDt9DQp7XGY1XGZzd2lzcyBUYWhvbWE7
fX0NCntcY29sb3J0YmxccmVkMFxncmVlbjBcYmx1ZTA7XHJlZDBcZ3JlZW4wXGJsdWUyNTU7XHJl
ZDBcZ3JlZW4wXGJsdWUyNTU7fQ0KXHVjMVxwYXJkXHBsYWluXGRlZnRhYjM2MCBcZjBcZnMyNCAN
CntcKlxodG1sdGFnMjQzIDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0
LjAxIFRyYW5zaXRpb25hbC8vRU4iPn0NCntcKlxodG1sdGFnMyBccGFyIH0NCntcKlxodG1sdGFn
MTkgPGh0bWw+fQ0Ke1wqXGh0bWx0YWcyIFxwYXIgfQ0Ke1wqXGh0bWx0YWczNCA8aGVhZD59DQp7
XCpcaHRtbHRhZzEgXHBhciB9DQp7XCpcaHRtbHRhZzI0MSAgIH0NCntcKlxodG1sdGFnMSBccGFy
IH0NCntcKlxodG1sdGFnMjQxICAgfQ0Ke1wqXGh0bWx0YWcxNzcgPHRpdGxlPn0NCntcKlxodG1s
dGFnMjQxIH0NCntcKlxodG1sdGFnMTg1IDwvdGl0bGU+fQ0Ke1wqXGh0bWx0YWcxIFxwYXIgfQ0K
e1wqXGh0bWx0YWc0MSA8L2hlYWQ+fQ0Ke1wqXGh0bWx0YWcyIFxwYXIgfQ0Ke1wqXGh0bWx0YWc1
MCA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIj59XGh0bWxydGYgXHZpZXdr
aW5kNQ0Ke1wqXGJhY2tncm91bmQge1xzaHB7XCpcc2hwaW5zdHtcc3B7XHNuIGZpbGxDb2xvcn17
XHN2IDE2Nzc3MjE1fX17XHNwe1xzbiBmRmlsbGVkfXtcc3YgMX19fX19XGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWcwIFxwYXIgfXtcKlxodG1sdGFnNjR9XGh0bWxydGYge1xodG1scnRmMCBCb2IsDQp7
XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
ZzQgXHBhciB9SSBhbSB0cnlpbmcgdG8ga2VlcCB0aGUgYW1vdW50IG9mIHN0dWZmIHNob3duIHRv
IGEgbWluaW11bS4NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRm
MCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxp
bmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1UaGVyZSBpcyBhbHNvIGEgcHJvY2Vk
dXJlIFJ1biB0aGF0IGlzIGV4cG9ydGVkIGZyb20gTSB0aGF0IHdoZW4gY2FsbGVkDQp7XCpcaHRt
bHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBzdGFydHMgdXAgYW5kIGV2ZW50dWFsbHkg
Y2FsbHMgdGhlIGluc3RhbGxlZCByZWFkZXIgYW5kIHdyaXRlcg0Ke1wqXGh0bWx0YWc0IFxwYXIg
fVxodG1scnRmICBcaHRtbHJ0ZjAgKHJlcGVhdGVkbHkpLg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1c
aHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfVRoZSByZWFkZXIg
YW5kIHdyaXRlciBkbyBub3QgaW52b2tlIHRoZSBoaWRkZW4gcHJvY2VkdXJlcyB0aGV5IGFyZQ0K
e1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgcGFzc2l2ZSBhbmQgYXJlIGNh
bGxlZCBieSBNIHdoZW4gbmVlZGVkLg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGlu
ZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1c
aHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfUhvdyBkbyBJIGhp
ZGUgdGhlIG1ldGhvZHMgb2YgQSwgQml0cywgYW5kIEludHM/DQp7XCpcaHRtbHRhZzExNiA8YnI+
fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRt
bHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBh
ciB9LURvdWcgRGFuZm9ydGgNCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxo
dG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxy
dGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnMTE2
IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntc
KlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFn
NCBccGFyIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCAN
CntcKlxodG1sdGFnNCBccGFyIH1Cb2IgV2Fsa2RlbiB3cm90ZToNCntcKlxodG1sdGFnNCBccGFy
IH1caHRtbHJ0ZiAgXGh0bWxydGYwIHtcKlxodG1sdGFnNzJ9XGh0bWxydGZccGFyfVxodG1scnRm
MA0KDQp7XCpcaHRtbHRhZzk2IDxibG9ja3F1b3RlIGNpdGU9Im1pZDpBTUVUSFlTVDIxbzh5Zm9n
a0pYMDAwMDAyNTZAYW1ldGh5c3QyLm9iZXJvbi5jaCJccGFyICB0eXBlPSJjaXRlIj59XGh0bWxy
dGYgXHBhcg0Ke1xodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1sdGFnMjQw
ICAgfQ0Ke1wqXGh0bWx0YWcxNzYgPHRpdGxlPn0NCntcKlxodG1sdGFnMjQwIH0NCntcKlxodG1s
dGFnMTg0IDwvdGl0bGU+fQ0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICB9
DQp7XCpcaHRtbHRhZzE2MCA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgIj59DQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzI0MCAgIH0N
CntcKlxodG1sdGFnMTYwIDxtZXRhIGNvbnRlbnQ9Ik1TSFRNTCA2LjAwLjYwMDAuMTY0ODEiIG5h
bWU9IkdFTkVSQVRPUiI+fQ0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICB9
DQp7XCpcaHRtbHRhZzk2IDxkaXYgZGlyPSJsdHIiIGFsaWduPSJsZWZ0Ij59XGh0bWxydGYge1xs
dHJwYXJcbHRyY2hccWwgXHFsIFxodG1scnRmMCB7XCpcaHRtbHRhZzY0fVxodG1scnRmIHtcaHRt
bHJ0ZjAgXGxpMzYwIA0Ke1wqXGh0bWx0YWcxNDggPGZvbnQgY29sb3I9IiMwMDAwZmYiIGZhY2U9
IkFyaWFsIlxwYXIgIHNpemU9IjIiPn1caHRtbHJ0ZiB7XGNmMiBcZjQgXGZzMjAgXGh0bWxydGYw
IA0Ke1wqXGh0bWx0YWc4NCA8c3BhbiBjbGFzcz0iNDEyNTMxMDIyLTE0MDYyMDA3Ij59XGh0bWxy
dGYge1xodG1scnRmMCBIb3cgYW5kIHdoZW4NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRm
IFwnYTBcaHRtbHJ0ZjAgYXJlIE0ncw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRt
bHJ0ZjAgaW50ZXJuYWwgcHJvY2VkdXJlcyBpbnZva2VkPyBJZiB0aGUgY2xpZW50J3MgcmVhZGVy
IGlzIHRvIGludm9rZSB0aGVtDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRm
MCBkaXJlY3RseSB0aGVuIHRoZXkgbXVzdCBiZSBtYWRlIHB1YmxpYy4gSWYgeW91IHdhbnQgTSdz
IGhpZGRlbg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgcHJvY2VkdXJl
cyB0byBiZSBpbnZva2VkIGluZGlyZWN0bHkgYnkgdGhlIHJlYWRlciBvciB3cml0ZXIgeW91IG1h
eQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgbmVlZCB0byBwcm92aWRl
IGEgY291cGxlIG9mIE5vdGlmaWVyIHByb2NlZHVyZXMgaW4gTQ0Ke1wqXGh0bWx0YWc4NCAmbmJz
cDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCBhbmQgaGF2ZSB0aGUNCntcKlxodG1sdGFnNCBccGFy
IH1caHRtbHJ0ZiAgXGh0bWxydGYwIHJlYWRlciBvciB3cml0ZXIgY2FsbCB0aGVtIGV4cGxpY2l0
bHkuDQp7XCpcaHRtbHRhZzkyIDwvc3Bhbj59XGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1s
dGFnMTU2IDwvZm9udD59XGh0bWxydGYgfVxodG1scnRmMCB7XCpcaHRtbHRhZzcyfVxodG1scnRm
XHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWcxMDQgPC9kaXY+fVxodG1scnRmIH1caHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzI0MCAgIH0NCntcKlxodG1sdGFn
OTYgPGRpdj59XGh0bWxydGYge1xodG1scnRmMCB7XCpcaHRtbHRhZzY0fVxodG1scnRmIHtcaHRt
bHJ0ZjAgXGxpMzYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRm
MCB7XCpcaHRtbHRhZzcyfVxodG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWcxMDQg
PC9kaXY+fVxodG1scnRmIH1caHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRt
bHRhZzI0MCAgIH0NCntcKlxodG1sdGFnOTYgPGRpdj59XGh0bWxydGYge1xodG1scnRmMCB7XCpc
aHRtbHRhZzY0fVxodG1scnRmIHtcaHRtbHJ0ZjAgXGxpMzYwIA0Ke1wqXGh0bWx0YWcxNDggPGZv
bnQgc2l6ZT0iMiI+fVxodG1scnRmIHtcZnMyMCBcaHRtbHJ0ZjAgLS0NCntcKlxodG1sdGFnMTE2
IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1SZWdh
cmRzLA0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1s
cnRmMCBCb2IgDQp7XCpcaHRtbHRhZzE1NiA8L2ZvbnQ+fVxodG1scnRmIH1caHRtbHJ0ZjAge1wq
XGh0bWx0YWc3Mn1caHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFnMTA0IDwvZGl2
Pn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcy
NDAgICB9DQp7XCpcaHRtbHRhZzk2IDxkaXY+fVxodG1scnRmIHtcaHRtbHJ0ZjAge1wqXGh0bWx0
YWc2NH1caHRtbHJ0ZiB7XGh0bWxydGYwIFxsaTM2MCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxo
dG1scnRmIFwnYTBcaHRtbHJ0ZjAge1wqXGh0bWx0YWc3Mn1caHRtbHJ0ZlxwYXJ9XGh0bWxydGYw
DQoNCntcKlxodG1sdGFnMTA0IDwvZGl2Pn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0
YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICB9DQp7XCpcaHRtbHRhZzExMiA8YnI+fVxodG1s
cnRmIFxwYXINClxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1sdGFnMjQw
ICAgfQ0Ke1wqXGh0bWx0YWc5NiA8YmxvY2txdW90ZSBkaXI9Imx0ciJccGFyICBzdHlsZT0iYm9y
ZGVyLWxlZnQ6IDJweCBzb2xpZCByZ2IoMCwgMCwgMjU1KTsgcGFkZGluZy1sZWZ0OiA1cHg7IG1h
cmdpbi1sZWZ0OiA1cHg7IG1hcmdpbi1yaWdodDogMHB4OyI+fVxodG1scnRmIFxwYXINCntcbHRy
cGFyXGx0cmNoXHFsIFxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1sdGFn
MjQwICAgICB9DQp7XCpcaHRtbHRhZzk2IDxkaXYgY2xhc3M9Ik91dGxvb2tNZXNzYWdlSGVhZGVy
IiBkaXI9Imx0ciIgYWxpZ249ImxlZnQiXHBhciAgbGFuZz0iZW4tdXMiPn1caHRtbHJ0ZiB7XGx0
cnBhclxsdHJjaFxxbCBccWwgXGxhbmcxMDMzIFxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFy
IH0NCntcKlxodG1sdGFnMjQwICAgICB9DQp7XCpcaHRtbHRhZzk2IDxociB0YWJpbmRleD0iLTEi
Pn1caHRtbHJ0ZiB7XGYxXHFjXHFqXHVsZGIgXH4gX19fX18gXH5cbGluZVxwYXJ9DQpcaHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzAgIH17XCpcaHRtbHRhZzY0fVxodG1scnRmIHtcaHRtbHJ0ZjAgXGxp
NzIwIA0Ke1wqXGh0bWx0YWcxNDggPGZvbnQgZmFjZT0iVGFob21hIiBzaXplPSIyIj59XGh0bWxy
dGYge1xmNSBcZnMyMCBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0IDxiPn1caHRtbHJ0ZiB7XGIg
XGh0bWxydGYwIEZyb206DQp7XCpcaHRtbHRhZzkyIDwvYj59XGh0bWxydGYgfVxodG1scnRmMCAN
CntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHt9DQp7XCpcaHRtbHRhZzg0
IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstYWJicmV2aWF0ZWQiIGhyZWY9Im1haWx0bzpibGFja2Jv
eEBvYmVyb24uY2giPn1caHRtbHJ0ZiB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJtYWls
dG86YmxhY2tib3hAb2Jlcm9uLmNoIn19e1xmbGRyc2x0XGNmMVx1bCBcaHRtbHJ0ZjAgYmxhY2ti
b3hAb2Jlcm9uLmNoXGh0bWxydGYgfVxodG1scnRmMCBcaHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc5MiA8L2E+fSBbe30NCntcKlxodG1sdGFnODQgPGEgY2xhc3M9Im1vei10eHQtbGlu
ay1mcmVldGV4dCIgaHJlZj0ibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCI+fVxodG1scnRmIHtc
ZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgIm1haWx0bzpibGFja2JveEBvYmVyb24uY2gifX17
XGZsZHJzbHRcY2YxXHVsIFxodG1scnRmMCBtYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoXGh0bWxy
dGYgfVxodG1scnRmMCBcaHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc5MiA8L2E+fV0g
DQp7XCpcaHRtbHRhZzg0IDxiPn1caHRtbHJ0ZiB7XGIgXGh0bWxydGYwIE9uIEJlaGFsZiBPZiAN
CntcKlxodG1sdGFnOTIgPC9iPn1caHRtbHJ0ZiB9XGh0bWxydGYwIERvdWdsYXMNCntcKlxodG1s
dGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIEcuIERhbmZvcnRoDQp7XCpcaHRtbHRhZzEx
NiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7
XCpcaHRtbHRhZzg0ICAgICB9DQp7XCpcaHRtbHRhZzg0IDxiPn1caHRtbHJ0ZiB7XGIgXGh0bWxy
dGYwIFNlbnQ6DQp7XCpcaHRtbHRhZzkyIDwvYj59XGh0bWxydGYgfVxodG1scnRmMCAgMTQgSnVu
ZSAyMDA3IDIyOjI1DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICB9DQp7XCpcaHRtbHRh
Zzg0IDxiPn1caHRtbHJ0ZiB7XGIgXGh0bWxydGYwIFRvOg0Ke1wqXGh0bWx0YWc5MiA8L2I+fVxo
dG1scnRmIH1caHRtbHJ0ZjAgIEJsYWNrQm94IE1haWxpbmcgTGlzdA0Ke1wqXGh0bWx0YWcxMTYg
PGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wq
XGh0bWx0YWc4NCAgICAgfQ0Ke1wqXGh0bWx0YWc4NCA8Yj59XGh0bWxydGYge1xiIFxodG1scnRm
MCBTdWJqZWN0Og0Ke1wqXGh0bWx0YWc5MiA8L2I+fVxodG1scnRmIH1caHRtbHJ0ZjAgIFtCbGFj
a0JveF0gLSBIaWRpbmcgYWJzdHJhY3QgbWV0aG9kcw0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRt
bHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4
NCAgICAgfQ0Ke1wqXGh0bWx0YWcxNTYgPC9mb250Pn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0
IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfXtcKlxodG1sdGFnNzJ9XGh0bWxydGZccGFyfVxo
dG1scnRmMA0KDQp7XCpcaHRtbHRhZzEwNCA8L2Rpdj59XGh0bWxydGYgfVxodG1scnRmMCANCntc
KlxodG1sdGFnMCBccGFyIH17XCpcaHRtbHRhZzY0fVxodG1scnRmIHtcaHRtbHJ0ZjAgXGxpNzIw
IENocmlzLA0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0K
e1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfQ0Ke1wqXGh0bWx0YWcxMTYg
PGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfUhlcmUg
aXMgd2hhdCBJIHdvdWxkIGxpa2UgdGhlIGludGVyZmFjZSB0byBtb2R1bGUgTSB0byBhcHBlYXIN
CntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1s
dGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0
bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1ERUZJTklUSU9OIE07
DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRt
bHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxo
dG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRh
Zzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9
XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwn
YTBcaHRtbHJ0ZjAgIFRZUEUNCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxo
dG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1s
cnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgDQp7
XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4
NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxo
dG1scnRmIFwnYTBcaHRtbHJ0ZjAgIEEgPSBQT0lOVEVSIFRPIEFCU1RSQUNUIFJFQ09SRA0Ke1wq
XGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgRU5EOw0Ke1wqXGh0bWx0
YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIg
fQ0Ke1wqXGh0bWx0YWc4NCAgICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGlu
ZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9
XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwn
YTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYw
ICANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRt
bHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJz
cDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgQml0cyA9IFBPSU5URVIgVE8gUkVDT1JEIChBKQ0K
e1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0
YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAN
CntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
Zzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICANCntcKlxodG1sdGFnODQgJm5ic3A7
fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBc
J2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRm
MCAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5i
c3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIHg6IFBPSU5URVIgVE8gQVJSQVkgT0YgU0VUDQp7
XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
ZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0K
e1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFn
ODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9
XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwn
YTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYw
ICBFTkQ7DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICB9DQp7XCpcaHRtbHRhZzExNiA8
YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpc
aHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAm
bmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1s
cnRmIFwnYTBcaHRtbHJ0ZjAgIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxo
dG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBJbnRzID0gUE9JTlRF
UiBUTyBSRUNPUkQgKEEpDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRt
bHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0
ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1s
cnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIA0Ke1wq
XGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQg
Jm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRt
bHJ0ZiBcJ2EwXGh0bWxydGYwICANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBc
aHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0K
e1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgeDogUE9JTlRFUiBU
TyBBUlJBWSBPRiBJTlRFR0VSDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpc
aHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRt
bHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxo
dG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIA0K
e1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFn
ODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31c
aHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBFTkQ7DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRm
IFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAg
ICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpc
aHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxy
dGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxo
dG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIA0Ke1wqXGh0bWx0YWc4NCAm
bmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1s
cnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0
bWxydGYwICBSZWFkZXIgPSBQUk9DRURVUkUgKFZBUiBhOiBBKTogQk9PTEVBTjsNCntcKlxodG1s
dGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFy
IH0NCntcKlxodG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxp
bmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7
fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBc
J2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRm
MCAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5i
c3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIFdyaXRlciA9IFBST0NFRFVSRSAoYTogQSk7DQp7
XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
ZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1s
cnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0
ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0
bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBc
aHRtbHJ0ZjAgIFBST0NFRFVSRSBJbnN0YWxsUmVhZGVyIChyZDogUmVhZGVyKTsNCntcKlxodG1s
dGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFy
IH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRt
bHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJz
cDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgUFJPQ0VEVVJFIEluc3RhbGxXcml0ZXIgKHdyOiBX
cml0ZXIpOw0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0K
e1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfQ0Ke1wqXGh0bWx0YWcxMTYg
PGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfUVORCBN
Lg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1c
aHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfU9uZSBqdXN0IGlu
c3RhbGxzIGEgc3BlY2lmaWMgcmVhZGVyIHRoYXQgZ2VuZXJhdGVzIGEgQml0cyBvciBhbiBJbnRz
Lg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc0IFxwYXIgfUludGVybmFsbHkgdG8gTSB0aGVyZSBhcmUgbWFueSBwcm9jZWR1cmVzIHRo
YXQgdGFrZSB0aGUgYWJzdHJhY3QNCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUN
ClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1xdWFudGl0eSAnYScgd2hlbiBhIHJlYWQg
b3BlcmF0aW9uIGlzIGRvbmUgYW5kIG9wZXJhdGUgb24gaXQgd2l0aA0Ke1wqXGh0bWx0YWc0IFxw
YXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgcHJvY2VkdXJlcw0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1c
aHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfXRoYXQgYXJlIG1l
dGhvZHMgb2YgdHlwZSBlaXRoZXIgQml0cyBvciBJbnRzIHdob3NlIGRlZmluaXRpb25zIGFyZQ0K
e1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgZ2l2ZW4gaW50ZXJuYWxseQ0K
e1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0
YWc0IFxwYXIgfWFuZCBhcmUgYWJzdHJhY3Rpb25zIG9mIHRoZSBvZiB0eXBlIEEuDQp7XCpcaHRt
bHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBCdXQgdGhlIHVzZXIgb2YgTSBu
ZWVkIG5vdCBrbm93DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBhbnl0
aGluZw0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc0IFxwYXIgfWFib3V0IHRoaXMgYW5kIEJsYWNrQm94IHNob3VsZCBub3QgZm9yY2Ug
dGhlIHVzZXIgdG8gc2VlIHRoZXNlIG1ldGhvZHMuDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1s
cnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0
ICAgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzQgXHBhciB9SG93IGNhbiB0aGlzIGJlIGFjY29tcGxpc2hlZD8NCntcKlxodG1s
dGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFy
IH0NCntcKlxodG1sdGFnODQgICAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxp
bmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0tRG91ZyBEYW5mb3J0aA0Ke1wqXGh0
bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxw
YXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBc
bGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgICAg
fQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc0IFxwYXIgfUNGQiBTb2Z0d2FyZSB3cm90ZToNCntcKlxodG1sdGFnNCBccGFyIH1caHRt
bHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgICAgfXtcKlxodG1sdGFnNzJ9XGh0bWxy
dGZccGFyfVxodG1scnRmMA0KDQp7XCpcaHRtbHRhZzk2IDxibG9ja3F1b3RlXHBhciAgY2l0ZT0i
bWlkOkFNRVRIWVNUMnFmNjlhWmJMQVgwMDAwMDE3YkBhbWV0aHlzdDIub2Jlcm9uLmNoIiB0eXBl
PSJjaXRlIj59XGh0bWxydGYgXHBhcg0Ke1xodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0N
CntcKlxodG1sdGFnMjQwICAgICAgIH0NCntcKlxodG1sdGFnMTI4IDxwcmUgd3JhcD0iIj59XGh0
bWxydGYge1xwYXJkXHBsYWluXGYxXGZzMjAgXGh0bWxydGYwIFxodG1scnRmIHtcaHRtbHJ0ZjAg
XGxpMTA4MCBIaSBEb3VnLFxsaW5lDQpcbGluZQ0KSSBkb24ndCBrbm93IGlmIEkgY2FuIGhlbHAg
YnV0IGFzIG5vYm9keSBlbHNlIGhhcyByZXNwb25kZWQgeWV0IEknbVxsaW5lDQp3aWxsaW5nIHRv
IGdpdmUgaXQgYSB0cnkuIEknbSBpbnRlcmVzdGVkIGluIGxlYXJuaW5nIG1vcmUgYWJvdXQgdGhl
XGxpbmUNCmZpbmVyIGRldGFpbHMgb2YgaXNzdWVzIGxpa2UgdGhpcy4gSG93ZXZlciwgSSdtIG5v
dCBzdXJlIGZyb20geW91clxsaW5lDQpkZXNyaXB0aW9uIHRoYXQgSSB1bmRlcnN0YW5kIGV4YWN0
bHkgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBkby4gV291bGQgaXRcbGluZQ0KYmUgcG9zc2libGUg
Zm9yIHlvdSB0byBzaG93IGNvbXBsZXRlIG1pbmltYWwgZXhhbXBsZXMgb2Y6IFxsaW5lDQpcbGlu
ZQ0KYSkgV2hhdCB5b3Ugd291bGQgbGlrZSB0aGUgY29kZSB0byBsb29rIGxpa2UgXGxpbmUNClxs
aW5lDQpiKSBIb3cgeW91IHRoaW5rIGl0IG5lZWRzIHRvIGJlIHdyaXR0ZW4gdG8gbWFrZSBpdCBh
Y2NlcHRhYmxlIHRvXGxpbmUNCkJsYWNrYm94XGxpbmUNClxsaW5lDQpSZWdhcmRzLFxsaW5lDQpD
aHJpcyBCdXJyb3dzXGxpbmUNCkNGQiBTb2Z0d2FyZVxsaW5lDQp7fQ0Ke1wqXGh0bWx0YWc4NCA8
YSBtb3otZG8tbm90LXNlbmQ9InRydWUiIGNsYXNzPSJtb3otdHh0LWxpbmstZnJlZXRleHQiXHBh
ciAgaHJlZj0iaHR0cDovL3d3dy5jZmJzb2Z0d2FyZS5jb20vZ3BjcCI+fVxodG1scnRmIHtcZmll
bGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHA6Ly93d3cuY2Zic29mdHdhcmUuY29tL2dwY3Ai
fX17XGZsZHJzbHRcY2YxXHVsIFxodG1scnRmMCBodHRwOi8vd3d3LmNmYnNvZnR3YXJlLmNvbS9n
cGNwXGh0bWxydGYgfVxodG1scnRmMCBcaHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc5
MiA8L2E+fVxsaW5lDQpcbGluZQ0KICBcaHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1s
dGFnMTM2IDwvcHJlPn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0K
e1wqXGh0bWx0YWcyNDAgICAgICAgfQ0Ke1wqXGh0bWx0YWc5NiA8YmxvY2txdW90ZSB0eXBlPSJj
aXRlIj59XGh0bWxydGYgXHBhcg0Ke1xodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0NCntc
KlxodG1sdGFnMjQwICAgICAgICAgfQ0Ke1wqXGh0bWx0YWcxMjggPHByZSB3cmFwPSIiPn1caHRt
bHJ0ZiB7XHBhcmRccGxhaW5cZjFcZnMyMCBcaHRtbHJ0ZjAgXGh0bWxydGYge1xodG1scnRmMCBc
bGkxNDQwIC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tXGxpbmUNCkZyb206IHt9DQp7XCpcaHRt
bHRhZzg0IDxhIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSIgY2xhc3M9Im1vei10eHQtbGluay1hYmJy
ZXZpYXRlZCJccGFyICBocmVmPSJtYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoIj59XGh0bWxydGYg
e1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCJ9
fXtcZmxkcnNsdFxjZjFcdWwgXGh0bWxydGYwIGJsYWNrYm94QG9iZXJvbi5jaFxodG1scnRmIH1c
aHRtbHJ0ZjAgXGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnOTIgPC9hPn0gW3t9DQp7
XCpcaHRtbHRhZzg0IDxhXHBhciAgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIiBjbGFzcz0ibW96LXR4
dC1saW5rLWZyZWV0ZXh0IlxwYXIgIGhyZWY9Im1haWx0bzpibGFja2JveEBvYmVyb24uY2giPn1c
aHRtbHJ0ZiB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJtYWlsdG86YmxhY2tib3hAb2Jl
cm9uLmNoIn19e1xmbGRyc2x0XGNmMVx1bCBcaHRtbHJ0ZjAgbWFpbHRvOmJsYWNrYm94QG9iZXJv
bi5jaFxodG1scnRmIH1caHRtbHJ0ZjAgXGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1sdGFn
OTIgPC9hPn1dIE9uIFxsaW5lDQpCZWhhbGYgT2YgRG91Z2xhcyBHLiBEYW5mb3J0aFxsaW5lDQpT
ZW50OiBXZWRuZXNkYXksIDEzIEp1bmUgMjAwNyAxMDoyMiBBTVxsaW5lDQpUbzogQmxhY2tCb3gg
TWFpbGluZyBMaXN0XGxpbmUNClN1YmplY3Q6IFtCbGFja0JveF0gLSBIaWRpbmcgYWJzdHJhY3Qg
bWV0aG9kc1xsaW5lDQpcbGluZQ0KXGxpbmUNCkZvbGtzLFxsaW5lDQpcbGluZQ0KSSBoYXZlIGEg
Y29uY2VwdHVhbCBwcm9ibGVtIG9uIHdoaWNoIEkgd291bGQgbGlrZSB5b3VyIGFkdmljZS5cbGlu
ZQ0KXGxpbmUNCkkgaGF2ZSBhbiBBQlNUUkFDVCB0eXBlIEEgYW5kIHR3byBjb25jcmV0ZSB0eXBl
cyBDMSBhbmRcbGluZQ0KQzIgd2hpY2ggYXJlIGV4dGVuc2lvbnMgb2YgQS5cbGluZQ0KXGxpbmUN
CiAgICBUWVBFXGxpbmUNCiAgICAgICBBKiA9IFBPSU5URVIgVE8gQUJTVFJBQ1QgUkVDT1JEIEVO
RDtcbGluZQ0KICAgICAgIEMxKiA9IFBPSU5URVIgVE8gUkVDT1JEKEEpIEVORDtcbGluZQ0KICAg
ICAgIEMyKiA9IFBPSU5URVIgVE8gUkVDT1JEKEEpIEVORDtcbGluZQ0KXGxpbmUNCkkgd291bGQg
bGlrZSB0byBleHBvcnQgQSAoYXMgc2hvd24gd2l0aCB0aGUgJyonJykgYnV0IHdpdGhpbiB0aGVc
bGluZQ0KbW9kdWxlIE0gd2hlcmUgQSBpcyBkZWZpbmVkIEkgKmRvIG5vdCB3YW50KiB0byBleHBv
cnQgaXRzXGxpbmUNCm1ldGhvZHMuICBJIHdhbnQgdGhlbSB0byBiZSBjb21wbGV0ZWx5IGhpZGRl
biBzbyB0aGF0IHRoZSB1c2VyXGxpbmUNCm9mIE0gb25seSBuZWVkcyB0byBjcmVhdGUgdGhlIGlu
c3RhbmNlIENpIChhbmQgZmlsbCBpdHMgXGxpbmUNCmZpZWxkcyAobm90IHNob3duKSlcbGluZQ0K
YW5kIHBhc3MgQ2kgdG8gdGhlIG1vZHVsZSBNIGluIHdoaWNoIHRoZSBzcGVjaWZpYyBtZXRob2Rz
IFxsaW5lDQphcHByb3ByaWF0ZSB0byBDaVxsaW5lDQphcmUgc3BlY2lmaWVkIChidXQgYWxzbyBu
b3QgZXhwb3J0ZWQpLiAgV2l0aGluIE0sIHByb2NlZHVyZXMgdGFrZSAnYSdcbGluZQ0KKGFuIGlu
c3RhbmNlIG9mIEEgd2hpY2ggaXMgZWl0aGVyIEMxIG9yIEMyKSBhbmQgb3BlcmF0ZXMgb24gaXQg
d2l0aG91dFxsaW5lDQprbm93bGVkZ2Ugb2YgaXRzIGNvbmNyZXRlIGZvcm0uICBUaGUgbWV0aG9k
cyBvZiBBIGFyZSBzaW1wbHkgY2FsbGVkXGxpbmUNCmFuZCB0aGUgY29uY3JldGUgZm9ybXMgb2Yg
dGhvc2UgbWV0aG9kcyBhcyBDMSBvciBDMiBhcmUgYWN0dWFsbHlcbGluZQ0KcnVuLlxsaW5lDQpc
bGluZQ0KVW5mb3J0dW5hdGVseSwgaXQgc2VlbXMgdGhhdCB0aGlzIHNjaGVtZSBvZiB0aGluZ3Mg
aXMgbm90IHBvc3NpYmxlIGluIFxsaW5lDQpCbGFja0JveC5cbGluZQ0KSSBhbSBmb3JjZWQgdG8g
ZXhwb3J0IHRoZSBtZXRob2RzIG9mIEEgYW5kIGFsc28gdGhlIG1ldGhvZHMgb2YgQzEgYW5kXGxp
bmUNCnRoZSBtZXRob2RzIG9mIEMyLCBncmVhdGx5IGNsdXR0ZXJpbmcgdGhlIGludGVyZmFjZSB0
byBNIHdoZW4gXGxpbmUNCm5vbmUgb2YgdGhhdFxsaW5lDQppbmZvcm1hdGlvbiB3aWxsIGJlIHVz
ZWQgYnkgdGhlIHBlcnNvbiBvcGVyYXRpbmcgd2l0aCBNLiAgXGxpbmUNCk9ubHkgdGhlIGV4aXN0
ZW5jZVxsaW5lDQpvZiBBIGFuZCB0aGUgZXh0ZW5zaW9ucyBDMSBhbmQgQzIgYXJlIG5lZWRlZC5c
bGluZQ0KXGxpbmUNCklzIHRoZXJlIGEgY2xlYW4gd2F5IHRvIGhpZGUgYWxsIG9mIHRoZXNlIG1l
dGhvZHM/XGxpbmUNClxsaW5lDQotRG91ZyBEYW5mb3J0aFxsaW5lDQpcbGluZQ0KLS0tIEJsYWNr
Qm94XGxpbmUNCi0tLSBzZW5kIHN1YmplY3QgSEVMUCBvciBVTlNVQlNDUklCRSB0byB7fQ0Ke1wq
XGh0bWx0YWc4NCA8YSBtb3otZG8tbm90LXNlbmQ9InRydWUiXHBhciAgY2xhc3M9Im1vei10eHQt
bGluay1hYmJyZXZpYXRlZCIgaHJlZj0ibWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCI+fVxodG1s
cnRmIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgIm1haWx0bzpibGFja2JveEBvYmVyb24u
Y2gifX17XGZsZHJzbHRcY2YxXHVsIFxodG1scnRmMCBibGFja2JveEBvYmVyb24uY2hcaHRtbHJ0
ZiB9XGh0bWxydGYwIFxodG1scnRmIH1caHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzkyIDwvYT59XGxp
bmUNCiAgICBcaHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFnMTM2IDwvcHJlPn1c
aHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAg
ICAgICAgfQ0Ke1wqXGh0bWx0YWcxMDQgPC9ibG9ja3F1b3RlPn1caHRtbHJ0ZiB9XHBhcg0KXGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICAgICAgfQ0Ke1wq
XGh0bWx0YWcxMjggPHByZSB3cmFwPSIiPn1caHRtbHJ0ZiB7XHBhcmRccGxhaW5cZjFcZnMyMCBc
aHRtbHJ0ZjAgXGh0bWxydGYge1xodG1scnRmMCBcbGkxMDgwIA0Ke1wqXGh0bWx0YWcyNDQgPCEt
LS0tPn1cbGluZQ0KLS0tIEJsYWNrQm94XGxpbmUNCi0tLSBzZW5kIHN1YmplY3QgSEVMUCBvciBV
TlNVQlNDUklCRSB0byB7fQ0Ke1wqXGh0bWx0YWc4NCA8YSBtb3otZG8tbm90LXNlbmQ9InRydWUi
XHBhciAgY2xhc3M9Im1vei10eHQtbGluay1hYmJyZXZpYXRlZCIgaHJlZj0ibWFpbHRvOmJsYWNr
Ym94QG9iZXJvbi5jaCI+fVxodG1scnRmIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgIm1h
aWx0bzpibGFja2JveEBvYmVyb24uY2gifX17XGZsZHJzbHRcY2YxXHVsIFxodG1scnRmMCBibGFj
a2JveEBvYmVyb24uY2hcaHRtbHJ0ZiB9XGh0bWxydGYwIFxodG1scnRmIH1caHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzkyIDwvYT59XGxpbmUNClxsaW5lDQpcbGluZQ0KICBcaHRtbHJ0ZlxwYXJ9XGh0
bWxydGYwDQoNCntcKlxodG1sdGFnMTM2IDwvcHJlPn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICAgIH0NCntcKlxodG1sdGFnMTA0IDwv
YmxvY2txdW90ZT59XGh0bWxydGYgfVxwYXINClxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFy
IH0NCntcKlxodG1sdGFnMjQwICAgfQ0Ke1wqXGh0bWx0YWcxMDQgPC9ibG9ja3F1b3RlPn1caHRt
bHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcxMDQgPC9i
bG9ja3F1b3RlPn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wq
XGh0bWx0YWc1OCA8L2JvZHk+fQ0Ke1wqXGh0bWx0YWcyIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNyA8
L2h0bWw+fQ0Ke1wqXGh0bWx0YWczIH19AGFyDQo=
----boundary-LibPST-iamunique-1593464420_-_---
Received on Fri Jun 15 2007 - 04:35:19 UTC
This archive was generated by hypermail 2.3.0
: Thu Sep 26 2013 - 06:31:32 UTC