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