content_server 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. data/bin/backup_server +8 -20
  2. data/bin/content_server +8 -20
  3. data/bin/testing_memory +60 -0
  4. data/bin/testing_server +57 -0
  5. data/ext/run_in_background/mkrf_conf.rb +34 -0
  6. data/lib/content_data/content_data.rb +613 -0
  7. data/lib/content_data/version.rb +3 -0
  8. data/lib/content_data.rb +6 -0
  9. data/lib/content_server/backup_server.rb +65 -86
  10. data/lib/content_server/content_server.rb +47 -77
  11. data/lib/content_server/file_streamer.rb +27 -33
  12. data/lib/content_server/queue_copy.rb +154 -49
  13. data/lib/content_server/queue_indexer.rb +19 -11
  14. data/lib/content_server/remote_content.rb +41 -23
  15. data/lib/content_server/server.rb +91 -0
  16. data/lib/content_server/version.rb +1 -1
  17. data/lib/content_server.rb +0 -15
  18. data/lib/email/email.rb +87 -0
  19. data/lib/email/version.rb +3 -0
  20. data/lib/email.rb +4 -0
  21. data/lib/file_copy/copy.rb +68 -0
  22. data/lib/file_copy/version.rb +4 -0
  23. data/lib/file_copy.rb +4 -0
  24. data/lib/file_indexing/index_agent.rb +170 -0
  25. data/lib/file_indexing/indexer_patterns.rb +72 -0
  26. data/lib/file_indexing/version.rb +3 -0
  27. data/lib/file_indexing.rb +9 -0
  28. data/lib/file_monitoring/file_monitoring.rb +105 -0
  29. data/lib/file_monitoring/monitor_path.rb +304 -0
  30. data/lib/file_monitoring/version.rb +3 -0
  31. data/lib/file_monitoring.rb +29 -0
  32. data/lib/file_utils/file_generator/README +97 -0
  33. data/lib/file_utils/file_generator/file_generator.rb +156 -0
  34. data/lib/file_utils/file_utils.rb +260 -0
  35. data/lib/file_utils/version.rb +3 -0
  36. data/lib/file_utils.rb +4 -0
  37. data/lib/log/version.rb +3 -0
  38. data/lib/log.rb +188 -0
  39. data/lib/networking/tcp.rb +213 -0
  40. data/lib/networking/version.rb +3 -0
  41. data/lib/networking.rb +4 -0
  42. data/lib/params/version.rb +3 -0
  43. data/lib/params.rb +419 -0
  44. data/lib/process_monitoring/monitoring.rb +85 -0
  45. data/lib/process_monitoring/monitoring_info.rb +79 -0
  46. data/lib/process_monitoring/send_email.rb +40 -0
  47. data/lib/process_monitoring/thread_safe_hash.rb +77 -0
  48. data/lib/process_monitoring/version.rb +3 -0
  49. data/lib/process_monitoring.rb +6 -0
  50. data/lib/run_in_background/version.rb +3 -0
  51. data/lib/run_in_background.rb +432 -0
  52. data/lib/testing_memory/testing_memory.rb +187 -0
  53. data/lib/testing_server/testing_server.rb +236 -0
  54. data/lib/testing_server/version.rb +3 -0
  55. data/lib/testing_server.rb +12 -0
  56. data/lib/validations/index_validations.rb +106 -0
  57. data/lib/validations/version.rb +3 -0
  58. data/lib/validations.rb +4 -0
  59. data/spec/content_data/validations_spec.rb +113 -0
  60. data/spec/file_copy/copy_spec.rb +54 -0
  61. data/spec/file_indexing/index_agent_spec.rb +53 -0
  62. data/spec/networking/tcp_spec.rb +95 -0
  63. data/spec/validations/index_validations_spec.rb +77 -0
  64. data/test/content_data/content_data_test.rb +290 -0
  65. data/test/file_generator/file_generator_spec.rb +84 -0
  66. data/test/file_indexing/index_agent_test/New.txt +0 -0
  67. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/bin/libexslt.dll +0 -0
  68. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/bin/libxslt.dll +0 -0
  69. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/bin/xsltproc.exe +0 -0
  70. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/exslt.h +102 -0
  71. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/exsltconfig.h +73 -0
  72. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/exsltexports.h +140 -0
  73. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/libexslt.h +29 -0
  74. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/attributes.h +38 -0
  75. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/documents.h +93 -0
  76. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/extensions.h +262 -0
  77. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/extra.h +80 -0
  78. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/functions.h +78 -0
  79. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/imports.h +75 -0
  80. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/keys.h +53 -0
  81. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/libxslt.h +30 -0
  82. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/namespaces.h +68 -0
  83. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/numbersInternals.h +69 -0
  84. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/pattern.h +81 -0
  85. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/preproc.h +43 -0
  86. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/security.h +104 -0
  87. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/templates.h +77 -0
  88. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/transform.h +207 -0
  89. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/trio.h +216 -0
  90. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/triodef.h +220 -0
  91. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/variables.h +91 -0
  92. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/win32config.h +101 -0
  93. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xslt.h +103 -0
  94. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltInternals.h +1967 -0
  95. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltconfig.h +172 -0
  96. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltexports.h +142 -0
  97. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltlocale.h +57 -0
  98. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltutils.h +309 -0
  99. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltwin32config.h +105 -0
  100. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libexslt.lib +0 -0
  101. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libexslt_a.lib +0 -0
  102. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libxslt.lib +0 -0
  103. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libxslt_a.lib +0 -0
  104. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/readme.txt +22 -0
  105. data/test/file_indexing/index_agent_test/patterns.input +3 -0
  106. data/test/file_indexing/index_agent_test.rb +51 -0
  107. data/test/file_monitoring/file_monitoring_test/conf.yml +4 -0
  108. data/test/file_monitoring/file_monitoring_test/conf_win32.yml +5 -0
  109. data/test/file_monitoring/file_monitoring_test/log +56 -0
  110. data/test/file_monitoring/file_monitoring_test.rb +0 -0
  111. data/test/file_monitoring/monitor_path_test/dir1000/test_file.1000 +1000 -0
  112. data/test/file_monitoring/monitor_path_test/dir1000/test_file.1000.0 +1000 -0
  113. data/test/file_monitoring/monitor_path_test/dir1000/test_file.1000.1 +1000 -0
  114. data/test/file_monitoring/monitor_path_test/dir1500/test_file.1500 +1500 -0
  115. data/test/file_monitoring/monitor_path_test/dir1500/test_file.1500.0 +1500 -0
  116. data/test/file_monitoring/monitor_path_test/dir1500/test_file.1500.1 +1500 -0
  117. data/test/file_monitoring/monitor_path_test/test_file.500 +500 -0
  118. data/test/file_monitoring/monitor_path_test/test_file.500.0 +500 -0
  119. data/test/file_monitoring/monitor_path_test/test_file.500.1 +500 -0
  120. data/test/file_monitoring/monitor_path_test.rb +153 -0
  121. data/test/file_utils/fileutil_mksymlink_test/dir1000/dir1500/test_file.1500 +1500 -0
  122. data/test/file_utils/fileutil_mksymlink_test/dir1000/dir1500/test_file.1500.0 +1500 -0
  123. data/test/file_utils/fileutil_mksymlink_test/dir1000/dir1500/test_file.1500.1 +1500 -0
  124. data/test/file_utils/fileutil_mksymlink_test/dir1000/test_file.1000 +1000 -0
  125. data/test/file_utils/fileutil_mksymlink_test/dir1000/test_file.1000.0 +1000 -0
  126. data/test/file_utils/fileutil_mksymlink_test/dir1000/test_file.1000.1 +1000 -0
  127. data/test/file_utils/fileutil_mksymlink_test/test_file.500 +500 -0
  128. data/test/file_utils/fileutil_mksymlink_test/test_file.500.0 +500 -0
  129. data/test/file_utils/fileutil_mksymlink_test/test_file.500.1 +500 -0
  130. data/test/file_utils/fileutil_mksymlink_test.rb +125 -0
  131. data/test/file_utils/time_modification_test.rb +132 -0
  132. data/test/params/params_spec.rb +280 -0
  133. data/test/params/params_test.rb +43 -0
  134. data/test/run_in_background/run_in_background_test.rb +122 -0
  135. data/test/run_in_background/test_app +57 -0
  136. metadata +272 -132
  137. data/lib/content_server/globals.rb +0 -10
