Compile printable com executables with just nasm macros.
Given "x.asm" which we want to turn into a printable executable "x.com" we will run:
nasm printable.asm -dinput="$(nasm x.asm -o /dev/stdout | xxd -p - | tr -d '\n')" -o x.com
Let's say we want to make a printable executable that acts the same as my snake game
We can run the following code:
root@/root$ wget -q https://github.com/donno2048/snake/raw/master/snake.asm
root@/root$ nasm printable.asm -dinput="$(nasm snake.asm -o /dev/stdout | xxd -p - | tr -d '\n')" -o snake.com
root@/root$ cat snake.com ; echo
u> 8# M02 +?-"e@!C~';</xud`k@*T4UD8!G/AG9_wWvr8\wQ0=yM-):zS[ 'yT`,1P^,/PZ, PY,`P[F,p(D0F,$,~(D0F0\0F0L0F0\0F0\0F0L0F0\0F0L0F0L0F0T0FF0T0FF0L0FFF0L0F0L0F0\0F0L0F0T0F0\0FF0L0F0L0FFF0L0F0\0F0L0F0\0F0L0FF0T0F0\0F0L0F0\0F0L0F0L0FF0L0FF0L0F0L0F0L0FF0L0FF0L0FF0\0FF0L0F0L0F0T0FFF0L00L5, ,q,~-0 -0`-0~,mP[, ,u(G0aV0
We can see an executable snake.com was created and is printable, and you can verify yourself that if you take that string and save it in an executable and run it in DOSBox (or other DOS emulator) it will run a snake game.
For another example (and to prove I didn't craft snake.asm specifically to work) I searched on pouet.net for a game in the 8k category and chose blockage over tetris (just because it has more positive reviews) and "compiled it":
root@/root$ wget -q http://www.13h.org/blockage.zip
root@/root$ unzip blockage.zip blockage.com
Archive: blockage.zip
inflating: blockage.com
root@/root$ nasm printable.asm -dinput="$(xxd -p blockage.com | tr -d '\n')" -o printable_blockage.com
root@/root$ cat printable_blockage.com ; echo
u~1)w"M 9/3>/4?1); }s$|'w#nHWWi5'UPX!-!$)x1KN=56;F'<2&?o_|83 M08#$3).]_#%8: ; :".8o~' 3I:@")$ 90_w1h'Xf?~' 2@__9H s*3@15:H#f>u~_o3nBQ1#Pg*&nf__FbxXY~@Jbkh 'fG_{&5%'2!:Z#l((e{t{h#s",}7'OO >'% u!y2&%t$~.}{h%|:xF&0>-0*,'!{f/*1#>(#K-Vm^<_/5.,0u:8_652W+"k8+u~(r ?)# Y~.k+;98?;*\!),!//|_I6;#8?k8B/%d_gnh(8m-)>mo>"?h*-~V2t/;s2Y7Tw:;-5".dCm`~H=&_>V~0C_&%%i#M}6 |fG+)Ml%"C_] %$!%_ ,%8&-aw%u~~%f!7>"FOLl_(v% $%x>M._|^~$}%&~%x_78$%i!iPQSfR%_fV+{;@!wc5.pg/6.m%6\>Q&z<m_39*btY!G??}+y~K {Mef^fZm_[YXCGkeP>V^>3*{.>3Rm[f$>[;u~R9QR+x:G\::YbXQ)+^F{[oY&ZC;4 !)$_Ahi9>U+envC82+>3MBk#=$*=<f:$C]~52("6% zH69)847?>8@ .X6 +n)>:#P?}6CD3!1N~^8>-,!+o5h&(xSNg{=C u~&1|7#2|=!{:!_7V-C"v4}v%6"};f9n,3t*+;9,_.u1[_$,wk7*CC0P6#C&=<dx}%kx;y+(~(7gd~~]2~ #7]9%6#;U$o6n"^Cf*kC*8_lx(9z:*dG>^P-5#@h#[[;Cu~A[cW1 4*xvv{|3 !8!&=5:\+*_2`xh'&xn|8;o>2_3@7#@u%x5W 'NP&C(4~6#X%}?-,9@);Y_%)]M7<Yvtkdlskqn7mdo)$/l"_$k(2}42- ~mm*.@~Ird3~\~;9(u~/<c_u;!7eGC<J_qfsN>uJKN&;[V1*C33[;R:*-oJun~<k_kh>@w#c!t% _-3!+AA`"= )>m~#8$U;T81#v'$;&"|3/SE']k&o"fY~+65%9* ?{9!Q94.I&=0[_t<_/u~ <y%%2,w//Kv)%t4}_<&t0<'t,<,t(<-KNXTR86J%+M;n;k fp!Zk\,Qh600#VZ5+3(i{, p8X{-u4)>k|g57[m$g&'#dv 0~.>5iI u_Y#]m (f+__C.=G\Bu*=pku~[+|/mg;k7H/^a]u.J.k3g7k]3k!ZM} `!=-MtKA9/ 3("/Cak.AB-^{_i0;1Y!+Ca?X)`x'/-e_Zt[_.^_+Pg._1xN>fy*#x+Fx7u?_@a[:7.z7im=$zt8\n<+"Lh+u~9c!iRvi&T0)k37$w~6!7v/(6~"JXA1_;*Ap77@hugnn_o-s=&%>n&1He@;_<H|",H(F.@_v5A@'%#SH)$E##tF"bd'kOZ#+_,@B),7^p+{ofPo0nxz*+${B;M7sf_fu~F1;7+7_8~I y'NCX82aH-29t0!pJ'2b=`: +2#,.F&++8^)|+m!Tu#| |PAb"fQtW`+Z(*%l#B,I 7#=0*+B04,*R7GfX #)]5b#h?=6|mV:a515>s/@s.Q`_V0a:bu~Yi'n@`hG0ee+]!0B*HZ0,,X7#K"*#sH,=e*Gi6e[?~]f9p4=rBe*\T>(W5k{,_#0Ca!n43"gtR;PD#Bx<pXHp kiU&wkVs<(>BW8@,7^-)50'Rk59lO_4&)t-*RSt&u~[u&cag]2#{.%!4g_-:i ?aj!*Nl_gt53[Q.qw]8< 1#C,:cYbm:7k%5f2q# +C[!0%b{Q |W,vG7*`$/@l7<DL@fH$W7*~6l4-!!Po:w;*$+B;'\\#*/%q+;9'_Q(u~&00"D[]PdO"0'QqykfHG;!1[%^X9(o/oH(0m_u2'!;hR<!;Vh%(i_] +8++%6(0?__08:::<>#<?-.=5(=_e;+?+#/200)>m7"?&4,(_2"<*-).716__%0 ' 1&Q"u~1012'__R13E31R'#210123(_{S2$'$'$)$32!}K23T3j34j4~M,<C24)42#7w.=B17_#E#1B'210Sabn6a ^;,{__";0;<-\;=L=;\{_M<;0;<=.]<.-.'__n=<+<=u~^=j=>j?9>,:M<>->fL<-*8KmL;"-;<[[;0JklkN _{&%078"8):868=59#,7067/"6(&7Jgn9J8%-;?41"4P#:w94U#2/5;7 !" y^$##*"%#k_1!2 V> )* /#A.0u~J00n(A>01*1_01: Ng)/ 3w')'0{)$'6~$ >H!#$!;v* .;v$" .O6;"#$/$=>e j-v@ ,-d'*.,,--. l0*..7l+ .^2-/!5{ ;8j) C, &*31 &;81.M~L#Hu~321.^ L=g+H.F%J'/=.N2 {M&+.#e_ 4.e3#.6[7?6[U'Va@j+t'(*P#v+'v "--B)!)~9/"'(!*!(gF-#//E:+!-1o/.)-l=$/=-ll /*-s_j. _{m*"(-Z]80%%"u~%/.B^ .=7/-^;./-=w.Y[@8&6{>4-4#.'60i./a'.=V2K ~&j%1%rv"& lij$()X-$0Y/.&d#"XB--$,YC:+(^$#I(}37/!d3-*/o4#Z/Ie !R,*WDV-)s'j90 0+u~9 70 YY2j (+yA6[62 j`_d}61<GHS^i~_r{|}PEozd0;,~Y3*)iaLdlY/%&#/{<2P/)S'd<AFH<Kr2FKEd"o.)G=KPUZs__dinsx,6U,NF_ddG{-*!+N9$/.v%P|Pu~19k3.*-E>$.^W/*.*-3w./-l{K 6,8n6)l;0!,#F&.'.[v/=;*,!()L8p"3+E\`3>$0%#0w&+3-9#{o0, 3!$"!,3le;c{0*3X)&$'5RbF4 %-9RDI33(#&M#({C2(u~8&?;l6&&'Y(O+[w=a3'r0 ! 2%,W2k7@>3-dd- C. 2e 3lY\3s"''X2D,d3X)63 $,&M3C9i3 -d ,L^Z3{'f#3'm-4#na309s63&l%2'l- 326i3/XB/t4'-!'wu~Y3[H%c&X'[v 3OL& 0%H3l%,;l0UK9l#3 g (70)02%y" ,73T@."'n0) 0{&*k2&l-#2Yo3CY!#7903&^9%D2w4*'-l,&&;3F#=EQ c+!-)O3m&& 2M.k3%lU'6l u~%['{#w%/ [X$$$^7$(4; M/)=s #:%~i)cAA0 CzzYMI)))\6{)2&,;=).;624$-24=424=42^242ov674Kz2;Kf4f/e*+ld+_=<,%O)<l 3))5<%93';6=3O:=G3Xu~3HP%+L'06Y3, L!"c89}!C}!&3,ug"C,-;73ll/2!;l1x;\YR!q9w:qu0W4-'3l;') 3/Y"'^$ _0R2(Xf/X(?o#\!@;p 0;~g};pP;<m:=<M_3 k0<]<`_+=p}<@;u~{;`K0+>;/w7=)}=; ;-#_vm; /<PM,;PM5_,} }-<`;=$}m$EM@+];P_.H$}<;p<-;@^6k%M<]<0~o#0] <)m0vk]0h<@!sn+0?<m; ]mM< m0#-o?@=-:] m;,u%-u~[n} =,.-k[PK0 48==;<>]:=;[;-,>-0MN_6}M- 50-5}-8"=mRMZ-+}5O6ym5v/-.#+@7W06(;Ms'<)#GW\E36=;Q+0;A0[,p0] KY[*@K" >ap+ZP<-WE[,`o%+1u~[';@1 <M![xx&,wmn;aeM<[`p]8$6V72p<[k20j0=a{40 &n>MK]*={0=P;[3 A%`%]<=+=*2"k.G.X6405`7gi`O}P{[m@L@]KM;0Tn_aP-L@Ms[=0d]V+>v`=30@u~/0sl+%G.Ka'0/}@<<k[!=:1Y:_c@[mP2- 20/5;G>,[kyKq0:\[p_}<o:9<{`T:vaa6 &0&$7_60& &06(&0%_vvw'& 6g62_}v`&7&0*p6w607w#p6'6:wG;{&7x8u~7H73~v0V$w60&'8vV72`%,KX0x_?P67(7*x(7+u68=6nf 7X'_;l'x'4P8^9@%,Vd-9>Y>90}o'8>8!7;lrU@@;9P08';P@X']2hA@72m:(B>l.;(7(=.;0C8s[09hu~M@gC7vwv;'`@;mH^[6=x'6Y6'_ A;1`!7[u C7f1=_E7v;y2nGF?n~#@)&0$kgI@7d0+\Y7KX'{K!'O9#6=.U97K3W)p#/M>&Op_A#/UwadMQx'PVKLE)iYlY/MYlu~%XY` 6>^XF.v(}ALjhd3L>7&lw0&+'xfH6GBw(?GOM6'-Pl=_X-${?h5AP7poBss6:FYx! Lv=F /87& r_Nv6'6?X7wKC~W87808(]{e0.B';4@9.XD7&X2%'578Hu~6+&3 <)aeL0W%1&NHI@Vp2!76=6]T v S2\G#+=B$@@2"U^l7(US93VXt>Y /l$>PVG4%Y\H`WO72 ?72Q71=sQ&d`&Viy76Db+1,39v$;=&P*O2#&/X{V fM}2>%u~<7%+?}7Xq7V'%5(!b-X7}cd20K7lVlI{%_f6aW<97,q6f>=8HX'Fv#K%hzN8W[x"IDv'-'EP!1&fv1#p>B8#6 9{'H5@p`n18%06@v&k)K;"BvP=(,00=dcOw76pS6u~g84'[.c&'UG,~&WvF vV #-&@/M}&0&0!v_&'f`1-{K,#_=^q1"3. .s_v.`0L=.!.qq?X"#1];-+-_5{%.0N0^`}1!+*0?;'>!KOr<=. 01 21!B`4M^!,o}O^ 1'u~:PSn('d0.0;lgcUn)1k30T{PK>N@n7{ nN70uR7X`(;_w:!a#L82!`w73M+=AN1;u!qln86n`.03p0'cq0Nw(g;0! 8:8=l 80#@82)70-r ( 6%!40{B0 H R3=0.u~Q.H4(un?-}6m(&&!7(4@4?ns5&>-kn)0>?!s;"(7"w]#/;# $&h!$5"x=mY\0!#`;*! 6U"B @ ! _$h: rzAh/ c;sy#i#r&(L,wP51Ih; 1Iu(Ah3 s{AA!}u-#Q!-#6s$6kHh" 1I![u$-1@3C^9@ ,,h<!wyA$()4-bqC`,1P^,/PZ, PY,`P[F,,(D0F,r(D0F0T0FFF0\0F0L0FF0L0FF0\0F0L0FF0\0F0L0FFF0L0F0\0F0T0F0L0F0L0F0L0F0L0F0T0F0L0F0T0F0L0F0L0FFF0L0F0L0FFFFFF0\0F0\0F0\0F0\0FF0L0F0L0F0L0F0\0F0T0F0T0F0L0F0L0FF0T0F0\0F0\0F0T0FF0T0F0L0F0L0F0\0F0\0F0L0F0\0F0L0F0\0F0\0FF0T0F0\0F0L0F0T0F0L0FF0L0F0\0F0\0F0L0FF0\0F0L0F0\0F0\0F0L0F0L0F0L0F0\0F0\0FF0L0F0L0FF0\0F0\0F0\0F0\0F0L0F0T0F0T0FF0\0F0L0F0\0FFF0L0F0L0FF0\0F0\0FF0L0F0T0F0T0F0L0F0L0F0\0F0L0F0L0FF0L0F0L0F0\0F0L0F0L0F0\0FF0L0F,#(D0F,n,~(D0F0T0FF0\0F0L0FFF0L0F0\0FFF0T0F0\0F0L0FF0T0F0T0FF0L0F0L0FFF0L0F0L0FF0L0F0L0FF0\0F0L0F0\0FF0L0F0\0F0L0F0\0F0T0FF0L0F0\0FF0L0F0L0F0\0F0L0F0L0F0\0FF0L0FF0L0F0L0F0\0FF0\0FF0L0F0L0F0T0FF0L0F0T0FF0T0FF0\0FFF0L0F0L0F0\0F0L0FF0\0F0L0F0\0FFF0L0F0\0FF0\0F0L0F0L0F0\0F0T0F0L0F0L0F0\0F0\0F0L0F0\0F0\0F0L0F0L0F0\0FF0T0F0T0FF0T0FF0L0F0L0FFF0L0F0\0F0T0F0T0F0L0F0\0F0\0F0\0FF0\0F0L0F0L0F0L0FF0L0FFF0\0F0L0F0L0F0L0F,^,~(D0F, ,g(D0F0\0FF0\0F0\0F0T0FF0\0F0L0F0L0F0\0F0L0FF0L0F0\0F0L0F0L0F0L0F0\0FF0T0FFF0\0F0\0F0T0FF0T0FF0L0F0L0FF0L0F0\0FF0\0FF0\0F0T0FF0T0FF0L0F0L0F0\0F0L0FF0T0F0\0F0L0FFF0T0F0\0FF0L0F0\0FFFF0\0FF0\0F0L0FF0L0F0L0FFFF0\0F0T0FF0\0F0L0F0\0F0L0F0L0F0L0FF0L0F0L0FFF0T0FF0L0F0L0F0\0F0L0F0T0F0\0F0T0FFF0\0F0L0F0L0F0T0F0\0FF0L0F0L0F0\0FF0L0FF0\0F0T0F0L0F0T0F0L0F0T0FF0\0F0T0FF0T0F0L0F0T0FFF0\0F0T0FF0L0FF, ,z,~(D0F,I(D0F0L0F0\0FF0T0F0\0F0L0F0T0FFFFF0L0FFFF0T0F0\0F0\0FF0T0F0L0FF0\0FFF0L0F0\0FFF0\0FFF0L0F0T0F0\0F0\0F0T0FF0L0F0\0FFFFFFF0T0F0T0FFF0T0F0L0F0L0FF0\0F0L0F0L0F0\0F0L0F0L0FF0\0F0L0F0\0FF0\0F0\0F0L0F0\0FF0\0FFF0L0F0L0F0T0F0\0F0L0F0L0F0L0FF0T0F0L0F0\0F0L0F0L0FF0L0F0L0F0L0F0T0F0L0F0L0F0L0FFFFFF0T0FFFF0L0FF0L0F0L0FFFF0L0F0T0FF0T0F0L0FF0\0FF0L0FF0L0F0L0F0\0F0\0FF0\0F, ,w,~(D0F,U,~(D0FF0\0FFF0T0F0L0F0\0F0L0FF0L0F0L0FF0L0FFF0\0FF0L0FF0L0F0L0F0L0FFFF0L0F0L0F0L0F0\0F0L0F0L0F0T0F0\0F0L0F0L0FFF0L0FF0\0FF0L0FF0L0F0L0F0\0F0T0F0\0F0\0F0L0F0L0F0L0F0\0FF0T0F0\0FF0L0FF0\0FF0L0F0L0F0L0F0L0F0L0F0\0FF0\0F0\0F0T0F0L0F0L0F0L0F0T0F0\0F0\0F0L0F0L0FF0\0F0L0FF0\0F0T0F0L0FF0T0F0\0F0\0F0L0F0T0F0\0F0\0F0\0F0L0F0\0FF0L0F0L0FF0T0F0L0F0T0FF0L0FF0T0F0L0F0\0F0\0F0L0F0\0F0L0F0\0F0L0F0T0F0L0F0L0FFFF0L0FF0L0F0\0F,S,~(D0F,C,~(D0FF0T0F0L0F0L0F0T0F0T0FFF0T0F0L0FF0\0F0\0FF0L0FF0L0F0T0FF0\0FF0L0F0T0FF0\0FF0\0FFFFF0\0FF0T0FF0L0FF0\0F0T0F0\0FF0T0F0L0F0\0FF0\0FFF0T0FF0L0F0L0FF0L0F0L0FFF0\0FF0L0FF0L0FF0\0FF0L0F0\0F0L0F0\0F0\0FF0\0F0\0F0L0FFFFF0T0FF0L0F0L0F0L0F0L0F0T0FF0T0F0L0F0T0FF0\0FF0\0FF0\0F0L0F0L0F0L0F0T0FFF0\0F0\0F0L0FFFFF0L0F0\0F0\0FF0L0F0\0F0L0F0L0F0\0FF0T0F0L0FF0L0F0L0F0L0FF0L0F, ,m,~(D0F,g(D0FF0L0FF0L0FF0T0F0L0F0L0F0L0F0L0F0L0F0L0FFF0L0FF0T0F0\0F0\0F0\0FF0L0FFF0\0F0T0F0L0F0L0F0L0F0L0F0T0F0L0F0L0F0L0FF0\0F0L0FF0\0F0\0F0\0F0\0F0L0F0T0F0\0F0L0FF0L0F0L0F0T0FF0L0F0T0F0L0FF0\0F0L0F0\0F0T0FFF0\0F0L0F0L0F0L0FF0\0F0\0F0L0F0L0F0\0FF0L0F0\0F0\0F0T0F0L0F0L0F0\0F0\0F0L0F0L0FF0L0F0L0F0L0F0L0F0L0F0L0FFF0L0F0L0F0L0FF0\0F0\0F0L0F0\0F0\0FFF0T0F0\0F0L0FF0\0F0\0F0L0FFF0L0F0T0FFFF0L0F0L0FF0T0FFFFF0L0F0\0F,T(D0FFF0\0FF0T0FF0T0FFF0L0F0L0F0L0F0\0F0L0F0\0F0L0FFF0L0F0\0FFFF0L0F0\0FF0L0F0L0F0\0F0\0F0L0F0T0F0T0F0L0FFF0\0F0T0F0\0FF0L0FF0L0F0L0F0\0F0L0F0T0F0L0F0L0F0L0FFF0T0F0L0F0\0FF0\0F0T0F0T0F0\0F0T0F0\0F0T0F0L0F0L0F0L0F0\0FF0\0F0\0F0\0F0L0FF0\0F0L0F0\0FF0L0F0L0FF0\0F0L0FF0L0F0T0F0T0F0\0F0L0FF0L0FFFFFFF0\0FF0T0FFF0L0F0T0FF0T0FF0L0F0\0F0\0F0T0FF0\0F0L0FF0L0F0\0F0\0FF0L0F0T0F0\0F0L0F0T0FFF0T0F0\0F,~(D0F,8(D0F0\0FF0L0F0\0F0T0F0L0FF0L0F0L0FF0L0F0L0F0L0F0\0FF0\0F0L0F0T0FF0\0FF0\0FF0\0FF0\0FF0\0FF0\0FF0\0FF0L0FFF0L0F0T0FFFFF0L0F0T0FF0L0FF0\0FF0L0F0L0FFFF0T0FFFFF0T0F0\0FF0L0F0T0F0L0FF0T0FFF0\0F0L0FFF0L0F0L0F0L0FF0\0F0\0F0T0F0L0FFF0\0F0L0FF0L0F0\0FF0T0F0\0F0T0F0L0FF0T0F0\0F0L0F0T0F0L0F0L0FFFFF0T0FF0T0F0L0F0L0F0L0F0\0FF0\0FF0T0F0L0F0T0F0T0FF0L0FFFFF0L0FF, ,w(D0F, ,l,~(D0F0L0FFFFFF0T0FFFF0\0FF0L0F0L0FF0\0FF0\0F0L0F0L0FFFFF0\0F0L0F0\0FF0L0F0L0F0\0FF0L0F0T0F0T0FF0L0FF0L0F0L0F0\0F0\0F0L0F0\0F0\0F0T0F0L0FF0L0F0T0FF0L0FFFF0T0F0L0F0L0FF0T0F0L0FFF0L0F0L0F0L0F0L0F0T0F0L0F0L0F0\0F0\0F0T0FF0T0F0L0F0L0FF0T0F0T0FF0T0F0T0F0L0F0L0F0T0FF0T0F0L0F0L0F0\0FF0L0F0T0F0\0F0L0F0\0FFF0T0F0L0FF0T0F0L0FFF0\0FF0\0F0L0F0\0F0L0FF0\0F0\0F0L0FF0\0FFFF0\0F0L0FF0L0F0\0F,Z(D0F,{,~(D0F0T0FF0\0F0L0F0L0FF0L0F0\0FFF0\0FF0L0F0L0F0\0F0L0FF0\0FF0\0F0L0F0\0F0T0F0\0FFFF0L0F0L0F0L0F0T0F0\0F0T0F0L0F0L0FF0\0F0L0F0L0F0L0FF0L0F0L0F0T0FF0\0F0L0F0L0F0L0FF0L0FFF0L0F0L0F0L0FF0\0F0T0FF0L0FF0\0FF0L0F0T0FF0T0F0L0F0T0F0L0F0\0F0L0F0L0F0\0F0\0F0\0F0L0F0L0F0T0F0\0FF0T0F0L0F0L0F0L0F0\0F0L0F0L0F0L0FF0L0FFFF0T0F0\0F0L0F0L0FF0\0F0\0FF0L0F0L0FF0L0FFFF0L0F0L0F0L0FF0L0F0T0F0\0F0L0F0L0F0L0F0L0F0T0F0L0FFFF, ,o,~(D0F,s,~(D0FFFFF0L0F0L0F0\0FF0L0F0L0F0T0F0L0F0T0F0L0F0L0FF0\0F0\0F0L0F0L0F0\0F0\0F0T0FF0\0F0L0F0L0FFF0T0F0L0F0L0F0L0F0\0F0T0FFFFF0T0F0L0F0T0F0T0FF0L0F0L0FFFFF0L0F0L0FF0\0FFF0L0F0L0F0L0F0L0F0\0FFFFF0L0FF0L0FF0\0F0L0FF0\0F0L0F0\0F0L0F0T0F0\0F0\0F0\0F0L0F0\0FF0L0F0L0F0T0F0\0F0\0F0L0F0\0FFFF0T0F0T0F0\0F0L0F0L0FF0T0F0L0F0\0FFFFF0L0F0\0F0L0F0\0F0L0F0L0F0L0F0L0F0\0FF0L0F0T0FFF0T0F0L0F0\0FF0T0F0L0F,*(D0F, ,e(D0FF0L0F0\0F0L0FFF0L0F0L0F0L0F0L0F0L0FF0L0F0L0F0T0F0L0F0\0F0L0F0L0F0L0F0\0F0\0F0L0F0\0F0\0F0L0F0T0F0\0FFF0L0F0\0F0L0FF0\0FF0L0F0T0F0L0F0L0F0\0FFF0L0F0\0F0L0F0\0FF0L0F0L0F0L0F0\0FF0L0F0\0F0\0F0L0F0\0FF0L0F0\0F0\0F0\0F0\0F0L0FF0T0F0L0F0\0F0L0F0L0FFFFFFF0L0F0L0FFF0L0FF0L0FF0\0FF0L0F0L0F0\0FF0L0F0L0FFF0\0F0T0F0L0FF0T0FF0\0F0T0F0L0F0\0F0\0F0\0F0\0FFFFFF0L0F0L0F0L0F0\0F0\0F0\0FF0\0F0\0FF0L0FF0\0F, ,}(D0F, ,d,~(D0FFF0L0FFFF0L0FF0T0F0L0F0T0FFFFF0T0FF0T0FF0T0F0\0F0L0F0L0FF0T0F0L0FF0L0FFF0\0FF0L0FF0L0FFF0L0F0L0F0L0F0\0F0\0F0T0F0L0F0\0F0T0F0L0FF0L0F0L0F0L0FFF0T0F0\0F0L0F0L0FF0L0F0\0F0L0F0L0F0L0FFF0L0FFFFF0T0F0L0F0L0F0\0F0L0FF0L0F0T0F0L0FF0\0F0L0F0L0F0L0F0T0F0L0F0L0F0L0F0L0F0L0F0T0F0L0F0\0F0\0FFF0L0F0L0FF0L0F0L0FFF0L0F0L0F0L0F0\0F0\0F0T0F0L0F0L0F0\0F0L0FF0L0F0T0FFFF0L0FF0L0F0\0F0L0F0L0F0\0F, ,k,~(D0F,v,~(D0FF0L0F0\0FF0L0F0L0F0L0F0L0F0L0FF0\0F0L0F0\0FF0L0FFFF0L0F0L0FF0\0F0L0FF0L0F0L0FFFFF0\0F0L0F0L0F0\0F0L0FF0\0FF0L0F0L0F0L0FFF0L0F0T0F0L0F0T0FFF0\0FFF0T0F0L0F0\0F0\0F0\0F0\0FF0\0FFFFFF0T0F0T0FFFFF0\0F0\0FFF0\0FFF0\0FFF0\0FF0T0F0L0FF0\0FF0\0FF0\0F0\0FF0\0FFFF0L0FF0\0FF0\0FFF0T0F0L0F0\0FFF0\0FFF0\0FFF0T0F0T0FFFF0\0FFFFF0T0F,X(D0F,N,~(D0FFF0\0FFF0T0F0T0FF0\0F0\0FF0\0F0\0FFFF0\0F0\0F0\0F0\0F0\0FFF0\0F0L0FF0\0FFFF0\0FFFF0\0F0\0FF0L0F0L0F0\0F0\0FF0\0FF0\0FFF0\0F0L0F0L0F0\0F0\0FF0\0FFFF0\0FF0L0FFFFF0\0F0L0F0T0FFFF0\0FFFF0\0FFFFF0L0F0T0FFFFFF0L0F0T0F0L0F0\0FFF0\0FFFF0\0F0\0FF0\0F0\0FF0L0F0T0FF0\0F0\0F0\0F0\0F0\0FFFF0\0FFFF0\0F0T0F0\0FF0\0F0\0FF0\0F0\0F, ,s,~(D0F,u,~(D0FF0\0FF0\0FFF0L0F0L0F0\0F0\0F0\0FF0\0FFFF0L0F0L0F0\0FFFF0L0F0L0FF0\0F0\0FF0\0FF0L0F0L0F0\0FFFFFFFF0\0F0L0F0\0F0\0F0\0F0\0FF0\0F0\0FF0\0F0\0F0\0F0\0F0L0F0L0FF0\0F0\0F0\0F0\0FF0L0F0L0F0\0F0\0FF0\0F0\0FF0L0FF0\0FF0\0F0\0F0\0F0L0F0L0F0\0F0\0FF0\0F0L0FF0\0F0L0F0L0F0\0F0L0F0\0F0\0F0L0F0L0FF0\0F0\0F0\0F0\0F0\0F0L0F0L0F0\0F0\0F0\0F0\0F0\0F0\0F0\0FFF0\0F0\0F0\0F0\0FF0L0F0\0F0\0F0\0F0\0F0\0F0\0FF0\0F0\0F,p,~(D0F,@,~(D0F0L0F0\0F0\0F0L0F0\0FFF0\0F0\0F0\0F0\0FF0T0F0\0F0\0F0\0F0L0FF0\0F0\0F0\0F0\0F0L0F0L0F0\0F0\0F0\0F0\0FF0\0F0\0F0\0F0L0F0L0F0\0F0\0F0\0F0\0F0L0F0\0F0\0F0\0F0\0F0\0F0L0F0T0F0\0F0\0F0\0F0L0F0\0F0\0F0\0F0\0FFFF0\0F0\0F0\0FFF0L0F0L0FF0\0FF0\0F0L0F0L0F0\0F0\0F0\0F0\0F0L0F0\0F0\0F0\0F0\0F0\0F0L0F0\0F0\0F0\0F0L0F0T0F0\0F0\0F0\0FFF0\0F0\0F0\0F0L0F0L0F0\0F0\0F0T0FFF0\0FF0L0FF0\0F0\0F0L0F0L0F0\0F0\0FF0L0FF0\0F0\0F0\0FF0L0F0\0F0\0FF0L0F0L0F0T0FF,D(D0F,a(D0F0\0F0\0F0\0F0\0FF0\0FF0L0F0L0F0\0FF0\0F0L0F0T0FF0\0F0T0F0L0F0T0F0L0F0\0F0\0FF0L0F0\0F0\0F0\0F0\0FFF0\0F0\0F0\0FF0L0F0\0F0\0FFFFFFFF0\0F0L0FFFFF0L0F0\0F0\0F0\0FF0\0FF0L0F0\0FF0\0F0\0F0\0F0\0F0L0F0\0FF0\0F0L0F0L0F0\0F0\0F0\0F0\0F0\0F0\0F0\0F0\0F0L0F0L0F0\0F0\0F0\0FF0L0FF0\0F0\0F0\0F0L0F0L0F0\0FF0\0F0\0F0L0F0L0F0\0F0\0F0\0F0\0F0L0F0L0F0\0F0\0F0\0F0\0FF0L0FF0\0F0\0F0L0FFF0\0F0\0F0\0F0\0F0L0FFF0\0F0\0F0\0F0\0F,z(D0F,],~(D0F0\0F0T0F0\0F0L0F0L0F0\0F0\0F0L0FF0\0F0\0F0L0F0T0F0\0F0\0F0\0F0L0F0L0F0\0FFF0L0F0T0F0\0F0\0F0L0F0\0F0\0F0\0F0\0F0\0F0\0F0\0F0L0F0\0F0L0F0\0F0\0FF0\0F0\0F0\0F0L0F0\0FF0\0F0L0F0\0FF0\0F0\0F0\0FF0L0F0\0F0\0F0\0FFFF0\0F0\0FF0L0F0\0F0T0F0L0FF0\0F0\0F0T0F0L0F0\0F0\0FF0L0FF0\0F0T0FFFFF0L0FFF0L0F0\0F0L0F0\0FF0T0F0\0F0\0F0\0FF0T0F0\0F0\0F0\0F0L0FF0\0FF0\0F0L0FF0\0F0\0FFF0\0FF0L0FFF0\0FFFF0L0F0T0F0\0F0\0F0T0F0\0F,9(D0F, ,d,~(D0F0L0F0\0F0T0F0T0F0\0FFFFF0\0F0\0F0\0FFF0L0FF0\0F0L0F0\0FF0L0F0T0FFF0T0F0L0F0L0F0L0F0L0F0L0F0L0F0L0F0L0F0L0F0L0F0L0F0L0F0L0FFFFFF0T0F0T0F0T0FF0L0F0\0F0L0F0L0F0L0FF0L0FFF0L0F0\0F0T0F0L0FFF0L0FFFF0\0F0L0F0L0F0\0F0L0FFFF0L0FF0L0F0L0FFFFFF0T0F0L0FF0L0F0L0F0\0FFFFFF0T0FFFFFFF0T0F0T0F0L0FFFF0\0FFFF0L0F0\0F0\0F0T0F0L0F0L0FF0\0F0\0F0\0F0L0F0L0FF0L0FF, ,j,~(D0F,=(D0F0\0F0\0FF0L0F0\0F0\0F0\0F0L0F0T0F0\0F0\0FF0L0F0\0F0\0F0\0F0\0F0\0F0L0F0L0F0\0F0\0F0\0FFFF0\0F0T0FF0\0FF0T0F0\0F0L0F0T0F0L0F0\0F0\0F0\0F0L0F0\0F0\0F0\0F0\0FFF0\0F0\0F0\0F0\0F0\0F0\0F0\0F0\0F0L0F0T0FF0\0F0T0FFF0L0F0L0F0\0FF0\0F0L0F0\0F0\0FF0L0F0\0F0\0F0\0FF0\0F0\0FF0L0FF0\0F0\0F0\0FFF0L0F0T0FF0\0FFFFFF0T0FF0\0F0L0FF0\0F0\0FF0T0FFF0L0F0T0F0\0F0\0FFFFFF0L0F0\0F0\0F0\0FF0L0F0\0F0\0FF0L0F0\0F0\0F,N,~(D0F,G,~(D0FF0\0F0T0F0\0F0L0F0T0F0\0F0\0FF0L0F0\0FFFFF0\0FF0\0F0\0F0L0F0T0F0\0F0\0F0\0F0\0FF0\0F0\0F0L0F0L0F0L0F0L0FF0L0F0\0F0\0F0L0F0L0F0\0F0\0FF0\0F0\0F0L0FF0\0F0\0FF0L0FF0\0FFF0\0F0\0F0L0FF0L0F0\0FF0L0FF0L0F0T0F0L0F0\0F0\0F0\0F0T0F0L0FFF0\0F0L0F0\0F0\0F0\0FF0\0F0\0F0L0F0L0FF0\0FFFF0\0F0\0FF0L0FF0\0F0\0FFF0\0F0\0F0\0FF0\0F0\0F0\0F0L0FF0\0FF0L0F0T0F0\0F0\0F0L0F0L0FF0L0FF0L0F0L0F0\0FF0L0F0\0F0\0F0\0F0\0F0L0F,$,~(D0F, ,c(D0F0L0F0\0FFF0\0FF0\0F0L0FFF0L0F0\0F0\0FFFF0\0F0L0FF0L0F0\0F0L0FFFF0L0F0L0FFF0T0F0L0F0\0F0\0F0\0FF0\0F0\0F0L0F0T0F0\0F0\0F0L0F0T0F0L0F0\0F0\0F0\0F0T0F0\0FF0L0F0T0F0\0FF0L0FF0\0F0T0FFF0\0F0\0F0L0F0T0FFF0\0F0\0F0L0F0L0FF0\0F0L0FF0\0F0\0F0L0FFF0\0F0\0FF0\0F0\0FF0L0F0L0F0T0F0L0FF0\0FF0\0F0T0FF0T0F0\0F0L0F0\0F0T0FF0L0F0\0F0L0F0T0F0\0FF0\0F0L0F0L0F0L0F0\0F0\0F0\0F0\0F0L0F0\0F0L0F0\0F0T0F0L0FFF0T0F0L0F0\0F,*(D0F,R,~(D0FFFFF0T0FF0\0FFFF0L0FF0\0F0L0F0L0F0\0F0\0FFF0\0F0T0F0L0FFF0L0FF0\0F0\0F0L0FFF0L0F0\0FF0L0FF0T0F0\0FFF0L0F0L0FF0L0F0\0F0\0F0\0FF0L0F0L0F0\0F0\0F0\0F0L0F0T0F0L0F0\0F0\0F0\0F0T0F0\0F0\0F0T0F0\0F0\0F0T0F0L0F0\0F0\0F0T0F0L0F0\0F0\0FF0L0F0\0F0\0FF0L0F0T0F0T0F0\0FFF0\0F0\0F0L0FF0\0F0L0F0T0FF0\0F0\0FFF0\0FFFF0\0F0\0FF0\0F0L0F0L0F0\0F0\0F0\0F0\0F0T0F0T0F0\0F0\0F0L0FF0\0F0T0F0L0F0\0FF0T0FF0L0F0\0F0L0F,;,~(D0F, ,n(D0F0\0F0L0FF0\0F0T0FF0\0F0L0FF0L0F0\0F0\0F0\0F0L0F0\0F0\0FF0T0FFF0\0F0L0FF0\0F0\0F0\0F0T0FFF0\0FF0\0FF0T0F0\0F0\0FF0L0F0\0FF0\0FF0L0F0T0FFF0L0F0L0FF0\0FFF0L0F0\0FFFF0L0F0\0F0\0F0\0F0\0F0L0F0\0F0\0F0T0F0\0F0\0FF0L0F0\0FF0L0F0L0F0\0F0\0F0\0F0L0F0T0F0T0F0L0FFF0L0F0\0F0L0F0L0F0\0FFF0L0FF0L0F0\0F0L0F0\0F0L0F0L0FF0\0F0L0FF0\0F0\0FF0\0FF0\0F0L0F0T0F0\0FFF0T0F0\0F0L0F0\0F0L0F0\0FF0\0FF0L0F0\0F0L0F0\0F,/(D0F,y,~(D0F0L0F0\0F0L0FF0\0FF0\0F0\0FF0L0F0L0F0L0FF0L0F0\0F0\0F0L0F0\0F0L0F0\0F0T0FF0L0F0\0F0T0F0\0F0\0FF0L0FF0\0F0L0FF0L0F0T0FFF0T0F0L0FF0\0FF0\0F0T0FF0L0F0L0F0\0FFFFFF0\0FF0T0F0L0FF0\0FF0\0FFF0\0F0T0F0\0FF0L0F0L0FF0\0FF0\0FF0\0FFF0L0F0\0F0\0FFF0\0F0\0FF0\0FF0L0FFFF0\0FFF0L0F0L0FFF0\0F0\0FF0\0FF0L0F0L0FF0\0FFFFF0T0FF0L0FF0\0F0T0F0\0FFFFF0L0FF0L0FF,$,~(D0F, ,p,~(D0F0L0FFFF0L0FF0T0F0T0FF0L0FFF0\0FF0T0F0\0F0L0FF0\0FFFF0\0F0\0F0L0F0L0F0\0F0T0FF0T0F0T0F0T0FFF0L0F0L0F0L0FFF0T0F0\0FF0L0F0L0F0L0F0T0F0\0F0L0F0L0FFFFF0L0FFF0L0F0L0F0\0FF0L0F0T0FF0L0F0\0F0T0F0\0FFF0L0F0L0F0T0F0\0FF0\0F0L0FF0T0F0\0F0\0F0L0FF0L0FFF0\0F0T0F0L0FFFF0L0FFF0L0F0L0F0\0F0L0F0\0F0L0F0L0FF0L0F0L0FFFF0\0F0\0F0\0F0L0FF0T0FFFF0L0F0L0FF0L0FF0L0FF0\0FF0\0F,g(D0F, ,n,~(D0FF0T0F0L0FFF0T0F0\0F0L0F0\0FFF0L0FFFFFF0\0FFFF0T0F0L0F0L0FF0L0F0\0F0T0F0L0F0L0F0\0F0L0FF0\0FF0L0F0\0FFF0L0F0T0FFF0T0FFF0T0F0L0F0L0FFFFFF0L0FF0T0FF0T0F0L0FF0L0FF0\0F0L0F0T0F0L0F0\0FF0L0FFF0\0F0T0FF0T0FF0\0F0L0F0L0F0\0F0L0F0L0F0L0FFFF0L0FFFF0L0F0L0F0L0FFF0L0FFF0L0F0\0F0\0F0L0F0L0FF0L0FF0L0FFFFF0L0F0T0F0L0FFF0L0F0\0F0L0FFF0T0F0T0F0\0F0L0F,Q,~(D0F, ,i(D0F0\0FFF0L0F0\0F0T0F0L0F0\0FF0L0F0T0FF0\0FF0L0F0\0FFFF0T0F0L0F0T0F0T0F0L0F0T0FFFF0L0FF0L0F0\0FF0T0FF0T0F0L0F0L0F0\0F0L0FFFFF0L0F0L0FF0L0F0\0F0L0FF0L0F0\0F0L0FF0L0FFF0T0F0L0F0L0F0L0F0\0F0L0FF0L0FF0L0F0T0F0\0F0L0F0\0F0L0F0\0F0L0F0L0F0T0F0T0F0T0F0L0F0T0F0\0F0L0F0L0F0T0F0T0F0L0FF0L0FFF0T0F0\0FF0\0FF0L0F0L0F0L0F0L0FF0L0FF0T0F0\0FF0\0FF0\0F0L0F0L0FF0\0F0L0FF0L0FF0\0F0L0FF0L0F0L0FF0\0F0L0F0\0F,H(D0F,g,~(D0F0\0FF0\0F0\0F0L0FFFF0\0FFF0L0FFF0L0FF0L0FF0\0FF0\0FF0L0FF0L0FF0\0F0L0F0L0F0\0FF0L0FFF0L0FF0\0F0T0FFFF0\0FF0L0F0L0FFFFFF0\0F0L0FF0L0FF0\0FFF0L0F0\0F0L0F0\0FF0L0FFFF0L0F0L0F0\0FF0\0FFFFF0\0F0\0F0\0F0\0F0L0F0L0FFFFF0\0F0\0F0L0F0L0F0\0F0\0FFFFF0T0FF0L0FFFF0\0F0L0FFFFFF0L0FFF0T0FF0T0F0\0F0\0FFFF0T0FFF0T0F0\0FF,[(D0F, ,h,~(D0FFF0L0FF0\0FFF0L0F0\0FF0L0F0L0F0L0F0L0FFFFF0\0FFFF0L0FFFFFF0\0FF0L0FFF0L0FF0T0F0T0FF0\0FF0T0F0L0F0L0FF0\0F0L0F0\0F0L0F0T0F0L0FFF0L0F0L0FF0L0FFFFF0L0FFFFFFF0\0F0\0F0L0FF0\0FFFFF0L0FF0L0FF0T0FFF0L0F0L0F0L0F0T0FF0L0F0L0F0L0FFFFFF0L0FFF0L0F0L0F0L0F0\0F0L0FFFFFFFFF0L0FFF0L0FFF0L0F0L0FF0L0FFFFF,%,~(D0F, ,w,~(D0F0\0F0L0F0L0FFF0T0F0\0F0L0F0L0F0L0FFFFF0L0FF0L0FFF0L0FF0\0FFF0L0F0L0F0T0F0T0FFFF0L0FFFF0L0FF0L0F0T0F0L0FFFF0T0F0L0F0L0F0L0F0T0F0L0F0L0F0T0FFFF0L0FF0L0F0L0FF0L0FF0L0F0L0FFF0L0F0L0FF0L0F0\0FFFFFFF0T0F0L0FFF0\0FF0T0FF0L0F0\0F0L0F0\0FFF0T0FF0L0F0L0FFF0L0F0\0FF0T0F0\0F0T0F0L0FFF0L0F0\0FFF0T0FFF0\0F0\0F0L0FF0\0F0T0F0L0F0\0F0L0F0T0FFF0T0FF,l,~(D0F,%(D0F0T0F0T0FF0L0FFF0T0FFFF0\0F0L0F0\0F0\0FFF0L0F0L0FFFF0L0F0\0FFFF0T0FFF0\0F0L0F0L0F0L0FF0\0F0L0FFF0L0F0\0F0L0FFF0L0F0T0F0L0FF0L0F0L0FF0L0FF0L0F0L0F0\0F0L0FF0L0F0L0FF0T0FF0L0F0T0FFFFF0T0F0\0FF0L0F0L0F0L0F0L0FF0T0FF0L0FF0\0F0L0FF0\0F0T0F0L0FFF0\0F0L0FFFFFF0L0FFFFF0\0F0L0FF0T0FFFF0T0FFF0\0FF0L0F0\0F0T0F0\0F0L0FF0L0FFFF0L0F0T0F0L0F0\0F, ,t,~(D0F, ,q(D0FFF0\0F0\0F0T0FF0\0FF0L0FFFFF0L0FF0\0F0L0FF0L0F0T0FF0L0FF0L0FFF0\0FFFFFF0L0F0L0FF0T0F0L0FF0T0F0T0F0T0F0L0FF0\0FF0L0F0\0F0\0FFF0\0FF0L0F0L0FF0\0FFFFF0L0F0L0F0L0F0\0F0L0FFF0T0F0\0FFFF0T0F0T0F0T0FFF0L0F0\0FFF0L0F0\0F0T0F0L0FF0T0FFF0L0FFFFF0L0F0\0FFF0T0F0T0F0L0F0L0FF0L0F0\0F0L0FF0L0F0L0FFF0\0F0T0FF0\0F0L0FF0L0FFF0L0FF0\0FF0L0F0T0F,7(D0F,p(D0F0L0F0\0FF0\0FF0L0F0L0FF0T0FFFF0L0F0\0FF0L0FF0L0F0L0FF0L0F0T0F0\0F0T0FF0T0F0L0F0L0F0L0F0\0F0T0F0T0F0\0F0L0F0T0F0\0F0T0FFF0\0FF0L0FFF0T0F0T0F0\0FF0L0F0T0FF0\0FFFFF0T0FFF0L0F0\0FFFFFF0L0FFF0L0FFF0\0FFFFFF0L0F0L0FFF0\0FFFFFFF0L0FFF0\0FF0T0F0T0F0\0F0\0F0\0FFF0L0FFFFF0\0F0\0FF0L0F0L0FFFF0\0F0L0F0L0F0\0FF0L0F0L0FFFF0\0FF, ,f(D0F,8,~(D0F0L0FFFFF0\0F0L0F0\0FFF0\0FFFFFFF0\0FF0L0F0\0FFFFF0\0FFFFFF0L0FFF0T0F0L0FFFF0L0FFFF0L0F0L0F0L0F0\0FF0\0FF0\0F0L0F0\0FFF0L0FFF0T0F0T0FFFF0T0FFFF0L0FFFF0L0F0L0FF0L0F0L0F0L0FF0\0FFF0\0FF0L0FFF0L0FF0\0FFF0\0F0\0F0\0F0L0FF0\0F0\0F0\0FF0\0F0L0F0\0F0\0F0\0F0\0FFFFF0L0F0T0FFFF0L0F0L0F0\0FFFFF0\0F0\0FF0\0F,I,~(D0F,*(D0F0L0F0\0F0L0F0\0F0L0FF0L0F0\0F0\0F0L0F0\0FF0\0F0\0F0\0F0\0F0T0F0L0F0\0FF0\0F0\0FFF0\0F0\0F0\0F0\0FFFF0\0F0\0F0\0FFF0T0FF0\0FF0\0FF0L0F0\0F0\0F0\0F0\0F0T0F0\0F0\0FF0\0FF0\0F0T0F0L0F0T0F0L0FFF0T0F0\0F0\0FF0T0F0\0F0\0F0\0F0\0F0\0FF0T0FF0\0F0L0F0\0F0\0F0\0F0\0F0\0FF0T0F0L0F0L0FF0\0FF0L0FF0L0FF0\0F0L0FFF0L0F0T0F0L0F0\0FF0\0F0T0F0L0F0L0F0L0F0L0F0T0FF0L0F0L0F0\0F0\0F0\0F0L0FF0\0FF0L0F0\0F0\0FF0L0FFF0T0F0L0F,U(D0F,;(D0F0T0F0L0F0\0F0T0F0\0F0T0F0L0F0L0F0T0F0L0F0L0F0L0F0\0F0\0F0\0F0L0F0\0F0L0FF0\0F0L0F0\0F0L0F0T0F0L0FF0L0FF0\0F0L0FF0L0FF0\0FF0L0F0L0F0\0F0\0FFF0L0F0L0F0L00L1,;-0 -0 -0s,P,~P[,4(G0aV0