create program to create bitmap

Game development specific discussions.
Post Reply
thesanman112
Posts: 538
Joined: Jul 15, 2005 4:13

Re: create program to create bitmap

Post by thesanman112 »

leopardpm, congratulations !!!
Boromir
Posts: 463
Joined: Apr 30, 2015 19:28
Location: Oklahoma,U.S., Earth,Solar System
Contact:

Re: create program to create bitmap

Post by Boromir »

leopardpm wrote:ok fine, ya'll are forcing me to actually code it up, huh? drats, I have been avoiding doing this just because I ultimately feel it is easier just to link to a hosted image than to first convert it then have others have to unconvert it... but it is an interesting exercise, right? lol
I have to agree on it being easier to just link to a hosted image. It's easier client side as well because the image can be looked at right then and there. The problem with image hosting is how they expire. That's where I see the advantage of plain text.
... getting married on Thursday so I don't expect much coding over the next few days though....
Congratulations! Wishing you the best!
dodicat
Posts: 7976
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: create program to create bitmap

Post by dodicat »

I tried a method using base 36 to condense the output size.
It creates a running file (colours.bas).
You can enlarge the bitmap with the mouse wheel, but the output file size remains the same.
Congratulations leopardpm.
Line 23 for your bitmap.

Code: Select all





'Data maker
#include "crt.bi"
function ULongToBase(N as ulong,_base as byte) as string
    dim as zstring * 50 buffer
    _itoa(n,@buffer,_base)
    return ucase(buffer)
end function


Screen 20,32
' "colours.bas" wii be the output file

Type bitmap_size
    As Long across,down
End Type

'========================  YOUR BITMAP ===============
Dim  mybitmap As String ="azul.bmp" '<--- here
'==============================================

Redim shared As ULong pixel_colours(0,0) 'shared to increase potential size

Function size(bmp As String) As bitmap_size 'fetch bitmap width/height 
    Dim As Long w,h
    Open bmp For Binary As #1
    Get #1, 19, w
    Get #1, 23, h
    Close #1
    Return Type<bitmap_size>(w,h)
End Function

Sub load(bmp As String,pixels() As Long) 'load bitmap into array of point colours
    Bload bmp
    dim count as Long
    dim flag as long
    dim as string comma=","
    dim as string dash="_"
    Dim temp As bitmap_size=size(bmp)
    Redim pixels(temp.across,temp.down)
    if temp.across*temp.down=0 then print bmp;" Not found":sleep:end
    windowtitle str(temp.across) + ", " + str(temp.across)
    dim max as Long=(1+temp.across)*(1+temp.down)
     For x As Long=0 To temp.across
        For y As Long=0 To temp.down
            count+=1
     Next y
    Next x
    dim as long c=count- count mod 8
    count=0
    For x As Long=0 To temp.across
        For y As Long=0 To temp.down
            count=count+1
            if count>c-1 then flag=1:comma="":dash=""
            dim as ulong clr=Point(x,y) 
            if clr=0 then clr=rgb(0,0,0)
            pixels(x,y)=clr
            if count=max then
                comma=""
                dash=""
            end if
            'THIS IS THE CONVERSION
            if count mod 8=1 then print #2,"""";
            dim as string g= right( "0000000" + ulongToBase(pixels(x,y),36),7)
              print #2, g ; 
            if count mod 8=0 then print #2,"""" & comma + dash
            if flag then exit sub
        Next y
    Next x
    
End Sub

'Use mouse or keys to move bitmap in this run
Sub drawbitmap(mx As long,my As Long,mybitmap As bitmap_size,scale as single=1)
    #macro magnify(pivotx,pivoty,px,py,scale)
    var rotx=scale*(px-pivotx)+pivotx
    var roty=scale*(py-pivoty)+pivoty
    #endmacro
    For x As Long=mx To mx+mybitmap.across
        For y As Long=my To my+mybitmap.down
            magnify(mx,my,x,y,scale)
            line(rotx-scale/2,roty-scale/2)-(rotx+scale/2,roty+scale/2),pixel_colours(x-mx,y-my),BF
        Next y
    Next x
    
End Sub

Dim As bitmap_size bitmap_info=size(mybitmap) 'get height/width of bitmap

'initial running code for external file
open "colours.bas" for output as #2
print #2,"dim shared as long w,h"
print #2,"w=";;str(bitmap_info.across)
print #2,"h=";str(bitmap_info.down)
print #2,"redim shared as ulong a((w+1)*(h+1))"
print #2 ,"DATA _"

draw string(bitmap_info.across,bitmap_info.down), "PLEASE WAIT"

load mybitmap,pixel_colours() 'set bitmap colours into an array


'variables for the mouse and arrow keys
Dim As Long mx,my,mw,mb,copymx,copymy
dim as string i

'Set magnification
Do
    Getmouse(mx,my,mw,mb)
    if mb=2 then exit do
    if mw<0 then mw=10
    if mw=0 then mw=1
    If mb=1 Then
        copymx=mx:copymy=my
    End If
    i=inkey
    if i= chr(255) + "K"  then copymx=copymx-5
    if i= chr(255) + "M"  then copymx=copymx+5
    if i= chr(255) + "P"  then copymy=copymy+5
    if i= chr(255) + "H"  then copymy=copymy-5
    
    Screenlock
    Cls
    
    drawbitmap(copymx,copymy,bitmap_info,mw/10) 'SCALE 
    draw string(20,20),"TURN MOUSE WHEEL  --- MAGNIFICATION = "&str(mw/10)
    draw string(20,50),"USE ARROW KEYS OR"
    draw string(20,80),"LEFT MOUSE TO DRAG IMAGE"
    draw string(20,110),"ESC OR RIGHT CLICK TO END"
    
    
    Screenunlock
    Sleep 1,1
    
Loop Until i=Chr(27)

'More running code for external file:
print #2," #include ";chr(34);"crt.bi";chr(34)
print #2,"screen 20,32"
print #2,"dim shared as double magnification"
print #2,"dim shared as any pointer image"
print #2,"image=imagecreate(w,h)"
print #2,"magnification= "; mw/10

print #2,"function ULongFromBase(N as string,_base as byte) as ulong"
 print #2,"   return strtoul(n,0,_base)"
print #2,"end function"

print #2,"function map(a as single,b as single,x as single,c as single,d as single) as single"
 print #2,"   return ((d)-(c))*((x)-(a))/((b)-(a))+(c)"
print #2,"end function"

print #2,"function scaler(im as any ptr) as any ptr"
print #2,"    dim as integer w,h"
print #2,"    dim as long x,y,xpos,ypos"
print #2,"    imageinfo im,w,h"
print #2,"    dim as long nx=w*magnification,ny=h*magnification"
print #2,"    dim as any ptr im2=imagecreate(nx,ny)"
print #2,"    for x=0 to nx"
print #2,"        for y =0 to ny"
print #2,"            xpos=map(0,nx,x,0,w)"
print #2,"            ypos=map(0,ny,y,0,h)"
print #2,"            pset im2,(x,y),point(xpos,ypos,im)" 
print #2,"        next y"
print #2,"    next x"
print #2,"    return im2"
print #2,"end function"

print #2,"sub read_data()"
print #2,"    dim as long ctr"
print #2,"  dim as single c=ubound(a)\8"
print #2,"redim as string s(1 to c)"
print #2,"for n as long=1 to c"
 print #2,"   read s(n)"
print #2,"    for m as long=1 to len(s(n)) step 7"
 print #2,"       ctr+=1"
print #2,"        dim as ulong x= ULongFromBase( mid(s(n),m,7) ,36)"
print #2,"        a(ctr)=x"
print #2,"        next m"
print #2,"    next n"
print #2,"end sub"

print #2,"Sub drawbitmap_to_image(scale as single=1,mx As long=0,my As long=0)"
print #2,"dim as long ctr"
print #2,"For x As long=0 To w"
print #2,"For y As long=0 To h"
print #2,"pset image,(x,y),a(ctr)"
print #2,"ctr+=1"
print #2,"Next y"
print #2,"Next x"
print #2,"End Sub"

print #2,"read_data()"

print #2,"drawbitmap_to_image(magnification)"

print #2,"var image2=scaler(image)"

'BITMAP image is now in image
'This just displays the image

print #2,"locate 2,2"
print #2,"windowtitle " ;chr(34)+ " magnification = " + str(mw/10);chr(34)
print #2,"put( 0, 0),image2,pset"

print #2,"Sleep"

print #2,"imagedestroy image"
print #2,"imagedestroy image2"

close #2
locate 10,10
print "SAVED -- colours.bas is your file"
print "Press a key to end"
sleep


 
BasicCoder2
Posts: 3906
Joined: Jan 01, 2009 7:03
Location: Australia

Re: create program to create bitmap

Post by BasicCoder2 »

@dodicat,
When there is a limited number of colors I think my program makes less lines of data statements. I modified my code in the first post to reduce the length of each line of DATA in the source code which meant more lines of DATA statements to the program to make a fair comparison with your version.

Each color assignment statement adds an extra line of source code and this becomes significant until eventually they take up more lines than the palette values in the DATA statements. This might be reduced by assigning them to their own DATA statements and then reading them into the color list.

However the bottom line is that the resulting source code to generate the image is too large for a single post for any image above a certain size.
.
dodicat
Posts: 7976
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: create program to create bitmap

Post by dodicat »

