Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » GEF » draw2d interaction sequence
draw2d interaction sequence [message #643362] Mon, 06 December 2010 16:20 Go to next message
Carlo Salinari is currently offline Carlo SalinariFriend
Messages: 66
Registered: October 2010
Member
This is a multi-part message in MIME format.
--------------070709050504070903060409
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi,

I'm reading Gronback's "Eclipse Modeling Project ...".

In chapter 9, page 320, there's a diagram explaining Draw2D's
interaction sequence (see attachment).

I'm not sure I understand what happens after step 4.

My understanding up to step 4 is:

1. User Interaction ---[generates event in]---> FigureCanvas
2. FigureCanvas ---[notifies]---> LWS
3. LWS ---[delegates to]---> SWTEventDispatcher
4. SWTEventDispatcher ---[notifies hit figure]---> ??

What then? Why the bifurcation?

(tentative interpretation):

[right branch]
5_unlabelled. Figure---[forwards event to (?)]---> ContentRoot
5b. ContentRoot revalidates itself (because some other child-figure
could have been modified by the interaction, I assume)
5b. ContentRoot---[marks as invalid]-->RootFigure (why? what does it mean?)
5_unlabelled. RootFigure---[requests repaint to (?)]---> UpdateManager

[left branch]
5a. Figure---[requests repaint of dirty regions to]---> UpdateManager
(why? Isn't the ContentRoot already going to calculate dirty regions for
all its children in step 5b?)

[branches merge]
6. What does it mean that the UpdateManager "revalidates Invalid
Figures"? Wheren't they already revalidated in step 5b? What's the
meaning of "valid", "invalid" and "revalidate" in this context?

Thanks in advance for your help,
Carlo

--------------070709050504070903060409
Content-Type: image/png;
name="draw2d_interaction_seq.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="draw2d_interaction_seq.png"

iVBORw0KGgoAAAANSUhEUgAAArcAAAIYCAYAAAB318RMAAAAAXNSR0IArs4c 6QAAAARnQU1B
AACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAL01SURBVHhe7f1tcFZV uu8Lrw+ndu0P
59TZVc9zTp0Pz9lYCeREH2xeIkcLgWwtFy8ppTAb0ygl4IqAunlx2YHuY9De QD9bwmoTNx2w
d1h2sDXaBNqAzUsbbGLLrSYsbiTRZGnQIIRONFkESYQggfv/jDHnHHfm/T7v 93nP+Z9VKSWZ
c8wxfuMaY/7nNa9xjb8DDxIgARIgARIgARIgARJwCIG/c0g72AwSIAESIAES IAESIAESAMUt
jYAESIAESIAESIAESMAxBChuHdOVbAgJkAAJkAAJkAAJkADFLW2ABEiABEiA BEiABEjAMQQo
bh3TlWwICZAACZAACZAACZAAxS1tgARIgARIgARIgARIwDEEKG4d05VsCAmQ AAmQAAmQAAmQ
AMUtbYAESIAESIAESIAESMAxBChuHdOVbAgJkAAJkAAJkAAJkADFLW2ABEiA BEiABEiABEjA
MQQobh3TlWwICZAACZAACZAACZAAxS1tgARIgARIgARIgARIwDEEKG4d05Vs CAmQAAmQAAmQ
AAmQAMUtbYAESIAESIAESIAESMAxBChuHdOVbAgJkAAJkAAJkAAJkADFLW2A BEiABEiABEiA
BEjAMQQobh3TlWwICZAACZAACZAACZAAxS1tgARIgARIgARIgARIwDEEKG4d 05VsCAmQAAmQ
AAmQAAmQAMUtbYAESIAESIAESIAESMAxBChuHdOVbAgJkAAJkAAJkAAJkADF LW2ABEiABEiA
BEiABEjAMQQobh3TlWwICZAACZAACZAACZAAxS1tgARIgARIgARIgARIwDEE KG4d05VsCAmQ
AAmQAAmQAAmQAMUtbYAESIAESIAESIAESMAxBChuHdOVbAgJkAAJkAAJkAAJ kADFLW2ABEiA
BEiABEiABEjAMQQobh3TlWwICZAACZAACZAACZAAxS1tgARIgARIgARIgARI wDEEKG4d05Vs
CAmQAAmQAAmQAAmQAMUtbYAESIAESIAESIAESMAxBChuHdOVbAgJkAAJkAAJ kAAJkADFLW2A
BEiABEiABEiABEjAMQQobh3TlWwICZAACZAACZAACZBAGsXtLYy0/x7rS4qQ P+E28XMH7lu1
Cyf6ro9T911B9+EarC6+Qz9n6iJsfOszjPgCO8Y30on9m8pQpJUzA2VVx9E3 FnQS+5IESIAE
SIAESIAESMD1BNIobq/j3FvP4fHK36Ch6Y9o+M2zKMnLx4x1h9CndOn1VlRN fQArN7+Khnd+
j6plM4V4nYstnkvjHXPjLPatnoX8vIew4X+8hYZtKzBDCNynms6D8tb19ksA JEACriJwEyM9
fxXPgX9E2WzDKTKhCKubLuBWTwOWTJiMJQ1fhT4b5LPmJ7fhzsoWXPHzuoG+ pvUoFM+TdYf7
Aij6tLKkM0V3zBQvq8LBL6/AZ5Sj/z70Ryt/zIuaqWH+vrAe3bfEba60YNPt pr/nzcW6uo/R
H8NhE+DkyXsAq2s/zJCT5zoG2t/Frk1PomRqvqnd94tn9VCKrW8QLZVzkF/W gHPpeMBf9WDL
5DuwqP4LyK4IOWL1XfAFQ83YMHEKljd+kyU90osD5dOCbDFK+1LcW5kp7pYY Mi/izglPoKHH
5ByNcfM0itvgOxtGO/EXaB66qf9x9CL+9Zthv1H4ehuxfEI+5tS2Qz9DTT5F WNHQLf4ljuun
UDMzHwVrDmMgM2R5FxIgARIggWwTGOtD687Vwrkhv/ItxLrNO7CnsQkHmo6h Y/AGrrdWYdqE
mdjQ/F1oTfubsDLg2SIfL13YUzZFEwbTtrVi/LHpM8q6Byur/4ADjbuwYf5k FDy0C+2Xvobn
oLyn+KmvRMmESbiv4rdokv9uOoij7QPwafe6AyWVr+nnGT8HPT0YFbfVhbP6 +17UVTyEgglz
8Ozh3sgCabQLDauEk2f6ClS92Wg4eYqxsbkvvaJq7CJaqh7TvpoWzF6Gyup6 7PO36U9ou2hd
bFgyH9832LdsCgormhEqm6+jp6EcBXf9Cp7hsNI05i10jRH6MuO/MEbfBd9A 70td5MuXq0fF
i0qAc05dcOssGn46DXdvPoHhmLWM44Sb7dh5bz7uLK/GO/5+OQRPzw9xFGL3 U4WjtOEJ5N/+
IlquWO/3zIlb37do3iAGp1ncBjG91V2PReY371tfYM9C8XZ+z3a0XVWvccab yr216DA0st27
hvUjARIgARJIgoDvMtp3LhUicCaWVzejZyR48h9Df9NaIVQXYWf71ZAb3Wyv xZwJ07Cyqdf4
mw/XvK/gASF0imdPRv6yRvT6PYXBZSnPURnquq75yx7zVgvRZy5T/5N+rznY 1DIYtsH6dSYR
rnkTb4sg6GQRYxg4XIHCvGWo6xzRy7zxOeoeuiPKNUmwVpeKZ/aJrQ8L5rOw evdJDKQqFHCk
HftqarGv/XJoJQ3PaVG1V7Q6+PBhtOd9vP6HUxhM0Kurs1+AGq/BMegWsfou uEZ6eUuxp1u8
tox+jeY978A7KGv+A855DkG90Mh/9zS/hT94xctPCrrGX4TmOTY7BFNZuF3K GoG3egHy49R8
mRG3Y9+hvfFFPJgn3nK3fIihsL17RTRgkQg/KPe7nvW3onzMqj5leqs2xO3U anhDrd8uvcF6
kAAJkAAJpISADze+3IMl8vnxwl8wEPb5cRUdteL5MWEtDvQHPxiUODWJGuVs WViLA68tRf7k
rfD4HSjBZflw1bMVUyaYxe1NITifE8IvWCjdxFDzL0SoQ3iRLYWqLsJN1xni NvLXyDCf6g0P
Z355E/pTwjhUSOrifwrKdp4OWQeTzC1vdtVhngg/rGodDxDxl6d5TkNfGJK5 3/i1qs/C2Yg8
K1bfhUhbvS/znsORgaCXrZudqPv7SZiy2YPQV63UtEaWojsE08UrdfVMriRD 88Vp62kXt74L
jViRJ+OLIr1xy2b7MHZ+P1aLN5C7Nx03xK+akILegJU3N10xOcn1Aq8mARIg ARJIKYHLaNsm
PDcmx0do8d+huUKs2fhJFdquB6vfG+htXC2eQauxr1cLboP+XJqGFY1f43st ns/wvml/NcrS
HCgyxvd91CwVC6PvfwXea6rsUXTXC1FsKlOvk/p9JAEVKJzHBj/HoW2PanG/ kdeRGA93/zNP
PS+DwykiQb+Gc4deEGtexHN4ejl2nfo3C95DFUZYIYRbdC+SLrDm4Ge/eRmr p+dD87qOfIEj
NevxoClGV/fGque6ijkW63CW7fAvNNc9p8WofPMP2P7IDMFX/H11I3puCO6G oFdx076Rr9Bc
++z4PZTI1Baq7zAtZpdhLLIvr6GrriyCjVjpO2k4kco2bOz2TXj33f8qXoRM MdUy1vobGQ5h
aBkt5noyFm/7HerWzBUvSKKNq95C96i0revoO7FrfJG9KifsF2/10hXmRcHQ SVOeq8EuGc6i
tT9S3dUL1zLU7N2FddoCf+Gtb/gcAz1HUaX1g0gIsO4dvR+kXuv/2Ki7oe1q /oo+sT6qoWzy
eFy77zu0bCoZj4HXwoBEaIbUeDdEiFHdetynaUNR9tq30Gl8jQmxp6rfoEaE Xmj24/senXue
wYy8h7Hl8NmoL11pF7e3eo9jR8UjwnVvMtKQF6AeHFgrgsgnrsW+8zIqSR5G nEXApCN+HfMT
TkpnVRZGAiRAAiSQTQLKoaEWZIWrizonwkIvbfGXP2ZvRHh5S8XzZj0O9N0w vF+mMIFwZU1/
Bq93fm8ShUPwbL4/TByg8fugeox7ZQ3hHPB34fiR4iDiZ38j1nTCA1hX+wc0 vflPhviJEN8Z
zCd4AVs0jupaw/MYGK4RDrwSWFI4y3jgP+APf3oLv35IxCjP34j65k/gba7G YsO76Bv6CNtL
RBjI7c+j+dKP/heHgrI96L5x01g4JOJ7S14UYQt9+K75efHiYXjMtZAF4xO8 OQZ57/to83rh
7egVYmcI3poyFMgF6PV/Fr8/ippScT/N62cI9ojtj9F3suydy1Eky677Ezyn mrFzqVjMpZUd
+Ok8OPxB/7fuzfcvVsxbhBf2foB/adoiPOS68PX1HcKz06fgwc370XrqPexc VoSCnzagJ2yo
qXppMy9eNPgYOklzKm7bg8a3m9D4T5G4qBcuISAf2Yp9J05gX+Vc8TI5BUWz n8LO9z7Gx/Xr
xvvhRjcals/AjPJavNd6Ct6/1GL5RGmLPeLr+0PI1/iqry1qEafwirdsxt2a xhvC1w2rRZiN
3n7vJ29iw1134AHxhf6aGGH6VxKTPb1bh1/cLhftfYG+5s24TwjvpxrP6muw ohxpF7f6va+K
t9wV4g3lIRHrEhxOPYoLTRVikUBwhQ1jCfjM5MOP7TsxN9KK2GxOwLw3CZAA CZBA6gmoFezR
PksaWQwKl27DXtMiLn0x12vYNF94o/6+Dl3y6/HwCWy5S6z6L9mGI6eEKDpe i8dFyMO8uk59
IbPKrKAt0jmIIy2fojc4xleFBagyVavV7+dXYo+/HsZCM3mO7yvNu5Wv/d3I EDS9AgcuKKdO
eHwyU8K+DXLh2biQ0QWhhQjOqyJTxD3jWQ4KljfiQqzLwjJXDie9DvoiPCWw FmJ76yUpTYR3
9FHk3/U8jhhpP8fDEHrQtvslVP7DPeN94RczUsBe1hcO5a3Ani/lx3y1sM8Q t/6Qha/1LBd5
S7FLxO2ON0UIqq7dWCgWeG08fF6P2TVEulbXqIvV5O30xWx636iFgKrvVIz2 /fi5WsRn9KXO
wfzp3PCE+sMVlGdU9+brCx/Hyxlf5HbBCHVRXxgCrwu1DEMj3f4kav6o6qsv JtPLnIQHqj7B
sC8GF/WlomQHvJqdG/08sRy7P9df6MbF+Qiutm7HzDAvkUXVIi5bhuRIL/Ol PuG1fUDP4iDH
iHgZ2VNWpAtYbfwpMStbdUV8mRFiWoupDbYntQBzCkqfWSVCW4VHeU+HpTCZ DIlbBSc4NkRA
72nEU9MnYcbaJlwIeHMNJ26NuNxgb27qp1OWSAIkQAIkYAcCypMaLCTNdQuX DUH93VhRrntP
VQae0FRdfu+qVpZJ7IZjYIi/kDhZ4/eBKcdMBSgRbmQD8A28h5/fNckUjhcL +Ai+rH9SCLsy
vHJqyEJ4gSxvDIOn6rGhZKZIabYdRyytpO/DkTXic3RALLII0ejtNDyxKuVa 0GIfo6/G26/i
WFUaJ10EjmdDUJ466dX8Tl845F9PEygS9ZAFGav8pV63kNBEIyTEvKpeW3Bl 1NXs+Y3Sp+H7
zghpMPPQvKNG2YaN6aEXZrEmb2R4RrV2hQrWcS/vsCEcywQL4QTUPusLgRjR 7g1BHebvZk+x
P1QmEhcVwuCPDw6uvzlWedSIGQ8fdqOHFCzEy2/uwJKJK7D7zV9hTt5a/O7N SuG11b+U6P1o
TiNneMw1cRu6eExvy2QUTZ0kQoN+jbZha5kEMiRulee2VHTa+CpF38hp7HpE vCkVb0VLSFyP
AqogjMcZFa5uGs+VG2su4N9JgARIgARymIARRjChBFs9gavNfSK2809HOnEl QuYCrdGawLlN
j9kz0n8Fej2Nh6shqiJlQQgAOHAY60S8YMiqfu33UYRxiAg3no1+b2W0bhLi sv23KMsrwvL6
Ti2tWPoOI0ODyCHsT8Np3Cww20PQYh9D3I+nVgsSnMECUwk4LSPSeT1nq99D bwgdI/ZZX6gn
vZq9enx1SHiBcb4p7lrFb2qZK2ItVovad4a4NQlE3TtqxNGa890aHuCQUBQt I4e5TfqLh77A
0BCLY9/g0IZ5IqxiFkrmiThvEVv6qxPfhn+JCXhpM1tCsICOwSUk92/wAi6j 7Vo/qJeRQC2H
sWF8/4MQnVpZk4QQnaK/sBnxxUVTJxthByqbiClO+JpI73r/JCNWN/jeqi3P oPHUUWwtmWKK
T45u/WkRt76et7CitAI19XvFJ6G9qH9plQgcFjG3Zu+sbxCtVaXiM8tkPFj5 z0aeQOlaH8/R
5utrwlNiUip8ZAveFIHOMtdg/vS1aPgyfBqP9A10lkwCJEACJJAtAv5YzbwS rP/Nm+J5IZ4r
29Zqi4mKqtvQFzZzgV5bXeDImL0eXDXSfwUu3lKOFCmcRiNkQQhsuf6pPTR5 v/770By3WnjE
0Xb0nwpNH+a71IyNt+djpvi8HW1lvW/4JF55SDzc1QKrdHeG2kBJLHZbXPlb Lb9tU8MObCyV
C4yMbBDGZ/9xkX9JxCKLT8x3PYs9H55E66FqLBeLzPzeR8OTurj6KLyt76NR 25RpDtY39WDM
EGvjwtjwHmti15zrVCy6OrxRXCdikOuOirjaU2g7vhf/40g3Lnt+hbvFgrT1 9cdF+e+iRtsY
Sg9r0D2GEbI0CJax+q7vC5mxQ+qVN9AiYk1PNlSI2FBzHK0hdJX3fk09Pj71 If7cehy/9y+0
MmKu/annzF5d4awd+FAspJuLxRVVqHtLxAxfGInsnTe/tAXYglmMaiMAw1G4 6CLdFHMeko7N
iFVWdR75BFVi0Zk/5vbEH1Gz6nnsl4s1fRdwYJUQ5RNXo+FrkTZPheEYXlut mlpYgvhaUfEm
Pjn1ARo3LRJi3khzF2JPZj7qS7+ISd7yfswNTNIibm/1vo9/WrPQ2C5XfP6R u6lUH0G3P25J
GufzwgjD7fJidleL81p+jTJtxaWYxEp/if1d5qD+dI9ulk8CJEACJJB9AnKF diter1TbsOsb
OayvOYj2AbEKPGzmAllr5WkSz5UTnXqu9YCsB3rLdGEjnz19UcpSFExlBuzQ FZwJIOj5tuwt
nHlPeh+D04cZ4XYBC6qDiI8Jb+Um8cneFMuaiT4JyUigPYc3YtfBM3reW80z Zxb5op/6jhuZ
DsQq+DWV+JmId1ZeTP1FYzxTQlHJs9jZ/JUeQ2l4+fw7zJnjZdWnfvUJXm7o 4V9tL21hGXZ6
xbYP5k0nip/G5ufEAict9vVGjF2uYvWd9LpeR3/r70R4hxBvqg1a2SqOVqWK G0F3w1p9sxHh
vHt456v41U8Mb74RAjAu4M1iV4VwCNG+81189OVgmFy/470eOQ1YkBiVl0Tk oupusknNg23q
05CwBfEFoasRG6WzUbYxYLc8Kawf9Xtp9XjahVhS32VaACa+CrSKRWjypUdu DiL6aeeJi3pb
Q+wpuC3i3p1viKwcsQVuWsRtJgYd70ECJEACJEACJJArBNRLwXhKtlypecbq ee0M6sqkZ1x/
ASiY/zz20aGXEH6K24Sw8SISIAESIAESIAHrBIz4yTi3UbVefm6fqYfezEBJ xWto9nais/UP
eEGmTbOSui23m56W2lPcpgUrCyUBEiABEiABEhgnELyYimzMBG6JHVkfzbsH q+s8uCBCOMcG
P8Xra2bCUuo2ogwhQHFLoyABEiABEiABEkgzAfMCsTTfKheL13Y/qzHtTiZi llft8u/elotN
ymadKW6zSZ/3JgESIAESIAESIAESSCkBituU4mRhJEACJEACJEACJEAC2SRA cZtN+rw3CZAA
CZAACZAACZBASgmkVNz6c7+FzV8bLqctf0dmtAHaAG2ANkAboA3QBmgDidlA OFWcUnGbUtnN
wkiABEiABEiABEiABEggTgIUt3EC4+kkQAIkQAIkQAIkQAL2JUBxa9++Yc1I gARIgARIgARI
gATiJEBxGycwnk4CJEACJEACJEACJGBfAhS39u0b1owESIAESIAESIAESCBO AhS3cQLj6SRA
AiRAAiRAAiRAAvYlQHFr375hzUiABEiABEiABEiABOIkQHEbJzCeTgIkQAIk QAIkQAIkYF8C
FLf27RvWjARIgARIgARIgARIIE4CFLdxAuPpJEACJEACJEACJEAC9iVAcWvf vmHNSIAESIAE
SIAESIAE4iRAcRsnMJ5OAiRAAiRAAiRAAiRgXwIUt/btG9aMBEiABEiABEiA BEggTgIUt3EC
4+kkQAIkQAIkQAIkQAL2JUBxa9++Yc1IgARIgARIgARIgATiJEBxGycwnk4C JEACJEACJEAC
JGBfAhS39u0b1owESIAESIAESIAESCBOAhS3cQLj6SRAAiRAAiRAAiRAAvYl QHFr375hzUiA
BEiABEiABEiABOIkQHEbJzCeTgIkQAIkQAIkQAIkYF8CFLf27RvWjARIgARI gARIgARIIE4C
FLdxAuPpJEACJEACJEACJEAC9iVAcWvfvmHNSIAESIAESIAESIAE4iRAcRsn MJ5OAiRAAiRA
AiRAAiRgXwIUt/btG9aMBEiABEiABEiABEggTgIUt3EC4+kkQAIkQAIkQAIk QAL2JUBxa9++
Yc1IgARIgARIgARIgATiJEBxGycwnk4CJEACJEACJEACJGBfAhS39u0b1owE SIAESIAESIAE
SCBOAhS3cQLj6SRAAiRAAiRAAiRAAvYlQHFr375hzUiABEiABEiABEiABOIk QHEbJzCeTgIk
QAIkQAIkQAIkYF8CFLf27RvWjARIgARIgARIgARIIE4CFLdxAuPpJEACJEAC JEACJEAC9iVA
cWvfvmHNSIAESIAESIAESIAE4iRAcRsnMJ5OAiRAAiRAAiRAAiRgXwIUt/bt G9aMBEiABEiA
BEiABEggTgIUt3EC4+kkQAIkQAIkQAIkQAL2JUBxa9++Yc1IgARIgARIgARI gATiJEBxGycw
nk4CJEACJEACJEACJGBfAhS39u0b1owESIAESIAESIAESCBOAhS3cQLj6SRA AiRAAiRAAiRA
AvYlQHFr375hzUiABEiABEiABEiABOIkQHEbJ7Csnz42iG7vGXQPXo9ZFd9g O442NeGgpwej
xtn67w7iaPsAfDFLiPcEH0Z7PsLBtJUfb33Cn68zOARPzw+pKdDVpVzHYPcZ eDt6MWLBoMLZ
pMKXC/3ir/8H3ePtHe2B52D8Yyq0vT6MDXTg2MEmHNjXiP200QRGlnV7VH15 QMyR2s/hFrTF
ZcecQxLoIF5CAhkhQHGbEcypuslNDLf+Gg9MmIaVTb0xCx3zVqNowm3IL29C v3G2+l1RtRdj
MUuI94Qx9DetRb64Z8zyBw5jXV4+5tS242a8t4n3/KB76QysMYz3Vq46f7QL Datmaf2t/Ux/
Bq93fh/1pSmcTSpmlvslk7YT1KH++uetwJ4vr+p/7W/CygRsPqS9105j50OT x3nSRuMaTr6R
DrxusseC4go0fjkSsQx/Xyr71f57B+5b+xY6R6LPSpZtNa4WGCen2r5TXV4i beI1JJBhAhS3
GQae6O1udu/FM/OLjAefNWFmRdz6Ri7gdMsRHGz+JNQb7BtBr/cDHGn2oKN3 RIgW4VkaPIvT
3k70jnyP3vZWeL8xez+DxO1ILzo0L/MwBr9sg8fTIa4zHhrhBEEc9/PJsk95 0PLBycB6yzI6
5L3ajDqHig9fvwevVe/Cga5hvTvUfZuOoMV7IcADqd0nUhsS7UxHXPcjLjQ+ hYIJRVhe+2e0
/rkGj0+8DQU/bUDPrcgNjCZug/slom1ash3ZrTH6Lg57CxTgupgvXN2EPumt Dq5PJHsKOi/E
Do2/y5fRvmAbNdupfzwq840yhh1ha1YacR09DeXCHhdgU+MJtDZuwn2ij+6s bMGVCJcrW5xS
0YCTXi+8re+joXKRKGMKltR34Ya6LsROgBBxG+Yc/23l17Y2Dzze8xgakPPn +Je3sPOYRfvW
TcJC30crL8ycZ4U2zyEBuxOguLV7Dxn10z+h/RF7KheKB2sqxO0pjPa9j60l Jk9R3jz8/L2L
muct2AuSP2EWVu85jW7NMzsDS8sfxYyQegSK21HNQ5qPaVOniAeGLggKSl5G 60AbaqYa3j7l
8QryukS7n2/gA/zKXG9Rt6caz+JGsCdR1rl+NzYH3Uuvl8Ew5Jp8zFjdiJ4b +jd2/SEWpg1D
afc329wyR9EtBMTKVTvgkSxufYE9C+9A/k+q0HY9cnyCNc/tBYxFss0xr0Xb 6cDlU5H7LjH7
VvYg7HjqNEyb8ABeaPkOPrN4iGRP106F1DvADoPapXvDx8d5+Pq2YyjKGLa5 AaW4etfR2/I7
1NT8ER0jt+DrbcRy+QJS0YyhGOLW/JXJ19OAJZL9wnp0i5e08NyVben9E+kc GaYT+LdJKJoq
51vjunDzWMMevGRpbrTY9+HGS4w5L8Udw+JIICsEKG6zgj3RmyrxmApx+yE6 6srERDsLG5u/
hW/4FHavW4WVW5rRL7wQHbWl4m/CC7L/U5z7+gPsXCa8xnmPYfMvl+kidf6z qG14NyhuNZy4
FQ+YZTvxYedpHKicK66diQ3N3wV5u+K53yWca3hClDMXLzRfxLW/HcT622Xo xV78S9N6FAqv
S1n1EeGF2YtNxZOQf/uLaPlif8Bn43Gvy9fo819zHBf6u9G8bYkQ4jPwVNN5 TeQrMRa2DYl2
o+Ouu46+4y/hwTyTNzOGoDCHyqhTx/vlC3RFtE1xdoAnKpLtlGPPm1u1sJzQ vvsqQfset4ei
/7YbdWVTkH//K/B+/Y5hX5/gQjR7CvKghXj/TJ7b3oDQmUhtfAgr/+GBCGPY cUZmsUHipWvv
OhQLW8zPW4Kd7ZH8tqa+NIdoKTE4tRresVi2Jefhrgi2VI6GnmHj68YULN52 EG2th1CzVH59
k9edjTCPiRAyS/YdR98HlHcj5pxnETRPIwFbE6C4tXX3BFculeK2FX3NlcL7 anhUZy/Bz7a9
jbZ+uVCtFwfKp4lJuAglS8uxsrwcj2shEcrzMAXLG78JE1sZTtyqc4PqHjDh xnm/sT60vVWD
TWuewOLZwluoxRXvxr5tUjwvQI03KM4uoqg4ieaKmeKaJ8SDSF+gd6u7HotM nzN1ARKhDTll
O2mq7Nh38Nb/I+4TYqKg5CW09EVf6GjNc9uDgYi2GSxuI9nODKwS9hG+704k aN9mQXQKw95X
RPy7+IRduQGPaV8g3sWRaPaUsLiNPD7mlMyNMIbT1N+2L1b34FZXLhVcxFeY dYf00JEwR9j1
B0PN2CDCa/I1cRvLtqRIjWRLM7DusDdofrmB3sbV4x75sPNYsLhNQd8H2N13 Mec823cxK0gC
FghQ3FqAZJ9T4hO3SqjlL2tErzbB38RQ8y+Ed1Mt+LqOgfY/oW7LsygzRGLB wt3o/PGC/vCf
uAxVe42VxMaK4ob/+kiUsIhw4lZ5mS2IW0v3+wGddY8J7+pMPL75NRw4Vo8N k6W4fRUNm+83
iVtj1bT3LAYvBC74GfeYKXG7FHu69XwSN7vqMC9E3EZog30MIzs1GbuIli0P i76YjAc3NaE7
xiIcWUlr4lYuloxkm8KQw70YhdjOIbQ0bDItHDTbnyFILNlbINoAQeT7Di2b pOdUf0EcF7cR
7ClZcRumjZ6eSxHGsIXUFdmxmjTd9TI6GmtR82oLemXMt/LARgmTCRW3Yn5s 2Yy7/eEMhrCM
aluRbElmUvjaEJLKHq4b3lrd4xt+HosgbpPp+7DiNvKcl6YOYrEkkFECFLcZ xZ3szcKJWzEh
e3ZgdfkqPNfYHZh54Gorqu7JF5/nFmFT/X6R7qYeWx6RHtm52OL5Ai2Vc8T/ l2K7px83Rk7i
lRLhBZWf8a9cMT61FWN9/XF4Tx3HnrXF2rmVzz+eUnE7peItnOntR7sWBmHl fsqTsVwI0ssY
aN2BMvkJsvxtfKItcFKfAI2wBNNnY/1eI6bFICosQYizzfvR6vVgX+UCrR4b m/tMYQkUt6GW
O4aBwxXai1JBSSXqVTqlgx/h3OhYRJv0i9vZT2JLdTVqjJ9XGttx2f8p3hvF NoVyMR7W0W1n
Kerqt0QQt+pTshV7iyJu5QLL8/uxWnr6NHGrwhIi2FNAvc12aGQ+iRmWEFxf FbcebgxHWdWX
7DRky+svo22bHLtyQZkH3r/UYrm2wPF1/Mtfw8+P/pCj0gq8LO1w23NYPFXO lyqcQYUlBHM3
21YkW5LicdgIAZiE4jU7sK9xFzbMVzG3yuMbPI+Ni9vo9h1H3wfY3RD+poXO RJ7zbNm9rBQJ
xEmA4jZOYNk9PZy4jZZ+SwjfU7/F8uliwvanu5mBsqrj6Bu7hdEv92J9sfFZ X/u7WIDV0KXl
xPWNfIaGtXP9C8ECF3hFivmNw3MrxHSNsShMW9Bh+X4iZuzwxvFPsfMfxdLZ Irb2nu1ou9QZ
mJpq6lK80joo2hJ4r8CFPMr7qB4WYtLf8r7gY15QRnEbaveDhgAdXxio29ha HOgfjZgSLnz6
JT1d3Xic6fmotglLthO46Ee48ow6qUVAidh3uDjNq+iuX6GNE82O/d7sMPYU zQ4l4IjiNtJ4
bMdAlDGc3bkq03cXLxrBi+u01HT/JgRm+PSE4WyxYHY5alou+tMkhp8HgxeU hbOlDj3rirSH
qsf0lIx5xVj8sEydJ21QvFhHmse+bbUwN8bR98HjJZqNZrrbeD8SSBMBits0 gbVVsVp6rNPw
htv8QdsUQqTBCbsxxE2M9HZG+FsqWngTP1weNuXbtXo/dZ4IOTBE6HhtVDiC TFdmzmgQfC9z
/VV5p8fTh6WieSwjOQIxbDMx2wnX79Y2RbHemGj2FM0OY90hwviIyilWmQ77 u3+uCzc3JNpW
K/NSuHPGMNh+THwxU5s9XBULJR/VvpxVtcqFbtHmMYtzo+W+j1Qe57xErYLX 2ZsAxa29+4e1
IwESIAESyEkCtzByaoeWRSQ/bw5KH56jefgLHtqF9mtui4nOyQ5kpXOYAMVt Dnceq04CJEAC
JGBnAsI72yNi+et2iPjyndjT9DHOWVh4aecWsW4kkAsEKG5zoZdYRxIgARIg ARIgARIgAUsE
KG4tYeJJJEACJEACJEACJEACuUCA4jYXeol1JAESIAESIAESIAESsESA4tYS Jp5EAiRAAiRA
AiRAAiSQCwQobnOhl1jHrBL4+OOPsb2qypQrODi3K/89nkc5MRZLysrw6q5X cfHixaz2tV1v
3t3drfG5r1huppIYY14XnZtkKxlL1m49rl27hmPHjonNep6nnaVxnD3z9NN4 8403cOnSJbea
WtrbTXGbdsS8Qa4SkEJLTkJKFEgBJid9/qSegVl4yUlfPmR5QONgFhpSgNH+ Um9/kqn5xUH+
223C48yZMwEM5NxHW0uPrZnnuwNid0ceqSdAcZt6pizRAQSksFUPOznBu9mb k6nulB5y+QIh
J375YHW7wDXboOQhxQeP9BKQjNULrRz/bvmSIMeeElzSe+02YZ9eqwotXc5t UtSqZ4xkziO1
BChuU8uTpTmAgFlUyE90PDJHQE76KgREigy3HpKDEvp88GXeCiRzKfZkHzj9 JUsKetlWKbT4
ApVZW5MvEeplSn6x4pE6AhS3qWPJkhxCQH0GprDNXoeqCd+tfaDEFYVt9mzQ DX0ghbvyHvLr
VHZszfwiyz5IXR9Q3KaOJUtyAAE5uUgvhhS4PLJHQHo0lOcse7XIzp1V26Xo cLrXMDuErd3V
LDqc+plevjzKccaXKGs2ka6z+NxJPVmK29QzZYk5TEB5a/h5LvudqPrCbd4M JTi40CT7Nij7
QIo/p35BUF9InCres29B1mugwpD4QmudWbQzKW5Tw5GlOISACklwSHNyuhlq kYvbRJ4S9W5Z
zGRnI5V9IMWtjAN34qEWbzqxbbnWJvUi5baX+XT1E8Vtusiy3JwkYKvJfrQH noNN2qpa889B
Tw+GB8/idEcvRnw5idlSpdWnOreJW75gWTKPjJ3k5DCljLRtbABdHzRhT+0u 7Nn/PjoGrgO+
IXQdexdH2wegpjDfYDuOHvwQ3SM3jb4dw2D7MRz88BO0Hj0YMg9qc+LRdgya 58AIc+aBgx/h
3Ki9J0u3vsynayBT3KaLLMvNSQIZmeytkulvwsowicQL1hzE54efQ8G9tehQ zwGrZebQeRS3
OdRZDq6qreaEFHNOe9t83+LE1lLMKHkGW17+J2xZsxBFU5fildYutFTOwZ2V Lbiitek6zjU8
Ibzkc7CpZVBvpe8b7Fs2DbO2/w6//8dVWFn+JFYuXYCiCUUoWVqu//sfG9Ft ngMjzJn5ec/h
yEAKJ8shD2pW74BnKHVlunW+S7FJ+4ujuE0XWZabkwTSPtnHQ0WbqBegxjsS 46qbGOn9Cr1+
j4fFm4wN4uzZQYzpTxKM2cwb7NbJnp5bi/abodNsNSekuM3pbtvNrjrMm1gh hKU+y0BIWW/1
IhRWHMJnTetQMLMG3uvCo+r7G46snSWE72RM2ezBVe3UFmy63SR25e+0OXEt DvSr8oKAxPp7
RH4x5j8xV3Z7z6B7UHidrdQjgX5y63yXACpLl1DcWsLEk9xCIN2TfVwcI4rb MTHHr0X+1Gp4
R75A49q5KNA8vDNQMn8m8sub0C8kq/8c7TkwIh4qwutR7cWotxpF85ZjZclk /dyxi2ipekw8
WOZh8fwiFJS8hJY+YxKPq8KpPdmtkz3FbWrtKNnSbDUnJNuYoOvT3TZN3OY9 Jjy13wa+RHcP
4np3PRZNWIo93aOGkH0Mu+q3YtYDO9Hxow/XvTWYlbcOB/pMQjaWeI329xuf o+6haVhU/wVu
SQ6aoJ6Dhb85hPfCzn/GHKrmSjnH5pViu+c91N6br296kUKPsFvnuxSbtL84 itt0kWW5OUkg
3ZN9XFC0ifoOFJeu0D/BaT+bsK97xBCuW9FQX47Csj3oviG8H2NfY9+qGdbE rf+BcxNDLZtx
9/2/Rtuw+MQmYuG8NY+gcO1hDGQ5RM2tkz3FbVyjJO0n22pOSHFr09429eKs CcE5KHuuCnuO
tGNgTEwuNztR9/dzsKG5H1c9WzFFitqhE9gyWQreK3qYQlkDzpnnIUvi1hS2 YMybq6s9GMKP
uND4FAoW1qNbqFvfwGGsv30pfv2bigjznyFuJ5Zj9+ffi29bl9G2bYEeShGr Hgn0k1vnuwRQ
WbqE4tYSpsycxHQsmeEc7S5pn+zjaaI2gYrJv8EDr9dr/HSK8IPrhrh9AutW zhr3ROAGehtX
WxO30uurOUSuiAl7LgpLK/BydTVqxM/LFaUo9P89ngqn9ly3TvYUt6m1o2RL s9WckGxjMuy5
1W8nP/l3o62lCfXb1uLBqZMwY90h9IkXac/m+0UYwmF8VPsIZm5rFeEIgyIW dy6WNHyIP1fM
wby6TgREtcYSldrfH0VN80nTnOnFaeEpltOdr68JT03UxbMUuoXLd6Hhv0Wa /wxx61/bYPxb
fu2KVY8E+smt810CqCxdQnFrCVNmTlIPNTWZyn/LtEByVajMsyiNX/4wD176 +sNWD7KYYQlL
xQKLWVje+I2x4thYlBE2LEF/kPjDEvziVf/9neXVeMeclSF4FXL6kEcs2a2T PcVtFowtyi1t
NSekGE162ybmo6bN0L2m6vDpXlrtc/6PGGr+BQrniy9T8x8wFpKNoU/E4t65 ai2e+cn92OIZ
v1IrIZaojPV3IxRh0e/exR+WP4D1hztwIuL8ZxKz2s0pblNsfmktjuI2rXjj K1wJWSlelZCV
olaKW/k3+dAzC2CZ9Fn9TqWK4uYD8TEPPju9k32cdYspbn+JutoyFK7ajwvi M59vpB27lxUZ
nlvjIfKTKrSJBRu+4U+w/f5JYcTtDfEwWY/Ch3ajS4Y2CN9Jd/0K3MmwhDg7 K3Wn54K41dM2
mdIrxZPaSaSyE1GWQiuESRGVOowpK8lWc0LKWqUXlN623cKw51e4+67nccQf wz8qPKZrUWgs
JPNdaMSKPBGyMPEXaDYyD/h6GrBEhjHc/iJarmjRseNHLPEa6+/CD3yp+Xnc +ZNpKJosy78e
Zf6juE2xuWW0OIrbjOKOfjMpZOPZBlEmGJciWApamWRcTlQyVx6PxAmkd7KP s14xxa0ILbjc
gddXzTIWN5Rg5T/MEyuRmzVPiW/oI2wXi8YK7p2DOROLUTJvShhxK04c1Rel Fc4uRXnpHBQW
V6Dxy1gZGuJsSwKn03ObALQMXTImFyUGrFqXn5MtpnaqPoXrEVNEDfrznmao KTFvY6s5IWZt
4zsh7W3zx9zKONjlWDz7DuRPf0IsMPtO7+dbX2DPwjtQsLwRF1RsrfrdqiYR uhDUnljiNVIq
MLOtDou43rsmGWEQ0ea/KOJWK0MsKuOCsvgMLoNnU9xmEHasW8mHufTaxHtI kSv3oaewDSUn
XxbkS4PVUI60T/bxdm7U82WS8/dxxNtnrEQeFhkRFmJObft4nFpwCpuI5V3H YPcZEad2FoNy
sYcNDqeIW9kOaYdWdx7KBc9tqLjVPydbTe0UOUWU/mJmp8Puc4Kc26RzI5H5 PzNtk6kKO40Y
WPvML4E2lsD8NzaE/n9LXVYZp8x3dhm7FLd26QlRDzlJyckmnkNeI8MT3nzj jXguc8W5coGe
lq7F+JECI9aWppmZ7FOF38h0MH0VavY2oenNl7D8ruWo68y+1zUVLXTKZC/H prJBOVZjvWzl
prgVTrg4UjtFSxEVIYNpKkwqoTLsPieona1kPaWTQ4aoWV2cbPe2JdRhOXqR U+Y7u+CnuLVL
Txj1kJNTLAFmrvIzTz/t2H3PU9E1cpKX4kJyVQJDMpMPhHDe3Jyb7H3DOOfZ j7oakemg9g0c
E6uA7eF3Tb73nDTZm0OHYr1s5aq4jSu1U7QUUcmbTkpLyIU5QX0dML/MS29u rDUYudC2lHam
jQtT8525D1P9/1a/HtkYk+WqUdxaRpWZE+WDLdaEZK6JFGnxCuLMtMR+d5Gs zAvyJDfpzTV7
OTjZ26ffnCRuFVVpa9KzFu1lK2fFrQgoiC+1U6QUUfaxQVmTXJoT5Au7/DIg vxCYvxZE8ubm
UtvsZRWpr42a75b89Kf+heJqwXiy/1X2QHGb+n5jiRYJqKwHFk/XTlMCNx5R bC5fZWZwy38l
L+m9Nb8Vy8lDfd5LJO45nv7iudYIqMlexas6zT5lu8wiV71srV+3Lu7wJGtE U3dWaMytLFuE
yVhK7RQrRVRAZtPUVTrBkuQ88czTz/gz2OSKHcpniVnkynYEx35T3CZoFGm4 LJ0v89IWZF9T
3Kah41ikNQJSYMnPSfEeSpgluqgg1Z8/crm8f1jxRLz403C+WIRx4RTee6sO r9TU4e3mDn1X
HxcdmfhMZ2c7tXNXhxe3IkOHpdROsVNE2antdraRROsmRa8Mf8uIuB3tgedg k/bF4kDTu2j2
nEb3oFqIJb33Z3G6oxcjGZ3efBjt+QjvqrR0NjA4itvUdgLDElLLM+nSpIFL r2Iih7w2kawJ
ylvspv+awxPUA0KlU8u+51bkXjz+Eh7MK8KDazaj+uXNWFcyA0WP7ECbkQsy EfvItWvUZC/7
w4m2KWPBgz1r8t9Lyn6aI57b8cWa+hhagJqT/2IttVOsFFE2MlbZNtknuWiD wfalvg6odR0Z
Ebdaei61JW45Hp8vcnHnzcX6hs+EoL2JgcPPiXSFtehIpcN+yIOa1TvgiThf Bqf5yr7BUdym
tg8oblPLMyWlyQkn0UO9jScaopDofXPhOhmPJj3b0eLRMjLZx4Dl6zuEZ6c/ gI2HzxspvsQF
N7qwp6wIc2vPiB3S5REjdY3lFGBRytLKGN+6MtN9nM7JPtNtMd9PjtHgkAQV FiPPy4WY29Tw
y4UUUbkVcyv7RcV1m+e5SItoMzLfheSmvY6B1h0om7gEO9uvhJpSlHnHN9KL jpB0hWHmwrD5
cI3zNC+xSdxGnCujeJXFNWfP6lv6pupI53zHsIRU9RLLSYqAnJQSjY2RD005 kf1mx46E8h4m
VXGbXhxLTJirnZHJPiqnoHyh/nN1IaDtkT7ahYZVc1A0/zE8KTZdKJi+Fg3a pgvGhD1vOVaK
zRs0b1peKbZ/+BfUPTQNi+q/gLbfj7EF5cK6z3EjQlljfe9ja0kRikuXisTr kzFjdSN6tB3M
Mnekc7LPXCvG7xQc6y29aNJ7G5y2yT3iNhu9EP89sz8nWKtzpIwc0Z4lGWlb OKHpu4ADq2Zg
VnUrvmlai3xtO3AhJsPOO8a8du88lNw1R2xGIzy/05/B653fwxdu/uo6gZ33 ig0WtPlPbvMr
XMLGRjUFUx9AidhIoqBkKxp2PIl8ba4Uu5VNFfOlnCtbjU1E1JeFqfOwWHia C0peQovYZU0L
x1Hzq7bNeeqOdM53FLep6yeWlASB4ITc8qFoJZZWCdvGxkYtPEF9gkqiKjl9 qRQN5oVjkcSE
vcTtiNiIYYGxhW54/Dfba1G8cDc6f5RiU1+hXlTtFdLWeAhMLMfuz8XEj8to 27YAd1YexWeN
T6FgYT26hbr1DRzG+tvL0dBzHeHL+hAddWK1tZq8r7Vjz7otOCDOz+SRzsk+ k+2Qq9fDZUeI
VAeK20z2Tux7ZUQAxq5GxDOkqA3+GhUrl7IqLCNtC+tFVfNcI7x+cXsNXWHn nR/QL8+ZuBb7
zsuNm/Utwgt/2oDuTyPMhQH3/FFs+Svmv5Id8I4Ioes7jwOrp+ni11/mFTFX zhVzZQuuyIWR
LZtx9/2/RtuwPH8I3ppHUCi2JO87JcRt3mNih7VvU+q1lf2RzvmO4jaJAcZL U0fAnDFBZUKI
FUurHqB/+tOf/KnBpNiVk95nHZ+lrnI5VpLkpj7JWal6Rib7qBW5io7aRVHF rQxJGGg/hrfr
XkFV5dPalpYB4tYfvzb+6a2vrwlPTVyKPSIPrpzoC/3bXYYrq018NnxZi/kt Ka9ETf1BfNQz
nPH8uemc7K3YQqrOUWPYyiYi8p4Ut6kin5pysj8nRG+HCkWTTpF4v/hlpG1h xa0uJgsrDuNz
v7gVojLsvGPMY8sa0Wt8PNI8qLe/iJYr18LPhQH37MORNWLNguYAUIfyBqtY X3MMrlG30gq8
XC3yh4uflytKUSi8y22t4r6alzk1tmUuJZ3zHcVt6vuLJSZAQL6Jqxg8lcNW bbErH5DBh3p4
moWt+XcqBUwCVcn5S6zu1JNRT0ZUqrdwpeVF3KlN3FoQgXHoXtjCikP47PBG zJi+AlVvvoMj
LX/Fvsogz63/c5lpwjZCERb97l38YfkDWH/4b0Ks3kBfxLJkvFkXPmiqR83z y1A88RHUnMrs
xqjpnOwzadgy1tvq9s8Ut5nsGWv3yogAtFaViGfFO89ldL4LJ25vfC5Cpe7B isZusW2zCkuQ
tQo37wzonltTGIAmbn+yGY37N4SfCwPu2YsD5SL0wC9uZYhXO468VGoq0yxu 9a9hd5ZX4x0t
w4Pxc7Qd/dJzS3GbpLVm5nIuKMsM57juooRscF46+XvphTQL3FjCVnku5XXx PGDjqrCDTrbF
g+zaKdTcX4Symo+M9F9iMv78d1g+8QG80PK1FrYwZbNHfJwTj4KR09j1yJRA z204cSs+tV1q
fh53/kRM8pOVcNY/DYaW9We0bC7BkvouIX/lTb7BvmWzsLKpN6M97RRxGy80 em7jJZbe820x
J6SpiRlpW7C4HfsO3t1PY8Zdm9A8MKoLV00wSlEZbt7p0c+5azNatOwHRljC 8jo0/jrCXBhw
z+voaShHYdkedMt1A9ri3P8bM6beEUHcipf+pvUofGg3urR1Bvr97lRhCRS3 abLG1BZLcZta
nikrTU464eJspUBVAlfltj116pQWPyQ9vkrsHjx4UPudPJfC1nq3ZGSyj1kd IWa7GrFxvrEo
TFsYMZ46x//pbumjYnHEEvxszSIUzl6Hxu6RIA9HULqb4RPYctckzNzWqglj Lem++gwYUNYa
/K5pN1ZPn4GSpeXaorXCkiqcGEjDt7goLChuYxoKT8gAAXvMCelpaEbapglN c9q4fBSV/hL7
u+S6AGOOMhaUjX75Vph5xxDA4sV8RnEpyrVFtHJB2aUI85eYC//lPTHXiUVl xoIy30gHXtcW
4ZbpC2RXvY7jbz4TQdwK1sYCtMLZ+v0KiyvQKBbtah5jitv0GGOKS6W4TTHQ VBWn8hCGK08J
XDkxSRGr4nGVGDhx4oR/AQuFbXw9ol4I4rsqTWf7RtDbcRpebyd65UII/2Gk qFG/l+d99hUG
E9rkIXJZetodr7j/2QTLTo4LxW1y/Hh1aghkRACmpqpxl2LHtoXOO+Mv6Rfk hg8B82GUuVB4
gvv/zbQI1phPtYwzlkjFSLdoqQzrJylnlQyDSPXBmNtUE2V5aSMgBe6HH37o F7YqlEGJXSlq
pehNNBYrbRW3ecH8JGyfDpJfIuTDNx2TvX1aGVoTGXYk2x3tBdfO9XdS3cyL tZzULtUWW73M
RwRsvw0X0mEL6RSg6Sw7HSxSUSY9t6mgmKUylAdXrpKVQlYJWynQ1EK0LFUt Z2+rhAU3wch+
F6q+iHcFePZrnlwNZOYTN4r65Kil52rVF/K/TjxUqkR7O0Hst1VuOmxB9UU6 1sZQ3Kajx1hm
WgkogfvnP/9ZE7TKY0uvT2LYzVu+JlYCr0oFAfmwlQJPprJz26HaLsdzOh50 buOZaHsle5U/
1t7iL9EWAkq8h8vCk3ipvDJeAul+7lDcxtsjPN82BJTx0mObfJeo0ASnemuS J5T+EpQXw619
oLzWFB3pt7VId3BDH0gBrzYYcdsXkuxZVuCdzS9R6eoDilu79DbrkRABuZWn lZ3MEircRReZ
U7GRZ2Y7Xk70MswmN2IB08fG/MCjwE0f51jCVnpune49V7HtUuSmS1xlvgdz 447mXTTTOc4p
bnPDHlhLEkg7ATnJK4+G9OQyzCPtyLUXM/UZmFk+oNmcskHJg3Hg6bdByVh9 NXDTVzC1Ul9t
+OPUMIz0W5C1O8gXJik41fhOp7CVNaK4tdYvPIsEXEFAbZqh7UFuxH9Kocuf 1DNQk7x6uDrd
W2Z1AEkOKkxGspGcaH+ptz+1CFeNdflvtwk8KezN41CKfNpaemxN2VmmFo5S 3FqdcXkeCbiI
gPRqqE/l5kmJ/29OzJ7c/0uPrfRe0EMefmDJLwmSj1l80P6Ss7lgfpKtHOdu /jQvX6ZknLv5
hYp2llo7U44SGUaYqRcoilsXCRY2lQScTkB9XnVjxgGn9y3bRwIkQAJWCVDc WiXF80iABGxN
QCWfV14XN3ujbN1RrBwJkAAJpJkAxW2aAbN4EiCBzBBQaYyUuE33goXMtIp3 IQESIAESiJcA
xW28xHg+CZCA7QiYc1ea4+W4SMt2XcUKkQAJkEDaCVDcph0xb0ACJJBuAiqt jzmlUaZW5aa7
bSyfBEiABEggPgIUt/Hx4tkkQAI2JKByxSqRq0IUuLDMhp3FKpEACZBAmglQ 3KYZMIsnARJI
LwHzHuXq/+XEplKZcSOA9PJn6SRAAiRgNwIUt3brEdaHBEggLgLKSyu9tmZx q/5filweJEAC
JEAC7iFAceuevmZLScBxBOSCMZUgXDbOLG7lv1W4QqYShzsOMBtEAiRAAjlI gOI2BzuNVSYB
EtAJyJ2FzAvHgsVt8N/JjQRIgARIwPkEKG6d38dsIQk4lkCwZzZY3CrPrtxm lAcJkAAJkIA7
CFDcuqOf2UoScCQBGW4gY23VESxu5e/l3+XuZTxIgARIgATcQYDi1h39zFaS gCsIhBO3rmg4
G0kCJEACJOAnQHFLYyABEnAMAYpbx3QlG0ICJEACCROguE0YHS8kARKwGwGK W7v1COtDAiRA
ApknQHGbeea8IwmQQJoIUNymCSyLJQESIIEcIkBxm0OdxaqSAAlEJ0BxSwsh ARIgARKguKUN
kAAJOIYAxa1jupINIQESIIGECVDcJoyOF5IACdiNAMWt3XqE9SEBEiCBzBOg uM08c96RBEgg
TQQobtMElsWSAAmQQA4RoLjNoc5iVUmABKIToLilhZAACZAACVDc0gbSROA6 BrvPwOvtRO/I
zRj3+AHnPIdwoOkYOgbHjHN9GO35CAebDuJo+wB8EUrwDbbjaNMheHp+gPn/ A09XZennZeaw
Vv9E6xLc1kTarl/TJLgH/Rxtx8DAONdE65iN6yhus0Gd9yQBEiABexGguLVX fzijNr5v4dn+
GIom3IZ8+TN1KV5pHYwoUIERdNSWinOLsLrpgnHeMLzVD4nfzcGmlsGIXMa8 1eI+07CyqRfm
/w+8YAz9TWtFWfp5UY+Bw1iXl485te2IJcmjF6TueRuKqr1Qkj1VHRzc1kTa rl9j9JH5v1Or
0dY6zjVVdc5EORS3maDMe5AACZCAvQlQ3Nq7f3Kwdj5cbd2OmROmoKz6PbSf egsb7spHflkD
zkVyvwo5+2P7TswVAquwohlDstU3O1H395OQf9ev4Bm+Bd9ILzpOedDywUl0 D173czGLOl+/
B69V78KBrmH972OD6G7zwOPtQXeQuI1UnlDBWCnq4RekvhH0ej/AkWYPOnpH AgS6b+QCTrcc
wcHmTwLqZNzcENTjZWn39J4R5w5j8Ms2eDwduldb3qPjtPByn8XgmIR0EyO9 nX6vd7i6BovZ
eNqu4ClxO6WiASe9XnE/46ejF8N9kViex9DAWZzW2nFdIB7/f9EQ49+6t17/ m/z/79Hb3grv
N4bXPALT6DytDQWKW2uceBYJkAAJOJkAxa2TezcrbbsqvLCLhJd0KXa2tKLl yPtouxAoCsNW
68cz2PmAELO3v4iWK7dwq7seiybkY+a2Vvww8AF+VTJZ9wJrP7PwVONZ3JD6 NYLn1jfSgddX
zTLOn4SiqfJ63XPri1TemBc1U8c9mdOe34nd/jL0+67e04ERnxBxfe9jq7lO efPw8/cumsRv
qOdWr2s+pk2dggKjLQUlL6N16DyOrL1HlF+Guq5rQiNewIFVRcifuB7vfNoc tu3XTO3WdLzp
39HabmavxG04z7K18nqCPOKqzQtQ471s/G0GlpY/ihmKfUC/KKbtGIrJ05ox U9xa48SzSIAE
SMDJBChundy7WWlbLw6UTzMJUSFghPDbeOibGJ/mVWjCAlS1fodzDU+IMsz/ PxcvNF/Etb8d
xPrbRZnlTeiPKG7PoqehXAjIKVi87aD4xH4INUuFWNQE1lmj7PDljXtuW+DV QiUWYNP+T3Hu
6w+wc5koI68cDT1D6Kor08TuxuZv4Rs+hd3rVmHllmb0+73TkcSt8E4v24kP O0/jQOVcUcZM
bGj+Gy41P487J9yBRfVf4NZQMzZMFOet3Y9P3pQcQuvaG1HcRmt7YEhG+LCE 4BCPr3Ch8akI
LK2I29tQMP9Z1Da8K+KdvzXCT4KZPoSV//BADJ7WjJni1honnkUCJEACTiZA cevk3s1K25S4
XSDE6AVc6zuMjTIs4Z7taLsaMS5B1FSFJkzC3N/8EX+Qnkt1zVgf2t6qwaY1 T2Dx7Dt04RxV
3J5Ec8VMcd4TQojKEIagmNso5Y2L20bs00R6EUqWlmNleTkeny8F8gysO3we A82Vwhupe3kL
Zi/Bz7a9jbb+8XCJ8XuOhyXoYnIKljd+Iz/gB3o9r7RgkxDtBcv/gM/+8qIQ uvdg/eG/wReh
rpHFbYy2m2xCidvC0gq8XF2NGu2nFvvaL5s8wcHl3UBv42rjRcGKuFXtlTdW thHMdBLmlMyN
wdOaMVPcWuPEs0iABEjAyQQobp3cu1lp2xA8m+8X4mctDvTLZVRK0Kh/R6mU Ck2YOQfFE/WQ
hKv4AZ11jwnP4Uw8vvk1HDhWjw2TY4nbj3FkzQyTuDULsq6o5YWI24nLULXX nE1AZVy4joH2
P6Fuy7MoMwR3wcLd6PxRCfhInlu1qC14kdslwU14cic+inVPC35aeMZwxLpG FrfR2h7ecxs9
LEGJ26XY0z0qOu+64fmW7QgWt9cMj7Y5LMG8iM+whbBML8Xgac2YKW6tceJZ JEACJOBkAhS3
Tu7drLTtFoY9v8LdwuO5vPY9eD+uxzrpkfxpA3pu3cSQZwdWl6/Cc43dYbIR qNAE6RGVIQmX
TeJ4uRBXlzHQugNlebHEbbRP8yeMsInw5SlxO6ViF35bPkXUoxjr64/De+o4 9qwt1mKJ93T3
oqVyjvj/Umz39OPGyEm8UiI8yka8sI49XnGrFuLJtufj7s0nMOx/MQitayrD EqKL26/R17Qe
hRMmoXjNDuxr3IUN81X88nlc9WzFFFnfijfxSetBVJVKZpHErerfYKYqzjmY 5/+DxndrhL2s
Q41nwJI1U9xawsSTSIAESMDRBChuHd29WWrc2EW0bHnYv2gqf/ozeL3ze9On +EjpsXy40bUb
C+Xnfn8Yww30Hd44/sl6/qNYOlssPDP+HjEV2GgXGvyLwWbg4dK5QqBJL6IQ a1HKgxCqNcZC
sWnP7xKCdu54O0wLyka/3Iv1xUaIhLHIbXVDF6RvMzFxK6662oqqe0QIh1/Y R26756+/9qdA
06S0OQY3YtsT8dyKa2R/Vhmp3fKKsfhhuVDP8MheO4O6MukllwJ1Bkrmy3CQ SOJWJob4DA0h
TEVe3bA8O9BjNYWbQZ3iNktjnrclARIgARsRoLi1UWc4qyrxbOIQq+UqNZZK lRXrfOPvRoqt
092DQYvZYpV3Ez9cHjauUefqqa8CDplqTEufFeZvFqsY+7RYdY1QQsS2x75j UCMx2H5MbPSg
wjGuitCDR7VFblWtV/RTtXu1h0mHFuleEZiG5Sm9vU+IRXffWao4xa0lTDyJ BEiABBxNgOLW
0d3LxpFAsgRuYeTUDjwoQ0Hy5qD04TmaJ7vgoV1ovxZtgWCy95XXizCWlq0o 2/AOuket3Yvi
NhXcWQYJkAAJ5DYBitvc7j/WngQyQEB4Wns82Fe3Q2RT2Ik9TR/jXMwtlTNQ rTC3oLjNDnfe
lQRIgATsRIDi1k69wbqQAAkkRYDiNil8vJgESIAEHEGA4tYR3chGkAAJSAIU t7QDEiABEiAB
ilvaQG4RGO2B56Ap7+zhFrSFLBgLbZJvsB1H/YuiUttkveygOnX0im16x++T lvsHs2h6F82e
DvQmETKQlnqmFnfU0ihuMwibtyIBEiABmxKguLVpx7BaEQj0N2GlsTOYnn5K /kzGg1s/wECU
NUcBqbKiwR04jHV5+ZhT2x4mD2/4C8NvY3sH7lv7FjoNoRn1/gncU6tJWBZi sVdJFU4MyA00
4j8sc4q/6IxcQXGbEcy8CQmQAAnYmgDFra27h5ULIaAEXWk1mmUarta92FQs 8t4aW+36RnrR
ccqDlg9OBqSm8vV78Fr1LhzoGhaZq8Q5WvquYQx+2QaP2dtplG/e2MA3cgGn W47gYPMnYdNd
KXE7paIBJ7U6vY+GykUiq8AULKnvwg3RiPH7X8HY4Fmc9nYKD+v36G1vhdez RxPs2j2NFF5e
v+dXpc2S598MxBHMwvsRDmxeJFhMwry6Tl2cy/K8H+BIswcdvSMi17BxyLRb bR54vOcxNCDr
o6czM3Py30yV0XQELd4Lfo90VI5ZMl2K2yyB521JgARIwEYEKG5t1BmsigUC StCVN6FfO/07
NFfoGwe8fOhd/MrYgEH36M7CU41nNXEZutlDPqZNneLfoKGg5GW0DrShZqry BkuxeQqjfe9j
q7nMvHn4+XsXx0Wiv+zAjSl8PQ1YIuuwsB7dt8z3V1vWzsDS8kf9m1MoL3TR r/di32q5KYKx
3a2vB/uWTxPb8lbgSLA3NoSF2OXM2DFMep7HRjrwun8jC53H6j0dGB42/34S iqaqHcd6AzeD
kHgDNoTQd0+bsboRPTd8xrlhOA4FiXAL3ZqqUyhuU0WS5ZAACZBA7hKguM3d vnNnzZWgm18p
UlL9EQ2/eRYlMgfrxNWo+v/pmwu80HwR1/52EOvFtr/5hggOFbe3oXDZTnzY eRoHKueK62bq
GwUEeG6viQ0LyjRRuLH5W/iGT2H3ulVYuaUZ/aYQCOW5DdjGdsyrC+Wp1fCK CIHx+ytxK8IH
5j+L2oZ34Tlh8tyKrSMGDldou6mtaOyBb6gZGyaKuq49HBp2oVhMXYDHy5/E yvIVWDxb7Jo2
fT329QyIzQ9KNdG/af+nOPf1B9i5rEjkqn0Ez/8/j2pe5cXbDqKt9RBqlorf GzuOBYYliB3S
tK13p6Cs+jgu9HejedsSce0MPNV0Hje0XdEicMySdVLcZgk8b0sCJEACNiJA cWujzmBVLBAI
F2c6tQwvHv4aN8b60PZWDTateUIXedJzGlHcTsHyxm9MWwIb28kGiFshNJsr x7f+nb0EP9v2
Ntr6A3cqCytuDVEaWdyq+4s2B4VC+EQM7nohaAtW/RFfHH8RdypxHYwnQNwa wlZusKDF3Pbg
QLnw+E4oQsnSciF8y/H4fClilWf6CTT0yHbcQG/j6gjiVnnF1bnAre56LBJl 3FnZgkuauI3A
0UJXpuMUitt0UGWZJEACJJBbBChuc6u/WNuQT/EKyQ/orHtMeBVn4vHNr+HA sXpsmBxN3Bpi
VnhK+5vW+sVdsNAErmOg/U+o2/IsygzBXLBwNzp/HHfdhopbubPWZtwtvZoV zRgSVQz13Kr7
h4pb+L5F84ZZwhv9KNY9fT/yb38RLVdEbEMkcesP0biCtm3KC31SF7cTl6Fq rymTQ9NOrNIE
rhH2INp3ruGJGOJWnSv2DOuqw7wAcRuBY5YsleI2S+B5WxIgARKwEQGKWxt1 BqtigUBEcdtr
eCqXY0/3ZQy07kCZDFeI6LmNLm6nVLyFM709aKmcI4RfKbZ7+nFj5CReKREe 4SCxqcRtYWkF
Xq6uRs2257B4ar4IAViCne1XtEZZEbf6PeWir1u40iI9trqXVXpJ9VKCjhAW I/BWLzCEapcR
llCM9fXH4T11HHvWFou/LcL/8/xyEWowCcVrdmBf4y5smB8p5laFJYhsFJv3 o9UrdimrlOUX
izCNvqD43KCXBAtdmY5TKG7TQZVlkgAJkEBuEaC4za3+Ym0jilshxA5vHA8h mP8ols4WWRTu
2Y62q2rxky5oA+NKg0SZELA1xgIyuaBs5Mu9WF9shDgYi9RWN3Rh1NQT4VKB FcwuR03LReEX
1o+o4jbgniJjgrzgSgs2yZjhCXOwqWUwfL+HsFBtuQMP1n6KayOfoWHtXP+i ObWgbOTGRbRU
PabFy+bnFWPxw8JLHDbmVlZcnLvlYVMZQuhueR99Y4FMxYmBHvAsWSrFbZbA 87YkQAIkYCMC
FLc26gxWJVkCKm3WWQwK8ZX4cRM/XB72C1ORuwvdMsWXkS4r8XKjXRl0T99X aCgTHlVDnCd+
T8VET/UlRehg+zEc8G9ocVUsmtMX4lW1hvUPi2tUGacD04klXqm0XUlxmza0 LJgESIAEcoYA
xW3OdBUr6hoC2qYO0ms7nic3dW2/hZFTO/CgLD9vDkofnqN5ZQse2oX2a8m8 EKSuhsmURHGb
DD1eSwIkQALOIEBx64x+ZCucRGCkHftqdqCu0YNzSWylGxmJ8MT2iPjZuh2o qd4pUqp9nKb7
ZL5TKG4zz5x3JAESIAG7EaC4tVuPsD4kQAIJE6C4TRgdLyQBEiABxxCguHVM V7IhJEACFLe0
ARIgARIgAYpb2gAJkIBjCFDcOqYr2RASIAESSJgAxW3C6HghCZCA3QhQ3Nqt R1gfEiABEsg8
AYrbzDPnHUmABNJEgOI2TWBZLAmQAAnkEAGK2xzqLFaVBEggOgGKW1oICZAA CZAAxS1tgARI
wDEEKG4d05VsCAmQAAkkTIDiNmF0vJAESMBuBChu7dYjrA8JkAAJZJ4AxW3m mfOOJEACaSJA
cZsmsCyWBEiABHKIAMVtDnUWq0oCJBCdAMUtLYQESIAESIDiljZAAiTgGAIU t47pSjaEBEiA
BBImQHGbMDpeSAIkYDcCFLd26xHWhwRIgAQyT4DiNvPMeUcSIIE0EaC4TRNY FksCJEACOUSA
4jaHOotVJQESiE6A4pYWQgIkQAIkQHFLGyABEnAMAYpbx3QlG0ICJEACCROg uE0YHS8kARKw
GwGKW7v1COtDAiRAApknQHGbeea8IwmQQJoIUNymCSyLJQESIIEcIkBxm0Od xaqSAAlEJ0Bx
SwshARIgARKguKUNkAAJRCRw8eJFyEmi8vnnc+LnmaefQf6E27Ck7Kc5Ud/t VVU4duwYLl26
RCuMg4DkJblJfrlim7lWTznu5fjnQQK5SIDiNhd7jXUmgTQTkB5Q+TCWQpE/ mWHw6q5Xce3a
tTT3bG4XL0Wt5ESbzIxNSs5yHqDIze1x48baU9y6sdfZZhKIQuDjjz/2iwf5 YJP/puhKj8ko
z/iSsjLD41xGIREBtWR1X3GxnxM93umxSVmqfImQ41694Eru8t88SCBXCFDc 5kpPsZ4kkAEC
StjKh9mZM2cycEfeQhKQLw/KIynZ82Ui0C7MwvbNN96g0WSQgHyJUJ5yzgkZ BM9bJUWA4jYp
fLyYBJxDQHprlGeMnyGz069K4EqPGY9xAs88/bQmsKTQ4pF5AuaXXr54ZZ4/ 7xg/AYrb+Jnx
ChJwJAElrOSkwCN7BJSQk3HPPKB9Dlexn+SRPQLSYy77gfND9vqAd7ZOgOLW OiueSQKOJSC9
MXqWgTLHtjFXGiY//cq+kC8bPAAl9vk1IbvWoOYI+XWHBwnYnQDFrd17iPUj gQwQUPlhGc+Y
AdgWbiEFBEWEDkoKfSlweWSfgEy9JvuDLxrZ7wvWIDoBiltaCAmQgBbLKB9a XBFtD2NQq9Tt
UZvs1UKKKHqxs8c/+M5uFAz2oc+axEPAjbb6d/EA4rkk4AYCtpoIRnvgOXgM HYNjJvQ/4Jzn
MI62D8BnqUN8GO35CO96ejBq6Xx7nURxq/cHd5yzl13aap6wFxrWxmYE3Gir FLc2M0JWJ/sE
bDUR9Ddh5YQFqPGOmMD04kD5NBRVe2GWvJHJjaG/aS3yy5vQHw3vkAc1q3fA M3Qz+51gqgHF
LcWtrQzSqIyt5gk7AmKdbEPAjbZKcWsb82NF7ELAVhOBRXHrG+lFh/csBsfM vtybGOn9Cr0j
18OI2+sY7D4Dr/ka7V5rcaBfSWYfxgbP4nRHL0asuYjT0oUUtxS3aTGsJAu1 1TyRZFt4ubMJ
uNFWKW6dbdNsXQIEbDURRBW3reiVHtl756HkrjkomVeE/OnP4PXO7+Eb/QKN a+eiQNsyeAZK
5s8c99yOdqFh1RwUzX8MT5bOQcH0tWjoOoGd9+brCerznsORvm/QUvUYiqbO w+L5RSgoeQkt
fdcToJn8JRS3FLfJW1HqS7DVPJH65rFEBxFwo61S3DrIgNmU1BCw1URgRdxO XIt952U07VV0
169A4U//GX95+ykUPvJbtI+IEIOxr7Fv1Qy/uL3ZXovihbvR+aN0xw7Bs/l+ PcTB77m9jqGW
zbj7/l+jbVhc7xuCt+YRFK49jIEseHApbiluUzOyU1uKreaJ1DaNpTmMgBtt leLWYUbM5iRP
wFYTgRVxu6wRvYboHPNWo+j2EjyycAYW1X+BWxqO4Jjb6xhoP4a3615BVeXT WDz7jiBxewlt
2+aisLQCL1dXo0b8vFxRisKp1fBaC/JNvhNMJVDcUtym1KBSVJit5okUtYnF OJOAG22V4taZ
tsxWJUHAVhPBwGGsy5uLqtYr4y3yfYWGsnuwvPEs+oIWimni9ieL8fh/vgdL Gr4ysimYxe0N
9B3eiBnTV6DqzXdwpOWv2FcZ7Lkd0Ly5d5ZX4x2xQ5vkof0cbcdgDnhu5dbJ TtwWNa3ZErSs
HKa+PtyCtpAY7iQGVfClwfczbOygyOgxbIM4bysttdU8YaXCPMe1BNxoqxS3 rjV3NjwSAVtN
BL4e7Fs+A/dteg992mIxsUis/bcom/gY6kRsrZYF4a7NaNEyHBhhCctfw6Hf lqFw1X5ckNeM
fYMDa1XM7Qi81QswZbNHnC0iDkZOY9cjU4I8t9eEaF6Pwod2o+uGvKde7p02 D0uQeYmVl9eJ
G3CkVdxqXwjuQHHpCqwsf1L8rNA8+gUlVTgxkKC7Plr2De1+Mh488KdgzUF8 fvg5FNxbiw57
Je0ImS5sNU9wOieBKATcaKsUtxwSJBBEwF4TgchR2/0ONs6fbBICs7B6T4fI YGB4ZH8yDTOK
S1GuLQ4zFpSNdOB1bdHYo3h8/gOmBWU3MdT6Mh7MK0LJ0kdRMnsJfrZmEQpn r0Pjv7yHLXeJ
RWVyQdn5z7UFaYWz9XILiyvQ+KU5HVnmzCZaWIL00sr+klslK6Ek/19u2+u0 I/3iNijl3NVW
VN1ThJVNvSaURpaNkAwaYX4fkn3DVEzYcJtwPaYyfsSpdMcGcfbsoJEqLz1Z P+w1TzjN2tme
VBJwo61S3KbSgliWIwjYciLwjaC347RI3XUG3YMqa8F4uMEF+SnX2ynSfplE gHFNR+9I0GYP
xsNenS/P++wrPY3Y2BD6/02VHyZdWBZ6OJy4leJVbX+qRO2ru17VNjpw6pFx cXvrC+xZOAvr
DvfpSI0MHP4Xnvkv4FDPtfC/P/txYPaNgSBxGlHcGjYt47tHImX8MJ2jOZX1 rxFyUeSoDMuZ
txwrS8TLoMzrPHYxbVk/bDlPONX42a6kCLjRVilukzIZXuxEArkzEVjcnCHH O0mJWxlHK7dG
DvbSyt85McY2uNvSL26nYXHFNm0BYU31P2GL8OgXl70Kr8yYgR9xoVFk4Cjb g24ZquLPoPFH
/MvecL8XmTX6gvMmB3tuzWEQMhRiE/Z1j+ihNlO3oqG+fPx+ARk/YojbvMfw Suu3wmsrvlKk
MetH7swTOT4BsPpJE3CjrVLcJm02LMBpBHJnIsjtbXWt2s1/eeaZkNhM5a2V wtctP4qDtM+U
H5on1SxuX8a2NSUizGWjyHl8Q9yuD0fWzDJl4BBOfuklnfoE1q0M93vhee2N JW7nYEODR3yN
8Bo/8suDseFISLk30Nu42khnF0Pc+rN6XElr1o/cmSdSbi0sMMcIuNFWKW5z zEhZ3fQTcONE
kH6qid1BemT/88OlEcVt8IIkN/w7feI2OObWgy2T52BTy6DoPLnl80xTBg4f rnq2YsrUpVi5
NNzvrYjb4G2lpY0o4SrLnSUygnxjhNRcx7mGJyKI2/FczVpYgl/c6r9PV9YP zhOJjWlelXkC
brRVitvM2xnvaHMCbpwI7NwlKixBZkN45umn/UL3vuJiyKwIclGZG470hyUE ic0xL2qmTjMW
lI2KjBlLxzNw+EQu5KpFuHvze/iXsL8/geGEFpQpcftL1NWOZ/zwjbRj9zKx A5+MoxVyVxPW
P6lC23UffMOfYPv9k8Zjbv3iVqS9S2PWD84Tbhh1zmijG22V4tYZtstWpJBA tiYC32A7jjYd
xNH2gcAFYL4BdBw9mLU8sylEm1BRwQvKLl68CLl4TIpbc3iCFL9OPjIubm92 ou7vp+DB2k8h
97/z+TNw6Ns2FxpbMkf6PYZPjGffSGRB2WWZ8WOWsSV0CVb+wzwUVjSLPfVk yO9H2C4WjRXc
OwdzJhaLraf1dHaBnltxYvAiuBRm/cjWPOFkG2fb0kPAjbZKcZseW2KpOUwg WxOBFsMo8n4W
LG/EBdNmCbe667FI5gPN0g5h2e7KSKnAZMiCFLTBC8xk/znRm5tWcWu1k/1Z O87q2TXUEen3
Adk3rN5EnjeGwfb3ccTbZ6TzGhYZERZiTm27WCZmHCLdV3dA9pBI5acn60e2 5ol4KPJcEpAE
3GirFLe0fRIIIpCtiUCJ2/y8p7Dvwo9GrfTPwZqHMkDcRnlgR3zoR7omWi7R KDlCA3KJps+M
rGy/K4Wf9OYqT65ME+a0wxbiNmNQjUwH01ehZm8Tmt58CcvvWi42LslOruVw zc7WPJGxLuCN
HEPAjbZKcesY82VDUkUgWxOBJm5vfxiP/3QOHm04i1uyQVqu0XvEJgxzxsXt aBcatA0a9M/D
BdPXouHLy3oKJZXjU4rhvFJsbx3UQxzCXiOEgvHZtkDbKWqGabMH6TwLnyNU q6c5l2iqwEco
x4q4VZeqdGFOzHfrLnEretQ3jHOe/airEanJat/Ase4rQfma02x4MYrP1jyR 3Vbz7rlIwI22
SnGbi5bKOqeVQLYmAt1z+xR+V/9z3LmwHt1C3WohCbf/HHtee8ovbm+216J4 4W50/ihlq1op
3opeKW4nlmP3598LEXBZpEFagDsrW3BFnBX+Gg+6GyLlEo2cI7TvlKinP5do WrtCKzwecZv+
2mTvDq4Tt9lDbenO2ZonLFWOJ5GAiYAbbZXilkOABIIIZGsi0MXtWhz4ohmb bl+KPd2XtZCE
Oyub8YWW2F6kV9J2ZLqOgfZjeLvuFVRVPo3Fs+8Qi2kMcXtvLTq0oMTgDR7C XfMODgbkLjXn
Eo2cI7St1ZxuKf3mQ3GrM6a4Tb+txXOHbM0T8dSR55KAJOBGW6W4pe2TgN3E bX8/WiofwKLX
GvG7hQtRJUIL9F2bpLgV6Y0Ob8SM6StQ9eY7ONLyV+yrvH9c3GqpkoLFbaRr GrGvPFIu0cg5
Qvul5zaDi9sobilu7ThJuVEw2LEfWKfYBNxoqxS3se2CZ7iMQLYmAr/ntv9H XGl5EXfKONh7
tqPt6g2TuB0Rq8YXYMpmD66KfvGNnMauR2QaJMNzG1bcRrrmQ3TURcolGjlH qBaWQHGb8VFB
z23GkUe9YbbmCXtRYG1ygYAbbZXiNhcsk3XMKIFsTQTj4lbEHlxpEaEJ+Zi5 rVWIWPN2oyIW
tvVlPJhXhJKlj6Jk9hL8bM0iFM5ehZeeF1kVworbSNesw95TrRFziUbKEapv u6pCJNLfNfTc
0nObfiuL/w7ZmifirymvcDsBN9oqxa3brZ7tDyEgc6fKlFLHjh2zKR0jPZe3 E70jIsBW5hj9
7KvAvKMhNQ93zb/iX08di55LVMT3DnafgdcblNc0g2QobnXYMnevtEvJg0f2 CbhRMGSfOmuQ
CAE32irFbSKWwmscTUDugCVFhBNzpQZ2nP1zicrUXrIv5La7PKDtyiZ/eGSf gNoKWtooDxKw
MwGKWzv3DutGAhkkoHa9cuJOVwEYcySX6JtvvJHB3rfvrdRGFU7fati+PaDX TMU/86XL7j3F
+kkCFLe0AxIgAY2Amgyc7721b4fLFwvppZSeW8e/ZFjsBiWq5MsXPYYWoaXh NOW15UtGGuCy
yJQToLhNOVIWSAK5S0A9wKS3jEdmCUjhpvjLiZnHOAHpxVahGhS4mbcM5T1n 7HPm2fOOiRGg
uE2MG68iAUcSkLG3ynMoH2T0Hmamm8+cOePnzheLUOZm4S89uE7cajgzlhbf XeT4Vy9c8r98
sYiPH8/OHgGK2+yx551JwJYEpMBVDzS1yExOFFKASVFh95/PPvvM9nWUDOXn XemRVLHOkjXj
bCMPCSmsZMiM5KS8uNIuJUe722Qu1U+Oc8nVPAfIF10KW1tO16xUBAIUtzQN EiCBsARkWjCz
8FKigv/VxVUqf6R4oDfS2kCUnFSqtFT2AcsKtWk5/hlja80ueZa9CFDc2qs/ WBsSsB0B6clV
3hw5Ydj557+/8oo/pZmd6ynrJl8epFCjRywxk5efzCU/u/ezrF/j3r24v/g/ 5URdZX0lV4Yk
JWaXvMoeBChu7dEPrAUJkEAKCKjP1lz4kgKYLCJlBOSLjPQMy5dEHiRAAukn QHGbfsa8AwmQ
QAYIqN2s1Odlep4yAJ23sERAhfcwzZ4lXDyJBJImQHGbNEIWQAIkYAcCajJT 4pZZB+zQK6yD
9Naa43n50kWbIIH0E6C4TT9j3oEESCADBIIXv8mUZoxnzQB43iIqAXOGByly mcOYBkMC6SdA
cZt+xrwDCZBAmgnIFd1SOAQLXK70TjN4Fh+VQHCojLRR+dLFgwRIIL0EKG7T y5elkwAJZICA
Sg2lJjS1o5LM1cmDBLJFQNmj2hhFvXzxpStbPcL7uoUAxa1beprtJAGHElDe MbVzlfr0qwSv
TGXGgwSyQUCJWbV9sHrgMptHNnqD93QTAYpbN/U220oCDiSghIPaqUqJWxWq wIVlDuz0HGiS
Wkgm7c/8oFU7f3FhWQ50IquYswQobnO261hxEiABSUB+8lWLx2TyefOiHfPf SIsEMklAfTlQ
G01Iu1TbLnOr5Uz2BO/lRgIUt27sdbaZBBxCINg7GyxulVdXJtHnQQKZImAO lZH3ND9oZQYP
9dKVqfrwPiTgNgIUt27rcbaXBBxEQH3iVXG1weI2WGTYo+k+jPZ8hINNh+Dp +cF6lUZ74Dlo
3v74XTR7OtA7ctN6GXGc6Rtsx1Gjjub/DywiwbbEUY/0nZq+uptDZYLFrfy3 WvDIhWXp6N3r
GOw+A6+3M+bY0O3aNKYOt6CtoxcjPr1eke0+HfUOX6ZvpBcd3jPoHrye8puG tF+xONqOgYHx
8Z/yG2egQIrbDEDmLUiABNJDQIoDc0xtsLiVd5VCIysiYqgZGybeFpDAP7+8 Cf0YQ3/TWvH7
aVjZ1GsdTH8TVopP2+YNAeT/F5RU4cTAmPVyLJ455q1GkVFH8/8HXm6xLQOH sS4vH3Nq25Ee
KW6xUQGnWax7AkUHh8MEP2jly5jsO2bzSABu1Et8uPH1W1ihjbsFqPGORD1b t+vgMXUH7lv7
FjrFS2Nku09BvS2OiXTWIXz7BY+p1WhrHR//KWhtxouguM04ct6QBEggXQTC idt03StWub6e
BiyZcA9WVv9B+ywtfw56ejAaIG6Fd6n9JNpOdmNwzHAXRSpYidvSajR7vcIz 9REObF4kHuKT
MK+uUxeNvhH0ej/AkWYPOnpHoJUof9dxWpx/1rjHTYz0dvo9W5pn6JQHLR+c DPAOmR+qvn4P
XqvehQNdw3rtxgbR3eaBx9uD7iChHrY8o+5F1V7ReuMIV1f/ny7gdMsRHGz+ JKLHKlK9xz1d
wxj8sg2eYO92lLrH6lOrf5eLycwvVOEetDJUhpk8rBK1eN5YDw6snWO8AFoX t1MqGnBSjqnW
99FQuQgFE6ZgSX0Xfgyye99IOLv0ieFwFqc1T/H3YcdzXGOiQ9psm3/8jo9D Ub4Y280tnwZ6
pJMYR0rc+tuvzSviR3ivh/uCxnzAuD+PoQHZZt2jrLdfeZfNPMQLQgCbVni/ EV+rotTZYk/H
PI3iNiYinkACJJArBOwkbvUHx0PY3PAnEYJwFB/1DOti0y9u8zFt6hTxINU9 RwUlL6N1KIpf
U4lbzfurqVZc9WzFlAm6R3RspAOvr5pl8uzOwuo9HeIT699wZO094vdlqOu6 Ji67gAOripA/
cT3e+bQZvyqZHHDNU41ncUPWMoLn1hdwn0komiqv173QvoEPQstr2IOXpo57 xzSBG7Gu4sHY
9z62muuUNw8/f++iwU63xLD3Cah3eLbR6p5OG3fjgzadPMOXPYaB5k24+65V 2PC0HAfWxa35
pUt/KRX2urAeXSeV9/JCFLtUXwCmYMH8YmM852PGst/CK8az5TEx2oWG4PHb 0IURbRxasWc5
xtSYtzaOlLgNeOk04AZ7jCOPnZ6gL1GKh+R/2fjbDCwtfxQzxDzxZP2BCPNU ai3GjWPu71KL
kKWRAAnYhYB9xK2a4E2fPPMextbjF4W0Hf9b4dIa/Ln1IxzatkQ8FO/Aovov cCsSTCVupy7A
4+VPYmX5CiyefQfyp6/Hvp4BdNSWag/0Tfs/xbmvP8DOZULA5pWjoecqLjU/ jztV+Ua4ROHa
/fjkzSfENXPxQvNFXPvbQay/XdTXEM/hxe1Z9DSUa56txdsOik+Xh1CzVNxH E7dnca4hQnkB
ntuRKHUdQlddmfaQ3tj8LXzDp7B73Sqs3NKMfr9j+3rk+/hF+W0oXLYTH3ae xoHKuaK8mdjQ
fD5K3eMID0nA2N34oE0AU1KX+IY+xNbimVjdeAat1QsSFrfirQ418mUs4NP8 F1HsMng8e9C0
+WFjPLfjK0tj4gb6mtajUIyrsuojwoO8F5uKJyH/9hfR/P4/aaETheW/w5m+ r9G8Sdrz/dji
OZ/kOFIvsMFhGfqLaqC4/REXGp+KMO6tiFvx8j7/WdQ2/B5V2nwRbp5KbUyx G8ccxW1SUwgv
JgH7ErCTuB1sbUBNze9xrOcKbpzfj9UyDvDeWnTcVA/DGVh3uE/3RCpvkd8r G4ZxgLg1hK0/
5lZ8ji2fJh4aRShZWi6Ebzkeny8fIsY9rrRgkxCuBcv/gM/+8qIQuvdg/eG/ wTfWh7a3arBp
zRO6UJYeq6ji9iSaK2aK854Qolk+jILiViOVFyBue6PU9bzwvlUKD4/hzZ69 BD/b9jba+oMe
fDHrPQXLG78R3l5z/WLUPY1m7cYHbRpxhin6Ctprl6DwkX9G5+gwvMmIWxUr HyBue6LYZeTx
XLDmMAYsjYkraNsmRWuot1kXmeHs+UTS40h5bgtLK/BydTVqtJ9a7Gu/HCRu vwsa9zfQ27ja
eKm1Im5V/aONfX0uTNXhxjFHcZsq62E5JGAzAvYRt2rFthHnerMdO+/NR/5P qtB2PfRheKu7
Houkd6aiGUOxPLd+AaweiNIreVJ/0E1chqq95owKKiPDJXg2i4fnxEex7un7 NY9Qy5VhdNY9
JrwxM/H45tdw4Fg9NkyOJW4/xpE1M0zi1vyQ64pcXjhxG7Gu1zHQ/ifUbXkW ZYbgLli4G50/
KtftD5brHSi+o9WdnlubDeU4q6NEU7AXci0O9EdebBn6Wf4mhlo2425jLA6Y QnOASHapxrMc
h99p9R4fz/vx10hjLGBMDInxKcalX9yOzx/9rS/7F3YG2rMhbhMeR+Oe29hh CUrcLsWe7lHR
QvX1RHp5g8XtNcPLbQ5LUItnjX6KWOc4uz3K6RS3qWPJkkiABLJMwD7i1hCT 8vNbowfe96pR
lifE6+om9PmCP2OewL5K+Rl1GlaIuNFLnh1YXb4KzzV2B2YWCIm5HTE8VPLB 0WV8oizG+vrj
8J46jj1ri0WZ6mEk4nNbt2Om5hHNx92bT2AYShAsFw+syxho3aHVMfGwBOVJ ClOeUfcpFW/h
TG+/8LLJEIpwde1FS6VcEFSK7Z5+3Bg5iVdKhEdZE+MqYMN6vQPFQLSQCorb LA/dJG//A855
DhkLN/+AmnIZYy4Wc9Ycw6n3/nv48SS/OxjZEvyey23PYfFU8RKatwQ726+Y vJfeKHb5oxFX
Ksa3FmZkHs/H8Y72RSXWmLgU9NnfCEu4/xW0ffjrCOI22pi3Mo7iEbcqbGIS itfswL7GXdgw
X8Xan/fH/t9d8SY+aT2IqtIphlBXMbdK3KqQpEjzVJJmYLqc4jZ1LFkSCZBA lgnYR9yGLugo
KN6Iph6xoCvsgjKxAGXVW+geveF/UIZ4U0LErRLJd+DB2k9xbeQzNKyd61+g Nr64xOiUq62o
ukc8uIXgrmq9LH4pHliHN46HAMx/FEtnizi/e7aj7aqof6RUYAELX2bg4dK5 IlZQPry+jlze
t62oMRaJ6QvKItVV5J79ci/WFxshEpoYF4tkxMIa6S/SD+v1DgmbiFh3itss D90U3l699Jk9
h7chsncy0NtbMLscNS0yNt68qPJ8FLtU49C86EuN5x+tj4ngBWVTl+KV1sGg 8IDAMCBfUuMo
HnErYVxES9Vjeuq0vGIsflgu2jNE67UzqCuTX3QkyxkomS9Dl8J5bmWihBjz VIosgeI2RSBZ
DAmQQPYJ2EfcGixC0nAFM9I/P57uFg+xlOBTab6sJn1X56s0YRYrYbQrtN7R yruJHy4Pm9oZ
pa4yXZeWlihSOxKst2xexLpbbHsCp7nxQZsAJvtfEtYuzYLzqzDjOZ4xYX0D inFYyYwjq8jH
MNh+THjGVZjTVRF68Ki2GLWq9YpeiDau2i1uNhHvPGW1nuPnuXHMMeY2fjvh FSSQEwRsJ25z
ghormW4CbnzQppupfcpP32Yg9mnjLYyc2oEHZdhS3hyUPjxH+0JU8NAutF+L kZ87S41w45ij
uM2SsfG2JJBuAhS36SbM8hMh4MYHbSKccvOa9G3jbC8ewtva48G+uh0io8JO 7Gn6GOfStPV3
KtrtxjFHcZsKy2EZJGBDAhS3NuwUVklb6CTjEaV98iABEkg/ATeOOYrb9NsV 70ACWSFAcZsV
7LxpDAJufNDSKEggmwTcOOYobrNpcbw3CaSRQLbErW+wHUeFd258wYVspCk9 0dF2DFoOTVN7
s1tdFBYG6GgPPAfN+W7fRbOnI3BP+jT2Q2JFq8+7B3G0fSBgu93Eygu8Su8j fUGM+f+DzsJo
z0diu2S1cCYVdwY9t6nBmHulhIxDY0we/AjnRi1PCLnXbhvUmOLWBp3AKpAA CaSGQLbErcqX
KT89T9nswVXZHLVxg0yPI3Y78lpOh5CCBSoqbZix05eeokcsACmpwokByxUJ 3ykDh7EuLx9z
atsD8/Am3YXj+X/DpW1KtviIqc0CCk4B+zAVdeODNtn+csT1EcZh/oTom0sk 3Pa0jc2Ea5S1
C9045ui5zZq58cYkkF4CdhC3+X9fh66bpi11TeLWN9KLjlMetHxw0pQyR3lq O4Vn9Xv0tntw
YMsj4zkkxW5AMl2YOS2Wb+QCTrccwcHmT8Kn3lEP1dJqNGsptT7Cgc2LRJmT MK+uc1yUyvQ9
3g9wpOkIWrwXMGJ2JkX6W8DOSqH9Gb6NMlNQjDr78/8aOUklKy0V2DAGv2yD R3meQ9KrqbRC
kt9NcZ9wjM05S3vh6/fgtepdONA1rDdApnhq88Dj7UF301oT+9TYqxsftKkh l+OlhIxDORbl
j0i9d0Nso9JxWv//MTnwAu1YS60lx2azBx29I/4vGZp9hxsXElWYsRl73OU4 4wjVd+OYo7h1
pi2zVSSgLdiRHko5sWXyMHtu8/PW4UDfdVxpeRF3TpyJ4pliYwThuT3V9wF+ ZWxkoHtSZ+Ep
sSPZDb+om4Gl5Y/6N1XQE6R/gyGx/eaDwlM6Y9Ub6BTibazvfWw1l5M3Dz9/ 72LgZ/yQDR/E
DmWerZgidifze1yDk8aLv81Y3YieG+JBG+lv106hZup40vtgD6tvIFwbu3HN Sp2DxO2otomE
OTG+9Dy/jNah8ziyVu5AVYa6LrEphu8CDqwqElsLr8c7nzZHYBwobs1eXN9I B15fJRPSy3ZN
QtFUtfNS6jZ2cOODNpPjz7b3ChmHppr6/hbRjpu+OGWySWMjkz0d2sunbrth xsVAW9DYPIVR
S+POtvSSqpgbxxzFbVImw4tJwL4Esi1upy1dirIJc7Cp5WuxNe5DyC+rxJYn xPabU7eiof4J
Len5C80Xce1vB7H+drXV7fjn+IL5z6K2YT8a/qv03E5G6fObsHr6JL+wBdS+ 7bOwsflb+IZP
Yfe6VVi5pRn9Zq+reqhOXYDHy5/EyvIVWDxb7Po1fT32abukqe00p6Cs+jgu 9HejedsSkbty
Bp5q+gp/a1ovdh0L97fzwuvZhJVCCIaGDqj95oPb+Aaa68o0MR+1zmHFrdjS dNlOfNh5Ggcq
54oyZmJD899wqfl53DnhDiyq/wK3hpqxYaI4b+1+fPJmJMaRxG1mtuR144PW vrNEBmsWKSyh
vAn9wlMb3o7fwp9/I7enFlt37/8U577+ADuXiZe3vHI09Fwf3zI4ZFx8F+S5 tThXZBBHJm/l
xjFHcZtJC+O9SCCDBLItbou2/xY7/34y5v22Eb8vmyK8pE3YL/eWlzG3o31o e6sGm9Y8oQtN
6SnUHnJK3E7B8sZvhAd2XOyq7SyfahKiUuM4hoHmyvEtc2cvwc+2vY22/uuB lAPErSFsA2Ju
v0Nzhdwi8wntgSmPW931WCTOubPy9/hDxL+14Eq0sISxcG1sxBkrdQ4rboOZ GNt9XmnBJvFy
ULD8D/jsL8JDPuEerD/8N/jC3l8yjiRuTwZxYMxtBoer82+lxuH8SpEXdnyB 50FPj76ddFg7
/hhNcs6YUISSpeXixbQcj88X4la8eK473GeI2wjjImBsWpwrHNoLFLcO7Vg2 iwTcSCDr4rb6
z2jZfD/yZ85B8UTpwfXigCZuN6Gu9jHhGZ2Jxze/hgPH6rFhcrC4NYSbSeQV zHsYpdPzkX/X
ZrQMiUBe7biOgfY/oW7LsygzRHLBwt3o/NHkug35HHoFbduU51N4eKDE7VLs 6dYes7jZVYd5
AeI23N+iidsf0FkXqY0W6hxW3AYzUf++BM9m0Z6Jj2Ld04L37S+i5cpwlPtH Ercf48iaGSaR
fwO9jasZc+vGySMdbY4WlqDdL5wdf6PPGROXoWqvOeOJnsHDHFIjX3b7zTHi IS+eVsZdOhqe
/TIpbrPfB6wBCZBAighkX9y24kLTOm1rSt0r+pUhbpdi5VLpjVkuxORlDLTu QJncyjLAcxtO
yH2B7voVorzJWFh7WgQlDKKlco4opxTbPf24MXISr5QIL7Am7m6NUwx5qI6I MIkFJtGmwhIm
48HN+9HqFTsPVcq/F4vQgfNGWEK4v/X5wxKmVLyFM6aFLkCv3taQNtZij5U6 xyVuRQxx63bM
1Djn4+7NJyCW50S4fzTPLcMSUjT0WEw4Amoczn4SW6qrxc5e6ud3aOmVX0zC 2fEIOmplWEIx
1tcfh/fUcexZWyz+rb9sWhG3+tjssTZXOLTnKG4d2rFsFgm4kUD2xa0X1w0P qJ41wRBcU/8b
mg5sHA8nmP8ols4WC83u2Y62qzcCvS/B3hi5iOt+cW7eCuz58geMfrkX64uN sAZjYdrqhi79
M6c6QsSt8vDcgQdrP9XPHbuIli0PG0JcikQhZre8jz65cjva34SgrjEWtAXG 3QrBfDhcG7eh
5fQfYtc5LnEr6n+1FVX3CK+2iE2sar0sfhHp/pKxCPbQFuLoLxABAiFg8dwM PFw6V8QbqxeN
1IwiNz5oU0Mux0uJmApsAWq8I3rjQuxYZhb5DA1r55rG5iysDlhQFuGLRsDY PIURK3NFjiOO
VH03jjnG3DrUmNksEsiWuLVGXqX6Ual/rF0V9iyZukpLKZTERg9awapOpwPS Den3jP63Hy4P
CzkafERpY8rqHI1bgoyN9GKnuwfDtCmJfjIudeODNnlqbi9B2XK8Y/wmAsZm Rsad/frKjWOO
4tZ+dsgakUBKCNhb3KakiSwkBwm48UGbg93EKjuIgBvHHMWtgwyYTSEBMwGK W9qDHQm48UFr
x35gndxDwI1jjuLWPfbNlrqMAMWtyzo8R5rrxgdtjnQNq+lQAm4ccxS3DjVm NosEKG5pA3Yk
4MYHrR37gXVyDwE3jjmKW/fYN1vqMgIUty7r8BxprhsftDnSNaymQwm4ccxR 3DrUmNksEqC4
pQ3YkYAbH7R27AfWyT0E3DjmKG7dY99sqcsIUNy6rMNzpLlufNDmSNewmg4l 4MYxR3HrUGNm
s0iA4pY2YEcCbnzQ2rEfWCf3EHDjmKO4dY99s6UuI0Bx67IOz5HmuvFBmyNd w2o6lIAbxxzF
rUONmc0iAYpb2oAdCbjxQWvHfmCd3EPAjWOO4tY99s2WuowAxa3LOjxHmuvG B22OdA2r6VAC
bhxzFLcONWY2iwQobmkDdiTgxgetHfuBdXIPATeOOYpb99g3W+oyAhS3Luvw HGmuGx+0OdI1
rKZDCbhxzFHcOtSY2SwSoLilDdiRgBsftHbsB9bJPQTcOOYobt1j32ypywhQ 3Lqsw3OkuW58
0OZI17CaDiXgxjFHcetQY2azSIDiljZgRwJufNDasR9YJ/cQcOOYo7h1j32z pS4jQHHrsg7P
kea68UGbI13DajqUgBvHHMWtQ42ZzSIBilvagB0JuPFBa8d+YJ3cQ8CNY47i 1j32zZa6jADF
rcs6PEea68YHbY50DavpUAJuHHMUtw41ZjaLBChuaQN2JODGB60d+4F1cg8B N445ilv32Ddb
6jICFLcu6/Acaa4bH7Q50jWspkMJuHHMUdw61JjZLBKguKUN2JGAGx+0duwH 1sk9BNw45ihu
3WPfbKnLCFDcuqzDc6S5bnzQ5kjXsJoOJeDGMUdx61BjZrNIgOKWNmBHAm58 0NqxH1gn9xBw
45ijuHWPfbOlLiNAceuyDs+R5rrxQZsjXcNqOpSAG8ccxa1DjZnNIgGKW9qA HQm48UFrx35g
ndxDwI1jjuLWPfbNlrqMAMWtyzo8R5rrxgdtjnQNq+lQAm4ccxS3DjVmNosE KG7dYwNnzpyB
fIDlwk/l888jf8JteHXXqzlRX8n0448/xrVr19xjUGypowhQ3DqqO9kYEnA3 AYpbZ/e/FFvy
oXVfcbEmFvmTfgZSkFPkOntcObF1FLdO7FW2iQRcSoDi1rkdf/HiRTzz9NOa oJXiVoou6b2V
fc6f1DN48403/C8Rkrfkz4MEcoUAxW2u9BTrSQIkEJMAxW1MRDl5gvQcKm/t 9qoqehIz1IuS
uxS56oWCAjdD4HmbpAlQ3CaNkAWQAAnYhQDFrV16IrX1MMesprZklmaFgIy/ lQJ3SVkZXyys
AOM5WSdAcZv1LmAFSIAEUkWA4jZVJO1TjupTGZLAI3sEpMdcClwpGniQgN0J UNzavYdYPxIg
AcsEKG4to8qZE5Wokn3LI3sELl265PfeZq8WvDMJWCNAcWuNE88iARLIAQIU tznQSXFWUX0O
j/Mynp4GAupFQwpdHiRgZwIUt3buHdaNBEggLgIUt3Hhsv3JcgGTFLdSVPHI PgE3CobsU2cN
EiHgRlvlJg6JWAqvIYEcIEBxmwOdFEcV2Z9xwMrAqW4UDBnAylukgYAbbZXi Ng2GxCJJwA4E
KIbs0AupqwP7M3UsU1GSGwVDKrixjMwTcKOtUtxm3s54RxLICAGKoYxgzthN 2J8ZQ23pRm4U
DJbA8CTbEXCjrVLc2s4MWSESSA0BiqHUcLRLKexPu/SEXg83CgZ79QBrY5WA G22V4taqdfC8
UAKjPfAcbNImef3nXTR7OtA7cjP3aWW4bb7BdhxtOgRPzw8pY0cxlDKUtiiI /WmLbvBXwo2C
wV49wNpYJeBGW6W4tWodTjhvqBkbJt6mrbj2/5Q3oT/RtvU3YaW5LOP/C0qq cGJgLNFSU3vd
wGGsy8vHnNp2xCW5M9y2MW81iiZMw8qm3ujtj6M9FEOpNaVsl8b+zHYPBN7f jYLBXj3A2lgl
4EZbpbi1ah0OOM/X04AlE+7Byuo/+L2tBz09GDXa5hvpRccpD1o+OInuweux W6wEYGk1mr1e
eL0f4cDmRUI4T8K8uk5dTPpG0Ov9AEeaPejoHYFPlTo2gK4P3keL9zyGBs7i tPeMds+xwfH/
Fxcb/+4c9wZHKk+71QWcbjmCg82fjNffqGNRtRdKboc9L7i1CbXNXN/v0dt+ Em0nuzE45m+1
qGN4xr5+D16r3oUDXcP6ORqPYQx+2QaP2Rsepj2ROopiKLYJ59IZ6enPmxi5 cArvvVWHV2rq
8HZzBwZM9mobPsFfUg63oM17NmBsZbqubhQMmWbM+6WGgBttleI2NbaTE6Xo 3sGHsLnhTzjY
dBQf9QghpYTtwAf4Vclkk1d3Fp5qPIsb0VqmBKDf++vDVc9WTJmge0rHRjrw +qpZAWWu3tOB
4WHz7yehaKq8r/Ra9qC/aa3x/9KDOWb8ewFqvEIYRyhvxCdEZd/72Gquf948 /PzQfrw8ddxL
XVR9CqPhznvv4rjoVu1NqG2n0a3VfwoWzC9GgebJzseMZb+Fd+gmfFEYmz23 +v/nY9rUKUYZ
t6Gg5GW0DrShJqA944I9XDelRwzlhKk7spKp78/r6Dv+Eh7MK8KDazaj+uXN WFcyA0WP7ECb
sNeEjiEPalbvgCfV12vj8Q4Ul67AyvInxc8KLJ59hxgXSXwlSrKubhQMCdkE L8o6ATfaKsVt
1s0uUxVQQtEUkpD3MLYevygk5HWca3hCCLG5eKH5Iq797SDW3y7OixWyoATg 1AV43PTAyZ++
Hvt6BtBRWyrKXIBN+z/Fua8/wM5lRcjPK8XPnisVom0KFm87iLbWQ6hZKn4f U9z2RyivHA09
Q+iqKxNlzMLG5m/hGz6F3etWYeWWZvT36aETuuf2WuTzxp2reock1LbHsPmX yzQxX7i0Bn9u
9aBp88OirXdgUX07vorCOFTcijKW7cSHnadxoHKuKHMmNjR/56+X2RNNz22m xlB275Nqcevr
O4Rnpz+AjYfP+79q4EYX9pQVYW7tGfyoNfc6BrvPwNvRi5HgMTI2iG7ji4uf jDZu1uJAv/87
if71JeHrjZK1cvWXXP9xtRVV9xSZQnmi1DVcO0LqGl//ulEwxEeIZ9uFgBtt leLWLtaX9nqM
YbC1ATU1v8exniu4cX4/Vsv423tr0SGdNGN9aHurBpvWPKF5RLSY3LjEre5J kdfp3pQeHCif
Jv5dhJKl5cLTUo7H50sRq8T1auzrlX7hG+htXG1B3HZFKG8G1omH80BzJWao mN/ZS/CzbW+j
rV+EVgR8xh+LfF4w/wBxa7Vtygst69SnlaiHgggmaw6Lz72RGYeK2ylY3viN DMwI9GYzLCHt
I8WuN0ituB1DX9M6FMysgfe6WbWKMIXeTpzuHsTY6BdoXDsXhbNLUV46B4Xz X8Ah8bVH+7oy
bzlWqi8l4oV1e+sgfDfbsfPefH2M5z2HI33foKXqMfFlZh4Wi7FfUPISWvp+ sH79gMl7HE7c
3voCexbO0sda2Lpe07sy3N/OfhxYV/O9LBqAGwWDRTQ8zWYE3GirFLc2M8L0 Vcfwaqg4NfUg
+kkV2q6PoLPuMeFhnInHN7+GA8fqsWFyHOLWL4KvoG2b8jKe1MXoxGWo2mvO qPDfsUwToU8I
j6uM640mbpWnVXpsDHEbUp7KMHAdA+1/Qt2WZ1GmRPbC3ej8xuy51T1RYc/7 McgtFRKWYKVt
TWj4r4+Me1nF3W5112OR9ORW7MdfozAOFbdqcRnFbfrGRG6VnFpxOwJv9YIo L7A/4kLjUygs
24PuG2Js+IbgrXkEhWsP4IwUtxPLsfvz78XL12Ux5hfgzsoWXJE4/d7Q6xhq 2Yy77/812oaF
SI37+qAFqVq507C4YhtqqqvFzz9hy5pFKC57Fd7haxHqKl4ofZHaIf6mfdUx e5njswc3Cob4
CPFsuxBwo61S3NrF+tJej0vwbJbCU4QJNHrgfa8aZXlCdK1uQp+v1/CKLsee 7ssYaN2h/S2/
fD86PTuwunwVnmvsDs02ECIAjQemFmLQZYQRFGN9/XF4Tx3HnrXF4v4l+C// RX6qV2EJB1FV
OsXw3J73x+zeXfEmPmlVf5PiVoUlBJe3VNS5Fy2Vc0QZwoPk6ceNkZN4pUR4 kW9/ES1f7NfC
EqZUvIUzvT2Rz7tyK7AHEmpbKSqff9wUlnAC+yqFgBA8VjQexzuaJzuYsZ6t Il5xq7fHtEAv
jP2kVgyl3UB5gxgEUtufV8X4FIs/I36d6cORNbNEOM0XUCNDs9Gp23CgUYhb 9cVHfVlQ5fjF
7SXtRbewtAIva2K0Gi9XlKLQ8vWxxO3L2LamBAXTN2oe4vB1rYZXfC2J+Lde ilsOOncQoLh1
Rz+7tJWhi64KijeiqUd+uruBvsMbxz/rz38US2dPQv49W7Hv989oYi1sjGeI AFRexjvwYO2n
uDbyGRrEZ019YZX8mYXoC8rEIrJrZ1BXNsM4fwZK5s/UBLm+oCx8eXJB2eiX e7G+2AinUPdq
6MKoELo1xudTuaBsJNJ5wVaRUNvUgjLzYjCxoGzVW+ge/TEC4+1ouyr6xpQK LDAtWJDnNqA9
XFDmpsH8Wcdn2riQD6rkj1u40vIi7pQvgAEvdrontrCiFr8tn4klDV8Ziy2N xaJKnPpFsWGf
IeJ2QLxM3487y6vxjj8PtviCc9SLjneEOI55fThxGxxz68GWyXOwqcUrXs7D 1VWKW/niHuFv
FLfJmxFLyAkCFLc50U2sZFIEZCqtjtMibVdwGh091i7090ndTVysytVTffkP ox6nu/txISBD
gjhD+1t7hHRkEcqTBWsLXGRKsqB7iTr8cHl4fNFMxPPibWtwXcxC9CttIY4W u+gvNlWMg9oT
odqp9fTFy4bnp4KA7MM333gDzzz9tD9ePTXiVtTu2inU3F+EspqPjPRfwj4/ /x2WT3wAL7Sc
R3f9UhSu2o8LMjWYT3hiqxbh7s3H8YUcrzHF6TUR07sehQ/tRpcMa8BVUd4K 3KnCGmJeb0Hc
jnlF9hD5lag7Ql1PYFgkOgzfDvG3FC0o27J5C65dM+J7U9HpLIMEUkyA4jbF QFkcCcQmEOSZ
jH2Bjc+wV1sobm1sKhGqdvHiRRw7dgzbq6pMiy8DN15JmbiVL55djdg435QC MG8u1jd8pmVG
0FPvzUHR/MfwpFxQZl4QFkmcDp/AlrvEojK5oOz854EL0oor0PjlZX1BmZXr Yy0ou9mJur+f
YnwlCldX/WU6fDvE38x1TWJBmfSmr161CrLveJCAHQlQ3NqxV1gnhxO4hZH2 P+KV6lrsa7+c
420V4RE9H4kcwqndRjdRKBS3iZLL3HXS4/fxxx/j1V2vYkmZTGcXtIOg6d+v 7tqVwrAEUxv9
X3NMm6WoP0f80hOF0dgQ+v9NfaUJWshqBW3A9VYuMM6JVtdIf0v0XuKWSjD8 fONGrV9mzZyJ
M2fOxFFhnkoCmSFAcZsZzrwLCZBABghQ3GYAchK3kII2WMxKj204z60UvqmN uU2i4rxUI2AW
DOr/UxcTTcgkkDoCFLepY8mSXElALIwa6MCxg00wb+srUfgG23HUvLBEbp8Z lNhdPyfFXs/g
bTub3kWzeTvbBPspLXVNsC6RLqO4TTHQFBcnxa2MpZUxtbKv5CE9uZXPP+/3 BN5XLDOM3KZ5
d9mfKe6AJIsLFgyyf6T3VvaX7EPG4SYJmJenjADFbcpQsiBXErh2GjsfMuL3 glIM6RkAgj+5
3oH71r6FzhE9WXtgloAgggOHsS5P39Y3ro1BVdaDoHsntW1nrLrapPMphmzS ERarIWM2H/nP
izVxJGM41QNJCiV5sD8tgszQaeEEw6VLl7S+k30o+5JxuBnqDN4mKgGKWxoI CVghIOPXvB/g
SNMRtHgvjG/LGZI+a7wwJW6nVDTgpMxo0Po+GioXaflul9R3iWRkwrvb78Fr 1btwoOuKvmWn
V8YAfo/e9lZ4PXvGt9FV8XN+z6/KQhAmZlDVqbQazVomhY9wYLPI7zlhEubV depCWbWn2YOO
4NyxMrNCmwce73kMDcg66ZkYxus6rDcyAhPfSC86tGuGMfhlGzwp8Bpb6SKK IauU7HGe9Myq
EAXp0ZUiSXltlUCiuLVHX6laRBIM0mOrQk6kJ1f2LQ8SyCYBitts0ue9c4PA aBcaVs0yxQqK
PK6rG9Ej0wpNNXlmI3huzfly1da0+Qvr0S0yxY97bnuMLWdnYGn5o/78u+rh X/Trvdi3WubC
lRs4jMo9brFvudwNrQJHBsKlEDLvtmbk65yge4HHtBXh5vbouXjHV4urv6mt dfWdwwK8zJGY
iBRI+nnmvLdye+KX0ToUl/85IdugGEoIW0YviiSE1MNIiiR1sD8z2jUxbxZL MAS/sMQskCeQ
QJoIxLLVNN02q8Vyh7Ks4s+1m4vNHmTuSuFtLas+jgv93WjetkR4X2fgqabz wpupb3Ubbtcj
5bkN2AxCy1Mpzp8qk62HE7dCCM5/FrUN78JzwuS5FZljBw5XiHrInb96xM6e zdgwUey2tlZu
txnEVNVp6gI8Xv4kVpavwGK5Pe/09djXM2DsoiZ2bdv/Kc59/QF2LisSaYzK xdbAw9qWnuM7
qR1CzVLxN233NbO4/ToqkxtGOEbhsp34sPM0DlSq7Ym/S3vnUwylHXFSN5Ae 2XCfsKXXVr7I
Sc+tOW6T/ZkU7pRfbEUwyD6ec6/+giz7mnG4Ke8GFmiBgBVbtVBMTp1CcZtT 3ZXtyn6H5gq5
YOIJIf70VD+3uuuxSEzc2t7y8YpbQ5RGFrdTsLzxG32HJKNsJY59IgZ3vRC0 Bav+iC+Oi52W
xO5nG5u/NXZTMnEKELeGsBX11WNue4xth4tQsrRcCN9yPD5fCtgZWHfYG9TW G+htXB1G3J6M
yuSSJm5VOzKbB5diKNvjJfL9ZcootfhIZkgwix61oExmTTAf7E979adVwWBe JCiFrlo8aK/W
sDZOJmDVVp3EgOLWSb2Z9rYocWuEA4j73eyqw7yExO1NDLVsxt3i2sKKZgyJ skLDEnQvqXYE
iVv4vkXzBuERmfgo1j19P/JDthE1YIQI7ivanvf5E2ZiQ/NJXdxOXIaqvWJr UH82B5mx4WtD
tKq2Xse5hieiiNvwTHRxq9pBcZt2E82BG8jsCCrEJpKAlam/gg/l0ZVimEf2 CcQrGKL1e/Zb
wxo4mUC8tuoEFhS3TujFjLVBhSVMxoOb96PV68G+ygXiQV0svKZ9lsISCksr 8HJ1NWq2PYfF
U+VORkuws/2K1gIr4nZKxVs4oy36uoUrLdJjq8f5ap7jcBxCxO0IvNWyzlJw dhlhCcVYX38c
3lPHsWetTL0kheqwEW4wCcVrdmBf4y5s0HZyihSWEJ5JYAYIituMmaoNbyQ9 eGob3UgePOnV
k+EIkbx70tbDCV8bNtfxVVIedvnSYfWQcbjKYy/jqRmmYJUcz0uGAMVtMvR4 rTsIjF1Ey5aH
RSyqWjwmRN2W99En95+3EJZgTlpfMLscNS0XRQStfkQVtyMnUVOipxnzx+1e acGm22U95mBT
y2B4/iF1UgLzDmPbzs/QsHauqT3jC8og21r1mJ7CLK8Yix+WsXNhFpRFYUJx 645hEauVUqym
IvZSbcvLT9uxiKf378qLnsiLhjnWmtv2prefWLpOgOKWlkAClgio1FunQ1Nn Wbo+0ZNu4ofL
w34xDN9XaCgTgvee7Wi7GrySLJ57qPboab4MqY3B9mNiUlCbSlxFV92jQtzO RVVrOB9xtphE
bidjNOOxgfSdK0MP1Eud/DSdzKH6VHqAeWSPgHrJSDTNl/TYqjK4bW/2+tEt d6a4dUtPs525
T0Db1EF6bcfz5Ka2UbcwcmoHHpT3yJuD0ofnaN7dgod2of1aMkI6tbWMVhrF beZYh7tTugSM
+hxuThOW3Za66+4qdjYVLxjcttddtpOt1lLcZos870sC8RIYace+mh2oa/Tg nLHDWbxFxD5f
eGN7RFxx3Q7UVO/EnqaP03iv2LWJ9wyK23iJpe784N3GUrlTlTl2VwrdeGI+ U9dC95Vkzkks
46JT1afcttd9tpTpFlPcZpo470cCJJA2AhS3aUMbteBMLBoyC1wZ8iC9uPK+ ss/5k1oGMm2b
5Kt2jJNxtqkStsqQuG1vdsaqW+5KceuWnmY7ScAFBChuM9/JattVKTiD03yl ozbyoaVEl3mx
Jv/ftFuif/Frcr+TnCXvdGU44La96RghLFMSoLilHZAACTiGAMVt5roy2543 2dfjeZrNOZvt
9//mmOFcqbP03mbq4La9mSLtnvtQ3Lqnr9lSEnA8AYrbzHSxebcxKdzS5dnL TGvSfxc3Pmjj
pSrDHopnz+G2vfGC4/lhCbhxzHETBw4GEnAoAYrb9HcsV7vHz9iND9r4KUF7 SVJebm7bmwhB
XqMIuHHMUdzS/knAoQQobtPXsWbhwTyl8XF244M2PkKBZ3Pb3mTo8VpJwI1j juKWtk8CDiVA
cZuejg1O88VUXPFxduODNj5CoWebQ1+4bW+yNN13vRvHHMWt++ycLXYJAYrb 1He0ebcxbqKQ
GF83PmgTIxV4FbftTQVFd5bhxjFHcetOW2erXUCA4jZ1ncw0Talj6cYHbaro pWvXu1TVj+XY
k4AbxxzFrT1tkbUigaQJUNwmjVArgB6z1HBUpbjxQZtagtByKKtcxjImlwcJ RCPgxjFHccsx
QQIOJUBxm3zHmncb215VxTRfySN15eKWFGALKYLb9qaDqjPLpLh1Zr+yVSTg SgIUt8l1O1ep
J8cv0tVufNCmhySQ7c1D0tUulptaAm4cc/TcptaGWBoJ2IYAxW1iXSHjGlev WqV99mV+0cQY
8hNp6rlFK9G87bP82sCDBMwEKG5pDyRAAo4hQHEbf1dKZlLQSmHL3cbi52fl Cjc+aK1wSfYc
btubLEHnXu/GMUfPrXPtmS1zOQGK2/gMwLzbGBfpxMcunrPd+KCNh08y5zIH czL0nHutG8cc
xa1z7ZktczkBiltrBsD0StY4peosNz5oU8XOSjncttcKJXed48YxR3HrLhtn a11EgOI2dmcH
e7rkv3mkl4AbH7TpJRq+dC6IzAZ1e97TjWOO4taetshakUDSBChuoyM0p/ni lqZJm5vlAtz4
oLUMJ8UnmrftZSq7FMPNoeLcOOYobnPIQFlVEoiHAMVteFrm3cbkwjGuLo/H qpI/140P2uSp
JV4CNyFJnJ1TrnTjmKO4dYr1sh3JEfjkE6ClJfQnuVKzejXFbSh+5gXNqklq N3fjgzbb1BlX
nu0eyO793TjmKG6za3O8ux0IrFgB/J0YCuF+Xn3VDjVMqA4Ut4HY+Ik2ITNK +UVufNCmHGKC
BXLb3gTB5fhlbhxzFLc5brSsfhIEzp0DnnpKF7W33Qb88pfjP4sW6b+Xv8vR g+J2vOPMi2vk
RM8jewTc+KDNHu3QOzOXs516IzN1ceOYo7jNjG3xLnYj8Oyz457af//v9XAE 81FfT3Frtz5L
oD7mtEizZs6EfLDzyC4BNz5os0s89O4Mz7Fbj6S3Pm4ccxS36bUplm5HAkrY /of/ANTUANKD
G3y89BLFrR37Lo46yYU0arcxuZ2ufKDzyD4BNz5os089fA24ba9deya19XLj mKO4Ta0NsTS7
E5g/Xxet/8f/AXz6aeTaynAEhiXYvTcj1o+xhfbtOjc+aO3bG9CyhcisIfJH il0eziPgxjFH
ces8O2aLIhE4elQXrNJjK8MOZCiCzJIQ7lDiVnpwc/RwY8xt8Kpwpvmyn/G6 8UFrv14IrBG3
7bV7DyVXPzeOOYrb5GyGV+cSgf5+XdgGZ0UIlxFBLTR7++1camFAXd0mbpnP MzdM1Y0P2lzo
Gcan50IvJVZHN445itvEbIVX5SoBGYoghet/+k/6j8yK8K//GtoaFb4QLXTB 5gzcJG7Nu41x
JyZ7G6YbH7T27pHA2nHb3lzqLWt1deOYo7i1Zhs8y00ERkd1D6/MonD5cs62 3C3ilg/j3DJR
Nz5oc6uHAOaEzrUei15fN445iltn2TBbkwoCMg+qDF2Q3tscPpwubs3pjGRW BBmWwMP+BNz4
oLV/r4TWkGE+udhr4evsxjFHcesc+2VLUkFAem1lJgUpbnM4JEGicLK4lW2T eWvlCu/K55+H
jBfkkRsE3PigzY2eCa2lHFcqXZgcb9KjyyP3CLhxzFHc5p6dssbpJKAWksn/ 5vjhVHGrJmop
bGVIAo/cIuDGB21u9VBobZlaL7d70I1jjuI2t22WtU8VAemllQvMVA5cmVkh xw+nidvgNF/0
IuWmgbrxQZubPRVYa27bm7u96MYxR3Gbu/bKmqeKgDkU4bbbcj4cQWFxkrhl Hs5UGXv2y3Hj
gzb71FNTA/mCKXf7k19NimfPYZx7arCmvRQ3jjmK27SbFW9gewJqcwfpuXXQ YVncSq+13NAi
3DbENuARvIMS42tt0ClJVMGND9okcNnyUm7ba8tuiVgpN445itvcslHWNh0E 5CYOOb7Vbjgs
lsStFLXmTS1k+jMp8p99FpC7tMkfKf7lecE/6egLU5nBi1m421iagWeoeDc+ aDOENqO3MeeW
lmKXL50ZxR/Xzdw45ihu4zIRnuxIAitW6AJPbsnroEOJ23cbG3VhWlOji1Yp XlVGiODd2uL5
9y9+kTZa5jREj/znxfz8mTbSmS/YjQ/azFPOzB0ZLpQZzsnexY1jjuI2Wavh 9blNQIo9Kejk
pg0OWESmdYZsh9g2+PtHH0XXv/t3odsNKwEr44vVTm1W/nvPPYFlyWukV1fG LKfwYAL5FMK0
YVFufNDasBtSViVu25sylGkryI1jjuI2bebEgm1PQG67q4Rtjue09YvaJUtC xOzV//1/B6R3
WoUYfPJJ4l0jOcl7yPAFJZLli4HcxjgFnm/zbmNyQubhPAJufNA6rxdDW2RO 0cexa68ed+OY
o7i1lw2yNpkkIMWYFGhp/LyesebItkiRqcS6yNPbt2sX7vn//J9Iy4NGbkss 7yl3cTOHMkyd
Oi6i42i82fsjdxuTIRU8nEnAjQ9aZ/ZkaKv41cWePe3GMUdxa09bZK0yQUCJ W+nRzNVDhB9A
CkolMKVQN8IELC0oS1W7ZUxvcNiCrJeFUA9z/kyZZogLU1LVKfYsx40PWnv2 RHpqxW1708M1
mVLdOOYobpOxGF6b2wRy2XMrRa2MmVWiVsa/BoUbZFTcKkuQYQsy+4TaEEOG L8iXB+npDXNw
56PcHkKJ1N6ND9pEOOXyNcx0Yq/ec+OYo7i1lw2yNpkkoMStjEfNpUPVWwpb GRYgvaZhjqyI
W1UP6T2Wi/VUbK4MmTDVM3i3Mab5yiUDTK6ubnzQJkcsd6/my6s9+s6NY47i 1h62x1pkg4DK
8SoXQ+XSoeJcpfc2ypFVcavqJTeGUKnWZPox4cHlZ8tcMrbU19WND9rUU8yd Erltb/b7yo1j
juI2+3bHGmSLgNp2V3oXLcSGZquaIfdV4QgRPvWr820hblVljCwO1yZMwNJp 07TtO5n43TYW
ldGKuPFBm1HANrwZt+3Nbqe4ccxR3GbX5nj3bBN46aXcypggvbUyHEEu3opx 2ErciheJvxUU
aHXv/Z/+J/x1795Y1effHUrAjQ9ah3Zl3M3itr1xI0vJBW4ccxS3KTEdFpKz BJRYFKmzbH9I
T7NK9xUhztbcBruI20uXLkFmQbjjP07AX/63/00X57nA2/YGkZsVdOODNjd7 Kj215ra96eEa
rVQ3jjmK28zbGe9oJwJSMErvrYwNtfshMxGoRWQW6moHcSvrMGvmTC0MofL5 5zEqOcswEPmT
4p3NLCDhKTYg4MYHrQ2w26oK3LY3s93hxjFHcZtZG+PdSCBxAsrLbHHTiWyL 24g7FskFfFKk
W/A+Jw6LV9qVgBsftHbti2zWi9v2Zo6+G8ccxW3m7It3IoHkCMS56US2xG3w Q0vuWhRwSHEu
xW2MbA/JweLVdiXgxgetXfvCDvXitr3p7wU3jjmK2/TbFe9AAqkhkAPi1tLn RtUOGQ7Cw3UE
3PigdV0nx9lgbtsbJ7A4T3fjmKO4jdNIeDoJZI2AzcWtOWG7XBUd8VCxw7mW XzhrHe+sG7vx
QeusHkxPa5j/Oj1cZaluHHMUt+mzJ5acawTk9rV2XuSkxK3c+cvCkamwhLi3 2pSM5YIyma+X
h+sIuPFB67pOTrDBcc8lCd7HbZe5ccxR3LrNytne8ASksJVxoHIXLelZtOOh FpRZ3C44E+LW
7G155D8v1nYfs3RMnarzjrERhaWyeFJOEXDjgzanOsgGleW2vantBDeOOYrb 1NoQS8tFAlLM
Hj0KFBbaOwer2i7YJuI2qTg5Y8cyyJcKHq4i4MYHras6OEWN5ba9KQIpinHj mKO4TZ39sKRc
JKAEo/Qiqh+7bjCg6vqf/pMl0un03L75xhta7lr5I70scR8qY8KrUWJz4y6U F+QCATc+aHOh
X+xYR/O2vXPunWX9y5AdG5PFOrlxzFHcZtHgeGsbEFCbOPzyl4D6+dd/tUHF wlRB1svi1rvy
6nSI2+CHjbxHQocUtbItFuOHE7oHL7IlATc+aG3ZETlUKfPLtNzhjEd8BNw4 5ihu47MRnk0C
2SMghbgUhBYXYqVa3Jo/Ez7z9NOQQjfho6lJb4vFEIuE78MLbUfAjQ9a23VC DlaI2/Ym3mlu
HHMUt4nbC68kgcwT+A//QReFFo5UituUL/BQIRZMB2ahJ511ihsftM7qwey1 xlIe7exVz7Z3
duOYs/aUtG2XsWIk4DICKstAf3/MhqdC3Erv7PaqKi22dtbMmQjZbSxmLSKc oEIsLMYPJ3ob
Xmc/Am580NqvF3K3Rmmbk3IXScyau3HMUdzGNAueQAI2IhBHloFkxW2wl8Ry mi8ruM6d0z3Q
FLdWaDnqHDc+aB3VgTZpDLfttd4RbhxzFLfW7YNnkkD2Ccgta6UotJBlIBlx m/b4NpVXmOI2
+zaV4Rq48UGbYcSuuV1S6QhdQ4mpwFzU1WwqCeQoAbUQy0KWgUTFrdw6N6k0 X1bQMubWCiVH
nkNx68huzVqjLl26hNWrVmlzVlwbyWStxpm/sRvHHD23mbcz3pEEEiegYlXn z49ZRrziNqMP
CblpBrMlxOxDJ57gxgetE/vRTm3itr3Re8ONY47i1k4jlHUhASsELKYDi0fc mj/vVT7/fHJp
vqy0QeYUlu2oqbFyNs9xEAE3Pmgd1H22bkrKs7rYurXWK+fGMUdxa90+eCYJ 2IPAPffowjDG
1rVWxW1WFmaoNth1wwx79LQja+HGB60jO9KmjZILX+VuZjJMIel83DZtY7zV cuOYo7iN10p4
PgmYCMiJVE4c0tuZqZ/37rtPE7c9EybgldWrI973maef0Sb4JWU/jXjOz557 DrcX/F+44/8q
FA+CZzLShq3inrL+Q//r/2rpfpKvDJngEZ6AZJNpG0zG1qU96sIjM/aWTF3V tZJvSrOF5Kgx
yy88crewVDBNZxk/37gRM8ULtLSz/6+Y29avW2f7OkseMu2i9D6ner6juM3R Acdqk0CmCcgH
nZyM1MKrTP532v/5H9H17/6d7r0VPw3/y/+CO/7jhKzUJZF2b/x//b+1eu// n//nuOosF7ql
etLPtN2k8n6ShcpBnEg/8Jrb4rI/yUuOeTeKXClql5SVxc2LNha/jSlm8iUi qV0gTZMNxW0q
Z16WRQIOJSDTZKkJSD7s5L9TNQlZRia34pVxq2rHMrnATP4uFw5ZVynM3347 Zm2lgJN81YP1
vuJiV4qLYFBSYEkWume+TGNE4R/TnBI6QY5tydf8Miv/7ZZDiiw138kXTCl0 Mz7fuQS2+hKo
xrYMq0jFuKa4dYkBsZkkkCgBObGnPU1WPJWTO5WpXctyQeDK+kphK0V5nGJc PWTdLnDNwlY+
tHhkjoB5wVLKduvLXPXjvpMSRXLMyRh+HpkhYN6FLRVxwxS3mek33oUEcpKA nHDUG7WtHmyX
L48L3NtuA37xC0te0ax0gvLaWsjTG65+SlzICd+th2y7fMGSLHhknoD6ciPn Aid7MNWCVLe/
TGbewsbvqHKOy/8mc1DcJkOP15KAwwkoz6EtvWVS4Mrdvow4XO2/MiOB/L1d DpX+SwrwOL22
5iaoz8Nu+jSs2q+ElYy15ZE9Akos2HIuSBEWNc5s9SKforblSjHy5UmFZCUT 601xmys9znqS
QBYISA+G7b01587pXlsVqiD/m4SQTBlmJWxlOMKnnyZVrJzkpefSjQJPeW1T EYeXVCe4/GL1
FUfOB048pH2pVFpObF8utUm90ErnSqIHxW2i5HgdCTicgBJUyX4eyhgmc6iC 9OL++38PLFqU
nXAFGSah4myTFLaKn/JmZIynTW5EwWGTjhDVUJkqkvGo2ac1gTVRgsrJnmm7 sg+ul3yRSnbc
U9zmSm+zniSQYQJWN0TIcLWi304K3CVLgMLCwHAFGRbwqojhammJuRFEQu2R i8Zk2dJbq+6d
Ao+tuS5KWLjJg5lzL1gJGU/uXORkweDktuWOhY3XVH2xSbTubuxPbuKQqLXw OlcRyElxG9xD
ckcz6b01x+Wq/5eCVy72koL06FFdnEYLZ5DCWZ4jQyDkNStW6DG/0kMcXL4U uCny2KomuXGy
doQNOmjWcLINOrltuWiCKv450bq7sT8pbhO1Fl7nKgKOEhZSaEpBKn+kIFXx ueFEb7y/k+JW
lvnUU7p3OMYWwYkakRsna0fZYKIdb6PrnGyDTm6bjUzIclUobi2j8p9IcRs/ M17hQgKuEBZS
9EpBKkMZpEANDmcwC10piOU5UiDX1OheXBmOkKHDjQ9fV9hghuwnFbdxsg06 uW2p6PtMl0Fx
Gz9xitv4mfEKFxKgsLBXp7vx4UsbpA1mioAbx1em2CZyH4rb+KlR3MbPjFe4 kACFhb063Y0P
X9ogbTBTBNw4vjLFNpH7UNzGT43iNn5mvMKFBCgs7NXpbnz40gZpg5ki4Mbx lSm2idyH4jZ+
ahS38TPjFS4kYEthMdoD
Re: draw2d interaction sequence [message #644389 is a reply to message #643362] Fri, 10 December 2010 19:27 Go to previous messageGo to next message
Alexander Nyssen is currently offline Alexander NyssenFriend
Messages: 244
Registered: July 2009
Location: Lünen
Senior Member
Hi Carlo,

I don't have the book at hand (and I cannot use the attached image), but in short:

a) with repaint() a figure can query that it needs to repaint inside its bounds. What happens is that the figure notifies the update manager that the figure's bounds should be regarded as a dirty region. The update manager then schedules a paint() on the figure.

b) invalidate(), revalidate() and validate() all refer to layouting (with revalidate() a figure can query that it needs to get re-layouted, i.e. obtain new bounds) and will - as a side effect - also issue a repaint.

