Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Buckminster dev » Dependency Visualization
Dependency Visualization [message #35530] Mon, 22 June 2009 21:25 Go to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------090708030908080509080703
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

as discussed in
http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
I started working on a zest based component dependency viewer for
buckminster.
I just finished an early prototype and thought it's enough to get at
least an idea and ask you guys what kinds of features you'd like to see
in it.

Currently this is (for sake of simplicity) registered as an editor for
previously saved .bom files.
It consists of 3 areas

-navigation tree that shows a tree of the component dependencies and
is used to drill down on the graph. The selection is linked to the graph
viewer so if you select a component in the tree, only this specific
subtree is revealed in the graph.

-graph viewer. This is very basic at the moment. It shows the
dependency graph with some icons depending on the component type and
highlights the direct dependencies of the selected component. Unresolved
nodes are shown in red, a double-click on a node reveals the node's
cspec and that's about it :)

-settings section. This section lets you choose between some layout
algorithms and filters (only platform component filter so far). Filters
are applied to both the navigation tree and the graph viewer.

I came up with the following things that should be added:
-better highlighting
-tooltips and properties view that reveal more details of each component
-smart highlighting of paths through the graph (shortest path to root
request for example)
-regex based filter (black and white list filter)
-dependency reports generated from a bom with some nice pictures
-zooming
-image export

Now I'd be very interested to hear what's on your wish-list for
dependency visualization, so that I can plan on the real implementation.
Attached is a screenshot and a bundle.jar including source code. Just
throw it in your dropins folder to try, but make sure that zest is
installed.
Keep in mind, this is just an early prototype for demonstration and my
first steps with zest, so the code is super ugly at the moment...

Best regards,
Johannes

--------------090708030908080509080703
Content-Type: image/png;
name="Bildschirmfoto-1.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="Bildschirmfoto-1.png"

iVBORw0KGgoAAAANSUhEUgAABkwAAAHACAIAAABvRdMoAAAAA3NCSVQICAjb 4U/gAAAgAElE
QVR4nOzdd1hT1xsH8PdmQBgJW0ZYCjIEcS9ExL2rVq17tY5qXdVW22rraN2t 1fZnq1ato2pb
V91740bciAgKsvceGTf390dAAiQMRUH9fh4en3Bzz3nPPfcm3Lyec8LcuX7B qZ4bEV08eSAh
pw8RTZhgRwAAAAAAAAAAALXPhg1xRGRjfMi/a18iinoa1qilf0ZKAq+mGwYA AAAAAAAAAPCq
kOQCAAAAAAAAAIC3HpJcAAAAAAAAAADw1kOSCwAAAAAAAAAA3nqCyu2meLJh 1azDWcUbGKHY
ysLZ3bVdd99O3iZC5vW0rlpwOefnLF0VSkR1xq6f0t+WX9MNKsKmH/nyx/Xh RKTfdv7s2c1E
xb1YEPW/8RtOZhKR5fC1E+puWPrDXY7IYtja6UMcXnf7C258+4NGOEXJX18l Opf/NGj/pTQF
Cazbtu3m+uJ4C6ovBAAAAAAAAAC8p152JBenyE5KuH8p8Le5K2esC0lVVmuj 3hN8k1Y9HBki
ItmtE5E5XPEzBeG3rmUSEZFTi3a1Jyv3yvKfBv299+LevWdPPJFxFe8OAAAA AAAAAFBZlRzJ
VcykbZ/JHcTy9JTQqzePBqdzxEUf27HAdMpPQ231XkcD32U8i+atvPnP77NU EHzzYY57a7F6
bJMs7FSIetSca3cva4Ge4ciR3/RiiSdytHrz00v13F579DcQAgAAAAAAAADe cVVOchnY123e
0lpI1L5rm677/5y55TlLFLXnxPUeo9uZMkSqnPDb/+y6Gng/PrWASF/i0rTJ hyMC/Bz0GCLN
iWkDvunAHjt/8nZKHokcWvuNn9S+sZk6wVHZGgZ+15V//MzRm0nZnJ5N07af Tu/YVF0DVxB+
/Oi6v++EpbMi2/o9R3W0Kz1q6JVDEJcTfnv3v9cC78QmFxCR0MypbpcJHzQ8 +9u3Z/KIJH1+
nDneTUhEpEjYPvnX3YlEhg0XbBrc1KjExE7GtH7PxoL7t5QkDz9+L69VWyOG iHKjT1zPJyJi
HHu0MuGTPGz79iXFs/l4BdF3d/556cK9hHQ5EfEMzS0c67v3n9itjSWP2Iwj s1auf0pE0il/
TupqwWhscZixdWJHM1XCuUNr/wt/FpueJSci4ost3Js1HTjCr3kdrRdDiegf iYJmfnLwaZmd
THt8+scku/Ryalam7pu+akt04f4Rv6/o9zsRCdss+vrrxlzJA+QTqbIeBe36 99qV+4npciKh
sVNDrx6DO3XzNOJX9gQBAAAAAAAAwPvlFTICjF7dnt07mxIRkeLZ+XAZkSr9 2v5pM/cduBmf
WkBCkYBkWRFXL6ycuvGfcHnJRFPq3iV7/nuYx9cjooLoa6e/++bU43yuSjXs WbTrnxtJ2RwR
yROCzy1edSdFRURs/NG/5vx+KyydJaKC+Cf7lm/a+kSz4KuHUKVf2zd95t79 19QZLiJSpEeF
3Ywi936t7YiIss4ejMzliIjk0XcvJBIRmfq3aWBUZukyxtCnh5uIiEh593hE JkdEXO7jm0F5
RER871bNLcqcoPzIDd/s/i8oIV1OPAMDQz1VXlpy6PX7IRlsqap1rJOmygx9 dPdZepZcYCg2
0Cdis1NDzp9a9MWB4OxXnEFYXTWr0i7vmTrnwJFbielyIiJS5EQFX18355ef A7NKHqSuEwQA
AAAAAAAA750qj+QqQd/Kx5ZOZBCRMjkuj82P3742OIWIxN4zVgzsIBUUPA38 dtbxMDZ217rb
HZe3qqOxupRhiwFrvm5qTennlv368w0ZxV7aHNh6qV9a5Wvgu3VZvtC/XkHI T1N3Xc4hxb1b
D7ObtBdG7trxTEFEZOQ3dcz41kYJZ/bN3xxeXCw/6tVDbP01OJmISOA2YPC0 /m52ennP74WE
GOjpOTQf6HX+l4eq3KuXgzNd25my0efvJhERmXXuIRVp6UFG7NWyhWHIpTxi 79+4ndGwg2lB
yPGwfCIiQaOe9U3LZKoUSU8fZhIRuU76cmUPUz5xyqyUR3eiWfPSS3fpyHLx LNv2WdDTuaGj
sZAhYvPub/197n9plHF7962uTQLE5X+FAM+q1eqDrYiIiMt/cm7e7DNPWCJR /cF9bPWJKbdm
iw/X/hBwet2YX2KIyGXS7J96mBQl8ApKxMiL3Pbb3XQiIknHmWPH+0rSrhz+ btXtVMq5+Pup
rk0H+BhWdIJMavP3IAAAAAAAAADAa/FqSS7iNIboMPLoB7fUy6XL4w+v3nSM iDh5IktExIU/
iMhrVUf8YmdD3w+9rQVEZNamn+cfN+7kEBd+NSHTKazSNei3GdHGzYhHhs6t 7OlyKBGXm5St
kheE3s8hIiLngFEd7cz4ZNazW8/D4fuSCotVpZHaQ8hy7gdnExGRY+eZwxvY CYhIUq9l63pE
RFybQd6bHt7LVTzZfznDt0vu2UuZREROrTo76OhqI8cebQwvnckjVeTxW1n+ rWKPB8uJiET1
e/oYls3WCMRmZgzFcxS+ddv3D52cHKycXJwat25irldqX4anPdXDt/Byybp5 55/jcXFpeQVy
lSIjj4iIuMSn2YoAcSUXVpPH3lg+78wTlogvHfrD0J72AiKqlppl0Q9uq7vX teMI/zpGPDLy
7zLk4O214UTZYVdiFD5uL/bVfoLI5N1Zqh8AAAAAAAAAKunVklyylHtx6kfC OnYGXE5mbuH2
1PDHqSX2VBVkFKioOH8ksjAuHMfDM5QYEuUQKbJy87IrX4OxvRmfiIjh6xfm NFQsR6q8bHVm
RWBpIVFvF4odTImKklzKKjRSewg2N1OdRtOzsTYt3X+Mkbd/D+t7exIp/GBw hHNeYCoRMR59
fGx09rS+a1dv0zM3Moh7dPzxM/2Qu3IiIsMWrby0DatizLwnfPzw+02hqXmJ wRcTg9VbDZxH
LB49yFUz0fUi/8hpZiJJkXJk0dr16hglKWVsJWcVsqkP/vfNweB8IjLv+e3o wW76TDXVTERs
buEJ0rMwNVJfIzyRlbmASElUkJKjOR1R+wkCAAAAAAAAgPfQKyS5OPmzo8fO qEdFCZ3bu+oL
kiRGRHIiYfMRW771LHfmW87zVCU5CYhIkZZcWIfEyFBc+RqIVzhUiSGN3dQp s3wiZXaujCND
hoiVpecV7yAwftUQfCMTI6JMInl8QrrSzbBUF+pZd//QYe/v0Vz85d//oHQi 0qvft5WknMXP
RC7N21vcOJBKFHZh845MdY6rdXdHI617M3r1+o7c3C3zWVhsZHTy89AHRy7E yfIjd2170mOh
l5hh+IWR2AIFR8SQMicmo7i07OmVf9V5KKf2i74L8LHSyw/aNmrRY0V53VAC lx3x57xd59OJ
yMhv1ifjmhZmol69ZjW+sYn6BMlT03NVZMAjUhUkpSnVXWVpzCMqXphL6wkC AAAAAAAAgPdQ
lReez495FnQj5OKJC+sX/TJjS7Q63+A8qFsrU0bPoWFTCRGRIuj430EZCo6I OHl63LX9++av
DsstUY386qYz12JyMmMf7frzkYyIiFff18akCjVop2fn3tCYiIjCrp5+JueI ywm9cSJGY4dX
DqHv2LCZerRX9OlVfz2MypTL87Ke3rh26J56lBHPyi+gjSERySKeyojIqJVv Y0m5ORg9644d
zIiIKONBHEdEZOrdrb6+9p0L4k4euf84S+Tk06Bjr/YjR/t6CImI2Jw8GUfE 07c0V2fdUm4+
yFJyiuizZ86mF5dW5efkExGRcT1Xdys9HpsVfCqqChmu/Ng9i7YejCUivUbj x81oXzyUrTI1
C/QLd8+ISs3VsUK8vr13U3X3hp/bdj4hqyAv6vyJXepF1cRube2FlW4sAAAA AAAAALxHqjyS
K/PyoaWXNTcwDj2GzR9oq0dEBk6jJje+s+xOKqUc+n7lIaG+iJMVqIfgeHuU rIYxTr6yZPKV
4g1Sv7FtJTwDcaVr0MHQeejwupfXP1Nwcdtn/HDQXC8rLb/EDLYqNFJniNFT mt5bGpxC7JN9
O6fuK9xcd4J7Tx8iIkbsMrCLyZUD6gFq4vZ9nMp+rWJJAocOzaR7TscW/W7h 39xF2zL1RMTJ
kk+v/zd0PREJDAx5BXmF3whZr62zKY+I9N27ehjeeJBHiuDVKwf8QlzJXJLI qWFD0cObBZRz
buvnSc6m6VEhcVUYa1Xw+MK/j9WJTfndP9YM/KNwu2mPTzcMqbBmxsDJxY4i 44hSj24afpSI
HGZsndjRrORehs4jJ/sEL7+XTlnnV/96fvWLJ4z9J3VpYEgAAAAAAAAAAGVV eSRXIUYoqWPT
sF27yUtmr57UwKIwV8Yz8x3wy0/9+7WUWoqIFLICJc/Q0qZRgP+nQxxKJm3M e307epSvtZgh
IpFDq04Ll3RxN2CqUoMufNueI5Z/2tTNjEfE5jFWnSaOnOimucOrh+CZten/ y6oP+7Wysygs
wDdxqN/MSVTUm0LnXn4u6oc2zbq7VLzkusDWp6vTi9/MOnSy1lWGEVkHdPfw sBcb8JT5eXKO
+BJpvS7jxi3sZyUgImLELfrNH+OlnusosnbtO2P06Loaxc28Zyzs7udsQKSM C00oqNdh7kwP
HWPGtNK55FVlahY6+M782NtJrL2GIjzztoN+Wf5Br6bWpuphWwIjxyatPl0+ 7XM/CZaUBwAA
AAAAAACtmDvXLzjVcyOiiycPJOT0IaIJE+xeW7iCG9/+8MNdjshi2NrpQxze 1ZQFVxB2atoX
FxKIXMfPWtHH/BW/wxIAAAAAAAAAANQ2bIgjIhvjQ/5d+xJR1NOwRi39M1IS kH6pXlzmlb/n
rI9ITM9nici02eiOZuhiAAAAAAAAAIDXDRmYasbmZcSl5xORuG6jEZ/39qlo OS4AAAAAAAAA
AHh1bzjJJWr5/Q8H32zIN4sx7zzpYOeabgUAAAAAAAAAwHvmZReeBwAAAAAA AAAAqDWQ5AIA
AAAAAAAAgLceklwAAAAAAAAAAPDWQ5ILAAAAAAAAAADeekhyAQAAAAAAAADA Ww9JLgAAAAAA
AAAAeOshyQUAAAAAAAAAAG89JLkAAAAAAAAAAOCthyQXAAAAAAAAAAC89ZDk AgAAAAAAAACA
tx6SXAAAAAAAAAAA8NYTVGan1FRFeHh+UpL8dbcGAN4rlpZCNzdDCwth2afw tgMAAAAA8Obh
Fh1qlXIuSK0qTnKlpiqCgrK7dTN/tYYBAGhx4kRa8+biUu9ZeNsBAAAAAKgp uEWHWkXrBalL
xUmuq1cze/e2JKK4ONmrNg0AQIOdnX63buaHD6eo32RewNsOAAAAAECNwC06 1Cq6LshSnOq5
3b1xsVFL/4qTXHw+Q0Tx8TKGqbZWAgAQUXy8zNZWX/0mowlvOwAAAAAANQK3 6FCr6Logdak4
ySUQMESE6xgAXhP1m0zZLXjbAQAAAACoEbhFh1ql7AVZlnowV2VGchG9dZey PHbHN5vOZ5Lt
gM/md7fgv7GyAFB1/DIvs5p/28H7AAAAAAC8x2rjLXr5cAP/Tit7QWrlVM+t 8iO5XvZaZtOO
L/x1TxwRiVpNnzauoQFDbPLJDV//m0T6DWb9NMhT9JIVl6e4uQxTQdMLglcs /y2MGM+hv8xy
M6haWQCoBrr/m6j0dlVu3NVjgeeDnkalyFREArGFs1v91l3a+bsa8qq3TXgf AAAAAID3WOVv
0auEy405t/vUyZvPU2RExDeytHLybDp0WAvbCpYUL/OxHR/k3zOVGclVuGeF e6inPr78NVJc
sOD67qDeDdrZCYo3MszryQTr2w1bMXcwRwyfX2FXMJqNqWJZAHh1uib8l3pz UCQE/b70yN2c
4i3K7NTwW6mxfHff+s76pWtVKeQk1HvZ3BdT/KDwnQEAAAAA4L1RyVv0qlFl XV63Zecjtuh3
NjclIeRyaPLgFnZ6FRQt/bEdH+TfM9W5Jpe6Lt5LD5PgND4fxgXuv990SjMR 78XlyCMeZd/a
vvvfoPikHCUR8YwsG7T1Hz7A20ZYcO+31T8HyXnu/X+a42PKEJf18MeZe0JY gc+Uz2c0M1Rl
hO//4/CJkEyVqWOnAU3Sdx4IyieH4dPndzbly+N2zN54NpPsBk1Z1NOCr9IR gpe095t1h5OJ
iLhHu6Z8QkR2Y5d1j1q6ubgsESdLuf7fiUOBEXE5HOlJXJq1GjiktYeER/LY 7bM3ns0km+59
fFOuHwtKytczb9p/wLhudgZ4UQFUmq6/oCXedpSpZ9arM1yGjQZ9OKxj3Toi HpufFfMkIixf
IuQR78XrsccHrRMCj95OM+o8ftlQ8X2tr3095sXr17prjxaJ10/dTZOJrFp+ 2G9MZzsDhohX
9MYlS7r05959gfG5eHUDAAAAwHujUrfoRJdP/KmrhrbdxpbawuXFXA1liZi6 gyd82c3GgJTZ
ibEPH2Za6xVWy8nTbh08ceBSeEyWigzMG/i1H/ZhQ6mg7Md2vkTAZik1t5T5 IF/up3W2nGQC
J3t+4cT2Qw/C0xREpG9q5dKi0/jB7qaYAFmjqj/J9fLD/V7kWc0t9dJSgndf j2kUUDRDkWEY
huHk8U/ic4ysPeoaCvLTnoSnPDi5byVnvnS4vVsHD8Oge3nht0OzfdqYUPbj 22EskX79jp6G
PDb1xC87jjwjIjLikk5vOsBpVKnR2HJDDDYws7eSJCdnERFjbG0tYvStxMVZ X4ZhGIbNuLR2
w+b7CiISW0jkqVkRV08tf5o7b2EX16KXd8LxQwcsbOxMKTojLfiffScaTupv X3HHAoCa7v8m
Kt6uTLx3/jkRkaT9R5/2dFZnmgSGJs6Nmjqr9yjaN+HYwf9IKDbW1+NROW8v +kX7J548dsHZ
tb5T/oOo5Bs7t6kspn7WzPhF5PjD/25XZ+rleHUDAAAAwPuiMrfoan7dPy5b PPD45rJ7MnyB
kE+k5HISEuNSTetaGkhsndvYFj3NZl79fcOGOzJiJHU9TPKeRoec2v99gmrJ VMfSH9v5IgtR
QXRESnkf5F98Oij7ad0m45TuZAIbc2Xt1ttJxLNydbERypKjY0LuJeQN9jDD f3XXqNf+7Yqj
Ry/QuvPWrWW2FxUUufj1r3NwZ+i13beaDS/MexHDECMw6zz3qz6GlJeRnSNX JJzYsepMZlrQ
g/iP7Ou6Nmsuvncx+/ml0Nw2rZiwS1FKIoMmzd2NGcWzmyefERHfY+yU2QEm 2Tf2fLM2JJeI
KZoCyVBlQnTvPOMTs6XLfgklxrPPgjnuhkQkj3moUVYZc/2/+woiQYNPpnzh byJ7fGLukmtp
idf23W07u2lRFLuOixb5S/PuL5uxN1SVeu9p3ocOkgo7FgDUKvPVLYrU2DQi IoFLc1tDHlFB
xJqp24PlRESk5/Hlr0O8X4y9Mvb+7Pv+Lc15rJLj8zmdby8v8u8uvRbMbWFJ 6ae/X7P9mSzo
cGh60+YWL95DTJrO+r53g7zrC+eceE54dQMAAADAe6Hy366oazyMlu2GTr0D zO+fTku+8N8P
F4j4xvYNPPx7+HfykgiIFDHX996REZn1nD9pcF09Zfylb786E3f//OmEqUPK fmynglvlfpAv
zgmU+bTeS1leMkGRkZhOROYtxs/s7m7EELHZKXn6glq84v774bWvybVt24JR oxaU2nPbttJb
iAqvMCIivkmbwS1PLLx2f/eVyACNZyn/6fH9m49EpLIapXIz8zhiDOwCWhpf PJPz+GJkthf/
YqiSyKB5R3sjhstMiEsnIrLxa2wqYBgzn6ZuwpDbiuILujg+QwynO0SpdBhp LiJGDMPlxUSn
ERHZtGtsImAYQT2vRpJr57JUcU/Slc0Kd7Nq5m6rRzzOpI4hheaQPEeBFwBA 5VVmwn/RY6bw
Bc7Xt3aytIxLSclVby7e2bRNmyYWfIZIIGRIlaPztV80ErNOQyczATEkdvc2 o2fplBSdqmxu
WVSbeZsWDUx4QpGdoxE9z8WrGwAAAADeC5Vfk6sKSS5G5Dly4lKvoDOXHz8M fR6fkxNzP2jn
/dDoLz8b11CUF/M8lYgo/eiCJUeLy2SGx8vImV/6YzuV/0G+OHqZT+vyvHKT CfpSt3r8x4/T
ri+ZfF0gtnCu79Kmm39HK6zSW8PexHTF7dsXjhw5X/NX7eU1vuNAVM/vo4ZB v9+/8c810Ysn
ZY9P/XYwIpcEdTt26uxuVPDg9PZLWUQcMQzD6Dm1b2h+5mra4+CgW7xHCiIT 7w71RAzDlR6J
WGp+IqPxibiCECVr0mxw2YoYpuRXNhSGFRoKeQzD8HjqbufwZQ4AVVGZsdD6 llILikgiRURw
oqyRk0jfYdh3n3U9uf7z7QlU8sVqaCYSFD0uKPe1r96HZTn1q5lTqohI/cft xbMiiT6fYRge
X6heJgCvbgAAAAB4D1R+uiLDMA0aOGluCQmJ0ronEREjsm/uN7q5H5EqLyro 10VHHshzbgUm
jfJxKtrduHFHb+viL1sU2NgKGYbTiKbescIP8ozOT+slSpZOJvCtms1cqHf8 1P2HT5NiY1LD
g1PDg2Ppp0+61sGiXDWpeqcrEulYeH7HjoXDh89XP9BZnivOsPIE4pZD2uy7 fykxtkC9jcdT
5Scm5RKRnutHw3x9RAX37x8reop4PBI5Nvazunow+enOHaQgMvdtWteAeMQY SaVmFJ1OiVce
ZLZrL8l6EPxYURSFRzxeUeKWqTiEQMAjUnEKuYohnnrB6eKyjLGjgznFpFF8 4L0s3/YSedSD
u1lExJd6mOnz0jX2JB6PSONXAKgkQZn3obJvO3rSRh0cL/7znDLP/rvOduDI js5WIpVcVjhA
q8SrnsfweMQjIqrgta/ePyXoYWw/67qUeDM4k4jI2r6OPvGUhFc3AAAAALy3 KnOLrsbjUWho
VNkatNw2y2J2b74vbtGwWQM7K0NGqM/n84iIeEKGz2PEjo4WFJNKnLh5+5GN DBkiYvMig5/y
pHp8nqz0x3Yq/4N8qZyA5v18BckEysvIsfAaOMFnIBGX82jlZ3/fVSaHJiu7 2yDJVZPKXpA6
96xwj/K/KHTnTt3pLbWSgwb1ndsMaXZ9zS150Sae2FFqQvGZ8sfbN55oph99 JjD/RUGGIdKz
8vO3OLg3VSEnIrN2/nXUy0XrO7XoUe/azqfKhxt+/vRv/fwsGVcUQjMVyxAx FYQQWNSV0IMM
CtszZ9YFM2mzKZMcNMqSvlPrgT63NtyTP9jw85T9EnlyZgER2bT6qKkhj9I1 92SKPwVjvi5A
FVRqLLTQssfUnqELjt7Nzbm1Y8utHSULlH7Vq38t97X/omz8xW8n3ZJQbpac iPRb9PG04BOj
LF0bXt0AAAAA8P54LdMVSRZz41pQ4LXtJTYaNfWz1meIcWo9sHHQ+ju5l1as eephb8HLjQuP
T5Hbf/qbl5NBmY/t01uU/0G+7KeDF/fz5ScT2ISrP3x7UyWVOliJVKnRIUoi MnO1EuBTQM16
HQvPv+wpLT1o0LjZED/prbOx6m3EiNy6fD4k+7e9j+OuXZd5tR7cX/7n/sTC C4whIoFd26b2
e0/FEJFtEz97YdGgQ6ueX47IXXvo8IPMAsa664TGiVsP3pGRQCTga84nYhiG KT+E0LFnz26P
DpwMz81KTM5SZMrJUbMsIzALmDlRb/fx/RciYpMzSU/i2rL10JG+bgY8kpWI UnbiIwBUhu5V
LUts17dv/eUq23P7Lp2+8SwqvegLfb08/Tq3bCBiGHnJ1yMREZX72i/c367v oE4pF/deziWR
ZauBH45vJeZrprLw6gYAAACA908lb9G1btG5Xc+m5whfwdUnoU+TM2RExBdL 67Xr1/0jbwMe
QyQwbT9jkmj/if/OP4kKDY8lgcTOqXXzFvWNeAzDK/OxXehU/gf5cu7nhZbl JRNMnVr6RN0K
j30QqyIiIzvX9gN797Cr9LLn8HpUfuF55s71C0713Ijo4skDCTl9iGjCBDvN PaKjCxwcRHl5
rPYKagyXn5KpMjM14hMRl333wBdLgzPJuMv3n39SX1hhYQCoJQwN+eo3Gc2N b+JtRxazefqG
kxkkHTZ9xQcWGHwMAAAAAKBW+Vv00/9t1FVJ537jXlf7XhWSCW8ZrRfkhg1x RGRjfMi/a1/N
7a86XbHmsInHN399hufiYmEoTwsLSy0gEnoF9HER1r6mAkB5Kj8WujqVnEmN tw0AAAAAgBcq
eYvepX+tzWSVA8mEt09tmq74uvAkLi6u1x+EP0jjiPTMbFv4txs20NsGowgB 3jaVHwtdnYpn
UhOmIAIAAAAAaKqZW/Q3BMmEt0/lpytWdiRX7ftCMX6ddv2WtutX080AgFel 67+JXu/bjoH9
+I3fj3+dEQAAAAAA3lI1c4v+hiCZ8PapzpFctXW6IgC8I2pmuiIAAAAAAOiA W3SoVap3uiLR
OzIoEQBqI0GZ9yG87QAAAAAA1CDcokOtUvaC1LlnhXsgXwsArxX+mwgAAAAA oFbBLTrUKpiu
CABvDfwFBQAAAACoVXCLDrVK9X+7Io+HaxkAXgtdX92Ctx0AAAAAgBqBW3So VSr/7YoVfzUC
LmIAeK3KvsngbQcAAAAAoAbhFh1qlcpffpVevEvDnDkPX6IUAIDa8uVeNd0E AAAAAAAAeNe8
TJLLzk5S7e0AAAAAAAAAAAB4aS+T5OKqvRUAAAAAAAAAAACv4GWSXMhyAQAA AAAAAABArSJw
qudW9VLVluXKUyoMBcLCSjl8HSkAAAAAAAAAALyMGp6uaCAQFtfG1NYhYqqE 29s/uuPx1+hW
jjzNxzXdrreA/Pp/v3+n9+F/PR0MaropAAAAAAAA8LqkpCjy81XPnuVnZipr ui1Qu5iZCT09
DTmOLC2FrzsWpitWAqf5QGTh0t3V0oh53zrh5XBF/+rqLlXsrW1D73vvGtVc iqQhAAAAAADA
WyosLC8zk3V3N2jQwLCm2wK1S1YWe/NmtkTCt7Q0ed2xamwkV1JmmiT9Z2tL cantiSnZWWaf
1zExf9mKVSxLfH71J0zUiRqOMXVo+41D0RaojHJyXFSJPBgAAAAAAMVmOQYA ACAASURBVADU
ciYmAgcHfVPTlxpJA+80KyueUMjk5aneQKyXu/64qMigbdvGlb/TqFEbnZyb a30qKTNNkr56
wnerTE1Kp/EyMjM3LJqZRDO05rk4Wcjt08uvPXqST/omTgMDuk1wlQiJjbq2 dVSoyyTH+L8f
xCSLff8a2Tjt5rGlN57FKQ08fNr2zrq4waD//tIz5pQxjy+tuHQvKFNBIssO LTvPbm5vwqi3
B/54+d6NdDnxjRp4dVrayVUjD6NKuPPX4Nse20e3dOSxUde2jnpUb4JD/N6w pFS50L1hp4UB
7rZ8yk+9//PxwGMJuSzxJOYu4/r2HmjO1x2xmLaCpCuKPDV46clbgXGZucSY WXt+0rVz/zp6
DGk9BDcrnvboOpr6guLhmY2T07ocGeRqTEQkv3Fg3QLRgL3dbJJ0tIq4/DvX j/1w/Wmc0sDD
x6+3kkhIHJFMW2vznu0fcj5FSecH/nyeSNRz8MR59kyFvQQAAAAAAAC1i6tr 6TVq9PVr3XQd
mexN5FmgrDp19N5MoJcaycWRo1PzkaM2Hjww+6+/tvr5+Wk+GxgYOGLE6A/6 rnB0as5pG5yT
nJkmyVj9ydyVYiMjVll6sq7YyOiTuSs3Lf4yiZthVSrPxaWEHpl2Lrld58GL HPWiHpyef2CP
cOTICVYMESlSg4/V7bdh8kcWKnli6KEvr+X07jFiiC3z+PappZFyxpOoRGO4 rKjTn51IbNfx
w5kOYkXyw9XH9s43GLvKyzj72alPD0e4+vbY7FHHWJ52L4E4jiOOiDji1D8a j4kUacEnXAdt
/tTeKOfJil1HvhCZ/dla7/DRU1fNO//es64NryA6ISGXzxGn0hFRXPyyV2Vq K0jao/haqZRM
Pe/Og7uZm3JZN4NO/rj/guvYzj5CLlPLIaiyIrVF91Rpi1iio4qGsL1I9FF5 x+5rmfXo6KzL
6V26jxglpYdBx5dGyoWeRBynvbXO/f4O2D70gffOEc2kPCLisiJPVtBLAAAA AAAAUNvUwpRW
WW9FI+FVvPwJdnJq/kHfFSNGjA4MDHyx8UWGy8lJ+xguIiq4O2XMnGViIyNW B7GR0Zg5ywru
TilVUJV9IeiZwLPbLB97J9M6/r49J1im/Xc7MV/9rH79Ka2d6/AZPl925Xa0 caNuk92t7SR1
OrTt3FtcZiYcl3vp6mP9Zj2ne9k7S0zqu7Se01J8915UmirnwrVHcrcei1q7 ephK7Os49/Rx
rlN+HwldJrewN2VIKHad0NY65v7dMHlBfD5P6ujcwNTYUmLZxM3bT8LXGVGz ZSptBXVFUZCo
TuOR3s4eZhIbc/s+7Tu0Vjw9m6okTtshMDqis7ojVoaWY8++cCtS1LDbtAbW dibWXfw79zAq
7Hztra3kecFMRgAAAAAAgHeHLHrd6LkffDD3s70pyrK/AryslxnJxSoLB/jZ S5v27r1s+PDR
O3Zs9fPzCwwMHD58dJ8+y+ylTV/sU5akTp1jmxYPmra4nBDrFkyW1KlTqhJF ekgWOTYxMyjc
LvK2NcxKSs5SWqpUnMDYyoZRqlgiRfqjLMaxpURPvRtj3MSMf4RjVZq1KdLu pCli4ra2v6ZR
v2lGRr74Xjrn7GNpVCK0SqXiiFQcq1Rxmo9ZlYoTSKzteEoVS0RkbGopzk98 rmjb3dty78mN
H96v19bJyd/dvbmpkNEVUaEsnh3ImGgpSDqiFCg8CmL+Ondx99OU9MK2Cvzz 5SpZmpZD0BWd
c9UWURPLcRzRi95TqjgijuVYpfZW5aSHZDFOzU1F6v15pi3M+ac5VsUqlXnR WlrLClQqIvXZ
4XS3U7OXAAAAAAAA4C2gTN03fdWW6JIbea7f7hjbooJURMHVb75f+oCYRiN3 fu9h9PpaCO+c
V10TztGxeZ8+y4YPHz1p0vjff/+jT59ljo46x3C94Nmk9e5f5n44eaHWZ3/+ elzrgK7Xzp/U
9qSu1ZkYpkqLzXMqYhp0/WSdp1GJUorYKtRRWJGKLRpnxHEqFRGRwLXloIMu 0RefRl5/du3z
azc+6D/sC1sdEUvQVtBRqD0Kl3/xzKEteU0Wj/iwiamBSBn7/eaDeVU9XiLS ElFUYh+mRJdr
zmXUduwcEcPnFxcR8BhSt/Z0ZVpbmV4CAAAAAACAt5q+/fiNCz/miCfgV/dK 9Sq5nPT08Iny
PfWSa3JpcnBo3rv3suXLJwwbtsHBQfs6XKW4NOtERPt+m1/2qajo2NYBXa3d W9D5k6Wq4okb
SOhKVEqeu4MREamy78flia3NxMTlERWtk0XEM3YXq25GpxXUsxERkTLjdhrL GZZcaoovbmhK
5x7HZLi7mWvmcPhib1PmwtPEbHdnicYBFx84V/oxmxX9pKCZkyFDpEqJi88S 2dkLiThGbO7Y
y9yxV7MW/vs3r3yQNNXeVHvE0soUdLDTHoWXfS5Z5e7XqLWpiCGOzUuOKFDZ cpz2Q9B1vNoj
llihX6QvJHl+gYozZohU+dHZck6k+9hF4lwx3U3IUtS1FBIRmx2aqeQMOGKz 7mttLccxDBFx
hQuflddOAAAAAAAAeBvV67N+WXMLdd6JYYRCIlnMHxPWHU0nh9GfrxlgWSIx oUjYPvnX3YlE
RNzd7UM/ICLplD8/7SJOv/L30b9PPYnKZMnQolGnDuNHNnYUMSSLXjdh3dF0 svuwf0DMxb03
Uo17T1o/3irmxJF1/94LTVEQMSJzK/e2XT//2BNThN551ZPddHRsPmvW5cqM 4SIikYEkKzvb
pVmnqOjYxj3HlPohImv3Ftl5eSIDSamCPON2TZ0VoWd+fhgfnZly6fqpP1LN +jWqIyqzm39j
+5z7Z9aFJcdnp1y4du5QDjFEDJE8+eYXu48fz1YRYxzQytMo6sy8K2EPM7Lj 0xOv3r+y5l6a
gjFu39JN78nJhTeehmVmxyY/P/YgMqn8b19g434/f+9uRnZkVNCy66n2Xt5u lPzv5VunY1Pj
c3NjEiIupaosLYwEuiJqtkqpraCuKPqGLhJ6HhGTrCJOkXbs0o1w9Z5aD4HT EV1HxOImEd/W
QSpOuX8iVcGR4vnjK38ll3vsemL/JvYZ9y4fTVNypHweenV3hvqk6Ggt8Ywl xvzs6ODUnPT8
gnxd7azMdQUAAAAAAAC1HcOrYEADI7RwqmNa+NjYVmoprWclYbLOr1i7fE9o VJaRa0NHO2Xq
3UN7vlgWnMwWl4vbt3/njSx9sUiPR4qoi8t+uxWaorLxqN/Ux95CkXz3VlwO vlnxPfByI7m0
DNYSCERat5eVZjx199rFgz6bq2uH7Ly8K3s2pdVZYFm6QgvXLj/7n195effQ AtKTOAzo2Xe0
JZ/jWI5TN0vdAsbKvduyzJPLTu3aw+q7ebUeZ5+2jcdwHMfK0h/GJzdUqDiO L3YM+L2X4eqr
5ybekhEJrOo49Wqlx3AkceqwttuVH68e//iakvhGnp7+zTw5jfpLPxZaNB0l iZi//UIKJ/Js
2G1lC0shpQtyItYfuhwvJ+Ib+3h2WtzETMCRjoic8kWrDPjaCrI6olCnTh1u Hzs7eN1ZI5G4
qXez9rE3VBzHaT8EHdFJri0iV1DcUYzIts28JseW/LNuI9/QxbXZMIfIbeUc O0eWbl2WZp5a
9s/6tXwDG3uvIfbR/3AcR0Y6WssZSVuNtT36867NK0jUY8CYb3T0EpaeBwAA AAAAeDs9PTTx
o0OFj137bf6xhWU5Owsses6baKZek8un/6rvPYyI5BHHJt2QEZl9+OO0MfX1 lDEXpk8+GR18
9nBUo7HSooLihnPWDGpryVMqOPn9c2lEZNly+ne9vIwZIjYrKU+/uidGQi3E pCfHqx9dPHkg
IacPEU2YYFd+maVLn75i1JTsNIvcXwvys/pOLJ3qOrB+schAkmq1wJJfPXkN Nu3PXX9faDhi
U6MqfXFgpaqOCto1Ntxnx0c+tq9xvu+biVJVtbNV8Jb4+ut6Nd0EAAAAAAB4 zbQuPK9OcikK
5xgWTleUlfy19MLzXPqZ9aPXRJeN4PnFN8tapa2fsO5oOpn1mvTHRHs9IiJi k27Om/jfQ5aI
SCCxcPGs3/6DgO4NxUhzvTM2bIgjIhvjQ/5d+2pur5lTbCk2T6GpipBhd45u KfVUxrOHwvYn
Xi3DxcmTjoXn13ewsqTcO/fO/ZVdZ3JdY0y9BQAAAAAAAHjj1ImtahgfYdy8 h49tcRpDYGdX
/IuxRfF3qPHrNJ/3k/Dg4ft3niRGP099fD318fUY2jChtw0yA++4alh4/uVY GJtTh+OJZbbb
dJipY0JkFahk4Q/P/HQ2T05kYOo0uHuHvmKmeppdAkccFS94/7q8mShVVTtb BQAAAAAAAG8/
Pp9HpOLkciVHxDBGTo6WFJ1CnKRlh3HNDBkiUuZF3IzgSfWKV/jSWOtLlZue adFw6LTGQ4m4
7JCFY3YEK5LuJyiR5HrnvdxIrtqe1tC3nzpw7NSS215Dm/mOzYefaf6aKn/D UaqqdrYKAAAA
AAAA3noCSxcJ3c2gR/9O+fSchUOLWV/4Dm9+c01Q7tmFPz3xcrDi5cY8jkuS O8zY6l3XUEt5
Zezlb764oXKwd6ojUqU8v68gIjN3K8xWfPfV2EguAAAAAAAAAIAyBE59e/d+ sP9IWG5mfFKm
PF3GM+045zPRP8f/PR327OGTaBKY2Dv7tWrhbsRoHXfBM3P2bRJ5/XHM3WgV EWMsrd9pWJ/e
Ugzjeve9zMLzP/wQ8drbBQDvrnnzXGq6CQAAAAAAAPC2qs6F57OzC6qnUQAA AAAAAAAAANXh
ZZJcy5d7VXs7AAAAAAAAAAAAXlo1fIcnAAAAAAAAAABAzUKSCwAAAAAAAAAA 3npIcgEAAAAA
AAAAwFuvxpJcgYGBL102Jat45XtO29eFAgAAAAAAAADAe6XGklx9+vR56TyX pUT04jHDVFOD
qp0yZkvXugFrnypKPYaXVk435lz4xN1r2tXc1xVaV/04swAAAAAAAAC1Q01O VxwzZsyrjOd6
m/AMXbsM6O5pjNmhr6QWdmN1NUkZ9Uenuh03RL1MsuxVygIAAAAAAAC8KwQ1 GHvLli1jxozZ
smWLn59fJYs8DE848cfXJsZGpbZn5uR2G7/Uy9XmZduiUihIKHxtyROeud+X P1b2IN8XVe/z
auvG6jrdKgVrijMLAAAAAAAAUBvU5JgYPz8/dZ6rkuO51BmuUbN/HP316lI/ o2b/eOKPrx+G
J2gtqMq6s3FKV297qVTq0mboD8djFUREivA1/s4dftjw7YAWrlLHTr8+KUi9 vGpkm3pSqdS7
5+xtW0donZ5WEHlowWDf+lKpVNqg44TfrqezRETEFUQeWjTMz10qlUqdm/Sa cyRBqVlKc1Kb
InyNv3PAwt+/6t/K2825buMP5h6KVhARl/d416xeTZykUqnUyStg3J8R8vIi FtNaUFcUkj3e
PO0DXw+pVCp1bNRj+tYHOYWrmmk/BK3RdTX1BV3Ry/S5TMupUTxb19Gp1eKH sqLjyzo7wdN9
9PF0ruTcQFX6tTWjfNXna87+KNmL6FrbXCa0uhJF9I7Bbm6Dd6g7Rx72W8+6 XuMPJ7E66y9V
z8/nNxQ2SXezKz6J2WfH+i8IlT9e6OsslUq9ZlzPq3zPaysLAAAAAAAA8P6p 4Ylflc9zqTNc
w2ctFxsZKeTKpUs4Fxe+SMR3ceEvX8YZGxoNn7Vce56LTTw4dfD8G+5z9l64 fHJt35w/Pxn2
88PClesVYRv36E89GBIdeXycwcEpo9fEdvr5+NVr/3xm9M/Sczll1rRXZVyY O2DmZZcZf52/
duXk6l5pv4ycvC+eJVX6ua/6ffoPDVhz7PL1y4d/HuNtWP6C+Ionm/eZzj52 N+zJ5aWuJ6aO
WvNIpny+a9pXZ+vO3nf5VvC1Exu/6GKvx+iOqEF7QR1RiFQKntuwJf8GXr9+ /t+vvILnj14c
lEuk/RB0RNcdsYJjLNPnRke1nBqhfY8hbgkH9z9R789l3dx1UeU7vLVpiSBs 4n/TRq2M8Ftx
9MrVXRP4W74vPF/l9ZhG6In11IMYhQ6DVy1qfmf+539HKWSh66eueN5t5ZIe dfg66y9Vz6f1
hIUbdTe74pMo7vjnxQUeeu7zr0TGxsY+XN1KVPmeL1PWsLwrDwAAAAAAAOCd lZ4cr/45sGPd
+vWx69fHcm+Eqanpi8dLly41NTXNy8srZ/85g/1iY+Nyc3Jyc3Lmz5cRcZ99 Jk9Oypk8WU7E
LVoky83JiY2NmzPYr1RBxfM/u9k3mHoxU8VxHMfJn63rKPWeeT2Xkz9Z3c7O ffLFrMLdNnd1
bDIvuLAN+XcWNLfzmHolR7MqZfzfH7j4rngkK/xdHv5L+3q9diXIY//q5eg+ 4XS6qkTg6D+7
OLf/X4S81GP5k9Xt7OqPO5v5otI+To3n3Eq/O79Fvb674pSVichq7FOgraCu KKW6OPPMWI/m
393O55TaDkFX9DytESsTvXSf6zg1isiNXR1bLLpXwHGcKv3Ux+7uH5/KUJXo RsXzP7s5+Hxx
NVsdIffGnMZ2HlOv5OjssZKhS1DE7h7hXq/nnBntHb0nH09mi9qmrf5Sl03J s6y92ZU5iZwi
ckNH5w7rI+Uv0fMlywIAAAAAAAC829T5qwM71r1Iaql/an4J78DAwI0bNx46 dMjAwKCc3fQk
lsc2LVYqlUqlctMmARFNnZKvp6ecNjWfiP74Q6BUKtctmKwnsSxVUB53J5px CfAUq8cBCa1b
tLDMfBSexRIRCewaOaq/qVEeezeGcfGtV9gGUV3f+vqlhyfJnl+PyI9c3amu VM3Zf9mTgvSY
9NzooEjOrauPSaW/6VFg39S5MBLf1M3bLO3hU4XLR8M9785q3fqD8V+v2nkx MpcrJ6LmXEj9
+loK6oqSo2JTLv8yvksjJ6lUKpV6jjyRlR6bpSSZtkPQFZ2vM2IFx5ijKtnn uk6NQNp1SIOk
Q/vDZMRl3thxmdoNbykp2bnyuDsxTP0AD2P1r4ZuAW56TEU9Vhy6ZEvt+q/4 vlXo9n9TPli1
qIslr7z6qbx6tDe7MiexlFfreQAAAAAAAID3UQ0nuQIDAyu/9rxnk9a7f5nL KpXx8QwRWVoo
WKXSwlxBRHFxzI9fjmkd0FVHUS3ZJ4aIiOELeJXOTBFxKo7fZPXt6FgNl7/w 0Kt8DUVYxYvZ
ahyrZImIDBpM/+/O2a2zutiln185tG3AnAsZqkpF1FpQRxQu9fjMsavjuvx8 5l7485jYsD0D
TPm6Z1bqiq47YgXHSFSmz7WeGoFtlyENkg7tfZyfcX3nFab9sOaS0vtxRDx+ 8drxTNE68uX1
mK7TrcoOu/6ogCg78llGUepJV/3l1aOj2S9x2bxazwMAAAAAAAC8h2oyyVWl DBcRuTTr5Nmk
9b7f5kuMMohoy4pV+36bv3XlKiIyNkhuHdDV2r1F2VJ60iYOXMSF0Bz1r4rE mzdTTDxdJaWO
XM/OR6qKuPI0X/1rQeSVJ7LSyR99hxZ1KfTgtVRV6e3NnZmwk/cyKz2uRhl1 5WFhdkKREBSU
buZV15hHJDBxDxgydeG6/0795ptycNeDfF0RSytTUFcUvfibIXKfCeM6uFoY 8BllasgjdVZH
6yGUF117xEoco4ZyTo3AtvNQr+TDe66d33GFHzCsmaR07XrSRlIu+nZs4Yr3 8vg7zwq4Ctqs
gyr9wqIZu00+27KqS8TSaZufyMurv3xam125JvH4PCJV4S5V7PkSZQEAAAAA AADeTzWZ5KpS
hsvUzDQrO9ulWaeo6Nh+AwqI6FbsNI+OY2/FTiOipp4nrd1bZOflmZqZlioo sO3+aUfFni/m
7bz5NCrkxKppK0JdRn7sU3p1boFd93G+WdtmLTn4IDom5OjKr3fFEUPEEMke rhnZ97M9MUri
2/T6YpD47KwJyw4EP42JjrhzdvvS77aGyfk2PWf20z887bNfTt6Pio16cGH3 9rPxinIPR3Ft
8dyt1yNjn5z73xc/Pa47bKQ38/CPxWv/uxoanZgYGXz8eJjS2qOOnq6Imq0q 0FZQVxRxnQaO
vPBjVxIUxOU92b1odYh6KJXWQ1DpiK4jYnGTdEUvNR+1vFPDt+k0rGHK3/MW XRB2HNa0TI6L
BHY9xrdN3bLknyf5HFcQsXfZpkhSl9PVY5o0mqpKO7/w871mU//3eZeBS1Z2 iVw2bWOYTHf9
FdDW7MqcRBJIHGwFsYFXwhJS0jJyuSr1fMmy5cyCBAAAAAAAAHiH1WSSq/IZ LiLqNn7poU1L
s7KziWjixLjRo+NPnzZr377puXOmkyfHtG20LzsvL/jwn92mbyhdkm/9wa9/ L2wWsrhfO98u
k/YbjNm443OvsisqCewGrN0yzfbU9G6tWw38JWvQl20NhXoChojNfnor6H5s AUfEMw1YenDT
OMnJr/q0a9Xaf+CXOyPEDqY84pl1WL5/7UD5rkndfVv69pmx5WE+U+4sSKH7 5GlORyf5twwY
sblg4NrtM7z0efp6iceXj+3cumnTth+tSeixauPE+kKdETVapb2gjih8m74/ LuscMbuNh2cj
/8kXGk7taab+lkGth6Ajuo6IGh2lI3pVTg3fuuPwRnmRSUadhzYRa+lCvk3/ X/+cQL/18vJo
2HbCuYYTfQ15RLrPUQkvmqpKPbvg8/0W03/9zNuA+HW6L/6xR/SKqRtCZTrr r4C2ZlfiJBJJ
fL/4vOWTeV2bNWrYdu6tgir1fMmyeZVoJgAAAAAAAMA7h0lPjlc/unjyQEJO HyKaMMHuDQQO
DAysfIZL7WF4wok/vs5Iz+g7cW6ppw6sX2xqZtpt+gYvO2G1NE/xeFWHrkfH XDw+zklQLRVq
VB2+plPnw2MuHfvYobqrfuNRamd0AAB4zZ6n13QL4O3naFbTLQAAgFosJyfH 2Ni4plsBtdeG
DXFEZGN8yL9rX83tNZaCqGqGi4i8XG1o/NKtnwfcObql1FMF8Y+6Lbj/ahku LuvOv0fSvNs1
tKaEa39+9b8Yn2+72CFFAwAAUAzpLagu6msJqS4AgPeQQsHm58tVKo4r8y1o DMPweMyNG1c9
PNwqm+RSxmzp2W5L3zOnPqsn1Hxc/Q2vTV7qSFUZV38a/9mvVxJZUfeddze1 fxeziG9ZEsfL
1WbFodDXVDmXG7Jj1tdfJMmIjOp2nLhp5Qind/xlAQAAUAXIcEG1e56OPBcA wPtFqWSfP09b
tuzc3btxSiVb6lmBgG9nl+nurgoIaK+lMJd+6EPvT29obLEYfuDqV65dBnT3 NC69vowy6o9u
AbsGnz8x4WU+2XOp+/v5TAnS8ozt+GOBC3zKLoH0CsppaslD1rdp2n/G0gUj vLWt6VNhtcqY
vfP/F9ljy9VZzUwNjN7FDBe9dUmu14kxabvw8O2Frz2O0HX6xcjp70aU2hkd AAAAAAAAaqW8
PPnPP19KTrbv0KE3j1c6I5GYeOv8+cm2tl/m5cklEgNtFTCClov+Wdhc/V1y jJ6li4G54Zc/
VnmmmHYqhYKEQh4RMSadVp88ls0SUf7dpcO+ih2//Zeeljwinsjatcx60zoq qSaMoM3SA0ta
iWTJd3Z+N/urYeRy+aeWL1GPMjUimV+vfXNH87Lf7aZDtR/La/c2tRUAAABq SoXDuNKzC148
LjP5AAAAAICISKXibtx47uraODaWjYqSaf6EhUWfPz+lUaPpt24lqVQ6byb4 pvW8fAo19LAz
VMVs6Vo3YO1TRYm9ss+O9V8QKn+80NdZKpV6zbieR1QQeWjBYN/6UqlU2qDj hN+up7NEpAhf
4+/c4YcN3w5o4Sp17PTrk8J6BJK6hWG8XcyEjJG9Z0MfHx93/Rv/G9/RUyqV Sh0b9Zi+9UEO
R9oqKUi9vGpkm3pSqdS75+xtW0e4e027mkuktQ3amlrqkMUOLm5uHg3bDvlu +VCr1PPHIwpK
PC97vHnaB74eJVtVstoGo+d1c+m9NUkWONZTKq039nw2kSrrzsYpXb3tpVKp S5uhPxyPVWg5
llXHfvR37vTzvjVjfF2kUudWo9bezsy6t2lSRw+pVNrow2WBaaWH49UsjOQC AACAirFKZfk7
SAwEFe5Tw5RR27t6be9/++jU+gLNxzXdrrdAzqlPfUYY/hWxyvd1zG3AGQAA eI9wHKdUsjwe
n2VL3zZERCzV07NwdR0cFfVb2eW6qkjc8c+LCzQn66kyLnw5YOa9bov/+qGN jfzRnvnTRk62
uvDXIEsiUoRt3NNpy8GQ3VbKfK7cP0sqBc9t2JJxa1zNlTGX1n/59ejFDS4u bWFEJSvJiTs4
cfSaxCG/HJ/QlHd/8+xZ53J4A9RtmKutDaWaWg6evpGQWBlbsne0t6p0D1D+ h1/5Dny24s4/
XSRExCb+N3Xw/Eddl+39rZ1x+N9fffbJML2TJ2Z78UseS1b4H0cUoevXNJiz 4tBXwqCfxn09
esxZB5tu3+2ZIQ75bcLn01Z1u/xDE62D7moE7ioAAACgYixbu/6b7mWwKhVH nIplWZbhDJy7
DO3sbqR6Fw7s9WNVHHHqrtO+g/LZlq6Ndw++fWBivarfXOJ2FADgvVM2hZWe fjk5+VijRtsq
mnDGyU4O95AW/lLvy/Nnp1QqwcImnVh1QDTh8IKPPPSIyGHa8s8Odd16IWXA ACIica9vpwfY
6hHpGZVfjYH3mCne6of2Q79beOrInMNP5rdozC9RCS/zzKYrklH/ze3b0IDI cc6SoMM9/y6v
DQMrcwREivR7f/+0K07Uwt9Zn/IrblW5f2CVccfWnRUM2Ll4RCsJQ66zfp19 yu9/m+9N+alJ
qQ4REJG446LFY/0kRK4zR6zr/Id45ebxAWYMuX8+Yd2Bv6/GK5rUnnX+cVcB AAAAFSv7360v
hEclhexfaC4pPcYnLSunQf/5rk51Xirga1gDglWqiIhjWVbJkEmrWf9rRURs mTVvoSyW5Yg4
lVLnZcAqVVzhDkyVay9/ZRMAAHgHqVTEcRQf/6+VVQ+BQEzErFxw9AAAIABJ REFUPXv2k7l5
O4mkhUpVflHNNbl4hrZOAkqqTETZ8+sR+ZFBnequ1tjoHJOuJAGRwK6RY+VW kmdTLq/9esGm
kyEphX8RDXpkKYn4pFmJPPZuDOMyo15h9k1U17e+/j/ltqH8PJ1mXs+o4Zhf l3e14FFMxa0q
N98jj7sTzbhM8BSr/3ALrVu0sMy8F57FNqEyHSKQNnFWL4LGF9uIhbaN6xkz REQCsY2EyUvL
q+CUvVFYkwsAAAAqxuoQ9iwhZP/CsV/9NPrr1aV+xn71U8j+hWHPEsqWUqTf 2PJZm9YOxh72
lp2Hzj35PJ9lWbbg0W/+5r2+/+X7Ae6N7U0++CUkN+ncryO8GtkbezRsN2/L +nHuDl9ezipd
V+6TIwt6dXYz9rA3btlp+IaryXKWZVlWmfvkyMIPurkbe9gbN2za/rtD0XJW xRWN5GJlkX91
tej5v8eyorg9F66a39+ztbu5T+OOCw88K2BZVpn9eOekQU1MPeyNPZwcen7y e3h+eRGLaS2o
Kwqb+3jTJ0N8bT3sjT2c6g6Ytv5BppLVeQg6outq6gs51xc2sRh9PL3w18xT n3k4f30tW3er
WEXKxd9Geas7/9u9EQUccaxKR2szzo1pujRU9mSRj7e9sYf3hBvZleilIjV9 aQMAQA2Qy9mn
z34ND5//4MHE/IKchITjOTmPbGwnyeRKubyCPw0aa3J5u1rpVfY/VzgVx2+y +nZ0rIbLX3jo
ERExfAGvMvWoUo/PHLs6rsvPZ+6FP4+JDdszwJT/YlBaJSoprw3lYAStlxw4 ffr02cu3wx4d
X9zTtuSwqXJbVUHNOjaVOhaGxy/KHTFMid+o1i3FiiQXAAAAVExXhiv0wPej vlwhNjJilcpS
P2Ijo1Ffrgg98H3pPJc89uj0D5bd9Jj69/XDh//onrN+2sjlD3NZllVxJI/Y vEs46URgeOLf
Y/SPTvtoXWzX7w/ePr59uuG/CwNzC2fMFVOkXJrXc95l14l/Xjt+/sIP3VM2 jB57MFbOKpIv
ftN11m6u109nD18K2rHiY3cRq2RZFXGkKqxC47GKI/nTzf+KZ549d//54e/r n50xcN3DXHnk
ljnfnHCYdeTwlZDjR7ZN7iQVqHRH1Dw+rQV1RGFZpYzc+y86cOjS3f92fOt2 ++vJS65ms6z2
Q9ARXUdETSoVafSeSsWROt+no1Xy2MMzBv0a4f/dgeBjWyfzts0r6nytrTVs u+H6bHc917m3
gp+m3Qv+X2Nhxb2EJBcAwPtMxZFAYMkwwuzs2+FPvoyJWWtk5G1k5M1xnO4V 56uKx+cRFQ0M
03doUZdCD15LfZVRR4rYmyFynwnjOrhaGPAZZWrIowxtQ5z17HykqogrTwtn FBZEXnki48pt
Q4mmlsWXOLl7enq6O9cx4lelVeVVqydt4sBFXAjNKawk8ebNFBNPV8nbniR6 29sPAAAAb0LZ
HBarVF5e+/Hwz5eKjYx0jNFhxUZGwz9fenntx5ql5DEHt5wX9FqytH+TulK3 bhNXfOX6dPPO
u1msUqniyLjb/HG+dfgq4qcd33HVZNCSeV08pNZuPScvGG5DHMeWaIAi/vDv h0UjVi7s3aSe
tZ1nu4krx9pe++d8vCz2wO//ybqsWDeuo7fU2rG+76AP29ZhWLZwSp1SyWo+ VipVHBl2njeq
mQkpeVYBsyd5P929/W5mWlSGwLmFr4/U0tK6XqtO/TpbMzojKjRaJdNWUFeU XKWw/tApH/h6
21vbOjUdMnNux/yz+8NzlApth8DpiF6gI6LmD8cRFfceyxV1ptZWZcUc3HbJ oN+SBT097W08
+k5fOMiicH/trVX3J6nY8s+LQttVVNOXNgAA1ABWxVlaDnBz3yQUWmVknM/P jzAybqJScSoV
x1ZXlksgcbAVxAZeCUtIScvI5Wx6fTFIfHbWhGUHgp/GREfcObt96Xdbw+RV q7JOA0de+LEr
CQri8p7sXrQ6RNtYKBLYdR/nm7Vt1pKDD6JjQo6u/HpXHDFEDF9XG0o2tap/ GnW2qtxqBbbd
P+2o2PPFvJ03n0aFnFg1bUWoy8iPfQyrGLzWqbE1uQIDA/38/F6ubEpWgaWk cH4oxxFT9bUf
AAAAoEq0jrgxMLU6tmnxoGmLyym4bsFkA1MrzeL5scGx5DrM1VDFskTEWDZv ZJ75KDxd4aXi
SGDtJRWwLEuUH3M7jufyiaOeuqxA2tpZf2eptc/zo65G5j+729v+D42IDjGp 2dE3nnNugxqI
VZrNVidiOBXLskyJxyqOBDYNHQojkcTZwywjJFzuNPBDt80LOzTb37FL6/+z d95xTV1fAD8v
ixXCkqFhKSggiKKigIAgiuLCrXXboraiYEUQV5VWFPcEW0XFto6qdeG2bn6I e2/EBQguVhhJ
3vj9EcQQ3oNEWYH7/fjxkzzevWfcc19eTu49zzsgoLe3hTbGJFFMGJftNeA0 p2kIDFIKpG0K
rm6IWRp/8fHnOhqaAXkSoojOBCbpVACdRHm+LN0iAGSF5IEqXcVGo9XHNzcz sZbjbbRkh3nN
fWx4BymSIAjJpxQabQkWQX7uH2PWU95LCAQCgWicYBjG4bAJnAAM09Fpa++w Ky0trFB0h89v
R1GAsTCCIDgcNlYN3/MFHjN/7jRxnn+HCNAfuv/aGp8lh7eYzIuJ7BebD6Bl 5uwzIlxftXU/
bLPAFTHJkyPc7cMFBuYeY6b1TllFt06K02xwbMKbkJmhPbdK9NqMjAjv8nQd j4MBS59BB0VV
O6uSa2LWSqHbJeW2ObJN+6/f/WF2RPQAr1zQsPCcEB/3s6MmgFQll9Q76izJ 1a9fv8TExK/L
c5VluADqcYYLT0/o7ZUQeOZ0cAuu/Ou61qt2IPOurpn045qkbEKz118n/Fb4 x/U4ee7nFtmN
wg+iCz90mKKTcHWde/knczS+MEAgEA0JporjDi5ue9fNHTQlivavq2cHufn4 p5w/Jd+cICgA
IEmcILCy97Ka5SSFsVgUSeBE2WECL03ykARV2kq+K4Jiufxy5mAf43I3qcU3 yM9t5W4UCLxM
EFb+NUkBKZXgpUXTpVIpAUAQXLtxf930Sjlx6dKFS+tGbIodue7fJc4MEssV sKdr2FmbXor0
w9HFwatzx2zascnd0kCr5EZoYHAhIdtbWcEEJnsBgEaintw5JEFhsiQUDgCA 4wRV6kx62wkK
WGw2VeZ8jI0BSeLS90ej6LUlKNlKLgLHKtETlflHIBCIRg+LhXXubPXo0Q0N TQcMY3M4TVq2
jE9/s1Rb24miKBLH057fdXe3ZtGWt8IM+h1I76dwkGM+/tSL8RVfA6bjPOWv K1PkTrXoNWt7
r1kK7W1DL74MrUxlHY+4x5/LvGu0GLbm9LAvheNDJ9F3wjbyDNuREgYAANIn q3wlxv4mXAAA
Hq0OUEHVz9CaDAqWMmlVwQMxt9Lk+mAJXIJiTwfFlu+ZW96W8m/ZwrEnX4wt U84w8OCLQBqt
65C63K44fvz4pKSkOlSg9mBp2/YY3MuB32h2h+Lp++evfRGQcPnew1sbvIyt fQf42wtqKx+J
v9rs17zbplf1LgFdXWHwLQbWW+cgEIh6D1M1JZsOfg4ubvvjFlT8J8twmdq5 KjRnmzo3hecp
j0tLyIvfXr3zSc/GSociSBK+FI5imziaEs+vp4lkb4teJr8QU1R5BThm7S3g 8elr76UVjptj
Ty/e/YSXO0ySFJTV4Sr3GvCMK/dzZb2IM+7cztFrZalBEQTwrdyGjA5fv3HP +vafDh96IGKS
WME1ig2ZpLAzrz6Tthk+0ttCj0eR4o+PHuXjFMlgQmXSaSTKm64h0ISiTwWy hpKc1KwiUlaT
i1YrXTMnU+r1vfTS8vUlb2+/EVMUQYgz6LUlCAowIAlp1XpWVByBQCAQjQlt bd706V4tWnx4
/253ZsafmRl/vs3cxWZbvn93MjPjz/fvdtvafAgN9dTWVuu1v1T+7X92nX2Q /v5D+r0jMTM2
pDuP6tGsztYYNSrq0ssJCQnjx49PSEhQfj3Xg9Ssk5tn6/F1FI7niQp7Tlzi aGv2tbrUwHPK
5WEZeoav+MrNmWoJ/vHZO3bzrh0tDQUAAB7hqz0AABp12Q1SSug3sjBAIBAN CtpkBF8gyC8o
sOngd+Lwv4GT5yr89dUf0aZ2rgVFRXyBoFzzJn4jusRELZzfZlFwB+3nRxav fG71w1w7DaJ0
idfnxIdx96GuS5cuWOL42w+OrAf7o/95ByyKJAmi6NmWn1Y977fgt4FmRv7f 91sdtuDHjURk
H2dj6lPqzbMXqT6RA639xwWsiJgX0mLhzO52ukUvrj8kPfq4ESSALE+GEeVe UwDSG0tW7Dae
3NUg4/D8+FTr4b/Zkw/jN1xu4u7pYq5HZF068QI3dTFkU0wSW1BlWhmkbtta oSHBIEXLILUp
9u/5lEyvHqb4i73r/ngEmDlBEJQRnQnu9NJ7S3fQSZRzFLtZ+w6Cv/fsf9Z9 og28OLkm7hkF
LUuzUzRaaRqbDeu4bM2aPT2Wj7DEXhxbuy0doDVJYgZ2tNoSoG1qyslOSU71 1zHR0OIzekmt
v7EgEAgEohrgcNiWlgYrVvQlSYqq8GA+DMNYLExLi8fh0FRYVyOowoc7wmbP fCcG0GnebfKW
5aOt0HaeWqEulxZ5enrK8lxKrueSZbjGRqyo+JDysRErTm6e/SA1i7YhmX87 fqq/k7lQKLRx
/27RiQwpAIA0da23te+iTfMHu9oKLf3WPyv5+L9VY9xbCIVCp94Rf24fbecY crlQsa+Sl4kL
h3u0FAqFwtbdJsVdyZHds1MlLxN/HelpJxQKhdYufWYdzSqXz8HTE/yb+8Sm ST/L9YnaGDmw
s1Mr6+bt+s9NfCMFAKroya6wPi5WQqFQaOXoE7TtuaQyiV+gbcgkBcRPtob0 97AXCoVCy7YB
odvvi0ovK/Qm0EpnUrW0o5zEgTZ9t78TJ01wEJbhufpphcVDynaOv4rvaeUa dbfks4Tc/4Ls
7X84nUvRnFxwdoL3wseSJ1Ee1kKh0HH6lSIGQdLUtd7Wfqv3rx3vYSMUWnce G3srL//ulp+6
2QuFwraDYpI+KXpa+mbH8Fathu+QeVLyNK53c8eJR94RAEDmpKwd6yELnlkH XolLG5SPsdXn
N5WGgfTF792sOkc/EH+2KP/sJAe7cSdyqKpHXGkDlXQOAoFAKAdt4XkzrykH /liUX1DA1Kqg
qOjqwXiznvPLNSSNui7cNtXp0e/fdx8+IuS0xqjf1v7Ugo0TuKwYfGnxcoIy 7v7rxjHGZ6JH
dh06MTY/IKS9FocLBIFLCl7cuv8ovViCEyS/Q/juRSN0kxYPGdmn66iJcxJf 6JhoUwTJd521
c36A+Ehk/xG9fScv+OtpIUHi8sXRFV5zm4/5sel/IaN695y5u6Tnb5tG27Ap Nvv92RWRw7sO
7NktdHOW1/z1Qy0wRolyWtE3ZJJi2GtmpO+rRT69unYaGXmx5Xh/AZsiCZze BAbpDBLlHIXz
Wv+0bKjmtolerQMG/HzLcWJHbYzCCSatCNKoW9TGodTvE33a9u0fnNJqgosW RhE4o7a4dtuJ
wW1eRH3fq1PfwF/uFjJ5iSaKnitNbQY8AoFAIGoOLpctEGjp62sbGOgo/NPX 1xYItLhc9c5w
AWB6XaKO3ErLyMjIyHia9NcsPzOU4qolsJz3b2WvLp46lCXqBwCTJjWrBcEG BgY5OTkAkJSU
pMx6LlmGa1TYUn2BgCRhxQp2/BZORgYIhTBpIh4WRuQV5O9YOYtmPReRffB7 7+BH/jHrQ734
qbsjg9fnTz51MsKRnbrWr+uy144/JWyP8DbGRZlHJncLzx6xbu2k9qx7WyPC Nt1mDd53rVxZ
JTL3Qrhf0N2e0YsmuJtJHu1bEPIH97cLfw81zT87w3fM6dYzV0YOdBKIUq/d ojxHeBE7aGty
SVPX+nVd9qr1tN3/hLvrZh+f1f+nWyOOn5iu/Xcf7w0tY+Jn+pqzc9Pu3BG1 HdTDgs0gsemX
OY+/2kLTEOilzHQg7ydsuW/t3dnWEE+/9Ef47HOeey8ucdUhc2hM6KqVTCd9 oCSBRmK5OVt8
M9JjyItlt//pIQAgsnb2c69Qk4vBmbSdN/uwa3CXZQ57/7ekgzYA+fHIWPdZ +vGXN3jk0NmO
vdrc02fX8PMnJ1lxKxm1Ji/W+nVd9s520Kzon9y511cGzb5i62Zh1jM8uKvu w7hJP18KOPK/
RS5a5YIJz9g9tts8ybwzu4YV/96/1x/N487F9jZmE9n7x3uFpA1YExfciXXr 9+nh2x9zB++7
tq7j2/Ixlv7PEN/tgWdOB7eAV5t6e2/pevTiPCcNACrvzKTOU/B1V7b6C/Kq HHHAlTKQfpgU
nINAIBBKczblEe3xV29z3ydtFBUUVFzJdeiPaL6urrH/PCu9atiShqfFfj/u vwG79w0SVveN
rzRtx+iBF4Yc2zi02ruudSmqUg+0sqqqGL2NjY3sRfXmucq6RSAQCAQCoXZs 2pQJAGb8RG//
clXB6n5TqKenZ1BQUL9+/TIzM7W0tJhO+2ve0JBVe2QPKV+2nBsVxQ0Oli5c IFmwkDdvPpek
qLAZOiNCF6+bMTRm9yX5hnjm8d/PcgbvjB7dWYCBbdj6iNOeG7benbrSBQBA t8/8UJ+mPABW
3pktyYKxB+cGttECsJy1+PqR3rsVdCDenVx1SHPSkYXD7HkAYBGyNDjRf/uF DwO8/1t1oKTv
1rjpfvoYAJhbOwEAng7M6PjPmeJuyAZo5h8R7uwWs/1B0Mg3ORwrT5921mZs MDO1sAcAILLo
JQ4eYVq2Bo/Io2koeyBCRSnBMe2dxk91krU0/+6XqNNHZx15tsC1zadjFU0g sv6hld63NZ1E
FWFyJn3npt2/d/tl3t+353bw4JMfziVc1u69s4MAiJd0J+NKCRo8GABAt9uv 0RM8BQC2M0b/
3n2z7vKtE30MMLD7edLvh3Zffit1KV8iniMcsiL6aLdZU+bfLNyV2WfTjl7G bAA88/imC1rf
7fllSFs+gNW8mJTjAw6VtSmLMZ42p6wsGVfYc4R99B8HnoY7tdGg8q7tvASe GzrrYUR21SP+
TZ5s1DtGEQjEN8FUeN7chE+6T8za8v3tYwkKfxK9uW817ZA5X/y1ZZeowkeH LuXau9iZwIfr
h5fHZ9vN6NSEYtLk6yHKngxYk1fJ2pGiKvVAKxsbh8pP+JbcViWZLJQyQyAQ CASi4VH3Sa6k
pKT4+PjExMRKMlwAwBM0KXtI+ZYtWgAwbWoxj0eFTCPi4ribN3NCQ4p/XziF J2ii0FCSefsN
ZjPJQVeWX+Cauro2ybubmk+4AACnWVtL2ZMaJRl30jGb6S1KddBs7tFS4x+F rsSvrzwvfnnd
r/kauYPW6TmFb66/pFpNcNZTurI6x7y9dakktn4rJ4NP99KkNsNGOWwPc3Pb 6d/dxzdgUKCX
tQ7GJBEH07IfPTVa0jRkkiIi2xZejp29cMuph5+f/K0VkI+DmM4EJunsQCaJ KqBa56wm3t93
lYb+dT3fw6vg1PYbBoHz2uoAAKPtVQvCgQPAEbpYy57NytY10+U2bdeCjwEA cHTNBFjRp6KK
T4PlNBu47Lf9ntP3aA1K+LVHExYAgCTzdjrWcpo9X3aKdiufVrzDXxp8jrHy /Qj9R7T+beOB
pxFtnIqv7vgfeMV1EmBQrMSIf5MnEQgE4muppEC40ERXOHsvzfGuQQCSbygs TuGix0djFq36
KAHQFnYePT9ikAlWA5XKCbJcLbAaonakqEo90Io22SSfM/qW/NE3ZrKUF41S ZggEAoFA1Afq
OMml5F5FGWUPKX/7FgOAJkZSAgcjQwCAzExsRfh42UPK6ZrSfLfHAAAwNof2 waQMUCTFdllz
/fBQk3KraoquKN9FKYS07FaSKn2atlbr0IO3eyUdP3Xu/Onl361cPWrn6RhX BonloGvYVYde
CvXxRNiENR+D4s/sdm9uqFWSEtJpfKFirb+q7AUAGon6KtZ3U7Fz/c4T/Nk/ /Jny3vr1n/ea
Dl3WWpPRdr5ygqSpABiL/fkghpV7BwAViiACAABZ8PTKoxIA/OWLXByMeAAA FACL/eW5BZj8
MwyYYozTtMeI1lEb/n0Sbv52ZzLW9feOAqxStzCikif5tF0gEAhE1dRJEkSr 7YyVe2fUuBos
i6EJl4fWVO+1K0VV6oFWtAkd5XNGleeDvjFbVGs5suqVW42aIBAIBAKhXtRl kkulDBcA2HTw
A4D9cQsEOr/l5BskLFulL8jLzdcDiOZrvS99SHmFJBdP6GJB/XfhsWiQpy4A SLOvXfug185W
wAJRudOaOQvJi8lpxQEuWgBQ8jL5mZhSWBWmYeHaHI4cTvk4uL8xq9zxjtbY 8VN38wbJ9vpV
Df4q+UHuVFtjFoA06/r1HINOzfksAJaenc8IO58RwdMChrvO2nV/gWcLeomK cBQbdu1ML4X3
NvGhxHl+kK+tIQaAf3z4KBe3ZDKByV56iZ6Kj7ysHJU7120/rq/Od5t3JGQ/ tR4RZ8tjPtmN
xWYBkGTVglSHzLnw6/S9esEJkWmhkSFbfQ/82JIHPGFbIXX1VobEX8ADAMnb 2y9KKMOquuI0
7f6d44K1+1Lavkxm+2zuIFBeW6UNrMo5CAQCQUvFL9g2NjZ9fDscPXejTvRB NEKqfQnV12V5
6jBHVr1pKbTQDIFAIBCNhLpMcqmU4dI30C97SPmAwSXbtsGNjJDgAemxseYA 0N7hlOwh5foG
+goNOU17/dhtcfDMeZ3Xh3bRebY7ctljm8nrnLUVT2vWK8hjcXjYYtd1k9qz 7m2bvSsTWAAY
gPjB2qA5TwNj1w4xN+szc+iKUWGTYqj5IzoYUx+eJR8/Tw6eN86294wBy8aE BK9bHTnAUVCQ
evUW4TnCuzJzpCnRc7ebzfE3fLEncuWT5hPXO2EPNkefN+7m16GFAfHm9Imn uOkEEx6bSWIr
qkyrJk82r6zQkEmKrtFzS9a+48lZvfuaSZ/t/XXNQ8AsAYBtRmeCD7304dLt dBLlHKVEWDGZ
xtA5AGg5jhps6L98MzguDLSWVcoqeUBnO0dg0ZSTkZT8dIBuU00tAZMPm1et JACUs4v16XzU
z/8aTDv6cw+HguVnfIND4rsdnNJKo1nAxC4x8xf/M2jTaFss7d+YLS8BOijh Ar+RbeZHzftV
zO32d3tBpW6RH3Fz5Qyk96RCW32dut+xjEAgapdvyQigPBei2unjW/UHZuUo mXCprqVhKlF/
NlqilBkCgUAgGgl1+Q1X+QwXAPScuCRx8+x+P8wGgMmTM0kSjh0z2rPHxNhY MmVKuqFkf0HR
9JtHtvUM3aTYkm3af/3uD7Mjogd45YKGheeE+LifHTVLS7N/gdNscGzCm5CZ oT23SvTajIwI
7/J0HY+DARAFaTeu3+tYQgGw9H2WHN5iMi8msl9sPoCWmbPPiHB9FrAMfJce iF0yK+anXstK
gGfSbvgir0qXdHHtpoRYHfvJe142YdhubOxf0x01IJWXfWLphCWvCyjQaNZp 2Kr4yS25gDFI
BEmZViwNuoY4vRQ2BK6ISZ4c4W4fLjAw9xgzrXfKKhIA6E1gsJeVTycRir44 ShlU6xwAQKPV
0BE2scv1xvX5nEWjtx0EHjN/7jRxnn+HCNAfuv/aGgYfKklZAJAfzy78+YBR 6LFgJy0ArV7R
KwJ8f5q2qdvhafZmA9dvexMa1sdxEc/A3GPUZI+kCnFIA9u026i2s8KuC4Z8 56JbuVvkR1xJ
Axk8qdi2s2K+F4FAqDE1uqQFgVBraqK6Vo1Opfq8iAylzBAIBAJRb8Fy3r+V vbp46lCWqB8A
TJrUrBYEJyUlKZ/hkvEgNevk5tm5Obm0DynXN9DvGbrJsRmXtq2qSJ+s8vU/ Nv7iiSCr6s4D
SlPX+nU/Mv7S8e8tajDFWDtSapmiqxFdRr6Yl/zPYOULViEQCEQDoREmsGQm NySLVKXheUA+
jBuAXQ11VtZVJbJqAZUzQyAQiEbCpk2ZAGDGT/T2D5Q/XmcJEFUzXADgaGsG E5ds/9mn4kPK
S94+6rnw3rdluKj823uOfnLyamMKWSnbIjekO8/v0azhJIjUG0oqynn/bN/S AyW+cd2qobQW
AoFA1Csa6ldlVVHwQ4O3t0pkHmhIqS55K5jCXo0src87Jb8FNa3WXy3NK4IW miEQCIR6oWZJ
HEdbs2WJj2uoc6rw4Y6w2TPfiQF0mnebvGX5aKvqWRaG+GYKk0NdR57ArQeu XONjoMLzMBEI
BKLOQQmsSkBZLWVoeKkuGUy2NIDklwL1pIh+rVGfN1rWeZ8oZYZAIBA1TZ1t V0QgEAgEQt1p
GN9IaxOU1foWGl6eSyUaXvLrq1G7pWG1hlpvtPwKUMoMgUA0ZurddkUEAoFA IOozKIFVLaCs
VjXSUJd0KYlKK78atn/Uroh+rdHAFpHVslBUzgyBQDQMUJILgUAgEI0OlMCq OVBWq6axsbF5
/vz58+fPkW9l0PoBLfuS0dh2Sn4j32JdA1hEhsqZIRCIhgFKciEQCASiQYG+ qtUyKKtV+zTy
JV3K0HgKflUXDbWIfq2h1tX6a4j6vNCsfnqsAfDhg7S4mHzxojgvD69rXRBq g4EB18FBm6Kg
SZPqqYmOklwIBAKBUBtQAqs+gLJa9QSU6voKUPLrG0FLw2qIb1xEpnYbLb+C +pwyA/VxY03z
9GlRXh5hZ6fVurV2XeuCUBvy84lr1woEAnaTJnrV0iFKciEQCASiXoC+EdVb UFarPkO7exFt
ZlQVpj2PjbDgV3WBlobVGmgR2VdQ7SkztNBMhp4ex8JCQ18fJRkQKmBszOJy saIisro6RPGH
QCAQiBoHJbDUC5TVUi8UlnTJXqA817eDln3VAmhpWJ3T2Kr11wSonFkZtrZa Ckc0NFi1Jl0l
xOJqS6kgvh0TE1419qYeSa6+nmtVOv9IUmgNaYJAIBBHCXnbAAAgAElEQVQI BdAXj/qJSjkO
lNVqAJQt6So7gvJcNQRKftUJaGlY/aSRV+uvIepqb+a3y623Ka2KqJGqCFVR jyQXAKR+eiwu
ZGG4Fo+jyeFwqSJcm8vWYBNiSTEOJTgplhLFBIj5Aq7QrHNdK4tAIBANBJTA UkeUGTWU1WqQ
lC3jKgPluWoTlZJfXzcuqARblVT70jCV+kSoBFpEVjs0KmMRCFCjJFehiOJQ GsXvNYql3DYm
AlMLAQtK3ucXiMQ4DmSRuFgikZIYKWbVm+c44OkJvb0SAs+cDm7BlX9d13rV DmTu5ZUTg9cn
ZxOavXbe2dKVX9cKIRCICqAEVsOjkjFFWa1GC8pz1TlMBb+UP5m2LRrWbwTt lFR30CIy9QD/
uD90VcIbANsBW1e4Nqmz5VMll+f8tuQ+YG3H7PzNXqeutEDUCmqT5JKwNCRv uAG9Wowa6EJl
CQgj/tVnKQV3X1HFFFFSxM3FeflkkaSQxaqXyw5Z2rY9Bvdy4NdL5WoCPP3f BRteBiRcDuug
r6WjaoYLf7W5p8+u4edPTrJqJDlBBKLaQXfkjZCKgy5/BI11Y6DanxeGqDm+ fc8jSnXVGmin
ZMMDVetHIBowapPk0hXqp73KHdbNvkdQ++IsCIrckVMg0tXT5uhoSCVcrg5g GhSeVYIR1Fd1
T0qlwOXWWA6KZegZvsKzpnqvh+Afn79nt+ja0dJQUEsSa3gEEQjlqJ2vHCiB hVCgkpBAYdCo
KBtutGlRfVE1+YVSXfUHtDSs8YA2WlYPZP7l33dtS87MyscBgKVr3Lab76TR zkJe8eXoZUuu
Stlth2/91dkAAyrn1pwJ+x6Qml4Lw8Pba1Il7y/uPLbnTOqbAhI09Ozc3cf+ 0KWNHguKny0e
k5AigZYhs1Z0F2Cf39pNndBm77Z92QAA1J2/vusPAMLDh6fUrfWImqNWk1xJ SUn9+vWr/JzE
xERPT5p0kDlXx8vXoihVmyiEuav2EOySZgJdsoQgMCkXtHlAYZSUEBcQxZKK bcn821vnRKw5
+CCH0rT0nrBgxaxeQi5IU9f6dT/oP8fz1uZdKW+bhZ05Ne5D3PSZG86+Fhu0 HRUxPDN6mWHC
1XXu5RczlrxMjJm1ZEfSqyLQs+szdcnSyZ0N2ABUycsjy+Ys3XHhhQi4Ju2G L9oS3VOulfx2
RWnqWr/uB/xmud1OOPIgu1DbeeRvsQv7WXCpoie7589Ytu/2Oxw4+i17zNwS N8GGxyjxC7QN
MQYpIH6yNTw8/tSNVwXAbuI8cMby6LFOfAxoTehjxqGVzqRqqT45iYOcfrwK ABMchKDhv+PO
Nh9deitolRGdneC98DEOUR7WUQD6Q/dfHHeo+6DUpXf2+AsAAEQXfug4Te/P lFUumQojeGaK
xonKfYVA1BjVtYAC3fgiVAUt3kFURP4SgR622DCQf4ZmRVCqS71oAEvDUMh9 C2ijZSmk+M3D
zAIdsza22pyij48ev791aM980jBuokXbQCfdq7cK7qbc+OjUvQmWf//WYxJA 16GXgyYQuWdi
4tbdlABgAhOB5F3ek/Mn5j4VLVvdy/5zx5iCIIxrZGWin/0uFwAwftNmmiwN 49o1FVGr1GqS
y9PTMzExcfz48QkJCQqZrKSkJNrjZdy4ccmS7ew8ZkLY/DMXr99za+1MinEc o0igWCwWh8PR
1NSS6PMkihENQGQfnjZ8wSP/mH/jvPipuyODfxjJO3UywpENANKn8fv8Eg4/ 3GuMizIPTx63
NnvEuhOT2rPubY0IOydiDVboisy9MHfwjLs9o/9e5G4mebRvQciYKcYX/h5q mn8ucsCPp1vP
XHt8oJNAlHrtFkVVuqJM+mzr/l67j99x180+Pqv/T2MNbE9M194VEnm2Zcz+ WF9zdm7anTsi
HsYssemX1A3+mq4hg5SZDqSU1Wrk4qC1toZ4+qU/wmePi259cYmrDplDYwKD 9IESJokAAIAZ
9DuQKoz0GPJi2e1/eggq8VtTemW6bbu4UH67YvGtQ8ye/DKChTn/m9urcl8h 1JfXOXWtAQAA
WBrQHKz8bkNVzbmGSt181BOHIOoDlcdMIwkV2rlZOY3EMyAXIY3H5HrFVwSn SshfAdAQNzCU
vCWAahr6r4hVZVJdKCyrF+WjgpbKh6Omr1eKsA37xMwfqgOiTwUisSQjcfuv R/M+JN9NH2dh
a+fercmtQx9eHbuS59tb4+HZVwSAnrtrSy2QpCbvuCkB4LQN+XlBdz3xg2PT Zid/yLy847rX
rx0/98wqnxTgGPWeN9lQVpPLeeAqVJOroVPb2xU9PT0TEhIU8llVZrgAYHrU foyiDkgxbVM3
/4COHDaXokigSJIkKYoEIICSSqXF0mJpWvJJ+YZ45vHfz3IG74we3VmAgW3Y +ojTnhu23p26
0gUAQLfP/FCfpjwAVt6ZLcmCsQfnBrbRArCctfj6kd67FXQg3p1cdUhz0pGF w+x5AGARsjQ4
0X/7hQ8DvP9bdaCk79a46X76GACYWzsBAJ5eiR90/OdMcTdkAzTzjwh3dovZ /iBo5JscjpWn
TztrMzaYmVrYAwAQWfQSB48wLduYR+TRNAQpvZTgmPZO46c6yVqaf/dL1Omj s448W+Da5tOx
iiYQWf/QSu/bmk4iM0x+GzzClFaZdqpEZdkIsgvPrq7KVwjENyK7Myi7A6j8 F/VvvAtBIBDK
ozA3lTkZgagdVApO5bGxsUGRjKheZBEl/aTyEi2mVBcKUUQVUMVPD+7d8G/q e0LuoChXRABo
mfUMMD701/vUE/ezuhifvY8DCDz9m2kClfPq9UcAgKbdOupxAOPYtumol3wi j3j9MEf6OcmF
YRVXviAaEXVQk0shz6VMhgsAPh3e6tbTncVveS5xv76uri6XAxROUSRFSUlK QuBFuCRXVJhX
UkTyoKl8Q0nm7TeYzSQHXVmkc01dXZvk3U3NJ1wAgNOsraWm7LSMO+mYzfQW WrJWms09Wmr8
o6CD+PWV58Uvr/s1XyN30Do9p/DN9ZdUqwnOekpPJo55e+tSSWz9Vk4Gn+6l SW2GjXLYHubm
ttO/u49vwKBAL2sdjEkiDqZluwM1WtI0ZJIiItsWXo6dvXDLqYcfSp9DqRWQ j4OYzgQm6exA
Jon0MFvRJP9/NMqoEpVfRlAZXyEQ1cLrnNJbQCbQdw8Eok54nVN1KgHNTUSd oExwKkNZHgFF
MqKG4BraWBp8zZ44hVQXClFElRQ/OL58T6oIOLYBPXq35hffOrX5bB5QQAEA sJt29bD7+9CT
V9dOnDe5KwYwdu5uzQUo2y7FkMfCAAAoWZ1uQlqM14IdiHpH3RSeL8tzBQUF xcfHV5nhAgBW
l163i7mtMI12nXqXFOXwNHQBSIoiKIoECiehhMA/Coql4iLu+4c3K7SmmQIY AADG5rBUSPNS
JMV2WXP98FCTcmuDiq4o30UphLQsX00ROAEAoNU69ODtXknHT507f3r5dytX j9p5OsaVQWI5
6Bp21aGXQn08ETZhzceg+DO73ZsbapWkhHQaX8i4s5JZOo1EfWYNGfohPx6d oYwyWPnxoyjy
y0lyI6iMrxCIaoKpujMCgUAgELXPlH5rVTo/LjG0hjRBNAyqXMmFysMhVIYk pBJcUvpFDeNw
MVH6OxEA8FqOHufZXqvk9s0j8qezjVsHuhxddvPjoa0fAcDM18WSBwCYjpWl Ebz5CJlnrud5
ddcTP793Iw8A2JatDbjYR10NADHkphdIgV/84E4qKdchmwVAUhIJTtGmBxAN hzp7uqIsz9Wv
Xz+mSvMKnP93cWsryxFO32e9v7l7a5y7ty+HzcVAQrKkBFUolmaLitJyP2kV 5xpZWXWQb8gT
ulhQ/114LBrkqQsA0uxr1z7otbMVsEBU7rRmzkLyYnJacYCLFgCUvEx+Jqaa lNdBw8K1ORw5
nPJxcH9jVrnjHa2x46fu5g2S7fWrGvxV8oPcqbbGLABp1vXrOQadmvNZACw9 O58Rdj4jgqcF
DHedtev+As8W9BIV4Sg27NqZXgrvbeJDifP8IF9bQwwA//jwUS5uyWQCk730 Ej0ZtzYz9SPN
uEarDACLzQIgP1+TWFoG2lCYU0yCgAWA56ZlFJIVfw2tTFsEosaoWN0ZlPj1 MqegxEBXtgYR
KIrppygEAlHNoLmJaBjQRnLqp8fiQhaGa/E4mhwOlyrCtblsDTYhlhTjUIKT YilRTICYL+AK
zTrXusqIRoHyy7jQxbYxkpY4eVji5zfGYzdO62ttrg+ZuZLH8RuOd9Z8feJc cbnzMR2XwNY6
N+8WAgA08etqzAUAAF5zj1Htr627KbmzbsX4fwTi7LwSAGjmPqqjDqbB6mjH PX1N+m7/lp/v
6+U9zS780h2niY0A7uTCoz1TfzxnZOG6Zp5HLRiNqBPqLMkFAJ6enhkZGdra 2sqcbOHU6vKt
5O+nPN68Zfur9Ofpb+42MbLG2CRJlkiInGLxpwKRSUEBl8tTrDLOadrrx26L g2fO67w+tIvO
s92Ryx7bTF7nrCiU06xXkMfi8LDFrusmtWfd2zZ7VyawADAA8YO1QXOeBsau HWJu1mfm0BWj
wibFUPNHdDCmPjxLPn6eHDxvnG3vGQOWjQkJXrc6coCjoCD16i3Cc4R3ZeZI U6Lnbjeb42/4
Yk/kyifNJ653wh5sjj5v3M2vQwsD4s3pE09x0wkmPDaTxFZUmVZNnmxeWaEh kxRdo+eWrH3H
k7N69zWTPtv765qHgFkCANuMzgQfeunDpdvpJMo5qnxYMVkx2qQ1rTLAEVg0 5WQkJT8doNtU
U0ugb+Hprhf357+P+/3kAGkHl2x4QGFOFVzK7Cu0W7EhQOAMq43xV3/5O/41 8NaxaS1r93JG
I63s3u7F+yrWRgu0OIwW1RPkHVtnTq4zyNz/rf9h5IZLmYRm4Nb/eq/uttzv zJ0Qm7eNwg+i
0z86j9b++/kqD36542oTBpVpV+W8Q3MTUZNU2yjRRmmhiOJQGsXvNYql3DYm AlMLAQtK3ucX
iMQ4DmSRuFgikZIYKWbhTD3UKo07ksmci2t/GBOXlEloBm5/uM+LX3WT2kWF caBdtIUutmpL
rdqnae8/e2z+6t2P05Mulzi7jx4m/mNPttzfMZ3WHj6Gd49+ArDq6FX2MDG2 vl/kFO7OY3vO
pL7JzgOeXisP93E/dLHXwgC0XX8c0jvv0LGnRZkfTHtO7pO57ehtSalpVoF9 +94/cPRpYd7b
d3kStJ+2IVPH81TJDBcAXDq5VyTKsPcc/zrrnrdTl6fauo/TH1NQTLKLROKi /HxezgeqRCTS
M6zQIdu0//rdH2ZHRA/wygUNC88J8XE/O2qWlmb/AqfZ4NiENyEzQ3tulei1 GRkR3uXpOh4H
AyAK0m5cv9exhAJg6fssObzFZF5MZL/YfAAtM2efEeH6LGAZ+C49ELtkVsxP vZaVAM+k3fBF
XpX+IMG1mxJidewn73nZhGG7sbF/TXfUgFRe9omlE5a8LqBAo1mnYaviJ7fk AsYgESRlWrE0
6Bri9FLYELgiJnlyhLt9uMDA3GPMtN4pq0gAoDeBwV5WPp1EKPriKAUY+mGb MCgDAo+ZP3ea
OM+/QwToD91/bY1r5LpJP07vbbdc09ihz5Qp3mfW0TiVaXQQDQKCIOj/QGlZ 9/iuu50OqXAG
/iLBv93e4bcOTW6h8mVOqbaVfpFm0laNIEiSAookCILAmJzcYMHT906PTev/ +5X5Lvpa2uR1
74F9W/IpQt4nNSj8G0K3WiBICiiZmeWOV1cYoLn5jTTquVnD1GlwqgTtgEtY GpI33IBeLUYN
dKGyBIQR/+qzlIK7r6hiiigp4ubivHyySFLIYrGYeqhVGnUk4+l7Zmz8/CnD 11LR7Nr4mKi6
48o3JDaEkWykIVoDMcUxGhQbPYj+b1oOQ8ZsGlL2NqDP6PJ/5+rZmAB8Atue TqZyqmGaxl2/
H9f1ezppxk4/rnD6sex9ny/LtdgGDpNWOEz6GhsQaobaJKNJsqSj60iXTlbD f5zk28bXt70n
FKdn5ecU4eISMVUkwkUiEReTSiQ0Vx6WwCUo9nRQbPmjXNvQiy/lCxKwjTzD dqSEAQCA9Mkq
X4mxvwkXgOO29mFG2Uk8i16ztveapSgC02wxIGrvgKhyB8efejFe9opj/uW1 TFaTrrP2jp4r
f7btuHWJ42gsp5copxVTQ1opoNFi2JrTw74UZw/9PNFpTaCXbkIrUVvOUVrt Y26lKWEFgzKY
jvOUv65MkevbO3Lfzciyt0FBAACgOIJMo4NoABAE0899ep3DNnQGgNLidmUN cJICisQJAlc5
H6FUW42v0hZSX717eCDKUKD4o+2nfFHrgQtsrUxU1FUGKZUCl1utKV0CJwGA IggCx5ic3GAp
fvc0i93ct51Qjw8A4DFtpQcAELi8T2qMbwnd6lGAoKBUAbmjpFSqWz1hgObm N9Ko5+ZXo9xA
1GlwqiaNLpJ1hfppr3KHdbPvEdS+OAuCInfkFIh09bQ5OhpSCZerA5gGhWeV YATF1AMzKJKr
l+J3qdnsFp8/ZVS1+msCVdUR/NZYRRdbtaXaLlPfjDR1z4GdN1/deAyg6TDE S19xuxYCwYza
rHNp296Tb6Ift2kjn6+Tlv1q85FdKU8fvMkSvf8gKRBJKEyso0tq6oKmJmMV 9aqg8m//s+vs
g/T3H9LvHYmZsSHdeVSPZmqTBEQgGjaE6EqUi9G4EzmEjLzTwfbWs1MKCPHL v/2Nem94Iibk
yT03vv2Sx+Jnvzo7mfPtnSZdLSCIwmdHF/bp3opvb87v5Ddq0+X3EoIg8IIn O38a6qJvb863
t7Lo/cPG1GK6thWoQlsGnr7IenggakLkynGz1yj8mxC58uGBqKcvsiq2kuZc TQh2d7Pg25s3
6f7d3FOviwmCIEoexXkb9vlt3W+D7dqZ6/Vf97Dw3bn1ox3bmvPt23jNS/gj yM4i/H/5in3R
OoEg8MJnR6P697Tj25vz27Tv+kviGwlBUp9/wCzn5JJHcd6GvaNWLRjo4GZn 6NyuW9ShFyX0
nqxM4hdoGzJJIQqfbPlhhEdTe3O+vVXzwSF/3M/DCUYTlB90eX3eHx1oPHx7 ljhpuKs53770
X9sNj4sJeZ+o0Ln41WYPp06Rdws/S/h4dKpD0+CTH3Alw49WUMmjOG/D/qt2 xY1v09ac36bz
4E3XP+bejv25W1N7c77HoF/+V8HT4ldbxtuZjv/7hZggCKLoaayXs9PIY28l BEFIP1yMG+sk
C575/z4voYAiSMUYW3VyW2kYlKRt7OTYed6Dos8W5ZwIaW02+dh7vOoRR3MT zc2vnZvMvSk5
ECX1OzhVgrZzc67OON82RanaRCHMXbWHYJc0E+jq8DS1uDxtnjZfR8A30tEx 0NBgsxR6QJFc
h58ybSecymO0glaZCsH2juEGSeUpUJ2xytAxutjW9xD99qGvPoj3t+9cf5hL CSwDIwLd9FDZ
NoQKqE0Sx5BqCbnQte3YmhNBFT7cETZ75jsxgE7zbpO3LB9txa05aQgEQgUI giTlt1CRJAWl
dx4kUECSRLkdZNpdNl2J6Oe2f8jlPT805wAA+eHS7N7z7vees22pq6n46YE5 c8ZNMPxvbx9J
wqw5J1ssOrrE24KT//z+3QIOWaGt6ovuaRs8f/3+2ZHFY8OX6eroSCX4ihXs +C2cjAwQCmHS
RDwsTGds+LI/l0cQfefYWBrL9ZV1PLR/zOOA+bvjO+s8PTh/YsgY7p7EOfZs kgLJ8627vDaf
TNphQhRmHAse9nv26CWHpziz7uycE5JUyOqrsOOMzEmeR+OE/iZ5SXP8w844 TVl5trejoOj5
lXsUgcs7ttxrkgJJ2tY93f4+e66z7vuTYWNChug1PzdZe3sFTxKElEGi2Zdf 44jXFYeAIIBe
yhR7Sgx2A3+d/JuNEZFxYfvsmVMWtz78W2dt8hONCdIPtNLpBl3eT3o9/sn4 e77LDy/WnPu7
Fx+AyPprtM9a2V3uFz8wOJOuc8ykZ1CbmOh99yLt22sDkDmXNiWze67uKJC+ /KPq8GMI3f5G
JAWSp5uXtQxb9fdM3p01Yxd9P/yCeVPfOYmT+Pe3Bk+NXB1wdGEHTbkIxJp+ F/XLwUELf9rr
ti+wJDZixSvfdbt9jYCQZBydPnT9i8GLDu1vj91ICA9NKuT1JQmCKB9jotcH z8jMZ5l1H2m7
9I/EJxEtHTUBqPyr25MJr8UdBSSDz+VGHM1NNDe/em4C0PYmyTitzEAU5Vye 51Ofg1MlaHu/
ceOSJdvZecyEsPlnLl6/59bamRTjOEaRQLFYLA6Ho6mpJdHnSbDyPaBIrutP GZB+uERvBU6r
jGKwFd84Sn+DpOoUqE7QxVadQ7SeoOm+OPpwXSuBUFPUI8l1JKkWnnOM6XWJ OnIrquoTv5EK
2yTVWAoCUVsQOE5RAAReWqYUJyigKAKX3cRRJE7g5RftEwRJAZCE7DiZfWTj Ec3Re6P6tuIB
gOnk5ROOdPvn/Fs/+1e5HGtXD2dhEzY0aWLaAgBK+yxr+3XaVjz4v9jvf16z V1dHhyCIZcu5
UVHc4GDpwgWSBQt58+ZzSYoKm6Ez6uclq6cPtY4+8KWrjMMJ5zl9ti4Z6CLA oPnkZZHn/dft
vDN1gTNOUsDvuSDIw4RNAnw6seOy3tDd83rYawEIpyy8cmrQTqrMXQDA7ISe XU5vPCjusfH3
IB8DDABMLVsCAJH+xbHyTsZxkgLt7vPGdtADHIx9In5y6rj+rzsjhtJ4UvqW XmLAELOyVcTi
T3RDIKWXMi6qQ8vvpraUtTQdMWPusf/mH0id1cEh51BFE8i3u1QY9HIjhhMk UBRB4DgBQMq2
75UPNkqViAJDv+GukUt3Xgtx7qJDZl/8639aPfY4aeHi51WHH9OoBQTiJAV8 7+jIkV34AJbB
YxJO/MFftH2khwEGLSdO2HBi36XMkrZW5T/kTfqvijzmvWjarLtFO7N6xsf6 GgCOSzIO/3lJ
a8CfC3s78AHMQ6OS/htxUBY88jHG1mBRn83nmPUMbBX158GHP9o5a1A5N3ad p9w3ttUhlBlx
NDfR3PzquUm+pemNSN+qzEBgeSd+r9/BqRK0kTw9aj9GUQekmLapm39ARw6b S1EkUCRJkhRF
AhBASaXSYmmxNC35ZFkPKJLr/lOG6To/xIxWGUdu+WBjukHCVZ8C1Qe62Kp5 iCIQ6o16JLkQ
CEQjh5BbuiV7T8nqJMi+V1AKK7kACIL8fD4GUPzq8sviF3f6mm+WO8Ui/SMV MGRQq61Rvh0O
dOvh5h0Q0NvbQhtTaPs12tL9HKalb3x8S/TQkGgA2LJFCwCmTS3m8aiQaURc HHfzZk5oSPHv
C6do6RvLNy/OuJkBtiNttUmCAACsSce2hnmPUnOkjiQFHFNHIYcgCIDi9FuZ LJsfLHmythyh
m7XGToXa4UxOKHhz9TXVamhrXVJebXnHlntNUsAxa2NRKgkE1vYGuQ9TJVY0 nmSSKCaMyx56
ymlOOwT0UgqkbQqubohZGn/x8YfSmzHNgDwJUURngmqDXn4A5aONlIUDScoH W4lqnRt0GtUV
j0y4levWWXRizy0D/7A2GgQB9LYrFbpigkMBx8y5dMgxbVMdblMHSy2SIAAw LWNdrOhDoaRi
BJv1XLjoaEDoYc1Bq2Z316MIgoDijJuZWMvxNqWlj3nNfWx4Bz+vAvgSY+VC Asw8Bzms3rIv
dZqjXcnlf1Owzis7apNEkRIjjuYmmptfPTeLaXtTciDqfXCqBG0kfzq81a2n O4vf8lzifn1d
XV0uByicokiKkpKUhMCLcEmuqDCvpIjkQdOyHlAk1/mnDLMVhqIUGmUIVvlg Y7xBUn0KVB/o
YqvmIYpAqDcoyYVAINQAgiQoTHZ3IfuhEicoIEmcIPCyItkKSS5K9jsngWMA BEFQLJdfzhzs
Y6z4g+W4v256pZy4dOnCpXUjNsWOXPfvks78cm2/RluGn8McXNz2rps7aErU 27cYADQxkhI4
GBkCAGRmYivCx7v5+KecPyXfnCAoAJmlWNl7mb0khbFYFEngRNlhAi+9tyEJ qrSVfFf0Tii+
QX5uK2euvGPLvyYpIKUSvNQ5UqmUACAIrl1FTzozuV2+bitdw87a9FKkH44u Dl6dO2bTjk3u
lgZaJTdCA4MLCdmWggomqDboevLn4CRJARAEgRMApOz7A1Eu2FTtXMdlnCdr 4t4rWc0yEh6b
DIm05RAETm87X7nQlaaSFIYBKRtikiQBY7FA5gGKJCmKIoiyePgCmf/scmoJ gPTl65wSQo9X
OtQsNpsqCx6MjZUGj3yMQfm51sR7uO3S2KNPZ5hk7biOeS921iErcYv8iKO5 iebm185Nht6U
HIj6HpwqQRvJrC69bhdzW2Ea7Tr1LinK4WnoApAURVAUCRROQgmBfxQUS8VF 3PcPb5b1gCK5
zj9lmPoh3x+NolemfLAx3yCpPAWqD3SxVfMQRSDUGxTNCARCDSBIDYEmFH0q kBIEQRCSnNSs
IlK22ISkQFYloTwUYEASstMJjll7C3h8+tp7aYXzCOBbuQ0ZHb5+45717T8d PvRApNCWliq0
ZWhi08HPwcVtf9wCgU4uACQsW7U/bsH25asAgK/13s3H39TOVaE529S5KTxP eVxaOVX89uqd
T3o2VjoUQZLwuQgHQbBNHE2J59fTRLK3RS+TX4gpqrwCTE7gmLU3x55evPsJ L3dY3rHlXwOe
ceV+rqwXccad2zl6rSw1KBpPVub2cq6pOAT0UtiZV59J2wwf6W2hx6NI8cdH j/JximQwQcVB
L0/Zz+IEUbpHoXywqdy5VtuB/jrX//xrz+6nwoEDzNmVnKxk6JYLAIIoVxOf IEHegDKkH8+v
mbOXPyF+btfnsZFbnhcTBEGwTZ1Mqdf30kurzpa8vf2mNHgURJSba2Ds28/u /ZmDl5P3JrM9
hrXWrsrn8s5Fc7O8AmhuViqxCocoORD1PzhVgq0hyDcAACAASURBVLbz8/8u Tr+yrT07W+t9
ysH1oW+u/vX2xp7sm7uy7vydcWfLy+urHiUvuHlm5fXjm+V7QJEsL6VOPmWY +hFn0CujGGyV
3CCpPAU+q18DIUqgi21lHq8vIfrtQ49A1AdQkguBQKgBBLtZ+w6C1D37n4lw XPTsxJq4Z5+/
05MAn+9iih5vGjdp1r4MCUGAtqkpJzslOfXtu0+fCnAj/+/76V5e8OPGY9df pr96cffMv2sW
7HtWXPQwfsOWgzeevMrOSrt35sQL3NTakK3QlvbZQ1VoSwdfIMgvKLDp4Pfq TcaAwSUAcCMj
xL7bhBsZIQDQ3uGUqZ1rQVERXyAoJ6iJ34gukuML5x+8kfrm0cnNc1c+t/pu kJ0GUfrL5ufT
jLsPdc3fv2DJqQevMh4d2xT9zzvAKJKU9wnF4ATKyH9cAO/svJBtZ+++znjx OGnv/osZ4nKO
LfeaApDeWLJid8qrjCfJm2fFp1r3G2RP0nmSSaK8VvRDwCBFy8CuKZZ6PiVT TOCFqXvX/fEI
MIogCFoTpCoNunzwyO1K+Gz9572xn/3AZBqTOQTBsxkQqHdt1T8vW/brYcGS xasS4ccUugoB
UHr7Lf+udIelnF3SD8krwk7qTflloq//7Ogub5ZH/f2kmCDAuMewjh//XbMn rRDHi54dW7st
HUqzeuVElA8DgmrSeYBjzsFf1idz3Qa01SIqcwuam2huVsvcpO0NV24g6n9w qgRt5xZOrS6n
3vx+SkRPv4Bu/j0/vn9MSAsIspjARRLJp+KSTwUik4ICQ4zHlu8BRXKdf8ow WYExKKMYbMw3
SMpNgRqJVdpu0cW2/ofotw89AlEfQNsVEQiEGkDgvNY/LRs6J3Ki12oNo1Zd x0zseGkjhRME
Ll9+VVLw4tb9Ry7FEpzgaredGNxmVtT3veaCYOC6xJgO4bsXGf62efGQHQUA mqat3AZ/r01R
Ivb7sysi16cXUsAz7dBr/vqhFhiBK7Z11lLU5/nz55VqS3ODaOY15cAfiwZO ngcAkydnkiQc
O2a0Z4+JsbFkypR0Q8n+gqLpVw/Gm/X6pXy5VqOuC7dNXfrL7993zwcNM9fR v639qQUbJ6Sy
9UXE55ONu/+6MXPB3OiRf0p1Hfv8GNL++e9cIAickPMJn9YJBMl3nbVzPv+X zZH948XAbeIc
MLNzgLxj5Qsq4wRJcZuP+bHpfyGjlr4j9Z0Df9s02oZNvaTzJMkgEf8yUvps 2iFgkAK9ZkZe
XrjIp9ciXYFZ5/7j/W9vJkkCpzeBQTrDoMsHD06SFFAEWVp4XuZpvHywqdQ5 DgBsy8DeVn9s
1f3Oy4SSHaHobVcqdGXKlAUAictuv2XbGqjPtfJxglVml+TjlV+XHDccnfBD Cw5O6XULndtj
3Nyfd7vtHmVj1C1qY8bCORN9lnD1hC4DJrhc3UZ9tvdLjFWoq23gNsyueM59 fmCAg+bnOKx6
xGt6blZ1JaHZQYPmpvrMTdreTJUbiPoenN8eyZdO7hWJMuw9x7/Ouuft1OWp tu7j9McUFJPs
IpG4KD+fl/OBKhGJ9Ay1y/eAIrmOP2WYgpMyZFCmQrA5Md8gKTEFaqTeOLrY qmmI1kQwIBC1
D5bz/q3s1cVTh7JE/QBg0qRmdaoSAoFAKHI25VFdq1CObm4OlfyVSdtXb3Pf J20UFRQETp6r
8KdDf0TzdXWN/edZ6VXDL6h4Wuz34/4bsHvfIGF1PxpcmrZj9MALQ45tHFrt Xde6lFqm+Oaq
oUEZU0+u6GWM6rvWHGhuorlZb6k8OFWiYiSvmnnq3K1trR17dvNquWzVZt82 vr7tPW89uvU2
/00RXlwixotEUpFIxMWkekY6di38Zqzw/xYFUCQ3bL49VtHFVj2kVKAaL1MI RC2waVMmAJjx
E739A+WPo5VcCARCDWCqYFo/YdLW3IRPuk/M2vL97WMJCn8SvblvNe2QOV/8 tbsEqMJHhy7l
2rvYmcCH64eXx2fbzejUhKp+v315glhNjkjtSKk1KLwo/8Pr46vPiD3ndNIn G4ZR6gmam+oh
BVEVtP5v295TQ08/btNGPl8vLftV6pE3OEGwgEUCARjOwiQ6uiQLA01NiqmH SkGRjFABdLFV
DykIRANFzZJcSUlJnp6eX9f2Q35JE4Gm7DVFAYZ+SUcg1IdqqRBRa1SirdBE Vzh7L83xrkEA
km+wksJFj4/GLFr1UQKgLew8en7EIBOsBtxGkGUlMKq761qXUmsUpSwdNOUy YeE761cXPtkw
bFJT0NxUDymIqqD1vyHVEnKha9uxX91DpaBIRqgAutiqhxQEooGiZtsVDQwM EhMTvzrPpQbg
6Qm9vRICz5wObsGVf13XeqkNyGkNlKPnbtS1CuXo49uhkr/WN20RiMYDmpuI ekvlwclExRKQ
NjY2KJIRNcrXxao8KETVlG8fegSiNmk42xXHjx+fkJDQkPNcZbC0bXsM7uXA R4/AVAHkNEQ9
oI9vB3R7h0DUQ9DcRNQfKn+ASRk2NjYVD6JIRtRzUIgiEIg6RP2SXAkJCarm uR6kZp3cPFuP
r6NwPE9U2HPiEkdbs6/VhZRKgcutsXQKy9AzfEUjSOZVK8hpiJpHmZ+50O0d AlH7oLmJqLfY
W+orZLVos1fKgyIZUUNU11oeFKIIBKKuUL/1Lp6enrI8V1JSkjLnyzJcYyNW jJu9RuHf2IgV
JzfPfpCaRduQzL8dP9XfyVwoFNq4f7foRIYUAECautbb2nfRpvmDXW2Fln7r n5V8/N+qMe4t
hEKhU++IP7ePtnMMuVyo2FfJy8SFwz1aCoVCYetuk+Ku5Mh2V1MlLxN/Help JxQKhdYufWYd
zSpXWhBPT/Bv7hObJv0s1ydqY+TAzk6trJu36z838Y0UAKiiJ7vC+rhYCYVC oZWjT9C255LK
JH6BtiGTFBA/2RrS38NeKBQKLdsGhG6/L6KgEhNopTOpWqXPGRoStJ6XdxoC gUAgEAhEPcCm
AnWtEQKBQCAQDRP1W8kFcnmuKtdzyTJco8KW6uroSCX4ihXs+C2cjAwQCmHS RDwsTGdU2NId
K2dBxfVcRPbhacMXPPKP+TfOi5+6OzL4h5G8UycjHNkAIH0av88v4fDDvca4 KPPw5HFrs0es
OzGpPeve1oiwcyLWYAUlyNwLcwfPuNsz+u9F7maSR/sWhIyZYnzh76Gm+eci B/x4uvXMtccH
OglEqdduURRVmd3SZ1v399p9/I67bvbxWf1/Gmtge2K69q6QyLMtY/bH+pqz c9Pu3BHxMGaJ
Tb88ghZ/TdeQQcpMB1LKajVycdBaW0M8/dIf4bPHRbe+uMRVh8yhMYFB+kAJ k8QqfG6XTdeQ
eLt/alWeRzQg1LFGgDrqjKhllNyvpCToa7OSoLmJUOBbdg7WIcpHcpmBtCZU /tdq5Pnz5zY2
NrL/a1RQY0M+gOuVb9HFtqZBswmBoEUtk1wA4OnpGRQU1K9fv8zMTC0tLabT /po3NGTVHl0d
HYIgli3nRkVxg4OlCxdIFizkzZvPJSkqbIbOiNDF62YMjdl9Sb4hnnn897Oc wTujR3cWYGAb
tj7itOeGrXenrnQBANDtMz/UpykPgJV3ZkuyYOzBuYFttAAsZy2+fqT3bgUd iHcnVx3SnHRk
4TB7HgBYhCwNTvTffuHDAO//Vh0o6bs1brqfPgYA5tZOAICnV2K1jv+cKe6G bIBm/hHhzm4x
2x8EjXyTw7Hy9GlnbcYGM1MLewAAIote4uARpmUr94g8moYgpZcSHNPeafxU J1lL8+9+iTp9
dNaRZwtc23w6VtEEIusfWul9W9NJVMLnizVpGuJvTsRX5XkEAoGo51TvvSlK mSEQCqhp9upb
oDVZ3sAqT6hRlb76O7msk69o2xiyAJWPb4M3H4FAIBRQ1yRXUlJSfHx8YmJi JRkuAOAJmhzf
Ej00JBoAtmzRAoBpU4t5PCpkGhEXx928mRMaUvz7wik8QROFhpLM228wm0kO urLFRlxTV9cm
eXdT8wkXAOA0a2upKTst4046ZjO9RakOms09Wmr8o9CV+PWV58Uvr/s1XyN3 0Do9p/DN9ZdU
qwnOegrrmZjhmLe3LpXE1m/lZPDpXprUZtgoh+1hbm47/bv7+AYMCvSy1sGY JOJgyvv8VqMl
TUMmKSKybeHl2NkLt5x6+KF0Q6VWQD4OYjoTmKSzA5kklsLkc85AmobKeB6B QCAaFShlhmg8
NMLsVUWUSVfJzqn9lT7Vm2r56gxXI6Sil1DaC1GfIQgCx3GSJMuOsFgsLpfL YtVFVSU8PaG3
V0LgmdPBLbh1IB5RbahlkispKUn52vMOLm57180dNCXq7VsMAJoYSQkcjAwB ADIzsRXh4918
/FPOn6JrSpN9wgAAMDaHpXRmCoAiKbbLmuuHh5qUm6tFV5TvohRCWlZZiyJw AgBAq3Xowdu9
ko6fOnf+9PLvVq4etfN0jCuDxHLQNeyqQy+F+ngibMKaj0HxZ3a7NzfUKkkJ 6TS+kHFnJbN0
Gon6CufQ+ZzWxkrchEAgEIhvBqXMEHUCyl4xoWRKq3rL26tKTeRTGsNSrBoF pb0aKg1gakil
0tzc3GfPnr19+7aoqAgAtLW1mzZt2qpVK4FAwOPxmJtSxS+Or1+yYc/ZO2+L AXSt3AJGTw37
wcdcQ4Uv6QCAv9rc02fX8PMnJ1lxAYClbdtjcC8Hfr0oW07lJA5qE6r/951t Prq1JlTBIWqL
+iW5VMpwAYBNBz8A2B+3QKDzW06+QcKyVfqCvNx8PYBovtZ7Nx9/UztXqJDk 4gldLKj/LjwW
DfLUBQBp9rVrH/Ta2QpYICp3WjNnIXkxOa04wEULAEpeJj8TUwqrwjQsXJvD kcMpHwf3N2aV
O97RGjt+6m7eINlev6rBXyU/yJ1qa8wCkGZdv55j0Kk5nwXA0rPzGWHnMyJ4 WsBw11m77i/w
bEEvURGOYsOuneml8N4mPpQ4zw/ytTXEAPCPDx/l4pZMJjDZSy/R88sjL5l9 TtOwi2XVnkcg
EAhEPQGlzBAoe6U8Su4orPOUlrwmCkeqRRO0gKuGUCbtRXsaAlGNSCSSrKys lJQUe3v7nj17
6ujoAEBhYWFaWtrZs2e7dOkiFAqZ2hY/ihvRe/FjpzER639xtdIRv71//p/4 X1a3P7nSTftb
dGIZeoavUCrFgKjfqF+SS6UMl76Bfn5BgU0HvxOH/x0wuGTbNriRERI8ID02 1hwA2jucMrVz
LSgq0jfQV2jIadrrx26Lg2fO67w+tIvOs92Ryx7bTF7nrDhrOM16BXksDg9b 7LpuUnvWvW2z
d2UCCwADED9YGzTnaWDs2iHmZn1mDl0xKmxSDDV/RAdj6sOz5OPnycHzxtn2 njFg2ZiQ4HWr
Iwc4CgpSr94iPEd4V2aONCV67nazOf6GL/ZErnzSfOJ6J+zB5ujzxt38OrQw IN6cPvEUN51g
wmMzSWxFlWnV5MnmlRUaMknRNXpuydp3PDmrd18z6bO9v655CJglALDN6Ezw oZc+XLqdTqKc
oxh8XvKARlVmzyMQCASigYNSZvUKlL36FpRPLtTD1Tc1qlIDWKWiRqhLyCGq nbpKlJMkWVxc
fO3aNT8/PyMjo7LjfD7f2dlZKBSeP3++T58+mpqaNI2lr3aGxdxoGfnf3mn2 sr+3buPqN2TS
e4kmAJl/e+uciDUHH+RQmpbeExasmNVLyAVp6lq/7of6LPK///v2iy9EOm2+ W7wpeoDBpQne
Cx/jEOVhHQWgP3T/5ZmPhnzerkjfxJJbfGuOx6DUpXf2+AsAAEQXfug4Te/P lFWdtOlFM53v
Ck92z5+xbN/tdzhw9Fv2mLklboJNJWvXShE/2RoeHn/qxqsCYDdxHjhjefRY Jz7xKr6P9x8e
iZcWOGsCAFC5/010m0qtT4nvoU+poNV/fdeXc0jGgzWVa1NvUb8kl/IZLgDo OXFJ4ubZ/X6Y
DQCTJ2eSJBw7ZrRnj4mxsWTKlHRDyf6Couk3j2zrGbpJsSXbtP/63R9mR0QP 8MoFDQvPCfFx
PztqlpZm/wKn2eDYhDchM0N7bpXotRkZEd7l6ToeBwMgCtJuXL/XsYQCYOn7 LDm8xWReTGS/
2HwALTNnnxHh+ixgGfguPRC7ZFbMT72WlQDPpN3wRV6VJmm4dlNCrI795D0v mzBsNzb2r+mO
GpDKyz6xdMKS1wUUaDTrNGxV/OSWXMAYJIKkTCuWBl1DnF4KGwJXxCRPjnC3 DxcYmHuMmdY7
ZRUJAPQmMNjLyqeTCEVfHMWh97mEVlWMyfMIBAKBQKgASpkxgbJX1YtKi2Xq bX6hFhRDC7jq
CWifo1pTzy/gOI4/fvy4devW8hmuMoyMjBwcHO7fv9+xY0eatlln/7nD8to0 yq5cBoyrZ8wF
IvvgtOELHvnH/BvnxU/dHRn8w0jeqZMRjmwAkD7ZurdvwoG7f+qm75ncOzyy S5e/A7ddXPh/
9s4zLoqrC+PP7lKkF0WQVSwgVbGFoIiKokjEbuwau0aNYlQUo0ZN7L3HLsYY fS2xxoJGo6LB
qBEL2ACVoqhIr7tT3g8LuCwzyy594f5/82F25p77nHvu7MCcvfeO/Ow8Ku5p ISkuE0OeJtHv
z3BK80Ug5vD0wKtNV/6xrXN9UUr0w4cZOio9yDJSof2w5eM32ZlTcTd3Bswb tcz5xgq3+n6j
Wy1ffTg8wLWNPsAkhQTdEHXd424qoN+fVsMrwy4KAdFYBMkf38n2bgSfTsjo BWDiROtKdUkZ
ISEhqme4ZIRHJlzaPS8lOaXPpPkKp07vXGZqZtrdf5eLddl0ovT5+s4+50ff uDi+YVlnD6WR
m7y7nht988LYBuWYmKwYlXKgHCNPIBAIBEIlUYYps2Lfr6fchKAW6k7+qvq5 gwrzsGwzXGQ4
WHlD5jlWPNXjBp6dnX3+/HlfX1/ZLMWiZGRkBAcH9+/fn8P2boB735tDL9+Y 56w48ImKDerp
scb+9382dTAWANLXO309t7b84866Vm83eXfa1/bUP6vd9AFk3JzkNlln750t XybuLpzk+rzw
vDSS26TVC86RWavrHeWWbv6cs/yKWqs79AubGXJiSD0Rd4xUWJMr7epY97kN Dt9c0lLn45kR
HgssD9ze4GHIfDg+qN3Sxr/fWuOuyxcQHq/Wt/6oWWty7dr1FoCV4dmOPn3k j2tYRkDdDBcA
FzsrTFhx4HuvsPNBCqdy3j3tvvhx6TJcbFrY0T+TmnVobomE0P2BW+NcF3az 1rCoaiYk8gQC
gUCo5qj7lKLk4acE+TIlJlX88amCqX4prQIq2FWSk9I4VFkqjrMYQQHVb9EF wdT070tWVpa+
Pu8KWgYGBpmZmerWKXkbFiuwnehkJBsUpW3p5lYn9VFkGt0KgLaFvWVeVkxk WLtWbkw2w1+T
DDVMeKWbc5fXbTpouNOBWW3b/u7T1avzV/37dGhkoMpQLjrx1rZ5i/cGRyRS sgN6X6VRQK06
Hcd2kvofvJfm0SE9+MB9sz4LWhgAWWp6VW2oEUkBFzur1WeflVPlbGbEoVnz Zn/IBQwad5m0
d80IzUh7aj4k8gQCgUCoIVS1n+6r06xMtSjBuBWNe+CvlLE5ZIpitYEs76VA Vbt7VwO0rZyt
cOzxqwzW2ZwrLcRxTHZIIJQ/xbJgi9XiMBEUFmBZ5nM1XNJ85fWc/U+F+YZc CL729+U1Q9dt
GP775ZWdTIt5ryPz6eLMMRs/jd/z15F2jc31ckKnfzk6kwUAgan7GB/RuF9D PzaK+fVxvYGr
nQsmc6rjVXWhRiS5yhOBSfsl5x4sKXcdbTv/G6/9q4dK2VBRkScQCAQCodzQ 0OefmrCQWcly
PZr7MF+J885IhqvaUy2X96qsu7e8bsG+xkUPgL6+flZWFt90xczMTL5TWlZd BrkuXLLl8Iuu
Ux10Cw5LUz9K9MWtGrBXrj/L6O9pBED6/u7dRJOWdsZCZPB4IRQJAabYIV3y Fnpm+shMzmZg
LASolOj4TMYM0OGTFqZwlgcALRMHryEOXkOmTvtqsNvcw08WdfLkbvLnRsbf jZC4Lhzf2c5c
AFCfIp6mUDZ554xaj+ppMHT3oaD3LxoN2W6nA5TEK/UDUiUhSS4CgUAgEAiE MkZDs1eVguam
zKrTg7qtrW3FPzCT9FaNRZW0F2cxTsrwQirBtEFCCRCJRA0aNHjz5o2zszNn gZiYGBsbG85T
0LYZtibgVM/lfQa9nTulj5uNfva7J3//b/cZw2WXVvt+22X51NkL3Lf4tzd4 eSRw9TPbSZtd
eSdFQsu4QT2t+JDbL/oa1aulZ8y3qLw8Og0825ls//XEs16TnRB9asXWcFbQ DNCqxyPNUz4n
fPe6vy26eLdpYkbHXr74grIcU5fj3Yp0SnT4I/P8BogMdB1shMcv3E7o0dNK +vLYTxsjICiI
kp7L8AHmPmt2w2Vxn0ayCU7qeqUQEHPTYpJuVRaS5CIQCAQCgUBQFZK9qrLI d43qby1UUpiv
vIo+qCVUwRTNbVX8+j4kw0WQp/TzHJVfUdX41q2JPotEIgcHh8uXL1taWhZ9 wWJiYmJERETP
nj15rAX6zaYfvdJk88qtm78N+iABjBq27fHNslmt9UU6vbccSZw3Z1nfDinQ beA5Zs/2711q
AVI+R4w9Zn//5YQFPm3mwHTgH//MVsF3A7fAzRO/ndHDYU0tCye/KVM6/rUZ AESW3NI85YW6
Ou8vrhqzIiadha71l4PW75nUtOjKOyz178IBX33+7Lb93rqVd76d084xwNis vsfIaT1C138e
daVrP3CI7bY1JqP86ucnedT0SiEg8eEbVQhIVUTD3q5IIBAIBAKhJlDxD8DV +BGo2sP3JFz6
sSElMFSrztJQVu8lqJRLumJyapq+MrdmUTE37RJ/iarTlaAQBA1tmkQiSUxM DAkJcXR0bNKk
iWxyYkZGxqtXr549e9axY0crK6vK9lHTyPp3Tvthrxbc/t+AusUs7lVdqCZv VyQQCAQCgVC9
KdtEgOoVauhzQg2Hr3PVfd6umImHVXNiZgUnlMkArupHmd+0Va9Tfpot59my 86iKorlt1NHR
sba29vPze/LkyaVLl7KysgAYGBiIxWI/Pz++BbkI3LDSjOSPL4+vOpnTeXsX ixqS4VICSXIR
CAQCgUCoEpTt1LACNPcZgKCcEs8NrAZraUHl9cJUXGyrYkaZkQxXNaMEl01F 3rfJUL6qj4GB
gbu7u7u7e2U7ouFk3vZ3G3aRatRv3UYvM653TtYwSJKLQCAQqiDk7xOh2lPo bdXKx+PI0DZX
fFYpeoSTmGQ1XSNoCMovAIV+lyYVv2KXIgINvhXb8uyrUr78qOB8A0lvlCVs Gdy0+Q4WRfX7
tlr3geqBfJPLtoE2ZmVZG6HiMOy0Nyq+sp2oQpAkF4FAIFQpNPiZikBQB9ml zqoyGKdaPqUQ
KhjZY6Gqj3CanN4iEMoF2ZeCJTdtAoFQ1dGwJFdISIinp2fJbBPTcuoY15Lt syz574VAIFRB
yI2JUNMQ2NrmjQ7ge3AiD0uEMiQmWYU8F/kfkUDgQyCwZclNm0AgVGk0bFWy Xr16hYSElMy2
IMOFqvzfCxUX5NPYa1u0VGGfoCLqBo0EmUAgEKoGtnJUti8EAoFA4CYqKqpg bTVy0yYQCFUQ
DRvJBWD06NFBQUElHs+lSQj17boN8HUy1LBMZOWibtBIkAlViGKy74lpxnWM 02T7LCsQCFjl
5QkEzaXgkanYEQHJ6TlmRmSYNqHsINcQgaACCm8zIDdtAoFQddC8JFdQUJC6 ea7wyIRLu+eZ
GCq+iDQ1I7P7hBUudlYl9YWRSqGtXW7pEaG5Z8DaGpDMK1PUDRoJMqHKQFHF FDDVT5MrUyUz
XBR+aYvtg/FfALTl9yvbLw1GSRjT8XVDGJ5CUMfykearv6x7VkvpfyJ0cV8M Yz2tYstUMtSb
gz4uB/s9OD+tqZb8fmX7pTGoG7Tiyyurprwvpl+A7cB/KMnXpzS2Gg1fw1cA x4E7Zf088zVg
CARpZsDL0OeCOChHIdtFbtoaTs1oJaG6o3njVzw9PWV5LhXnLcoyXN/MWTtq 3kaF7Zs5ay/t
nhcemcBpyKSF7fnOp1l9sVhs227o0ovxUgCQRm7q2Kjz0l0LB7jZiW28t7zM +XRr/ch2TcRi
cbMec349MMLBZfo/mYp15bw+u3iwR1OxWCx27jJx+51kGgDA5rw++9MwTwex WCxu1Mpv7p8J
hW758jPppJGbOjbyWvJLYD/3ZvaNGrfsPf9srBQAm/X88Cy/Vg3FYrG4oYvX +P1REmWKn+E0
5FNB7vN903t7OIrFYrFNi6/8DzzJyHvA5m4Cpzqfq8XGnMeQ5ow83/TD7Ac/ tGo8KDhvFAwy
ro9zdJ35bxaZrkioOtB0ddgYAAxoGjSLpn7o7Qy2sl3S7E1pGFmAYcpRnbv+ su7Z4r4X1QCG
YcEyNE3TNKvXqNvQrg4GTCW7pFGoG7TiyhdzyZXz1hToDbCltt0ItARyyt/h qrDxBY0pny5j
AaY86y/XrQx9LoiDwsaHbBpjGX3tK5eae9NW8V9WAqGKo5HJ2oI8V7HjuWQZ ruGzVhkZGEgl
1Nq1oj17teLjIRZj4gRq1iyD4bNWHVo3F0XHc9Hvz0wbvOipz8oT2zsYRh4J nDpumE7wpTku
IgDSF3uOewediThmQWW8PTNp1Kb3QzZfnNha+HjfnFnXMoQDFJxgUq7PHzDz Ufdlvy1tZyV5
enzR9JFTLK7/NtAy7Vpg328vO8/edKFfM+OMyLsPWFbp2Azpy31/+B658LCd 0fsLc3tP/sbM
7uIM/cPTA682XfnHts71RSnRDx9m6Aj4FeuJCuqiYrgMeVRmOzFSof2w5eM3 2ZlTcTd3Bswb
tcz5xgo3AyaZowk86v0kfIrFxNzhPZch/e6P74qLPIGgUSj5XfNptNX1g+6m RvUVjqekx3Ua
ecepCXemvlgkEujolMyUBwoMC5YBRUEAErEO/gAAIABJREFUdPgBHQCWKveR ERpECWLOG0Ya
LAuWLn4MYAmleeqXSMq4Z3V1lXpB84pEvvkQcXKJubGhwvGktAznfovsGtYt kTvlMEabphgA
LE3TlAAm7rO2ugOgKfIwoTLqBq3Y8squuRJf1RJAlW9YB6ADwJZISN6Wyd+p
Re: Dependency Visualization [message #35564 is a reply to message #35530] Tue, 23 June 2009 06:27 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Hi Johannes,
This looks awesome. I'll install and have a closer look today.

Regards,
Thomas Hallgren


Johannes Utzig wrote:
> Hi,
>
> as discussed in
> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
> I started working on a zest based component dependency viewer for
> buckminster.
> I just finished an early prototype and thought it's enough to get at
> least an idea and ask you guys what kinds of features you'd like to see
> in it.
>
> Currently this is (for sake of simplicity) registered as an editor for
> previously saved .bom files.
> It consists of 3 areas
>
> -navigation tree that shows a tree of the component dependencies and is
> used to drill down on the graph. The selection is linked to the graph
> viewer so if you select a component in the tree, only this specific
> subtree is revealed in the graph.
>
> -graph viewer. This is very basic at the moment. It shows the
> dependency graph with some icons depending on the component type and
> highlights the direct dependencies of the selected component. Unresolved
> nodes are shown in red, a double-click on a node reveals the node's
> cspec and that's about it :)
>
> -settings section. This section lets you choose between some layout
> algorithms and filters (only platform component filter so far). Filters
> are applied to both the navigation tree and the graph viewer.
>
> I came up with the following things that should be added:
> -better highlighting
> -tooltips and properties view that reveal more details of each component
> -smart highlighting of paths through the graph (shortest path to root
> request for example)
> -regex based filter (black and white list filter)
> -dependency reports generated from a bom with some nice pictures
> -zooming
> -image export
>
> Now I'd be very interested to hear what's on your wish-list for
> dependency visualization, so that I can plan on the real implementation.
> Attached is a screenshot and a bundle.jar including source code. Just
> throw it in your dropins folder to try, but make sure that zest is
> installed.
> Keep in mind, this is just an early prototype for demonstration and my
> first steps with zest, so the code is super ugly at the moment...
>
> Best regards,
> Johannes
>
> ------------------------------------------------------------ ------------
>
Re: [buckminster-dev] Dependency Visualization [message #35631 is a reply to message #35530] Tue, 23 June 2009 07:46 Go to previous messageGo to next message
Guillaume Chatelet is currently offline Guillaume ChateletFriend
Messages: 146
Registered: July 2009
Senior Member
--0016367d69d84648d1046cff3096
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Wow Johannes ! This looks great : )
UI is actually an issue in Buckminster and EMF + Zest will do a good job
here. Very cool : )

Best regards,
Guillaume

On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de> wrote:

> Hi,
>
> as discussed in
> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.htmlI started working on a zest based component dependency viewer for
> buckminster.
> I just finished an early prototype and thought it's enough to get at least
> an idea and ask you guys what kinds of features you'd like to see in it.
>
> Currently this is (for sake of simplicity) registered as an editor for
> previously saved .bom files.
> It consists of 3 areas
>
> -navigation tree that shows a tree of the component dependencies and is
> used to drill down on the graph. The selection is linked to the graph viewer
> so if you select a component in the tree, only this specific subtree is
> revealed in the graph.
>
> -graph viewer. This is very basic at the moment. It shows the dependency
> graph with some icons depending on the component type and highlights the
> direct dependencies of the selected component. Unresolved nodes are shown in
> red, a double-click on a node reveals the node's cspec and that's about it
> :)
>
> -settings section. This section lets you choose between some layout
> algorithms and filters (only platform component filter so far). Filters are
> applied to both the navigation tree and the graph viewer.
>
> I came up with the following things that should be added:
> -better highlighting
> -tooltips and properties view that reveal more details of each component
> -smart highlighting of paths through the graph (shortest path to root
> request for example)
> -regex based filter (black and white list filter)
> -dependency reports generated from a bom with some nice pictures
> -zooming
> -image export
>
> Now I'd be very interested to hear what's on your wish-list for dependency
> visualization, so that I can plan on the real implementation.
> Attached is a screenshot and a bundle.jar including source code. Just throw
> it in your dropins folder to try, but make sure that zest is installed.
> Keep in mind, this is just an early prototype for demonstration and my
> first steps with zest, so the code is super ugly at the moment...
>
> Best regards,
> Johannes
>
> _______________________________________________
> buckminster-dev mailing list
> buckminster-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>
>

--0016367d69d84648d1046cff3096
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Wow=C2=A0Johannes=C2=A0! This looks great : )<div><br></div><div>UI is actu=
ally an issue in Buckminster and EMF + Zest will do a good job here. Very c=
ool : )</div><div><br></div><div>Best regards,</div><div>Guillaume<br><br><=
div class=3D"gmail_quote">

On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <span dir=3D"ltr">&lt;<a h=
ref=3D"mailto:mail@jutzig.de">mail@jutzig.de</a>&gt;</span> wrote:<br><bloc=
kquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #cc=
c solid;padding-left:1ex;">

Hi,<br>
<br>
as discussed in <a href=3D"http://dev.eclipse.org/newslists/news.eclipse.to=
ols.buckminster/msg01102.html" target=3D"_blank">http://dev.eclipse.org/new=
slists/news.eclipse.tools.buckminster/msg01102.html</a> I started working o=
n a zest based component dependency viewer for buckminster.<br>


I just finished an early prototype and thought it&#39;s enough to =C2=A0get=
at least an idea and ask you guys what kinds of features you&#39;d like to=
see in it.<br>
<br>
Currently this is (for sake of simplicity) registered as an editor for prev=
iously saved .bom files.<br>
It consists of 3 areas<br>
<br>
=C2=A0-navigation tree that shows a tree of the component dependencies and =
is used to drill down on the graph. The selection is linked to the graph vi=
ewer so if you select a component in the tree, only this specific subtree i=
s revealed in the graph.<br>


<br>
=C2=A0-graph viewer. This is very basic at the moment. It shows the depende=
ncy graph with some icons depending on the component type and highlights th=
e direct dependencies of the selected component. Unresolved nodes are shown=
in red, a double-click on a node reveals the node&#39;s cspec and that&#39=
;s about it :)<br>


<br>
=C2=A0-settings section. This section lets you choose between some layout a=
lgorithms and filters (only platform component filter so far). Filters are =
applied to both the navigation tree and the graph viewer.<br>
<br>
I came up with the following things that should be added:<br>
-better highlighting<br>
-tooltips and properties view that reveal more details of each component<br=
>
-smart highlighting of paths through the graph (shortest path to root reque=
st for example)<br>
-regex based filter (black and white list filter)<br>
-dependency reports generated from a bom with some nice pictures<br>
-zooming<br>
-image export<br>
<br>
Now I&#39;d be very interested to hear what&#39;s on your wish-list for dep=
endency visualization, so that I can plan on the real implementation.<br>
Attached is a screenshot and a bundle.jar including source code. Just throw=
it in your dropins folder to try, but make sure that zest is installed.<br=
>
Keep in mind, this is just an early prototype for demonstration and my firs=
t steps with zest, so the code is super ugly at the moment...<br>
<br>
Best regards,<br><font color=3D"#888888">
Johannes<br>
</font><br>_______________________________________________ <br>
buckminster-dev mailing list<br>
<a href=3D"mailto:buckminster-dev@eclipse.org">buckminster-dev@eclipse.org<=
/a><br>
<a href=3D"https://dev.eclipse.org/mailman/listinfo/buckminster-dev" target=
=3D"_blank">https://dev.eclipse.org/mailman/listinfo/buckminster-dev</a><br=
>
<br></blockquote></div><br></div>

--0016367d69d84648d1046cff3096--
Re: [buckminster-dev] Dependency Visualization [message #35733 is a reply to message #35631] Tue, 23 June 2009 18:40 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Wait a minute,

EMF? Zest, sure, but I would hope we could keep that behemoth out of
there, we're talking a configuration management tool here.

Best regards,
Dann



Guillaume Chatelet wrote:
> Wow Johannes ! This looks great : )
>
> UI is actually an issue in Buckminster and EMF + Zest will do a good job
> here. Very cool : )
>
> Best regards,
> Guillaume
>
> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
> <mailto:mail@jutzig.de>> wrote:
>
> Hi,
>
> as discussed in
> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
> I started working on a zest based component dependency viewer for
> buckminster.
> I just finished an early prototype and thought it's enough to get
> at least an idea and ask you guys what kinds of features you'd like
> to see in it.
>
> Currently this is (for sake of simplicity) registered as an editor
> for previously saved .bom files.
> It consists of 3 areas
>
> -navigation tree that shows a tree of the component dependencies
> and is used to drill down on the graph. The selection is linked to
> the graph viewer so if you select a component in the tree, only this
> specific subtree is revealed in the graph.
>
> -graph viewer. This is very basic at the moment. It shows the
> dependency graph with some icons depending on the component type and
> highlights the direct dependencies of the selected component.
> Unresolved nodes are shown in red, a double-click on a node reveals
> the node's cspec and that's about it :)
>
> -settings section. This section lets you choose between some layout
> algorithms and filters (only platform component filter so far).
> Filters are applied to both the navigation tree and the graph viewer.
>
> I came up with the following things that should be added:
> -better highlighting
> -tooltips and properties view that reveal more details of each component
> -smart highlighting of paths through the graph (shortest path to
> root request for example)
> -regex based filter (black and white list filter)
> -dependency reports generated from a bom with some nice pictures
> -zooming
> -image export
>
> Now I'd be very interested to hear what's on your wish-list for
> dependency visualization, so that I can plan on the real implementation.
> Attached is a screenshot and a bundle.jar including source code.
> Just throw it in your dropins folder to try, but make sure that zest
> is installed.
> Keep in mind, this is just an early prototype for demonstration and
> my first steps with zest, so the code is super ugly at the moment...
>
> Best regards,
> Johannes
>
> _______________________________________________
> buckminster-dev mailing list
> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>
>
Re: [buckminster-dev] Dependency Visualization [message #35768 is a reply to message #35733] Tue, 23 June 2009 21:33 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Hi Dann,
A Buckminster runtime is one thing, the tools used to maintain it another. The runtime should be kept mean and lean,
that's for sure, and I think that is what your concern is about?

One thing that I've learned about EMF the last couple of weeks is that the runtime instances that it creates are very
optimized and in many cases far more optimal then the Java classes that people normally write. Booleans are grouped
together as bits in integer values, same thing with enums. I'm sure there's a lot of other optimizations going on as
well that I haven't found yet. All in all, I'm quite convinced that using EMF to describe things like our CSPEC, RMAP,
etc. will give us a smaller, less error prone, and more efficient runtime. The actual models themselves, visualized
graphically using the ecore tools diagram editor, will become valuable contributions to the documentation.

Then we have the tools surrounding it all. Editors for the model for instance. We get them for free with EMF. The
generated editor can be extended and improved a lot of course, but event the bare-bone generated thing beats the hell
out of using a text editor on XML documents. The generated editors are also very well crafted. Mean and lean. Easy to
extend and modify.

IMO EMF will become (and in some respect already is) a very valuable tool for us. Not sure I see why you'd think otherwise.

I have no experience with Zest but from the looks of it, it brings us a very good dependency visualization and that is
something that we have been longing for for some time now. Installing it will be optional of course.

Regards,
Thomas Hallgren


Dann Martens wrote:
> Wait a minute,
>
> EMF? Zest, sure, but I would hope we could keep that behemoth out of
> there, we're talking a configuration management tool here.
>
> Best regards,
> Dann
>
>
>
> Guillaume Chatelet wrote:
>> Wow Johannes ! This looks great : )
>>
>> UI is actually an issue in Buckminster and EMF + Zest will do a good
>> job here. Very cool : )
>>
>> Best regards,
>> Guillaume
>>
>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>> <mailto:mail@jutzig.de>> wrote:
>>
>> Hi,
>>
>> as discussed in
>>
>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>
>> I started working on a zest based component dependency viewer for
>> buckminster.
>> I just finished an early prototype and thought it's enough to get
>> at least an idea and ask you guys what kinds of features you'd like
>> to see in it.
>>
>> Currently this is (for sake of simplicity) registered as an editor
>> for previously saved .bom files.
>> It consists of 3 areas
>>
>> -navigation tree that shows a tree of the component dependencies
>> and is used to drill down on the graph. The selection is linked to
>> the graph viewer so if you select a component in the tree, only this
>> specific subtree is revealed in the graph.
>>
>> -graph viewer. This is very basic at the moment. It shows the
>> dependency graph with some icons depending on the component type and
>> highlights the direct dependencies of the selected component.
>> Unresolved nodes are shown in red, a double-click on a node reveals
>> the node's cspec and that's about it :)
>>
>> -settings section. This section lets you choose between some layout
>> algorithms and filters (only platform component filter so far).
>> Filters are applied to both the navigation tree and the graph viewer.
>>
>> I came up with the following things that should be added:
>> -better highlighting
>> -tooltips and properties view that reveal more details of each
>> component
>> -smart highlighting of paths through the graph (shortest path to
>> root request for example)
>> -regex based filter (black and white list filter)
>> -dependency reports generated from a bom with some nice pictures
>> -zooming
>> -image export
>>
>> Now I'd be very interested to hear what's on your wish-list for
>> dependency visualization, so that I can plan on the real
>> implementation.
>> Attached is a screenshot and a bundle.jar including source code.
>> Just throw it in your dropins folder to try, but make sure that zest
>> is installed.
>> Keep in mind, this is just an early prototype for demonstration and
>> my first steps with zest, so the code is super ugly at the moment...
>>
>> Best regards,
>> Johannes
>>
>> _______________________________________________
>> buckminster-dev mailing list
>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>
>>
Re: [buckminster-dev] Dependency Visualization [message #35802 is a reply to message #35768] Tue, 23 June 2009 21:47 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Well yes,

I don't really want to go through the pain of having to install the EMF
plug-ins (ouch!) just to use Buckminster. I really hope you're not going
on that path because that sounds really terrible. I hope P2 changes
things, but installing EMF has been an incredible pain up to now.
Really, that's en emphatic no-no; I'd be really unhappy to see EMF
dependencies pulled in, just to use Buckminster. Actually, I have to sit
down, now. The idea of all that bloat is making my tummy ache.

Zest is just a wrapper around draw2D, and that's a totally different matter.

Best regards,
Dann



Thomas Hallgren wrote:
> Hi Dann,
> A Buckminster runtime is one thing, the tools used to maintain it
> another. The runtime should be kept mean and lean, that's for sure,
> and I think that is what your concern is about?
>
> One thing that I've learned about EMF the last couple of weeks is that
> the runtime instances that it creates are very optimized and in many
> cases far more optimal then the Java classes that people normally
> write. Booleans are grouped together as bits in integer values, same
> thing with enums. I'm sure there's a lot of other optimizations going
> on as well that I haven't found yet. All in all, I'm quite convinced
> that using EMF to describe things like our CSPEC, RMAP, etc. will give
> us a smaller, less error prone, and more efficient runtime. The actual
> models themselves, visualized graphically using the ecore tools
> diagram editor, will become valuable contributions to the documentation.
>
> Then we have the tools surrounding it all. Editors for the model for
> instance. We get them for free with EMF. The generated editor can be
> extended and improved a lot of course, but event the bare-bone
> generated thing beats the hell out of using a text editor on XML
> documents. The generated editors are also very well crafted. Mean and
> lean. Easy to extend and modify.
>
> IMO EMF will become (and in some respect already is) a very valuable
> tool for us. Not sure I see why you'd think otherwise.
>
> I have no experience with Zest but from the looks of it, it brings us
> a very good dependency visualization and that is something that we
> have been longing for for some time now. Installing it will be
> optional of course.
>
> Regards,
> Thomas Hallgren
>
>
> Dann Martens wrote:
>> Wait a minute,
>>
>> EMF? Zest, sure, but I would hope we could keep that behemoth out of
>> there, we're talking a configuration management tool here.
>>
>> Best regards,
>> Dann
>>
>>
>>
>> Guillaume Chatelet wrote:
>>> Wow Johannes ! This looks great : )
>>>
>>> UI is actually an issue in Buckminster and EMF + Zest will do a good
>>> job here. Very cool : )
>>>
>>> Best regards,
>>> Guillaume
>>>
>>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>>> <mailto:mail@jutzig.de>> wrote:
>>>
>>> Hi,
>>>
>>> as discussed in
>>>
>>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>>
>>> I started working on a zest based component dependency viewer for
>>> buckminster.
>>> I just finished an early prototype and thought it's enough to get
>>> at least an idea and ask you guys what kinds of features you'd like
>>> to see in it.
>>>
>>> Currently this is (for sake of simplicity) registered as an editor
>>> for previously saved .bom files.
>>> It consists of 3 areas
>>>
>>> -navigation tree that shows a tree of the component dependencies
>>> and is used to drill down on the graph. The selection is linked to
>>> the graph viewer so if you select a component in the tree, only
>>> this
>>> specific subtree is revealed in the graph.
>>>
>>> -graph viewer. This is very basic at the moment. It shows the
>>> dependency graph with some icons depending on the component type
>>> and
>>> highlights the direct dependencies of the selected component.
>>> Unresolved nodes are shown in red, a double-click on a node reveals
>>> the node's cspec and that's about it :)
>>>
>>> -settings section. This section lets you choose between some
>>> layout
>>> algorithms and filters (only platform component filter so far).
>>> Filters are applied to both the navigation tree and the graph
>>> viewer.
>>>
>>> I came up with the following things that should be added:
>>> -better highlighting
>>> -tooltips and properties view that reveal more details of each
>>> component
>>> -smart highlighting of paths through the graph (shortest path to
>>> root request for example)
>>> -regex based filter (black and white list filter)
>>> -dependency reports generated from a bom with some nice pictures
>>> -zooming
>>> -image export
>>>
>>> Now I'd be very interested to hear what's on your wish-list for
>>> dependency visualization, so that I can plan on the real
>>> implementation.
>>> Attached is a screenshot and a bundle.jar including source code.
>>> Just throw it in your dropins folder to try, but make sure that
>>> zest
>>> is installed.
>>> Keep in mind, this is just an early prototype for demonstration and
>>> my first steps with zest, so the code is super ugly at the
>>> moment...
>>>
>>> Best regards,
>>> Johannes
>>>
>>> _______________________________________________
>>> buckminster-dev mailing list
>>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>>
>>>
>
Re: [buckminster-dev] Dependency Visualization [message #35837 is a reply to message #35802] Wed, 24 June 2009 00:05 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33113
Registered: July 2009
Senior Member
Dann,

Naturally I don't think of EMF has a behemoth. :-P

I suppose if you consider the all-in-one-sdk zip, which includes each
and every fine-grained EMF feature along with the fine-grained XSD
features (that you don't need), at grand total of 27MB, you might
consider that a behemoth. But then, I'm not sure what that makes
Eclipse itself at 150MB+. The behemoth that chokes all behemoths?

Surely you're not suggesting that an additional < 20% of downloads would
be the end of the world? The core EMF runtime is tiny, i.e., 2 MB, and
even the EMF features needed to support viewing are tiny, a few more
MB. We're talking tools at this point, not runtime, at Thomas pointed
out, though I'm not sure that matters to you...

I'm just not sure at which point the "terrible pain" kicks in though...

Of course p2 changes the game entirely. Only the features you actually
need need be installed...

Maybe you could elaborate on the incredibly painful experiences you've
had with installing EMF. Is it the download rate that's the problem?
The long unzip times? Something else? Many millions of people are
installing EMF, even just to install WTP, and I've not heard about a
great many incredibly painful events. People tend to complain loudly so
I'm pretty sure I would have heard about painful things...

At some point in the future, i.e., the e4 future, EMF will already be in
the platform installation itself, because it's being used to model the
workbench, so you're bound to be unhappy eventually if EMF itself makes
you unhappy. I suppose perhaps eventually you just won't notice EMF's
presence...

I hope you're sitting down already. Maybe lying down would be better. :-P

I've seen many arguments about avoid bloat. Unfortunately they usually
involve each project inventing its own solution to the same common
problem. The net result is that there end up being dozens of solutions
to exactly the same problem. That's also bloat; the worst kind. It's
ironic to me that avoiding bloat causes bloat, but that always seems to
be the way...

Probably you need to get over your aversion, or be more specific about it...


Dann Martens wrote:
> Well yes,
>
> I don't really want to go through the pain of having to install the
> EMF plug-ins (ouch!) just to use Buckminster. I really hope you're not
> going on that path because that sounds really terrible. I hope P2
> changes things, but installing EMF has been an incredible pain up to
> now. Really, that's en emphatic no-no; I'd be really unhappy to see
> EMF dependencies pulled in, just to use Buckminster. Actually, I have
> to sit down, now. The idea of all that bloat is making my tummy ache.
>
> Zest is just a wrapper around draw2D, and that's a totally different
> matter.
>
> Best regards,
> Dann
>
>
>
> Thomas Hallgren wrote:
>> Hi Dann,
>> A Buckminster runtime is one thing, the tools used to maintain it
>> another. The runtime should be kept mean and lean, that's for sure,
>> and I think that is what your concern is about?
>>
>> One thing that I've learned about EMF the last couple of weeks is
>> that the runtime instances that it creates are very optimized and in
>> many cases far more optimal then the Java classes that people
>> normally write. Booleans are grouped together as bits in integer
>> values, same thing with enums. I'm sure there's a lot of other
>> optimizations going on as well that I haven't found yet. All in all,
>> I'm quite convinced that using EMF to describe things like our CSPEC,
>> RMAP, etc. will give us a smaller, less error prone, and more
>> efficient runtime. The actual models themselves, visualized
>> graphically using the ecore tools diagram editor, will become
>> valuable contributions to the documentation.
>>
>> Then we have the tools surrounding it all. Editors for the model for
>> instance. We get them for free with EMF. The generated editor can be
>> extended and improved a lot of course, but event the bare-bone
>> generated thing beats the hell out of using a text editor on XML
>> documents. The generated editors are also very well crafted. Mean and
>> lean. Easy to extend and modify.
>>
>> IMO EMF will become (and in some respect already is) a very valuable
>> tool for us. Not sure I see why you'd think otherwise.
>>
>> I have no experience with Zest but from the looks of it, it brings us
>> a very good dependency visualization and that is something that we
>> have been longing for for some time now. Installing it will be
>> optional of course.
>>
>> Regards,
>> Thomas Hallgren
>>
>>
>> Dann Martens wrote:
>>> Wait a minute,
>>>
>>> EMF? Zest, sure, but I would hope we could keep that behemoth out of
>>> there, we're talking a configuration management tool here.
>>>
>>> Best regards,
>>> Dann
>>>
>>>
>>>
>>> Guillaume Chatelet wrote:
>>>> Wow Johannes ! This looks great : )
>>>>
>>>> UI is actually an issue in Buckminster and EMF + Zest will do a
>>>> good job here. Very cool : )
>>>>
>>>> Best regards,
>>>> Guillaume
>>>>
>>>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>>>> <mailto:mail@jutzig.de>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> as discussed in
>>>>
>>>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>>>
>>>> I started working on a zest based component dependency viewer for
>>>> buckminster.
>>>> I just finished an early prototype and thought it's enough to get
>>>> at least an idea and ask you guys what kinds of features you'd
>>>> like
>>>> to see in it.
>>>>
>>>> Currently this is (for sake of simplicity) registered as an editor
>>>> for previously saved .bom files.
>>>> It consists of 3 areas
>>>>
>>>> -navigation tree that shows a tree of the component dependencies
>>>> and is used to drill down on the graph. The selection is linked to
>>>> the graph viewer so if you select a component in the tree, only
>>>> this
>>>> specific subtree is revealed in the graph.
>>>>
>>>> -graph viewer. This is very basic at the moment. It shows the
>>>> dependency graph with some icons depending on the component
>>>> type and
>>>> highlights the direct dependencies of the selected component.
>>>> Unresolved nodes are shown in red, a double-click on a node
>>>> reveals
>>>> the node's cspec and that's about it :)
>>>>
>>>> -settings section. This section lets you choose between some
>>>> layout
>>>> algorithms and filters (only platform component filter so far).
>>>> Filters are applied to both the navigation tree and the graph
>>>> viewer.
>>>>
>>>> I came up with the following things that should be added:
>>>> -better highlighting
>>>> -tooltips and properties view that reveal more details of each
>>>> component
>>>> -smart highlighting of paths through the graph (shortest path to
>>>> root request for example)
>>>> -regex based filter (black and white list filter)
>>>> -dependency reports generated from a bom with some nice pictures
>>>> -zooming
>>>> -image export
>>>>
>>>> Now I'd be very interested to hear what's on your wish-list for
>>>> dependency visualization, so that I can plan on the real
>>>> implementation.
>>>> Attached is a screenshot and a bundle.jar including source code.
>>>> Just throw it in your dropins folder to try, but make sure that
>>>> zest
>>>> is installed.
>>>> Keep in mind, this is just an early prototype for demonstration
>>>> and
>>>> my first steps with zest, so the code is super ugly at the
>>>> moment...
>>>>
>>>> Best regards,
>>>> Johannes
>>>>
>>>> _______________________________________________
>>>> buckminster-dev mailing list
>>>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>>>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>>>
>>>>
>>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: [buckminster-dev] Dependency Visualization [message #35871 is a reply to message #35837] Wed, 24 June 2009 00:49 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Hi Ed,

First of all, I have no aversion to EMF. But the model-driven approach
does bring a lot of overhead to enable all that meta-modeling. Must be
the 'meta' thing ;)

I'm not so sure you're response is that honest in terms of installation
pain. Installing WTP can be an unbelievable pain, and I'm sure I'm not
the only one saying that. The amount of times I just got stuck with an
Eclipse set-up which wouldn't install additional plug-ins because of
EMF-related plug-in mismatches... I simply can't count those instances
anymore. You'll probably say that's not EMF's fault per se, but EMF is
always implicated.

Because EMF is high up in the dependency hierarchy, it is one of those
projects which exposes Eclipse dependency problems the most. You're
probably referring to 'just EMF', but I'm talking about getting those
EMF-based projects to get along, which has been a *real* pain.

Building EMF with Buckminster is one thing, but if you already need an
instance of EMF before you can do that? How about those circular build
dependencies? Back to the dark woods of the PDE build?

Perhaps I better start a fork, right here and now and maintain a bit of
peace of mind...

Best regards,
Dann




Ed Merks wrote:
> Dann,
>
> Naturally I don't think of EMF has a behemoth. :-P
> I suppose if you consider the all-in-one-sdk zip, which includes each
> and every fine-grained EMF feature along with the fine-grained XSD
> features (that you don't need), at grand total of 27MB, you might
> consider that a behemoth. But then, I'm not sure what that makes
> Eclipse itself at 150MB+. The behemoth that chokes all behemoths?
>
> Surely you're not suggesting that an additional < 20% of downloads would
> be the end of the world? The core EMF runtime is tiny, i.e., 2 MB, and
> even the EMF features needed to support viewing are tiny, a few more
> MB. We're talking tools at this point, not runtime, at Thomas pointed
> out, though I'm not sure that matters to you...
>
> I'm just not sure at which point the "terrible pain" kicks in though...
>
> Of course p2 changes the game entirely. Only the features you actually
> need need be installed...
>
> Maybe you could elaborate on the incredibly painful experiences you've
> had with installing EMF. Is it the download rate that's the problem?
> The long unzip times? Something else? Many millions of people are
> installing EMF, even just to install WTP, and I've not heard about a
> great many incredibly painful events. People tend to complain loudly so
> I'm pretty sure I would have heard about painful things...
>
> At some point in the future, i.e., the e4 future, EMF will already be in
> the platform installation itself, because it's being used to model the
> workbench, so you're bound to be unhappy eventually if EMF itself makes
> you unhappy. I suppose perhaps eventually you just won't notice EMF's
> presence...
>
> I hope you're sitting down already. Maybe lying down would be better. :-P
>
> I've seen many arguments about avoid bloat. Unfortunately they usually
> involve each project inventing its own solution to the same common
> problem. The net result is that there end up being dozens of solutions
> to exactly the same problem. That's also bloat; the worst kind. It's
> ironic to me that avoiding bloat causes bloat, but that always seems to
> be the way...
>
> Probably you need to get over your aversion, or be more specific about
> it...
>
>
> Dann Martens wrote:
>> Well yes,
>>
>> I don't really want to go through the pain of having to install the
>> EMF plug-ins (ouch!) just to use Buckminster. I really hope you're not
>> going on that path because that sounds really terrible. I hope P2
>> changes things, but installing EMF has been an incredible pain up to
>> now. Really, that's en emphatic no-no; I'd be really unhappy to see
>> EMF dependencies pulled in, just to use Buckminster. Actually, I have
>> to sit down, now. The idea of all that bloat is making my tummy ache.
>>
>> Zest is just a wrapper around draw2D, and that's a totally different
>> matter.
>>
>> Best regards,
>> Dann
>>
>>
>>
>> Thomas Hallgren wrote:
>>> Hi Dann,
>>> A Buckminster runtime is one thing, the tools used to maintain it
>>> another. The runtime should be kept mean and lean, that's for sure,
>>> and I think that is what your concern is about?
>>>
>>> One thing that I've learned about EMF the last couple of weeks is
>>> that the runtime instances that it creates are very optimized and in
>>> many cases far more optimal then the Java classes that people
>>> normally write. Booleans are grouped together as bits in integer
>>> values, same thing with enums. I'm sure there's a lot of other
>>> optimizations going on as well that I haven't found yet. All in all,
>>> I'm quite convinced that using EMF to describe things like our CSPEC,
>>> RMAP, etc. will give us a smaller, less error prone, and more
>>> efficient runtime. The actual models themselves, visualized
>>> graphically using the ecore tools diagram editor, will become
>>> valuable contributions to the documentation.
>>>
>>> Then we have the tools surrounding it all. Editors for the model for
>>> instance. We get them for free with EMF. The generated editor can be
>>> extended and improved a lot of course, but event the bare-bone
>>> generated thing beats the hell out of using a text editor on XML
>>> documents. The generated editors are also very well crafted. Mean and
>>> lean. Easy to extend and modify.
>>>
>>> IMO EMF will become (and in some respect already is) a very valuable
>>> tool for us. Not sure I see why you'd think otherwise.
>>>
>>> I have no experience with Zest but from the looks of it, it brings us
>>> a very good dependency visualization and that is something that we
>>> have been longing for for some time now. Installing it will be
>>> optional of course.
>>>
>>> Regards,
>>> Thomas Hallgren
>>>
>>>
>>> Dann Martens wrote:
>>>> Wait a minute,
>>>>
>>>> EMF? Zest, sure, but I would hope we could keep that behemoth out of
>>>> there, we're talking a configuration management tool here.
>>>>
>>>> Best regards,
>>>> Dann
>>>>
>>>>
>>>>
>>>> Guillaume Chatelet wrote:
>>>>> Wow Johannes ! This looks great : )
>>>>>
>>>>> UI is actually an issue in Buckminster and EMF + Zest will do a
>>>>> good job here. Very cool : )
>>>>>
>>>>> Best regards,
>>>>> Guillaume
>>>>>
>>>>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>>>>> <mailto:mail@jutzig.de>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> as discussed in
>>>>>
>>>>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>>>>
>>>>> I started working on a zest based component dependency viewer for
>>>>> buckminster.
>>>>> I just finished an early prototype and thought it's enough to get
>>>>> at least an idea and ask you guys what kinds of features you'd
>>>>> like
>>>>> to see in it.
>>>>>
>>>>> Currently this is (for sake of simplicity) registered as an editor
>>>>> for previously saved .bom files.
>>>>> It consists of 3 areas
>>>>>
>>>>> -navigation tree that shows a tree of the component dependencies
>>>>> and is used to drill down on the graph. The selection is linked to
>>>>> the graph viewer so if you select a component in the tree, only
>>>>> this
>>>>> specific subtree is revealed in the graph.
>>>>>
>>>>> -graph viewer. This is very basic at the moment. It shows the
>>>>> dependency graph with some icons depending on the component
>>>>> type and
>>>>> highlights the direct dependencies of the selected component.
>>>>> Unresolved nodes are shown in red, a double-click on a node
>>>>> reveals
>>>>> the node's cspec and that's about it :)
>>>>>
>>>>> -settings section. This section lets you choose between some
>>>>> layout
>>>>> algorithms and filters (only platform component filter so far).
>>>>> Filters are applied to both the navigation tree and the graph
>>>>> viewer.
>>>>>
>>>>> I came up with the following things that should be added:
>>>>> -better highlighting
>>>>> -tooltips and properties view that reveal more details of each
>>>>> component
>>>>> -smart highlighting of paths through the graph (shortest path to
>>>>> root request for example)
>>>>> -regex based filter (black and white list filter)
>>>>> -dependency reports generated from a bom with some nice pictures
>>>>> -zooming
>>>>> -image export
>>>>>
>>>>> Now I'd be very interested to hear what's on your wish-list for
>>>>> dependency visualization, so that I can plan on the real
>>>>> implementation.
>>>>> Attached is a screenshot and a bundle.jar including source code.
>>>>> Just throw it in your dropins folder to try, but make sure that
>>>>> zest
>>>>> is installed.
>>>>> Keep in mind, this is just an early prototype for demonstration
>>>>> and
>>>>> my first steps with zest, so the code is super ugly at the
>>>>> moment...
>>>>>
>>>>> Best regards,
>>>>> Johannes
>>>>>
>>>>> _______________________________________________
>>>>> buckminster-dev mailing list
>>>>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>>>>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>>>>
>>>>>
>>>
Re: [buckminster-dev] Dependency Visualization [message #35909 is a reply to message #35871] Wed, 24 June 2009 01:14 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33113
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030002040002000400070306
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Dann,

Comments below.

Dann Martens wrote:
> Hi Ed,
>
> First of all, I have no aversion to EMF.
It sounds like one though...
> But the model-driven approach does bring a lot of overhead to enable
> all that meta-modeling.
Overhead? Meta-modeling?
> Must be the 'meta' thing ;)
I'm not a big fan of the word meta. Probably you know that, but perhaps
you don't... The model of a model is a model...
>
> I'm not so sure you're response is that honest in terms of
> installation pain.
Honesty is a fundamental quality I hold dear. Very few people question
my honesty. Certainly it's your prerogative to do that, and in that
case, I'll reserve the right to question yours.
> Installing WTP can be an unbelievable pain, and I'm sure I'm not the
> only one saying that.
I've not installed WTP, so personally I have no idea. I've only ever
install the platform and then I bootstrap EMF (and a dozen or more other
projects) from CVS, so in all honesty, I can say I have little
experience installing anything...
> The amount of times I just got stuck with an Eclipse set-up which
> wouldn't install additional plug-ins because of EMF-related plug-in
> mismatches...
Again, I have no idea what you mean by "install". You mean update
manager, unzipping files, p2, or what?
> I simply can't count those instances anymore.
I can imagine the pain, though I've not experienced it. Of course if
installing one more thing on top of the platform is a huge pain, then
even installing Buckminster as one additional thing must be painful
already. If not, why not? I suppose you mean installing two different
things each of which depends on EMF, but instead you might want to blame
that pain on bad plugin version ranges, the platform's treatment of
them, and the universal belief that they represent goodness, rather than
blame EMF...
> You'll probably say that's not EMF's fault per se, but EMF is always
> implicated.
I've very used to being a scapegoat.

http://ed-merks.blogspot.com/2009/03/on-being-scapegoat.html

In the end though, there's little of substance in the scapegoating, so
it's just a form of entertainment for me. Folly in other words...
>
> Because EMF is high up in the dependency hierarchy, it is one of those
> projects which exposes Eclipse dependency problems the most.
Or low down, depending on which direction you grow. But yes, being a
foundation component makes for being a great scapegoat. It seems as if
you're arguing to avoid having foundation components because that way we
can avoid seeing dependency problems. That's clearly a questionable
argument.
> You're probably referring to 'just EMF', but I'm talking about getting
> those EMF-based projects to get along, which has been a *real* pain.
I guess that's a pain, but since you have to do that anyway, or so it
seems, I'm not sure how your problem got worse. In any case, you've not
provided one iota of substance. Just scapegoating EMF and finger
pointing in the typical way that's grown tiresome over the years.
>
> Building EMF with Buckminster is one thing,
A totally unrelated thing in fact...
> but if you already need an instance of EMF before you can do that?
Isn't bootstrapping fun. That's irrelevant to you though, since you
aren't building EMF. Why bring it up?

In any case, one needs an instance of EMF to generate EMF. That sounds
impossible?
> How about those circular build dependencies?
I guess it's impossible although we do this all the time.
> Back to the dark woods of the PDE build?
I guess PDE build is the dark wood, but I don't see the connection.
>
> Perhaps I better start a fork, right here and now and maintain a bit
> of peace of mind...
I guess so. Peace of mind is a valuable commodity so it's probably worth
just about any price.

In any case, I don't think you've done a good job arguing you have no
aversions. Your line of reasoning would seem to argue that it's a bad
idea to have common foundation components because there are dependency
problems when many projects depend on such foundation components.
Perhaps we ought to focus on those so they're fixed rather than throw
away good architecture concepts...
>
>
> Best regards,
> Dann
>
>
>
>
> Ed Merks wrote:
>> Dann,
>>
>> Naturally I don't think of EMF has a behemoth. :-P
>> I suppose if you consider the all-in-one-sdk zip, which includes each
>> and every fine-grained EMF feature along with the fine-grained XSD
>> features (that you don't need), at grand total of 27MB, you might
>> consider that a behemoth. But then, I'm not sure what that makes
>> Eclipse itself at 150MB+. The behemoth that chokes all behemoths?
>>
>> Surely you're not suggesting that an additional < 20% of downloads
>> would be the end of the world? The core EMF runtime is tiny, i.e.,
>> 2 MB, and even the EMF features needed to support viewing are tiny, a
>> few more MB. We're talking tools at this point, not runtime, at
>> Thomas pointed out, though I'm not sure that matters to you...
>>
>> I'm just not sure at which point the "terrible pain" kicks in though...
>>
>> Of course p2 changes the game entirely. Only the features you
>> actually need need be installed...
>>
>> Maybe you could elaborate on the incredibly painful experiences
>> you've had with installing EMF. Is it the download rate that's the
>> problem? The long unzip times? Something else? Many millions of
>> people are installing EMF, even just to install WTP, and I've not
>> heard about a great many incredibly painful events. People tend to
>> complain loudly so I'm pretty sure I would have heard about painful
>> things...
>>
>> At some point in the future, i.e., the e4 future, EMF will already be
>> in the platform installation itself, because it's being used to model
>> the workbench, so you're bound to be unhappy eventually if EMF itself
>> makes you unhappy. I suppose perhaps eventually you just won't
>> notice EMF's presence...
>>
>> I hope you're sitting down already. Maybe lying down would be
>> better. :-P
>>
>> I've seen many arguments about avoid bloat. Unfortunately they
>> usually involve each project inventing its own solution to the same
>> common problem. The net result is that there end up being dozens of
>> solutions to exactly the same problem. That's also bloat; the worst
>> kind. It's ironic to me that avoiding bloat causes bloat, but that
>> always seems to be the way...
>>
>> Probably you need to get over your aversion, or be more specific
>> about it...
>>
>>
>> Dann Martens wrote:
>>> Well yes,
>>>
>>> I don't really want to go through the pain of having to install the
>>> EMF plug-ins (ouch!) just to use Buckminster. I really hope you're
>>> not going on that path because that sounds really terrible. I hope
>>> P2 changes things, but installing EMF has been an incredible pain up
>>> to now. Really, that's en emphatic no-no; I'd be really unhappy to
>>> see EMF dependencies pulled in, just to use Buckminster. Actually, I
>>> have to sit down, now. The idea of all that bloat is making my tummy
>>> ache.
>>>
>>> Zest is just a wrapper around draw2D, and that's a totally different
>>> matter.
>>>
>>> Best regards,
>>> Dann
>>>
>>>
>>>
>>> Thomas Hallgren wrote:
>>>> Hi Dann,
>>>> A Buckminster runtime is one thing, the tools used to maintain it
>>>> another. The runtime should be kept mean and lean, that's for sure,
>>>> and I think that is what your concern is about?
>>>>
>>>> One thing that I've learned about EMF the last couple of weeks is
>>>> that the runtime instances that it creates are very optimized and
>>>> in many cases far more optimal then the Java classes that people
>>>> normally write. Booleans are grouped together as bits in integer
>>>> values, same thing with enums. I'm sure there's a lot of other
>>>> optimizations going on as well that I haven't found yet. All in
>>>> all, I'm quite convinced that using EMF to describe things like our
>>>> CSPEC, RMAP, etc. will give us a smaller, less error prone, and
>>>> more efficient runtime. The actual models themselves, visualized
>>>> graphically using the ecore tools diagram editor, will become
>>>> valuable contributions to the documentation.
>>>>
>>>> Then we have the tools surrounding it all. Editors for the model
>>>> for instance. We get them for free with EMF. The generated editor
>>>> can be extended and improved a lot of course, but event the
>>>> bare-bone generated thing beats the hell out of using a text editor
>>>> on XML documents. The generated editors are also very well crafted.
>>>> Mean and lean. Easy to extend and modify.
>>>>
>>>> IMO EMF will become (and in some respect already is) a very
>>>> valuable tool for us. Not sure I see why you'd think otherwise.
>>>>
>>>> I have no experience with Zest but from the looks of it, it brings
>>>> us a very good dependency visualization and that is something that
>>>> we have been longing for for some time now. Installing it will be
>>>> optional of course.
>>>>
>>>> Regards,
>>>> Thomas Hallgren
>>>>
>>>>
>>>> Dann Martens wrote:
>>>>> Wait a minute,
>>>>>
>>>>> EMF? Zest, sure, but I would hope we could keep that behemoth out
>>>>> of there, we're talking a configuration management tool here.
>>>>>
>>>>> Best regards,
>>>>> Dann
>>>>>
>>>>>
>>>>>
>>>>> Guillaume Chatelet wrote:
>>>>>> Wow Johannes ! This looks great : )
>>>>>>
>>>>>> UI is actually an issue in Buckminster and EMF + Zest will do a
>>>>>> good job here. Very cool : )
>>>>>>
>>>>>> Best regards,
>>>>>> Guillaume
>>>>>>
>>>>>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>>>>>> <mailto:mail@jutzig.de>> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> as discussed in
>>>>>>
>>>>>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>>>>>
>>>>>> I started working on a zest based component dependency viewer
>>>>>> for
>>>>>> buckminster.
>>>>>> I just finished an early prototype and thought it's enough
>>>>>> to get
>>>>>> at least an idea and ask you guys what kinds of features
>>>>>> you'd like
>>>>>> to see in it.
>>>>>>
>>>>>> Currently this is (for sake of simplicity) registered as an
>>>>>> editor
>>>>>> for previously saved .bom files.
>>>>>> It consists of 3 areas
>>>>>>
>>>>>> -navigation tree that shows a tree of the component
>>>>>> dependencies
>>>>>> and is used to drill down on the graph. The selection is
>>>>>> linked to
>>>>>> the graph viewer so if you select a component in the tree,
>>>>>> only this
>>>>>> specific subtree is revealed in the graph.
>>>>>>
>>>>>> -graph viewer. This is very basic at the moment. It shows the
>>>>>> dependency graph with some icons depending on the component
>>>>>> type and
>>>>>> highlights the direct dependencies of the selected component.
>>>>>> Unresolved nodes are shown in red, a double-click on a node
>>>>>> reveals
>>>>>> the node's cspec and that's about it :)
>>>>>>
>>>>>> -settings section. This section lets you choose between some
>>>>>> layout
>>>>>> algorithms and filters (only platform component filter so far).
>>>>>> Filters are applied to both the navigation tree and the graph
>>>>>> viewer.
>>>>>>
>>>>>> I came up with the following things that should be added:
>>>>>> -better highlighting
>>>>>> -tooltips and properties view that reveal more details of
>>>>>> each component
>>>>>> -smart highlighting of paths through the graph (shortest path to
>>>>>> root request for example)
>>>>>> -regex based filter (black and white list filter)
>>>>>> -dependency reports generated from a bom with some nice pictures
>>>>>> -zooming
>>>>>> -image export
>>>>>>
>>>>>> Now I'd be very interested to hear what's on your wish-list for
>>>>>> dependency visualization, so that I can plan on the real
>>>>>> implementation.
>>>>>> Attached is a screenshot and a bundle.jar including source code.
>>>>>> Just throw it in your dropins folder to try, but make sure
>>>>>> that zest
>>>>>> is installed.
>>>>>> Keep in mind, this is just an early prototype for
>>>>>> demonstration and
>>>>>> my first steps with zest, so the code is super ugly at the
>>>>>> moment...
>>>>>>
>>>>>> Best regards,
>>>>>> Johannes
>>>>>>
>>>>>> _______________________________________________
>>>>>> buckminster-dev mailing list
>>>>>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>>>>>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>>>>>
>>>>>>
>>>>
>
>

--------------030002040002000400070306
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Dann,<br>
<br>
Comments below.<br>
<br>
Dann Martens wrote:
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">Hi Ed,
<br>
<br>
First of all, I have no aversion to EMF. </blockquote>
It sounds like one though...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">But the
model-driven approach does bring a lot of overhead to enable all that
meta-modeling. </blockquote>
Overhead?  Meta-modeling?<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">Must be
the 'meta' thing ;)
<br>
</blockquote>
I'm not a big fan of the word meta.  Probably you know that, but
perhaps you don't...  The model of a model is a model... <br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
I'm not so sure you're response is that honest in terms of installation
pain.</blockquote>
Honesty is a fundamental quality I hold dear.  Very few people question
my honesty.  Certainly it's your prerogative to do that, and in that
case, I'll reserve the right to question yours.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">Installing
WTP can be an unbelievable pain, and I'm sure I'm not the only one
saying that.</blockquote>
I've not installed WTP, so personally I have no idea.  I've only ever
install the platform and then I bootstrap EMF (and a dozen or more
other projects) from CVS, so in all honesty, I can say I have little
experience installing anything...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> The
amount of times I just got stuck with an Eclipse set-up which wouldn't
install additional plug-ins because of EMF-related plug-in mismatches...</blockquote>
Again, I have no idea what you mean by "install".  You mean update
manager, unzipping files, p2, or what?<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> I
simply can't count those instances anymore.</blockquote>
I can imagine the pain, though I've not experienced it.  Of course if
installing one more thing on top of the platform is a huge pain, then
even installing Buckminster as one additional thing must be painful
already.  If not, why not?  I suppose you mean installing two different
things each of which depends on EMF, but instead you might want to
blame that pain on bad plugin version ranges, the platform's treatment
of them, and the universal belief that they represent goodness, rather
than blame EMF...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> You'll
probably say that's not EMF's fault per se, but EMF is always
implicated.
<br>
</blockquote>
I've very used to being a scapegoat. <br>
<blockquote><a
href=" http://ed-merks.blogspot.com/2009/03/on-being-scapegoat.html"> http://ed-merks.blogspot.com/2009/03/on-being-scapegoat.html</a><br>
</blockquote>
In the end though, there's little of substance in the scapegoating, so
it's just a form of entertainment for me.  Folly in other words...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
Because EMF is high up in the dependency hierarchy, it is one of those
projects which exposes Eclipse dependency problems the most.</blockquote>
Or low down, depending on which direction you grow.  But yes, being a
foundation component makes for being a great scapegoat.  It seems as if
you're arguing to avoid having foundation components because that way
we can avoid seeing dependency problems.  That's clearly a questionable
argument.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> You're
probably referring to 'just EMF', but I'm talking about getting those
EMF-based projects to get along, which has been a *real* pain.
<br>
</blockquote>
I guess that's a pain, but since you have to do that anyway, or so it
seems, I'm not sure how your problem got worse.  In any case, you've
not provided one iota of substance.  Just scapegoating EMF and finger
pointing in the typical way that's grown tiresome over the years.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
Building EMF with Buckminster is one thing, </blockquote>
A totally unrelated thing in fact...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">but if
you already need an instance of EMF before you can do that? </blockquote>
Isn't bootstrapping fun.  That's irrelevant to you though, since you
aren't building EMF.  Why bring it up?<br>
<br>
In any case, one needs an instance of EMF to generate EMF.  That sounds
impossible?<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">How
about those circular build dependencies?</blockquote>
I guess it's impossible although we do this all the time.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> Back
to the dark woods of the PDE build?
<br>
</blockquote>
I guess PDE build is the dark wood, but I don't see the connection.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
Perhaps I better start a fork, right here and now and maintain a bit of
peace of mind...</blockquote>
I guess so. Peace of mind is a valuable commodity so it's probably
worth just about any price.<br>
<br>
In any case, I don't think you've done a good job arguing you have no
aversions. Your line of reasoning would seem to argue that it's a bad
idea to have common foundation components because there are dependency
problems when many projects depend on such foundation components. 
Perhaps we ought to focus on those so they're fixed rather than throw
away good architecture concepts...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
<br>
Best regards,
<br>
 Dann
<br>
<br>
<br>
<br>
<br>
Ed Merks wrote:
<br>
<blockquote type="cite">Dann,
<br>
<br>
Naturally I don't think of EMF has a behemoth.  :-P
<br>
I suppose if you consider the all-in-one-sdk zip, which includes each
and every fine-grained EMF feature along with the fine-grained XSD
features (that you don't need), at grand total of 27MB, you might
consider that a behemoth.   But then, I'm not sure what that makes
Eclipse itself at 150MB+.  The behemoth that chokes all behemoths?
<br>
<br>
Surely you're not suggesting that an additional &lt; 20% of downloads
would be the end of the world?  The core EMF runtime is tiny, i.e.,  2
MB, and even the EMF features needed to support viewing are tiny, a few
more MB.  We're talking tools at this point, not runtime, at Thomas
pointed out, though I'm not sure that matters to you...
<br>
<br>
I'm just not sure at which point the "terrible pain" kicks in though...
<br>
<br>
Of course p2 changes the game entirely. Only the features you actually
need need be installed...
<br>
<br>
Maybe you could elaborate on the incredibly painful experiences you've
had with installing EMF.  Is it the download rate that's the problem? 
The long unzip times?  Something else?  Many millions of people are
installing EMF, even just to install WTP, and I've not heard about a
great many incredibly painful events.  People tend to complain loudly
so I'm pretty sure I would have heard about painful things...
<br>
<br>
At some point in the future, i.e., the e4 future, EMF will already be
in the platform installation itself, because it's being used to model
the workbench, so you're bound to be unhappy eventually if EMF itself
makes you unhappy.  I suppose perhaps eventually you just won't notice
EMF's presence...
<br>
<br>
I hope you're sitting down already.  Maybe lying down would be better.
:-P
<br>
<br>
I've seen many arguments about avoid bloat.  Unfortunately they usually
involve each project inventing its own solution to the same common
problem.  The net result is that there end up being dozens of solutions
to exactly the same problem.  That's also bloat; the worst kind.  It's
ironic to me that avoiding bloat causes bloat, but that always seems to
be the way...
<br>
<br>
Probably you need to get over your aversion, or be more specific about
it...
<br>
<br>
<br>
Dann Martens wrote:
<br>
<blockquote type="cite">Well yes,
<br>
<br>
I don't really want to go through the pain of having to install the EMF
plug-ins (ouch!) just to use Buckminster. I really hope you're not
going on that path because that sounds really terrible. I hope P2
changes things, but installing EMF has been an incredible pain up to
now. Really, that's en emphatic no-no; I'd be really unhappy to see EMF
dependencies pulled in, just to use Buckminster. Actually, I have to
sit down, now. The idea of all that bloat is making my tummy ache.
<br>
<br>
Zest is just a wrapper around draw2D, and that's a totally different
matter.
<br>
<br>
Best regards,
<br>
Dann
<br>
<br>
<br>
<br>
Thomas Hallgren wrote:
<br>
<blockquote type="cite">Hi Dann,
<br>
A Buckminster runtime is one thing, the tools used to maintain it
another. The runtime should be kept mean and lean, that's for sure, and
I think that is what your concern is about?
<br>
<br>
One thing that I've learned about EMF the last couple of weeks is that
the runtime instances that it creates are very optimized and in many
cases far more optimal then the Java classes that people normally
write. Booleans are grouped together as bits in integer values, same
thing with enums. I'm sure there's a lot of other optimizations going
on as well that I haven't found yet. All in all, I'm quite convinced
that using EMF to describe things like our CSPEC, RMAP, etc. will give
us a smaller, less error prone, and more efficient runtime. The actual
models themselves, visualized graphically using the ecore tools diagram
editor, will become valuable contributions to the documentation.
<br>
<br>
Then we have the tools surrounding it all. Editors for the model for
instance. We get them for free with EMF. The generated editor can be
extended and improved a lot of course, but event the bare-bone
generated thing beats the hell out of using a text editor on XML
documents. The generated editors are also very well crafted. Mean and
lean. Easy to extend and modify.
<br>
<br>
IMO EMF will become (and in some respect already is) a very valuable
tool for us. Not sure I see why you'd think otherwise.
<br>
<br>
I have no experience with Zest but from the looks of it, it brings us a
very good dependency visualization and that is something that we have
been longing for for some time now. Installing it will be optional of
course.
<br>
<br>
Regards,
<br>
Thomas Hallgren
<br>
<br>
<br>
Dann Martens wrote:
<br>
<blockquote type="cite">Wait a minute,
<br>
<br>
EMF? Zest, sure, but I would hope we could keep that behemoth out of
there, we're talking a configuration management tool here.
<br>
<br>
Best regards,
<br>
 Dann
<br>
<br>
<br>
<br>
Guillaume Chatelet wrote:
<br>
<blockquote type="cite">Wow Johannes ! This looks great : )
<br>
<br>
UI is actually an issue in Buckminster and EMF + Zest will do a good
job here. Very cool : )
<br>
<br>
Best regards,
<br>
Guillaume
<br>
<br>
On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig &lt;<a class="moz-txt-link-abbreviated" href="mailto:mail@jutzig.de">mail@jutzig.de</a>
<a class="moz-txt-link-rfc2396E" href="mailto:mail@jutzig.de">&lt;mailto:mail@jutzig.de&gt;</a>&gt; wrote:
<br>
<br>
    Hi,
<br>
<br>
    as discussed in
<br>
   
<a class="moz-txt-link-freetext" href=" http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html"> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html</a>
<br>
    I started working on a zest based component dependency viewer for
<br>
    buckminster.
<br>
    I just finished an early prototype and thought it's enough to  get
<br>
    at least an idea and ask you guys what kinds of features you'd like
<br>
    to see in it.
<br>
<br>
    Currently this is (for sake of simplicity) registered as an editor
<br>
    for previously saved .bom files.
<br>
    It consists of 3 areas
<br>
<br>
     -navigation tree that shows a tree of the component dependencies
<br>
    and is used to drill down on the graph. The selection is linked to
<br>
    the graph viewer so if you select a component in the tree, only
this
<br>
    specific subtree is revealed in the graph.
<br>
<br>
     -graph viewer. This is very basic at the moment. It shows the
<br>
    dependency graph with some icons depending on the component type
and
<br>
    highlights the direct dependencies of the selected component.
<br>
    Unresolved nodes are shown in red, a double-click on a node reveals
<br>
    the node's cspec and that's about it :)
<br>
<br>
     -settings section. This section lets you choose between some
layout
<br>
    algorithms and filters (only platform component filter so far).
<br>
    Filters are applied to both the navigation tree and the graph
viewer.
<br>
<br>
    I came up with the following things that should be added:
<br>
    -better highlighting
<br>
    -tooltips and properties view that reveal more details of each
component
<br>
    -smart highlighting of paths through the graph (shortest path to
<br>
    root request for example)
<br>
    -regex based filter (black and white list filter)
<br>
    -dependency reports generated from a bom with some nice pictures
<br>
    -zooming
<br>
    -image export
<br>
<br>
    Now I'd be very interested to hear what's on your wish-list for
<br>
    dependency visualization, so that I can plan on the real
implementation.
<br>
    Attached is a screenshot and a bundle.jar including source code.
<br>
    Just throw it in your dropins folder to try, but make sure that
zest
<br>
    is installed.
<br>
    Keep in mind, this is just an early prototype for demonstration and
<br>
    my first steps with zest, so the code is super ugly at the
moment...
<br>
<br>
    Best regards,
<br>
    Johannes
<br>
<br>
    _______________________________________________
<br>
    buckminster-dev mailing list
<br>
    <a class="moz-txt-link-abbreviated" href="mailto:buckminster-dev@eclipse.org">buckminster-dev@eclipse.org</a>
<a class="moz-txt-link-rfc2396E" href="mailto:buckminster-dev@eclipse.org">&lt;mailto:buckminster-dev@eclipse.org&gt;</a>
<br>
    <a class="moz-txt-link-freetext" href="https://dev.eclipse.org/mailman/listinfo/buckminster-dev">https://dev.eclipse.org/mailman/listinfo/buckminster-dev</a>
<br>
<br>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
</blockquote>
<br>
<br>
</blockquote>
</body>
</html>

--------------030002040002000400070306--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: [buckminster-dev] Dependency Visualization [message #35943 is a reply to message #35909] Wed, 24 June 2009 02:03 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Here we go again :)

I feel some of the reply you've formulated doesn't address what I've
tried to convey.

As far as Buckminster is concerned, I have managed to build a complete
working build system with additional plug-ins without any need of EMF,
already two years ago. I see no compelling reason to introduce EMF now,
as what I feel is needed to further Buckminster is totally unrelated.
I'm interested in having Buckminster stable (which it isn't) and in
contributing back what I added myself at that point. I really see no
reason at all to warrant this diversion. This has nothing to do with the
qualities of EMF itself, but I will not support this decision.

We can argue and misunderstand each other as much as you want, but this
feels like a real waste of my time. And I'm sure yours as well. For a
silly build tool, no less.

Best regards,
Dann
Re: [buckminster-dev] Dependency Visualization [message #36079 is a reply to message #35943] Wed, 24 June 2009 07:43 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33113
Registered: July 2009
Senior Member
Dann,

Comments below.

Dann Martens wrote:
> Here we go again :)
>
> I feel some of the reply you've formulated doesn't address what I've
> tried to convey.
That may well be.
>
> As far as Buckminster is concerned, I have managed to build a complete
> working build system with additional plug-ins without any need of EMF,
> already two years ago.
Cool.
> I see no compelling reason to introduce EMF now, as what I feel is
> needed to further Buckminster is totally unrelated.
Buckminster serves a community so it's useful to get feedback from it.
> I'm interested in having Buckminster stable (which it isn't) and in
> contributing back what I added myself at that point.
Perhaps contributing back will help with stability?
> I really see no reason at all to warrant this diversion.
That's your subjective opinion, but in the end, the people who do the
actual work make the choices, of course taking into account opinions
from the community and the substance behind those opinions.
> This has nothing to do with the qualities of EMF itself, but I will
> not support this decision.
You've described installing EMF as a nightmare, EMF has a bloated
behemoth, and its use as an unwarranted diversion. You've complained
dramatically about a tummy ache and your need to sit down. Yet still
you claim to have made no value judgment of EMF.
>
> We can argue and misunderstand each other as much as you want,
So not only am I being perhaps dishonest, misunderstandings are
something I desire...
> but this feels like a real waste of my time.
Helping Buckminster get value from EMF isn't a waste of my time, and
working with the community, even when it's occasionally hostile, isn't
either.
> And I'm sure yours as well.
It's my time to spend and for me to decide how best to spend it.
> For a silly build tool, no less.
As far as I'm concerned, the biggest problem with builds is the attitude
that they're silly and working on them is beneath real developers. If
you ask almost any developer at Eclipse, they'll explain that builds are
the bane of their existence, that they happily delegate it all to
someone else. But there's nothing silly about builds. In fact, we
ought to treated the problem as the most fundamentally important problem
to solve when it comes to ensuring that the goodness we develop ends up
coming out of the pipeline and feeding to those who consume it. I'll
climb down off my build soap box now. :-P

I'm thinking the only real substance in your stated concerns is
installation problems, yet what you describe isn't something familiar to
me. I'm wondering why components like GEF, which are also widely used
in other Eclipse projects, don't cause the same installations nightmares
that EMF does. I.e., what's fundamentally different about dependencies
on GEF verses dependencies on EMF? Neither are in the platform and both
need additional installation...
>
> Best regards,
> Dann


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: [buckminster-dev] Dependency Visualization [message #36113 is a reply to message #35943] Wed, 24 June 2009 09:35 Go to previous messageGo to next message
Achim Demelt is currently offline Achim DemeltFriend
Messages: 160
Registered: July 2009
Senior Member
Dann,

I'm not sure that what I'm going to write will change your mind, but I'll
try anyway.

I am using both EMF and Buckminster very intensively. I have built products
based on EMF. Built, of course, with Buckminster. I can run EMF-based code
generators during my automated build with Buckminster. Yes, EMF is already
running in my headless Buckminster. So I guess I know what I'm talking
about.

EMF will not introduce any significant overhead to a typical Buckminster
installation. The runtime JARs are _really_ small. And there's only few of
them. At runtime, I'd argue that it may even _decrease_ Buckminster's memory
footprint.

Installation-wise, I predict that people will see less of these "cannot
install XY" problems with Eclipse 3.5. That's for two reasons: One, p2 has
matured a lot in 3.5. Two, people (i.e. plug-in providers) have learned how
to specify their dependencies correctly. They used to be sloppy with this,
and while the old update manager accepted a lot of crap, p2 threw their
failures into the faces of their users. I learned this, I'm sure others
have, too.

I won't reiterate all the benefits that EMF will bring. But I hope that I
could mitigate some of your fears.

Regards,
Achim


Dann Martens wrote:

> Here we go again :)
>
> I feel some of the reply you've formulated doesn't address what I've
> tried to convey.
>
> As far as Buckminster is concerned, I have managed to build a complete
> working build system with additional plug-ins without any need of EMF,
> already two years ago. I see no compelling reason to introduce EMF now,
> as what I feel is needed to further Buckminster is totally unrelated.
> I'm interested in having Buckminster stable (which it isn't) and in
> contributing back what I added myself at that point. I really see no
> reason at all to warrant this diversion. This has nothing to do with the
> qualities of EMF itself, but I will not support this decision.
>
> We can argue and misunderstand each other as much as you want, but this
> feels like a real waste of my time. And I'm sure yours as well. For a
> silly build tool, no less.
>
> Best regards,
> Dann
Re: [buckminster-dev] Dependency Visualization [message #36147 is a reply to message #36113] Wed, 24 June 2009 19:50 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Hi Achim,

This discussion is not simple and potentially endless, and that's why I
refuse to engage in it anymore.

I'm currently working on two other Eclipse-based projects and I need to
focus. If the need arises to use EMF in those projects, I won't
hesitate, I can assure you.

I was in need of a build system badly, and I'll continue my pursuit,
although not necessarily along this track.

Thanks,
Dann

Achim Demelt wrote:
> Dann,
>
> I'm not sure that what I'm going to write will change your mind, but I'll
> try anyway.
>
> I am using both EMF and Buckminster very intensively. I have built products
> based on EMF. Built, of course, with Buckminster. I can run EMF-based code
> generators during my automated build with Buckminster. Yes, EMF is already
> running in my headless Buckminster. So I guess I know what I'm talking
> about.
>
> EMF will not introduce any significant overhead to a typical Buckminster
> installation. The runtime JARs are _really_ small. And there's only few of
> them. At runtime, I'd argue that it may even _decrease_ Buckminster's memory
> footprint.
>
> Installation-wise, I predict that people will see less of these "cannot
> install XY" problems with Eclipse 3.5. That's for two reasons: One, p2 has
> matured a lot in 3.5. Two, people (i.e. plug-in providers) have learned how
> to specify their dependencies correctly. They used to be sloppy with this,
> and while the old update manager accepted a lot of crap, p2 threw their
> failures into the faces of their users. I learned this, I'm sure others
> have, too.
>
> I won't reiterate all the benefits that EMF will bring. But I hope that I
> could mitigate some of your fears.
>
> Regards,
> Achim
>
>
> Dann Martens wrote:
>
>> Here we go again :)
>>
>> I feel some of the reply you've formulated doesn't address what I've
>> tried to convey.
>>
>> As far as Buckminster is concerned, I have managed to build a complete
>> working build system with additional plug-ins without any need of EMF,
>> already two years ago. I see no compelling reason to introduce EMF now,
>> as what I feel is needed to further Buckminster is totally unrelated.
>> I'm interested in having Buckminster stable (which it isn't) and in
>> contributing back what I added myself at that point. I really see no
>> reason at all to warrant this diversion. This has nothing to do with the
>> qualities of EMF itself, but I will not support this decision.
>>
>> We can argue and misunderstand each other as much as you want, but this
>> feels like a real waste of my time. And I'm sure yours as well. For a
>> silly build tool, no less.
>>
>> Best regards,
>> Dann
>
>
Re: Dependency Visualization [message #37018 is a reply to message #35530] Wed, 01 July 2009 19:28 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------090701080704040200010105
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

I had some time since the last post to work an the visualization and
these are the latest changes:

-better path highlighting. so far 3 kinds of relationships are
implemented for highlighting:
-path to direct dependencies of the selected component
-path to components that directly require the selected component
-path to root request. (either shortest, or all)
each way of highlighting can be selectively enabled/disabled and is
additive to the other selected highlightings

-tooltips on components to reveal some details
-sash form between navigation tree and graph viewer
-better resize behavior
-bugfixes
-tidier code base and architecture

Unfortunately something seems to be broken in the Zest zooming support,
so that feature didn't make it into the visualization just yet and it's
still just registered as a bom editor because I couldn't think of other
useful integration points.

Apart from that it I think it's pretty usable already and I'm curious
what you want me to add/change/do before you'd consider to accept it as
a contribution.

Attached are some updated screenshots to get an impression as well as
the exported bundle including source code.

Remarks for the screenshots:
light green = root component (either cquery root, or drilled down)
green = path to root component
orange = direct dependencies
blue = components that directly depend on the selected component
yellow = current selection

Best regards,
Johannes




--------------090701080704040200010105
Content-Type: image/png;
name="Bildschirmfoto.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="Bildschirmfoto.png"

iVBORw0KGgoAAAANSUhEUgAAA1wAAAFkCAIAAAC7Ma16AAAAA3NCSVQICAjb 4U/gAAAgAElE
QVR4nOydd1xTVxvHn5vBSNggw7D3UBQVQbSK4sZVqXXVum1rq7a2Wm3dr3tX WzscxdGqddZa
B+6FDKmKiihDQIZoBAQSILnnnPePMAIkkakg5/vJp03uvec5z/OcG++P59xz wxBCgPIukpSU
BABOTk6aD4tLlbwRdxoTNm3/EJ8/B0ce+8yZp/y+wTuSP/61n//Zj28fmmDH fVtGGjXAhqJB
ElVDGjohnnbChjBDobwLyGSy27dvGxgYeHh4qDwgLi5OKpV26tSp+i6UvifY b6HRb7f3B5sw
1XfLE38I6rE2zeuz0N1zu7diC9MPftBz99AL5z535KPsoxPem5k8bPO2zztz bv/y5Zzd8fyQ
w9Fbuih9N0nuP8PbzjLad/f3QP2KrUX3Q3fet+/u52zCpl/7dc78S90OXV3l q5O1P6TrWo9D
N1Z1FADglyc/7vKt0Y6bP3YXZh+f1P3zh31Xb531nl7igXmfb83/JOzsXC9y +7uA4Ylr7v7V
1wAAoPDK5E4zDPdEbOzwYnu/wP0jL5+dZsevV16bLk33skKpJ05OTgpdqBmE 0BtwpnHBGAMA
QQghhujY9RrZy1WAGyMwhAgAkPrZrqeROgeIUvYN7nw0JPKvyQ6N/rVvkETV kEYdcQqlZYMQ
Sk9P79+/v7oDbG1tw8LCVIpCWXbcM7B8z16oUIRFMfMDhux5DgBgNvrYzfU+ AAD6wQtnBVpp
AWgJeOXCkc08/dsV3dF/LfqgnR6A3YLVEaeH/V0zf3XbTPiijeKt9ehFS8/9 ++3JhMW+7S16
T/JftGDfne87Buhh8aXQm4KBf3Y0APbp6V8u8kL+XPGRnwEDzl9vnXuu24+7 Yr/Y0LaG6XkH
oaKwpaPhSpr89EXS6ZUmBnpVtufkFzoN+M7RplWdOsRyOfD5nDq1VQNCmBCC MUKIAaNOMzd3
gsZRuwhjopA69RGF9TRS1wARwoSUSueatqnrYDVIomrqTGOOOIXS4pFKpQKB QN1eoVAokdRo
uknH68tDFz4ufv7vF6NDcek2Xut2tjrVjpRl3klnXGa4l156BK6BrlonauYs Et/4af6SnWFx
YlaxQXdAPgugY9Z9Ug/5rL238gPeKwjbHWM8dEE7IYA0885Txmmah77in0S+ ha+v2avYxHzU
gkVhg16bKU2MmhQLEWJVvhJTnyWdWjlx3obx8zdXeU2ctyHp1MrE1GfVW8lz o/bN7h7oZuLj
2jp4wsIL6VKEWFT8cHs/i5A1P64e07aLa6sRP8dJX1z6eUp7P1cTn869lu3b /rmP4/cRr6pa
kyScWTF0UDsTH1eTHsHjf496IUcsQiwrSTizavhQHxMfV5POXYP+d+qpDCFM AAiLEItkKfuH
WA7/9VFJWb/DV/6wfLR3YHsLvy59V518UoxYxOYnHPziowBzH1cTHw/H4dN/ TS7S1KPyiwBB
4kvbJrT1dTXp6F9mUBK5MsBy2rmc0sPyz3/VwWVxVL4ab1kCBDBCiEWy7Bsr Avy7jDuWLFF4
O2Lrge2fdPB3NekcOHLXbXFe7M/fDrTzcTUJGr30prhEZYAhG3dtmdKpu6dJ x06By04kqwkw
9+onfusfyxJXdfR1NfHx/exWoZp4qw1WsSIolUlTH7iqRBU92R7QKXDRQ2lp Mtncs990tJ0Z
9oJVl/wqzmy7FVfdB+WEaD4DqydK1evNfDcplHceLQtPS3h270mh4h41RsfC 2d3Dw7W1oEJ3
MFweR8XfqASAw634A5Cp6V+m+OWZ2RM3Z/bZdCE2MS094/HhECOu4g45xshv Yl/upT0RL56e
3nPPasQoz3ItqqJ/hqm8lRDcYu6zo6KwpYNUkZj6PPnM6o/nrtUXCuUydtVK 4uTE1dHhOjlx
16wmegLhx3PXJp9ZnZj6vFIzWcbZuR9siHH9LPTakcM/95Hs/Gby+odShBDG RJ685yB/6j/n
YtN2j9U+881HOzN7L/or8viOz3WPrgiXKMp8Sshfhi8buizCadIvV4+fOb+o j3jntGknM2VI
Lr6+ZND8o6T/yrNHwsJ3Lp/gqoNYhAhAuQml9xgT+ZO9h/VmnD0TlXR4kfPl b0fveCiVpe1d
uPS89cxjRy7ePn5419QerblYfY+VwJjIk3ZuSA388UDYlY1j+P98PWrHQ2mp KK0IARMAjJEa
b8uqaLKsK8sHfX3GY/6fPwdb8xTGE3/fmNxl7c5jx7/yitn66Uezl0R5zDm6 /4/N/k9/WPTj
fxJVASbvPcCbdPzM7Sd/zbE4v/DrC8/lqgIU+G+99pWLltOcmzfuZ0Xe2OzN Uxdv5cH62J5R
jK3KpKkLXHWi5Ba9Rjs+P34qQYoQQoh9FbM3Encd6qOP1Sa/kjO7gm4uVeGD UkI0n4HVEqXy
5H/b30gKpWkhEAikUqm6vRKJRChUfRsu17LHh+3x9a37H5XUrkctUTsReXo7 Q6b4KMu686S4
RqJMnhEdJ/OeNqWns6kul2Ffxj3MK/8rT7/D+EHCG9v/CN3z2H5UiLOWoiMf G5J0Jb6wtHl2
dLTY0MPZgMPRNRaAJLdIUdFk85IzJIq3HC4HAOOqHb9DUFHY0lF5XYzeMe2j 2av1hUKE0Jq1
nEWL+YMHs8+ypIMGsQsW8tet5+gLhR/NXh29Y1olTZj5775rvH5LVgxu72Dl 0mfy8jlOKXsO
3itACGEAvd4LxvubcwnDzQs7GGUwfMn8Xm4ic5cBU78bZQ6EVNGE2ae2n9YZ tXLRgPaO5lbu
AZNXj7OMPHI9uyTr5I6Txb2W/zQ+0MvKwtbZP2RIF3OmVIwoC5Oy9wC6PeeP 9TEkiGPW/Zup
nk+O74/Nz03L49p19Pe2Mm1l7tg5cEiQOUdtj1WEAwbgd1owe4RvawunzpPW T3NJPr4/VoIw
VlKlCCFCgGAkV+ctAJE/Pb948HdXOyzYs7GvJafcuF63pbNHBjg6dgqeNrZ1 7j3hlOUf+nvY
tRk6YZzbq4gbWSUqAjTu//0oHxMG81sHTfLlxV5LLJSpChApnCxTcBriVR4s LW2OooEmm9UC
V5eoEos+g5yfnTv5sAghxObcPnyN+I1uK8Q1dIZbkvlKhQ8VCdF8BlZPFBWF FIpmuFyujY1N
amqqugPS0tJsbW1V7+PZjV4/v+PjVUOGz/3t5I07cQ/vRYbt++nAY8zX5mm6 h4XXesDUri9D
Vx5MKCKkOOnI6p0pao5EeckPYst5kK7tZstJPB3+TA5EmnBo2eY4pYqfrtfY EJPwdduTXMcO
tVcsE+FZ9f+0l/zwNwv+jE5OjTu7cebaeKdxk7wFoGXTrYvhwz1H4qWESJOO r/rxAWEAAHgG
Nla8jOvhj5+Jc/Ka/xpNVdB7Ct9xFDPIGtYgq5wvExibn965YsTMFQCwc6cu AMz4okhLi8yc
gbZt42/fzps1s+iXJdMFxubKzYszb2eB44dOOhixAMCYdmhr8io+KUfugQjw zD1a8xCLAIoz
7jzjOI635iva8kSd7bQOElxp5q74aURaccq9EMfflbyyzhAXpEelE5fh7kKs 7LZCZhGEEMtU
fk+AZ+kl4iMWAQDo2boZ5T1MLLEZPsRl98oB/id6BHXu2q9Pv27WAkZdjzJk ylfqiAC3dUdX
AWERAgAT97bGefGJBXJHQqAiBIQIEILZIjXeEpAn/TZmEdN7yYFVga0YpVY8 cy8bLYW3AnMh
39LNpjSZumb6UPRSKmcRt0qAfBMHM25pgLqG2iWZhXKuh4oAAbGYAGAWIZZR n2EZ4ikPVjlc
O5U2kcrAkbpEYc+AoR4/7j6a9JmHS9HNvyOh06oOupgtqpkz6nwoTwir6QxU kSg6WUyhaIbL
5bq5uZ07d87CwsLU1LTKXrFYHBcXN2jQIHXNdT0+O3jJcdvan3Z9/efSQgI8 E2e/vl/t2TrZ
Rxc0fPm4lu9v/f3prK+DvZZrGVsHjP0k4Ppvqo4jbNTCkAEVn3233dqwOvLT uV3c5xgYWweM
mzEwYmNFVU/bdcQop5/WGY4Pti5TPlyLIVsPiOfPXTHsvTzQtuk2cce2r7x0 AEDoO2/LtE+/
HOi2TqeVR/D06d0vbAEAAIOAb77qPHVB345zwWhExoPNGpPXLKGisKWjrjTi 4eN/aMv3w6cv
zcpiAMDMVI5YMDUBAMjMZNbPmeAf2Dficphyc8WSU4xQ6UoGhDApLSNhwjAc UKwPVZpyVDTD
UFZtqjDFIsJpP+/fQ/3NKhWzi2+TMpNKf2gq1YqYqu8JksvZ0qNZuQwBYMx3 HbsjomtU2I3w
a+E/j9v126h1f/6vrZoeoXKEFcYVrhMAwBgjYEq3VwSOECLqvOWadeihff36 maspAcMdtCq2
MwxDFEYwJsBwOAQhxAEguNQiQlAtWMDl/RIgGLNIVYC+woppVkZ9hkGepDxY Fai0qa0mcHWJ
QoxJ1w8cN/5y5vGsVs8P/Md5b0kboeLuyho5oyYupdKphjNQVaJoXZBC0QiX y9XV1Q0ICLhw
4YK7u7ujo6NisriwsPDJkyfx8fHdu3fX0am+VqQcRse+/+xt/WdX38N3nnU1 ZVb5R571hLAn
E8r7NQn4au/Nr8r3zp4FVWCMBx/LGKyix83nPqzQarOmKe2R52YU6HaZ1cdS 6UFZHAOfKT+d
m/JTVStcs+7zDv83r/zzlCmK/wu9p++NnK6i23cFOn3c0lE3g+bUMcjDx//o tsUGwjwACF27
8ei2xbvXbQQAPd0X/oF9Ldx8qzTnmLe1gOTox/mKjyXZt+7lGjjaCkm5JFAc ZuZljpL/Symd
vJOm3UyREaX70hBCiGvRQQSPLsa8YFGV7T4iJvH6/dwq2wlUzEArvccEUGb0 g1eKOeCSzHux
eQYuNtoEIdCz6Tx81Jebfti7qX3OyX/jJOp6rAwmgDJj4koNyrIf3Ms1cLHR Bm09HZDmFira
ynKTs4swwViNt5gAx6DDnHWr+qasHbXyVFpJxfaKLJWuqFZuVPaxcoCVm0CZ PKoWIEIADBAk
15zhajaVqG4Tqw5cbaIIArMeA13El09GRBy7yfX7wF1QS2dUxFWRkBqegZUS VT1KCoWihJaW
VuvWrYODg4uKis6ePbtv3759+/adO3euqKgoODjY0tLybTtYA4i8MCfz9r41 x4p7TuvViuoe
DdDkvPtoXoOscgGmUF8/v6DAqWNQ6tOMYSHFABCTMdO918SYjJkA0MEjzMLN t0AqFerrV1q2
adrzgy7ysJVLT95OTH8UFrpk8xPbkUNc+AixmAAhZYeZ9RzWIf/EirUXH6Zm Pjr9+9rDL0of
Mih5vGvyjIVHMmUsMQkaN1AvavkX28/GpGakpt6/+PdPy44nSYlJr7F9+VeW frXvSuzTzCeP
bh4+cSO9pKIuxaJK71lMgL2z9ofDkU8zH0eEfrc72W7AEFcUv+vX3X/fTkh9 np18/1JYCmtu
Z8Ko61HZK4VBecyaLUeinmY+jgyd/3uC7YAhrjyuZfv2+slHjiUWytnChHM/ /ZpIGIJZNd4q
sgFGAQvXL+wcu+yjTZezZGXelmcJKZ69iMs/KqJSEWBFk1IhyUpVBYhA17wV Nzv6ZvKz7Jzc
fFZtvMo2K2JXbVNN4GoThVhETDsN9sz9Z9kvEXzfQW10FGu6a+SMGh+UElLD M7A8UXT1MYVS
Q4RCoZ+fX0hIyLhx48aNGzd8+HA/Pz91S0yaHJLwWb6+g1Y86/e/RYHGNX4k V4uETh+3dFSW
Rkz8ph39dfnwTxYAwCefZGIMp06Z/vWXeatWsunT001kRwukX0Ye32HSc37l 5qbvff9bzsZl
Oz4bWADaFh1HL1w0zZ6HkLyiMAMAAK16Lvoxa/mitRP/kOt79J/yebvk33gM RggVpN6Ne9S+
SI4QX8/nq72LjFf9vm70wUIAHXOXzu+PEwAi+h1m7/lWuCx00QehJcA3bdv3 S78+SrOETKX3
mADffvQ0y0uzJ218gQ3bBi/aNsqRR9K44qubF/+SISGgZd6hz/xN71tzEFHT I5JXeAUKg1PN
L341aUOFQYR47lNXvb/k+y/6bNUydek2ZqJP+G8EITXelmeDMe21bK3km9kL J+qsCZ3WrlKW
MCp/0p9i+hjKHgZdJcBKs7eKCWLCUxUgErSZ+KnXwhWfDVsMBkPXHV6uJl5l mxWxG6q2qa06
cKQuUQgAjDqHuBYvitMb3Nddt+yUUJf8SgGqiUspITU8A5UWLDfCV4pCoTQx 9HrsTMp42040
Dxj6M3ctAQ1rTf69fFfl9qfPXr2K3iEpKBj6yfdVdv396wqhvr5hj29tDBqg rMKm/DJ96oVB
uw8Mad3Qv4gmf3Jw8ofXh/29eXiDm6a8swQHtnvbLlAoFMrbgVYKWwQa1iCr my9r3UqIO058
tnfanVOhVXYVPL1v+cmR1sLiutZZiPTRPzfy3Nu5moH4v38373ru8mVHU9Lw M3dY8WNrdE6Q
QqFQKJTXQ0VhS0fDDJqVmdDqqz+qb+/u9zFAnRUhABB54aOzG1b/mCMD0LXy HfPtl0NbMY0w
lac0sdjQpikUCoVCedeg08ctBXWVwiOnb755ZyiUJkvIgC5v2wUKhUJ5O9DV xy0FdWuQ6SWQ
QqFQKBQKUFFIAaoLKZQy6HeBQqG0ZKgobFloeGAhhUKhUCiUlgy9p7Blofl3 kBujYeOhLHCb
mm8aeDOZrKL+m1d+oFk5TKFQKO8MtFJIqRGafxblraCsG5qab1Wo4l51bxvW /ypyuRkJLKoI
KRQK5S1CRWHLoj7armnqwnIBkZSU1NTcU6BcGmxsD5WT0LzkIDR5ZU+hUCjv PPQ5hZTa0QTn
kRX+KCRFUys1qRQ6jeFeM51Mr06zdp5CoVCaNVQUUmpBEywWltMEpWEVNxrJ q3dDDjaRIaNQ
KJSWDJ0+bnHUU9g1ZV0ITe9Gw0ZVOc16sliZpjBSFApFAwihkpKSIiVKSkow xo3eMZse2tch
8KdkeaP31DT6fdtQUUipNU1fFzaFGw3L59mTyoCG04jvjBwEJUXYrKOgUN5h 5HJ5Tk5OTEzM
qVOnDh8+fPjw4VOnTsXExOTk5MhkMrXNSO4/71s7TrxcULFJEj7d3Tr44POa i0mOwLlPSH8P
vQYTK2zq9iCHXr+l1lHtqQiq8amnz7WBTh9T6kgTvLlQmbc7m9x4yWm+z5rR zDsTCIXyjiGT
yZ49exYREeHu7t6vXz+hUAgAEokkOTn54sWLXbt2FYlEjdY5liOjbnPWd2u0 DihVoJXClkj9
S33N5RKuYTa58SqIGhShysql5uPVtW3uBUIFTbnkTKFQMMZFRUXR0dFBQUHe 3t56enoMwzAM
o6en5+3tHRQUFBERUVxcXEfj+Xd2fNG3jbVIJHLqMnr5mQw5AIA88Yfu9j2X /7YwxNdZZBu0
6fJvZdO4khufuYkq0WfXU1ajnV5r9q0e183DTmTj2X/u8TQ5FFyc2H1JvOzR 0gB7kUjk9WWk
tOTRrplDAtxFIpHItt2AWbvvF9bh4c0qjbCpO/rZ+S6NLUsPyTs/xd198rk8 os7notvf+Th8
GJZf2qDwymR379lRz6v4XLds1xAqCil1pIlPIpejcjZZ+b8Ny2ulZ82VXBVF qGzhHZCDQCeO
KZQmD8uy8fHxnp6epqam1feampp6eHjcv3+/LqZR9okZIxdHuX175MqNsJ+G Fv4+ecymB6X6
Sf54x2HtGSfinqac+dSRX9ZC2GXLvWQFj2/+ONCY69yzgwlXo51Huw5pTT8W m5J0dbHFP3Pm
nXoh7PX71SXuWm6Lw1MyMjIebPYTYDnHdczKv65HRl7+a57Xf4vHr7glqXUw Ko3wrIMn+Lw8
vv+BVHFMzvXQq9ze4/2MGE0+V0evis+19q42UFFIqTvNRRdCNWlYvr0xnhqt QeLUQRG+S7cP
quTdi4hCeWdACKWnp9va2qo7wNbWNi0tTb0BUhI21r2itOc64u8CRSGOzTz9 y0VeyIYVH/k5
23v1/3rrXPekvbtiFfoJ9IMXzgq00uLwBAIeU26Mw9fS1tbW1mbSD86ee8lt 8a5v2guRRjtm
Qxd82qUVn9FxCJ7SnRd7PqGomoe6bSZ8MSrQ28Ha2sV/9KKlvaTnTybUuvSp 2gjXovck/8J/
990pBAAsvhR6UzBwXEeD18T+dqGisIXSgHquuehCUCOqGtb/hlWEym3fMfHU jE4bCqUlI5VK
BQKBur1CoVAi0VBZY3id/3fkdDlHV3fXUYg8Weadp4xToIe+4iPfwtfX7NXD xHwEAMBr3c5W
R41FUnBr7aSlCX1/+HmCk9Zr7PBbuVpoKZpx9Ux1SnKLqq9wQeIbW6b2aWcn EolEIo9xZ/Nz
M/LZ1+SkpkY4Zt0n9ZCH7b2VDygrbHeM8dCx7YSv8fktQ0UhpV68G0qlQQSK 5sUl9VGE7x50
4phCaSFwjRy9vMtp42TMV9rJVD+eAQBguDyOin0AgJ6fmjd5O0zduXqgOfe1 doCpZIYQqHq/
IH55ZvbEzZl9Nl2ITUxLz3h8OMSIS2p7U6F6I4yR38S+3Et7Il48Pb3nntWI UZ7lWleVz0zl
rYTgOtzfWD+oKGzRNIj+aEaTyNBokkulIqyD9GlGmaw/VBFSKE0fgUAglaqd 2ZRIJIr1yLVF
S+RjQ5KuxBcqPsqzo6PFhh7OBhpFiSwp9LNZZ50X7ZrbqbTKVgc7HC4HoOwJ i/KM6DiZ97Qp
PZ1NdbkM+zLuYV6ty4Qajeh3GD9IeGP7H6F7HtuPCnHW0ugzR9dYAJKyeiab l5whwdV9blSo
KGy5NOAluRnpQqcyqmyvzxMNG6RGqNIBdd42a+iPl1AozQUul2tjY5Oamqru gLS0NA13HGqA
Z9X/017yw98s+DM6OTXu7MaZa+Odxk3yVjtPDUAkdzZMWhrfc+2mUdakpKSk pKREjkit7fAM
bKx4GdfDHz8T5+RJGHNPW07i6fBnciDShEPLNsepKuFVBeUlP4gt50G6tpt6 I7peY0NMwtdt
T3IdO9Serzl2LZtuXQwf7jkSLyVEmnR81Y8PCFPd5xpmuG7Q5xRSGowm/uTC KjTUb580uBpu
RjmsA83ljwcKhQIAXC7Xzc3t3LlzFhYW1Rcgi8XiuLi4QYMG1cm0xZCtB8Tz 564Y9l4eaNt0
m7hj21deOgBqH9CMcv67mIjyEmd0OTWjdJPn/yJOT7KppR2DgG++6jx1Qd+O c8FoxNHoNetX
h38yt4v7HANj64BxMwZGbHxtQY6wUQtDBlR89t12a8PqyE/VGNF2HTHK6ad1 huODrcsUl7rY
Qeg7b8u0T78c6LZOp5VH8PTp3S9sqe5zoy5AZkitZ88p7xTKSm7q1Jb2iz6U psL27fzXH0Sh
UN44MplMLBZfv37d3d3d0dFRMVlcWFj45MmT+Pj47t27W1pavm0fmzbSqLld xzxZEH4wxLzp
T85SUdjSUYhCKgcpTQEqDSmUpolEIrl//356erri/kKhUCgSidq0aVO3Gwpb CkRemPsi4fCM
DzeZbAv/rY9xDWam3zZUFLZ0kpKSVq+uyx0hFEpjQHUhhUJ5Ryi8MrndmDOs /fsbDmz6wKZZ
/NNG7yls6Tg5OWm4+YJCoVAoFEpd0OuxMynjbTtRO5r+BDelcXntxHEJqePv WlIoFAqFQmlG
0EphSwfj1zyUiQ88TGr/4KY3CU57eKLdQ8eoYd4uHOX3Dd/Ro7vH/J543B3i aVd34/U00qgB
NgmaxRwLhUKhvINQUdjSIaQp/LJO/SCIAABgQhABHQPbkbbGwrKNDduR4vHy iNTHeH2N1DVA
nPLgRKcEl+ghXg7vqJqkUCgUSr2gorClo0EUFshetDNe3tpCr8r2zOzCu7kL 9LVa1alDjDFw
OA0qSwgGAEIUMsvIqv0WK4DGEYVI0V39RGE9jdQ1wNJ+ayVGG2SwGmHEKRQK hdIIUFHY0lE3
fVwgE/uYrvps6QYjQ8Mqu/Jevfp58de3X87X1zKrsovI/ouPnB375H4J6OhZ TekU8J2tUAtw
wr0TPZJtFlqJf0nMzhS0uzbY7cX9G1/ez0hF2u1d2o+R/rdKu9edbhaVH22A nqTc/vr246sF
LGgZDWnjt97LwoQp3T73TsKlfDlwdDs4d97tZ8sSIEAQxiyQp4/+9Yu3vza4 jRNH0a/1dxbi
nak52SyvnXPnX33tbTkgzUuYH37noLiIBcbY0Obbnu9NMeCq77EiWYgQwEUX b59d9yArg+j4
uioMsjGRxwa/8o/va2MAACC/dOnwp9pBtwPMBSq8tUGEACEswSwmLzNjhl1K dvLr/6uzXtq9
Ez1SHLfYi1fHpqcQYZ/2PX52Zf6KuLEqJa9Ax/zL93rOt9LmVg/wid1qm5wf H2Uly3nezn6/
+znYqQpwZMFl36hcOUT77IkG0B7VL+RHC0ZVvNUGa0g7d07FiFSOxc4Kajbi Q9pop2nOLYVC
oVDeNlQUtnRUVgoLZOIOZmunLVqrLxTKZez69dwdO3kZGSASwbSp7NdfC6ct Wvvbsrn/iedW
0oXkWcr14dG5/fz6/WLFS0yM/PTyeX5w8DwTBhGQvXp40LrnyQ/7mBN55pOr Y2KLxnQL/tQM
7j6KmJ0h5zgQVMkTkpcZOST8Zf/OQSssBLLcpIU3LkzVGbrfSTc/I2Lg1XSv dl3DHEwM5K+i
xMBiggmB0gnZSu8V/R6y6RM2wkJPmjb3zLVR2gbnvfl7rkeeM/T7u1tra0aW /PJlIQOIYDU9
CrhKXiECsrwH6w07/jSki2lB0rdXro7UNrjQTh+X7i2rAioSS7BYlbeIAAGC Cc5Kj37/6tO2
/gO2OOrxCEYEZLkPNhj5rB/gw39xd2LkxbEZQkvrjsfa8h88uDrr+p1+wzp3 4FULMC9+v13P
EyN66UuSppy6+bWl5X47tnqAgtY9b3Q62S3R6Vqwpz0HAMjLjAhV8epUHixE GEVlkeSqiAVn
pNVkxNncrMg+r8kthUKhUN42dE6npVOqLSq/rCVTJ3+3Sl8oRAitWfqpyIIA ACAASURBVMtZ
tJg/eDD7LEs6aBC7YCF/3XqOvlA4+btV1pKpyq1w4ckHGTwH/xUurRz1jPt6 d51r9Gp3vLiA
EAwAfNuFbawsOMBwSsLinxm4+n9nZywSGg9s13m0ADBUdgBLT8WmaHt0XezY ykko9LBus8ZL
GPk4MxtJ/olNLrEL2NbWuo2ewNbY6gMXK4sy1YJJ+dxo6XsMADyb7zzNDYFw BdZz2pk+SXh0
t6QkrYSxs7Ty1tNtJTT0s3UMEjJqe8SVHMMAwLFY6OvSWU/gZNVmfXvj5IRH d+WlE7KVDgOC
sGpvMQAAfpp6c9DVjA4B/TY7CLnlrfiiZZ1dA4wMfR3bfqRXHMtvs9LDytPQ bFhbd/eSZzck
SEWAOnYLPMxNGMLXs5lixbmbnleIVAVYprlfk2FcebC4XE7p8apigRqOuOxc DXJb+nrD5z+F
QqFQyqGVwpaOyuljYyvz0ztXjJi5AgB27tQFgBlfFGlpkZkz0LZt/O3bebNm Fv2yZLqxlXmO
pKI5W3i7EBzdDXVLbWp3aKXz6uWrHGSCCPCEJq0ZzGLFYYyTlx5fcRgj9DPk HiCEVfaELbiZ
z6a8OGl/T8kr/QKxTBhVAM6uxsJKbhOWAJRaUH6PEQGe0NSag1kMAKBnYGRU nJuE9IY7G4Xe
POaXYB1k1bq/vV03fR6jrkcWm1aUszAiwNUzd+URFhMAMDUxNS7OTZJhB0KA YFTqFUYKH+QF
qrzFiIA8996oa0zvrgNW2+gySq14QhObUm955nyOlYm+jmIvT1cPWLEcsZhT JUC+jqGZIrFA
dLS4JYVyOWOsIkAgCAOUTrKrzzCLecqDpTQiKmKp6YjXJLcUCoVCedtQUdjS UVeb8fDxP7Tl
++HTl2ZlMQBgZipHLJiaAABkZjLr50zwD+wbcTlMuTkBAsAQgghhAMqW2ZZW 7xhgStdGEEIA
CBBU+mM6Socpe0WY9v5DjzjoVipmsy9I6V6idENaaWUOK1XpyquGhCB52dIK FmMEBBOOm2ef
KNGzsxlZVzNix967N6rngBVmanqstJ5DuUoHAFD+EQMDiiJc6WGEgGKaWIW3 iABXYB7Izbz+
JCNF5OzArdjOAEMURhTJZAgihFOWM6QqQFAsuy7LAwHCEq6KAC35qMwZxSio iRcnKQ9W5cGt
GkuNR7wGuaVQKBTK24ZOH7d0VE4fA4BTxyAPH/+j2xYbCPMAIHTtxqPbFu9e txEA9HRf+Af2
tXDzrdKco9tWCElZefmKj6goWlxsYKQvBIKgQtMgjsBLSJKy8wsVH9mC8HxE KlRO6TEd9OFR
6vMXVWYYOQIfPUhIf5lT1WcApdvsKt4DQYXZ90swIgQRlPlCnKdtbMMDREDP wDLEw+eHoH6b
zYtPJuVI1PVYNTMEFWbHlRrE2WJxrraxDY/R1uICW1yoaItLkqQs1uAtEI6W +dyeXfu9ujUy
IiUNVWwHpWl0DEBIRVAKOV09QKUmoLwKu2qApT9oSVjNGa7mhqbM13jEa5Rb On1MoVAobxcq
Cls6GLPVX3wt/fyCAqeOQalPM4aFFANATMZM914TYzJmAkAHjzALN98CqZSv pa/ciuj0crOS
p0QtSXyeWJBz9t7NTXn6o5yNtDBWVNRQ2WE9XczzE6LWpL5MLcw5FXvrkBSA EISxJOfBpPPh
hwsRS7R7e9nrZUV9fjcl5lVh6ivxhYQ7Sx/nSYl2kKed1tOIL++nx+YXJr/M PJSQkc5ipCik
YcziKu8B8Is1txIi8gsfZT6Yd/+VnaOjK87ZeSfu7+zcVIkk6UV62CtibqDN qOtR2atSg89X
xSRE5hc+ynzw7b08W0dHVwYszVvp5yUezZXJsSzhyd1fcoEBgtR6CwAEtK0W 9fTr/DxiTPTT
LFTmbXmWMMYEgFSklwBglQEqNWEJIUBYuaoAMREIdLmSZ+F5kuyi4nysNl5l m8ojoiIWVMMR
V9uXinPv7X0VKBQKpaVDp49bOiprMxGZn8KW5aNmLgCATz7JxBhOnTL96y/z Vq1k06enm8iO
Fki/vHZwR0Te98JKzU2tO+9o/9+S2Iv9ZaAtNB8T0P0TQw4iuOJxzQAAYG7r 91Nh1KLIc/uw
lqeD1xfm+b9yABOCZPl3xLntWYwIR8+iwx8BOivux4yMlwNwLYwt3/fiAwF9 yw57/PhL798c
fh8BR6etg49f2ayuUqWwrNhGgG/o9okwffbp/54T7bZOfr94GPKggFuUsel6 bLocgCvoYN/p
B1d9DgE1PRJ5hVegMDhNkP6VskFCeKZtV7vc/P78sS1cHRdrt0kWmb8SgtR4 W54NRtfmfz3l
sy/cHM/rtqddq0pZIqVzwWXTx1A+514lQKXEls3eAkdVgETQyuszs/DlYf8s Aq2hPYNXqolX
2aZS7BxVsUCrmo24utzSuiCFQqE0IZjSSSVKS2XEiHsqt0vYvC6i7XJZwdBP vq+y6+9fV/C1
9G/mzhPKGuCijvN/Djt/wanfQRdhQ686wE8envsg3emf3s6t6SPxmguHDrV9 2y5QKJSqIIRY
lsW4YvkZh8Ph8/lv7rn0bHrowPdCh14497lj7X4Ks84NWyS0UtjSUTdhp8vR C0+f5Jg/9c6p
0Cq7XibeT7Y8Kigpwaoa1gAiz/0no8TN3LgVFMUk3d4pNfrKUps0/NRh6SQm izFLRSGFQqHU
DblcnpeXl5CQkJWVJZVKAUAgEFhZWbm6uhoYGGhpaalsdfB9u/m6P0btG2xW oRuL/vs+YPDl
sRcufeOuupESbOr2foH7R14+O82ODwAcgXOfkP4eeg0mQknuP8PbzjLad/f3 QP2GsvlaqgTV
9KCisKWjYQpPl6OXZbT/39vVdhhN0C0uqUeFmRB5/JP/Vv5XLAMQ6FmM9fMZ JmBQw9eslZY7
NLRpCoVCaRHIZLJnz55FRES4u7v369dPKBQCgEQiSU5OvnjxYteuXUUikcqG QZO6wozdl18M
/MCibBao8M6+Ey/cpg93eq0iBCyXV74kcEy6zVnfrZ7BUF4HXWjS0nntatBG eGGe2Zc9+l8d
Nixi2LCLvbt8YqHDNEpHjI1r72s9HS2qr6Wlryb7ettfCAqFUgHGuKioKDo6 OigoyNvbW09P
j2EYhmH09PS8vb2DgoIiIiKKi4tVtjV9b2JPrajfw7LK54Dyb+05/cp7/CBb fnHKP0tGBriI
RCKRZ69p2yJzEQDIE3/obt9z+W8LQ3ydRTb2zl2XxMseLQ2wF4lEXl9G5qeH 9nUI/ClZDgAA
pDjln2VjurmJRCKRvU/wt/8+Y6Hk0a6ZQwLcRSKRyLbdgFm77xfWodKg0gib uqOfne/S2LJA
Sd75Ke7uk8/lEQCcf2fHF33bWItEIqcuo5efyZADABTd/s7H4cOw/NIGhVcm u3vPjnp+cWJ3
5aBq716jQ0VhS+fYMb+37QKFQqFQmiIsy8bHx3t6epqamlbfa2pq6uHhcf/+ fZVtGSP/Cf30
7u45lVGq43Jv7r5Q1GlCP8vCK9+HzL7h9OW+yxHhYZuDc7aMm340S/EHofzx jsPaM07EPU1N
eHh1sbuW2+LwlIyMjAeb/QRKpnHupXnDPj0IIT+cvhF54+SmCW0EhACWc1zH rPzremTk5b/m
ef23ePyKW5JaR6zSCM86eILPy+P7H0gVx+RcD73K7T3ez4hB2SdmjFwc5fbt kSs3wn4aWvj7
5DGbHqgWyQCg1+v3q0uUgqq1d40PFYUUqgspTQV6KlIoTQqEUHp6uq2trboD bG1t09LS1OzU
7zhusFncH8dT5ACAX17bfRV1ndjL9OXZjX/rTNu65EM/Fxs7r74z13zeOmr3 FbHiJnX94IWz
Aq20ODyBgKfuXnD07NTGY8WDtmz7sr+3vbV9m8AR43pa8UG3zYQvRgV6O1hb u/iPXrS0l/T8
yQS1+kwdqo1wLXpP8i/8d9+dQgDA4kuhNwUDx3U0ADbz9C8XeSEbVnzk52zv 1f/rrXPdk/bu
ipXWttemAxWFFAqFQqFQVCOVSgUCgbq9QqFQIlFbjxN4jx3WOvHA0UQZoOcX Q8N5PSe+ZypP
i0wqStkc5CBSYN99dUJxbnouCwDAa93OVud1LpU8vZVCXPt6G1ZWjUh8Y8vU Pu3sRCKRSOQx
7mx+bkZ+rZcvqjHCMes+qYc8bO+tfEBZYbtjjIeObScEkGXeeco4BXroKzzh W/j6mr16mJjf
fO+DoQtNKACqKjRJSUlOTk6N3W9SUhIA1LMjhZH62NEQbM3zUIdYVBqfOlUx 1wLbt6tenVYe
b227awwaZASrG1THW4+XQqHUAh33UR/abT948OHnU+7ujhH2/cPPiAGCCddn 860TI8wrl6Xk
iQAMl8ep28Mi8Mszsydufjllx4UDXRxMdIsjZnaeIKntTYXqjTBGfhP7cifv iXhhn7bnntWI
tZ7l2lWFvwxTeWvZA2CbPrRSSHmb1Ocan1SG8pa62dG8q25m68/UqfJygaiO 6kl4k7z5fpPU
84Y9oVBaCAKBQPEYGpVIJBLFemQ1aDmFfOSWfXz3qUN77hkP+riDPoC2ja8D xJ+IePm6h5px
uBwArOIobZtO9szjsNhXykJLnhEdJ/OeNqWns6kul2Ffxj3Mq/1TzjQZ0e8w fpDwxvY/Qvc8
th8V4qwFAKAl8rEhSVfiC0ubZ0dHiw09nA04HF1jAUhyixTes3nJGRKsOagm Aq0UUtTyZoqF
Tk5Ota3GVbdQ5941FLrqX4CsG4oCYbkcnDpVXqVkWO6PSkH85mtpDdujZmuv VfB1M0uhUFTC
5XJtbGxSU1M9PT1VHpCWlqbhjkMA4NsOGtdm1YK568Fi2sa2AgDgWgZ/M2L9 2K+nrSYLR3Vs
RcQJ4acv45AF4x0qt+QZ2FjxMq6HPx6mb6Wja6Cn5JXlwNnD1o6b+fmWTfOG eRkUJEbdRt0+
9PS05Rw+Hf5s4CBLecKhZZvjgNHkmAKUl/wg1qRsdpwr1HZTb0TXa2yISd91 28FryVB7xT/K
PKv+n/Za+fk3C/y2zuoqTDgwb2280ydbvAWgZdOti+G2PUfiB3/mAcnHV/34 gDBtqgVlYqRB
T78dqCikqEah1d5kXxou2w2uBV9r5y1qLAVVpCE0PXXY4BPHNaG2J0lN9lK9 SKGog8vlurm5
nTt3zsLCovoCZLFYHBcXN2jQIE0meKIBEzotmh1lO3Kku2LGlWMUuOrETvMF q+cN/ikfQNfS
O3DUHKPq85YGAd981Xnqgr4d54LRiKM3v6nYwzHuuebYT6u+Xf1Z/7XFoGXe fuTy97iWQ9ev
Dv9kbhf3OQbG1gHjZgyM2PjaghxhoxaGDKj47Lvt1obVkZ+qMaLtOmKU00/r DMcHW5dpJ67F
kK0HxPPnrhj2Xh5o23SbuGPbV146ACD0nbdl2qdfDnRbp9PKI3j69O4XtlQP qgkuQKY/c0dR
y5upFJb3BZUvz40qBMu7aEBF2FD3FKpEWR2qu9cQ3kjSqnTUXBRVnf/CaS4B UiiNhEwmE4vF
169fd3d3d3R0VEwWFxYWPnnyJD4+vnv37paWlm/bxzeFNGpu1zFPFoQfDDF/ V++9o6KQook3
rAvVlScbSdY0bI2wUUUhVNaFoFEaQiOrw2anCDVD9SKF8lokEsn9+/fT09MV 9xcKhUKRSNSm
TRuNNxS+QxB5Ye6LhMMzPtxksi38tz7G7+wvp1JRSNHEGxOFb0wLlnfX4LPG jS0Ky1GoQ82i
sIpXVWiQ5d4tRBJRyUihUKDwyuR2Y86w9u9vOLDpA5um+bPFDQIVhRRNNKoo VHe5fVs3w9Wz
APbGRKEyNReIDaUO37EyYX2gepFCobxj0IUmFE3UamlwDdGsThp7dUsjKcK3 S02kYYOsSmnW
WWpw6EJpCoXyjkErhZTX0CCisFZlqsYuTzaSInwrlUIFNVyGUr336htVJqeK oKSqpZ7QEiOF
Qmma0EohpcGoLnHqNmXZGOXJcn/esRqhgvLn11R5o5ma1w7po6EbFlpipFAo TRNaKaS8ntdK
tCpKov63rzVGReoNKMLaut1I2ve1P5SnwZ/XHkOVx1vkzZcYaW2YQmlRUFFI eT0atEvjlS4a
VjC9mRphExGFUNcJ5XLoo56bI40hGZVt0qGnUN55qCikvJ7XPsClCg2osRqv gNcYs8a1EoVv
4HE/dS4ZlvO2VohTGpYGvAGADj2F8g5DRSGlRlRfbaCON/OjI7WyAG9EEarr S8PBb/L6WjeB
SG9iawnQhS8UCkUBXWhCaerUXzy9GUXYXKjVs68pLYE6/6I0hUJ5x2jISmGV n+GiUN49avLj
clUusY8yShrXJwqlZriJtGvbhJ69TZM6DCWFUhMaplJI5SClhVCrMhu9oFKa FIoTsoZ6gp69
FEoLhFN/E1QRUloaNTnn6TWV0jSpyZlJz14KpWXSAKKQQqFQKBQKhdLcqe/0 8WtLJiWkWJvR
qWcvFErz4rWFltzCEmO90lk8QoBhGt8nCqVm0LOXUh2WRSUlLMsijAkAcDgM j8fV1ubxeNy3
7RqlIamvKMSY1XwAH3iYvOaYtwxOe3ii3UPHqGHeLhzl9w3f0aO7x/yeeNwd 4mlXd+P1NNKo
AdYc+fkLB8bz+jzqYanXwJYbMMDXOKnitkLFD/QlJSUhnqVm2wY6XMQ27e8F m7Z/iM+fgyOP
febMU37f4B3JH//az//sx7cPTbCr++WlnkYaNcA3z+vD0XRb4WvPTHr2VvDW zt43utBEKi1J
S8s9dCj22rWUnJxCADAx0XvvPfsPP2xnY2MkEKh2ZqhIdEvFZqupp68v8a53 qYjk/jO87Syj
fXd/D9Svr60aw6Zu7xe4f+Tls9Ps3tXHN9T3O0IIahA/3iYEEQAATAgioGNg O9LWWFi2sWE7
wgQAAJH6GK+vkboGiFMenOiU4BI9xMuhAdSkIgqCG/78qTSa9TRVdycRav7f C4wxABCEEGKI
jl2vkb1cBbgxAkNIked62a6nkToHiFL2De58NCTyr8kOTUhNKo9d7VvTs7cW NIWzt5EpKpJF
R6d///1ZS0tvD4/hAoE+AEil+XfuPAoLO7JiRT9fXxtdXa3qDTeHnS5AAFB0 d9WYeRlT924Z
aMYB4OhYOCtEJJbLgc+n97A1LRpRFBbIXrQzXt7aomqVJTO78G7uAn2tVnXq EGMMHE6DnkYE
AwAhCpllZNV+ixVA44hCpOiufqKwnkbqGmBpv7USo+oHi+Bya7Xy4vVUGs0G MFU3JzX84578
9EXS6ZUmBlW/Fzn5hU4DvnO0qeP3ouH/eUUIE0IwRggxYNRp5uZO0Dh6AWFM FBfE+lxW62mk
rgEihAmppfxq/GthpbGrQ2t69ta8o6Zw9jYiLIuzswsXL77g6TmYZU3EYkyI DAAYRsfQ0MfU
1G7hwlN7934oEvG53KrnmoOXNwAASAqN+UyetUdbbyuc+ENQ7+N9v+t2e/v+ iKzWX1+4MF37
zOpvV/1xPVUKhm7BX6xa84mfMRcAilP+Ubn9NZQ82jVnzo6wmNQC4Jp5vz97 3YqP2+ih1B3B
3X8N+OfaYkWBkuSdn+r/BdkasaOPEcm/s+u7uZuPP8glOrbdJy5e/21/ER+K bn8XMDxxzd2/
+hoAABRemdxphuGe84O2dl8Sz8LSAPulAEYjMh5sbshcNw3q+z3EmFX5elX8 rJ3x8s+Wbhg/
f3OV12dLN7QzXv6q+Fn1Vqg46sGVbvtDjUJDLQ+fXZBSIMWYxezDu0fNj0Vv jTjttS/U9Pjd
OLn00u1z7faGGoXuD7zx8LdzfzhczXpV1Zo8ITlqyJF9RqGhRn8e/zg26zmq 2P7+0T+MQkON
9hzsFf7kKSIsAQIEYcxi9OThCfNjsY/Y8n6jNoefart/n/neA31uJiezmMU4 P+fR5ycPmoWG
GoXudjh28Zc8ucYeK16IEMBFF2+f9doTarS73KAs8uZB8zOpOaWHlZy78IfT 9Wf5qr3FiBAg
hCWYxSg7ParL3gMfPc6TKLz9+86Bu+fb7w012nNoROxzcfGLbZeP24SGGh04 tSSjqERlgMdj
dsWc6/DnHqPdf3a/kZSkJsDcpxd8o3JLcqN99oQahe7/NEumJt5qg8WWD27R tbvnS0ctPCkJ
ARCibtDlRSkhf/z1zXM5i7FMktAvNNT6UkYuxiwuPnnuD5cb2QVqnVceTXVn FJbkxE3994hN
aKhR6G7nf67+Ji6Ra3ay+kvz9wIhVuUrMfVZ0qmVE+ep+F5MnLch6dTKxNRn 1VvJc6P2ze4e
6Gbi49o6eMLCC+lShFhU/HB7P4uQNT+uHtO2i2urET/HSV9c+nlKez9XE5/O vZbt2/65j+P3
Ea+qWpMknFkxdFA7Ex9Xkx7B43+PeiFHLEIsK0k4s2r4UB8TH1eTzl2D/nfq qQwhTAAIixCL
ZCn7h1gO//VRSVm/w1f+sHy0d2B7C78ufVedfFKMWMTmJxz84qMAcx9XEx8P x+HTf00u0tSj
8osAQeJL2ya09XU16ehfZlASuTLActq5nNLD8s9/1cFlcVS+Gm9ZAgQwQohF suwbKwL8u4w7
lixReDti64Htn3TwdzXpHDhy121xXuzP3w6083E1CRq99Ka4RGWAIRt3bZnS qbunScdOgctO
JKsJMPfqJ37rH8sSV3X0dTXx8f3sVqGaeKsNVnENBldFkmsYjvLYqXrRs7e5 n731vHDXnJIS
+YEDt1u1aieTGRcVoZKSnIyMPzMy/iwpySkqQjKZcatW3n/9daekpOYPIZE/ 3nFYe8aJuKcp
Z6aa3Pg+ZPYNpy/3XY4ID9scnLNl3PSjWQhw3hWV218PlnNcx6z863pk5OW/ 5nn9t3j8ilsS
4FkHT/B5eXz/A6nimJzroVe5vcf7GTEo+8SMkYuj3L49cuVG2E9DC3+fPGbT g2J1xvV6/X51
ibuW2+LwlIyMd1IRQv1FYWlJpvIrvyTbx3TVtEVr9YVCuYxdtZI4OXF1dLhO Ttw1q4meQDht
0Vof01X5JdmVGuKMlOvDo5+7te93fVjwL/byHZfPr3vJKko+slcPD3LbnPzw o/Rgd+0n18bE
SnoHBEe/3/sLfuLyDDmp6gN+mRE5JDzLqW3QtfffvxBgK753YWqSREawOD1i 4NUk4tA1bNjw
iAEBE4x5LCaYECidkK30XtHvIa32YSNGJw31c356fVRsjhQX7LkeeU6//d/D Qu6+P2hXO2sR
A+p7rOIYyPIerM+3+WnI8Gu93PhJV0fG5kiJUkVK4UNpYlV7iwgQIJjgrKdR wZdS3P0H/Oyk
z1MYz32wIa/1+gGD//Y1jfnv4thLEZGmHY8N7v9D68LN1+/8J1cVYF78fo7X iRFjU4d2ski9
+XVqkVxVgILWPW90MtIy6hg5dlz2uA9/MOeoj1d5sDztmbLBfXJ91O1X7/kP jHq/96dM/OLS
UVM96Jhv0lu/5Hq2pJiQ/Jz0eIZb8jIjkSVInncuh7QV6fPVOV8pQLVnlByB q3PnI8OGxwzp
872x+PuLMRFyDU6qemn+XiBVJKY+Tz6z+uO5ar8XH89dm3xmdWLq80rNZBln 536wIcb1s9Br
Rw7/3Eey85vJ6x9KEUIYE3nynoP8qf+ci03bPVb7zDcf7czsveivyOM7Ptc9 uiJcoiiUKCF/
Gb5s6LIIp0m/XD1+5vyiPuKd06adzJQhufj6kkHzj5L+K88eCQvfuXyCqw5i ESIA5SaU3mNM
5E/2HtabcfZMVNLhRc6Xvx2946FUlrZ34dLz1jOPHbl4+/jhXVN7tOZi9T1W AmMiT9q5ITXw
xwNhVzaO4f/z9agdD6Wll/WKEDABwBip8bas1iLLurJ80NdnPOb/+XOwNU9h PPH3jcld1u48
dvwrr5itn340e0mUx5yj+//Y7P/0h0U//idRFWDy3gO8ScfP3H7y1xyL8wu/ vvBcripAgf/W
a1+5aDnNuXnjflbkjc3ePHXxVh6sj+2ZGgxu9STXKRwV0LO3uZ+99bxw1xyW RZcvJ1tYOMlk
WCZ7GRMzNDFxWWLispiYoTLZS5kMW1q6XLiQKJfX4h5T/eCFswKttDg8bcnF TX/rTNu65EM/
Fxs7r74z13zeOmr3FbH8+dmNqrbj19vWbTPhi1GB3g7W1i7+oxct7SU9fzKh GLgWvSf5F/67
704hAGDxpdCbgoHjOhoAm3n6l4u8kA0rPvJztvfq//XWue5Je3fFSuucrneA RhGF1pKpk79b
pS8UIoTWrOUsWswfPJh9liUdNIhdsJC/bj1HXyic/N0qa8lU5Va48OSDDJ6D /wqXVo56xn29
u841erU7XlygEEl824VtrCw4wHBKwuKfGbj6f2dnLBIaD2zXebQAMFR2AEtP xaZoe3Rd7NjK
SSj0sG6zxksY+TgzG0n+iU0usQvY1ta6jZ7A1tjqAxcrC4ag8lvHSKX3GAB4 Nt95mhsC4Qqs
57QzfZLw6G5JSVoJY2dp5a2n20po6GfrGCRk1PaIKzmGAYBjsdDXpbOewMmq zfr2xskJj+7K
Syc6Kx0GBGHV3mIAAPw09eagqxkdAvptdhByy1vxRcs6uwYYGfo6tv1IrziW 32alh5Wnodmw
tu7uJc9uSJCKAHXsFniYmzCEr2czxYpzNz2vEKkKsEwGvSbDuPJgcbmc8sGN y9R17rLIwcRa
aDzEx+8DXcCgftBBu6Olbmq6OIewiZk5hg5eXdhnkVJcLMkOLzEIMuZjdc4r B6j+jNIydv3c
yaqNnsDKwHxkx0692PS/81i1TjaUKIzeMe2j2as1fy8+mr06ese0SlfVzH/3 XeP1W7JicHsH
K5c+k5fPcUrZc/BeAUIIA+j1XjDe35xLGG5e2MEog+FL5vdyE5m7DJj63Shz IKTKVTX71PbT
OqNWLhrQ3tHcyj1g8upxlpFHrmeXZJ3ccbK41/Kfxgd6WVnYOvuHDOlizpRe x5SvaWXvAXR7
zh/rY0gQx6z7N1M9nxzfH5ufm5bHtevo721l2srcsXPgkCBzDQ1QDAAAIABJ REFUjtoe5VWu
qwD8Tgtmj/BtbeHUedL6aS7Jx/fHShDGlZUNIUAwkqvzFoDIn55fPPi7qx0W 7NnY15JTblyv
29LZIwMcHTsFTxvbOveecMryD/097NoMnTDO7VXEjawSFQEa9/9+lI8Jg/mt gyb58mKvJRbK
VAWIFE6WXfw1xKs8WFraHFyDwa2eZEmdwqkOPXub+9lbt+t1HcCYiMUF2tp6 GINYfF4me6HY
LpO9EIvPYwza2nrPXxQoliTXDF7rdraKZSYlaZFJRSmbgxxECuy7r04ozk3P lajZXgPhicQ3
tkzt085OJBKJRB7jzubnZuSzAByz7pN6yMP23soHlBW2O8Z46Nh2QgBZ5p2n jFOgh75i5ptv
4etr9uphYn6Tm8V/gzTK6mNjK/PTO1eMmLkCAHbu1AWAGV8UaWmRmTPQtm38 7dt5s2YW/bJk
urGVeY6kojlbeLsQHN0NdUttandopfPq5ascZIII8IQmrRnMYsVhjJOXHl9x GCP0M+QeUMzx
VZgquJnPprw4aX9PySv9ArFMGFUAzq7GwkpuE5aUzRJWeo8RAZ7Q1JqDWQwA oGdgZFScm4T0
hjsbhd485pdgHWTVur+9XTd9HqOuRxabVtwGgREBrp65K4+wmACAqYmpcXFu kgw7KP69KPUK
I4UP8gJV3mJEQJ57b9Q1pnfXAattdBmlVjyhiU2ptzxzPsfKRF9HsZenqwes WI5YzKkSIF/H
0EyRWCA6WtySQrmcMVYRIBCkuHFbYVB9vDzlwVIeXAnj7GlQ6g9H/z1Dzt+E sHJ1g25mbWmi
lZQeV2wSny33aGvTK//Rvy+LB6CMp7oWHbQIi9U4j3FFgFitcW5J9s/R/+3M yH1Z6iS3fwnL
ytU4+drJ4uqonKETGNfoeyEwNlduXpx5OwscP3TSwYgFAMa0Q1uTV/FJOXIP RIBn7tGah1gE
UJxx5xnHcbw1X9GWJ+psp3WQ4EpzhcVPI9KKU+6FOP6u5JV1hrggPSqduAx3 F2JltxUXKoIQ
YpnK7wnwLL1EfMQiAAA9WzejvIeJJTbDh7jsXjnA/0SPoM5d+/Xp181awKjr UYZM+UodEeC2
7ugqICxCAGDi3tY4Lz6xQO5ICFSEgBABQjBbpMZbAvKk38YsYnovObAqsBWj 1Ipn7mWjpfBW
YC7kW7rZlCZT10wfil5K5SziVgmQb+Jgxi0NUNdQuySzUM71UBEgIBYTAMwi xDLqMyxDPOXB
quHgVk9yAduu1uGoPEE1Qs/eZnH2vklkMlQiY9nK92mziJTIWJmMC7W7fZvh 8jilpyXBhOuz
+daJEeaV6lPSSNXbXwt+eWb2xM0vp+y4cKCLg4luccTMzhMkBACAMfKb2Jc7 eU/EC/u0Pfes
Rqz1LF/+rOIrwjCVtxJSC9HbzGmshSYePv6Htnw/fPrSrCwGAMxM5YgFUxMA gMxMZv2cCf6B
fSMuhyk3J0AAGEIQIQxA+dpPRXGLAaZ0bQQhBIAAQaU/2qx0mLJXhGnvP/SI g26lU4p9QUr3
EqURL63MVRTPlKqGhCB52ZIFFmMEBBOOm2efKNGzsxlZVzNix967N6rngBVm anqstJ5DuUoH
AFD+EQMDiiJc6WGEgGKaWIW3iABXYB7Izbz+JCNF5OzArdjOAEMURhTJZAgi hFOWM6QqQFAs
1C3LAwHCEq6KAC35qMwZxSioiRcnKQ+W0ogQAC6nfNSAwyiOYdQNurahyIW9 dyVHfF+iN9hY
4G2pvSlDfBvlaZt62XA0OK8coLozqvh0xJUfStx+HtDTX19bFz3/6u8rUqJI u0onG26hSQ2/
F8rNFQsTMUKlawYQwqS0AoEJw3BAsWRRabZK0QxDWaGiwhSLCKf9vH8P9Ter NGrFt0mZSaUz
Tam+wlR9T5BczpYezcplCABjvuvYHRFdo8JuhF8L/3ncrt9Grfvzf23V9AiV I6wwrnCdAADG
GAFTur0icIQUXw9V3nLNOvTQvn79zNWUgOEOWhXbGYYhCiMYE2A4HIIQ4gAQ XGoRIagWLODy
fgkQjFmkKkBfYcXUJKM+wyBPUh6smg2uqiTXIRyVJ6JG6NnbHM7eNwSHw5iZ 6UuKCgjwjYx6
aWn9IpNlA4CWloWRUS8CRCLNt7DQ53DqcKKBto2vA5w8EfEyZEgrTg22vxZ5 RnSczHvhlJ7O
JgwA+zLuYR5rW7pPv8P4QcLR2/8IzX5sP2qbsxYAgJbIx4acvxJfOLybPgDI s6OjxYbtnQ04
nDxjAUhyizAYcADYvOQMCTYGAOBwOQC4BvPYzZZGmT4GAKeOQR4+/ke3LTYQ 5gFA6NqNR7ct
3r1uIwDo6b7wD+xr4eZbpTlHt60QkrLy8hUfUVG0uNjASF8IBEGFpkEcgZeQ JGXnFyo+sgXh
+YhUqJzSYzrow6PU5y8qz94ijsBHDxLSX+ZU9RlA6Ta7ivdAUGH2/RKMCEEE Zb4Q52kb2/AA
EdAzsAzx8PkhqN9m8+KTSTkSdT1WzQxBhdlxpQZxtlicq21sw2O0tbjAFhcq 2uKSJCmLNXgL
hKNlPrdn136vbo2MSElDFdur3JhISEVQCjldPUClJqC8brdqgEQhlAirOcPV 3CjPfBsBpIkl
RaWDK7lbgAgQrH7QCd+4h7DobFLSI23Ltlrc1uYmJDvpz+fIpbWh1uucLw1Q nXFUGJ2H27i5
vqevpQVEVpz7SEaIBifVneQaQKqo+fdCuRXHvK0FJEc/zld8LMm+dS/XwNFW SMquPqWHmXmZ
o+T/UgoVH6VpN1NkROmWJoQQ4lp0EMGjizEvWFRlu4+ISbx+P7fKdgIVc3hK 7zEBlBn94JVi
Fq0k815snoGLjTZBCPRsOg8f9eWmH/Zuap9z8t84iboeK4MJoMyYuFKDsuwH 93INXGy0QVtP
B6S5hYq2stzk7CJMMFbjLSbAMegwZ92qvilrR608lVZSsb0iS6VrUpUblX2s HGDlJlA2+Vgt
QIQAGCBIrjnD1WyWonFwVSUZ1yEcFdCzt7mfvTW/RtcTHo/bs6dT7stkPo/h co08PQ/Z2S2w
s1vg6XmIyzXi85jcnORevZz5/LoUmLiWwd+M0L/49bTVf/+XnP406c7FvasW 7X4sU7e9ugWU
l/wgtpwH6dputpzE0+HP5ECkCYeWbY5Tqvjpeo0NMQlftz3JdexQe0Wtl2fV /9Ne8sPfLPgz
Ojk17uzGmWvjncZN8haAlk23LoYP9xyJlxIiTTq+6scHisoCz8DGipdxPfzx M3FOnqROGW3q
NMrqY76Wfn5BgVPHoNSnGcNCigEgJmOme6+JMRkzAaCDR5iFm2+BVMrX0ldu RXR6uVnJU6KW
JD5PLMg5e+/mpjz9Uc5GWhgrKmqo7LCeLub5CVFrUl+mFuacir11SApACMJY kvNg0vnww4WI
Jdq9vez1sqI+v5sS86ow9ZX4QsKdpY/zpEQ7yNNO62nEl/fTY/MLk19mHkrI SGcxUhTSyhcI
V7wHwC/W3EqIyC98lPlg3v1Xdo6Orjhn5524v7NzUyWSpBfpYa+IuYE2o65H Za9KDT5fFZMQ
mV/4KPPBt/fybB0dXRmwNG+ln5d4NFcmx7KEJ3d/yQUGCFLrLQAQ0LZa1NOv 8/OIMdFPs1CZ
t+VZwljxp3d5egkAVhmgUhOWEAKElasKEBOBQJcreRaeJ8kuKs7HauNVtqk0 Iv9n77zjojja
OP7bK7QDRLpUFUFARbEB9t57r7Fj7F0xdqPYexc1GjWJBo1JXhu2mFhQY4kV CyjVjkjnbmf3
/eOO47hGF9T5fu6T7O3uPPM8M3vsz2dmdo1aeNgmPv3v1ySZjJM9ff7f3lSA 5/V0Ogvjutai
qOjXMitbe3BiswqVMuLOZ5g0thBxepxXDVCXcRh6SJjI2FfxLCeTJv1668Ej gOd4nU4W1+pj
iVm+fhcSM7NcC0WtmvcKkIUFL/rf7Wdxj8P2Llz/3KVvF3cxISzHg89eYQrr 5t1qJ/+xdOX5
R9EJj0/+sDL0LeRpo7Qne0ZMmHckQcryli0HdzC9vmR8yOmb0fHR0ffP/75l 8bHIdN6yxcA2
4ouLphy4eDc24fnjq6F/XI7LykmBZK9mVWyzHA/2zsoNoddiE56E7/1uX5Rr +y4eJGLPjn2/
334a/eZ11P0LYS9YW1dLRleNql7JDcpurth45HpswpNre2f/8NSlfRcPkdC+ Vi2zqCO/PUuV
salPz2zZ8YxneI7V4a28NWDRYN7qefXvLh607q+X0mxvla1E5E+v45Rf5VFp CTCniOJWzKZr
C5DA2NZG+PrG1ahXrxM/JLM641W1mRO7/s7VbGRRocIpltXH9OotU1dvEW7a BcPQUNyvX63U
1HspyW95HgJhOSvr3lbWvQXCcjyP5OQ3KSn3+vSpZWhYqFFHgUWzZX/sHmke FtS5sZ9/k14z
foo0c7YQ6NyvDs9en9ezvZI20yKarVreKnJmgKdXzSZjL9aY0KG8il+GHr37 uYGpPaSjU/Ze
oV2XTb8sqvNwabfGDVqP+c146K6DU6oZAZDUC9oYaLyrQ9XKXo0mXK09tomp XF2aN5g+pf7T
uW3q1KzRcE5hQi7zlMjwcXjCt9i4pN/EuQBGj07gOJw4YXX4sK2NjXTs2DhL 6dGU9Mn/HNoV
njRHkqu4lVP9XbVuLbx7vp0UhhLbAQ2ajC4nIDyX87hmAICti9+W1Ovzr505 wBl4V6o23jZ5
hwAczxNp8p13H2qxHOEFpna1DzYwWnr/Zt8IGSC0K2/fvZoYPMzsa//oJ150 /2qP+wQCoxqV
fP2yR3VVMoXZyTYe4nJVR0vipp689YY3rOHmt92rnAgpwoz4dZfuxskAoUnt inU3eJgJeOio
kZfleAW5wUCTuCmqBnleZFVjufvVOWd/2yg0cneqOtwuYQfPEx3eKluDMXb+ vrls6rmrQ0SN
fqxpk6uVeMVwavbwMZRj7moBqjRs9ugqBNoC5E1sqo2xvrIk7M/5MOjavGOw jnhVbarELrB2
rr859fq8s8dWCgwcbSsPtX2zDzzhdXU6DwhcK5Q3iHrjVcFMzPOcyKKJGcIz beqaMHLZp935
XAHqMA6jtnVqh4ffbP3bv6YGEj83z1ZvH8rH63U4WUzDx5Z+gUd3LOkxWt/v 4tqxXZbNZ+cu
btV4zs7EtYt3jemQAkO7Ov3nzQ+sKCJElpPBAgDYNJ+/+eWS+SuHHZSZebUb Oa5m1E4RwxFC
UqL/e/i4VoaMELGp75T988sv+2FV/0OpgJGte/3ug01AeLPaU3+cJVm8d36v vVkQW9VoM9mv
tcpIH5Nrm+Mhrtg/0P7C1OFr33LlanScv7VfZREfI3z39/oF2+PTeBjY1m49 e113JwHhddRI
ZDleQW5wlO35KcPX5BgkROQ5aln3hXPGt95kYOXeaMAw3ys7eUJ0eKtsDcaq xeKVadOnzhtm
tGJvYM1crcQR5fPg5OOtUIxaQi3AXAN/8gFiXqQtQGJSfdi31eYtHdNtAcy7 rgpdoiNeVZsq
sYv1dK6WRlbr9HyFU9Brl169n8fV+4kQiQS2tqbz57eaP/80x3kKhJVEIgkA lk3jSJRM9mTx
4jY2NhKhUI9LkgZbI+Lkm8Iqk/5+MUn1oIFzu1n72s3SKKRrvxKmfOff4jtr ObD+TJ+ch8VM
ClQ5IvsQn2IcMKm1vcoDDwXmviO3nBm5Rd2K0LpJUOitIOX3kSMVwfiM3X9t rG63PnsYPnv+
VOHo3fue1v1pbFKAY4hMmtJ1tLqa/n3HUrGB2dUPQRJpMeTAueRtYWfPubU9 5C4p7jcwcs8f
nekV5/ZnqyoO9N2eFDV+/bWGrkORkZERsalaD8W++vjxxq60FO2/C4mZWbmm s5zNiyENwL7Y
PnbUuU77funiUNy/C9nzQyP6XOr2+/oexW6akk0JN3LHZjX1HD3+139a99Or t+ygvweLnfT0
rLi4pMOH/7t0Kfrt2xQAtramDRtW7Nu3pqOjztfclSF4WeqHt09DJ/RZZ7n1 ys7W5ektXScl
9e5jY4HplbjhlZNH3TmxV+3Q+2f3o+yPmmRlFXauJi/78Gd8VlXb8jbIuBl5 e3e6xRR7Q74Q
S0TzQDFAyXJcYVbwUb5mdI3vONhIuDrDXu0P1PxdpMTetx99xEGSWdj5Qnz6 4z8vJ3nW9LDG
u1vH1+954z65jhVf/CNN2b+LTzmG9dVRqo1Mr16KGiYmhpUrW0+Z0nTCBCIf uhMIGJFIaGgo
Eok+B3WddmVSvQGn2Ird16xvRhWhXkrwNXfGAtOXFj8fv61xwGKocWZWEfKT PC+LeH4r+Fam
FDAxtRvo59tNMaRYvKgsZShu05QvHD0zwStYSypMOai5v4nfN0Ch76kAeFnq 49Nrlm9OlALG
FeoNmDW5qw1TAlPSVQbjits0JZtSbWR69VI0EYmEn4f+04pp092R8aXtxOdB UYePu3e/Vlyu
UCifEb/95qfrUGRk5J0nbz6lMxRKgejZPkDP0SMnr34yTyiFQ38PUiiFpqjz VfXcGimUr5Za
Hral7QKFUkio4KBQvlqKYRET1YWUr438XPP0zkopm+TnyqRXL4XydfLpVrZT KBQKhUKhUMos
RZ1TSPmsiYyMBODm5lZEI0W0kKd9AG5ubvIN6HB41CiZ5s6QELHmzpImP61a 0o2mq1Ll9qev
XSuqvVYqnUWhUCgUJUVdfUz5rJErrVIRKAUiT0WoFbnI0BSLX4/4UFWBUGnG stPdISFiZQfJ
N76e3qFQKJSyBhWFXztyfVDWtIISuWDNjyLUFBP6xe4XKRY1VaDm0bLWy7q0 O4VCoVA+MXT4
mJJDoUVDCeUa868I9VvQekiXKCwWsai/JYuxufSrQK1nljVRqBWaNaRQKJRP D80UUnIoU1nD
oitCVTua+wsqOMpIZjH/KlBrqVLv1gJBpSGFQqF8SqgopKhTFqShvPaiSxlV WZlPyppYLJwK
1MpnpAhVs7ZUGlIoFMqngQ4fU3RSIE2mmtgr4jhvMcogTePFjlZRGBkZuXy5 i9rOfPpTEuEX
l6lSYdQomVIjUmlIoVAoJQcVhZQ8yOcDVlS/Fk4UKsuWxJNTPvEKa01RCJXs V1BQjPKoXEGq
nla8fn7uilAVpf6m0pBCoVBKAjp8TMkD/aPJBR2c1YqqkZJ7lt4n1oVBQTGq 1elaXTtqlCwk
xC33CcWfD/sCFCFUnl+jdUCZ5hEplJKDEMKyLMdxyj0CgUAsFgsEJfwKDDZu b4fGe7ueOzOu
8if9eZdWvaUNFYWUfKFLGhZi0l6BaixGayXkZ36IjIwMCoK8/qAgQEXQaBWL qqKnKI93LsWQ
Swj9z6+hupBCKQlkMllSUtLTp09fvnyZnp4OwMTEpEKFCh4eHubm5gYGBtqL 8R/+7FFjksWB
/35oZqbYlXZlbJ0+0Ytu/dnXNp9iUmBSpXXPdl6mxaY92eiQts1+7vvX6UDX gv6x4N//1s1n
/L9ajlQYdfLSQh+jovqmpcVKntwNQkUhpQBolYalq7fyj9zPYl/FrL+Ismqt +6Gi81TVjB7R
Aw1hpEsGfUkDx2roaSuqCymU4kUqlb569So8PNzT07Nt27YSiQRAWlpaVFTU +fPnGzZs6Ojo
WGKVczJi0WjG6kYlVkGBYMq1XB92MoUAyPhv2YCg+FH7N3awFgACI7sqhgAA TiaDWPwZv0D4
M3adUlq4ubkpX4VSdGu6jJSE0Cycfs1PpJG5UVYnp6A1hoSIVcWi8qP15FGj ZPKP1q951q56
8pfBFxYOhVKKcByXkZFx48aNli1b+vj4mJqaMgzDMIypqamPj0/Lli3Dw8Mz MzMLaTz5zq7x
bao7OTo6ugX0X3IqXgYAsmcbmlRsvmTnvJ71qji6tFz31842lZptiZIBaZfH VHXMRes9saxe
Oy1WHFg+uJGXq6Ozd7uZx2JkSDk/rMnCCOnjRQ0qOjo6Vpt8LT3r8Z6JXRp4 Ojo6OrrUbD9p
3/1U3QstROaVqvn4+Pj4+FR3Ky9mJE5eNXx8vEwujG3Tb3WIwuFNT2WZL/5c 2LeBu6Ojo6N3
i8Ct1z4QeXFd+/NAq4ds9K62rvUW3c1uez7p7EhPzxFnknhdDZJx+zvfSn3C khUFUi+O8PSZ
ev2NWoNQUUgpJMqsYQnN1Su5/Fb+daEeOaimAt1yU3zO5kKrWNR6ZlBQDIDl y13UxKIuy5+v
NNTaCJ9pLBRKWYNl2YiICG9vbysrK82jVlZWXl5e9+/fL4xp8vqPCX0XXK86 68jFy2Fbuqb+
MGLAugcKiSN7sivUcMIfD2NfnPo2Z0qfJGDjvSg5T65u7lBeWKV5bUuhXjuP 9/xqMPa3uy8i
/15g9+eMoBNvJS1++Huhp0HVBVdexMfHP1jvZ8LJBB4Dgg9funbtr8NB1W4t GLL037QCB6Pi
8CjLy3N6Tr3sNvnAX+FXwtZ3TNw4eOzRlwRc0kWt+/NGq4cip45Dfd8f+/lB uvycxEt7/xa2
GuJnwehrEE1M1RqEikJK4VEKoOLVhSWqq/JvWVMO5l8Fqo6zlzRq6jAkRCxX hFpR5hF1zWX8
HOWUnnmZFAqlKBBC4uLiXFzUn6WgxMXFJSZG5x8cgM8KG+iZk9rz6P17ijwR xyac3H5e1HPN
0kF+VSpWazdt00zPyP177solDsw6zpvUrIKBQGRiImKUxgRiA0NDQ0NDJu7Q 1JkXqi7YM72W
hOi1Y9117rcBNmLGqFLHkU1Ed88+zdDw0Lj60PH9mvlUcnJy9+8/f1GL9LP/ e1rw1KfSYcO0
8+t+NwrctLCPn7uza7U2E1eMc7i+7+I72ZvTa7Xt5/K2rd1DoV2r4f6pxw/c SQXAvbuw96pJ
h8F1zPNo2DyhcwopRaUoAqhEn8aiizwnF+qJ5TOan+fm5hYSkvM1/68YLsrS ljIFfeo1hVJ0
0tPTTUxMdB2VSCRpaXoya4yo/uJDi+pml8/4b9mA2ckAIE24E8u4BXqZyTWf 2K5ePeuPd58l
E18AIoeaLrpWbfAp/64cvuhpm61nhroZAOn67IhtPOwUq2CEplZGWTEZmhqM vLu8ZfbC3WEP
37HyHcbtk9mCiqMch7NirkVmvPi3ZaX1Kocrxn1I07GfhZ2OdTp5eWhk3WR4 U9mk/f8mN2ic
ErbvZvmuc2tK9DRIjfxFkr+AKZQ8KGJu7BOLLT268LNYNKMH/c+V/CIVkuaz aUrLEwqFoobQ
onI1Hx/l6uPU8mIkKw8ymuczAMAIRQItxwCQNyeCRoRg1JHlHWyFedoBk8sM z0N9viD3/tTU
Yevfj9x17peASpbGmeET6w9NK/jTm1Uc5jle6Lv+3z96515fnX5N+/480e0h Y+E3rI1wxI/h
byvG/HivQu+V3kohra1BmNx7eZ7TFicVhQXgcXxWabtQ5jFyQoEayshJ/v9S aFsjJ+2VZruk
lYKGpquKPO1UdTTMb0U5MAAKqq5Vs4lfBl9eRF8T9GUKZQ4TE5P09HT5omNN 0tLSdB3Sj4Gj
rzN/9mJEao9GZgBkr2/ceFeuVhVzAVJ1F5JG7h0z6XSV+adn1lUkwgphRyAU ANkPXJTF33go
9Zk3snkVSwZg3z98lMTqHCvPD4bO9Srhf3+Ev+/ZxUaQj/15os9Ds9pDOkn6 hxzc+/pJxX5b
qxgAehpEkFTeBGkfMjiYCwA2KSo+jSuv0SB0TmG+eByfRRUh5VNSwEuO0fpP Qwrlc4NeyWUL
oVDo7OwcHR2t64SYmBg9Mw71IKrQ7tsWstDpc3+6ERX98PTaiSsj3AYP99E5 Tg3waXfWDF8U
0Xzlun5OfFZWVlZWlozwBbYjMneuIIq/dOXJq3eJSWmMrbeL4NnJK69k4NOf /rp4/cMiXoBC
+47Te5udnxa4/PdbUXGxkXfO7182f98Tqa79mhZIUtSDu0oexBlW1e2hcbWB PS2vrAqJ9BjY
taJ8xERngxg4Nwoo9+jHIxHpPJ8eeWzZ5gc8o9kgVBTmDZWDlNIif9cevYlS vjDoJV1WEAqF
VatWffjw4fv37zWPvnv37uHDh9WrVy+Uabsum35ZVOfh0m6NG7Qe85vx0F0H p1TT9/hnknjr
/DOSdGJCgEdlBR32xbEFtmPeYPqU+k/ntqlTs0bDObfNu65e3ipyZoCnV80m Yy/WmNChfBEH
UAUWzZb9sXukeVhQ58Z+/k16zfgp0szZQqBzvzo8e31ez/ZK2kyLaLZKt4eG Hr37uYGpPaSj
U/ZenQ0iqRe0MdB4V4eqlb0aTbhae2wTU0azQei7j/OGikJKKZKPcWR6B6V8 edAbU1lBKpW+
e/fu0qVLnp6elStXlg8Wp6amPn/+PCIiokmTJvb29qXt41dM+vWZDQc8n3vl UM8CzlXUARWF
eZCnIvyQmlXeVHHb5nkw9AZNKVbyEoV5XHDvks2tzRXzunmeYRj6e6d8FtAL tWyRlpZ2//79
uLg4+WvuJBKJo6Nj9erVCzehkFIM8LLUD2+fhk7os85y65WdrcsXj/igojAP HkYX/DGWZQ02
5ucuvj91vvbbmCoi1e1ir0j2ZEdb/9Pf3P51qKsw77NLxkiJBlgaeLvq+5vL sp//v0JYbPPH
1r64NQNi1e1ir0iKZb4IHYtr44qwwq6IRko0wE9DCnq5wvQY9jYowY4TieiN iULRS+rFETUH
nGIrdl/zy7pezsX19+TLuG+WIITk7z00ZRmO4wDwhBDC8EauLfq28DDhSiIw QngAfNFsF9FI
oQMkLw50rn+057XDIyp9Rr+KL+DyBAEHgAMhEPBw74gu3uAJSuD6zKmo8FK6 iEYKHSCLTf7Y
Oxjhk0pbTRLwAMeBlGTHiT6jHyGFUiqYNt0dGV/sVukvLw/0SIuo2LeRJ4Mt zU3V9icmp7q1
/66ys02hKiyB12kTwvE8z3GEEAYWdSeur4uSUbuE43i5nCuKKCyikcIGSAjH 8wrpnN8ypf/u
c5bVeehRlP3F/X4WZupP2ElKiWs6+JpX5VeFq1EqhUEln/s+AAAgAElEQVRe z1otGCw4HjwH
lgUDNP4OjQGehe7IiqGiUjRSyABzt1J+4DjIZDAsxKON9EPA8+AJ2JLsuOJ3 m0Kh5AO6+jgP
CGG1fp5Fv4o8ETwsaM2Q2evVPsOC1kSeCH4W/UqzlOzD9QNTmzSraunr4dBx 6LxzcemEsCTz
UUhbu54rNi8fUCPAw6b3tofpby9sG1nLz8PSt36LxQdCxvlWnhP+Ud1a2tNT S7t2qmnp62HZ
tOOQH66/lRGWEJZNe3pqWY+uvpa+Hpb1G7b8/kSslBCOB3iWEJZIX/zcxb7H jsdZ2fX2CN6w
pL9Ps1p2fgFtlv3veSZhCZv89ND4QQ1sfT0sfb0q9xi7IypDX42qHx48eXdh 69Aa9Tws6/hn
G0y7FtzAPvBMouK05LNTarsvuJ6sw1uWBw+OEMIS6evLSxv4Bwz+LSpN7m3v Tb+EjK7t72FZ
v1nfPbffJd3dNquDq6+HZcv+i66+y9IaYM+1ezaOrNvE27JO3WaL/4jSEeCH v0f7rX4ifbas
Tj0PS996Y/5N1RGvRmdlyoPS3mhpT/cFDmnp6uth6evpMWB6yMNkGSFsVswP o2s5j/7leRZh
CUl/uqOFX71vTr/K0nql5XV9av88eGZ/cb/fkFm7Na/PIbN2X9zv9+CZvWYp WSI2D4OLGUxN
Ua0zfo8GISAZWOGLunMwrS1sTOG3CqmvsbQ7rE1h6oJxO9HNHiMuaviQitBZ qG4LU1M41cea
fyAlIARsKkJno6Y9TE1hWQUTjiKLgOMVCSeShe0BqLMamdn11gnCxNZwsYNV ZUwJRQYBYXH/
BzR1g6kpTC1Qpz8i0vXVqPrhAfIG33dGeVOYV8o2mIrJbujwZ/ZpH9GvAr69 pNNbHuDl3kpx
ZhasK2PvE4W3fsFY0RvWprD0wuprSLyJb+rB1BSV2uD8G+0B1luI+d3hWB7m Thh3SGeAJ3tj
1gM8nI3ypjB1xj8pOuLN7qwpbWBpjvrBSJMp4tISSz59JpC9xYqeih4f/zMy AJ6A6O04LXHl
r4/kHwqFUipQUZgHRBvPot9EnVr+zcyVZhKJTMouC+bd3IRGRkI3N+GK5byp ieSbmSujTi1/
Fv0mVzFp/OmZvdbc9Biz958jodtap+2ePmL1o3RCCMfxsqgfD4lH/Xnmbsy+ gYanpg/andBq
/uFrx3aNMz669EqaPM2nguz9lcVdF4e7Dd/+97FTZ+e3frc7MPB/CVIie3dp YafZR/l2waeP
hF3ZvWSohxFhCeEBpQmVbY7jZc/3h5pOOH3qemTo/Cp/zeq/61G6NGb/vEVn nSb+duT87WOh
e0Y1dRByumvMBcfxssjda6Kbbf4l7OLaAeI/p/Xb9ShdIUpzQuB4gOOIDm+z M4XSlxeXdJp2
ymv2T9s6Oonkxp/9sDYqYOXu345NqXZz07eDpi687jXj6M8H1/vHbpi/+Vaa tgCj9v8iGn7s
1O3nh2fYnZ037dwbmbYATfw3/TPF3cBtxtXL919eu7zeR6Qr3tyd9U1FRt63 WhuNyDLh0WVu
aGjYjUN7ZrvfnTt5VXgKIYx9nzlBde8HT/gtOjMjYsu8jdFNFgU3tdR+sem5 OCMjI3Upwn8O
+g2avlPX9Tlo+s5/DmroQilCRyHoKub+D/9eRI8UDOyGO2mKe3/ENhhMQdQ7 XBiN0BFYFYvN
F3DnN0j242xqtkhSfmQ4Ow1jL2L6r7hzC1s6YXUv/BwLIkPYFAw9gN7b8O9/ CNuMGsZgCTiA
5xVlc23zeLwd5b7D41j8uxrHA7HqLrKiEDgVlebg3we4cxFBbSDidNeYu2U4 Hg/X41k7XPkP
h0bip2FYdReEgFeKm2ztyHO6vZWfnIUTM9D/N6w/jQEVFcYfbEZEM4RdRnAt LOyLfpNR+3tc
OY2WzxG4DKnaAny0HeKJePIK177HsQn4/ZX2AFsexFJveC3B60QkRsJPrDNe eWeJxoEFGrxm
UhIhk+mLJW+fpTg8CkueYt053D4CYUhOj+vpOM248tlHVBRSKKUIFYV5oPU+ fWNX4KCpy80k
EkLIipWC+QvEnTuzr16md+rEzp0nXrVaYCaRDJq6/MauwFyaMOH4gX9EbRcu 7VyrUgX31iOW
zHB78eOheymEEA4wbTV3iL+tkGeESWGHrpv3WDi7RVVHW/f2o77rZwueV9OE r0+EnDTqFzy/
fa3KthU8G4xYPtj+2pFLr7Ne/m/X/zJbLNkypFm1CnYuVfx7dgmwZRQqTFWR ZW8Dxs1nD/Qt
xxOBdZPpo7yfH/v5bvKHmCShax1/nwpWNraV6zfr0tJWoLNGmZoqBMR1507t Xc/Bzq3+8NWB
7lHHfr6bRjhORZUSQngePEdkurwFeFns2QWdv/u79twf17axFyiNmzZaNLVv g8qV63YMHOjw
4Z5k5JI+/l6u1bsOHVz1Y/jll1laAizfbk4/X0uGEzu0HF5PdPefZ6lSbQES uZPZ0lVPvKqd
ZWAokBfQYdOgSp+xHfyrOdhVcPbtO35Gi4yLf0SlE0IYm06rptW7t37anOXT Vr1utXpKU0u1
Ls5TFMpfZ8eyWj7HVlj1n7xN//XZf/K2YyusVEtlxmDTGfRaj4H14OKF6Vvg 9Qw7boJlwQHm
nTC5CYQcBO+x4xKGrkOXanDwQtAKOAIcyeVAVjyWH8WYrehTDw5OaD0JEx2x +ywyYrH8V3TZ
jClt4VIB3k0wqCkYViGz5GVzbQOSdhjrB56FXWvM8sHeXfjwHolCNGoCFxs4 uKNjXzgIdNYo
zd0yHGDQEMuGwLUCmk5AkDf27kIKCw6K8VDlaRxBli5vAT4LxyZjWBg2HUcP x5xS5i2xbBg8
3dFvGlzfwWwyRjVBFV9MGY33fyMmQ0uA1t0xxg8MgWtHNBXj5ENkaQtQMVZL 8mhhaXZnjW0A
AOfOWwUvZRITkRGtM5Y8fc6MwZYLGLgOPWvAsRrmrYRtdo/r6TgtceWvj+Qf CoVSKtA5hXmg
dfzOpLztyd1Le09cCmD3bmMAE8ZnGBjwEyeQrVvFISGiSRMzti8ca1LeVrV4 ZsLtl6jcx82I
IywAxqp2DcuPEZGJMi/CQ2Tr5SAiLAEy4++8ElQe4iSWlxU51nc1OMRzuUYS M2PDYzJf3OtZ
+QcVr5zi36XEXY/j3Xt4SjhVt+UyiyeEsEzubR4i+2qOYsISADB1qWqR9OhZ lnOPLu77gtv7
/9G0Zf2GbVu3beRkwuiqUUqsxCoV8RA61PEw4VlCAFh61iifFPEsRVaZ55ET AiE8eJ5jM3R4
y0MWuXPAfKbVwl+WNbNhVEqJbKs5G8i9NbGViO2rOisa09jaDBnv02UsEaoF KLasZC1UBGhc
zjArIVUm9NISIAjL8QDHEsIyultYSkSqnaVE6KrNJsiHG9vXrNlz+cl7RYRG bT9msUQEwLbV
dwtPdZt23Kjb8unNzRUtVmC0ljIs556f69OwnDshD5SlMmIRw2B0VXAEAAQ2 qGeN/x5DWhM8
DwcfiAkIkBGDWAZTKimqFrugiqEib6Qk/QWeZeBGE6xR8apSDJKj8ZzH8BqK KrJjUExNIwQC
1W0OPA8nXxhmr12oUh2J95BVCYO8MbkuDrRBsxbo0Q2VJDprzCLImQDJgefh GgBTHoQADGrV
RuJ9fJTljAjL/ZF/TdfqLQeex8O1CBRg+zl0ss8uxYHn4Vgr21sJzMSoWUlR VmIHJg2pMhCh
eoC27hBmB2hphOhUiGpqCVCxwIUHIRDobuEsLruzOAD4++/wgIC6RkZJoxog itMeS54+Z8Qi
lsEED0WkhlVQ1SA7U6i74zTjylcfUSiUUoWKwjzQlarx8vX/deOcHmMXvXzJ ALC2khEWVpYA
kJDArJ4x1L9Zm/C/wlSLy5fVcoQoVjIQwvGK/BnHM4wA8gWzKmOt8mIcstNs OaZYwgtqBR3/
tZ11rlxv5m0+26TKZHSV5Bmjvs0TmYxVnM3KpATgOLHHwF3hDa+HXb7yz5Vt g/fs7Lfqp+9r
6KgRuSPMMS53nQfAcRwBo9ifEzghhNflrdC6dlPDS5dO/f2iQY9KBjn7GYbh 5UY4jgcjEPCE
EAHAcwqLhEAjWHDKennwHMcSbQHWk+SMOzO6WxiySNXOykGbzTokLHjKxo/9 t+7Z7OdkYZx1
e1rfKWlEUZJLfnYtKgtgX8R+yCLmBbstytOE0L3QJJ/Xp2pxucglyjwNC15+ m2dBAIEAhAWj
eZpcQpFcnrAseCHWXkdv21xepV8HAJL7ZMhzbxwIm52Hy94mAMnKWVohlQI8 iBjjjqD1ZYRd
wNmVWL0WB0+jro4aobrugQVRGpf7zitkllwFKgMnPDgCltfuLQHs/WF0DodP o9UgGKrsZxjF
yXLRyWTbJBzAg2XB8uoB5nQiC05er7YAm5hmqy55L+iKV5bTWQAqV6588eKV Ro38mLcpgEYS
Lp8+s4AAQmX7cBAKshea6O44LXHlp48oFEqpQoeP80DXiJ5bnZZevv5Hty4w lyQB2Lty7dGt
C/atWgvA1Pitf7M2dlXrqRUX2NawQ9SNJ8nyr1mv/733wbyyi4TP1k6K06yr 2ZKoWy9S5V/T
Y66+kPJ87jmFQrvajnh8/uZblqjt93Vknl26/0FtP4+cEWiVbY4HSbjx4KN8 DDgr4d7dJHN3
Z0OeEJg61+/Rb/K6DfvX1Ur83/GHabpqzA3HgyTcfKgwKH394N4Hc3dnQxia GiH9Q6q8rPRD
1OsMjuc4Hd5yPATmtWesWtbmxcp+wSdisnL257SSYkW1aqHsr7kDzF0E2SPL GgHK74g8kelv
YQ2bKmjYzEr4N1JWrWfvRo7mBjwnff84IpkonGQTL25deEQyePuMxs93zt/7 PENnm2pek0pF
6Obmpms+Vr6vz5yP0B5OPC4+VHzNSsD19/CsBJ5kq0P5aXZw4HD5meJrWhSe ZqnPKRRVQEXg
j6uQEfX9rkDYbbAaU/2UU/pUt3ke0VeQKFMsZbhxExZeMOJBGLg1wph5+PUk At7h57s6a1T7
8DxiVAzekhtkYGGC1PeKslnvEZ8GXre3PA+LABzchidzMfkIMlX257QDp7Ie hSgEFqctQF5z
LiPREiAhYBjwbB4trGoTAMuyXl5e58//czBMYszjxFXIWO0n6/FZaA8HHjez J/9lxOFFZk6m
UFfHacaVzz5SXsMUCuXTQ0VhHmhdECoxM0tOSXGr0zI6Nr5bz0wAN+MnerYY djN+IoDaXmF2
VeulpKdLzMxyLSO1at4rQBYWvOh/t5/FPQ7bu3D9c5e+XdzFhLAcD57PPs26 ebfayX8sXXn+
UXTC45M/rAx9q3jIYNqTPSMmzDuSIGV5y5aDO5heXzI+5PTN6Pjo6Pvnf9+y +FhkOm/ZYmAb
8cVFUw5cvBub8Pzx1dA/Lsdl5STwWJJrm+V4sHdWbgi9FpvwJHzvd/uiXNt3 8SARe3bs+/32
0+g3r6PuXwh7wdq6WjK6alT1Sm5QdnPFxiPXYxOeXNs7+4enLu27eIiE9rVq mUUd+e1ZqoxN
fXpmy45nPMNzrA5v5a0BiwbzVs+rf3fxoHV/vZRme6tsJSJ/9iKn/CqPSkuA OUUUQpJN1xYg
gbGtjfD1jatRr14nfkhmdcarajMndq02GYsqdkzUPzfis4gsLTJ02+4IMDxH WCJ7G75+1lnz
0UFDm7ScutA/bm3wL48zdKxz13Vlurm5QcfqY/NyfH6uT/NyvGopxgYjm+HI LPx0Hc/vY+0U
PK6Mwd4g2QOXck3D2GGoP/bPxB93EXMfq+fiZfZa1Hsb0WMCYqSADSb1wF8z seJ3PIvB09vY
vxz7HgM2mNAFx6di42k8j8Xdv3DgPLI4lTUKqtsEHCC7hnn7EBWLC5ux/jH6 9gN3D8FbceUR
EhJw8xSesHC31lmjqldyg9JwzN+PqFhc2ILVj9C3HwyE8K+PiP14mAI2BceW 4yEPntPhbXZr
WLfAz2twfRrmnFYsoVVtJbkSUm5zHBSdpRGgWhFwSNMWIGHgYI/4S3iUgHfv QXTHq7QJgBDC
83zNmjVPh51PMTEOm4Y1fyAqRj0W/T4zthgWgP3L8DgVbBqOrMQLeY/r7TjN uPT0ERWFFEoZ
gQ4f54HWVI2lX+DRHUt6jJ4LYPToBI7DiRNWhw/b2thIx46Ns5QeTUmffO3Y Lsvms3MXt2o8
Z2fi2sW7xnRIgaFdnf7z5gdWFBEiy8lgAQBsms/f/HLJ/JXDDsrMvNqNHFcz aqeI4QghKdH/
PXxcK0NGiNjUd8r++eWX/bCq/6FUwMjWvX73wSYgvFntqT/OkizeO7/X3iyI rWq0mezXWmWc
msm1zfEQV+wfaH9h6vC1b7lyNTrO39qvsoiPEb77e/2C7fFpPAxsa7eeva67 k4DwOmokshyv
IDc4yvb8lOFrcgwSIvIctaz7wjnjW28ysHJvNGCY75WdPCE6vFW2BmPVYvHK tOlT5w0zWrE3
sGauVuKI8mmG8uFjZD/wWi3AXMPW8gFiXqQtQGJSfdi31eYtHdNtAcy7rgpd oiNeVZs5sZfT
ZpNn2k6edj14ZdtuK0zN7et3HNTq3l6OI7LEy8tWn7Hst2NYJTHhLZqPmdny 20UzQ+vv71s5
74ezydOEckUIHcPH3u2uHds5s1vgSj3X543f11br+UyteNsVmLMIK/rgI+AY gM1r4SECK8tZ
4iB/y0Sn1YiZgeldIDVH78nwfwIRA5bFxyjcuo80KVgxGszHFiusnYcdyYAR qjXGJAlYDg0X
Yo0Z1k7CukwY2KDHPPRQWaMAorLNguPhPhKOp9B6EUh59F+Dbz3AReFVGEav QgoPwwroHowh
rmA5HTWqegVwPNxHoMIJtF6QY5BlUXMyhk5G95owtEbbUWh4ARzR5628NWzb Y38K+o6H8U4E
1cvVSnIxz2UPPeeMuUM9wJyGzR5m5UTaAmRRbwLqjEfnBkA5HLyoM16lTQAs ywqFQrFYXL9+
/ZOnwjq0a3NgWsYWFmJr9JyfKxZ9PgvRYSViZqJ7HRhYwK8P/C6rLzTR7DjN uPT0EYVCKSPQ
19zlwfG//tO6P/bVx483dqWlpHQdPUft0O87lkrMzMo1neVsXgx/7dgX28eO Otdp3y9dHAr/
6jjtyJ4fGtHnUrff1/codtOUYqNjs5rKbdWBY/nGo0fan2QcGWf/6LRfSjKj 9fo0M+e9uj9z
s3ygtWyBkD1Dlx4YcByDnYtuTM00dnTDqQEIHQh6fRaU9HTUrYukpCRDQ0ND Q0OGYQCcPXu2
R4/OQUGZbdvC2LhMv6jdy4vemCiUUoBmCvNA1/idg42EqzPs1f7AOyf2qh1K ib1vP/qIgySz
sIMgfPrjPy8nedb0sMa7W8fX73njPrmOFZ/nc4wLDCd/oVzeT0imlCmUihC6 F5q42r9iW177
ZxOveX2mxV2tPcva1fxBoTM0qfcR9gH+3sAb/PI9ErzR2KYE8j3yRJRKhpKS f5SZQpFIRAgR
iUQAWrVq9fPPoQMG9BIKM5s3h5FRmdaFFArl00NFYR5oHT6WU8FaUmHKQc39 Tfy+AQqtCAHw
stTHp9cs35woBYwr1Bswa3JXG0aPI4VFZSi5uE1Tih+1gWM5erquYoVXFYMB bFHbX6czgNdF
6XNZCo4swMJ3AODSEGvmowJTAvPASPaCVnp5FpzsGYFEPoIsFArlycKOHTvu 2vXjqFHfiMWZ
DRrA0JDqQgqFkgMdPs6DIyevlrYLlK+anu0DoG3gWM7Nm/SWTtFCRgYaN0ZC QoJhNvJkoZz9
+3+cOHH0woWZ9erBwKAs6sI6deiNqWwh/wcGJ//XBgBAIBCIxWKBoCSXq6Ze HFFnrGTv9Y31
Puzt0Hhv13NnxlUW6zqZjcv7HEpe0NXHeSC/JVMoZQE1RQh676TohVWB47ga NapJJEYSidG3
3wZ+/Ji1YAETEUETsZS8kclkiYmJN2/ePHHiRGhoaGho6IkTJ27evJmYmCiV SnUW4z/82d1R
iUv15kNWnEmQFcoDgUmV1j3beZkWRrLwH/7s7lR52F8phaq5kLDRIS0rtdgZ XbhwSxE6fJw3
PdsH0HwhpVRQTRNqKkI5derwNF9I0Yr8UZcvX768fPnykCFDRo4ctWnT7F69 Mk1NwTAwMICh
IVRSP2UF+k+dMoVUKn316lV4eLinp2fbtm0lEgmAtLS0qKio8+fPN2zY0NHR UXdpRhSw7Pdg
P2PZx6jzm2cuHznBNfxwvwoFXjomsGw0Y3WjIkRBySc0U0ihlGmUA8cUSkFh WTYuLq516+ZT
p05MSkoaNSowMVEsFKJePTRqhPr1UbEiRDQzQNENx3EZGRk3btxo2bKlj4+P qakpwzAMw5ia
mvr4+LRs2TI8PDwzM1OPBaGZs5uHR9Vq9dqPDhrkwj75N04KAFmP90zs0sDT 0dHR0aVm+0n7
7qcq/iXAfQjf8E2Dyo6OjtU7zPotOku+l43b26ZSsy1RMr1lC4JWI2z0rrau 9RbdzQ6ITzo7
0tNzxJkkHuCS7+wa36a6k6Ojo1tA/yWn4mUAkHH7O99KfcKSFQVSL47w9Jl6 /c35YU0WRkgf
L2pQ0dHRsdrkgrtXatC/B/mCDiJ/RujPqxXdeIEsqzlT0OJK9Jf6AjMrl7Nz nw2/uNA+CWlp
aYBpfHz8gAEDateu+/bt202bNs2bN2/SpGnnz58fN+5ne3v7kp0NRvkiYFk2 IiLC29vbyspK
86iVlZWXl9f9+/fr1q2bhyGSFvP3oeMx4qqTnQwAgJMJPAYEj9xQxZKN+2fH jNlDlnr/vaye
hLw+NvGbVVHd1p/4ub7g9vbJMy6kinuq29JRtmCRaTfi1HGob/DKnx/M8Klj AnCJl/b+LWy1
y8+CIa9/n9B3waM2y49sbWz67JegcSMGGISdnllNu3HTFj/8vbBts5/7/nU6 0PXzmuBI/yhQ
vjTc3Nzc3NwiIyNLKMf2KVN3JSpwyyiXmRxFCOTaphSQfv36BQQETJo06bvv vtu0aVNycvKk
SZPu3Llz8+ZNfVPBKJRsCCFxcXEuLi66TnBxcYmJidFtgM8KG+jp6Ojo4hEw ZH/5ST9u6ykf
OzauPnR8v2Y+lZyc3P37z1/UIv3s/55mgk04ufOicf8183vVdHWp0W3u8p62 Wh5Ipb1sAdFu
RGjXarh/6vEDd1IBcO8u7L1q0mFwHXOwCSe3nxf1XLN0kF+VitXaTds00zNy /5676QWttexD
RSHly6SEpOGn1GdfxcCxXAKqCUEADfmcD6VQMAzTunXrcePG+fr6tmjRolat Wps3bzYzM6tV
q9alS5cyMjJK20HK50F6erqJiYmuoxKJJC0tTXdpRuQf/PvZMyd+3TCqJv/f X/+9VyxsIu8u
bxzVuqaro6Ojo6PX4NPJH+KTWUgT7sQx7s08TeUnmXg08zDQ/Geh9rIFRIcR gXWT4U1lYfv/
TQZ5GbbvZvmuA2tKAGnCnVjGrZmXmdwbsV29etYfHz1L/vKWaVFRSPmSkWu4 4pWGcq1ZXNZ0
oesZNF8OmkJQDhWCxYFAIFi4cOGkSZNq1qxZvnx5ExOTuXPnrlmzpm3btg8e PNC7MoBCKU6E
5q5VvbxrNug1d8eimg/WLfzzNQG496emDluf0HrdubvPYuLin4T2tBDyPAAe EAjFSmHCiMUa
IkVn2YKg2whj4TesjfDCj+FvY0/+eK9C737eRkpvNO0wTO69PM995n+9qCik fOHIU4Yo1sTb
p9GF+JIUIc0IfloMDAymTJni7e1tYWEhEAgEAkGDBg1++umn6tWrL1u2rE2b NvI1pBRKnpiY
mKSn6xwnTUtLy+e1JHLqOrWz0T8bf46UQRZ/46HUJ3Bk8ypWxkKGff/wURIL AAaONR352Nvx
irkN0pd3nmeq/2XQVbZA6DNiVntIJ8nlkIN7f3xSsV/PKgZyx3yd+ciLEamK 4q9v3HhXzquK
uUBgXN4EaR8y5Iv42aSo+DT5pkAoQFlc258XdKEJ5atAVRcWl9LKz6oR5RB2 IZanfCHomhT4
1atAzRcHFOOrBBiGMTExkb/FRP7AYbFY3KJFC39/fwASiUQoFHKf4R2L8olh GMbR0fH58+fe
3t5aT3jx4oWTk5P2a4nneB7geU5x2LR+4ADn9j+E3BgeXNHLWRB64nJCu472 sqeHF61/CMaZ
4ziBfduRDZbPX/pLtx0DqzBRoct2vwBqcxzHyU1xPM8LbbxcBKEnL79s38le 9vTw4vUPweic
8qiEJEU9uGuZPQoulBhWdRGEnrzyqkMne9nTX3MbMa42sKdlm1UhqLawa0X5 MhFRhXbftgge
N32u36ZJDSVPfwlaGeE2eqOPCQycGwWU2/rjkYjOY7wQdWzZ5gc8Ux2AyNy5 gij+0pUn3cwq
GBlbWnw2/wajopDyFVGM0lAtWagp+9SEnfKrnnFhuZHPfuBY18Lhr14FylEq P7WNkni5lJpN
sVhcrlw55SH6OitKnjAM4+7ufvbsWRsbG80FyO/evXvw4EHHjh11iUIuWxPK D4s9+o/02bFs
64VpezqtXHp5zMyGXjPMyjsFDBrXLnwdx3Mcx9h2Wb8rZuqMTtWXGJR3Chgw KuBSiNwCD57n
eUKI0LbziuArY2Y18JppXt4xYND4DuHruLwuZp69Pq9n+5zv9bb+u2b5tW9n BnjOMC/v1GDw
hA7ha3NCMPTo3c9ty6pyQzo6ZWskoV2XTb+8mz1zabfGSTB0bjRs19Yp1YwA SOoFbQz8dnKH
qquMbLw6jh3b5NxGAIB5g+lT6o+a26bOTFj0jn+wvmDtXnrQ19xRvlKKRRqq Kj/9olATraJQ
z9Gyjq4JghQVVPUfnw1ySzT6N5lSppBKpe/fv79y5YqHh0elSpXkg8Wpqakv Xrx48uRJo0aN
7OzsPoEbTPbbGOUPSlRuKLdVzykq6ddnNhzwfO6VQz1tv7Y5dlQUUr5qtErD /I/2qim//OtC
/YpQ1zllC1UVKBd/8j1UCOpATQuqIs+kqMpECs8PAPwAACAASURBVKVMkZ6e /vDhw/j4ePm6
dRMTEwcHB29vbz0Lk4sXVQkoEAgYbaDoupCXpX54+zR0Qp91lluv7Gxd/qt7 JBYVhZSvHbXh
2vyP3uYp44ooCvPjQ+mgmRSkQjAv1BQhx3G8YlyNU26r5Q5L22UKpUyglheU K0JBNso9xaML
Uy+OqDngFFux+5pf1vVy/ryeO10sUFFIoQAqKcN8juHmU8PlX+qViUzhZUa7 vFObJkgzggVH
LS8ohxCi/K+aNCxtfymUMoSmHBQKhcr/KtWhqjSkFA4qCimUHAqkzPIj+Aqt HT+1ItS6OoRm
BIsJZfJPVQ5qopo4LG2XKZQyhGpqUKgNVWmIYpxc+PVBVx9TKPrQM78wP48/ 1HyiYX6eYlNA
H4uGmvLTmgWkWrDIqGUK5SqQZVmZTMayLMuyVBdSKFrRVIQikUgkEonFYuUJ DMMoU+xUERYF
KgopFAWFezpgPh9knf/TCuFD4dH/ZmGqBYsVTUVoa2tb2k5RKJ8lz58/V/7D STlqzPM8VYRF
hIpCCkWBUpBpPmJQv1ZTTRnqP1n/bMJPpwipFiwNVCcUEkJkMllpe0ShfK5I pVKozDXkOE4g
END8etGhopBCUUdVnOVH6qmWKvTLSMroQmNKMSG/XanOKWRZxXu10tKOl6pr FMrnhETSEYBU
KpXLQfmAsvxnJdeFNFlYFKgopKigP4H0VZKj1F7l+/xXGnsAvNJySO2EssLn exmU7Rynck6h
cmVJaXtEoXyuSKVS+eRC+U9JKBTSZfvFAhWFFACfsw6gUJSU1WflqD6kUDNT SKFQCopMJhNl
o1ybpfyh0WRhofna3uBC0QZVhJQviTJ5Pau+xU653KR0XaJQPl9UF+zTt0QW I1QUUigUyqdA
8+HVpe0RhfK5ovkIJzp8XCxQUfjVk1da5V2GuXKb58tiDoZC+VxQ04UlUcX7 lByz9BZJ+VKh
irCEoKLwa4cleXwsDJKV24Tj8zy/FD5SbBoKr/3IUNsu9k8mvh+AmoeRWYpG SjTAT/Yp4SjK
OCV6D7Myy/mrXkYnVrFvdgR0q702Xqa2XexI41bW6uq/7XWRJm8W0UiJBvhp SLnVz67fiH8y
Pl3H5QMqB0sIutDka+dLmNdEwAHgQAgEHNwD0KUieILij4wDxwM8CEHh77ZF NFLoAAk2BWJv
O4T3Rim85V2t9hLtprL9d0110Ulp+1IGEBhV7dC8czWTLzY/UegA2VebG3y7 b9C2KxMrlMIP
Nk9Ku+PUFCH9NRUXZfmPJ+VTwOoewnr02v7iTT8LCye1/UlJcU3rXPOyK+Qz VKQsDIr3uuPA
8eB5sBwYoPEQNAZ4DsW/tpMDB0VFpWikkAGq1Jt/MaqrswrciRq1l2A3AYYl YLPs8ygq/a8f
j1mYWajtT0pJavZNN6/KJoWyykulMDAosZSjwLzZvEnNSsp6GeCTBljCnaXK F99xXytUFH7t
6MoURry2/+e235A5uy3KlVM7lPTx476lIzjfa54aupBLxY7NWPkXEnm41kbw FHSyBVisHo1f
A9A0Aj/eg9Ng/NMZG1Zh3Q1kmmPIEMTvgtVi7PTJbSsLv+3FwhN4kQmLipgy AROqQwjwWTi2
D9+fQGQGDCwxcCxWNwAHRe5NQBAyASHNcLkPxCxWj8ZhPzR8jGORSDPCN2MR 3AQGPB6dxri9
uPkBEKKqPw7OhrtYZ40qjQWeB/mA72di4y0QC4wYh+AmMMjCtCF4Mgl/BgAA MjBwACy+x5bq
2rwNAM+D50AIGA7nQ9D/AlavwWA7rB6Noy3Q4wlWhYOzxXdzMFyIyatwNBo2 1bF7PpqWAzQC
DG2M9s+w+zZSjDB4PFY31x7g80WY9RzYjvLbATOcPIAGjLZ4NTrryiAYQKMT +6DBGTzXDNlT
u0t/zc1d+z48mJErirwD131JUJCtCIfM2qD9B7tiErTpQu7jk22TNy3/NSqR N6jYovPyrd90
dhZBGrey/rhDHYc1//fYvkvvHOdsuRqYtG7UhjVhrzMt3YfNbx03d79V6A+7 GxvnspWRcGTR
lgV77jxPg4V3o+nrx01saC4E+IyEo4u3Ld5z61kqDOw9Bq+eu7azSin2zY7G gTt6b7k21VEs
jVtZf9wv7b9p/O//jt5NTDOpMnT1zOU97Qz4zEc/7vh20bl/XxOIzKp2GPjL 3s4ehjprVIO8
+29J55/Wn39LbDxHrZm5vKedQfrjKdVnPd508ERHCQCk3Ornvtri6J7tDYy0 eNtR1dbHc3Nm
9z3kuPbMjG9c3qysPy607+Retw6uPPGSuNSb9+P0EaLzE0ftD32UbtOwz96f BzezEmgGeLj7
mI53joRcSEiRuA1ZN2dtH60Btnzeb/SsByxmj7SYDZRvGfZ4akOBtng1Ouv6 d64GALS2fMeM
tfnxGeAS768etW7FqVeZlu7DF7TOBCRqzZqfuHRfFUUnPPyjkRFrZCQzMMg0 NMwUiw3FYgOh
UCwUCgUCAcN8sannkoaKwq8draIw4o39lf/8BgXtNJNIZFJ29Wrhrt2i+Hg4 OiJwFDttmmRQ
0M4DywNJzWuetiq6kMORFQh6jrUr0MQEBzdj4He4uAk1BOCAiN/QegGiloOk IzQYqxKxfSPq
CrBzI85moA+X2xMeFzZj7FOsXIxG1nhwDt/OhfUO9LfC2Y0Yeg1B09HLDamx uAWwBFy2zBKo
bQOPj6FDMB7XwKsraLsc5R0w3RiBm+AxDjvqQpSK208g4kBYHTVaqzYWOODh YbiPxJWJeHEO
Q4NR3gFBDuChGL+Wn8YDPAfC6vBWfrIUYTswLBzr16CPPQgLDnhwBN7fIGwI rh/A9PkIs0OH
kZhugo3BCNyPm2NgrBHgo2PoshBPFiLmLFqtR2MfdMnUEmDL+Vg6AQda46/u EAPgcXaDtngt
cndWJgTyEV6Se/9HzD+jLWQdLvVQq53gXu4o8g5c1yWh2kFfK3JFOGj6Wp0/ 2OlrD6yeqq4L
yfvQEd/NvO+/8fSsZmaxP05a2a+L+OqVwT5CAGzE1nPtfl0dd7I8m/ruyMBF K1622XW5e33B
0+3jN55JZfqpecClnJsaNOa2/9rfvm3sILv/084RPVba3lo8sELqmUkzvjlR ee6uDX1qmqQ+
efRvHuN87OOtFzr/b8OLxiYv/9jcYshCy6obgiRhIybdqLph5Z7WNqKkhJs3 0w0Z3TU6qqkB
9uG6nz2Dp/+7xfz5T1sHDVlgWXXj3Mo6KueS9XnLfjg5I2jwcbfNF6b2qyiC FAD7YOMv1ReM
v7BIHL50yeRei0+7WnVcvjzI7PnaQetGBvvfXVNVIz3LPtp6tkfoquijJtEH ljUZv7lps8Xd
0zQDNGn7644VqsPHXMq5cdritcndWem8OI9Y8uEzef/riAWLI5uF/NM7QPB4 Q+DGM6ki9R7P
R1y9rVPz10eFwctLIsfIyNjY2MTQ0MDAwFAsFguFIoFAIBBQUVhIaMN97bCc ls+xP6z6T99m
JpEQQlasFMxfIO7cmX31Mr1TJ3buPPGq1QIziaT/9G3H/rBSLZX5GptuoNck DPSGS0VMnwav
OOx4ApYDB5g3xGRfCHkIkrHjLoZORJfKcKiIoDFwBLjcDmS9w/KLGDMdfbzh YIvWvTHRGrtv
IuMNll9Al6mY4gcXa3j7YpAvGE6RKZSXVduW+GNsNfAc7OpjVhXs/R8+JCNR gEa+cCkPB2d0
bAkHgc4apbkd4wCDGljWAa7WaNoLQRWx939IURkbVZ7G8cjS7S0vw7GNGHYD m1ahh21OKfM6
WNYRns7o1w+uH2HWB6N8UaUqpnTD+/8QI9USoHUTjKkGhodrAzQV4mQ0srQF KD+Zz6uFpbk7
y8AQRCUo1f28tpB1uaRWu2YUeQaezw6Sf742Dn+/uv/kVXn8YCevOvz9atVS bNzVDadF/baN
Gd7Qyc0nYO6uwdWenth2O1N+1LzriKBW1oYCoeGH61v/lozaNqx3LTtXn0bz 17dxgrquI6/C
g0MNJ+wZNaihs2ulyh1njp/u+CDk3AdZwpXgQ7Ieu2YGda7i5uJQs1XLEa2t 9c+QM+00bGpj
cyFETh0Hz/NN2BMSlZL0OlFUoXkrDzcHK1fvGj0G+7ka6KxRs/MNG49YG1i9 iotL6+mT5lWP
3xMSla6jaqLHW9m7YxOmDz5ddcf5qf0q5iRTzNuOXv9trRre1b6Z3b7Su2fm M8dMaOXm5dcs
aLzr+7/uaV2FYdN7+KTGFmLGoEq3ri1FT09GZLLaAsxnC3O5O0tiKmLyiiVP n9m4qxvPGQ3Z
OrJ/bfuKtZou2dDCTqPH8xNX/vuoEBgYMAYGArFYYGAgkG8bGgrk/6Wfonxo pvBrR2um0NDK
/eTupb0nLgWwe7cxgAnjMwwM+IkTyNat4pAQ0aSJGdsXjjW0cifkgbJUxhvE MBjtAo4AgKAc
6pXDfzGQuoHn4eAGMQEBMl4jlsEUe0XVYjtUMVAkjZSkJ+BZFm6MwxoVryq9 QvIrPOcxvLKi
iuwYdGYKeR5O7jDMXs1QpTISI5FVAYMqYvIIHKiPZnXQozEqGemsMYvAQKUi nodrdZhyCoO1
PJAYhY9sTp5McRrAE6Tr8Jbn8fAQAhls34BOliqleDgqvTWCmQg17RVlJeXB ZCBVBiJUD9DW
GUJ5ER6WBohOh8hNS4DyVlIMsutu4SySq7PU3M7ZT7SHTHS4RHLXDo1uyjPw fHXQ14phuQr5
+sGWq6BaKivuSTTjOLG6iVxGiCt4B9ik3nqSRuoCEDnVtjOSnxb7NEbgFOSu mKhp7FajqtEZ
NQcyXzx4kp4QXq/bcpWdbjGpqdGPInnnb2ub5nuam8i5XgVFdk1o5lnT7P2d BJl7q+HVj4/x
Hr63Y/1WbQL69qrlZsroqlEGq9wzSoUVm1S0kGc/RJb16pu/v5uQyjlqrTtT p7fs/RVzhwjq
7wuf1NNRdfBT5FzXQe6tyNzK3MC6jru8MYXlHCRMenI60RyNE9l5ZXsoNLY2 lj1P543qaglQ
3Ted8QpVOysfseTtc1bckxiB8/RqiukBEq/aXoZ/a20x/XHlu48Kg7Gx0MRE KJEIjY2FJiYi
Q0ORoaFILBaJRF9IpjArq3T+dUtF4deOrud3ePn6/7pxTo+xi16+ZABYW8kI CytLAEhIYFbP
GOrfrE34X2GqxeXbRPlMEBXdQACBQLHeVp7IyXUaD56DmilegLUh6F0+l1fp D3OXhcKCPFFH
CJjc2wQgMrDZ63ylMoAHEWHcUrS+h7BbOHsQq3/BwbWoq6NGEJWVEAQkOyLF P8ezhY48UoVX
LAgPjgPLa/eWAPbVYPQvDl9HqzbZqyIICMAw2c3IAwwYPvsrl51Xg3qAOZ1I wMlzrtoCbGKs
yNUpekFXvGyuzlJzO2c/pyNkXS6RXLVDo5vyDjw/HfQVk88frEY5LWpNvkso FhRgwQLP8cKq
O5+sGWifq1Da5QKEIDdEZByvsg0AJpVmnj3Q+a8rx8Nunfh+7tJl7f4IH++v o8Z8wag/rIfL
IxEmcGhcx/jUnZ9Oveo0wlFVfgmE2YYYgGFEKt90PSUy92w3ngevNcCWZrmL 6YpXGocCdlbe
PvOAQGig9FMgEudDYmmJqyh99NVjaFg6uvazV9OUIkI4LR8AbnVaevn6H926 wFySBGDvyrVH
ty7Yt2otAFPjt/7N2thVradWXGgFJx4XXyi+Zr3H9Y/wrACey15aIT/NEg4c Lscrvqa9xFNZ
zlH5R2SNisAf9yHT2O/KIOwp2Nz7FVkojW2eR/Q9JBIQDkSGG49hURFGPAgD Nx+MGYpfVyPg
I36O1Fmj2ofnEXM/x+CtJ7CoCCMGFoZITVaUzUpGfCZ43d7yPCyq4eB0PAnB 5IvIVNmv2g7y
8VnFVx4AOG0BqheRb2sESDgwTM7JeuJVs6l9P689ZD0uqdaedxQageezg5QX 8NdGPn+wqhg6
V3Xl484+yJB/lb18ePWtaXUPidpdwdDJ3ZnE/f00S/41I+re40x1uWPk6l0F L0IvfeTU93u5
MbHHb6Xm+3kh5MXFqCS5Fdn7a9eSLX0cTAWAyNSrVZvpK4POhs9q8vbvff9l 6qpRi8G/XygM
sh9uXE+29HEwFRlZSpCWmKnYnRgfm8bp9VZg2XT48YMNI6bOCjz0RprfWAqC RoAAIxTkPGkl
3/Ei+/yCtnwOhs7uzvyrG7GKwe+s+CdRGYV54EtBfS4GsuJ2Dp/XtevccUfe qf9bMSt2+5A5
XbrMURxS+5qH2RI7uexBReHXDiFaPuYSPjklxa1Oy+jY+G49MwHcjJ/o2WLY zfiJAGp7hdlV
rZeSnm4u4VVLMRYY6YsjW/HTQzyPwtqNeFwBgysqFh+AB5d92tBq2L8VfzxD TBRW78TL7BzS
vV/RYx1ipIAFJjXFX1ux4h88e4WnT7D/APZFAxaY0BDHN2HjNTx/jbu3ceAm slSyUERjW/YQ
804g6jUuhGJ9DPq2BBeJ4KO48gIJ73AzHE9YuJvrrFHVK7lB6QPMP4Wo17hw FKtfoG9LGAjg
742IU3iYDjYdxw7gIQ+e0+cteFjXxs/jcH0z5lyDlKi3kjz7qNzmuJzOUgtQ rQg4pGkLkAAO
loi/i0dv8e4jiO54VW2qxZ5Tl46QdbmkVrs0ryg0A9fTQZqfr41yFpL8/GDL WeRaQipy9J/U
lv1p7Pa9V+Of3wtfOmr/A/cOY3zVxiEhcvIf1yQtZOwPof+9jrl35fvJYXFg AAaQ3l25oOXQ
czEshA4N5w6UhI0NXvBrxNOY109u3tg1f8fOCJnQocHsPuKjI1euPP4sKvbl f+fO7Q57p/9x
x9LLe6bufBAZG3tm9YalDx2HjajM3D02d+3Ffx6+fvky4fqfVx/JLL3txbpq VPVKTtY/u6ft
ehAZG3t2zfrv7zkMG1HZxNC2WSPJ/ZALD9J4Pi3u8ILDd3kGgF5vhfYdx54O qXE5MGjy/xKL
92afoS1AiCSujsLYC3cfJSS9/5DB64w3V+Op9EiBW16JyKnBhCYfd847+zid 5zPiflnwR2Sh
4tLdR18SmVe/m9Oly5yu8yLSStuVYoEOH3/taB0+9na7dmzbzG5jVgIYPTqB 43DihNXhw7Y2
NtKxY+MspUdT0iffOLq2Wo1nasXbjsWcPVgxHx8Bx+rYHAQPIVhWMYGMJYrp yp3GIWYrpgdB
KkHv3vCPhYgBS/AxAbeikMaCFaHBUPyfvTuPi2n94wD+PTNnZmpOm9I6rUqr SpZkS0jcBoXs
XEv2LftyRVxb9u3asuVe174nrshOyZa0KZJWUdI6zXp+f0z8iiIlFd/3q5fX OMvzPOecmebT
85xlmwps2A27igHYYGMPPoogkUH70bCeCxs2w0YRsNWg70jo++F8NYn0/2fO fXzdtBfw7kG3
/SBVhsFTYIIByDLgdQSMPwwFNHA0oM94GKEDElklNZZtFYCMhqY9QTcMuu39 f4ESKdgPgJFb
oM8I4KhB917Q/lHppTOVtVa+N7Sc4J9iGLgRFOfCfMtye0mebGQfxmclstJx agn96Qb+f8dK
QUaDTAYyZkUbKIXW/aDlRug1EUAJ/t1a6faWLfOTbS97ECve5Eqa9Gntmyrd iko3nFFpg5HL
757n9vzZe8xiqPwD+zAowGWCN4Dg/6sxNbz2rnjrs9XXdVwusI1ceh4OHGyn CPBJVxipOThw
8SvvLePaBQnVTEcuHtYp7iiHJABk+Ynx4ZHWJTIAUtl107oj2jv9fGZtyAPg aji4ui1SYwBD
xW3Lmv1+fy0Z4fOnADg65sPXN//iUCJpPWOQ8Vl/h1nvpBrmY/cvnWfHhgRW ZtCBAYuz8mlQ
0LcZttN3mgUJRCU1gvj/rZIXOH2g4Wl/hxllCgRou3T2lOEbnHUOcrSN+8zw 6nLxKAB8rbWk
wYAZl4r8Ow//Q/nUmlXtv8eRAwAAhkJFGwiUs+/gdkN2tm26VX5Lmkq2t6yy R+Rb93wZTI0B
+xYnj9nkbLCXra7daVRf5+unq7VhlR2jeoCjP3bP0tE0MEjmd45BtVfyD0Hg fcB/cXH/VvyL
4kWOTtzLNgVFhMf4hZ/MOrtrhTJFW9k8N1WMqXDdbyJOg94LYchaGK5V88LK k8CuBfBfNzjh
hnez+7VYDa1fv9bkj+SSSCRisVgoFAqFwuLiYoFAYG9vDwBFRcE1r0J+V5q8 90UVfmBV1SiX
Cd5WOoIK1/0morhDrdveHfd482ST7/2pEqWtcZx8anzA7YnaDfHbFP0YFMUH gPZOg5nqRi6e
zYvOXI8Ss4xHTlvTS1tBlrVv6t6LuYTBwKE9c67/G5pRwNZwGjZguoc+V5S6 c9zOC7lgMGLG
5n6NSWH5/wJIcxP+3XD2zJP3tLqx+/CWObtP3i0Gk3GzN/RsxPywsP6AIeWK dSdPTt56PKts
63hTdvZMWrDr84r0+vTp/Obu6TtZxR+bRHyx0jravfjR+9VV1tFipPZaYnTv 1kU68kLgJ7OK
XoW16NfYiB1T7U6awiQIKQAnY4BcOBIIGcbQUa0Wunw+3BHwY+cWQj8rqyZc +N3zyPx5n39g
BRlRHvP31CAR0vkPr5zONu3soA4Z0TunHU9xGO2uj39nobokBeDS727+e4XB JJmfvRnTjh/a
SRMEAIhywvcdO+MwbYjOF4uTZJ9b9veJ5zQAKNFZ5zefrPAr49Nimw3VMNJS y3rzHgAIJV09
BQZHU6WSVJVx+vQRTV2DRpCc+6FJvPdVqfQHw1D4q/vCCVjGqq+NBwHAtk+m txwEAFk1OXNL
XAwn98KSPAAAQ1tYPxJ0a+MpzGXue4LQT8+qCXfpsa0VzXEvN2r87WSFL/dP 2j7ptQhAwcyt
z+Ftv5nUx8fxol+ISe/+k1y06MTbaw4kCz+frdbKb4uHfWHY7IkXkiDnwbPi wV8MhaKX4eee
0wBM28kzlnZXzb9zdMrq6MKvFpukuN53fKM/lq2KBsKuz4ZllhQACFMjK6zD wHXTxs6GxU8W
jjwWLct58Ky4r6hqlf5YGAp/dXVyqSZlAfvXl5tSK81gwKjlMApKL3RACFUL odZp3PUX42q9
Hrb+3Mizc2u9GvQzsLegmMCgLK3NWMkxn319NO7UxlaVQXJ4xsqQVADCAtEX vwLo4vT0HAAA
3c6t1Ugg1B1aWrOjIz67zryiYqt6m1RtJys9NhAyNR0KogtAWCAqrFqlPxiG wl9dS2/64V68
iRRC9QKX617XTUCoHikuvnDlTKqrp8E3raWoymYAAMEgv+tlLTUpls0lCQAg iHp+X20MhQhz
IfqptPSuD2fmVN+5Q7vqugkI1QuungZcrjtABZ+IqMSi9rpUXnxsohhqfCEh wdXX14CUHHh9
41Gei6tK/uOHMVXusWMyGQAyWiSS0BXeDL5SNam09mAoRAih+uVb+0UQ+tUk nTm+9BolKQEG
k6z5RU9s4za9zcL2P5c82bJ22AGOIE9Y5b8sycamKvDkPcQdmzLhmoZB61nT q/rhrUGltQhD
IQJo+J0rCCGEfh0MACGh7jK4ed6Zm3FSIDnMGo3Kko17LxpesOHs6Sd5JYS2 +9QWWQFnHgiB
VPhqsaSRR8+e0aeDE4ryMt/kiXKFdJX/oqt+pbUI71OIEEK1q+r3KeRy3c8d 2oU9hQjJff6J
kN+nMCQkREmJgpR7awISiphq3f6cNsFGicVikSTJYDAY33ziHi14+16q3kiJ CQB0waPTk5c8
fA9Kv62dPdGi9q60r5NKvwJ7ChFCCCHUkAQEhigTovS0YgmTVLBszzeuYYqS ZgTtmRnCbNpU
nSvMjY/PLgFg23bpY1qr4axOKv0KDIUIIYQQakjSk9KZJFtBXa95+3aDvJpr 1TTLECpmZuZ3
nyY8yaEB2Op6Tp07Dh9oq1O7EalOKv0KDIUIIYQQakiW/jlKSUmJoihFRUUu p+Z3z2BqOvdZ
69znO7Ssvlf6FfX7hjkIIYQQQuiHwFCIEEIIfUbyZldbzxYb0sWfTBelrWnu 4bQjS/J9qyt4
NEh7kPctQaX1IlT7cPgYIYTqta4UP7yCyY2n3t7t71DVp2yhb8ZQsHDv3MuG i30n6NeBoRAh
hOq1XWGbC6QAIHy42Ncn1fPU3vZaDAAGW8e8Lq9S/PkxVFwW+bjUdSsQ+pHw TyCEEKrXzOzM
HBzMHByamGuQhJJ2s+Ymane3dB4Q8vrDQ7Xo3IjBuv0HXSigRWlrmnu0WHDS p9soA20PdZNZ
M09mlT46S5Bxcv7CZlp8iuLzWq/aeCdfWndb9API8hK2jZpqoMSnqD42vfYF pUoAAOiSuAOb
OzXpTVF8SnVQi8FBCUIAAGn2k5V9RmtQfMpg+pTdwZ5VGMaVZj9Z3mukGsVX Nv6wk4ufzWji
6R5cVLpEwaNBOkMm3C2RDze3WvqfX5+xemp8Zd60KcdKD4rsXfSaft7yeqce zSypcEt+sQOH
6haGQoQQaliYhp49W2XfOBAlTxF0zrXzV5mO4zooEwAAkmfbr6kt3pycdTJq s8H5MUvWRItA
VhA6c/7E67z5p3fGRm8N8Mxb3XfNkXQZgCRpyyRKe9X1gjrdoO9OmnPC+4+5 YUZLLu2KCpvr
VRg0qPfhKAFIkkO8fe438VsTlfh3bNhCX3ctDgEgzT4yaunqVMedd/bFBnsp /3PgcuFXn+kg
id14+AV/9oO4HacmsP4d4bcm+suPrZXEbb/Cmbn2Ve7px/4ap6b8dfYNDdKc 495+fyY2/+vW
3pigPmTAvgrqrfTAIVQrMBQihFADw9R1nNC++PS+xAIAkOVeDnjK9XB3VCmd q9Rz1MyOKkwg
9fnDFzlk7NudVPA6fOUJztR9Y4e1NzAyacKfO2U2L2Z3aK4MGAp6pk6OBio/ 15lEkrSwzZfI
QTsmjm6vb2rX1nfPcJvECzsel0jeZ70jdTu7mpvqaRhZ2/Yd3saIDZK0sG03 qbE7RvVvrm1k
12HxJjd9+PqDvjgdvTeMa2ZmaNhtts+iJFHJugAAIABJREFUZun7dicVf3F5 zf6jfTqqsQi2
madHVzLxYnyJJC1sS6jCiO1jBrfQMW7eafnmLtqf1Sut5MDVYN8g9CU/128C hBD6FTBUu050
EI+9cC/ftnNeRECESv8VTZVK55EGrXW58pdMZUt75ZzIjOykmITijPDWnv5l yjBNKRSDhp7X
rFCvH9382iZMS3hF8KY148rH11m61m01Cx8lFLEGuI5uFjzRenQg39HVre1A r+amSoQwNTGF
oT+/KUe+rqKprYXC5a/VwDR2NlaTd6qQ6q0dVXKiMgplvMqXJ7WtNEorYCo2 VhS/LKaFaQkp
DIPZNoryyZRVCyvOzU9WK0mu+MABaFRlPyD0rTAUIoRQg0M06tDLnbli9633 JsnBkXpdtzb7
eBkyLRXL6DKvAQBoGc20CEhYP1Sn5rf5bSgq2FKCazL3ysFe1+8Ghzy6sMx3 xaoe58KnOH2/
ConydcrKdPwR5YblaBpooAEYTPbH6QyS9fnQ3a944FBdwuFjhBBqgJQtx/VV uP7XxYDdKSYj
uphzPs6QJt9Iei8/60ycc+9evrqdXmMTazNIPnE77xc5GY1jYGFEp12JEcj/ K86MDXur1Myc
YgAAqWTl6jZ7zfwr4fOc39488KSEo9/UQJp2M1EoX1iQ9PRZyVeHj6XJN5NL d7Ik935Evrqd
nhKpoE5B0buS0snv0lOLvrS/OQZNDejX91NLr2MRpickCT6tV8Ho1zpwqM5h KEQIoYaIYzeq
c+ObB/9KNBzdT7fs7QpFd/bNDIh5kZp6ed3mFbG8Ud5NlPXa+w6lQiat9Dse n5iSlfDw/p7F
Re: Dependency Visualization [message #37125 is a reply to message #37018] Thu, 02 July 2009 14:46 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------060709070901000202000109
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Johannes,
I tried this and I'm amazed. It looks great and I don't think it needs further improvement at this
stage. It's very useful as it is and I'd like to include it in Buckminster. In order to do that,
you'd have to submit the code in a bugzilla so that we can get the IP approval process going (a
contribution of this size must be scrutinized by the Eclipse EMO). A bugzilla with a proper patch
will also give people a chance to voice their opinion about the patch.

Some things to think about before you submit the code:

1. You need to add an 'about.html' file stating that the code is EPL 1.0 to the plug-in (see
attachement).
2. The 'about.html' must be included in the binary build of the bundle, i.e. checked on the manifest
editor 'Build' tab.
3. You probably want to add a copyright notice to the head of each source file.

How do we package this in Buckminster? Should we add a special 'Dependency Visualization' feature or
should we simply include it in the core UI distribution? Opinions welcome.

Kind Regards,
Thomas Hallgren


Johannes Utzig wrote:
> Hi,
>
> I had some time since the last post to work an the visualization and
> these are the latest changes:
>
> -better path highlighting. so far 3 kinds of relationships are
> implemented for highlighting:
> -path to direct dependencies of the selected component
> -path to components that directly require the selected component
> -path to root request. (either shortest, or all)
> each way of highlighting can be selectively enabled/disabled and is
> additive to the other selected highlightings
>
> -tooltips on components to reveal some details
> -sash form between navigation tree and graph viewer
> -better resize behavior
> -bugfixes
> -tidier code base and architecture
>
> Unfortunately something seems to be broken in the Zest zooming support,
> so that feature didn't make it into the visualization just yet and it's
> still just registered as a bom editor because I couldn't think of other
> useful integration points.
>
> Apart from that it I think it's pretty usable already and I'm curious
> what you want me to add/change/do before you'd consider to accept it as
> a contribution.
>
> Attached are some updated screenshots to get an impression as well as
> the exported bundle including source code.
>
> Remarks for the screenshots:
> light green = root component (either cquery root, or drilled down)
> green = path to root component
> orange = direct dependencies
> blue = components that directly depend on the selected component
> yellow = current selection
>
> Best regards,
> Johannes
>
>
>
>
> ------------------------------------------------------------ ------------
>
>
> ------------------------------------------------------------ ------------
>
>
> ------------------------------------------------------------ ------------
>


--------------060709070901000202000109
Content-Type: text/html; charset=ISO-8859-1;
name="about.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="about.html"

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>About</title>
</head>
<body lang="EN-US">
<h2>About This Content</h2>

<p>June 24, 2009</p>
<h3>License</h3>

<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
indicated below, the Content is provided to you under the terms and conditions of the
Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>

<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
apply to your use of any object code in the Content. Check the Redistributor's license that was
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
and such source code may be obtained at <a href="/">http://www.eclipse.org</a>.</p>
</body>
</html>

--------------060709070901000202000109--
Re: Dependency Visualization [message #37158 is a reply to message #37125] Thu, 02 July 2009 15:00 Go to previous messageGo to next message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2509
Registered: July 2009
Senior Member
Thomas Hallgren wrote:
> Johannes,
> I tried this and I'm amazed.
I have not tried it, but the screnshoots look really good.

> How do we package this in Buckminster? Should we add a special
> 'Dependency Visualization' feature or should we simply include it in the
> core UI distribution? Opinions welcome.
>
I would put it in the buckminster UI unless it is (unexpectantly)
a) huge or b) there are issues with required bundles.

- henrik
Re: Dependency Visualization [message #37192 is a reply to message #37125] Thu, 02 July 2009 16:42 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Hi Thomas, hi Henrik,

comments inline.

Thomas Hallgren schrieb:
> Johannes,
> I tried this and I'm amazed. It looks great and I don't think it needs
> further improvement at this stage. It's very useful as it is and I'd
> like to include it in Buckminster. In order to do that, you'd have to
> submit the code in a bugzilla so that we can get the IP approval process
> going (a contribution of this size must be scrutinized by the Eclipse
> EMO). A bugzilla with a proper patch will also give people a chance to
> voice their opinion about the patch.
>
I'm glad that you want to include it, that's great. One dumb question
about that: by 'patch' you mean just a copy of the source, right? Or how
would I create a patch against a repository where the plugin is not yet
checked in?

> Some things to think about before you submit the code:
>
> 1. You need to add an 'about.html' file stating that the code is EPL 1.0
> to the plug-in (see attachement).
> 2. The 'about.html' must be included in the binary build of the bundle,
> i.e. checked on the manifest editor 'Build' tab.
> 3. You probably want to add a copyright notice to the head of each
> source file.
>
That's easy enough to do, but before that I should probably put
everything in a shape that's acceptable for the buckminster team and the
foundation, because once it's commited it would be a lot harder to do
stuff like string externalization, api-doc,... because I'd need to
provide all that as separate patches, right?
Where can I look-up the things like coding guidelines, naming
conventions, icon conventions,...?

There's also a really dirty implementation hack that I'd rather not see
in a released version, unfortunately I couldn't find another way. I
wanted to open the selected component's cspec on double click, but it
turned out that you don't export the package that contains the
CSpecEditorInput. I worked my way around by subclassing
ViewChosenCSpecAction and invoke its run method, but that's really nasty...
Would there be another way to open a cspec, or should it stay like that?

> How do we package this in Buckminster? Should we add a special
> 'Dependency Visualization' feature or should we simply include it in the
> core UI distribution? Opinions welcome.
>
> Kind Regards,
> Thomas Hallgren
>
>

Either way sounds fine to me, but I should point out that I'm pretty
much the only person that tested this plugin so far. Bundeling it with
the core UI feature could give users the impression that it's a well
tested and mature feature, but maybe that's just me.

Henrik Lindberg schrieb:
> I would put it in the buckminster UI unless it is (unexpectantly)
> a) huge or b) there are issues with required bundles.
>
> - henrik

It's definetly not huge and here's a list of the dependencies:

org.eclipse.core.runtime,
org.eclipse.zest.core;bundle-version="1.1.0",
org.eclipse.zest.layouts;bundle-version="1.1.0",
org.eclipse.buckminster.ui;bundle-version="1.0.350",
org.eclipse.core.resources;bundle-version="3.5.0",
org.eclipse.ui;bundle-version="3.5.0",
org.eclipse.ui.forms;bundle-version="3.4.0",
org.eclipse.ui.ide;bundle-version="3.5.0",
org.eclipse.buckminster.core;bundle-version="1.1.350",
org.eclipse.buckminster.sax;bundle-version="1.0.0",
org.eclipse.equinox.p2.core;bundle-version="1.0.100"


Until I hear more from you I'll add some java-doc, comments, do some
code formatting, see if I can paint some better icons (I suck at that
:)), externalize the strings, add the copyright statement and the licence.


Thank you very much for your help and best regards,
Johannes
Re: Dependency Visualization [message #37226 is a reply to message #37192] Thu, 02 July 2009 18:23 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Hi Johannes,

Johannes Utzig wrote:
>... by 'patch' you mean just a copy of the source, right? Or how
> would I create a patch against a repository where the plugin is not yet
> checked in?

It's OK to attach a zip containing the project as a whole.

>> Some things to think about before you submit the code:
>>
>> 1. You need to add an 'about.html' file stating that the code is EPL
>> 1.0 to the plug-in (see attachement).
>> 2. The 'about.html' must be included in the binary build of the
>> bundle, i.e. checked on the manifest editor 'Build' tab.
>> 3. You probably want to add a copyright notice to the head of each
>> source file.
>>
> That's easy enough to do, but before that I should probably put
> everything in a shape that's acceptable for the buckminster team and the
> foundation, because once it's commited it would be a lot harder to do
> stuff like string externalization, api-doc,... because I'd need to
> provide all that as separate patches, right?
> Where can I look-up the things like coding guidelines, naming
> conventions, icon conventions,...?
>
Actually, what I'm after is things that might be significant in your initial contribution. The EPL
affinity is such a thing and if you want to retain your own copyright, you need to do that too
before your initial submission.

The code will be reformatted according to the Buckminster Formatting rules and the project will have
preferences set that will enforce this before it's checked in.

> There's also a really dirty implementation hack that I'd rather not see
> in a released version, unfortunately I couldn't find another way. I
> wanted to open the selected component's cspec on double click, but it
> turned out that you don't export the package that contains the
> CSpecEditorInput. I worked my way around by subclassing
> ViewChosenCSpecAction and invoke its run method, but that's really nasty...
> Would there be another way to open a cspec, or should it stay like that?
>
Let it remain like that for now. This can be refactored once the patch is in.

> Either way sounds fine to me, but I should point out that I'm pretty
> much the only person that tested this plugin so far. Bundeling it with
> the core UI feature could give users the impression that it's a well
> tested and mature feature, but maybe that's just me.
>
Of course it must be tested before we decide to release it but one important aspect of testing is to
let the community at large get their hands on it and start hammering. Since this is a viewer, the
bugs found in it will not be disruptive, so I'd rather see that happen sooner rather then later.

> It's definetly not huge and here's a list of the dependencies:
>
> org.eclipse.core.runtime,
> org.eclipse.zest.core;bundle-version="1.1.0",
> org.eclipse.zest.layouts;bundle-version="1.1.0",
> org.eclipse.buckminster.ui;bundle-version="1.0.350",
> org.eclipse.core.resources;bundle-version="3.5.0",
> org.eclipse.ui;bundle-version="3.5.0",
> org.eclipse.ui.forms;bundle-version="3.4.0",
> org.eclipse.ui.ide;bundle-version="3.5.0",
> org.eclipse.buckminster.core;bundle-version="1.1.350",
> org.eclipse.buckminster.sax;bundle-version="1.0.0",
> org.eclipse.equinox.p2.core;bundle-version="1.0.100"
>
Right. The only added dependencies here are the two zest bundles. The rest is already required from
our own UI bundle.

Regards,
Thomas Hallgren
Re: Dependency Visualization [message #37263 is a reply to message #37158] Thu, 02 July 2009 19:09 Go to previous messageGo to next message
Achim Demelt is currently offline Achim DemeltFriend
Messages: 160
Registered: July 2009
Senior Member
Johannes, this looks great!

>
>> How do we package this in Buckminster? Should we add a special
>> 'Dependency Visualization' feature or should we simply include it in the
>> core UI distribution? Opinions welcome.
>>
> I would put it in the buckminster UI unless it is (unexpectantly)
> a) huge or b) there are issues with required bundles.
>

+1

Achim
Re: [buckminster-dev] Re: Dependency Visualization [message #37296 is a reply to message #37158] Thu, 02 July 2009 21:22 Go to previous messageGo to next message
Guillaume Chatelet is currently offline Guillaume ChateletFriend
Messages: 146
Registered: July 2009
Senior Member
--0016365ee96ea01cac046dbfa397
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Totally agree with you Henrik. Let's put it in the UI Bundle.
It's just 2 more dependencies to zest : quite alright.

Guillaume

On Thu, Jul 2, 2009 at 5:00 PM, Henrik Lindberg <
henrik.lindberg@cloudsmith.com> wrote:

> Thomas Hallgren wrote:
>
>> Johannes,
>> I tried this and I'm amazed.
>>
> I have not tried it, but the screnshoots look really good.
>
> How do we package this in Buckminster? Should we add a special 'Dependency
>> Visualization' feature or should we simply include it in the core UI
>> distribution? Opinions welcome.
>>
>> I would put it in the buckminster UI unless it is (unexpectantly)
> a) huge or b) there are issues with required bundles.
>
> - henrik
>
> _______________________________________________
> buckminster-dev mailing list
> buckminster-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>

--0016365ee96ea01cac046dbfa397
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Totally agree with you Henrik. Let&#39;s put it in the UI Bundle.<br>It&#39=
;s just 2 more dependencies to zest : quite alright.<br><br>Guillaume<br><b=
r><div class=3D"gmail_quote">On Thu, Jul 2, 2009 at 5:00 PM, Henrik Lindber=
g <span dir=3D"ltr">&lt;<a href=3D"mailto:henrik.lindberg@cloudsmith.com">h=
enrik.lindberg@cloudsmith.com</a>&gt;</span> wrote:<br>

<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class=3D"im"=
>Thomas Hallgren wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Johannes,<br>
I tried this and I&#39;m amazed. <br>
</blockquote></div>
I have not tried it, but the screnshoots look really good.<div class=3D"im"=
><br>
<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
How do we package this in Buckminster? Should we add a special &#39;Depende=
ncy Visualization&#39; feature or should we simply include it in the core U=
I distribution? Opinions welcome.<br>
<br>
</blockquote></div>
I would put it in the buckminster UI unless it is (unexpectantly)<br>
a) huge or b) there are issues with required bundles.<br><font color=3D"#88=
8888">
<br>
- henrik</font><div><div></div><div class=3D"h5"><br>
_______________________________________________<br>
buckminster-dev mailing list<br>
<a href=3D"mailto:buckminster-dev@eclipse.org" target=3D"_blank">buckminste=
r-dev@eclipse.org</a><br>
<a href=3D"https://dev.eclipse.org/mailman/listinfo/buckminster-dev" target=
=3D"_blank">https://dev.eclipse.org/mailman/listinfo/buckminster-dev</a><br=
>
</div></div></blockquote></div><br>

--0016365ee96ea01cac046dbfa397--
Re: [buckminster-dev] Re: Dependency Visualization [message #37329 is a reply to message #37296] Thu, 02 July 2009 22:17 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Guillaume Chatelet wrote:
> Totally agree with you Henrik. Let's put it in the UI Bundle.

I'd rather have it in a bundle of it's own but included in the core UI feature. Perhaps that's what
you meant?

Regards,
Thomas Hallgren
Re: [buckminster-dev] Re: Dependency Visualization [message #37363 is a reply to message #37296] Thu, 02 July 2009 22:42 Go to previous messageGo to next message
Guillaume Chatelet is currently offline Guillaume ChateletFriend
Messages: 146
Registered: July 2009
Senior Member
--0016365ee96ed4ce9b046dc0c0e6
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On Fri, Jul 3, 2009 at 12:17 AM, Thomas Hallgren <thomas@tada.se> wrote:

> Guillaume Chatelet wrote:
>
>> Totally agree with you Henrik. Let's put it in the UI Bundle.
>>
>
> I'd rather have it in a bundle of it's own but included in the core UI
> feature. Perhaps that's what you meant?


Definitely Thomas. That's what I meant, sorry for the confusion.

Cheers,
Guillaume

--0016365ee96ed4ce9b046dc0c0e6
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div class=3D"gmail_quote">On Fri, Jul 3, 2009 at 12:17 AM, Thomas Hallgren=
<span dir=3D"ltr">&lt;<a href=3D"mailto:thomas@tada.se">thomas@tada.se</a>=
&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"border-lef=
t: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1=
ex;">

<div class=3D"im">Guillaume Chatelet wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Totally agree with you Henrik. Let&#39;s put it in the UI Bundle.<br>
</blockquote>
<br></div>
I&#39;d rather have it in a bundle of it&#39;s own but included in the core=
UI feature. Perhaps that&#39;s what you meant?</blockquote><div><br>Defini=
tely Thomas. That&#39;s what I meant, sorry for the confusion.<br><br>

Cheers,<br>Guillaume<br></div></div>

--0016365ee96ed4ce9b046dc0c0e6--
Re: [buckminster-dev] Re: Dependency Visualization [message #37396 is a reply to message #37329] Fri, 03 July 2009 01:48 Go to previous messageGo to next message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2509
Registered: July 2009
Senior Member
Thomas Hallgren wrote:
> I'd rather have it in a bundle of it's own but included in the core UI
> feature. Perhaps that's what you meant?
>
*1
Re: Dependency Visualization [message #37537 is a reply to message #37226] Mon, 06 July 2009 19:34 Go to previous message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Hi Thomas,

I'm done now with the code clean up and submitted it as a bugzilla
attachment:
See:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=282569

Best regards,
Johannes

Thomas Hallgren schrieb:
> Hi Johannes,
>
> Johannes Utzig wrote:
>> ... by 'patch' you mean just a copy of the source, right? Or how would
>> I create a patch against a repository where the plugin is not yet
>> checked in?
>
> It's OK to attach a zip containing the project as a whole.
>
>>> Some things to think about before you submit the code:
>>>
>>> 1. You need to add an 'about.html' file stating that the code is EPL
>>> 1.0 to the plug-in (see attachement).
>>> 2. The 'about.html' must be included in the binary build of the
>>> bundle, i.e. checked on the manifest editor 'Build' tab.
>>> 3. You probably want to add a copyright notice to the head of each
>>> source file.
>>>
>> That's easy enough to do, but before that I should probably put
>> everything in a shape that's acceptable for the buckminster team and
>> the foundation, because once it's commited it would be a lot harder to
>> do stuff like string externalization, api-doc,... because I'd need to
>> provide all that as separate patches, right?
>> Where can I look-up the things like coding guidelines, naming
>> conventions, icon conventions,...?
>>
> Actually, what I'm after is things that might be significant in your
> initial contribution. The EPL affinity is such a thing and if you want
> to retain your own copyright, you need to do that too before your
> initial submission.
>
> The code will be reformatted according to the Buckminster Formatting
> rules and the project will have preferences set that will enforce this
> before it's checked in.
>
>> There's also a really dirty implementation hack that I'd rather not
>> see in a released version, unfortunately I couldn't find another way.
>> I wanted to open the selected component's cspec on double click, but
>> it turned out that you don't export the package that contains the
>> CSpecEditorInput. I worked my way around by subclassing
>> ViewChosenCSpecAction and invoke its run method, but that's really
>> nasty...
>> Would there be another way to open a cspec, or should it stay like that?
>>
> Let it remain like that for now. This can be refactored once the patch
> is in.
>
>> Either way sounds fine to me, but I should point out that I'm pretty
>> much the only person that tested this plugin so far. Bundeling it with
>> the core UI feature could give users the impression that it's a well
>> tested and mature feature, but maybe that's just me.
>>
> Of course it must be tested before we decide to release it but one
> important aspect of testing is to let the community at large get their
> hands on it and start hammering. Since this is a viewer, the bugs found
> in it will not be disruptive, so I'd rather see that happen sooner
> rather then later.
>
>> It's definetly not huge and here's a list of the dependencies:
>>
>> org.eclipse.core.runtime,
>> org.eclipse.zest.core;bundle-version="1.1.0",
>> org.eclipse.zest.layouts;bundle-version="1.1.0",
>> org.eclipse.buckminster.ui;bundle-version="1.0.350",
>> org.eclipse.core.resources;bundle-version="3.5.0",
>> org.eclipse.ui;bundle-version="3.5.0",
>> org.eclipse.ui.forms;bundle-version="3.4.0",
>> org.eclipse.ui.ide;bundle-version="3.5.0",
>> org.eclipse.buckminster.core;bundle-version="1.1.350",
>> org.eclipse.buckminster.sax;bundle-version="1.0.0",
>> org.eclipse.equinox.p2.core;bundle-version="1.0.100"
>>
> Right. The only added dependencies here are the two zest bundles. The
> rest is already required from our own UI bundle.
>
> Regards,
> Thomas Hallgren
Previous Topic:[buckminster-dev] Newbie with ClearCase challenge...
Next Topic:[buckminster-dev] Commit rights for Adrian Skehill have been expired
Goto Forum:
  


Current Time: Fri Mar 29 06:29:10 GMT 2024

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

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

Back to the top