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