Merge pull request #136 from Markolie/master

Update example config files, library fix
This commit is contained in:
Fox-McCloud
2015-01-07 02:57:47 -05:00
13 changed files with 413 additions and 14 deletions
+1 -1
View File
@@ -13,4 +13,4 @@
data/
/maps/backup/*
/maps/cyberiad.dmm.backup
/nano/debug.html
/nano/debug.html
+1 -1
View File
@@ -16,7 +16,7 @@
// Run all strings to be used in an SQL query through this proc first to properly escape out injection attempts.
/proc/sanitizeSQL(var/t as text)
var/sqltext = dbcon.Quote(t);
return copytext(sqltext, 2, lentext(sqltext)-1);//Quote() adds quotes around input, we already do that
return copytext(sqltext, 2, lentext(sqltext));//Quote() adds quotes around input, we already do that
/*
* Text sanitization
+5 -5
View File
@@ -244,7 +244,11 @@
return livingplayers.len
/datum/game_mode/xenos/declare_completion()
if(result == 1)
if(station_was_nuked)
feedback_set_details("round_end_result","win - xenos nuked")
world << "<FONT size = 3><B>Crew Victory</B></FONT>"
world << "<B>The station was destroyed in a nuclear explosion, preventing the aliens from overrunning it!</B>"
else if(result == 1)
feedback_set_details("round_end_result","win - xenos killed")
world << "<FONT size = 3><B>Crew Victory</B></FONT>"
world << "<B>The aliens did not succeed and were exterminated by the crew!</B>"
@@ -252,10 +256,6 @@
feedback_set_details("round_end_result","win - crew killed")
world << "<FONT size = 3><B>Alien Victory</B></FONT>"
world << "<B>The aliens were successful and slaughtered the crew!</B>"
else if(station_was_nuked)
feedback_set_details("round_end_result","win - xenos nuked")
world << "<FONT size = 3><B>Crew Victory</B></FONT>"
world << "<B>The station was destroyed in a nuclear explosion, preventing the aliens from overrunning it!</B>"
else
feedback_set_details("round_end_result","win - crew escaped")
world << "<FONT size = 3><B>Draw</B></FONT>"
+4 -4
View File
@@ -242,15 +242,15 @@ var/list/awaydestinations = list() //a list of landmarks that the warpgate can t
var/sqladdress = "localhost"
var/sqlport = "3306"
var/sqldb = "tgstation"
var/sqldb = "paradise"
var/sqllogin = "root"
var/sqlpass = "bleh"
var/sqlpass = "example"
// Feedback gathering sql connection
var/sqlfdbkdb = "test"
var/sqlfdbkdb = "paradise"
var/sqlfdbklogin = "root"
var/sqlfdbkpass = "bleh"
var/sqlfdbkpass = "example"
var/sqllogging = 0 // Should we log deaths, population stats, etc?
+244
View File
@@ -0,0 +1,244 @@
## Server name: This appears at the top of the screen in-game. In this case it will read "tgstation: station_name" where station_name is the randomly generated name of the station for the round. Remove the # infront of SERVERNAME and replace 'tgstation' with the name of your choice
# SERVERNAME spacestation13
## Add a # infront of this if you want to use the SQL based admin system, the legacy system uses admins.txt. You need to set up your database to use the SQL based system.
ADMIN_LEGACY_SYSTEM
## Add a # infront of this if you want to use the SQL based banning system. The legacy systems use the files in the data folder. You need to set up your database to use the SQL based system.
BAN_LEGACY_SYSTEM
## Add a # here if you wish to use the setup where jobs have more access. This is intended for servers with low populations - where there are not enough players to fill all roles, so players need to do more than just one job. Also for servers where they don't want people to hide in their own departments.
JOBS_HAVE_MINIMAL_ACCESS
## Unhash this entry to have certain jobs require your account to be at least a certain number of days old to select. You can configure the exact age requirement for different jobs by editing
## the minimal_player_age variable in the files in folder /code/game/jobs/job/.. for the job you want to edit. Set minimal_player_age to 0 to disable age requirement for that job.
## REQUIRES the database set up to work. Keep it hashed if you don't have a database set up.
## NOTE: If you have just set-up the database keep this DISABLED, as player age is determined from the first time they connect to the server with the database up. If you just set it up, it means
## you have noone older than 0 days, since noone has been logged yet. Only turn this on once you have had the database up for 30 days.
#USE_AGE_RESTRICTION_FOR_JOBS
## Unhash this to use recursive explosions, keep it hashed to use circle explosions. Recursive explosions react to walls, airlocks and blast doors, making them look a lot cooler than the boring old circular explosions. They require more CPU and are (as of january 2013) experimental
#USE_RECURSIVE_EXPLOSIONS
## log OOC channel
LOG_OOC
## log client Say
LOG_SAY
## log admin actions
LOG_ADMIN
## log client access (logon/logoff)
LOG_ACCESS
## log game actions (start of round, results, etc.)
LOG_GAME
## log player votes
LOG_VOTE
## log client Whisper
LOG_WHISPER
## log emotes
LOG_EMOTE
## log attack messages
LOG_ATTACK
## log pda messages
LOG_PDA
## log world.log and runtime errors to a file
LOG_RUNTIME
## log all Topic() calls (for use by coders in tracking down Topic issues)
# LOG_HREFS
## log admin warning messages
##LOG_ADMINWARN ## Also duplicates a bunch of other messages.
## sql switching
# SQL_ENABLED
## disconnect players who did nothing during 15 minutes
KICK_INACTIVE
## probablities for game modes chosen in "secret" and "random" modes
##
## default probablity is 1, increase to make that mode more likely to be picked
## set to 0 to disable that mode
PROBABILITY EXTENDED 1
PROBABILITY MALFUNCTION 4
PROBABILITY NUCLEAR 4
PROBABILITY CHANGELING 4
PROBABILITY CULT 4
PROBABILITY EXTEND-A-TRAITORMONGOUS 6
PROBABILITY TRAITORCHAN 4
PROBABILITY BLOB 4
PROBABILITY REVOLUTION 2
PROBABILITY TRADE 4
PROBABILITY WIZARD 2
PROBABILITY VAMPIRE 4
PROBABILITY RAGINMAGES 0
PROBABILITY BORER 0
PROBABILITY XENOS 2
PROBABILITY MUTINY 1
PROBABILITY NATIONS 0
PROBABILITY METEOR 0
PROBABILITY HEIST 0
## Hash out to disable random events during the round.
ALLOW_RANDOM_EVENTS
## if amount of traitors scales or not
TRAITOR_SCALING
## If security is prohibited from being most antagonists
PROTECT_ROLES_FROM_ANTAGONIST
## Comment this out to stop admins being able to choose their personal ooccolor
ALLOW_ADMIN_OOCCOLOR
## If metadata is supported
ALLOW_METADATA
## allow players to initiate a restart vote
#ALLOW_VOTE_RESTART
## allow players to initate a mode-change start
#ALLOW_VOTE_MODE
## min delay (deciseconds) between voting sessions (default 10 minutes)
VOTE_DELAY 18000
## time period (deciseconds) which voting session will last (default 1 minute)
VOTE_PERIOD 600
## autovote initial delay (deciseconds) before first automatic transfer vote call (default 180 minutes)
VOTE_AUTOTRANSFER_INITIAL 72000
##autovote delay (deciseconds) before sequential automatic transfer votes are called (default 60 minutes)
VOTE_AUTOTRANSFER_INTERVAL 18000
## prevents dead players from voting or starting votes
#NO_DEAD_VOTE
## players' votes default to "No vote" (otherwise, default to "No change")
DEFAULT_NO_VOTE
## allow AI job
ALLOW_AI
## Allow ghosts to see antagonist through AntagHUD
ALLOW_ANTAG_HUD
## If ghosts use antagHUD they are no longer allowed to join the round.
ANTAG_HUD_RESTRICTED
## disable abandon mob
NORESPAWN
## disables calling qdel(src) on newmobs if they logout before spawnin in
# DONT_DEL_NEWMOB
## set a hosted by name for unix platforms
# HOSTEDBY Example
## Set to jobban "Guest-" accounts from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions.
## Set to 1 to jobban them from those positions, set to 0 to allow them.
GUEST_JOBBAN
## Uncomment this to stop people connecting to your server without a registered ckey. (i.e. guest-* are all blocked from connecting)
GUEST_BAN
## the whitelist
#USEWHITELIST
## set a server location for world reboot. Don't include the byond://, just give the address and port.
# SERVER server.net:port
## forum address
# FORUMURL http://example.org
## Wiki address
# WIKIURL http://example.org
## Ban appeals URL - usually for a forum or wherever people should go to contact your admins.
# BANAPPEALS http://example.org
## In-game features
## spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard
# FEATURE_OBJECT_SPELL_SYSTEM
##Toggle for having jobs load up from the .txt
LOAD_JOBS_FROM_TXT
##Remove the # mark infront of this to forbid admins from posssessing the singularity.
#FORBID_SINGULO_POSSESSION
## Remove the # to show a popup 'reply to' window to every non-admin that recieves an adminPM.
## The intention is to make adminPMs more visible. (although I fnd popups annoying so this defaults to off)
#POPUP_ADMIN_PM
## Remove the # to allow special 'Easter-egg' events on special holidays such as seasonal holidays and stuff like 'Talk Like a Pirate Day' :3 YAARRR
ALLOW_HOLIDAYS
##Defines the ticklag for the world. 0.9 is the normal one, 0.5 is smoother.
TICKLAG 0.5
## Defines if Tick Compensation is used. It results in a minor slowdown of movement of all mobs, but attempts to result in a level movement speed across all ticks. Recommended if tickrate is lowered.
TICKCOMP 1
## Whether the server will talk to other processes through socket_talk
SOCKET_TALK 0
## Uncomment this to ban use of ToR
#TOR_BAN
## Comment this out to disable automuting
#AUTOMUTE_ON
## How long the delay is before the Away Mission gate opens. Default is half an hour.
GATEWAY_DELAY 6000
## Remove the # to give assistants maint access.
ASSISTANT_MAINT
## Remove the # to enable assistant limiting.
ASSISTANT_LIMIT
## If you enabled assistant limiting set the ratio of assistants to security members default is 2 assistants to 1 officer
ASSISTANT_RATIO 2
## Remove the # to make rounds which end instantly (Rev, Wizard, Malf) to continue until the shuttle is called or the station is nuked.
## Malf and Rev will let the shuttle be called when the antags/protags are dead.
#CONTINUOUS_ROUNDS
## Uncomment to restrict non-admins from using humanoid alien races
#USEALIENWHITELIST
## Comment this to unrestrict the number of alien players allowed in the round. The number represents the number of alien players for every human player.
ALIEN_PLAYER_RATIO 0.2
##Remove the # to let ghosts spin chairs
GHOST_INTERACTION
## Password used for authorizing ircbot and other external tools.
#COMMS_PASSWORD
## Uncomment to enable sending data to the IRC bot.
#USE_IRC_BOT
## Host where the IRC bot is hosted. Port 45678 needs to be open.
#IRC_BOT_HOST localhost
## IRC channel to send information to. Leave blank to disable.
#MAIN_IRC #main
## IRC channel to send adminhelps to. Leave blank to disable adminhelps-to-irc.
#ADMIN_IRC #admin
## Path to the python2 executable on the system. Leave blank for default.
## Default is "python" on Windows, "/usr/bin/env python2" on UNIX.
#PYTHON_PATH pythonw
+26
View File
@@ -0,0 +1,26 @@
# MySQL Connection Configuration
# Server the MySQL database can be found at
# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc.
ADDRESS localhost
# MySQL server port (default is 3306)
PORT 3306
# Database the population, death, karma, etc. tables may be found in
DATABASE paradise
# Username/Login used to access the database
LOGIN mylogin
# Password used to access the database
PASSWORD mypassword
# The following information is for feedback tracking via the blackbox server
FEEDBACK_DATABASE paradise
FEEDBACK_LOGIN mylogin
FEEDBACK_PASSWORD mypassword
# Track population and death statistics
# Comment this out to disable
#ENABLE_STAT_TRACKING
+1 -1
View File
@@ -10,7 +10,7 @@ ADDRESS localhost
PORT 3306
# Database the forum data may be found in
DATABASE tgstation13
DATABASE paradise
# Username/Login used to access the database
LOGIN mylogin
+63
View File
@@ -0,0 +1,63 @@
### HEALTH ###
## level of health at which a mob becomes unconscious (crit)
HEALTH_THRESHOLD_CRIT -0
## level of health at which a mob becomes dead
HEALTH_THRESHOLD_DEAD -100
## Determines whether bones can be broken through excessive damage to the organ
## 0 means bones can't break, 1 means they can
BONES_CAN_BREAK 1
## Determines whether limbs can be amputated through excessive damage to the organ
## 0 means limbs can't be amputated, 1 means they can
LIMBS_CAN_BREAK 1
## multiplier which enables organs to take more damage before bones breaking or limbs being destroyed
## 100 means normal, 50 means half
ORGAN_HEALTH_MULTIPLIER 100
## multiplier which influences how fast organs regenerate naturally
## 100 means normal, 50 means half
ORGAN_REGENERATION_MULTIPLIER 100
### REVIVAL ###
## whether pod plants work or not
REVIVAL_POD_PLANTS 1
## whether cloning tubes work or not
REVIVAL_CLONING 1
## amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite)
REVIVAL_BRAIN_LIFE -1
### MOB MOVEMENT ###
## We suggest editing these variabled in-game to find a good speed for your server. To do this you must be a high level admin. Open the 'debug' tab ingame. Select "Debug Controller" and then, in the popup, select "Configuration". These variables should have the same name.
## These values get directly added to values and totals in-game. To speed things up make the number negative, to slow things down, make the number positive.
## These modify the run/walk speed of all mobs before the mob-specific modifiers are applied.
RUN_SPEED 1
WALK_SPEED 3
## The variables below affect the movement of specific mob types.
HUMAN_DELAY 0
ROBOT_DELAY 0
MONKEY_DELAY 0
ALIEN_DELAY 0
METROID_DELAY 0
ANIMAL_DELAY 0
### ROUNDSTART SILICON LAWS ###
## This controls what the AI's laws are at the start of the round.
## Set to 0/commented for "off", silicons will just start with Asimov.
## Set to 1 for "custom", silicons will start with the custom laws defined in silicon_laws.txt. (If silicon_laws.txt is empty, the AI will spawn with asimov and Custom boards will auto-delete.)
## Set to 2 for "random", silicons will start with a random lawset picked from (at the time of writing): P.A.L.A.D.I.N., Corporate, Asimov. More can be added by changing the law datum paths in ai_laws.dm.
DEFAULT_LAWS 2
+37
View File
@@ -0,0 +1,37 @@
Captain=1
Head of Personnel=1
Head of Security=1
Chief Engineer=1
Research Director=1
Chief Medical Officer=1
Station Engineer=5
Roboticist=1
Medical Doctor=5
Geneticist=2
Virologist=1
Scientist=3
Chemist=2
Bartender=1
Botanist=2
Chef=1
Janitor=1
Quartermaster=1
Shaft Miner=3
Warden=1
Detective=1
Security Officer=5
Assistant=-1
Atmospheric Technician=4
Cargo Technician=3
Chaplain=1
Lawyer=2
Librarian=1
AI=1
Cyborg=1
+5
View File
@@ -0,0 +1,5 @@
<h1>Welcome to Space Station 13!</h1>
-<i>This server is running <a href="http://nanotrasen.se/">Paradise's</a> modification of the <a href="http://baystation12.net/">Baystation 12</a> and <a href="http://ss13.eu/">/tg/station13</a> SS13 code.</i>
<br><br>
<strong>GitHub:</strong> <a href="https://github.com/ParadiseSS13/Paradise">https://github.com/ParadiseSS13/Paradise</a>
+11
View File
@@ -0,0 +1,11 @@
<html>
<head><title>Server Rules</title></head>
<body>
<!--
Example: paradise rules embed.
<iframe width='100%' height='100%' src="http://nanotrasen.se/phpBB3/viewtopic.php?f=10&t=44" frameborder="0" id="main_frame"></iframe>
-->
</body>
</html>
+13
View File
@@ -0,0 +1,13 @@
Blade of Grass Bent Before Wind
Glimmer Of The Stars
The Ripple Of the Waves
Colors Of Dusk
The Still Of Night
Silence Of The Wind
Gentle Breeze of the Summer Wind
Glistening Water under the Blazing Sun
Child of the Scorching Sun
Blessed Plant-ling of Eternal Fields
Grass-walker of the Soothing Plains
Element of the Undying Fiona
Spawn of Mother Nature's Busum
+2 -2
View File
@@ -5064,6 +5064,7 @@
"bTt" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/sorting)
"bTu" = (/obj/item/weapon/storage/box,/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/simulated/floor,/area/quartermaster/sorting)
"bTv" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/clipboard,/obj/item/weapon/pen/red{pixel_x = 2; pixel_y = 6},/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/sorting)
"bTw" = (/obj/structure/closet/secure_closet/guncabinet,/obj/machinery/camera/motion{c_tag = "Gamma Armory Entrance"; network = list("SS13")},/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/pistol{name = "pistol"},/obj/item/weapon/gun/projectile/automatic/pistol{name = "pistol"},/obj/item/weapon/gun/projectile/automatic/pistol{name = "pistol"},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"bTy" = (/obj/structure/table,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/sorting)
"bTz" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/sorting)
"bTA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/quartermaster/sorting)
@@ -8628,7 +8629,6 @@
"dkm" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/chem_grenade/incendiary{name = "Incendiary Grenade"},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"dkn" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchenknife/combat,/obj/item/weapon/kitchenknife/combat,/obj/item/weapon/kitchenknife/combat,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"dko" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/weapon/gun/projectile/shotgun/combat,/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"dkp" = (/obj/structure/closet/secure_closet/guncabinet,/obj/machinery/camera/motion{c_tag = "Gamma Armory Entrance"; network = list("SS13")},/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/gun/projectile/automatic/pistol,/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"dkq" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"dkr" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"dks" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/weapon/gun/rocketlauncher,/turf/simulated/floor/engine,/area/shuttle/gamma/space)
@@ -13032,7 +13032,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUkcUkcUkcUkcUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaacUkcUkcUkcUkcUkcUkdkldkmdkncUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaacUkdkodkpdkqdkrdksdktdktdktcUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaacUkdkobTwdkqdkrdksdktdktdktcUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaacUkdktdktdktdktdktdktdkudkvcUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaacUkdkwdkxdkxdkxdkydkzdkAdkxcUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaadkBdkCdkCdkCdkCdkDdkEdkFdkGcUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa