--000feaebab340b67d7047743b01a
Content-Type: text/plain; charset=ISO-8859-1

This week's quiz was solved by Martin DeMello.

Martin uses the [rif gem][1] to handle the nitty gritty details of
IRC, like establishing a connection and sending and receiving
messages.

The `TeamBot#on_message` method receives the messages from the users
and dispatches them to an instance of the Teams class. This is
accomplished by simply splitting the the message that was sent and
using the first part as the method to invoke. The first argument is
always the player, which is taken from the message event's `nick`
field. The rest of the message, if any, is passed as the remaining
arguments.

Let's look at a full pass through of the following sample message from user Bob:

    <Bob> create ruby

This will land in the bot's `on_message` method. The `event` will have
"Bob" as the nick and "create ruby" as the message. That is parsed
into the method to call and the arguments like so:

    msg, *args  vent.message.split(" ")

The `teams` object is then sent the parsed message arguments with the
specified method as follows:

    *ret  eams.send(msg, player, *args)

This takes us into the create method and the team is created (if all
goes according to plan):

    def create(player, team)
      raise TeambotError("team #{team} already created") if teams[team]
      teams[team]  rue
      "created team #{team}"
    end

The other actions that users may wish to perform are taken care of in
the same way. This simple and flexible solution allows for easy
modification and extension.

Thank you Martin for your solution (and also for the quiz suggestion)!

