kivioglobal.cpp
1/* This file is part of the KDE project
2 Copyright (C) 2003-2004 Peter Simonsson <psn@linux.se>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20#include "kivioglobal.h"
21
22#include <tqdom.h>
23#include <tqpixmap.h>
24#include <tqprinter.h>
25
26#include <kdebug.h>
27#include <tdeglobal.h>
28#include <tdelocale.h>
29
30#include <KoGenStyles.h>
31#include <KoZoomHandler.h>
32#include <KoGlobal.h>
33
34#include "kivio_common.h"
35#include "kivio_settings.h"
36#include "kivio_stencil.h"
37#include "kivio_intra_stencil_data.h"
38#include "kivio_screen_painter.h"
39
40struct PaperSizeDef {
41 const char* title;
42 float width;
43 float height;
44 int unit;
45};
46
47void Kivio::savePageLayout(TQDomElement& e, const KoPageLayout& layout)
48{
49 XmlWriteFloat(e, "width", layout.ptWidth);
50 XmlWriteFloat(e, "height", layout.ptHeight);
51 XmlWriteFloat(e, "marginLeft", layout.ptLeft);
52 XmlWriteFloat(e, "marginRight", layout.ptRight);
53 XmlWriteFloat(e, "marginTop", layout.ptTop);
54 XmlWriteFloat(e, "marginBottom", layout.ptBottom);
55 XmlWriteString(e, "format", KoPageFormat::formatString(layout.format));
56 XmlWriteString(e, "orientation", Kivio::orientationString(layout.orientation));
57}
58
59// ## TODO: remove this method, now that layout.saveOasis() does it all
60KoGenStyle Kivio::savePageLayout(const KoPageLayout& layout)
61{
62 return layout.saveOasis();
63}
64
65KoPageLayout Kivio::loadPageLayout(const TQDomElement& e)
66{
67 KoPageLayout layout;
68
69 if(e.hasAttribute("unit")) {
70 // Compatibility with Kivio <= 1.2.x
71 kdDebug(43000) << "Compatibility mode..." << endl;
72 KoUnit::Unit unit = Kivio::convToKoUnit(XmlReadInt(e, "unit", 0));
73 layout.ptWidth = KoUnit::fromUserValue(XmlReadFloat(e, "width", 0.0), unit);
74 layout.ptHeight = KoUnit::fromUserValue(XmlReadFloat(e, "height", 0.0), unit);
75 layout.ptLeft = KoUnit::fromUserValue(XmlReadFloat(e, "marginLeft", 0.0), unit);
76 layout.ptRight = KoUnit::fromUserValue(XmlReadFloat(e, "marginRight", 0.0), unit);
77 layout.ptTop = KoUnit::fromUserValue(XmlReadFloat(e, "marginTop", 0.0), unit);
78 layout.ptBottom = KoUnit::fromUserValue(XmlReadFloat(e, "marginBottom", 0.0), unit);
79 Kivio::setFormatOrientation(layout);
80 kdDebug(43000) << "Ready." << endl;
81 } else {
82 layout.ptWidth = XmlReadFloat(e, "width", 0.0);
83 layout.ptHeight = XmlReadFloat(e, "height", 0.0);
84 layout.ptLeft = XmlReadFloat(e, "marginLeft", 0.0);
85 layout.ptRight = XmlReadFloat(e, "marginRight", 0.0);
86 layout.ptTop = XmlReadFloat(e, "marginTop", 0.0);
87 layout.ptBottom = XmlReadFloat(e, "marginBottom", 0.0);
88 layout.format = KoPageFormat::formatFromString(XmlReadString(e, "format", pageSizeString(TDEGlobal::locale()->pageSize())));
89 layout.orientation = Kivio::orientationFromString(XmlReadString(e, "orientation", "Portrait"));
90 }
91
92 return layout;
93}
94
95KoUnit::Unit Kivio::convToKoUnit(int tkUnit)
96{
97 switch(tkUnit) {
98 case 0:
99 return KoUnit::U_PT;
100 case 1:
101 return KoUnit::U_MM;
102 case 2:
103 return KoUnit::U_INCH;
104 case 3:
105 return KoUnit::U_PI;
106 case 4:
107 return KoUnit::U_CM;
108 case 5:
109 return KoUnit::U_DD;
110 case 6:
111 return KoUnit::U_CC;
112 }
113
114 return KoUnit::U_PT;
115}
116
117TQString Kivio::orientationString(KoOrientation o)
118{
119 if(o == PG_LANDSCAPE) {
120 return "Landscape";
121 }
122
123 return "Portrait";
124}
125
126KoOrientation Kivio::orientationFromString(const TQString& s)
127{
128 if(s == "Landscape") {
129 return PG_LANDSCAPE;
130 }
131
132 return PG_PORTRAIT;
133}
134
135void Kivio::setFormatOrientation(KoPageLayout& layout)
136{
137 const PaperSizeDef PapersTable[] = {
138 {"A0",841,1189,KoUnit::U_MM},
139 {"A1",594,841,KoUnit::U_MM},
140 {"A2",420,594,KoUnit::U_MM},
141 {"A3",297,420,KoUnit::U_MM},
142 {"A4",210,297,KoUnit::U_MM},
143 {"A5",148,210,KoUnit::U_MM},
144
145 {"B4",250,353,KoUnit::U_MM},
146 {"B6",125,176,KoUnit::U_MM},
147
148 {"C4",229,324,KoUnit::U_MM},
149 {"C5",162,229,KoUnit::U_MM},
150 {"C5",114,162,KoUnit::U_MM},
151
152 {"DL",110,220,KoUnit::U_MM},
153
154 {"Letter",8.5,11,KoUnit::U_INCH},
155 {"Legal",8.5,14,KoUnit::U_INCH},
156
157 {"A",8.5,11,KoUnit::U_INCH},
158 {"B",11,17,KoUnit::U_INCH},
159 {"C",17,22,KoUnit::U_INCH},
160 {"D",22,34,KoUnit::U_INCH},
161 {"E",34,44,KoUnit::U_INCH},
162
163 {"null",0,0,-2} // -2 for end of list
164 };
165 int j = 0;
166 PaperSizeDef sizeDef = PapersTable[0];
167 bool found = false;
168 float width, height;
169 layout.format = PG_CUSTOM;
170 layout.orientation = PG_PORTRAIT;
171
172 while((sizeDef.unit != -2) && !found) {
173 width = KoUnit::fromUserValue(sizeDef.width, static_cast<KoUnit::Unit>(sizeDef.unit));
174 height = KoUnit::fromUserValue(sizeDef.height, static_cast<KoUnit::Unit>(sizeDef.unit));
175
176 if((layout.ptWidth == width) && (layout.ptHeight == height)) {
177 layout.format = KoPageFormat::formatFromString(sizeDef.title);
178 layout.orientation = PG_PORTRAIT;
179 found = true;
180 } else if((layout.ptWidth == height) && (layout.ptHeight == width)) {
181 layout.format = KoPageFormat::formatFromString(sizeDef.title);
182 layout.orientation = PG_LANDSCAPE;
183 found = true;
184 }
185
186 sizeDef = PapersTable[++j];
187 }
188}
189
190KoSize Kivio::loadSize(const TQDomElement& e, const TQString& name, const KoSize& def)
191{
192 KoSize size;
193 if(e.hasAttribute(name + "Unit")) {
194 // Compatibility with Kivio <= 1.2.x
195 KoUnit::Unit unit = Kivio::convToKoUnit(XmlReadInt(e, name + "Unit", 0));
196 size.setWidth(KoUnit::fromUserValue(XmlReadFloat(e, name + "Width", def.width()), unit));
197 size.setHeight(KoUnit::fromUserValue(XmlReadFloat(e, name + "Height", def.height()), unit));
198 } else {
199 size.setWidth(XmlReadFloat(e, name + "Width", def.width()));
200 size.setHeight(XmlReadFloat(e, name + "Height", def.height()));
201 }
202
203 return size;
204}
205
206void Kivio::saveSize(TQDomElement& e, const TQString& name, const KoSize& size)
207{
208 XmlWriteFloat(e, name + "Width", size.width());
209 XmlWriteFloat(e, name + "Height", size.height());
210}
211
212TQString Kivio::pageSizeString(int pageSize)
213{
214 TQString psStr = "A4";
215
216 switch(pageSize) {
217 case TQPrinter::A0:
218 psStr = "A0";
219 break;
220 case TQPrinter::A1:
221 psStr = "A1";
222 break;
223 case TQPrinter::A2:
224 psStr = "A2";
225 break;
226 case TQPrinter::A3:
227 psStr = "A3";
228 break;
229 case TQPrinter::A5:
230 psStr = "A5";
231 break;
232 case TQPrinter::A6:
233 psStr = "A6";
234 break;
235 case TQPrinter::A7:
236 psStr = "A7";
237 break;
238 case TQPrinter::A8:
239 psStr = "A8";
240 break;
241 case TQPrinter::A9:
242 psStr = "A9";
243 break;
244 case TQPrinter::B0:
245 psStr = "B0";
246 break;
247 case TQPrinter::B1:
248 psStr = "B1";
249 break;
250 case TQPrinter::B10:
251 psStr = "B10";
252 break;
253 case TQPrinter::B2:
254 psStr = "B2";
255 break;
256 case TQPrinter::B3:
257 psStr = "B3";
258 break;
259 case TQPrinter::B4:
260 psStr = "B4";
261 break;
262 case TQPrinter::B5:
263 psStr = "B5";
264 break;
265 case TQPrinter::B6:
266 psStr = "B6";
267 break;
268 case TQPrinter::B7:
269 psStr = "B7";
270 break;
271 case TQPrinter::B8:
272 psStr = "B8";
273 break;
274 case TQPrinter::B9:
275 psStr = "B9";
276 break;
277 case TQPrinter::C5E:
278 psStr = "C5";
279 break;
280 case TQPrinter::Comm10E:
281 psStr = "Comm10";
282 break;
283 case TQPrinter::DLE:
284 psStr = "DL";
285 break;
286 case TQPrinter::Executive:
287 psStr = "Executive";
288 break;
289 case TQPrinter::Folio:
290 psStr = "Folio";
291 break;
292 case TQPrinter::Ledger:
293 psStr = "Ledger";
294 break;
295 case TQPrinter::Legal:
296 psStr = "Legal";
297 break;
298 case TQPrinter::Letter:
299 psStr = "Letter";
300 break;
301 case TQPrinter::Tabloid:
302 psStr = "Tabloid";
303 break;
304 case TQPrinter::Custom:
305 psStr = "Custom";
306 break;
307 case TQPrinter::A4:
308 default:
309 psStr = "A4";
310 break;
311 };
312
313 return psStr;
314}
315
316TQPixmap Kivio::arrowHeadPixmap()
317{
318 const char* lineends[] = {
319 "50 272 2 1",
320 " c #000000",
321 "X c #ffffff",
322 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
323 "X X",
324 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
325 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
326 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X",
327 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
328 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
329 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
330 "X X XXXXX X",
331 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
332 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
333 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
334 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X",
335 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
336 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
337 "X X",
338 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
339 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
340 "X X",
341 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
342 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
343 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X",
344 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
345 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
346 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
347 "X X XXXXX X",
348 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
349 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
350 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
351 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X",
352 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
353 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
354 "X X",
355 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
356 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
357 "X X",
358 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
359 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
360 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X",
361 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXXX X",
362 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXXXX X",
363 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXX X",
364 "X X XXXXXXXXXX XXXXX X",
365 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXX X",
366 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXXXX X",
367 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXXX X",
368 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X",
369 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
370 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
371 "X X",
372 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
373 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
374 "X X",
375 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
376 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
377 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXXXXXXX X",
378 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXXXX X",
379 "X XXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXX X",
380 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
381 "X X XXXXX X",
382 "X XXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXX X",
383 "X XXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXXXX X",
384 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXXXXX X",
385 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
386 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
387 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
388 "X X",
389 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
390 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
391 "X X",
392 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
393 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
394 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXXXXXXX X",
395 "X XXXXXXXXXXXXXXXXXXXXXXXX X XXXX X XXXXXXXXXX X",
396 "X XXXXXXXXXXXXXXXXXXXXXXXX XXX XX XXX XXXXXXXX X",
397 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXX XXXXXX X",
398 "X X XXXXXX XXXXXX XXXXX X",
399 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXX X XXXX XXXXXXX X",
400 "X XXXXXXXXXXXXXXXXXXXXXXXX XX XXX XX XXXXXXXXX X",
401 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXXXXX X",
402 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
403 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
404 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
405 "X X",
406 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
407 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
408 "X X",
409 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
410 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
411 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
412 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X",
413 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
414 "X X XXXXXX X",
415 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
416 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
417 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
418 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
419 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
420 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
421 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
422 "X X",
423 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
424 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
425 "X X",
426 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
427 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
428 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
429 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
430 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
431 "X X XXXXXX X",
432 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
433 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X",
434 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
435 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
436 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
437 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
438 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
439 "X X",
440 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
441 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
442 "X X",
443 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
444 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
445 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
446 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
447 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
448 "X X XXXXXX X",
449 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
450 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
451 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
452 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
453 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
454 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
455 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
456 "X X",
457 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
458 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
459 "X X",
460 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
461 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
462 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
463 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
464 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
465 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
466 "X X XXXXX X",
467 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
468 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
469 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX X",
470 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
471 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
472 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
473 "X X",
474 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
475 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
476 "X X",
477 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
478 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
479 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
480 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX X",
481 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
482 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
483 "X X XXXXX X",
484 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
485 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
486 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
487 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
488 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
489 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
490 "X X",
491 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
492 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
493 "X X",
494 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
495 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
496 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
497 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
498 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
499 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
500 "X X XXXXX X",
501 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
502 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
503 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
504 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
505 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
506 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
507 "X X",
508 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
509 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
510 "X X",
511 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
512 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
513 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
514 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
515 "X XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
516 "X XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
517 "X X XXXXX X",
518 "X XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
519 "X XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
520 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
521 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
522 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
523 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
524 "X X",
525 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
526 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
527 "X X",
528 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
529 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
530 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
531 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXXXXX X",
532 "X XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXX X",
533 "X XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX XXXXXX X",
534 "X X XXXXXXXXXXXXXX XXXXX X",
535 "X XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXX X",
536 "X XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXXXX X",
537 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXXXX X",
538 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
539 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
540 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
541 "X X",
542 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
543 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
544 "X X",
545 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
546 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
547 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
548 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
549 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
550 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
551 "X X XXXXX X",
552 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
553 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
554 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
555 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
556 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
557 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
558 "X X",
559 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
560 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
561 "X X",
562 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
563 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
564 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
565 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
566 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
567 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
568 "X X XXXXX X",
569 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
570 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
571 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
572 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
573 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
574 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
575 "X X",
576 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
577 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
578 "X X",
579 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
580 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
581 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
582 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXX X",
583 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXX X",
584 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXXXX X",
585 "X X XXXXX X",
586 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXXXX X",
587 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXX X",
588 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXX X",
589 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
590 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
591 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
592 "X X",
593 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"//,
594 /*"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
595 "X X",
596 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
597 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
598 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
599 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
600 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
601 "X X XXXXXX X",
602 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
603 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
604 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
605 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
606 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
607 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
608 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
609 "X X",
610 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
611 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
612 "X X",
613 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
614 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
615 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
616 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
617 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
618 "X X XXXXXX X",
619 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
620 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
621 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
622 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
623 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
624 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
625 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
626 "X X",
627 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
628 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
629 "X X",
630 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
631 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
632 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
633 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
634 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
635 "X X XXXXXX X",
636 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
637 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
638 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
639 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX X",
640 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
641 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
642 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
643 "X X",
644 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
645 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
646 "X X",
647 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
648 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
649 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
650 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
651 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
652 "X X XXXXXX X",
653 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
654 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
655 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
656 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX X",
657 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
658 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
659 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
660 "X X",
661 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
662 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
663 "X X",
664 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
665 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
666 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
667 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
668 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
669 "X X XXXXXX X",
670 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
671 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
672 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
673 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
674 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
675 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
676 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
677 "X X",
678 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
679 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
680 "X X",
681 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
682 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
683 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
684 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
685 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
686 "X X XXXXXX X",
687 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
688 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
689 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
690 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
691 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
692 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
693 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
694 "X X",
695 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
696 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
697 "X X",
698 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
699 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
700 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
701 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
702 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
703 "X X XXXXXX X",
704 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
705 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
706 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
707 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
708 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
709 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
710 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
711 "X X",
712 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
713 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
714 "X X",
715 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
716 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
717 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
718 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
719 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
720 "X X XXXXXX X",
721 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
722 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
723 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
724 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
725 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
726 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
727 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
728 "X X",
729 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
730 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
731 "X X",
732 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
733 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
734 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
735 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
736 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X",
737 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
738 "X X XXX X",
739 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
740 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X",
741 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
742 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
743 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
744 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
745 "X X",
746 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
747 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
748 "X X",
749 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
750 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
751 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
752 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
753 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
754 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
755 "X X XXX X",
756 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
757 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
758 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
759 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
760 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
761 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
762 "X X",
763 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",*/
764 /*"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
765 "X X",
766 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
767 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
768 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
769 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
770 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXX X",
771 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXX X",
772 "X X XXX XXXXX X",
773 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXX X",
774 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXX X",
775 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX X",
776 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
777 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
778 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
779 "X X",
780 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
781 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
782 "X X",
783 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
784 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
785 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
786 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXX X",
787 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXXX X",
788 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXX X",
789 "X X XXXXXX XXXXX X",
790 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXX X",
791 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXX X",
792 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
793 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
794 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
795 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
796 "X X",
797 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
798 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
799 "X X",
800 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
801 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
802 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
803 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
804 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXX X",
805 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXX X",
806 "X X XXXXX XXXXX X",
807 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXX X",
808 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXX X",
809 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
810 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
811 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
812 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
813 "X X",
814 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
815 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
816 "X X",
817 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
818 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
819 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
820 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
821 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXXX X",
822 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXX X",
823 "X X XXXXXXX XXXXX X",
824 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXX X",
825 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXXX X",
826 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX X",
827 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
828 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
829 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
830 "X X",
831 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
832 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
833 "X X",
834 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
835 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
836 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
837 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
838 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX X",
839 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXX X",
840 "X X XXXX XXXXX X",
841 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXX X",
842 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXX X",
843 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX X",
844 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX X",
845 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
846 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
847 "X X",
848 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
849 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
850 "X X",
851 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
852 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
853 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
854 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
855 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXX X",
856 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXX X",
857 "X X XXXX XXX X",
858 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXX X",
859 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXX X",
860 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
861 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
862 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
863 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
864 "X X",
865 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
866 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
867 "X X",
868 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
869 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
870 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
871 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
872 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXX X",
873 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXX X",
874 "X X XXXXX XXX X",
875 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXX X",
876 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXX X",
877 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX X",
878 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
879 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
880 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
881 "X X",
882 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
883 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
884 "X X",
885 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
886 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
887 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
888 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
889 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
890 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
891 "X X XXXXX X",
892 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
893 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
894 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXXXXXXX X",
895 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
896 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
897 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
898 "X X",
899 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
900 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
901 "X X",
902 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
903 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
904 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
905 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
906 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
907 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
908 "X X XXXXX X",
909 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
910 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
911 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXX X",
912 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
913 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
914 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
915 "X X",
916 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
917 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
918 "X X",
919 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
920 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
921 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
922 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXX X",
923 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXX XXXXXXXX X",
924 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXXX X",
925 "X X XXXXX XXXXX X",
926 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXXX X",
927 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXX XXXXXXXX X",
928 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXX X",
929 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
930 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
931 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
932 "X X",
933 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
934 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
935 "X X",
936 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
937 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
938 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
939 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXX X",
940 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXX XXXXXXXX X",
941 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XX XXXXXXXX X",
942 "X X XXXXX XXXXX X",
943 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XX XXXXXXXX X",
944 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXX XXXXXXXX X",
945 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXX X",
946 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
947 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
948 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
949 "X X",
950 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
951 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
952 "X X",
953 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
954 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
955 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
956 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXX X",
957 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXX XXXXXX X",
958 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXX XXXXX X",
959 "X X XXXXX XXXXX X",
960 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXX XXXXX X",
961 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXX XXXXXX X",
962 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXX X",
963 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
964 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
965 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
966 "X X",
967 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
968 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
969 "X X",
970 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
971 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
972 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
973 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX XXXXXXX X",
974 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX XXX XXXXXX X",
975 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX XXXXX XXXXX X",
976 "X X XXXXX XXXXX X",
977 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX XXXXX XXXXX X",
978 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX XXX XXXXXX X",
979 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX XXXXXXX X",
980 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
981 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
982 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
983 "X X",
984 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
985 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
986 "X X",
987 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
988 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
989 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
990 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX XXXXXXX X",
991 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX XXX XXXXXX X",
992 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX XXXXX XXXXX X",
993 "X X XXXXX XXXXX X",
994 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX XXXXX XXXXX X",
995 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX XXX XXXXXX X",
996 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX XXXXXXX X",
997 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
998 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
999 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1000 "X X",
1001 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1002 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1003 "X X",
1004 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1005 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1006 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX X",
1007 "X XXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXX XXXXXXX X",
1008 "X XXXXXXXXXXXXXXXXXXXX XXXXXXX XXXX XXX XXXXXX X",
1009 "X XXXXXXXXXXXXXXXXXX XXXXXXXXXXX X XXXXX XXXXX X",
1010 "X X XXXXXXXXXXXXXXX XXXXX XXXXX X",
1011 "X XXXXXXXXXXXXXXXXXX XXXXXXXXXXX X XXXXX XXXXX X",
1012 "X XXXXXXXXXXXXXXXXXXXX XXXXXXX XXXX XXX XXXXXX X",
1013 "X XXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXX XXXXXXX X",
1014 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX X",
1015 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1016 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1017 "X X",
1018 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1019 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1020 "X X",
1021 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1022 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1023 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1024 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXX X",
1025 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXX X",
1026 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXX X",
1027 "X X XXXXX X",
1028 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXX X",
1029 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXX X",
1030 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXX X",
1031 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1032 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1033 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1034 "X X",
1035 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1036 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1037 "X X",
1038 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1039 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1040 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1041 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX XXXXXXX X",
1042 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX XXXXXX X",
1043 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX XXXXX X",
1044 "X X XXXXX X",
1045 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX XXXXX X",
1046 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX XXXXXX X",
1047 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX XXXXXXX X",
1048 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1049 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1050 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1051 "X X",
1052 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1053 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1054 "X X",
1055 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1056 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1057 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1058 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX XXXXXXX X",
1059 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX XXXXXX X",
1060 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX XXXXX X",
1061 "X X XXXXX X",
1062 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX XXXXX X",
1063 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX XXXXXX X",
1064 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX XXXXXXX X",
1065 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1066 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1067 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1068 "X X",
1069 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1070 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1071 "X X",
1072 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1073 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1074 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX X",
1075 "X XXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXX XXXXXXX X",
1076 "X XXXXXXXXXXXXXXXXXXXX XXXXXXX XXXX XXXXXX X",
1077 "X XXXXXXXXXXXXXXXXXX XXXXXXXXXXX X XXXXX X",
1078 "X X XXXXXXXXXXXXXXX XXXXX X",
1079 "X XXXXXXXXXXXXXXXXXX XXXXXXXXXXX X XXXXX X",
1080 "X XXXXXXXXXXXXXXXXXXXX XXXXXXX XXXX XXXXXX X",
1081 "X XXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXX XXXXXXX X",
1082 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX X",
1083 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1084 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1085 "X X",
1086 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1087 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1088 "X X",
1089 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1090 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1091 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXXXXXXX X",
1092 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXXXX X",
1093 "X XXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXX X",
1094 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
1095 "X X XXXXX X",
1096 "X XXXXXXXXXXXXXXXXXXXXXXXX X XXXXXXX X",
1097 "X XXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXXXX X",
1098 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXXXXX X",
1099 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
1100 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1101 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1102 "X X",
1103 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1104 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1105 "X X",
1106 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1107 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1108 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1109 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX XXXXXXX X",
1110 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX XXXXXX X",
1111 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX XXXXX X",
1112 "X X XXXXX X",
1113 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXX XXXXX X",
1114 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXX XXXXXX X",
1115 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXX X XXXXX XXXXXXX X",
1116 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1117 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1118 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1119 "X X",
1120 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1121 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1122 "X X",
1123 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1124 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1125 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1126 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX XXXXXXX X",
1127 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX XXXXXX X",
1128 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX XXXXX X",
1129 "X X XXXXX X",
1130 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXX XXXXX X",
1131 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXX XXXXXX X",
1132 "X XXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXX XXXXXXX X",
1133 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1134 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1135 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1136 "X X",
1137 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1138 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1139 "X X",
1140 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1141 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1142 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX X",
1143 "X XXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXX XXXXXXX X",
1144 "X XXXXXXXXXXXXXXXXXXXX XXXXXXX XXXX XXXXXX X",
1145 "X XXXXXXXXXXXXXXXXXX XXXXXXXXXXX X XXXXX X",
1146 "X X XXXXXXXXXXXXXXX XXXXX X",
1147 "X XXXXXXXXXXXXXXXXXX XXXXXXXXXXX X XXXXX X",
1148 "X XXXXXXXXXXXXXXXXXXXX XXXXXXX XXXX XXXXXX X",
1149 "X XXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXX XXXXXXX X",
1150 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX X",
1151 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1152 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1153 "X X",
1154 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1155 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1156 "X X",
1157 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1158 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1159 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1160 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
1161 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXX X",
1162 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXX X",
1163 "X X XXXXX XXXXX X",
1164 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXX X",
1165 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXX X",
1166 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
1167 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1168 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1169 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1170 "X X",
1171 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1172 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1173 "X X",
1174 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1175 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1176 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1177 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
1178 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
1179 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
1180 "X X XXXXX X",
1181 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX X",
1182 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX X",
1183 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX X",
1184 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1185 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1186 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1187 "X X",
1188 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1189 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1190 "X X",
1191 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1192 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1193 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
1194 "X XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXXXXXX X",
1195 "X XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXXXX X",
1196 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXX X",
1197 "X X XXXXX X",
1198 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXX X",
1199 "X XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXXXX X",
1200 "X XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXXXXXX X",
1201 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
1202 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1203 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1204 "X X",
1205 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1206 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1207 "X X",
1208 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1209 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1210 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
1211 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXXXX X",
1212 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXXX X",
1213 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXX X",
1214 "X X XXXXX X",
1215 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXXX X",
1216 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXXX X",
1217 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXXXX X",
1218 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX X",
1219 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1220 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1221 "X X",
1222 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1223 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
1224 "X X",
1225 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1226 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1227 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
1228 "X XXXXXXXXXXXXXXXXXXXXXX XX XXXXXX XXXXXXXXXXX X",
1229 "X XXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXX XXXXXXXXX X",
1230 "X XXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXX XXXXXXX X",
1231 "X X XXXXX X",
1232 "X XXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXX XXXXXXX X",
1233 "X XXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXX XXXXXXXXX X",
1234 "X XXXXXXXXXXXXXXXXXXXXXX XX XXXXXX XXXXXXXXXXX X",
1235 "X XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXX X",
1236 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1237 "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X",
1238 "X X",
1239 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"*/
1240 };
1241
1242 return TQPixmap(lineends);
1243}
1244
1245TQPixmap Kivio::connectorTargetPixmap()
1246{
1247 const char * connectorTarget_xpm[] = {
1248 "7 7 3 1",
1249 " c None",
1250 ". c #FFFFFF",
1251 "+ c #051EFF",
1252 " . . ",
1253 ".+. .+.",
1254 " .+.+. ",
1255 " .+. ",
1256 " .+.+. ",
1257 ".+. .+.",
1258 " . . "};
1259
1260 return TQPixmap(connectorTarget_xpm);
1261}
1262
1263TQPixmap Kivio::lockPixmap()
1264{
1265 const char * lock_xpm[] = {
1266 "10 10 3 1",
1267 " c None",
1268 ". c #FFFFFF",
1269 "+ c #000000",
1270 " .. ",
1271 " .++. ",
1272 " .+..+. ",
1273 " .+..+. ",
1274 " .++++++. ",
1275 " .+....+. ",
1276 " .+. .+. ",
1277 " .+....+. ",
1278 " .++++++. ",
1279 " ...... "};
1280
1281 return TQPixmap(lock_xpm);
1282}
1283
1284TQString Kivio::systemDefaultUnit()
1285{
1286 TQString defMS = "cm";
1287
1288 if(TDEGlobal::locale()->measureSystem() == TDELocale::Imperial) {
1289 defMS = "in";
1290 }
1291
1292 return defMS;
1293}
1294
1295TQPixmap Kivio::generatePixmapFromStencil(int width, int height, KivioStencil* stencil)
1296{
1297 KoZoomHandler zoomHandler;
1298 TQRect rect = zoomHandler.zoomRect(stencil->rect());
1299
1300 double zw = (double)(width - 2) / (double)rect.width();
1301 double zh = (double)(height - 2) / (double)rect.height();
1302 zoomHandler.setZoomAndResolution(tqRound(kMin(zw, zh) * 100.0), KoGlobal::dpiX(), KoGlobal::dpiY());
1303 rect = zoomHandler.zoomRect(stencil->rect());
1304
1305 TQPixmap pix(width, height);
1306 pix.fill(TQt::white);
1307 KivioScreenPainter kpainter;
1308 kpainter.start(&pix);
1309 kpainter.translateBy(-rect.x() + ((width - rect.width()) / 2), -rect.y() + ((height - rect.height()) / 2));
1310 KivioIntraStencilData data;
1311 data.painter = &kpainter;
1312 data.zoomHandler = &zoomHandler;
1313 stencil->paint(&data);
1314 kpainter.stop();
1315
1316 return pix;
1317}