sudoku breaker-.net edition
Deducer class:
puzzleCS.aspx.cs:
puzzleCS.aspx
puzzleVB.aspx.vb:
puzzleVB.aspx:
1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Web;
5
using System.Web.Security;
6
using System.Web.UI;
7
using System.Web.UI.WebControls;
8
using System.Web.UI.WebControls.WebParts;
9
using System.Web.UI.HtmlControls;
10![](/Images/OutliningIndicators/None.gif)
11
/// <summary>
12
/// Summary description for Deducer
13
/// </summary>
14
public class Deducer
15
{
16
private int[,] _array;
17
public Deducer(int[,] array)
18
{
19
this.Array = new int[9, 9];
20
for (int row = 0; row < 9; row++)
21
{
22
for (int column = 0; column < 9; column++)
23
{
24
this.Array[row, column] = array[row, column];
25
}
26
}
27
}
28
private bool IsFinished()
29
{
30
for (int row = 0; row < 9; row++)
31
{
32
for (int column = 0; column < 9; column++)
33
{
34
if (this.Array[row, column] == 0)
35
{
36
return false;
37
}
38
}
39
}
40
return true;
41
}
42
public void DeduceAll()
43
{
44
if (IsFinished())
45
{
46
return;
47
}
48
for (int row = 0; row < 7; row = row + 3)
49
{
50
for (int column = 0; column < 7; column = column + 3)
51
{
52
if (ReduceFromOneZone(this.Array, row, column))
53
{
54
DeduceAll();
55
return;
56
}
57
}
58
}
59
for (int row = 0; row < 9; row++)
60
{
61
if (ReduceFromOneRow(this.Array, row))
62
{
63
DeduceAll();
64
return;
65
}
66
}
67
for (int column = 0; column < 9; column++)
68
{
69
if (ReduceFromOneColumn(this.Array, column))
70
{
71
DeduceAll();
72
return;
73
}
74
}
75
for (int row = 0; row < 7; row = row + 3)
76
{
77
if (ReduceFromThreeRows(this.Array, row, row + 2))
78
{
79
DeduceAll();
80
return;
81
}
82
}
83
for (int column = 0; column < 7; column = column + 3)
84
{
85
if (ReduceFromThreeColumns(this.Array, column, column + 2))
86
{
87
DeduceAll();
88
return;
89
}
90
}
91
}
92
public void DeduceOnce()
93
{
94
for (int row = 0; row < 7; row = row + 3)
95
{
96
for (int column = 0; column < 7; column = column + 3)
97
{
98
if (ReduceFromOneZone(this.Array, row, column))
99
{
100
return;
101
}
102
}
103
}
104
for (int row = 0; row < 9; row++)
105
{
106
if (ReduceFromOneRow(this.Array, row))
107
{
108
return;
109
}
110
}
111
for (int column = 0; column < 9; column++)
112
{
113
if (ReduceFromOneColumn(this.Array, column))
114
{
115
return;
116
}
117
}
118
for (int row = 0; row < 7; row = row + 3)
119
{
120
if (ReduceFromThreeRows(this.Array, row, row + 2))
121
{
122
return;
123
}
124
}
125
for (int column = 0; column < 7; column = column + 3)
126
{
127
if (ReduceFromThreeColumns(this.Array, column, column + 2))
128
{
129
return;
130
}
131
}
132
}
133
private bool ReduceFromOneZone(int[,] array, int row, int column)
134
{
135
int startRow = (row / 3) * 3;
136
int startColumn = (column / 3) * 3;
137
int[] unknown = new int[9];
138
for (int pointer = 0; pointer < 9; pointer++)
139
{
140
unknown[pointer] = pointer + 1;
141
}
142
for (int rowPointer = startRow; rowPointer < startRow + 3; rowPointer++)
143
{
144
for (int columnPointer = startColumn; columnPointer < startColumn + 3; columnPointer++)
145
{
146
if (array[rowPointer, columnPointer] != 0)
147
{
148
unknown[array[rowPointer, columnPointer] - 1] = 0;
149
}
150
}
151
}
152
for (int digit = 0; digit < 9; digit++)
153
{
154
if (unknown[digit] != 0)
155
{
156
int number = unknown[digit];
157
int posibilities = 0;
158
int rowPosition = -1;
159
int columnPosition = -1;
160
for (int rowPointer = startRow; rowPointer < startRow + 3; rowPointer++)
161
{
162
for (int columnPointer = startColumn; columnPointer < startColumn + 3; columnPointer++)
163
{
164
if (array[rowPointer, columnPointer] == 0)
165
{
166
if (IsPossibleInThatCellCheckByColumn(array, number,
167
rowPointer, columnPointer)
168
&& IsPossibleInThatCellCheckByRow(array,
169
number, rowPointer, columnPointer))
170
{
171
rowPosition = rowPointer;
172
columnPosition = columnPointer;
173
posibilities++;
174
}
175
}
176
}
177
}
178
if (posibilities == 1)
179
{
180
array[rowPosition, columnPosition] = number;
181
return true;
182
}
183
}
184
}
185
return false;
186
}
187
private bool ReduceFromOneRow(int[,] array, int row)
188
{
189
int[] unknown = new int[9];
190
for (int column = 0; column < 9; column++)
191
{
192
unknown[column] = column + 1;
193
}
194
for (int column = 0; column < 9; column++)
195
{
196
if (array[row, column] != 0)
197
{
198
unknown[array[row, column] - 1] = 0;
199
}
200
}
201
for (int column = 0; column < 9; column++)
202
{
203
if (unknown[column] != 0)
204
{
205
int number = unknown[column];
206
int posibilities = 0;
207
int position = -1;
208
for (int pointer = 0; pointer < 9; pointer++)
209
{
210
if (array[row, pointer] == 0)
211
{
212
if (IsPossibleInThatCellCheckByColumnAndZone(array,
213
number, row, pointer))
214
{
215
position = pointer;
216
posibilities++;
217
}
218
}
219
}
220
if (posibilities == 1)
221
{
222
array[row, position] = number;
223
return true;
224
}
225
}
226
}
227
return false;
228
}
229
private bool ReduceFromOneColumn(int[,] array, int column)
230
{
231
int[] unknown = new int[9];
232
for (int row = 0; row < 9; row++)
233
{
234
unknown[row] = row + 1;
235
}
236
for (int row = 0; row < 9; row++)
237
{
238
if (array[row, column] != 0)
239
{
240
unknown[array[row, column] - 1] = 0;
241
}
242
}
243
for (int row = 0; row < 9; row++)
244
{
245
if (unknown[row] != 0)
246
{
247
int number = unknown[row];
248
int posibilities = 0;
249
int position = -1;
250
for (int pointer = 0; pointer < 9; pointer++)
251
{
252
if (array[pointer, column] == 0)
253
{
254
if (IsPossibleInThatCellCheckByRowAndZone(array, number,
255
pointer, column))
256
{
257
position = pointer;
258
posibilities++;
259
}
260
}
261
}
262
if (posibilities == 1)
263
{
264
array[position, column] = number;
265
return true;
266
}
267
}
268
}
269
return false;
270
}
271
private bool IsPossibleInThatCellCheckByRowAndZone(int[,] array,
272
int number, int row, int column)
273
{
274
if (!IsPossibleInThatCellCheckByRow(array, number, row, column))
275
{
276
return false;
277
}
278
else if (!IsPossibleInThatCellCheckByZone(array, number, row, column))
279
{
280
return false;
281
}
282
else if (!CanBeInThatZoneCheckByColumn(array, number, row, column))
283
{
284
return false;
285
}
286
else
287
{
288
return true;
289
}
290
}
291
private bool IsPossibleInThatCellCheckByColumnAndZone(int[,] array,
292
int number, int row, int column)
293
{
294
if (!IsPossibleInThatCellCheckByColumn(array, number, row, column))
295
{
296
return false;
297
}
298
else if (!IsPossibleInThatCellCheckByZone(array, number, row, column))
299
{
300
return false;
301
}
302
else if (!CanBeInThatZoneCheckByRow(array, number, row, column))
303
{
304
return false;
305
}
306
else
307
{
308
return true;
309
}
310
}
311
private bool CanBeInThatZoneCheckByRow(int[,] array, int number,
312
int row, int column)
313
{
314
int startRow = (row / 3) * 3;
315
int startColumn = (column / 3) * 3;
316
for (int rowPointer = startRow; rowPointer < startRow + 3; rowPointer++)
317
{
318
if (rowPointer != row)
319
{
320
if (!IsPossibleInThatCellCheckByRow(array, number, rowPointer,
321
column))
322
{
323
continue;
324
}
325
bool canItBe = true;
326
for (int columnPointer = 0; columnPointer < 9; columnPointer++)
327
{
328
if (columnPointer < startColumn
329
|| columnPointer > startColumn + 2)
330
{
331
if (array[rowPointer, columnPointer] == 0)
332
{
333
if (IsPossibleInThatCellCheckByColumn(array, number,
334
rowPointer, columnPointer)
335
&& IsPossibleInThatCellCheckByZone(array,
336
number, rowPointer, columnPointer))
337
{
338
canItBe = false;
339
}
340
}
341
}
342
}
343
if (canItBe)
344
{
345
return false;
346
}
347
}
348
}
349
return true;
350
}
351
private bool CanBeInThatZoneCheckByColumn(int[,] array, int number,
352
int row, int column)
353
{
354
int startRow = (row / 3) * 3;
355
int startColumn = (column / 3) * 3;
356
for (int columnPointer = startColumn; columnPointer < startColumn + 3; columnPointer++)
357
{
358
if (columnPointer != column)
359
{
360
if (!IsPossibleInThatCellCheckByColumn(array, number, row,
361
columnPointer))
362
{
363
continue;
364
}
365
bool canItBe = true;
366
for (int rowPointer = 0; rowPointer < 9; rowPointer++)
367
{
368
if (rowPointer < startRow || rowPointer > startRow + 2)
369
{
370
if (array[rowPointer, columnPointer] == 0)
371
{
372
if (IsPossibleInThatCellCheckByRow(array, number,
373
rowPointer, columnPointer)
374
&& IsPossibleInThatCellCheckByZone(array,
375
number, rowPointer, columnPointer))
376
{
377
canItBe = false;
378
}
379
}
380
}
381
}
382
if (canItBe)
383
{
384
return false;
385
}
386
}
387
}
388
return true;
389
}
390
private bool IsPossibleInThatCellCheckByZone(int[,] array, int number,
391
int row, int column)
392
{
393
int startRow = (row / 3) * 3;
394
int startColumn = (column / 3) * 3;
395
for (int rowPointer = startRow; rowPointer < startRow + 3; rowPointer++)
396
{
397
for (int columnPointer = startColumn; columnPointer < startColumn + 3; columnPointer++)
398
{
399
if (array[rowPointer, columnPointer] == number)
400
{
401
return false;
402
}
403
}
404
}
405
return true;
406
}
407
private bool ReduceFromThreeColumns(int[,] array, int firstColumn,
408
int lastColumn)
409
{
410
int[,] numberAndCount = new int[9, 2];
411
int[,] numberAndPosition = new int[27, 3];
412
for (int row = 0; row < 9; row++)
413
{
414
numberAndCount[row, 0] = row + 1;
415
numberAndCount[row, 1] = 0;
416
}
417
for (int row = 0; row < 27; row++)
418
{
419
for (int column = 0; column < 3; column++)
420
{
421
numberAndPosition[row, column] = 0;
422
}
423
}
424
for (int column = firstColumn; column <= lastColumn; column++)
425
{
426
for (int row = 0; row < 9; row++)
427
{
428
if (array[row, column] != 0)
429
{
430
numberAndCount[array[row, column] - 1, 1]++;
431
numberAndPosition[9 * (column % 3) + row, 0] = array[row, column];
432
numberAndPosition[9 * (column % 3) + row, 1] = row;
433
numberAndPosition[9 * (column % 3) + row, 2] = column;
434
}
435
}
436
}
437
for (int row = 0; row < 9; row++)
438
{
439
if (numberAndCount[row, 1] == 2)
440
{
441
int number = numberAndCount[row, 0];
442
int pointer = 0;
443
int firstAppearanceRowPosition = -1;
444
int firstAppearanceColumnPosition = -1;
445
int secondAppearanceRowPosition = -1;
446
int secondAppearanceColumnPosition = -1;
447
while (pointer < 27)
448
{
449
if (numberAndPosition[pointer, 0] == number)
450
{
451
firstAppearanceRowPosition = numberAndPosition[pointer, 1];
452
firstAppearanceColumnPosition = numberAndPosition[pointer, 2];
453
pointer++;
454
break;
455
}
456
else
457
{
458
pointer++;
459
}
460
}
461
while (pointer < 27)
462
{
463
if (numberAndPosition[pointer, 0] == number)
464
{
465
secondAppearanceRowPosition = numberAndPosition[pointer, 1];
466
secondAppearanceColumnPosition = numberAndPosition[pointer, 2];
467
break;
468
}
469
else
470
{
471
pointer++;
472
}
473
}
474
int thirdAppearanceColumnPosition = 3
475
* (firstAppearanceColumnPosition / 3) + 3
476
- firstAppearanceColumnPosition % 3
477
- secondAppearanceColumnPosition % 3;
478
int thirdAppearanceRowStartPosition = (3 - firstAppearanceRowPosition / 3 - secondAppearanceRowPosition / 3) * 3;
479
int posibilities = 0;
480
int thirdAppearanceRowPosition = -1;
481
for (int indicator = thirdAppearanceRowStartPosition; indicator < thirdAppearanceRowStartPosition + 3; indicator++)
482
{
483
if (array[indicator, thirdAppearanceColumnPosition] == 0)
484
{
485
if (IsPossibleInThatCellCheckByRow(array, number,
486
indicator, thirdAppearanceColumnPosition))
487
{
488
thirdAppearanceRowPosition = indicator;
489
posibilities++;
490
}
491
}
492
}
493
if (posibilities == 1)
494
{
495
array[thirdAppearanceRowPosition, thirdAppearanceColumnPosition] = number;
496
return true;
497
}
498
}
499
}
500
return false;
501
}
502
private bool ReduceFromThreeRows(int[,] array, int firstRow, int lastRow)
503
{
504
int[,] numberAndCount = new int[2, 9];
505
int[,] numberAndPosition = new int[3, 27];
506
for (int column = 0; column < 9; column++)
507
{
508
numberAndCount[0, column] = column + 1;
509
numberAndCount[1, column] = 0;
510
}
511
for (int row = 0; row < 3; row++)
512
{
513
for (int column = 0; column < 27; column++)
514
{
515
numberAndPosition[row, column] = 0;
516
}
517
}
518
for (int row = firstRow; row <= lastRow; row++)
519
{
520
for (int column = 0; column < 9; column++)
521
{
522
if (array[row, column] != 0)
523
{
524
numberAndCount[1, array[row, column] - 1]++;
525
numberAndPosition[0, 9 * (row % 3) + column] = array[row, column];
526
numberAndPosition[1, 9 * (row % 3) + column] = row;
527
numberAndPosition[2, 9 * (row % 3) + column] = column;
528
}
529
}
530
}
531
for (int column = 0; column < 9; column++)
532
{
533
if (numberAndCount[1, column] == 2)
534
{
535
int number = numberAndCount[0, column];
536
int pointer = 0;
537
int firstAppearanceRowPosition = -1;
538
int firstAppearanceColumnPosition = -1;
539
int secondAppearanceRowPosition = -1;
540
int secondAppearanceColumnPosition = -1;
541
while (pointer < 27)
542
{
543
if (numberAndPosition[0, pointer] == number)
544
{
545
firstAppearanceRowPosition = numberAndPosition[1, pointer];
546
firstAppearanceColumnPosition = numberAndPosition[2, pointer];
547
pointer++;
548
break;
549
}
550
else
551
{
552
pointer++;
553
}
554
}
555
while (pointer < 27)
556
{
557
if (numberAndPosition[0, pointer] == number)
558
{
559
secondAppearanceRowPosition = numberAndPosition[1, pointer];
560
secondAppearanceColumnPosition = numberAndPosition[2, pointer];
561
break;
562
}
563
else
564
{
565
pointer++;
566
}
567
}
568
int thirdAppearanceRowPosition = 3
569
* (firstAppearanceRowPosition / 3) + 3
570
- firstAppearanceRowPosition % 3
571
- secondAppearanceRowPosition % 3;
572
int thirdAppearanceColumnStartPosition = (3 - firstAppearanceColumnPosition / 3 - secondAppearanceColumnPosition / 3) * 3;
573
int posibilities = 0;
574
int thirdAppearanceColumnPosition = -1;
575
for (int indicator = thirdAppearanceColumnStartPosition; indicator < thirdAppearanceColumnStartPosition + 3; indicator++)
576
{
577
if (array[thirdAppearanceRowPosition, indicator] == 0)
578
{
579
if (IsPossibleInThatCellCheckByColumn(array, number,
580
thirdAppearanceRowPosition, indicator))
581
{
582
thirdAppearanceColumnPosition = indicator;
583
posibilities++;
584
}
585
}
586
}
587
if (posibilities == 1)
588
{
589
array[thirdAppearanceRowPosition, thirdAppearanceColumnPosition] = number;
590
return true;
591
}
592
}
593
}
594
return false;
595
}
596
private bool IsPossibleInThatCellCheckByColumn(int[,] array,
597
int number, int row, int column)
598
{
599
for (int pointer = 0; pointer < 9; pointer++)
600
{
601
if (pointer != row)
602
{
603
if (array[pointer, column] == number)
604
{
605
return false;
606
}
607
}
608
}
609
return true;
610
}
611
private bool IsPossibleInThatCellCheckByRow(int[,] array, int number,
612
int row, int column)
613
{
614
for (int pointer = 0; pointer < 9; pointer++)
615
{
616
if (pointer != column)
617
{
618
if (array[row, pointer] == number)
619
{
620
return false;
621
}
622
}
623
}
624
return true;
625
}
626
public int[,] Array
627
{
628
set
629
{
630
this._array = value;
631
}
632
get
633
{
634
return _array;
635
}
636
}
637
}
638![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
90
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
102
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
110
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
117
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
124
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
131
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
132
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
144
![](/Images/OutliningIndicators/InBlock.gif)
145
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
150
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
151
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
154
![](/Images/OutliningIndicators/InBlock.gif)
155
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
156
![](/Images/OutliningIndicators/InBlock.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/InBlock.gif)
159
![](/Images/OutliningIndicators/InBlock.gif)
160
![](/Images/OutliningIndicators/InBlock.gif)
161
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
162
![](/Images/OutliningIndicators/InBlock.gif)
163
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
164
![](/Images/OutliningIndicators/InBlock.gif)
165
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
166
![](/Images/OutliningIndicators/InBlock.gif)
167
![](/Images/OutliningIndicators/InBlock.gif)
168
![](/Images/OutliningIndicators/InBlock.gif)
169
![](/Images/OutliningIndicators/InBlock.gif)
170
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
171
![](/Images/OutliningIndicators/InBlock.gif)
172
![](/Images/OutliningIndicators/InBlock.gif)
173
![](/Images/OutliningIndicators/InBlock.gif)
174
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
175
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
176
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
177
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
178
![](/Images/OutliningIndicators/InBlock.gif)
179
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
180
![](/Images/OutliningIndicators/InBlock.gif)
181
![](/Images/OutliningIndicators/InBlock.gif)
182
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
183
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
184
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
185
![](/Images/OutliningIndicators/InBlock.gif)
186
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
187
![](/Images/OutliningIndicators/InBlock.gif)
188
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
189
![](/Images/OutliningIndicators/InBlock.gif)
190
![](/Images/OutliningIndicators/InBlock.gif)
191
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
192
![](/Images/OutliningIndicators/InBlock.gif)
193
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
194
![](/Images/OutliningIndicators/InBlock.gif)
195
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
196
![](/Images/OutliningIndicators/InBlock.gif)
197
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
198
![](/Images/OutliningIndicators/InBlock.gif)
199
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
200
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
201
![](/Images/OutliningIndicators/InBlock.gif)
202
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
203
![](/Images/OutliningIndicators/InBlock.gif)
204
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
205
![](/Images/OutliningIndicators/InBlock.gif)
206
![](/Images/OutliningIndicators/InBlock.gif)
207
![](/Images/OutliningIndicators/InBlock.gif)
208
![](/Images/OutliningIndicators/InBlock.gif)
209
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
210
![](/Images/OutliningIndicators/InBlock.gif)
211
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
212
![](/Images/OutliningIndicators/InBlock.gif)
213
![](/Images/OutliningIndicators/InBlock.gif)
214
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
215
![](/Images/OutliningIndicators/InBlock.gif)
216
![](/Images/OutliningIndicators/InBlock.gif)
217
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
218
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
219
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
220
![](/Images/OutliningIndicators/InBlock.gif)
221
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
222
![](/Images/OutliningIndicators/InBlock.gif)
223
![](/Images/OutliningIndicators/InBlock.gif)
224
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
225
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
226
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
227
![](/Images/OutliningIndicators/InBlock.gif)
228
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
229
![](/Images/OutliningIndicators/InBlock.gif)
230
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
231
![](/Images/OutliningIndicators/InBlock.gif)
232
![](/Images/OutliningIndicators/InBlock.gif)
233
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
234
![](/Images/OutliningIndicators/InBlock.gif)
235
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
236
![](/Images/OutliningIndicators/InBlock.gif)
237
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
238
![](/Images/OutliningIndicators/InBlock.gif)
239
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
240
![](/Images/OutliningIndicators/InBlock.gif)
241
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
242
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
243
![](/Images/OutliningIndicators/InBlock.gif)
244
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
245
![](/Images/OutliningIndicators/InBlock.gif)
246
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
247
![](/Images/OutliningIndicators/InBlock.gif)
248
![](/Images/OutliningIndicators/InBlock.gif)
249
![](/Images/OutliningIndicators/InBlock.gif)
250
![](/Images/OutliningIndicators/InBlock.gif)
251
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
252
![](/Images/OutliningIndicators/InBlock.gif)
253
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
254
![](/Images/OutliningIndicators/InBlock.gif)
255
![](/Images/OutliningIndicators/InBlock.gif)
256
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
257
![](/Images/OutliningIndicators/InBlock.gif)
258
![](/Images/OutliningIndicators/InBlock.gif)
259
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
260
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
261
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
262
![](/Images/OutliningIndicators/InBlock.gif)
263
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
264
![](/Images/OutliningIndicators/InBlock.gif)
265
![](/Images/OutliningIndicators/InBlock.gif)
266
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
267
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
268
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
269
![](/Images/OutliningIndicators/InBlock.gif)
270
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
271
![](/Images/OutliningIndicators/InBlock.gif)
272
![](/Images/OutliningIndicators/InBlock.gif)
273
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
274
![](/Images/OutliningIndicators/InBlock.gif)
275
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
276
![](/Images/OutliningIndicators/InBlock.gif)
277
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
278
![](/Images/OutliningIndicators/InBlock.gif)
279
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
280
![](/Images/OutliningIndicators/InBlock.gif)
281
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
282
![](/Images/OutliningIndicators/InBlock.gif)
283
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
284
![](/Images/OutliningIndicators/InBlock.gif)
285
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
286
![](/Images/OutliningIndicators/InBlock.gif)
287
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
288
![](/Images/OutliningIndicators/InBlock.gif)
289
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
290
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
291
![](/Images/OutliningIndicators/InBlock.gif)
292
![](/Images/OutliningIndicators/InBlock.gif)
293
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
294
![](/Images/OutliningIndicators/InBlock.gif)
295
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
296
![](/Images/OutliningIndicators/InBlock.gif)
297
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
298
![](/Images/OutliningIndicators/InBlock.gif)
299
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
300
![](/Images/OutliningIndicators/InBlock.gif)
301
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
302
![](/Images/OutliningIndicators/InBlock.gif)
303
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
304
![](/Images/OutliningIndicators/InBlock.gif)
305
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
306
![](/Images/OutliningIndicators/InBlock.gif)
307
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
308
![](/Images/OutliningIndicators/InBlock.gif)
309
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
310
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
311
![](/Images/OutliningIndicators/InBlock.gif)
312
![](/Images/OutliningIndicators/InBlock.gif)
313
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
314
![](/Images/OutliningIndicators/InBlock.gif)
315
![](/Images/OutliningIndicators/InBlock.gif)
316
![](/Images/OutliningIndicators/InBlock.gif)
317
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
318
![](/Images/OutliningIndicators/InBlock.gif)
319
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
320
![](/Images/OutliningIndicators/InBlock.gif)
321
![](/Images/OutliningIndicators/InBlock.gif)
322
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
323
![](/Images/OutliningIndicators/InBlock.gif)
324
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
325
![](/Images/OutliningIndicators/InBlock.gif)
326
![](/Images/OutliningIndicators/InBlock.gif)
327
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
328
![](/Images/OutliningIndicators/InBlock.gif)
329
![](/Images/OutliningIndicators/InBlock.gif)
330
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
331
![](/Images/OutliningIndicators/InBlock.gif)
332
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
333
![](/Images/OutliningIndicators/InBlock.gif)
334
![](/Images/OutliningIndicators/InBlock.gif)
335
![](/Images/OutliningIndicators/InBlock.gif)
336
![](/Images/OutliningIndicators/InBlock.gif)
337
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
338
![](/Images/OutliningIndicators/InBlock.gif)
339
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
340
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
341
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
342
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
343
![](/Images/OutliningIndicators/InBlock.gif)
344
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
345
![](/Images/OutliningIndicators/InBlock.gif)
346
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
347
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
348
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
349
![](/Images/OutliningIndicators/InBlock.gif)
350
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
351
![](/Images/OutliningIndicators/InBlock.gif)
352
![](/Images/OutliningIndicators/InBlock.gif)
353
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
354
![](/Images/OutliningIndicators/InBlock.gif)
355
![](/Images/OutliningIndicators/InBlock.gif)
356
![](/Images/OutliningIndicators/InBlock.gif)
357
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
358
![](/Images/OutliningIndicators/InBlock.gif)
359
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
360
![](/Images/OutliningIndicators/InBlock.gif)
361
![](/Images/OutliningIndicators/InBlock.gif)
362
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
363
![](/Images/OutliningIndicators/InBlock.gif)
364
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
365
![](/Images/OutliningIndicators/InBlock.gif)
366
![](/Images/OutliningIndicators/InBlock.gif)
367
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
368
![](/Images/OutliningIndicators/InBlock.gif)
369
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
370
![](/Images/OutliningIndicators/InBlock.gif)
371
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
372
![](/Images/OutliningIndicators/InBlock.gif)
373
![](/Images/OutliningIndicators/InBlock.gif)
374
![](/Images/OutliningIndicators/InBlock.gif)
375
![](/Images/OutliningIndicators/InBlock.gif)
376
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
377
![](/Images/OutliningIndicators/InBlock.gif)
378
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
379
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
380
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
381
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
382
![](/Images/OutliningIndicators/InBlock.gif)
383
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
384
![](/Images/OutliningIndicators/InBlock.gif)
385
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
386
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
387
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
388
![](/Images/OutliningIndicators/InBlock.gif)
389
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
390
![](/Images/OutliningIndicators/InBlock.gif)
391
![](/Images/OutliningIndicators/InBlock.gif)
392
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
393
![](/Images/OutliningIndicators/InBlock.gif)
394
![](/Images/OutliningIndicators/InBlock.gif)
395
![](/Images/OutliningIndicators/InBlock.gif)
396
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
397
![](/Images/OutliningIndicators/InBlock.gif)
398
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
399
![](/Images/OutliningIndicators/InBlock.gif)
400
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
401
![](/Images/OutliningIndicators/InBlock.gif)
402
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
403
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
404
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
405
![](/Images/OutliningIndicators/InBlock.gif)
406
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
407
![](/Images/OutliningIndicators/InBlock.gif)
408
![](/Images/OutliningIndicators/InBlock.gif)
409
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
410
![](/Images/OutliningIndicators/InBlock.gif)
411
![](/Images/OutliningIndicators/InBlock.gif)
412
![](/Images/OutliningIndicators/InBlock.gif)
413
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
414
![](/Images/OutliningIndicators/InBlock.gif)
415
![](/Images/OutliningIndicators/InBlock.gif)
416
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
417
![](/Images/OutliningIndicators/InBlock.gif)
418
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
419
![](/Images/OutliningIndicators/InBlock.gif)
420
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
421
![](/Images/OutliningIndicators/InBlock.gif)
422
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
423
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
424
![](/Images/OutliningIndicators/InBlock.gif)
425
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
426
![](/Images/OutliningIndicators/InBlock.gif)
427
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
428
![](/Images/OutliningIndicators/InBlock.gif)
429
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
430
![](/Images/OutliningIndicators/InBlock.gif)
431
![](/Images/OutliningIndicators/InBlock.gif)
432
![](/Images/OutliningIndicators/InBlock.gif)
433
![](/Images/OutliningIndicators/InBlock.gif)
434
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
435
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
436
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
437
![](/Images/OutliningIndicators/InBlock.gif)
438
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
439
![](/Images/OutliningIndicators/InBlock.gif)
440
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
441
![](/Images/OutliningIndicators/InBlock.gif)
442
![](/Images/OutliningIndicators/InBlock.gif)
443
![](/Images/OutliningIndicators/InBlock.gif)
444
![](/Images/OutliningIndicators/InBlock.gif)
445
![](/Images/OutliningIndicators/InBlock.gif)
446
![](/Images/OutliningIndicators/InBlock.gif)
447
![](/Images/OutliningIndicators/InBlock.gif)
448
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
449
![](/Images/OutliningIndicators/InBlock.gif)
450
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
451
![](/Images/OutliningIndicators/InBlock.gif)
452
![](/Images/OutliningIndicators/InBlock.gif)
453
![](/Images/OutliningIndicators/InBlock.gif)
454
![](/Images/OutliningIndicators/InBlock.gif)
455
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
456
![](/Images/OutliningIndicators/InBlock.gif)
457
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
458
![](/Images/OutliningIndicators/InBlock.gif)
459
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
460
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
461
![](/Images/OutliningIndicators/InBlock.gif)
462
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
463
![](/Images/OutliningIndicators/InBlock.gif)
464
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
465
![](/Images/OutliningIndicators/InBlock.gif)
466
![](/Images/OutliningIndicators/InBlock.gif)
467
![](/Images/OutliningIndicators/InBlock.gif)
468
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
469
![](/Images/OutliningIndicators/InBlock.gif)
470
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
471
![](/Images/OutliningIndicators/InBlock.gif)
472
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
473
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
474
![](/Images/OutliningIndicators/InBlock.gif)
475
![](/Images/OutliningIndicators/InBlock.gif)
476
![](/Images/OutliningIndicators/InBlock.gif)
477
![](/Images/OutliningIndicators/InBlock.gif)
478
![](/Images/OutliningIndicators/InBlock.gif)
479
![](/Images/OutliningIndicators/InBlock.gif)
480
![](/Images/OutliningIndicators/InBlock.gif)
481
![](/Images/OutliningIndicators/InBlock.gif)
482
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
483
![](/Images/OutliningIndicators/InBlock.gif)
484
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
485
![](/Images/OutliningIndicators/InBlock.gif)
486
![](/Images/OutliningIndicators/InBlock.gif)
487
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
488
![](/Images/OutliningIndicators/InBlock.gif)
489
![](/Images/OutliningIndicators/InBlock.gif)
490
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
491
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
492
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
493
![](/Images/OutliningIndicators/InBlock.gif)
494
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
495
![](/Images/OutliningIndicators/InBlock.gif)
496
![](/Images/OutliningIndicators/InBlock.gif)
497
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
498
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
499
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
500
![](/Images/OutliningIndicators/InBlock.gif)
501
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
502
![](/Images/OutliningIndicators/InBlock.gif)
503
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
504
![](/Images/OutliningIndicators/InBlock.gif)
505
![](/Images/OutliningIndicators/InBlock.gif)
506
![](/Images/OutliningIndicators/InBlock.gif)
507
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
508
![](/Images/OutliningIndicators/InBlock.gif)
509
![](/Images/OutliningIndicators/InBlock.gif)
510
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
511
![](/Images/OutliningIndicators/InBlock.gif)
512
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
513
![](/Images/OutliningIndicators/InBlock.gif)
514
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
515
![](/Images/OutliningIndicators/InBlock.gif)
516
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
517
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
518
![](/Images/OutliningIndicators/InBlock.gif)
519
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
520
![](/Images/OutliningIndicators/InBlock.gif)
521
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
522
![](/Images/OutliningIndicators/InBlock.gif)
523
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
524
![](/Images/OutliningIndicators/InBlock.gif)
525
![](/Images/OutliningIndicators/InBlock.gif)
526
![](/Images/OutliningIndicators/InBlock.gif)
527
![](/Images/OutliningIndicators/InBlock.gif)
528
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
529
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
530
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
531
![](/Images/OutliningIndicators/InBlock.gif)
532
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
533
![](/Images/OutliningIndicators/InBlock.gif)
534
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
535
![](/Images/OutliningIndicators/InBlock.gif)
536
![](/Images/OutliningIndicators/InBlock.gif)
537
![](/Images/OutliningIndicators/InBlock.gif)
538
![](/Images/OutliningIndicators/InBlock.gif)
539
![](/Images/OutliningIndicators/InBlock.gif)
540
![](/Images/OutliningIndicators/InBlock.gif)
541
![](/Images/OutliningIndicators/InBlock.gif)
542
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
543
![](/Images/OutliningIndicators/InBlock.gif)
544
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
545
![](/Images/OutliningIndicators/InBlock.gif)
546
![](/Images/OutliningIndicators/InBlock.gif)
547
![](/Images/OutliningIndicators/InBlock.gif)
548
![](/Images/OutliningIndicators/InBlock.gif)
549
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
550
![](/Images/OutliningIndicators/InBlock.gif)
551
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
552
![](/Images/OutliningIndicators/InBlock.gif)
553
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
554
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
555
![](/Images/OutliningIndicators/InBlock.gif)
556
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
557
![](/Images/OutliningIndicators/InBlock.gif)
558
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
559
![](/Images/OutliningIndicators/InBlock.gif)
560
![](/Images/OutliningIndicators/InBlock.gif)
561
![](/Images/OutliningIndicators/InBlock.gif)
562
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
563
![](/Images/OutliningIndicators/InBlock.gif)
564
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
565
![](/Images/OutliningIndicators/InBlock.gif)
566
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
567
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
568
![](/Images/OutliningIndicators/InBlock.gif)
569
![](/Images/OutliningIndicators/InBlock.gif)
570
![](/Images/OutliningIndicators/InBlock.gif)
571
![](/Images/OutliningIndicators/InBlock.gif)
572
![](/Images/OutliningIndicators/InBlock.gif)
573
![](/Images/OutliningIndicators/InBlock.gif)
574
![](/Images/OutliningIndicators/InBlock.gif)
575
![](/Images/OutliningIndicators/InBlock.gif)
576
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
577
![](/Images/OutliningIndicators/InBlock.gif)
578
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
579
![](/Images/OutliningIndicators/InBlock.gif)
580
![](/Images/OutliningIndicators/InBlock.gif)
581
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
582
![](/Images/OutliningIndicators/InBlock.gif)
583
![](/Images/OutliningIndicators/InBlock.gif)
584
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
585
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
586
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
587
![](/Images/OutliningIndicators/InBlock.gif)
588
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
589
![](/Images/OutliningIndicators/InBlock.gif)
590
![](/Images/OutliningIndicators/InBlock.gif)
591
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
592
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
593
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
594
![](/Images/OutliningIndicators/InBlock.gif)
595
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
596
![](/Images/OutliningIndicators/InBlock.gif)
597
![](/Images/OutliningIndicators/InBlock.gif)
598
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
599
![](/Images/OutliningIndicators/InBlock.gif)
600
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
601
![](/Images/OutliningIndicators/InBlock.gif)
602
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
603
![](/Images/OutliningIndicators/InBlock.gif)
604
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
605
![](/Images/OutliningIndicators/InBlock.gif)
606
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
607
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
608
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
609
![](/Images/OutliningIndicators/InBlock.gif)
610
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
611
![](/Images/OutliningIndicators/InBlock.gif)
612
![](/Images/OutliningIndicators/InBlock.gif)
613
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
614
![](/Images/OutliningIndicators/InBlock.gif)
615
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
616
![](/Images/OutliningIndicators/InBlock.gif)
617
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
618
![](/Images/OutliningIndicators/InBlock.gif)
619
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
620
![](/Images/OutliningIndicators/InBlock.gif)
621
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
622
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
623
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
624
![](/Images/OutliningIndicators/InBlock.gif)
625
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
626
![](/Images/OutliningIndicators/InBlock.gif)
627
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
628
![](/Images/OutliningIndicators/InBlock.gif)
629
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
630
![](/Images/OutliningIndicators/InBlock.gif)
631
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
632
![](/Images/OutliningIndicators/InBlock.gif)
633
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
634
![](/Images/OutliningIndicators/InBlock.gif)
635
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
636
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
637
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
638
![](/Images/OutliningIndicators/None.gif)
puzzleCS.aspx.cs:
1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Collections;
5
using System.Web;
6
using System.Web.Security;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
using System.Web.UI.WebControls.WebParts;
10
using System.Web.UI.HtmlControls;
11
using System.Text;
12![](/Images/OutliningIndicators/None.gif)
13
public partial class puzzleCS : System.Web.UI.Page
14
{
15
protected void Page_Load(object sender, EventArgs e)
16
{
17
if (this.Request.Form.Get("type") != null)
18
{
19
try
20
{
21
String array = this.Request.Form.Get("array");
22
String[] numbers = array.Split(',');
23
int[,] dealingArray = new int[9, 9];
24
for (int row = 0; row < 9; row++)
25
{
26
for (int column = 0; column < 9; column++)
27
{
28
dealingArray[row, column] = Convert.ToInt32(numbers[row * 9 + column]);
29
}
30
}
31
Deducer deducer = new Deducer(dealingArray);
32
if (this.Request.Form.Get("type") == "OneStep")
33
{
34
deducer.DeduceOnce();
35
}
36
else if (this.Request.Form.Get("type") == "AllSteps")
37
{
38
deducer.DeduceAll();
39
}
40
StringBuilder sb = new StringBuilder();
41
for (int row = 0; row < 9; row++)
42
{
43
for (int column = 0; column < 9; column++)
44
{
45
if (sb.ToString() == "")
46
{
47
sb.Append(deducer.Array[row, column]);
48
}
49
else
50
{
51
sb.Append("," + deducer.Array[row, column]);
52
}
53
}
54
}
55
this.Response.Write(sb);
56
}
57
catch
58
{
59
this.Response.Write("ri");
60
}
61
this.Response.End();
62
}
63
}
64
}
65![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
63
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
64
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
65
![](/Images/OutliningIndicators/None.gif)
puzzleCS.aspx
1
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="puzzleCS.aspx.cs" Inherits="puzzleCS" %>
2![](/Images/OutliningIndicators/None.gif)
3
<html>
4
<body>
5
<script>
6
var request=false;
7
try
8
{
9
request = new XMLHttpRequest();//Firefox
10
}
11
catch(trymicrosoft)
12
{
13
try
14
{
15
request = new ActiveXObject("Msxml2.XMLHTTP.5.0");//New IE
16
}
17
catch(othermicrosoft)
18
{
19
try
20
{
21
request = new ActiveXObject("Microsoft.XMLHTTP");//Old IE
22
}
23
catch(failed)
24
{
25
request = false;//Unknown browser
26
}
27
}
28
}
29
if(!request)
30
{
31
alert("Please use Internet Explorer");
32
}
33
function dealNullInput(input)
34
{
35
if(input=="")
36
{
37
return "0";
38
}
39
else
40
{
41
return input;
42
}
43
}
44
function dealZeroOutput(input)
45
{
46
if(input==0)
47
{
48
return "";
49
}
50
else
51
{
52
return input;
53
}
54
}
55
function sendOneStepRequest()
56
{
57
url=escape("puzzleCS.aspx")+"?random=" + Math.random();//use a random number to avoid cache
58
request.open("POST",url,true);//connection method
59
request.onreadystatechange=showProcess;//show Process method
60
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
61
var array="";
62
for(var i=0;i<81;i++)
63
{
64
if(array=="")
65
{
66
array=array+dealNullInput(document.getElementsByName("TextBox")[i].value);
67
}
68
else
69
{
70
array=array+","+dealNullInput(document.getElementsByName("TextBox")[i].value);
71
}
72
}
73
request.send("type=OneStep"+"&array="+escape(array));
74
}
75
function sendAllStepsRequest()
76
{
77
url=escape("puzzleCS.aspx")+"?random=" + Math.random();
78
request.open("POST",url,true);//connection method
79
request.onreadystatechange=showProcess;//show Process method
80
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
81
var array="";
82
for(var i=0;i<81;i++)
83
{
84
if(array=="")
85
{
86
array=array+dealNullInput(document.getElementsByName("TextBox")[i].value);
87
}
88
else
89
{
90
array=array+","+dealNullInput(document.getElementsByName("TextBox")[i].value.replace(/ /g, ""));
91
}
92
}
93
request.send("type=AllSteps"+"&array="+escape(array));
94
}
95
function showProcess()
96
{
97
if(request.readyState == 4)//finished
98
{
99
if(request.status == 200)//normal
100
{
101
var splitResult=request.responseText.split(",");
102
for(var i=0;i<81;i++)
103
{
104
document.getElementsByName("TextBox")[i].value=dealZeroOutput(splitResult[i]);
105
}
106
}
107
}
108
else if(request.readyState == 1)
109
{
110
//"finished step1";
111
}
112
else if(request.readyState == 2)
113
{
114
//"finished step2";
115
}
116
else if(request.readyState == 3)
117
{
118
//"finished step3";
119
}
120
}
121
</script>
122
<table>
123
<tr>
124
<td>
125
<input name="TextBox" type="text" style="width: 25px"/>
126
</td>
127
<td>
128
<input name="TextBox" type="text" style="width: 25px"/>
129
</td>
130
<td>
131
<input name="TextBox" type="text" style="width: 25px"/>
132
</td>
133
<td>
134
<input name="TextBox" type="text" style="width: 25px"/>
135
</td>
136
<td>
137
<input name="TextBox" type="text" style="width: 25px"/>
138
</td>
139
<td>
140
<input name="TextBox" type="text" style="width: 25px"/>
141
</td>
142
<td>
143
<input name="TextBox" type="text" style="width: 25px"/>
144
</td>
145
<td>
146
<input name="TextBox" type="text" style="width: 25px"/>
147
</td>
148
<td>
149
<input name="TextBox" type="text" style="width: 25px"/>
150
</td>
151
</tr>
152
<tr>
153
<td>
154
<input name="TextBox" type="text" style="width: 25px"/>
155
</td>
156
<td>
157
<input name="TextBox" type="text" style="width: 25px"/>
158
</td>
159
<td>
160
<input name="TextBox" type="text" style="width: 25px"/>
161
</td>
162
<td>
163
<input name="TextBox" type="text" style="width: 25px"/>
164
</td>
165
<td>
166
<input name="TextBox" type="text" style="width: 25px"/>
167
</td>
168
<td>
169
<input name="TextBox" type="text" style="width: 25px"/>
170
</td>
171
<td>
172
<input name="TextBox" type="text" style="width: 25px"/>
173
</td>
174
<td>
175
<input name="TextBox" type="text" style="width: 25px"/>
176
</td>
177
<td>
178
<input name="TextBox" type="text" style="width: 25px"/>
179
</td>
180
</tr>
181
<tr>
182
<td>
183
<input name="TextBox" type="text" style="width: 25px"/>
184
</td>
185
<td>
186
<input name="TextBox" type="text" style="width: 25px"/>
187
</td>
188
<td>
189
<input name="TextBox" type="text" style="width: 25px"/>
190
</td>
191
<td>
192
<input name="TextBox" type="text" style="width: 25px"/>
193
</td>
194
<td>
195
<input name="TextBox" type="text" style="width: 25px"/>
196
</td>
197
<td>
198
<input name="TextBox" type="text" style="width: 25px"/>
199
</td>
200
<td>
201
<input name="TextBox" type="text" style="width: 25px"/>
202
</td>
203
<td>
204
<input name="TextBox" type="text" style="width: 25px"/>
205
</td>
206
<td>
207
<input name="TextBox" type="text" style="width: 25px"/>
208
</td>
209
</tr>
210
<tr>
211
<td>
212
<input name="TextBox" type="text" style="width: 25px"/>
213
</td>
214
<td>
215
<input name="TextBox" type="text" style="width: 25px"/>
216
</td>
217
<td>
218
<input name="TextBox" type="text" style="width: 25px"/>
219
</td>
220
<td>
221
<input name="TextBox" type="text" style="width: 25px"/>
222
</td>
223
<td>
224
<input name="TextBox" type="text" style="width: 25px"/>
225
</td>
226
<td>
227
<input name="TextBox" type="text" style="width: 25px"/>
228
</td>
229
<td>
230
<input name="TextBox" type="text" style="width: 25px"/>
231
</td>
232
<td>
233
<input name="TextBox" type="text" style="width: 25px"/>
234
</td>
235
<td>
236
<input name="TextBox" type="text" style="width: 25px"/>
237
</td>
238
</tr>
239
<tr>
240
<td>
241
<input name="TextBox" type="text" style="width: 25px"/>
242
</td>
243
<td>
244
<input name="TextBox" type="text" style="width: 25px"/>
245
</td>
246
<td>
247
<input name="TextBox" type="text" style="width: 25px"/>
248
</td>
249
<td>
250
<input name="TextBox" type="text" style="width: 25px"/>
251
</td>
252
<td>
253
<input name="TextBox" type="text" style="width: 25px"/>
254
</td>
255
<td>
256
<input name="TextBox" type="text" style="width: 25px"/>
257
</td>
258
<td>
259
<input name="TextBox" type="text" style="width: 25px"/>
260
</td>
261
<td>
262
<input name="TextBox" type="text" style="width: 25px"/>
263
</td>
264
<td>
265
<input name="TextBox" type="text" style="width: 25px"/>
266
</td>
267
</tr>
268
<tr>
269
<td>
270
<input name="TextBox" type="text" style="width: 25px"/>
271
</td>
272
<td>
273
<input name="TextBox" type="text" style="width: 25px"/>
274
</td>
275
<td>
276
<input name="TextBox" type="text" style="width: 25px"/>
277
</td>
278
<td>
279
<input name="TextBox" type="text" style="width: 25px"/>
280
</td>
281
<td>
282
<input name="TextBox" type="text" style="width: 25px"/>
283
</td>
284
<td>
285
<input name="TextBox" type="text" style="width: 25px"/>
286
</td>
287
<td>
288
<input name="TextBox" type="text" style="width: 25px"/>
289
</td>
290
<td>
291
<input name="TextBox" type="text" style="width: 25px"/>
292
</td>
293
<td>
294
<input name="TextBox" type="text" style="width: 25px"/>
295
</td>
296
</tr>
297
<tr>
298
<td>
299
<input name="TextBox" type="text" style="width: 25px"/>
300
</td>
301
<td>
302
<input name="TextBox" type="text" style="width: 25px"/>
303
</td>
304
<td>
305
<input name="TextBox" type="text" style="width: 25px"/>
306
</td>
307
<td>
308
<input name="TextBox" type="text" style="width: 25px"/>
309
</td>
310
<td>
311
<input name="TextBox" type="text" style="width: 25px"/>
312
</td>
313
<td>
314
<input name="TextBox" type="text" style="width: 25px"/>
315
</td>
316
<td>
317
<input name="TextBox" type="text" style="width: 25px"/>
318
</td>
319
<td>
320
<input name="TextBox" type="text" style="width: 25px"/>
321
</td>
322
<td>
323
<input name="TextBox" type="text" style="width: 25px"/>
324
</td>
325
</tr>
326
<tr>
327
<td>
328
<input name="TextBox" type="text" style="width: 25px"/>
329
</td>
330
<td>
331
<input name="TextBox" type="text" style="width: 25px"/>
332
</td>
333
<td>
334
<input name="TextBox" type="text" style="width: 25px"/>
335
</td>
336
<td>
337
<input name="TextBox" type="text" style="width: 25px"/>
338
</td>
339
<td>
340
<input name="TextBox" type="text" style="width: 25px"/>
341
</td>
342
<td>
343
<input name="TextBox" type="text" style="width: 25px"/>
344
</td>
345
<td>
346
<input name="TextBox" type="text" style="width: 25px"/>
347
</td>
348
<td>
349
<input name="TextBox" type="text" style="width: 25px"/>
350
</td>
351
<td>
352
<input name="TextBox" type="text" style="width: 25px"/>
353
</td>
354
</tr>
355
<tr>
356
<td>
357
<input name="TextBox" type="text" style="width: 25px"/>
358
</td>
359
<td>
360
<input name="TextBox" type="text" style="width: 25px"/>
361
</td>
362
<td>
363
<input name="TextBox" type="text" style="width: 25px"/>
364
</td>
365
<td>
366
<input name="TextBox" type="text" style="width: 25px"/>
367
</td>
368
<td>
369
<input name="TextBox" type="text" style="width: 25px"/>
370
</td>
371
<td>
372
<input name="TextBox" type="text" style="width: 25px"/>
373
</td>
374
<td>
375
<input name="TextBox" type="text" style="width: 25px"/>
376
</td>
377
<td>
378
<input name="TextBox" type="text" style="width: 25px"/>
379
</td>
380
<td>
381
<input name="TextBox" type="text" style="width: 25px"/>
382
</td>
383
</tr>
384
</table>
385
<input type="button" name="OneStep" value="OneStep" id="OneStep" onclick="sendOneStepRequest()" />
386
<input type="button" name="AllSteps" value="AllSteps" id="AllSteps" onclick="sendAllStepsRequest()" />
387
</body>
388
</html>
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
107
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
120
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
121
![](/Images/OutliningIndicators/None.gif)
122
![](/Images/OutliningIndicators/None.gif)
123
![](/Images/OutliningIndicators/None.gif)
124
![](/Images/OutliningIndicators/None.gif)
125
![](/Images/OutliningIndicators/None.gif)
126
![](/Images/OutliningIndicators/None.gif)
127
![](/Images/OutliningIndicators/None.gif)
128
![](/Images/OutliningIndicators/None.gif)
129
![](/Images/OutliningIndicators/None.gif)
130
![](/Images/OutliningIndicators/None.gif)
131
![](/Images/OutliningIndicators/None.gif)
132
![](/Images/OutliningIndicators/None.gif)
133
![](/Images/OutliningIndicators/None.gif)
134
![](/Images/OutliningIndicators/None.gif)
135
![](/Images/OutliningIndicators/None.gif)
136
![](/Images/OutliningIndicators/None.gif)
137
![](/Images/OutliningIndicators/None.gif)
138
![](/Images/OutliningIndicators/None.gif)
139
![](/Images/OutliningIndicators/None.gif)
140
![](/Images/OutliningIndicators/None.gif)
141
![](/Images/OutliningIndicators/None.gif)
142
![](/Images/OutliningIndicators/None.gif)
143
![](/Images/OutliningIndicators/None.gif)
144
![](/Images/OutliningIndicators/None.gif)
145
![](/Images/OutliningIndicators/None.gif)
146
![](/Images/OutliningIndicators/None.gif)
147
![](/Images/OutliningIndicators/None.gif)
148
![](/Images/OutliningIndicators/None.gif)
149
![](/Images/OutliningIndicators/None.gif)
150
![](/Images/OutliningIndicators/None.gif)
151
![](/Images/OutliningIndicators/None.gif)
152
![](/Images/OutliningIndicators/None.gif)
153
![](/Images/OutliningIndicators/None.gif)
154
![](/Images/OutliningIndicators/None.gif)
155
![](/Images/OutliningIndicators/None.gif)
156
![](/Images/OutliningIndicators/None.gif)
157
![](/Images/OutliningIndicators/None.gif)
158
![](/Images/OutliningIndicators/None.gif)
159
![](/Images/OutliningIndicators/None.gif)
160
![](/Images/OutliningIndicators/None.gif)
161
![](/Images/OutliningIndicators/None.gif)
162
![](/Images/OutliningIndicators/None.gif)
163
![](/Images/OutliningIndicators/None.gif)
164
![](/Images/OutliningIndicators/None.gif)
165
![](/Images/OutliningIndicators/None.gif)
166
![](/Images/OutliningIndicators/None.gif)
167
![](/Images/OutliningIndicators/None.gif)
168
![](/Images/OutliningIndicators/None.gif)
169
![](/Images/OutliningIndicators/None.gif)
170
![](/Images/OutliningIndicators/None.gif)
171
![](/Images/OutliningIndicators/None.gif)
172
![](/Images/OutliningIndicators/None.gif)
173
![](/Images/OutliningIndicators/None.gif)
174
![](/Images/OutliningIndicators/None.gif)
175
![](/Images/OutliningIndicators/None.gif)
176
![](/Images/OutliningIndicators/None.gif)
177
![](/Images/OutliningIndicators/None.gif)
178
![](/Images/OutliningIndicators/None.gif)
179
![](/Images/OutliningIndicators/None.gif)
180
![](/Images/OutliningIndicators/None.gif)
181
![](/Images/OutliningIndicators/None.gif)
182
![](/Images/OutliningIndicators/None.gif)
183
![](/Images/OutliningIndicators/None.gif)
184
![](/Images/OutliningIndicators/None.gif)
185
![](/Images/OutliningIndicators/None.gif)
186
![](/Images/OutliningIndicators/None.gif)
187
![](/Images/OutliningIndicators/None.gif)
188
![](/Images/OutliningIndicators/None.gif)
189
![](/Images/OutliningIndicators/None.gif)
190
![](/Images/OutliningIndicators/None.gif)
191
![](/Images/OutliningIndicators/None.gif)
192
![](/Images/OutliningIndicators/None.gif)
193
![](/Images/OutliningIndicators/None.gif)
194
![](/Images/OutliningIndicators/None.gif)
195
![](/Images/OutliningIndicators/None.gif)
196
![](/Images/OutliningIndicators/None.gif)
197
![](/Images/OutliningIndicators/None.gif)
198
![](/Images/OutliningIndicators/None.gif)
199
![](/Images/OutliningIndicators/None.gif)
200
![](/Images/OutliningIndicators/None.gif)
201
![](/Images/OutliningIndicators/None.gif)
202
![](/Images/OutliningIndicators/None.gif)
203
![](/Images/OutliningIndicators/None.gif)
204
![](/Images/OutliningIndicators/None.gif)
205
![](/Images/OutliningIndicators/None.gif)
206
![](/Images/OutliningIndicators/None.gif)
207
![](/Images/OutliningIndicators/None.gif)
208
![](/Images/OutliningIndicators/None.gif)
209
![](/Images/OutliningIndicators/None.gif)
210
![](/Images/OutliningIndicators/None.gif)
211
![](/Images/OutliningIndicators/None.gif)
212
![](/Images/OutliningIndicators/None.gif)
213
![](/Images/OutliningIndicators/None.gif)
214
![](/Images/OutliningIndicators/None.gif)
215
![](/Images/OutliningIndicators/None.gif)
216
![](/Images/OutliningIndicators/None.gif)
217
![](/Images/OutliningIndicators/None.gif)
218
![](/Images/OutliningIndicators/None.gif)
219
![](/Images/OutliningIndicators/None.gif)
220
![](/Images/OutliningIndicators/None.gif)
221
![](/Images/OutliningIndicators/None.gif)
222
![](/Images/OutliningIndicators/None.gif)
223
![](/Images/OutliningIndicators/None.gif)
224
![](/Images/OutliningIndicators/None.gif)
225
![](/Images/OutliningIndicators/None.gif)
226
![](/Images/OutliningIndicators/None.gif)
227
![](/Images/OutliningIndicators/None.gif)
228
![](/Images/OutliningIndicators/None.gif)
229
![](/Images/OutliningIndicators/None.gif)
230
![](/Images/OutliningIndicators/None.gif)
231
![](/Images/OutliningIndicators/None.gif)
232
![](/Images/OutliningIndicators/None.gif)
233
![](/Images/OutliningIndicators/None.gif)
234
![](/Images/OutliningIndicators/None.gif)
235
![](/Images/OutliningIndicators/None.gif)
236
![](/Images/OutliningIndicators/None.gif)
237
![](/Images/OutliningIndicators/None.gif)
238
![](/Images/OutliningIndicators/None.gif)
239
![](/Images/OutliningIndicators/None.gif)
240
![](/Images/OutliningIndicators/None.gif)
241
![](/Images/OutliningIndicators/None.gif)
242
![](/Images/OutliningIndicators/None.gif)
243
![](/Images/OutliningIndicators/None.gif)
244
![](/Images/OutliningIndicators/None.gif)
245
![](/Images/OutliningIndicators/None.gif)
246
![](/Images/OutliningIndicators/None.gif)
247
![](/Images/OutliningIndicators/None.gif)
248
![](/Images/OutliningIndicators/None.gif)
249
![](/Images/OutliningIndicators/None.gif)
250
![](/Images/OutliningIndicators/None.gif)
251
![](/Images/OutliningIndicators/None.gif)
252
![](/Images/OutliningIndicators/None.gif)
253
![](/Images/OutliningIndicators/None.gif)
254
![](/Images/OutliningIndicators/None.gif)
255
![](/Images/OutliningIndicators/None.gif)
256
![](/Images/OutliningIndicators/None.gif)
257
![](/Images/OutliningIndicators/None.gif)
258
![](/Images/OutliningIndicators/None.gif)
259
![](/Images/OutliningIndicators/None.gif)
260
![](/Images/OutliningIndicators/None.gif)
261
![](/Images/OutliningIndicators/None.gif)
262
![](/Images/OutliningIndicators/None.gif)
263
![](/Images/OutliningIndicators/None.gif)
264
![](/Images/OutliningIndicators/None.gif)
265
![](/Images/OutliningIndicators/None.gif)
266
![](/Images/OutliningIndicators/None.gif)
267
![](/Images/OutliningIndicators/None.gif)
268
![](/Images/OutliningIndicators/None.gif)
269
![](/Images/OutliningIndicators/None.gif)
270
![](/Images/OutliningIndicators/None.gif)
271
![](/Images/OutliningIndicators/None.gif)
272
![](/Images/OutliningIndicators/None.gif)
273
![](/Images/OutliningIndicators/None.gif)
274
![](/Images/OutliningIndicators/None.gif)
275
![](/Images/OutliningIndicators/None.gif)
276
![](/Images/OutliningIndicators/None.gif)
277
![](/Images/OutliningIndicators/None.gif)
278
![](/Images/OutliningIndicators/None.gif)
279
![](/Images/OutliningIndicators/None.gif)
280
![](/Images/OutliningIndicators/None.gif)
281
![](/Images/OutliningIndicators/None.gif)
282
![](/Images/OutliningIndicators/None.gif)
283
![](/Images/OutliningIndicators/None.gif)
284
![](/Images/OutliningIndicators/None.gif)
285
![](/Images/OutliningIndicators/None.gif)
286
![](/Images/OutliningIndicators/None.gif)
287
![](/Images/OutliningIndicators/None.gif)
288
![](/Images/OutliningIndicators/None.gif)
289
![](/Images/OutliningIndicators/None.gif)
290
![](/Images/OutliningIndicators/None.gif)
291
![](/Images/OutliningIndicators/None.gif)
292
![](/Images/OutliningIndicators/None.gif)
293
![](/Images/OutliningIndicators/None.gif)
294
![](/Images/OutliningIndicators/None.gif)
295
![](/Images/OutliningIndicators/None.gif)
296
![](/Images/OutliningIndicators/None.gif)
297
![](/Images/OutliningIndicators/None.gif)
298
![](/Images/OutliningIndicators/None.gif)
299
![](/Images/OutliningIndicators/None.gif)
300
![](/Images/OutliningIndicators/None.gif)
301
![](/Images/OutliningIndicators/None.gif)
302
![](/Images/OutliningIndicators/None.gif)
303
![](/Images/OutliningIndicators/None.gif)
304
![](/Images/OutliningIndicators/None.gif)
305
![](/Images/OutliningIndicators/None.gif)
306
![](/Images/OutliningIndicators/None.gif)
307
![](/Images/OutliningIndicators/None.gif)
308
![](/Images/OutliningIndicators/None.gif)
309
![](/Images/OutliningIndicators/None.gif)
310
![](/Images/OutliningIndicators/None.gif)
311
![](/Images/OutliningIndicators/None.gif)
312
![](/Images/OutliningIndicators/None.gif)
313
![](/Images/OutliningIndicators/None.gif)
314
![](/Images/OutliningIndicators/None.gif)
315
![](/Images/OutliningIndicators/None.gif)
316
![](/Images/OutliningIndicators/None.gif)
317
![](/Images/OutliningIndicators/None.gif)
318
![](/Images/OutliningIndicators/None.gif)
319
![](/Images/OutliningIndicators/None.gif)
320
![](/Images/OutliningIndicators/None.gif)
321
![](/Images/OutliningIndicators/None.gif)
322
![](/Images/OutliningIndicators/None.gif)
323
![](/Images/OutliningIndicators/None.gif)
324
![](/Images/OutliningIndicators/None.gif)
325
![](/Images/OutliningIndicators/None.gif)
326
![](/Images/OutliningIndicators/None.gif)
327
![](/Images/OutliningIndicators/None.gif)
328
![](/Images/OutliningIndicators/None.gif)
329
![](/Images/OutliningIndicators/None.gif)
330
![](/Images/OutliningIndicators/None.gif)
331
![](/Images/OutliningIndicators/None.gif)
332
![](/Images/OutliningIndicators/None.gif)
333
![](/Images/OutliningIndicators/None.gif)
334
![](/Images/OutliningIndicators/None.gif)
335
![](/Images/OutliningIndicators/None.gif)
336
![](/Images/OutliningIndicators/None.gif)
337
![](/Images/OutliningIndicators/None.gif)
338
![](/Images/OutliningIndicators/None.gif)
339
![](/Images/OutliningIndicators/None.gif)
340
![](/Images/OutliningIndicators/None.gif)
341
![](/Images/OutliningIndicators/None.gif)
342
![](/Images/OutliningIndicators/None.gif)
343
![](/Images/OutliningIndicators/None.gif)
344
![](/Images/OutliningIndicators/None.gif)
345
![](/Images/OutliningIndicators/None.gif)
346
![](/Images/OutliningIndicators/None.gif)
347
![](/Images/OutliningIndicators/None.gif)
348
![](/Images/OutliningIndicators/None.gif)
349
![](/Images/OutliningIndicators/None.gif)
350
![](/Images/OutliningIndicators/None.gif)
351
![](/Images/OutliningIndicators/None.gif)
352
![](/Images/OutliningIndicators/None.gif)
353
![](/Images/OutliningIndicators/None.gif)
354
![](/Images/OutliningIndicators/None.gif)
355
![](/Images/OutliningIndicators/None.gif)
356
![](/Images/OutliningIndicators/None.gif)
357
![](/Images/OutliningIndicators/None.gif)
358
![](/Images/OutliningIndicators/None.gif)
359
![](/Images/OutliningIndicators/None.gif)
360
![](/Images/OutliningIndicators/None.gif)
361
![](/Images/OutliningIndicators/None.gif)
362
![](/Images/OutliningIndicators/None.gif)
363
![](/Images/OutliningIndicators/None.gif)
364
![](/Images/OutliningIndicators/None.gif)
365
![](/Images/OutliningIndicators/None.gif)
366
![](/Images/OutliningIndicators/None.gif)
367
![](/Images/OutliningIndicators/None.gif)
368
![](/Images/OutliningIndicators/None.gif)
369
![](/Images/OutliningIndicators/None.gif)
370
![](/Images/OutliningIndicators/None.gif)
371
![](/Images/OutliningIndicators/None.gif)
372
![](/Images/OutliningIndicators/None.gif)
373
![](/Images/OutliningIndicators/None.gif)
374
![](/Images/OutliningIndicators/None.gif)
375
![](/Images/OutliningIndicators/None.gif)
376
![](/Images/OutliningIndicators/None.gif)
377
![](/Images/OutliningIndicators/None.gif)
378
![](/Images/OutliningIndicators/None.gif)
379
![](/Images/OutliningIndicators/None.gif)
380
![](/Images/OutliningIndicators/None.gif)
381
![](/Images/OutliningIndicators/None.gif)
382
![](/Images/OutliningIndicators/None.gif)
383
![](/Images/OutliningIndicators/None.gif)
384
![](/Images/OutliningIndicators/None.gif)
385
![](/Images/OutliningIndicators/None.gif)
386
![](/Images/OutliningIndicators/None.gif)
387
![](/Images/OutliningIndicators/None.gif)
388
![](/Images/OutliningIndicators/None.gif)
puzzleVB.aspx.vb:
1![](/Images/OutliningIndicators/None.gif)
2
Partial Class puzzleVB
3
Inherits System.Web.UI.Page
4![](/Images/OutliningIndicators/InBlock.gif)
5
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
6
If Me.Request.Form.Get("type") <> Nothing Then
7
Try
8
Dim array As String = Me.Request.Form.Get("array")
9
Dim numbers As String() = array.Split(","c)
10
Dim dealingArray(8, 8) As Integer
11
For row As Integer = 0 To 8
12
For column As Integer = 0 To 8
13
dealingArray(row, column) = Convert.ToInt32(numbers(row * 9 + column))
14
Next
15
Next
16
Dim deducer As Deducer = New Deducer(dealingArray)
17
If Me.Request.Form.Get("type") = "OneStep" Then
18
deducer.DeduceOnce()
19
ElseIf Me.Request.Form.Get("type") = "AllSteps" Then
20
deducer.DeduceAll()
21
End If
22
Dim sb As StringBuilder = New StringBuilder()
23
For row As Integer = 0 To 8
24
For column As Integer = 0 To 8
25
If sb.ToString() = "" Then
26
sb.Append(deducer.Array(row, column))
27
Else
28
sb.Append("," & deducer.Array(row, column))
29
End If
30
Next
31
Next
32
Me.Response.Write(sb)
33
Catch ex As Exception
34
Me.Response.Write("ri")
35
End Try
36
Me.Response.End()
37
End If
38
End Sub
39
End Class
40![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
40
![](/Images/OutliningIndicators/None.gif)
puzzleVB.aspx:
1
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="puzzleVB.aspx.vb" Inherits="puzzleVB" %>
2![](/Images/OutliningIndicators/None.gif)
3
<html>
4
<body>
5
<script>
6
var request=false;
7
try
8
{
9
request = new XMLHttpRequest();//Firefox
10
}
11
catch(trymicrosoft)
12
{
13
try
14
{
15
request = new ActiveXObject("Msxml2.XMLHTTP.5.0");//New IE
16
}
17
catch(othermicrosoft)
18
{
19
try
20
{
21
request = new ActiveXObject("Microsoft.XMLHTTP");//Old IE
22
}
23
catch(failed)
24
{
25
request = false;//Unknown browser
26
}
27
}
28
}
29
if(!request)
30
{
31
alert("Please use Internet Explorer");
32
}
33
function dealNullInput(input)
34
{
35
if(input=="")
36
{
37
return "0";
38
}
39
else
40
{
41
return input;
42
}
43
}
44
function dealZeroOutput(input)
45
{
46
if(input==0)
47
{
48
return "";
49
}
50
else
51
{
52
return input;
53
}
54
}
55
function sendOneStepRequest()
56
{
57
url=escape("puzzleVB.aspx")+"?random=" + Math.random();//use a random number to avoid cache
58
request.open("POST",url,true);//connection method
59
request.onreadystatechange=showProcess;//show Process method
60
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
61
var array="";
62
for(var i=0;i<81;i++)
63
{
64
if(array=="")
65
{
66
array=array+dealNullInput(document.getElementsByName("TextBox")[i].value);
67
}
68
else
69
{
70
array=array+","+dealNullInput(document.getElementsByName("TextBox")[i].value);
71
}
72
}
73
request.send("type=OneStep"+"&array="+escape(array));
74
}
75
function sendAllStepsRequest()
76
{
77
url=escape("puzzleCS.aspx")+"?random=" + Math.random();
78
request.open("POST",url,true);//connection method
79
request.onreadystatechange=showProcess;//show Process method
80
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
81
var array="";
82
for(var i=0;i<81;i++)
83
{
84
if(array=="")
85
{
86
array=array+dealNullInput(document.getElementsByName("TextBox")[i].value);
87
}
88
else
89
{
90
array=array+","+dealNullInput(document.getElementsByName("TextBox")[i].value.replace(/ /g, ""));
91
}
92
}
93
request.send("type=AllSteps"+"&array="+escape(array));
94
}
95
function showProcess()
96
{
97
if(request.readyState == 4)//finished
98
{
99
if(request.status == 200)//normal
100
{
101
var splitResult=request.responseText.split(",");
102
for(var i=0;i<81;i++)
103
{
104
document.getElementsByName("TextBox")[i].value=dealZeroOutput(splitResult[i]);
105
}
106
}
107
}
108
else if(request.readyState == 1)
109
{
110
//"finished step1";
111
}
112
else if(request.readyState == 2)
113
{
114
//"finished step2";
115
}
116
else if(request.readyState == 3)
117
{
118
//"finished step3";
119
}
120
}
121
</script>
122
<table>
123
<tr>
124
<td>
125
<input name="TextBox" type="text" style="width: 25px"/>
126
</td>
127
<td>
128
<input name="TextBox" type="text" style="width: 25px"/>
129
</td>
130
<td>
131
<input name="TextBox" type="text" style="width: 25px"/>
132
</td>
133
<td>
134
<input name="TextBox" type="text" style="width: 25px"/>
135
</td>
136
<td>
137
<input name="TextBox" type="text" style="width: 25px"/>
138
</td>
139
<td>
140
<input name="TextBox" type="text" style="width: 25px"/>
141
</td>
142
<td>
143
<input name="TextBox" type="text" style="width: 25px"/>
144
</td>
145
<td>
146
<input name="TextBox" type="text" style="width: 25px"/>
147
</td>
148
<td>
149
<input name="TextBox" type="text" style="width: 25px"/>
150
</td>
151
</tr>
152
<tr>
153
<td>
154
<input name="TextBox" type="text" style="width: 25px"/>
155
</td>
156
<td>
157
<input name="TextBox" type="text" style="width: 25px"/>
158
</td>
159
<td>
160
<input name="TextBox" type="text" style="width: 25px"/>
161
</td>
162
<td>
163
<input name="TextBox" type="text" style="width: 25px"/>
164
</td>
165
<td>
166
<input name="TextBox" type="text" style="width: 25px"/>
167
</td>
168
<td>
169
<input name="TextBox" type="text" style="width: 25px"/>
170
</td>
171
<td>
172
<input name="TextBox" type="text" style="width: 25px"/>
173
</td>
174
<td>
175
<input name="TextBox" type="text" style="width: 25px"/>
176
</td>
177
<td>
178
<input name="TextBox" type="text" style="width: 25px"/>
179
</td>
180
</tr>
181
<tr>
182
<td>
183
<input name="TextBox" type="text" style="width: 25px"/>
184
</td>
185
<td>
186
<input name="TextBox" type="text" style="width: 25px"/>
187
</td>
188
<td>
189
<input name="TextBox" type="text" style="width: 25px"/>
190
</td>
191
<td>
192
<input name="TextBox" type="text" style="width: 25px"/>
193
</td>
194
<td>
195
<input name="TextBox" type="text" style="width: 25px"/>
196
</td>
197
<td>
198
<input name="TextBox" type="text" style="width: 25px"/>
199
</td>
200
<td>
201
<input name="TextBox" type="text" style="width: 25px"/>
202
</td>
203
<td>
204
<input name="TextBox" type="text" style="width: 25px"/>
205
</td>
206
<td>
207
<input name="TextBox" type="text" style="width: 25px"/>
208
</td>
209
</tr>
210
<tr>
211
<td>
212
<input name="TextBox" type="text" style="width: 25px"/>
213
</td>
214
<td>
215
<input name="TextBox" type="text" style="width: 25px"/>
216
</td>
217
<td>
218
<input name="TextBox" type="text" style="width: 25px"/>
219
</td>
220
<td>
221
<input name="TextBox" type="text" style="width: 25px"/>
222
</td>
223
<td>
224
<input name="TextBox" type="text" style="width: 25px"/>
225
</td>
226
<td>
227
<input name="TextBox" type="text" style="width: 25px"/>
228
</td>
229
<td>
230
<input name="TextBox" type="text" style="width: 25px"/>
231
</td>
232
<td>
233
<input name="TextBox" type="text" style="width: 25px"/>
234
</td>
235
<td>
236
<input name="TextBox" type="text" style="width: 25px"/>
237
</td>
238
</tr>
239
<tr>
240
<td>
241
<input name="TextBox" type="text" style="width: 25px"/>
242
</td>
243
<td>
244
<input name="TextBox" type="text" style="width: 25px"/>
245
</td>
246
<td>
247
<input name="TextBox" type="text" style="width: 25px"/>
248
</td>
249
<td>
250
<input name="TextBox" type="text" style="width: 25px"/>
251
</td>
252
<td>
253
<input name="TextBox" type="text" style="width: 25px"/>
254
</td>
255
<td>
256
<input name="TextBox" type="text" style="width: 25px"/>
257
</td>
258
<td>
259
<input name="TextBox" type="text" style="width: 25px"/>
260
</td>
261
<td>
262
<input name="TextBox" type="text" style="width: 25px"/>
263
</td>
264
<td>
265
<input name="TextBox" type="text" style="width: 25px"/>
266
</td>
267
</tr>
268
<tr>
269
<td>
270
<input name="TextBox" type="text" style="width: 25px"/>
271
</td>
272
<td>
273
<input name="TextBox" type="text" style="width: 25px"/>
274
</td>
275
<td>
276
<input name="TextBox" type="text" style="width: 25px"/>
277
</td>
278
<td>
279
<input name="TextBox" type="text" style="width: 25px"/>
280
</td>
281
<td>
282
<input name="TextBox" type="text" style="width: 25px"/>
283
</td>
284
<td>
285
<input name="TextBox" type="text" style="width: 25px"/>
286
</td>
287
<td>
288
<input name="TextBox" type="text" style="width: 25px"/>
289
</td>
290
<td>
291
<input name="TextBox" type="text" style="width: 25px"/>
292
</td>
293
<td>
294
<input name="TextBox" type="text" style="width: 25px"/>
295
</td>
296
</tr>
297
<tr>
298
<td>
299
<input name="TextBox" type="text" style="width: 25px"/>
300
</td>
301
<td>
302
<input name="TextBox" type="text" style="width: 25px"/>
303
</td>
304
<td>
305
<input name="TextBox" type="text" style="width: 25px"/>
306
</td>
307
<td>
308
<input name="TextBox" type="text" style="width: 25px"/>
309
</td>
310
<td>
311
<input name="TextBox" type="text" style="width: 25px"/>
312
</td>
313
<td>
314
<input name="TextBox" type="text" style="width: 25px"/>
315
</td>
316
<td>
317
<input name="TextBox" type="text" style="width: 25px"/>
318
</td>
319
<td>
320
<input name="TextBox" type="text" style="width: 25px"/>
321
</td>
322
<td>
323
<input name="TextBox" type="text" style="width: 25px"/>
324
</td>
325
</tr>
326
<tr>
327
<td>
328
<input name="TextBox" type="text" style="width: 25px"/>
329
</td>
330
<td>
331
<input name="TextBox" type="text" style="width: 25px"/>
332
</td>
333
<td>
334
<input name="TextBox" type="text" style="width: 25px"/>
335
</td>
336
<td>
337
<input name="TextBox" type="text" style="width: 25px"/>
338
</td>
339
<td>
340
<input name="TextBox" type="text" style="width: 25px"/>
341
</td>
342
<td>
343
<input name="TextBox" type="text" style="width: 25px"/>
344
</td>
345
<td>
346
<input name="TextBox" type="text" style="width: 25px"/>
347
</td>
348
<td>
349
<input name="TextBox" type="text" style="width: 25px"/>
350
</td>
351
<td>
352
<input name="TextBox" type="text" style="width: 25px"/>
353
</td>
354
</tr>
355
<tr>
356
<td>
357
<input name="TextBox" type="text" style="width: 25px"/>
358
</td>
359
<td>
360
<input name="TextBox" type="text" style="width: 25px"/>
361
</td>
362
<td>
363
<input name="TextBox" type="text" style="width: 25px"/>
364
</td>
365
<td>
366
<input name="TextBox" type="text" style="width: 25px"/>
367
</td>
368
<td>
369
<input name="TextBox" type="text" style="width: 25px"/>
370
</td>
371
<td>
372
<input name="TextBox" type="text" style="width: 25px"/>
373
</td>
374
<td>
375
<input name="TextBox" type="text" style="width: 25px"/>
376
</td>
377
<td>
378
<input name="TextBox" type="text" style="width: 25px"/>
379
</td>
380
<td>
381
<input name="TextBox" type="text" style="width: 25px"/>
382
</td>
383
</tr>
384
</table>
385
<input type="button" name="OneStep" value="OneStep" id="OneStep" onclick="sendOneStepRequest()" />
386
<input type="button" name="AllSteps" value="AllSteps" id="AllSteps" onclick="sendAllStepsRequest()" />
387
</body>
388
</html>
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
107
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
120
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
121
![](/Images/OutliningIndicators/None.gif)
122
![](/Images/OutliningIndicators/None.gif)
123
![](/Images/OutliningIndicators/None.gif)
124
![](/Images/OutliningIndicators/None.gif)
125
![](/Images/OutliningIndicators/None.gif)
126
![](/Images/OutliningIndicators/None.gif)
127
![](/Images/OutliningIndicators/None.gif)
128
![](/Images/OutliningIndicators/None.gif)
129
![](/Images/OutliningIndicators/None.gif)
130
![](/Images/OutliningIndicators/None.gif)
131
![](/Images/OutliningIndicators/None.gif)
132
![](/Images/OutliningIndicators/None.gif)
133
![](/Images/OutliningIndicators/None.gif)
134
![](/Images/OutliningIndicators/None.gif)
135
![](/Images/OutliningIndicators/None.gif)
136
![](/Images/OutliningIndicators/None.gif)
137
![](/Images/OutliningIndicators/None.gif)
138
![](/Images/OutliningIndicators/None.gif)
139
![](/Images/OutliningIndicators/None.gif)
140
![](/Images/OutliningIndicators/None.gif)
141
![](/Images/OutliningIndicators/None.gif)
142
![](/Images/OutliningIndicators/None.gif)
143
![](/Images/OutliningIndicators/None.gif)
144
![](/Images/OutliningIndicators/None.gif)
145
![](/Images/OutliningIndicators/None.gif)
146
![](/Images/OutliningIndicators/None.gif)
147
![](/Images/OutliningIndicators/None.gif)
148
![](/Images/OutliningIndicators/None.gif)
149
![](/Images/OutliningIndicators/None.gif)
150
![](/Images/OutliningIndicators/None.gif)
151
![](/Images/OutliningIndicators/None.gif)
152
![](/Images/OutliningIndicators/None.gif)
153
![](/Images/OutliningIndicators/None.gif)
154
![](/Images/OutliningIndicators/None.gif)
155
![](/Images/OutliningIndicators/None.gif)
156
![](/Images/OutliningIndicators/None.gif)
157
![](/Images/OutliningIndicators/None.gif)
158
![](/Images/OutliningIndicators/None.gif)
159
![](/Images/OutliningIndicators/None.gif)
160
![](/Images/OutliningIndicators/None.gif)
161
![](/Images/OutliningIndicators/None.gif)
162
![](/Images/OutliningIndicators/None.gif)
163
![](/Images/OutliningIndicators/None.gif)
164
![](/Images/OutliningIndicators/None.gif)
165
![](/Images/OutliningIndicators/None.gif)
166
![](/Images/OutliningIndicators/None.gif)
167
![](/Images/OutliningIndicators/None.gif)
168
![](/Images/OutliningIndicators/None.gif)
169
![](/Images/OutliningIndicators/None.gif)
170
![](/Images/OutliningIndicators/None.gif)
171
![](/Images/OutliningIndicators/None.gif)
172
![](/Images/OutliningIndicators/None.gif)
173
![](/Images/OutliningIndicators/None.gif)
174
![](/Images/OutliningIndicators/None.gif)
175
![](/Images/OutliningIndicators/None.gif)
176
![](/Images/OutliningIndicators/None.gif)
177
![](/Images/OutliningIndicators/None.gif)
178
![](/Images/OutliningIndicators/None.gif)
179
![](/Images/OutliningIndicators/None.gif)
180
![](/Images/OutliningIndicators/None.gif)
181
![](/Images/OutliningIndicators/None.gif)
182
![](/Images/OutliningIndicators/None.gif)
183
![](/Images/OutliningIndicators/None.gif)
184
![](/Images/OutliningIndicators/None.gif)
185
![](/Images/OutliningIndicators/None.gif)
186
![](/Images/OutliningIndicators/None.gif)
187
![](/Images/OutliningIndicators/None.gif)
188
![](/Images/OutliningIndicators/None.gif)
189
![](/Images/OutliningIndicators/None.gif)
190
![](/Images/OutliningIndicators/None.gif)
191
![](/Images/OutliningIndicators/None.gif)
192
![](/Images/OutliningIndicators/None.gif)
193
![](/Images/OutliningIndicators/None.gif)
194
![](/Images/OutliningIndicators/None.gif)
195
![](/Images/OutliningIndicators/None.gif)
196
![](/Images/OutliningIndicators/None.gif)
197
![](/Images/OutliningIndicators/None.gif)
198
![](/Images/OutliningIndicators/None.gif)
199
![](/Images/OutliningIndicators/None.gif)
200
![](/Images/OutliningIndicators/None.gif)
201
![](/Images/OutliningIndicators/None.gif)
202
![](/Images/OutliningIndicators/None.gif)
203
![](/Images/OutliningIndicators/None.gif)
204
![](/Images/OutliningIndicators/None.gif)
205
![](/Images/OutliningIndicators/None.gif)
206
![](/Images/OutliningIndicators/None.gif)
207
![](/Images/OutliningIndicators/None.gif)
208
![](/Images/OutliningIndicators/None.gif)
209
![](/Images/OutliningIndicators/None.gif)
210
![](/Images/OutliningIndicators/None.gif)
211
![](/Images/OutliningIndicators/None.gif)
212
![](/Images/OutliningIndicators/None.gif)
213
![](/Images/OutliningIndicators/None.gif)
214
![](/Images/OutliningIndicators/None.gif)
215
![](/Images/OutliningIndicators/None.gif)
216
![](/Images/OutliningIndicators/None.gif)
217
![](/Images/OutliningIndicators/None.gif)
218
![](/Images/OutliningIndicators/None.gif)
219
![](/Images/OutliningIndicators/None.gif)
220
![](/Images/OutliningIndicators/None.gif)
221
![](/Images/OutliningIndicators/None.gif)
222
![](/Images/OutliningIndicators/None.gif)
223
![](/Images/OutliningIndicators/None.gif)
224
![](/Images/OutliningIndicators/None.gif)
225
![](/Images/OutliningIndicators/None.gif)
226
![](/Images/OutliningIndicators/None.gif)
227
![](/Images/OutliningIndicators/None.gif)
228
![](/Images/OutliningIndicators/None.gif)
229
![](/Images/OutliningIndicators/None.gif)
230
![](/Images/OutliningIndicators/None.gif)
231
![](/Images/OutliningIndicators/None.gif)
232
![](/Images/OutliningIndicators/None.gif)
233
![](/Images/OutliningIndicators/None.gif)
234
![](/Images/OutliningIndicators/None.gif)
235
![](/Images/OutliningIndicators/None.gif)
236
![](/Images/OutliningIndicators/None.gif)
237
![](/Images/OutliningIndicators/None.gif)
238
![](/Images/OutliningIndicators/None.gif)
239
![](/Images/OutliningIndicators/None.gif)
240
![](/Images/OutliningIndicators/None.gif)
241
![](/Images/OutliningIndicators/None.gif)
242
![](/Images/OutliningIndicators/None.gif)
243
![](/Images/OutliningIndicators/None.gif)
244
![](/Images/OutliningIndicators/None.gif)
245
![](/Images/OutliningIndicators/None.gif)
246
![](/Images/OutliningIndicators/None.gif)
247
![](/Images/OutliningIndicators/None.gif)
248
![](/Images/OutliningIndicators/None.gif)
249
![](/Images/OutliningIndicators/None.gif)
250
![](/Images/OutliningIndicators/None.gif)
251
![](/Images/OutliningIndicators/None.gif)
252
![](/Images/OutliningIndicators/None.gif)
253
![](/Images/OutliningIndicators/None.gif)
254
![](/Images/OutliningIndicators/None.gif)
255
![](/Images/OutliningIndicators/None.gif)
256
![](/Images/OutliningIndicators/None.gif)
257
![](/Images/OutliningIndicators/None.gif)
258
![](/Images/OutliningIndicators/None.gif)
259
![](/Images/OutliningIndicators/None.gif)
260
![](/Images/OutliningIndicators/None.gif)
261
![](/Images/OutliningIndicators/None.gif)
262
![](/Images/OutliningIndicators/None.gif)
263
![](/Images/OutliningIndicators/None.gif)
264
![](/Images/OutliningIndicators/None.gif)
265
![](/Images/OutliningIndicators/None.gif)
266
![](/Images/OutliningIndicators/None.gif)
267
![](/Images/OutliningIndicators/None.gif)
268
![](/Images/OutliningIndicators/None.gif)
269
![](/Images/OutliningIndicators/None.gif)
270
![](/Images/OutliningIndicators/None.gif)
271
![](/Images/OutliningIndicators/None.gif)
272
![](/Images/OutliningIndicators/None.gif)
273
![](/Images/OutliningIndicators/None.gif)
274
![](/Images/OutliningIndicators/None.gif)
275
![](/Images/OutliningIndicators/None.gif)
276
![](/Images/OutliningIndicators/None.gif)
277
![](/Images/OutliningIndicators/None.gif)
278
![](/Images/OutliningIndicators/None.gif)
279
![](/Images/OutliningIndicators/None.gif)
280
![](/Images/OutliningIndicators/None.gif)
281
![](/Images/OutliningIndicators/None.gif)
282
![](/Images/OutliningIndicators/None.gif)
283
![](/Images/OutliningIndicators/None.gif)
284
![](/Images/OutliningIndicators/None.gif)
285
![](/Images/OutliningIndicators/None.gif)
286
![](/Images/OutliningIndicators/None.gif)
287
![](/Images/OutliningIndicators/None.gif)
288
![](/Images/OutliningIndicators/None.gif)
289
![](/Images/OutliningIndicators/None.gif)
290
![](/Images/OutliningIndicators/None.gif)
291
![](/Images/OutliningIndicators/None.gif)
292
![](/Images/OutliningIndicators/None.gif)
293
![](/Images/OutliningIndicators/None.gif)
294
![](/Images/OutliningIndicators/None.gif)
295
![](/Images/OutliningIndicators/None.gif)
296
![](/Images/OutliningIndicators/None.gif)
297
![](/Images/OutliningIndicators/None.gif)
298
![](/Images/OutliningIndicators/None.gif)
299
![](/Images/OutliningIndicators/None.gif)
300
![](/Images/OutliningIndicators/None.gif)
301
![](/Images/OutliningIndicators/None.gif)
302
![](/Images/OutliningIndicators/None.gif)
303
![](/Images/OutliningIndicators/None.gif)
304
![](/Images/OutliningIndicators/None.gif)
305
![](/Images/OutliningIndicators/None.gif)
306
![](/Images/OutliningIndicators/None.gif)
307
![](/Images/OutliningIndicators/None.gif)
308
![](/Images/OutliningIndicators/None.gif)
309
![](/Images/OutliningIndicators/None.gif)
310
![](/Images/OutliningIndicators/None.gif)
311
![](/Images/OutliningIndicators/None.gif)
312
![](/Images/OutliningIndicators/None.gif)
313
![](/Images/OutliningIndicators/None.gif)
314
![](/Images/OutliningIndicators/None.gif)
315
![](/Images/OutliningIndicators/None.gif)
316
![](/Images/OutliningIndicators/None.gif)
317
![](/Images/OutliningIndicators/None.gif)
318
![](/Images/OutliningIndicators/None.gif)
319
![](/Images/OutliningIndicators/None.gif)
320
![](/Images/OutliningIndicators/None.gif)
321
![](/Images/OutliningIndicators/None.gif)
322
![](/Images/OutliningIndicators/None.gif)
323
![](/Images/OutliningIndicators/None.gif)
324
![](/Images/OutliningIndicators/None.gif)
325
![](/Images/OutliningIndicators/None.gif)
326
![](/Images/OutliningIndicators/None.gif)
327
![](/Images/OutliningIndicators/None.gif)
328
![](/Images/OutliningIndicators/None.gif)
329
![](/Images/OutliningIndicators/None.gif)
330
![](/Images/OutliningIndicators/None.gif)
331
![](/Images/OutliningIndicators/None.gif)
332
![](/Images/OutliningIndicators/None.gif)
333
![](/Images/OutliningIndicators/None.gif)
334
![](/Images/OutliningIndicators/None.gif)
335
![](/Images/OutliningIndicators/None.gif)
336
![](/Images/OutliningIndicators/None.gif)
337
![](/Images/OutliningIndicators/None.gif)
338
![](/Images/OutliningIndicators/None.gif)
339
![](/Images/OutliningIndicators/None.gif)
340
![](/Images/OutliningIndicators/None.gif)
341
![](/Images/OutliningIndicators/None.gif)
342
![](/Images/OutliningIndicators/None.gif)
343
![](/Images/OutliningIndicators/None.gif)
344
![](/Images/OutliningIndicators/None.gif)
345
![](/Images/OutliningIndicators/None.gif)
346
![](/Images/OutliningIndicators/None.gif)
347
![](/Images/OutliningIndicators/None.gif)
348
![](/Images/OutliningIndicators/None.gif)
349
![](/Images/OutliningIndicators/None.gif)
350
![](/Images/OutliningIndicators/None.gif)
351
![](/Images/OutliningIndicators/None.gif)
352
![](/Images/OutliningIndicators/None.gif)
353
![](/Images/OutliningIndicators/None.gif)
354
![](/Images/OutliningIndicators/None.gif)
355
![](/Images/OutliningIndicators/None.gif)
356
![](/Images/OutliningIndicators/None.gif)
357
![](/Images/OutliningIndicators/None.gif)
358
![](/Images/OutliningIndicators/None.gif)
359
![](/Images/OutliningIndicators/None.gif)
360
![](/Images/OutliningIndicators/None.gif)
361
![](/Images/OutliningIndicators/None.gif)
362
![](/Images/OutliningIndicators/None.gif)
363
![](/Images/OutliningIndicators/None.gif)
364
![](/Images/OutliningIndicators/None.gif)
365
![](/Images/OutliningIndicators/None.gif)
366
![](/Images/OutliningIndicators/None.gif)
367
![](/Images/OutliningIndicators/None.gif)
368
![](/Images/OutliningIndicators/None.gif)
369
![](/Images/OutliningIndicators/None.gif)
370
![](/Images/OutliningIndicators/None.gif)
371
![](/Images/OutliningIndicators/None.gif)
372
![](/Images/OutliningIndicators/None.gif)
373
![](/Images/OutliningIndicators/None.gif)
374
![](/Images/OutliningIndicators/None.gif)
375
![](/Images/OutliningIndicators/None.gif)
376
![](/Images/OutliningIndicators/None.gif)
377
![](/Images/OutliningIndicators/None.gif)
378
![](/Images/OutliningIndicators/None.gif)
379
![](/Images/OutliningIndicators/None.gif)
380
![](/Images/OutliningIndicators/None.gif)
381
![](/Images/OutliningIndicators/None.gif)
382
![](/Images/OutliningIndicators/None.gif)
383
![](/Images/OutliningIndicators/None.gif)
384
![](/Images/OutliningIndicators/None.gif)
385
![](/Images/OutliningIndicators/None.gif)
386
![](/Images/OutliningIndicators/None.gif)
387
![](/Images/OutliningIndicators/None.gif)
388
![](/Images/OutliningIndicators/None.gif)