@@ -0,0 +1,1500 @@
1
+ 0
2
+ 1
3
+ 2
4
+ 3
5
+ 4
6
+ 5
7
+ 6
8
+ 7
9
+ 8
10
+ 9
11
+ 10
12
+ 11
13
+ 12
14
+ 13
15
+ 14
16
+ 15
17
+ 16
18
+ 17
19
+ 18
20
+ 19
21
+ 20
22
+ 21
23
+ 22
24
+ 23
25
+ 24
26
+ 25
27
+ 26
28
+ 27
29
+ 28
30
+ 29
31
+ 30
32
+ 31
33
+ 32
34
+ 33
35
+ 34
36
+ 35
37
+ 36
38
+ 37
39
+ 38
40
+ 39
41
+ 40
42
+ 41
43
+ 42
44
+ 43
45
+ 44
46
+ 45
47
+ 46
48
+ 47
49
+ 48
50
+ 49
51
+ 50
52
+ 51
53
+ 52
54
+ 53
55
+ 54
56
+ 55
57
+ 56
58
+ 57
59
+ 58
60
+ 59
61
+ 60
62
+ 61
63
+ 62
64
+ 63
65
+ 64
66
+ 65
67
+ 66
68
+ 67
69
+ 68
70
+ 69
71
+ 70
72
+ 71
73
+ 72
74
+ 73
75
+ 74
76
+ 75
77
+ 76
78
+ 77
79
+ 78
80
+ 79
81
+ 80
82
+ 81
83
+ 82
84
+ 83
85
+ 84
86
+ 85
87
+ 86
88
+ 87
89
+ 88
90
+ 89
91
+ 90
92
+ 91
93
+ 92
94
+ 93
95
+ 94
96
+ 95
97
+ 96
98
+ 97
99
+ 98
100
+ 99
101
+ 100
102
+ 101
103
+ 102
104
+ 103
105
+ 104
106
+ 105
107
+ 106
108
+ 107
109
+ 108
110
+ 109
111
+ 110
112
+ 111
113
+ 112
114
+ 113
115
+ 114
116
+ 115
117
+ 116
118
+ 117
119
+ 118
120
+ 119
121
+ 120
122
+ 121
123
+ 122
124
+ 123
125
+ 124
126
+ 125
127
+ 126
128
+ 127
129
+ 128
130
+ 129
131
+ 130
132
+ 131
133
+ 132
134
+ 133
135
+ 134
136
+ 135
137
+ 136
138
+ 137
139
+ 138
140
+ 139
141
+ 140
142
+ 141
143
+ 142
144
+ 143
145
+ 144
146
+ 145
147
+ 146
148
+ 147
149
+ 148
150
+ 149
151
+ 150
152
+ 151
153
+ 152
154
+ 153
155
+ 154
156
+ 155
157
+ 156
158
+ 157
159
+ 158
160
+ 159
161
+ 160
162
+ 161
163
+ 162
164
+ 163
165
+ 164
166
+ 165
167
+ 166
168
+ 167
169
+ 168
170
+ 169
171
+ 170
172
+ 171
173
+ 172
174
+ 173
175
+ 174
176
+ 175
177
+ 176
178
+ 177
179
+ 178
180
+ 179
181
+ 180
182
+ 181
183
+ 182
184
+ 183
185
+ 184
186
+ 185
187
+ 186
188
+ 187
189
+ 188
190
+ 189
191
+ 190
192
+ 191
193
+ 192
194
+ 193
195
+ 194
196
+ 195
197
+ 196
198
+ 197
199
+ 198
200
+ 199
201
+ 200
202
+ 201
203
+ 202
204
+ 203
205
+ 204
206
+ 205
207
+ 206
208
+ 207
209
+ 208
210
+ 209
211
+ 210
212
+ 211
213
+ 212
214
+ 213
215
+ 214
216
+ 215
217
+ 216
218
+ 217
219
+ 218
220
+ 219
221
+ 220
222
+ 221
223
+ 222
224
+ 223
225
+ 224
226
+ 225
227
+ 226
228
+ 227
229
+ 228
230
+ 229
231
+ 230
232
+ 231
233
+ 232
234
+ 233
235
+ 234
236
+ 235
237
+ 236
238
+ 237
239
+ 238
240
+ 239
241
+ 240
242
+ 241
243
+ 242
244
+ 243
245
+ 244
246
+ 245
247
+ 246
248
+ 247
249
+ 248
250
+ 249
251
+ 250
252
+ 251
253
+ 252
254
+ 253
255
+ 254
256
+ 255
257
+ 256
258
+ 257
259
+ 258
260
+ 259
261
+ 260
262
+ 261
263
+ 262
264
+ 263
265
+ 264
266
+ 265
267
+ 266
268
+ 267
269
+ 268
270
+ 269
271
+ 270
272
+ 271
273
+ 272
274
+ 273
275
+ 274
276
+ 275
277
+ 276
278
+ 277
279
+ 278
280
+ 279
281
+ 280
282
+ 281
283
+ 282
284
+ 283
285
+ 284
286
+ 285
287
+ 286
288
+ 287
289
+ 288
290
+ 289
291
+ 290
292
+ 291
293
+ 292
294
+ 293
295
+ 294
296
+ 295
297
+ 296
298
+ 297
299
+ 298
300
+ 299
301
+ 300
302
+ 301
303
+ 302
304
+ 303
305
+ 304
306
+ 305
307
+ 306
308
+ 307
309
+ 308
310
+ 309
311
+ 310
312
+ 311
313
+ 312
314
+ 313
315
+ 314
316
+ 315
317
+ 316
318
+ 317
319
+ 318
320
+ 319
321
+ 320
322
+ 321
323
+ 322
324
+ 323
325
+ 324
326
+ 325
327
+ 326
328
+ 327
329
+ 328
330
+ 329
331
+ 330
332
+ 331
333
+ 332
334
+ 333
335
+ 334
336
+ 335
337
+ 336
338
+ 337
339
+ 338
340
+ 339
341
+ 340
342
+ 341
343
+ 342
344
+ 343
345
+ 344
346
+ 345
347
+ 346
348
+ 347
349
+ 348
350
+ 349
351
+ 350
352
+ 351
353
+ 352
354
+ 353
355
+ 354
356
+ 355
357
+ 356
358
+ 357
359
+ 358
360
+ 359
361
+ 360
362
+ 361
363
+ 362
364
+ 363
365
+ 364
366
+ 365
367
+ 366
368
+ 367
369
+ 368
370
+ 369
371
+ 370
372
+ 371
373
+ 372
374
+ 373
375
+ 374
376
+ 375
377
+ 376
378
+ 377
379
+ 378
380
+ 379
381
+ 380
382
+ 381
383
+ 382
384
+ 383
385
+ 384
386
+ 385
387
+ 386
388
+ 387
389
+ 388
390
+ 389
391
+ 390
392
+ 391
393
+ 392
394
+ 393
395
+ 394
396
+ 395
397
+ 396
398
+ 397
399
+ 398
400
+ 399
401
+ 400
402
+ 401
403
+ 402
404
+ 403
405
+ 404
406
+ 405
407
+ 406
408
+ 407
409
+ 408
410
+ 409
411
+ 410
412
+ 411
413
+ 412
414
+ 413
415
+ 414
416
+ 415
417
+ 416
418
+ 417
419
+ 418
420
+ 419
421
+ 420
422
+ 421
423
+ 422
424
+ 423
425
+ 424
426
+ 425
427
+ 426
428
+ 427
429
+ 428
430
+ 429
431
+ 430
432
+ 431
433
+ 432
434
+ 433
435
+ 434
436
+ 435
437
+ 436
438
+ 437
439
+ 438
440
+ 439
441
+ 440
442
+ 441
443
+ 442
444
+ 443
445
+ 444
446
+ 445
447
+ 446
448
+ 447
449
+ 448
450
+ 449
451
+ 450
452
+ 451
453
+ 452
454
+ 453
455
+ 454
456
+ 455
457
+ 456
458
+ 457
459
+ 458
460
+ 459
461
+ 460
462
+ 461
463
+ 462
464
+ 463
465
+ 464
466
+ 465
467
+ 466
468
+ 467
469
+ 468
470
+ 469
471
+ 470
472
+ 471
473
+ 472
474
+ 473
475
+ 474
476
+ 475
477
+ 476
478
+ 477
479
+ 478
480
+ 479
481
+ 480
482
+ 481
483
+ 482
484
+ 483
485
+ 484
486
+ 485
487
+ 486
488
+ 487
489
+ 488
490
+ 489
491
+ 490
492
+ 491
493
+ 492
494
+ 493
495
+ 494
496
+ 495
497
+ 496
498
+ 497
499
+ 498
500
+ 499
501
+ 500
502
+ 501
503
+ 502
504
+ 503
505
+ 504
506
+ 505
507
+ 506
508
+ 507
509
+ 508
510
+ 509
511
+ 510
512
+ 511
513
+ 512
514
+ 513
515
+ 514
516
+ 515
517
+ 516
518
+ 517
519
+ 518
520
+ 519
521
+ 520
522
+ 521
523
+ 522
524
+ 523
525
+ 524
526
+ 525
527
+ 526
528
+ 527
529
+ 528
530
+ 529
531
+ 530
532
+ 531
533
+ 532
534
+ 533
535
+ 534
536
+ 535
537
+ 536
538
+ 537
539
+ 538
540
+ 539
541
+ 540
542
+ 541
543
+ 542
544
+ 543
545
+ 544
546
+ 545
547
+ 546
548
+ 547
549
+ 548
550
+ 549
551
+ 550
552
+ 551
553
+ 552
554
+ 553
555
+ 554
556
+ 555
557
+ 556
558
+ 557
559
+ 558
560
+ 559
561
+ 560
562
+ 561
563
+ 562
564
+ 563
565
+ 564
566
+ 565
567
+ 566
568
+ 567
569
+ 568
570
+ 569
571
+ 570
572
+ 571
573
+ 572
574
+ 573
575
+ 574
576
+ 575
577
+ 576
578
+ 577
579
+ 578
580
+ 579
581
+ 580
582
+ 581
583
+ 582
584
+ 583
585
+ 584
586
+ 585
587
+ 586
588
+ 587
589
+ 588
590
+ 589
591
+ 590
592
+ 591
593
+ 592
594
+ 593
595
+ 594
596
+ 595
597
+ 596
598
+ 597
599
+ 598
600
+ 599
601
+ 600
602
+ 601
603
+ 602
604
+ 603
605
+ 604
606
+ 605
607
+ 606
608
+ 607
609
+ 608
610
+ 609
611
+ 610
612
+ 611
613
+ 612
614
+ 613
615
+ 614
616
+ 615
617
+ 616
618
+ 617
619
+ 618
620
+ 619
621
+ 620
622
+ 621
623
+ 622
624
+ 623
625
+ 624
626
+ 625
627
+ 626
628
+ 627
629
+ 628
630
+ 629
631
+ 630
632
+ 631
633
+ 632
634
+ 633
635
+ 634
636
+ 635
637
+ 636
638
+ 637
639
+ 638
640
+ 639
641
+ 640
642
+ 641
643
+ 642
644
+ 643
645
+ 644
646
+ 645
647
+ 646
648
+ 647
649
+ 648
650
+ 649
651
+ 650
652
+ 651
653
+ 652
654
+ 653
655
+ 654
656
+ 655
657
+ 656
658
+ 657
659
+ 658
660
+ 659
661
+ 660
662
+ 661
663
+ 662
664
+ 663
665
+ 664
666
+ 665
667
+ 666
668
+ 667
669
+ 668
670
+ 669
671
+ 670
672
+ 671
673
+ 672
674
+ 673
675
+ 674
676
+ 675
677
+ 676
678
+ 677
679
+ 678
680
+ 679
681
+ 680
682
+ 681
683
+ 682
684
+ 683
685
+ 684
686
+ 685
687
+ 686
688
+ 687
689
+ 688
690
+ 689
691
+ 690
692
+ 691
693
+ 692
694
+ 693
695
+ 694
696
+ 695
697
+ 696
698
+ 697
699
+ 698
700
+ 699
701
+ 700
702
+ 701
703
+ 702
704
+ 703
705
+ 704
706
+ 705
707
+ 706
708
+ 707
709
+ 708
710
+ 709
711
+ 710
712
+ 711
713
+ 712
714
+ 713
715
+ 714
716
+ 715
717
+ 716
718
+ 717
719
+ 718
720
+ 719
721
+ 720
722
+ 721
723
+ 722
724
+ 723
725
+ 724
726
+ 725
727
+ 726
728
+ 727
729
+ 728
730
+ 729
731
+ 730
732
+ 731
733
+ 732
734
+ 733
735
+ 734
736
+ 735
737
+ 736
738
+ 737
739
+ 738
740
+ 739
741
+ 740
742
+ 741
743
+ 742
744
+ 743
745
+ 744
746
+ 745
747
+ 746
748
+ 747
749
+ 748
750
+ 749
751
+ 750
752
+ 751
753
+ 752
754
+ 753
755
+ 754
756
+ 755
757
+ 756
758
+ 757
759
+ 758
760
+ 759
761
+ 760
762
+ 761
763
+ 762
764
+ 763
765
+ 764
766
+ 765
767
+ 766
768
+ 767
769
+ 768
770
+ 769
771
+ 770
772
+ 771
773
+ 772
774
+ 773
775
+ 774
776
+ 775
777
+ 776
778
+ 777
779
+ 778
780
+ 779
781
+ 780
782
+ 781
783
+ 782
784
+ 783
785
+ 784
786
+ 785
787
+ 786
788
+ 787
789
+ 788
790
+ 789
791
+ 790
792
+ 791
793
+ 792
794
+ 793
795
+ 794
796
+ 795
797
+ 796
798
+ 797
799
+ 798
800
+ 799
801
+ 800
802
+ 801
803
+ 802
804
+ 803
805
+ 804
806
+ 805
807
+ 806
808
+ 807
809
+ 808
810
+ 809
811
+ 810
812
+ 811
813
+ 812
814
+ 813
815
+ 814
816
+ 815
817
+ 816
818
+ 817
819
+ 818
820
+ 819
821
+ 820
822
+ 821
823
+ 822
824
+ 823
825
+ 824
826
+ 825
827
+ 826
828
+ 827
829
+ 828
830
+ 829
831
+ 830
832
+ 831
833
+ 832
834
+ 833
835
+ 834
836
+ 835
837
+ 836
838
+ 837
839
+ 838
840
+ 839
841
+ 840
842
+ 841
843
+ 842
844
+ 843
845
+ 844
846
+ 845
847
+ 846
848
+ 847
849
+ 848
850
+ 849
851
+ 850
852
+ 851
853
+ 852
854
+ 853
855
+ 854
856
+ 855
857
+ 856
858
+ 857
859
+ 858
860
+ 859
861
+ 860
862
+ 861
863
+ 862
864
+ 863
865
+ 864
866
+ 865
867
+ 866
868
+ 867
869
+ 868
870
+ 869
871
+ 870
872
+ 871
873
+ 872
874
+ 873
875
+ 874
876
+ 875
877
+ 876
878
+ 877
879
+ 878
880
+ 879
881
+ 880
882
+ 881
883
+ 882
884
+ 883
885
+ 884
886
+ 885
887
+ 886
888
+ 887
889
+ 888
890
+ 889
891
+ 890
892
+ 891
893
+ 892
894
+ 893
895
+ 894
896
+ 895
897
+ 896
898
+ 897
899
+ 898
900
+ 899
901
+ 900
902
+ 901
903
+ 902
904
+ 903
905
+ 904
906
+ 905
907
+ 906
908
+ 907
909
+ 908
910
+ 909
911
+ 910
912
+ 911
913
+ 912
914
+ 913
915
+ 914
916
+ 915
917
+ 916
918
+ 917
919
+ 918
920
+ 919
921
+ 920
922
+ 921
923
+ 922
924
+ 923
925
+ 924
926
+ 925
927
+ 926
928
+ 927
929
+ 928
930
+ 929
931
+ 930
932
+ 931
933
+ 932
934
+ 933
935
+ 934
936
+ 935
937
+ 936
938
+ 937
939
+ 938
940
+ 939
941
+ 940
942
+ 941
943
+ 942
944
+ 943
945
+ 944
946
+ 945
947
+ 946
948
+ 947
949
+ 948
950
+ 949
951
+ 950
952
+ 951
953
+ 952
954
+ 953
955
+ 954
956
+ 955
957
+ 956
958
+ 957
959
+ 958
960
+ 959
961
+ 960
962
+ 961
963
+ 962
964
+ 963
965
+ 964
966
+ 965
967
+ 966
968
+ 967
969
+ 968
970
+ 969
971
+ 970
972
+ 971
973
+ 972
974
+ 973
975
+ 974
976
+ 975
977
+ 976
978
+ 977
979
+ 978
980
+ 979
981
+ 980
982
+ 981
983
+ 982
984
+ 983
985
+ 984
986
+ 985
987
+ 986
988
+ 987
989
+ 988
990
+ 989
991
+ 990
992
+ 991
993
+ 992
994
+ 993
995
+ 994
996
+ 995
997
+ 996
998
+ 997
999
+ 998
1000
+ 999
1001
+ 1000
1002
+ 1001
1003
+ 1002
1004
+ 1003
1005
+ 1004
1006
+ 1005
1007
+ 1006
1008
+ 1007
1009
+ 1008
1010
+ 1009
1011
+ 1010
1012
+ 1011
1013
+ 1012
1014
+ 1013
1015
+ 1014
1016
+ 1015
1017
+ 1016
1018
+ 1017
1019
+ 1018
1020
+ 1019
1021
+ 1020
1022
+ 1021
1023
+ 1022
1024
+ 1023
1025
+ 1024
1026
+ 1025
1027
+ 1026
1028
+ 1027
1029
+ 1028
1030
+ 1029
1031
+ 1030
1032
+ 1031
1033
+ 1032
1034
+ 1033
1035
+ 1034
1036
+ 1035
1037
+ 1036
1038
+ 1037
1039
+ 1038
1040
+ 1039
1041
+ 1040
1042
+ 1041
1043
+ 1042
1044
+ 1043
1045
+ 1044
1046
+ 1045
1047
+ 1046
1048
+ 1047
1049
+ 1048
1050
+ 1049
1051
+ 1050
1052
+ 1051
1053
+ 1052
1054
+ 1053
1055
+ 1054
1056
+ 1055
1057
+ 1056
1058
+ 1057
1059
+ 1058
1060
+ 1059
1061
+ 1060
1062
+ 1061
1063
+ 1062
1064
+ 1063
1065
+ 1064
1066
+ 1065
1067
+ 1066
1068
+ 1067
1069
+ 1068
1070
+ 1069
1071
+ 1070
1072
+ 1071
1073
+ 1072
1074
+ 1073
1075
+ 1074
1076
+ 1075
1077
+ 1076
1078
+ 1077
1079
+ 1078
1080
+ 1079
1081
+ 1080
1082
+ 1081
1083
+ 1082
1084
+ 1083
1085
+ 1084
1086
+ 1085
1087
+ 1086
1088
+ 1087
1089
+ 1088
1090
+ 1089
1091
+ 1090
1092
+ 1091
1093
+ 1092
1094
+ 1093
1095
+ 1094
1096
+ 1095
1097
+ 1096
1098
+ 1097
1099
+ 1098
1100
+ 1099
1101
+ 1100
1102
+ 1101
1103
+ 1102
1104
+ 1103
1105
+ 1104
1106
+ 1105
1107
+ 1106
1108
+ 1107
1109
+ 1108
1110
+ 1109
1111
+ 1110
1112
+ 1111
1113
+ 1112
1114
+ 1113
1115
+ 1114
1116
+ 1115
1117
+ 1116
1118
+ 1117
1119
+ 1118
1120
+ 1119
1121
+ 1120
1122
+ 1121
1123
+ 1122
1124
+ 1123
1125
+ 1124
1126
+ 1125
1127
+ 1126
1128
+ 1127
1129
+ 1128
1130
+ 1129
1131
+ 1130
1132
+ 1131
1133
+ 1132
1134
+ 1133
1135
+ 1134
1136
+ 1135
1137
+ 1136
1138
+ 1137
1139
+ 1138
1140
+ 1139
1141
+ 1140
1142
+ 1141
1143
+ 1142
1144
+ 1143
1145
+ 1144
1146
+ 1145
1147
+ 1146
1148
+ 1147
1149
+ 1148
1150
+ 1149
1151
+ 1150
1152
+ 1151
1153
+ 1152
1154
+ 1153
1155
+ 1154
1156
+ 1155
1157
+ 1156
1158
+ 1157
1159
+ 1158
1160
+ 1159
1161
+ 1160
1162
+ 1161
1163
+ 1162
1164
+ 1163
1165
+ 1164
1166
+ 1165
1167
+ 1166
1168
+ 1167
1169
+ 1168
1170
+ 1169
1171
+ 1170
1172
+ 1171
1173
+ 1172
1174
+ 1173
1175
+ 1174
1176
+ 1175
1177
+ 1176
1178
+ 1177
1179
+ 1178
1180
+ 1179
1181
+ 1180
1182
+ 1181
1183
+ 1182
1184
+ 1183
1185
+ 1184
1186
+ 1185
1187
+ 1186
1188
+ 1187
1189
+ 1188
1190
+ 1189
1191
+ 1190
1192
+ 1191
1193
+ 1192
1194
+ 1193
1195
+ 1194
1196
+ 1195
1197
+ 1196
1198
+ 1197
1199
+ 1198
1200
+ 1199
1201
+ 1200
1202
+ 1201
1203
+ 1202
1204
+ 1203
1205
+ 1204
1206
+ 1205
1207
+ 1206
1208
+ 1207
1209
+ 1208
1210
+ 1209
1211
+ 1210
1212
+ 1211
1213
+ 1212
1214
+ 1213
1215
+ 1214
1216
+ 1215
1217
+ 1216
1218
+ 1217
1219
+ 1218
1220
+ 1219
1221
+ 1220
1222
+ 1221
1223
+ 1222
1224
+ 1223
1225
+ 1224
1226
+ 1225
1227
+ 1226
1228
+ 1227
1229
+ 1228
1230
+ 1229
1231
+ 1230
1232
+ 1231
1233
+ 1232
1234
+ 1233
1235
+ 1234
1236
+ 1235
1237
+ 1236
1238
+ 1237
1239
+ 1238
1240
+ 1239
1241
+ 1240
1242
+ 1241
1243
+ 1242
1244
+ 1243
1245
+ 1244
1246
+ 1245
1247
+ 1246
1248
+ 1247
1249
+ 1248
1250
+ 1249
1251
+ 1250
1252
+ 1251
1253
+ 1252
1254
+ 1253
1255
+ 1254
1256
+ 1255
1257
+ 1256
1258
+ 1257
1259
+ 1258
1260
+ 1259
1261
+ 1260
1262
+ 1261
1263
+ 1262
1264
+ 1263
1265
+ 1264
1266
+ 1265
1267
+ 1266
1268
+ 1267
1269
+ 1268
1270
+ 1269
1271
+ 1270
1272
+ 1271
1273
+ 1272
1274
+ 1273
1275
+ 1274
1276
+ 1275
1277
+ 1276
1278
+ 1277
1279
+ 1278
1280
+ 1279
1281
+ 1280
1282
+ 1281
1283
+ 1282
1284
+ 1283
1285
+ 1284
1286
+ 1285
1287
+ 1286
1288
+ 1287
1289
+ 1288
1290
+ 1289
1291
+ 1290
1292
+ 1291
1293
+ 1292
1294
+ 1293
1295
+ 1294
1296
+ 1295
1297
+ 1296
1298
+ 1297
1299
+ 1298
1300
+ 1299
1301
+ 1300
1302
+ 1301
1303
+ 1302
1304
+ 1303
1305
+ 1304
1306
+ 1305
1307
+ 1306
1308
+ 1307
1309
+ 1308
1310
+ 1309
1311
+ 1310
1312
+ 1311
1313
+ 1312
1314
+ 1313
1315
+ 1314
1316
+ 1315
1317
+ 1316
1318
+ 1317
1319
+ 1318
1320
+ 1319
1321
+ 1320
1322
+ 1321
1323
+ 1322
1324
+ 1323
1325
+ 1324
1326
+ 1325
1327
+ 1326
1328
+ 1327
1329
+ 1328
1330
+ 1329
1331
+ 1330
1332
+ 1331
1333
+ 1332
1334
+ 1333
1335
+ 1334
1336
+ 1335
1337
+ 1336
1338
+ 1337
1339
+ 1338
1340
+ 1339
1341
+ 1340
1342
+ 1341
1343
+ 1342
1344
+ 1343
1345
+ 1344
1346
+ 1345
1347
+ 1346
1348
+ 1347
1349
+ 1348
1350
+ 1349
1351
+ 1350
1352
+ 1351
1353
+ 1352
1354
+ 1353
1355
+ 1354
1356
+ 1355
1357
+ 1356
1358
+ 1357
1359
+ 1358
1360
+ 1359
1361
+ 1360
1362
+ 1361
1363
+ 1362
1364
+ 1363
1365
+ 1364
1366
+ 1365
1367
+ 1366
1368
+ 1367
1369
+ 1368
1370
+ 1369
1371
+ 1370
1372
+ 1371
1373
+ 1372
1374
+ 1373
1375
+ 1374
1376
+ 1375
1377
+ 1376
1378
+ 1377
1379
+ 1378
1380
+ 1379
1381
+ 1380
1382
+ 1381
1383
+ 1382
1384
+ 1383
1385
+ 1384
1386
+ 1385
1387
+ 1386
1388
+ 1387
1389
+ 1388
1390
+ 1389
1391
+ 1390
1392
+ 1391
1393
+ 1392
1394
+ 1393
1395
+ 1394
1396
+ 1395
1397
+ 1396
1398
+ 1397
1399
+ 1398
1400
+ 1399
1401
+ 1400
1402
+ 1401
1403
+ 1402
1404
+ 1403
1405
+ 1404
1406
+ 1405
1407
+ 1406
1408
+ 1407
1409
+ 1408
1410
+ 1409
1411
+ 1410
1412
+ 1411
1413
+ 1412
1414
+ 1413
1415
+ 1414
1416
+ 1415
1417
+ 1416
1418
+ 1417
1419
+ 1418
1420
+ 1419
1421
+ 1420
1422
+ 1421
1423
+ 1422
1424
+ 1423
1425
+ 1424
1426
+ 1425
1427
+ 1426
1428
+ 1427
1429
+ 1428
1430
+ 1429
1431
+ 1430
1432
+ 1431
1433
+ 1432
1434
+ 1433
1435
+ 1434
1436
+ 1435
1437
+ 1436
1438
+ 1437
1439
+ 1438
1440
+ 1439
1441
+ 1440
1442
+ 1441
1443
+ 1442
1444
+ 1443
1445
+ 1444
1446
+ 1445
1447
+ 1446
1448
+ 1447
1449
+ 1448
1450
+ 1449
1451
+ 1450
1452
+ 1451
1453
+ 1452
1454
+ 1453
1455
+ 1454
1456
+ 1455
1457
+ 1456
1458
+ 1457
1459
+ 1458
1460
+ 1459
1461
+ 1460
1462
+ 1461
1463
+ 1462
1464
+ 1463
1465
+ 1464
1466
+ 1465
1467
+ 1466
1468
+ 1467
1469
+ 1468
1470
+ 1469
1471
+ 1470
1472
+ 1471
1473
+ 1472
1474
+ 1473
1475
+ 1474
1476
+ 1475
1477
+ 1476
1478
+ 1477
1479
+ 1478
1480
+ 1479
1481
+ 1480
1482
+ 1481
1483
+ 1482
1484
+ 1483
1485
+ 1484
1486
+ 1485
1487
+ 1486
1488
+ 1487
1489
+ 1488
1490
+ 1489
1491
+ 1490
1492
+ 1491
1493
+ 1492
1494
+ 1493
1495
+ 1494
1496
+ 1495
1497
+ 1496
1498
+ 1497
1499
+ 1498
1500
+ 1499