[IRC Teams (#221) - Solutions][2]

[1]: http://gitorious.org/ruby-irc
[2]: http://rubyquiz.strd6.com/quizzes/221.tar.gz

--
- Daniel
http://rubyquiz.strd6.com/

--000feaebab340b67d7047743b01a
Content-Type: application/x-gzip; name="221.tar.gz"
Content-Disposition: attachment; filename="221.tar.gz"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g1h0lra50

H4sIAJLK7EoAA+xYCzhUe9cfyW0MipTksg3lPm4zSEhEElIRJTKXbWaaMTPmQkMu0cU1SXJLUZRQ
lJJ0k0vpRjoRpRSJI6SSo5L59h68dc73ve/5vud5O99zvq/1eOw9+/9fa/3W+q3/2uvZpqYmRogf
LMaQWOBw8NXEAmf8/XVGECYmphZmJlicqbEFwtjE2NzMHAHgfjQwWHgcLp4NAAgSnkEF6f9835+t
/03FFOLfDc/mUhnAStANpNOZ//5y+O/zb2ZhYW4K8W+GNTb5yf9fITD/HF5QEJ7Nx3C3c3+ID5hg
cyz2n/FvZmJi/ofzbwbVCwIw/iFo/iD/z/n3pFA5QCgI0rQ5QDCPGgaE4jkAh0kPAUkAgQ/8vjVg
kMjpBzwOyAG4FBDwZVMDATIY5Odr4gdwmQAFzyDRQeESg8rl8gEyW3ghgVw8lc4BmIHA6vUOBgCd
SgMBEMo9gU7lUKgMMoAHiEwGAyRyqUwGAFkBOCCDJFyA7tkgEaSGwL+CQA4HTwY5EBZPyEmAJ4gP
smdyNZmMrdNLAdAeLoU5ozQNdEYPCGQzg4RPoBjYHKF1EpXDwnOJlKmtQXAceAZAZUDwGEQQxgzv
hz1xACIdz+FgAGHeoD88kcgMYsExTCWMQ4V+QRfoEZcL44U1v/MP3eO5U0kGGVyhdx5nZl8glc3h
AiwoxQB+BrUwEggQlRHCpIGw45l9eDaZFwQbgWHQQ/H8KRUWHc8H2QZAKIVKpMBrXDwNZHwLewYI
GALpQqwHMKhEWgBkE6STpsyzIV5mgp7ebQBANOMZfAPYIAvKABTtNEQ2GISnMoRETQOCuXEFYdt0
JpMGQPHigUAenS5UhHTYTB6ZMuMgkAkVViiszsFDqfuGTwgY5giwZxKskEgAEmvo1hYgskE8F3LM
I/CFT5FTRUyFPNDhhEL1CVsmMIXh/efCmIoyQJiAgCk9Cj4EBNCQdfRMWHBWhPSgv3OH/saL0CJs
Cc+dygkbzgmVAVH1e+KIeMg+bAh+/I8UTR0ADnM6sCAO2QDQg1Y5gM0UM5gZF8JS0kEDaN3piufC
dRgAMAnboMMiJJgC8SssJyH/U0hm0vjNYyiVSxHu4LBAIhXimzSDEgpqigbONBw9NsiFgAg9YeBz
qCMEOFNaQqBCONPlxYGI+hb7dMJmjE+HDhuD0U6tkgAduKKg1JCZ4NQxYgtPO2QDcsPQnUZCAgOn
NXRmvMOGdIWLAMDGUzlTJxNi25HNZrJ10EJHmuHwJQLyACmT+DNe0bpwIQvj8oX/+03b+e4JHDeb
B04voGfgfm8VLVyE0jLFCBMKjw2FAHcuztQBn+otQXg+lHUORRgUyA5ksoMgPsDpE0mEb6FTMF2u
UPmDUGPgT/cWYSMBhdkLpIPbqQQ6XC503lR7FJIFkcYGQDyHDwQxSRChRPw/eie4nQsyONAvYZvE
M2gAn8mb6eawGvST/c2eDqyDp3OYwjUYjfBdwOGRoY4J79DVQCKhDm8FULhclpWREZnKZbKpTB4H
w2STjeCjYUhlE5H/22+zn/I/lT/Mf5E/wsefzH+mFia4mfkPi7Mwg+c/M2Psz/nvr5AfOP9Bc97M
2PdzWPt7D2s/x6+f49fP8ev/4vj1X3z/gzq6oTHGBAN19X/PO+Zfv/9Nzb///mcOvfiNTXAmWOOf
7/+/Qkh4Lh4DZQBDDvthPr7jX/it9/dXqBRw5r/7FgzPf2Z/6fc/yH0oBfyX9P7Z+h+D+5uIeqIk
Ytf1QReE6KANLfSp+bnfKiLF0GR9XS/KVfAyr+dR8MXhJcFtwSHNRyxb81c6d2ejPW27KQpvmdfN
YiVWuFSSTq5+O4xbS4gXDTBWChA3i9XgTbz/2PFLX7Ogb42/TFVYrmxErdcEHVvdFrrLwnfI6UuU
T0/i+sIzWPdOyerrh9lqnR5MP34wS6Dhrcs2sswZ2SQ1abZ8NmO2SM5W10rNqImql1hVA/30SYrV
2zIjTq6aTcRYd//dsbPuk8uuuq+bzMkN/yTQ86ZGHVVdc8qo1xMRtzzO5qBaBIv8ITrDZa7A8KNm
k946qy12rVX2MnoeFYSMzz1D+c4ILLLTMnB5wq6IZveUqCdPY8sW37S2DUSrjDxQ6MlyvqIX1VxX
IL446euGcfyFKzjZXSN3JGM2F8drixM1SL1WnOOrDXLqPUDjnuBB9yoD3s3UzNZN/H4ncYlJI5FN
dHUptn3kJsO6oIXFn1okN7PUkCkOIrVhV/3VXaIppTLOecVm8vjGVbejMjDWYh+Xj4lOLv7ioy24
H1mhI/jadnUiKl1fwddHMn39cMiyl8EHqt45zlXjE84jZQcChvdh7OaA1I1Jv70z708XiSiZCJVq
iRpRHHc4P1pZ2J20Z+uxFNz7riGLhLGok61Dz+8KHlcl7cJ0bkIQlir4K7M6z6wpNAwx/0gUF2wR
X/Te0YrMXqOeGKd6VM10M9aASz58v/NTp5z2tubltTF9j2aPdcWKtoYd/drza2KfO7CFGZ0jOziq
HhWz9tYHzfr1qqhIq8hIrNKjM69iZpc2EeY/wMgKKn3q07BI4iHXS63huW47qkRM67jmr1LPKRno
jY3dtM2Uqmuwayuq3YtV13Jy6PHVYcmbjHR17BEt7yZbjM6SLZWk9iuovW90q9K+zXJNlixGLE91
dNZqU11l11MYh/FB+yhzisIli1mSxaYlKBYFqbil2YEeEOra8SgPZWNuGuRkV79fASH5wK/BUi5B
maZMmYU6FjGW6sU6oUcXSMyvqsjvO5dytKhDO0THTWXrLtksrxpJ4I3NSMnEwKveox1tq+K3Zvl6
9ypfJng/cnB6ZstCHzkQv9sgJE1LeWXnx+31YyfQe1YnGw3Q176MZt4m7FN/uO3pIpHTGnJzZJ3U
1pbr+QSOiBzIrh9Z+Flz5YtwNteyNbJf+9qicUF3qfK4RgZn2dq0zPQoKxv+DX/13Mmhfq6cU3SD
N3hzwiR8fLD/lkXUieJRicTDlqq2RQxB9UU/cnpCfWyB7GvGwRcvSIX8F9qtd/wLmzZfeFv08JDX
UFCPakLyK9U5FvPvemV7imm7B8+6dlnqMvesqgyqvThxbBOua3S1SKuafkZWwRhioZThHZBfopS9
QiuzSqpGpXVbALjxDOgVn3zumqYMd0xKr5SkEU1yW2nOSWuZt/3TwHjv0YuL7QcX9i2yOnR3f551
3Nl85dNUbxvBg9IjWyN9S4IeR/OPk7Dezq+UXj5prt7g6CNdI+e7TxtTlyr9fon0IwmuVgli+ZbN
b0C3LI37A1LOPWt6wVLj9s9x6t7Vl7hepUfubV9y/oSa+Y1Cjx1eoocK6kYjPriFEPdEDUfQqk6E
X1t9ciFqm+Pr1/6Klc/TkccfZlZM4roy3Qi31Y5lbdv2BbDIsHBvEileumlU/NpSTQ+UlDpw3uX+
trtfVSiFO8fL9/kXSPRmi4a5xyO37SYkS3gQB1dVI6lJMSovdApqJnKClhdZdbXJVuLOVk/WvUYW
byxvIyh15jW1XVApT0prUOhYP4BLtAm6DH7JlY/wCFu6JGRwc27oQl3fQRlKps5qBwup+bz5MTmJ
mCubI9kpqYf3DA1cfCSjUlGRiF1v2b1UfScSnKiLa15n4CGXuuMVedGrEzGb884Rkk+pZVxajHvX
0rXP/0i+7BLXvF0Z8+LoK32/bmh2qHN4q99hvpe7L0IJaTkclrTviQRBLUm1fYVE9SYvL6Vx/9yI
4/ku6wJz2p6WPll2MEps6+rUJ2uCy5zCRocsZeJ9EdHPypxTitM1yWrxLZH9dRt/S9Y7Q90oJ2pS
rbTf68PKDx30bjGCYvtD/bjtfvobVsk+UH6tr7Oz2NjSR12v0zTFciRK3L4Jc3KSkjDSiHpW6U7p
+mXDyvFX9dQt2WacVukWYC7frq29NVtqwRYn69OZoXdjD7AkwsvQFReu3TNesq6asEJ+jP5Zuj9R
LLSeWWSQdqk/ZdRUp0zpNjuXUNbhmrrOJcr28eTjya3Z4zcWsAVtn6KGnE56jQqyk59fFfyGO2PI
wtWs4ov+YqRq04s4YGglj+/+XD73xcBI2u6W4LMhm9oL5RjIohvynwODa+szc0/UNRBr4nNQe3Ml
HtTuwzo+y7/iJleSP6xFQ4z2O+pgsuIQUgOS9qiGkcdcH3IddsWLmBCzIhN30WOEek2tA+sC4hsz
q1L3Xs1/izNVc0P5ez2/7tUVPMiW81z2Uvr89YCnj0IkysEYurOk/LJBz/D8p0q3A4Ot7L0qbUJW
7Jkn+/HdI2CFC0E9u6fdb/4XJU+JMbHnko3pE2PbrRMmNIbblUXMyZYu7P68U1oaXXfbX7qrzjNj
51Rq0WfTy1DPGl+aRr5NqkddUfSeL+9YjANOW9/xImagZazFbWYxOREt6p5d5+h5q7wbjHhmPsQ3
tN8+3xA1WH9oiHkKkSP3Oj4qUy4AKSEueuH+wVzuNcoh8cDwZ/pcvzv3n/1SeCGB1kCsa5C/jXty
I7Wafkxx/vJdaMBYplMShW7/2u2D0bhctsEnnsLceebWUHlTt+67oEa3o7MG1crR+Pc2w+U9BfKx
uljURKq9SJXjYReNrOCVJyvX7DyHUzzfvlN5X+3uJWsbd9gd6/OTaWkQoT25N+80viLrmOHY8eU3
xJT8PRDdC5QMyFG/xdaEkk2M5+jWfl3kzVKO/hS/RcwM8Zg5OzLUMv/rM/xCF+mlpdQF95ywziuk
o6+sSTh/daF+bFpYcOPB7a987t9wz/wgOX5spFHvQ41qcFJDQf6ucA/jlYt29+WI3n+xePVZD9W6
OcSkPEDSB3UcyHi+rWC+oViWtfonRkG7Y0dSmqR47oUHha/6vS6WMJu7jlxfVnbkcdPRw4KwyRG/
oQmV41J9ffddDGm7M+isYY+zHLdfNQ14aoprTo14G3zhgS0OBmE+m7Td9TNuv6XgO7cKMoyIgnyL
yVvtUcn+Fy+TBLi3Q9fL2DcwN4PDRZsNlsRK1ZkGN7keOCFRu6a/vNGOp9G4piVh1qOQnUOWcpM3
iq56un52v+XXdUT9sODXZyF+t/zNmAlWkSVvaHJ36t96K9Iy6Kfm6Syu3v/Q2qZkjm5vViLpDRu1
9nitZ0OVBuFspevrVIGak/9m2Q0Lqlsv2mVNfr68LFwfYyhwSEU9y4yaq8iqmIgtebzVSvDm+VFB
RK7+smMpDf0x2uk70Gtf2yoidQ5tKDUQ3Smmc+Y1WtJ1tLDipsN6s6KYAvWBmzrO6z/tD8V6abMW
ulnN7lulaZfn7ttozSWef/DggknfwRf2S35xLlB47w0Cfsck6loL9L7qNEuzj51pytGKHDddsA4d
C1qNxWcbaRnJ31xRLNuM/rT4Y6TphPZ+fYWS2pZzekWmHTtvpvS/yXvciUiviRQb/yBXiOLtX7Rc
y04mbOuFQ3b10Rq2q7URWFPEQNklwPyhAJvQKaZb7+T2aUGZGDZL8qVGAyZzMoFmFeioFnnvV2v5
Dtnn9OjnKQgXdNeHmnQJ9bjRU2Po5hMmri9Rae5nmUnuiR5HDxIiDwGMpQ8ujo45yL62uGeW5yho
O1v3nEwYTnk0KD9XU0vpnZ89LXTWBjXpkFOxXT4x+FUrtfdG+91ToSppx9Hter/ME3X0L09xzU0u
HnIaDkygyYau2lAaE70260vsKlfEDY9LSfxi8UPJ++bsrSZVH1C1vmhh5KRd+tnoaz61sSFdfyhE
uvMLfc6FN3rr0xW9ehkqd8Jon4x7XhwPE1XXzAPnyo7eLkcN9kiFXclMRy2rqc2UtvKIXI9zM1vA
Nc7reb1i48YM11PUE3dqKnk+0Y/rLEVEklX41eUC0XCFWnsxctOG0bOnU8R7Hi59ljyxJeFm24cr
t9kKq/uj5tqeUM+soNnt/nxr7fkE5I6FKnVpCsDaMqAQ1V9vr3q8nbbb3VfRjrxMvGfHYyul3mzb
JI+7TZ7qGzMOvegLzr2nm0jYVKeHS7v5sCODL6Pnm6clV5l6f98r0r35tnLW99xq0nClR8H5pJPi
c4105dTryB6LeJKesrojSlIJzi5f3AeiUfFq/9HOWYZF2bR9nAYBRQmlWUBKWmCRbgkB6UZyQWqB
pbukpbtBWrrrBgkRUBEEllQBKemUEtx3Cb2944njeJ/jeb7s78vuNXPOzDnnnNdcu8fOf+NyfDnH
DfAj3KdNgb17Siwlo201u2TX9yjmqAzDSC2ZbscIVCRGGWR2mOqOj5DG55tLF7Jjd6t4aRVB7/Y1
agkNNp+K3jlALd6OeFTO+bAI2tSdGX6l221L3pY+gJVrsOgNeXboE6Gr9UxqM7Z1stYxd7t6ixiw
O9+o9WKPnqBTUodvx90phsnTpNxJIi0fTz8Uo8Areqk4W6eeGKv3aLJUu2C72tbdNxW/8fSJDCOB
mJMJlVFHYhgJoeEI3egOhzipuUrYlF+JRr1wAo2fR16ghEq9yhSqaA2qq3Yrtf1iUtxcUnawWm4J
hJWsIkZ80HC71r3oXZg93qi4beSOTRlIds1ho21pDFcu4oqDwI6c6dXuiszMzAUmIMnVIMMoTHJy
/vY95XXv2lxZWpNpJdV0qmdHnYUvGUhOGa7GxBh8RSvcRfG1c1oJRxbl9WP/Io/+IS164ImEhLx6
ruMNA/0srLEwFW3yBYNIPJhxBH6b8Tfm+mCPoLfNR3uyQ1hZRGthHgnMccqKEqFuNA6u8xrlkTym
QJ2C3nyydNwilfvsH8vzd9fmods5CozXZVj94jetdR518ZqWQPhSZCs751C7P719Fc2tXbwbOp7u
Mt7NksmR93IxWSpWJyuVMVnZJ35VUxwMXX8TVzPXlXvVPRA94HVc9Vc9jy7AU3xxoTcVowFoye8l
6BIKg817GNiZC965HLkFl61srW0lRIzVJlyxcTFd5Gt8uUW0zujcdR2GLaBkXf95rL49jdVWf8DH
y8Hz1T4WEQs+R/58Dnr5EaSjnS/FhF8GKST7GjqOurlx5q32ui4v+5213kfvprFZ3buF8RICfAPI
85UllzMBQa+9Yu73I1Grn9R4H8mE9jRrLiRcU39X2qnA+y4eb/FjXtWopoX1+Pr2wGLH3FfBaD6J
u4dBHUAon7f+kC9SC8+VypHsCaiTo28CydGJFwvRM5s0YgL2hmWkKsJ1MkPoyn35o28DDMzuA5iD
5TWUT0n2Tg9mjD9rTkol4CF7OAPug6NrjIM8P1sxh1WVflDeL7qDMgCKh8gn9pcSJ/QTStF0WtNn
LnQtlthhxsm025EbKc6lpxc9LH268JLnsbsTZaKNyZX19z39VvsnLPiHLYEoZYfTSdiwinAYr+6D
7RfOMOHvMKfy/KV9Dmy9kP6JgW0icVM2kLCv84dh9+pawk86BB9Rnt5pJip0IOqIvWujtinMDCu2
XqX9ipUzyWcjZUhOFsd3alt/ujrao8o/7ThvZA/NLtfP6Ili7G50p/SBtJUJDfVl0XKm5YhYVouQ
CDkwcoUrWxWTD6/v3nszpK6MmT1GkEzJYk84R50yXUl+sy89gKf7gVhc8zvoG8qIEVL5TLNVQR7d
GsIPNZ6iC/c88bi+MKFi8WRQRisbLNq/YXbU5ml3vYYuBP9WEXD0RqhOmznSlb1EWVfF16f2w0mD
ng7MvCNs2odMKxfmcVjp8gjmonv6bTerApIQ1sMhUiEIqvLEbSKbR1HGxPxiY0pqnsWDJUdPQsHc
jcZKzklOHsKNrM5FXDDHKbWeeKdovK0jTcRRuH3NZ8j/+eHbLHsGwqQi2x41CQYhD0G7WzLJwyhW
+yn876KViA3iIk7t76o3uZFjbPLlr3EHx3o/BgAN5Btjn2XYsy158GEkTyPZq36okFn9jl4xLvAZ
x5teUkrkreq9mZjZ7AWCzPyAnNVIzxGOfWhKLxKVaUwleWC1y9MHVFnJkGMkh2MCb64lCjeJVMq9
pG3HdIbS5Rn+bPKS92pvF+lT8+StKnMlkG2uPXzUJijk7uVoZjfrALlLNPyZn5759peCd3z4OGZY
wrpiKVY3GlA78QMEXpm8vDdDTqWc46pSY6RQRY/e2tqpVaMQnyohgNooEeISqFBhfO0VprHbLSdQ
BG9FlKLT1fouSiNyyYOc1FJvb9+bxZFzFL1G/LmiL5333d91VnPxgvXoSSnkZmZLxvB5krVmw5pd
aBTJOPmYO029e1dK5hQb1xhZekRuH3XhekSja3J7+A8OirtRqLW3gUB2k9jfOYXIPjeFhlMzFI8m
q1mtaKf5muyYk9bg6MkdM+Hjjil20+UQB9zt6pIbMo9npxBYo9qgKdSMf5XnWqVgphjH32RMUBvr
iMVpzoW82NS+JBfg2/HMpyye2zkHz8DYUvVrl3K0+35VlAZq0fe8xWHpyrAXJOLiHetcJgwNjVuu
/hiiE3nqdVFrAamjn1Gca7GOfIvYMsWeg2gFlCoTkJdubaBncKHaGgGSt0K/LFZGQUHJJMHBpYNp
RJZXUuVV7pRrMnCP+tonN6OwMkE5RDQ8ikZFR1acWv3A9RXGVtAPmaEtktnfudML+LGRkN0NeZ2z
T0JjYnEj8QyfcxGojNWbiOmkhG8TeG5dt41eSgQsW717PeBKE+ANkZugxgZNPK+571SulJmVK5z0
Lm4efzCxU5eUROhFWWZm3w1VQZWxg3iDxFs5vsEEHFjehqkbaNbhjwMjciY1QUd4fCXzU8/QVd7E
olVLe4Tr96hWSj1fnJdWbPIe7E+1Md7A/pqfUbBZ6g5U/wZhKUnvSM81m1/Cclp+XZtG1DyCllnH
XVPwMiHO8/Mrb/W7Uursk5Z7xRMssnf9ZMBSNBVXxFRExrqpNbev0kb3VCQZR6d4J/EJWVYwk69Z
KWNUDpXnSVUi3wnLx0QJN1PP8JJ44Jr9iQVA03/zAa1Mdzlh5Z36m8JrqrV7TnKyQcxkYdSfMZro
qF87Twte2e+jWguteYgLe4ZCLVVNXnKSq5/+bTXozSFsZe1odckHmBrxSuW7S4MXFez0TtI1WKLT
c7Mm4uuVO13Qlodqmf6RaMkmG55DeW8jClBL3uZXdnVqb9TsqNbUSmaYPArB1NoHHvuONnkwZnG8
o2pSnfCG8puJDJK47FmsHvQVHJa6UDGSD2HFtslgMLsyLSSJ5zOjLCycaBkKDE5cry02pdCcZwv2
kGd6Q6gbI8XOR9+AudOe9KnccGXJuPiA9Bh2lOABS3L/OLT5saf/+AXUmjdsE7YGFDj1OIXBv6Vi
kHFoFRMjq7OPJxe+J6cS6Q6O+Oj6mu3Q/2Tu6EM34VPD2fjKfsqWeWR6vS59nI2bNBFbYjKNNl1l
7tNYH5xmwPXZSYAOxSjejXSicla5jxHig53SVPiUn4frnfZvHWQJ2ncFZHkpBd0QTtUz7//uXNPU
2oLa6I4/hkt1fKKn5xX6IDh2MxLH0T23CnX8s9IgQW5WlM2tKjrw3bkaydtZoWUTvZVeQJsyDONc
tOB2PPaZtuLNuhZiRaTJISXHk7lijw7k8dF27pdLMAkkJ+7edPqGx929lsmQ4WfahR4La3UhU2jI
Esi7BUi1Vr2iZPkjlkBokUle3KhxycQQh1Np6NdJjKBZLiRHboCabznGIfbgsC8O+herdlvsylxk
HHTRnXttsMTsfI0HD+UE867nCjERI/NF3n+UcYqrQAPzP0UzPmSvlNNhJVcPcxMQpsnZhn9UJ6xj
wuea7ys7Bj6VBUPfVkZNP9dm571Kxsuluv0d2D9Zq2PodkTLNibXAjKT9/ebXnfWwNngX4l8WqfR
YvXxWQx0xfSBUrl/pLbPMjnqXSROVWo1oq75YhTi/e5A5Aw5t63ypAkMy2aNQpfT32zYYNiasON8
hwd6urq6a2vzE32ZnjMM8uaHe1KlmSf2wYelkdkZqCJDgO3tryQ7YifJOuZJUmPB5Ppk8l49vZbH
R2vvwwT2Dzky5u2KNW9HAHtGpShuZONLQkl1x1NbWgSiyNZ7slMpRcz6AvHmvgAV1tt7tlxLpoau
cwa31LdxTTZMcSrsdVGXgTW77Lyc7dcbP73FWy6v2EThtOw8jXSa9v+m7zVgzjY0wpUmATDU/EKS
QqPlLXra079oMsjJAbj15YaoAZ7FFcz44qQsZe0X28RqVUaiFdJ1DH7Ei88ryj8yzO6hKs7+dmLZ
tF57wKUfI+HKoHf/U+vAo0iBRl/6QORPRJqqUZxRW2yNzjHlTHiLquzNgXkbQHUuTgPSdwr9Os+1
8T88b6inv5s8XaAtzUNm4N5gMarefyLb6FYD1DbJ8Y14phCU7LHMNsMcSSyVXLoLnND3xsWH0nsw
p2Ki8lPUtRy9z2iu4e6wG+AqCp7PyxGX9qdjg+obUB8kmc8m4uQoBOnFYwgmRm1a81uaKChPKaTF
UHvyEXk/fVrPVPE9FiP8/q59rrYH9oaREa5JTFA8PYx776YD9fhB+QnkuoOd+5YLillk2nckIW4n
PNPm+r6ZPA8Q/OXD7RBO1ylTe5S1IWh/s7snUuBUJjjAktTRLQ1X0f/wEZLDw/0CMFKiUdqawvAT
bo8WUBDsu4qk38E3vKxS1ZFr3Gl20yoHW3Vlbc9AI/SqKsoFTyecrXgDigtdiNyYeYOBKdY50dsN
wBSrYw9dn8IaGqvMio4R5dp8R8EDbebUUlHjHSXChgSyRPqUMO/DzE9laA2mjAVcgprPvmWyLT54
fUBf6tXKsmMzxpML3TOymNYaeysDaltPNTNt8LUGuMwqysq/XEJmJLurI+5SYJuQ93L3BmPVQBpT
tUI7IZagSpZp2swVYs7fxjRc0ketHpZHb6GMWgxgFWLscSPllmGJ1uN9VCo/yYzpx621CmWW8Sr+
mLSLFymd9vTKSQLh4aSGEt3DU0VgllpdyfMViESo5bTmAqtGci/RTeWWh6PkvSL1vdDvrXsS04/p
jnaSr2pipVASWz8DIH+gDaaJzLmTWppRz6bZNhH0GJSMXYOnBFtzrBNGbiVnk3+6rFjv4YFZ+LkB
WjCmwE0SeroO9G+TUHX59uktv6PtMNmE0fyLepe6/BsldDIacYIolpupC8+RY7t3yoejsQUVpVXl
jNeiJ2iQLVvWopdpxI5NCySAb7HAkv49R6Ht+Eiq4zIhJPKZE3v8pi2+IQvHy+Y8C6oaWvYMY03a
Ury7zyQKZBgl503kTAuZegg7IClxBKMWr8VyWhOw8m6J2rQObR3RitJcRRLZYrlelhUvjQPgvj77
MjVV17I5EpdUtvAhehsS4zKN1HsL2bBeJ1roUA4FqU+V3xzXQzv2wmuBtIWUo5XSNkPHJMKvkdAY
jx743pu3KH2TLKu1CwskgeBmOaN14HyhCOmLd3A+Hs5BLQvVgr7G214i4q8NRJ12WJzBmF9Ojng4
+4az9aV9gJmQVIcMGuBeo73TpNwyQXKs56aw0TpFINViJgRNxGRnipA4Xz2zy/mWXsb9V+XE0yS2
X1674VFUm305VPYVMkFryJUU0wKUsVknp78RjZbsO7yVIp5JZaKFNco8IZF3n0VrmoUnDba6WF3y
thfrJkObD5ayMi6aF4MWzNIC/ERuxb/4YV8cGXtn5t5sbFVIAZjj5q5rjZnkvSXKDTUHXoh5dndv
mD2qYKzBOO2KLLL0cjd4kHUtWjmAKSYJsM/ZWkTkq9+a9FlnkdJ6xlPxJXmN6G9LO5WkaGP2ooR9
e36Th6TZOZbISumhOG0hfPvVtAqanuW9v22vRa5GrdFXN7uCc3W7ir0leIYHXtqOl6bw3fYWVER9
UndXXW5g3jk+ImixDisg8EN4r1LcWrs8D/oa/qAqo58Y0iqIw91PL9gamK6R3HblQF7rBaOJaRlT
OL7FN3IKMWcSYqvHRsWc19Pqxz9gftLK0akMThHIcwIIxoR3yrH0mnkyQz5d0+6xxFbrY6XQalkW
u28u/ZpNmBArlh95qkWiPscxDpmUltZeNjYUiyI7n+zxnD+u6DI1u81RA4haO2peYcvOPtxv7uRh
XIqGSRpQN7NSIXUd2E/Ppt5eXt04/+XKqE0yLX3dux4/AeTKqr12A7m8+i/AdcDzOuzN9g4wF9dX
iDmOyyt0Y54B5s8ts7FBOYTbEeb1U2pVdulZ/XQ5D8RI07PFW5z65edBN+g3giPSnNRst8lvd1Kx
Ay01VpTHb3SFVMqGDxbcLcxzr010bN0+PHZnVd/EH1PX2DXjd5+nSDYj5p4uTbnm37nSFnNcrr5J
v+IBJDnagimY7qlzkVzhsBnjzmVc5JG9zsu9+oVpdyiF9eZqKk+ZmcZbkD6XUI6eYdfVUJb1jdgr
dFEofbta/Tsi/MGLIkcqFadRL+ZxABxUz7Na59yYYA1jG6yn3012hWGrJXq6ePXD9yYpj2eBeNNc
JxZLKsuzlG3Sgd4pMY9C6o95SVdL1+5NJYtqlX/c+jbAfpPZB9m9H4emekTjVCPkQ26olbeIzkSp
wombudfwa5Hqwsp5AzHRe/Nv8NrG2LmyGVh9DKtaQrTzD1FDElYfeSitSbc6WBanSUdRgrQWJDJc
NgIwXox0Zc0YH1F+gbqFakWNENxU+daPf7jefDDL+qJ2xxL90czS/RcLGa0qBC1qIiJa5az9dNnp
21NGLFSaZsRHXUlSO5hHWdiFmPYH2iTonzkbhRZiT9BlnyhjoKT2LAyVxA1zoc3iBSU9qCS7+kjY
y/5J9C2c42W709y52+jxfZHJqysHjKu4N0ZSwFqHOdvfMta/N7/YqGB3Pa04+4UdBkNF0u4I50cK
+V//1v932IAcjc7PgPzPzn9wcHLwcv75/Ac3x3/1/A/i/AcS6lu1KfAIx3WvA81krwFQ8XUa/BB1
XaX8zq6b2yiMqfdqQicOO8eXFzZJzGs+fqz/nHJbZW27r287hcRcm97g/bggYflRxB2NrPdq0Ajp
fF4dsZF3ckYdhnSyti9ZVWaUvnbyTrs8UJE5CtGJP4JQnyDZz/VyoPvcNnzamqskG9OH0wgt01vY
8XySmO1kAb3xnYSn/4V1rQ2Peuy0OHW3ztfslG897NQ6IU/d9RM3q0EpGawgbY1h2pod1heS4WTE
wVpzQs85xbk40gMobcI1LHC58DCkJnsyHveNpSa8LvnadCL525GA9FSWM/WgL+WdJrrGrvUetn7I
wtN7gwNPXKne0+Ndc/BP1SlcifCW7JfYn11Z7W+AfuWJGk0qCWdPskDSlUeivNbMNB6GYvv+VXpq
7iCxdqfFbUDGfdJbZFiHLK6kSu90FOmtvPE3/W5lnpiqGLcv4ZnNcHwK2P4tScgKz2jSmo42gtHd
fFCi59MB5/FzRv5+2VEwblNu+da8CkkgTYJ0gWyoGHO9rW2cC/XoZBBWlxIZrtEz/Lg0sNwkbvpq
wf71bxkV8K+zNquSBrBc/zGB7Nmy/DsFXdwxsinbrYdb3tQqfr+NAKVZo8tzgVrkLt3Fz64pHGap
9b+Ny5Lvjpiqym0hpBvh6ntzwuJD679RWq/f2o15P3AOdR5JiMCIGyOEmnkz+BSZgMIWZ/IZtcst
O3662wwu8ir0T0J66exG+HyQL7ay3NnT/ga0/3XaIkCAAAGC/yd/c/77x7F0Nojxf2aMf6X/5+X4
Xf/Fff75j4eH9y7i/Pd/AwjI3skCAgIwnIkIzEE2DgzY2PAX+LWFGQP277UWZuxngh5s7HNJ1R8k
HwBBgJSrCcjuLGewz1UZZ6qRP4hCzGxtzyQjv5axgUEuF+XnTX7v1gFuaOToCDEwMjEBOTjA++c/
l4ewAPhtQDbGIIjDmTTlbAgLsIWjhZG1hfuFWkT03AwgBPDwuri+NP9Rcj7Ov5C0/GcELf9AzvIP
xSy/eGYKsgb9rWcXYqDL6t+LL+d4WWEAd8bD04rF2RPgDBC6UBBdBIPmwuCfjm1pawH+N2MCtgU4
OJk8Prfi/9ndeTDAto5/Ccill7oXnetfapsuHKP1uCj1Ajw2cjj34Z97aQ0ycv49QJdaqB8Rgvf8
x4hcGjL93VjWIDPHfzYSBOQAcmT8ZYQ/Z9Rfc+5nmM+kVed1f+rT4bGty985f6bGgl/ocuifrRuD
jRvDpQLqT6G7kD5ZO/zJ/nyoH00uUsXGyA6eC2fvWQAGnmdzP5/j2WqdOWFw0aHDRS550Xj9k55/
dPzXdj+VWD8naQexcIYn+eV0/2r8Y3kc4IEycfxrtrJZgdwc/hqzvxn2DyVs58l7LtO7aPunXUUc
npWCABXZ+/z88Lc/tpizexn0ywZj8tgIDAZZ/2V/YbysYDnXJbIAHEAQ57MFtLOFOLKcq83ARjYg
pj+mxPlmdrbNXRRfdgGv+H0UeEid7EAQxn/V6y/BsAUbwK9szWxsHU0Zz6WKF8Oez/+y5782uZQj
/toAAnJ0goABTmBreN2l6PGnj3908t+TR/6+Jj+tzuZ1Xm4MMrcAX2bRv6duvHDRwcQJBFCER+F8
3/mhOjxvD7aw/tXoD08kIWEA6A/GuqAfHuv/krLntWwgI/hG5uFp43n+jzM/Q/VzyeF3x9ntCTf9
NbXgJQYG92XlpQwMzsJ1mwNe+fsS09DSeoipSGvA76LzXQXu2WVGwLPv/NH3s/vz5wu8ngb+1gJi
wmYGAYHAtqYguNVZGRAI5IXXwDMXAG96Hma4Mdvlf+Vc+PK//hCBAAECBAgQIECAAAECBAgQIECA
AAECBAgQIECAAAECBAgQIECAAAECBAgQIECA4L/G/wF00Si/AHgAAA--000feaebab340b67d7047743b01a--