I think you should take a look into the Programmer's Guide of the GEF and Draw2d Plug-in Developer Guide, which can be found e.g. under http://help.eclipse.org/helios/index.jsp. The Draw2d sections about Painting and Layout may help to clarify your questions.
Re: draw2d interaction sequence [message #644469 is a reply to message #644389] Sat, 11 December 2010 18:20 Go to previous message
Carlo Salinari is currently offline Carlo SalinariFriend
Messages: 66
Registered: October 2010
Member
This is a multi-part message in MIME format.
--------------060305030603080608080807
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 12/10/2010 8:27 PM, Alexander Nyßen wrote:
> Hi Carlo,
>
> I don't have the book at hand (and I cannot use the attached image), but in short:
>
> a) with repaint() a figure can query that it needs to repaint inside its bounds. What happens is that the figure notifies the update manager that the figure's bounds should be regarded as a dirty region. The update manager then schedules a paint() on the figure.
>
> b) invalidate(), revalidate() and validate() all refer to layouting (with revalidate() a figure can query that it needs to get re-layouted, i.e. obtain new bounds) and will - as a side effect - also issue a repaint.
>
> I think you should take a look into the Programmer's Guide of the GEF and Draw2d Plug-in Developer Guide, which can be found e.g. under http://help.eclipse.org/helios/index.jsp The Draw2d sections about Painting and Layout may help to clarify your questions.
>

