From 6281cccbb3d3756d8abd0e3891ae052c60eb42e6 Mon Sep 17 00:00:00 2001 From: Pratyush Desai Date: Tue, 9 Jan 2024 21:29:19 +0530 Subject: [PATCH] template and sample configs Signed-off-by: Pratyush Desai --- ktx/ban_ip.cfg | 0 ktx/ktx.cfg | 122 +++++++++++++++++++++++++++++++++++++++ ktx/listip.cfg | 0 ktx/matchless.cfg | 23 ++++++++ ktx/mvdsv.cfg | 91 +++++++++++++++++++++++++++++ ktx/port_28501.cfg | 28 +++++++++ ktx/port_template.cfg | 24 ++++++++ ktx/pwd.cfg | 2 + ktx/server.cfg | 29 ++++++++++ ktx/vip_ip.cfg | 18 ++++++ qtv/qtv_sample.cfg | 18 ++++++ qtv/qtv_template.cfg | 14 +++++ qwfwd/qwfwd_sample.cfg | 10 ++++ qwfwd/qwfwd_template.cfg | 8 +++ 14 files changed, 387 insertions(+) create mode 100644 ktx/ban_ip.cfg create mode 100644 ktx/ktx.cfg create mode 100644 ktx/listip.cfg create mode 100644 ktx/matchless.cfg create mode 100644 ktx/mvdsv.cfg create mode 100644 ktx/port_28501.cfg create mode 100644 ktx/port_template.cfg create mode 100644 ktx/pwd.cfg create mode 100644 ktx/server.cfg create mode 100644 ktx/vip_ip.cfg create mode 100644 qtv/qtv_sample.cfg create mode 100644 qtv/qtv_template.cfg create mode 100644 qwfwd/qwfwd_sample.cfg create mode 100644 qwfwd/qwfwd_template.cfg diff --git a/ktx/ban_ip.cfg b/ktx/ban_ip.cfg new file mode 100644 index 0000000..e69de29 diff --git a/ktx/ktx.cfg b/ktx/ktx.cfg new file mode 100644 index 0000000..c0cb93a --- /dev/null +++ b/ktx/ktx.cfg @@ -0,0 +1,122 @@ +// server +set k_minrate 2500 // minimum rate setting for players/spectators +set sv_maxrate 50000 // maximum rate setting for players/spectators +set k_autoreset 1 // exec configs/reset.cfg when last player leaves +set k_noframechecks 1 // check for fps/speed manipulation (0 = no, 1 = yes) +set k_no_fps_physics 0 // fps independent physics (0 = off, 1 = on) +set k_short_gib 0 // remove gibs after 2 seconds (0 = no, 1 = yes) +set k_exclusive 0 // number of players gets locked on game start (0 = no, 1 = yes) +set k_master 0 // only let admins change match settings (0 = no, 1 = yes) +set k_admins 1 // allow admins on server (0 = no, 1 = yes) +set k_lockmax 32 // maximum number of teams in game +set k_lockmin 0 // minimum number of teams in game +set k_membercount 1 // minimum number of players in each team to start match +set k_lock_hdp 0 // allow handicap (0 = yes, 1 = no) +set k_count 10 // countdown before match starts (seconds) +set k_idletime 0 // after how many seconds the idlebot kick players who are not ready (0 = disable) + +set k_extralog 0 // log extra information (0 = no, 1 = yes) + +// gameplay +set k_highspeed 320 // maximum allowed runspeed (cmd speed will switch between this setting and sv_maxspeed) +set k_timetop 30 // maximum time in minutes allocateable by a player for a game +set k_dm2mod 1 // modified deathmatch 2 mode (0 = standard qw dmm2, 1 = modified dmm2) +set k_midair 0 // midair (0 = off, 1 = on) +set k_yawnmode 0 // yawnmode (0 = off, 1 = on) +set k_pow 0 // powerups (0 = off, 1 = on) +set dq 0 // drop quad (0 = off, 1 = on) +set dr 0 // drop ring (0 = off, 1 = on) +set dp 1 // drop backpacks (0 = off, 1 = on) +set k_dis 1 // discharge (0 = off, 1 = on, 2 = only discharge players in liquid) +set k_666 0 // respawn 666 (0 = off, 1 = on) +set k_bzk 0 // berzerk (0 = off, 1 = on) +set k_btime 20 // berzerk time (seconds) +set k_frp 0 // fairpacks (0 = drop equipped weapon, 1 = drop best weapon, 2 = drop last fired weapon) +set k_overtime 1 // overtime mode (0 = off, 1 = time, 2 = suddendeath) +set k_exttime 3 // overtime length in minutes if k_overtime = 1 +set k_fallbunny 1 // fallbunny (0 = off (broken ankle), 1 = on (standard qw behaviour)) +set k_disallow_kfjump 1 // kfjump (0 = on, 1 = off) +set k_disallow_krjump 1 // krjump (0 = on, 1 = off) +set k_teamoverlay 0 // team overlay (0 = disabled, 1 = enabled) +set k_free_mode 5 // who can issue XonX/ffa/ctf commands (0 = noone, 1 = admins, 2 = elected admins, 3 = judges, 4 = elected judges, 5 = all) + +set k_spw 3 // spawn mode (0 = qw respawns, 1 = kombat teams spawn safety, 2 = kombat teams respawns, 3 = ktx respawns) +set k_spm_custom_model 1 // use new spawn.mdl instead of goldkey to show spawn locations (0 = use goldkey, 1 = use spawn.mdl) +set k_spm_glow 1 // enable yellow glow for spawn markers (0 = off, 1 = on) +set k_spm_show 0 // Show spawn point markers (0 = off, 1 on) + +// visible weapons +set k_allow_vwep 1 // allow visible weapons on server (0 = no, 1 = yes) +set k_vwep 0 // enable visible weapons (0 = off, 1 = on) + +// instagib +set k_instagib 2 // instagib (0 = off, 1 = fast coilgun, 2 = slow coilgun) +set k_instagib_custom_models 1 // custom models for instagib mode (0 = no, 1 = yes) + +// dmm4 +set dmm4_invinc_time 0 // spawn invincibility time for dmm4 in seconds (-1 = disable, 0 = default (2 seconds)) +set k_dmm4_gren_mode 0 // grenade explosions (0 = default, 1 = only on direct impact) +set k_disallow_weapons 16 // weapons allowed in dmm4 (bit mask): + // 1=sg, 2=ssg, 4=ng, 8=sng, 16=gl, 32=rl, 64=lg, 4096=axe + +// map support +set add_q_aerowalk 1 // add quad on aerowalk (0 = no, 1 = yes) +set k_end_tele_spawn 0 // remove tele spawn on map end (0 = yes, 1 = no) +set k_remove_end_hurt 1 // end modifications (0 = no modifications, 1 = remove hurt and changelevel triggers, 2 = remove hurt trigger) + +// ctf +set k_ctf_custom_models 1 // ctf models (0 = use original quake models, 1 = use ctf models) + +// prewar +set k_prewar 1 // prewar setting (0 = prewar fire is disallowed, 1 = prewar fire is allowed, 2 = no fire or jump until ready) +set k_sready 1 // players glow when not ready (0 = no, 1 = yes) +set k_freeze 0 // freeze platforms and doors before matchstart (0 = no, 1 = yes) + +// race mode +set k_race_simultaneous 1 // multi player race mode on/off + +// timing players +set allow_timing 0 // timing/lagged players manipulation (0 = off, 1 = on) +set timing_players_time 6 // how long a player should lag before manipulation starts (seconds) +set timing_players_action 1 // timing/lagged players manipulation (bit mask): + // 1=info, 2=glow, 4=invincible, 8=autokpause + +// demo recording +set demo_tmp_record 1 // enable mvd-autorecording (0 = off) +set demo_skip_ktffa_record 0 // record ffa games (0 = yes, 1 = no) +set demo_scoreslength 6 // how many seconds to show score table at end of game +set k_demo_mintime 360 // if the game is breaked, save demo if this many seconds has passed +set k_demoname_date "%Y%m%d-%H%M" // will add date at end of demoname in form of YYYY-MM-DD +set k_demotxt_format "json" // .txt files generated next to .mvd files will be in json format + +// central server integration +set sv_www_address "https://badplace.eu" // URL to send match/race results to +set sv_www_authkey "" // contact meag to find out what string to put here + +// voting +set k_allowvoteadmin 1 // allow admin election (0 = no, 1 = yes) +set k_lockmap 0 // prevent players from changing map (0 = no, 1 = yes) +set k_vp_break 51 // vote percentage for breaking +set k_vp_admin 75 // vote percentage for admin election +set k_vp_captain 51 // vote percentage for captain election +set k_vp_map 51 // vote percentage for map change +set k_vp_pickup 51 // vote percentage for pickup +set k_vp_rpickup 51 // vote percentage for random pickup + +// flood protection +set k_fp 1 // floodprot: max X messages per Y seconds, else silence for Z seconds (1 = 9 1 1, 2 = 4 1 5, 3 = 5 3 7) +set k_cmd_fp_kick 3 // warnings given before kicking +set k_cmd_fp_dontkick 1 // kick command flooders (0 = on, 1 = off) +set k_cmd_fp_disabled 0 // flood protection (0 = on, 1 = off) + +// practice +set allow_toggle_practice 5 // toggle practice mode (0 = noone, 1 = admins, 2 = elected admins, 3 = judges, 4 = elected judges, 5 = all) +set lock_practice 1 // lock practice mode (0 = unlock on reset, 1 = allow_toggle_practice, 2 = locked) +set srv_practice_mode 0 // practice mode (0 = off, 1 = on) + +// spectators +set k_ann 0 // announce spectator join/quits during game (0 = no, 1 = yes) +set k_spectalk 0 // spectators can talk to players during game (0 = no, 1 = yes) +set k_spec_info 1 // moreinfo (bit mask): + // 0=infospec off, 1=infospec on, 2=infolock admins + diff --git a/ktx/listip.cfg b/ktx/listip.cfg new file mode 100644 index 0000000..e69de29 diff --git a/ktx/matchless.cfg b/ktx/matchless.cfg new file mode 100644 index 0000000..86cdadf --- /dev/null +++ b/ktx/matchless.cfg @@ -0,0 +1,23 @@ +//don't edit this file + +// match/matchless mode +set k_matchless 1 // run ktx as a regular match server or as a matchless (ffa) server (0 = regular, 1 = matchless) +set k_mode 3 // server mode (1 = duel, 2 = team, 3 = ffa, 4 = ctf) + +// matchless settings +set k_matchless_countdown 0 // countdown in matchless mode (0 = off, 1 = on) +set k_pow_min_players 1 // number of players on server required for powerups to be turned on +set k_pow_check_time 10 // how often should ktx check if the k_pow_min_players requirement has been met (seconds) +set k_no_vote_map 0 // allow map voting (0 = allow map voting, 1 = disallow map voting) +set k_no_vote_break 0 // allow vote break (0 = allow vote break, 1 = disallow vote break) + +// samelevel +samelevel 0 // change level after match ends + +// map rotation + +set k_ml_0 "dm2" +set k_ml_1 "dm3" +set k_ml_2 "e1m2" +//set k_ml_3 "e1m3" // etc + diff --git a/ktx/mvdsv.cfg b/ktx/mvdsv.cfg new file mode 100644 index 0000000..4fe7d22 --- /dev/null +++ b/ktx/mvdsv.cfg @@ -0,0 +1,91 @@ +fraglimit 0 // fraglimit +timelimit 20 // timelimit +teamplay 2 // teamplay +deathmatch 1 // deathmatch mode +maxclients 32 // maximum clients +maxspectators 12 // maximum spectators +maxvip_spectators 4 // maximum vip spectators +timeout 65 // seconds to wait for zombies +pausable 0 // pausable +samelevel 1 // same level after match ends +floodprot 10 1 1 // flood protection - allow x messages per y seconds, else silence for z seconds +floodprotmsg "quiet!" // flood protection message for client +sv_gamedir qw // gamedir +sv_maxspeed 320 // maximum player (walking) speed +sv_mintic 0.01 // mintic +sv_maxtic 0.03 // maxtic +sv_loadentfiles 1 // load .ent files (0 = no, 1 = yes) +sv_loadentfiles_dir ctf // subdirectory of maps/ where ctf .ent files are located +sv_getrealip 2 // get real ip (0 = off, 1 = on connect failure, 2 = on failure drop) +sv_use_dns 0 // dns lookup (0 = off, 1 = on) +sv_hashpasswords 1 // hash account passwords (0 = off, 1 = on) +sv_crypt_rcon 1 // rcon encryption (0 = off, 1 = on) +sv_timestamplen 60 // time (seconds) during rcon command which encryption is valid +sv_rconlim 3 // limit of rcon requests per second +sv_unfake 1 // auto unfake any mm1 messages (0 = no, 1 = yes) +sv_kicktop 1 // kick topcolor spammers (0 = no, 1 = yes) +sv_speedcheck 1 // anti speed cheat code from AM101, slows cheaters down to normal speed +sv_mapcheck 1 // check map checksums (0 = no, 1 = yes) +sv_specprint 0 // show spectators some info (1 = centerprint, 2 = sprint, 4 = stuffcmd) +sv_reconnectlimit 5 // throttle reconnecting players for x seconds +sv_forcespec_onfull 1 // turn connecting players into spectators if the server is full (0 = no, 1 = yes) +sv_sayteam_to_spec 0 // send say_team messages to spectators (0 = no, 1 = yes) +sv_reliable_sound 1 // reliable sounds channel, prevents missing sounds during PL (0 = off, 1 = on) +sys_select_timeout 10000 // timeout in micro seconds for function select in main loop +sys_restart_on_error 0 // restart on error (0 = no, 1 = yes) + +sv_progtype 1 // progtype (0 = .dat, 1 = .so/.dll, 2 = .qvm) +sv_enableprofile 0 // profiling of qvm mods (0 = off, 1 = on) +sv_progsname qwprogs // name of mod file without extention + +sv_forcenick 0 // force player name to the name in accounts file (0 = no, 1 = yes) + +serverinfo fpd 206 // fpd values from qizmo.txt + // 1 = disable %-reporting + // 2 = disable use of powerup timer + // 4 = disable use of soundtrigger + // 8 = disable use of lag features + // 16 = make qizmo report any changes in lag settins + // 32 = silent %e enemy vicinity reporting (reporter doesn't see the message) + // 64 = spectators can't talk to players and vice versa (voice) + // 128 = silent %x and %y (reporter does not see the message) + // 256 = disable skin forcing + // 512 = disable color forcing + +serverinfo pm_ktjump 1 // jumpfix (0 = off, 1 = on) +serverinfo maxfps 77 // maxfps + +// ktx vip password values (do not change) +vip_values "1 8 4 20 12 28" + +// mvd recording +sv_demoExtraNames 0 // show player names in demo filenames (0 = show team only, 1 = show player names) +sv_demotxt 2 // create demo .txt (0 = off, 1 = on - .txt, 2 = on - .json) +sv_demodir demos // demos directory name +sv_demoDirAlt "" // alternative folder for demo storage +sv_maxdownloadrate 100000 // maximum download client rate +sv_downloadchunksperframe 4 // increase chunked download speed rate (1=77kB/s, 4=308kB/s) +sv_onrecordfinish mvdfinish // name.qws will be started after demo recording is finished +sv_demoMaxDirSize 4096000 // maximum demos dir size. 4096000=4GB +sv_demoClearOld 10 // if total demos size > sv_demoMaxDirSize, this will delete x demos +sv_demoUseCache 1 // use cache when writing demos (0 = off, 1 = on) +sv_demofps 77 // record demos at 77fps instead of the default 30fps +fs_cache 0 // something to do with demos and lag (0 = preferred) + +// downloading +allow_download 1 // allow downloads from server (0 = no, 1 = yes) +allow_download_maps 1 // allow map downloads from server (0 = no, 1 = yes) +allow_download_pakmaps 0 // allow pak map downloads from server (0 = no, 1 = yes) +allow_download_skins 1 // allow skin downloads from server (0 = no, 1 = yes) +allow_download_sounds 1 // allow sound downloads from server (0 = no, 1 = yes) +allow_download_models 1 // allow model downloads from server (0 = no, 1 = yes) +allow_download_demos 1 // allow demo downloads from server (0 = no, 1 = yes) +allow_download_other 1 // allow other downloads from server (0 = no, 1 = yes) + +// minping +sv_minping 0 // minping for server (0 = off) +sv_enable_cmd_minping 0 // cmd minping (0 = off, 1 = on) + +// display this url to people downloading maps from the server +download_map_url "http://maps.quakeworld.nu/" + diff --git a/ktx/port_28501.cfg b/ktx/port_28501.cfg new file mode 100644 index 0000000..6bd7c3c --- /dev/null +++ b/ktx/port_28501.cfg @@ -0,0 +1,28 @@ +// motd (max 15 rows) - this is the welcome message displayed when you connect to a server +//set k_motd1 "" // auto generated server name at the bottom of the config +set k_motd2 " " +set k_motd3 "Available game modes:" +set k_motd4 "1on1, 2on2, 4on4, 10on10, XonX, ffa, ctf," +set k_motd5 "hoonymode, 2on2on2, 3on3on3, 4on4on4, race, wipeout" // etc.. + +set k_motd_time "5" // time motd is displayed in seconds + + +// edit the lines below if you want different gamemodes on this port +// matchless mode +set k_matchless 0 // run ktx as a regular match server or as a matchless (ffa) server (0 = regular, 1 = matchless) +set k_use_matchless_dir 1 // use configs/usermodes/matchless instead of [...]/ffa (0 = no, 1 = yes) + +// free modes +set k_defmode 2on2 // default mode on server +set k_allowed_free_modes 4095 // allowed free modes (bit mask): + // 1=1on1, 2=2on2, 4=3on3, 8=4on4, 16=10on10, 32=ffa, 64=ctf, 128=hoonymode, 256=2on2on2, 512=3on3on3, 1024=4on4on4, 2048=XonX +set k_defmap maphub_v1 // server homemap. server will change to this when last player leaves the server +set k_mode 2 // server mode (1 = duel, 2 = team, 3 = ffa, 4 = ctf) + +// generated server info +set k_motd1 "GibCasa FFA EU-DE #1" +hostname "GibCasa FFA EU-DE:28501" +sv_admininfo "mog " +sv_serverip "192.168.1.5:28501" +qtv_streamport "28501" diff --git a/ktx/port_template.cfg b/ktx/port_template.cfg new file mode 100644 index 0000000..4549410 --- /dev/null +++ b/ktx/port_template.cfg @@ -0,0 +1,24 @@ +// motd (max 15 rows) - this is the welcome message displayed when you connect to a server +//set k_motd1 "" // auto generated server name at the bottom of the config +set k_motd2 " " +set k_motd3 "Available game modes:" +set k_motd4 "1on1, 2on2, 4on4, 10on10, XonX, ffa, ctf," +set k_motd5 "hoonymode, 2on2on2, 3on3on3, 4on4on4, race, wipeout" // etc.. + +set k_motd_time "5" // time motd is displayed in seconds + + +// edit the lines below if you want different gamemodes on this port +// matchless mode +set k_matchless 0 // run ktx as a regular match server or as a matchless (ffa) server (0 = regular, 1 = matchless) +set k_use_matchless_dir 1 // use configs/usermodes/matchless instead of [...]/ffa (0 = no, 1 = yes) + +// free modes +set k_defmode 2on2 // default mode on server +set k_allowed_free_modes 4095 // allowed free modes (bit mask): + // 1=1on1, 2=2on2, 4=3on3, 8=4on4, 16=10on10, 32=ffa, 64=ctf, 128=hoonymode, 256=2on2on2, 512=3on3on3, 1024=4on4on4, 2048=XonX +set k_defmap maphub_v1 // server homemap. server will change to this when last player leaves the server +set k_mode 2 // server mode (1 = duel, 2 = team, 3 = ffa, 4 = ctf) + +// generated server info + diff --git a/ktx/pwd.cfg b/ktx/pwd.cfg new file mode 100644 index 0000000..1bea493 --- /dev/null +++ b/ktx/pwd.cfg @@ -0,0 +1,2 @@ +rcon_password "" +qtv_password "" diff --git a/ktx/server.cfg b/ktx/server.cfg new file mode 100644 index 0000000..8b65cd7 --- /dev/null +++ b/ktx/server.cfg @@ -0,0 +1,29 @@ +exec mvdsv.cfg // server settings +exec ktx.cfg // mod settings +exec pwd.cfg // password settings +exec vip_ip.cfg // vip ip settings +exec ban_ip.cfg // ban list + +setmaster master.quakeservers.net:27000 qwmaster.ocrana.de:27000 master.quakeworld.nu:27000 qwmaster.fodquake.net:27000 + +// create localinfo 1000-2000 for existing maps +check_maps + +// turn off serverip cvar +sv_getrealip 0 + +// default to bot mode off when map is reset (saves some CPU) +set k_fb_enabled 0 + +// .txt files generated next to .mvd files will be in json format +set k_demotxt_format json + +// to setup user auth and race results reporting, uncomment the following 2 lines and ask meag for a sv_www_authkey +// also make sure the server is compiled with libcurl support +//sv_www_address https://badplace.eu/ // URL to send match/race results to +//sv_www_authkey "" // this is unique to each server + +sv_logdir logs +logplayers +logrcon + diff --git a/ktx/vip_ip.cfg b/ktx/vip_ip.cfg new file mode 100644 index 0000000..678d9c0 --- /dev/null +++ b/ktx/vip_ip.cfg @@ -0,0 +1,18 @@ +// IP BASED VIP +// +// 1 - normal VIP (default) +// 2 - not kickable VIP by elected admins +// 4 - VIP with admin rights +// 8 - VIP with demo admin rights +// 16 - VIP with judge rights +// 32 - VIP with rcon admin rights +// +// examples: +// vip_addip 1.2.3.4 2 = not kickable VIP +// vip_addip 1.2.3.4 6 = not kickable VIP with admin rights +// vip_addip 1.2.3.4 63 = VIP with all permissions + +// CHANGE & UNCOMMENT THESE! (1=normal vip, 6=not kickable real admin) +//vip_password "changethis changethistoo" +//vip_values "1 6 " + diff --git a/qtv/qtv_sample.cfg b/qtv/qtv_sample.cfg new file mode 100644 index 0000000..e8745ca --- /dev/null +++ b/qtv/qtv_sample.cfg @@ -0,0 +1,18 @@ +maxclients 100 +maxservers 100 +floodprot 4 2 2 +allow_http 1 +allow_download_other 1 +allow_download_demos 1 +allow_download_maps 1 +allow_download_sounds 1 +allow_download_models 1 +allow_download_skins 1 +allow_download 1 +^M +// generated +hostname "" +admin_password "" +mvdport 28000 +address 192.168.122.124:28000 +qtv 192.168.122.124:28501 diff --git a/qtv/qtv_template.cfg b/qtv/qtv_template.cfg new file mode 100644 index 0000000..ab37b56 --- /dev/null +++ b/qtv/qtv_template.cfg @@ -0,0 +1,14 @@ +maxclients 100 +maxservers 100 +floodprot 4 2 2 +allow_http 1 +allow_download_other 1 +allow_download_demos 1 +allow_download_maps 1 +allow_download_sounds 1 +allow_download_models 1 +allow_download_skins 1 +allow_download 1 + +// generated + diff --git a/qwfwd/qwfwd_sample.cfg b/qwfwd/qwfwd_sample.cfg new file mode 100644 index 0000000..0c6ff43 --- /dev/null +++ b/qwfwd/qwfwd_sample.cfg @@ -0,0 +1,10 @@ +// set net_ip // specify IP-address listen to (default: all IPs)^M +set sys_readstdin 0 // allows qwfwd to run in background^M +// set developer // enabled developer (0=off, 1=enabled)^M +set masters master.quakeservers.net:27000 qwmaster.ocrana.de:27000 master.quakeworld.nu:27000 qwmaster.fodquake.net:27000^M +set masters_heartbeat 1 // allow sending heartbeats to masters (0=off, 1=enabled)^M +set masters_query 1 // query the master server list (0=off, 1=enabled)^M +^M +// generated^M +set hostname "GibCasa FFA EU-DE QWfwd" +set net_port 30000 diff --git a/qwfwd/qwfwd_template.cfg b/qwfwd/qwfwd_template.cfg new file mode 100644 index 0000000..defd2f0 --- /dev/null +++ b/qwfwd/qwfwd_template.cfg @@ -0,0 +1,8 @@ +// set net_ip // specify IP-address listen to (default: all IPs) +set sys_readstdin 0 // allows qwfwd to run in background +// set developer // enabled developer (0=off, 1=enabled) +set masters master.quakeservers.net:27000 qwmaster.ocrana.de:27000 master.quakeworld.nu:27000 qwmaster.fodquake.net:27000 +set masters_heartbeat 1 // allow sending heartbeats to masters (0=off, 1=enabled) +set masters_query 1 // query the master server list (0=off, 1=enabled) + +// generated