From 8f49641bd1df34c6fae8c81840ff702481485f38 Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action
__unloggedin_look_command [l, look] (cmdset: UnloggedinCmdSet, help-category: General)
__unloggedin_look_command [look, l] (cmdset: UnloggedinCmdSet, help-category: General)
about [version] (cmdset: CharacterCmdSet, help-category: System)
access [hierarchy, groups] (cmdset: CharacterCmdSet, help-category: General)
access [groups, hierarchy] (cmdset: CharacterCmdSet, help-category: General)
accounts [listaccounts, account] (cmdset: CharacterCmdSet, help-category: System)
addcom [aliaschan, chanalias] (cmdset: AccountCmdSet, help-category: Comms)
addcom [chanalias, aliaschan] (cmdset: AccountCmdSet, help-category: Comms)
alias [setobjalias] (cmdset: CharacterCmdSet, help-category: Building)
allcom (cmdset: AccountCmdSet, help-category: Comms)
batchcode [batchcodes] (cmdset: CharacterCmdSet, help-category: Building)
batchcommands [batchcmd, batchcommand] (cmdset: CharacterCmdSet, help-category: Building)
batchcommands [batchcommand, batchcmd] (cmdset: CharacterCmdSet, help-category: Building)
cboot (cmdset: AccountCmdSet, help-category: Comms)
ccreate [channelcreate] (cmdset: AccountCmdSet, help-category: Comms)
cdesc (cmdset: AccountCmdSet, help-category: Comms)
cdestroy (cmdset: AccountCmdSet, help-category: Comms)
cemit [cmsg] (cmdset: AccountCmdSet, help-category: Comms)
channels [comlist, channellist, all channels, clist, chanlist] (cmdset: AccountCmdSet, help-category: Comms)
channels [chanlist, channellist, clist, all channels, comlist] (cmdset: AccountCmdSet, help-category: Comms)
charcreate (cmdset: AccountCmdSet, help-category: General)
chardelete (cmdset: AccountCmdSet, help-category: General)
clock (cmdset: AccountCmdSet, help-category: Comms)
cmdsets [listcmsets] (cmdset: CharacterCmdSet, help-category: Building)
color (cmdset: AccountCmdSet, help-category: General)
connect [conn, co, con] (cmdset: UnloggedinCmdSet, help-category: General)
connect [con, co, conn] (cmdset: UnloggedinCmdSet, help-category: General)
copy (cmdset: CharacterCmdSet, help-category: Building)
cpattr (cmdset: CharacterCmdSet, help-category: Building)
create (cmdset: CharacterCmdSet, help-category: Building)
delcom [delaliaschan, delchanalias] (cmdset: AccountCmdSet, help-category: Comms)
desc [describe] (cmdset: CharacterCmdSet, help-category: Building)
destroy [del, delete] (cmdset: CharacterCmdSet, help-category: Building)
destroy [delete, del] (cmdset: CharacterCmdSet, help-category: Building)
dig (cmdset: CharacterCmdSet, help-category: Building)
drop (cmdset: CharacterCmdSet, help-category: General)
encoding [encode] (cmdset: UnloggedinCmdSet, help-category: General)
grapevine2chan (cmdset: AccountCmdSet, help-category: Comms)
help [?] (cmdset: AccountCmdSet, help-category: General)
help [?, h] (cmdset: UnloggedinCmdSet, help-category: General)
help [h, ?] (cmdset: UnloggedinCmdSet, help-category: General)
home (cmdset: CharacterCmdSet, help-category: General)
ic [puppet] (cmdset: AccountCmdSet, help-category: General)
info (cmdset: UnloggedinCmdSet, help-category: General)
inventory [inv, i] (cmdset: CharacterCmdSet, help-category: General)
inventory [i, inv] (cmdset: CharacterCmdSet, help-category: General)
irc2chan (cmdset: AccountCmdSet, help-category: Comms)
ircstatus (cmdset: AccountCmdSet, help-category: Comms)
link (cmdset: CharacterCmdSet, help-category: Building)
name [rename] (cmdset: CharacterCmdSet, help-category: Building)
nick [nickname, nicks] (cmdset: AccountCmdSet, help-category: General)
objects [stats, listobjects, listobjs, db] (cmdset: CharacterCmdSet, help-category: System)
objects [listobjs, db, stats, listobjects] (cmdset: CharacterCmdSet, help-category: System)
ooc [unpuppet] (cmdset: AccountCmdSet, help-category: General)
open (cmdset: CharacterCmdSet, help-category: Building)
option [options] (cmdset: AccountCmdSet, help-category: General)
screenreader (cmdset: UnloggedinCmdSet, help-category: General)
script [addscript] (cmdset: CharacterCmdSet, help-category: Building)
scripts [listscripts, globalscript] (cmdset: CharacterCmdSet, help-category: System)
scripts [globalscript, listscripts] (cmdset: CharacterCmdSet, help-category: System)
server [serverload, serverprocess] (cmdset: CharacterCmdSet, help-category: System)
service [services] (cmdset: CharacterCmdSet, help-category: System)
sessions (cmdset: SessionCmdSet, help-category: General)
time [uptime] (cmdset: CharacterCmdSet, help-category: System)
tunnel [tun] (cmdset: CharacterCmdSet, help-category: Building)
typeclass [parent, update, type, swap] (cmdset: CharacterCmdSet, help-category: Building)
typeclass [parent, update, swap, type] (cmdset: CharacterCmdSet, help-category: Building)
unlink (cmdset: CharacterCmdSet, help-category: Building)
whisper (cmdset: CharacterCmdSet, help-category: General)
who [doing] (cmdset: AccountCmdSet, help-category: General)
aliases = ['batchcmd', 'batchcommand']¶aliases = ['batchcommand', 'batchcmd']¶
aliases = ['del', 'delete']¶aliases = ['delete', 'del']¶
aliases = ['parent', 'update', 'type', 'swap']¶aliases = ['parent', 'update', 'swap', 'type']¶
aliases = ['aliaschan', 'chanalias']¶aliases = ['chanalias', 'aliaschan']¶
aliases = ['comlist', 'channellist', 'all channels', 'clist', 'chanlist']¶aliases = ['chanlist', 'channellist', 'clist', 'all channels', 'comlist']¶
aliases = ['inv', 'i']¶aliases = ['i', 'inv']¶
aliases = ['hierarchy', 'groups']¶aliases = ['groups', 'hierarchy']¶
aliases = ['listscripts', 'globalscript']¶aliases = ['globalscript', 'listscripts']¶
aliases = ['stats', 'listobjects', 'listobjs', 'db']¶aliases = ['listobjs', 'db', 'stats', 'listobjects']¶
aliases = ['conn', 'co', 'con']¶aliases = ['con', 'co', 'conn']¶
aliases = ['l', 'look']¶aliases = ['look', 'l']¶
aliases = ['?', 'h']¶aliases = ['h', '?']¶
aliases = ['inv', 'i']¶aliases = ['i', 'inv']¶
aliases = ['conn', 'co', 'con']¶aliases = ['con', 'co', 'conn']¶
aliases = ['l', 'look']¶aliases = ['look', 'l']¶
aliases = ['?', 'h']¶aliases = ['h', '?']¶
aliases = ['@callbacks', '@callback', '@calls']¶aliases = ['@calls', '@callbacks', '@callback']¶
aliases = ['recognize', 'forget']¶aliases = ['forget', 'recognize']¶
aliases = ['press', 'push', 'press button']¶
aliases = ['smash', 'break lid', 'smash lid']¶
aliases = ['open button', 'open']¶
aliases = ['ex', 'examine', 'feel', 'get', 'listen', 'l']¶
aliases = ['push', 'pull', 'shiftroot', 'move']¶aliases = ['pull', 'push', 'move', 'shiftroot']¶
aliases = ['push button', 'press button', 'button']¶aliases = ['press button', 'button', 'push button']¶
aliases = ['hit', 'fight', 'slash', 'defend', 'chop', 'pierce', 'bash', 'parry', 'stab', 'kill', 'thrust']¶aliases = ['bash', 'parry', 'hit', 'slash', 'thrust', 'stab', 'kill', 'chop', 'defend', 'fight', 'pierce']¶
aliases = ['?', 'h']¶aliases = ['h', '?']¶
aliases = ['l', 'feel', 'feel around', 'search', 'fiddle']¶aliases = ['search', 'fiddle', 'feel', 'feel around', 'l']¶
aliases = [':p', ':r', ':', '::', ':<', ':h', ':dw', ':UU', ':>', ':s', ':w', ':j', ':dd', ':uu', ':!', ':f', ':y', ':u', ':q!', ':i', ':wq', ':::', ':DD', ':A', ':S', ':fi', ':echo', ':x', ':q', ':fd', ':=', ':I']¶aliases = [':fi', ':w', ':y', ':dw', ':>', ':I', ':UU', ':q!', ':echo', ':', ':p', ':q', ':=', ':fd', ':j', ':r', ':i', ':s', ':f', ':DD', ':A', ':::', ':wq', ':!', '::', ':uu', ':dd', ':S', ':u', ':h', ':x', ':<']¶
aliases = ['t', 'back', 'top', 'quit', 'b', 'q', 'e', 'a', 'n', 'end', 'abort', 'next']¶aliases = ['abort', 'top', 't', 'a', 'next', 'end', 'back', 'b', 'quit', 'e', 'q', 'n']¶
search_index_entry = {'aliases': '@delete @del', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy delete del', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶search_index_entry = {'aliases': '@del @delete', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy del delete', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶
aliases = ['@parent', '@type', '@typeclasses', '@update', '@swap']¶aliases = ['@swap', '@typeclasses', '@type', '@parent', '@update']¶
search_index_entry = {'aliases': '@parent @type @typeclasses @update @swap', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent type typeclasses update swap', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶search_index_entry = {'aliases': '@swap @typeclasses @type @parent @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass swap typeclasses type parent update', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
search_index_entry = {'aliases': '@search @locate', 'category': 'building', 'key': '@find', 'no_prefix': 'find search locate', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶search_index_entry = {'aliases': '@locate @search', 'category': 'building', 'key': '@find', 'no_prefix': 'find locate search', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶
search_index_entry = {'aliases': 'nickname nicks', 'category': 'general', 'key': 'nick', 'no_prefix': ' nickname nicks', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}¶search_index_entry = {'aliases': 'nicks nickname', 'category': 'general', 'key': 'nick', 'no_prefix': ' nicks nickname', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}¶
search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', 'no_prefix': ' groups hierarchy', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'no_prefix': ' hierarchy groups', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶
Test the batch processor.
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpssb6e5pk/c5629099249c1bd0b6fabae8631a8627887506ad/evennia/contrib/tutorials/red_button/red_button.py'>¶
search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶search_index_entry = {'aliases': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn con', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶search_index_entry = {'aliases': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn con', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
search_index_entry = {'aliases': 'delaliaschan delchanalias', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delaliaschan delchanalias', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶search_index_entry = {'aliases': 'delchanalias delaliaschan', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delchanalias delaliaschan', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
search_index_entry = {'aliases': 'q quit abort chicken out', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' q quit abort chicken out', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶search_index_entry = {'aliases': 'chicken out quit abort q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out quit abort q', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶
search_index_entry = {'aliases': 'shout whisper ;', 'category': 'general', 'key': 'say', 'no_prefix': ' shout whisper ;', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶search_index_entry = {'aliases': 'whisper shout ;', 'category': 'general', 'key': 'say', 'no_prefix': ' whisper shout ;', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
search_index_entry = {'aliases': 'pose :', 'category': 'general', 'key': 'emote', 'no_prefix': ' pose :', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶search_index_entry = {'aliases': ': pose', 'category': 'general', 'key': 'emote', 'no_prefix': ' : pose', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶
search_index_entry = {'aliases': 'e ex unfocus examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' e ex unfocus examine', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶search_index_entry = {'aliases': 'examine unfocus ex e', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' examine unfocus ex e', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
search_index_entry = {'aliases': 'inventory inv give i', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory inv give i', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶search_index_entry = {'aliases': 'give inv i inventory', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' give inv i inventory', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
search_index_entry = {'aliases': '@open @dig', 'category': 'general', 'key': 'open', 'no_prefix': ' open dig', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶search_index_entry = {'aliases': '@dig @open', 'category': 'general', 'key': 'open', 'no_prefix': ' dig open', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
search_index_entry = {'aliases': 'roll @dice', 'category': 'general', 'key': 'dice', 'no_prefix': ' roll dice', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}¶search_index_entry = {'aliases': '@dice roll', 'category': 'general', 'key': 'dice', 'no_prefix': ' dice roll', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}¶
search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶
search_index_entry = {'aliases': 'unwield unwear', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwield unwear', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶search_index_entry = {'aliases': 'unwear unwield', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwear unwield', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶
aliases = ['press', 'push', 'press button']¶
search_index_entry = {'aliases': 'press push press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' press push press button', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}¶
aliases = ['smash', 'smash lid', 'break lid']¶
search_index_entry = {'aliases': 'smash smash lid break lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash smash lid break lid', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}¶
aliases = ['press', 'push', 'press button']¶
search_index_entry = {'aliases': 'press push press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' press push press button', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}¶
aliases = ['get', 'examine', 'ex', 'feel', 'l', 'listen']¶
search_index_entry = {'aliases': 'get examine ex feel l listen', 'category': 'general', 'key': 'look', 'no_prefix': ' get examine ex feel l listen', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}¶
search_index_entry = {'aliases': 'light burn', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' light burn', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶search_index_entry = {'aliases': 'burn light', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' burn light', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶
search_index_entry = {'aliases': 'pull push shiftroot move', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull push shiftroot move', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶search_index_entry = {'aliases': 'shiftroot push pull move', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' shiftroot push pull move', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
aliases = ['button', 'press button', 'push button']¶aliases = ['push button', 'button', 'press button']¶
search_index_entry = {'aliases': 'button press button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' button press button push button', 'tags': '', 'text': '\n Presses a button.\n '}¶search_index_entry = {'aliases': 'push button button press button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button button press button', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['chop', 'parry', 'stab', 'pierce', 'slash', 'kill', 'thrust', 'hit', 'bash', 'defend', 'fight']¶aliases = ['fight', 'bash', 'kill', 'thrust', 'chop', 'slash', 'hit', 'stab', 'pierce', 'parry', 'defend']¶
search_index_entry = {'aliases': 'chop parry stab pierce slash kill thrust hit bash defend fight', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' chop parry stab pierce slash kill thrust hit bash defend fight', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶search_index_entry = {'aliases': 'fight bash kill thrust chop slash hit stab pierce parry defend', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' fight bash kill thrust chop slash hit stab pierce parry defend', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
aliases = ['feel', 'fiddle', 'feel around', 'search', 'l']¶aliases = ['fiddle', 'feel', 'search', 'l', 'feel around']¶
search_index_entry = {'aliases': 'feel fiddle feel around search l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel fiddle feel around search l', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶search_index_entry = {'aliases': 'fiddle feel search l feel around', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' fiddle feel search l feel around', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
directory = '/tmp/tmp6bfo0rqt/014c9383612e80a10a57ddaeee1cd3b99ca58606/evennia'¶directory = '/tmp/tmpssb6e5pk/c5629099249c1bd0b6fabae8631a8627887506ad/evennia'¶
directory = '/tmp/tmp6bfo0rqt/014c9383612e80a10a57ddaeee1cd3b99ca58606/evennia/game_template'¶directory = '/tmp/tmpssb6e5pk/c5629099249c1bd0b6fabae8631a8627887506ad/evennia/game_template'¶
aliases = [':>', ':UU', ':uu', ':s', ':q', ':f', ':x', ':=', ':w', ':A', ':fi', ':j', ':DD', ':dd', ':', ':q!', ':wq', ':echo', ':i', ':h', ':u', ':I', ':<', ':dw', ':y', ':!', ':r', ':S', ':::', '::', ':fd', ':p']¶aliases = [':i', ':u', ':::', ':q!', ':y', ':q', ':dw', ':p', ':j', ':>', ':I', ':h', ':dd', ':s', ':S', ':', ':wq', ':A', ':DD', '::', ':x', ':uu', ':fd', ':!', ':w', ':<', ':=', ':fi', ':echo', ':UU', ':f', ':r']¶
search_index_entry = {'aliases': ':> :UU :uu :s :q :f :x := :w :A :fi :j :DD :dd : :q! :wq :echo :i :h :u :I :< :dw :y :! :r :S ::: :: :fd :p', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :> :UU :uu :s :q :f :x := :w :A :fi :j :DD :dd : :q! :wq :echo :i :h :u :I :< :dw :y :! :r :S ::: :: :fd :p', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':i :u ::: :q! :y :q :dw :p :j :> :I :h :dd :s :S : :wq :A :DD :: :x :uu :fd :! :w :< := :fi :echo :UU :f :r', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :i :u ::: :q! :y :q :dw :p :j :> :I :h :dd :s :S : :wq :A :DD :: :x :uu :fd :! :w :< := :fi :echo :UU :f :r', 'tags': '', 'text': '\n Commands for the editor\n '}¶
exec (str, callable or tuple, optional): This takes the same input as goto above -and runs before it. If given a node name, the node will be executed but will not -be considered the next node. If node/callback returns str or (str, dict), these will -replace the goto step (goto callbacks will not fire), with the string being the -next node name and the optional dict acting as the kwargs-input for the next node. -If an exec callable returns the empty string (only), the current node is re-run.
Bases: evennia.commands.command.Command
Menu options.
+Command to handle all user input targeted at the menu while the menu is active.
search_index_entry = {'aliases': '__nomatch_command', 'category': 'menu', 'key': '__noinput_command', 'no_prefix': ' __nomatch_command', 'tags': '', 'text': '\n Command to handle all user input targeted at the menu while the menu is active.\n\n '}¶
This is a central point for sending return texts to the caller. It -allows for a central point to add custom messaging when creating custom -EvMenu overrides.
-txt (str) – The text to send.
-Notes
-By default this will send to the same session provided to EvMenu -(if session kwarg was provided to EvMenu.__init__). It will -also send it with a type=menu for the benefit of OOB/webclient.
-NOTE: This is deprecated. Use goto directly instead.
-Run a function or node as a callback (with the ‘exec’ option key).
-nodename (callable or str) – A callable to run as -callable(caller, raw_string), or the Name of an existing -node to run as a callable. This may or may not return -a string.
raw_string (str) – The raw default string entered on the -previous node (only used if the node accepts it as an -argument)
kwargs (any) – These are optional kwargs passed into goto
new_goto (str or None) –
-None (no replacement).
-Notes
-Relying on exec callbacks to set the goto location is -very powerful but will easily lead to spaghetti structure and -hard-to-trace paths through the menu logic. So be careful with -relying on this.
-Helper: Get callables and their eventual kwargs.
-nodename (str) – The current node name (used for error reporting).
option_dict (dict) – The seleted option’s dict.
goto (str, callable or None) – The goto directive in the option. -goto_kwargs (dict): Kwargs for goto if the former is callable, otherwise empty. -execute (callable or None): Executable given by the exec directive. -exec_kwargs (dict): Kwargs for execute if it’s callable, otherwise empty.
-goto(nodename_or_callable, raw_string, **kwargs)[source]¶
Run a node by name, optionally dynamically generating that name first.
nodename (str or callable) – Name of node or a callable +
nodename_or_callable (str or callable) – Name of node or a callable to be called as function(caller, raw_string, **kwargs) or -function(caller, **kwargs) to return the actual goto string or -a (“nodename”, kwargs) tuple.
raw_string (str) – The raw default string entered on the previous node (only used if the node accepts it as an argument)
Call ‘exec’ callback and goto (which may also be a callable) in sequence.
-runexec (callable or str) – Callback to run before goto. If -the callback returns a string, this is used to replace -the goto string/callable before being passed into the goto handler.
goto (str) – The target node to go to next (may be replaced -by runexec)..
raw_string (str) – The original user input.
runexec_kwargs (dict, optional) – Optional kwargs for runexec.
goto_kwargs (dict, optional) – Optional kwargs for goto.
This is a central point for sending return texts to the caller. It +allows for a central point to add custom messaging when creating custom +EvMenu overrides.
+txt (str) – The text to send.
+Notes
+By default this will send to the same session provided to EvMenu +(if session kwarg was provided to EvMenu.__init__). It will +also send it with a type=menu for the benefit of OOB/webclient.
+Parses the incoming string from the menu user.
+Parses the incoming string from the menu user. This is the entry-point for all input +into the menu.
raw_string (str) – The incoming, unmodified string @@ -855,7 +775,7 @@ given, the decorated node must itself provide a way to continue from the node!
Notes
-All normal goto or exec callables returned from the decorated nodes +
All normal goto callables returned from the decorated nodes will, if they accept **kwargs, get a new kwarg ‘available_choices’ injected. These are the ordered list of named options (descs) visible on the current node page.
@@ -1009,7 +929,7 @@ single question.aliases = ['__nomatch_command', 'yes', 'abort', 'y', 'a', 'no', 'n']¶
search_index_entry = {'aliases': '__nomatch_command yes abort y a no n', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' __nomatch_command yes abort y a no n', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['abort', 'e', 'p', 'top', 'a', 'n', 'q', 'previous', 't', 'quit', 'end', 'next']¶aliases = ['t', 'top', 'abort', 'end', 'e', 'q', 'p', 'previous', 'a', 'quit', 'next', 'n']¶
search_index_entry = {'aliases': 'abort e p top a n q previous t quit end next', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' abort e p top a n q previous t quit end next', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶search_index_entry = {'aliases': 't top abort end e q p previous a quit next n', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' t top abort end e q p previous a quit next n', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
3s!QE4?1 zr+Qmw9?3X_GAaW85>WFc9#}5cvoDm+g&-G6>xV%BuqvdRTZvC^yS#3pB_QQ{`=9M& z*5vDLzO9=Bm8V_S7_L}YbP53Kt$&N&V311;f*=V6>9zd$@r|+mGk5+J!N)gRXx!Lu ziu|EGq&0utlin2IRw-?XD-cK0=|KDq`NPZ;{a@?;BW>#X-bV>ROc4=_IQX1m&jAyH6*Oa8ay-R0?(6?NOLLs2oPM7_K@8>8CqmJKln zcgp1TCm!yme(2IuVV`hV8Ko~jZ^1s%KCeMuTdo4*m9{+BF^4j8Jqj#dwiX`sIzY=j zOiyB&*^H9v^?@7iXkmtyxPPt7y<>4{z^F-lWX<&r|FAHyGR}IIEjP{;7dwmW6?f)l zgxxU&sWhCj5AG`*hxoM9MgCkHQxA5I(({U*&@zuH^&s3{1#CD;HyfP#MiW2Mo~OA+ zHjagX&IKZ#WfERV9- za z6+tt4B$M7BJPV~7tq&qpD;%_>m!JM4&003vh9gkxtXUi5Z3#=sK%*b#nPe>+m N~?Yy^Q8MU0ntt%{hXVR41C|NYnhLenCD|MhQph0LyqcOW%p z_l&4a44$(JW)AI`g1 Qv281 zab>4xi9_QP(18^`^~D^RHB(@N=6{vZcB(|dY|%$wcze~|mkse$2}=H=QadX!Vuhz# z;75A$`Q}EL!q;-i7K~qo{Cp!V=*xQyRuNcRdv2v6e)DY#C!s+;S_OQpj Szb@fneSpBi)tVfNJ{HbsW$!J=_gOjRod^e9x1Woiz z`S5Y#vSMl3-* 4emK`s*X9;d$h?i%m!=_7R>`ZaZ%Rwronj z-=(Z72vc5>j0S+4yi4{ws7wiW@@diKtH-KXWo5d~yML@GW1~HmzZEVCck!vPuZ}27 z1L05Fr;i!-s|s_6<7QO^|0I7J*!Jt98((8J2NIJeSYf1xP!r*0N0tW_XiYNBR7OX9 zRL*}=S3P@#Nt*O&FPgQWOdY7xqog{F+E~0kRlR;1YxX8 Bb310lU>BKe}A|ilG`*6i4Qk^zzEvT5f49q0A+f zPS)qX{A$>tj?phHoyW?!)4N_D`WL*N$*qP|AAheCk??@y&ZY4vw2z02eGsRgJtX4s zH_|GeZ6NQB kgwtj+X;yQxFAPnBgDYzxyop8tReG0T)lUJJ#>R?f`>FQysG7cbA z?0<&)Cs*7*T*)?0mDXE$XljO5jtYZmTs! wJ`$FDOD??m6EF|zNq>aE zE&cUFGrVB%V*Nu1a8qo+z;I;p=wi3@ Px$Q|dzq)?Nw=6^=LcoC%5kh&0 z&8N6%X{oiCpym+Z9dDrdcZ3QU&&jQz5k)A22^8KE@@3t4C4?Yf3J##E@)nK(qt;*Y z!-R;B5I-#Tgs|w19($4}V3|b`u-nfjpf1#Lv)XSQKJf&4-87%lzxq*2o2RBm8iC zfcx3nBl);ciVFsw#qLq)SHh?~IVS>SMFIhQy}@&O_lveZv+k~}>o1;!F{@*MOEWMB z!0=AFd2x6|jJ#fPs&G}g z3tIIF-Xb(=z!z+C-oZ{&VhF<5d9Z*KtI%>m9Vi<-b@`@lim5p?hWWUok+XCOR0tPv zl*bXL=`%vP;SR~i-hWnLfHpAk&z}N1P>UXlJe=)3f4Vewo<{DFS(}B{x%qfn)-)(~ z_Ix~$F#Jbfb}%w~p#VE{R-t>LFpikYtMSCtSujbLUS`dg{m#9|sD oQ?=;WhR}6guIuN@SMGTzQSAAr1CNTK z3hs)N3a^NT5`TpjM~x<+IZ`O1nj(!SrWtCo2k+TS5s2r76tNu2lfirQ60lj` qE0`Qjf(m@&tdOZ+qs9Evs2Q+hjoVjiGE6;eh5n; zI8dMBm8h7*3A%zd3^ 5$xDyjJ l90ye $l?1 to4Pb^9Ahwi zC1I7P6o1I0tOV9%f=D8AqGz!t|4()zP=w6huX1{;*mybLMrjehCg%j46MWZLm;^9u z5t8*isXM>Vw^>n=307yeE8!^j$pOsotdo+&EuEMu3axQ3NQPd+deWf+cAUwYMHHiv zHW8J1z#4L F%*8>$cuK9=s9K z$qWEz=#pGX7q1feAf^%Ys%T8Sqw;XTIV}(QK(MLT`_(j7MfO7Z@Um{RFPa7LBa+(% zb$^L|y*Y8kNLmeY0=#hdr33?K-2W6pwOdkdOFw4!I`6)vFMH8VHZXZTy>BBV9)F zSNtU+I8nDTZfFfOkXNQ+se3_r&B{QAZ& M7n)}xJkerMkfwbb%?3pQw{eXMDtBN7igx>zJN^`)5gr bOR10ihmWSof7us}_u|EXMoL}tA3mCpdFX({xt;qCN_^Aq@15mQhT@Nrh))L| zKgXwl+ZEQ~6|qpFh+*e|D`L>8F@J{S!+^@24@H;4GZ>r3^tg&Mth7Og10v>`D4t%X zNUJI)?ikZ52KIt9Pd7z}@2GErt_v9zu|XY^I5B0*tW$Ui8?%d%HH^R4Q|NVo8!>$U z#J++Q2rB3%VrOyxInT=O5ljp?OL`xS3ORj)MF|%q-S)$;`^>ilI-pPm!++UA5@|@} zOrMJi%kgElOV5fHW VdD36oF0gZ&z5or(h_pKjl#|C;mwi3pVt!1tla zLw8!XhR4jqBHGJG=S<)v#DB&-nu+`rN*vMt*~nv-{mn|i?s3?`T$>Im0$lR8p2amQ z5V&|^W0&Hh0k+5d>d-xU1^`+}u{cR(p7(%>K(VaCYY6G>zN?!eE1Aw&S#S1vIQv*u zY*f(~TJeLbW||E7knoNk-6G&y!(`Z5ILaCwmMcz;LzzzaJqB?Q1b z(tYk@O1l<`P^Km0 zDqjBCWo&`~l@9hGj%$Dhadb1t=Y`N4YB+3kL^n-poaB04{ eSz;2xBdy}V?g|E?k$*D;N}lrs0!@k~lmJ#_ zi$-Z7!J0kXcTii1BO@6?12+>XOy3H#LI^PyVJ1hBj~y0{p@*fvdO3Ui+HSu-FlMiz z+Tge-h@dxqCh$2)$KyLeUBja~LF!qavj*Q0Yw}Ijtm#4G)gFzIMJOnG4+q*w^7-WY z!^MYp$@TfWlYi?o_;quB`sw=O_Rk@j_NR8ScY&Ml?F1E#Fv|Jg-gSafGbl7xCPEQB zM$al$+|<;d&IpJr1+^61y|dL`HCke5yJo+Fc|Nx4PxUIh- sPp*Rl`BVA~uYGb9Mo;Pq>lbjCUVZssie4eO za gZl77NIdi>E~gB-jc;X2pusDdfrDyIHOiD3>WK$Xs>%yRe4Sb6)r95^ zrQp91hJT{X?x{A3cBchf33auaP&1uqXTmdq)}NH!tgga*O zR$R8B=V|-yNbHeJX`nrL=fYd&Z@;4w)PU20EPpYYo}{1-Ku5adcYq3;e8PAGgf@A| z2qS*eMCFOtG9EFvc@B@fK$`-Oy2O(Y0dDdfUWkEq2);v95atueegSl)bS`RwGFB*Q zk^yJ3G=4;%00rs#D_Ch`ZA08dT)jWr1HeKqj;iQ8P=#YARs;E4kqDtvDLmNL5wbzxOCv&p4Dg)fN?nWqo4jVP)n5yR`=Xy|csOAAhKfi!Yv`INE7 z6(0S@2+Ec}S}zOEpM*0em2e*Gb(t0J!;=s|o{55ccnOJEdQ%Lp97DouKSBMxBr?iI zk_Yz}Dr@+*`en95V~d_=V)|f|f|qbqfqxuan97Y`Hh#^$G0;dfNq+M;`B>$lgxzyJ zkq{&W;q7xBNZ3webKPpzd7=t~&J{6o&^h7ojaop$DOJgc;u3OXYDne2Rtd(D0&Z3I z!FUme?~t2|ieO|W>5NgCq;YPgsxh}Xhx9g-i3t&MmvX3r^KqEVqG>!k#1w?TV}H#@ z{p4nYi_Nm0AS$~gmzaxe`^bc`4FtWh1G{Z-@4(lv_u=#dLyCtJU7Zwf2c(Xe4QP!J zQ&fq`%b^Z28M^-p#&fo9db(Y=o)lJtQX;?4H`(ftkhA^9(LgjddL!QHF~qkgQE61S z4ZU?`Qo@WAm?U7FGUX46cp3veD1RmVHAAhpXyP)FUOpCOXGh+|1f!Y0$Qu-};P7o7 zd6yGigVcIrqdvTh6L=8OsM8qaL^#QVi6Pp6*{{0F{Bt#v7K(8HGl-QeYdo; qApidB&z=tQk-1`+ovrK0#$S z-Z}Xu>%af{w?AWme@<>8MDmeBgs7~%>!YU3lmxayDNh8csoO^C*W_6_hjI#zqS-Zb z4Oc6o$u?;d(PWRgOM1^No|OyIpAaVOw_#y$eRSclLScuUer6u=g`>*8eA%aMQNqKu z+hS6pj4}TH>;L@$9Fv>g@qh2X{y!lKHP{nT+p^L6vpA*9IFtK1Tv(+=eec?mNu8lQ zyqko30H&oR1O0(tB%Q!4Mfr~qK0J_1ue4;lT~lYPDFwrXf@gT?r5E8AqEN{6*QA2; z*3g*dseaDODV388(w{NY)&8%46@9L4T*kxDfJ_M7Smu->aIjee6@T4t&_IEYXs0!f zhz43=+tJUknYzX|kc>#ckg}ywISbYG)lILvEw4o&KKic9oLlNh?(uXWA;9T&KH0PL zMCOsk9JM5BBlJFoHlSSp;3*C&QJGbnJxgb7I-ehl7HmS+_YeDaMdU#RMb{t{^F0rT z4K)v!DB-LNK57J-K7Vg uyH-; zfF!C9)k#}DR^gP2V0aWmn$#hYyHUL<>*w?w?(jG>MTFvc!afuDbl}D2h{h0?Au46a z*35v*ZRAozZ-3z<7pWD@(2F@z?lvpYBHoAH%9$5RIKCUi9O$Xy4_Bx5s; W zW?nF0?S!srwOa)?bt8H+NN6%NS>buTf`ahG#osm 6J5dg=V2+ft(c5 zOd%dek%B1*dgG@nV8@BjY~NJ(S=W_r+b4Z6armUE5;`*@r1{bW+*~oAmsT+Fph#2k z(>UZP7eEApFEwet+CV-kC)|9}Ry5Ya4JZ*g)Egp7I|d zeBy+PyzKidBOJ$W0h*o?j|GcD$e7-w4GO0u{WJW2Z5!l|iDSkI2I`pc!iZZ>Jv3Di zV1Ub{h7C#22sBCzw#3HDeX5GD>S=6S`B%bG;RlDbEWY6DT3q~K8jq`zap^wfj7jtX z>wjKoD~{*TnTS{gY%sxz@flBkR(b25p!C5gu~jk4dbT3czkAI `ff$$l3f&2Xb@n@r5NsT `o4PFn>l+l6GA<~8LPQd#$cqco@a)GL1c<-ZY6yEh%*u19- zbiVbEF*IG?H2Yl_-(n6$FZAy~T7SrfiL@kop?^DR;l5FPL#;@`C8g5eK!Zed#CjoM z`4AMD7Pn?&S-2F?(B7_>r)#pR#rM0X#cL!FR&H;lV?b={Do>xYLwqsS1wYbPK*vt6 zIK)wL5qkH*1OJpaPeuM5g)d}2@*hryX?=_$brsfoG;D~LH}M&x$z3ZSPJgy8FLP+Z zr!bCWZ>2->-p|bX+`q1BI9eRT*-OE3&;P`qPM-ZP#WNuAqH}y4_q(C+r(KH2Mb4y? zlOC4v zCMt}Fk-sgUW_xajCyI3>&BOha2$xX$=eF(Y#ycvuD$vXKDoD3LCGNAvyE$%CfXhm9 z`VJ=UR*$S#SmkY7PgX#~P!v(!Llvsm2QXC<&^=rA(I9$tROe7__J0o#Q?)?Ro*h1e zS&I^;dUv!zHI1DhaPv#mLO~AHMw+g_LsM;2ONoR@1&q{c#1N`kS$B_ %m<@ z>Fcs??zUO;WxtzPNDv|w5WONQa }`$!|bX^c|{N57OX^F!r)}G4nkZ}fjfn2 z&}0wOdlM<$^K+L_dVgH#zuWLf-Y057w@)QVuZ)f!sMESwO;iLWB|CftQsQ&qccnDB z5zS2Ri4%ZSKtT=FBlKBps~!qKuSf3~tViGrz;-=)07Vb`gTEF%_(PU=M`)tG*xKu& zA_r>opgnmRtw}E~wUADM8U(&WXw#q $TC*19hU8 z&hETVq}kL_UP_ai^q7H46lfoeb%MLQwerwev@(Q)Z-@yTsnnPwPPtwGBGXj8IK)sT zat_pHD-54SD}j=d8@_@mcR@y>?8H)Dp%-qUO0YrfF`Wz^3>)+@J!Ys90d{<>3Xp71 zZnouPAr7^*V}E5=0D2W1rgm(4e7!?cE_bW#x}B=ZS78nYFcfW6>_CO!Cj4FCje46x zgWL2{AsstVp`CIkI$9GUELGqRf!uVr?2a}Cj!hMQn~lIs$zx#))s+n&?)!UW@#@Lj zU5Z8$GgOIP$WaZe3PQS9U}rg~VWtngDP>bYk(Vm;ZhxUll=btSe_7M2gS^Pos~`{q zHR$Lz%U#8<`9$l$0pRXSuZ4mdsz<=FYO4w)+q0XGSKEm5{I2cKTu)%nbAIYsRY9VL z>Y*Qhj#s0X@3oL_!Aj6U%)5XSw{}Ie!?ubtDt4ek`@w K@5;9s1 zMP6#ryMF~L5ww+K(?AGIdhQU$JuTX8=%&cSzAUG0ih!it6j5P3j5zq8#E7#AA*sUn z7^AZeB?9uO*+s6xfdKpGfh7~`Vqr4nc^b!L!GJy7)6qJpPoJ>Y3PvhOG5hNTI?=u> zVo68@{} az;F(AE&wym2yeJI(e0W1@uRee0iX-t9vp-cQE0k1@Ok$ryjvS_j^96R+RVj246 z>Owz>qQfHNFMI2)jUlia{!Rbe0xtG{z* t@wegzy05xUDDTjv q&Rl9FnAPR5S#$ LdYW-!1`Q(Y zwQFe57VF%$r8EQ-VQ=WK1+d;XD>lR{;3l(tXEX@jD0zdf3Apy}mYS(MdXFZAiwC{M zKNd8nL8%d--HenDyKl<2$sh72uYXqbrVgBz-j&%ZER{e$wE=u$p0BT^CqB5P zlhgoa-S~^lK`Mx_pXsj#C~m&*tD-xgaxJ6I @2yC-2@QM=4`3F3k z^@YD^=~!n_D174Yq(4rk$R8fW)YlrMI*)9|P3aOihZ2JbvlvX^DKXEilO#babHw`c z*?>?N_?cXYO?~04C#j!dXn!h;0NE+s 6IpS#!yfx9FY-_kZAOq%fybmTVMfTC4&8oBehR z?{ur4d@ZCUFI~GKh!)ZTXnsaygeHTXiibf)I3jgM?SKJH4STA7jelU_Kq?z4m`@~+ zk%z(Y^ ~58wd(3RbJOa66JW9Ppj3pEB0F!gEaZ_>k#{JreAU2Tve) zLcx>ouvG#F5kBGJzaQ$pDeHSS>W9Ks=3r8jTQTyfX_tG4K8f^6gwK!~S2kESJ`@`d znHusk!?zaU_Yknnvwvpw7@W_e;5X=C&*%1$O}bY5&I>HV-H2a9DC aW}VQGJYX^z40=7Hk;E=0io7w)HlD ze$0o1eJht${FJrL7YVq-L$=cW4^}<;*O~{>4N$@;8 6eQ2e5_XE$1_}p zX5HYrW?j$$E< s^iI+6+XWldYL67Oj<<%=}i!iHzbSH##< zwW-1rA_DV*B7cd2`IFuMoUj;QB-u9Mp&>FD+82%OLB0vz?H?X+kTay+x9~D^WLzSE zd4#qH`2aac;M`ysCnmw_l09>tAF~eZU#3;gx*|q_y0E`+v5-cOMq}~z=tLlXW S?C2z{vjr;gK!VYUlK29m!t5SUR{dFg@> zLHOUHINc-i0PsNamkweY_75O<5HXzB#hctM+t7eZlUn~Jt2VVuj)$N>nk=4qcZpH} z{9hB?6o1ZA1K#Z4P~>rc?~#HK^hcLf3${&Kgb~gf!nW9qjk)RoA_)Jhi^I`YHvYlY zo$Y8&I{+F5R$Xwktby0}e;FOs(h+$G`lHG2ik(XkyxBipgshr46H|r}KXiosZkIb1 z<{{{hCd+4(wL3GFQ2kF0r(HG0&Z&b4fq!&ao_`ZAVG)G>YT{kCafyOA`=^T(t1s@h zg@>R&y6kh&!n^k_VIGA4)y2i=-3cHA$zK}CQ_*z$tjwz?7m5<9|M?F;*Uw$uzCKBB ziVjz_(~o_D=e?9IjCe4duXMHCSJVWnSid@u;>+-CQ2B#=7&HY-u5gOyF&pkQJM{>L z6n{1ddAQ_ )w=^8^D%>HniNc}NS)rtT_EeGB4H`yZwDp!})q`P|A^t8(9t zr^7xCd$H60x04Dd7Tfv>3{0hLpj4#|o0N@~%iY9wkTX8j08chTO~5nZo=&~w@~tSe zsi~cJt7XNQR3kW=ET?RE-sa`Q1cgQrTz?-Z*{4_q$X%+lUb9F%7heh}YG}g#Ilq@9 z$3Y`t4a}Dq*J~DW@Q3n<2JgAQpN_xA>r!Tv5^i-|a5HEsQoG8ZQ`l6Ss^SQTzZwiV z#@v!m*YDeCr7%cAEuZ-b;dlj&n2NHPngunY!aq!Lnt 558gsHh{>izC$^~Nagz$IQC7L~5Z%HpqTk(s2D8R Mdo?QY#8(G(uUgm7t!P !m;i_>d}cp|6X@HtV(?S7rE%3}0T)>I7@yp!be z(^*0v)3mEnIP6_Fv#2J)PAWV!UN@7Jx))yJdet1tjX~!rgRB-p4W!LdIP#0fHlRYz zseJ$otLae7X^R!k8sjN7sPx@2@k6s}t=y%XBQitCTl|*0dv-OiSbux EEAURLO1hhC!8I3A#)TMvi7ppHgcsr`4GvM*3 zt?&@4Y#^WtiMxJud}J2gmBuf_8Cc3P@#v(tMaoFUo4$ x>|B{Ea2oa&HL+pwOI8Tu)L?wgg$4B3-8ik{S N)WZ^&`B*fn|k$hy8#xoovuvu-B4 z?p<+SH*X^k%YVpt4+x*Az>|)fdi_|}i^bBxc*DK$ag5|GoUwdIUbDrQuHeWMB(UZq zEgH}v*@dF*CthFxCVJ77PqvR4I1aG5nHbSc)9n6e4fSyc9e+KxIWZ}2Adyiy;V$z= zhQ>9^#zk<*sL;r1=9qMk)(wxjBEl(-E?sAM`ZoP#pMN)EXJl&e*P+A$5x;Ro*Nf-^ z1O@CbYjKHVm8aPSzY!++(ln(L#{EWs8rkXjV~DPa-bVi7DN|K-=h$aIGU5vQN&kBe z#lfgqnSWg{*M GJnq|KC~S1Lu)w?hiMj!PKa +P1YQYkE6{7 zN*%PMs2_0dByMk(6nefmh+S3w>TdnOe(uV;5r0!TPIzRdIU^gye^SX;fLW5rFqk-t zB#L+>6I234#HHGoNDv?Qi NUJ<_U9o7BqWeR9Y~GR8zIp2D5NupO z@uW7KiiV)cSYWGlvYbFE_T5Qa&ZV?k(js{Um%}a_A_55ZUP$r zyZ~E3q`!ZjQ(dr4v7pK+;gjC*dsgM)4C|806Fw=A=Vj+n-fB)`Chb*x<@Ze5Kj-(0 zXbrgR-&|VGu*_}I6Or-%3A(<|$-r8AJ17KGyCoB#cKuPz;f^_RU?ibKf_e8?<4r)? zo_RXDOj{#lVLM6474Aw&*BPTI%myqNub$#W{+xd=2J@|L*rPDp3WqfkVqul M*Oaxc*wyPZ 8y3QDDYc z1}lFc??J;XfEVifL&5{nO?xzEFn8MU&Un7Fh~C67FuuURU|X+?hXX$lx$v;S#C0j$ zmKYMi +gNir3<&mF3yi^I*WcvRwi?|#^TlvKLpQ)U{J}V`G@7Q*Gnv}3h^yh zHVlMXEe%f0nDO&X-0ab{Sx}rU68qhnpBsNDOC=fM@_Ys>=DWqB=4bxILnLr*ug^ia zxSzqY{e*LRmtcsL6`ENtSq#BwqQyeD^nyE$3yW&E?~d10JB=%@cXjn_hgpr0@i5AR zx+1P!4d+{@Ha3nZ^Y^l(3SvaYPuDLQcOSK4Rzgh%F*r<4G1xq*q1(~j@shSg jEtV^UZ(LHbyiYqEYbevV B#+rsew2TDc;Y{A+vAtkhPq1F_w@H@HCY=7mgk=7OiT(< zpIc=U#Ue@0ZJIscy9fF4=W9nX857)+wX_Gc-Jef7TT6zFQ(*|oY`uIwR4VdRi_l6k z^b6dWvSxR9MoL_5E^Bxdef;Fk%u&;sPU(YQ>X|!6bFH6yBQ(<@x-&ZB49S0EUY7MN z*FikdG7*Y{DnEl8ZKll}&4<+ZV&dG9>uKb#xg%0k^eQPlMA<^$+vYeiSvX==+PCDB zkPoyi;KTmT9r3!^W(&6=oZ}V!{qFmjqd;#U(hz-}(^VmQZgk6nmHEPj(@%dPLeP`M zXcV4aJmn$gP7wGeGyk9#e+_@YZi9dJ6!G)Fc#m1^#0v*YMx2xIzcWXH?=`@4CfFUP zn m7OREJx1E-6aexmF36j76`d`BH@4x #>C?36K -21b#8jvg@J`TM zWaNZ9SU2*f{R|d7hG5j?N>^? -{(A; z@--BWMPgtj!!t9mm~fvb!UIZUd>rME&vLte>JVIqq5=5rV=f;fm}=c|fD3kYvMrqV zJGR&u6z-wl@gH;Qo3gw;dJgB(niB}!6a1Vb26eT{@p*%+$ Ifwq` z?lFVahdhh2`y8si27dxy$u)h=p!|K_N$_3X>~ep2Svm#R`D3DTr311z@E?!X>nq`h z&U3`FH?TW*oCLD42t0$flkN)!>Z@RfUj7Tyxn7G~;a$#VKkIy3FQC1N<+NUlo9DO8 zF#*R}VpPG)oBI;(^b33IOGL>;bE>!|!u20#h?Q6@O^YtyE>OM%KEZRt#L4Rfzvs}u zN_T(!lRucXKpei*$TDwU?eX1`=5~&!{cF-Xn)F%jAHAOJ)PuCzFGv%{)2M)b$dT zf?%)V{~45Q5A8B_R{-D8-x*ZJyHD0 Nc%gwg9>^t9?w0~p0aSm8q~3Qx7s?JOiuBD3%tj3Z zSDZE&RIvN88xAXJ;l;jds)ww^=@kq+d(>ognm5`0%$|A>xg3sAX`vF~qTk_T%yRZj z%6@m|c-`mwJ)@Z;%NSbsNLgM22 Kj*_EpUOg=KvyT(jBbC!GFDQ8a_qVnu)T#E;wH+rB(!Lql`+T+AUiWu{<$ z05;so0-2nRgSHXJj#9X46tE$4Qxwf$#T;V88tW1JEI9~`zC(Vz@AwAM6ui$HbTmEy z3H n|G!lQHyrF_?gxc)8Gh`Oj5O^sb-lu_gX;g %DKV_
#L? zs}J&$b=2bY1lJgg%g;_{>(ozpQX0q Ct3r+mdBicJFIt|b95g~uP?CS35eF4_ zyq&&0PhP>02{h%AJM`yHX$Q4QUMio~I7ZnLqk`8Yq|dx`XMDzoZzgQBv^{^Ll}_7> zH0BwM{{Soo9eSV~7G9aLjSxow93e2j9fG}}9QZpv*Tpwa3gpf64Sf?|)-%U?VhU%g z#E-3gQs!Imy8|a*C`0LTPb+_WBUz^_J9iQDW%JWG$1}()1N#5`$Nv#3|NO`Qg&Kf8 zKt=ZRyYoa+ydvYc%`sybyt&4{_z#~YfKC!TZsNVui9ze+;VdC4Sryz=eT!W;-YF2> zJM|0BdT6Y+C@NOz7dgxhiqS49i{EYdnBr&@o@LWi_2(#_=j9I>BQ1YmKa}@)#BT6O zYXnV1qX{`^Cp)&-1OXF~FoBm0w`a-Jr(CQ@7mHFd99r%^Lw1-fLm(jyOE_N~4>LWG zws{2d10VMjZxJ3;A|^&sK52rVz4igPBH?|uLxF=BzJ<*gS;w;N?6YLsa(#V(s|kj2 zWITvP%;=;zpYz)Y;39v7 PPRkDe7hTOs96?PRC zzBa2_IT|iK16M_jij`&C;e83L(_KEq>28PZ{>QZFKSQ=`Lz92y2ObpxK#(&6NOo3O zR*0qy*4zlh!~iG~KoJ6Mo)IV3KIij9>Mb#>0S+Ur;|UmX{aBwl);>($vc~^HHsZ3% znH tr~wE5=ryVv#Jl5Uzs_GHG3fS6)wHvcOk%0u^
0lV|op !j_W9Pe+F6Y2R(Vql zUx9I;Ldu;hO5@O61BZ-5Ny^GY)xgbDaA7CTc8EP2@Zi2bv5o;MoYM9)% pmbxl4sTKqRgpkhaf@O*Y#&Be{0xjok@8fXmk%iNI%28RWZGUAsMY z8ezF0KhJ-$?RUE@+v8ZsA t`=y}#7DI6 z&YCNAR;C56e`eM8K09P7USi71H;$&l3|0JVpR*QqleKmFRPup*R#n$c-kyE&`nFsr z`7)qEn}VZ#7rmEo5yE{J{RQwMf%jc>4bu&*N5+2v&yzL7kSrfp>6#1&2OszcnJ=kT zhGF4YzU&i=Lk_d_@V#ff_@-i?7C34w=eH|oWp;wVwN;^RqhJzplJWd2;Qk*whnYW& zWAi~KFb|`m57-Qm%Z M^^n5MJjL7z|geHNRg=E@CrF-ZsQujn6=un&rvMS?*wLl zE;1j?M1z^h#Nl@^^djsGHzA=NWf)A<-*~CsU?&1Q+vjmUy^mKNx@*!yr(CCg_HU#Q zm0#ffQu+bv5FrRFx4XCJ2^yB1Dcy$>u55pR6Y}n}yot+{FOA04^25{m{<+O}3@xqe zjA@^L{nqAmG5A=dr#XOt(1JzPs7(3tZCu4aJe7da2)HJLe!*>gFRS= z&$uEwj#@wu*nB z@G<)y =RUT6T8$?~Pp>dIDHa zV)O0HWmRi&=t5xa${&7r4p&)g2koA!E`Q{!F%H1%fGP|U1(er3MVn7o|sg`t0Z4(%|*NdnKT+d|#-;(&w?9 xJ +xwcJYDNf!Os&p<)8BMEbo-Yz#D${2tL~8 z&04N$*w%?9{^p+;|MSNw#Jx@)ca!YPyu+(5xBp~Jpg*!7(KY`O#`&0)tD6)IgSRKf z`tZkLwQn#jY){m6@jMo%4MKk@xh|kD;P*KGv5K~K)$@kjwfLI{KdhJUCLhwLcTj~X zx4h$PN Kgw#o&( z>8XTE$#?fvg||{*cd)BiFKA0=?1u1ash?SD!d?ZQ%ohlE73+Mh@=$-+6dV7rk6ZdJ zWOMpvG9ew}3B2Q6Iv1>w{K2uod3$$zpYgUm|hZnqKc)`^2huJQo)ag@M_=w5j@X zzqxy6OWeaNk 2g2j5y5KOhv4gLE z?eqGSiPL;TvtU5sneY>wGK1|s`FsU2ekSQ2$6lN4R6VY32~Ek)v0t#?IG+20KUm3p zHqw{LG=30Iv#l#GW3vIpLHj43zS`Bk>~7nl>e{W{f~`j!_=RF+CEs~?_%Tau`j~CZ z-)3l@2mDwjOk02J-lsa{cLATj;5lr)lF8FzcfU!o%RY5Y3Jw2#zIDNyLcfAvk@&Te zG;4ssFn{yxd%7Qi^$hz*) WmSV87jv6eiWm-Lo z$!s_eb(22joV3ouTYM;wM-A;jPCVIW9DPQ9^)UK`;)Z{t=rf)h4xOKc+>#XU#t> zYqx!y9ye|pNds7}V{YJu#_BeHV1IP`_i};$*Wp35#Y-xVK7}S^+MKG5zpM-NU+@98 zQ1O93d)&FWrnL_MyrKUyqsHgl)I}p-fWVhw#Q30Eso6UX+cH 058Hys6vc&X;?MC#mM7?o(g+8{=JUsF!r3X zZz&wH(B1Mi D-26N+xH{2f&hczrHt#Vn82+6~M@EA|et$|KQ%|_1i zE}YV1zT46P4)_-ST}2FbFl1%FZFEP_pR=dv75sm-iX`8pEec}yTyOi{YS7>DgDd&b zBlu_)f6-3EQnqE+a^i;Bh-evNQC`{MRGqrd_*usyOk27#gNB9Hcp@_Yy^3~^v#x2^ zHThlN@#FH~pvw*En@oJf8QqKFIqXDX&sVv_+j5&0Bnin|h3g6lP6OY;n)3S%rVb`F z=g@!u2@}iT!%Fr0uz3S~?s> ns^D{ zH@K_(DT`q!iQiDRF>RBXvxR@noqr^cR^R!jvw|1Bt?N8+2wu4H_*MQOl*@2>?5`uW z@F*(eCa9~3ei%+e3XK^eOuJizgOAKeN=tv)_oya2y&3FUvc2qO1qTigc;Gk~o^71( z;H((jjUGsf51F&)`7Q=H*jv4R5@Tem1^ xwy8%}YFPu0FJvhDb5 z(cj`jIKL8p@rP?XsCEys(ORe7ZiAT%)dL;+TmBG>k$kwygC;FtU0Akz*pj(|`WAnG zMEGL`)2gnk7S0Js#rS-~K8Tw!)}p`T4 VRT5MXf7svzWpZJ57tRV}rj@p#*fck;|z-n* 4bYPor+l=<=@7sjpHs6LB#ns=32}S-IKW{TAFk?Ey z=Bdx5!GJ#)hCTn_IqvSjQO1AW|B#4z7u-qrl!=SF_p5k@4Zc%I`whMmXyT~&AL4%8 zZ1^O$w0Yg8LgH?7@qGZs(sZS`3Ew_jbrt^j$53Cxi{Wp{BcdwrB*Z^7V2{sJ}{ z$ZJjDz(JNA)y^KC4OecJFcPN)*+t!A