1 /* coded by Ketmar // Invisible Vector <ketmar@ketmar.no-ip.org>
2 * Understanding is not required. Only obedience.
3 * Based on Jet-Set Willy, v1.0.1 by <Florent.Guillaume@ens.fr>
4 * Linux port and preliminary sound by jmd@dcs.ed.ac.uk
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 import arsd
.simpledisplay
;
25 // ////////////////////////////////////////////////////////////////////////// //
26 // 0:b; 1:g; 2:r; 3: nothing
27 __gshared
int vbufW
= 256, vbufH
= 192; // 128
28 __gshared
uint[] vbuf
;
29 __gshared
bool blit2x
= true;
30 enum BlitType
{ Normal
, BlackWhite
, Green
, Red
}
31 __gshared
int blitType
= BlitType
.Normal
;
32 __gshared
int blitShine
= 0; // adds this to non-black colors
33 __gshared Image vbimg
;
34 __gshared SimpleWindow vbwin
;
37 // ////////////////////////////////////////////////////////////////////////// //
38 void x11gfxDeinit () {
40 if (vbimg
!is null) delete vbimg
;
41 if (vbwin
!is null) { if (!vbwin
.closed
) vbwin
.close(); delete vbwin
; }
42 if (vbuf
!is null) delete vbuf
;
50 SimpleWindow
x11gfxInit (string title
) {
51 if (vbufW
< 1 || vbufH
< 1 || vbufW
> 4096 || vbufH
> 4096) assert(0, "invalid dimensions");
53 vbwin
= new SimpleWindow(vbufW
*(blit2x ?
2 : 1), vbufH
*(blit2x ?
2 : 1), title
, OpenGlOptions
.no
, Resizablity
.fixedSize
);
54 vbimg
= new Image(vbufW
*(blit2x ?
2 : 1), vbufH
*(blit2x ?
2 : 1));
60 if (vbwin
is null || vbwin
.closed
) return;
61 auto painter
= vbwin
.draw();
62 painter
.drawImage(Point(0, 0), vbimg
);
66 // ////////////////////////////////////////////////////////////////////////// //
67 final class X11Image
{
72 assert(w
> 0 && w
<= 4096);
73 assert(h
> 0 && h
<= 4096);
80 VColor
getPixel (int x
, int y
) const {
81 return (x
>= 0 && y
>= 0 && x
< width
&& y
< height ? data
[y
*width
+x
] : Transparent
);
84 void setPixel (int x
, int y
, VColor c
) {
85 if (x
>= 0 && y
>= 0 && x
< width
&& y
< height
) data
[y
*width
+x
] = c
;
88 void blitFast (int x
, int y
) const {
89 if (width
< 1 || height
< 1) return;
90 if (x
<= -width || y
<= -height
) return;
91 if (x
>= vbufW || y
>= vbufH
) return;
92 auto src
= cast(const(VColor
)*)data
.ptr
;
93 if (x
>= 0 && y
>= 0 && x
+width
< vbufW
&& y
+height
< vbufH
) {
94 auto d
= cast(uint*)vbuf
.ptr
;
96 foreach (int dy
; 0..height
) {
97 d
[0..width
] = src
[0..width
];
102 foreach (int dy
; 0..height
) {
103 foreach (int dx
; 0..width
) {
104 .setPixel(x
+dx
, y
+dy
, *src
++);
110 void blit (int x
, int y
) const {
111 if (width
< 1 || height
< 1) return;
112 if (x
<= -width || y
<= -height
) return;
113 if (x
>= vbufW || y
>= vbufH
) return;
114 auto src
= cast(const(VColor
)*)data
.ptr
;
115 foreach (int dy
; 0..height
) {
116 foreach (int dx
; 0..width
) {
117 putPixel(x
+dx
, y
+dy
, *src
++);
124 private void initVBuf () {
125 vbuf
.length
= vbufW
*vbufH
;
131 void blit2xImpl(string op
, bool scanlines
=true) (Image img
) {
133 if (blitShine
&& c0
) {
135 immutable ubyte xc0 = clampToByte(cast(int)(c0&0xff ? cast(int)(c0&0xff)+blitShine : 0));
136 immutable ubyte xc1 = clampToByte(cast(int)((c0>>8)&0xff ? cast(int)((c0>>8)&0xff)+blitShine : 0));
137 immutable ubyte xc2 = clampToByte(cast(int)((c0>>16)&0xff ? cast(int)((c0>>16)&0xff)+blitShine : 0));
139 immutable ubyte xc0
= clampToByte(cast(int)(cast(int)(c0
&0xff)+blitShine
));
140 immutable ubyte xc1
= clampToByte(cast(int)(cast(int)((c0
>>8)&0xff)+blitShine
));
141 immutable ubyte xc2
= clampToByte(cast(int)(cast(int)((c0
>>16)&0xff)+blitShine
));
142 c0
= xc0|
(xc1
<<8)|
(xc2
<<16);
145 static if (UsingSimpledisplayX11
) {
146 auto s
= cast(const(ubyte)*)vbuf
.ptr
;
147 immutable iw
= img
.width
;
148 auto dd = cast(uint*)img
.getDataPointer
;
149 foreach (immutable int dy
; 0..vbufH
) {
150 if (dy
*2+1 >= img
.height
) return;
151 auto d
= dd+iw
*(dy
*2);
152 foreach (immutable int dx
; 0..vbufW
) {
154 static if (op
.length
) mixin(op
);
156 static if (scanlines
) {
157 immutable uint c1
= ((((c0
&0x00ff00ff)*6)>>3)&0x00ff00ff)|
(((c0
&0x0000ff00)*6)>>3)&0x0000ff00;
162 d
[iw
+0] = d
[iw
+1] = c1
;
170 immutable bpp
= img
.bytesPerPixel();
171 immutable rofs
= img
.redByteOffset
;
172 immutable gofs
= img
.greenByteOffset
;
173 immutable bofs
= img
.blueByteOffset
;
174 immutable nlo
= img
.adjustmentForNextLine
;
175 auto s
= cast(const(ubyte)*)vbuf
.ptr
;
176 immutable iw
= img
.width
;
177 auto dd = cast(ubyte*)img
.getDataPointer
;
178 foreach (immutable int dy
; 0..vbufH
) {
179 if (dy
*2+1 >= img
.height
) return;
180 auto d
= dd+img
.offsetForPixel(0, dy
*2);
181 foreach (immutable int dx
; 0..vbufW
) {
183 static if (op
.length
) mixin(op
);
185 static if (scanlines
) {
186 immutable uint c1
= ((((c0
&0x00ff00ff)*6)>>3)&0x00ff00ff)|
(((c0
&0x0000ff00)*6)>>3)&0x0000ff00;
190 d
[bofs
] = d
[bofs
+bpp
] = c0
&0xff;
191 d
[gofs
] = d
[gofs
+bpp
] = (c0
>>8)&0xff;
192 d
[rofs
] = d
[rofs
+bpp
] = (c0
>>16)&0xff;
193 d
[bofs
+nlo
] = d
[bofs
+nlo
+bpp
] = c0
&0xff;
194 d
[gofs
+nlo
] = d
[gofs
+nlo
+bpp
] = (c0
>>8)&0xff;
195 d
[rofs
+nlo
] = d
[rofs
+nlo
+bpp
] = (c0
>>16)&0xff;
204 alias blit2xTV
= blit2xImpl
!"uint c0 = (cast(immutable(uint)*)s)[0];";
205 alias blit2xTVBW
= blit2xImpl
!"immutable ubyte i = cast(ubyte)((s[0]*28+s[1]*151+s[2]*77)/256); uint c0 = (i<<16)|(i<<8)|i;";
206 alias blit2xTVGreen
= blit2xImpl
!"immutable ubyte i = cast(ubyte)((s[0]*28+s[1]*151+s[2]*77)/256); uint c0 = i<<8;";
207 alias blit2xTVRed
= blit2xImpl
!"immutable ubyte i = cast(ubyte)((s[0]*28+s[1]*151+s[2]*77)/256); uint c0 = i<<16;";
211 void realizeVBuf (/*Image img*/) {
212 if (vbimg
is null) return;
216 auto dp = cast(uint*)img.getDataPointer;
217 import core.stdc.string : memcpy;
218 memcpy(dp, sp, vbufW*vbufH*4);
221 if (img
.width
< vbufW
*2 || img
.height
< vbufH
*2) return;
223 case BlitType
.BlackWhite
: blit2xTVBW(img
); break;
224 case BlitType
.Green
: blit2xTVGreen(img
); break;
225 case BlitType
.Red
: blit2xTVRed(img
); break;
226 default: blit2xTV(img
); break;
229 if (img
.width
< vbufW || img
.height
< vbufH
) return;
230 static if (UsingSimpledisplayX11
) {
231 auto dp
= cast(uint*)img
.getDataPointer
;
232 dp
[0..vbufW
*vbufH
] = vbuf
.ptr
[0..vbufW
*vbufH
];
235 auto sp
= cast(ubyte*)vbuf
.ptr
;
236 auto dp
= cast(ubyte*)img
.getDataPointer
;
237 immutable bpp
= img
.bytesPerPixel();
238 immutable rofs
= img
.redByteOffset
;
239 immutable gofs
= img
.greenByteOffset
;
240 immutable bofs
= img
.blueByteOffset
;
241 foreach (immutable y
; 0..vbufH
) {
242 auto d
= dp
+img
.offsetForTopLeftPixel
;
243 foreach (immutable x
; 0..vbufW
) {
256 // ////////////////////////////////////////////////////////////////////////// //
257 ubyte clampToByte(T
) (T n
) @safe pure nothrow @nogc
258 if (__traits(isIntegral
, T
) && (T
.sizeof
== 2 || T
.sizeof
== 4))
260 static if (__VERSION__
> 2067) pragma(inline
, true);
261 n
&= -cast(int)(n
>= 0);
262 return cast(ubyte)(n|
((255-cast(int)n
)>>31));
265 ubyte clampToByte(T
) (T n
) @safe pure nothrow @nogc
266 if (__traits(isIntegral
, T
) && T
.sizeof
== 1)
268 static if (__VERSION__
> 2067) pragma(inline
, true);
273 // ////////////////////////////////////////////////////////////////////////// //
276 /// vlRGBA struct to ease color components extraction/replacing
277 align(1) struct vlRGBA
{
281 static assert(vlRGBA
.sizeof
== VColor
.sizeof
);
285 vlAMask
= 0xff000000u
,
286 vlRMask
= 0x00ff0000u
,
287 vlGMask
= 0x0000ff00u
,
288 vlBMask
= 0x000000ffu
299 enum VColor Transparent
= vlAMask
; /// completely transparent pixel color
302 bool isTransparent(T
: VColor
) (T col
) @safe pure nothrow @nogc {
303 static if (__VERSION__
> 2067) pragma(inline
, true);
304 return ((col
&vlAMask
) == vlAMask
);
307 bool isOpaque(T
: VColor
) (T col
) @safe pure nothrow @nogc {
308 static if (__VERSION__
> 2067) pragma(inline
, true);
309 return ((col
&vlAMask
) == 0);
313 VColor
rgbcol(TR
, TG
, TB
, TA
=ubyte) (TR r
, TG g
, TB b
, TA a
=0) @safe pure nothrow @nogc
314 if (__traits(isIntegral
, TR
) && __traits(isIntegral
, TG
) && __traits(isIntegral
, TB
) && __traits(isIntegral
, TA
)) {
315 static if (__VERSION__
> 2067) pragma(inline
, true);
317 (clampToByte(a
)<<vlAShift
)|
318 (clampToByte(r
)<<vlRShift
)|
319 (clampToByte(g
)<<vlGShift
)|
320 (clampToByte(b
)<<vlBShift
);
323 alias rgbacol
= rgbcol
;
326 // generate some templates
327 private enum genRGBGetSet(string cname
) =
328 "ubyte rgb"~cname
~"() (VColor clr) @safe pure nothrow @nogc {\n"~
329 " static if (__VERSION__ > 2067) pragma(inline, true);\n"~
330 " return ((clr>>vl"~cname
[0]~"Shift)&0xff);\n"~
332 "VColor rgbSet"~cname
~"(T) (VColor clr, T v) @safe pure nothrow @nogc if (__traits(isIntegral, T)) {\n"~
333 " static if (__VERSION__ > 2067) pragma(inline, true);\n"~
334 " return (clr&~vl"~cname
[0]~"Mask)|(clampToByte(v)<<vl"~cname
[0]~"Shift);\n"~
337 mixin(genRGBGetSet
!"Alpha");
338 mixin(genRGBGetSet
!"Red");
339 mixin(genRGBGetSet
!"Green");
340 mixin(genRGBGetSet
!"Blue");
343 void putPixel(TX
, TY
) (TX x
, TY y
, VColor col
) @trusted
344 if (__traits(isIntegral
, TX
) && __traits(isIntegral
, TY
))
346 static if (__VERSION__
> 2067) pragma(inline
, true);
347 immutable long xx
= cast(long)x
;
348 immutable long yy
= cast(long)y
;
349 if ((col
&vlAMask
) != vlAMask
&& xx
>= 0 && yy
>= 0 && xx
< vbufW
&& yy
< vbufH
) {
350 uint* da = vbuf
.ptr
+yy
*vbufW
+xx
;
352 immutable uint a
= 256-(col
>>24); // to not loose bits
353 immutable uint dc
= (*da)&0xffffff;
354 immutable uint srb
= (col
&0xff00ff);
355 immutable uint sg
= (col
&0x00ff00);
356 immutable uint drb
= (dc
&0xff00ff);
357 immutable uint dg
= (dc
&0x00ff00);
358 immutable uint orb
= (drb
+(((srb
-drb
)*a
+0x800080)>>8))&0xff00ff;
359 immutable uint og
= (dg
+(((sg
-dg
)*a
+0x008000)>>8))&0x00ff00;
367 void setPixel(TX
, TY
) (TX x
, TY y
, VColor col
) @trusted
368 if (__traits(isIntegral
, TX
) && __traits(isIntegral
, TY
))
370 static if (__VERSION__
> 2067) pragma(inline
, true);
371 immutable long xx
= cast(long)x
;
372 immutable long yy
= cast(long)y
;
373 if (xx
>= 0 && yy
>= 0 && xx
< vbufW
&& yy
< vbufH
) {
374 uint* da = vbuf
.ptr
+yy
*vbufW
+xx
;
380 void drawLine(bool lastPoint
=true) (int x0
, int y0
, int x1
, int y1
, immutable VColor col
) {
381 enum swap(string a
, string b
) = "{int tmp_="~a
~";"~a
~"="~b
~";"~b
~"=tmp_;}";
383 if ((col
&vlAMask
) == vlAMask
) return;
385 if (x0
== x1
&& y0
== y1
) {
386 static if (lastPoint
) putPixel(x0
, y0
, col
);
391 int wx0
= 0, wy0
= 0, wx1
= vbufW
-1, wy1
= vbufH
-1;
393 int stx
, sty
; // "steps" for x and y axes
394 int dsx
, dsy
; // "lengthes" for x and y axes
395 int dx2
, dy2
; // "double lengthes" for x and y axes
396 int xd
, yd
; // current coord
397 int e
; // "error" (as in bresenham algo)
403 // from left to right
404 if (x0
> wx1 || x1
< wx0
) return; // out of screen
405 stx
= 1; // going right
407 // from right to left
408 if (x1
> wx1 || x0
< wx0
) return; // out of screen
409 stx
= -1; // going left
414 mixin(swap
!("wx0", "wx1"));
418 // from top to bottom
419 if (y0
> wy1 || y1
< wy0
) return; // out of screen
420 sty
= 1; // going down
422 // from bottom to top
423 if (y1
> wy1 || y0
< wy0
) return; // out of screen
424 sty
= -1; // going up
429 mixin(swap
!("wy0", "wy1"));
436 mixin(swap
!("x0", "y0"));
437 mixin(swap
!("x1", "y1"));
438 mixin(swap
!("dsx", "dsy"));
439 mixin(swap
!("wx0", "wy0"));
440 mixin(swap
!("wx1", "wy1"));
441 mixin(swap
!("stx", "sty"));
455 int temp
= dx2
*(wy0
-y0
)-dsx
;
458 if (xd
> wx1
) return; // x is moved out of clipping rect, nothing to do
462 if (rem
> 0) { ++xd
; e
+= dy2
; }
466 if (!xfixed
&& x0
< wx0
) {
468 int temp
= dy2
*(wx0
-x0
);
471 if (yd
> wy1 || yd
== wy1
&& rem
>= dsx
) return;
474 if (rem
>= dsx
) { ++yd
; e
-= dx2
; }
478 int temp
= dx2
*(wy1
-y0
)+dsx
;
481 if (rem
== 0) --term
;
483 if (term
> wx1
) term
= wx1
; // clip at right
484 static if (lastPoint
) {
488 if (term
== xd
) return; // this is the only point, get out of here
490 if (sty
== -1) yd
= -yd
;
491 if (stx
== -1) { xd
= -xd
; term
= -term
; }
493 // draw it; `putPixel()` can omit checks
495 // inlined `putPixel(*d0, *d1, col)`
496 // this can be made even faster by precalculating `da` and making
497 // separate code branches for mixing and non-mixing drawing, but...
499 uint* da = vbuf
.ptr
+(*d1
)*vbufW
+(*d0
);
501 immutable uint a
= 256-(col
>>24); // to not loose bits
502 immutable uint dc
= (*da)&0xffffff;
503 immutable uint srb
= (col
&0xff00ff);
504 immutable uint sg
= (col
&0x00ff00);
505 immutable uint drb
= (dc
&0xff00ff);
506 immutable uint dg
= (dc
&0x00ff00);
507 immutable uint orb
= (drb
+(((srb
-drb
)*a
+0x800080)>>8))&0xff00ff;
508 immutable uint og
= (dg
+(((sg
-dg
)*a
+0x008000)>>8))&0x00ff00;
513 // done drawing, move coords
525 // //////////////////////////////////////////////////////////////////////// //
526 int charWidth(string type
="msx") () {
527 static if (type
== "msx") return 6;
528 else static if (type
== "dos") return 8;
529 else static if (type
== "d10") return 10;
530 else static assert(0, "invalid font type");
533 int charHeight(string type
="msx") () {
534 static if (type
== "msx") return 8;
535 else static if (type
== "dos") return 8;
536 else static if (type
== "d10") return 10;
537 else static assert(0, "invalid font type");
541 * Draw character onto virtual screen in KOI8 encoding.
549 * col = foreground color
550 * bkcol = background color
555 void drawCharWdt(string type
="msx") (int x
, int y
, int wdt
, int shift
, char ch
, VColor col
, VColor bkcol
=Transparent
) @trusted {
556 static if (type
== "msx") { alias fontb8
= vlFont6
; enum fwdt
= 8; enum fhgt
= 8; enum fmask
= 0x80; }
557 else static if (type
== "dos") { alias fontb8
= dosFont8
; enum fwdt
= 8; enum fhgt
= 8; enum fmask
= 0x80; }
558 else static if (type
== "d10") { alias fontb8
= dosFont10
; enum fwdt
= 10; enum fhgt
= 10; enum fmask
= 0x8000; }
559 else static assert(0, "invalid font type");
560 size_t pos
= ch
*fhgt
;
561 if (wdt
< 1 || shift
>= fwdt
) return;
562 if (col
== Transparent
&& bkcol
== Transparent
) return;
563 if (wdt
> fwdt
) wdt
= fwdt
;
564 if (shift
< 0) shift
= 0;
565 foreach (immutable int dy
; 0..fhgt
) {
566 ushort b
= cast(ushort)(fontb8
[pos
++]<<shift
);
567 foreach (immutable int dx
; 0..wdt
) {
568 VColor c
= (b
&fmask ? col
: bkcol
);
569 if (!isTransparent(c
)) putPixel(x
+dx
, y
+dy
, c
);
581 OutLU
= 0x10, // left-up
582 OutRU
= 0x20, // right-up
583 OutLD
= 0x40, // left-down
584 OutRD
= 0x80, // right-down
589 * Draw outlined character onto virtual screen in KOI8 encoding.
597 * col = foreground color
598 * outcol = outline color
599 * ot = outline type, OutXXX, ored
604 void drawCharWdtOut(string type
="msx") (int x
, int y
, int wdt
, int shift
, char ch
, VColor col
, VColor outcol
=Transparent
, ubyte ot
=0) @trusted {
605 static if (type
== "msx") { alias fontb8
= vlFont6
; enum fwdt
= 8; enum fhgt
= 8; enum fmask
= 0x80; }
606 else static if (type
== "dos") { alias fontb8
= dosFont8
; enum fwdt
= 8; enum fhgt
= 8; enum fmask
= 0x80; }
607 else static if (type
== "d10") { alias fontb8
= dosFont10
; enum fwdt
= 10; enum fhgt
= 10; enum fmask
= 0x8000; }
608 else static assert(0, "invalid font type");
609 if (col
== Transparent
&& outcol
== Transparent
) return;
610 if (ot
== 0 || outcol
== Transparent
) {
611 // no outline? simple draw
612 drawCharWdt(x
, y
, wdt
, shift
, ch
, col
, Transparent
);
615 size_t pos
= ch
*fhgt
;
616 if (wdt
< 1 || shift
>= fwdt
) return;
617 if (wdt
> 8) wdt
= fwdt
;
618 if (shift
< 0) shift
= 0;
619 ubyte[fhgt
+2][fwdt
+2] bmp
= 0; // char bitmap; 0: empty; 1: char; 2: outline
620 foreach (immutable dy
; 1..fhgt
+1) {
621 ushort b
= cast(ushort)(fontb8
[pos
++]<<shift
);
622 foreach (immutable dx
; 1..wdt
+1) {
627 if ((ot
&OutUp
) && bmp
[dy
-1][dx
] == 0) bmp
[dy
-1][dx
] = 2;
628 if ((ot
&OutDown
) && bmp
[dy
+1][dx
] == 0) bmp
[dy
+1][dx
] = 2;
629 if ((ot
&OutLeft
) && bmp
[dy
][dx
-1] == 0) bmp
[dy
][dx
-1] = 2;
630 if ((ot
&OutRight
) && bmp
[dy
][dx
+1] == 0) bmp
[dy
][dx
+1] = 2;
631 if ((ot
&OutLU
) && bmp
[dy
-1][dx
-1] == 0) bmp
[dy
-1][dx
-1] = 2;
632 if ((ot
&OutRU
) && bmp
[dy
-1][dx
+1] == 0) bmp
[dy
-1][dx
+1] = 2;
633 if ((ot
&OutLD
) && bmp
[dy
+1][dx
-1] == 0) bmp
[dy
+1][dx
-1] = 2;
634 if ((ot
&OutRD
) && bmp
[dy
+1][dx
+1] == 0) bmp
[dy
+1][dx
+1] = 2;
642 foreach (immutable int dy
; 0..fhgt
+2) {
643 foreach (immutable int dx
; 0..fwdt
+2) {
644 if (auto t
= bmp
[dy
][dx
]) putPixel(x
+dx
, y
+dy
, (t
== 1 ? col
: outcol
));
650 * Draw 6x8 character onto virtual screen in KOI8 encoding.
656 * col = foreground color
657 * bkcol = background color
662 void drawChar(string type
="msx") (int x
, int y
, char ch
, VColor col
, VColor bkcol
=Transparent
) @trusted {
663 drawCharWdt
!type(x
, y
, charWidth
!type
, 0, ch
, col
, bkcol
);
666 void drawCharOut(string type
="msx") (int x
, int y
, char ch
, VColor col
, VColor outcol
=Transparent
, ubyte ot
=OutAll
) @trusted {
667 drawCharWdtOut
!type(x
, y
, charWidth
!type
, 0, ch
, col
, outcol
, ot
);
670 void drawStr(string type
="msx") (int x
, int y
, const(char)[] str, VColor col
, VColor bkcol
=Transparent
) @trusted {
671 foreach (immutable char ch
; str) {
672 drawChar
!type(x
, y
, ch
, col
, bkcol
);
677 void drawStrOut(string type
="msx") (int x
, int y
, const(char)[] str, VColor col
, VColor outcol
=Transparent
, ubyte ot
=OutAll
) @trusted {
678 foreach (immutable char ch
; str) {
679 drawCharOut
!type(x
, y
, ch
, col
, outcol
, ot
);
684 int strWidth(string type
="msx") (const(char)[] str) {
685 return cast(int)str.length
*charWidth
!type
;
688 int charWidthProp(string type
="msx") (char ch
) @trusted pure {
689 static if (type
== "msx") { alias fontw8
= vlFontPropWidth
; }
690 else static if (type
== "dos") { alias fontw8
= dosFontPropWidth
; }
691 else static assert(0, "invalid font type");
692 return (fontw8
.ptr
[ch
]&0x0f);
695 int strWidthProp(string type
="msx") (const(char)[] str) @trusted pure {
696 static if (type
== "msx") { alias fontw8
= vlFontPropWidth
; }
697 else static if (type
== "dos") { alias fontw8
= dosFontPropWidth
; }
698 else static assert(0, "invalid font type");
700 foreach (immutable char ch
; str) wdt
+= (fontw8
[ch
]&0x0f)+1;
701 if (wdt
> 0) --wdt
; // don't count last empty pixel
705 int drawCharProp(string type
="msx") (int x
, int y
, char ch
, VColor col
, VColor bkcol
=Transparent
) @trusted {
706 static if (type
== "msx") { alias fontw8
= vlFontPropWidth
; }
707 else static if (type
== "dos") { alias fontw8
= dosFontPropWidth
; }
708 else static assert(0, "invalid font type");
709 immutable int wdt
= (fontw8
[ch
]&0x0f);
710 drawCharWdt
!type(x
, y
, wdt
, fontw8
[ch
]>>4, ch
, col
, bkcol
);
714 int drawCharPropOut(string type
="msx") (int x
, int y
, char ch
, VColor col
, VColor outcol
=Transparent
, ubyte ot
=OutAll
) @trusted {
715 static if (type
== "msx") { alias fontw8
= vlFontPropWidth
; }
716 else static if (type
== "dos") { alias fontw8
= dosFontPropWidth
; }
717 else static assert(0, "invalid font type");
718 immutable int wdt
= (fontw8
[ch
]&0x0f);
719 drawCharWdtOut
!type(x
, y
, wdt
, fontw8
[ch
]>>4, ch
, col
, outcol
, ot
);
723 int drawStrProp(string type
="msx") (int x
, int y
, const(char)[] str, VColor col
, VColor bkcol
=Transparent
) @trusted {
726 foreach (immutable char ch
; str) {
728 if (!isTransparent(bkcol
)) foreach (int dy
; 0..8) putPixel(x
, y
+dy
, bkcol
);
732 x
+= drawCharProp
!type(x
, y
, ch
, col
, bkcol
);
737 int drawStrPropOut(string type
="msx") (int x
, int y
, const(char)[] str, VColor col
, VColor outcol
=Transparent
, ubyte ot
=OutAll
) @trusted {
739 foreach (immutable char ch
; str) {
740 x
+= drawCharPropOut
!type(x
, y
, ch
, col
, outcol
, ot
)+1;
742 if (x
> sx
) --x
; // don't count last empty pixel
747 // ////////////////////////////////////////////////////////////////////////// //
748 void clear (VColor col
) @trusted {
749 vbuf
.ptr
[0..vbufW
*vbufH
] = col
;
753 // ////////////////////////////////////////////////////////////////////////// //
754 public static immutable ubyte[256*8] vlFont6
= [
3063 // bits 4..7: lshift
3064 public immutable ubyte[256] vlFontPropWidth
= () {
3066 foreach (immutable cnum
; 0..256) {
3067 import core
.bitop
: bsf, bsr;
3069 (cnum
>= 32 && cnum
<= 127) ||
3070 (cnum
>= 143 && cnum
<= 144) ||
3071 (cnum
>= 166 && cnum
<= 167) ||
3072 (cnum
>= 192 && cnum
<= 255);
3076 foreach (immutable dy
; 0..8) {
3077 immutable b
= vlFont6
[cnum
*8+dy
];
3079 immutable mn
= 7-bsr(b
);
3080 if (mn
< shift
) shift
= mn
;
3085 foreach (immutable dy
; 0..8) {
3086 immutable b
= (vlFont6
[cnum
*8+dy
]<<shift
);
3087 immutable cwdt
= (b ?
8-bsf(b
) : 0);
3088 if (cwdt
> wdt
) wdt
= cast(ubyte)cwdt
;
3091 case 0: wdt
= 8; break; // 8px space
3092 case 32: wdt
= 5; break; // 5px space
3093 case 17: .. case 27: wdt
= 8; break; // single frames
3094 case 48: .. case 57: wdt
= 5; break; // digits are monospaced
3095 case 127: .. case 142: wdt
= 8; break; // filled frames
3096 case 145: .. case 151: wdt
= 8; break; // filled frames
3097 case 155: .. case 159: wdt
= 8; break; // filled frames
3100 res
[cnum
] = (wdt
&0x0f)|
((shift
<<4)&0xf0);
3106 public static immutable ubyte[256*8] dosFont8
= [
5415 // bits 4..7: lshift
5416 public immutable ubyte[256] dosFontPropWidth
= () {
5418 foreach (immutable cnum
; 0..256) {
5419 import core
.bitop
: bsf, bsr;
5421 (cnum
>= 32 && cnum
<= 127) ||
5422 (cnum
>= 143 && cnum
<= 144) ||
5423 (cnum
>= 166 && cnum
<= 167) ||
5424 (cnum
>= 192 && cnum
<= 255);
5428 foreach (immutable dy
; 0..8) {
5429 immutable b
= dosFont8
[cnum
*8+dy
];
5431 immutable mn
= 7-bsr(b
);
5432 if (mn
< shift
) shift
= mn
;
5437 foreach (immutable dy
; 0..8) {
5438 immutable b
= (dosFont8
[cnum
*8+dy
]<<shift
);
5439 immutable cwdt
= (b ?
8-bsf(b
) : 0);
5440 if (cwdt
> wdt
) wdt
= cast(ubyte)cwdt
;
5443 case 0: wdt
= 8; break; // 8px space
5444 case 32: wdt
= 5; break; // 5px space
5445 case 48: .. case 57: wdt
= 5; break; // digits are monospaced
5446 case 176: .. case 223: wdt
= 8; break; // pseudographics (frames, etc)
5449 res
[cnum
] = (wdt
&0x0f)|
((shift
<<4)&0xf0);
5455 static public immutable ushort[256*10] dosFont10
= [
5457 0b_0000000000_000000,
5458 0b_0000000000_000000,
5459 0b_0000000000_000000,
5460 0b_0000000000_000000,
5461 0b_0000000000_000000,
5462 0b_0000000000_000000,
5463 0b_0000000000_000000,
5464 0b_0000000000_000000,
5465 0b_0000000000_000000,
5466 0b_0000000000_000000,
5468 0b_0000000000_000000,
5469 0b_0011111100_000000,
5470 0b_0100000010_000000,
5471 0b_0101001010_000000,
5472 0b_0100000010_000000,
5473 0b_0101111010_000000,
5474 0b_0100110010_000000,
5475 0b_0010000100_000000,
5476 0b_0001111000_000000,
5477 0b_0000000000_000000,
5479 0b_0000000000_000000,
5480 0b_0011111100_000000,
5481 0b_0111111110_000000,
5482 0b_0110110110_000000,
5483 0b_0111111110_000000,
5484 0b_0110000110_000000,
5485 0b_0111001110_000000,
5486 0b_0011111100_000000,
5487 0b_0001111000_000000,
5488 0b_0000000000_000000,
5490 0b_0000000000_000000,
5491 0b_0011101110_000000,
5492 0b_0111111111_000000,
5493 0b_0111111111_000000,
5494 0b_0111111111_000000,
5495 0b_0011111110_000000,
5496 0b_0001111100_000000,
5497 0b_0000111000_000000,
5498 0b_0000010000_000000,
5499 0b_0000000000_000000,
5501 0b_0000010000_000000,
5502 0b_0000111000_000000,
5503 0b_0001111100_000000,
5504 0b_0011111110_000000,
5505 0b_0111111111_000000,
5506 0b_0011111110_000000,
5507 0b_0001111100_000000,
5508 0b_0000111000_000000,
5509 0b_0000010000_000000,
5510 0b_0000000000_000000,
5512 0b_0000000000_000000,
5513 0b_0000111000_000000,
5514 0b_0001111100_000000,
5515 0b_0000111000_000000,
5516 0b_0011111110_000000,
5517 0b_0111111111_000000,
5518 0b_0011010110_000000,
5519 0b_0000010000_000000,
5520 0b_0000111000_000000,
5521 0b_0000000000_000000,
5523 0b_0000010000_000000,
5524 0b_0000111000_000000,
5525 0b_0001111100_000000,
5526 0b_0011111110_000000,
5527 0b_0111111111_000000,
5528 0b_0111111111_000000,
5529 0b_0011010110_000000,
5530 0b_0000010000_000000,
5531 0b_0000111000_000000,
5532 0b_0000000000_000000,
5534 0b_0000000000_000000,
5535 0b_0000000000_000000,
5536 0b_0000000000_000000,
5537 0b_0000110000_000000,
5538 0b_0001111000_000000,
5539 0b_0001111000_000000,
5540 0b_0000110000_000000,
5541 0b_0000000000_000000,
5542 0b_0000000000_000000,
5543 0b_0000000000_000000,
5545 0b_1111111111_000000,
5546 0b_1111111111_000000,
5547 0b_1111111111_000000,
5548 0b_1111001111_000000,
5549 0b_1110000111_000000,
5550 0b_1110000111_000000,
5551 0b_1111001111_000000,
5552 0b_1111111111_000000,
5553 0b_1111111111_000000,
5554 0b_1111111111_000000,
5556 0b_0000000000_000000,
5557 0b_0000000000_000000,
5558 0b_0001111000_000000,
5559 0b_0011001100_000000,
5560 0b_0010000100_000000,
5561 0b_0010000100_000000,
5562 0b_0011001100_000000,
5563 0b_0001111000_000000,
5564 0b_0000000000_000000,
5565 0b_0000000000_000000,
5567 0b_1111111111_000000,
5568 0b_1111111111_000000,
5569 0b_1110000111_000000,
5570 0b_1100110011_000000,
5571 0b_1101111011_000000,
5572 0b_1101111011_000000,
5573 0b_1100110011_000000,
5574 0b_1110000111_000000,
5575 0b_1111111111_000000,
5576 0b_1111111111_000000,
5578 0b_0000000000_000000,
5579 0b_0000011110_000000,
5580 0b_0000001110_000000,
5581 0b_0000011110_000000,
5582 0b_0011111010_000000,
5583 0b_0110011000_000000,
5584 0b_0110011000_000000,
5585 0b_0110011000_000000,
5586 0b_0011110000_000000,
5587 0b_0000000000_000000,
5589 0b_0000000000_000000,
5590 0b_0001111000_000000,
5591 0b_0011001100_000000,
5592 0b_0011001100_000000,
5593 0b_0011001100_000000,
5594 0b_0001111000_000000,
5595 0b_0000110000_000000,
5596 0b_0011111100_000000,
5597 0b_0000110000_000000,
5598 0b_0000000000_000000,
5600 0b_0000010000_000000,
5601 0b_0000011000_000000,
5602 0b_0000011100_000000,
5603 0b_0000010100_000000,
5604 0b_0000010100_000000,
5605 0b_0000010000_000000,
5606 0b_0001110000_000000,
5607 0b_0011110000_000000,
5608 0b_0001100000_000000,
5609 0b_0000000000_000000,
5611 0b_0000000000_000000,
5612 0b_0001111110_000000,
5613 0b_0001111110_000000,
5614 0b_0001000010_000000,
5615 0b_0001000010_000000,
5616 0b_0001000110_000000,
5617 0b_0011001110_000000,
5618 0b_0111000100_000000,
5619 0b_0010000000_000000,
5620 0b_0000000000_000000,
5622 0b_0000000000_000000,
5623 0b_0000110000_000000,
5624 0b_0110110110_000000,
5625 0b_0001111000_000000,
5626 0b_0111001110_000000,
5627 0b_0111001110_000000,
5628 0b_0001111000_000000,
5629 0b_0110110110_000000,
5630 0b_0000110000_000000,
5631 0b_0000000000_000000,
5633 0b_0001000000_000000,
5634 0b_0001100000_000000,
5635 0b_0001110000_000000,
5636 0b_0001111000_000000,
5637 0b_0001111100_000000,
5638 0b_0001111000_000000,
5639 0b_0001110000_000000,
5640 0b_0001100000_000000,
5641 0b_0001000000_000000,
5642 0b_0000000000_000000,
5644 0b_0000000100_000000,
5645 0b_0000001100_000000,
5646 0b_0000011100_000000,
5647 0b_0000111100_000000,
5648 0b_0001111100_000000,
5649 0b_0000111100_000000,
5650 0b_0000011100_000000,
5651 0b_0000001100_000000,
5652 0b_0000000100_000000,
5653 0b_0000000000_000000,
5655 0b_0000000000_000000,
5656 0b_0000110000_000000,
5657 0b_0001111000_000000,
5658 0b_0011111100_000000,
5659 0b_0000110000_000000,
5660 0b_0000110000_000000,
5661 0b_0011111100_000000,
5662 0b_0001111000_000000,
5663 0b_0000110000_000000,
5664 0b_0000000000_000000,
5666 0b_0000000000_000000,
5667 0b_0011001100_000000,
5668 0b_0011001100_000000,
5669 0b_0011001100_000000,
5670 0b_0011001100_000000,
5671 0b_0011001100_000000,
5672 0b_0000000000_000000,
5673 0b_0011001100_000000,
5674 0b_0000000000_000000,
5675 0b_0000000000_000000,
5677 0b_0000000000_000000,
5678 0b_0011111110_000000,
5679 0b_0110110110_000000,
5680 0b_0110110110_000000,
5681 0b_0011110110_000000,
5682 0b_0000110110_000000,
5683 0b_0000110110_000000,
5684 0b_0000110110_000000,
5685 0b_0000000000_000000,
5686 0b_0000000000_000000,
5688 0b_0000000000_000000,
5689 0b_0001111100_000000,
5690 0b_0011000000_000000,
5691 0b_0001111100_000000,
5692 0b_0011000110_000000,
5693 0b_0001111100_000000,
5694 0b_0000000110_000000,
5695 0b_0001111100_000000,
5696 0b_0000000000_000000,
5697 0b_0000000000_000000,
5699 0b_0000000000_000000,
5700 0b_0000000000_000000,
5701 0b_0000000000_000000,
5702 0b_0000000000_000000,
5703 0b_0000000000_000000,
5704 0b_0111111110_000000,
5705 0b_0111111110_000000,
5706 0b_0111111110_000000,
5707 0b_0000000000_000000,
5708 0b_0000000000_000000,
5710 0b_0000000000_000000,
5711 0b_0000110000_000000,
5712 0b_0001111000_000000,
5713 0b_0011111100_000000,
5714 0b_0000110000_000000,
5715 0b_0000110000_000000,
5716 0b_0011111100_000000,
5717 0b_0001111000_000000,
5718 0b_0000110000_000000,
5719 0b_1111111111_000000,
5721 0b_0000000000_000000,
5722 0b_0000110000_000000,
5723 0b_0001111000_000000,
5724 0b_0011111100_000000,
5725 0b_0000110000_000000,
5726 0b_0000110000_000000,
5727 0b_0000110000_000000,
5728 0b_0000110000_000000,
5729 0b_0000110000_000000,
5730 0b_0000000000_000000,
5732 0b_0000000000_000000,
5733 0b_0000110000_000000,
5734 0b_0000110000_000000,
5735 0b_0000110000_000000,
5736 0b_0000110000_000000,
5737 0b_0000110000_000000,
5738 0b_0011111100_000000,
5739 0b_0001111000_000000,
5740 0b_0000110000_000000,
5741 0b_0000000000_000000,
5743 0b_0000000000_000000,
5744 0b_0000000000_000000,
5745 0b_0000011000_000000,
5746 0b_0000001100_000000,
5747 0b_0111111110_000000,
5748 0b_0000001100_000000,
5749 0b_0000011000_000000,
5750 0b_0000000000_000000,
5751 0b_0000000000_000000,
5752 0b_0000000000_000000,
5754 0b_0000000000_000000,
5755 0b_0000000000_000000,
5756 0b_0001100000_000000,
5757 0b_0011000000_000000,
5758 0b_0111111110_000000,
5759 0b_0011000000_000000,
5760 0b_0001100000_000000,
5761 0b_0000000000_000000,
5762 0b_0000000000_000000,
5763 0b_0000000000_000000,
5765 0b_0000000000_000000,
5766 0b_0000000000_000000,
5767 0b_0000000000_000000,
5768 0b_0000000000_000000,
5769 0b_0110000000_000000,
5770 0b_0110000000_000000,
5771 0b_0110000000_000000,
5772 0b_0111111110_000000,
5773 0b_0000000000_000000,
5774 0b_0000000000_000000,
5776 0b_0000000000_000000,
5777 0b_0000000000_000000,
5778 0b_0001000100_000000,
5779 0b_0011000110_000000,
5780 0b_0111111111_000000,
5781 0b_0011000110_000000,
5782 0b_0001000100_000000,
5783 0b_0000000000_000000,
5784 0b_0000000000_000000,
5785 0b_0000000000_000000,
5787 0b_0000000000_000000,
5788 0b_0000000000_000000,
5789 0b_0000010000_000000,
5790 0b_0000111000_000000,
5791 0b_0001111100_000000,
5792 0b_0011111110_000000,
5793 0b_0111111111_000000,
5794 0b_0000000000_000000,
5795 0b_0000000000_000000,
5796 0b_0000000000_000000,
5798 0b_0000000000_000000,
5799 0b_0000000000_000000,
5800 0b_0111111111_000000,
5801 0b_0011111110_000000,
5802 0b_0001111100_000000,
5803 0b_0000111000_000000,
5804 0b_0000010000_000000,
5805 0b_0000000000_000000,
5806 0b_0000000000_000000,
5807 0b_0000000000_000000,
5809 0b_0000000000_000000,
5810 0b_0000000000_000000,
5811 0b_0000000000_000000,
5812 0b_0000000000_000000,
5813 0b_0000000000_000000,
5814 0b_0000000000_000000,
5815 0b_0000000000_000000,
5816 0b_0000000000_000000,
5817 0b_0000000000_000000,
5818 0b_0000000000_000000,
5820 0b_0000000000_000000,
5821 0b_0000110000_000000,
5822 0b_0001111000_000000,
5823 0b_0001111000_000000,
5824 0b_0000110000_000000,
5825 0b_0000110000_000000,
5826 0b_0000000000_000000,
5827 0b_0000110000_000000,
5828 0b_0000000000_000000,
5829 0b_0000000000_000000,
5831 0b_0000000000_000000,
5832 0b_0001101100_000000,
5833 0b_0001101100_000000,
5834 0b_0001101100_000000,
5835 0b_0000000000_000000,
5836 0b_0000000000_000000,
5837 0b_0000000000_000000,
5838 0b_0000000000_000000,
5839 0b_0000000000_000000,
5840 0b_0000000000_000000,
5842 0b_0000000000_000000,
5843 0b_0001101100_000000,
5844 0b_0001101100_000000,
5845 0b_0111111111_000000,
5846 0b_0001101100_000000,
5847 0b_0111111111_000000,
5848 0b_0001101100_000000,
5849 0b_0001101100_000000,
5850 0b_0000000000_000000,
5851 0b_0000000000_000000,
5853 0b_0000010000_000000,
5854 0b_0001111100_000000,
5855 0b_0011010110_000000,
5856 0b_0011010000_000000,
5857 0b_0001111100_000000,
5858 0b_0000010110_000000,
5859 0b_0011010110_000000,
5860 0b_0001111100_000000,
5861 0b_0000010000_000000,
5862 0b_0000000000_000000,
5864 0b_0000000000_000000,
5865 0b_0011000110_000000,
5866 0b_0011001100_000000,
5867 0b_0000011000_000000,
5868 0b_0000110000_000000,
5869 0b_0001100110_000000,
5870 0b_0011000110_000000,
5871 0b_0000000000_000000,
5872 0b_0000000000_000000,
5873 0b_0000000000_000000,
5875 0b_0000000000_000000,
5876 0b_0001110000_000000,
5877 0b_0011001100_000000,
5878 0b_0011001100_000000,
5879 0b_0001111110_000000,
5880 0b_0011001100_000000,
5881 0b_0011001100_000000,
5882 0b_0001110110_000000,
5883 0b_0000000000_000000,
5884 0b_0000000000_000000,
5886 0b_0000000000_000000,
5887 0b_0000111000_000000,
5888 0b_0000110000_000000,
5889 0b_0001100000_000000,
5890 0b_0000000000_000000,
5891 0b_0000000000_000000,
5892 0b_0000000000_000000,
5893 0b_0000000000_000000,
5894 0b_0000000000_000000,
5895 0b_0000000000_000000,
5897 0b_0000000000_000000,
5898 0b_0000011000_000000,
5899 0b_0000110000_000000,
5900 0b_0001100000_000000,
5901 0b_0001100000_000000,
5902 0b_0001100000_000000,
5903 0b_0000110000_000000,
5904 0b_0000011000_000000,
5905 0b_0000000000_000000,
5906 0b_0000000000_000000,
5908 0b_0000000000_000000,
5909 0b_0001100000_000000,
5910 0b_0000110000_000000,
5911 0b_0000011000_000000,
5912 0b_0000011000_000000,
5913 0b_0000011000_000000,
5914 0b_0000110000_000000,
5915 0b_0001100000_000000,
5916 0b_0000000000_000000,
5917 0b_0000000000_000000,
5919 0b_0000000000_000000,
5920 0b_0000000000_000000,
5921 0b_0011001100_000000,
5922 0b_0001111000_000000,
5923 0b_0111111110_000000,
5924 0b_0001111000_000000,
5925 0b_0011001100_000000,
5926 0b_0000000000_000000,
5927 0b_0000000000_000000,
5928 0b_0000000000_000000,
5930 0b_0000000000_000000,
5931 0b_0000000000_000000,
5932 0b_0000110000_000000,
5933 0b_0000110000_000000,
5934 0b_0011111100_000000,
5935 0b_0000110000_000000,
5936 0b_0000110000_000000,
5937 0b_0000000000_000000,
5938 0b_0000000000_000000,
5939 0b_0000000000_000000,
5941 0b_0000000000_000000,
5942 0b_0000000000_000000,
5943 0b_0000000000_000000,
5944 0b_0000000000_000000,
5945 0b_0000000000_000000,
5946 0b_0000000000_000000,
5947 0b_0000110000_000000,
5948 0b_0000110000_000000,
5949 0b_0001100000_000000,
5950 0b_0000000000_000000,
5952 0b_0000000000_000000,
5953 0b_0000000000_000000,
5954 0b_0000000000_000000,
5955 0b_0000000000_000000,
5956 0b_0011111100_000000,
5957 0b_0000000000_000000,
5958 0b_0000000000_000000,
5959 0b_0000000000_000000,
5960 0b_0000000000_000000,
5961 0b_0000000000_000000,
5963 0b_0000000000_000000,
5964 0b_0000000000_000000,
5965 0b_0000000000_000000,
5966 0b_0000000000_000000,
5967 0b_0000000000_000000,
5968 0b_0000000000_000000,
5969 0b_0000110000_000000,
5970 0b_0000110000_000000,
5971 0b_0000000000_000000,
5972 0b_0000000000_000000,
5974 0b_0000000000_000000,
5975 0b_0000000110_000000,
5976 0b_0000001100_000000,
5977 0b_0000011000_000000,
5978 0b_0000110000_000000,
5979 0b_0001100000_000000,
5980 0b_0011000000_000000,
5981 0b_0110000000_000000,
5982 0b_0000000000_000000,
5983 0b_0000000000_000000,
5985 0b_0000000000_000000,
5986 0b_0001111100_000000,
5987 0b_0011001110_000000,
5988 0b_0011011110_000000,
5989 0b_0011111110_000000,
5990 0b_0011110110_000000,
5991 0b_0011100110_000000,
5992 0b_0001111100_000000,
5993 0b_0000000000_000000,
5994 0b_0000000000_000000,
5996 0b_0000000000_000000,
5997 0b_0000110000_000000,
5998 0b_0001110000_000000,
5999 0b_0000110000_000000,
6000 0b_0000110000_000000,
6001 0b_0000110000_000000,
6002 0b_0000110000_000000,
6003 0b_0011111100_000000,
6004 0b_0000000000_000000,
6005 0b_0000000000_000000,
6007 0b_0000000000_000000,
6008 0b_0001111100_000000,
6009 0b_0011000110_000000,
6010 0b_0000000110_000000,
6011 0b_0000111100_000000,
6012 0b_0001100000_000000,
6013 0b_0011000110_000000,
6014 0b_0011111110_000000,
6015 0b_0000000000_000000,
6016 0b_0000000000_000000,
6018 0b_0000000000_000000,
6019 0b_0001111100_000000,
6020 0b_0011000110_000000,
6021 0b_0000000110_000000,
6022 0b_0000011100_000000,
6023 0b_0000000110_000000,
6024 0b_0011000110_000000,
6025 0b_0001111100_000000,
6026 0b_0000000000_000000,
6027 0b_0000000000_000000,
6029 0b_0000000000_000000,
6030 0b_0000011100_000000,
6031 0b_0000111100_000000,
6032 0b_0001101100_000000,
6033 0b_0011001100_000000,
6034 0b_0011111110_000000,
6035 0b_0000001100_000000,
6036 0b_0000011110_000000,
6037 0b_0000000000_000000,
6038 0b_0000000000_000000,
6040 0b_0000000000_000000,
6041 0b_0011111110_000000,
6042 0b_0011000000_000000,
6043 0b_0011000000_000000,
6044 0b_0011111100_000000,
6045 0b_0000000110_000000,
6046 0b_0011000110_000000,
6047 0b_0001111100_000000,
6048 0b_0000000000_000000,
6049 0b_0000000000_000000,
6051 0b_0000000000_000000,
6052 0b_0000111100_000000,
6053 0b_0001100000_000000,
6054 0b_0011000000_000000,
6055 0b_0011111100_000000,
6056 0b_0011000110_000000,
6057 0b_0011000110_000000,
6058 0b_0001111100_000000,
6059 0b_0000000000_000000,
6060 0b_0000000000_000000,
6062 0b_0000000000_000000,
6063 0b_0011111110_000000,
6064 0b_0011000110_000000,
6065 0b_0000000110_000000,
6066 0b_0000001100_000000,
6067 0b_0000011000_000000,
6068 0b_0000110000_000000,
6069 0b_0000110000_000000,
6070 0b_0000000000_000000,
6071 0b_0000000000_000000,
6073 0b_0000000000_000000,
6074 0b_0001111100_000000,
6075 0b_0011000110_000000,
6076 0b_0011000110_000000,
6077 0b_0001111100_000000,
6078 0b_0011000110_000000,
6079 0b_0011000110_000000,
6080 0b_0001111100_000000,
6081 0b_0000000000_000000,
6082 0b_0000000000_000000,
6084 0b_0000000000_000000,
6085 0b_0001111100_000000,
6086 0b_0011000110_000000,
6087 0b_0011000110_000000,
6088 0b_0001111110_000000,
6089 0b_0000000110_000000,
6090 0b_0000001100_000000,
6091 0b_0001111000_000000,
6092 0b_0000000000_000000,
6093 0b_0000000000_000000,
6095 0b_0000000000_000000,
6096 0b_0000000000_000000,
6097 0b_0000110000_000000,
6098 0b_0000110000_000000,
6099 0b_0000000000_000000,
6100 0b_0000000000_000000,
6101 0b_0000110000_000000,
6102 0b_0000110000_000000,
6103 0b_0000000000_000000,
6104 0b_0000000000_000000,
6106 0b_0000000000_000000,
6107 0b_0000000000_000000,
6108 0b_0000110000_000000,
6109 0b_0000110000_000000,
6110 0b_0000000000_000000,
6111 0b_0000000000_000000,
6112 0b_0000110000_000000,
6113 0b_0000110000_000000,
6114 0b_0001100000_000000,
6115 0b_0000000000_000000,
6117 0b_0000000000_000000,
6118 0b_0000001100_000000,
6119 0b_0000011000_000000,
6120 0b_0000110000_000000,
6121 0b_0001100000_000000,
6122 0b_0000110000_000000,
6123 0b_0000011000_000000,
6124 0b_0000001100_000000,
6125 0b_0000000000_000000,
6126 0b_0000000000_000000,
6128 0b_0000000000_000000,
6129 0b_0000000000_000000,
6130 0b_0000000000_000000,
6131 0b_0011111100_000000,
6132 0b_0000000000_000000,
6133 0b_0011111100_000000,
6134 0b_0000000000_000000,
6135 0b_0000000000_000000,
6136 0b_0000000000_000000,
6137 0b_0000000000_000000,
6139 0b_0000000000_000000,
6140 0b_0001100000_000000,
6141 0b_0000110000_000000,
6142 0b_0000011000_000000,
6143 0b_0000001100_000000,
6144 0b_0000011000_000000,
6145 0b_0000110000_000000,
6146 0b_0001100000_000000,
6147 0b_0000000000_000000,
6148 0b_0000000000_000000,
6150 0b_0000000000_000000,
6151 0b_0001111000_000000,
6152 0b_0011001100_000000,
6153 0b_0000001100_000000,
6154 0b_0000001100_000000,
6155 0b_0000011000_000000,
6156 0b_0000110000_000000,
6157 0b_0000000000_000000,
6158 0b_0000110000_000000,
6159 0b_0000000000_000000,
6161 0b_0000000000_000000,
6162 0b_0011111100_000000,
6163 0b_0110000110_000000,
6164 0b_0110011110_000000,
6165 0b_0110110110_000000,
6166 0b_0110011110_000000,
6167 0b_0110000000_000000,
6168 0b_0011111100_000000,
6169 0b_0000000000_000000,
6170 0b_0000000000_000000,
6172 0b_0000000000_000000,
6173 0b_0001111100_000000,
6174 0b_0011000110_000000,
6175 0b_0011000110_000000,
6176 0b_0011111110_000000,
6177 0b_0011000110_000000,
6178 0b_0011000110_000000,
6179 0b_0011000110_000000,
6180 0b_0000000000_000000,
6181 0b_0000000000_000000,
6183 0b_0000000000_000000,
6184 0b_0011111100_000000,
6185 0b_0011000110_000000,
6186 0b_0011000110_000000,
6187 0b_0011111100_000000,
6188 0b_0011000110_000000,
6189 0b_0011000110_000000,
6190 0b_0011111100_000000,
6191 0b_0000000000_000000,
6192 0b_0000000000_000000,
6194 0b_0000000000_000000,
6195 0b_0001111100_000000,
6196 0b_0011000110_000000,
6197 0b_0011000000_000000,
6198 0b_0011000000_000000,
6199 0b_0011000000_000000,
6200 0b_0011000110_000000,
6201 0b_0001111100_000000,
6202 0b_0000000000_000000,
6203 0b_0000000000_000000,
6205 0b_0000000000_000000,
6206 0b_0011111000_000000,
6207 0b_0011001100_000000,
6208 0b_0011000110_000000,
6209 0b_0011000110_000000,
6210 0b_0011000110_000000,
6211 0b_0011001100_000000,
6212 0b_0011111000_000000,
6213 0b_0000000000_000000,
6214 0b_0000000000_000000,
6216 0b_0000000000_000000,
6217 0b_0011111110_000000,
6218 0b_0011000000_000000,
6219 0b_0011000000_000000,
6220 0b_0011111100_000000,
6221 0b_0011000000_000000,
6222 0b_0011000000_000000,
6223 0b_0011111110_000000,
6224 0b_0000000000_000000,
6225 0b_0000000000_000000,
6227 0b_0000000000_000000,
6228 0b_0011111110_000000,
6229 0b_0011000000_000000,
6230 0b_0011000000_000000,
6231 0b_0011111100_000000,
6232 0b_0011000000_000000,
6233 0b_0011000000_000000,
6234 0b_0011000000_000000,
6235 0b_0000000000_000000,
6236 0b_0000000000_000000,
6238 0b_0000000000_000000,
6239 0b_0001111100_000000,
6240 0b_0011000110_000000,
6241 0b_0011000000_000000,
6242 0b_0011001110_000000,
6243 0b_0011000110_000000,
6244 0b_0011000110_000000,
6245 0b_0001111100_000000,
6246 0b_0000000000_000000,
6247 0b_0000000000_000000,
6249 0b_0000000000_000000,
6250 0b_0011000110_000000,
6251 0b_0011000110_000000,
6252 0b_0011000110_000000,
6253 0b_0011111110_000000,
6254 0b_0011000110_000000,
6255 0b_0011000110_000000,
6256 0b_0011000110_000000,
6257 0b_0000000000_000000,
6258 0b_0000000000_000000,
6260 0b_0000000000_000000,
6261 0b_0001111000_000000,
6262 0b_0000110000_000000,
6263 0b_0000110000_000000,
6264 0b_0000110000_000000,
6265 0b_0000110000_000000,
6266 0b_0000110000_000000,
6267 0b_0001111000_000000,
6268 0b_0000000000_000000,
6269 0b_0000000000_000000,
6271 0b_0000000000_000000,
6272 0b_0000011100_000000,
6273 0b_0000001100_000000,
6274 0b_0000001100_000000,
6275 0b_0000001100_000000,
6276 0b_0011001100_000000,
6277 0b_0011001100_000000,
6278 0b_0001111000_000000,
6279 0b_0000000000_000000,
6280 0b_0000000000_000000,
6282 0b_0000000000_000000,
6283 0b_0011000110_000000,
6284 0b_0011000110_000000,
6285 0b_0011001100_000000,
6286 0b_0011111000_000000,
6287 0b_0011001100_000000,
6288 0b_0011000110_000000,
6289 0b_0011000110_000000,
6290 0b_0000000000_000000,
6291 0b_0000000000_000000,
6293 0b_0000000000_000000,
6294 0b_0011000000_000000,
6295 0b_0011000000_000000,
6296 0b_0011000000_000000,
6297 0b_0011000000_000000,
6298 0b_0011000000_000000,
6299 0b_0011000000_000000,
6300 0b_0011111110_000000,
6301 0b_0000000000_000000,
6302 0b_0000000000_000000,
6304 0b_0000000000_000000,
6305 0b_0110000110_000000,
6306 0b_0111001110_000000,
6307 0b_0111111110_000000,
6308 0b_0110110110_000000,
6309 0b_0110000110_000000,
6310 0b_0110000110_000000,
6311 0b_0110000110_000000,
6312 0b_0000000000_000000,
6313 0b_0000000000_000000,
6315 0b_0000000000_000000,
6316 0b_0011000110_000000,
6317 0b_0011100110_000000,
6318 0b_0011110110_000000,
6319 0b_0011011110_000000,
6320 0b_0011001110_000000,
6321 0b_0011000110_000000,
6322 0b_0011000110_000000,
6323 0b_0000000000_000000,
6324 0b_0000000000_000000,
6326 0b_0000000000_000000,
6327 0b_0001111100_000000,
6328 0b_0011000110_000000,
6329 0b_0011000110_000000,
6330 0b_0011000110_000000,
6331 0b_0011000110_000000,
6332 0b_0011000110_000000,
6333 0b_0001111100_000000,
6334 0b_0000000000_000000,
6335 0b_0000000000_000000,
6337 0b_0000000000_000000,
6338 0b_0011111100_000000,
6339 0b_0011000110_000000,
6340 0b_0011000110_000000,
6341 0b_0011111100_000000,
6342 0b_0011000000_000000,
6343 0b_0011000000_000000,
6344 0b_0011000000_000000,
6345 0b_0000000000_000000,
6346 0b_0000000000_000000,
6348 0b_0000000000_000000,
6349 0b_0001111100_000000,
6350 0b_0011000110_000000,
6351 0b_0011000110_000000,
6352 0b_0011000110_000000,
6353 0b_0011000110_000000,
6354 0b_0011001110_000000,
6355 0b_0001111100_000000,
6356 0b_0000001110_000000,
6357 0b_0000000000_000000,
6359 0b_0000000000_000000,
6360 0b_0011111100_000000,
6361 0b_0011000110_000000,
6362 0b_0011000110_000000,
6363 0b_0011111100_000000,
6364 0b_0011001100_000000,
6365 0b_0011000110_000000,
6366 0b_0011000110_000000,
6367 0b_0000000000_000000,
6368 0b_0000000000_000000,
6370 0b_0000000000_000000,
6371 0b_0001111100_000000,
6372 0b_0011000110_000000,
6373 0b_0011000000_000000,
6374 0b_0001111100_000000,
6375 0b_0000000110_000000,
6376 0b_0011000110_000000,
6377 0b_0001111100_000000,
6378 0b_0000000000_000000,
6379 0b_0000000000_000000,
6381 0b_0000000000_000000,
6382 0b_0111111110_000000,
6383 0b_0000110000_000000,
6384 0b_0000110000_000000,
6385 0b_0000110000_000000,
6386 0b_0000110000_000000,
6387 0b_0000110000_000000,
6388 0b_0000110000_000000,
6389 0b_0000000000_000000,
6390 0b_0000000000_000000,
6392 0b_0000000000_000000,
6393 0b_0011000110_000000,
6394 0b_0011000110_000000,
6395 0b_0011000110_000000,
6396 0b_0011000110_000000,
6397 0b_0011000110_000000,
6398 0b_0011000110_000000,
6399 0b_0001111100_000000,
6400 0b_0000000000_000000,
6401 0b_0000000000_000000,
6403 0b_0000000000_000000,
6404 0b_0011000110_000000,
6405 0b_0011000110_000000,
6406 0b_0011000110_000000,
6407 0b_0011000110_000000,
6408 0b_0001101100_000000,
6409 0b_0000111000_000000,
6410 0b_0000010000_000000,
6411 0b_0000000000_000000,
6412 0b_0000000000_000000,
6414 0b_0000000000_000000,
6415 0b_0110000110_000000,
6416 0b_0110000110_000000,
6417 0b_0110000110_000000,
6418 0b_0110110110_000000,
6419 0b_0111111110_000000,
6420 0b_0111001110_000000,
6421 0b_0110000110_000000,
6422 0b_0000000000_000000,
6423 0b_0000000000_000000,
6425 0b_0000000000_000000,
6426 0b_0110000110_000000,
6427 0b_0011001100_000000,
6428 0b_0001111000_000000,
6429 0b_0000110000_000000,
6430 0b_0001111000_000000,
6431 0b_0011001100_000000,
6432 0b_0110000110_000000,
6433 0b_0000000000_000000,
6434 0b_0000000000_000000,
6436 0b_0000000000_000000,
6437 0b_0110000110_000000,
6438 0b_0110000110_000000,
6439 0b_0011001100_000000,
6440 0b_0001111000_000000,
6441 0b_0000110000_000000,
6442 0b_0000110000_000000,
6443 0b_0000110000_000000,
6444 0b_0000000000_000000,
6445 0b_0000000000_000000,
6447 0b_0000000000_000000,
6448 0b_0011111110_000000,
6449 0b_0000001100_000000,
6450 0b_0000011000_000000,
6451 0b_0000110000_000000,
6452 0b_0001100000_000000,
6453 0b_0011000000_000000,
6454 0b_0011111110_000000,
6455 0b_0000000000_000000,
6456 0b_0000000000_000000,
6458 0b_0000000000_000000,
6459 0b_0001111000_000000,
6460 0b_0001100000_000000,
6461 0b_0001100000_000000,
6462 0b_0001100000_000000,
6463 0b_0001100000_000000,
6464 0b_0001100000_000000,
6465 0b_0001111000_000000,
6466 0b_0000000000_000000,
6467 0b_0000000000_000000,
6469 0b_0000000000_000000,
6470 0b_0110000000_000000,
6471 0b_0011000000_000000,
6472 0b_0001100000_000000,
6473 0b_0000110000_000000,
6474 0b_0000011000_000000,
6475 0b_0000001100_000000,
6476 0b_0000000000_000000,
6477 0b_0000000000_000000,
6478 0b_0000000000_000000,
6480 0b_0000000000_000000,
6481 0b_0001111000_000000,
6482 0b_0000011000_000000,
6483 0b_0000011000_000000,
6484 0b_0000011000_000000,
6485 0b_0000011000_000000,
6486 0b_0000011000_000000,
6487 0b_0001111000_000000,
6488 0b_0000000000_000000,
6489 0b_0000000000_000000,
6491 0b_0000000000_000000,
6492 0b_0000010000_000000,
6493 0b_0000111000_000000,
6494 0b_0001101100_000000,
6495 0b_0011000110_000000,
6496 0b_0000000000_000000,
6497 0b_0000000000_000000,
6498 0b_0000000000_000000,
6499 0b_0000000000_000000,
6500 0b_0000000000_000000,
6502 0b_0000000000_000000,
6503 0b_0000000000_000000,
6504 0b_0000000000_000000,
6505 0b_0000000000_000000,
6506 0b_0000000000_000000,
6507 0b_0000000000_000000,
6508 0b_0000000000_000000,
6509 0b_0000000000_000000,
6510 0b_1111111111_000000,
6511 0b_0000000000_000000,
6513 0b_0000000000_000000,
6514 0b_0001110000_000000,
6515 0b_0000110000_000000,
6516 0b_0000011000_000000,
6517 0b_0000000000_000000,
6518 0b_0000000000_000000,
6519 0b_0000000000_000000,
6520 0b_0000000000_000000,
6521 0b_0000000000_000000,
6522 0b_0000000000_000000,
6524 0b_0000000000_000000,
6525 0b_0000000000_000000,
6526 0b_0000000000_000000,
6527 0b_0001111100_000000,
6528 0b_0000000110_000000,
6529 0b_0001111110_000000,
6530 0b_0011000110_000000,
6531 0b_0001111110_000000,
6532 0b_0000000000_000000,
6533 0b_0000000000_000000,
6535 0b_0000000000_000000,
6536 0b_0011000000_000000,
6537 0b_0011000000_000000,
6538 0b_0011111100_000000,
6539 0b_0011000110_000000,
6540 0b_0011000110_000000,
6541 0b_0011000110_000000,
6542 0b_0011111100_000000,
6543 0b_0000000000_000000,
6544 0b_0000000000_000000,
6546 0b_0000000000_000000,
6547 0b_0000000000_000000,
6548 0b_0000000000_000000,
6549 0b_0001111100_000000,
6550 0b_0011000110_000000,
6551 0b_0011000000_000000,
6552 0b_0011000110_000000,
6553 0b_0001111100_000000,
6554 0b_0000000000_000000,
6555 0b_0000000000_000000,
6557 0b_0000000000_000000,
6558 0b_0000000110_000000,
6559 0b_0000000110_000000,
6560 0b_0001111110_000000,
6561 0b_0011000110_000000,
6562 0b_0011000110_000000,
6563 0b_0011000110_000000,
6564 0b_0001111110_000000,
6565 0b_0000000000_000000,
6566 0b_0000000000_000000,
6568 0b_0000000000_000000,
6569 0b_0000000000_000000,
6570 0b_0000000000_000000,
6571 0b_0001111100_000000,
6572 0b_0011000110_000000,
6573 0b_0011111110_000000,
6574 0b_0011000000_000000,
6575 0b_0001111100_000000,
6576 0b_0000000000_000000,
6577 0b_0000000000_000000,
6579 0b_0000000000_000000,
6580 0b_0000111100_000000,
6581 0b_0001100000_000000,
6582 0b_0001100000_000000,
6583 0b_0011111000_000000,
6584 0b_0001100000_000000,
6585 0b_0001100000_000000,
6586 0b_0001100000_000000,
6587 0b_0000000000_000000,
6588 0b_0000000000_000000,
6590 0b_0000000000_000000,
6591 0b_0000000000_000000,
6592 0b_0000000000_000000,
6593 0b_0001111110_000000,
6594 0b_0011000110_000000,
6595 0b_0011000110_000000,
6596 0b_0011000110_000000,
6597 0b_0001111110_000000,
6598 0b_0000000110_000000,
6599 0b_0001111100_000000,
6601 0b_0000000000_000000,
6602 0b_0011000000_000000,
6603 0b_0011000000_000000,
6604 0b_0011111100_000000,
6605 0b_0011000110_000000,
6606 0b_0011000110_000000,
6607 0b_0011000110_000000,
6608 0b_0011000110_000000,
6609 0b_0000000000_000000,
6610 0b_0000000000_000000,
6612 0b_0000000000_000000,
6613 0b_0000110000_000000,
6614 0b_0000000000_000000,
6615 0b_0001110000_000000,
6616 0b_0000110000_000000,
6617 0b_0000110000_000000,
6618 0b_0000110000_000000,
6619 0b_0001111000_000000,
6620 0b_0000000000_000000,
6621 0b_0000000000_000000,
6623 0b_0000000000_000000,
6624 0b_0000011000_000000,
6625 0b_0000000000_000000,
6626 0b_0000111000_000000,
6627 0b_0000011000_000000,
6628 0b_0000011000_000000,
6629 0b_0000011000_000000,
6630 0b_0000011000_000000,
6631 0b_0000011000_000000,
6632 0b_0001110000_000000,
6634 0b_0000000000_000000,
6635 0b_0011000000_000000,
6636 0b_0011000000_000000,
6637 0b_0011000110_000000,
6638 0b_0011001100_000000,
6639 0b_0011111000_000000,
6640 0b_0011001100_000000,
6641 0b_0011000110_000000,
6642 0b_0000000000_000000,
6643 0b_0000000000_000000,
6645 0b_0000000000_000000,
6646 0b_0001110000_000000,
6647 0b_0000110000_000000,
6648 0b_0000110000_000000,
6649 0b_0000110000_000000,
6650 0b_0000110000_000000,
6651 0b_0000110000_000000,
6652 0b_0000011100_000000,
6653 0b_0000000000_000000,
6654 0b_0000000000_000000,
6656 0b_0000000000_000000,
6657 0b_0000000000_000000,
6658 0b_0000000000_000000,
6659 0b_0011001100_000000,
6660 0b_0111111110_000000,
6661 0b_0110110110_000000,
6662 0b_0110110110_000000,
6663 0b_0110000110_000000,
6664 0b_0000000000_000000,
6665 0b_0000000000_000000,
6667 0b_0000000000_000000,
6668 0b_0000000000_000000,
6669 0b_0000000000_000000,
6670 0b_0011111100_000000,
6671 0b_0011000110_000000,
6672 0b_0011000110_000000,
6673 0b_0011000110_000000,
6674 0b_0011000110_000000,
6675 0b_0000000000_000000,
6676 0b_0000000000_000000,
6678 0b_0000000000_000000,
6679 0b_0000000000_000000,
6680 0b_0000000000_000000,
6681 0b_0001111100_000000,
6682 0b_0011000110_000000,
6683 0b_0011000110_000000,
6684 0b_0011000110_000000,
6685 0b_0001111100_000000,
6686 0b_0000000000_000000,
6687 0b_0000000000_000000,
6689 0b_0000000000_000000,
6690 0b_0000000000_000000,
6691 0b_0000000000_000000,
6692 0b_0011111100_000000,
6693 0b_0011000110_000000,
6694 0b_0011000110_000000,
6695 0b_0011111100_000000,
6696 0b_0011000000_000000,
6697 0b_0011000000_000000,
6698 0b_0000000000_000000,
6700 0b_0000000000_000000,
6701 0b_0000000000_000000,
6702 0b_0000000000_000000,
6703 0b_0001111110_000000,
6704 0b_0011000110_000000,
6705 0b_0011000110_000000,
6706 0b_0001111110_000000,
6707 0b_0000000110_000000,
6708 0b_0000000111_000000,
6709 0b_0000000000_000000,
6711 0b_0000000000_000000,
6712 0b_0000000000_000000,
6713 0b_0000000000_000000,
6714 0b_0011111100_000000,
6715 0b_0011000110_000000,
6716 0b_0011000000_000000,
6717 0b_0011000000_000000,
6718 0b_0011000000_000000,
6719 0b_0000000000_000000,
6720 0b_0000000000_000000,
6722 0b_0000000000_000000,
6723 0b_0000000000_000000,
6724 0b_0000000000_000000,
6725 0b_0001111110_000000,
6726 0b_0011000000_000000,
6727 0b_0001111100_000000,
6728 0b_0000000110_000000,
6729 0b_0011111100_000000,
6730 0b_0000000000_000000,
6731 0b_0000000000_000000,
6733 0b_0000000000_000000,
6734 0b_0001100000_000000,
6735 0b_0001100000_000000,
6736 0b_0011111000_000000,
6737 0b_0001100000_000000,
6738 0b_0001100000_000000,
6739 0b_0001100000_000000,
6740 0b_0000111100_000000,
6741 0b_0000000000_000000,
6742 0b_0000000000_000000,
6744 0b_0000000000_000000,
6745 0b_0000000000_000000,
6746 0b_0000000000_000000,
6747 0b_0011000110_000000,
6748 0b_0011000110_000000,
6749 0b_0011000110_000000,
6750 0b_0011000110_000000,
6751 0b_0001111110_000000,
6752 0b_0000000000_000000,
6753 0b_0000000000_000000,
6755 0b_0000000000_000000,
6756 0b_0000000000_000000,
6757 0b_0000000000_000000,
6758 0b_0011000110_000000,
6759 0b_0011000110_000000,
6760 0b_0001101100_000000,
6761 0b_0000111000_000000,
6762 0b_0000010000_000000,
6763 0b_0000000000_000000,
6764 0b_0000000000_000000,
6766 0b_0000000000_000000,
6767 0b_0000000000_000000,
6768 0b_0000000000_000000,
6769 0b_0110000110_000000,
6770 0b_0110110110_000000,
6771 0b_0110110110_000000,
6772 0b_0111111110_000000,
6773 0b_0011001100_000000,
6774 0b_0000000000_000000,
6775 0b_0000000000_000000,
6777 0b_0000000000_000000,
6778 0b_0000000000_000000,
6779 0b_0000000000_000000,
6780 0b_0011000110_000000,
6781 0b_0001101100_000000,
6782 0b_0000111000_000000,
6783 0b_0001101100_000000,
6784 0b_0011000110_000000,
6785 0b_0000000000_000000,
6786 0b_0000000000_000000,
6788 0b_0000000000_000000,
6789 0b_0000000000_000000,
6790 0b_0000000000_000000,
6791 0b_0011000110_000000,
6792 0b_0011000110_000000,
6793 0b_0011000110_000000,
6794 0b_0001111110_000000,
6795 0b_0000000110_000000,
6796 0b_0001111100_000000,
6797 0b_0000000000_000000,
6799 0b_0000000000_000000,
6800 0b_0000000000_000000,
6801 0b_0000000000_000000,
6802 0b_0011111100_000000,
6803 0b_0000011000_000000,
6804 0b_0000110000_000000,
6805 0b_0001100000_000000,
6806 0b_0011111100_000000,
6807 0b_0000000000_000000,
6808 0b_0000000000_000000,
6810 0b_0000000000_000000,
6811 0b_0000111000_000000,
6812 0b_0001100000_000000,
6813 0b_0001100000_000000,
6814 0b_0011000000_000000,
6815 0b_0001100000_000000,
6816 0b_0001100000_000000,
6817 0b_0000111000_000000,
6818 0b_0000000000_000000,
6819 0b_0000000000_000000,
6821 0b_0000110000_000000,
6822 0b_0000110000_000000,
6823 0b_0000110000_000000,
6824 0b_0000110000_000000,
6825 0b_0000000000_000000,
6826 0b_0000110000_000000,
6827 0b_0000110000_000000,
6828 0b_0000110000_000000,
6829 0b_0000110000_000000,
6830 0b_0000000000_000000,
6832 0b_0000000000_000000,
6833 0b_0001110000_000000,
6834 0b_0000011000_000000,
6835 0b_0000011000_000000,
6836 0b_0000001100_000000,
6837 0b_0000011000_000000,
6838 0b_0000011000_000000,
6839 0b_0001110000_000000,
6840 0b_0000000000_000000,
6841 0b_0000000000_000000,
6843 0b_0000000000_000000,
6844 0b_0000000000_000000,
6845 0b_0000000000_000000,
6846 0b_0011100000_000000,
6847 0b_0110110110_000000,
6848 0b_0000011100_000000,
6849 0b_0000000000_000000,
6850 0b_0000000000_000000,
6851 0b_0000000000_000000,
6852 0b_0000000000_000000,
6854 0b_0000000000_000000,
6855 0b_0000010000_000000,
6856 0b_0000111000_000000,
6857 0b_0001101100_000000,
6858 0b_0011000110_000000,
6859 0b_0011000110_000000,
6860 0b_0011000110_000000,
6861 0b_0011111110_000000,
6862 0b_0000000000_000000,
6863 0b_0000000000_000000,
6865 0b_0000000000_000000,
6866 0b_0001111100_000000,
6867 0b_0011000110_000000,
6868 0b_0011000000_000000,
6869 0b_0011000000_000000,
6870 0b_0011000000_000000,
6871 0b_0011000110_000000,
6872 0b_0001111100_000000,
6873 0b_0000110000_000000,
6874 0b_0001100000_000000,
6876 0b_0000000000_000000,
6877 0b_0001101100_000000,
6878 0b_0000000000_000000,
6879 0b_0011000110_000000,
6880 0b_0011000110_000000,
6881 0b_0011000110_000000,
6882 0b_0011000110_000000,
6883 0b_0001111110_000000,
6884 0b_0000000000_000000,
6885 0b_0000000000_000000,
6887 0b_0000011000_000000,
6888 0b_0000110000_000000,
6889 0b_0000000000_000000,
6890 0b_0001111100_000000,
6891 0b_0011000110_000000,
6892 0b_0011111110_000000,
6893 0b_0011000000_000000,
6894 0b_0001111100_000000,
6895 0b_0000000000_000000,
6896 0b_0000000000_000000,
6898 0b_0000111000_000000,
6899 0b_0001101100_000000,
6900 0b_0000000000_000000,
6901 0b_0001111100_000000,
6902 0b_0000000110_000000,
6903 0b_0001111110_000000,
6904 0b_0011000110_000000,
6905 0b_0001111110_000000,
6906 0b_0000000000_000000,
6907 0b_0000000000_000000,
6909 0b_0000000000_000000,
6910 0b_0001101100_000000,
6911 0b_0000000000_000000,
6912 0b_0001111100_000000,
6913 0b_0000000110_000000,
6914 0b_0001111110_000000,
6915 0b_0011000110_000000,
6916 0b_0001111110_000000,
6917 0b_0000000000_000000,
6918 0b_0000000000_000000,
6920 0b_0000110000_000000,
6921 0b_0000011000_000000,
6922 0b_0000000000_000000,
6923 0b_0001111100_000000,
6924 0b_0000000110_000000,
6925 0b_0001111110_000000,
6926 0b_0011000110_000000,
6927 0b_0001111110_000000,
6928 0b_0000000000_000000,
6929 0b_0000000000_000000,
6931 0b_0000111000_000000,
6932 0b_0001101100_000000,
6933 0b_0000111000_000000,
6934 0b_0001111100_000000,
6935 0b_0000000110_000000,
6936 0b_0001111110_000000,
6937 0b_0011000110_000000,
6938 0b_0001111110_000000,
6939 0b_0000000000_000000,
6940 0b_0000000000_000000,
6942 0b_0000000000_000000,
6943 0b_0000000000_000000,
6944 0b_0000000000_000000,
6945 0b_0001111100_000000,
6946 0b_0011000110_000000,
6947 0b_0011000000_000000,
6948 0b_0011000110_000000,
6949 0b_0001111100_000000,
6950 0b_0000110000_000000,
6951 0b_0001100000_000000,
6953 0b_0000111000_000000,
6954 0b_0001101100_000000,
6955 0b_0000000000_000000,
6956 0b_0001111100_000000,
6957 0b_0011000110_000000,
6958 0b_0011111110_000000,
6959 0b_0011000000_000000,
6960 0b_0001111100_000000,
6961 0b_0000000000_000000,
6962 0b_0000000000_000000,
6964 0b_0000000000_000000,
6965 0b_0001101100_000000,
6966 0b_0000000000_000000,
6967 0b_0001111100_000000,
6968 0b_0011000110_000000,
6969 0b_0011111110_000000,
6970 0b_0011000000_000000,
6971 0b_0001111100_000000,
6972 0b_0000000000_000000,
6973 0b_0000000000_000000,
6975 0b_0000110000_000000,
6976 0b_0000011000_000000,
6977 0b_0000000000_000000,
6978 0b_0001111100_000000,
6979 0b_0011000110_000000,
6980 0b_0011111110_000000,
6981 0b_0011000000_000000,
6982 0b_0001111100_000000,
6983 0b_0000000000_000000,
6984 0b_0000000000_000000,
6986 0b_0000000000_000000,
6987 0b_0011011000_000000,
6988 0b_0000000000_000000,
6989 0b_0001110000_000000,
6990 0b_0000110000_000000,
6991 0b_0000110000_000000,
6992 0b_0000110000_000000,
6993 0b_0001111000_000000,
6994 0b_0000000000_000000,
6995 0b_0000000000_000000,
6997 0b_0001110000_000000,
6998 0b_0011011000_000000,
6999 0b_0000000000_000000,
7000 0b_0001110000_000000,
7001 0b_0000110000_000000,
7002 0b_0000110000_000000,
7003 0b_0000110000_000000,
7004 0b_0001111000_000000,
7005 0b_0000000000_000000,
7006 0b_0000000000_000000,
7008 0b_0001100000_000000,
7009 0b_0000110000_000000,
7010 0b_0000000000_000000,
7011 0b_0001110000_000000,
7012 0b_0000110000_000000,
7013 0b_0000110000_000000,
7014 0b_0000110000_000000,
7015 0b_0001111000_000000,
7016 0b_0000000000_000000,
7017 0b_0000000000_000000,
7019 0b_0000000000_000000,
7020 0b_0001101100_000000,
7021 0b_0000000000_000000,
7022 0b_0001111100_000000,
7023 0b_0011000110_000000,
7024 0b_0011111110_000000,
7025 0b_0011000110_000000,
7026 0b_0011000110_000000,
7027 0b_0000000000_000000,
7028 0b_0000000000_000000,
7030 0b_0000111000_000000,
7031 0b_0001101100_000000,
7032 0b_0000111000_000000,
7033 0b_0001111100_000000,
7034 0b_0011000110_000000,
7035 0b_0011111110_000000,
7036 0b_0011000110_000000,
7037 0b_0011000110_000000,
7038 0b_0000000000_000000,
7039 0b_0000000000_000000,
7041 0b_0000011000_000000,
7042 0b_0000110000_000000,
7043 0b_0000000000_000000,
7044 0b_0011111110_000000,
7045 0b_0011000000_000000,
7046 0b_0011111100_000000,
7047 0b_0011000000_000000,
7048 0b_0011111110_000000,
7049 0b_0000000000_000000,
7050 0b_0000000000_000000,
7052 0b_0000000000_000000,
7053 0b_0000000000_000000,
7054 0b_0000000000_000000,
7055 0b_0011101110_000000,
7056 0b_0000111011_000000,
7057 0b_0011111111_000000,
7058 0b_0110111000_000000,
7059 0b_0011101110_000000,
7060 0b_0000000000_000000,
7061 0b_0000000000_000000,
7063 0b_0000000000_000000,
7064 0b_0001111110_000000,
7065 0b_0011011000_000000,
7066 0b_0110011000_000000,
7067 0b_0111111110_000000,
7068 0b_0110011000_000000,
7069 0b_0110011000_000000,
7070 0b_0110011110_000000,
7071 0b_0000000000_000000,
7072 0b_0000000000_000000,
7074 0b_0000111000_000000,
7075 0b_0001101100_000000,
7076 0b_0000000000_000000,
7077 0b_0001111100_000000,
7078 0b_0011000110_000000,
7079 0b_0011000110_000000,
7080 0b_0011000110_000000,
7081 0b_0001111100_000000,
7082 0b_0000000000_000000,
7083 0b_0000000000_000000,
7085 0b_0000000000_000000,
7086 0b_0001101100_000000,
7087 0b_0000000000_000000,
7088 0b_0001111100_000000,
7089 0b_0011000110_000000,
7090 0b_0011000110_000000,
7091 0b_0011000110_000000,
7092 0b_0001111100_000000,
7093 0b_0000000000_000000,
7094 0b_0000000000_000000,
7096 0b_0000110000_000000,
7097 0b_0000011000_000000,
7098 0b_0000000000_000000,
7099 0b_0001111100_000000,
7100 0b_0011000110_000000,
7101 0b_0011000110_000000,
7102 0b_0011000110_000000,
7103 0b_0001111100_000000,
7104 0b_0000000000_000000,
7105 0b_0000000000_000000,
7107 0b_0000111000_000000,
7108 0b_0001101100_000000,
7109 0b_0000000000_000000,
7110 0b_0011000110_000000,
7111 0b_0011000110_000000,
7112 0b_0011000110_000000,
7113 0b_0011000110_000000,
7114 0b_0001111110_000000,
7115 0b_0000000000_000000,
7116 0b_0000000000_000000,
7118 0b_0000110000_000000,
7119 0b_0000011000_000000,
7120 0b_0000000000_000000,
7121 0b_0011000110_000000,
7122 0b_0011000110_000000,
7123 0b_0011000110_000000,
7124 0b_0011000110_000000,
7125 0b_0001111110_000000,
7126 0b_0000000000_000000,
7127 0b_0000000000_000000,
7129 0b_0000000000_000000,
7130 0b_0001101100_000000,
7131 0b_0000000000_000000,
7132 0b_0011000110_000000,
7133 0b_0011000110_000000,
7134 0b_0011000110_000000,
7135 0b_0001111110_000000,
7136 0b_0000000110_000000,
7137 0b_0001111100_000000,
7138 0b_0000000000_000000,
7140 0b_0000000000_000000,
7141 0b_0001101100_000000,
7142 0b_0000000000_000000,
7143 0b_0001111100_000000,
7144 0b_0011000110_000000,
7145 0b_0011000110_000000,
7146 0b_0011000110_000000,
7147 0b_0001111100_000000,
7148 0b_0000000000_000000,
7149 0b_0000000000_000000,
7151 0b_0000000000_000000,
7152 0b_0001101100_000000,
7153 0b_0000000000_000000,
7154 0b_0011000110_000000,
7155 0b_0011000110_000000,
7156 0b_0011000110_000000,
7157 0b_0011000110_000000,
7158 0b_0001111110_000000,
7159 0b_0000000000_000000,
7160 0b_0000000000_000000,
7162 0b_0000000000_000000,
7163 0b_0000000000_000000,
7164 0b_0000010000_000000,
7165 0b_0001111100_000000,
7166 0b_0011010110_000000,
7167 0b_0011010000_000000,
7168 0b_0011010110_000000,
7169 0b_0001111100_000000,
7170 0b_0000010000_000000,
7171 0b_0000000000_000000,
7173 0b_0000000000_000000,
7174 0b_0000111100_000000,
7175 0b_0001100110_000000,
7176 0b_0001100000_000000,
7177 0b_0011111000_000000,
7178 0b_0001100000_000000,
7179 0b_0001100000_000000,
7180 0b_0011000000_000000,
7181 0b_0011111110_000000,
7182 0b_0000000000_000000,
7184 0b_0000000000_000000,
7185 0b_0110000110_000000,
7186 0b_0110000110_000000,
7187 0b_0011001100_000000,
7188 0b_0001111000_000000,
7189 0b_0011111100_000000,
7190 0b_0000110000_000000,
7191 0b_0011111100_000000,
7192 0b_0000110000_000000,
7193 0b_0000000000_000000,
7195 0b_0000000000_000000,
7196 0b_0111111100_000000,
7197 0b_0110000110_000000,
7198 0b_0110110110_000000,
7199 0b_0110110110_000000,
7200 0b_0111111100_000000,
7201 0b_0110110000_000000,
7202 0b_0110110000_000000,
7203 0b_0110011100_000000,
7204 0b_0000000000_000000,
7206 0b_0000000000_000000,
7207 0b_0000011100_000000,
7208 0b_0000110000_000000,
7209 0b_0000110000_000000,
7210 0b_0001111000_000000,
7211 0b_0000110000_000000,
7212 0b_0000110000_000000,
7213 0b_0000110000_000000,
7214 0b_0011100000_000000,
7215 0b_0000000000_000000,
7217 0b_0000011000_000000,
7218 0b_0000110000_000000,
7219 0b_0000000000_000000,
7220 0b_0001111100_000000,
7221 0b_0000000110_000000,
7222 0b_0001111110_000000,
7223 0b_0011000110_000000,
7224 0b_0001111110_000000,
7225 0b_0000000000_000000,
7226 0b_0000000000_000000,
7228 0b_0000110000_000000,
7229 0b_0001100000_000000,
7230 0b_0000000000_000000,
7231 0b_0001110000_000000,
7232 0b_0000110000_000000,
7233 0b_0000110000_000000,
7234 0b_0000110000_000000,
7235 0b_0001111000_000000,
7236 0b_0000000000_000000,
7237 0b_0000000000_000000,
7239 0b_0000011000_000000,
7240 0b_0000110000_000000,
7241 0b_0000000000_000000,
7242 0b_0001111100_000000,
7243 0b_0011000110_000000,
7244 0b_0011000110_000000,
7245 0b_0011000110_000000,
7246 0b_0001111100_000000,
7247 0b_0000000000_000000,
7248 0b_0000000000_000000,
7250 0b_0000011000_000000,
7251 0b_0000110000_000000,
7252 0b_0000000000_000000,
7253 0b_0011000110_000000,
7254 0b_0011000110_000000,
7255 0b_0011000110_000000,
7256 0b_0011000110_000000,
7257 0b_0001111110_000000,
7258 0b_0000000000_000000,
7259 0b_0000000000_000000,
7261 0b_0001110110_000000,
7262 0b_0011011100_000000,
7263 0b_0000000000_000000,
7264 0b_0011111100_000000,
7265 0b_0011000110_000000,
7266 0b_0011000110_000000,
7267 0b_0011000110_000000,
7268 0b_0011000110_000000,
7269 0b_0000000000_000000,
7270 0b_0000000000_000000,
7272 0b_0001110110_000000,
7273 0b_0011011100_000000,
7274 0b_0000000000_000000,
7275 0b_0011100110_000000,
7276 0b_0011110110_000000,
7277 0b_0011011110_000000,
7278 0b_0011001110_000000,
7279 0b_0011000110_000000,
7280 0b_0000000000_000000,
7281 0b_0000000000_000000,
7283 0b_0000000000_000000,
7284 0b_0001111000_000000,
7285 0b_0000001100_000000,
7286 0b_0001111100_000000,
7287 0b_0011001100_000000,
7288 0b_0001111100_000000,
7289 0b_0000000000_000000,
7290 0b_0000000000_000000,
7291 0b_0000000000_000000,
7292 0b_0000000000_000000,
7294 0b_0000000000_000000,
7295 0b_0001111000_000000,
7296 0b_0011001100_000000,
7297 0b_0011001100_000000,
7298 0b_0011001100_000000,
7299 0b_0001111000_000000,
7300 0b_0000000000_000000,
7301 0b_0000000000_000000,
7302 0b_0000000000_000000,
7303 0b_0000000000_000000,
7305 0b_0000000000_000000,
7306 0b_0000110000_000000,
7307 0b_0000000000_000000,
7308 0b_0000110000_000000,
7309 0b_0001100000_000000,
7310 0b_0011000000_000000,
7311 0b_0011000000_000000,
7312 0b_0011001100_000000,
7313 0b_0001111000_000000,
7314 0b_0000000000_000000,
7316 0b_0000000000_000000,
7317 0b_0000000000_000000,
7318 0b_0000000000_000000,
7319 0b_0000000000_000000,
7320 0b_0011111110_000000,
7321 0b_0011000000_000000,
7322 0b_0011000000_000000,
7323 0b_0011000000_000000,
7324 0b_0000000000_000000,
7325 0b_0000000000_000000,
7327 0b_0000000000_000000,
7328 0b_0000000000_000000,
7329 0b_0000000000_000000,
7330 0b_0000000000_000000,
7331 0b_0011111110_000000,
7332 0b_0000000110_000000,
7333 0b_0000000110_000000,
7334 0b_0000000110_000000,
7335 0b_0000000000_000000,
7336 0b_0000000000_000000,
7338 0b_0000000000_000000,
7339 0b_0010000010_000000,
7340 0b_0010000100_000000,
7341 0b_0010001000_000000,
7342 0b_0010010000_000000,
7343 0b_0000101100_000000,
7344 0b_0001000110_000000,
7345 0b_0010001100_000000,
7346 0b_0100001110_000000,
7347 0b_0000000000_000000,
7349 0b_0000000000_000000,
7350 0b_0010000010_000000,
7351 0b_0010000100_000000,
7352 0b_0010001000_000000,
7353 0b_0010010000_000000,
7354 0b_0000101010_000000,
7355 0b_0001001010_000000,
7356 0b_0010001110_000000,
7357 0b_0100000010_000000,
7358 0b_0000000000_000000,
7360 0b_0000000000_000000,
7361 0b_0000110000_000000,
7362 0b_0000000000_000000,
7363 0b_0000110000_000000,
7364 0b_0000110000_000000,
7365 0b_0001111000_000000,
7366 0b_0001111000_000000,
7367 0b_0000110000_000000,
7368 0b_0000000000_000000,
7369 0b_0000000000_000000,
7371 0b_0000000000_000000,
7372 0b_0000000000_000000,
7373 0b_0001100110_000000,
7374 0b_0011001100_000000,
7375 0b_0110011000_000000,
7376 0b_0011001100_000000,
7377 0b_0001100110_000000,
7378 0b_0000000000_000000,
7379 0b_0000000000_000000,
7380 0b_0000000000_000000,
7382 0b_0000000000_000000,
7383 0b_0000000000_000000,
7384 0b_0110011000_000000,
7385 0b_0011001100_000000,
7386 0b_0001100110_000000,
7387 0b_0011001100_000000,
7388 0b_0110011000_000000,
7389 0b_0000000000_000000,
7390 0b_0000000000_000000,
7391 0b_0000000000_000000,
7393 0b_0010001000_000000,
7394 0b_1000100010_000000,
7395 0b_0010001000_000000,
7396 0b_1000100010_000000,
7397 0b_0010001000_000000,
7398 0b_1000100010_000000,
7399 0b_0010001000_000000,
7400 0b_1000100010_000000,
7401 0b_0010001000_000000,
7402 0b_1000100010_000000,
7404 0b_0101010101_000000,
7405 0b_1010101010_000000,
7406 0b_0101010101_000000,
7407 0b_1010101010_000000,
7408 0b_0101010101_000000,
7409 0b_1010101010_000000,
7410 0b_0101010101_000000,
7411 0b_1010101010_000000,
7412 0b_0101010101_000000,
7413 0b_1010101010_000000,
7415 0b_1011101110_000000,
7416 0b_1110111011_000000,
7417 0b_1011101110_000000,
7418 0b_1110111011_000000,
7419 0b_1011101110_000000,
7420 0b_1110111011_000000,
7421 0b_1011101110_000000,
7422 0b_1110111011_000000,
7423 0b_1011101110_000000,
7424 0b_1110111011_000000,
7426 0b_0000110000_000000,
7427 0b_0000110000_000000,
7428 0b_0000110000_000000,
7429 0b_0000110000_000000,
7430 0b_0000110000_000000,
7431 0b_0000110000_000000,
7432 0b_0000110000_000000,
7433 0b_0000110000_000000,
7434 0b_0000110000_000000,
7435 0b_0000110000_000000,
7437 0b_0000110000_000000,
7438 0b_0000110000_000000,
7439 0b_0000110000_000000,
7440 0b_0000110000_000000,
7441 0b_1111110000_000000,
7442 0b_1111110000_000000,
7443 0b_0000110000_000000,
7444 0b_0000110000_000000,
7445 0b_0000110000_000000,
7446 0b_0000110000_000000,
7448 0b_0000110000_000000,
7449 0b_0000110000_000000,
7450 0b_1111110000_000000,
7451 0b_1111110000_000000,
7452 0b_0000110000_000000,
7453 0b_0000110000_000000,
7454 0b_1111110000_000000,
7455 0b_1111110000_000000,
7456 0b_0000110000_000000,
7457 0b_0000110000_000000,
7459 0b_0011001100_000000,
7460 0b_0011001100_000000,
7461 0b_0011001100_000000,
7462 0b_0011001100_000000,
7463 0b_1111001100_000000,
7464 0b_1111001100_000000,
7465 0b_0011001100_000000,
7466 0b_0011001100_000000,
7467 0b_0011001100_000000,
7468 0b_0011001100_000000,
7470 0b_0000000000_000000,
7471 0b_0000000000_000000,
7472 0b_0000000000_000000,
7473 0b_0000000000_000000,
7474 0b_1111111100_000000,
7475 0b_1111111100_000000,
7476 0b_0011001100_000000,
7477 0b_0011001100_000000,
7478 0b_0011001100_000000,
7479 0b_0011001100_000000,
7481 0b_0000000000_000000,
7482 0b_0000000000_000000,
7483 0b_1111110000_000000,
7484 0b_1111110000_000000,
7485 0b_0000110000_000000,
7486 0b_0000110000_000000,
7487 0b_1111110000_000000,
7488 0b_1111110000_000000,
7489 0b_0000110000_000000,
7490 0b_0000110000_000000,
7492 0b_0011001100_000000,
7493 0b_0011001100_000000,
7494 0b_1111001100_000000,
7495 0b_1111001100_000000,
7496 0b_0000001100_000000,
7497 0b_0000001100_000000,
7498 0b_1111001100_000000,
7499 0b_1111001100_000000,
7500 0b_0011001100_000000,
7501 0b_0011001100_000000,
7503 0b_0011001100_000000,
7504 0b_0011001100_000000,
7505 0b_0011001100_000000,
7506 0b_0011001100_000000,
7507 0b_0011001100_000000,
7508 0b_0011001100_000000,
7509 0b_0011001100_000000,
7510 0b_0011001100_000000,
7511 0b_0011001100_000000,
7512 0b_0011001100_000000,
7514 0b_0000000000_000000,
7515 0b_0000000000_000000,
7516 0b_1111111100_000000,
7517 0b_1111111100_000000,
7518 0b_0000001100_000000,
7519 0b_0000001100_000000,
7520 0b_1111001100_000000,
7521 0b_1111001100_000000,
7522 0b_0011001100_000000,
7523 0b_0011001100_000000,
7525 0b_0011001100_000000,
7526 0b_0011001100_000000,
7527 0b_1111001100_000000,
7528 0b_1111001100_000000,
7529 0b_0000001100_000000,
7530 0b_0000001100_000000,
7531 0b_1111111100_000000,
7532 0b_1111111100_000000,
7533 0b_0000000000_000000,
7534 0b_0000000000_000000,
7536 0b_0011001100_000000,
7537 0b_0011001100_000000,
7538 0b_0011001100_000000,
7539 0b_0011001100_000000,
7540 0b_1111111100_000000,
7541 0b_1111111100_000000,
7542 0b_0000000000_000000,
7543 0b_0000000000_000000,
7544 0b_0000000000_000000,
7545 0b_0000000000_000000,
7547 0b_0001100000_000000,
7548 0b_0001100000_000000,
7549 0b_1111100000_000000,
7550 0b_1111100000_000000,
7551 0b_0001100000_000000,
7552 0b_0001100000_000000,
7553 0b_1111100000_000000,
7554 0b_1111100000_000000,
7555 0b_0000000000_000000,
7556 0b_0000000000_000000,
7558 0b_0000000000_000000,
7559 0b_0000000000_000000,
7560 0b_0000000000_000000,
7561 0b_0000000000_000000,
7562 0b_1111110000_000000,
7563 0b_1111110000_000000,
7564 0b_0000110000_000000,
7565 0b_0000110000_000000,
7566 0b_0000110000_000000,
7567 0b_0000110000_000000,
7569 0b_0000110000_000000,
7570 0b_0000110000_000000,
7571 0b_0000110000_000000,
7572 0b_0000110000_000000,
7573 0b_0000111111_000000,
7574 0b_0000111111_000000,
7575 0b_0000000000_000000,
7576 0b_0000000000_000000,
7577 0b_0000000000_000000,
7578 0b_0000000000_000000,
7580 0b_0000110000_000000,
7581 0b_0000110000_000000,
7582 0b_0000110000_000000,
7583 0b_0000110000_000000,
7584 0b_1111111111_000000,
7585 0b_1111111111_000000,
7586 0b_0000000000_000000,
7587 0b_0000000000_000000,
7588 0b_0000000000_000000,
7589 0b_0000000000_000000,
7591 0b_0000000000_000000,
7592 0b_0000000000_000000,
7593 0b_0000000000_000000,
7594 0b_0000000000_000000,
7595 0b_1111111111_000000,
7596 0b_1111111111_000000,
7597 0b_0000110000_000000,
7598 0b_0000110000_000000,
7599 0b_0000110000_000000,
7600 0b_0000110000_000000,
7602 0b_0000110000_000000,
7603 0b_0000110000_000000,
7604 0b_0000110000_000000,
7605 0b_0000110000_000000,
7606 0b_0000111111_000000,
7607 0b_0000111111_000000,
7608 0b_0000110000_000000,
7609 0b_0000110000_000000,
7610 0b_0000110000_000000,
7611 0b_0000110000_000000,
7613 0b_0000000000_000000,
7614 0b_0000000000_000000,
7615 0b_0000000000_000000,
7616 0b_0000000000_000000,
7617 0b_1111111111_000000,
7618 0b_1111111111_000000,
7619 0b_0000000000_000000,
7620 0b_0000000000_000000,
7621 0b_0000000000_000000,
7622 0b_0000000000_000000,
7624 0b_0000110000_000000,
7625 0b_0000110000_000000,
7626 0b_0000110000_000000,
7627 0b_0000110000_000000,
7628 0b_1111111111_000000,
7629 0b_1111111111_000000,
7630 0b_0000110000_000000,
7631 0b_0000110000_000000,
7632 0b_0000110000_000000,
7633 0b_0000110000_000000,
7635 0b_0000110000_000000,
7636 0b_0000110000_000000,
7637 0b_0000111111_000000,
7638 0b_0000111111_000000,
7639 0b_0000110000_000000,
7640 0b_0000110000_000000,
7641 0b_0000111111_000000,
7642 0b_0000111111_000000,
7643 0b_0000110000_000000,
7644 0b_0000110000_000000,
7646 0b_0011001100_000000,
7647 0b_0011001100_000000,
7648 0b_0011001100_000000,
7649 0b_0011001100_000000,
7650 0b_0011001111_000000,
7651 0b_0011001111_000000,
7652 0b_0011001100_000000,
7653 0b_0011001100_000000,
7654 0b_0011001100_000000,
7655 0b_0011001100_000000,
7657 0b_0011001100_000000,
7658 0b_0011001100_000000,
7659 0b_0011001111_000000,
7660 0b_0011001111_000000,
7661 0b_0011000000_000000,
7662 0b_0011000000_000000,
7663 0b_0011111111_000000,
7664 0b_0011111111_000000,
7665 0b_0000000000_000000,
7666 0b_0000000000_000000,
7668 0b_0000000000_000000,
7669 0b_0000000000_000000,
7670 0b_0011111111_000000,
7671 0b_0011111111_000000,
7672 0b_0011000000_000000,
7673 0b_0011000000_000000,
7674 0b_0011001111_000000,
7675 0b_0011001111_000000,
7676 0b_0011001100_000000,
7677 0b_0011001100_000000,
7679 0b_0011001100_000000,
7680 0b_0011001100_000000,
7681 0b_1111001111_000000,
7682 0b_1111001111_000000,
7683 0b_0000000000_000000,
7684 0b_0000000000_000000,
7685 0b_1111111111_000000,
7686 0b_1111111111_000000,
7687 0b_0000000000_000000,
7688 0b_0000000000_000000,
7690 0b_0000000000_000000,
7691 0b_0000000000_000000,
7692 0b_1111111111_000000,
7693 0b_1111111111_000000,
7694 0b_0000000000_000000,
7695 0b_0000000000_000000,
7696 0b_1111001111_000000,
7697 0b_1111001111_000000,
7698 0b_0011001100_000000,
7699 0b_0011001100_000000,
7701 0b_0011001100_000000,
7702 0b_0011001100_000000,
7703 0b_0011001111_000000,
7704 0b_0011001111_000000,
7705 0b_0011000000_000000,
7706 0b_0011000000_000000,
7707 0b_0011001111_000000,
7708 0b_0011001111_000000,
7709 0b_0011001100_000000,
7710 0b_0011001100_000000,
7712 0b_0000000000_000000,
7713 0b_0000000000_000000,
7714 0b_1111111111_000000,
7715 0b_1111111111_000000,
7716 0b_0000000000_000000,
7717 0b_0000000000_000000,
7718 0b_1111111111_000000,
7719 0b_1111111111_000000,
7720 0b_0000000000_000000,
7721 0b_0000000000_000000,
7723 0b_0011001100_000000,
7724 0b_0011001100_000000,
7725 0b_1111001111_000000,
7726 0b_1111001111_000000,
7727 0b_0000000000_000000,
7728 0b_0000000000_000000,
7729 0b_1111001111_000000,
7730 0b_1111001111_000000,
7731 0b_0011001100_000000,
7732 0b_0011001100_000000,
7734 0b_0000110000_000000,
7735 0b_0000110000_000000,
7736 0b_1111111111_000000,
7737 0b_1111111111_000000,
7738 0b_0000000000_000000,
7739 0b_0000000000_000000,
7740 0b_1111111111_000000,
7741 0b_1111111111_000000,
7742 0b_0000000000_000000,
7743 0b_0000000000_000000,
7745 0b_0011001100_000000,
7746 0b_0011001100_000000,
7747 0b_0011001100_000000,
7748 0b_0011001100_000000,
7749 0b_1111111111_000000,
7750 0b_1111111111_000000,
7751 0b_0000000000_000000,
7752 0b_0000000000_000000,
7753 0b_0000000000_000000,
7754 0b_0000000000_000000,
7756 0b_0000000000_000000,
7757 0b_0000000000_000000,
7758 0b_1111111111_000000,
7759 0b_1111111111_000000,
7760 0b_0000000000_000000,
7761 0b_0000000000_000000,
7762 0b_1111111111_000000,
7763 0b_1111111111_000000,
7764 0b_0000110000_000000,
7765 0b_0000110000_000000,
7767 0b_0000000000_000000,
7768 0b_0000000000_000000,
7769 0b_0000000000_000000,
7770 0b_0000000000_000000,
7771 0b_1111111111_000000,
7772 0b_1111111111_000000,
7773 0b_0011001100_000000,
7774 0b_0011001100_000000,
7775 0b_0011001100_000000,
7776 0b_0011001100_000000,
7778 0b_0011001100_000000,
7779 0b_0011001100_000000,
7780 0b_0011001100_000000,
7781 0b_0011001100_000000,
7782 0b_0011111111_000000,
7783 0b_0011111111_000000,
7784 0b_0000000000_000000,
7785 0b_0000000000_000000,
7786 0b_0000000000_000000,
7787 0b_0000000000_000000,
7789 0b_0000110000_000000,
7790 0b_0000110000_000000,
7791 0b_0000111111_000000,
7792 0b_0000111111_000000,
7793 0b_0000110000_000000,
7794 0b_0000110000_000000,
7795 0b_0000111111_000000,
7796 0b_0000111111_000000,
7797 0b_0000000000_000000,
7798 0b_0000000000_000000,
7800 0b_0000000000_000000,
7801 0b_0000000000_000000,
7802 0b_0000111111_000000,
7803 0b_0000111111_000000,
7804 0b_0000110000_000000,
7805 0b_0000110000_000000,
7806 0b_0000111111_000000,
7807 0b_0000111111_000000,
7808 0b_0000110000_000000,
7809 0b_0000110000_000000,
7811 0b_0000000000_000000,
7812 0b_0000000000_000000,
7813 0b_0000000000_000000,
7814 0b_0000000000_000000,
7815 0b_0011111111_000000,
7816 0b_0011111111_000000,
7817 0b_0011001100_000000,
7818 0b_0011001100_000000,
7819 0b_0011001100_000000,
7820 0b_0011001100_000000,
7822 0b_0011001100_000000,
7823 0b_0011001100_000000,
7824 0b_0011001100_000000,
7825 0b_0011001100_000000,
7826 0b_1111001111_000000,
7827 0b_1111001111_000000,
7828 0b_0011001100_000000,
7829 0b_0011001100_000000,
7830 0b_0011001100_000000,
7831 0b_0011001100_000000,
7833 0b_0000110000_000000,
7834 0b_0000110000_000000,
7835 0b_1111111111_000000,
7836 0b_1111111111_000000,
7837 0b_0000000000_000000,
7838 0b_0000000000_000000,
7839 0b_1111111111_000000,
7840 0b_1111111111_000000,
7841 0b_0000110000_000000,
7842 0b_0000110000_000000,
7844 0b_0000110000_000000,
7845 0b_0000110000_000000,
7846 0b_0000110000_000000,
7847 0b_0000110000_000000,
7848 0b_1111110000_000000,
7849 0b_1111110000_000000,
7850 0b_0000000000_000000,
7851 0b_0000000000_000000,
7852 0b_0000000000_000000,
7853 0b_0000000000_000000,
7855 0b_0000000000_000000,
7856 0b_0000000000_000000,
7857 0b_0000000000_000000,
7858 0b_0000000000_000000,
7859 0b_0000111111_000000,
7860 0b_0000111111_000000,
7861 0b_0000110000_000000,
7862 0b_0000110000_000000,
7863 0b_0000110000_000000,
7864 0b_0000110000_000000,
7866 0b_1111111111_000000,
7867 0b_1111111111_000000,
7868 0b_1111111111_000000,
7869 0b_1111111111_000000,
7870 0b_1111111111_000000,
7871 0b_1111111111_000000,
7872 0b_1111111111_000000,
7873 0b_1111111111_000000,
7874 0b_1111111111_000000,
7875 0b_1111111111_000000,
7877 0b_0000000000_000000,
7878 0b_0000000000_000000,
7879 0b_0000000000_000000,
7880 0b_0000000000_000000,
7881 0b_0000000000_000000,
7882 0b_1111111111_000000,
7883 0b_1111111111_000000,
7884 0b_1111111111_000000,
7885 0b_1111111111_000000,
7886 0b_1111111111_000000,
7888 0b_1111100000_000000,
7889 0b_1111100000_000000,
7890 0b_1111100000_000000,
7891 0b_1111100000_000000,
7892 0b_1111100000_000000,
7893 0b_1111100000_000000,
7894 0b_1111100000_000000,
7895 0b_1111100000_000000,
7896 0b_1111100000_000000,
7897 0b_1111100000_000000,
7899 0b_0000011111_000000,
7900 0b_0000011111_000000,
7901 0b_0000011111_000000,
7902 0b_0000011111_000000,
7903 0b_0000011111_000000,
7904 0b_0000011111_000000,
7905 0b_0000011111_000000,
7906 0b_0000011111_000000,
7907 0b_0000011111_000000,
7908 0b_0000011111_000000,
7910 0b_1111111111_000000,
7911 0b_1111111111_000000,
7912 0b_1111111111_000000,
7913 0b_1111111111_000000,
7914 0b_1111111111_000000,
7915 0b_0000000000_000000,
7916 0b_0000000000_000000,
7917 0b_0000000000_000000,
7918 0b_0000000000_000000,
7919 0b_0000000000_000000,
7921 0b_0000000000_000000,
7922 0b_0000000000_000000,
7923 0b_0000000000_000000,
7924 0b_0001110110_000000,
7925 0b_0011011100_000000,
7926 0b_0011001000_000000,
7927 0b_0011011100_000000,
7928 0b_0001110110_000000,
7929 0b_0000000000_000000,
7930 0b_0000000000_000000,
7932 0b_0000000000_000000,
7933 0b_0001111000_000000,
7934 0b_0011001100_000000,
7935 0b_0011001100_000000,
7936 0b_0011011000_000000,
7937 0b_0011001100_000000,
7938 0b_0011000110_000000,
7939 0b_0011011100_000000,
7940 0b_0011000000_000000,
7941 0b_0000000000_000000,
7943 0b_0000000000_000000,
7944 0b_0011111110_000000,
7945 0b_0011000110_000000,
7946 0b_0011000000_000000,
7947 0b_0011000000_000000,
7948 0b_0011000000_000000,
7949 0b_0011000000_000000,
7950 0b_0011000000_000000,
7951 0b_0000000000_000000,
7952 0b_0000000000_000000,
7954 0b_0000000000_000000,
7955 0b_0000000000_000000,
7956 0b_0111111110_000000,
7957 0b_0011001100_000000,
7958 0b_0011001100_000000,
7959 0b_0011001100_000000,
7960 0b_0011001100_000000,
7961 0b_0011001100_000000,
7962 0b_0000000000_000000,
7963 0b_0000000000_000000,
7965 0b_0000000000_000000,
7966 0b_0011111110_000000,
7967 0b_0001100000_000000,
7968 0b_0000110000_000000,
7969 0b_0000011000_000000,
7970 0b_0000110000_000000,
7971 0b_0001100000_000000,
7972 0b_0011111110_000000,
7973 0b_0000000000_000000,
7974 0b_0000000000_000000,
7976 0b_0000000000_000000,
7977 0b_0000000000_000000,
7978 0b_0000000000_000000,
7979 0b_0001111110_000000,
7980 0b_0011011000_000000,
7981 0b_0011001100_000000,
7982 0b_0011001100_000000,
7983 0b_0001111000_000000,
7984 0b_0000000000_000000,
7985 0b_0000000000_000000,
7987 0b_0000000000_000000,
7988 0b_0000000000_000000,
7989 0b_0000000000_000000,
7990 0b_0110001100_000000,
7991 0b_0110001100_000000,
7992 0b_0110011100_000000,
7993 0b_0111110110_000000,
7994 0b_0110000000_000000,
7995 0b_0110000000_000000,
7996 0b_0000000000_000000,
7998 0b_0000000000_000000,
7999 0b_0000000000_000000,
8000 0b_0000000000_000000,
8001 0b_0011111100_000000,
8002 0b_0000110000_000000,
8003 0b_0000110000_000000,
8004 0b_0000110000_000000,
8005 0b_0000011000_000000,
8006 0b_0000000000_000000,
8007 0b_0000000000_000000,
8009 0b_0000000000_000000,
8010 0b_0001111000_000000,
8011 0b_0000110000_000000,
8012 0b_0011111100_000000,
8013 0b_0110110110_000000,
8014 0b_0110110110_000000,
8015 0b_0011111100_000000,
8016 0b_0000110000_000000,
8017 0b_0001111000_000000,
8018 0b_0000000000_000000,
8020 0b_0000000000_000000,
8021 0b_0001111000_000000,
8022 0b_0011001100_000000,
8023 0b_0011001100_000000,
8024 0b_0011111100_000000,
8025 0b_0011001100_000000,
8026 0b_0011001100_000000,
8027 0b_0001111000_000000,
8028 0b_0000000000_000000,
8029 0b_0000000000_000000,
8031 0b_0000000000_000000,
8032 0b_0001111100_000000,
8033 0b_0011000110_000000,
8034 0b_0011000110_000000,
8035 0b_0011000110_000000,
8036 0b_0011000110_000000,
8037 0b_0001101100_000000,
8038 0b_0011101110_000000,
8039 0b_0000000000_000000,
8040 0b_0000000000_000000,
8042 0b_0000000000_000000,
8043 0b_0001111100_000000,
8044 0b_0000110000_000000,
8045 0b_0000011000_000000,
8046 0b_0001111100_000000,
8047 0b_0011000110_000000,
8048 0b_0011000110_000000,
8049 0b_0001111100_000000,
8050 0b_0000000000_000000,
8051 0b_0000000000_000000,
8053 0b_0000000000_000000,
8054 0b_0000000000_000000,
8055 0b_0000000000_000000,
8056 0b_0011101110_000000,
8057 0b_0110011011_000000,
8058 0b_0110010011_000000,
8059 0b_0110110011_000000,
8060 0b_0011101110_000000,
8061 0b_0000000000_000000,
8062 0b_0000000000_000000,
8064 0b_0000000000_000000,
8065 0b_0000000000_000000,
8066 0b_0000000110_000000,
8067 0b_0011111100_000000,
8068 0b_0110011110_000000,
8069 0b_0110110110_000000,
8070 0b_0111100110_000000,
8071 0b_0011111100_000000,
8072 0b_0110000000_000000,
8073 0b_0000000000_000000,
8075 0b_0000000000_000000,
8076 0b_0000000000_000000,
8077 0b_0000000000_000000,
8078 0b_0001111100_000000,
8079 0b_0011000000_000000,
8080 0b_0001111000_000000,
8081 0b_0011000000_000000,
8082 0b_0001111100_000000,
8083 0b_0000000000_000000,
8084 0b_0000000000_000000,
8086 0b_0000000000_000000,
8087 0b_0001111100_000000,
8088 0b_0011000110_000000,
8089 0b_0011000110_000000,
8090 0b_0011000110_000000,
8091 0b_0011000110_000000,
8092 0b_0011000110_000000,
8093 0b_0011000110_000000,
8094 0b_0000000000_000000,
8095 0b_0000000000_000000,
8097 0b_0000000000_000000,
8098 0b_0000000000_000000,
8099 0b_0011111100_000000,
8100 0b_0000000000_000000,
8101 0b_0011111100_000000,
8102 0b_0000000000_000000,
8103 0b_0011111100_000000,
8104 0b_0000000000_000000,
8105 0b_0000000000_000000,
8106 0b_0000000000_000000,
8108 0b_0000000000_000000,
8109 0b_0000110000_000000,
8110 0b_0000110000_000000,
8111 0b_0011111100_000000,
8112 0b_0000110000_000000,
8113 0b_0000110000_000000,
8114 0b_0000000000_000000,
8115 0b_0011111100_000000,
8116 0b_0000000000_000000,
8117 0b_0000000000_000000,
8119 0b_0000000000_000000,
8120 0b_0000011000_000000,
8121 0b_0000110000_000000,
8122 0b_0001100000_000000,
8123 0b_0000110000_000000,
8124 0b_0000011000_000000,
8125 0b_0000000000_000000,
8126 0b_0011111100_000000,
8127 0b_0000000000_000000,
8128 0b_0000000000_000000,
8130 0b_0000000000_000000,
8131 0b_0001100000_000000,
8132 0b_0000110000_000000,
8133 0b_0000011000_000000,
8134 0b_0000110000_000000,
8135 0b_0001100000_000000,
8136 0b_0000000000_000000,
8137 0b_0011111100_000000,
8138 0b_0000000000_000000,
8139 0b_0000000000_000000,
8141 0b_0000000000_000000,
8142 0b_0000011100_000000,
8143 0b_0000110110_000000,
8144 0b_0000110110_000000,
8145 0b_0000110000_000000,
8146 0b_0000110000_000000,
8147 0b_0000110000_000000,
8148 0b_0000110000_000000,
8149 0b_0000110000_000000,
8150 0b_0000110000_000000,
8152 0b_0000110000_000000,
8153 0b_0000110000_000000,
8154 0b_0000110000_000000,
8155 0b_0000110000_000000,
8156 0b_0000110000_000000,
8157 0b_0000110000_000000,
8158 0b_0110110000_000000,
8159 0b_0110110000_000000,
8160 0b_0011100000_000000,
8161 0b_0000000000_000000,
8163 0b_0000000000_000000,
8164 0b_0000000000_000000,
8165 0b_0000110000_000000,
8166 0b_0000000000_000000,
8167 0b_0011111100_000000,
8168 0b_0000000000_000000,
8169 0b_0000110000_000000,
8170 0b_0000000000_000000,
8171 0b_0000000000_000000,
8172 0b_0000000000_000000,
8174 0b_0000000000_000000,
8175 0b_0011100000_000000,
8176 0b_0110110110_000000,
8177 0b_0000011100_000000,
8178 0b_0000000000_000000,
8179 0b_0011100000_000000,
8180 0b_0110110110_000000,
8181 0b_0000011100_000000,
8182 0b_0000000000_000000,
8183 0b_0000000000_000000,
8185 0b_0000000000_000000,
8186 0b_0000111000_000000,
8187 0b_0001101100_000000,
8188 0b_0001101100_000000,
8189 0b_0000111000_000000,
8190 0b_0000000000_000000,
8191 0b_0000000000_000000,
8192 0b_0000000000_000000,
8193 0b_0000000000_000000,
8194 0b_0000000000_000000,
8196 0b_0000000000_000000,
8197 0b_0000000000_000000,
8198 0b_0000000000_000000,
8199 0b_0000110000_000000,
8200 0b_0000110000_000000,
8201 0b_0000000000_000000,
8202 0b_0000000000_000000,
8203 0b_0000000000_000000,
8204 0b_0000000000_000000,
8205 0b_0000000000_000000,
8207 0b_0000000000_000000,
8208 0b_0000000000_000000,
8209 0b_0000000000_000000,
8210 0b_0000000000_000000,
8211 0b_0000110000_000000,
8212 0b_0000000000_000000,
8213 0b_0000000000_000000,
8214 0b_0000000000_000000,
8215 0b_0000000000_000000,
8216 0b_0000000000_000000,
8218 0b_0000000000_000000,
8219 0b_0000011111_000000,
8220 0b_0000011000_000000,
8221 0b_0000011000_000000,
8222 0b_0110011000_000000,
8223 0b_0011011000_000000,
8224 0b_0001111000_000000,
8225 0b_0000111000_000000,
8226 0b_0000011000_000000,
8227 0b_0000001000_000000,
8229 0b_0000000000_000000,
8230 0b_0011111000_000000,
8231 0b_0011001100_000000,
8232 0b_0011001100_000000,
8233 0b_0011001100_000000,
8234 0b_0011001100_000000,
8235 0b_0000000000_000000,
8236 0b_0000000000_000000,
8237 0b_0000000000_000000,
8238 0b_0000000000_000000,
8240 0b_0000000000_000000,
8241 0b_0001111000_000000,
8242 0b_0000001100_000000,
8243 0b_0000111000_000000,
8244 0b_0001100000_000000,
8245 0b_0001111100_000000,
8246 0b_0000000000_000000,
8247 0b_0000000000_000000,
8248 0b_0000000000_000000,
8249 0b_0000000000_000000,
8251 0b_0000000000_000000,
8252 0b_0000000000_000000,
8253 0b_0000000000_000000,
8254 0b_0001111000_000000,
8255 0b_0001111000_000000,
8256 0b_0001111000_000000,
8257 0b_0001111000_000000,
8258 0b_0000000000_000000,
8259 0b_0000000000_000000,
8260 0b_0000000000_000000,
8262 0b_0000000000_000000,
8263 0b_0000000000_000000,
8264 0b_0000000000_000000,
8265 0b_0000000000_000000,
8266 0b_0000000000_000000,
8267 0b_0000000000_000000,
8268 0b_0000000000_000000,
8269 0b_0000000000_000000,
8270 0b_0000000000_000000,
8271 0b_0000000000_000000,