Yea Basiccoder2.
With a simple bitmap it is much easier to make shortcuts.
I was experimenting with base 36.
I suppose 100 by 100 or a little bigger could fit in a post.
(that's why I have the scale option)
Probably better to filter the enlarged image.
BasicCoder2
Posts: 3906
Joined: Jan 01, 2009 7:03
Location: Australia

Re: create program to create bitmap

Post by BasicCoder2 »

The whole purpose was to be able to post an image as text and as these images were sprites which often had a reduced color set made them perfect for coding as palette values. This array of palette values could be compressed as there is still redundancy in them such as pixel sequences of the same palette values. Also advantage could be taken of the fact that often most pixels in each frame do not change and thus each new frame only need show the changes as in a .gif file. This would make each frame's array of palette values even more compressible. The compressed file would then be converted to a string of characters.
.
dodicat
Posts: 7976
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: create program to create bitmap

Post by dodicat »

Here's a parrot - 685 lines.
Your code is about 4669 lines for the same bird.
Am I doing something wrong?

Code: Select all

dim shared as long w,h
w=80
h=60
redim shared as ulong a((w+1)*(h+1))
DATA _
"007K0HD007A3XI0078OKJ00779SY0075V1D006XF8G006W0V4006YUEA",_
"00732HZ0075WMK0074I2400733AJ0070ACR007BJW1007EDF7007ILIS",_
"007K0AD007SGHJ007SG38007TUUT007R1BN007JZHQ007LE9B007LE9B",_
"007JZHQ007IL4C007O8DR007WOZ700855DI008AS1J0089DH0008HTO5",_
"008UID5009H1MO009FM9P0094CQF008VWC4008C7ZL0080YGG007TXMG",_
"007MWSI007A8WD0077F660071RPL006UQ2P005G7LR006CI9D006Q99J",_
"005UB3L005K7RJ0037YJ5002Y3R0002SIO1002WYXE002X1VZ002LR5I",_
"002N3JP002BUSW002G3W6002G3W61YR4GLC007O96D007FQZU007EBMV",_
"007CWVA0078P5X00708RM006YUEA007095V00732HZ0078Q5Q0078QCV",_
"0078QCV0078QCV007FSDV007K0AD007LF1W007O86S007SGHH007SG38",_
"007PMK2007JZHQ007CXNT007IKQ5007MT0W007O7SH007LE9B007O7ZJ",_
"007V9F60082BG5008DL6F008EZY0008HU2H008QA9N00976GU009762J",_
"0092Y6300904U3009496H008LY0H0080UI7007JZHU0070CQL006W684",_
"006NQF7006DU2I0072ZCA0075WUR004LP7B003QPXW003ATGM00404V2",_
"002VFL6001S4HX002HFOB002BQMO002ADO50020MV6002MZYR002YA3F",_
"002YA3F1YR4GLC007MUT2007H5YK007EC89007CXGO0078PD200732AS",_
"007095V0071NXG0074H9K007A4XB007A54G007A54G007BK34007K0AD",_
"007LF1W007O86S007O86Q007R1BN007R1BN007O7SH007H5YK0078PD2",_
"007FR6Z007LE9B007O7SH007LE9B007MT7Y007R1IO007ZHPX008ARG7",_
"008ARG7008KNLO008QA2L00904FU0091JEI0092XZ00094D4W008JAM3",_
"007ZKAB007INHO00736GC006MC1H006JJI4006B3P9006KZ1U006W2A1",_
"005LZGJ003S5B5003FKKO0042XLV003DLST00310NB002D4F2001THUG",_
"001MF86002BRG70021WGT002D118002PPXH002PPXH1YR4GLC007R33T",_
"007JZHQ007H5RF007FQZU007CXNT0075VTY0074HGM00732P10075W15",_
"007A4XB007A54G007A54G007ED81007K0AB007MTF7007MTF5007MT0W",_
"007PMR4007R1BN007O7SH007FR6Z0077ALH007CXNT007IKQ5007LE9B",_
"007K0AB007MTF5007R1PU007WOZ90083QLX0083QLX008HU9P008KNLO",_
"008XBAZ0092XZ00094D4W0092YRN008GH2X007ZJHQ007PMXZ007H5YC",_
"007A3JJ0078OL1006YTF7005SPJT005LWOJ004D49E003UY900040KX5",_
"002PR410021PJQ004WMSN004CU3U001IA4D001JSMT002EN5G002INWN",_
"001QFL6002EDTN002EDTN1YR4GLC007VBEK007MTF5007LE9B007IKQ5",_
"007H5YK007A44P0077AZS0075W870077ASQ007A4XB007A54G007A54G",_
"007ED7Z007LENM007MTF5007MT0W007LE9B007O7LA007PMK2007O7SH",_
"007FR6Z0075VTW007BIW8007FR6Z007H5YK007MU7Q007MUES007R2PH",_
"007WPKN0080X9Y007ZIIB008ASFU008GF3V0091JLQ0095RWH00976O2",_
"0092YRN0091H8C008HQWI008527I007TSVI0075X18006RV5U006DRWF",_
"005ONEY00557MS004VC96004202E003CHXP0020H2W003T1TT006XYEO",_
"005C58G001E0TP0011FGW001Z63V002SNFQ001XIEW002INB9002INB9",_
"1YR4GLC0083S02007WP6K007WOSA007V9MG007R1BR007FR71007BJAJ",_
"007A4IY007A4BW0074HUY0074I970077BSD007O7LC007MT7X007PMR1",_
"007O7ZI007JZAJ007LDGU007O6SO007WNE9007R04Z007A3XQ0078Q5N",_
"0077CKO007A6P10075ZLH007MVEK0080WOS0089AWQ008C70N007LH8D",_
"008GG320086N3Z008128Q00880PC0092XLD009O0IB008M2L40070IAM",_
"005HUID004VI6V003JPWI002Q8RI00257MK002KGCO003860U0045XG6",_
"004K0Q1003QEMI005Q6CR009EGLH003P3TA001E465002G3OP001NWJQ",_
"0012OAB001WBLI001CKUW000YG7B000YG7B1YR4GLC0086LXH007ZJ3Z",_
"007Y3Y5007ZIBG007VA0P007JZHS007ECTP007BJAJ007CY240075WMJ",_
"0074I970077BSD007BK34007EDT8007K0OE007ILWT007H6JU007FRL8",_
"007BII40078QCV006UP9S006TBAN0077CDR007MRFU007ZDYG007MTF3",_
"0071SA50071UGK007EIK9007H7XP0083RSR008EWS4008F0YA0048G9U",_
"004FL2M005KJ9N0064BKT0041YUW003L4N4002X96Z002EXU8002NAAC",_
"002J0SR001ZA9L00101AX003YV0B005J53Q005EW0D003YQFO005HMXM",_
"004L9JV000ZT05001QLK8002BT8D001NX6C001UUMW001RZPZ001B5VE",_
"001GRQV001GRQV1YR4GLC008813B0080YV5007ZJPB0082CU7007ZIWS",_
"007PMK2007JZVZ007H6CT007FRLA0075WMJ0074I970075X0S00734OF",_
"007CZFZ007H7XR007K0VJ007FSDN007FS6K0077FJD0078RXE007FPSU",_
"007PILL007CWVO006YXKX006TDAI007H8J6007D0MR007O96D0086IYL",_
"0083P8D008C7M10069WHL004MS2W001THG0002PZ8R002Q0MJ0026BOJ",_
"00348980032S3V002U9XK002AJEO002BYRL002N73X002IW8D002DDX5",_
"003T3RJ00569U6005YFRH006B588006S1EP004ZGQE0029127001TIU9",_
"003XI8D003RVD2002AB1G000RHBI0020HOY002D576002D5761YR4GLC",_
"00881HL008575U0083SE900856YP00856DA007Y3CM007SGHF007MTF3",_
"007LENK0078Q5P0074I970075WTP0075XTE007LF1W007SGHF007SGA9",_
"007LEGC007LENI007O76Z007H5CY007JYOX007MRMP007CX2B007BII3",_
"007CXGY007O876007FTSB006NOUF00641AI005EZS9004607W002BZJG",_
"0015PR2001WJIB001XWHL001JR1I001S78T002DEBB00268Q00028ZA9",_
"0023F6V0014HBK001IKS70020UD6001QTGT0057SCN006KWMK007BMSF",_
"008GJZC007OCGF0069V7N003JGXZ002D864003NL3C0048N0L0033SZF",_
"000ZXJM001S0PJ001QL5B001QL5B1YR4GLC008F2X6008C96U008DNK4",_
"008JA84008HV9C008HU9R0089DVG0082C1L007WOS6007CYGG0077BLA",_
"0077BLA007EC1A007V81C007ZFXS007TT9P007H5RF007EE0L007MTET",_
"007JZHK007PMK4006KW3M005YIS3005NELH0053S150038IJ0002APQ9",_
"0026FNM003E1UJ001P9R5002D8KV002YENI002ZUEX001CM16002IW7V",_
"0038A0C002KCYT00220TI002LORQ0033XYC003147X002SRL60024T5W",_
"0012QA4000ONEI0054UMG0089F67008VW900089CLC007LCZT0089BT2",_
"005WYDL005ERSX00433WY005Q831006FK2T002MYQP001XPCK002LNKU",_
"002LNKU1YR4GLC008JATO008JA86008M3D1008T4SM008RQ0Z008OW3M",_
"008GFPB0089DVG0082BUI007FRZM0078QCV0078QCV007A4IW007PLRH",_
"007TU28007MT0W007BKOI007A8W3007LE910071SHJ006B8NV003W8N9",_
"003I85Y0036Y8N002BXDV002HL13002DAY7002N3CB0035CIW001THFE",_
"0029212001QPVH00267WP00386160048QDO003T6YG0039H83002VFYD",_
"002VH4V002SODW002PTUT00313SA0021X7M000LT8P000PY6K00640M4",_
"008Q97Q008NDAK007LC74008J6DD009CN49007LHQJ004WDN2005YJCP",_
"008GO5K007HI6J002OFIL001Z2QG002N0YP002N0YP1YR4GLC008M45P",_
"008NI4O008T4LK008XCP2008VXXH008T4ED008KO74008C7EM00855KR",_
"007H6R7007A54G0078QCX0074J1J007K0HB007O8S2007H8510077EK8",_
"007AB9O00582Q6004EI14003GPTZ001QSHL0026CHU002ETVI001MMQR",_
"001S6NA001WHPP001V2CG0018EIA004MV7R004K0HG005J4H2005NC6H",_
"005X3KJ0062O8X006ME6E006B6170053JAQ0048L7D003T4XV004JU49",_
"0062LOA005LQUY004QTKK002HBV8005PTZM00705CB007TPMW008HQ0W",_
"0099YBK008GDUN008DNUO00733SW0054TOW007K8J6007PWZZ0032D8X",_
"002K7ET002SNEQ002SNEQ1YR4GLC008M3R8008QBUS0091LE20098N0T",_
"009A1E5008KPSK008RPU1008ROMZ008HT9W007MU0H007FS6M007FRE0",_
"007IJYO007SDP800828H50078VIY004SI4F003WF000039TYE0024Y4K",_
"001CR71001XWHS001S9FG001IF8Y001JV01002HITH003P10R003HWT4",_
"0039GLZ006TH6L007SIRV008CBHE008DPUN008JAXJ008NJ13008M4GP",_
"00857V500736ZQ006NQJH006FAQC0069N9L0071Q13007FTOX007D0YC",_
"006GNQL006GKR1007FRIK007O5Q8008NCW0009E3GG00972M80098IYV",_
"008OTTX007PL37007V9Y1007FUAR006KW7X003VZP3003DPIT003DPIT",_
"1YR4GLC008QC9100930CQ009CVBK009IHZL009IHZL009O2O7009CTQE",_
"008UJK5008C96S007R3B3007MT88007IJJN007CZ0M005RK4R003MHUH",_
"001WQUD00256GA0011MMC001L60I00102P4001E7XR001XTHW001UXZB",_
"0023F6F001V0DB0036QGV004QYJH006B57Z007OBGO008YS5G008JBB8",_
"009CSN5009O2DI009XWY0009PFYB009E60W0095PFK008C54W007V9J4",_
"007LERN007IK1V0087TVK008GAV40089A80008EZNK007ZFGG00850XS",_
"008X72J008YKG2009Z8CU009Z7Y8009V0G0009CPHC008OPOG008Q4G0",_
"008EWI20083OCS008C2KG008LZ45008LZ451YR4GLC008UK5I009A26L",_
"009IIDU009MQHE009PJF6009TOXW009A0SK008QC91008DNYB0089COM",_
"00829GY007V78W008J13S003TK9Q002NFG900252P700252OX0017745",_
"001WJ4E001E65J001PFH30019XNA001E55S0023GKM002200N0047A0C",_
"006DZR100857V10094BGG0094BGG008UH34009TNNK009WGLC009ZAIO",_
"009ZAIR009WG74009E4G0008LY4G008GCG00089B7R007Y03Q0087RWG",_
"008VRI800972TC0094B28008HPTS008DGXS009007I008UCJK009Z8Y6",_
"009Z9JB009Z951009MKU800946WW008UBCW008LVR4008EVIA0086FI8",_
"00851QA00851QA1YR4GLC008XDVQ009EA31009MQHE009SCYA009SCYA",_
"009QWZR009A1E3008T5E0008NHJ2008J6GA0083OTP007O86S007FWKM",_
"002YQYJ0022CC6002HPLY002HOLX001PIHC001SE6V001QUFW002216F",_
"000NGD9000VXDL00222SU002IU10005DG0B008AUXN009S9VK009TO8W",_
"009MLMU009Z9C7009WG74009V1FK009ZAIQ009ZAIU009WGED009ICJK",_
"00901DS008Q70G008C45J007WKQT008DEKG0098GED009ML8P009E4U8",_
"008OR2A008KIRT008LXC9008LX4W009S7B7009Z8R0009S8AZ009L7NU",_
"009B9Q8008ZYF4008Q39C008LW5C008SX6R008NA4G008NA4G1YR4GLC",_
"00930CM009FP1O009LBPR009QY6P009TRIP009SCR2009FOUO0094E4S",_
"0091IT8008C6EK007A9VM006I7IU0040LPQ002HRE70011RKV001D1AZ",_
"001ZF7W001CW5C001A10S001QTMT00267VR001BB7Y001QT9E002U4R0",_
"003HXT2006W9BJ009MNEY009ZAWW009TO96009L635009Z7YI009QSJL",_
"009WG04009ZBBF009V2FB009L6V7009L6H2009L6H0008VU2O00852BK",_
"007WKXS008ZZ0O009IBRE009ICXY009E4G8008SZRC008NCP6008ANLS",_
"008NBI8009FH8G009JQPZ009JSI4009L8GH009JQPZ009B8QP0092SCG",_
"008X62O008RI84008Q3GJ008Q3GJ1YR4GLC0095U2U009E9VT009JWJV",_
"009O4GD009SCR2009PJLX009LAX7009L8Y4009IDFL007ADUP00583Q9",_
"003PFY70035MUZ000W4WK001Y1GK001XVXA0018JIC001QW0D002PWLS",_
"0024W350015OJ80057RRG00761BP006RXNN005ZUAS008VW9E009MN8B",_
"009TMA7009Z7RD009Z6DE009Z761009Z75W009S5J4009QT4W009V1MO",_
"009V18H009WFLV009Z7YF009JR4300973LV009730I009QQKG009S5Q8",_
"009E3NK009QRY8009IC5C008SYKG008SX6O0099SE8009B3EO009QQKG",_
"009Z9CB009ZBBJ009S6IO009XRSW009WCU8009MI9S009QP6X009PAFC",_
"009PAFC1YR4GLC0090ADE009ZB0E009ZBEV009FPU7009O5N5009ZDSK",_
"00931QJ009BGXY009A0ZR003GX64002GHKV003E5TR001BHLE001Y11X",_
"001EB4C0014GCP000VZ5P001QVFT000VV5I002HF120042VBS008ATQN",_
"007PNGG007WPA80083QIP009V01Z009Z8JY009XSLN009Z6KQ009UXHI",_
"009Z66J009Z8CH009Z85G009S6IX009Z9QT009Z9JI009S7PF009ML1N",_
"009FJES009FJES009ICXY00972TG0099WR1009JSBB009Z95X008VRB4",_
"008VRI80092T4W0092SJK0091DDS009ZABX009ZAQA009Z8Y4009Z7YJ",_
"009WEFB009L4HS009L4HS009GVEO009E1OG009E1OG1YR4GLC0098PE1",_
"009XWUG009SAYZ0098PLD009FR82009BJQ5009ZDDR009PH14007HK8Y",_
"002SZY10035PMK002LYWA0014FRJ001PJV1001BGSL00130ZM0015TIW",_
"001ZB1E001MKXF002Y8UK0057OKH008HS760087WN4008HS00008KKJM",_
"009PCZR009XT70009XSLN009TJWN009TJ44009WC91009S5QA009S5QA",_
"009MJ2A009PCZP009NYTE009S7IC009PE6F009NZLW009S7WN009XUYZ",_
"009FJ7Q009E4G8009MKUO0099V68009000100971MQ0099UYP0095MGW",_
"009IARU009V11I009ZABZ009WGLS009Z9XW009Z95B009TLAE009UZUS",_
"009FGN40099TKW0099TKW1YR4GLC009O5N6009O3O2009IHLB0094HVY",_
"009EDG2009H6Z6009ZFKQ007VHD2004YCXJ00251X20038FLG001SD7C",_
"001FPP6001PJGU001CURL001A1ML001H2GI0026B9U002910H0039FEE",_
"006CH7O008RJLS0090074009720Z0095MO4009FH1E009QQKO009XSLN",_
"009NWUB009UXVP009PATD009S4Y2009JOXT009JPQ8009GWLC009PDS1",_
"009Z9QJ009S7B7009S7B6009TMH0009XURP009FIM8009CP34009IBYD",_
"008VSAV0095NGP0098H6X0091ERM008RJ0G0095M9Z009JQIO009XURX",_
"009XWK5009WIL5009WHED009WFM5009Z85M009IA68009B8CG009B8CG",_
"1YR4GLC009ZFKK009O5N5009V5OM009ZD6S009ZES0007Q11G004OHRP",_
"0031JI7002Q6F3002DIOT0018N2Q001MMZA001O5I3001H1OI0014CKY",_
"001042V001CRYY001I9UP0020I0E003M1P0006M9ZD009FGU8009Z7K7",_
"0099TZ4009NXMY008VPJ40096ZUO009PBLY009I9S0009Z6DN009I96P",_
"00970G00098F7K0099V5S0098GSG009NZLT009TN9H009QSCM009QSQV",_
"009O0EF009FKZR008T14W008NDVK008ORUO007TU69007H3WG007JWN4",_
"007WK5C0084ZY8008HNGJ0092SJK009FJ7T009TOV0009QWIK009SAAE",_
"009ZAC1009Z9QJ009S64K009IARL009IARL1YR4GLC009ZFRR009QZRK",_
"009ZEDG009ZDL5009V7320044UM7003CP9S003WG73002ZZZV002M0H1",_
"0015SQI001TNM6001H3O0001JUTC0019Z9100175WS001PGGY001QQG5",_
"0028YEJ0041JX4006KUTE009TKHT009WEFB00971FK009IARR008ZXFK",_
"0098E80009I9S0009JOJK009PBEZ0095KHS008VR40009E39M008YL1I",_
"008SYKI0092UIT009CQO5008UD4W008UEIO008UG3O008M13A007R1FK",_
"007ECCG007A3GG007FTVW006W0ZK006YSQO007E9KW007V4ZM0084YDC",_
"008OP3400948AU009QTCP009TO2F009WHEB009ZBIQ009ZBBI009MJGH",_
"009E2V4009E2V41YR4GLC009ZFDT009R0K3009ZFYJ009ZF6E008W4AC",_
"002F18F0038H690041ZOX002VSAC002EYG7001JV0D001L96Q001MPXO",_
"001SB7O001IFUJ001E7QQ001V3QI001QQNE002K7CD0048KYG006KU0W",_
"009UYV7009MIGW009IAYT0099U6B009E139009GUTE009E1HC009L3B5",_
"009B7K5008ONI8008KHZ400948B7007H0CH007TPFV0087TVV008EWAQ",_
"0087TA800851J4007Y22O007FSHS006KTMO006CCU90066PKX006QJ2O",_
"006RV9M006UM86007308X007E8E8007SA2O008C0LC008Q3NL009GVTB",_
"009NY15009S7IG009ZAQ0009V37O009JQ4G009CO3K009CO3K1YR4GLC",_
"009ZELL009O7MH009TUVM009SFC20082NRC002X8T90038HKV002UDQ7",_
"002EWVE0027U8X001MPJK0018NNE001MPQF001SATD001FMBD0014CDP",_
"001FLPH0012SF3002OEGC0045Q8K006HZPC009S4CG009E134009XSEN",_
"0098EM8009QQ6K009NWUD009CMPS009L3B7008YIV5008BYF40087T34",_
"00897V0005PJB4006Q7LX007CSUJ0078LJ4008EVWJ008524K007LE6A",_
"006UOE80062JNQ0063Y1C0066RKL005HGCG006KUFK006T8GE006YSQT",_
"007A0HT0086CXV0086DC0008G83K0098DU0009FF9C009GW74009MLMO",_
"009FL6O009JQ4G009CO3K009CO3K1YR4GLC009ZIK0009ZHRI009SI3X",_
"008FAUS005GKPV0034AV3002T1BV002GCTT0029BL8001QYU1001H32M",_
"001JWEL001IFGL001CRZE001E5K3001NZC1001NXQK001S4EU0024RI0",_
"003VVA1006W0LF009Z5SF009B8CO008KFSW0099REQ0099TZ4009PATL",_
"009FEAF009JNRB007QUIO0078IRK006RQIQ004XGJK004MB6G004FBPY",_
"003PYQD003EOLR003X4B0003N9J8003SWZT003OPOX002WJKH003DH5N",_
"003NDB0003HPUT004UYH2005BTHH005K7WV005SMC00078NWN007MNSW",_
"008BZLS008VO5F0095LHC009720W0098GZK009CP34009GW760099U69",_
"0099U691YR4GLC009ZIRD009ZH6500937B5005XEXN0047LDK003035R",_
"002EXV8002AQ5T002C54E001MQQC001PJGX001H2H6001IFNM001IF1Y",_
"001E5D6001L5SX001TKLN001PB9O001QMUL0049YXZ0071NV4009CKCG",_
"0092QDC00945J80098CUD009QRCZ009I8SG0091AFC0094462007045C",_
"005O5XR003VIF80022N0G002FFH4001HMO500124G9001YJVM0037RXE",_
"0028JD2002CS95002PHQW00205JQ002O5R8002SEU8002ZGHA004FI8O",_
"004PBTF004PAFN004UVBL006F4LO007ZD3400897GG008KGE8009IDQP",_
"009O1E9009GYYU009JQWW0099UYO0092SXS0092SXS1YR4GLC009ZIK8",_
"009ZFS50085GAZ003UZG9003GWLB002EXVA00229KD002533H00253AH",_
"001O4WJ001PJ2O001MOQY001JUM4001XX38001ML6A001NYJG001Z79D",_
"001XQVA0028W0Z003ORV0006NK7C0098BGG009FE9S009FF2B0099R0G",_
"009MHAH009B7K0009NW1Z007PDZZ003OCG0001D62O000IAKG000JPCP",_
"000O07P000L7V30009XCG000IEBZ001UBK00029U6A003AIHM003ERKX",_
"001OS8X002FMDR0030T20001T5P7003C26T003RJ810045LP3004GTUD",_
"005Y9EA0080RUS0084Z5S008AM0W009E6ML009MMTQ009GY6D009IARK",_
"0098G740092SXS0092SXS1YR4GLC009ZIK0009ZG6H0076CBB002VV27",_
"0032UWV001Y1GU0026I2B00253HQ0020UZQ001SD03001IGNC001QWG9",_
"001L96G0029689001S7FV001S58S0024SBX00264VV0036LNB003G8HS",_
"005WRNK009MGIB0099S00008G64G0096Y9S008N6KG008X4HS007ZAWW",_
"0040WEF000XRLS000B955000483S000WF8T000007900073F3000ICKJ",_
"000493M001G6BL00245JH0029SSR001N9J4001LXJ9002CS2D0033M00",_
"002EAZZ003C204003G9I1003VRBV004464X005AAYZ007V5E20083KZN",_
"008EU4G009CQ2R009GYKK009IB5S009NW1S00971MO0092TC10092TC1",_
"1YR4GLC009ZKJ0007J2E0004RBP2003006S002DK380023PBR002543A",_
"0027XTH0023OQ3001MPJI001TPSA001TOZP001WIII001WEXZ001TJ0I",_
"00265B0002HC8Q0028QON002XWXT006ME7E006CEWA0045B7Q005EE4J",_
"008C46R007LA8K008LXYD006NI1Z002F9CA004I2JL008TB5W009611A",_
"0091TJ2008XK91006W80G002XRNO000E2HY0009U79000E5GI000IDR1",_
"000GZ6D0008IZ4000TSFC001J8S7001UL2Y001HWDW002A1IX0025T7R",_
"002O5CZ00327120046WWM005WV0O0077AJ500898UF0091DZ4009COOW",_
"009COOW0099UKG0091EYO008YL8G008YL8G1YR4GLC009WRZK0064HR7",_
"003MKU30038ELP002DL2R0020W6U001MSIY0020VZK0020V6X001IGND",_
"0023L5D001QVGJ0027S8W001PCIG001TI7N002FZO0002SKS00028OB3",_
"004IAEV005AGKM003X1ZV0046U69004CF8A0087YVU005A5TS008ROSZ",_
"002QL1C001X15L007K6FH008M7JH009PO7A008P4G2007YBAT007ZQ1Y",_
"0057KVN001KENO000000A000JPJM0008FES000UZV1001BXGA000ZCII",_
"001EXPF0017Y1L000TYR7002JXW3002LD8N00354CH003DJCI004FF3I",_
"005D89B0070BVG008C4D0009E2V4009S7IC009PERT009FJ7Q008YLFK",_
"008UCXS008UCXS1YR4GLC009ZJ5L004N4Z5003S44V003GUM7002KKIY",_
"0023QBJ001R1F3001IKF0001O6AG0023KYB001WIBN001QUNN001MMKJ",_
"00268OX0027M9M002PS2D003C4K8002PK3W0074NFE0050INC002WDH3",_
"003YFYR0046VRP005U35M002Z4ML0077FYR0017MRK004875Y0080ZOG",_
"0095YGZ008UPC3008RVZV008NO3G007EKDC006FB0Q003AGXY0001EKN",_
"000JQ58000BAJA0004AOD0005RF1000ZFOB001AQ00001DJJ40024D2O",_
"0024IT9001W0FL0025S170033K1D003HQ8Y004TI5Q006CEGB007Y2HI",_
"009CPA8009QS5C009UZGG009XS00008YL1C008Q48W008Q48W1YR4GLC",_
"009ZJR1004N5KL003XRSN003PBEN002Q7LA001WNAV001TTKB001QZTO",_
"001V6QE002ETW7002DDC60023HKJ001FKXM00291MX001XQWA002K4ZT",_
"0030T20004S954008JFLS0058ZFZ002NX9S00640I30062L530031ZCL",_
"003LPOF006CF3Z0017NK0005FY3T008JCTT008UNY0008P12X008T9YW",_
"008M8JC006Z1JM006KY310049Q3H000GWSV000IBDN000CPAV000BC41",_
"000E7MA0013N6J0017VOB0017VOB001M1II0024GU5001OWTO001J6E5",_
"0029XR6003EXWQ004UXWU0066SDK007MT5I0092UIR009BAX0009E41V",_
"009IBR6008X69S008NAPS008NAPS1YR4GLC009SJ3X004DBEG003QQYF",_
"003NXFJ002M0A4002533H002DK30002AQ5D001ZETX002G827002G62L",_
"0023FZA00223ZO002RC11002EO2N002FWA30021GY50078ZA3007R9GY",_
"007K7N30029U0A007VHKQ003IYQ0003REQ2008XK240046UZ4002NVW1",_
"007ZOOM008I0FS009ILS10091NSL008JDF1007VESF006P5DX007IS2K",_
"006KXAM001Q1IE000GXLP000JRBU000QTQX000ZBIZ001HO2M001DGD7",_
"001982G000WNJB000ZEOS000ZCPH001HNOF0029WKU00329TG003T169",_
"004S5YH0063XNI008AOLY008NCB1008YLTT009IBR4008ZZEU008NABK",_
"008NABK1YR4GLC009VBUI004HJAX003PBZP003IADB002NEUH0029BZE",_
"002EZ8P0027XZZ001TTQR002EV2R002J16O0026BHM001V1R5002EMQH",_
"002N4O1002HBMX002PG650086SVV0083Y67007PTX00057KVQ007EJSE",_
"003HJRD004TI07008QIMH004GQXL0034T31008AYTC008GLO7008W2B8",_
"008DPYH008JDTC007ODCT0074OLS007PUAO006P5LB0025K4V000FIU2",_
"000GXSO000L6HJ000WH07001AM8R001AMU3001AMU30010V8U0010QVQ",_
"0013J84001OPIC0029X66002TRTX0037XGY0049VE1005SO4E008991W",_
"008SXS7009CN40009Z6DC008UCCI008J20W008J20W1YR4GLC009ZIK6",_
"004U6F0003Z6K8003MI2N002UG9Z002HRS5002DKGW0023PP2001PLU6",_
"001ZE14001ZBUB001O0WS002UA3W001S2GS002BUQO002U0QD0041FLF",_
"007IU28007D4TR007MZSN007HCQC004WA5T0049QHQ00270H4008JGZT",_
"004Z2W60029R8K007IQ3R008W3B5008JFED008CDDG008KTYY007PTPI",_
"007K7MN007HE3F006CH3B002WC3I000E42H000E49I000ICR8000PF6A",_
"0014Z6H00150KC0016FQ60016HBL001KGF4001HMOP001SYEB001YNMO",_
"0030QVP003Q5UX004WCO5006DR14008EUQ1008SX6Q009B7Y8009XR0G",_
"008OPA8008ETQ8008ETQ81YR4GLC009ZGRX0056TJ2004ENST003TJ3Z",_
"002UG2Q002NC2I002GBMD0027W7L0027WLX002LXP0002J2KF002AKYV",_
"002LSWS002OIH3002N4HD002IRED003UFC0006S2OX007WV5T007K5VD",_
"0070EJT001G5QX004FCRO001LUE2007BR8T0062KQP001HJBG005Y9VE",_
"008YVGG008TCCM008JIDJ008B0E4007WWQA007LN6S006W9000065F9E",_
"003X00O000L5WE000MKV0000PEL5000V28M0014ZZ10013MZL001525F",_
"001DHYQ001X544001SXSV0021GRP002750C003U9ZM0054QOQ006HZBV",_
"007PKB4008J20W008OPA8008UCJK0092SQP008RJ0G008HNGG008HNGG",_
"1YR4GLC009ZFE00065VCA003TMGV0039X4L002HSKZ00299SE0032UAU",_
"002Q47V0024Z430031F3Q002N8NU002G4GC002EMA9003B2IX002K8RV",_
"002AA09003UIOS002W8QG003N9DZ005LQPM003EQF7006NPNC0045GEY",_
"00244YV003KBBE0089JG4003EN99003N3NK008KT6H008P4G2008P5MY",_
"008AZ08008I1TO006S1W40066W7D006JJPX005SOZP000CPAW000L6AK",_
"000WH7M0017RXG001GA3P001KIZR001Q695001J48R001SZ7K002IC6T",_
"003OLCX004UTQG006XFCW008505H00897UO008EUWW008RIMB008J285",_
"008EUIS008G9OL008C0SM008HO1X008HO1X1YR4GLC009O5G6006BHEP",_
"003WGE7003GZ5C002T241002T03N002Q5DZ002LWB0002J3RF002KHWO",_
"002OMMT002VLAJ003FAEM002AE040024P5D002K4DI003NGGL003ZRKW",_
"007AE1W005X0G2007D5T6004DX7I0049OPP003X07N002MGXE007ODCZ",_
"002XPV4003N3NK009SIJB008W62U008QK0A008GMV20082JSJ006Z3X6",_
"0074QLD006FATS004QMAW0009V6C000IBYX000PESD000XW68001DFZC",_
"001J417001OR3H0021GYV00271UW0034TUU004KWTC005WQOG0084XE6",_
"007JUGZ007ZD37008KI6A008DF5S007V2TC007IEBK007FKSG0083J7K",_
"008969T008969T1YR4GLC00978UC006MPCL003Z9X9003PF560039XWX",_
"003490T002OQ0G002NBGK002LXOQ002G9EO0032P3N0036TFL002OIFX",_
"0035DNQ003QGKI003CAI4003J7RL004KZNL004B7FE000V30H005PX1A",_
"0037MF50058Y2C004CIFX002XR22008DQYC0042M31003WYF9009A6KQ",_
"0098UDP008NPOL0083ZCQ008TDJG006I6Q6006QMJA0066U88004DX7G",_
"000FH1W000GWEU000MJVD000S7XA00197HO001J38Y001NC510029U0B",_
"001LVZ900271GN00369SZ003OK5T004RY8B006GDMO007H1Q8008HOUG",_
"0084YDC007MM0W007CQ9S0074A2O007Z9J4008232800823281YR4GLC",_
"008T5RW006WHJG003XV5I003NZKY003QT4L003478L00370SB002VR2H",_
"0026EV4002X5EQ003FCLL0036S16002VK9S002LLQC003CBB70032D5J",_
"003T2C5003ZVCQ0036A0W000O0SG0053CKW003G37P005ELIV0058Y2C",_
"00367GF008T8ZI003G18B004NRKQ0094JIE0094LOP0081510008JI6D",_
"008NQVD00642O5006CI2Y005YCUA004KYFZ000PBMF000NXG8000PCEZ",_
"000QSDC0016CRY001EUCZ001KHTJ001RH2T001HN3J002IC6U003N8L3",_
"0042Q77004S1EG006KMIO007PIBO008LXQG0084YKG007S936007MLMV",_
"007FJM00080N420080N400080N401YR4GLC00880OQ0071YGN003Z8Q1",_
"003E30T0043E20003PCQU003PBDB002SV5S002IZSM0031AX8002LP3Z",_
"0033XHX00263WB003CCAH003AUJW003UI3J003KJ62007R6IS003LQ31",_
"002NWAD001ZXNN006RYXM002XR92004MDSY001VNKQ006JGXX003ENNI",_
"008DRJX009OC0Q00937BD0098US3007VI5O0070GPI006B1QJ004JK9S",_
"0025ICN0022OFC000PBM7000S4YA000TJX4000TKIK00122HS001DD0M",_
"001KFMX001Q43A002S3S3004CG7U0069GK0007JWN40091C74008UDJD",_
"00900ED008YL1C0086CQO0084XKW0084XS30083JER007WFSY007TM2Q",_
"007TM2Q1YR4GLC007TXM6006XO6A0047PB7003GW5C0040JBO003FJ5H",_
"003E20M0032PIM0032OPZ0035HTW002VJVT002ZPSV0033VWJ003AX4I",_
"003AUJW0045S160041EZ500537FS005HEGV006P4M5006166J0065F2I",_
"00391DP004TFMT003N3UU004W9JY005U3Y7008AZ7J009FW0M008URIE",_
"007D6EC00762KY007BPGA0046UZ70026X48000NWNB0014T1Z000FGN9",_
"000NX8T000XSEX000Z7KU001DBMN001RFVN00244YW002S1ET0045DSZ",_
"005A9LK006P0D0007R1FY008OT1S008X5VK008X5HC008UBCW008G6X0",_
"00895ON008AL1G008C0E8007S8OW007MLMO007MLMO1YR4GLC007INHE",_
"006TEVL004DBKT003MJ7A003XP6S002RLP100347MM003GSYR0038AS6",_
"003MDU0003MC8X002SODI003HYDH003M79400357VV0033P5F0049UZC",_
"0049JK4003U5P1006870Y006NQFV006USV0003LQVC0046VDH004NRS0",_
"003DA2G008GLVO00960GM0091SY6007655P006S1AV0083W6E0069LRT",_
"001U7MF002192D0010KR80011ZBU0009U69000PC0C0013FH6001BW2P",_
"001Q04I0028CA0002NUWE004JHN3006M59C007MQS6008SYKS009JNYA",_
"009RZEO009B8CG0098EF40095KHS008N7YO0083I12007TNUO007SA9S",_
"007S9OG007L7NK007L7NK1YR4GLC007PKRE006MDFL0056TAJ003735V",_
"003P9KW0039UHQ003L3FS003B6HO002X18D003NR6R003CFOE002R97B",_
"003583G003RQ68003M1I10045Q810048EUA004I4AZ004DWEU003OJ0L",_
"004QMHW004GRQ6004CIMS003WZLT006YZ62003LOOY009INZ20090D78",_
"009K4PS0082H7S00883VR005EKXN0021AUJ000L3IO000PBF8000MHW0",_
"000JOJV0000002000TMW2000WEMW002S3RR001U97S002FDX00045KPL",_
"006DP2G009ID4W009XTDS009S74J009GYDL0096ZNK008J1TS008SXDS",_
"0091EKG008C0EN0084YS0007WIYR007IG3K007GZK0007E60W007E60W",_
"1YR4GLC006C6RJ00681G8005F15Q004VKXT003JMOS003JN38003MFMS",_
"003KZVE003JJWL003UQUB003QHJU003M7O5003GJ7D003573A003M2HJ",_
"004V4EY004NXH70051VFK005ZQTE004B3VB003EOG20034T2Y005K7ZL",_
"004DWSU0054OYN008I01V008W4W8008YZ0O0077IJF005EL4O001AHHT",_
"000GVT8000CNII00120IP000JO5U000L34F000NWUK000QPFM001IYV9",_
"00321VU003VPR20045O37003RMTD004WJM4007H8HF009XUZC009Z8K3",_
"009QSJW009GXS0009JLZC008X5HH008VQWW008X53400823NK0080OHT",_
"0087Q4H0086BR4007O1S0007GZY8007GZY81YR4GLC006801T0066JBH",_
"005C2VG004PXH4003MHEU003I65B003JKIJ003TFA00041UVE003XJDR",_
"003QFYM003HY6B003NL86003HVZ90039DSA003DJ40003VQ5T004QLI5",_
"004JKNY0065E2V002MH4D004NSRI004CI8I0058XGM0031YCT009ZLD6",_
"008GMNU007ISGU0086RAR0017OYG000B8QX000JP5H000GVF8000QQ6Z",_
"000I9E9000TJPX000UYOH000JQY6002B6LH002GXEQ0048FNL006P6AS",_
"007BQD7007K279008RPJQ009Z9JL009Z85F009QSXS009FJEO009I7LY",_
"00949A8008YMF4008VTHC0083M68007TR0G007V5S5007V5S7007L8U8",_
"007E6TC007E6TC1YR4GLC00611L4006HS2D005RIXB004SQ0Q0043F0F",_
"003RZQ6003I4R4003NR7R003US8T003XHSQ0041OI1003YTZ00041NHY",_
"003QBZ30042Z2Y0044BGX000L9FK007LJMV007OEY9007OEK0007SMGF",_
"004GQJ90045G0C006RWY60021A8L009R5K200960230078W44008852S",_
"0001EKK000IB6I000B8K20005MA6000TJX7000XRTO0013F30000UYOJ",_
"003LJPX004W4SU0028NE9001I3YH0050O5V007LIRK009Z8CO009CUF9",_
"009Z8QX009S7400098JK0008T2PS008UDJD00947WG00948AO009JQPW",_
"0092UX60086FI8007E8LC006UI2O007O26C007E6M9007E6M91YR4GLC",_
"005OE9Y006T1SS006GU4Y0053Z5J004D9RY003MC2A003CH34003KXVD",_
"003W6T100434NV0048PXJ003YTKF004EAET00477S1003XB80003HQF7",_
"003LU7S001Q1OY00320QK0049QAG006QJRM004TF17004FAZ6003RBYB",_
"002XPV4008I01O0086PBK007Y8IX007WTDC000B9XP0001EKW000S5JY",_
"000JOYE00120IO0010LJW000WD91000PBM7003IOEN005PP3P004Y0U3",_
"002LRYZ002K3AB002MTSJ006B199009H0XS009Z7R5009MJ9C0091GXS",_
"008NEH20095N28008ZZM6008LVRB008LVK9008DEYO007V2F4007FJLS",_
"00772F4007IDXF0074A9S0074A9S1YR4GLC004TC1L006J48X0054SP1",_
"00438MC003B3AD004R7VK0041V2B003RZOS003GORI003YWD2004H64M",_
"0041MW4004MN8U004FLZR003OSN5004BBQ2001C1L0007FYQQ007HEB4",_
"006JJ4J0065E9T0065CAI007VDT4003IVCV00760F3007PQJJ003N1VG",_
"0013DHD0031W700008GSR00000LI0005MA1000FGUM000QQKY000Z6ZA",_
"001EPEP0013F2Y003K08Q005PKQ1004L8IX0048XCV002G1OO002G5N5",_
"0045SIC001W8LK003KOL0003ASLV002O7YY002MR8Y004V1310027AKB",_
"001VYUJ002H15S0057ITK006114W006NH8M006XAMR007QT58007CPAD",_
"007CPAD1YR4GLC005MUYP005TUM7006F0P90066SM7004IJXC004K8U2",_
"0041V9K003Z0BL003DUTU003M9NW003HWZR004JWAL004CX8100478YT",_
"003YN83003RF9O006F7TS003DBNU003OLS8003LRNQ0054R5A005WWOS",_
"005LLKC0054NDJ008HWVE007IPWA00563JD001N66V000B8JK002Z3GD",_
"0017MZ20013EHE000I9DZ000S55D0017N6J001VLEV002B31P001ZUHS",_
"006SYFI005H9HP004K1PW002U2ZY002SOMA002PUP3002HFHC002HAPU",_
"002U26K0036N41003J59S001P7QJ003C9YX002QZWP002QWBW002R1AF",_
"0028PX20037U3R004WBVU007LAML007PIPX007PIPX1YR4GLC005EE65",_
"005ZHAA006GFGU0065CGP004IHJQ004HDHY004FWXP004IP2G003QHQR",_
"0043524003VZGB004H1YM004ZFI800356H4003RMRX0042RDE003SS9N",_
"005PX1A005RBEK006QKCY006QJYM005VHIQ005OEWA008HX2O007TXNI",_
"001X256001N6E2003K9CH00242EM001HHQZ002FCC10022NFQ001RDB4",_
"002MEYH00218VC001OJRV001PXQV002JH1X005SITU005V9ZG005D8JO",_
"0031DXW002YENU00389MO002RET0002YCGV002HI8N002OHHQ003RRF0",_
"002SL8D002D27E002WRQW002MVSE001F5FA0023394002FQD000277ZA",_
"003VN6K004Z41A004Z41A1YR4GLC00534FW005Y2IT006HTFX0066PUB",_
"0050PJN004LJ6Z004TYLQ004VBZH0041PP0004H747004EA0F004IFQC",_
"0044C2V003XD07003T2J0003Q4UF003BXFV004CITR004UU7300615DK",_
"006B0C6007PR4J006W48Z0080ZOO004B0PC0005M9S0008FET000QQ6T",_
"0010KK90010JYN00190R5002NSBX00190Y2002B4FE002XOHJ002Z2UP",_
"001SRGT003HAU1005D36D006C5010067WPI003FLD7002Q57D003GPTX",_
"002HI950039M09002OLNQ002LTIC003DWH30035BPU002PTHK0024Q6P",_
"001S2AG001MA8N001DR93001DR9B001KUOO000TWRT001KP4J001KP4J",_
"1YR4GLC004P16I005R0HV0069D1M006HWSZ006CEHL005GGGZ004R336",_
"003YW67003UNO80048OQB004H4C0004II3Z003X7OE003LZ4C0033NR4",_
"003991K003BZ1000880WT007TXNK007K2HE006NMUM0077DDQ0061304",_
"001HIC7000XS0Q001EQZU001BWVA000S5CJ000FG91002TFLG0038XTM",_
"0049LJI003R9Z80017MRT0033BQU004USF20054N6H0050E2F006NGWX",_
"0062C7I0069DFK005AEFM0047AGQ002MX6W002IS9I002Y3K90032A9Z",_
"002VBM3002HDAR0036T2F002G2B0002ZP9A0039GUK0021UNX001S0AH",_
"001TC2S001W1U4001W2TR001UOGB001UOGB1YR4GLC004HZXZ005R1AE",_
"0069DG0006JB6F006CBPV005UGS4004WODI003T8WJ003XGSY003YRLI",_
"004E9TI00478RY00473FK003VRIS004721V002PFYG003DC8000906NM",_
"007MV12006YW74006UNHY007K1W4001SSGN0008FET001YHC3001X2K3",_
"001OLKB001697E000UYVH001EOSZ0028AP1003PUTC004I2QI001LR8C",_
"002DYJY0046TLF005D4KN005LG72006KS4O005TW7D00654XU0060VHD",_
"005K3G8003AR9200263KA002AAA30025TV3002E73E002O60T002PNYD",_
"001P8D5002D28000354Z3002IRGQ001W96U001W5M00028PQL001409L",_
"0019NBX0019NBX1YR4GLC004HZXX005PMX400656C2006NJA5006JBKM",_
"005YKXQ005GCIZ004FRRG004CXMW003YOMW004BEIE003QASD003NEA9",_
"0042QL8003DBTJ0034VFL006JIBL00731J7006CBXU007SHOZ007WPLH",_
"004F8LU000L347000QRS0000Z96D001RF3I001HJQE001AHB3001ST2H",_
"000I9S8001EP0E001SRV7002I624001IXPE001N6EE0033CJN003ZSK1",_
"006AT7E006JDK20063SJZ005SI8G0067XAI005MRES004P7QD0041I1E",_
"002D9JZ001P2T4001RPT2001QC87001110B0000HGA0019KS000234OK",_
"001URNA002N0K0002U1E70027FJP0016X6E001431W001431W1YR4GLC",_
"004M8FQ005ILAC0060YFK006T6QS006ULB3005X30D005X7QM0053PL5",_
"004SEGW0041FSQ004FKMS003C5XM002SEF4003AHOR002MH3E005OH2J",_
"007LJTV005FSYK0082D94009071V007ZIXO0011YBR000MHW0000XU0C",_
"0008HEV001690F001YGC3002GSAO00219V9001OKS000120IO001SRV9",_
"001X0RK001REI6000WE1M0028CHJ003HGSS006W1H6006XBVB006JC66",_
"005IQUB005Y79F004QI3W005V70W0054L150024VQ80020JV9002BN2I",_
"001MAGS000SR5800185TD000PV92000RB0H001CFAG000R9ZM000KAQR",_
"000ZVD60015HTH000X0TS000X0TS1YR4GLC004T9O9005POAT006ATLB",_
"006OXNE006XEUA00731PO0071PIK006KXUS005Q2XG003XBFN003LYXD",_
"003OPVW002XX4W001BYTC00539ET008JB25007H6S70094DYT007POCU",_
"006GKU30045F860026YWY0021BUM001ERE30010NBY002JMM7002WAWY",_
"002QO1N002MFXY002DYR5002B580001ZUWG000Z5ZD0030I7M004MCTF",_
"003VK9A002B3TK0074H2L006F32W006F32U006AUKY0062DSI006AU71",_
"0058RB8005ED6N004YYXE004TGFE0042UEY0030YH0001WBYT0028RCZ",_
"001I2YO000KDBS0015GU60016SMP000ISEW0000G91000WX9O001KWOQ",_
"001KWOQ1YR4GLC0050BI6005TWLK006DN4H006RR6K006YTLV0074GH9",_
"007IICT007EBMT006KW2G004II3Y0042X3I003VRB4003OOI5001SUMI",_
"0066POM009072J00855EY008AS2N005HDNZ0046US5002NVWE002L366",_
"001ZX33001BXUX001KDNU001ZVAJ0026XBH0029R1P002I78Y002QN96",_
"002L06W002XPO9002Z3G3002CISF0042LOY003N328002QLUD006VYHG",_
"006UKII006GHUH006DOWV006F2HQ005TVM2005R1HG005IONB005MS04",_
"005R03Y005A72W0049RA90033URH001CM16001NS06001KU48000G221",_
"000BVXP000WZN8001QIYL0019PJ2001B5A8001B5A81YR4GLC0057DC3",_
"005Y4WB006GGNN006T5Y500708DG0078ODK007H3SA007FP0O006XGM7",_
"005U91I0053H2D004FGN9002XT7H005BQ7X008KQFU008CA1B008T8LR",_
"005LNQP005AF0K003EQMX002UZ4F0028E2V001OMK4001U9F9001VNSI",_
"002NUPJ002FE3Z002FDPQ002L0S4002DYCZ001U7MV001Q0IG003K9C1",_
"002S0TT003OHU9002B4TF003SOC2006RQZC006RRZ7006F4OC0065AB4",_
"004DRUI004NLF7006HU1J005R51S005FTC7005H7IG005A62W0051PVS",_
"005368I0054MEP004MJYE003F5AR000X0FJ000G0GV000K8YV000ZT6I",_
"00145130019SVW0019SVW1YR4GLC005FTXL0063RYN006JA6T006UKPQ",_
"0071N51007CW2R0075W15006W222006UMAU007A4IO006F7EY005AER5",_
"002XQG0008NL5K008AWNW00885B70078Z4H004BC0K0042RUO002ICLY",_
"0021EFB00245DS0026YBI002L1L0002DZR3002UWJC002QNUC002QNUC",_
"002NTWZ002JKTX00218VE0017OCW00416C4002DXDE002I6NY002L06W",_
"004XKRH005ZM8X0057FX4005BPM200416XF00289HV005D07I006HV1B",_
"005O8Y40058SWB0058TAL005BM18005H6BS006272F005ZFWS005Y15A",_
"005H7IU003XEHC002RB14001P8Y100189KR001MF0J001I744001I744",_
"1YR4GLC005R4290069F0Z006M3PZ006VZHB0071N5100779LY00731WM",_
"00708KL00731PK007BGQ500779F20071N590077B6R007ECFO007R2IV",_
"007D1FZ00688LW0030PZ80029YSV002TOC3002XU920028DA2001Q0IU",_
"001RFOO002I8U5002JM0H0031XRU003AEDC002WA44002TGDZ002I69D",_
"001U88B001SSGW001ST9H001ERE30014VU1000GVM9000JQJ6001RFHO",_
"001690500190Y2005ZL9F0066M3F006JAZI006AS7T0063P74005Y24S",_
"005MT6Y0058RWO004QK3U004KZ7W0058UOF005O9CB005BKG40054ITI",_
"005CXU3005Y15I0037XBN003C77K003C77K1YR4GLC005TXLF006ATSK",_
"006NIHK006XE8W0071N5100731WT007BFQF007MNVO007FOTH006KU3Q",_
"006W1GO007FOFG00730C2007PJZI007FPLN007MTLW007K2NQ005U4QT",_
"002TPJ5001UEZI0022T76002NVB5002NV3W002PA9P00245690026X48",_
"002NU41003AEDC003G11C003EM2Q002QMNM00219NZ002QMUV0029R1N",_
"001N8DP000FJ8A000V09W0022R0K000XTSU000Z5ZE003U1Q6006VZ3E",_
"005SHMS0067ZNU005PPHN005H8W6005EEYT005EEKM005ILVS005V8ZX",_
"006DGF50067W4G005R2HK005H9AG005D0E70057C510058QB80058OJ8",_
"004YVJT004YVJT1YR4GLC005VCYE006DNBT006OX99006XDUP00730WZ",_
"0071MXZ0071MXZ007086E006W09W006T74Z006W0O5006YU7B0075VMZ",_
"007EC8H007FR02007IKJ8007MSTZ007JZAT006137L004MDF10030MSB",_
"0028HGD002TKYQ002TIDU002B4MW001ZWA6002L1KQ0037L1G003BSJJ",_
"0030HTA0038Y7M00365H0003662L0025J5L0029RNO0022PTS001X1YU",_
"000I9DS0029OGR004TAVF006HX0Q0069FMF005ZKGH00657IU005ZJ9Q",_
"005LFT3005LFT5005IMOB005H7WS005IMVJ005O9QQ005POIB005POIA",_
"005MUZ2005MUZ2005IMOB005CZT10055XKP005331W005331W1YR4GLC",_
"005TY6T006C8K8006M3J1006UKBJ00707DT006XEN8006XEN8006VZVN",_
"006RRZ5006QDLT006ULWK006XFFQ007323T007CXGW007EC8H007FR02",_
"007JZAT007FR02007K0P2006QFST005HDV600393DL002WDOY002L2DI",_
"00244DX001BXGM001LSFE001ZW36002B5F70028BOT002FDBJ001ZV3C",_
"0025ICX001KDGS001RFHR001EQE8000XSEK003VHHC005A89O006F4A6",_
"006NJOO006F2OR0063SR9005MVKB005WQ4T005K11I005H83S005IMOB",_
"005FTJG005LGEP005R3H1005TX7A005WQQG005WQQE005Y5HZ005VBYR",_
"005POWF005H7PD005ED6K005ED6K1YR4GLC005SITW0066LAU006F1P4",_
"006KOYI006M44A006KPR1006KPR1006KPR1006JBDP006M540006QDER",_
"006ULPI0071NJF007A44X007BIWI007BIWI007BIWI0071NJF007BHB3",_
"00730IE00706KX006OXG6006GI1R005VEQS005AA8W003K8QT0030I0N",_
"002S1TE002S27Q002S2LZ002UW550033BJT0037K1N00414JO0055ZRO",_
"005ZL25006DO4C006KPY8006F32Y006HW7T006NJA5006DO4C0062E6X",_
"005Y5P6005SHU2005CZSZ005EEKM005FTJE005H8B1005MVKJ005OAXF",_
"005VCRC0062ESB0066N300069GM60069GM60066N30005VBYJ005PO3O",_
"005PO3O1YR4GLC005R3O40063RRO006ATEE006F23D006DNX4006F2OP",_
"006GHGA006HW7V006HWM4006M540006RS6C006W0H300732B0007CXO3",_
"007CXO3007BIWI007A44X006XF8O0070967006QCF1006QAFJ0072XJG",_
"0075S2F00706E8006OXGH006HXEZ00610M9005R5NF005MXQY005MYJJ",_
"005R6UA005OCB70063UCD006OXUT006T4RK006QAU0006T3KK006T5Y4",_
"006NJH6006QD0C006ULI9006C9R0005Y5W6005SITW005POP6005CZSZ",_
"005BL8L005D008005EEZ0005MVKJ005R4NN005ZL950066N300069GM6",_
"006AVDP006AVDP0069GM40060Z0V005WPXL005WPXL1YR4GLC005OA4Y",_
"0062CLW0067ZV8006C8K70069G0M0069FMD006AUDY006DNX4006F32Y",_
"006M540006T6XX006XF8O0074H2L007FR79007ECFO007CXO30078PDC",_
"006T6XX00610M900657Q3006M2QG006YP1O006UGQX006Q9N2006M1QN",_
"006QC7R006M447006GHN9006GHN9006OYU6006ULWI006YU70006T6C5",_
"006YRMF007FNTU007LAHW007A066006M4PL00708RO006YU79006GIN0",_
"006HXEP0069G7U005PP3H005SI8C005BLFN005A6H0005A6VB005BLFU",_
"005H93L005VCCY00657Q1006DOBJ006GI1R006HWTB006HWTB006GI1Q",_
"006818Z00656XA00656XA1YR4GLC005MUZ40060XUB0066KWL00680UU",_
"00681910063SK30066M390069FMF006AUL5006KQCH006RS6E006XF8Q",_
"0071O4V007CY9J007BJHY0078PYS00732WG006KQXV006M4WV006HVMH",_
"006J9LH006F03W006HU8G006YRTP007A2CL006KP5H006M3X2006M3X2",_
"006QC7T00707Z30071MQO006XF19006YT7G0075TUL006YRTM0071LCS",_
"0075UN6006KQCF006UMAW006RT5Z0068317006JCKH006GI1O005Y5VY",_
"005VC5R005D0780058S3O0058S3Q0055YYW005D0SU005TXE600657IU",_
"006F2VX006HWF2006JB6N006KQ5A006KQ5A006DOBB006DNIS006DNIS",_
"1YR4GLC005LGLO005VBYR005Y5W40060ZFA005ZL91005ZKUQ0060Z82",_
"0062DSG0069F0Z006KQ58006T74Z006XFU0006UMWG0078QKA0077BSP",_
"006YV77006RTDA006CAXV006AUL8006809H0066KI9006HTG4006KMZA",_
"006M2C7006OW9M006QD7K006RRZ5006QD7K006QDER00708RW0071NJH",_
"00732HZ0075W1500732AU006YU03006YU030075VFR0078PKE00732WC",_
"006T8IW006NLNR006HYLH0069H0C005WS4300656QB005BL1E005BL1E",_
"005BL1G0055Y69005EERT005MVDB005TX760066MAH006F2VW006AUS7",_
"006AUS5006F32U006M447006JAL1006JAL11YR4GLC005LGLO005TX76",_
"005ZKNP0063SYG0062ES7005ZKUQ0060Z820060Z0V0066LHT006KPQZ",_
"006RSDE006UMAU006W1O10078QKA0075X1400709YS006T84V006F4H1",_
"006AUL6006809H0066KI9006C6DS006DLCF006GF9V006KNYV006QD7I",_
"006T6QO006T6QQ006T6QQ0071NJF0071NJF0071NQE0074H9K00732AU",_
"00708RO0071N500077A7C007ECMQ0078PYO0071OJ0006T8Q3006P015",_
"006F42O0063TQV00656C2005H743005H7IC005H7IE005BL1G005IMOB",_
"005O9XP005SI8G0060YTW0066M390063SK10066M35006AUDW006C8R5",_
"006ATZK006ATZK1YR4GLC005MVD9005TX76005ZKNP0066MHM00658BD",_
"005Y6OJ005ZKUQ0060Z0V00656Q8006HW7T006QD7K006ULWK00709KG",_
"007A4XJ0078Q5Y0074HV700709KG006NKO7006DO4B006ATSM0067Z9T",_
"00654QX00654QX0067YVF006F0WH006T5Y4006W02P006W02P006XF1H",_
"00732B000732B000732HZ0075W150075VU000731WL00731WL0077A7C",_
"007EC8F007BJ3K0071OJ0006UNAH006RT5Z006KQCH0069FTK0067YVL",_
"005MTS3005O8JQ005MU6F005K0NB005O9CB005R2H8005SH8R005VARX",_
"005Y4I4005WPXL0060Y8C0066LAM0062D7200656Q800656Q81YR4GLC",_
"005R3O0005TX760060ZFA0066MHM00658BD0062EZA0062EDW0062E6P",_
"0066LHT006HW7T006OYFZ006T74Z006YUSV0078Q5Y0077BED0075WMS",_
"007333M006T7QJ006KPY8006GGUW006AT010062B7P0060WG400655C7",_
"006C7KD006QC7T006XE1Q00707S100708DG0077AEK0075W18007A44P",_
"007A44P007A3QG0075VFP0074GO40078OKL0077AEI0074H9L006XG12",_
"006RSRO006NJVL006HW7V0069F0Z0069DG0005SG91005SGG6005TV7T",_
"005PNBB005R1VU005SGG8005SGG8005V9ZC005WOY0005TVEU005VA6D",_
"005ZIH4005Y4WD0063RYP0063RYP1YR4GLC005Y5HX005ZK9I0060ZFA",_
"0062E6V0062ES700659AZ0066NH6006C9JS006DNX4006NIVV006QCTB",_
"006T6CH006UMAY0075WFM0078PYS007CY9J007CY9J0071O4V006XF1H",_
"006RR6M006M34L006HTU5006DLJE006ASLK006ASSP006M2Q6006T4YC",_
"006XDNC00707KU0075VU00075VU0007CXNV007CX9M007A3QG0078OKL",_
"0074G9U0071MCF0071MJM006YTLU006T6XR006NJOC006KOYG006HUFN",_
"006C7660069DFY0062BM3005ZIH60062BT9005ZIOC005SGUH005V9S7",_
"005TV0M005WOJS005Y3BC005TV0L005R1HF005R1HF005TWLM0062D74",_
"0062D741YR4GLC005VBYR0062DSO0060ZFA0062E6V0063TJS00659AZ",_
"006828R006C9QX006GHGA006OXNG006QCF1006OY1Q006ULPI0077ALR",_
"007CXO3007H5YU007JZI00075VU600708KL006T5Y5006OWNR006T3YT",_
"006NGWF006F0WB0069E14006QAML006T4K1006VYHI006UKIG006YU01",_
"006YU010075VMR0075VMR00779SY0075V1D0074FVJ006YST7006XE8V",_
"006ULB3006QD0C006KPY1006J9LH006GFGX006DKY40066KB10063QRX",_
"0063QZ20067Z9U0066L3N005Y4B3005ZIH6005VA6F005TVEU005TV7R",_
"005R1OL005R1OL005SGG6005ZJNW006809E006809E1YR4GLC005R3O0",_
"0063SK90060ZFA0062E6V0066N2Y0062G62006828R006DOII006HW7V",_
"006OX97006OXNG006OXNG006RS6C0075VU6007CXO3007IKQF007LE9L",_
"0075VU600708KL006T5Y4006QBMF006YR13006T3YR006GFNU0067ZGL",_
"006T3RI006VXOX006T4YA006RQZA006ULB1006T6XP006XF19006YTSU",_
"00731I700731I70071MCD006XE1M006RRDL006RR6J006M4PL006HVTG",_
"006F13J006DLCD006C5S90063R6400655XP00656C1006ATED006F1P5",_
"00656QB0062C7H005VADK005PNB8005PNB9005PNB9005R22U005VADL",_
"0066LOV006F2AD006F2AD1YR4GLC005R2O70062DLH006574N0066MAF",_
"00681G8006DO4B006C9CQ006C9JS006GHGA006KPCP006NIVV006QCF1",_
"006OY8S0077A7D007CXGU007H5RL007H65U0074H9L00732AU006W02O",_
"006RRRX006M3X0006M3BM006J9L90069E86006OVV0006VXOW006UJIP",_
"006QBM7006QC7R006UKIK006QD0C006RRRX006RRDL006T656006XE1M",_
"006UKIG006UJBQ006OW9E006M2J6006M2J7006C7660066JWS0065557",_
"0062C0C005ZJNY0069FMF006C9CQ006C9CQ00656QA0067Z2M0063QDM",_
"0060WG6005WNR8005TUF8005SG91005V9ZC0066M35006HW7T006HW7T",_
"1YR4GLC005BK8S005Y5AQ0063SD20066MAF00681G8006C9CQ0069FTK",_
"0068191006C95J006GH1Y006JAL4006M44A006RRRY0077A7D007A3XO",_
"007EC8F007H65U007CXV30077ALL00708DF006XEU9006T5QX006UJX4",_
"006T4YC006KOCU006QAML006VXOW006UJIP006QBM7006QC7R006UKIK",_
"006RRRY006ULB3006VZHA006VZOC006VZA3006QC7P006M2XD006HUMM",_
"006F13I006GFV4006ASLQ0066KB100655JG006ASLU0069F11006HWF2",_
"006KPY8006KPR3006DNBS006DM4W0066K3U0060WG6005V8ZN005TUF7",_
"005V9S60060X1O006HW7T006T6CH006T6CH1YR4GLC0055X6G005Y5AQ",_
"0066LW800681200069G7T006AUL5006811Z0066MHG0069FMD006DNIS",_
"006GH1Y006KPCP006ULB40077A7D007A3XO007CXGU007H65U007H65U",_
"0078PD600708DF006XEU9006UKII006XDGA006XD93006OWNL006QAML",_
"006VXOW006T4R4006OWUM006QC7R006VZA5006T6JJ006W02P006YT0G",_
"006XE8V006VZA3006OXG6006KO5S006GFV1006F13I006HUMP006C7DB",_
"0069DU70067Z2M006C7KK006AUE0006KPY8006M4PT006M4IO006HV8A",_
"006F0WH0067YVF0060WG4005TU80005TUF7005Y3BC0063QRX006M4IK",_
"006VZVN006VZVN1YR4GLC0055X6G005Y5AQ0066LW800681200069G7T",_
"006AUL5006811Z0066MHG0069FMD006DNIS006GH1Y006KPCP006ULB4",_
"0077A7D007A3XO007CXGU007H65U007H65U0078PD600708DF006XEU9",_
"006UKII006XDGA006XD93006OWNL006QAML006VXOW006T4R4006OWUM",_
"006QC7R006VZA5006T6JJ006W02P006YT0G006XE8V006VZA3006OXG6",_
"006KO5S006GFV1006F13I006HUMP006C7DB0069DU70067Z2M006C7KK",_
"006AUE0006KPY8006M4PT006M4IO006HV8A006F0WH0067YVF0060WG4",_
"005TU80005TUF7005Y3BC0063QRX006M4IK006VZVN006VZVN1YR4GLC",_
"1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC",_
"1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC",_
"1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC",_
"1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC",_
"1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC",_
"1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC",_
"1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC1YR4GLC"
 #include "crt.bi"
screen 20,32
dim shared as double magnification
dim shared as any pointer image
image=imagecreate(w,h)
magnification=  1
function ULongFromBase(N as string,_base as byte) as ulong
   return strtoul(n,0,_base)
end function
function map(a as single,b as single,x as single,c as single,d as single) as single
   return ((d)-(c))*((x)-(a))/((b)-(a))+(c)
end function
function scaler(im as any ptr) as any ptr
    dim as integer w,h
    dim as long x,y,xpos,ypos
    imageinfo im,w,h
    dim as long nx=w*magnification,ny=h*magnification
    dim as any ptr im2=imagecreate(nx,ny)
    for x=0 to nx
        for y =0 to ny
            xpos=map(0,nx,x,0,w)
            ypos=map(0,ny,y,0,h)
            pset im2,(x,y),point(xpos,ypos,im)
        next y
    next x
    return im2
end function
sub read_data()
    dim as long ctr
  dim as single c=ubound(a)\8
redim as string s(1 to c)
for n as long=1 to c
   read s(n)
    for m as long=1 to len(s(n)) step 7
       ctr+=1
        dim as ulong x= ULongFromBase( mid(s(n),m,7) ,36)
        a(ctr)=x
        next m
    next n
end sub
Sub drawbitmap_to_image(scale as single=1,mx As long=0,my As long=0)
dim as long ctr
For x As long=0 To w
For y As long=0 To h
pset image,(x,y),a(ctr)
ctr+=1
Next y
Next x
End Sub
read_data()
drawbitmap_to_image(magnification)
var image2=scaler(image)
locate 2,2
windowtitle " magnification = 1"
put( 100, 100),image2,PSet
Locate 17,11
Print "press a key, birdnew.bmp will be created"
Sleep
ScreenRes 80,60,32
Put(0,0),image,PSet
BSave "birdnew.bmp",0
imagedestroy image
imagedestroy image2
  
BasicCoder2
Posts: 3906
Joined: Jan 01, 2009 7:03
Location: Australia

Re: create program to create bitmap

Post by BasicCoder2 »

@dodicate,

When there is a limited number of colors I think my program makes less lines of data statements for the image itself. It does however require extra lines to code the palette values.

Of course as the number of colors increases then so does the largest palette number until there is no advantage in using palette numbers at all. This example has 4268 colors and although that is less than the largest rgb value it does require storage of those colors in the color list which take up extra space.

So in short, as the number of colors increases my method increases the program file size very quickly while your method remains constant in size for a given image size.

However if the number of colors is limited, as it often the case in a clean set of sprite images, a larger sprite sheet can be coded in less than the 60000 character limit of the forum's posts then would be possible by your method.

I suspect if I pass the parrot image through a color reduction process to end up with a set of 256 colors the image itself will still look ok.

.
leopardpm
Posts: 1795
Joined: Feb 28, 2009 20:58

Re: create program to create bitmap

Post by leopardpm »

dodicat wrote:I tried a method using base 36 to condense the output size.
when you say 'base 36', are you saying each ascii character in the data statements you make will hold a value from 0-35? Basically using A-Z & 0 - 9 for the 36 different values?

That is only about 5 bits (32 values) of info per byte in a data statement string, you can increase that pretty easily by 40% (7 bits) by using 128 values (A-Z, a-z, 0-9, !@#$%^&*(), etc). This would cut your parrot size down by another estimated 40% I think. I didn't check your code, but you can also RLE the image first to obtain some compression - best if has multiple consecutive pixels of the same color, parrot may not compress well, haven't seen it yet.

BasicCoder: Instead of one palette per frame, I was thinking one palette (256 colors max) for all frames in the animation.... but you might actually be already doing this probably, I just probably misread something you typed...

Since the whole purpose of this encrypting method is to copy/paste to/from the FB forum, I was thinking to make the conversion program communicate with the clipboard so that:
(1) run the conversion program
(2) run browser and get to FB forum post
(3) copied the raw ascii data (NOT data statements)
(4) switch to conv. program and hit the convert clipboard key
(5) program inports the clipboard, converts to bitmap, then makes a BMP file (and shows the result on screen).

and same thing only opposite for converting BMP to ASCII data for forum post...

that seems to be the easiest method, instead of incorporating DATA statements into program and 'bloating' program with the conversion routine - just write program to use regular BMP (like everyone does) and focus the image conversion in separate process... what do you think?
Congratulations leopardpm.
Thanks! Today is the day... and I, of course, have a million things to do...
thesanman112
Posts: 538
Joined: Jul 15, 2005 4:13

Re: create program to create bitmap

Post by thesanman112 »

how would you get the bitmap data into forum? certain characters wont display, will they?
Tourist Trap
Posts: 2958
Joined: Jun 02, 2015 16:24

Re: create program to create bitmap

Post by Tourist Trap »

It seems that finally we will treat all those issues we feel the need to get better handled in order to exchange things and other. I did a 2 cents contribution to this some age ago:
http://www.freebasic.net/forum/viewtopi ... on#p212709

Here is how the parrot is compressed. But I've some bug in my decompressor so I cant display it (twisted leg), but it should work...

You can understand easily what it does. For instance the parrot first line is 80 ocurrences of zeros. So it's written 0.80, where the color is the integer part, and the occurence count equals the decimal part in reverse order. Easy.

Code: Select all

DATA 0.08
DATA 25.52,26.51,25.6,21.2,12.51,13.8,12.3,13.4,12.2
DATA 22.5,25.22,26.5,17.8,26.5,25.2,12.2,22.2,12.21,22.4,13.31
DATA 22.6,25.12,26.4,17.61,16.3,12.2,21.4,13.3,22.01,13.11
DATA 22.6,25.02,26.2,17.2,8.2,17.91,13.4,22.51,13.01
DATA 22.7,25.81,26.2,17.3,8.11,17.6,17.4,16.4,22.51,13.01
DATA 22.8,25.51,17.2,8.81,17.2,16.2,16.4,17.2,16.6,22.11,13.8,22.2
DATA 22.9,25.41,17.4,8.51,17.3,17.3,16.11,22.11,13.8,22.2
DATA 22.9,25.31,8.2,17.2,8.91,16.21,15.2,22.21,12.3,22.5,13.1
DATA 22.9,25.21,17.2,8.22,7.2,16.01,15.2,25.2,22.11,13.3,22.5
DATA 22.11,25.8,17.2,8.22,16.11,15.3,12.3,15.2,22.81
DATA 22.41,25.5,8.2,17.2,8.61,7.3,7.3,16.3,15.01,12.4,22.81
DATA 22.71,25.2,17.2,8.61,8.2,7.2,16.2,7.4,15.01,12.6,22.71
DATA 22.4,25.7,22.2,22.2,22.2,17.3,8.81,7.2,7.3,6.2,12.2,15.7,12.4,3.2,3.2,22.81
DATA 25.41,17.3,8.51,7.3,7.2,7.2,7.2,6.2,15.4,12.2,15.4,15.2,12.4,0.1,13.2,22.81
DATA 25.41,17.2,8.51,7.9,16.2,12.7,12.6,12.3,13.3,26.2,22.71
DATA 25.51,8.41,7.4,3.4,3.4,3.2,15.2,12.2,12.9,12.2,26.5,25.2,22.21,22.3
DATA 25.11,25.3,8.9,8.4,7.4,3.2,3.2,3.2,12.21,12.2,22.2,12.4,26.2,26.4,25.4,22.9,25.4
DATA 25.7,25.7,8.5,8.3,7.4,7.2,6.3,3.3,25.2,26.3,13.4,13.2,12.2,13.2,0.1,26.2,13.2,25.2,22.2,26.2,13.3,13.2,22.51
DATA 25.7,22.2,25.4,17.2,8.4,7.4,6.5,3.2,3.2,25.2,26.5,26.2,12.3,13.5,3.2,12.2,13.2,25.2,25.3,13.3,4.2,25.2,22.2,22.11
DATA 25.8,25.2,25.3,8.4,7.4,12.4,12.6,13.4,26.4,16.2,0.1,0.1,25.2,12.2,13.2,13.2,12.2,13.2,22.2,26.2,13.3,4.2,13.2,22.3,22.2,13.2,22.7
DATA 25.4,22.3,25.2,22.2,25.2,8.3,7.4,12.2,24.2,21.6,22.2,0.1,0.1,0.1,13.2,26.2,26.2,13.2,13.2,13.2,0.1,26.2,13.3,22.4,25.2,0.1,0.1,0.1,4.2,4.2,22.2,22.3,13.3,22.6
DATA 25.3,22.5,22.3,17.2,8.2,7.4,24.9,21.2,9.2,13.2,26.3,0.1,25.2,12.3,16.2,13.2,13.7,25.3,0.1,0.1,0.1,0.1,0.1,0.1,0.1,1.2,22.2,21.3,22.2,12.2,22.5
DATA 25.4,22.4,22.3,17.2,8.2,8.4,24.9,21.3,12.2,13.2,12.2,13.6,12.3,13.3,13.2,13.3,13.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,4.2,22.3,22.3,12.3,21.2,22.3
DATA 25.6,25.2,25.2,17.3,8.2,8.3,24.9,21.2,21.2,25.2,0.1,12.2,0.1,0.1,0.1,13.7,12.2,25.2,12.2,26.3,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,1.2,13.2,21.2,22.3,12.2,21.4,22.1
DATA 25.6,25.2,25.2,17.2,8.3,7.3,15.2,24.7,21.5,0.1,12.2,26.4,0.1,0.1,9.2,12.2,25.2,0.1,0.1,0.1,25.2,25.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,13.2,21.2,22.4,21.3,21.3
DATA 25.11,8.3,16.3,24.6,21.2,24.5,24.2,25.2,13.5,26.4,13.2,12.2,26.4,25.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,9.2,22.7,21.5
DATA 25.11,8.3,16.2,24.41,21.2,0.1,0.1,0.1,9.2,0.1,12.2,12.2,12.2,26.7,13.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,13.2,22.11
DATA 25.11,8.3,24.31,21.2,21.2,0.1,12.2,26.4,12.4,26.6,25.2,0.1,0.1,10.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,9.4,0.1,13.2,22.11
DATA 25.01,17.3,13.2,24.31,21.2,13.2,26.51,26.4,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,9.3,0.1,13.2,22.9,21.2
DATA 25.01,5.2,16.2,24.21,21.3,0.1,26.51,26.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,9.2,0.1,0.1,13.2,22.11
DATA 25.01,8.2,16.2,24.11,21.3,0.1,0.1,26.51,26.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,9.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,9.2,0.1,13.2,22.11
DATA 25.9,8.3,16.2,24.21,21.2,0.1,0.1,26.41,26.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,12.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,9.2,0.1,13.2,22.11
DATA 25.9,7.2,7.2,24.31,12.2,0.1,0.1,26.5,25.2,26.6,25.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,9.2,0.1,0.1,0.1,0.1,9.2,0.1,0.1,9.2,9.2,22.21
DATA 25.8,4.2,4.2,16.2,24.11,12.3,0.1,0.1,25.2,26.2,25.4,25.4,25.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,12.2,22.21
DATA 25.8,8.3,16.2,24.21,21.2,0.1,0.1,0.1,0.1,13.2,25.3,25.3,26.2,25.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,13.4,0.1,0.1,0.1,0.1,13.2,22.21
DATA 25.8,8.3,16.2,24.21,21.2,0.1,0.1,0.1,0.1,0.1,12.2,25.4,25.3,13.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,13.3,0.1,12.3,0.1,0.1,0.1,0.1,0.1,13.2,22.21
DATA 25.8,8.4,24.41,12.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,13.6,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,13.4,0.1,0.1,9.2,0.1,0.1,0.1,0.1,22.41
DATA 25.8,8.4,16.2,24.11,24.2,12.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,9.4,0.1,9.2,12.2,22.5,0.1,0.1,0.1,9.2,22.31
DATA 25.8,8.4,16.2,24.11,24.2,3.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,12.2,12.2,13.3,22.7,0.1,0.1,0.1,13.2,22.21,21.1
DATA 25.7,8.5,15.2,24.31,3.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,3.2,4.2,16.2,12.2,12.4,22.4,0.1,0.1,12.2,22.31,21.1
DATA 25.5,22.2,8.4,7.2,24.2,21.4,24.7,12.2,12.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,12.3,8.2,17.2,13.2,12.2,13.2,22.2,13.2,9.2,22.5,22.01
DATA 25.5,22.2,8.5,15.2,21.4,24.7,12.2,3.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,12.2,13.2,7.2,8.2,13.3,12.2,22.2,0.1,13.2,22.31,21.3
DATA 25.5,22.2,8.5,15.2,24.01,21.2,12.2,3.4,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,12.2,24.2,7.2,8.3,13.2,12.2,12.4,12.2,13.4,22.8,12.3
DATA 25.5,22.2,8.4,3.2,24.11,12.4,3.4,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,12.2,24.4,8.2,17.2,13.4,12.2,22.3,13.2,13.3,12.2,13.2,22.2,21.3,12.2
DATA 25.3,25.2,16.2,7.2,8.2,3.2,24.31,12.2,3.7,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,12.2,24.5,8.4,4.2,13.2,12.2,12.2,12.8,13.3,21.2,12.3,22.1
DATA 16.3,22.2,17.2,16.2,15.2,15.2,21.2,24.8,21.4,12.4,4.2,3.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,12.2,24.6,4.2,17.2,4.2,8.2,12.4,12.61,22.1
DATA 25.3,17.4,16.2,24.4,24.2,21.2,24.6,21.4,12.4,3.4,0.1,0.1,0.1,3.2,0.1,3.2,12.2,24.6,7.3,4.4,13.2,12.71,22.3
DATA 22.3,17.5,15.2,24.3,21.2,24.3,21.2,24.3,21.4,12.4,12.2,0.1,0.1,0.1,0.1,0.1,12.5,21.2,24.6,13.2,8.2,4.4,13.2,12.51,22.4
DATA 17.7,13.2,24.3,24.11,21.4,12.4,12.2,3.2,3.2,3.2,12.4,24.8,13.2,17.2,4.5,12.61,22.4
DATA 12.3,14.2,4.2,16.2,24.2,24.8,24.4,21.6,12.6,3.3,21.3,12.2,24.2,24.2,24.4,4.3,17.2,4.3,7.2,12.5,13.4,12.7,13.2,22.1
DATA 13.5,13.2,16.3,24.41,21.7,12.8,21.4,24.3,24.5,16.2,7.2,4.6,12.3,13.6,12.9,22.1
DATA 4.3,4.2,25.2,4.2,16.2,24.41,21.7,21.2,12.4,21.5,24.7,3.3,4.2,4.6,12.3,13.9,12.7
DATA 4.3,4.2,16.2,5.2,7.2,12.2,24.41,21.5,24.3,12.2,21.3,24.4,24.6,3.3,4.2,13.2,4.4,13.2,13.6,22.2,13.2,12.7
DATA 8.3,7.2,5.2,8.2,16.4,21.2,24.12,21.31,21.2,3.3,4.8,12.4,13.2,22.4,12.8
DATA 8.3,4.2,7.3,16.4,24.4,24.12,21.41,3.4,4.2,4.5,12.4,22.6,12.8
DATA 8.7,4.4,24.5,21.2,24.12,21.31,3.3,4.2,4.6,12.3,22.6,12.8
DATA 8.4,4.2,8.2,4.4,4.2,24.2,21.2,24.12,21.31,3.2,3.3,4.2,4.4,12.4,22.6,12.7
DATA 8.3,4.01,16.2,21.4,24.81,24.2,21.41,0.1,3.2,4.7,12.6,22.4,12.5,22.2
DATA 8.3,4.8,8.2,16.2,24.2,21.2,24.51,21.91,3.3,4.7,12.7,22.3,13.4,22.3
Good job leopardpm, dont forget to teach freebasic to your promise ;)
dodicat
Posts: 7976
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: create program to create bitmap

Post by dodicat »

thesanman112 wrote:how would you get the bitmap data into forum? certain characters wont display, will they?
I tried to base 128. (using the gmp library)
5 character length as opposed to 7 characters in base 36.
The small hiccup was the " ,chr(34).
This character cannot be included in the data string.
There weren't many in the parrot, I suppose you could just skip over a base 128 number with chr(34), or try another colour close to it.
BasicCoder2
Posts: 3906
Joined: Jan 01, 2009 7:03
Location: Australia

Re: create program to create bitmap

Post by BasicCoder2 »

This program reduces the number of colors in birdnew.bmp
and saves the result as reducedBird.bmp
It does a simple masking of lower bit values. The more you mask out the less colors in the image.

Code: Select all

Const NULL As Any Ptr = 0
screenres 640,480,32

dim shared as string fileName
fileName  = "birdnew.bmp"      ' <----- change to desired bitmap to load

dim shared as any ptr image
dim shared as any ptr image1   'destination image
dim shared as integer iWidth,iHeight

sub loadImage(file as string)
    dim as integer fileHnd = FreeFile()

    open file for binary as #fileHnd
    get #fileHnd, 19, iWidth
    get #fileHnd, 23, iHeight
    close #fileHnd

    image = imagecreate(iWidth,iHeight,rgb(255,255,255))

    bload file,image  'bload bitmap pic.i
    If image = NULL Then
        Print "image creation failed!"
        Sleep
        End
    end if
end sub

loadImage(fileName)
image1 = imagecreate(iWidth,iHeight)

put (0,0),image,trans
locate 10,2
print "tap key to see reduction ..."
sleep

dim as ulong v
dim as ubyte r,g,b,mask
mask = &HF0   '1000 0000 or 1100 0000 or 1110 0000  80,C0,E0,F0

for j as integer = 0 to iHeight-1
    for i as integer = 0 to iWidth-1
        v = point(i,j,image)
        r = (v shr 16 and 255) and mask
        g = (v shr 8 and 255) and mask
        b = (v and 255) and mask
        pset image1,(i,j),rgb(r,g,b)
    next i
next j
cls
put (0,0),image1
bsave "reducedBird.bmp",image1
locate 10,2
print "color reduced image"
sleep
        
imagedestroy(image)
imagedestroy(image1)
This program creates a program to generate the reducedBird.bmp from data statements,

Code: Select all

Const NULL As Any Ptr = 0
screenres 640,480,32

dim as integer c  'palette number
dim as integer charCount
dim as string  sn  'to remove leading space

dim shared as string fileName,fileName2,progName
fileName  = "reducedBird.bmp"               ' <----- change to desired bitmap to load
fileName2 = "reducedBird2.bmp"         ' <----- change to desired name of save
progName  = "createReducedBird.bas"    ' <----- change to desired name of program created

dim shared as any ptr image
dim shared as integer iWidth,iHeight


sub loadImage(file as string)
    dim as integer fileHnd = FreeFile()
    'get width and height of bitmap
    open file for binary as #fileHnd
    get #fileHnd, 19, iWidth
    get #fileHnd, 23, iHeight
    close #fileHnd
    'initialize pointers to pic.i bitmaps
    image = imagecreate(iWidth,iHeight,rgb(255,255,255))
    bload file,image  'bload bitmap pic.i
    If image = NULL Then
        Print "image creation failed!"
        Sleep
        End
    end if
end sub

loadImage(fileName)

'=========== NOW EXTRACT COLOR PALETTE INTO colors LIST =======
dim shared as ulong colors(100000)
dim shared as ulong v
dim shared as integer totalColors,found

for j as integer = 0 to iHeight-1
    for i as integer = 0 to iWidth - 1
        v = point(i,j,image)  'get a color
        found = 0
        if totalColors > 0 then 'search for color
            for i as integer = 0 to totalColors-1
                if colors(i)= v then  'color found
                    found = 1
                end if
            next i
        end if
        
        if found=0 then 'not found so add to list
            colors(totalColors) = v
            totalColors = totalColors + 1
        end if
    next i
next j
'=====================================================

Open progName For Output As #1

print #1,"screenres 640,480,32"
print #1,"dim as any ptr image"
print #1,"image = imagecreate(";iWidth;",";iHeight;")"
print #1,"dim as integer totalColors = ";totalColors
print #1,"dim as ulong colors(totalColors)"
print #1,
print #1,"for i as integer = 0 to totalColors-1"
print #1,"    read colors(i)"
print #1,"next i"
print #1,

print #1, "    dim as integer n"
print #1, "    for j as integer = 0 to ";iHeight-1
print #1, "        for i as integer = 0 to ";iWidth-1
print #1, "            read n"
print #1, "            pset image,(i,j),colors(n)"
print #1, "        next i"
print #1, "    next j"
print #1,
print #1, "bsave ";chr(34);filename2;chr(34);",image"
print #1,

'==============  now make color data statements  =======================
charCount = 0
print #1, " 'color data statements"
print #1, "DATA ";
for i as integer = 0 to totalColors-1
    c = colors(i)
    sn = str(c)
    print #1,sn;
    charCount = charCount + len(sn)
    if charCount > 50 then
        charCount = 0
        print #1,"_"
    end if
    if i<>totalColors-1 then
        print #1,",";
    end if
next i

print #1,
'==============  now make sprite data statements =======================
print #1, " ' palette numbers for each pixel"
charCount = 0
print #1, "DATA ";
    for j as integer = 0 to iHeight-1
        
        for i as integer = 0 to iWidth-1

            v = point(i,j,image)
            'find color in list and get palette number c
            for n as integer = 0 to totalColors-1
                if v = colors(n) then
                    c=n
                end if
            next n
            sn = str(c)
            print #1,sn;
            charCount = charCount + len(sn)
            if charCount > 50 then
                charCount = 0
                print #1,"_"
                print #1,",";
            else
                print #1,",";
            end if
        next i
        'print #1,
    next j
    print #1,"0"

Close #1
print
print "A program called createBitMap.bas has been created"
print "If you load and run this program it will create"
print "and save the image as a file called"; fileName2

sleep
BasicCoder2
Posts: 3906
Joined: Jan 01, 2009 7:03
Location: Australia

Re: create program to create bitmap

Post by BasicCoder2 »

This is the program created by the second program in the previous post which in turn creates the reducedBird.bmp, which was reduced in total colors using mask = &HF0 from birdnew.bmp

Code: Select all

screenres 640,480,32
dim as any ptr image
image = imagecreate( 80, 60)
dim as integer totalColors =  815
dim as ulong colors(totalColors)

for i as integer = 0 to totalColors-1
    read colors(i)
next i

    dim as integer n
    for j as integer = 0 to  59
        for i as integer = 0 to  79
            read n
            pset image,(i,j),colors(n)
        next i
    next j

bsave "reducedBird2.bmp",image

put (0,0),image,trans
sleep

 'color data statements
DATA -16777216,-4153232,-4149136,-4149120,-3100544,-3096448,-2047872_
,-2043776,-995184,-991088,-991072,-995168,-986960,-986976,-2047888_
,-3100560,-4149152,-4153248,-4157360,-6262736,-7311296,-7307200_
,-9412560,-7315392,-8363984,-8368080,-9416656,-8363968,-7311280_
,-7315376,-5205920,-995200,-999312,-999296,-4132656,-7278368_
,-9375504,-10424080,-8326928,-6229792,-6233904,-5185344,-5193552_
,-5197664,-6246256,-6246272,-6266800,-6262704,-6266816,-7315408_
,-2043760,-991104,-2035520,-3088192,-5185328,-11472656,-10428192_
,-10428176,-11476752,-10424096,-10424112,-8326976,-8335216_
,-8343424,-7294848,-6242160,-8355776,-6262720,-6258608,-3088208_
,-7282480,-12521232,-12525328,-11480864,-11472672,-11476800_
,-11476816,-9375552,-9375568,-8326992,-10432416,-7303088,-7307184_
,-6258592,-5210032,-5210016,-2039632,-4136768,-8326944,-13573904_
,-12525344,-10428208,-10428224,-11480896,-11480944,-11476832_
,-10424144,-11485088,-9392032,-9396144,-8347568,-6254512,-3096432_
,-2039664,-13569808,-12525360,-13578016,-13578000,-13573920_
,-12529456,-13578048,-12525376,-12525408,-11472720,-12525424_
,-11476848,-11480928,-10432368,-11485040,-9379680,-9379664_
,-9379696,-9383840,-8335264,-7286672,-7290768,-7294864,-995216_
,-14626592,-14622496,-13573936,-12529472,-12529488,-11485056_
,-10432384,-9383824,-9387936,-8339360,-7290784,-4157344,-5201824_
,-2051984,-4140896,-14626608,-12533568,-12529504,-11485072_
,-10436512,-10440624,-9392064,-8339392,-6250400,-4161440,-3096464_
,-1003392,-13578032,-14626624,-13582144,-12533584,-12533600_
,-12533648,-10436496,-11485104,-11489200,-10440640,-7294896_
,-6250416,-5205936,-6254496,-5201808,-3104672,-3100576,-5193568_
,-11476768,-14630704,-14630720,-13582128,-12525392,-13578080_
,-12529536,-11480960,-10436528,-11489184,-9387968,-10440656_
,-10444752,-10448848,-10452944,-10448864,-9392096,-7299008_
,-5205904,-5197696,-8331040,-15679280,-15679312,-14630736_
,-13582160,-12533616,-12537776,-12537760,-11489216,-11493312_
,-9396192,-9392080,-9396176,-9400272,-11501552,-10448896,-8351712_
,-6254528,-4157328,-14634800,-14634816,-14634832,-13586256_
,-13586272,-13582176,-14634864,-13586304,-12537728,-11489152_
,-12541872,-12541856,-10444768,-11497456,-11501568,-11505664_
,-10457088,-9404416,-8355792,-4157296,-5201856,-3108784,-15679296_
,-14634848,-13590448,-13594576,-12541888,-11497424,-11493328_
,-10452976,-12554240,-12558336,-12562416,-12566496,-5210000_
,-6254480,-7290720,-15671088,-14638960,-12537696,-13590384_
,-14643088,-13590432,-11489232,-10444736,-11497440,-11493360_
,-9396208,-11497472,-10444784,-10457072,-11513856,-14671872_
,-8359824,-3092272,-11476784,-15683408,-14638976,-14638992_
,-13590416,-13586352,-13586336,-12537744,-13594544,-10448880_
,-10452992,-10452960,-11509744,-12566528,-8359840,-7307136_
,-3096368,-4153216,-5197680,-13569824,-14622512,-15683424_
,-12545968,-12545984,-13594592,-12541904,-12546000,-12546016_
,-11493344,-12546032,-12550128,-10461184,-12562432,-11513824_
,-7303072,-3096400,-2047808,-3096384,-3092256,-5201792,-9387856_
,-15683392,-14630752,-12554224,-13615104,-12558320,-9404368_
,-10457040,-16769024,-11509712,-14667776,-10461168,-11509760_
,-11509728,-6250368,-4149088,-5201776,-3100512,-2043712,-5193520_
,-7298928,-14630784,-13582192,-14639008,-15691696,-14639024_
,-14639040,-13590464,-13590480,-13602800,-13606912,-9396160_
,-5193584,-3092304,-4144976,-6242144,-12570576,-10465184,-9408384_
,-10461072,-4144960,-8363936,-10469312,-9412544,-9408432,-14671856_
,-11513792,-7303056,-10461120,-3100528,-2047824,-5205888,-8363952_
,-8351632,-10448752,-12558208,-7303040,-5197728,-8331072,-15687568_
,-14634896,-13590496,-12541920,-14643168,-3092288,-4140880_
,-11505600,-10457008,-8355728,-10465200,-9412528,-12562384_
,-11509696,-4153200,-6258576,-4149104,-8355744,-8355712,-10456960_
,-13610912,-7311264,-9383744,-15687520,-14634880,-13586320_
,-6246304,-8351648,-4144992,-7298944,-15720448,-15724544,-12566480_
,-6250352,-7303024,-10461104,-11509680,-12562352,-12558224_
,-14663600,-9408416,-6250384,-11484992,-6250464,-6250496,-6254592_
,-5206016,-5206000,-6258688,-7311360,-13615072,-13619168,-12566464_
,-13615040,-12562336,-13615024,-10432320,-13586288,-15683440_
,-8347584,-3100672,-2056192,-1007616,-1003520,-2060288,-1007600_
,-10469376,-9408400,-11517904,-7307152,-9416624,-15728640_
,-13619136,-13619152,-11513776,-5214144,-7294832,-11480880_
,-5197776,-4153344,-3104768,-1011712,-8364032,-10465264,-11513808_
,-7307168,-15728624,-14671824,-14671840,-12566448,-13578064_
,-3108864,-3112960,-3104720,-3100592,-9404320,-10465216,-8359856_
,-14675952,-15728608,-15724512,-12570560,-8335200,-13586240_
,-12541824,-11493280,-7299040,-4149248,-4161520,-2039616,-13623280_
,-3096416,-13623232,-15724496,-16777184,-15724528,-13623248_
,-11472704,-11493264,-10440608,-8343488,-5197792,-2052080_
,-3104736,-2052016,-2043728,-986912,-13623264,-14675936,-11517888_
,-13573952,-9392048,-6246352,-3096560,-999424,-999408,-6258656_
,-12574720,-14675968,-986928,-5197712,-11493296,-6246368,-1011696_
,-4161536,-13627392,-2035504,-2039600,-4145008,-11517872,-3104656_
,-11489120,-15691664,-11497392,-2052096,-2060272,-4165616_
,-10477568,-9412512,-4145024,-6258624,-14643040,-9387904,-6242256_
,-2048000,-1003504,-5214208,-11522048,-3092320,-991040,-12570592_
,-10436464,-13590368,-9387920,-3096576,-7319552,-14680064_
,-2035536,-3084096,-16777200,-14680048,-6238032,-3096544,-10465280_
,-9391968,-13590400,-2056176,-9416704,-13623296,-10452896_
,-14643056,-14643072,-5210112,-9412592,-13619184,-9400224_
,-12537712,-10440576,-6266880,-16773120,-2051952,-8339328_
,-11485024,-10444688,-6246336,-11513840,-16773104,-16773088_
,-13627360,-999280,-7286640,-3100656,-12570608,-10469328,-10428240_
,-8347536,-5201888,-15728576,-11522032,-11526144,-11526096_
,-12578800,-12541840,-10444720,-6250480,-13611008,-13619200_
,-7319520,-6262688,-8335184,-13606800,-9391952,-9396128,-9375536_
,-12541808,-4157440,-5201920,-11505648,-15720432,-15720416_
,-12566512,-10452928,-14647168,-12533552,-10432304,-8351616_
,-15675216,-7299024,-7303168,-13610992,-14663680,-15716320_
,-15716336,-14667760,-14667744,-8351664,-12549984,-12541792_
,-8355696,-7315360,-6254464,-12521264,-14626640,-8347600,-5201904_
,-7303152,-12554208,-14659536,-14663648,-14667728,-5193680_
,-4149184,-12550064,-10440528,-7319488,-9412576,-13569840_
,-15691648,-16744384,-7307264,-14655440,-15712240,-4153312_
,-10444656,-12545920,-11501456,-7319472,-6246288,-15687536_
,-15695760,-15699904,-999392,-8351744,-11501536,-12550112_
,-14655472,-13602784,-15708112,-13610960,-14659552,-15716304_
,-9412608,-5201872,-2047984,-13594496,-8363920,-8359872,-8343376_
,-8335136,-11489168,-10440592,-10448832,-7299056,-7307248_
,-6254576,-9404400,-11505632,-13606864,-12554160,-13602768_
,-14663616,-10465248,-11497360,-12550016,-5205872,-8339264_
,-10440560,-8339312,-8351680,-3100640,-8355840,-13606880,-12554176_
,-8359920,-4157424,-13606816,-14651280,-9387872,-11501504_
,-13610976,-14663664,-6258672,-11497344,-14659488,-13598592_
,-10452880,-7294800,-11493248,-10448816,-3092448,-9408496_
,-11501520,-12558288,-9408512,-7311344,-10457056,-12554128_
,-10444672,-13594480,-14655392,-10456992,-8368064,-11497312_
,-10448736,-13594512,-8343472,-2064384,-8359936,-9408480,-12550096_
,-14643104,-12545936,-11493232,-15708080,-15699872,-11501424_
,-11497328,-13602672,-10448768,-987008,-9396080,-6242240,-9404384_
,-8355824,-6262784,-13598624,-16756656,-15699856,-13602688_
,-9408448,-6270880,-12550032,-5181328,-15699824,-6254560,-7303136_
,-9400288,-15703952,-9400192,-14638912,-10444704,-14638944_
,-9400320,-3104752,-4153328,-12558304,-12550048,-11501472_
,-13602704,-15699840,-16744336,-12537648,-14638928,-13590352_
,-995312,-3108848,-12550080,-14651312,-14647184,-14651296_
,-16752544,-15695776,-7286688,-3088320,-4145104,-15703984_
,-16748448,-16752560,-12537680,-13594528,-6238112,-5189568_
,-4140992,-4165632,-14647200,-14647152,-15691680,-15691632_
,-12545952,-12545904,-5218304,-5214192,-13602752,-13598608_
,-15695744,-16756672,-15712224,-15699888,-14651328
 ' palette numbers for each pixel
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0_
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,3,4,4,5,5,5,5,5,5,6,6,6,7,7,7,8,9_
,9,10,11,12,12,12,12,13,12,12,12,12,12,12,10,10,8,7,14,15,16,17,18,19,20,21,21_
,22,23,24,25,26,26,26,26,26,25,27,27,28,28,28,28,28,28,29,29,27,27,23,28,28,28_
,28,23,24,25,25,30,30,30,17,1,1,2,3,4,5,5,5,5,6,7,31,31,31,32,33,8,8,9,9,9,10,10,10,10_
,34,35,36,36,37,36,36,38,35,39,40,41,42,43,44,45,28,23,46,47,48,49,23,23,23,23_
,23,27,23,23,20,20,47,47,47,47,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,30_
,30,30,30,17,1,1,2,3,5,5,6,6,50,8,8,31,31,33,33,31,31,31,51,9,13,52,53,54,36,55,56_
,57,58,58,57,36,37,37,37,37,59,59,60,61,62,63,64,65,66,67,67,67,67,47,28,28,67_
,47,47,68,68,68,68,68,47,47,28,28,28,28,28,28,28,28,28,28,28,28,28,30,30,30,30_
,17,1,1,2,4,5,6,6,6,8,8,8,8,31,31,50,7,31,31,9,10,69,70,37,71,72,73,58,58,58,58,58,57_
,55,55,74,74,75,75,76,75,77,78,78,79,80,81,81,82,68,68,68,83,68,68,68,68,84,85_
,85,68,68,47,47,28,28,28,28,28,28,28,28,28,28,28,28,30,30,30,30,30,1,1,2,15,5,6_
,6,6,8,8,8,8,31,8,9,9,8,8,86,87,88,57,58,72,89,89,90,90,90,90,90,90,89,71,55,55,56_
,91,92,93,94,95,96,96,97,98,99,100,101,68,68,68,85,30,30,30,30,30,85,85,68,68_
,47,28,28,28,28,28,28,28,82,28,28,68,68,30,30,30,30,30,30,1,1,1,15,5,6,102,33,33_
,31,31,31,8,103,9,87,37,104,105,71,71,89,106,89,89,89,107,108,108,108,109_
,110,111,112,112,75,113,114,115,116,94,117,118,119,120,121,122,123,124_
,125,126,30,30,30,30,30,30,30,85,68,68,47,28,28,28,28,28,82,82,82,68,68,47,47_
,30,30,30,30,30,30,30,17,1,15,15,4,6,6,6,6,8,31,7,127,9,36,58,58,58,72,89,106,89_
,89,128,129,128,108,108,108,130,90,131,132,76,75,76,114,95,116,94,118,133_
,134,134,135,122,136,136,137,138,30,139,30,30,30,85,30,85,68,68,47,28,28_
,28,28,28,82,82,82,68,47,28,28,30,30,30,30,30,30,30,140,17,2,15,15,141,6,5,6,6_
,33,7,32,142,71,37,57,72,89,89,108,108,89,89,143,143,108,130,130,130,109_
,131,131,131,144,145,116,94,94,117,133,146,80,147,122,122,148,148,149_
,150,151,30,30,30,30,152,30,85,68,68,68,47,28,20,20,28,68,68,68,68,28,28,28_
,30,30,30,30,30,30,30,140,1,1,2,15,15,5,5,153,141,154,6,41,36,72,72,72,106,108_
,108,108,106,108,106,143,143,155,143,156,130,157,131,131,110,158,159_
,118,160,133,134,161,161,162,162,163,148,148,148,164,149,165,166,167_
,168,30,30,85,83,68,68,68,47,47,28,28,28,68,68,68,68,47,47,47,30,30,30,30,30_
,30,30,30,30,169,169,169,1,2,15,170,171,172,173,72,107,130,90,108,106,143_
,143,174,143,175,175,176,155,157,155,110,109,177,145,178,145,179,133_
,180,97,147,181,148,148,148,182,181,183,184,185,186,187,188,189,190,30_
,30,168,83,83,83,83,83,83,68,68,68,68,68,68,68,68,68,47,47,30,30,191,191,191_
,30,30,30,30,30,30,191,140,1,1,17,192,193,104,55,58,194,195,196,174,175,174_
,174,175,175,176,157,157,197,144,197,132,198,198,198,180,199,200,133_
,163,163,201,164,164,149,202,185,203,204,205,185,206,207,208,209,210_
,30,30,30,168,83,83,83,83,83,83,83,68,68,68,68,68,68,68,68,30,30,191,191,191_
,30,30,30,30,30,30,191,30,211,211,1,44,55,55,90,143,212,213,175,195,175,175_
,175,175,175,175,214,215,216,217,218,217,219,220,221,182,222,222,223_
,222,163,202,185,224,224,205,203,203,189,224,225,226,227,228,229,230_
,30,30,30,30,83,30,30,30,30,168,168,83,83,68,68,68,68,68,68,30,30,169,169,140_
,1,169,140,169,30,30,140,231,232,233,43,59,58,174,234,143,143,174,175,175_
,213,175,196,196,197,157,213,214,197,235,145,198,236,97,199,200,237,238_
,202,239,240,240,184,204,203,184,149,188,241,188,207,242,243,227,244_
,245,30,246,30,30,30,30,30,30,247,191,191,30,168,83,83,68,68,83,83,169,169_
,1,1,1,17,140,140,1,1,17,17,18,248,91,71,108,249,155,156,175,175,175,175,175_
,235,214,157,157,216,250,219,219,251,252,253,220,133,254,182,238,240_
,240,255,256,257,257,258,224,259,224,260,261,226,241,262,263,264,264_
,265,266,191,139,191,191,191,191,191,191,191,191,191,191,191,30,30,30_
,30,30,30,169,1,1,1,1,17,17,140,1,1,1,1,139,267,72,89,249,106,156,175,175,268_
,214,196,214,235,235,214,235,269,270,271,254,272,200,273,274,223,275_
,182,202,257,257,257,225,225,260,261,276,226,241,277,208,242,278,279_
,280,281,282,283,283,284,167,191,191,191,191,191,191,191,191,191,191_
,191,191,191,30,30,30,30,1,1,1,1,1,17,17,17,1,17,1,169,285,286,106,106,287,176_
,234,234,196,288,288,214,288,235,235,250,269,236,236,289,290,291,291_
,292,293,291,294,295,296,276,224,297,208,259,226,276,226,276,298,262_
,227,227,299,300,301,302,303,304,305,306,17,211,191,191,191,191,191,191_
,191,191,191,191,191,1,191,30,30,30,1,1,1,1,17,17,140,140,17,30,169,169,307_
,286,106,155,110,308,195,195,196,218,309,309,235,269,269,219,254,237_
,293,207,310,311,312,187,278,276,225,225,276,226,241,241,278,313,314_
,315,316,317,168,318,319,279,320,321,322,323,324,325,326,327,2,1,1,191_
,191,191,191,168,168,191,191,191,1,1,169,169,169,169,1,1,1,1,17,139,140,140_
,17,169,192,192,37,234,234,174,175,328,309,217,329,330,330,330,331,332_
,333,334,335,336,337,242,338,339,340,341,342,343,344,345,346,347,348_
,349,350,281,351,322,352,172,353,354,355,356,357,358,359,357,356,360_
,361,362,363,1,191,30,30,83,83,83,83,83,168,30,30,30,30,30,169,169,1,1,1,1,1_
,139,30,364,17,17,17,365,173,214,157,143,309,199,366,367,254,291,368,369_
,369,335,370,291,225,243,313,285,371,341,372,172,347,373,172,374,353_
,353,375,376,377,363,351,341,378,42,379,354,351,322,380,381,382,284,383_
,384,385,386,362,282,284,167,30,387,68,47,47,68,83,30,30,30,30,30,30,30,1_
,1,1,1,1,1,30,140,30,17,169,388,157,389,235,218,390,391,236,238,239,225,276_
,261,276,276,188,226,227,392,393,383,383,394,341,341,341,360,395,396_
,397,398,399,400,353,401,363,341,374,399,379,399,354,382,358,380,357_
,247,401,402,403,404,405,406,247,84,68,28,68,28,28,47,47,68,68,68,85,30,30_
,30,1,17,30,30,30,1,407,167,139,1,65,408,235,309,218,391,254,366,241,209_
,409,410,411,411,411,412,413,414,415,168,401,398,398,416,375,42,43,379_
,172,354,375,417,363,399,406,353,245,394,399,363,383,321,247,168,247_
,382,382,401,398,418,419,420,421,403,375,84,67,47,47,28,28,28,47,47,68,68_
,68,85,85,85,17,30,30,30,30,30,151,139,139,321,422,214,157,423,218,424,269_
,425,426,426,427,428,429,429,428,429,430,430,431,432,355,401,395,372_
,172,433,352,399,377,353,353,399,395,44,351,434,351,377,351,354,354,435_
,382,169,380,436,437,438,418,438,438,439,418,421,440,68,441,441,67,47_
,47,23,23,67,47,84,68,68,68,68,17,17,30,30,30,30,140,191,30,442,443,157,214_
,269,235,268,235,444,445,446,427,429,429,429,428,427,430,447,430,448_
,449,401,363,379,379,374,406,401,401,375,375,398,450,353,401,375,401_
,355,377,322,383,451,306,435,352,0,452,439,439,453,439,454,343,420,455_
,68,84,67,47,47,67,23,23,67,67,47,68,68,84,84,17,1,17,17,30,140,139,306,30,248_
,443,456,214,423,216,216,220,409,445,426,427,427,427,429,429,457,430_
,428,458,459,460,354,398,355,461,416,352,417,401,401,375,406,406,401_
,462,350,383,321,462,450,463,302,322,464,0,465,466,454,454,453,467,454_
,398,455,418,451,85,67,84,47,47,20,20,67,67,67,67,68,84,84,17,1,1,17,30,140_
,139,321,191,468,469,235,196,218,252,470,471,472,473,446,427,429,429_
,427,427,430,430,430,430,474,448,245,450,475,53,53,172,353,398,398,434_
,476,353,406,306,463,245,476,398,323,477,382,376,452,478,479,480,481_
,454,482,439,343,439,482,439,281,83,67,30,47,47,47,67,67,67,20,67,67,68,68_
,17,17,17,1,1,169,17,169,284,483,197,235,219,484,485,486,487,488,429,429_
,428,430,430,428,429,427,429,428,458,489,490,285,247,401,351,406,363_
,340,394,340,491,321,351,450,353,371,492,492,340,382,382,476,0,454,482_
,454,481,343,493,343,398,343,493,493,494,495,83,68,68,83,68,68,68,67,67_
,67,67,67,67,67,17,17,17,1,1,1,140,169,306,496,216,217,182,497,498,499,500_
,501,429,429,429,427,427,428,428,428,428,427,430,502,503,397,397,398_
,434,417,504,450,398,355,434,450,354,371,505,475,340,475,302,434,281_
,352,0,494,454,494,482,418,417,417,343,398,343,343,454,343,387,68,68,83_
,83,85,84,68,68,84,84,84,84,84,1,1,1,1,1,1,506,1,321,110,251,235,507,508,426_
,500,500,429,429,429,429,429,428,428,427,509,430,428,510,511,476,462_
,281,341,371,322,435,353,353,462,377,340,340,512,513,475,514,285,394_
,437,352,515,452,452,481,464,438,343,417,417,343,495,495,495,482,343_
,28,68,68,83,83,85,85,84,84,68,68,68,68,68,15,1,1,1,2,516,506,516,395,267,517_
,518,519,473,520,500,500,429,429,429,428,428,428,428,428,428,521,522_
,523,524,525,322,302,340,340,475,325,340,505,475,475,505,505,52,492,339_
,340,340,341,343,0,493,452,0,437,454,482,343,343,343,343,343,495,434,439_
,343,28,68,68,83,83,30,30,84,68,68,526,526,526,526,15,15,15,2,2,4,140,1,468_
,527,253,528,529,530,520,500,531,429,428,428,429,429,428,427,430,510_
,532,533,437,475,534,475,491,535,491,340,475,53,475,52,475,52,475,339_
,394,375,481,0,0,0,343,464,437,343,464,0,453,439,343,439,343,343,495,536_
,493,343,28,68,84,30,30,30,30,30,30,68,68,68,68,68,15,15,15,2,1,2,2,4,537,538_
,219,539,473,540,520,500,429,429,429,428,428,428,427,457,458,532,541_
,542,0,543,535,475,340,491,477,340,53,544,53,53,372,512,172,44,477,464_
,0,545,545,0,397,482,546,434,493,464,466,439,343,454,493,343,343,434,417_
,398,451,168,30,30,30,30,30,30,30,68,68,68,84,84,15,15,15,15,15,171,516,547_
,217,159,270,137,548,530,500,500,429,429,429,429,429,427,427,446,457_
,414,549,0,0,543,53,86,491,534,340,340,340,340,340,372,53,142,285,394,375_
,0,545,545,452,0,452,493,536,462,495,464,464,482,398,352,481,454,493,434_
,493,398,28,167,167,30,30,30,30,30,30,167,68,68,68,68,14,15,15,15,15,153,356_
,550,424,158,551,138,499,500,500,500,500,429,429,429,428,427,429,552_
,457,553,554,545,466,475,372,69,340,514,514,394,372,69,372,52,53,285,285_
,247,493,0,545,0,545,0,0,494,542,349,377,536,493,437,343,495,376,454,343_
,434,482,434,82,68,84,30,30,30,30,30,30,167,68,68,85,85,33,14,141,141,14,514_
,555,556,157,557,221,165,499,500,500,500,500,429,429,429,429,427,427_
,558,541,559,560,481,0,285,142,172,285,321,285,514,394,44,339,45,395,321_
,401,352,545,466,452,452,466,452,452,343,493,397,464,494,454,343,476_
,343,482,454,417,439,454,462,83,84,84,30,30,30,30,30,30,167,68,84,85,85,32_
,14,14,14,6,356,561,159,197,562,563,190,499,500,500,500,500,500,501,429_
,429,520,427,510,564,559,264,565,0,418,375,321,321,514,394,339,285,395_
,172,44,321,406,493,493,452,545,545,452,452,452,481,493,343,398,417,454_
,452,524,376,440,343,454,454,438,454,359,83,85,84,30,30,30,30,30,30,167_
,68,84,84,84,14,14,14,6,6,566,567,159,235,568,569,570,499,429,500,500,429_
,500,500,429,429,429,520,457,558,571,396,572,573,480,453,353,374,321_
,321,321,395,44,399,395,363,493,437,452,452,0,452,481,452,494,574,464_
,343,377,376,418,439,462,353,493,343,466,545,438,494,28,47,152,84,30,30_
,30,30,30,167,84,84,84,84,84,141,14,6,6,6,575,576,217,235,159,484,570,577_
,520,429,429,429,500,429,429,500,500,520,446,558,263,417,565,545,480_
,0,0,0,454,417,398,401,363,406,377,377,493,452,452,0,437,452,452,437,481_
,493,464,504,463,281,376,353,476,578,579,377,545,466,482,437,68,47,84_
,30,30,30,30,30,84,84,84,68,68,68,68,15,141,153,153,141,356,580,111,197,216_
,470,581,582,446,446,520,429,429,429,429,429,429,427,457,446,228,320_
,317,264,573,545,545,545,545,545,545,572,545,545,545,452,437,0,0,0,583_
,480,584,585,586,493,587,584,24,24,47,191,30,84,68,451,545,438,0,349,83_
,68,68,68,30,191,30,30,85,84,68,68,47,47,47,2,516,2,16,516,339,75,131,216,251_
,588,589,590,445,446,446,520,429,429,429,429,429,427,457,446,227,591_
,311,592,572,0,545,545,572,545,545,481,572,545,545,452,452,437,437,466_
,264,417,350,28,593,48,28,463,594,168,168,84,68,68,83,463,454,481,476,359_
,68,68,30,168,30,191,191,30,30,68,68,47,67,67,67,2,17,17,17,170,595,111,144_
,538,251,588,256,590,445,446,446,446,520,429,500,500,500,520,445,445_
,228,591,571,592,572,397,0,572,481,572,572,481,466,481,452,452,452,452_
,481,481,299,416,596,597,598,27,23,46,20,23,20,68,68,68,83,281,481,437,350_
,83,68,68,30,168,168,30,30,30,68,68,68,47,67,67,67,3,1,140,30,139,599,130,157_
,216,600,223,205,410,601,601,601,601,520,429,500,500,500,426,602,411_
,603,312,320,317,572,464,565,572,604,481,481,481,605,605,481,466,452_
,481,494,606,262,607,608,609,610,307,611,29,67,23,28,281,47,68,435,376_
,542,579,83,83,68,83,68,82,168,168,168,168,68,68,68,47,47,47,47,192,169,407_
,30,191,173,109,157,612,251,223,613,602,457,457,457,427,429,520,429,429_
,520,445,411,614,312,615,616,317,617,604,618,618,619,619,604,618,620_
,620,454,605,466,464,454,454,187,508,621,622,551,623,109,74,624,625,23_
,20,28,68,26,476,387,85,47,68,68,68,83,83,83,168,168,83,68,47,67,67,67,67,67_
,306,306,407,191,626,627,144,158,628,538,254,629,630,446,427,427,429_
,429,520,429,520,446,412,411,631,603,632,337,615,633,634,634,618,619_
,619,618,617,620,620,635,635,454,454,417,439,607,636,637,638,329,623_
,158,109,639,265,640,641,47,23,26,27,28,23,28,28,28,28,68,68,68,83,83,68,47_
,47,67,20,20,67,67,306,321,407,246,247,642,215,251,456,643,644,206,630_
,446,520,429,429,429,531,531,429,446,412,645,631,207,632,310,632,646_
,647,634,618,619,619,618,617,634,634,635,635,454,417,536,262,338,648_
,429,590,649,623,408,408,650,651,406,652,27,23,47,47,68,20,28,23,28,28,20_
,20,28,28,47,47,67,67,48,23,20,20,20,321,247,653,81,64,131,654,197,235,655_
,656,275,409,426,520,429,429,429,657,552,427,445,602,590,658,659,660_
,661,662,633,663,664,665,617,617,666,635,635,416,416,635,635,536,667_
,502,668,669,530,500,670,538,158,216,600,670,361,671,25,672,28,23,47,20_
,20,20,23,23,20,20,28,28,28,47,67,20,20,23,47,47,47,581,85,358,673,674,675_
,676,677,486,658,678,679,411,445,446,446,427,429,427,427,427,412,412_
,411,680,229,681,603,682,683,684,685,685,618,604,620,417,686,416,620_
,620,245,687,502,429,501,501,500,429,688,670,562,517,689,670,423,216_
,377,640,27,27,29,27,27,27,27,27,27,27,27,27,23,23,23,20,20,20,47,47,47,407_
,690,691,610,388,692,693,694,409,426,695,558,602,457,457,446,446,427_
,427,427,520,601,558,411,411,696,681,262,603,697,698,683,665,604,604_
,352,619,378,300,416,378,318,699,700,429,531,429,429,429,519,470,423_
,159,689,701,702,252,406,640,27,27,23,27,27,27,27,27,27,27,27,27,23,23,23_
,20,28,47,68,83,83,594,599,56,56,60,703,63,190,630,520,446,510,601,427,427_
,446,457,430,427,427,427,601,558,558,558,696,681,241,262,632,704,705_
,706,619,620,620,416,320,641,300,316,707,680,427,531,429,429,520,520_
,638,708,220,159,689,386,709,710,711,359,27,27,23,27,27,27,27,27,27,27,27_
,27,23,23,23,28,47,68,83,83,83,712,267,74,56,408,713,714,498,715,426,601_
,446,446,427,427,446,446,427,427,427,427,457,601,558,558,679,716,716_
,262,310,717,718,705,416,705,416,615,719,720,571,721,601,445,428,429_
,429,429,520,426,722,651,723,568,724,722,725,702,650,726,727,727,27,27_
,27,27,27,27,27,27,27,27,27,23,23,28,47,68,68,83,83,66,728,729,650,730,248_
,731,508,473,601,446,520,429,429,500,429,428,732,427,429,427,457,458_
,510,458,412,414,679,733,262,734,659,659,735,632,312,262,412,458,667_
,716,430,577,447,427,447,428,427,427,206,736,737,738,517,689,739,740_
,252,588,359,640,350,23,27,359,29,29,359,27,27,27,23,23,23,23,28,28,47,47_
,47,741,361,742,743,744,745,746,539,747,446,427,577,520,429,500,500,429_
,429,500,500,429,427,457,457,457,510,601,601,601,645,658,748,748,187_
,717,659,749,457,510,564,750,427,427,427,457,427,520,427,427,685,484_
,751,470,216,556,752,753,754,557,671,23,755,756,29,29,28,28,28,20,23,23_
,23,23,23,23,20,20,47,47,47,757,623,650,98,758,133,759,252,221,614,473,540_
,520,429,500,500,500,500,501,500,500,429,427,457,457,457,457,457,601_
,413,630,760,761,762,278,748,680,457,601,558,601,427,427,427,427,427_
,427,427,457,697,698,737,724,600,710,702,763,608,608,764,640,672,625_
,29,28,28,28,28,28,28,28,23,23,23,23,23,23,20,20,20,689,765,724,766,567,250_
,527,767,252,425,768,412,426,520,429,500,501,500,500,501,501,501,501_
,428,427,430,457,457,457,457,769,770,770,631,679,680,700,457,446,446_
,446,427,430,427,427,427,427,429,457,697,771,772,556,713,773,774,775_
,776,702,738,359,23,29,29,28,28,82,68,68,28,28,23,23,23,23,23,23,23,23,23,777_
,252,250,778,527,216,779,563,713,692,126,621,601,446,427,427,429,429_
,429,501,501,780,501,429,428,427,531,500,520,427,428,520,520,769,781_
,457,457,430,457,458,457,458,458,781,457,510,601,520,457,696,782,646_
,783,730,650,784,785,655,786,787,649,27,27,23,28,82,68,68,68,68,28,20,23_
,23,23,23,23,23,23,23,144,724,556,214,654,269,778,563,723,788,789,790,770_
,446,430,427,427,429,429,500,501,501,501,429,429,427,501,500,429,520_
,429,429,520,446,427,430,457,457,510,510,510,458,458,510,781,510,601_
,457,510,645,685,685,646,253,670,600,791,753,792,793,562,727,24,23,28_
,68,68,68,68,68,28,20,23,23,23,23,23,23,23,23,794,779,779,779,538,655,556_
,795,737,796,797,798,582,446,457,457,427,429,429,429,500,501,501,500_
,500,520,429,429,429,520,500,429,429,427,427,427,427,457,510,532,799_
,458,457,510,510,458,601,558,532,750,682,685,646,800,751,470,792,793_
,753,786,557,727,25,27,28,68,68,68,68,68,28,20,23,23,23,23,23,23,23,23,794_
,469,724,689,623,779,801,802,803,804,470,805,590,445,457,457,427,428_
,429,429,429,500,500,500,500,520,429,429,428,427,429,429,429,429,429_
,429,427,457,532,532,532,510,457,510,510,458,601,750,806,807,748,697_
,783,808,808,809,810,811,784,753,655,652,25,27,23,82,68,68,68,68,47,20,23_
,23,23,23,23,23,20,20,215,600,809,785,774,556,253,724,556,724,724,470,569_
,446,457,430,430,428,428,428,428,429,429,429,429,429,427,427,427,427_
,427,427,427,427,427,457,427,457,510,510,799,799,510,510,532,510,510_
,510,799,799,601,318,812,808,813,655,655,740,784,518,557,651,25,25,27_
,20,20,28,68,68,47,20,20,23,20,20,28,68,68,68,215,600,650,774,689,810,253_
,724,608,600,623,470,484,446,446,457,457,428,428,427,427,429,428,427_
,427,427,427,427,427,427,427,446,457,457,457,457,457,457,457,510,799_
,799,799,510,532,558,558,558,532,532,601,748,633,814,783,655,655,784_
,557,253,557,708,26,25,25,23,20,20,47,68,47,28,28,28,28,47,68,83,85,85,0
leopardpm
Posts: 1795
Joined: Feb 28, 2009 20:58

Re: create program to create bitmap

Post by leopardpm »

thesanman112 wrote:how would you get the bitmap data into forum? certain characters wont display, will they?
exactly - only about 160- 192 of the 255 codes will print and copy/paste into the forum, which is why I figure the best way is to use 7 bits of the 8 bits so we only need 128 printable codes which we have...

Tourist - that is a novel way to handle the RLE, but falls short overall because of all the extra characters (still using a whole byte to hold only a value from 0-9, all the extra commas between data items, etc...

Best to RLE the raw data first, then convert the info to 7-bit printable ASCII and have 1 string per data statement - or no data statement at all...

my way:
DATA "A13^&*056a#$F2akwu1DE" <--21 ascii characters + 2 quotes holding 147 bits of data

your way:
DATA 25.52,26.51,25.6,21.2,12.51,13.8,12.3,13.4,12.2 <--- 47 ascii characters (including commas) holding 9 color values plus the RLE... roughly 144 bits of data... not a good way to compare the two methods since you have RLE included already
Post Reply