From 5ebb5f7f8228bcc05da674e8f3e77ad5ee0398fc Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action See the sword example for an example
of how to design a recipe tree for crafting a sword from base elements. Import the
Intallation and Usage¶
+Installation and Usage¶
CmdCraft command from evennia/contrib/crafting/crafting.py and
add it to your Character cmdset. Reload and the craft command will be
available to you:
Configure stylings for in-game display elements like table borders, help -entriest etc. Use without arguments to see all available options.
+entries etc. Use without arguments to see all available options.key = 'style'¶search_index_entry = {'aliases': '', 'category': 'general', 'key': 'style', 'no_prefix': ' ', 'tags': '', 'text': '\n In-game style options\n\n Usage:\n style\n style <option> = <value>\n\n Configure stylings for in-game display elements like table borders, help\n entriest etc. Use without arguments to see all available options.\n\n '}¶search_index_entry = {'aliases': '', 'category': 'general', 'key': 'style', 'no_prefix': ' ', 'tags': '', 'text': '\n In-game style options\n\n Usage:\n style\n style <option> = <value>\n\n Configure stylings for in-game display elements like table borders, help\n entries etc. Use without arguments to see all available options.\n\n '}¶
aliases = ['batchcmd', 'batchcommand']¶aliases = ['batchcommand', 'batchcmd']¶
search_index_entry = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcmd batchcommand', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶search_index_entry = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcommand batchcmd', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶
aliases = ['@swap', '@update', '@typeclasses', '@type', '@parent']¶aliases = ['@type', '@update', '@typeclasses', '@swap', '@parent']¶
search_index_entry = {'aliases': '@swap @update @typeclasses @type @parent', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass swap update typeclasses type parent', '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': '@type @update @typeclasses @swap @parent', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass type update typeclasses swap parent', '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 "}¶
aliases = ['@locate', '@search']¶aliases = ['@search', '@locate']¶
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': '@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 '}¶
aliases = ['@channels', '@chan']¶aliases = ['@chan', '@channels']¶
search_index_entry = {'aliases': '@channels @chan', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel channels chan', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
aliases = ['@channels', '@chan']¶aliases = ['@chan', '@channels']¶
search_index_entry = {'aliases': '@channels @chan', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel channels chan', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
aliases = ['"', "'"]¶aliases = ["'", '"']¶
search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
aliases = ['emote', ':']¶aliases = [':', 'emote']¶
search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶
aliases = ['@delays', '@task']¶aliases = ['@task', '@delays']¶
search_index_entry = {'aliases': '@delays @task', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks delays task', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶search_index_entry = {'aliases': '@task @delays', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks task delays', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶
Test the batch processor.
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpn25if95g/5402bb1610b784cb91e0f2db0b878164f58bbce7/evennia/contrib/tutorials/red_button/red_button.py'>¶
aliases = ['con', 'co', 'conn']¶aliases = ['con', 'conn', 'co']¶
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': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', '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 '}¶
aliases = ['cr', 'cre']¶aliases = ['cre', 'cr']¶
search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
aliases = ['look', 'l']¶aliases = ['l', 'look']¶
search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['con', 'co', 'conn']¶aliases = ['con', 'conn', 'co']¶
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': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', '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 '}¶
aliases = ['cr', 'cre']¶aliases = ['cre', 'cr']¶
search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}¶search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}¶
aliases = ['look', 'l']¶aliases = ['l', 'look']¶
search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['@callback', '@calls', '@callbacks']¶aliases = ['@callback', '@callbacks', '@calls']¶
search_index_entry = {'aliases': '@callback @calls @callbacks', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback calls callbacks', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶search_index_entry = {'aliases': '@callback @callbacks @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback callbacks calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
aliases = ['aliaschan', 'chanalias']¶aliases = ['chanalias', 'aliaschan']¶
search_index_entry = {'aliases': 'aliaschan chanalias', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' aliaschan chanalias', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}¶search_index_entry = {'aliases': 'chanalias aliaschan', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' chanalias aliaschan', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}¶
aliases = ['delaliaschan', 'delchanalias']¶aliases = ['delchanalias', 'delaliaschan']¶
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 "}¶
aliases = ['q', 'chicken out', 'quit', 'abort']¶aliases = ['quit', 'chicken out', 'q', 'abort']¶
search_index_entry = {'aliases': 'q chicken out quit abort', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' q chicken out quit abort', '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': 'quit chicken out q abort', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' quit chicken out q abort', '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 '}¶
aliases = [';', 'whisper', 'shout']¶aliases = ['whisper', 'shout', ';']¶
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': '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 '}¶
aliases = ['pose', ':']¶aliases = [':', 'pose']¶
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 '}¶
aliases = ['e', 'ex', 'unfocus', 'examine']¶aliases = ['ex', 'examine', 'e', 'unfocus']¶
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': 'ex examine e unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex examine e unfocus', '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 '}¶
aliases = ['inventory', 'inv', 'i', 'give']¶aliases = ['give', 'inventory', 'inv', 'i']¶
search_index_entry = {'aliases': 'inventory inv i give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory inv i give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶search_index_entry = {'aliases': 'give inventory inv i', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' give inventory inv i', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
aliases = ['@dig', '@open']¶aliases = ['@open', '@dig']¶
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': '@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 '}¶
aliases = ['deal', 'offers']¶aliases = ['offers', 'deal']¶
search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
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 '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
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 '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
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 '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
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 '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
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 '}¶
aliases = ['"', "'"]¶aliases = ["'", '"']¶
search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
aliases = ['smash lid', 'break lid', 'smash']¶
search_index_entry = {'aliases': 'smash lid break lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash lid break lid smash', '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 = ['get', 'l', 'listen', 'feel', 'examine', 'ex']¶
search_index_entry = {'aliases': 'get l listen feel examine ex', 'category': 'general', 'key': 'look', 'no_prefix': ' get l listen feel examine ex', '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 "}¶
aliases = ['shiftroot', 'pull', 'push', 'move']¶aliases = ['move', 'shiftroot', 'pull', 'push']¶
search_index_entry = {'aliases': 'shiftroot pull push move', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' shiftroot pull push 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': 'move shiftroot pull push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move shiftroot pull push', '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 = ['push button', 'button', 'press button']¶aliases = ['press button', 'button', 'push button']¶
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 '}¶search_index_entry = {'aliases': 'press button button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button button push button', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['pierce', 'bash', 'parry', 'defend', 'kill', 'hit', 'slash', 'stab', 'thrust', 'chop', 'fight']¶aliases = ['hit', 'parry', 'stab', 'fight', 'chop', 'defend', 'thrust', 'slash', 'kill', 'bash', 'pierce']¶
search_index_entry = {'aliases': 'pierce bash parry defend kill hit slash stab thrust chop fight', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' pierce bash parry defend kill hit slash stab thrust chop 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': 'hit parry stab fight chop defend thrust slash kill bash pierce', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' hit parry stab fight chop defend thrust slash kill bash pierce', '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 = ['l', 'search', 'feel', 'feel around', 'fiddle']¶aliases = ['l', 'feel', 'fiddle', 'feel around', 'search']¶
search_index_entry = {'aliases': 'l search feel feel around fiddle', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l search feel feel around fiddle', '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': 'l feel fiddle feel around search', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l feel fiddle feel around search', '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/tmp535mhsns/44f0b33383d3fb11d6fc71180d6012c08f88ce81/evennia'¶directory = '/tmp/tmpn25if95g/5402bb1610b784cb91e0f2db0b878164f58bbce7/evennia'¶
directory = '/tmp/tmp535mhsns/44f0b33383d3fb11d6fc71180d6012c08f88ce81/evennia/game_template'¶directory = '/tmp/tmpn25if95g/5402bb1610b784cb91e0f2db0b878164f58bbce7/evennia/game_template'¶
aliases = [':=', ':dw', ':::', ':w', ':UU', ':y', ':h', ':>', ':<', ':echo', ':s', ':x', ':f', ':u', ':!', ':wq', ':DD', ':', ':q!', ':dd', ':p', ':i', ':q', ':uu', ':S', ':fi', ':I', ':A', ':fd', '::', ':r', ':j']¶aliases = [':p', ':UU', ':x', ':r', ':!', ':>', ':w', ':::', ':h', ':', ':A', ':q!', ':s', ':DD', ':wq', ':j', ':I', ':S', ':dd', '::', ':dw', ':f', ':uu', ':=', ':<', ':y', ':q', ':fd', ':u', ':fi', ':echo', ':i']¶
search_index_entry = {'aliases': ':= :dw ::: :w :UU :y :h :> :< :echo :s :x :f :u :! :wq :DD : :q! :dd :p :i :q :uu :S :fi :I :A :fd :: :r :j', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' := :dw ::: :w :UU :y :h :> :< :echo :s :x :f :u :! :wq :DD : :q! :dd :p :i :q :uu :S :fi :I :A :fd :: :r :j', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':p :UU :x :r :! :> :w ::: :h : :A :q! :s :DD :wq :j :I :S :dd :: :dw :f :uu := :< :y :q :fd :u :fi :echo :i', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :p :UU :x :r :! :> :w ::: :h : :A :q! :s :DD :wq :j :I :S :dd :: :dw :f :uu := :< :y :q :fd :u :fi :echo :i', 'tags': '', 'text': '\n Commands for the editor\n '}¶
aliases = ['no', 'yes', 'n', '__nomatch_command', 'y', 'abort', 'a']¶
search_index_entry = {'aliases': 'no yes n __nomatch_command y abort a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' no yes n __nomatch_command y abort a', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['a', 'quit', 'n', 'previous', 'p', 'q', 't', 'end', 'e', 'next', 'top', 'abort']¶aliases = ['p', 'q', 'end', 'next', 'quit', 't', 'e', 'previous', 'top', 'n', 'abort', 'a']¶
search_index_entry = {'aliases': 'a quit n previous p q t end e next top abort', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a quit n previous p q t end e next top abort', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶search_index_entry = {'aliases': 'p q end next quit t e previous top n abort a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' p q end next quit t e previous top n abort a', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
XTaq=Kr{H{^1iwWGdp@^MbjZHxJ1?*dcPoC4p{$R=Pr%fWcgh>? zBS2WxET-2KCvZc!PvVz^x~$Uc0>^KyscBKXb(1JGL-yRmgoRB`#~U+?eq(=ZRp3ni zw4qD;45SOi*F=OJhg;J5I3n>4ZQTTywp?{tibb4kGwqrkEJoq;!5P^ zbSSf}*|Q4F>7Q)0xUwoTEsRhTf!$2;;o|6CYPL=)%I>}(o8SWPLI4fmJw{wu6}5o* zDGJegnfF5#pER+9zuv~GK1Mix*Mg)Eb!Csw2ws(VEr0&OO0dbQw4i_U)wY9o*xPzX zUY>}(gpAp2;^$eFTqfWS&$&x?yB SRpp@>tG!~hq Ls&>!%mextn+sfr;7p!46zwcM z6)|xUGJuaZ&JZ6Qg2i+I2FcI(KaDUxXw91aU+R~xZhv@9=%}Sq9(ta-81G`v5NDmO z@Rt_#=4ir>H;8}n7u-YDQ)jMrW6(1>oP*E#nm*Fe%@Z54PBw9m&~*fRmY@S0{ZfZN z%vX5V=jo;_CbpQ5P*#CFORhe>N!Z7H9bpkag{@b3+mQAk`ErH80DXp=2DrCNJ0R$T z-dxPp{XzJOV_yp?KE++Ew&8Wi7Oa(Hi@T7*W7IqR2BUxH*jC$>z0R8MM*}>2J2gF5 z7ZQ9eRv;E%@@0>+vTJ#Xe46%X@ZnWiegn|F7P3erY)mW04cB|Q)dG!mjp*6Q&bbfR z9?)XBNF*PNZI8#_!Cb`4Qw^Q)Q_-yvMH|&y?w){k3hEA>K6PItdb{ikV{GvL1nJT} zY-6@vcrSku6-OuE6?!J{Is)@d2G2!eYuvn9CSn3w?DRyViX&X GaO1^Ay$k< zMu-^>Un(v`(@JOU4}Y0lAy_Ux2Bx9)u9A=Fv{-+EV; zB4wlFo#&sqJ2ZRXzF0K(efuPc`F*^0tvDLFu9+jokiY2HE*3kOW7DorZV0a0teeSh z23LRF?^?Ezr-P_Hp4>s(g1C&dt@Ee4UM-dm##`=%Rt?$4<2&ZHSbW*@H)527%eV3f zJzJk$DcXMG6$W6U7ftzO` L5M@D~=$jF>?mt`Zv2AAu`MR3Tdu;J^%F##h$ zZ7NNrwfvkwv2x@bv@*V6(6s$$$UzpDSgDDA_JP3pgA} &9|ksSD6XOp 4xZysEIFlB)hDhX|uVF9dzQxPwu zAuo0Ln68i%W~Ssl>HhKe|7sKJlYmbmeg5(H|8I#H@}KPd3EMlS^?8K|T8RG08%R9U z^6>_?sXu(YTPkJ;*n>eUkmh?9i^a@9^hfT@tWb)p7V$9?=Vsm)4^7q_;?94z#DcPZ zTvF7JxL703L6$7^a&cf?m3*J6e&mOQ#o7@kJTlXqkqzQMtK@r8G)ZI_Oq^8`Ww~z9 z9r?vNL|0_Q+c1#6kgDRW?J08C$9>YG&JMa2ZF=+;yF1b<4?9U$&`Cr0hxpjMV@5WX zX>`V5)5Zpt#FL8thM>utqB(zFWBV A=>CZO@p4@;^Gw+>fSIc4}vZ}`2a@@2hk*HoV2Gv(p;Ldsh&N-m_mim&`$Nc$J^ zu!`1zOaCpU ~jmACfLzxp#4Kex#Fg^i#4jS-O93Y56f)ejy58&!&}Z zI8(7&%)P|7{7f%DD?kUeP^*W79LuG_Df(5LrJuzj(eHD97OO1PGcg5R;4kZXzgpD% z%%6COgoaR$;uK&B07Aqk18eNkv-Gy;*u$?MhnhNf3TXr77l_6A#|+FT77gAO++ MC(U7T z-}^bEL20Z1<8U6AHikH;K^@jikWd}OWpo}c`SE9I`U)Cm99TiXbyMgkc}Jd^IAzVq zNfXGT!Z>|?lIa7 r3||^7w4~vR%#!mZcXWSDbEeJQIg=|&bfiwwzJ>D< zDSCBvx~rc_`tk%;mK)MepM+gFu7N605R&w50w+1}mGrJoAXtLI5*}>v)RB`nY>R37 z! zeEk0UigEW*^F-*_Yh^MS5*{o$$6(8(hHhea&r8}GkvB74X(oHQ>oQT}U^1z(+N=^a zGt-LIwjs15T5=|2jMkLphPw N3Zct9_}Pbuz|5_h)W`2o0#fV=T}(qSrsgM-| &SZW5ZkU~e_< zXt0v3TsZyomm&mv;T5gNvgaash@}$*zL~XTP>UN?w%Z3@JVpHcC+{%}lbz?qBhE?q z--V;V*ZaWcJhQC2ZL EZr}Efjb|J;fIfcr~4O&EK64^5h6w zF5=G`tsH+d=WtL3EF}r&h2tw$o_K #> #0tH$5LdCQzxvrVJSoM*?EpP<1j z^XkFZBj?)&SY^U3Cie2(q(mG^!ky~5XJ8%NFi%ySi>mFiYO~Y;(-vC`=eZJD>AF^Q z;aCYQ$fTR6qRbmoohZsvUJ-3L$b#!e!e{BI599hpObGd6JfRzA4Rh@YdE$Sk)S=-` zGHX>{G3Mcle7k!8O;W}}`tc+&US`+B7saFZKirXk73P-CUD9n`=V|r;cHU2ucP?gF z;zkQ9ZJmI3g5Dw{XB=j@mA0N1utqrsV_mLv#fPTnHc1m~b?uE`0%%B?!E^N~$u>`H zz;a|>8DkX0E0^JT&WSJygkgW9rezWVpXqbI3cFCW%}n@KZ99Hdc9E!Yu7^XKl|^>^ zv2=5^rY!u8+=oNLT^5gyxYfCKge1=pC3&NC=}6@d4S8HSLX2aG41O;ikuT)1ax{Qp zhy?vwItpdI$re}#@x?>Z43QB|OUJ0owrf{^q!?mymu(lX`11P8+EIUzJW70o+mew2 zH+Z;xk(rJwRwJVI1{DJx+l1g9I7`NL VdG7XTh0N*bWZG4YhxGr%Z#uQTn$vV}huW-q= zEYp+3%Src1c;ewo`DSInd7qyw){)ZdGOH?apgg1z^CEGxdR2cSp);&oM=HoJ27uX% zwrgU?%3(^6@z1o+CG;=%PZ_K}kSyvAqfqrV_%rxQZrIlX%0G}!g6~PQCtXj2f$Q=y zQMu9)*=zWZN9%`c;fKyk#Bz8nX6ZNyWN}+}0c~g5I|$TQ!45TE5T =p|hWy z?CKS?H?f@8xv+oVeMcP=a9kut)t0sqeF+wp#M@zOM9D;RuDB+`^`91ql~^oIi;nD8 zC|?4f!SnZBk{=TMUPAvW-Sf{hLp!1?#9_*@O2@ZXd+9}EAd!Xhg4*Isv~mcuP7XM@ zWHx}cSUFhQE|VkpQp)ntVX*kj$^uHZhjyL1D}Zm=-vxhE#fwB8*{`7N01Yz){I!6> zIOtB-8!n9S*-FFwp#!?d->C9KDL1Nq8m{!bWIpp<0m!p%R0V1rccUsyS-k7?lf3H$ zX|RIgCYFVgU$mvPp6F%sxbk9! X$UHaVdpP|2AKkFKtHXNbBg*=uVISwvdwdw}_J<4y<{8xIS+ahLbRy zKO~oQoLc{LLXncZ#+4yNg4aV@D7=95ho!S&(P_LdH5Z=Kdt%n`?1Fj6u6}6Kym)-1 z>0fp5Zh8R^1Bq;-`EuaiYbU`>t Q(gu_E?*IX}s%%(|ce)FrEc=K3LV z8kK+f<(FB7Lfz}Uo(2%PP=|YTP>FES@9;5Z`7NBY!)3oabG+`#?UvCj`3YapR7T43 zc6dlH^wiHA#9(%l$Z~x+TM!0!L4rp)PdESw6r<#`gc~kDJGSgAQ5E|_G(cg;qBuZW z9(&oQ;xpA2`%{&-&<}pXyG$$iGQmRLsyu(NzPx~7u{h?pWmWc1pCem7gBO^6aQE9_ zhgTdhV#e*LGeB7l&p*b(P9p3iV23Ym7Iu=UowMY!bQ3+qV_*6^3|lcA4wth3!x}l( z%*@liJm6eXj-mxDy{eiAeh>uTLlro+7@M=_Vh*_}GX?Vlu;I=-$mC)e0Zlk|!rFh? zc>>swxjBj!u>1_M@f WJ|(P;cq}iQHIJA1S;%f z=YJ)D%`f6&*z4!oT4VLzP_Hv^@9}>o>J*14cVdol2zO{Jssp%)uVZyFd=2E+9k#PW zw~BSKpa~64WnP^$UBRD2g;Z~=V#~kqxB_MI6rV3LXQBL3R9$e{pa4~^6aY<78M_3~ zYvfg5gT4Z2B0zaV1sB|O#dl}OET|#yj$^zk46g}mcDod>Q!G1v&-!tn@{xZ^tXJ?% z$s?DC4WDPvoaGc>@;*6U&y1Iz;lMTnfg|@MNb=$Rj|m6Cnhp=eJaTyka<1U>&04VH z |OWP!ap>gvz 6O@R*!^bd(w;O+6@>^zz85jyo-QbJPP^AvEd8+F31pGYIMb_ZBW{x}1 z#bsSm5DGbf!)F}96Amukf$x%cZBjQ0M^B^@G}x-@thvZOy!9R=_f>Ptn=H8Te&}Y% zCm0)CpV+gPzCJN#Pf!iFO;vn`hV+?8>p3T3f17aJM4)JWA^8OJ64!rZ_KC!W&xgc4 zL!RL_F1c_Q>y3v38>Y_apa};R*Vi7tJWpQ1kO?&9kvsI~ z4tWo?Nm*;3)-*-g8l!wf#1K;-$OblO=p-URUJZ`5Uct+Cii-&tUuqU@_>>1Ld&r z$_#CUGy&iQf$>AefcZ;Ve8;DW_)bKDyn4Q&Z{o{(=2(wR;cS)ov9?dzd<%Ye;1~&Q zC|zz4Wp5 PEyf&c!uYdkuq4KYP{x{SB>;Zo&vY+3bCz9e78OCk) z1;gOYHTK2-^jQMvCBfq+-aC^Rv`#*qB}6r=g4^cQVb_g!3Pkr#|AMm~8mld;hE@7i z3A2M@v`fn3cN;#YI2wfq!?exua}>|>@`sF(7O)@6dpu%m^{6$1CX&H~9JG@iTWo@W ziA0!4(8O6X^`U u5NW&7&SDM3252URgfpW*k{lr^@r+$cu zk(^JO;AgM<1YD8uw%DM+P7L3|&W56A*>?6>vURz>-oc^yY8)9)H4!s9InL+&HUYQ< z;dp*h`}m~QB-p>Nxw+qC5oD?+|IMC*SOKq=A%SXq+ybnr&TxwB?v zwy(RPH;I#Tnz+~-qxD?iJ<$c&+aj+Y5lyT! $$ z;=tPHe4c+uzcP+Bz+t3yI8Gux-XG5#>kuYyS>t~un{Zj}fQ#gd_xJDD@56;3!x9q@ zb!HCbkeqNQ&bFx8=htUi;q3N)jpfchM;EPqcGDN%0a(L?3!!iT1 ciz%b`E0A9!NdMrC0n|emHj(q@c_H;`MiD3XgxBTh~61#|93~JRv=;mf@GkF%uPE zRCZtH@+9OUuf^c|?WwAYo_z>zo4nnArd5+?_Ce&2Tq&S^_`ymtvjX>4Nh>%E!>q^? zp}`8DbC_5;SN^JXNm%rTp#r|lv-o`LTHP#$b*sE7hOfXdP$A{c6{TTlu7wl3p(GXc zu4#YaP9(U!8)rMj1_*d?cRH|+0V*8w?la8qug6nFdKfiCBq-Gq39li?DHyrsgFQeb zt{{-s&x=)du6QH4bQ_D?2|j?!*Byz#7f>0Ln@(T5J#-pjxgb9ru{&)xMX|-PkX>F@ z=Z?gxRQd2SUlS#Yi3IyjABG&dx3J7noCAL?(4dKrXy2VRSB^!USGfL}RomNQSLAr3 zIV;~dnhG;i>941fwW!;oJLV5HAIN7_^|39xvoBs>m+L5B6dJTCINEo~dkL2y+;_=e z051`E-z8Tt-N1Te9Pm6@qlRSpxJus^I5_x;e~|f-T5T8>&bTWcSsY53rHAi5>&1V! za91dt+r<#TT2U7V2wc}x`ZfwCAtxEnzXI-m*g4F6HIB^(nZP`Zihjaoh+J+wj8TF8 zWUvp-9AW>v R6qi!Ov(I
s))ZcjBo3fLDo%Qn=UK6d=t`FU{`L1WqKBS*#fFX#=FYtb8{Q!N45QJIq9*D=l zMg|Q_&Y13}8ty-U Y>lCHd*-AM@ Rh z%LZn)#wGK&@UpF5K2_(XfVF>T#d-am8oQF69sYY|*Hljc>q%_Bow=+UEvhaA)~@{F zcjs`GwRX_%q3O$ez8YhPEgW%g!sl?_&q21TFdBmxo^gs|u$SZv0UEz%=MKfhTHsga z8-vM<@m?6p=g Ue|Rx5umaD^UUy#-^( z;`vgiZu8A2+~ptE=cRZug8p9nv6Qp63M23|W(w^oy0%KgfBrIoe8W;V;>H(!safPj zjU<;yHZPPEb_@r<>Gw1G-G@sC;7T%F`3jfot(|=a13#!oiFmZsi?U|bUWs=v!OgU% zO@C^Ol^rqLcs)E#)YE^Z?o|9dkwf`d)@OOA3 Wfc&wg= z; Ze=MSHT=l#ncO(Al!H?_Z`^m@j={;0o%B_Fw`I^$emGEA^Gi;cV zD|^1;6do*M4!eTbqw*g(@_c_N>eHI!P4KU^XROWgmOWeK0$!U`!wuh?yQaY_9 ?-5rZa9scu&*MEHz`V0#D`(g!_hdz7}~XY>JJ4*vGBI7P5JLvzd?%@dVy+uDuJ^ zNdDm1;IzHFzE6K gK&F9I(V^!jAAarGo~2NM#R z5aCh78tnCU;kcLpkyj}5)xz>=JSqNxPsN5yjp%~->Qv|8%elWi)%&7Z)+rDeJe)6| z*!K!12wC%5G*^plB1EG3;a=wfIaSE%R&yXe&bkX8Ln}M@>eo|wJQU(A+}JEoC_EE> zf>UO&y(fR4FCfOxB;DfJYg-(e`=u?RG1)2hGxi(DbD!}C3z<(w`U;uG58`Rpb;W0F zGN7omf8yzjT|L$PO; vDR#wU-{#Qp- `A zuzzGN)Zyns-glyAAM$uz?gsqTKPHF#@f@`jgOzoZvapnCb1x>d;XKq;`jk`BCJS%z zp*$WnwgWlxWSw#J3Himt=p%|Nj-pR^t~iK3Vtk)h<(4)7u&mvjx_rNK(?}Y?a-DJm z&kTQ7*YN}UqwBwyGxWcz2gw>QsW|!+nvi*WXjcBR&d`6s2iQWz2jT2-=i-vqJ^=8B z{?CjWpL5d}jeG$DU&ayRgKD*5?=)=7To_wL++|{2pWbPUpJU@KFvjBr5*Uv`^zV;y z;o{W@%S*0KQvkk*E1?=O)}>+9{2C*VBYJ;2?8Wf+GOB9qIcMKeIAWo{;cLimA{OQP zU6`AbCpjo{!-zLr#tw%y%qT5#S&j(F!+`J@&%mvLUPtXl&hsuD@_o5k(*X|n7XH78 z80=su>eIT>9YB9B9+Fq^*CLX9leQ>`{nK&X_tt>^jvrjfj~>BCi};In8kVv(yOw_= zH|$14%Mgq5!VahI)Lp^PIu>DC)0GJ{EVRZGk@@dMv`;wen)iKM-ky4XTpk>Bxgvd= ziH|s=`$9d3oha=2B6oOOZq 6VsEdex zP)8EQ#tae0eICN;Lv|#sxf*(2lAGQHb}8AD?CL}Z4iI?YI2ax+v_Dzr}}eh$Q^t z50`k*Y(B}B<1z0yD@-5g9+=SI@`qTA o2h z&HA|*ByXFC^%xt`-|>eDf0%#Z!v!9|3&VHC!GR&`ai8FRU_be;I{3K;-@78ORxQ~x zWX1U>{$L?%$U>~6R%NVEKky$|4X(fxMwI!oyY=~M*pfAjSMzm!D{$wxlWp(wx?euw zVc E)d~NI$kIjR@mD z2tJDBqW3|%yRcLK-Sj4~3(0=$8Vz!BZ$=yH>N+c1U7Pq$Czl pSXX*AtML;N91-5T&ug Ch_afQ=3Px6s{}>o1k$<{+`(}BZ0r%8a zYf}YCAo=mb8y|l?^Lzhoc>V2%((3PTv(dIhyf urQzrX$hveP4J#mJDl=wyA{!4cn)v@ zm;JmP9{4#Fhf~E@vdNQk`-UI84Be|;QB?f=<(%31bZUQ_LomrO3n`d*B~?^t`zCn< zhcQF9?gyrlyn)LhUSPPNe|Yzn;HZ{@hEARBP#mW>W|-I_fR~)?@&jv==B?NX5X{L4 zatRls{2(5(>JlEB_`Lmi`4g$s4}$Yj4{3InHBD$yq`R`kE3S%TDrW7(7Kj6sXX%JH z3==|h;1_=h3ML?!a6!4>0t6E&NbqID&o#t}M^ gjl?xNRI(2<> z;OCs+&UuIl4@ufR)qVaL?u#GtVi4iG@&}QGi}-(;Z&~e8HAh(O&cY*a$_XWFMtP~8 zLNxgrdcxbN*Jp=QcSo!ir<^P>v2{dUJo5KAoQbCTGy4-?a)L$Hgn+9eSU_PFE1tlH z-zU7?A((_4?aw?J^6Aei9Y1Y WKS{ld;wK&!H2bQ#)wS95V651Tq%==1T-$Nk| zBWwG^sb+7wc=H$V 3ry&d*yg)jyQWXt`jztW9EhkOGe -a*iQ|2F8&vM;!%nKWEJOEKH^dCR+orzPK|5zM9d0k?^Ua2c-d z!%G=aZUHAF9E?cgs{Ob45G(Ldjzir!Ty?dOrxEfBZ@H5R!+lple9L0qJcsW??m1$T z$ejXzRTlGp0DOw_`4N-&PYTlue0P6T`b$yn?@UK;StP{{lJZ_|uj`TrOz>F1rTa`v z?Er^Bc)y{27z|Hi<1%doiKA1Mhq6!0n&m{_w0LC{*G)Hh+m@EeRVO(= c-$OI8HqP(aR^)!)B{gjk@ZPRtlz2&8M(U~L2$fzfN8tf~M6^3|}<`1yr zQ9_Fmmr!OTP}VSjT4*dJTLuXi^7F?-F^aY;*~eo^-r8{RWDWJ)lfN%d+DYcFcTNh* zRfeKxi07#F5Er;-6)NOiS(n|N+uEpqtBc390R+FQm5Fl*LO@2O2#71tRs}_r3|4GQ zaRDL>eD}euy?~b3=IFa&e7!lfMVJ)|e w3d-nY$v;n;g$ zVlFoNYz_sBC%W+Eq~2q(O<6AU+rW;4X}9Z|aVrW;*y+!cBasxBQy2TRPXR@IOw5k- zLa^bvfobkSt`XeIL2mh)M@7wo5}B1aP>c=oZL!NwRqsB}*v`uV^j0P%B1x6$F}s&S z@zo=1TfS=B#yCrDl@ ^LHG!Iz62MIEdzZ+A8K68q< zr`vK?NvNx5_zej-hrG$FqTc2$&Y$6DyE_)szQlll)q;Fc;5Lb}gZ?Lfzp~)e; I2s-%b)1#{gp^77N_&>@XJO{y z1Ulg!1U{_pBH|fH!l8B|Y*K8*yK}9xok;MyT`u$F%OOzYU;q5C&Vq{T59A8bUZ~m~ zpBOW!%H^hthr{r;D2}YEw;fn+w5aL4RDU{b+~FfSzL2NHjdlNjmEQpt#%k|apG5s~ z80(%o>%oLZGg9G_|LcHO=CM8v4VY0oyb!_~b@>KG1l6qm%kXp_ EYQaT!?6Wv~I*01_~JsVm6phA<%5$fDcE>qmdZFz%J9R z2u2q`Mjn>c?7XLc-;h{Y@Lq|-wwfItIWXDeM&MZzid7V0AMknw4~C2LsuEAwmu%PO z?%lB@2i&mlc&cEVj8g;1uTnU45JNGzg03c<5(z`chugeQFKu;(O;moYS#K0m6P_xn zYo8%8&I=EmLkmvpGXz0lI*>ph!Ea7v6|A!xOky*K60}r*!gOrN#cy)6hj_We$(eD+ z7lVkW6k3h=ctPzW{1$HoT=-cW` Ilg*Geig*ks8`P3ILN 3{-^Z z_rvPrx5egv&R8#+MR~obEm7W=uq5ull6+PsYpGE&JxKF&ryT?=IMK9rCp>Qh#JdPK zBlREfM*^uG#kQCS17$vex5;bR=w~^I*v-TNCZ^Lczi}FnB_)_dWXVtNgL@+Iw4c~u z*^uN!S`8OZ;K4!O5MH%#O)jnQqU@~n_K1MtfZN!A{MNKdjgm!n)0Xy+fs2FzM9gM@ zNBjwijP@p=Gd$bTnHX9wxTSGZR|?=+C5Y}gFx*4b4yJA;zynZ_==iX3CrQ@wELwR; zWmU-I!U}F9hN%bfl}N^}xJbtK3MSJyt9DKdJ*BLgOC+OmA{ U_ zwI_jQO$d74=N(>@;v=#vc~7RP`I*mwEN1F|Kkx?$dw}^twci!k<#!xs?I$tDkW9o= zWaAA7?)`=`Cl<4J1uWz(LK#_Ma2xrMkjMldFW5fBI%U;q8(KVd&8sGnf6olQ k&8`f_<~a#lOjc!LZhqIrt_Jy_JD`hx6mn+OPAFF(Rpk1=R0< zZ}AzGnCKTrl9AdM{9me3R=Qate2A =}x zn+T;*z>wL({;E6`1rfnvc-LRQ*y%bDS19(l4Wcc#OKHw=a4!XWf& zv?VZ8S#>~Lr>#Rz@^*j1M#XP`q3puGBzSrYXT=_2&bize>cSbcXlqrc&UTE0o0hJ9 zq5h=WW&MRdRgOTA>(k-Zc8-gmi5>5PCk|1AEE9<&wsH?Vt)F6MIKz $#?W+GFFAMtk>4Or8@jKu`u4g3t_pteE}*&4yafFgHK59Ni#=O~_k$u+fFQN&ji z#|q&UP1P$JLpa9F*{Y9UPi4_BDhCsUzrfG1a?lmkjyV)%9duK!%>H@?f6;9AZOPj* zF-Dd0rTmLz6kC=0R=!0A-+}fEv`+QyfGX)b8qucxr0zwL!$r%;x)Fcj$$Ztc9El2h zd&d^~)_SI45L1CO=Eom@&RGrnAAi!O*=_BFnKW-HsJ(02wn;IG^3!yZ-3|rALvTZ@ zn3t!G*;*)>k-mouU!|Y6;aoE_3B^O4!wGUZtmi)FxBQg!D3&wSbP6lk@?2yR&p{#? zB#8WRLYLo|$Vy1lTF+haayBC2q_Dc?kw2s}
nLzLN zxZZG^_c=_=E^>ngtvMj1U_c0@U>^7`$eA8TdP-JNR~2i~?hCxRI*Pm*>I(O>m8`n2 zszg4Wk^5M08EP+ mgpr$rMWkWz*r+)F?H<)a1%Ekz$3x$)v7y2g6B%>%aK< z@^!FP_R)k#F!cj}SzpMe{4y>URA8uu2uhLYI|T8T9T2nxAN p_76*F+d&1z z-*WoUiugYwDTwuHlr{ut327_lDy4Fbuqq6D%&_h8qJ31y;M(3pT~NGyYIIoY *xs!=ZcPS{;|4GxH`0F|`bjo+tbnjf$H2>rY32$JwhsItG{*!}Q@LJZ6n` z?Mzk&tBPeA%nY)YM7?bu;8kY%%qrdesr1b&n&^4(UdZ(17oMJo^aRuWgf~@@*DyIG z=83{1I7hgECorodpZIA=uk!XW-4@4!y&v_aEW+7XfnJNaFzG~3AalbujP}Mwu+kx3 zt4H!Z3}Qlm`{+2CNC=II^~*A4GMQC`_6;`l@x)+x;#nv+66j>oQVJz}4Lld}^B*S6 zM1Jsn39J$fX6=9qsA_+Kn{ZhN 72rcmOh z(?t9ZqXi2?ivHL<6zv*?(1-`?Oa5IxjVfIITnI078Mg^zIeWp$?M65mf!`DOP<|?Z z4GqM#SqXTE7;!XG7@d;uZJCaM%n9;hCA#JIwzY|qLG^nq zg8C!780@KU6I@L(A3SD4e;w+-v~$IzH-{s>QKX8A7nYPd*C zy`L1*X6@J7Q&l8f6x5guHkFR$F@V5aR~yj5))jkZH!klRKa_jk>!QcqpepYwA0F8) z%XcFx&yC9R`)kX2d0tt{epqfYHi=En@ayHN`M=C-zL_c>CdXe?=az7*-MRXI3-Ok} zn`{QR*;i+|LHXRZ4cvsnhhX?+V 3pNwwFBwa94h30%wZ}JGVw(jT4CJvZCoMX(cJn1Rj-Y`u^x5}e{>Vde z>joC0Fc_8%;t$y_Tg$Q|iFpx=AixyubMA1uGij57|JB^ <^Ajeu2hhvr7Hj24zPXK wTD*o zA>B94zA7SE1sZ_WK*`rx@($%$^XHPu|3|@hQgC@_q92kUQJ(C7;_uQ?NrjWi>Rq`% zwX&bEEw*qWZm~_be`oFWCh~n)U<_UVU6z#k3$#r%UA`_u>LxEyH_2(Q7&7}N)rQ+d zGqi8;tQPC-ngoY^u;|)1nLd^$nzDU^N5bs1t2SLusISh__jLf$VAMw}{Jn+d=u%FI zp&>xCHk=8ZAG}h3=fw&Y)|rI%XnLie$nEO5j-*X}*T3oq_Yo}4gMvp(I*$nVQE~zj z>ArgGi{T*753eq-(iiVvTjFCD7B{%dG<>ljEn#VXQ{%2M^ME%btpRaxFyahdSQY{P zj7Dl$Rlq(GEspnEX8L`!%t*ts1ejkGPXno8&mE57!d_T^(J!MnLsJy7qYnpqi4-DD zJcyqUp65r}9E6jo1Mgx;gK}pZBDRw)Mky`qv1B%)cv_&AydgEibS#1PG1An3hLPOS za%Z>Y$*N7~c!`UG31_m{6Q0pX@kN kxzoCIL8$TG=^a$pfDX>aGICr9=iGt9tJwZ=y=XaGvCGoH^Pa1AbZxq zV4bd0XFL7D&BqG$lSoKZLV^h-e(+oz=Iw2QIk=gBU}E3us(_82MFHFRV54yapBcoP zqQ}`e_6+s`!ZQjLIS1mL_OjC$slOA`B-6<(o9*MNC+&%JQ!t^tKlQfFkS;>JtBeDk z3+fjW$`y8`v6UK9$KWL5NnQL9Nk&HiBJg{%?9NAmk4G*H$^- TYsclzPZr9%TOV|GpSB z_?__LNBZkzC)5~27fkaRV*RNb+h-5B?Ubi~>KkZbk>aVI9W*c~86@RlKNs@J0K02h zG@#n;tazHp59-eWfe(08V%Je|5B&*N!Ojkt(GVRfe3YcZwGrvd;y(Exljar=rvO_c zVQJ;<$N!bIb_4Bk@5Kcf3HRasj{`_q!*E?L4}rD7jHO=dzjUa+Xyw{kk%y(jXPf+g z>*2X73#IOORpc!$sX9LOchkWz&A?Rdjrg6s$KM*DD%?gGOvMMfN)O{?v)XZ_r$pYU zKL> ElH*5%Yig&XExmaxTOt5;T5A$h$$d%o#a>^4FW zMzn>X-OglD&6Yp49(mxV;z80D&PXq{lMdVz`Jf(l(Qlhx9oWYg>4$N2Ly4h6?Dn%{ zb@m@mcC*wcSGHO{QmL8rFSJP)Qf_W|aZqpBMiYx9<;7cE1cebXc{?%1_mRqf0wo^C z_z(hrp;Tb MoRhLbcS$n}L6`cpR*oZ7p6!qH3RFP`NP#K!>xgQ4m7Pbtn1%5Wi^f!U93ek|_G zx^UOhO3YtRD^ZuVX%({{(QpKRVNAq=p;t5^bgY%b0(u0@Ride1BQ2k&dMOE{?#I(c zyOr*56HK~&!ha2%Uw^o8moz5eFJnx|j6E$^WxMhDEe+1}^it$AXwBt70#2Ohh-i7q zaDqyOBIm-;N&=JjmVpnKm+msa1pH-y37N5{WuTp&Gi^6G)6>g<&!9Db?*a)paiSxl z uF*K#5P) zW>6=U(TXK408}C-eZ7Q|;xR2@EH#pg4JJ0HY?HzsCg#atrzL&zmOl-8Ax7qXSlWvr z^eit&({#KQ{8AngWOzA$W ;(%ES? z(-=@wFDz`$efxCzmp9Mfg6PZdlaVMCnrV01;>dkoZ;EYtY`T8m7GV4YC-T5taMKsg zeznyN8s-Zjm%Qh4%$wvR$R%HVKtZw7{!6zDo8j?R&w46dlYVf2fspU9=JGg0LKu0$ zWYwSrZY1F5s!mO-x8go%c^qD|(`*J&reey2+29i( b?gkr>Fev@?(Ox*>*}8(3Bk<8|$ZfR1Viw?`Z}jp01zgf^4s3CSuB)~eU8 z3o<*^#UWqyx^`}V!;!^YQ==AExG98x;-U-11VV-SgM1#6(F0gy42%E+mGHR4yu)+t zfdMn^e}jcux-EA3sp^A_Pj!XC r+eb#eOsCv=oUjGJz QPr$xQ8((cJG{WNJF;ed zbLwmdb9o4cV!sCYEV)93 eT%#WCO973ur7d3-Vy !jE8lq1P>?v`>yYgq8&?U=vle>z(lNmy1IHVkDa c%04Ph7fy8MZki+Cadl|6!#s>+cqrw$lIP* zDdK$zvM&JAF~SG_^!W#TD&92@laqR1!KWg}OHAP{k);yKnZ1v1B^ZGF;iT#XAq#yI zcpqhdkyo-_XKKFN1D~_+aL#KXSX;mkQeh-qBQFkj0+8joN5U!gdCwDG8 =tc5u^ z8GkXm)K?uhv_?gvz^rx5)tgJs^xsL<%TF)d-+GZg|ICX7Bii)KbeH?SNV*xLYKZB* z=r?SNwl8 k}c|DB9q7_1p->c)e`Ew^7 zS!v=L%~E+zWMa?`496j_Pkflka8RP#_*C^R{vJ+8b(yVMtNeJnt;!8@53)Pc{aHPK zz(vQ>^6Tkgi=*PCr}BcNKQTb0FY0aEm^$(%sSzaZnqi+pp5(yB0-E0!xw++LHKdd- z_`e<#{0e*PjFH`puE;OG@3cuHn>pF0f@^M0k6{)ky0SHPg+FO_t@mgUZF?@!Aah^| zxmJW?XlM{IMeEoWZSm`=gkvuPbAGIU`dU>j zmLJK31z{5HZ2|X!9uGy`2QiI+hpwzr;fMZU`I}^~rsDOmR%_7FE_OY6%pzVF3ZASy z2jbX)75PMXf%wqGa2?<_g-G^)cdTaIM->?o;3WvDb}jU0m{1~w1ba7cyau`4r6q%8 z9r}ly{SS}U2`e@Z7`#on+$FDB@vi^%&;MdiSSs8g@#e+VtIMl@{qw)SGjaT}>^+|g zCSm?o{P_CHf@pf5_od%gY09V^W}eBN9_7JPbi-q{H}Fdub{IS4n{ZQqy3*TxLom~w z4u`ybqMMKkm;7G`^nKa(tnXCR_jGhk=dbEdhmFb2f^ sLU z@rg7q?(neGA+&|~PHoY<)O79J1iUmXP-Jpfh8Czj5EJQnx0KQdor2&(sbceqe;Tma z-WG;S+KGIuV0bbZ|F(R8(4JE%HudfV$MnE(Yt``0DNyk^?o1#vreR-5F&M*@V#yb* zq8r_`@FmeBT_+9gi5UHGBCb$Oc fT7vRWKw&u5HSq8=}s_OO|c}f@FgJm<$ zM{&*f-q`I wUsm5d0H5aHvl7cX)@ll9J` oAB6NU z*EFB^NxqQcUs~OuHwGn3O~cd7)7C@Cxyr6@jz>a0KUxcaF;o7ao{Q_C`Ev^eI0s8C zv4X4TX{M)2mqj7A|Kt7jR#UWPVJ3S9O|kCFG)+IVi~}k1{xtflZP4SxE%Mqm$4kw% zTw9Ok_9i-T%G1yMdZJ+(>0MpHp4m&)X&Zfz^;G^L=1)dDwMRm@X0 T>5I80!F*qVb^H>Lb6EB0#EMNc$H1k;Wq7&iGNAcwj2TF6-_L+e(XNzq0 +1O<~ktiV^w3)R%v2lAo&qXUemIqu#m5_{ UyiofK7#>Gf$x+#YLj?V zc-agYT|7T(iLfRntA!eKBYSQ>1n|QkJ8#&?_AQsS(yxkp7? aG%kC z^q}!U{^f#q>=v@XON|ecy+B5Ix!sTsFE!LwMLRt2kwKqU>;WK~nQI2Tud1i*Sf*vS zsw-Z~zWI2Kmf2>1>cn>ET@zw*q<4wG#YX5|<1%O;ey~^)3YX(C1{3yE-RF;K(Y8(7 zrCYupyMif0&ngwOVG`OUN+nz>;Zg~INEz0lT*Bs}vVTh7 dBCf8x!&ay%1{T9+eZ0a}EdOE;u{rBxu`Rp&wi< %-P2rM*?>Frhr8#%zdnX`7#uHJI3b(9b7tpge%)w zgF mP$VNM zzWAx*oeq$468}^;54=p;1{7@!Cz}7ke)4jx4Jw*#cJe81y~DciIC_zZ44gR8?>YOb zLEj@!cdUQ*U|C&ar!-Y&^3X+p$rJg+X`JOGpJ#&cue=)epQZL4uQo1rEDrUtEBJ&J zPapQLCC~ZxD#cXWPcf-udCKIrc^tN%Y@Lul)0f&&1x7F_G2RiQ)Fhc*Srry+eL_+k zW}tR q@$Ny8F%c_J zIzi%tGbjk#389+hg3m#4HuRyBCFj(nOOE1~<{V(Jl&P0W9kdc`J z^%NtM(UW}U7$-1WooNQt0J!p=HOp1F(nGoD^?pZZ;6%X{{Lnv8IWi=E_irET5{9aw z6IYCOfQ}O6Z8GDB5Ve`QB0L9}NRI^mE$0_B;lVYxFh7+T2jkhNv2V-U69(aBvys>M z@avxNJRH M#NY&^hFFz8~-EbjexV6{$`WnbWr0Z{51pbqN=L$d1(ql|Qe!n9Y4mbm3<% zyB^;M%XZf}SO~GqSdX}=xH!0L7;zA`HO?}99ANp>2=#1p*zz&4){8obnhj_IK3kcO zhcSdUCevt|Kx4=r^R}bKg-hDQ!qYv5G7krDOf(j*kO;^Kp7PpoPc)dAJrr;yxI-~> z+4V+1T6VdA4`30*0^X8A+8G94@f$=k0w+prs4tBM9mQR{2*4RC{)a6{;@E$eYUZ@< z35jOi9t;5%? 5Rn9ofjr{);yWQFZ5!2C~JE7 zK-w2PkRce&2%LyvQ>^?!L+B;kZ}Wb0Cl<<( H0v3SA2FypLw`V}frYN{Pu5LnRXJAk1a&MN!YA{{UEhS)qXz2U zXiuWFrl;dWwgX~69EeSdz7h{(<<9}jDdFKRP;+50xUSC~t92%4-36%8azO}(@bTw> zPCO`o{yKGP^rf*iJw4S`v)>onGC25yCN2Jhd>}D@E=-&V%7}>@)V$D4uI4y $O5E5G^?hh*yqS(zSyvT8s%qSrQ@I?;5;dt~i ziPE01p$x%jM&Lw?*}zIIZIm) dEK%n5*(A=1r&5ku9ou`r98Cu465@P<_ >RGEsP|*=APvbUDr3QJad?8c~J9{(1b(yz@InW zH#eJY9ZPLM2x6(}MH0?TD%Tbr_WYY`<))>q205xVR!}d+6^}wM9rWPOwEHFn+h>lA zr!`1W4$DGQvx}fX&p2;WlIqgD_Mt@bY;hn*Al~-~uh*+! x5(?}{K9JaIG#8Ox(FIQ#L)q)G z>h;KddXe)5fK&iox$(II7+$k~8uWwnoLGYxl)~~jre?MI7m=lenss?xf+Dgg7I9Hn zxdJ;Jo4Tlj%dAu*6;&x5!e{t1mYMo9h~w~Q99wVku{an~h%7D=%aVb>d1JG^-IYbP zjm<})9+rzjDTXIK2X)7y@=tdyH20+Ob4KK@skW{)coglheB(M1B XtI}Oee|2|! zg$<>zr|Q?^a0HY=LO^JL1=EvDpEsxxb*l*>qC8M*7n53O-bYoqRzIV%nNszx5~0A@ zER0HQJXWsyibGyjH&wGQ!zQjZJwg%Iq=P6ulXs3Z^-Z^Fi=ytLS+0PIbyW=Tt2JP!vH0VW;5)V?b^kvd#j_FFJV^P6a zg@0&qSgjzeQ3hgvvp+s^>@V#WpvZhzAmO>LRO6Y4<@ng)==>hL9FyAvk {mUw6lc?MEl*T-Ym)7 z0VFtk2i17yVOc!!I5v|fK1XD;M&z>utlPBZv0swU0wFk)g Kr~#xK4dpEy-on56)lIilQ2pr-OH~xjFb3@w#&JXO2ry zL>9#&ur#mQA%yKJ5tCSh8lj91!XbQ?PQE&kf>=jQ6*|>DWearIn|SpHg7gZybLKOJ za(Qu$EV;3Tc=$6Q&$Ykf^LpZ_yMh7X6os`v&mEh8@Fwk4IV=l_jkc*qK*q&1V~swM zbBoY&T@nGh@9|!T_`BkV=Ja@j$Ccc`$(doLaHL8pgCm7dZYxq<$b4N#d}ZtOc+I7+ zmG TNg7z77=FMjeW<>3200=Jw)H=kV6`JEw)v3+NnB1k*t}8?*FfPj?5*dqi zYq(Q?UHT6>b?XsIt|lEsDdOFlX@}9HmYbQ1r|6iSqL&@BTcqMMH+{}vtWlt%3s-zW z)BX;~$*Hq(`8jnrI9GKVXAc!UJPSe+6NdGwAh(NwZc$wcKNAn`Mx`FXr^}k(DP6*A z?pbl)ZSrH$Hq9Z(w5I2$p-Tr*BF~ l(u#3tZvS3v`uJB)=m+MP(2AlOkZZbgaT%w( z7o2y}{CUH&s5TF;(w~Lb>+rvTTvHCkWtnm*IKR;F8RI})SK`wT%rDo937=9xu9262 zlaSmC&O6&ul9j{K=Y0{Mf1n+jd!Q3RG9>4eQ<3?m+zQV%G=0uskj5h1+JQM{?|!>g z0& +(*W9z)yzTv)APg#g<3f z31`vrxM3@3j<}t{ane`Vsz}cd`{%|gP0J197uW4VNM4w~vx|Kuc^l_vpoi SWJCq3JN{Z5%ETj~{Z3#(Fc`!RgFB)dINTp eZWCO@7rWHkSAyrQi zu{lRCEjIT^1;=FmoM8!nugNC5K{-c!n1Uaca5 zLvn-49w-nB9Ej1ZM^Xsj5lY6B-(%AB{2tRL<@aD}RVTx1oI#BmbK*-j$Wo#nQ@c#4 z)8kI4Q$jr@_!#3|kYB63x2LKvw?(%JTvDOwQOeOE9YkprdeKyWSE21IC=O=>%8tWb zT5+<_IDe=jYOtwxV6IZ%@~KKdPDa&kMz?} >RDnZ- zLWfWog(R8AB09meqUm`GhRGRv;V`*FDj-v{=Ltc0EjH2&$Q|MfI}#`6OiZmccOxiQ z2(?w5<208eoegz=bEWE_KehF3-uG1zRMG}DLNObJL-;)FZ*Ok%uH3{Dllnmnl~xp0 zPYD@mTx;IZi;K-aQqeI5_uO$Qem#}P1zCvt!C8n}QB=dSaPTfR3kUxqvXGlUcU;Qg z-2n#u;4Ca@y9f+QVOdzxHe`_ei^#N&3cxE%8RqKXukp_>5}f9|-ndA% )NaS3kDPn82RkJh%GY6N6kMAP2rQgD9x8~97&K#oAX z?-5?F*2H$Z7w8k!k%+B=ZRtH(3}h@X1xvBQJ}Vx3m;>A1P)@>_YuHVW<%k3p(}^Ot z0@ci^a6Q(zzM<{se ~0RsKXOQFAp%ftm}4@L7@KLe}d$k~vhNi*dZ3D32c!3l}{S z&O%4an$HwVdgW(R4$FE^y HVy679K;>vVGyF&T|gm_O+2wI z& D zA*p+Id|K)w-2H{<`gNHpqNfbqZ9LSGVV7;ToVR8Fe{L2=s%}_avX~8`BtIh-#eP8b zKh`0=SiahEEa-iqg6e()UE+J>s`-Om^Enml4&9OH`u73bk#*70O2#1WC=`Pb#cn{k zoGOtx__A**nbG$w-7*MZp{S^|bYv(2gNn?u=APhD^m{mmHeLjM)Y zEHJu@e`pg6h-UJ9IU@G0FLz1;z2g6d^1v4Cp{RSFm)oMxN#_LnXpM1GiTm1UE|m1C z%l9jUj>CL}|5F%bl&U_6P(Z1S|0X;>{ewLBEo2?lk&y73BVVOsRPqyWUkhWD%; M?6lum@9X`FL!bzJX3^SmiOO5kfu)hw#Zlc+;akVNMFWW^6S_>3xQg z1|i&@=JZG`BXXq2m)J=dn^?mi(oGU`4MITemn6)^G9pKMK>e3N7)-3;&*Re}KL!O9 ze>DgJML8mYjL4B5(19f>pxnfI{w$=-)&I|bz9n0{sR}qYBs?dDA~i#Wco-`}_Fn4_ z1jbBvfu7sa;JJK;926#4+w<7etdrI)cP~Gt{CBFMzBSpR@D1 g|p6Jj5>|U=p5zNS3e}e){TZK6_vx;Y#w}Vdigz7 Ou 5U znVaSADLO=;`xgJ980*W;r#MrndBy%mGSim(J!KJ@(UMTU;{Q_YojN>O_O3|o@_Jjv zT1J?Z!K4!AqXPbkKk=~XaAYg6meZ7cHIODsXOhwR5<@m+?0;8vLu =!%WF{$ z$vyW6%_2|DuYgar%ayR|%l-*p>^;%%SdW8!UHApwmYaf7%s|dwrXba6BFv887|~*; z%zCq8Z1^{*_>yMC?{uhjM*$dsm&PV=k+Xqj;L7H)dHlx3+0{Oe9!unEbddHGJa=_5 zh-3s#G{0$;pa#8wd*-Yoe`tIuOv7uDyCSdpyPMmb)FT+A?b$iV{2K)(+I|p~XjYkB z@>&zURvvgW)9!;Scg-PN)oJoeJ=Gy)fcqtx3VOpH@U|Q25@T(D^CMjIITc=h$d1Im zsqK*;jzlRIQr2D^q=eTT`=iS1{VCrUL6!$KKM74ZgpXJhpUB_De?n-ZC>F)11Kh;~ zKZsmNP~$l}ik!*VIdXx#B-H5$Wfi=QLBIfo)jnlFLQ{@-7wIo$(A&xX$mo1SVx%!9 z7ByjLCHKf5!m$P+#O^P}SS%xQq(_$a^_!Sj!Jo|gWuf~(Wgqwb>D#=dWj&X)XE{&z z7^0UnUEXKZlPkJVe@5cw&7B!LR}PKf7kd$!VYGasW*`2OJ%hV90z);>_zl B$h?`(sR#T2~HQ F;TI2X<1z&mM(FSj~b$f zMCNJ3QMu46f98mGUS?aG>L2BCQzEZh?N5EvmbrgBkrFhwja0JR%Cp =ixAs4x*%Hj`8u$rr8$JEay;R#0>yTeaS*~uetK|5D91542{KX1%Lub#{g;( z06tEU&F6|^7F3?&;^TUut>)Hx1DfsA?o@A}6%tSpe~i?;C0iE`;j<3Ac&=+P&*J^1 zmMD+MgyQ8Oa{h3UMmwC!VHs;5L2znh;r>Krpntf;ZTM_q$U ;l7Q3qx~Y{hJ$pn^;#w zR-99mpsbtdE+C(Us9jH-j>%S&+kyEzjsNEee;Vo7H@9|R4%<&kbE{+#KE-9E|BN_~ z>9fURd#d+E6IquE<&f+WD&Y*XaDO85O7|!%tEAy`g`ucVhsf6oRYNif6+*dXp?*YU z&)`W|=5V8Davtu$hBHkgGe@ciWsp>g;hDww6_Z&b&jK?{89!e@>f ;m~f ze_~mn4-xsJya>x0G 2$gV#S-3wD`J;OjmPOL=xx(=4DQpCI zt{aj~TqBrX7VJwz9% )`LWO7X1YoHzS*Y&yf6emA zB6}!e%E2^u{zsx2J+U;$Sx_dz=2_;-k)>h5ER@ClMdg4#H?>;$aOz`u0YI48{72;_ z{9|%|aC~9r53a}OJty (TiiG-$q3 N z$k5 <;C6J5o39HyPtdZ^p~~p!M26%{f8(1A%6M?W z4$YX5BD|>B#+KEP0vhOiM&I!g;c&34t89=tlx-Wbg_z6xN*I?SnT}-;LL`Du7Q&mD z+jHjr{2m)y)6tAnD8gI|@o8!CX^ZX6?WylW1_K5iU%?q9$uyQSiXpd ?wh}in8W%xLIT^*f9i6RS1Y+X;9beT$h>Iz6G=2QBi49Z`n>v7*87|KxS_uz znv(C$&_wA>ma~duxSVa~)wtGGu9b(x(&F;bUvz9CK5KBohJt3QLD@%W*U#k1Sr*!> zF}o6&OP*fM0`G}_$9f#>>pGQ)_$zel@mSAW=0?&%l%AC=y&>JIe?x!>BdRIJa?boZ z*SZq*W*w@pgc4;9_u0dAXl|qPl<5X$CesL}7m$6@nYe6|?gZx-m_1(zg7-|A^#gN? zwq?Mq6p&*P8z>y^1?QZ98^s!730%=_(hkf$%F&N 7H fwo+m-wVsb% z(cTwrV7$2!DcoF?&LpGr4T-hJm>6ndXf^jppE#2aDa`g7f7~RPk-3J%*#EsUnpw%S zj8L70ctiIizS`TBMYY|PRYfZoO59Z>ln}*kJcBSUv8=K%{)GIsdEm}!lfhM8&L{;W z$h`ok7L=rY+253PU+mlAY5;F3nkczS&_tBZWF2PlOxI(cS+%aGYS%N52}OqDv%4Vq zLVxan1$ iZlS<*8X1^xd_)5|&%8ukb?eiGIg=9PI1jN@TrbbY)G~1sdB) z$L^RXwr$(C-NA`%+wR!5jZVku*tT=?KHnYp&mH6Z++$bOsoJY%)tYP0(i!C8>7Mc^ zb-nfrdS?>?4J|yGM5}Fu0ScZphMd$tFr{g$A+_`~C= 9DE%WWK?S%CI$0>&!)`Oom`_ z^T0`$urgBsrX>el-=e6nhxSTw6@G+Iq(>-#t`>#dA_Nd~674y}$I0kFPw~S_<)4>G z XOqz-6a1@qmGQF( LiC7>aHiIdw}+Z9m5qF>T;Q{EI;sp5Ay$B%`&FyWG83 zJY}?a(fA<)2!PubrQ@nW+ozLS6q}^zl&{sJjW06<9b#Vmy+^i7yzNsKYq!WT7;_m) zjEuJTj5JH{KWiuf28nrKyUqIzqg~e6LxIzlzPP P*Ri!XL; f*B!F&)6{? zzEMJaKQD{S$HCsg;ok4{4mlmdi@cu+yhz=imIF6zrWD5Fx+dO6|Bddac>^yHas9vH zk+7sTwDCExMkg_c$+gZthE74ygsbR1%AK7!q?g!%&V8TwS->b249%;~L2-p79FM-x z_Sn$a!)(a@OK) pqw5H|&KUw54h~g>s;$KbQn!yu{h~7R;&?<^#Qze<_y<{8l+Jb}Wd=pR zd0%a;7_apkuS}8*-45QEtE9y4*;oWpSkkZBk!O|Zo 3`8;P-VvW)^FGO%9o_AiRXI4wf@ zv@jDPYh;_t(vjc>KqdYVaH!0F(7)=cy;R-6&ae0mLFV$`{7)CLNy%xn`ix~%!gHen zLoJ6W32l0|?^f);Tlt_%6oN^x*zsWw+F--#Vh4B})FgG1r&SwiFR4jVafmsdhY&J7 z3v-8~k-u}l0qdU6-p6r>r>jpH`)6Ukgx@27MaleS3y!(bo6n2Q-DOE+!^}tsUe-02 z@A^B|R>)Rn67gqc)Nx`o$y?Kl!ZIR8)?H_O<8c!ehp8@91Qbf?9x*SbIGO|ys}z&? zJ(+1oGYO4Msvwk4br}q%?#lqdk}^|wZ+QcPpXNV_fy_B3i;rFhPRZ~%1P4;?rpH=y za~b)AU}T-uruJ_&b@JGn!oNYqmAgpX6fACY>o!(8>sUy<<7*sz!ss|pyiD9#xU@+I zV(eD!a2<|Z=*}Z^P;PXl-hE(D7jfDL$pcKRuGZf*H`3gM;8V~%AZ1{c&do9OgX3c| z+Jo5rfulT%EqK~v>G`ypbl;QdvQ8N+&g=*c31UJ;$c|^+jF?!XDA+Noc(@}N9%{UU z1T8#rbIxrom|o06Ot)!5b?2B5A=+>a0YSXy$*;V3bBr`vG%9`Aq7X6slNuv#lq%Bg zb8em#^#Au7@f!py Rk*N(( zygm)bZHh1NPi$ F?M zi`=dZYauxid{!^gzslrJO=bW!NISBlh##xAn8YG6=6x$7nILOHX5YklcHUKxay{7< zZ`8w;9A_pMyQevgK2z@qlQ%`{QH@##xhlAccP5preuLpa`t_jNWF}Or>q@Th#|@~& zois)5#z!g}^%UK}u~sxzwQryqPF-K}Ki OYhH~#J#-d7;r9St540h5aGt;QJl z2Iha$7$tzojc4&~CdO%^ZK(?sx(TpA%DO~B$!=}C*b~i4Ba;<-wb AgyX>>Z?zQLE_qjNI-Ynzze=%22KaNgk zL;ZUny1c907+9_9nIeRUnL!@6r_EUJp@l$)N+q`R7s4Ql)LBSV0*>Ph=6_Rpn9J-m z5JvvelVERyt(b-SmNHPdzg>Qm6&5x9uj<3ub$ir#(J)RWhoZr1;9;z7SR&}9y%pU+ z^4@UDSLHy@;_AbS)TFohf46j9VMPK8e29MWE!qpF|7{y4V+2*D0j+`(&R9C+k~@hF zkA_mPwe3@r!$7=JR6LD%3|oAYqtJx*;-8#%-MDxAQ-l3Pm~ZlE;HD6>{Qr^$K%E~A z1uGXtznMsgK@FF1U;`lyleTUdX-Q$Rt%WYRm)4vsZhobeZ4-5u(i{kq*mc+KkbuS& zfVi2l87>B5p#4{TYo0C-f(3i~yUzP4$gixYtWJ}4Tc9See_oIkF3Xq$^*d}`dvqAp zniS?zING{=`!aRgv@FP+fJy73Cpp=8f zBp;>>ICNyD_q=s3G;^ Nk9WdON0TdPM*d)L zTyyqjsMflJFdUQpK9Jx33KurVVj7RlUcKPz#;04`*cVjgcGMnWa_9sOsF)x*Q+R}_ zmPJfit?xVyb*#D}GWZi@GlRQy**}#ek9%btg3RKx6WGU9W#*_Wn#vzM#uLT$yr(Kt zgqdZ6Z+NUkYOR?~dCo;>k^OXZ7Tp}1!2iIx2fLi9=P0V<(Y;HcFB1KRPLV0TR5J+p za_jAXN6F3*7JaItrHFxd&ILnbJp-dKc;lSkehV0>et!3-`PPqH(*Bd_%n@b({qbR0 znQV 2)H7D8$Sn#t&yXxP=iSL?ryH3 zMw(9tAaKPWHSPJ;hHL05t9j@$^Qoz{8`i(~rz@Dz Ja@ojG|Jv5d|fD~Wxa{tfDx(r-<^ zc<#S1ze&tvqy7*7&Tt;5+L6Q?x*7+s(y!yExs}@Z`0o6P9h7>54CRK23D)-7<8@ph zvvGE#1MaY;d9`yE8XB4)jY6;|JI!xx*=D|8mGKcdIfYr0+9526h8o^yym!K|*4|Tz zLY)vxuj*c}32mj6*uSQpH;-D&dBoYNaFlhxPk~g3NA_YM?d-*ThI>k0OZ tsi@q~D!2eP@+m%dNwH!`>Ml>fn5ihDL%7D6J zrwn7{(vI2Ni~b%P1=uOaXA_pSMxRC_ho}$wbQ$eywf{hYVRU=QFe^Ah{0?uo47FUt z-~9A6(oBf|0cgt&c&eB>)M%p^SQ2(Bb9i`)j%$`QJq3KI$ww5&y6?)EN3#=P+)K|j zPpzmOsN( _)Blh1HVQl=I6*Hbmd~9Gu?S>um0LcY zQD$lNjr*$6@jLP_z~Ivun})Cp0O X$&>$@i5Lz=dyb< zHvBit6a;U2q)o^NOl{y2(DC7wpTKA5v)92AQ^*hG%vp=v21u^rhq6L@9@d>WX=*j| zL@OF)>w>GHGyR?{Wv|cuKApUFwXjc>843+CyP$78Z92{8H_gPAu>2ieK-n{~8t`hN z{k>Jc?LulkloG-4K4rE{SQBApGRInnVmw;Nm)v%-bk;=yv_|r$*ltXD@#G9*GBbt` zN5YkEu{$3 V_CLGkP<_AA@r?rN+)o|5^3Jy`AX( KEg#q@N{|KZB( zA=9A&LNrL6siZ5>a>E&@RE6g~W~I6i3sUjMTrKh%2?#zR7Nw?9d)xp`1Ed3Yogc_v zGM*<;S~~Ag|F^rL*TUj?m$R w_+cL`} UfNa5^*Y%Ed@4a(<( z_}d|-Qd(8ZWaD|hwp^e7zht7r2)1TNgQc-?y+BrHS4|WRalY~(mLjzTSv)Ei8aTJ{ z3354eeW-w4&y5_)sw<4pk3>^koD5pNCT<;N$C8X6ytHe;7Fbw@v?s_^ng5{NkfHVY zdjQ5YeD`%VW2VeopoQ)_3)cAm7{o3$BFut}yZV3EcM}MiFrGpXLjFUg#($v9KkJ;X z&5*X`kU(o`(w;(M|KFD#Tb;k}pnt!NxGI{3=2_TMC)7N7!ty;_>ApIj1yA!>`VeT} zs!U4&cW_;5XMWcC%gPHziMwUhm92ZJd^p`Mq8p+m2p5EWrPnUgPU|X9B+JG?b(()N z&Q6QG_wDqomZGd%&v6`{dfZ5f7xHF*IN!>j?*d#w}Ul^fpl!#9X@*5Waph(O9ovzIG zG#3Fs&VQqv*Dls#Fsn504HWQ16twS!LRTl-bZ3HQL{G<2HR1@4YdkrQEd%i_N3F%w zNqfmtOehczp4a!GE6gC@MPRmx$hL{j{ecLe??n*rMWBkZIZE5b$8qofxYV^8^$laz zCk#*2 E}{SDSZdtpJ}#liecp#QHI`6q~# zQDLV4RM!jTf4^67J&fCJ{a80m|IL{)js@ImHrx6vD(@{`F-t#zVG)~BH7YG*P6;2M z#f0jmf+8|FLqOnXeY&?b8Q@*_OZ{%gK^UYr!N1hjhMlkbnFVO1|NKvi9-KHzLk3Kw z-{TqxKH)nroW!pdCwbK&b&=y!`Yq?#S8w-fzNkt@8+7gck_L%d+k7~CJeHp HqnUCbNCzSe zycd1{P+fW+fa9TIiD^E_Ns!0wC(>3}`ZO4v=XX!<6PDl|Cz$$pb@AQF9=kK!uk5v* za5_+AV+rpmkAom~og4juRS^bO%N$dVh`(iQ32JJS;@a#@Lz&L5vrq-2eU+nMXIrc2 zn;fta&TtPeQk$zLdrbS=7+2DuI~4M6peRC0ad 7GokSoBtGc!8)l`slPEp45+7ki1qxlq{W0 z_z@wtF3fr1-%bf0fT5!gHXxO`NwrY#m}2WLO!e1jOW!OYTG;)jYXorhV4zAdNWCEj z 8rV+6 zw~mf`sI2KHGcxD{r4Gvkc3+!}a?uuz|Qc=As#w&uJ zPTSak$p+G5T6oSEs`|!(Yt)v#bzrknwwEhs+3p@<^MiJjvWG7>LxAj`L+CWPP`V|+ z0f2I!WLSbpTml#U1J>{-aTS_w_=pxPazkd0BG_#dXDft~#RV#bb6#Walbu?8Vfmj0 zp>ICVglX+cwrWZjS2KMR!b(_Ce#VbA%}MwRjAjF^fFm-Rt(H_GLiI;vDep>Zgy72e z34d$2N{6X MrH`^GZ32LpLdHL`+Hy%!x#ijS?299#IzYUGxcAF_rKF%e`O+pOI9`F zXz7QQP%P70X!J|ZN5fwgG=axcs9}U4#D(R9yxDURM7>Aj1; =`>xUVf6YdRk;?{6_Q)v~*)CdDc*8FC(5w1+AheRX zukskS4WNJh>x Ea}i|9HGvN%_Ive%kfxHSAF- z!@!0TrYnuRu$lbFfd2=S8p~BK+=aMv)^mg*^865bY z!Nc%Ea@ggZrU;|{ZX9h^IVIWy?KGDBcBb$`Lb^cmF(kc%NFmFB%=K-c-Hx2#)?H}x z!t)sDR-8*GeI@BtWRrcm!^w9+ZK8 T~2y%nx48UQQM_#wG z4OjF6#so~vjjee8_BSC &WWuZcDFD3 za$%#yz}(CeR26SXSK1aYh-Z3Gw}KL|HQkV=<_wyg+f^2Tca0;<6Zv<>5ZF; 3Hb#Nun9p$Ge2)1WO4oh<`?&6~^Oz97CABNM8B07Z#O*cW4ZHgoOLFzR?CS&QlCo$mq4ljvlLq$XHMTTh4=I6BKeXa0o zpiC6x_!P#XWN<0^ODbCzhX?S@?zVMWum0sv_G|A>Lv$}eq`LtG?tx*2=s+`3coIUX zU)GpuQ_#44=$sJan;?ZQHO_qw#iN=E77F;Y6R(>GDb%}#8YHen8^$LXT{PI2l3E1w z(>hQTS43waIf=3g9&R6uCgP7 $|Rr@6KJk0Ln*I&-5a{PD>c;Io{1ei6SFYo zP=cnHk{Z`NgBFiC=|{focYd@%X(P&h@v8TgBFKE!u6+~JEzyBp3@hFUjKU01AuI(s z5!VqzM8R%5^bC;Ey%E}UI`QHNYQza$lW2acqn-crH^aTiE1+*Zm6MAUWlJajLKXj) zh{==cVBy0thn|0|P7ih9jQ;zRD;PUb6O(`1-w{v^pb8=u^&<9FP!3ZUaId!UMF4t5 z=w^;}i=iaR&eGEac;wT`=a6^W^QQk2>g4UObrN5e+KKf;m)||`w*R*0+fG3I^*ORw z(b5E)o@S30o<;KOPZOu>P_8v;XI;r EU%AkT&v9^r0kpds zt2~xL;OV+H@P#2$U5LqU8lm`H*eM5BSKy5CpO@%BarXvPbdK Se-xSdzISK4GYgIMJ1ILfAi9er!dKij CPduzXx%Sr1-C+ zK$_>c`CX7yk}6$)WBk+<1jB;MT>}i;$8q}I0gM7{zx&}K>+r?N@J(zR?@lgv%=FH# zuot-F)>~VD{$Go^+ajlpm0|i!wWy#RkGkW1#=rt_p26*=6IsYS4AI|iJfj_g!3f&f zB6}<$EOM)V{#_S%lBE7zEBqCT^g}jJ3FxWm@?N?pu&)-1C-ulxl~O!uV+gbtn*32G zv4ivK0!S$H;)Y^ YopkD20N~WS?G7}4{`7wAV_{}`det?&` zT(n2TuqfAMQ^Q3PDPDV=XP`pztKQ@!x|Nv8iDTrz@7w6A=V~<}z|a_Cflo=H0@d1S zz3U-Cye+!c#=v8e459)=KLi8r?fdEqkCG-%p(JL*wC(-7XkW_;QM`$-vhh?&P5&Y` z8fN&D{{nq;fp{{7=y>meVU_la7`Vp$l3gh0u)mx%>^*JUliO=Qw(9)b)=_GwbHm2I z<4JP?8d2FAL8j@3{O}_y@hRn=9msB(XgGhNc9T9o6Qd;!o0?JAwx+?WoRg8Ga5ECF zP(z-rZJ~xCLhW(}S5^pF8CB3T#L-Vpdt;`!pHq(%mntT=D6TSI^xU}v#@ix}D_-07 z1@U}z8 $LP z{!wTaFHMNUGLefHXN{5Qc9qJxGt*2L{EG^i?A#>*(t%%0`KuI-4-CQ}o)Lw#M4GtK zv{0&|qYvjQs*OAbTLb#nfMBtvRo*JERl9Z|ObSY0fboOmm7}F294l~h^~wzd$81w$ zhn}YSBMW1yVRqk}=!haN=gv=%MJZ%{i2bUgTEv`A+2~gPJ~SF)SKN0t|0@jBm^<_o zO%orpxA725r>GMBu4(Za!cKNn8|{YY^4bO_rv2Nx4W)CEKqKu0ps*0sadiImz*d^8 z^kO3mg+C+Rl74y~#DesNj}yx-FWWhY-1dMOdz07C>h9+x`au{y?Jk!lC< b{dpVpVO&ZC~= zo)3l)tgfvlO{eQPpk B;uD96e^B6`vjR*ioopd zu6srZQ~!|n%@P7BU{W?1HnYKxYOUeQ-e~b1f!``F>z0M`Fc^&LxYe;=fu9onhK=NG zD!{@eD(DolD#{_5=;z9qI1ll#*K;9qclj=vPeJMw$AnHIP|%n{#l13v0Wygj&)`1C zfCM4=)p(De2NR79Vc4r)CE_P?MEi;P$X2AaYL_i(Rc(8lSG4SE)}O*3RP6eQS-bkK z-iO25YwKLT6iP)40WBIWVKme(^N|Tl otdfksqnpH*|&QJqt%6% z)PuLm-)%d4#G?^yO##sPEJ^hYH@F}t1PUf~lF t>vP`3HAO_yDkuPgaR0n|QGRG#@6_JTg z)#-N6k1w_eO=LG)j;Z~DZ~3K0my!}X1E+$-aUg<;%tY&^ *74<=zy*!h-^RY6;`=Mvd#ScV>9^=AZ^e{3CuA g-V6nK(h1--_zch6OkkuNw0_ASgSpU*u?b7K74 cQl8(*JxO*OWTEtY5T1a&ma|a`HRMhrOBvs$x4$v-$i%b^$;OSO9!Bdo z{KQ{vJx45tbYkuT0no}k+>=!yh!P2QAck(A36kIr3`uIvHF0vyIS!&w$%7}h^&U5C z`dO|gEy{G@L&3PKN=W+x?Bi4&hXx0uooyHzTTOWu;=`|7Tb07Jt}fqLw4zW9n1DBp z3{WRbQ%6Z>gNprP!mWz^05txz`4ky_2jm@GW0=_{E|o)!sgUzTlCIN%G=^9$VB0Y{ z{7yA^W8>Xko~g58lie#tgalH=+_mmN4vr(qn%%sGm$$|vy{YH>B-v^^pUUH|n= 4@-Mp6K{ zkX45}D#VWjARjk#jddZJ*nX1&kOc4xFNG9KNHKx)+COXKAXK)JJ<&8`52LM7-~N*f zyLwvY2imi)>%V2h;w$?+^`X2SL5;!SlEfPhq~}HmSHNOteCs+m*H3hl_G7e|N7>a$ zCQ~^)i0&06a`z*Kj`9@(9#(G-VdptE?~RVPcF&ofos5Q0iby#fCcp#&Fj>Iwi_!Cb z^y(|!Fld4y1My5Q3z1N+@dlVU-Zyu+3lvt>0~4Xl*SiwZxesfZA-p>U(YG@sV5(qE z b!M}P_2n1z}cR%2E1efYQE zTb+xP`kh4*n{*~a1p5UE#4q=8Qd5kV=zaHa4Do~4dXQ (%{y^D&Udf#-Tq|ZOh%oMV0EMce+{5G7 zYK{~~!e;m};9qFfzw|V-6FeDwDDayB@V`ZekvqqW3IsRgxb6gs7WM5GL_phjK6$PG zxEN==ZLp~45&pQPF}P!Pl(|c5om=gPNAkN#3>v(mWp4IqjwHZ_OD6%KqgTRl-obI{ zZFYS*di%P(-krX?yS-j+o}76cEsx*K6Jf=~+%S 8Bxxw*aWyuJ^jGAZG8V#b6E z$3%=iyqttBtw#a#{>h4q$hV(JWQ@f9pr_o*j_}1aypE!gGq7#MNGToUkcq`xFADKU zzU7k__lJM&T6lZkyHgbefEI8(TO8@T=4D5udJNGI^E`wJ}vtk0mB;#Y7tt*H%4Hza%h+5gkBr3Z*v@IH~km3iyJI!&IdZyk0<@ zU9RhO#^rgDTaBmK2nOL}U|$f&Ecvr7iq4`JsBxY>_P<>kjC=4XId;YuC@Od6Tu3UP zhU@)Br9>bCgwBitp=BNhLL)Q>$<7`6Pe>SJ?4IU;K%a_|VLH??7lJ9b6yn)7t348O zqh|V~76%DOe&Z8+bNyUtN)~m$9v8va J&4*j+R3jfd$TUCJT( zEZs>3{`($Hfxhv5YvZ!Da1oryO=}MJ_%sD|3Q}NFR>$llx8itQgjqAWbgZy{KTPV1 z3*H*#u(kbbSPNCtU6fbJgtb4463@Rn>9sORYZY$xoVm)1m OWD?^@qoj?OQBx;Tcul}mD5bX!Frzh&Ob%n-> zm(D%cLOU$~>4&@_DMVoW{H18cM1!jeQ6@k*wmtO^Wsd93!k^&ukEad%!+2B VPU0dw`TvvN6J ^-W@fG>?hV)mh$eTYRokT)ZY<5Po_k~cM@-d;IJsS_{TQ@-aX~Xo z3om`g&g9gZC?7Q#_sAi=W%{d9Wi!`+LSV_S)`8z@yWJ4rD82+jf{LwtJ6~_GJWlf< z5W5DUEsqt|RAg__nCUALjreqReOMv%-~+FD;G;B}O8)8vVDP^s5viUf(Q#L%f6^7r z!BR60&X(Bog@DFty$Fs1h>GBm!6oAqjIoD|)T1GAszU)LrIxO6&vz(d&u7WNJ>i{x zef2%AT
JsRjRI)b&xVY$281A0|ks`RDGU*PN0MBnELg1^}at~5iw=8v+)l3 zpCLBveVipo rA(wOqPG6&GJGkJ4BoJR5X$?+>J?e&sPhmqM;qr2x88yuun56 zLqdLle09WE!I4q_QWqnoubvnJqJnM$@Cfwx3esMs!*K4s s)|MipKuWCc3NZ!Yf2u*RfghTkEjh7eSgL+HgS_Us^CjYn8t7T0-ccg6NX%$eGJ zp^3-?6?%=tHJNc&D&_}}f(FC9P&bs5w_|%xl$>iWpT1_l421pUS(mpARdIjrd_p** z810R6aXffu31nPk<>HP~a})K_Pz62(U@_2H#@frSSX&y2VGOYjg+<+wi$=uTr)lup zG+b 09h;C4_kH3*_BBj{)J=FZ0+b6e;DDV5aoCjKH+vrl7a2@uRq0kpD2Z0L zuy_4*rA|oLSue?` SS8Dr5JPC`MW7b1M5$xUzKW!VvR#Hwz?&-pXH z_^H&i&nPIm`iKs6wCiuTgf!ZE;`&8=il;vqpBh2!Clh3t25?Lj?i ~}493fL{hkcLiz_?^czOd#JI=7_cb2={Jo*$GG1C57{ zvK7Q)8S+XJ4aZD8f|{=FzE