r5102 do not allow NULL IP allocation type in database
[racktables-incomplete-works] / wwwroot / inc / install.php
CommitLineData
0e7f2155 1<?php
5b4523dc 2
cddbb9fd
DO
3# This file is a part of RackTables, a datacenter and server room management
4# framework. See accompanying file "COPYING" for the full copyright and
5# licensing information.
6
e37cfe5f
DO
7function renderInstallerHTML()
8{
0e7f2155
DO
9$stepfunc[1] = 'not_already_installed';
10$stepfunc[2] = 'platform_is_ok';
11$stepfunc[3] = 'init_config';
96e102b2
DO
12$stepfunc[4] = 'init_database_static';
13$stepfunc[5] = 'init_database_dynamic';
14$stepfunc[6] = 'congrats';
0e7f2155
DO
15
16if (isset ($_REQUEST['step']))
17 $step = $_REQUEST['step'];
18else
19 $step = 1;
20
21if ($step > count ($stepfunc))
22{
790a60e8
DO
23 $root = (empty($_SERVER['HTTPS']) or $_SERVER['HTTPS'] == 'off') ? 'http://' : 'https://';
24 $root .= isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80'?'':$_SERVER['SERVER_PORT']));
25 // "Since PHP 4.3.0, you will often get a slash or a dot back from
26 // dirname() in situations where the older functionality would have given
27 // you the empty string."
28 // "On Windows, both slash (/) and backslash (\) are used as directory
29 // separator character."
30 $root .= strtr (dirname ($_SERVER['PHP_SELF']), '\\', '/');
31 if (substr ($root, -1) != '/')
32 $root .= '/';
33 header ("Location: ${root}");
0e7f2155
DO
34 exit;
35}
36$title = "RackTables installation: step ${step} of " . count ($stepfunc);
878512c6 37header ('Content-Type: text/html; charset=UTF-8');
e37cfe5f 38?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
f48dc2cc 39<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
0e7f2155 40<head><title><?php echo $title; ?></title>
e37cfe5f
DO
41<style type="text/css">
42.tdleft {
43 text-align: left;
44}
45
46.trok {
47 background-color: #80FF80;
48}
49
50.trwarning {
51 background-color: #FFFF80;
52}
53
54.trerror {
55 background-color: #FF8080;
56}
57</style>
f48dc2cc
DO
58</head>
59<body>
0e7f2155 60<center>
f48dc2cc 61<?php
f92287f4
DO
62echo "<h1>${title}</h1><p>";
63
64echo "</p><form method=post>\n";
65$testres = $stepfunc[$step] ();
66if ($testres)
67{
68 $next_step = $step + 1;
ae067ef3 69 echo "<br><input type=submit value='proceed'>";
f92287f4
DO
70}
71else
72{
73 $next_step = $step;
ae067ef3 74 echo "<br><input type=submit value='retry'>";
f92287f4
DO
75}
76echo "<input type=hidden name=step value='${next_step}'>\n";
77
78?>
79</form>
80</center>
81</body>
82</html>
83
84<?php
e37cfe5f
DO
85}
86
0e7f2155
DO
87// Check if the software is already installed.
88function not_already_installed()
f48dc2cc 89{
b00cc78c
AA
90 global $found_secret_file, $pdo_dsn;
91 if ($found_secret_file and isset ($pdo_dsn))
f92287f4
DO
92 {
93 echo 'Your configuration file exists and seems to hold necessary data already.<br>';
94 return FALSE;
95 }
96 else
97 {
43f06d53 98 echo 'There seem to be no existing installation here, I am going to setup one now.<br>';
f92287f4
DO
99 return TRUE;
100 }
f48dc2cc
DO
101}
102
0e7f2155
DO
103// Check that we can write to configuration file.
104// If so, ask for DB connection paramaters and test
105// the connection. Neither save the parameters nor allow
106// going further until we succeed with the given
107// credentials.
108function init_config ()
109{
f3a3c66d 110 function print_form
f92287f4 111 (
f3a3c66d
DO
112 $use_tcp = TRUE,
113 $tcp_host = 'localhost',
114 $tcp_port = '',
115 $unix_socket = '/var/lib/mysql/mysql.sock',
116 $database = 'racktables_db',
117 $username = 'racktables_user',
118 $password = ''
f92287f4
DO
119 )
120 {
121 echo "<input type=hidden name=save_config value=1>\n";
f3a3c66d 122 echo '<h3>Server-side MySQL setup of the database:</h3><div align=left><pre class=trok>';
d6958fdb 123 echo "mysql&gt;\nCREATE DATABASE racktables_db CHARACTER SET utf8 COLLATE utf8_general_ci;\n";
f3a3c66d 124 echo "GRANT ALL PRIVILEGES ON racktables_db.* TO racktables_user@localhost IDENTIFIED BY 'MY_SECRET_PASSWORD';\n</pre></div>";
f92287f4 125 echo '<table>';
f3a3c66d
DO
126 echo '<tr><td><label for=conn_tcp>TCP connection</label></td>';
127 echo '<td><input type=radio name=conn value=conn_tcp id=conn_tcp' . ($use_tcp ? ' checked' : '') . '></td></tr>';
128 echo '<tr><td><label for=conn_unix>UNIX socket</label></td>';
129 echo '<td><input type=radio name=conn value=conn_unix id=conn_unix' . ($use_tcp ? '' : ' checked') . '></td></tr>';
130 echo "<tr><td><label for=mysql_host>TCP host:</label></td>";
131 echo "<td><input type=text name=mysql_host id=mysql_host value='${tcp_host}'></td></tr>\n";
132 echo "<tr><td><label for=mysql_port>TCP port (if not 3306):</label></td>";
133 echo "<td><input type=text name=mysql_port id=mysql_port value='${tcp_port}'></td></tr>\n";
134 echo "<tr><td><label for=mysql_socket>UNIX socket:</label></td>";
135 echo "<td><input type=text name=mysql_socket id=mysql_socket value='${unix_socket}'></td></tr>\n";
559f11e7 136 echo "<tr><td><label for=mysql_db>database:</label></td>";
f3a3c66d 137 echo "<td><input type=text name=mysql_db id=mysql_db value='${database}'></td></tr>\n";
f92287f4 138 echo "<tr><td><label for=mysql_username>username:</label></td>";
f3a3c66d 139 echo "<td><input type=text name=mysql_username id=mysql_username value='${username}'></td></tr>\n";
f92287f4 140 echo "<tr><td><label for=mysql_password>password:</label></td>";
f3a3c66d 141 echo "<td><input type=password name=mysql_password id=mysql_password value='${password}'></td></tr>\n";
f92287f4 142 echo '</table>';
f3a3c66d
DO
143 }
144 global $path_to_secret_php;
145 if (!is_writable ($path_to_secret_php))
146 {
147 echo "The $path_to_secret_php file is not writable by web-server. Make sure it is.";
148 echo "The following commands should suffice:<pre>touch '$path_to_secret_php'; chmod 666 '$path_to_secret_php'</pre>";
149 echo 'Fedora Linux with SELinux may require this file to be owned by specific user (apache) and/or executing "setenforce 0" for the time of installation. ';
150 echo 'SELinux may be turned back on with "setenforce 1" command.<br>';
151 return FALSE;
152 }
153 if (! array_key_exists ('save_config', $_REQUEST))
154 {
155 print_form();
156 return FALSE;
157 }
158 if (empty ($_REQUEST['mysql_db']) or empty ($_REQUEST['mysql_username']))
159 {
160 print_form
161 (
162 $_REQUEST['conn'] == 'conn_tcp',
163 $_REQUEST['mysql_host'],
164 $_REQUEST['mysql_port'],
165 $_REQUEST['mysql_socket'],
166 $_REQUEST['mysql_db'],
167 $_REQUEST['mysql_username'],
168 $_REQUEST['mysql_password']
169 );
170 echo '<h2 class=trerror>Missing database/username parameter!</h2>';
171 return FALSE;
172 }
173 if ($_REQUEST['conn'] == 'conn_tcp' and empty ($_REQUEST['mysql_host']))
174 {
175 print_form
176 (
177 $_REQUEST['conn'] == 'conn_tcp',
178 $_REQUEST['mysql_host'],
179 $_REQUEST['mysql_port'],
180 $_REQUEST['mysql_socket'],
181 $_REQUEST['mysql_db'],
182 $_REQUEST['mysql_username'],
183 $_REQUEST['mysql_password']
184 );
185 echo '<h2 class=trerror>Missing TCP hostname parameter!</h2>';
186 return FALSE;
187 }
188 if ($_REQUEST['conn'] == 'conn_unix' and empty ($_REQUEST['mysql_socket']))
189 {
190 print_form
191 (
192 $_REQUEST['conn'] == 'conn_tcp',
193 $_REQUEST['mysql_host'],
194 $_REQUEST['mysql_port'],
195 $_REQUEST['mysql_socket'],
196 $_REQUEST['mysql_db'],
197 $_REQUEST['mysql_username'],
198 $_REQUEST['mysql_password']
199 );
200 echo '<h2 class=trerror>Missing UNIX socket parameter!</h2>';
201 return FALSE;
202 }
203 # finally OK to make a connection attempt
204 $pdo_dsn = 'mysql:';
205 switch ($_REQUEST['conn'])
206 {
207 case 'conn_tcp':
208 $pdo_dsn .= 'host=' . $_REQUEST['mysql_host'];
209 if (!empty ($_REQUEST['mysql_port']) and $_REQUEST['mysql_port'] != '3306')
210 $pdo_dsn .= ';port=' . $_REQUEST['mysql_port'];
211 break;
212 case 'conn_unix':
213 $pdo_dsn .= 'unix_socket=' . $_REQUEST['mysql_socket'];
214 break;
215 default:
216 print_form();
217 echo '<h2 class=trerror>form error</h2>';
f92287f4
DO
218 return FALSE;
219 }
559f11e7 220 $pdo_dsn .= ';dbname=' . $_REQUEST['mysql_db'];
f92287f4
DO
221 try
222 {
223 $dbxlink = new PDO ($pdo_dsn, $_REQUEST['mysql_username'], $_REQUEST['mysql_password']);
224 }
225 catch (PDOException $e)
226 {
f3a3c66d
DO
227 print_form
228 (
229 $_REQUEST['conn'] == 'conn_tcp',
230 $_REQUEST['mysql_host'],
231 $_REQUEST['mysql_port'],
232 $_REQUEST['mysql_socket'],
233 $_REQUEST['mysql_db'],
234 $_REQUEST['mysql_username'],
235 $_REQUEST['mysql_password']
236 );
237 echo "<h2 class=trerror>Datase connection failed. Check parameters and try again.</h2>\n";
238 echo "PDO DSN: <tt class=trwarning>${pdo_dsn}</tt><br>";
f92287f4
DO
239 return FALSE;
240 }
e1ae3fb4 241
b00cc78c 242 $conf = fopen ($path_to_secret_php, 'w+');
f92287f4
DO
243 if ($conf === FALSE)
244 {
b00cc78c 245 echo "Error: failed to open $path_to_secret_php for writing";
f92287f4
DO
246 return FALSE;
247 }
d829377c 248 fwrite ($conf, "<?php\n# This file has been generated automatically by RackTables installer.\n");
f92287f4
DO
249 fwrite ($conf, "\$pdo_dsn = '${pdo_dsn}';\n");
250 fwrite ($conf, "\$db_username = '" . $_REQUEST['mysql_username'] . "';\n");
e0dcbf1e 251 fwrite ($conf, "\$db_password = '" . $_REQUEST['mysql_password'] . "';\n\n");
2a622048 252 fwrite ($conf, <<<ENDOFTEXT
d829377c
DO
253
254\$user_auth_src = 'database';
255\$require_local_account = TRUE;
256# Default setting is to authenticate users locally, but it is possible to
257# employ existing LDAP or Apache user accounts. Check RackTables wiki for
258# more information, in particular, this page for LDAP configuration details:
259# http://sourceforge.net/apps/mediawiki/racktables/index.php?title=LDAP
260
261#\$LDAP_options = array
262#(
263# 'server' => 'localhost',
264# 'domain' => 'example.com',
265# 'search_attr' => '',
266# 'search_dn' => '',
b6556a7a
DO
267# // The following credentials will be used when searching for the user's DN:
268# 'search_bind_rdn' => NULL,
269# 'search_bind_password' => NULL,
d829377c
DO
270# 'displayname_attrs' => '',
271# 'options' => array (LDAP_OPT_PROTOCOL_VERSION => 3),
2f9a653f 272# 'use_tls' => 2, // 0 == don't attempt, 1 == attempt, 2 == require
d829377c 273#);
2a622048 274
56a0bd8c
DO
275# This HTML banner is intended to assist users in dispatching their issues
276# to the local tech support service. Its text (in its verbatim form) will
277# be appended to assorted error messages visible in user's browser (including
278# "not authenticated" message). Beware of placing any sensitive information
279# here, it will be readable by unauthorized visitors.
cab16ef4
DO
280#\$helpdesk_banner = '<B>This RackTables instance is supported by Example Inc. IT helpdesk, dial ext. 1234 to report a problem.</B>';
281
2a622048
DO
282
283ENDOFTEXT
284);
f92287f4
DO
285 fwrite ($conf, "?>\n");
286 fclose ($conf);
287 echo "The configuration file has been written successfully.<br>";
0e7f2155 288 return TRUE;
f48dc2cc
DO
289}
290
b00cc78c 291function connect_to_db_or_die ()
96e102b2 292{
96e102b2
DO
293 try
294 {
b00cc78c 295 connectDB();
96e102b2 296 }
b00cc78c 297 catch (RackTablesError $e)
96e102b2
DO
298 {
299 die ('Error connecting to the database');
300 }
301}
302
303function init_database_static ()
0e7f2155 304{
b00cc78c 305 connect_to_db_or_die();
01539ac3 306 global $dbxlink;
485cf8a8
DO
307 if (!isInnoDBSupported())
308 {
309 echo 'InnoDB test failed! Please configure MySQL server properly and retry.';
310 return FALSE;
311 }
01539ac3
DO
312 $result = $dbxlink->query ('show tables');
313 $tables = $result->fetchAll (PDO::FETCH_NUM);
314 $result->closeCursor();
315 unset ($result);
316 if (count ($tables))
317 {
318 echo 'Your database is already holding ' . count ($tables);
319 echo ' tables, so I will stop here and let you check it yourself.<br>';
320 echo 'There is some important data there probably.<br>';
321 return FALSE;
322 }
0e7f2155 323 echo 'Initializing the database...<br>';
96e102b2 324 echo '<table border=1>';
aa004b1a 325 echo "<tr><th>section</th><th>queries</th><th>errors</th></tr>";
b2bdfd89 326 $errlist = array();
3fb336f6 327 foreach (array ('structure', 'dictbase') as $part)
f92287f4 328 {
aa004b1a 329 echo "<tr><td>${part}</td>";
b2bdfd89 330 $nq = $nerrs = 0;
aa004b1a 331 foreach (preg_split ("/;\s*\n/", get_pseudo_file ($part)) as $query)
96e102b2 332 {
5fe42ae4 333 $query = trim($query);
aa004b1a 334 if (empty ($query) or '--' == substr ($query, 0, 2))
96e102b2
DO
335 continue;
336 $nq++;
b2bdfd89
DO
337 if ($dbxlink->exec ($query) === FALSE)
338 {
339 $nerrs++;
340 $errlist[] = $query;
341 }
96e102b2 342 }
b2bdfd89 343 echo "<td>${nq}</td><td>${nerrs}</td></tr>\n";
f92287f4 344 }
3fb336f6 345 // (re)load dictionary by pure PHP means w/o any external file
20ba7f38 346 echo "<tr><td>dictionary</td>";
3fb336f6 347 $nq = $nerrs = 0;
3fb336f6 348 $dictq = array();
ca3d68bd
DO
349 foreach (reloadDictionary() as $query)
350 {
351 $nq++;
352 if ($dbxlink->exec ($query) === FALSE)
3fb336f6 353 {
ca3d68bd
DO
354 $nerrs++;
355 $errlist[] = $query;
3fb336f6 356 }
ca3d68bd 357 }
3fb336f6
DO
358 echo "<td>${nq}</td><td>${nerrs}</td></tr>\n";
359
96e102b2 360 echo '</table>';
b2bdfd89
DO
361 if (count ($errlist))
362 {
363 echo '<pre>The following queries failed:\n';
364 foreach ($errlist as $q)
365 echo "${q}\n\n";
366 echo '</pre>';
367 return FALSE;
368 }
0e7f2155
DO
369 return TRUE;
370}
f48dc2cc 371
96e102b2
DO
372function init_database_dynamic ()
373{
b00cc78c 374 connect_to_db_or_die();
96e102b2 375 global $dbxlink;
43f06d53 376 if (!isset ($_REQUEST['password']) or empty ($_REQUEST['password']))
96e102b2
DO
377 {
378 $result = $dbxlink->query ('select count(user_id) from UserAccount where user_id = 1');
379 $row = $result->fetch (PDO::FETCH_NUM);
380 $nrecs = $row[0];
381 $result->closeCursor();
382 if (!$nrecs)
383 {
384 echo '<table border=1>';
385 echo '<caption>Administrator password not set</caption>';
386 echo '<tr><td><input type=password name=password></td></tr>';
387 echo '</table>';
388 }
43f06d53 389 return FALSE;
96e102b2
DO
390 }
391 else
392 {
93bdb7ba
DO
393 // Never send cleartext password over the wire.
394 $hash = sha1 ($_REQUEST['password']);
79b8ad1e 395 $query = "INSERT INTO `UserAccount` (`user_id`, `user_name`, `user_password_hash`, `user_realname`) " .
93bdb7ba 396 "VALUES (1,'admin','${hash}','RackTables Administrator')";
43f06d53
DO
397 $result = $dbxlink->exec ($query);
398 echo "Administrator password has been set successfully.<br>";
399 return TRUE;
96e102b2 400 }
96e102b2
DO
401}
402
0e7f2155 403function congrats ()
f48dc2cc 404{
01539ac3 405 echo 'Congratulations! RackTables installation is complete. After pressing Proceed you will ';
ad592f37
DO
406 echo 'enter the system. Authenticate with <strong>admin</strong> username.<br>RackTables project has a ';
407 echo "<a href='http://sourceforge.net/apps/mediawiki/racktables/index.php?title=RackTablesAdminGuide'>";
408 echo "wiki</a> and a ";
409 echo "<a href='http://www.freelists.org/list/racktables-users'>mailing list</a> for users. Have fun.<br>";
0e7f2155 410 return TRUE;
f48dc2cc
DO
411}
412
aa004b1a
DO
413function get_pseudo_file ($name)
414{
415 switch ($name)
416 {
417 case 'structure':
418 return <<<END_OF_FILE
419alter database character set utf8;
420set names 'utf8';
421SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
422
423CREATE TABLE `Atom` (
424 `molecule_id` int(10) unsigned default NULL,
425 `rack_id` int(10) unsigned default NULL,
426 `unit_no` int(10) unsigned default NULL,
427 `atom` enum('front','interior','rear') default NULL
428) ENGINE=InnoDB;
429
430CREATE TABLE `Attribute` (
431 `id` int(10) unsigned NOT NULL auto_increment,
86ff26ae 432 `type` enum('string','uint','float','dict','date') default NULL,
aa004b1a
DO
433 `name` char(64) default NULL,
434 PRIMARY KEY (`id`),
435 UNIQUE KEY `name` (`name`)
08aa9c0b 436) ENGINE=InnoDB;
aa004b1a
DO
437
438CREATE TABLE `AttributeMap` (
439 `objtype_id` int(10) unsigned NOT NULL default '1',
440 `attr_id` int(10) unsigned NOT NULL default '1',
441 `chapter_id` int(10) unsigned default NULL,
08aa9c0b
DO
442 UNIQUE KEY `objtype_id` (`objtype_id`,`attr_id`),
443 KEY `attr_id` (`attr_id`),
c7968df3
DO
444 KEY `chapter_id` (`chapter_id`),
445 CONSTRAINT `AttributeMap-FK-chapter_id` FOREIGN KEY (`chapter_id`) REFERENCES `Chapter` (`id`),
08aa9c0b 446 CONSTRAINT `AttributeMap-FK-attr_id` FOREIGN KEY (`attr_id`) REFERENCES `Attribute` (`id`)
aa004b1a
DO
447) ENGINE=InnoDB;
448
449CREATE TABLE `AttributeValue` (
450 `object_id` int(10) unsigned default NULL,
7d68a0fb
DO
451 -- Default value intentionally breaks the constraint, this blocks
452 -- any insertion, which doesn't have 'object_tid' on the column list.
453 `object_tid` int(10) unsigned NOT NULL default '0',
aa004b1a 454 `attr_id` int(10) unsigned default NULL,
42b4722b 455 `string_value` char(255) default NULL,
aa004b1a
DO
456 `uint_value` int(10) unsigned default NULL,
457 `float_value` float default NULL,
458 UNIQUE KEY `object_id` (`object_id`,`attr_id`),
ed4c863c
DO
459 KEY `attr_id-uint_value` (`attr_id`,`uint_value`),
460 KEY `attr_id-string_value` (`attr_id`,`string_value`(12)),
7d68a0fb
DO
461 KEY `id-tid` (`object_id`,`object_tid`),
462 KEY `object_tid-attr_id` (`object_tid`,`attr_id`),
463 CONSTRAINT `AttributeValue-FK-map` FOREIGN KEY (`object_tid`, `attr_id`) REFERENCES `AttributeMap` (`objtype_id`, `attr_id`),
0dffb2b7 464 CONSTRAINT `AttributeValue-FK-object` FOREIGN KEY (`object_id`, `object_tid`) REFERENCES `Object` (`id`, `objtype_id`) ON DELETE CASCADE ON UPDATE CASCADE
aa004b1a
DO
465) ENGINE=InnoDB;
466
467CREATE TABLE `CachedPAV` (
468 `object_id` int(10) unsigned NOT NULL,
469 `port_name` char(255) NOT NULL,
470 `vlan_id` int(10) unsigned NOT NULL default '0',
471 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
472 KEY `vlan_id` (`vlan_id`),
473 CONSTRAINT `CachedPAV-FK-object-port` FOREIGN KEY (`object_id`, `port_name`) REFERENCES `CachedPVM` (`object_id`, `port_name`) ON DELETE CASCADE,
474 CONSTRAINT `CachedPAV-FK-vlan_id` FOREIGN KEY (`vlan_id`) REFERENCES `VLANValidID` (`vlan_id`)
475) ENGINE=InnoDB;
476
477CREATE TABLE `CachedPNV` (
478 `object_id` int(10) unsigned NOT NULL,
479 `port_name` char(255) NOT NULL,
480 `vlan_id` int(10) unsigned NOT NULL default '0',
481 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
482 UNIQUE KEY `port_id` (`object_id`,`port_name`),
483 CONSTRAINT `CachedPNV-FK-compound` FOREIGN KEY (`object_id`, `port_name`, `vlan_id`) REFERENCES `CachedPAV` (`object_id`, `port_name`, `vlan_id`) ON DELETE CASCADE
484) ENGINE=InnoDB;
485
486CREATE TABLE `CachedPVM` (
487 `object_id` int(10) unsigned NOT NULL,
488 `port_name` char(255) NOT NULL,
489 `vlan_mode` enum('access','trunk') NOT NULL default 'access',
490 PRIMARY KEY (`object_id`,`port_name`),
9b8174d7 491 CONSTRAINT `CachedPVM-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
aa004b1a
DO
492) ENGINE=InnoDB;
493
bfbdd78b
DO
494CREATE TABLE `CactiGraph` (
495 `object_id` int(10) unsigned NOT NULL,
496 `graph_id` int(10) unsigned NOT NULL,
497 `caption` char(255) DEFAULT NULL,
498 PRIMARY KEY (`graph_id`),
499 KEY `object_id` (`object_id`),
500 CONSTRAINT `CactiGraph-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
501) ENGINE=InnoDB;
502
aa004b1a
DO
503CREATE TABLE `Chapter` (
504 `id` int(10) unsigned NOT NULL auto_increment,
505 `sticky` enum('yes','no') default 'no',
506 `name` char(128) NOT NULL,
507 PRIMARY KEY (`id`),
508 UNIQUE KEY `name` (`name`)
c7968df3 509) ENGINE=InnoDB;
aa004b1a
DO
510
511CREATE TABLE `Config` (
512 `varname` char(32) NOT NULL,
1d5dd3a1 513 `varvalue` text NOT NULL,
aa004b1a
DO
514 `vartype` enum('string','uint') NOT NULL default 'string',
515 `emptyok` enum('yes','no') NOT NULL default 'no',
516 `is_hidden` enum('yes','no') NOT NULL default 'yes',
517 `is_userdefined` enum('yes','no') NOT NULL default 'no',
518 `description` text,
519 PRIMARY KEY (`varname`)
520) ENGINE=InnoDB;
521
522CREATE TABLE `Dictionary` (
523 `chapter_id` int(10) unsigned NOT NULL,
524 `dict_key` int(10) unsigned NOT NULL auto_increment,
525 `dict_value` char(255) default NULL,
526 PRIMARY KEY (`dict_key`),
c7968df3
DO
527 UNIQUE KEY `chap_to_val` (`chapter_id`,`dict_value`),
528 CONSTRAINT `Dictionary-FK-chapter_id` FOREIGN KEY (`chapter_id`) REFERENCES `Chapter` (`id`)
a03332f7 529) ENGINE=InnoDB;
aa004b1a 530
0682218d
AD
531CREATE TABLE `EntityLink` (
532 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
e1add254 533 `parent_entity_type` enum('ipv4net','ipv4rspool','ipv4vs','ipv6net','location','object','rack','row','user') NOT NULL,
0682218d 534 `parent_entity_id` int(10) unsigned NOT NULL,
e1add254 535 `child_entity_type` enum('file','location','object','rack','row') NOT NULL,
0682218d
AD
536 `child_entity_id` int(10) unsigned NOT NULL,
537 PRIMARY KEY (`id`),
bd7c95ce 538 UNIQUE KEY `EntityLink-unique` (`parent_entity_type`,`parent_entity_id`,`child_entity_type`,`child_entity_id`),
d6e7a8e7 539 KEY `EntityLink-compound` (`parent_entity_type`,`child_entity_type`,`child_entity_id`)
0682218d
AD
540) ENGINE=InnoDB;
541
aa004b1a
DO
542CREATE TABLE `File` (
543 `id` int(10) unsigned NOT NULL auto_increment,
544 `name` char(255) NOT NULL,
545 `type` char(255) NOT NULL,
546 `size` int(10) unsigned NOT NULL,
547 `ctime` datetime NOT NULL,
548 `mtime` datetime NOT NULL,
549 `atime` datetime NOT NULL,
550 `thumbnail` longblob,
551 `contents` longblob NOT NULL,
552 `comment` text,
553 PRIMARY KEY (`id`),
554 UNIQUE KEY `name` (`name`)
555) ENGINE=InnoDB;
556
557CREATE TABLE `FileLink` (
558 `id` int(10) unsigned NOT NULL auto_increment,
559 `file_id` int(10) unsigned NOT NULL,
e1add254 560 `entity_type` enum('ipv4net','ipv4rspool','ipv4vs','ipv6net','location','object','rack','user') NOT NULL default 'object',
aa004b1a
DO
561 `entity_id` int(10) NOT NULL,
562 PRIMARY KEY (`id`),
563 KEY `FileLink-file_id` (`file_id`),
564 UNIQUE KEY `FileLink-unique` (`file_id`,`entity_type`,`entity_id`),
565 CONSTRAINT `FileLink-File_fkey` FOREIGN KEY (`file_id`) REFERENCES `File` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
566) ENGINE=InnoDB;
567
568CREATE TABLE `IPv4Address` (
569 `ip` int(10) unsigned NOT NULL default '0',
570 `name` char(255) NOT NULL default '',
571 `reserved` enum('yes','no') default NULL,
572 PRIMARY KEY (`ip`)
573) ENGINE=InnoDB;
574
575CREATE TABLE `IPv4Allocation` (
576 `object_id` int(10) unsigned NOT NULL default '0',
577 `ip` int(10) unsigned NOT NULL default '0',
578 `name` char(255) NOT NULL default '',
581e3b64 579 `type` enum('regular','shared','virtual','router') NOT NULL DEFAULT 'regular',
aa004b1a 580 PRIMARY KEY (`object_id`,`ip`),
f701420b 581 KEY `ip` (`ip`),
9b8174d7 582 CONSTRAINT `IPv4Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
aa004b1a
DO
583) ENGINE=InnoDB;
584
585CREATE TABLE `IPv4LB` (
586 `object_id` int(10) unsigned default NULL,
587 `rspool_id` int(10) unsigned default NULL,
588 `vs_id` int(10) unsigned default NULL,
6213dc9f 589 `prio` varchar(255) default NULL,
aa004b1a
DO
590 `vsconfig` text,
591 `rsconfig` text,
592 UNIQUE KEY `LB-VS` (`object_id`,`vs_id`),
593 KEY `IPv4LB-FK-rspool_id` (`rspool_id`),
594 KEY `IPv4LB-FK-vs_id` (`vs_id`),
595 CONSTRAINT `IPv4LB-FK-vs_id` FOREIGN KEY (`vs_id`) REFERENCES `IPv4VS` (`id`),
9b8174d7 596 CONSTRAINT `IPv4LB-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`),
aa004b1a
DO
597 CONSTRAINT `IPv4LB-FK-rspool_id` FOREIGN KEY (`rspool_id`) REFERENCES `IPv4RSPool` (`id`)
598) ENGINE=InnoDB;
599
68c91b9c
AA
600CREATE TABLE `IPv4Log` (
601 `id` int(10) NOT NULL AUTO_INCREMENT,
602 `ip` int(10) unsigned NOT NULL,
603 `date` datetime NOT NULL,
604 `user` varchar(64) NOT NULL,
605 `message` text NOT NULL,
606 PRIMARY KEY (`id`),
607 KEY `ip-date` (`ip`,`date`)
608) ENGINE=InnoDB;
609
4318ced5
AA
610CREATE TABLE `IPv6Log` (
611 `id` int(10) NOT NULL AUTO_INCREMENT,
612 `ip` binary(16) NOT NULL,
613 `date` datetime NOT NULL,
614 `user` varchar(64) NOT NULL,
615 `message` text NOT NULL,
616 PRIMARY KEY (`id`),
617 KEY `ip-date` (`ip`,`date`)
618) ENGINE=InnoDB;
619
aa004b1a
DO
620CREATE TABLE `IPv4NAT` (
621 `object_id` int(10) unsigned NOT NULL default '0',
622 `proto` enum('TCP','UDP') NOT NULL default 'TCP',
623 `localip` int(10) unsigned NOT NULL default '0',
624 `localport` smallint(5) unsigned NOT NULL default '0',
625 `remoteip` int(10) unsigned NOT NULL default '0',
626 `remoteport` smallint(5) unsigned NOT NULL default '0',
627 `description` char(255) default NULL,
628 PRIMARY KEY (`object_id`,`proto`,`localip`,`localport`,`remoteip`,`remoteport`),
629 KEY `localip` (`localip`),
630 KEY `remoteip` (`remoteip`),
631 KEY `object_id` (`object_id`),
9b8174d7 632 CONSTRAINT `IPv4NAT-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`)
aa004b1a
DO
633) ENGINE=InnoDB;
634
635CREATE TABLE `IPv4Network` (
636 `id` int(10) unsigned NOT NULL auto_increment,
637 `ip` int(10) unsigned NOT NULL default '0',
638 `mask` int(10) unsigned NOT NULL default '0',
639 `name` char(255) default NULL,
640 `comment` text,
641 PRIMARY KEY (`id`),
642 UNIQUE KEY `base-len` (`ip`,`mask`)
643) ENGINE=InnoDB;
644
645CREATE TABLE `IPv4RS` (
646 `id` int(10) unsigned NOT NULL auto_increment,
647 `inservice` enum('yes','no') NOT NULL default 'no',
71066ef1 648 `rsip` varbinary(16) NOT NULL,
aa004b1a
DO
649 `rsport` smallint(5) unsigned default NULL,
650 `rspool_id` int(10) unsigned default NULL,
651 `rsconfig` text,
4ed2310e 652 `comment` varchar(255) DEFAULT NULL,
aa004b1a 653 PRIMARY KEY (`id`),
f701420b 654 KEY `rsip` (`rsip`),
aa004b1a
DO
655 UNIQUE KEY `pool-endpoint` (`rspool_id`,`rsip`,`rsport`),
656 CONSTRAINT `IPv4RS-FK` FOREIGN KEY (`rspool_id`) REFERENCES `IPv4RSPool` (`id`) ON DELETE CASCADE
657) ENGINE=InnoDB;
658
659CREATE TABLE `IPv4RSPool` (
660 `id` int(10) unsigned NOT NULL auto_increment,
661 `name` char(255) default NULL,
662 `vsconfig` text,
663 `rsconfig` text,
664 PRIMARY KEY (`id`)
665) ENGINE=InnoDB;
666
667CREATE TABLE `IPv4VS` (
668 `id` int(10) unsigned NOT NULL auto_increment,
71066ef1 669 `vip` varbinary(16) NOT NULL,
aa004b1a 670 `vport` smallint(5) unsigned default NULL,
ed38c73c 671 `proto` enum('TCP','UDP','MARK') NOT NULL default 'TCP',
aa004b1a
DO
672 `name` char(255) default NULL,
673 `vsconfig` text,
674 `rsconfig` text,
f701420b
AA
675 PRIMARY KEY (`id`),
676 KEY `vip` (`vip`)
aa004b1a
DO
677) ENGINE=InnoDB;
678
679CREATE TABLE `IPv6Address` (
680 `ip` binary(16) NOT NULL,
681 `name` char(255) NOT NULL default '',
682 `reserved` enum('yes','no') default NULL,
683 PRIMARY KEY (`ip`)
684) ENGINE=InnoDB;
685
686CREATE TABLE `IPv6Allocation` (
687 `object_id` int(10) unsigned NOT NULL default '0',
688 `ip` binary(16) NOT NULL,
689 `name` char(255) NOT NULL default '',
581e3b64 690 `type` enum('regular','shared','virtual','router') NOT NULL DEFAULT 'regular',
aa004b1a 691 PRIMARY KEY (`object_id`,`ip`),
f701420b 692 KEY `ip` (`ip`),
9b8174d7 693 CONSTRAINT `IPv6Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
aa004b1a
DO
694) ENGINE=InnoDB;
695
696CREATE TABLE `IPv6Network` (
697 `id` int(10) unsigned NOT NULL auto_increment,
698 `ip` binary(16) NOT NULL,
699 `mask` int(10) unsigned NOT NULL,
700 `last_ip` binary(16) NOT NULL,
701 `name` char(255) default NULL,
702 `comment` text,
703 PRIMARY KEY (`id`),
704 UNIQUE KEY `ip` (`ip`,`mask`)
705) ENGINE=InnoDB;
706
707CREATE TABLE `LDAPCache` (
708 `presented_username` char(64) NOT NULL,
709 `successful_hash` char(40) NOT NULL,
710 `first_success` timestamp NOT NULL default CURRENT_TIMESTAMP,
711 `last_retry` timestamp NOT NULL default '0000-00-00 00:00:00',
712 `displayed_name` char(128) default NULL,
713 `memberof` text,
714 UNIQUE KEY `presented_username` (`presented_username`),
715 KEY `scanidx` (`presented_username`,`successful_hash`)
716) ENGINE=InnoDB;
717
718CREATE TABLE `Link` (
719 `porta` int(10) unsigned NOT NULL default '0',
720 `portb` int(10) unsigned NOT NULL default '0',
721 `cable` char(64) DEFAULT NULL,
722 PRIMARY KEY (`porta`,`portb`),
723 UNIQUE KEY `porta` (`porta`),
724 UNIQUE KEY `portb` (`portb`),
725 CONSTRAINT `Link-FK-a` FOREIGN KEY (`porta`) REFERENCES `Port` (`id`) ON DELETE CASCADE,
726 CONSTRAINT `Link-FK-b` FOREIGN KEY (`portb`) REFERENCES `Port` (`id`) ON DELETE CASCADE
727) ENGINE=InnoDB;
728
729CREATE TABLE `Molecule` (
730 `id` int(10) unsigned NOT NULL auto_increment,
731 PRIMARY KEY (`id`)
732) ENGINE=InnoDB;
733
734CREATE TABLE `MountOperation` (
735 `id` int(10) unsigned NOT NULL auto_increment,
736 `object_id` int(10) unsigned NOT NULL default '0',
737 `ctime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
738 `user_name` char(64) default NULL,
739 `old_molecule_id` int(10) unsigned default NULL,
740 `new_molecule_id` int(10) unsigned default NULL,
741 `comment` text,
742 PRIMARY KEY (`id`),
743 KEY `object_id` (`object_id`),
9b8174d7 744 CONSTRAINT `MountOperation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
aa004b1a
DO
745) ENGINE=InnoDB;
746
747CREATE TABLE `ObjectLog` (
748 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
749 `object_id` int(10) unsigned NOT NULL,
750 `user` char(64) NOT NULL,
751 `date` datetime NOT NULL,
752 `content` text NOT NULL,
753 PRIMARY KEY (`id`),
754 KEY `object_id` (`object_id`),
755 KEY `date` (`date`),
9b8174d7 756 CONSTRAINT `ObjectLog-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
aa004b1a
DO
757) ENGINE=InnoDB;
758
0682218d
AD
759CREATE TABLE `ObjectParentCompat` (
760 `parent_objtype_id` int(10) unsigned NOT NULL,
761 `child_objtype_id` int(10) unsigned NOT NULL,
762 UNIQUE KEY `parent_child` (`parent_objtype_id`,`child_objtype_id`)
763) ENGINE=InnoDB;
764
aa004b1a
DO
765CREATE TABLE `Port` (
766 `id` int(10) unsigned NOT NULL auto_increment,
767 `object_id` int(10) unsigned NOT NULL default '0',
768 `name` char(255) NOT NULL default '',
769 `iif_id` int(10) unsigned NOT NULL,
770 `type` int(10) unsigned NOT NULL default '0',
771 `l2address` char(64) default NULL,
772 `reservation_comment` char(255) default NULL,
773 `label` char(255) default NULL,
774 PRIMARY KEY (`id`),
775 UNIQUE KEY `object_iif_oif_name` (`object_id`,`iif_id`,`type`,`name`),
776 KEY `type` (`type`),
777 KEY `comment` (`reservation_comment`),
778 KEY `l2address` (`l2address`),
779 KEY `Port-FK-iif-oif` (`iif_id`,`type`),
780 CONSTRAINT `Port-FK-iif-oif` FOREIGN KEY (`iif_id`, `type`) REFERENCES `PortInterfaceCompat` (`iif_id`, `oif_id`),
9b8174d7 781 CONSTRAINT `Port-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
aa004b1a
DO
782) ENGINE=InnoDB;
783
784CREATE TABLE `PortAllowedVLAN` (
785 `object_id` int(10) unsigned NOT NULL,
786 `port_name` char(255) NOT NULL,
787 `vlan_id` int(10) unsigned NOT NULL default '0',
788 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
789 KEY `vlan_id` (`vlan_id`),
790 CONSTRAINT `PortAllowedVLAN-FK-object-port` FOREIGN KEY (`object_id`, `port_name`) REFERENCES `PortVLANMode` (`object_id`, `port_name`) ON DELETE CASCADE,
791 CONSTRAINT `PortAllowedVLAN-FK-vlan_id` FOREIGN KEY (`vlan_id`) REFERENCES `VLANValidID` (`vlan_id`)
792) ENGINE=InnoDB;
793
794CREATE TABLE `PortCompat` (
795 `type1` int(10) unsigned NOT NULL default '0',
796 `type2` int(10) unsigned NOT NULL default '0',
797 UNIQUE KEY `type1_2` (`type1`,`type2`),
798 KEY `type2` (`type2`)
799) ENGINE=InnoDB;
800
801CREATE TABLE `PortInnerInterface` (
802 `id` int(10) unsigned NOT NULL,
803 `iif_name` char(16) NOT NULL,
804 PRIMARY KEY (`id`),
805 UNIQUE KEY `iif_name` (`iif_name`)
806) ENGINE=InnoDB;
807
808CREATE TABLE `PortInterfaceCompat` (
809 `iif_id` int(10) unsigned NOT NULL,
810 `oif_id` int(10) unsigned NOT NULL,
811 UNIQUE KEY `pair` (`iif_id`,`oif_id`),
812 CONSTRAINT `PortInterfaceCompat-FK-iif_id` FOREIGN KEY (`iif_id`) REFERENCES `PortInnerInterface` (`id`)
813) ENGINE=InnoDB;
814
5c6225b1
AA
815CREATE TABLE `PortLog` (
816 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
817 `port_id` int(10) unsigned NOT NULL,
5c6225b1 818 `date` datetime NOT NULL,
68c91b9c
AA
819 `user` varchar(64) NOT NULL,
820 `message` text NOT NULL,
5c6225b1
AA
821 PRIMARY KEY (`id`),
822 KEY `port_id-date` (`port_id`,`date`),
823 CONSTRAINT `PortLog_ibfk_1` FOREIGN KEY (`port_id`) REFERENCES `Port` (`id`) ON DELETE CASCADE
824) ENGINE=InnoDB;
825
aa004b1a
DO
826CREATE TABLE `PortNativeVLAN` (
827 `object_id` int(10) unsigned NOT NULL,
828 `port_name` char(255) NOT NULL,
829 `vlan_id` int(10) unsigned NOT NULL default '0',
830 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
831 UNIQUE KEY `port_id` (`object_id`,`port_name`),
832 CONSTRAINT `PortNativeVLAN-FK-compound` FOREIGN KEY (`object_id`, `port_name`, `vlan_id`) REFERENCES `PortAllowedVLAN` (`object_id`, `port_name`, `vlan_id`) ON DELETE CASCADE
833) ENGINE=InnoDB;
834
835CREATE TABLE `PortVLANMode` (
836 `object_id` int(10) unsigned NOT NULL,
837 `port_name` char(255) NOT NULL,
838 `vlan_mode` enum('access','trunk') NOT NULL default 'access',
839 PRIMARY KEY (`object_id`,`port_name`),
840 CONSTRAINT `PortVLANMode-FK-object-port` FOREIGN KEY (`object_id`, `port_name`) REFERENCES `CachedPVM` (`object_id`, `port_name`)
841) ENGINE=InnoDB;
842
9b8174d7 843CREATE TABLE `Object` (
aa004b1a
DO
844 `id` int(10) unsigned NOT NULL auto_increment,
845 `name` char(255) default NULL,
846 `label` char(255) default NULL,
aa004b1a
DO
847 `objtype_id` int(10) unsigned NOT NULL default '1',
848 `asset_no` char(64) default NULL,
849 `has_problems` enum('yes','no') NOT NULL default 'no',
850 `comment` text,
851 PRIMARY KEY (`id`),
9b8174d7 852 UNIQUE KEY `asset_no` (`asset_no`),
7d68a0fb 853 KEY `id-tid` (`id`,`objtype_id`),
bd7c95ce 854 KEY `type_id` (`objtype_id`,`id`)
aa004b1a
DO
855) ENGINE=InnoDB;
856
9b8174d7 857CREATE TABLE `ObjectHistory` (
aa004b1a
DO
858 `id` int(10) unsigned default NULL,
859 `name` char(255) default NULL,
860 `label` char(255) default NULL,
aa004b1a
DO
861 `objtype_id` int(10) unsigned default NULL,
862 `asset_no` char(64) default NULL,
863 `has_problems` enum('yes','no') NOT NULL default 'no',
864 `comment` text,
865 `ctime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
866 `user_name` char(64) default NULL,
867 KEY `id` (`id`),
9b8174d7 868 CONSTRAINT `ObjectHistory-FK-object_id` FOREIGN KEY (`id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
aa004b1a
DO
869) ENGINE=InnoDB;
870
871CREATE TABLE `RackSpace` (
872 `rack_id` int(10) unsigned NOT NULL default '0',
873 `unit_no` int(10) unsigned NOT NULL default '0',
874 `atom` enum('front','interior','rear') NOT NULL default 'interior',
875 `state` enum('A','U','T','W') NOT NULL default 'A',
876 `object_id` int(10) unsigned default NULL,
877 PRIMARY KEY (`rack_id`,`unit_no`,`atom`),
878 KEY `RackSpace_object_id` (`object_id`),
9b8174d7
AD
879 CONSTRAINT `RackSpace-FK-rack_id` FOREIGN KEY (`rack_id`) REFERENCES `Object` (`id`),
880 CONSTRAINT `RackSpace-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
881) ENGINE=InnoDB;
882
883CREATE TABLE `RackThumbnail` (
884 `rack_id` int(10) unsigned NOT NULL,
885 `thumb_data` blob,
886 UNIQUE KEY `rack_id` (`rack_id`),
887 CONSTRAINT `RackThumbnail-FK-rack_id` FOREIGN KEY (`rack_id`) REFERENCES `Object` (`id`) ON DELETE CASCADE
aa004b1a
DO
888) ENGINE=InnoDB;
889
890CREATE TABLE `Script` (
891 `script_name` char(64) NOT NULL,
892 `script_text` longtext,
893 PRIMARY KEY (`script_name`)
894) ENGINE=InnoDB;
895
896CREATE TABLE `TagStorage` (
e1add254 897 `entity_realm` enum('file','ipv4net','ipv4rspool','ipv4vs','ipv6net','location','object','rack','user','vst') NOT NULL default 'object',
aa004b1a
DO
898 `entity_id` int(10) unsigned NOT NULL,
899 `tag_id` int(10) unsigned NOT NULL default '0',
30bb83bd
AA
900 `user` char(64) DEFAULT NULL,
901 `date` datetime DEFAULT NULL,
aa004b1a
DO
902 UNIQUE KEY `entity_tag` (`entity_realm`,`entity_id`,`tag_id`),
903 KEY `entity_id` (`entity_id`),
904 KEY `TagStorage-FK-tag_id` (`tag_id`),
905 CONSTRAINT `TagStorage-FK-tag_id` FOREIGN KEY (`tag_id`) REFERENCES `TagTree` (`id`)
906) ENGINE=InnoDB;
907
908CREATE TABLE `TagTree` (
909 `id` int(10) unsigned NOT NULL auto_increment,
910 `parent_id` int(10) unsigned default NULL,
911 `tag` char(255) default NULL,
912 PRIMARY KEY (`id`),
913 UNIQUE KEY `tag` (`tag`),
914 KEY `TagTree-K-parent_id` (`parent_id`),
915 CONSTRAINT `TagTree-K-parent_id` FOREIGN KEY (`parent_id`) REFERENCES `TagTree` (`id`)
916) ENGINE=InnoDB;
917
918CREATE TABLE `UserAccount` (
919 `user_id` int(10) unsigned NOT NULL auto_increment,
920 `user_name` char(64) NOT NULL default '',
921 `user_password_hash` char(40) default NULL,
922 `user_realname` char(64) default NULL,
923 PRIMARY KEY (`user_id`),
924 UNIQUE KEY `user_name` (`user_name`)
c7968df3 925) ENGINE=InnoDB;
aa004b1a
DO
926
927CREATE TABLE `UserConfig` (
928 `varname` char(32) NOT NULL,
1d5dd3a1 929 `varvalue` text NOT NULL,
aa004b1a 930 `user` char(64) NOT NULL,
c7968df3
DO
931 UNIQUE KEY `user_varname` (`user`,`varname`),
932 KEY `varname` (`varname`),
933 CONSTRAINT `UserConfig-FK-varname` FOREIGN KEY (`varname`) REFERENCES `Config` (`varname`) ON DELETE CASCADE,
934 CONSTRAINT `UserConfig-FK-user` FOREIGN KEY (`user`) REFERENCES `UserAccount` (`user_name`) ON DELETE CASCADE
aa004b1a
DO
935) ENGINE=InnoDB;
936
937CREATE TABLE `VLANDescription` (
938 `domain_id` int(10) unsigned NOT NULL,
939 `vlan_id` int(10) unsigned NOT NULL default '0',
940 `vlan_type` enum('ondemand','compulsory','alien') NOT NULL default 'ondemand',
941 `vlan_descr` char(255) default NULL,
942 PRIMARY KEY (`domain_id`,`vlan_id`),
943 KEY `vlan_id` (`vlan_id`),
944 CONSTRAINT `VLANDescription-FK-domain_id` FOREIGN KEY (`domain_id`) REFERENCES `VLANDomain` (`id`) ON DELETE CASCADE,
945 CONSTRAINT `VLANDescription-FK-vlan_id` FOREIGN KEY (`vlan_id`) REFERENCES `VLANValidID` (`vlan_id`)
946) ENGINE=InnoDB;
947
948CREATE TABLE `VLANDomain` (
949 `id` int(10) unsigned NOT NULL auto_increment,
950 `description` char(255) default NULL,
951 PRIMARY KEY (`id`),
952 UNIQUE KEY `description` (`description`)
953) ENGINE=InnoDB;
954
955CREATE TABLE `VLANIPv4` (
956 `domain_id` int(10) unsigned NOT NULL,
957 `vlan_id` int(10) unsigned NOT NULL,
958 `ipv4net_id` int(10) unsigned NOT NULL,
959 UNIQUE KEY `network-domain` (`ipv4net_id`,`domain_id`),
960 KEY `VLANIPv4-FK-compound` (`domain_id`,`vlan_id`),
961 CONSTRAINT `VLANIPv4-FK-compound` FOREIGN KEY (`domain_id`, `vlan_id`) REFERENCES `VLANDescription` (`domain_id`, `vlan_id`) ON DELETE CASCADE,
962 CONSTRAINT `VLANIPv4-FK-ipv4net_id` FOREIGN KEY (`ipv4net_id`) REFERENCES `IPv4Network` (`id`) ON DELETE CASCADE
963) ENGINE=InnoDB;
964
965CREATE TABLE `VLANIPv6` (
966 `domain_id` int(10) unsigned NOT NULL,
967 `vlan_id` int(10) unsigned NOT NULL,
968 `ipv6net_id` int(10) unsigned NOT NULL,
969 UNIQUE KEY `network-domain` (`ipv6net_id`,`domain_id`),
970 KEY `VLANIPv6-FK-compound` (`domain_id`,`vlan_id`),
971 CONSTRAINT `VLANIPv6-FK-compound` FOREIGN KEY (`domain_id`, `vlan_id`) REFERENCES `VLANDescription` (`domain_id`, `vlan_id`) ON DELETE CASCADE,
972 CONSTRAINT `VLANIPv6-FK-ipv6net_id` FOREIGN KEY (`ipv6net_id`) REFERENCES `IPv6Network` (`id`) ON DELETE CASCADE
973) ENGINE=InnoDB;
974
975CREATE TABLE `VLANSTRule` (
976 `vst_id` int(10) unsigned NOT NULL,
977 `rule_no` int(10) unsigned NOT NULL,
978 `port_pcre` char(255) NOT NULL,
979 `port_role` enum('access','trunk','anymode','uplink','downlink','none') NOT NULL default 'none',
980 `wrt_vlans` char(255) default NULL,
981 `description` char(255) default NULL,
982 UNIQUE KEY `vst-rule` (`vst_id`,`rule_no`),
983 CONSTRAINT `VLANSTRule-FK-vst_id` FOREIGN KEY (`vst_id`) REFERENCES `VLANSwitchTemplate` (`id`) ON DELETE CASCADE
984) ENGINE=InnoDB;
985
986CREATE TABLE `VLANSwitch` (
987 `object_id` int(10) unsigned NOT NULL,
988 `domain_id` int(10) unsigned NOT NULL,
989 `template_id` int(10) unsigned NOT NULL,
990 `mutex_rev` int(10) unsigned NOT NULL default '0',
991 `out_of_sync` enum('yes','no') NOT NULL default 'yes',
992 `last_errno` int(10) unsigned NOT NULL default '0',
993 `last_change` timestamp NOT NULL default '0000-00-00 00:00:00',
994 `last_push_started` timestamp NOT NULL default '0000-00-00 00:00:00',
995 `last_push_finished` timestamp NOT NULL default '0000-00-00 00:00:00',
996 `last_error_ts` timestamp NOT NULL default '0000-00-00 00:00:00',
997 UNIQUE KEY `object_id` (`object_id`),
998 KEY `domain_id` (`domain_id`),
999 KEY `template_id` (`template_id`),
1000 KEY `out_of_sync` (`out_of_sync`),
1001 KEY `last_errno` (`last_errno`),
1002 CONSTRAINT `VLANSwitch-FK-domain_id` FOREIGN KEY (`domain_id`) REFERENCES `VLANDomain` (`id`),
9b8174d7 1003 CONSTRAINT `VLANSwitch-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `Object` (`id`),
aa004b1a
DO
1004 CONSTRAINT `VLANSwitch-FK-template_id` FOREIGN KEY (`template_id`) REFERENCES `VLANSwitchTemplate` (`id`)
1005) ENGINE=InnoDB;
1006
1007CREATE TABLE `VLANSwitchTemplate` (
1008 `id` int(10) unsigned NOT NULL auto_increment,
aa004b1a 1009 `mutex_rev` int(10) NOT NULL,
322ce490 1010 `description` char(255) default NULL,
aa004b1a
DO
1011 `saved_by` char(64) NOT NULL,
1012 PRIMARY KEY (`id`),
1013 UNIQUE KEY `description` (`description`)
1014) ENGINE=InnoDB;
1015
1016CREATE TABLE `VLANValidID` (
1017 `vlan_id` int(10) unsigned NOT NULL default '1',
1018 PRIMARY KEY (`vlan_id`)
1019) ENGINE=InnoDB;
1020
e1add254
AD
1021CREATE VIEW `Location` AS SELECT O.id, O.name, O.has_problems, O.comment, P.id AS parent_id, P.name AS parent_name
1022 FROM `Object` O
1023 LEFT JOIN `EntityLink` EL ON O.id = EL.child_entity_id
1024 LEFT JOIN `Object` P ON (EL.parent_entity_id = P.id AND P.objtype_id = 1562 AND EL.parent_entity_type = 'location' AND EL.child_entity_type = 'location')
1025 WHERE O.objtype_id = 1562;
1026
1027CREATE VIEW `Row` AS SELECT O.id, O.name, L.id AS location_id, L.name AS location_name
1028 FROM `Object` O
1029 LEFT JOIN `EntityLink` EL ON O.id = EL.child_entity_id AND EL.parent_entity_type = 'location' AND EL.child_entity_type = 'row'
1030 LEFT JOIN `Object` L ON EL.parent_entity_id = L.id AND L.objtype_id = 1562
1031 WHERE O.objtype_id = 1561;
9b8174d7 1032
5545b0c7 1033CREATE VIEW `Rack` AS SELECT O.id, O.name AS name, O.asset_no, O.has_problems, O.comment,
1f02e311
AD
1034 AV.uint_value AS height,
1035 RT.thumb_data,
e1add254
AD
1036 R.id AS row_id,
1037 R.name AS row_name
1f02e311 1038 FROM `Object` O
86cbb632 1039 LEFT JOIN `AttributeValue` AV ON O.id = AV.object_id AND AV.attr_id = 27
1f02e311 1040 LEFT JOIN `RackThumbnail` RT ON O.id = RT.rack_id
e1add254
AD
1041 LEFT JOIN `EntityLink` EL ON O.id = EL.child_entity_id AND EL.parent_entity_type = 'row' AND EL.child_entity_type = 'rack'
1042 INNER JOIN `Object` R ON R.id = EL.parent_entity_id
86cbb632 1043 WHERE O.objtype_id = 1560;
9b8174d7 1044
d7e9e25b 1045CREATE VIEW `RackObject` AS SELECT id, name, label, objtype_id, asset_no, has_problems, comment FROM `Object`
9b8174d7
AD
1046 WHERE `objtype_id` NOT IN (1560, 1561, 1562);
1047
aa004b1a
DO
1048SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
1049END_OF_FILE;
1050##########################################################################
1051 case 'dictbase':
72933f2a 1052 $db_version = CODE_VERSION;
aa004b1a 1053 return <<<END_OF_FILE
aa004b1a
DO
1054INSERT INTO `Attribute` (`id`, `type`, `name`) VALUES
1055(1,'string','OEM S/N 1'),
1056(2,'dict','HW type'),
1057(3,'string','FQDN'),
1058(4,'dict','SW type'),
1059(5,'string','SW version'),
1060(6,'uint','number of ports'),
1061(7,'float','max. current, Ampers'),
1062(8,'float','power load, percents'),
1063(14,'string','contact person'),
1064(13,'float','max power, Watts'),
1065(16,'uint','flash memory, MB'),
1066(17,'uint','DRAM, MB'),
1067(18,'uint','CPU, MHz'),
1068(20,'string','OEM S/N 2'),
86ff26ae
DO
1069(21,'date','support contract expiration'),
1070(22,'date','HW warranty expiration'),
1071(24,'date','SW warranty expiration'),
0682218d 1072(25,'string','UUID'),
9b8174d7 1073(26,'dict','Hypervisor'),
453cce7e
AD
1074(27,'uint','Height, units'),
1075(28,'string','Slot number'),
08aa9c0b
DO
1076-- ^^^^^ Any new "default" attributes must go above this line! ^^^^^
1077-- Primary key value 9999 makes sure, that AUTO_INCREMENT on server restart
1078-- doesn't drop below 10000 (other code relies on this, site-specific
1079-- attributes are assigned IDs starting from 10000).
1080(9999,'string','base MAC address');
aa004b1a 1081
038795f9
DO
1082INSERT INTO `Chapter` (`id`, `sticky`, `name`) VALUES
1083(1,'yes','ObjectType'),
1084(2,'yes','PortOuterInterface'),
1085(11,'no','server models'),
1086(12,'no','network switch models'),
1087(13,'no','server OS type'),
1088(14,'no','switch OS type'),
1089(16,'no','router OS type'),
1090(17,'no','router models'),
1091(18,'no','disk array models'),
1092(19,'no','tape library models'),
1093(21,'no','KVM switch models'),
1094(23,'no','console models'),
1095(24,'no','network security models'),
1096(25,'no','wireless models'),
1097(26,'no','fibre channel switch models'),
1098(27,'no','PDU models'),
1099(28,'no','Voice/video hardware'),
1100(29,'no','Yes/No'),
1101(30,'no','network chassis models'),
1102(31,'no','server chassis models'),
1103(32,'no','virtual switch models'),
1104(33,'no','virtual switch OS type'),
1105(34,'no','power supply chassis models'),
1106(35,'no','power supply models'),
faa027d6 1107(36,'no','serial console server models'),
0c652e58 1108(37,'no','wireless OS type'),
038795f9
DO
1109-- Default chapters must have ID less than 10000, add them above this line.
1110(9999,'no','multiplexer models');
1111
aa004b1a
DO
1112INSERT INTO `AttributeMap` (`objtype_id`, `attr_id`, `chapter_id`) VALUES
1113(2,1,NULL),
1114(2,2,27),
1115(2,3,NULL),
1116(2,5,NULL),
1117(4,1,NULL),
1118(4,2,11),
1119(4,3,NULL),
1120(4,4,13),
1121(4,14,NULL),
1122(4,21,NULL),
1123(4,22,NULL),
aa004b1a 1124(4,24,NULL),
0682218d
AD
1125(4,25,NULL),
1126(4,26,29),
b507f36a 1127(4,28,NULL),
aa004b1a
DO
1128(5,1,NULL),
1129(5,2,18),
1130(6,1,NULL),
1131(6,2,19),
1132(6,20,NULL),
1133(7,1,NULL),
1134(7,2,17),
1135(7,3,NULL),
1136(7,4,16),
1137(7,5,NULL),
1138(7,14,NULL),
1139(7,16,NULL),
1140(7,17,NULL),
1141(7,18,NULL),
1142(7,21,NULL),
1143(7,22,NULL),
1144(7,24,NULL),
1145(8,1,NULL),
1146(8,2,12),
1147(8,3,NULL),
1148(8,4,14),
1149(8,5,NULL),
1150(8,14,NULL),
1151(8,16,NULL),
1152(8,17,NULL),
1153(8,18,NULL),
1154(8,20,NULL),
1155(8,21,NULL),
1156(8,22,NULL),
1157(8,24,NULL),
b507f36a 1158(8,28,NULL),
aa004b1a
DO
1159(9,6,NULL),
1160(12,1,NULL),
1161(12,3,NULL),
1162(12,7,NULL),
1163(12,8,NULL),
1164(12,13,NULL),
1165(12,20,NULL),
1166(445,1,NULL),
1167(445,2,21),
1168(445,3,NULL),
1169(445,5,NULL),
1170(445,14,NULL),
1171(445,22,NULL),
1172(447,1,NULL),
c7968df3 1173(447,2,9999),
aa004b1a
DO
1174(447,3,NULL),
1175(447,5,NULL),
1176(447,14,NULL),
1177(447,22,NULL),
1178(15,2,23),
1179(798,1,NULL),
1180(798,2,24),
1181(798,3,NULL),
1182(798,5,NULL),
1183(798,14,NULL),
1184(798,16,NULL),
1185(798,17,NULL),
1186(798,18,NULL),
1187(798,20,NULL),
1188(798,21,NULL),
1189(798,22,NULL),
1190(798,24,NULL),
b507f36a 1191(798,28,NULL),
aa004b1a
DO
1192(965,1,NULL),
1193(965,3,NULL),
1194(965,2,25),
0c652e58 1195(965,4,37),
aa004b1a 1196(1055,2,26),
b507f36a 1197(1055,28,NULL),
aa004b1a
DO
1198(1323,1,NULL),
1199(1323,2,28),
1200(1323,3,NULL),
0682218d 1201(1323,5,NULL),
ae67fa11
AD
1202(1397,1,NULL),
1203(1397,2,34),
1204(1397,14,NULL),
1205(1397,21,NULL),
1206(1397,22,NULL),
1207(1398,1,NULL),
1208(1398,2,35),
1209(1398,14,NULL),
1210(1398,21,NULL),
1211(1398,22,NULL),
0682218d
AD
1212(1502,1,NULL),
1213(1502,2,31),
1214(1502,3,NULL),
1215(1502,14,NULL),
1216(1502,20,NULL),
1217(1502,21,NULL),
1218(1502,22,NULL),
1219(1503,1,NULL),
1220(1503,2,30),
1221(1503,3,NULL),
588c98f8
AD
1222(1503,4,14),
1223(1503,5,NULL),
0682218d 1224(1503,14,NULL),
588c98f8
AD
1225(1503,16,NULL),
1226(1503,17,NULL),
1227(1503,18,NULL),
0682218d
AD
1228(1503,20,NULL),
1229(1503,21,NULL),
1230(1503,22,NULL),
588c98f8 1231(1503,24,NULL),
0682218d
AD
1232(1504,3,NULL),
1233(1504,4,13),
1234(1504,14,NULL),
1235(1504,24,NULL),
1236(1505,14,NULL),
1237(1506,14,NULL),
1238(1506,17,NULL),
1239(1506,18,NULL),
1240(1507,1,NULL),
1241(1507,2,32),
1242(1507,3,NULL),
1243(1507,4,33),
1244(1507,5,NULL),
1245(1507,14,NULL),
1246(1507,20,NULL),
1247(1507,21,NULL),
9b8174d7 1248(1507,22,NULL),
faa027d6 1249(1560,27,NULL),
e1add254 1250(1562,14,NULL),
faa027d6
DO
1251(1644, 1, NULL),
1252(1644, 2, 36),
1253(1644, 3, NULL);
aa004b1a 1254
aa004b1a
DO
1255INSERT INTO `PortInnerInterface` VALUES
1256(1,'hardwired'),
1257(2,'SFP-100'),
1258(3,'GBIC'),
1259(4,'SFP-1000'),
1260(5,'XENPAK'),
1261(6,'X2'),
1262(7,'XPAK'),
1263(8,'XFP'),
44cbeb2e 1264(9,'SFP+'),
833583b5
DO
1265(10,'QSFP+'),
1266(11,'CFP');
aa004b1a 1267
0682218d
AD
1268INSERT INTO `ObjectParentCompat` VALUES
1269(3,13),
1270(4,1504),
1271(4,1507),
ae67fa11 1272(1397,1398),
0682218d
AD
1273(1502,4),
1274(1503,8),
1275(1505,4),
1276(1505,1504),
1277(1505,1506),
1278(1505,1507),
2265be00 1279(1506,4),
0682218d
AD
1280(1506,1504);
1281
aa004b1a
DO
1282INSERT INTO `PortInterfaceCompat` VALUES
1283(2,1208),(2,1195),(2,1196),(2,1197),(2,1198),(2,1199),(2,1200),(2,1201),
1284(3,1078),(3,24),(3,34),(3,1202),(3,1203),(3,1204),(3,1205),(3,1206),(3,1207),
34c3ab2a 1285(4,1077),(4,24),(4,34),(4,1202),(4,1203),(4,1204),(4,1205),(4,1206),(4,1207),
aa004b1a
DO
1286(5,1079),(5,30),(5,35),(5,36),(5,37),(5,38),(5,39),(5,40),
1287(6,1080),(6,30),(6,35),(6,36),(6,37),(6,38),(6,39),(6,40),
1288(7,1081),(7,30),(7,35),(7,36),(7,37),(7,38),(7,39),(7,40),
1289(8,1082),(8,30),(8,35),(8,36),(8,37),(8,38),(8,39),(8,40),
5a32ed6f 1290(9,1084),(9,30),(9,35),(9,36),(9,37),(9,38),(9,39),(9,40),
55732b46 1291(10,1588),(10,1663),(10,1664),
833583b5 1292(11,1668),(11,1669),(11,1670),(11,1671),
e1486971 1293(1,16),(1,19),(1,24),(1,29),(1,31),(1,33),(1,446),(1,681),(1,682),(1,1322),(1,1399),(1,1469);
aa004b1a
DO
1294
1295INSERT INTO `PortCompat` (`type1`, `type2`) VALUES
1296(17,17),
1297(18,18),
1298(19,19),
aa004b1a 1299(24,24),
aa004b1a
DO
1300(18,19),
1301(19,18),
1302(18,24),
1303(24,18),
1304(19,24),
1305(24,19),
1306(29,29),
aa004b1a
DO
1307(30,30),
1308(16,1322),
1309(1322,16),
1310(29,681),
1311(29,682),
1312(32,32),
1313(33,446),
1314(34,34),
1315(35,35),
1316(36,36),
1317(37,37),
1318(38,38),
1319(39,39),
1320(40,40),
1321(41,41),
1322(439,439),
1323(446,33),
1324(681,29),
1325(681,681),
1326(681,682),
1327(682,29),
1328(682,681),
1329(682,682),
1330(1077,1077),
aa004b1a
DO
1331(1084,1084),
1332(1087,1087),
aa004b1a 1333(1195,1195),
aa004b1a
DO
1334(1196,1196),
1335(1197,1197),
1336(1198,1199),
1337(1199,1198),
1338(1200,1200),
1339(1201,1201),
aa004b1a
DO
1340(1202,1202),
1341(1203,1203),
aa004b1a
DO
1342(1204,1204),
1343(1205,1205),
1344(1206,1207),
1345(1207,1206),
1346(1209,1209),
1347(1210,1210),
1348(1211,1211),
1349(1212,1212),
1350(1213,1213),
1351(1214,1214),
1352(1215,1215),
1353(1216,1216),
1354(1217,1217),
1355(1218,1218),
1356(1219,1219),
1357(1220,1220),
1358(1221,1221),
1359(1222,1222),
1360(1223,1223),
1361(1224,1224),
1362(1225,1225),
1363(1226,1226),
1364(1227,1227),
1365(1228,1228),
1366(1229,1229),
1367(1230,1230),
1368(1231,1231),
1369(1232,1232),
1370(1233,1233),
1371(1234,1234),
1372(1235,1235),
1373(1236,1236),
1374(1237,1237),
1375(1238,1238),
1376(1239,1239),
1377(1240,1240),
1378(1241,1241),
1379(1242,1242),
1380(1243,1243),
1381(1244,1244),
1382(1245,1245),
1383(1246,1246),
1384(1247,1247),
1385(1248,1248),
1386(1249,1249),
1387(1250,1250),
1388(1251,1251),
1389(1252,1252),
1390(1253,1253),
1391(1254,1254),
1392(1255,1255),
1393(1256,1256),
1394(1257,1257),
1395(1258,1258),
1396(1259,1259),
1397(1260,1260),
1398(1261,1261),
1399(1262,1262),
1400(1263,1263),
1401(1264,1264),
1402(1265,1265),
1403(1266,1266),
1404(1267,1267),
1405(1268,1268),
1406(1269,1269),
1407(1270,1270),
1408(1271,1271),
1409(1272,1272),
1410(1273,1273),
1411(1274,1274),
1412(1275,1275),
1413(1276,1276),
1414(1277,1277),
1415(1278,1278),
1416(1279,1279),
1417(1280,1280),
1418(1281,1281),
1419(1282,1282),
1420(1283,1283),
1421(1284,1284),
1422(1285,1285),
1423(1286,1286),
1424(1287,1287),
1425(1288,1288),
1426(1289,1289),
1427(1290,1290),
1428(1291,1291),
1429(1292,1292),
1430(1293,1293),
1431(1294,1294),
1432(1295,1295),
1433(1296,1296),
1434(1297,1297),
1435(1298,1298),
1436(1299,1299),
1437(1300,1300),
ae67fa11 1438(1316,1316),
85e868a0 1439(1424,1424),
52d31972
DO
1440(1425,1425),
1441(1426,1426),
1442(1427,1427),
1443(1428,1428),
1444(1429,1429),
1445(1430,1430),
1446(1431,1431),
1447(1432,1432),
1448(1433,1433),
1449(1434,1434),
1450(1435,1435),
1451(1436,1436),
1452(1437,1437),
1453(1438,1438),
1454(1439,1439),
1455(1440,1440),
1456(1441,1441),
1457(1442,1442),
1458(1443,1443),
1459(1444,1444),
1460(1445,1445),
1461(1446,1446),
1462(1447,1447),
1463(1448,1448),
1464(1449,1449),
1465(1450,1450),
1466(1451,1451),
1467(1452,1452),
1468(1453,1453),
1469(1454,1454),
1470(1455,1455),
1471(1456,1456),
1472(1457,1457),
1473(1458,1458),
1474(1459,1459),
1475(1460,1460),
1476(1461,1461),
1477(1462,1462),
1478(1463,1463),
1479(1464,1464),
1480(1465,1465),
1481(1466,1466),
e1486971 1482(1469,1469),
f7494e3c 1483(1399,1399),
e7311c79 1484(1588,1588),
18680729 1485(1603,1603),
e7311c79 1486(1661,1661),
e7311c79
DO
1487(1663,1663),
1488(1664,1664),
833583b5
DO
1489(1668,1668),
1490(1669,1669),
1491(1670,1670),
1492(1671,1671),
5a32ed6f 1493(1642,1642);
aa004b1a
DO
1494
1495INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdefined, description) VALUES
0682218d 1496('MASSCOUNT','8','uint','no','no','yes','&quot;Fast&quot; form is this many records tall'),
aa004b1a
DO
1497('MAXSELSIZE','30','uint','no','no','yes','&lt;SELECT&gt; lists height'),
1498('enterprise','MyCompanyName','string','no','no','no','Organization name'),
1499('ROW_SCALE','2','uint','no','no','yes','Picture scale for rack row display'),
1500('PORTS_PER_ROW','12','uint','no','no','yes','Ports per row in VLANs tab'),
1501('IPV4_ADDRS_PER_PAGE','256','uint','no','no','yes','IPv4 addresses per page'),
1502('DEFAULT_RACK_HEIGHT','42','uint','yes','no','yes','Default rack height'),
1503('DEFAULT_SLB_VS_PORT','','uint','yes','no','yes','Default port of SLB virtual service'),
1504('DEFAULT_SLB_RS_PORT','','uint','yes','no','yes','Default port of SLB real server'),
1505('DETECT_URLS','no','string','yes','no','yes','Detect URLs in text fields'),
1506('RACK_PRESELECT_THRESHOLD','1','uint','no','no','yes','Rack pre-selection threshold'),
1507('DEFAULT_IPV4_RS_INSERVICE','no','string','no','no','yes','Inservice status for new SLB real servers'),
1508('AUTOPORTS_CONFIG','4 = 1*33*kvm + 2*24*eth%u;15 = 1*446*kvm','string','yes','no','no','AutoPorts configuration'),
1509('DEFAULT_OBJECT_TYPE','4','uint','yes','no','yes','Default object type for new objects'),
1510('SHOW_EXPLICIT_TAGS','yes','string','no','no','yes','Show explicit tags'),
1511('SHOW_IMPLICIT_TAGS','yes','string','no','no','yes','Show implicit tags'),
1512('SHOW_AUTOMATIC_TAGS','no','string','no','no','yes','Show automatic tags'),
1513('IPV4_AUTO_RELEASE','1','uint','no','no','yes','Auto-release IPv4 addresses on allocation'),
1514('SHOW_LAST_TAB','no','string','yes','no','yes','Remember last tab shown for each page'),
1515('EXT_IPV4_VIEW','yes','string','no','no','yes','Extended IPv4 view'),
1516('TREE_THRESHOLD','25','uint','yes','no','yes','Tree view auto-collapse threshold'),
1517('IPV4_JAYWALK','no','string','no','no','no','Enable IPv4 address allocations w/o covering network'),
1518('ADDNEW_AT_TOP','yes','string','no','no','yes','Render "add new" line at top of the list'),
1519('IPV4_TREE_SHOW_USAGE','yes','string','no','no','yes','Show address usage in IPv4 tree'),
1520('PREVIEW_TEXT_MAXCHARS','10240','uint','yes','no','yes','Max chars for text file preview'),
1521('PREVIEW_TEXT_ROWS','25','uint','yes','no','yes','Rows for text file preview'),
1522('PREVIEW_TEXT_COLS','80','uint','yes','no','yes','Columns for text file preview'),
1523('PREVIEW_IMAGE_MAXPXS','320','uint','yes','no','yes','Max pixels per axis for image file preview'),
1524('VENDOR_SIEVE','','string','yes','no','yes','Vendor sieve configuration'),
1525('IPV4LB_LISTSRC','{\$typeid_4}','string','yes','no','no','List source: IPv4 load balancers'),
ae67fa11 1526('IPV4OBJ_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8} or {\$typeid_12} or {\$typeid_445} or {\$typeid_447} or {\$typeid_798} or {\$typeid_1397} or {\$typeid_1502} or {\$typeid_1503} or {\$typeid_1504} or {\$typeid_1507}','string','yes','no','no','List source: IPv4-enabled objects'),
aa004b1a
DO
1527('IPV4NAT_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8} or {\$typeid_798}','string','yes','no','no','List source: IPv4 NAT performers'),
1528('ASSETWARN_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8}','string','yes','no','no','List source: object, for which asset tag should be set'),
1529('NAMEWARN_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8}','string','yes','no','no','List source: object, for which common name should be set'),
1530('RACKS_PER_ROW','12','uint','yes','no','yes','Racks per row'),
0ec44a91
AA
1531('FILTER_PREDICATE_SIEVE','','string','yes','no','yes','Predicate sieve regex(7)'),
1532('FILTER_DEFAULT_ANDOR','or','string','no','no','yes','Default list filter boolean operation (or/and)'),
1533('FILTER_SUGGEST_ANDOR','yes','string','no','no','yes','Suggest and/or selector in list filter'),
1534('FILTER_SUGGEST_TAGS','yes','string','no','no','yes','Suggest tags in list filter'),
1535('FILTER_SUGGEST_PREDICATES','yes','string','no','no','yes','Suggest predicates in list filter'),
1536('FILTER_SUGGEST_EXTRA','no','string','no','no','yes','Suggest extra expression in list filter'),
aa004b1a 1537('DEFAULT_SNMP_COMMUNITY','public','string','no','no','no','Default SNMP Community string'),
0ec44a91
AA
1538('IPV4_ENABLE_KNIGHT','yes','string','no','no','yes','Enable IPv4 knight feature'),
1539('TAGS_TOPLIST_SIZE','50','uint','yes','no','yes','Tags top list size'),
1540('TAGS_QUICKLIST_SIZE','20','uint','no','no','yes','Tags quick list size'),
1541('TAGS_QUICKLIST_THRESHOLD','50','uint','yes','no','yes','Tags quick list threshold'),
1542('ENABLE_MULTIPORT_FORM','no','string','no','no','yes','Enable "Add/update multiple ports" form'),
aa004b1a 1543('DEFAULT_PORT_IIF_ID','1','uint','no','no','no','Default port inner interface ID'),
833583b5 1544('DEFAULT_PORT_OIF_IDS','1=24; 3=1078; 4=1077; 5=1079; 6=1080; 8=1082; 9=1084; 10=1588; 11=1668','string','no','no','no','Default port outer interface IDs'),
0ec44a91 1545('IPV4_TREE_RTR_AS_CELL','yes','string','no','no','yes','Show full router info for each network in IPv4 tree view'),
76a7ec36 1546('PROXIMITY_RANGE','0','uint','yes','no','yes','Proximity range (0 is current rack only)'),
aa004b1a
DO
1547('VLANSWITCH_LISTSRC', '', 'string', 'yes', 'no', 'yes', 'List of VLAN running switches'),
1548('VLANIPV4NET_LISTSRC', '', 'string', 'yes', 'no', 'yes', 'List of VLAN-based IPv4 networks'),
1549('IPV4_TREE_SHOW_VLAN','yes','string','no','no','yes','Show VLAN for each network in IPv4 tree'),
1550('DEFAULT_VDOM_ID','','uint','yes','no','yes','Default VLAN domain ID'),
1551('DEFAULT_VST_ID','','uint','yes','no','yes','Default VLAN switch template ID'),
1552('8021Q_DEPLOY_MINAGE','300','uint','no','no','no','802.1Q deploy minimum age'),
1553('8021Q_DEPLOY_MAXAGE','3600','uint','no','no','no','802.1Q deploy maximum age'),
1554('8021Q_DEPLOY_RETRY','10800','uint','no','no','no','802.1Q deploy retry timer'),
1555('8021Q_WRI_AFTER_CONFT_LISTSRC','false','string','no','no','no','802.1Q: save device configuration after deploy (RackCode)'),
1556('8021Q_INSTANT_DEPLOY','no','string','no','no','yes','802.1Q: instant deploy'),
1557('STATIC_FILTER','yes','string','no','no','yes','Enable Filter Caching'),
1558('ENABLE_BULKPORT_FORM','yes','string','no','no','yes','Enable "Bulk Port" form'),
1559('CDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running CDP'),
1560('LLDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running LLDP'),
aa004b1a
DO
1561('SHRINK_TAG_TREE_ON_CLICK','yes','string','no','no','yes','Dynamically hide useless tags in tagtree'),
1562('MAX_UNFILTERED_ENTITIES','0','uint','no','no','yes','Max item count to display on unfiltered result page'),
1563('SYNCDOMAIN_MAX_PROCESSES','0','uint','yes','no', 'no', 'How many worker proceses syncdomain cron script should create'),
0682218d 1564('PORT_EXCLUSION_LISTSRC','{\$typeid_3} or {\$typeid_10} or {\$typeid_11} or {\$typeid_1505} or {\$typeid_1506}','string','yes','no','no','List source: objects without ports'),
6d42599c 1565('FILTER_RACKLIST_BY_TAGS','yes','string','yes','no','yes','Rackspace: show only racks matching the current object\'s tags'),
852c508a
AA
1566('SSH_OBJS_LISTSRC','none','string','yes','no','yes','Rackcode filter for SSH-managed objects'),
1567('TELNET_OBJS_LISTSRC','none','string','yes','no','yes','Rackcode filter for telnet-managed objects'),
f1cdc9f1 1568('SYNC_802Q_LISTSRC','','string','yes','no','no','List of VLAN switches sync is enabled on'),
a1d72d2e 1569('QUICK_LINK_PAGES','','string','yes','no','yes','List of pages to dislay in quick links'),
bfbdd78b
DO
1570('CACTI_LISTSRC','false','string','yes','no','no','List of object with Cacti graphs'),
1571('CACTI_URL','','string','yes','no','no','Cacti server base URL'),
1572('CACTI_USERNAME','','string','yes','no','no','Cacti user account'),
1573('CACTI_USERPASS','','string','yes','no','no','Cacti user password'),
8dc2a6c8 1574('VIRTUAL_OBJ_LISTSRC','1504,1505,1506,1507','string','no','no','no','List source: virtual objects'),
0ec44a91
AA
1575('DATETIME_ZONE','UTC','string','yes','no','yes','Timezone to use for displaying/calculating dates'),
1576('DATETIME_FORMAT','m/d/Y','string','no','no','yes','PHP date() format to use for date output'),
72933f2a 1577('DB_VERSION','${db_version}','string','no','yes','no','Database version.');
aa004b1a
DO
1578
1579INSERT INTO `Script` VALUES ('RackCode','allow {\$userid_1}');
1580
1581INSERT INTO VLANValidID (vlan_id) VALUES
1582(1),
1583(2),
1584(3),
1585(4),
1586(5),
1587(6),
1588(7),
1589(8),
1590(9),
1591(10),
1592(11),
1593(12),
1594(13),
1595(14),
1596(15),
1597(16),
1598(17),
1599(18),
1600(19),
1601(20),
1602(21),
1603(22),
1604(23),
1605(24),
1606(25),
1607(26),
1608(27),
1609(28),
1610(29),
1611(30),
1612(31),
1613(32),
1614(33),
1615(34),
1616(35),
1617(36),
1618(37),
1619(38),
1620(39),
1621(40),
1622(41),
1623(42),
1624(43),
1625(44),
1626(45),
1627(46),
1628(47),
1629(48),
1630(49),
1631(50),
1632(51),
1633(52),
1634(53),
1635(54),
1636(55),
1637(56),
1638(57),
1639(58),
1640(59),
1641(60),
1642(61),
1643(62),
1644(63),
1645(64),
1646(65),
1647(66),
1648(67),
1649(68),
1650(69),
1651(70),
1652(71),
1653(72),
1654(73),
1655(74),
1656(75),
1657(76),
1658(77),
1659(78),
1660(79),
1661(80),
1662(81),
1663(82),
1664(83),
1665(84),
1666(85),
1667(86),
1668(87),
1669(88),
1670(89),
1671(90),
1672(91),
1673(92),
1674(93),
1675(94),
1676(95),
1677(96),
1678(97),
1679(98),
1680(99),
1681(100),
1682(101),
1683(102),
1684(103),
1685(104),
1686(105),
1687(106),
1688(107),
1689(108),
1690(109),
1691(110),
1692(111),
1693(112),
1694(113),
1695(114),
1696(115),
1697(116),
1698(117),
1699(118),
1700(119),
1701(120),
1702(121),
1703(122),
1704(123),
1705(124),
1706(125),
1707(126),
1708(127),
1709(128),
1710(129),
1711(130),
1712(131),
1713(132),
1714(133),
1715(134),
1716(135),
1717(136),
1718(137),
1719(138),
1720(139),
1721(140),
1722(141),
1723(142),
1724(143),
1725(144),
1726(145),
1727(146),
1728(147),
1729(148),
1730(149),
1731(150),
1732(151),
1733(152),
1734(153),
1735(154),
1736(155),
1737(156),
1738(157),
1739(158),
1740(159),
1741(160),
1742(161),
1743(162),
1744(163),
1745(164),
1746(165),
1747(166),
1748(167),
1749(168),
1750(169),
1751(170),
1752(171),
1753(172),
1754(173),
1755(174),
1756(175),
1757(176),
1758(177),
1759(178),
1760(179),
1761(180),
1762(181),
1763(182),
1764(183),
1765(184),
1766(185),
1767(186),
1768(187),
1769(188),
1770(189),
1771(190),
1772(191),
1773(192),
1774(193),
1775(194),
1776(195),
1777(196),
1778(197),
1779(198),
1780(199),
1781(200),
1782(201),
1783(202),
1784(203),
1785(204),
1786(205),
1787(206),
1788(207),
1789(208),
1790(209),
1791(210),
1792(211),
1793(212),
1794(213),
1795(214),
1796(215),
1797(216),
1798(217),
1799(218),
1800(219),
1801(220),
1802(221),
1803(222),
1804(223),
1805(224),
1806(225),
1807(226),
1808(227),
1809(228),
1810(229),
1811(230),
1812(231),
1813(232),
1814(233),
1815(234),
1816(235),
1817(236),
1818(237),
1819(238),
1820(239),
1821(240),
1822(241),
1823(242),
1824(243),
1825(244),
1826(245),
1827(246),
1828(247),
1829(248),
1830(249),
1831(250),
1832(251),
1833(252),
1834(253),
1835(254),
1836(255),
1837(256),
1838(257),
1839(258),
1840(259),
1841(260),
1842(261),
1843(262),
1844(263),
1845(264),
1846(265),
1847(266),
1848(267),
1849(268),
1850(269),
1851(270),
1852(271),
1853(272),
1854(273),
1855(274),
1856(275),
1857(276),
1858(277),
1859(278),
1860(279),
1861(280),
1862(281),
1863(282),
1864(283),
1865(284),
1866(285),
1867(286),
1868(287),
1869(288),
1870(289),
1871(290),
1872(291),
1873(292),
1874(293),
1875(294),
1876(295),
1877(296),
1878(297),
1879(298),
1880(299),
1881(300),
1882(301),
1883(302),
1884(303),
1885(304),
1886(305),
1887(306),
1888(307),
1889(308),
1890(309),
1891(310),
1892(311),
1893(312),
1894(313),
1895(314),
1896(315),
1897(316),
1898(317),
1899(318),
1900(319),
1901(320),
1902(321),
1903(322),
1904(323),
1905(324),
1906(325),
1907(326),
1908(327),
1909(328),
1910(329),
1911(330),
1912(331),
1913(332),
1914(333),
1915(334),
1916(335),
1917(336),
1918(337),
1919(338),
1920(339),
1921(340),
1922(341),
1923(342),
1924(343),
1925(344),
1926(345),
1927(346),
1928(347),
1929(348),
1930(349),
1931(350),
1932(351),
1933(352),
1934(353),
1935(354),
1936(355),
1937(356),
1938(357),
1939(358),
1940(359),
1941(360),
1942(361),
1943(362),
1944(363),
1945(364),
1946(365),
1947(366),
1948(367),
1949(368),
1950(369),
1951(370),
1952(371),
1953(372),
1954(373),
1955(374),
1956(375),
1957(376),
1958(377),
1959(378),
1960(379),
1961(380),
1962(381),
1963(382),
1964(383),
1965(384),
1966(385),
1967(386),
1968(387),
1969(388),
1970(389),
1971(390),
1972(391),
1973(392),
1974(393),
1975(394),
1976(395),
1977(396),
1978(397),
1979(398),
1980(399),
1981(400),
1982(401),
1983(402),
1984(403),
1985(404),
1986(405),
1987(406),
1988(407),
1989(408),
1990(409),
1991(410),
1992(411),
1993(412),
1994(413),
1995(414),
1996(415),
1997(416),
1998(417),
1999(418),
2000(419),
2001(420),
2002(421),
2003(422),
2004(423),
2005(424),
2006(425),
2007(426),
2008(427),
2009(428),
2010(429),
2011(430),
2012(431),
2013(432),
2014(433),
2015(434),
2016(435),
2017(436),
2018(437),
2019(438),
2020(439),
2021(440),
2022(441),
2023(442),
2024(443),
2025(444),
2026(445),
2027(446),
2028(447),
2029(448),
2030(449),
2031(450),
2032(451),
2033(452),
2034(453),
2035(454),
2036(455),
2037(456),
2038(457),
2039(458),
2040(459),
2041(460),
2042(461),
2043(462),
2044(463),
2045(464),
2046(465),
2047(466),
2048(467),
2049(468),
2050(469),
2051(470),
2052(471),
2053(472),
2054(473),
2055(474),
2056(475),
2057(476),
2058(477),
2059(478),
2060(479),
2061(480),
2062(481),
2063(482),
2064(483),
2065(484),
2066(485),
2067(486),
2068(487),
2069(488),
2070(489),
2071(490),
2072(491),
2073(492),
2074(493),
2075(494),
2076(495),
2077(496),
2078(497),
2079(498),
2080(499),
2081(500),
2082(501),
2083(502),
2084(503),
2085(504),
2086(505),
2087(506),
2088(507),
2089(508),
2090(509),
2091(510),
2092(511),
2093(512),
2094(513),
2095(514),
2096(515),
2097(516),
2098(517),
2099(518),
2100(519),
2101(520),
2102(521),
2103(522),
2104(523),
2105(524),
2106(525),
2107(526),
2108(527),
2109(528),
2110(529),
2111(530),
2112(531),
2113(532),
2114(533),
2115(534),
2116(535),
2117(536),
2118(537),
2119(538),
2120(539),
2121(540),
2122(541),
2123(542),
2124(543),
2125(544),
2126(545),
2127(546),
2128(547),
2129(548),
2130(549),
2131(550),
2132(551),
2133(552),
2134(553),
2135(554),
2136(555),
2137(556),
2138(557),
2139(558),
2140(559),
2141(560),
2142(561),
2143(562),
2144(563),
2145(564),
2146(565),
2147(566),
2148(567),
2149(568),
2150(569),
2151(570),
2152(571),
2153(572),
2154(573),
2155(574),
2156(575),
2157(576),
2158(577),
2159(578),
2160(579),
2161(580),
2162(581),
2163(582),
2164(583),
2165(584),
2166(585),
2167(586),
2168(587),
2169(588),
2170(589),
2171(590),
2172(591),
2173(592),
2174(593),
2175(594),
2176(595),
2177(596),
2178(597),
2179(598),
2180(599),
2181(600),
2182(601),
2183(602),
2184(603),
2185(604),
2186(605),
2187(606),
2188(607),
2189(608),
2190(609),
2191(610),
2192(611),
2193(612),
2194(613),
2195(614),
2196(615),
2197(616),
2198(617),
2199(618),
2200(619),
2201(620),
2202(621),
2203(622),
2204(623),
2205(624),
2206(625),
2207(626),
2208(627),
2209(628),
2210(629),
2211(630),
2212(631),
2213(632),
2214(633),
2215(634),
2216(635),
2217(636),
2218(637),
2219(638),
2220(639),
2221(640),
2222(641),
2223(642),
2224(643),
2225(644),
2226(645),
2227(646),
2228(647),
2229(648),
2230(649),
2231(650),
2232(651),
2233(652),
2234(653),
2235(654),
2236(655),
2237(656),
2238(657),
2239(658),
2240(659),
2241(660),
2242(661),
2243(662),
2244(663),
2245(664),
2246(665),
2247(666),
2248(667),
2249(668),
2250(669),
2251(670),
2252(671),
2253(672),
2254(673),
2255(674),
2256(675),
2257(676),
2258(677),
2259(678),
2260(679),
2261(680),
2262(681),
2263(682),
2264(683),
2265(684),
2266(685),
2267(686),
2268(687),
2269(688),
2270(689),
2271(690),
2272(691),
2273(692),
2274(693),
2275(694),
2276(695),
2277(696),
2278(697),
2279(698),
2280(699),
2281(700),
2282(701),
2283(702),
2284(703),
2285(704),
2286(705),
2287(706),
2288(707),
2289(708),
2290(709),
2291(710),
2292(711),
2293(712),
2294(713),
2295(714),
2296(715),
2297(716),
2298(717),
2299(718),
2300(719),
2301(720),
2302(721),
2303(722),
2304(723),
2305(724),
2306(725),
2307(726),
2308(727),
2309(728),
2310(729),
2311(730),
2312(731),
2313(732),
2314(733),
2315(734),
2316(735),
2317(736),
2318(737),
2319(738),
2320(739),
2321(740),
2322(741),
2323(742),
2324(743),
2325(744),
2326(745),
2327(746),
2328(747),
2329(748),
2330(749),
2331(750),
2332(751),
2333(752),
2334(753),
2335(754),
2336(755),
2337(756),
2338(757),
2339(758),
2340(759),
2341(760),
2342(761),
2343(762),
2344(763),
2345(764),
2346(765),
2347(766),
2348(767),
2349(768),
2350(769),
2351(770),
2352(771),
2353(772),
2354(773),
2355(774),
2356(775),
2357(776),
2358(777),
2359(778),
2360(779),
2361(780),
2362(781),
2363(782),
2364(783),
2365(784),
2366(785),
2367(786),
2368(787),
2369(788),
2370(789),
2371(790),
2372(791),
2373(792),
2374(793),
2375(794),
2376(795),
2377(796),
2378(797),
2379(798),
2380(799),
2381(800),
2382(801),
2383(802),
2384(803),
2385(804),
2386(805),
2387(806),
2388(807),
2389(808),
2390(809),
2391(810),
2392(811),
2393(812),
2394(813),
2395(814),
2396(815),
2397(816),
2398(817),
2399(818),
2400(819),
2401(820),
2402(821),
2403(822),
2404(823),
2405(824),
2406(825),
2407(826),
2408(827),
2409(828),
2410(829),
2411(830),
2412(831),
2413(832),
2414(833),
2415(834),
2416(835),
2417(836),
2418(837),
2419(838),
2420(839),
2421(840),
2422(841),
2423(842),
2424(843),
2425(844),
2426(845),
2427(846),
2428(847),
2429(848),
2430(849),
2431(850),
2432(851),
2433(852),
2434(853),
2435(854),
2436(855),
2437(856),
2438(857),
2439(858),
2440(859),
2441(860),
2442(861),
2443(862),
2444(863),
2445(864),
2446(865),
2447(866),
2448(867),
2449(868),
2450(869),
2451(870),
2452(871),
2453(872),
2454(873),
2455(874),
2456(875),
2457(876),
2458(877),
2459(878),
2460(879),
2461(880),
2462(881),
2463(882),
2464(883),
2465(884),
2466(885),
2467(886),
2468(887),
2469(888),
2470(889),
2471(890),
2472(891),
2473(892),
2474(893),
2475(894),
2476(895),
2477(896),
2478(897),
2479(898),
2480(899),
2481(900),
2482(901),
2483(902),
2484(903),
2485(904),
2486(905),
2487(906),
2488(907),
2489(908),
2490(909),
2491(910),
2492(911),
2493(912),
2494(913),
2495(914),
2496(915),
2497(916),
2498(917),
2499(918),
2500(919),
2501(920),
2502(921),
2503(922),
2504(923),
2505(924),
2506(925),
2507(926),
2508(927),
2509(928),
2510(929),
2511(930),
2512(931),
2513(932),
2514(933),
2515(934),
2516(935),
2517(936),
2518(937),
2519(938),
2520(939),
2521(940),
2522(941),
2523(942),
2524(943),
2525(944),
2526(945),
2527(946),
2528(947),
2529(948),
2530(949),
2531(950),
2532(951),
2533(952),
2534(953),
2535(954),
2536(955),
2537(956),
2538(957),
2539(958),
2540(959),
2541(960),
2542(961),
2543(962),
2544(963),
2545(964),
2546(965),
2547(966),
2548(967),
2549(968),
2550(969),
2551(970),
2552(971),
2553(972),
2554(973),
2555(974),
2556(975),
2557(976),
2558(977),
2559(978),
2560(979),
2561(980),
2562(981),
2563(982),
2564(983),
2565(984),
2566(985),
2567(986),
2568(987),
2569(988),
2570(989),
2571(990),
2572(991),
2573(992),
2574(993),
2575(994),
2576(995),
2577(996),
2578(997),
2579(998),
2580(999),
2581(1000),
2582(1001),
2583(1002),
2584(1003),
2585(1004),
2586(1005),
2587(1006),
2588(1007),
2589(1008),
2590(1009),
2591(1010),
2592(1011),
2593(1012),
2594(1013),
2595(1014),
2596(1015),
2597(1016),
2598(1017),
2599(1018),
2600(1019),
2601(1020),
2602(1021),
2603(1022),
2604(1023),
2605(1024),
2606(1025),
2607(1026),
2608(1027),
2609(1028),
2610(1029),
2611(1030),
2612(1031),
2613(1032),
2614(1033),
2615(1034),
2616(1035),
2617(1036),
2618(1037),
2619(1038),
2620(1039),
2621(1040),
2622(1041),
2623(1042),
2624(1043),
2625(1044),
2626(1045),
2627(1046),
2628(1047),
2629(1048),
2630(1049),
2631(1050),
2632(1051),
2633(1052),
2634(1053),
2635(1054),
2636(1055),
2637(1056),
2638(1057),
2639(1058),
2640(1059),
2641(1060),
2642(1061),
2643(1062),
2644(1063),
2645(1064),
2646(1065),
2647(1066),
2648(1067),
2649(1068),
2650(1069),
2651(1070),
2652(1071),
2653(1072),
2654(1073),
2655(1074),
2656(1075),
2657(1076),
2658(1077),
2659(1078),
2660(1079),
2661(1080),
2662(1081),
2663(1082),
2664(1083),
2665(1084),
2666(1085),
2667(1086),
2668(1087),
2669(1088),
2670(1089),
2671(1090),
2672(1091),
2673(1092),
2674(1093),
2675(1094),
2676(1095),
2677(1096),
2678(1097),
2679(1098),
2680(1099),
2681(1100),
2682(1101),
2683(1102),
2684(1103),
2685(1104),
2686(1105),
2687(1106),
2688(1107),
2689(1108),
2690(1109),
2691(1110),
2692(1111),
2693(1112),
2694(1113),
2695(1114),
2696(1115),
2697(1116),
2698(1117),
2699(1118),
2700(1119),
2701(1120),
2702(1121),
2703(1122),
2704(1123),
2705(1124),
2706(1125),
2707(1126),
2708(1127),
2709(1128),
2710(1129),
2711(1130),
2712(1131),
2713(1132),
2714(1133),
2715(1134),
2716(1135),
2717(1136),
2718(1137),
2719(1138),
2720(1139),
2721(1140),
2722(1141),
2723(1142),
2724(1143),
2725(1144),
2726(1145),
2727(1146),
2728(1147),
2729(1148),
2730(1149),
2731(1150),
2732(1151),
2733(1152),
2734(1153),
2735(1154),
2736(1155),
2737(1156),
2738(1157),
2739(1158),
2740(1159),
2741(1160),
2742(1161),
2743(1162),
2744(1163),
2745(1164),
2746(1165),
2747(1166),
2748(1167),
2749(1168),
2750(1169),
2751(1170),
2752(1171),
2753(1172),
2754(1173),
2755(1174),
2756(1175),
2757(1176),
2758(1177),
2759(1178),
2760(1179),
2761(1180),
2762(1181),
2763(1182),
2764(1183),
2765(1184),
2766(1185),
2767(1186),
2768(1187),
2769(1188),
2770(1189),
2771(1190),
2772(1191),
2773(1192),
2774(1193),
2775(1194),
2776(1195),
2777(1196),
2778(1197),
2779(1198),
2780(1199),
2781(1200),
2782(1201),
2783(1202),
2784(1203),
2785(1204),
2786(1205),
2787(1206),
2788(1207),
2789(1208),
2790(1209),
2791(1210),
2792(1211),
2793(1212),
2794(1213),
2795(1214),
2796(1215),
2797(1216),
2798(1217),
2799(1218),
2800(1219),
2801(1220),
2802(1221),
2803(1222),
2804(1223),
2805(1224),
2806(1225),
2807(1226),
2808(1227),
2809(1228),
2810(1229),
2811(1230),
2812(1231),
2813(1232),
2814(1233),
2815(1234),
2816(1235),
2817(1236),
2818(1237),
2819(1238),
2820(1239),
2821(1240),
2822(1241),
2823(1242),
2824(1243),
2825(1244),
2826(1245),
2827(1246),
2828(1247),
2829(1248),
2830(1249),
2831(1250),
2832(1251),
2833(1252),
2834(1253),
2835(1254),
2836(1255),
2837(1256),
2838(1257),
2839(1258),
2840(1259),
2841(1260),
2842(1261),
2843(1262),
2844(1263),
2845(1264),
2846(1265),
2847(1266),
2848(1267),
2849(1268),
2850(1269),
2851(1270),
2852(1271),
2853(1272),
2854(1273),
2855(1274),
2856(1275),
2857(1276),
2858(1277),
2859(1278),
2860(1279),
2861(1280),
2862(1281),
2863(1282),
2864(1283),
2865(1284),
2866(1285),
2867(1286),
2868(1287),
2869(1288),
2870(1289),
2871(1290),
2872(1291),
2873(1292),
2874(1293),
2875(1294),
2876(1295),
2877(1296),
2878(1297),
2879(1298),
2880(1299),
2881(1300),
2882(1301),
2883(1302),
2884(1303),
2885(1304),
2886(1305),
2887(1306),
2888(1307),
2889(1308),
2890(1309),
2891(1310),
2892(1311),
2893(1312),
2894(1313),
2895(1314),
2896(1315),
2897(1316),
2898(1317),
2899(1318),
2900(1319),
2901(1320),
2902(1321),
2903(1322),
2904(1323),
2905(1324),
2906(1325),
2907(1326),
2908(1327),
2909(1328),
2910(1329),
2911(1330),
2912(1331),
2913(1332),
2914(1333),
2915(1334),
2916(1335),
2917(1336),
2918(1337),
2919(1338),
2920(1339),
2921(1340),
2922(1341),
2923(1342),
2924(1343),
2925(1344),
2926(1345),
2927(1346),
2928(1347),
2929(1348),
2930(1349),
2931(1350),
2932(1351),
2933(1352),
2934(1353),
2935(1354),
2936(1355),
2937(1356),
2938(1357),
2939(1358),
2940(1359),
2941(1360),
2942(1361),
2943(1362),
2944(1363),
2945(1364),
2946(1365),
2947(1366),
2948(1367),
2949(1368),
2950(1369),
2951(1370),
2952(1371),
2953(1372),
2954(1373),
2955(1374),
2956(1375),
2957(1376),
2958(1377),
2959(1378),
2960(1379),
2961(1380),
2962(1381),
2963(1382),
2964(1383),
2965(1384),
2966(1385),
2967(1386),
2968(1387),
2969(1388),
2970(1389),
2971(1390),
2972(1391),
2973(1392),
2974(1393),
2975(1394),
2976(1395),
2977(1396),
2978(1397),
2979(1398),
2980(1399),
2981(1400),
2982(1401),
2983(1402),
2984(1403),
2985(1404),
2986(1405),
2987(1406),
2988(1407),
2989(1408),
2990(1409),
2991(1410),
2992(1411),
2993(1412),
2994(1413),
2995(1414),
2996(1415),
2997(1416),
2998(1417),
2999(1418),
3000(1419),
3001(1420),
3002(1421),
3003(1422),
3004(1423),
3005(1424),
3006(1425),
3007(1426),
3008(1427),
3009(1428),
3010(1429),
3011(1430),
3012(1431),
3013(1432),
3014(1433),
3015(1434),
3016(1435),
3017(1436),
3018(1437),
3019(1438),
3020(1439),
3021(1440),
3022(1441),
3023(1442),
3024(1443),
3025(1444),
3026(1445),
3027(1446),
3028(1447),
3029(1448),
3030(1449),
3031(1450),
3032(1451),
3033(1452),
3034(1453),
3035(1454),
3036(1455),
3037(1456),
3038(1457),
3039(1458),
3040(1459),
3041(1460),
3042(1461),
3043(1462),
3044(1463),
3045(1464),
3046(1465),
3047(1466),
3048(1467),
3049(1468),
3050(1469),
3051(1470),
3052(1471),
3053(1472),
3054(1473),
3055(1474),
3056(1475),
3057(1476),
3058(1477),
3059(1478),
3060(1479),
3061(1480),
3062(1481),
3063(1482),
3064(1483),
3065(1484),
3066(1485),
3067(1486),
3068(1487),
3069(1488),
3070(1489),
3071(1490),
3072(1491),
3073(1492),
3074(1493),
3075(1494),
3076(1495),
3077(1496),
3078(1497),
3079(1498),
3080(1499),
3081(1500),
3082(1501),
3083(1502),
3084(1503),
3085(1504),
3086(1505),
3087(1506),
3088(1507),
3089(1508),
3090(1509),
3091(1510),
3092(1511),
3093(1512),
3094(1513),
3095(1514),
3096(1515),
3097(1516),
3098(1517),
3099(1518),
3100(1519),
3101(1520),
3102(1521),
3103(1522),
3104(1523),
3105(1524),
3106(1525),
3107(1526),
3108(1527),
3109(1528),
3110(1529),
3111(1530),
3112(1531),
3113(1532),
3114(1533),
3115(1534),
3116(1535),
3117(1536),
3118(1537),
3119(1538),
3120(1539),
3121(1540),
3122(1541),
3123(1542),
3124(1543),
3125(1544),
3126(1545),
3127(1546),
3128(1547),
3129(1548),
3130(1549),
3131(1550),
3132(1551),
3133(1552),
3134(1553),
3135(1554),
3136(1555),
3137(1556),
3138(1557),
3139(1558),
3140(1559),
3141(1560),
3142(1561),
3143(1562),
3144(1563),
3145(1564),
3146(1565),
3147(1566),
3148(1567),
3149(1568),
3150(1569),
3151(1570),
3152(1571),
3153(1572),
3154(1573),
3155(1574),
3156(1575),
3157(1576),
3158(1577),
3159(1578),
3160(1579),
3161(1580),
3162(1581),
3163(1582),
3164(1583),
3165(1584),
3166(1585),
3167(1586),
3168(1587),
3169(1588),
3170(1589),
3171(1590),
3172(1591),
3173(1592),
3174(1593),
3175(1594),
3176(1595),
3177(1596),
3178(1597),
3179(1598),
3180(1599),
3181(1600),
3182(1601),
3183(1602),
3184(1603),
3185(1604),
3186(1605),
3187(1606),
3188(1607),
3189(1608),
3190(1609),
3191(1610),
3192(1611),
3193(1612),
3194(1613),
3195(1614),
3196(1615),
3197(1616),
3198(1617),
3199(1618),
3200(1619),
3201(1620),
3202(1621),
3203(1622),
3204(1623),
3205(1624),
3206(1625),
3207(1626),
3208(1627),
3209(1628),
3210(1629),
3211(1630),
3212(1631),
3213(1632),
3214(1633),
3215(1634),
3216(1635),
3217(1636),
3218(1637),
3219(1638),
3220(1639),
3221(1640),
3222(1641),
3223(1642),
3224(1643),
3225(1644),
3226(1645),
3227(1646),
3228(1647),
3229(1648),
3230(1649),
3231(1650),
3232(1651),
3233(1652),
3234(1653),
3235(1654),
3236(1655),
3237(1656),
3238(1657),
3239(1658),
3240(1659),
3241(1660),
3242(1661),
3243(1662),
3244(1663),
3245(1664),
3246(1665),
3247(1666),
3248(1667),
3249(1668),
3250(1669),
3251(1670),
3252(1671),
3253(1672),
3254(1673),
3255(1674),
3256(1675),
3257(1676),
3258(1677),
3259(1678),
3260(1679),
3261(1680),
3262(1681),
3263(1682),
3264(1683),
3265(1684),
3266(1685),
3267(1686),
3268(1687),
3269(1688),
3270(1689),
3271(1690),
3272(1691),
3273(1692),
3274(1693),
3275(1694),
3276(1695),
3277(1696),
3278(1697),
3279(1698),
3280(1699),
3281(1700),
3282(1701),
3283(1702),
3284(1703),
3285(1704),
3286(1705),
3287(1706),
3288(1707),
3289(1708),
3290(1709),
3291(1710),
3292(1711),
3293(1712),
3294(1713),
3295(1714),
3296(1715),
3297(1716),
3298(1717),
3299(1718),
3300(1719),
3301(1720),
3302(1721),
3303(1722),
3304(1723),
3305(1724),
3306(1725),
3307(1726),
3308(1727),
3309(1728),
3310(1729),
3311(1730),
3312(1731),
3313(1732),
3314(1733),
3315(1734),
3316(1735),
3317(1736),
3318(1737),
3319(1738),
3320(1739),
3321(1740),
3322(1741),
3323(1742),
3324(1743),
3325(1744),
3326(1745),
3327(1746),
3328(1747),
3329(1748),
3330(1749),
3331(1750),
3332(1751),
3333(1752),
3334(1753),
3335(1754),
3336(1755),
3337(1756),
3338(1757),
3339(1758),
3340(1759),
3341(1760),
3342(1761),
3343(1762),
3344(1763),
3345(1764),
3346(1765),
3347(1766),
3348(1767),
3349(1768),
3350(1769),
3351(1770),
3352(1771),
3353(1772),
3354(1773),
3355(1774),
3356(1775),
3357(1776),
3358(1777),
3359(1778),
3360(1779),
3361(1780),
3362(1781),
3363(1782),
3364(1783),
3365(1784),
3366(1785),
3367(1786),
3368(1787),
3369(1788),
3370(1789),
3371(1790),
3372(1791),
3373(1792),
3374(1793),
3375(1794),
3376(1795),
3377(1796),
3378(1797),
3379(1798),
3380(1799),
3381(1800),
3382(1801),
3383(1802),
3384(1803),
3385(1804),
3386(1805),
3387(1806),
3388(1807),
3389(1808),
3390(1809),
3391(1810),
3392(1811),
3393(1812),
3394(1813),
3395(1814),
3396(1815),
3397(1816),
3398(1817),
3399(1818),
3400(1819),
3401(1820),
3402(1821),
3403(1822),
3404(1823),
3405(1824),
3406(1825),
3407(1826),
3408(1827),
3409(1828),
3410(1829),
3411(1830),
3412(1831),
3413(1832),
3414(1833),
3415(1834),
3416(1835),
3417(1836),
3418(1837),
3419(1838),
3420(1839),
3421(1840),
3422(1841),
3423(1842),
3424(1843),
3425(1844),
3426(1845),
3427(1846),
3428(1847),
3429(1848),
3430(1849),
3431(1850),
3432(1851),
3433(1852),
3434(1853),
3435(1854),
3436(1855),
3437(1856),
3438(1857),
3439(1858),
3440(1859),
3441(1860),
3442(1861),
3443(1862),
3444(1863),
3445(1864),
3446(1865),
3447(1866),
3448(1867),
3449(1868),
3450(1869),
3451(1870),
3452(1871),
3453(1872),
3454(1873),
3455(1874),
3456(1875),
3457(1876),
3458(1877),
3459(1878),
3460(1879),
3461(1880),
3462(1881),
3463(1882),
3464(1883),
3465(1884),
3466(1885),
3467(1886),
3468(1887),
3469(1888),
3470(1889),
3471(1890),
3472(1891),
3473(1892),
3474(1893),
3475(1894),
3476(1895),
3477(1896),
3478(1897),
3479(1898),
3480(1899),
3481(1900),
3482(1901),
3483(1902),
3484(1903),
3485(1904),
3486(1905),
3487(1906),
3488(1907),
3489(1908),
3490(1909),
3491(1910),
3492(1911),
3493(1912),
3494(1913),
3495(1914),
3496(1915),
3497(1916),
3498(1917),
3499(1918),
3500(1919),
3501(1920),
3502(1921),
3503(1922),
3504(1923),
3505(1924),
3506(1925),
3507(1926),
3508(1927),
3509(1928),
3510(1929),
3511(1930),
3512(1931),
3513(1932),
3514(1933),
3515(1934),
3516(1935),
3517(1936),
3518(1937),
3519(1938),
3520(1939),
3521(1940),
3522(1941),
3523(1942),
3524(1943),
3525(1944),
3526(1945),
3527(1946),
3528(1947),
3529(1948),
3530(1949),
3531(1950),
3532(1951),
3533(1952),
3534(1953),
3535(1954),
3536(1955),
3537(1956),
3538(1957),
3539(1958),
3540(1959),
3541(1960),
3542(1961),
3543(1962),
3544(1963),
3545(1964),
3546(1965),
3547(1966),
3548(1967),
3549(1968),
3550(1969),
3551(1970),
3552(1971),
3553(1972),
3554(1973),
3555(1974),
3556(1975),
3557(1976),
3558(1977),
3559(1978),
3560(1979),
3561(1980),
3562(1981),
3563(1982),
3564(1983),
3565(1984),
3566(1985),
3567(1986),
3568(1987),
3569(1988),
3570(1989),
3571(1990),
3572(1991),
3573(1992),
3574(1993),
3575(1994),
3576(1995),
3577(1996),
3578(1997),
3579(1998),
3580(1999),
3581(2000),
3582(2001),
3583(2002),
3584(2003),
3585(2004),
3586(2005),
3587(2006),
3588(2007),
3589(2008),
3590(2009),
3591(2010),
3592(2011),
3593(2012),
3594(2013),
3595(2014),
3596(2015),
3597(2016),
3598(2017),
3599(2018),
3600(2019),
3601(2020),
3602(2021),
3603(2022),
3604(2023),
3605(2024),
3606(2025),
3607(2026),
3608(2027),
3609(2028),
3610(2029),
3611(2030),
3612(2031),
3613(2032),
3614(2033),
3615(2034),
3616(2035),
3617(2036),
3618(2037),
3619(2038),
3620(2039),
3621(2040),
3622(2041),
3623(2042),
3624(2043),
3625(2044),
3626(2045),
3627(2046),
3628(2047),
3629(2048),
3630(2049),
3631(2050),
3632(2051),
3633(2052),
3634(2053),
3635(2054),
3636(2055),
3637(2056),
3638(2057),
3639(2058),
3640(2059),
3641(2060),
3642(2061),
3643(2062),
3644(2063),
3645(2064),
3646(2065),
3647(2066),
3648(2067),
3649(2068),
3650(2069),
3651(2070),
3652(2071),
3653(2072),
3654(2073),
3655(2074),
3656(2075),
3657(2076),
3658(2077),
3659(2078),
3660(2079),
3661(2080),
3662(2081),
3663(2082),
3664(2083),
3665(2084),
3666(2085),
3667(2086),
3668(2087),
3669(2088),
3670(2089),
3671(2090),
3672(2091),
3673(2092),
3674(2093),
3675(2094),
3676(2095),
3677(2096),
3678(2097),
3679(2098),
3680(2099),
3681(2100),
3682(2101),
3683(2102),
3684(2103),
3685(2104),
3686(2105),
3687(2106),
3688(2107),
3689(2108),
3690(2109),
3691(2110),
3692(2111),
3693(2112),
3694(2113),
3695(2114),
3696(2115),
3697(2116),
3698(2117),
3699(2118),
3700(2119),
3701(2120),
3702(2121),
3703(2122),
3704(2123),
3705(2124),
3706(2125),
3707(2126),
3708(2127),
3709(2128),
3710(2129),
3711(2130),
3712(2131),
3713(2132),
3714(2133),
3715(2134),
3716(2135),
3717(2136),
3718(2137),
3719(2138),
3720(2139),
3721(2140),
3722(2141),
3723(2142),
3724(2143),
3725(2144),
3726(2145),
3727(2146),
3728(2147),
3729(2148),
3730(2149),
3731(2150),
3732(2151),
3733(2152),
3734(2153),
3735(2154),
3736(2155),
3737(2156),
3738(2157),
3739(2158),
3740(2159),
3741(2160),
3742(2161),
3743(2162),
3744(2163),
3745(2164),
3746(2165),
3747(2166),
3748(2167),
3749(2168),
3750(2169),
3751(2170),
3752(2171),
3753(2172),
3754(2173),
3755(2174),
3756(2175),
3757(2176),
3758(2177),
3759(2178),
3760(2179),
3761(2180),
3762(2181),
3763(2182),
3764(2183),
3765(2184),
3766(2185),
3767(2186),
3768(2187),
3769(2188),
3770(2189),
3771(2190),
3772(2191),
3773(2192),
3774(2193),
3775(2194),
3776(2195),
3777(2196),
3778(2197),
3779(2198),
3780(2199),
3781(2200),
3782(2201),
3783(2202),
3784(2203),
3785(2204),
3786(2205),
3787(2206),
3788(2207),
3789(2208),
3790(2209),
3791(2210),
3792(2211),
3793(2212),
3794(2213),
3795(2214),
3796(2215),
3797(2216),
3798(2217),
3799(2218),
3800(2219),
3801(2220),
3802(2221),
3803(2222),
3804(2223),
3805(2224),
3806(2225),
3807(2226),
3808(2227),
3809(2228),
3810(2229),
3811(2230),
3812(2231),
3813(2232),
3814(2233),
3815(2234),
3816(2235),
3817(2236),
3818(2237),
3819(2238),
3820(2239),
3821(2240),
3822(2241),
3823(2242),
3824(2243),
3825(2244),
3826(2245),
3827(2246),
3828(2247),
3829(2248),
3830(2249),
3831(2250),
3832(2251),
3833(2252),
3834(2253),
3835(2254),
3836(2255),
3837(2256),
3838(2257),
3839(2258),
3840(2259),
3841(2260),
3842(2261),
3843(2262),
3844(2263),
3845(2264),
3846(2265),
3847(2266),
3848(2267),
3849(2268),
3850(2269),
3851(2270),
3852(2271),
3853(2272),
3854(2273),
3855(2274),
3856(2275),
3857(2276),
3858(2277),
3859(2278),
3860(2279),
3861(2280),
3862(2281),
3863(2282),
3864(2283),
3865(2284),
3866(2285),
3867(2286),
3868(2287),
3869(2288),
3870(2289),
3871(2290),
3872(2291),
3873(2292),
3874(2293),
3875(2294),
3876(2295),
3877(2296),
3878(2297),
3879(2298),
3880(2299),
3881(2300),
3882(2301),
3883(2302),
3884(2303),
3885(2304),
3886(2305),
3887(2306),
3888(2307),
3889(2308),
3890(2309),
3891(2310),
3892(2311),
3893(2312),
3894(2313),
3895(2314),
3896(2315),
3897(2316),
3898(2317),
3899(2318),
3900(2319),
3901(2320),
3902(2321),
3903(2322),
3904(2323),
3905(2324),
3906(2325),
3907(2326),
3908(2327),
3909(2328),
3910(2329),
3911(2330),
3912(2331),
3913(2332),
3914(2333),
3915(2334),
3916(2335),
3917(2336),
3918(2337),
3919(2338),
3920(2339),
3921(2340),
3922(2341),
3923(2342),
3924(2343),
3925(2344),
3926(2345),
3927(2346),
3928(2347),
3929(2348),
3930(2349),
3931(2350),
3932(2351),
3933(2352),
3934(2353),
3935(2354),
3936(2355),
3937(2356),
3938(2357),
3939(2358),
3940(2359),
3941(2360),
3942(2361),
3943(2362),
3944(2363),
3945(2364),
3946(2365),
3947(2366),
3948(2367),
3949(2368),
3950(2369),
3951(2370),
3952(2371),
3953(2372),
3954(2373),
3955(2374),
3956(2375),
3957(2376),
3958(2377),
3959(2378),
3960(2379),
3961(2380),
3962(2381),
3963(2382),
3964(2383),
3965(2384),
3966(2385),
3967(2386),
3968(2387),
3969(2388),
3970(2389),
3971(2390),
3972(2391),
3973(2392),
3974(2393),
3975(2394),
3976(2395),
3977(2396),
3978(2397),
3979(2398),
3980(2399),
3981(2400),
3982(2401),
3983(2402),
3984(2403),
3985(2404),
3986(2405),
3987(2406),
3988(2407),
3989(2408),
3990(2409),
3991(2410),
3992(2411),
3993(2412),
3994(2413),
3995(2414),
3996(2415),
3997(2416),
3998(2417),
3999(2418),
4000(2419),
4001(2420),
4002(2421),
4003(2422),
4004(2423),
4005(2424),
4006(2425),
4007(2426),
4008(2427),
4009(2428),
4010(2429),
4011(2430),
4012(2431),
4013(2432),
4014(2433),
4015(2434),
4016(2435),
4017(2436),
4018(2437),
4019(2438),
4020(2439),
4021(2440),
4022(2441),
4023(2442),
4024(2443),
4025(2444),
4026(2445),
4027(2446),
4028(2447),
4029(2448),
4030(2449),
4031(2450),
4032(2451),
4033(2452),
4034(2453),
4035(2454),
4036(2455),
4037(2456),
4038(2457),
4039(2458),
4040(2459),
4041(2460),
4042(2461),
4043(2462),
4044(2463),
4045(2464),
4046(2465),
4047(2466),
4048(2467),
4049(2468),
4050(2469),
4051(2470),
4052(2471),
4053(2472),
4054(2473),
4055(2474),
4056(2475),
4057(2476),
4058(2477),
4059(2478),
4060(2479),
4061(2480),
4062(2481),
4063(2482),
4064(2483),
4065(2484),
4066(2485),
4067(2486),
4068(2487),
4069(2488),
4070(2489),
4071(2490),
4072(2491),
4073(2492),
4074(2493),
4075(2494),
4076(2495),
4077(2496),
4078(2497),
4079(2498),
4080(2499),
4081(2500),
4082(2501),
4083(2502),
4084(2503),
4085(2504),
4086(2505),
4087(2506),
4088(2507),
4089(2508),
4090(2509),
4091(2510),
4092(2511),
4093(2512),
4094(2513),
4095(2514),
4096(2515),
4097(2516),
4098(2517),
4099(2518),
4100(2519),
4101(2520),
4102(2521),
4103(2522),
4104(2523),
4105(2524),
4106(2525),
4107(2526),
4108(2527),
4109(2528),
4110(2529),
4111(2530),
4112(2531),
4113(2532),
4114(2533),
4115(2534),
4116(2535),
4117(2536),
4118(2537),
4119(2538),
4120(2539),
4121(2540),
4122(2541),
4123(2542),
4124(2543),
4125(2544),
4126(2545),
4127(2546),
4128(2547),
4129(2548),
4130(2549),
4131(2550),
4132(2551),
4133(2552),
4134(2553),
4135(2554),
4136(2555),
4137(2556),
4138(2557),
4139(2558),
4140(2559),
4141(2560),
4142(2561),
4143(2562),
4144(2563),
4145(2564),
4146(2565),
4147(2566),
4148(2567),
4149(2568),
4150(2569),
4151(2570),
4152(2571),
4153(2572),
4154(2573),
4155(2574),
4156(2575),
4157(2576),
4158(2577),
4159(2578),
4160(2579),
4161(2580),
4162(2581),
4163(2582),
4164(2583),
4165(2584),
4166(2585),
4167(2586),
4168(2587),
4169(2588),
4170(2589),
4171(2590),
4172(2591),
4173(2592),
4174(2593),
4175(2594),
4176(2595),
4177(2596),
4178(2597),
4179(2598),
4180(2599),
4181(2600),
4182(2601),
4183(2602),
4184(2603),
4185(2604),
4186(2605),
4187(2606),
4188(2607),
4189(2608),
4190(2609),
4191(2610),
4192(2611),
4193(2612),
4194(2613),
4195(2614),
4196(2615),
4197(2616),
4198(2617),
4199(2618),
4200(2619),
4201(2620),
4202(2621),
4203(2622),
4204(2623),
4205(2624),
4206(2625),
4207(2626),
4208(2627),
4209(2628),
4210(2629),
4211(2630),
4212(2631),
4213(2632),
4214(2633),
4215(2634),
4216(2635),
4217(2636),
4218(2637),
4219(2638),
4220(2639),
4221(2640),
4222(2641),
4223(2642),
4224(2643),