I've instrumented a small code snippet to show the methods called during
the interaction.

This is obtained by substituting the Figure and ContentRoot instances
with proxyes that trace every method call.

The result is interesting (see attachment) but unfortunately the program
halts in ClickableEventHandler.focusGained

public void focusGained(FocusEvent fe) {
Clickable clickable = (Clickable) fe.gainer;
clickable.repaint();
}

because of the cast to Clickable (a proxy can't be cast to a class).

Now, to my understanding, the cast here is useless since fe.gainer
already is an IFigure, so the method should read:

public void focusGained(FocusEvent fe) {
fe.gainer.repaint();
}

without forcing a concrete type on fe.gainer (and allowing tracing).

Do you think this is worth an entry in bugzilla?

--------------060305030603080608080807
Content-Type: text/plain;
name="result.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="result.txt"

ZmlndXJlLmdldFBhcmVudCguLi4pIGNhbGxlZA0KZmlndXJlLmdldFBhcmVu dCByZXR1cm5z
DQpmaWd1cmUuc2V0UGFyZW50KC4uLikgY2FsbGVkDQpmaWd1cmUuc2V0UGFy ZW50IHJldHVy
bnMNCmZpZ3VyZS5yZXBhaW50KC4uLikgY2FsbGVkDQpmaWd1cmUucmVwYWlu dCByZXR1cm5z
DQpjb250ZW50Um9vdC5nZXRQYXJlbnQoLi4uKSBjYWxsZWQNCmNvbnRlbnRS b290LmdldFBh
cmVudCByZXR1cm5zDQpjb250ZW50Um9vdC5zZXRQYXJlbnQoLi4uKSBjYWxs ZWQNCmNvbnRl
bnRSb290LnNldFBhcmVudCByZXR1cm5zDQpjb250ZW50Um9vdC5hZGROb3Rp ZnkoLi4uKSBj
YWxsZWQNCmZpZ3VyZS5hZGROb3RpZnkoLi4uKSBjYWxsZWQNCmZpZ3VyZS5h ZGROb3RpZnkg
cmV0dXJucw0KY29udGVudFJvb3QuYWRkTm90aWZ5IHJldHVybnMNCmNvbnRl bnRSb290LnJl
cGFpbnQoLi4uKSBjYWxsZWQNCmNvbnRlbnRSb290LnJlcGFpbnQgcmV0dXJu cw0KY29udGVu
dFJvb3Quc2V0Qm91bmRzKC4uLikgY2FsbGVkDQpjb250ZW50Um9vdC5zZXRC b3VuZHMgcmV0
dXJucw0KY29udGVudFJvb3QudmFsaWRhdGUoLi4uKSBjYWxsZWQNCmZpZ3Vy ZS5nZXRQcmVm
ZXJyZWRTaXplKC4uLikgY2FsbGVkDQpmaWd1cmUuZ2V0UHJlZmVycmVkU2l6 ZSByZXR1cm5z
DQpmaWd1cmUuc2V0Qm91bmRzKC4uLikgY2FsbGVkDQpmaWd1cmUuc2V0Qm91 bmRzIHJldHVy
bnMNCmZpZ3VyZS52YWxpZGF0ZSguLi4pIGNhbGxlZA0KZmlndXJlLnZhbGlk YXRlIHJldHVy
bnMNCmNvbnRlbnRSb290LnZhbGlkYXRlIHJldHVybnMNCmNvbnRlbnRSb290 LmlzVmlzaWJs
ZSguLi4pIGNhbGxlZA0KY29udGVudFJvb3QuaXNWaXNpYmxlIHJldHVybnMN CmNvbnRlbnRS
b290LmdldEJvdW5kcyguLi4pIGNhbGxlZA0KY29udGVudFJvb3QuZ2V0Qm91 bmRzIHJldHVy
bnMNCmNvbnRlbnRSb290LnBhaW50KC4uLikgY2FsbGVkDQpmaWd1cmUuaXNW aXNpYmxlKC4u
LikgY2FsbGVkDQpmaWd1cmUuaXNWaXNpYmxlIHJldHVybnMNCmZpZ3VyZS5n ZXRCb3VuZHMo
Li4uKSBjYWxsZWQNCmZpZ3VyZS5nZXRCb3VuZHMgcmV0dXJucw0KZmlndXJl LnBhaW50KC4u
LikgY2FsbGVkDQpmaWd1cmUucGFpbnQgcmV0dXJucw0KY29udGVudFJvb3Qu cGFpbnQgcmV0
dXJucw0KY29udGVudFJvb3QuaXNWaXNpYmxlKC4uLikgY2FsbGVkDQpjb250 ZW50Um9vdC5p
c1Zpc2libGUgcmV0dXJucw0KY29udGVudFJvb3QuZ2V0Qm91bmRzKC4uLikg Y2FsbGVkDQpj
b250ZW50Um9vdC5nZXRCb3VuZHMgcmV0dXJucw0KY29udGVudFJvb3QucGFp bnQoLi4uKSBj
YWxsZWQNCmZpZ3VyZS5pc1Zpc2libGUoLi4uKSBjYWxsZWQNCmZpZ3VyZS5p c1Zpc2libGUg
cmV0dXJucw0KZmlndXJlLmdldEJvdW5kcyguLi4pIGNhbGxlZA0KZmlndXJl LmdldEJvdW5k
cyByZXR1cm5zDQpmaWd1cmUucGFpbnQoLi4uKSBjYWxsZWQNCmZpZ3VyZS5w YWludCByZXR1
cm5zDQpjb250ZW50Um9vdC5wYWludCByZXR1cm5zDQpjb250ZW50Um9vdC5p c0ZvY3VzVHJh
dmVyc2FibGUoLi4uKSBjYWxsZWQNCmNvbnRlbnRSb290LmlzRm9jdXNUcmF2 ZXJzYWJsZSBy
ZXR1cm5zDQpjb250ZW50Um9vdC5nZXRQYXJlbnQoLi4uKSBjYWxsZWQNCmNv bnRlbnRSb290
LmdldFBhcmVudCByZXR1cm5zDQpjb250ZW50Um9vdC5lcXVhbHMoLi4uKSBj YWxsZWQNCmNv
bnRlbnRSb290LmVxdWFscyByZXR1cm5zDQpjb250ZW50Um9vdC5nZXRQYXJl bnQoLi4uKSBj
YWxsZWQNCmNvbnRlbnRSb290LmdldFBhcmVudCByZXR1cm5zDQpjb250ZW50 Um9vdC5nZXRD
aGlsZHJlbiguLi4pIGNhbGxlZA0KY29udGVudFJvb3QuZ2V0Q2hpbGRyZW4g cmV0dXJucw0K
Y29udGVudFJvb3QuZ2V0Q2hpbGRyZW4oLi4uKSBjYWxsZWQNCmNvbnRlbnRS b290LmdldENo
aWxkcmVuIHJldHVybnMNCmZpZ3VyZS5pc0ZvY3VzVHJhdmVyc2FibGUoLi4u KSBjYWxsZWQN
CmZpZ3VyZS5pc0ZvY3VzVHJhdmVyc2FibGUgcmV0dXJucw0KZmlndXJlLmlz U2hvd2luZygu
Li4pIGNhbGxlZA0KZmlndXJlLmlzU2hvd2luZyByZXR1cm5zDQpmaWd1cmUu aGFuZGxlRm9j
dXNHYWluZWQoLi4uKSBjYWxsZWQNCmZpZ3VyZS5oYW5kbGVGb2N1c0dhaW5l ZCB0aHJvd3Mg
amF2YS5sYW5nLkNsYXNzQ2FzdEV4Y2VwdGlvbjogJFByb3h5MCBjYW5ub3Qg YmUgY2FzdCB0
byBvcmcuZWNsaXBzZS5kcmF3MmQuQ2xpY2thYmxlDQpFeGNlcHRpb24gaW4g dGhyZWFkICJt
YWluIiBqYXZhLmxhbmcuQ2xhc3NDYXN0RXhjZXB0aW9uOiAkUHJveHkwIGNh bm5vdCBiZSBj
YXN0IHRvIG9yZy5lY2xpcHNlLmRyYXcyZC5DbGlja2FibGUNCglhdCBvcmcu ZWNsaXBzZS5k
cmF3MmQuQ2xpY2thYmxlRXZlbnRIYW5kbGVyLmZvY3VzR2FpbmVkKENsaWNr YWJsZUV2ZW50
SGFuZGxlci5qYXZhOjI3KQ0KCWF0IG9yZy5lY2xpcHNlLmRyYXcyZC5GaWd1 cmUuaGFuZGxl
Rm9jdXNHYWluZWQoRmlndXJlLmphdmE6ODQ1KQ0KCWF0IHN1bi5yZWZsZWN0 Lk5hdGl2ZU1l
dGhvZEFjY2Vzc29ySW1wbC5pbnZva2UwKE5hdGl2ZSBNZXRob2QpDQoJYXQg c3VuLnJlZmxl
Y3QuTmF0aXZlTWV0aG9kQWNjZXNzb3JJbXBsLmludm9rZShOYXRpdmVNZXRo b2RBY2Nlc3Nv
ckltcGwuamF2YTozOSkNCglhdCBzdW4ucmVmbGVjdC5EZWxlZ2F0aW5nTWV0 aG9kQWNjZXNz
b3JJbXBsLmludm9rZShEZWxlZ2F0aW5nTWV0aG9kQWNjZXNzb3JJbXBsLmph dmE6MjUpDQoJ
YXQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kLmludm9rZShNZXRob2QuamF2 YTo1OTcpDQoJ
YXQgc25pcHBldHMuVHJhY2luZy5pbnZva2UoVHJhY2luZy5qYXZhOjc2KQ0K CWF0ICRQcm94
eTAuaGFuZGxlRm9jdXNHYWluZWQoVW5rbm93biBTb3VyY2UpDQoJYXQgb3Jn LmVjbGlwc2Uu
ZHJhdzJkLlNXVEV2ZW50RGlzcGF0Y2hlci5zZXRGb2N1cyhTV1RFdmVudERp c3BhdGNoZXIu
amF2YTo1MTMpDQoJYXQgb3JnLmVjbGlwc2UuZHJhdzJkLlNXVEV2ZW50RGlz cGF0Y2hlci5k
aXNwYXRjaEZvY3VzR2FpbmVkKFNXVEV2ZW50RGlzcGF0Y2hlci5qYXZhOjEz MykNCglhdCBv
cmcuZWNsaXBzZS5kcmF3MmQuTGlnaHR3ZWlnaHRTeXN0ZW0kRXZlbnRIYW5k bGVyLmZvY3Vz
R2FpbmVkKExpZ2h0d2VpZ2h0U3lzdGVtLmphdmE6MzU3KQ0KCWF0IG9yZy5l Y2xpcHNlLnN3
dC53aWRnZXRzLlR5cGVkTGlzdGVuZXIuaGFuZGxlRXZlbnQoVHlwZWRMaXN0 ZW5lci5qYXZh
OjEzOSkNCglhdCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5FdmVudFRhYmxl LnNlbmRFdmVu
dChFdmVudFRhYmxlLmphdmE6ODQpDQoJYXQgb3JnLmVjbGlwc2Uuc3d0Lndp ZGdldHMuV2lk
Z2V0LnNlbmRFdmVudChXaWRnZXQuamF2YToxMDUzKQ0KCWF0IG9yZy5lY2xp cHNlLnN3dC53
aWRnZXRzLldpZGdldC5zZW5kRXZlbnQoV2lkZ2V0LmphdmE6MTA3NykNCglh dCBvcmcuZWNs
aXBzZS5zd3Qud2lkZ2V0cy5XaWRnZXQuc2VuZEV2ZW50KFdpZGdldC5qYXZh OjEwNTgpDQoJ
YXQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbC5zZW5kRm9jdXNF dmVudChDb250
cm9sLmphdmE6MjYxOCkNCglhdCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5X aWRnZXQud21T
ZXRGb2N1cyhXaWRnZXQuamF2YToyNDAyKQ0KCWF0IG9yZy5lY2xpcHNlLnN3 dC53aWRnZXRz
LkNvbnRyb2wuV01fU0VURk9DVVMoQ29udHJvbC5qYXZhOjQ3OTIpDQoJYXQg b3JnLmVjbGlw
c2Uuc3d0LndpZGdldHMuQ2FudmFzLldNX1NFVEZPQ1VTKENhbnZhcy5qYXZh OjQ0OCkNCglh
dCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sLndpbmRvd1Byb2Mo Q29udHJvbC5q
YXZhOjQyMjkpDQoJYXQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ2FudmFz LndpbmRvd1By
b2MoQ2FudmFzLmphdmE6MzQxKQ0KCWF0IG9yZy5lY2xpcHNlLnN3dC53aWRn ZXRzLkRpc3Bs
YXkud2luZG93UHJvYyhEaXNwbGF5LmphdmE6NDg3MykNCglhdCBvcmcuZWNs aXBzZS5zd3Qu
aW50ZXJuYWwud2luMzIuT1MuU2V0Rm9jdXMoTmF0aXZlIE1ldGhvZCkNCglh dCBvcmcuZWNs
aXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sLmZvcmNlRm9jdXMoQ29udHJvbC5q YXZhOjk5NSkN
CglhdCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sLnNldFRhYkl0 ZW1Gb2N1cyhD
b250cm9sLmphdmE6MzMyMCkNCglhdCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0 cy5Db21wb3Np
dGUuc2V0VGFiR3JvdXBGb2N1cyhDb21wb3NpdGUuamF2YToxMTU3KQ0KCWF0 IG9yZy5lY2xp
cHNlLnN3dC53aWRnZXRzLkNvbnRyb2wudHJhdmVyc2VHcm91cChDb250cm9s LmphdmE6Mzkz
NikNCglhdCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbC5vcGVuKFNo ZWxsLmphdmE6
MTIyNSkNCglhdCBzbmlwcGV0cy5TbmlwcGV0MS5tYWluKFNuaXBwZXQxLmph dmE6MzQp
--------------060305030603080608080807
Content-Type: text/plain;
name="Snippet1.java"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Snippet1.java"

cGFja2FnZSBzbmlwcGV0czsNCg0KaW1wb3J0IG9yZy5lY2xpcHNlLmRyYXcy ZC5CdXR0b247
DQppbXBvcnQgb3JnLmVjbGlwc2UuZHJhdzJkLkZpZ3VyZTsNCmltcG9ydCBv cmcuZWNsaXBz
ZS5kcmF3MmQuRmxvd0xheW91dDsNCmltcG9ydCBvcmcuZWNsaXBzZS5kcmF3 MmQuSUZpZ3Vy
ZTsNCmltcG9ydCBvcmcuZWNsaXBzZS5kcmF3MmQuTGlnaHR3ZWlnaHRTeXN0 ZW07DQppbXBv
cnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsNCmltcG9ydCBvcmcuZWNsaXBzZS5z d3QubGF5b3V0
LkZpbGxMYXlvdXQ7DQppbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMu Q2FudmFzOw0K
aW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7DQppbXBv cnQgb3JnLmVj
bGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7DQoNCnB1YmxpYyBjbGFzcyBTbmlw cGV0MSBleHRl
bmRzIFNoZWxsIHsNCg0KCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmlu ZyBhcmdzW10p
IHsNCgkJRGlzcGxheSBkID0gbmV3IERpc3BsYXkoKTsNCgkJU2hlbGwgc2hl bGwgPSBuZXcg
U2hlbGwoZCk7DQoJCXNoZWxsLnNldExheW91dChuZXcgRmlsbExheW91dCgp KTsNCg0KCQlD
YW52YXMgY2FudmFzID0gbmV3IENhbnZhcyhzaGVsbCwgU1dULk5PTkUpOw0K CQlMaWdodHdl
aWdodFN5c3RlbSBsd3MgPSBuZXcgTGlnaHR3ZWlnaHRTeXN0ZW0oY2FudmFz KTsNCg0KCQlJ
RmlndXJlIGNvbnRlbnRSb290ID0gbmV3IEZpZ3VyZSgpOw0KCQljb250ZW50 Um9vdC5zZXRM
YXlvdXRNYW5hZ2VyKG5ldyBGbG93TGF5b3V0KCkpOw0KDQoJCUlGaWd1cmUg ZmlndXJlID0g
bmV3IEJ1dHRvbigiY2xpY2sgbWUiKTsNCg0KCQljb250ZW50Um9vdC5hZGQo KElGaWd1cmUp
IFRyYWNpbmcudHJhY2UoImZpZ3VyZSIsIGZpZ3VyZSkpOw0KDQoJCWx3cy5z ZXRDb250ZW50
cygoSUZpZ3VyZSkgVHJhY2luZy50cmFjZSgiY29udGVudFJvb3QiLCBjb250 ZW50Um9vdCkp
Ow0KDQoJCXNoZWxsLnNldFRleHQoImRyYXcyZCIpOw0KCQlzaGVsbC5vcGVu KCk7DQoNCgkJ
d2hpbGUgKCFzaGVsbC5pc0Rpc3Bvc2VkKCkpDQoJCQl3aGlsZSAoIWQucmVh ZEFuZERpc3Bh
dGNoKCkpDQoJCQkJZC5zbGVlcCgpOw0KCX0NCn0=
--------------060305030603080608080807
Content-Type: text/plain;
name="Tracing.java"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Tracing.java"

cGFja2FnZSBzbmlwcGV0czsNCg0KaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0 ZXI7DQppbXBv
cnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvbkhhbmRsZXI7DQppbXBv cnQgamF2YS5s
YW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsNCmltcG9y dCBqYXZhLmxh
bmcucmVmbGVjdC5NZXRob2Q7DQppbXBvcnQgamF2YS5sYW5nLnJlZmxlY3Qu UHJveHk7DQpp
bXBvcnQgamF2YS51dGlsLkFycmF5czsNCmltcG9ydCBqYXZhLnV0aWwuQ29s bGVjdGlvbnM7
DQppbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7DQppbXBvcnQgamF2YS51dGls LlNldDsNCg0K
cHVibGljIGNsYXNzIFRyYWNpbmcgaW1wbGVtZW50cyBJbnZvY2F0aW9uSGFu ZGxlciB7DQoN
CglwdWJsaWMgc3RhdGljIE9iamVjdCBjcmVhdGVQcm94eShPYmplY3Qgb2Jq KSB7DQoJCXJl
dHVybiBjcmVhdGVQcm94eSgiIiwgb2JqLCBuZXcgUHJpbnRXcml0ZXIoU3lz dGVtLm91dCwg
dHJ1ZSkpOw0KCX0NCg0KCXB1YmxpYyBzdGF0aWMgT2JqZWN0IGNyZWF0ZVBy b3h5KFN0cmlu
ZyBvYmpOYW1lLCBPYmplY3Qgb2JqKSB7DQoJCXJldHVybiBjcmVhdGVQcm94 eShvYmpOYW1l
LCBvYmosIG5ldyBQcmludFdyaXRlcihTeXN0ZW0ub3V0LCB0cnVlKSk7DQoJ fQ0KDQoJcHVi
bGljIHN0YXRpYyBPYmplY3QgY3JlYXRlUHJveHkoU3RyaW5nIG9iak5hbWUs IE9iamVjdCBv
YmosIFByaW50V3JpdGVyIG91dCkgew0KCQlyZXR1cm4gUHJveHkubmV3UHJv eHlJbnN0YW5j
ZShvYmouZ2V0Q2xhc3MoKS5nZXRDbGFzc0xvYWRlcigpLA0KCQkJCWdldE9i akludGVyZmFj
ZXMob2JqKSwgbmV3IFRyYWNpbmcob2JqTmFtZSwgb2JqLCBvdXQpKTsNCgl9 DQoNCglwdWJs
aWMgc3RhdGljIFNldDxDbGFzczw/Pj4gZ2V0SW50ZXJmYWNlcyhDbGFzczw/ PiBjKSB7DQoJ
CWlmIChjID09IG51bGwpIHsNCgkJCXJldHVybiBDb2xsZWN0aW9ucy5lbXB0 eVNldCgpOw0K
CQl9DQoJCVNldDxDbGFzczw/Pj4gaW50ZXJmYWNlcyA9IG5ldyBIYXNoU2V0 PENsYXNzPD8+
PigpOw0KCQlpbnRlcmZhY2VzLmFkZEFsbChBcnJheXMuYXNMaXN0KGMuZ2V0 SW50ZXJmYWNl
cygpKSk7DQoJCWludGVyZmFjZXMuYWRkQWxsKGdldEludGVyZmFjZXMoYy5n ZXRTdXBlcmNs
YXNzKCkpKTsNCgkJcmV0dXJuIGludGVyZmFjZXM7DQoJfQ0KDQoJcHVibGlj IHN0YXRpYyBD
bGFzczw/PltdIGdldE9iakludGVyZmFjZXMoT2JqZWN0IG9iaikgew0KCQly ZXR1cm4gZ2V0
SW50ZXJmYWNlcyhvYmouZ2V0Q2xhc3MoKSkudG9BcnJheShuZXcgQ2xhc3Nb MF0pOw0KCX0N
Cg0KCXB1YmxpYyBzdGF0aWMgT2JqZWN0IHRyYWNlKE9iamVjdCBvYmopIHsN CgkJcmV0dXJu
IGNyZWF0ZVByb3h5KG9iaik7DQoJfQ0KCQ0KCS8qKiByZXR1cm5zIGEgcHJv eHkgdGhhdCBk
dW1wcyBldmVyeSBtZXRob2QgY2FsbCB0byBTeXN0ZW0ub3V0ICoqLw0KCXB1 YmxpYyBzdGF0
aWMgT2JqZWN0IHRyYWNlKFN0cmluZyBvYmpOYW1lLCBPYmplY3Qgb2JqKSB7 DQoJCXJldHVy
biBjcmVhdGVQcm94eShvYmpOYW1lLCBvYmopOw0KCX0NCg0KCXByaXZhdGUg T2JqZWN0IHRh
cmdldDsNCglwcml2YXRlIFByaW50V3JpdGVyIG91dDsNCglwcml2YXRlIFN0 cmluZyBvYmpO
YW1lOw0KDQoJcHJpdmF0ZSBUcmFjaW5nKFN0cmluZyBvYmpOYW1lLCBPYmpl Y3Qgb2JqLCBQ
cmludFdyaXRlciBvdXQpIHsNCgkJdGhpcy5vYmpOYW1lID0gb2JqTmFtZTsN CgkJdGFyZ2V0
ID0gb2JqOw0KCQl0aGlzLm91dCA9IG91dDsNCgl9DQoNCglwdWJsaWMgT2Jq ZWN0IGFzKFN0
cmluZyBvYmpOYW1lKSB7DQoJCXNldE9iak5hbWUob2JqTmFtZSk7DQoJCXJl dHVybiB0aGlz
Ow0KCX0NCg0KCXB1YmxpYyB2b2lkIHNldE9iak5hbWUoU3RyaW5nIG9iak5h bWUpIHsNCgkJ
dGhpcy5vYmpOYW1lID0gb2JqTmFtZTsNCgl9DQoNCglAT3ZlcnJpZGUNCglw dWJsaWMgT2Jq
ZWN0IGludm9rZShPYmplY3QgcHJveHksIE1ldGhvZCBtZXRob2QsIE9iamVj dFtdIGFyZ3Mp
DQoJCQl0aHJvd3MgVGhyb3dhYmxlIHsNCgkJT2JqZWN0IHJlc3VsdCA9IG51 bGw7DQoJCXRy
eSB7DQoJCQlvdXQucHJpbnRsbihvYmpOYW1lICsgIi4iICsgbWV0aG9kLmdl dE5hbWUoKSAr
ICIoLi4uKSBjYWxsZWQiKTsNCgkJCXJlc3VsdCA9IG1ldGhvZC5pbnZva2Uo dGFyZ2V0LCBh
cmdzKTsNCgkJfSBjYXRjaCAoSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBl KSB7DQoJCQlv
dXQucHJpbnRsbihvYmpOYW1lICsgIi4iICsgbWV0aG9kLmdldE5hbWUoKSAr ICIgdGhyb3dz
ICINCgkJCQkJKyBlLmdldENhdXNlKCkpOw0KCQkJdGhyb3cgZS5nZXRDYXVz ZSgpOw0KCQl9
DQoJCW91dC5wcmludGxuKG9iak5hbWUgKyAiLiIgKyBtZXRob2QuZ2V0TmFt ZSgpICsgIiBy
ZXR1cm5zIik7DQoJCXJldHVybiByZXN1bHQ7DQoJfQ0KfQ==
--------------060305030603080608080807--
Previous Topic:Capture key state when tool is selected in Palette?
Next Topic:Disable selection of figures in GEF
Goto Forum:
  


Current Time: Thu Apr 18 16:36:03 GMT 2024

Powered by FUDForum. Page generated in 0.02036 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top