RE: QuadDraw revisited - drawing program work in progress - JRace - 10-08-2024
Aha, excellent!
Man, I stared right at that line of code and didn't catch that. My brain fritzes out sometimes when going over someone else's code.
RE: QuadDraw revisited - drawing program work in progress - Dav - 10-08-2024
(10-08-2024, 12:00 PM)JRace Wrote: Aha, excellent!
Man, I stared right at that line of code and didn't catch that. My brain fritzes out sometimes when going over someone else's code.
Lol, yeah happens to me also.
I changed a couple more things that was bugging me. Made the brushsize scale up too, so it gets bigger as before. Also made the IBOX function used for the Load/Save image input box autoscale up too, the default text box was too small on my new laptop. Now that Function uses the text SUB bplus made. The font size will scale up with the program. Nice, small, handy dandy text SUB, @bplus!
- Dav
Code: (Select All) '============
'QuadDraw.bas v1.9
'============
'An odd little drawing program.
'Draws/paints in several points on the screen at same time.
'Coded by Dav for QB64-PE OCT/2024
'NEW FOR v1.9:
' - Increased brushsize (it just autoscales too now)
' - IBOX$ now uses bplus text SUB to display all text.
' Now text autoscales with the reset of the program.
'CREDITS: SPAINT SUB was made by Petr. Thanks Petr!
' text SUB was made by bplus. thanks bplus!
' (bplus helped me out how to draw lines without gaps too)
' Thanks to James Jarvis for draw color and eraser idea/code!
' And to PhilOfPerth and euklides for code suggestions.
'----------
'HOW TO USE:
'----------
'Left click on mouse and hold to draw on the screen.
'Press Up/Down arrows to set how many draw points to use, default is 4.
'Use the +/- keys to change brush size (1 to 50 allowed)
'Right click to fill/paint the areas with color.
'Default fill color is picked randomly, but you can select one.
'Press D to select a new draw color for brush.
'Press F to select a fill color (doing so turns random fill color off)
'Press P to toggle use Plasma colors On/Off.
'Press R to toggle random fill color on/off (default is a random color)
'Press E to toggle Erase on/off. Hold it while drawing for dotted lines.
'Press A to smooth the screen (blur).
'Press S to save current image as QUADDRAW.BMP in current dir.
'Press L to Load a previously saved image on the screen.
'Press U to undo last change made to image.
'Space = clears screen and starts over.
'ESC = Ends program
'===================================================================
'NOTE: This program was originally sized to 1000x600. This was too
' small on higher resolution desktops so I added screen scaling
' factor (ss) and applied that to all the drawing things so it
' will autoscale to users desktop height. That is why you see
' '* ss' all over the place added to numbers.
'===================================================================
Dim Shared quads, brushsize, randfill, eraser, menu&, blk&, fill&, ss
ss = _DesktopHeight / 600 * .85 '<<<<< scale to 85% of users desktop
' change this to suit your needs
If ss > 2.25 Then ss = 2.25 'limit ss factor for performace reasons
Screen _NewImage(1000 * ss, 600 * ss, 32)
menu& = BASIMAGE1&
cx = (_Width - (200 * ss)) / 2
cy = _Height / 2
wht& = _RGB(255, 255, 255) 'used often, so variable it
blk& = _RGB(0, 0, 0)
fill& = _RGB(Rnd * 255, Rnd * 255, Rnd * 255)
brushsize = 3 'size of drawing circle (brush)
quads = 4 'start with 4 drawing sections
randfill = 1 'default is use random fill color turned on
plasma = 0
ReDim Shared pointa(quads), pointx(quads), pointy(quads), lastmx(quads), lastmy(quads)
Cls , wht& 'start with white screen
_Delay .25
undo& = _CopyImage(_Display)
'====
main:
'====
_Title "QuadDraw - Points:" + Str$(quads) + " BrushSize:" + Str$(brushsize)
DrawMenu
Do
t = Timer 'for plasma colors
While _MouseInput: Wend
mx = _MouseX: my = _MouseY
If mx <= (_Width - (200 * ss) - brushsize / 2) Then
If _MouseButton(1) Then
If stilldown = 0 Then
_FreeImage undo&
undo& = _CopyImage(_Display)
End If
If stilldown = 1 Then
dx = mx - cx: dy = my - cy
a = _Atan2(dy, dx)
dis = Sqr(dx * dx + dy * dy)
For i = 1 To quads
pointa(i) = (360 / quads) * i * (3.14159 / 180)
pointx(i) = cx + dis * Cos(pointa(i) + a)
pointy(i) = cy + dis * Sin(pointa(i) + a)
stepx = lastmx(i) - pointx(i)
stepy = lastmy(i) - pointy(i)
length = Int((stepx ^ 2 + stepy ^ 2) ^ .5)
dx2 = stepx / length
dy2 = stepy / length
For i2 = 1 To length
newx = pointx(i) + dx2 * i2
newy = pointy(i) + dy2 * i2
If plasma = 1 Then
r = Int(128 + 127 * Sin(pointx(i) / 25 + t) + 127 * Cos(pointy(i) / 25 + t))
g = Int(128 + 127 * Sin(pointx(i) / 25 + t * 1.5) + 127 * Cos(pointy(i) / 25 + t * 1.5))
b = Int(128 + 127 * Sin(pointx(i) / 25 + t * 2) + 127 * Cos(pointy(i) / 25 + t * 2))
fc newx, newy, brushsize * ss, _RGB(r, g, b), 0
Else
fc newx, newy, brushsize * ss, blk&, 0
End If
Next
lastmx(i) = pointx(i)
lastmy(i) = pointy(i)
Next
Else
dx = mx - cx
dy = my - cy
a = _Atan2(dy, dx)
dis = Sqr(dx * dx + dy * dy)
For i = 1 To quads
pointa(i) = (360 / quads) * i * (3.14159 / 180)
pointx(i) = cx + dis * Cos(pointa(i) + a)
pointy(i) = cy + dis * Sin(pointa(i) + a)
lastmx(i) = pointx(i)
lastmy(i) = pointy(i)
If plasma = 1 Then
r = Int(128 + 127 * Sin(pointx(i) / 25 + t) + 127 * Cos(pointy(i) / 25 + t))
g = Int(128 + 127 * Sin(pointx(i) / 25 + t * 1.5) + 127 * Cos(pointy(i) / 25 + t * 1.5))
b = Int(128 + 127 * Sin(pointx(i) / 25 + t * 2) + 127 * Cos(pointy(i) / 25 + t * 2))
fc pointx(i), pointy(i), brushsize * ss, _RGB(r, g, b), 0
Else
fc pointx(i), pointy(i), brushsize * ss, blk&, 0
End If
Next
stilldown = 1
End If
stilldown = 1
DrawMenu
_Display
Else
stilldown = 0
End If
'if right click, fill sections with random color
If _MouseButton(2) Then
_FreeImage undo&
undo& = _CopyImage(_Display)
_Display
dx = mx - cx
dy = my - cy
a = _Atan2(dy, dx)
dis = Sqr(dx * dx + dy * dy)
For i = 1 To quads
pointa(i) = (360 / quads) * i * (3.14159 / 180)
pointx(i) = cx + dis * Cos(pointa(i) + a)
pointy(i) = cy + dis * Sin(pointa(i) + a)
lastmx(i) = pointx(i)
lastmy(i) = pointy(i)
SPAINT pointx(i), pointy(i), fill&
Next
'Get next random fill color
If randfill = 1 Then
r = Rnd * 255: g = Rnd * 255: b = Rnd * 255
fill& = _RGB(r, g, b)
End If
DrawMenu
_AutoDisplay
While _MouseButton(2) <> 0: n = _MouseInput: Wend
End If
End If
'get keyboard input
key$ = UCase$(InKey$)
If key$ <> "" Then
Select Case key$
Case Chr$(32): Cls , wht&: DrawMenu 'scpace clears screen again
Case Chr$(0) + Chr$(72)
If quads < 16 Then
quads = quads + 1
ReDim Shared pointa(quads), pointx(quads), pointy(quads), lastmx(quads), lastmy(quads)
End If
Case Chr$(0) + Chr$(80)
If quads > 1 Then
quads = quads - 1
ReDim Shared pointa(quads), pointx(quads), pointy(quads), lastmx(quads), lastmy(quads)
End If
Case "+"
brushsize = brushsize + 1: If brushsize > 50 Then brushsize = 50
Case "-"
brushsize = brushsize - 1: If brushsize < 1 Then brushsize = 1
Case "U": _PutImage (0, 0), undo&
Case "A": Smooth
Case "P": If plasma = 1 Then plasma = 0 Else plasma = 1
Case "S"
saveimg$ = IBOX$("NAME OF BMP TO SAVE-> ", 40, _RGB(255, 255, 255), _RGB(96, 96, 96), 0)
If saveimg$ <> "" Then
If LCase$(Right$(saveimg$, 4)) <> ".bmp" Then saveimg$ = saveimg$ + ".bmp"
SaveAsBMP saveimg$
a$ = IBOX$(UCase$(saveimg$) + " SAVED!", 0, _RGB(255, 255, 255), _RGB(96, 96, 96), 2)
End If
Case "F"
new& = ColorPicker&(200 * ss, 150 * ss)
If new& <> 0 Then
randfill = 0
fill& = new&
End If
Case "D"
new& = ColorPicker&(200 * ss, 150 * ss)
If new& <> 0 Then
blk& = new&
Else
blk& = _RGB(0, 0, 0)
End If
Case "E"
Select Case eraser
Case Is = 1: eraser = 0
Case Is = 0: eraser = 1
End Select
If blk& = _RGB(0, 0, 0) Then
blk& = wht&
Else
blk& = _RGB(0, 0, 0)
End If
Case "R"
Do Until InKey$ = "": Loop
Select Case randfill
Case Is = 1: randfill = 0
Case Is = 0: randfill = 1
End Select
Case "L"
openimg$ = IBOX$("IMAGE TO LOAD-> ", 40, _RGB(255, 255, 255), _RGB(96, 96, 96), 0)
'if filename given
If openimg$ <> "" Then
'if file exists..
If _FileExists(openimg$) Then
'test loading image
o& = _LoadImage(openimg$)
If o& = -1 Then
a$ = IBOX$(UCase$(openimg$) + " NOT VALID!", 0, _RGB(255, 255, 255), _RGB(96, 96, 96), 2)
Else
_PutImage (0, 0)-(_Width - (200 * ss), _Height), o&
_FreeImage o&
End If
Else
a$ = IBOX$(UCase$(openimg$) + " NOT FOUND!", 0, _RGB(255, 255, 255), _RGB(96, 96, 96), 2)
End If
End If
Case Chr$(27): End
End Select
Do Until InKey$ = "": Loop
_Display
GoTo main
End If
_AutoDisplay
Loop
End
Sub SPAINT (x As Integer, y As Integer, clr~&) 'Color everything in the X, Y position regardless of the border color.
'SUB by Petr
Dim m As _MEM, m2 As _MEM
m = _MemImage(_Dest)
W = _Width(_Dest)
H = _Height(_Dest)
P = _PixelSize(_Dest)
Select Case P
Case 4 ' image is 32 bit image
Virtual = _NewImage(W, H, 32)
m2 = _MemImage(Virtual)
Back~& = Point(x, y)
Back2~& = _RGB32(1, 1, 1)
Empty~& = _RGBA32(0, 0, 0, 0)
Do Until a& = m.SIZE - 4
a& = a& + 4
If _MemGet(m, m.OFFSET + a&, _Unsigned Long) = Back~& Then _MemPut m2, m2.OFFSET + a&, Back~& Else _MemPut m2, m2.OFFSET + a&, Back2~&
Loop
d = _Dest
_Dest Virtual
Paint (x, y), clr~&, Back2~&
_Dest d
a& = 0
Do Until a& = m.SIZE - 4
a& = a& + 4
If _MemGet(m2, m2.OFFSET + a&, _Unsigned Long) <> clr~& Then _MemPut m2, m2.OFFSET + a&, Empty~&
Loop
_ClearColor Back2~&, Virtual
_PutImage (0, 0), Virtual
_MemFree m
_MemFree m2
_FreeImage Virtual
Case 1 ' image is 8 bit image (256 colors)
Virtual = _NewImage(W, H, 32)
m2 = _MemImage(Virtual)
Back~& = Point(x, y)
Back2~& = _RGB(1, 1, 1)
Empty~& = _RGBA(0, 0, 0, 0)
Do Until a& = m.SIZE - 1
a& = a& + 1
If _MemGet(m, m.OFFSET + a&, _Unsigned _Byte) = Back~& Then _MemPut m2, m2.OFFSET + a&, Back~& Else _MemPut m2, m2.OFFSET + a&, Back2~&
Loop
d = _Dest
_Dest Virtual
Paint (x, y), clr~&, Back2~&
_Dest d
a& = 0
Do Until a& = m.SIZE - 1
a& = a& + 1
If _MemGet(m2, m2.OFFSET + a&, _Unsigned _Byte) <> clr~& Then _MemPut m2, m2.OFFSET + a&, Empty~&
Loop
_ClearColor Back2~&, Virtual
_PutImage (0, 0), Virtual
_MemFree m
_MemFree m2
_FreeImage Virtual
End Select
End Sub
Sub Text (x, y, textHeight, K As _Unsigned Long, txt$)
'Text SUB by bplus.
Dim fg As _Unsigned Long, cur&, I&, multi, xlen
fg = _DefaultColor
cur& = _Dest
I& = _NewImage(8 * Len(txt$), 16, 32)
_Dest I&
Color K, _RGBA32(0, 0, 0, 0)
_PrintString (0, 0), txt$
multi = textHeight / 16
xlen = Len(txt$) * 8 * multi
_PutImage (x, y)-Step(xlen, textHeight), I&, cur&
Color fg
_FreeImage I&
End Sub
Function ColorPicker& (xpos, ypos)
'ColorPicker& Function by Dav, SEP/2020. FREE TO USE FOR ALL
'Function Returns color picked by user if one selected.
'If no color selected before Closing, function returns 0
'Click CLOSE to close the ColorPicker image.
'ESC key cancels selection and closes picker too.
'The xpos/ypos is x/y point on the screen to place colorpicker
'=== Save users display status
DisplayStatus% = _AutoDisplay
'=== copy background screen using _mem (thanks Steve!)
'=== Used this method because_COPYIMAGE(_DISPLAY) didnt always work
Dim scr1 As _MEM, scr2 As _MEM
scr1 = _MemImage(0): scr2 = _MemNew(scr1.SIZE)
_MemCopy scr1, scr1.OFFSET, scr1.SIZE To scr2, scr2.OFFSET
'Create Colorpicker image
v& = _NewImage(463, 239, 32)
Dim m As _MEM: m = _MemImage(v&)
A$ = "" '...COLORPICKER.PNG encoded by BASIMAGE...
A$ = A$ + "haIkMo7KDGOh77_oaBfFFfOhBL9c5gGWaX9BRK62K46AkHnS9I=`09EP<4V="
A$ = A$ + "e25F]0eB;]jK;#YFXUEJQJGM573`644fjGM:62H66L42I^89^HF<co`T]oHo"
A$ = A$ + "anW]TUUk;O2BnLONnmjek3L7m>li;cS4;]LohSGjC_[gM=C6WciL>WciL>Wc"
A$ = A$ + "iL>WciL>WciL>WciLOFMgBE9=CX6XN80S0C0W7n48C2O2LNH2H480e3e0c4^"
A$ = A$ + "5XZHUa7hn4hl`4`8#0Z7Z1V9L;#boQOFngVWjlLWGjhUNN]SGkiAW:SK^U[]"
A$ = A$ + "lUDW:cUmbnoNZbCf>]MJkdfYVnIk\bR]CKWf>o\CkdEn=KWEVBc:SC0I:[oV"
A$ = A$ + "IUa7h\MJkd=m>KWEVBc:SC0I:[oVIUa7h\MJkd=m>KWEVBc:SC0I:[oVIUa7"
A$ = A$ + "h\MJkd=m>KWEVBc:SC0I:[oVIUa7h\MJkd=m>KWEVBc^e?go9QI1;0NB80_0"
A$ = A$ + "LLhL`73oW4nHhL`aQG02`C2;0V5L[`W;f]2c2F0lT#0N1hh`iP?6n?anHhL`"
A$ = A$ + "aQG02`C2;0V5L[`W;QK5V5\0h9Q0l2`aQc1O<lORma`iPS3_04PW4F0<;hFQ"
A$ = A$ + "?G\2mk?k:?V]c:CYIf>]MJkdfY[h>KWEVBc\MJkdfY]CGaMf>[<UVIkdfY]C"
A$ = A$ + "KW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>]Mj:^cfIUYd<KWf>]MJkdELW"
A$ = A$ + "]c:CYIf>]MJkdfY[h>KWEVBc^]_ho:QI3;4J02```aPc2O4l_BhSPc273662"
A$ = A$ + "#3`2QI3g6l5SMK`\Q52=01HHhH`IQ?2nGan8h\`aPQQ0d0\#Hf`]1Oa4^=Hf"
A$ = A$ + "`2Q6P0<<L<h\`71o[HO4LFhH``#0J0F8<KhfP_H\2mk?k:?V]c:CYIf>]MJk"
A$ = A$ + "dfY[h>KWEVBc\MJkdfY]CGaM5[fiMOgIbl\?KV<o_o_IbLZC5[gNcTiaOl<I"
A$ = A$ + "^iK>oom_okObmoloDhG>R>OR>oR>O_J^LT[C[X[GIOJ59j?Knc?oWNAG^cge"
A$ = A$ + "[LY#_lUVIkdfY]CKW^Rk^FKWcJFIbl7n35fie#3=i]Ql]X>EQdifgn:\;7AO"
A$ = A$ + "Mi[A5miR>?oKo]Ynd:j[Ib>mR>=BkRjWf>]MJkdfId\MFn^[UfiBFBj?onX?"
A$ = A$ + "jbg7eRIk<jngmn_Oj^L4meW[NGdOFJ?]V\[Gf>]MJkdfY]cK<gEKk<ja[lZM"
A$ = A$ + "AM6f]bgVZfiEC[;JAomhYEQNOGceR^ogf>]MJkdfY]cKlgEKk<ZoM]<f3CcG"
A$ = A$ + "KfRniAN]\XonIOO>_FGfo\I]MJkdfY]CKWgH^[VfiDMO>GcJ^L38jiDcT=NO"
A$ = A$ + "nbgbGk<OgWcX?GdUSXWoB5bUSX_f9KAoL=Sj\AGgcgoO3AOnb]fiMlUoW9<7"
A$ = A$ + "HA#3#066>:l>`72oc4n#hMPS2331X1HA`LPk0nba^3H>`RP6P0<<LDhMP?4n"
A$ = A$ + "Wan#hMPS2331X1HA`LPk0nb9L7`LP51=01HHhX`k0O8l?SmQ`k075662#3`R"
A$ = A$ + "Pi0g1lUSU[Ik\lMG=]cle4Rj:5JS]Hd>cg^B7[#_L\a=>iO=A??M;T[oIOIM"
A$ = A$ + "ZJWAONZ#O>5WVIkdfY]CKW^Rk^JJWikna5MO=;Tk7Gdb^CT_=I]cYjaHm:g7"
A$ = A$ + "^2mbAaX9VVfIQd8]MJkdfY]CGig^JJWikaR==]c\Ol9cgV\fIQNjGXOMi[e5"
A$ = A$ + "mL8bfY]CKWf>]MjRV]c2[M6][lJ#9j[?G?N[AbnjT]CKWf>]MJkl6cIk<n[["
A$ = A$ + "#NMg4mlPZ#kKf>]MJkdfY]cK<W]ch_^XO^W5bRNMLV[gO7\MJkdfY]CKWOfH"
A$ = A$ + "f>CNiX#Oo5<JCem1MZJWlm8g\?fE<KWge=m?BhnP53[62`NQS0_=l1`o8Q?0"
A$ = A$ + "NKh8`NQ0\JHa`m1g5LCa^;hnP53[62`NQS0_=l1`o8f70_=L4H_#0F=\HhnP"
A$ = A$ + "k2^Y4^;hnP53[62`NQS0_=l1`o8f70_=L4H_#0F=\HhnPk2^YHiJf>;OGY\M"
A$ = A$ + "6mlP]#OO??OkjIk<jnNF8_?fNU5eJW\gKL_JNmMJkdfY]CKWGIf>;OGY\MF\"
A$ = A$ + "N<8_Nf>S4mhaVVniTmNd[]CKWf>]MJkl6cIk<g_GnTfgOiSJ]5Sg;h]MJkdf"
A$ = A$ + "Y]c[<KWU_cfInOO`;jgKJ5jRjWIohgJkdfY]CKWf>_aLf>Wjg3ISnMDJQnNO"
A$ = A$ + "OJN_A`W[#f>]MJkdfIUiliIKQmn_NdmWl`7>oW>A;kgKi;GN=ZHkdfY]CKW^"
A$ = A$ + "Rk\MVlegiTmn5dEnMEFd___WZW7Af>]MJkdfY]cK\W]c2k[;k[GA?6^iKGii"
A$ = A$ + "<DiBkL6glO?QZQU0[12`NP33W2^8lgChR`YP33k12`JPU0E3c0^iHc0Z6F2\"
A$ = A$ + "680k1><L:hR`O?f5QC176f34Pe0;1Z6V1Lc9<3XJH9`JP0\7h``YP;2omHG4"
A$ = A$ + ">5LHH?#0F3\4XJH6`=7;GcfIik\MVnfITlMO?;dgOL]MJkdfY]CKWEVKjlg1"
A$ = A$ + "IIoJj8O[L\MV_oo7\MJkdfY]CKWgH_Rm_k[CCk\#K1UjOoMF8GN]MJkdfY]C"
A$ = A$ + "KW^[\[Vfi6ghTOj5mHIVf_^YZ54mj3Q_F>^bmI=Ok:?oNbgUSXE8G>R^<TMc"
A$ = A$ + ">O?V]5j?_cLmJD9jeCZ]CKWf>]M6=KWU_kZYM6e6bgRN<MSj6i[_4meLef2R"
A$ = A$ + "fE^_Mika?>je;BJ_LT_G7WGijeDmn=DQLocW\EX_6?Cc\MJkdfY]CGaMG=]c"
A$ = A$ + "YZaD8;jiZJaXM>E?WGCkUS[VNGf;kF\]CKWf>]MJkl6cMef>_FJFijaU<];k"
A$ = A$ + "WS^5bkI1iJAombe?3edln0?Gf]HKWf>]MJkdfi=VkZ]M6Y#NO2PKbNNoTfag"
A$ = A$ + ";PBKo<GMc\O<YCck3lA;jh`lWoenmQ]Dd>_WKiCBHN#]#S#06267>9lN`WT`"
A$ = A$ + "k1W467622#S#]`lPk1^UHg3<?XFXA8031S3W4N?hCRmN`9QaQQP0d8D;<?hN"
A$ = A$ + "PK9Qk1V7D;d84PQPaQC2_7l9aN?hT`h`##0J4Z5V7L?`]4;GcfIik^FJWARN"
A$ = A$ + "_hIOkKZKXAoN^T?nX5cfITXWK#CEc;jcOUW3ACUXWSACeS=MdekNk=go>ldf"
A$ = A$ + "Y]CKWf>]MNSi^FKWI;ZW5eKbnmb^Xk;fTmk6jBUXNNdi;_L4mWG\>mRj_ijg"
A$ = A$ + "IWG_TVIkdfY]CKW^Rk:V]CIkdfY]CKWf>o\`\MFI:=cfY]CKWf>M5gIk\bDJ"
A$ = A$ + "V]CKWf>]Mj:^cfIUYd<KWf>]MJkdELW]c:CYIgkgh_V`32?6\F8032_<L2h2"
A$ = A$ + "`O=Q;0W0NIH#80[5N<h1Qk5n6a^Gh1Q73F;4P1QG6>1L1h_6k2`9PG6642`J"
A$ = A$ + "Q73N#hNQ_A2g;lP`S1[52`P`;3W0^0lGSM1h4`;3321H]`S1?8L_`g8FQnmW"
A$ = A$ + "MU7cfIUYd<KWf>]MJkdELW]c:CYIf>]MJkdfY[h>KWEVBc\MJkdfY]CGaMf>"
A$ = A$ + "[<UVIkdfY]CKW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>]Mj:^cfIUYd<K"
A$ = A$ + "Wf>]MJkdELW]c:CYIcjfo;9l``bPe21H#hP`K0W3n;9L>h=P32321H]`bP76"
A$ = A$ + "V5LkaV5l``bPe21H#hP`K0W3n;a>7l6`1Q1Q0\FHI`33c2^m4V5l``bPe21H"
A$ = A$ + "#hP`K0W3n;a>7l6`1Q1Q0\FHI`33c2^mH5jgOfEN<KWEVBc\MJkdfY]CGaMf"
A$ = A$ + ">[<UVIkdfY]CKW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>[\KWZlU]c:;f"
A$ = A$ + ">]MJkdfYVnIk\bR]CKWf>_a_MjL^Y_IkdfY]CKW>W;MKfgiO>Qi3;7F74PM3"
A$ = A$ + "70N=h\`O>Qc2_6L0Hg#0F7\LHn`\Qk<f\Qi3;7F74PM370N=h\`O>fIQG3>0"
A$ = A$ + "\K80[3F><OHf`MV`\Qi3;7F74PM370N=h\`O>fIQG3>0\K80[3F><OHf`M6c"
A$ = A$ + "iLUGcfY]CKWf>M>GjV]CKWf>]MjL^d=KWf>]MFif>o_ogoKVgomOo9eOj?mW"
A$ = A$ + "bLQ;LQ<WolWOBm^_kkVigokomCZCNbCVi]N[gJBMRCLR<ofOk_MBmKn=oV<_"
A$ = A$ + "j[nZI>lQ?L>=nhSWiGo[oeInEoZOeTJ\a6;c_hGl;b<b8S<Y6L`1clcoiolL"
A$ = A$ + "JGkJGIjYWNb[]^e]ViIOfW=_J_mfcdJ[]VC]dB;IJZYVblcnIo\LJM[KMIFc"
A$ = A$ + "JFCVj[_n9EMeEGVE^bEViWlCn9idBGjBc\TU\TlJ1;H1InAoXODNm0?`3TCo"
A$ = A$ + "PO`?8cgokomclmnNO_9eLVcLblMn>OW<cLVcLBm]ofOk<cH6c8cMOggM>MWG"
A$ = A$ + "jkQNkgn]?YnVOc_IV_nGo[Wi[menJCZ_jGm[Vi[lEn:I^YKjVbY_dGj;Ui;l"
A$ = A$ + "5n2CZ?oWocWYZZZ:QomonOKkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]"
A$ = A$ + "MJkdfY]c:`fiLWa5CX6H5#C#060f?<1L6hR9L6H2Ho`0#0J2F1D3<GH6aV;D"
A$ = A$ + "3\2X98030k7V0>3LaHW1V0f?<04PVPE0e0c5VA2c5Z1F1d44P1Pm3C0W1^H\"
A$ = A$ + "c0C0k7602#C`:PJPi2c8V]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY"
A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]M"
A$ = A$ + "JkdfY]CKWf>]MJkl6[fimo]nS9\0HU`C11HG`nPS3W6nS9LJhh`nPM11hYPE"
A$ = A$ + "2;0^OhK5knQ50[4N:80k2f7LLhd`O<fYQS3k3f54PW2F9\0hnQ_E2g?\0HU`"
A$ = A$ + "C11HG`nPS3W6nSa>=LLHO`^P0lD`:Q50g?l]RIkdfY]CKWf>]MJkdfY]CKWf"
A$ = A$ + ">]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY"
A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>_aZM>_INn4F4\:XI80m3S175>9Ln"
A$ = A$ + "4>9LDH<XO80=3[2F4<?HVaV7\8HE#c#0j763>:LBhla>9LDH<XO80=3[2F4<"
A$ = A$ + "?HV9<?HA`ZPVQ0d?<6LDhT`iSMBhX`H#o#0J6F5\8HN`<SIkdfY]CKWf>]MJ"
A$ = A$ + "kdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKW"
A$ = A$ + "f>]MJkdfY]CKWf>]MJkdfY]CKWUk]c7jkn^9lX`C0=31XOh5QG1NChMCh=QG"
A$ = A$ + "1NAXO80=3?1lX`31OgH?4lX`C0=31XOh5QG1NChMSmV`[0_8d?4PVQW0NDhQ"
A$ = A$ + "P_K2?4lX`C0=31XOh5QG1NChMSmV`[0_8d?4PVQW0NDhQP_K<KWf>]MJkdfY"
A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MFng>M>gdc\MJkdfY]CWcU^Ikdf"
A$ = A$ + "Y]CKW>W;McfY]CKWf>M>GjV]CKWf>[#KWQB\\fY3UF9_NEEYedd1a#VZ:YBN"
A$ = A$ + "NEJoWYYK6V94:]BcNTiNV4Z5Z3F?4PnPAQaQG7>C2_><><:d74Pe3e1e2?2<"
A$ = A$ + "gH?2D;D7\N80m1S2S3_>LVH_><><:d74Pe3e1e2?2<g4N4XFX>Hm#0j36567"
A$ = A$ + "NMh<aNMHLHDX?80[7Z3Z5N4H^abi^>n=]\MN]O#dfY]CKWf>]MJkdfIj>8Jk"
A$ = A$ + "dfY]CKWf>]MJk<M74]MJkdfY]CKWf>]MV^3Rf>]MJkdfY]CKWf>Cg1AKWf>]"
A$ = A$ + "MJkdfY]CKWYkPX]CKWf>]MJkdfY]cdM#dfY]CKWf>]MJkdfIj>8Jkl6[fI=E"
A$ = A$ + "OZ4F:D?\180k461>4<1LZ4V0>4<2\C80K0Z7F:D3DM\JPU2e3K02`>QAP31C"
A$ = A$ + "0W:f4`QPAPM21H3#m`BQJPZCX6HY#m`6P0\CH4h#`4`YR=1L8H4HW#0f0D?\"
A$ = A$ + "DX6XjHiLG7oVFf>_f?8JkdfY]CKWf>]MJk<M74]MJkdfY]CKWf>]MV^3Rf>]"
A$ = A$ + "MJkdfY]CKWf>Cg1AKWf>]MJkdfY]CKWYkPX]CKWf>]MJkdfY]cdM#dfY]CKW"
A$ = A$ + "f>]MJkdfIj>8Jkl6[fi2OPg:QU3=0K42`>PQQ3073N[4>6L0HHH7#0f8d0\L"
A$ = A$ + "HQ`34KQ`bQ6P=21H7```1PS1_E\S17066f14P=2=0;7F8l09\#Hi#3`6Q0\3"
A$ = A$ + "HHh0`aPg:faP3033k02`6Q6PU3;4NPHiLG7oVFf>_f?8JkdfY]CKWf>]MJk<"
A$ = A$ + "M74]MJkdfY]CKWU1]CWc=]=KWf>]MJkdiLYKf>]MJkdfYciBg\MJkdfI5Jk\"
A$ = A$ + "ZB\\fY3QBZTWGEEB=MM#\j;maUB9_FEJoY[>=Mc`<EEEYEJV]CKWf>]MJkdf"
A$ = A$ + "Y]c<YJf>]MJkdfY]CKWf>cTZ]hOh_;Q77F=d24PNQm2_4L4hgU`APG2f;d;4"
A$ = A$ + "PFPE3?>\Hh76Ka`S3[6J12#_`NQG2>2lkRM4hUPm2m21X5He`S3;6nQ9\Hha"
A$ = A$ + "QE3]01XGH_`;171nMa>2lB`NQNQ0d2\JhaQ53o`HiLf>]MJkdfY]CKWf>]MV"
A$ = A$ + "afY]CKWf>]MJkdfY]c;?KWf>]MJkdfY]CKWf>_>Oc#KWf>]MJkdfY]CKWYkV"
A$ = A$ + "Qf>]MJkdfY]CKWf>Cg=3]MJkdfY]CKWf>]MV^K6JkdfY]CKWf>]MJk<Mg<\\"
A$ = A$ + "ZMFK=CT`ZP6QFP0d;<4<6<><A2S3S131m21X5XAHE#]#=aZ5F5d8d24PNQQP"
A$ = A$ + "aPaQ9R=><6<4d;4PFP6QE1e2eT#]`ZP6QFP0d;<4<6<><A\aQaPQPNQ0d2d8"
A$ = A$ + "\:XFXVHiLf>]MJkdfY]CKWf>]MVafY]CKWf>]MJkdfY]c;?KWf>]MJkdfY]C"
A$ = A$ + "KWf>_>Oc#KWf>]MJkdfY]CKWYkVQf>]MJkdfY]CKWf>Cg=3]MJkdfY]CKWf>"
A$ = A$ + "]MV^K6FFe>Gf?nECX>H]`C31hiQ1QAQ32_J2746564NN80?=\FX>HI`?>fbP"
A$ = A$ + "jPe2?=4PW76465>8lZa>8<:<8ll#0NJH]#M`bPOL2;3Z3F;ld#0NNH#HDhP`"
A$ = A$ + "[6kP`X`P`c31hYQe2e1;3naaL>Gie\MJkdfY]CWcU^IkdfY]CKW>W;McfY]C"
A$ = A$ + "KWEV]cXOdMUBI_Z[:DBUl:FXd:kcZZ[ZT:iE[Z:YbNEERoW4gf8DJUhljBo1"
A$ = A$ + "UBYIf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWLf>]MJkdfY]CKWf>]"
A$ = A$ + "MnYA6KWf>;kKW[H97>QjQVPFQ0d3<0<2\Oh`9\OH4H0X780]2=1e3[0FB\E0"
A$ = A$ + "e3=1]21X7H0H4Ho`QS]OH4H0X780]2=1e3[0FB2[0Z7J2J52#?`0`8`nQ37K"
A$ = A$ + "o`8`0#?#0J5J2Z7F1\THiJf>]MJkdfY]CKWf>]MnYA6KWf>]MJkdfY]CKWf>"
A$ = A$ + "]MJkdfY]CKWf>]MJklbgf`fY]CKWf>]MJkdfY]c2Hf>]MJkdfY]CKWf>]MJk"
A$ = A$ + "dfY]CKWf>]MJkdfY]CKWLf>]MJkLj[M^ZUNX4J0J6f44P]3m333S17:QaPQQ"
A$ = A$ + "nQ]31HC#c#3`ZPU6KE#3#c`VP0\MXOHHH<h#a6366j7f>4P=1=3=0[2FJ2[2"
A$ = A$ + "J0J6f44P]3m333S17:fH``#o`fQ0\9XIX1HE`BSU[IkdfY]CKWf>]MJkdfiW"
A$ = A$ + "6I\MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]c;OK3KWf>]MJkdfY]CKWf>;P"
A$ = A$ + "IkdfY]c:cfYciVnV]CKWf>]MjL^d]jFanCXAHm#K#0j6j36265fO2S231m1M"
A$ = A$ + "31X=Hm#S#M`:RE7d8\NX=80M3m131S2k?fX`##O#g#0J3F?d8D7\R4Z3J4F?"
A$ = A$ + "d64P^QnPQPAQm7KDH8X?XK80]1[7J4Z3FA<WcEN=KWf>]MFQf>Sni4F:Ue2G"
A$ = A$ + "jS;UbN_DEEEBUlHHEUFI]Z3EEBUlV6EEB==Mc`;M8=DBUVIkdfY]CKWf>]MJ"
A$ = A$ + "kdfY]CKWf>]MJkdfY]CKWf>]MnoKf>]MJkdfY]CKWf>]MVafY]CKWf>]MJkd"
A$ = A$ + "fY]c;?KWf>]MJkdfY]CKWf>_>Oc`bZfI3odOI2[3f8d64P^QM0k666nU9<<\"
A$ = A$ + "KH7#g#0J3f8\>X1hW6[1HM`6QfP0d=\3Hg```_<f``^QM0M31X=HS`jP6POJ"
A$ = A$ + "2=0[3f8d64P^QM0k666nUa66f=\3XK80]1K4F7d0lCSUcIkdfY]CKWf>]MJk"
A$ = A$ + "dfI6KWf>]MJkdfY]CKWf>_l\MJkdfY]CKWf>]MJkljl=3]MJkdfY]CKWf>]M"
A$ = A$ + "JkdfY]CKWf>]MJkdfY]CKWf>]MnYcfY]CKW9W]CKWf>]MJkdfY]cde>K\nAB"
A$ = A$ + "XIX5XM80K3j5j76269QQPnQNQ]11XMX5XIXAXnH=2=3]0]31HK#_#o`#`8a6"
A$ = A$ + "2j7j5f64PfQFPVQ6QjCXAXIX5XM80K3j5j76269f##o#_`fP0d>d2d<d8DO\"
A$ = A$ + "L>KWf>]MJkdfY]CKWf>cHkdfY]CKWf>]MJkdfiUW]CKWf>]MJk\<XMjL^Y]I"
A$ = A$ + "kdfY]CKW>W;McfY]CKWf>M>GjV]CKWf>[<KWQZZ^T:kEmUnhBYTWGEEBUlHH"
A$ = A$ + "EUD9^NEMEUDI_Z^d7G:Ull:DBUhljBgFYD:=[Ye\W4f0d:\I80K5j1f9<0\W"
A$ = A$ + "460f9d3\E80K6J5f0d4\VH=1K0J5f<4P]2m0k460fC\1PM2m0K52`VQFQ=0="
A$ = A$ + "1[9QVP=0]2K62`FQNPM230k9f0`>QNP]21Hc#[`6PVPe4;GcfY]CKWf>]MJk"
A$ = A$ + "dfY]c;ONIkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWGilbfY]CKWf>]MJkd"
A$ = A$ + "fY]cYNf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWLf>]MJkLj[M^nV6"
A$ = A$ + "8QFPfP>P0\5XKXGX?HP4j3j5j6f24P>PfPFPe3=5Km#;#K#7#0f2d=d;d7<#"
A$ = A$ + "\nPNQ^Q]01X3X=X5Hm#C9\NX5X=X380K1j6j5j368FO#_#g`FP0d1d6d2\NX"
A$ = A$ + "YHiJf>]MJkdfY]CKWf>]MNic;KWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkl"
A$ = A$ + ":WGf>]MJkdfY]CKWf>]M>ecfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJ"
A$ = A$ + "kTcfY]CKWCO]cFf`>CHC#k#W#0j2f6\MXGHW9d;\MHK#G#0j4J7f4d2\QH]0"
A$ = A$ + "K2J7j42#G`fP]3m2k<F_`fQ]1M11XCXMHC#;`6BX5HC#k#W#0j2f6\MXGHWa"
A$ = A$ + "j5f>\=X;80M2]3K2J1f#\L=KWf>]MJkdfY]CKWY[MjL^Y_IkdfY]CKW>W;Mc"
A$ = A$ + "fY]CKWf>M>GjV]CKWf>[<KWEEEEUDI_[Wol>?mY?M9Ef;4Z^T:iiEXT:aomj"
A$ = A$ + "BOLYDRK7NY?^DJjjflCe\MJkdfIUKk\D=KWf>]MVoIkdfY]CKWCeY]]CKWf>"
A$ = A$ + "C^fJ]W4J7j0j42#G`FP]1M3mT#g`fP]0M11XCX3XMX=XeH]1]3M0M21X;H;`"
A$ = A$ + "fP^QNRe=\=H;#G#0j4j0J7J3J=QfPfQ>P>Q0d5\5HK#g#?aj6f6\5X;80M2M"
A$ = A$ + "0]3]1]6;GcfY]CKWf>]MJkdfY]cXIkdfY]CKWf>]MJkdfiU?_\MJkdfY]CKW"
A$ = A$ + "f>]MJkdfY]CKWf>]M>IWff>]MJk<i\MJkdfY]cYjdffY]CKW9W]cdf>cjOgf"
A$ = A$ + "Y]CKWf>]MJkdfY]CKWf>caY]]CKWf>C^>flFCXcY`c01hiP^V2K1fJ2K1jJ:"
A$ = A$ + "lL#0N6XcY#7`Vc\e>nDMVeonEnhliIP0lL#GCQ]0K=fFP^V2?74PW1jL:d1\"
A$ = A$ + "i4j0jL:l<#0N>X[Y`FP]6K;#GCQW32`c0M>5j0fL\L=KWf>]MJkdfY]CKWf>"
A$ = A$ + "SV]CKWf>]MJkdfY]CKWGnlbfY]c?3g>_R>f\]CKWf>]MJkdfY]CKWf>]MVcC"
A$ = A$ + "KKWf>]MVLf>]MJkdfiDMJKkdfY]cTcf9KUiX?>E]c9kcIkdfI9^MNmjkSHkd"
A$ = A$ + "fY]cTcfY]CKWEV]CWciL>WciL>WciL>WciL>WciL>W;OkoC[%%L2"
btemp$ = "" 'decode string data to image data
For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
If InStr(1, B$, "%") Then
For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
If F$ <> "%" Then C$ = C$ + F$
Next: B$ = C$: End If: For j = 1 To Len(B$)
If Mid$(B$, j, 1) = "#" Then
Mid$(B$, j) = "@": End If: Next
For t% = Len(B$) To 1 Step -1
B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
Next: X$ = "": For t% = 1 To Len(B$) - 1
X$ = X$ + Chr$(B& And 255): B& = B& \ 256
Next: btemp$ = btemp$ + X$: Next
btemp$ = _Inflate$(btemp$, m.SIZE)
_MemPut m, m.OFFSET, btemp$: _MemFree m
temp& = _NewImage(_Width(v&) * ss, _Height(v&) * ss)
_Dest temp&
_PutImage (0, 0)-(_Width, _Height), v&
_Display
_Dest 0
_FreeImage v&
'Put colorpicker image on screen at xpos/ypos
_PutImage (xpos, ypos), temp&: _Display: _FreeImage temp&
'====================================
'=== Now get users color selection...
'=== no selection made yet
selected = 0
'=== main loop
Do
'=== Get mouse input
While _MouseInput
'=== Get mouse x/y
mx = _MouseX: my = _MouseY
'=== Only poll this area
If mx < (xpos + (473 * ss)) And my < (ypos + (243 * ss)) Then
'=== if click button in area
If _MouseButton(1) Then
'=== if clicked in CLOSE box area
If mx > (xpos + (352 * ss)) And mx < (xpos + (457 * ss)) And my > (ypos + (5 * ss)) And my < (ypos + (72 * ss)) Then
GoTo donepicking
End If
'=== made a color selection
selected = 1
'=== Get color where mouse pointer is
clr& = Point(mx, my)
'=== Make Red Green Blue color values
red = _Red32(clr&): grn = _Green32(clr&): blu = _Blue32(clr&)
'=== show color selected in box
Line ((xpos + (246 * ss)), (ypos + (7 * ss)))-((xpos + (347 * ss)), (ypos + (70 * ss))), _RGB(red, grn, blu), BF
'=== Update gradient strip with color...
'=== ...only if mouse not in gradient strip area
If mx <= (xpos + (246 * ss)) Or mx >= (xpos + (457 * ss)) Or my <= (ypos + (77 * ss)) Or my >= (ypos + (107 * ss)) Then
c = 0
For x = (xpos + (453 * ss)) To (xpos + (242 * ss)) Step -(4 * ss)
Line (x, (ypos + (77 * ss)))-(x + (4 * ss), (ypos + (107 * ss))), _RGB(red + c, grn + c, blu + c), BF
c = c + (4 * ss)
Next
End If
End If
'=== update screen
_Display
End If
Wend
'=== ESC key cancels picking and closes
If InKey$ = Chr$(27) Then
selected = 0: GoTo donepicking
End If
'=== don't be a cpu pig
_Limit 60
Loop 'UNTIL INKEY$ <> ""
donepicking:
'=== wait for mouse button UP to continue
Do: mi = _MouseInput: Loop Until _MouseButton(1) = 0
'=== if user selected color, say so
If selected = 1 Then
ColorPicker& = clr&
Else
ColorPicker& = 0
End If
'====================================
'Restore background as it was
_MemCopy scr2, scr2.OFFSET, scr2.SIZE To scr1, scr1.OFFSET
_MemFree scr1: _MemFree scr2
'Restore display status as it was
If DisplayStatus% = -1 Then _AutoDisplay
End Function
Function BASIMAGE1& 'quadmenu3.png
v& = _NewImage(185, 593, 32)
Dim m As _MEM: m = _MemImage(v&)
A$ = ""
A$ = A$ + "haIkm5LddLS[TjX>ZS?G#VQL1MDGWSb0T387J?8gjMA6`\1V8bMQb918HEEg"
A$ = A$ + "MeMW8R<nooZV598IBFTPTPo[oeojOo_<<<<<<<<<<<<<<<<<NYh?nSohOPg9"
A$ = A$ + "Mg`#QOogomomOnWoionocokoK;n[oj_n?QmM:_M64U9[`>Q=3doagDii[2Ch"
A$ = A$ + "f:^nkDNlXHBIa>Q]3if;6G7>2oFEonYR9U1ol?oco7LF>>PkGoj#DFN5mmlK"
A$ = A$ + "of_mFU_g1C:3nQOh7n?hZhh1nT;COV86_aEDO4mQmYFWlZhhAIj_n[ojKEIe"
A$ = A$ + "M4GEmADGlCod?mdeoHnJEcUKW_gSiKW1NoG57?b3oh?nSKggA>_\Cn=Gfm\["
A$ = A$ + "7OTlSEUcAN>h^CZ?RjhP[?IlmPK>9LZjWMnncZjjSb1?:7OJJ6jM4WAoiC:["
A$ = A$ + "DQQc_k<g;Eifd`?9L[:7^RiO?9o6U_C[kfYnhXLl9];E#I3X[ROSlndbYX?S"
A$ = A$ + "9mKPh=2kA]k5V;lIb[?:>nZjbk:7OJmA4^9fQ827nn`IiTLkU[J^88__37oA"
A$ = A$ + "DVZb_XOWcTgRb9<NY9YGDG=9L[Z?AiDXog9>N<na757OR><9o<Y_VMaSTS7h"
A$ = A$ + "<Ll[8_2K:de_#lKCZ[`H`NGihC[?NULLDVM5a7WgW4fW=7o:nNEDN=ik9Aj5"
A$ = A$ + "]5VT_V4GX^oKPS_RC6eSC6S;b?CJcPnUV`A^[LlhkZCdW9aeTjQ8mVDf>YLm"
A$ = A$ + "KSS_Jn9X>HJnIBJShLblL_[Ll9lgM:OGE^5YgTb[Ej5B?d^bLliLlMV762kT"
A$ = A$ + "lcW>77QKEiFlkCR[EaSihjbT9OGfLLMJ<=?^:nVJ3WEeWPgMfeElCSS?ILPP"
A$ = A$ + "g^cH#OWhh`Vh`6lCWSb>jbZb\9aeZlcg877jKH_9HK4\O>VXKijP?E>N`_S_"
A$ = A$ + "UQg1fb=\cATGbUK1feN;CbSGeJ>L5f=lMdfQQ>c]_g]\kCVSSb6`]AO00iWO"
A$ = A$ + "4^hI6gd^hKVS_JM8<7ooOOgijJdGndbYcZ;W5hkAWMOGn^aa_Rbf?I>NEOOG"
A$ = A$ + "mn>k\]Ef9]nfhhGAIgg87OJIcDMiAcaaJm7h\W9Q?Yei4jjZ`l=`ainnV`Yf"
A$ = A$ + "IM^^bf=MUk8]\]3oWYodb__5>ndeLl>aaalS_RcLcgljLJ>no<=NTLlM]A`E"
A$ = A$ + "IKlYiOcaO<Ll9[9kA:C_SLlM7oNN?5m\hhk\6iVSg7^Mbkihm^aaga6GkJC\"
A$ = A$ + "[bfhk<OTMV;g>fbMR]BVbaaJl=E?W`aalk_jmFk>hI`aWN^F>:7Ojnd:[??C"
A$ = A$ + ">n>i3`M>ji[][NKji[NEHfQS7HZ]UO4LlSl]aS`aWFGTihk`IgM?GLEf6OWi"
A$ = A$ + "M>Y<2jediX?5XNkZF7SMihkF_LUaIDo4ai>WO#VKl8>GfkbagI\IhLYLULl0"
A$ = A$ + "WI]aSg?_?P>kI0_[Nk:R_<7oEMVUg=_?mKS7enhkV7g=NgY?U[dfhW]olXLT"
A$ = A$ + "gSKIKmLeko\717oEik9VP#gbmKL6>nEl]jW=7?hFG=7?`>c=0c5=O6PieMMB"
A$ = A$ + "L\KmfZ`_Z]EVS?Yn?nmWiL>aNP=ggaDkBDaaWdWc^ciL:7?g_lT`OUf6_SWW"
A$ = A$ + "CSMZODa7:_cnZOH?b0imb_2ZmO6JCYRcEaGnkoIM4]_1hbR9a9Vg0dW9_7W?"
A$ = A$ + "IPl:RGhcmVFFae]a_UcWhkaC:kH>ndl:jG>2Kl>C:7NTLLDW_cl4b]1Ikm4m"
A$ = A$ + "]W;OHPbfZOG=oS9aI5WA=^:Dogm>Ml`<#l=9?]BoDf>SkSOEIe^_o4mVSc9_"
A$ = A$ + "C^lNBnoZ\Kh:\khE[:3#I;gNWg3oM#]ocZRc8\CRC>nRgC5OXlNWhLJnJRNa"
A$ = A$ + "moLTb:>>>CMaAdYSDfl<hh1VjG2Gaa=<^c0k3\YhM:_IH0P_]I>^QQQQQQQQ"
A$ = A$ + "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQan8>WM0ai;mMBgoTc;Ok8"
A$ = A$ + ">KWM2l3:AM]jmQ?NYjME_G4O:1Q=nGFRg9coZnmM5>N[b;omOogoS`Jli`ac"
A$ = A$ + "2cGEL]ElXSba3>fSTSGYC\4UG^Om?G>N8`G94mO7l^Y2le?Ml9h?A2>De_3O"
A$ = A$ + "]6;h\J_[4_gocococF_Cegd<N_hhMl`OiGnUbO_:>amVmIhhAk4hGHIi<Ll0"
A$ = A$ + ":YBGSW5W9lcN?VIlJih1O9hbELY:N<lmCMaiAih`_`XnMXG`W76oMEj0oZ6l"
A$ = A$ + "??ElHh3XZb;?;o3UaSSS[ZOkj_L577n4SSbaAHjJk1Ng:m8ko=>:7oAkWo<^"
A$ = A$ + "_Ll^aCGaYboN777nUb:m2LlZa]WC7<nNUnP_Idaa]oYaLl:^e:^G777nSd:m"
A$ = A$ + ":?nQE]UR_7dE60OJM4V8\:O`4loN0iiFKH>Ne_gaa39dk:mj8Ll>k62KlGaa"
A$ = A$ + "ib?K3mg7>NeLf^3Ll>mj8Ll8mFI7d8^Df5W;o#kQWY_LehHLl:1lS:N`cPS["
A$ = A$ + "Tc`a3d]N]#`M]#GiWB?<NOhhika[^OoMTS3NnZekTiiVSoi`a3NIn^I#9?B>"
A$ = A$ + "n:^gE`a30oNOW0k_Sf5Hl9ikg2ca_oLllMT5??[XN\Z^oAaa3^DWLELL`c[\"
A$ = A$ + "Y8THmocSi>nkGam7RaaihEn[LDgZT797_KM;a_OD>>FKd<#OcEaAlKlMaEl<"
A$ = A$ + "0?Wcg7>N^N;oN:iAca[JKQOo:]M8^kkZb;8m<GnmWSGmN:iAcaSn=[T[VSSm"
A$ = A$ + "#VJO3TC_ZakHlncaEfCN577c7kXLLeJ^`onEbaaHcjB_8>ljLnIba[fgQ1?^"
A$ = A$ + "KoOLF>NekNfaSGUGZj77[k9W6NM>oLhhC?3##bgCe7I?I1>LUMm>kjL^[PkD"
A$ = A$ + "<>=ljLni`akNGFR`QaYDe?O8Chh[6OlA]MhdcjF8ie2SO?_6#OFLlP;^RKPc"
A$ = A$ + "<Cf^aWQSSk<m^Oo8Ll^`WU#gb[5VihgO`[C7_^?CR3LgFW]_<N>_fAaH=#JR"
A$ = A$ + "eJ10LWhi`W?`oFloak[Ng<gJEjX\92\U2FGo\]bcLk0AKG_>W_?PGW^Mhh1_"
A$ = A$ + "]jmcl1N<ZZe#=cmDkWe<gAUV:^eZdIJhid9ON>mjLNo1_>MZemIBL4e]Am=0"
A$ = A$ + "jGLWd4LWhOiO;g>AmnZij]:MD8n=d_?WOVT6N>W666666666666666666666"
A$ = A$ + "666666666666666666666666666666666666gEXlS`:o:<2?lQ2Q?91HWk2k"
A$ = A$ + "8\ig=R;fWnajDnN__B_Zb7:M70g7?lkFY?kXcEj#6MQGMG1=]\WS?X[ZWaU9"
A$ = A$ + "`7;^RCTmAMLi3:SDiQG1VhKZ#nYk>]?RW^lDlKMYE^<SmS>`_6gMWWeM7VW["
A$ = A$ + ";b2h7:o_f4M>c_jlG##oId9AiL^Md>UmEjIF#i2GV0Nn4IEnVc3gI>>lY=C^"
A$ = A$ + "[b>CjTk_QSGUo`2nmW:oiFnMQoPMBl>iNO02hFMQ=[3Cihhm2OFadk9^Zh5i"
A$ = A$ + "W\PkUDnnd0n8Y9BGiNF_jl97?3P_aXZS`gTP?KRo=eMLBhc#hlTbG\5_;GO4"
A$ = A$ + "o]RK1o1HUOB[[\>Oo6[jO:d3ni`Wo`];QOlQe1em31:Cag\QOI^SS[RW#oHN"
A$ = A$ + "hZbNFZ^klDm?0ob>dMeg>clR\Pkh9FRWM7l?<:NBf?=a]]1_CE^agkk:^EGL"
A$ = A$ + "Zj_]SS[R7^<>ZoEj1lCKLNX:_EYcE];cH57G5oakYhhMUmZW[2_jND?kO5E]"
A$ = A$ + "i`_[:g[^[EEimk67?d?^_h^bIhcSOFLL^_;EobZn[AHImh8Ll:M6]_P?aj8L"
A$ = A$ + "lMjOIWW[^7ecLLeMV4nm8OYh4hk>ao7g7=kh70OTXR72M[ZOZZbclH?gUS[:"
A$ = A$ + "kZ6g\ROa]GQO>\J^DLj]jKk\]IjdIlM2EI^:nOVLl#DSm:kO5k^_#EUWAhAo"
A$ = A$ + "Klgan6ihPgRnB1GLZ?Z_RScO_6UgEa;WgFaE`lCbeOMjLeLaIAMg<oXihEmK"
A$ = A$ + "<QS7oNeLQccS3hKTSShN7nRZlVe=F_P^^j^PUc3\`mQSfWah#j^_?[^;8F9#"
A$ = A$ + "_OTLLFfUSgMWY[^[doFihLkmYfWEM_EY6k>\]bDKREa9D_?\m]b^D\N^JlhL"
A$ = A$ + "lRkBPk<7OEn9?fU_A>N46N]ajB[Z_[>9\ZkKZ:NiZnaih#e?^b^:[hhX]NnN"
A$ = A$ + "bXJ\nWUSGUg?:7_K=5ZlodO3LL^oYZn4khhlH_AK5U]]Ef##mMf>^RJM2jhQ"
A$ = A$ + "k`aEnROemMdEaaEe;WI>W`>=Zj9\N8OkLlEm9F]NTC4ejHQk#UZlPjikbak\"
A$ = A$ + ";LEjbnEo757GI_hcbaEjkMinemZhhhk\ilSJnH:>>^?2[h;Zb^9[W<2[RS[N"
A$ = A$ + "O`9HK6\;7?_72fUSW3g^UmEa;77Ze;j<LlZbRkbmfe:>>cCAKFnIhMhj9V_P"
A$ = A$ + "e98;Ef>\SSG=O<ecELl^e5Da]ZhK[\5dIhhkFfG5_:mNeh]Gmk\X6o7Bok>7"
A$ = A$ + "GeOBEI9hHMm5a2FS\hMgI\:MfgUSSZed[Z>YRgVK_>US[^?THYRS_KIOe_UU"
A$ = A$ + "ZeWMG>n:m:OGZn>`aANRcgH^6ii9YB3ek62f;?hmgI]lk6k7;ELlZmT56WAF"
A$ = A$ + "WSo?\7DFgFaaEUU:m[KL[C;k[Rg\Dmm^SHGUYe[_jaS3X^Ooh`T]U=KW[Ei5"
A$ = A$ + "l>hmig=n=H?EngalgDg[OEgeOLn1f#D5Fnnb<OW72M>7Vlo7jV:?eEF6Hgb_"
A$ = A$ + "YUmEoVZ<UeK^?gEgURLm:GFRkBeG5_NG>>bCZlaTfZZkOED^U;7N4LLDG[2;"
A$ = A$ + "WNil2[c8_RWm\hhkDf_37_Z<I:7_B_#H_3f7o<]9>jm7In>Xl>TGfAW_3m9M"
A$ = A$ + "G_k>ce[gUn^=<<<<<<<<<<<<<^K8\a?`c:=cb^jJnL=\Cj\KJMg#\^aXNjIh"
A$ = A$ + "GONfYgTjNEmIUoj9diZe_5W_a:N2_6HkXWEbdg?_nkC>K:7=MFY_khgQHo0F"
A$ = A$ + "GHEWW^ZcXC^NZJ_3Zb3EnLYlnnGMfgNeW7XMih[l5#MUAZb[c`GbjK7bkoUX"
A$ = A$ + ">0[5GWMiIYK=LjB?FbLaEkeSLidTc6E>^kl[FQTm]FI9NWZl0d5V3P_Af9Al"
A$ = A$ + "nZjC_JOZD]?gIAUWajEf9[fK6CigImX2ilBTO1O]K]CDU9CihMlahgAnV;SE"
A$ = A$ + "nb9\?_EaIeI^I:?<haZj9XO\Pe2EM6_iWYB_GejE]37_J_C[bcZm\JnLKRel"
A$ = A$ + "MWnBG9EaC^n6eC[>G:ZbTYLL5?U;cDl2\g;EY]J?OEEf7#]ggimOEDg7eCLk"
A$ = A$ + "Q#7hjj#DW]#4NU^Yf_G_Rm]bSRS[:;DkUS:>nAUEaedmi9;G57?kKjVNf7Zj"
A$ = A$ + "GMgbnYnh;EH31WQ5UN`2loKIiEMNPfQS[jK6nEc8^hm]3;lIiZJo<LFY:oU?"
A$ = A$ + "SUk>6YMhhLoRLO``gI]37Ge_jEaaEn2?57GMfQZ>[58\AiaZmdhMRS[b;Q0K"
A$ = A$ + "0\RS3KgY\1`:>ndn?`cEmY6omTaROeLLVORaZYhhEkMN57_C?IYSSc]1En0B"
A$ = A$ + "4nZ_UG=?Kl>_CLl^iB^S]3GYG\nDaaiWW;;In6:[IO>jEcaib4VGD=g]\4SW"
A$ = A$ + "6SG^RS[BWS`aEn^FNlEih9;XOSXo]>oSnMcfQMLl8?Z>;Vilc4>>lcUMj6?f"
A$ = A$ + "MUN2N77FEO;kd?BGJ];7WWC6dgEf34O__JlhIQ??#\L6>NnoG=6KhgGkh5_:"
A$ = A$ + "NnAhhak1k0YTX_NEomANLGOIjD>>7F>_U]IHgiZL57G5f^bc>oLTJL9ZakFi"
A$ = A$ + "[iDSg1fmWU>>^Jl7ioO^lPe3l=9`;P]9Z>kKgMK7RjUlhZEf78:7j>_k<GL:"
A$ = A$ + "DjIGLTe[liLY;>3Y:]Z2KGiYb7O3K[D=fKFDnIOXCG17?J3a??ooc_GeLLAO"
A$ = A$ + "h0EgK7_2o]o^LLFRhHGOEFn<9n8ihia7R_i_b?g_[`YOgH\igKJiFeha[hhk"
A$ = A$ + ">F5N\dlHCbY=WN`F\Ze0BmMnYSEl>aak:kDQE=FQ717?g_GfgSX:O?ZXnNdD"
A$ = A$ + ">^J]POULlZmX1>_fE2boCF?54nW]OQKjhl`gjE[9VjNQAE>WoFfAf[REU_Z`"
A$ = A$ + "^kjg_[D=V;UMREn83elI^B>nTkbXh_17_Z]IEKV#bmMXbO:OAiA6SjEP9kc:"
A$ = A$ + "l=Y9k=8dNXCFISlcba_Re__BjVC1Ko<TfLO9Mnh;Ej];7OBm4F?S>>>Zg[fo"
A$ = A$ + "RX<HBjUk[iIcaG]7ebcE<koLD2VGa:>N<FdX\MWa]`BEiUJM5W>>`EbZi<GE"
A$ = A$ + "fY6kmSTS[fcGZ`Qh^:\EmC72h\X_S^d;K7dGY?\5[_56?1f3=8Obc9>7fhoc"
A$ = A$ + "[c9\13jc:Sll?_J>>fgdHmGc]??Bj`YgZa8Q_AU;o`_1kWRmW6>;1hIIKDT]"
A$ = A$ + "c:6o82KN_OPeN;WN8_6Si?G?5?Ci[T#HbaOfFDX^4i[LMHNNlH_IT7C:kkFN"
A$ = A$ + "UgaK<WVAVS4i5UOJ28k_[Z2cSRSWeaLJ]cnMSk?M2oVOOEIWb_8YNV:>#o#Z"
A$ = A$ + "Wcm_T[[jl[ALknZ`ROWC75W];m^CgEW`gCQjP:mB5FEiF5>R=FVbg2M^jN3l"
A$ = A$ + "8YcDn]:?Sb?nNQ1k==EI2778?YN>77LmedjDElcn;\9eQLj]khBofaAhLGEj"
A$ = A$ + "mXC;33333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "33333333333333333333333333333333So9nSoh?ngoeOmGBlWoiONh`6o=o"
A$ = A$ + "kZg7QogomOoolgomOogoo#lgakdUnac[RcZl:W6AJgYgZd8S^bU>mahiPX>\"
A$ = A$ + "C2N0h0C2;RgX^=;P_X2O4oao_:>1?[jmIYROgU6X]TB_EYAF2mZ:^[d7Sk37"
A$ = A$ + "?G??9\inmhWo[oj_nO5_ol?ocSJk4_;7>ln\4?;#>Ofa1QnmKof_9eKEJTU#"
A$ = A$ + "ghgKUnHljhh:NC`?nYOjWn?me]:\Al5QU[c3N07f8<o`?l3oGQm7oaODn\Xo"
A$ = A$ + "NekcBl\0il9oNAlYNVB_Q>Raf`BT_Dmo3Xd7SG;7_RgXj7V3;N67_k`a[NFe"
A$ = A$ + "k[deELl:mVK73>>j7V;32Aef82?d3caOOhhChHMLUYLLl]P8>`gi_B>>hP1#"
A$ = A$ + "J4YGl>lg:H>^BGEi1XcAl2TeWllN[#Nnf6G;7_R;YN>o\XNYR[D5_:>8\G1h"
A$ = A$ + "NZd_J\3:>^Jlh`V:inJkhhLkf#0GFaak63n4Q]EUae`aI>DVW]J^GHLkkbaS"
A$ = A$ + "W[hP`V:ak6PSc:Aaa[\[2\=3BSZaS[6cM8ahDDLL>nIT]MI5`gG2Mh^cSNGi"
A$ = A$ + "hX>J277fn0l[M6[B4o`nh:YbfQEBehOkhiEf><caig5SCYSS7?7]ODUolHfE"
A$ = A$ + "`Ll[USG=F5egZEQ=Z?Z\?A77?dU`fMAhDl#U]3Ak:FjVSGT6ZaLPhZSScBNN"
A$ = A$ + "U\>SnRaHQhaS?ALoh?>>^JNL1_EaaEciDmMmESE9d3\FXZg7S]MEj7RRSSh?"
A$ = A$ + "#`kDm;GIcCeH_#I2h_LLafEi8LL?NlW;7OGkZL6K7Zh1M__BGk\[B`7SncIM"
A$ = A$ + "De>:KOl\T7WRZm2KG5NnWXON<>65#K8g?nmTS_cL>EmM^ck[deELLehBRhW7"
A$ = A$ + "k3hJ\TkW>J_DaaGa?mhaOnLLH;35_I7>>cED[U?\cXZodMn>PBGk\MHloES7"
A$ = A$ + "2SmMEjbbZm[BgH>P=6kPihG;7G9Mf7_RSGI?`\<eVTQ4mUN6>NUM?P4jZZ]9"
A$ = A$ + "6g#WL6>^a[WSSnlfUSSeY\Z^?o]n:K?OTd?457OeNK4]g>27_Coa_kaLlj#D"
A$ = A$ + "gW]e#6ieH4lfLHcm3SmW7NFfNPhk]hknH^Dlh=a_G5FHKW^d?gfAUOca?B3E"
A$ = A$ + "N<Wn1bQWAlk`6oEo^ih_NTGo65`H5DQ5li:KUU]A03fN3ZmbdABo>kSc]McY"
A$ = A$ + "1hQ\N`]OZVKHELK>n[7HmGZ`Z`2^GekPOObLY#OoI4?k\Yo>jBGIA5FE6Vc3"
A$ = A$ + "666666666666666_>L4O=2NFNoic[1GgNfo:eo\N<MM0kd=Pli33n:U:oeB5"
A$ = A$ + "Zle;WYl_c7\D5VZl]B?jZCIO6CEieM3kj[AjF[iLiFUDMNF>:bjcdbiEk=P#"
A$ = A$ + "#mkAGKmEnQU:O=cZboZeC>G^bQAUGj2OElf]6\gimI`>nJTE[5M8`f]E2RON"
A$ = A$ + "=K>2bkY#\>jC>;0ChhCFkm^f[[B3dO`^njUE[e_JOXQh<[ChICZC[>KCI9_f"
A$ = A$ + "bg1Nm:>NeNgP;?DkCJD>cbZccB6C7GCFgaN?Lbj0R_9ceIic5Yb?`DUOoUOi"
A$ = A$ + "Gn7a_j<PXl3;HmniWg]gIbj\j\IXRC\?ab_Kenj<dO^n3?KEieMM=H?;7Gm\"
A$ = A$ + "^j8eJdGe7hZaeT;cimgb4D]g\DlYZl;fO1ieNlZme<ib?^_HFoDkaHlK:>n>"
A$ = A$ + "k_NenDnMHO6Lfj3\7RhmnTjm17DMNFDLlES[9gFXJO[dQ:n5fKDCihLjNeWG"
A$ = A$ + "TLiGVSGaiDWcD<WB>M^2>>:_^[WIdMZ?Rl0;h\Xckc8F0GMbl2cLlZnVceSi"
A$ = A$ + "c;f>UaEiMTNZcTcSVS[6352;77AJcciFaKEaK777kY<NOIbQ5ekgANmAihLo"
A$ = A$ + "8lkUgg#ERJ<fCm54ii^W[_Ra3SnC^RlnSRS[fk^Zi^X4EO<li\[J<f#haide"
A$ = A$ + "?n4>NF^CLjcbaIn5o^8N[TLKQc`aceGHlAH<W<Z\[ecVS[fk^k`ai`bSa^j<"
A$ = A$ + "8YT>>>;EWKEnm^[mWO4>N0fFD#ZhhP_Uko2Q=_V5i_oRbFPlI48Gn_R_DIOV"
A$ = A$ + "GEoh1_2cQQiH8?cBeLnidBMFnZlOMWUSW][2c?NGihAiGfoR4iKnmaHdD_?g"
A$ = A$ + "o5[;P_PbBf>70id<\W1NNloE26O0g?c[NlhkFncmMPig`?S;oEc1m8ci\b7>"
A$ = A$ + "Vak>7W[OQoTOjk_b^:XlUihX_9P<gS]I8JoY>SHLJnZihZnak:oj6[#F7ESY"
A$ = A$ + "QU[TSW][bW677O_Mjk?]Mn:kZ<aVQZno_KLLeh[>;7GaAE[OcEba_Re\nA2n"
A$ = A$ + "kHhl[c?CEO4ia`V6I1fa[CVZKZee9cOj\IHei4K7>>c;DS=C=oR0[:CcSAGm"
A$ = A$ + "LFZn>`4O7YZ]9B7EmGegFj\[BeLN^;HeN[8o=YEQ5eiMbIhhIN7B[M]IhD>^"
A$ = A$ + "JL\IYkk8C;WVbaEnH[ZgGaakJS=I_el^caklI8in:aL>[2Kf?cg9WIn9Ef<l"
A$ = A$ + "A`aAHZl3cic>?_WEj:CccEK:7_JNlEkO;n_S`Z\?NUo[9Gf<QSo^<^5l==0f"
A$ = A$ + "o70m?_>1lJhWi_lLob[maAih`FEifC<oJWff:olRJ^CLn=WGkn>2GVZl9<[l"
A$ = A$ + "e<Xl5fA9G>RnMbnT54Fl<TV8?GUGSbaLn3f6Pe94V9c[o^Q>O62[kAia4OMR"
A$ = A$ + "jg?3778[WWeG<`f0Caa[b_IOYbI:C[d1nMZ\GGenSRok8\ila:oGC^m<2;g6"
A$ = A$ + "_SWLG1g>][><Zkk2KeLo>kJRUCccVO[lc:Z`UCgMnnaZbdYnjUZ`YN>o<dG#"
A$ = A$ + "GN=W7AnKU>MUe[6666666666666666666666666666666666666666666666"
A$ = A$ + "66666OGXk^CjAMg^\cMVd^g_B[2k^?WCo^bThgike:LOoLT`bjDGmgWhMDeE"
A$ = A$ + "bgj4hGa_bdLUONJjm[4l72ih^cgIXR_Zkd:4_:o:5WOjl_4Lig>QUUMZk>CI"
A$ = A$ + "hg67oAD6<aGVEaaDB^o_:1n_157GioLZNNfOK\CKFL>Qg9\\T?KfM]EPPbUM"
A$ = A$ + ";3odihAi1kG`2IU_Eh<LlX_;UNX^WBDQ5l>Uo=62l1BEgc7\PkR1>mEn?4V["
A$ = A$ + "5QQO?LoQ\CHI9kS9hg9NVb?eZJGgE6NGhU?J>^Z>_bOSL5Ll>o7IEM1o\8\:"
A$ = A$ + "On77OCmmXhi<WTmA91DUELN4nGWYQEMOddaak:3W4FD6n9jc8>Z_e7Ucii=Y"
A$ = A$ + "PJL>kDo<aOZFaail6joUC75gCE>Tm[Q7QSGE^^CH?27W;Gj:3o4k;o<LlES7"
A$ = A$ + "4agEbaEOW5L2EOnI1n7k\XlU\hiZkBCEi0;g=>n>UQVS[k7_b^D1PoB<GfMV"
A$ = A$ + "j7F#o`EL5EmXbOR39oKlkSadcne#F`hjHoDhMQScB^<dLL]_9\b?nEiok^Zj"
A$ = A$ + "7d7<B3NlgEO?^SSWSSZgWWGBGI5GfX2k[TScUQVS_oHERbg[\OLegIamc1on"
A$ = A$ + "lcRdFaYboMNl=<oM7>>j7?dGL?KDI[Tk`HE#IhIm;ZOSLlWaL>ShTi?ZkL[:"
A$ = A$ + "KeDegM5gSk[S55_5[edT`nXihEUQ7egFo9caaH^cmCa#a;N4fEA=_AFPMADg"
A$ = A$ + ";<Zl^b^e7US[^cTZ2k[PSKK7NO6?nIhh8OD5f:KRcU1<?#5^k\MEnf]MHDoZ"
A$ = A$ + "FOo>>>OG2X#gJOS_7LVj7eJkXFGAX?:9d=5WS;3H>^:=ZFkX9Q]b6<il6G7Q"
A$ = A$ + "ke1EnaLlIkGU>>n^XR3Y:cWFoXFWSMjS<oKZbT^bPEi7\_0ZRkZ`F9H>>[V?"
A$ = A$ + "4J[H>njmMHN\8?3>NfN]C[ODOkFaaacEbAihMiYLNYJL6EQ]BbSM^jNh:K?`"
A$ = A$ + "Mf?4ORLLnnN:3NLfGenE1f^2UeI`g3=aLmcQ=nM\o`bgUCHO<U37h1ZeR9\A"
A$ = A$ + "6OGLU7;2[Ohmj:3`M55#eM5F0N^iZ`Z^[Xcj2R?<F#>_3PjhEUQOZLlLINgL"
A$ = A$ + "6_bmM8#VGY#fN]LHAm:o\:NEecEY;bW:mKEklZlTbfcC3KEi3b3QnFM?LU]7"
A$ = A$ + "hdb`7=GkE1eMUD6?Rd\;mhdDmk[diLl\kckd_9i[ZiKOT`>]<R_gahfDC;3O"
A$ = A$ + "4ee66666666666666666_WXc?2YfK\75Mnb6\N7lcRgS3Kf7TXdmEjA\^7h<"
A$ = A$ + "<eM^CW6fYj0bOihQmM=MU?O3nkW75Vj;J>;jF3oZmUElN:OOBU^_BO3NBW?l"
A$ = A$ + "9kWAV6f9j#gN;9WOF]7DNDn^\_I>>>cHGajOeaaAohlcDk;?\^9H=ggAOGaQ"
A$ = A$ + "bm1?U_]B7V\WPVVVa_keYilLlli#>j[jZf[:<7?W>PcVUEkM`:>NUnZlo:Zc"
A$ = A$ + "NOl^lN1C5F\OeFY3:m?N>o\HM:I>Nl<eIehCm<kl\hhimHgE^O\Zf3Pim9Rj"
A$ = A$ + "g_:>n>W74enAOg`2M#]WaEieX=dT`Rm#eMPkl^caaniCMVS_:O7D>MDkSfG5"
A$ = A$ + "7_j<e\CHgUSGUGELllN7chHLL<NBeLi_ZcZ<>GaH?N>M?Po=aaESE9__Q_cl"
A$ = A$ + "Zk<7W[_DLe[`g1U5HG]9ekG=77kEkln8o^`aI1c?bLl[USG]W;?kIEV[kNEL"
A$ = A$ + "L4FF_EQUUW977c7fLlccaIkM`Le[bg1UC7Uo8nIg?NXc`7AX\[bMH\:`?<n9"
A$ = A$ + "OF6N6LLUMEfUS_cL>cm;=YNoA?NlM2k[H>Wh<eMgiE_3Ll>kZ0KWGMnDDmoo"
A$ = A$ + "^HGUkDohMf>lCd_]m\ih[\9nEhkPbQafEaf>l^aaic;^2ijQ[RS3YbO71A]g"
A$ = A$ + ">hg_ROZFCcZ`b?We1EnZboOK>nmRS_;^3LlEcU8OfeGI7_:k<bj0_72DiSZd"
A$ = A$ + "dLl_K>>\kCUXh2Mg7Jii0Si7D5f\MZWX3EkQAf7=I>nS1\O42UiG=7WmM#\O"
A$ = A$ + "[Yjgagfia15j7\SVb78e]NPPk0`nWTll8F5FXOCdQLLUoV16O4:3b_O0<onE"
A$ = A$ + "i;SN`fbkZihI>C5OZkg[VS;\]NelNELQ`V4Ea7[?C3k4M8\kGUon9[WLjYJC"
A$ = A$ + "H>nnhIi?IDfJLb_GIWb0MnCX>K\1^SJ>bk6fYj#locaSJOb>9oIK7JHHHHHH"
A$ = A$ + "HHHHHHHHHHl8AWo3jAi;?jB?eI[[:lEQ1a1kCR>JnmXnAXLHDoV:_bj<[O?;"
A$ = A$ + "o\dW4fagOLEH7oTCgmPMfOoT5D7b[;ndl;c?>RO4ReAELXJCe]7I0oTOV:n?"
A$ = A$ + "SOFjKSSGEGl8ihIoTCWnQeTQihH?2>I_OXTLoL7e?2ajHg_e]g<idjIhWUnd"
A$ = A$ + "ihZmiD4V[LMmEkWJ^^5W;3EO#ijaH=]SekSUhmimkGeNmFa1Qo;Q3KUO4ZJ_"
A$ = A$ + "56jHlk:A]gZhbQW]OFjKQScW5PlnTnAaa[>[;Z_=ce_ZnVAJUU:>>WO?BH[n"
A$ = A$ + "n#X3EmS?QSck16caO\LL^<IUO4R7Kk^LL^^3mYajUR3QakTU797W3;bSak0m"
A$ = A$ + "#U_WbaOFW7`_5>>GOQknG^<IR<iL:X6[2fKNi`2k801W]PZn9W>FU7177iWl"
A$ = A$ + "ihXS7FaaO6nIYLIlSbFJg9>>;im`OEohEfj2]G`NO]RScBnl7`LLEOcESgEM"
A$ = A$ + "Weo\hhifGPoM4>NFNDnIY_I>>nNOenZ6XJ?CG]GWkhhAiON_CceW<77WCR9b"
A$ = A$ + "cTS[6O>oMUMih?SnaEjdW67G=F5LfGhlm4IBohlHEPObA=oZZa]WUZf#?C>^"
A$ = A$ + "JlCEjnDkZlXlcBicNdWhI<JjL>EmQ?AV>NLEm_ZO?Ek?FO[\Sg[VS[2cMb^:"
A$ = A$ + "OZnI^cHk#doBgicAe_`D>^b^g\Pi3cekZ_io\ihilYbgELg\[bWjI<j<f>4h"
A$ = A$ + "\S7_RS?iK5:m5Y5;?K>>KWcc`aAiaSHlhOjh:hhlIAGQS`aEfAC=G>57G=FQ"
A$ = A$ + ":kH[Vg=jkT3K5_GaOc]c#i47V757OEn3BlKOKfEi8LlMaD>NeJV`2c5ESA?4"
A$ = A$ + "5GD98ofaMHMBaOci9Ek>ca=7WU:>Nel#ijm9LLfWnLDo84?oHelUO6LLeHTH"
A$ = A$ + "M8o^ORf>\bo15oOH?Y[fW2=e?i4oKf_lPi_2M>oLH7VLhbi1Dg5oFUonQmY9"
A$ = A$ + "il;J7bcU>caca;WW`OSe[\b>M7e?;aieLNJUOF2cUmCefQ0\=ZDg]2GmLDVj"
A$ = A$ + "WLZVoZji<_CU>Zl;3Nm0>ZO4RcCX]R:oT1G>`fdZjg?SOFjCo>ZXbo1YNfEf"
A$ = A$ + "^R]GedW=mm[b3MnkW^l9h\ZiB[Rgh_c?SokLnY[\QCWZO_;?]b77]BW<<<<<"
A$ = A$ + "<<<<<<<<<<<<nn`cb?2=9Mjnm\oDIElaY=NNn\;ai]Zh2aGW^Y>gZ6g7\j^4"
A$ = A$ + "oIV>M2O6X[R?f7i\jL7Q`eU^[RW#n4g[7O:HeNfA]F7?ZdIU4LB\n4MkG:\6"
A$ = A$ + "=[^Ce21aGGJZf7T\TmmA6gK>>kgJD[UlS:MDLEn\6PeIW?OLI1g?dZmE=cWE"
A$ = A$ + "kG:`]3PmN57GlMI?BGeMORamRSWgKYEkGR7Ej`RRKQmO1OVmIN[jM[fSSEYM"
A$ = A$ + "6CS;hS]<^oLL\WdPOI3Q??g]:X67oTdAacDLlhMhmmLFZfcYh\oZ^;0[hhMO"
A$ = A$ + "CXZmR7cbmWSS_Ocfb0LlERbgX>9MHA=F5EOn1W:7>L>?Ea9Vk:_gmDY=6CO4"
A$ = A$ + "?lhQDSEAeNi^Goo=bacBUo3NU_32n1dLooCBW>1We<dgJFhaWW?3JEf3Q?_e"
A$ = A$ + "E2nVd>nnX\l^`3nFihhKjZmJ9g?HenFNWdYB`If:OV0b2KgS\OR3];Eb4K7R"
A$ = A$ + "f27eg7Uggj6g3>>kgJhaG>I\:hMkj7GU>\`m37Q5WU7>Llc`hlc]9Eld:>>K"
A$ = A$ + "cWEfE1fl1j2\7Zihg?>^bN7kbaW>NlSHG5U]ZEf27We;`g`I4Se3<fLEJ_[M"
A$ = A$ + "E2NO^\:on_3LQ_=>NfN7ij=hK91WAQlhVg9MDl<UMEVd>Ca13MPm=A#?DYmA"
A$ = A$ + "\[BTODWEYg5n`g47Oeigl\S7GU>:NfAihZiBZ6go:>>d]MlKjVCO_ihIA=V3"
A$ = A$ + "0n\=FQMB75?CaaI9d5N\:H\dLhRaCTU#_DaIFfUSc_[ak97oAT>\Xhh:Oa\b"
A$ = A$ + "F;HnY[\iGejLV5caoLihC7gbEU>\D=G?EhZNNd_m4o0DWLVm5PWci[7\O4Bi"
A$ = A$ + "GM^2>nTdQm5>8]klI#8L:o34NO<^ZlLRIo04J7Z6_EUNXlmAAHcni8ca_?0k"
A$ = A$ + "aSEcMlIT>lcSWYli#Z`EmlXoLVG3TWg#gLX[d3NngH>WlkJlJaAm[>?RdIbc"
A$ = A$ + "ZlI#E?78hjMn1XMe]YniXWMmYQQQQQQQQQQQQQQQQQQQQA?faOCM50k=GeiS"
A$ = A$ + "[:<hiLh[R[EQ;WFE_GfO5emKZb_Mb[1`m4>O^_WT>C;[De1EYeW6Vj_Y^:<i"
A$ = A$ + "LWaQAMVVAmg:A5^LJE]GFbl2><LkaZb]9ie^kE;L6ojBWYUE[b_LnjC2Ml4N"
A$ = A$ + "oaN5Xk<4SeMDE_aki:dol:A5^\ooZkm#HHM>_oGjlg079_b2loFEY3olZb:E"
A$ = A$ + "HEYe[R7n\hhEnKZ757GiG9DWU=eNl6l\ZnccW7CV;Smd2c5HOf22CeM5J5g3"
A$ = A$ + "kmV9iE>^SmDSJo4cgSh8MhWGEFE]g9Sj4nIGMoJ_J<aOCMUY7G?U5`=DLfZk"
A$ = A$ + "JFDW`2_7YD_[j<1UooWUSG5gil:7g:^HenSGaa3YZ\Jbn3>nKnN]kCRSGi_Y"
A$ = A$ + "hl;?oXYn:;n\jX>OmZna`_Yd]ELLhG\D_[Z?#>>Dl`9LLeh5DiEeHmSdTgk`"
A$ = A$ + "k`a[:[VbaimRik>hlWbOCaLlEW]6D7`YUZNVoKEM1dU^j2FbkYE>n`kZJCW5"
A$ = A$ + "LNZ_2>n>iEHWSlnhM7>NEIURSG]7hoDhhZbRZ_G[j7_cVMALYlERLIlTjR#D"
A$ = A$ + "ckk\LlEj3hQ7QScjDENE=WFTOcnnPYS77_kdlKP?I>^ZOEN>XMigZkegZcOP"
A$ = A$ + "JLVI1cGJRmB^J>>VOZ:L7QScL_Zl:hHEfGYbfQMLLFZhh:k:QnWnD6?^ZMm:"
A$ = A$ + "o=EP9SE9:kinaEc_RWc[RS[B_[PSWU8<ll4SgmXLLEkIEN5j?>[5EieYLl^b"
A$ = A$ + ":ca[mgD\?enXS7W[SEf9<Z;HM#MO#LF>>Kk1UobZR_^;7_;_RnE`m:T:LZlH"
A$ = A$ + "57_[\jKL>WChZXn<kG?aH^ahhD8K?0lNC4dNReQZj]SbaEa9;H\J7QS?ADf#"
A$ = A$ + "BEFYdg:>NGIUihJYbnQ1fIlhC6gHEi^bWZl<hh8NfUS[dGUXjcF=obMhhMUE"
A$ = A$ + "OSLLEIQbOCEUWIOdP2X]QJ<fZeb6O78;ESUl<LLejoX6?\R7Vc3E[andlZJ\"
A$ = A$ + "Q:KJ>USgEFYRgEU[OJLLTgDUUW=?cUU8NI^F4F57OEo=ZlB77O7K8OF>NGNM"
A$ = A$ + "bgCP?UA5W:>ndeeE9OSLLllc^_EZhh\NPnCEYOGMQBWkhhC]I^:\IMEamDOS"
A$ = A$ + "X:_ZjO5Bn^cH7>NGIU:]b?kCSSWm5lX\\cOCMVd:jg4fj=RCfgHQ_77?7kGR"
A$ = A$ + "lLG1GXJ]:Di5`[#JWOGho\Da7k?\`n1P776dEHSKnICb[hihI:M2e;An8W>Z"
A$ = A$ + "hLBIEfW`TSW?ae02PWWHl<dNVOnIA^N8gfAmLnI:mR[;jdI>nbL5>nD?_J>f"
A$ = A$ + "Xmb:m_;_ZNNVO3mBU>ZgMEIU:]b?kCSScfm;Nf:o=eEUF8N[\1Y:mkd[Mn]^"
A$ = A$ + "dIJH1Fio_F5g#7ShQoNAf^]Ee;EagZb3ff0GMm]QQQQQQQQQQQQQQQQQQQaM"
A$ = A$ + "5HObV?[a\_TYjl\Yl]BEQ]:]ici<l1>[R_Zhl::?fEWboFW_k2UGCl=IMQAi"
A$ = A$ + "[OVh[]jZokZKkn]>o4fM0Mk]f\^f9Io>CgnW=cCFiKXbUQCBg[0WAWH>CUDM"
A$ = A$ + "^eDiYMlg?CmeFk`1^2o4f[6Zc;2;HmeF9Xn_[N1[Yf:N0:WFUfHo#ME[ilId"
A$ = A$ + "Y\Nd5?X<X;<8^Vj3`VZkE[KIGLSeolXn9\G=7G]7Bil<dEFhWQlLgi`4kMRP"
A$ = A$ + "W<ag#Qm02;icPdE\GaZj[J7MZK?>VmO1Ho^T3CU_9CaMDgAd:OSAU_f:NoLN"
A$ = A$ + "^k\PRcD]jn=MeI4i:[G^J>>GoQl2;lcZfGZio6QYRSXdWZkDIeNBj\h:d9Ei"
A$ = A$ + "ZJ_]=agT=i<dQWaaAechb:EJ`aMX?O:LLd?SbGK`b4>>joBEVYR_ZjJEHAI8"
A$ = A$ + "O^oSa<]boME=Na[#WjhhH?jbmkFiKbZ>?FZWaY9jO_J_6Ga1^Bo4fMPS[6?>"
A$ = A$ + "VK5__;II277co?7gG177eI:k5<I<\Ql<ihXl<?Nh\`Sg5nV<U?3R7[22[BoQ"
A$ = A$ + "m?hm3L77Wo6kIlCHg1>NP>O7LN?FZnM^\Am=HnMANW5lLn\9XhCihGe^=Kg\"
A$ = A$ + ":Xl7_WAWjhhIAegBD6YnNWZL?;AN<On6Vh[]hiMZh^lOce[iWo>`akZCbLXE"
A$ = A$ + "2:[cRZm1>S<\Ti8Lo>EB^M8WWDS1FQELlYjdD>NXG:O51?6_ELLHWTliIHR_"
A$ = A$ + "fZ[?>H?4FOo4hh1Zj7H577U;ZaPXhhMO[7mIRccEgg#hd5jidaZ\Koh[dYYf"
A$ = A$ + "EAaMEfSZj<:cSE9R[\ODNU_fR[giho:mCHgUaSSc09nN6[_:O7E8Zn4i`5e7"
A$ = A$ + "ZjT:>^Jn?Mm_VCgMihZbS[#WDLLnK:lkSiF`?CaaEci4_O^^DI3nhIIK7Zl_"
A$ = A$ + "FEYIelBNg\[BX[Ao0:mU5VWY\W[B`LTDa7[?XOcZd^b^:X?c^cKfdaZ\[>ea"
A$ = A$ + "aalgj6;3TMhh:mDUWbf^MJo1Wa?QM7ihZj_ELl^hC9MagA\QA5^ZaSOUf>4]"
A$ = A$ + "5WjKb>37G=^OF?Vn=_?9>NX_ZeAK:?S[kRnDgImNDndFEJWU>>>O^OEXCo?R"
A$ = A$ + ">Q_Qdmk\4jZbFhk`aEnHk:k^G]W3`gn>[O2;;MkCVW1PMfjTMj;]JN9\XlIW"
A$ = A$ + "\PadLD>nEdVo8jdAhhPgaQK7>>ggTBHoVBegKDmol^ba34j#5?7k7TYLLFjF"
A$ = A$ + "37EI9ThiIOWCW<IL;G1?OZ>EIgULlXb3CfC#MLl^aiWmeFMSIZRScf_WCOU^"
A$ = A$ + "Wc3ii0lZ#N?Ta[QOV3]JMQIoD5RSX]RjialKSnObc5DigNhh=S[VS7h<jDTg"
A$ = A$ + "HOlE6H>biO3c7Um=I:o_E>mc?3SmMBM9hK:O7FN<fImH7o46GNL7hhXNU;;h"
A$ = A$ + "fm1jVcFEH#n[jiI^J6AiGfgiX2cSPSO5j4g6D5?ZlPJ^blc0OFm\>MG]_33l"
A$ = A$ + "XlCHZjjk0RbPLk#FgHK`YR3><PCDmlLo?EY[jmGY7W5WEWf5AlYl1FkjG\#l"
A$ = A$ + "TemXN=GN_:?LTlFWO2[:]=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
A$ = A$ + "<<<<<<<<<<<<<0PoBXk>_jETNEnLfZO?O_Q`?Obm#eddW3?l=G[^W\Z`>g]E"
A$ = A$ + "EQ]CWQn^KnoC1C_c[NfYgTk>;U?`AU6[li9ClY[EQ_c7e`gCFEHbMK5bcEQ5"
A$ = A$ + "o^BGZlASLJlXhH_B\cMNec>mVLgIYhh:Om1lU2[R?nLoF9Mg5DZ`^Z<LR?I3"
A$ = A$ + "]O[2;b3knKIiC\oLUo#R[KEn<]WAj=i^cJbM9B8`OW`a7jO7nCQ<7ObM1Ub7"
A$ = A$ + "o`nFMl\>O7#emR6WnQNFe?1l3<:YcG>aaaEEGOWih<G0U?GAoikTNZnXce5`"
A$ = A$ + "OT`QAEG2n;GOfi3#Dl>>Mfa?FeaMVLgFEU?P4aCEOeMnc_\PbT7U_lh>`aAO"
A$ = A$ + "JZklZLnVWOU2Zab_CjU3;R?V3DeG7W6MLllm#5W7cBeM15;hk#`GNcnaZcba"
A$ = A$ + "EiIl>8?>e_CFaaoTj;OWklZ^jOUXV3c>Y7O7NDMgI]jn\YRS[^7ZjJ?b_OeM"
A$ = A$ + "15Bc\_Rl8LlZlQjiX<1aSjkUO[Ll0C_c[bSE1mSGI;:`9IoOo>Ygdk>[ELl8"
A$ = A$ + "=ES[Q3cZb5>N1_Yb^:X=NUO\ZSScaCn^ISeSLo6PK?US[J7o9ba1WE9[\MHW"
A$ = A$ + "ol[[o[9Y7GfcLLh;9GeO;Zgj\5YR3>m^P:ng>NnEIk`:>^JliZkM557WULJL"
A$ = A$ + "WhWG5DOg?TMJCT5<FkZb[^dCiKh?bLCcQS[gikQ:dG_Z=6b;\NV73GlM^ZaR"
A$ = A$ + "]J>LC7[26W?WoHYZ\ZB#Lcndc?1X^WTZ^c[fUSG=Nl9YWZ>ZZODUm3Ee_EgY"
A$ = A$ + "2I0mLWk2ZPKSl3l=aLKGNn\ChhEf0M27_JLE\l>hSI?;Df>Xj>_:ccajRcg]"
A$ = A$ + "YIPbelHEVVNEf7;;h>MP3;W6XN[J\WIkZDaiD2Vg;o<`ic2\GdIihZaZ`]YP"
A$ = A$ + "odW3c4>NggMoDhhMgiEZln^S7OJj5QMUDIWQZjaMVOe>g5DI1S;YjK9Em?NF"
A$ = A$ + ">>KGeMihgEniSPS[FcG\VNZi>R`_2kVNLhj^k\Z6G?Z_[hhLhj:G`gFFMWHQ"
A$ = A$ + "n#igWG7EVCZFCGEk\:>N^?1dg37V_E>n>giEGam#gddKWk>[:KD72JONF>>j"
A$ = A$ + "cGeoLWmJ21SYI7>NU>Faac]oEmKl=ca3<m>_jZ^[5WTN\d]O;jh_PK^jNOU7"
A$ = A$ + "gb>g5D:kG29Kc_:>nTm;En>[BaOc?C=ol_M>NPln^SGCm7QmTFUN8]#meZk>"
A$ = A$ + ";nil_SmbDnnMB5>T^Eg5D`>#Zg;WObci68?WcLlW_S\Z^CYhigT]Q3NO<g6E"
A$ = A$ + "lEE>m=aa1OJbMNec<mZ\YEec[V3LFokVW<W?gi^P:\WBem1Een><[;X=BU^Q"
A$ = A$ + "h1j07F^MU:nZ:oN6l[k6G?S7]]BkB?fNT[^k\Z\SIGLF5^Z`fmLlKC;oDiSY"
A$ = A$ + "j67fh_c?Sok^bY7Im[QQQQQQQQQQQQQaW>Dn\S7Aj<9=HOE2F7#>LEn;ULH?"
A$ = A$ + "R?EYCOEj]:>idMBLgi3DZRG>o^CN5aE^LV3GElmXh7?BXf_4?RdQUEjAW>E]"
A$ = A$ + "fRibo^efLEnLRoMQcC8]idE5olJYfi3Dbn6Y^lk4o1CGhh`f5^71ohIbaaNG"
A$ = A$ + "kZGk7FbYA`KF]GFbL[^mQ5\;m:>>2oTbT\0KPciYZmTUZ\D]O1ZFCO\fTEn7"
A$ = A$ + "8N?[d5V9]kkl7AMiYg=>nE^7EZhhieICeg7GWW?_6lnm;ooajlYfoRZlZ:O>"
A$ = A$ + "ao^`kmm#`J]GU?[hhEkYT#`N;CaibkeV:m5_o_l;oR\m7Gg4?;2KUo6;_O>O"
A$ = A$ + "FLd?A>^ZO=XGC>G4ZmQEGLbm9a_;_?ZDjA8ZljIihAJcnVXEjBFOciAEjb_;"
A$ = A$ + "fg;Ejhkhn0H7>>fO\[`STS[fciLMAeiI^:>ilJnMaLbFY78\<WiXLlLH#JE]"
A$ = A$ + "W8ii?Di?HVbaS`[jc7a3OfYnThhC?S<?C>NlMEEMaIhhCm_;:Q?cU7USWeO4"
A$ = A$ + "WELLeiE=;EkeNdO`:ohD8AilkdH`_Rnak\]TZM>;7USca57^ZnQ>37GegLUo"
A$ = A$ + "5TiA7US?agYdeW[:nEYKP9LlLnk>cW?;77Hen0EE_bbAihlgUI^1VSUZ_]YL"
A$ = A$ + "LnmH>>l_;CTSbaESgWo6QRS3K;Y2Wjk0\PfdClgCgE>mIhhC7[bS\OLeL<in"
A$ = A$ + "M?37O7okBFZh4WQS_RC2^;WWZl7<WQSS_ASc[U7?noMj`bE`aAOF:N_Z?_S`"
A$ = A$ + "aSaQbSiGa]ZlKbWQS_J<8`68\N<]oQS<WCP?E>NNMokf?o?baZ<A`I;KJLfi"
A$ = A$ + "S<D2l_;Ll[Ngc`aif=<O^K]Sb2VWlE`aagXodG3XGehaW>6hZj^[RS[J_QaW"
A$ = A$ + "bbIhhZij^:?E9G57oMl\3e=nSZk:7n<MEQ>>>4ffL8Mibn8>D[WWZoC5o0Oo"
A$ = A$ + "QO6caInGWoMQCC5Ok<LlLlEe^BU?ESW6f?QOoYfZ9;ElR?9>nA#UPm<bZm[2"
A$ = A$ + ">c^lkRnFb2J7^B#mI77_J=8ESK#5^7=7OR]F#JDI_c9_OFnThhGigWFEVFI_"
A$ = A$ + "Z\o5AeW5h?lcGaaaHOH>NEIPjiZlQJn_7USWK75_gTi0d]n0ZiR7BV3<QSo^"
A$ = A$ + "=^5hg=Dng3eMUbIJ;ei7D`HK`H4ieT80lM[8LIOVMfWX0kGWS7EJ2T7G5[WM"
A$ = A$ + "ng5T^i`5fPIUO<1k?\^d8Gf7?GiWG`jGZ:_RoFU6QnU?cnib`^goAa;NVXKN"
A$ = A$ + "TGINY:=0?3mOaoNl\Xn1lKUM\D?WO6S8<Zkd[Zb0ecEi3fO[X:;h`XBS8n2m"
A$ = A$ + "SSO><kh?HRW7UUZjPE_oSRGl<#Womh:_W>k\iH>LHoA0TeQZg];^WTVMjIWo"
A$ = A$ + "MIR^LVdPOfdlJGI5n=DnNTdi:i5666666666666666666666666666666666"
A$ = A$ + "6666666666666Ilo5D1C%%h1"
btemp$ = ""
For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
If InStr(1, B$, "%") Then
For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
If F$ <> "%" Then C$ = C$ + F$
Next: B$ = C$: End If: For j = 1 To Len(B$)
If Mid$(B$, j, 1) = "#" Then
Mid$(B$, j) = "@": End If: Next
For t% = Len(B$) To 1 Step -1
B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
Next: X$ = "": For t% = 1 To Len(B$) - 1
X$ = X$ + Chr$(B& And 255): B& = B& \ 256
Next: btemp$ = btemp$ + X$: Next
btemp$ = _Inflate$(btemp$, m.SIZE)
_MemPut m, m.OFFSET, btemp$: _MemFree m
temp& = _NewImage(_Width(v&) * ss, _Height(v&) * ss)
_Dest temp&
_PutImage (0, 0)-(_Width, _Height), v&
_Display
_Dest 0
BASIMAGE1& = _CopyImage(temp&): _FreeImage v&
_FreeImage temp&
End Function
Sub SaveAsBMP (filename As String)
'This SUB adapted from SAVEIMAGE SUB from the QB64 wiki
image& = _NewImage(_Width - (200 * ss), _Height, 32)
_PutImage (0, 0), _Display, image&
bytesperpixel& = _PixelSize(image&)
'IF bytesperpixel& = 0 THEN PRINT "Text modes unsupported!": END
If bytesperpixel& = 1 Then bpp& = 8 Else bpp& = 24
x& = _Width(image&)
y& = _Height(image&)
b$ = "BM????QB64????" + MKL$(40) + MKL$(x&) + MKL$(y&) + MKI$(1) + MKI$(bpp&) + MKL$(0) + "????" + String$(16, 0) 'partial BMP header info(???? to be filled later)
If bytesperpixel& = 1 Then
For c& = 0 To 255 ' read BGR color settings from JPG image + 1 byte spacer(CHR$(0))
cv& = _PaletteColor(c&, image&) ' color attribute to read.
b$ = b$ + Chr$(_Blue32(cv&)) + Chr$(_Green32(cv&)) + Chr$(_Red32(cv&)) + Chr$(0) 'spacer byte
Next
End If
Mid$(b$, 11, 4) = MKL$(Len(b$)) ' image pixel data offset(BMP header)
lastsource& = _Source
_Source image&
If ((x& * 3) Mod 4) Then padder$ = String$(4 - ((x& * 3) Mod 4), 0)
For py& = y& - 1 To 0 Step -1 ' read JPG image pixel color data
r$ = ""
For px& = 0 To x& - 1
c& = Point(px&, py&) 'POINT 32 bit values are large LONG values
If bytesperpixel& = 1 Then r$ = r$ + Chr$(c&) Else r$ = r$ + Left$(MKL$(c&), 3)
Next px&
d$ = d$ + r$ + padder$
Next py&
_Source lastsource&
Mid$(b$, 35, 4) = MKL$(Len(d$)) ' image size(BMP header)
b$ = b$ + d$ ' total file data bytes to create file
Mid$(b$, 3, 4) = MKL$(Len(b$)) ' size of data file(BMP header)
If LCase$(Right$(filename$, 4)) <> ".bmp" Then ext$ = ".bmp"
f& = FreeFile
Open filename$ + ext$ For Output As #f&: Close #f& ' erases an existing file
Open filename$ + ext$ For Binary As #f&
Put #f&, , b$
Close #f&
_FreeImage image&
End Sub
Sub Smooth
_Title "Antialiasing..."
_Display
Line (_Width - (200 * ss), 0)-(_Width - (200 * ss), _Height), _RGB(255, 255, 255), B
For x = 0 To _Width - (201 * ss)
For y = 0 To _Height - 1
p1~& = Point(x, y)
p2~& = Point(x + 1, y)
p3~& = Point(x, y + 1)
p4~& = Point(x + 1, y + 1)
p5~& = Point(x - 1, y)
p6~& = Point(x, y - 1)
p7~& = Point(x - 1, y - 1)
p8~& = Point(x - 1, y + 1)
p9~& = Point(x + 1, y - 1)
r = _Red32(p1~&) + _Red32(p2~&) + _Red32(p3~&) + _Red32(p4~&) + _Red32(p5~&) + _Red32(p6~&) + _Red32(p7~&) + _Red32(p8~&) + _Red32(p9~&)
g = _Green32(p1~&) + _Green32(p2~&) + _Green32(p3~&) + _Green32(p4~&) + _Green32(p5~&) + _Green32(p6~&) + _Green32(p7~&) + _Green32(p8~&) + _Green32(p9~&)
b = _Blue32(p1~&) + _Blue32(p2~&) + _Blue32(p3~&) + _Blue32(p4~&) + _Blue32(p5~&) + _Blue32(p6~&) + _Blue32(p7~&) + _Blue32(p8~&) + _Blue32(p9~&)
PSet (x, y), _RGB(r / 9, g / 9, b / 9)
Next
Next
End Sub
Sub DrawMenu
Line (_Width - (200 * ss), 0)-(_Width, _Height), _RGB(96, 96, 96), BF
Line (_Width - (200 * ss), 0)-(_Width - (195 * ss), _Height), _RGB(164, 164, 164), BF
_PutImage (_Width - (190 * ss), (10 * ss)), menu&
Text _Width - (64 * ss), (69 * ss), (28 * ss), _RGB(0, 0, 0), Str$(quads)
Text _Width - (66 * ss), (71 * ss), (28 * ss), _RGB(255, 255, 0), Str$(quads)
Text _Width - (55 * ss), (319 * ss), (22 * ss), _RGB(0, 0, 0), Str$(brushsize)
Text _Width - (57 * ss), (317 * ss), (22 * ss), _RGB(255, 255, 0), Str$(brushsize)
Line (_Width - (160 * ss), (180 * ss))-(_Width - (40 * ss), (300 * ss)), _RGB(164, 164, 164), BF
Line (_Width - (160 * ss), (180 * ss))-(_Width - (40 * ss), (300 * ss)), _RGB(255, 255, 255), B
Circle (_Width - (100 * ss), (240 * ss)), brushsize * ss, _RGB(0, 0, 0)
If brushsize > 1 Then Paint (_Width - (100 * ss), (240 * ss)), _RGB(0, 0, 0)
Line (_Width - (35 * ss), (380 * ss))-(_Width - (10 * ss), (397 * ss)), blk&, BF
Line (_Width - (35 * ss), (405 * ss))-(_Width - (10 * ss), (421 * ss)), fill&, BF
If randfill = 1 Then ran$ = "ON" Else ran$ = "OFF"
Text _Width - (36 * ss), (431 * ss), (22 * ss), _RGB(0, 0, 0), ran$
Text _Width - (38 * ss), (429 * ss), (22 * ss), _RGB(255, 255, 0), ran$
If eraser = 1 Then er$ = "ON" Else er$ = "OFF"
Text _Width - (76 * ss), (456 * ss), (22 * ss), _RGB(0, 0, 0), er$
Text _Width - (78 * ss), (454 * ss), (22 * ss), _RGB(255, 255, 0), er$
End Sub
Function IBOX$ (txt$, limitnum, fg&, bg&, delay)
'NOW USES text SUB to display text
'This function either gets user input or shows info.
'If limitnum is 0, it just shows info (message box)
'text$: Your text to show
'limitnum: how many letters of input to get
'fg&: The Text color
'bg&: Background color of box
'delay: optional delay period for message box only
' (and If set at -1 then wait for a keypress)
'=== Save whole screen
Dim scr1 As _MEM, scr2 As _MEM
scr1 = _MemImage(0): scr2 = _MemNew(scr1.SIZE)
_MemCopy scr1, scr1.OFFSET, scr1.SIZE To scr2, scr2.OFFSET
'=== find center x/y of screen
y = Int(_Height / (16 * ss) / 2)
x = Int((_Width - (200 * ss)) / (8 * ss) / 2)
tl = Len(txt$) + limitnum 'total length of letter spacing used
x = x - Int(tl / 2) 'recompute x based on text length
x1 = x * 8 - 24: y1 = y * 16 - 32
x2 = (x * 8) + (tl * (8 * ss)) + 8: y2 = y * 16 + (16 * ss)
Line (x1, y1)-(x2, y2), bg&, BF
Line (x1, y1)-(x2, y2), fg&, B
Text x1 + (16 / 2 * ss), y1 + (16 / 2 * ss), 16 * ss, fg&, txt$
If limitnum = 0 Then
If delay = -1 Then
a$ = Input$(1)
Else
_Delay delay
End If
IBOX$ = ""
Else
entry$ = ""
Do
a$ = Input$(1)
'=== Return exits with data
If a$ = Chr$(13) Then IBOX$ = entry$: Exit Do
'=== Handle the backspace
If a$ = Chr$(27) Then IBOX$ = "": Exit Do
'=== ESC cancels
If a$ = Chr$(8) Then 'Backspace goes back a space
If Len(entry$) > 0 Then
entry$ = Mid$(entry$, 1, Len(entry$) - 1)
End If
Else
'add letter entered, if not over limitnum
If Len(entry$) < limitnum Then
entry$ = entry$ + a$
End If
End If
Line (x1, y1)-(x2, y2), bg&, BF
Line (x1, y1)-(x2, y2), fg&, B
Text x1 + (16 / 2 * ss), y1 + (16 / 2 * ss), 16 * ss, fg&, txt$ + Space$(limitnum)
Text x1 + (16 / 2 * ss), y1 + (16 / 2 * ss), 16 * ss, fg&, txt$ + entry$
_Display
_Limit 30
Loop
End If
'=== Restore the whole screen
_MemCopy scr2, scr2.OFFSET, scr2.SIZE To scr1, scr1.OFFSET
_MemFree scr1: _MemFree scr2
End Function
Sub fc (cx As Integer, cy As Integer, radius As Integer, clr~&, grad)
If radius < 1 Then Exit Sub ' safety bail
If grad = 1 Then
red = _Red32(clr~&)
grn = _Green32(clr~&)
blu = _Blue32(clr~&)
alpha = _Alpha32(clr~&)
End If
r2 = radius * radius
For y = -radius To radius
x = Abs(Sqr(r2 - y * y))
' If doing gradient
If grad = 1 Then
For i = -x To x
dis = Sqr(i * i + y * y) / radius
red2 = red * (1 - dis) + (red / 2) * dis
grn2 = grn * (1 - dis) + (grn / 2) * dis
blu2 = blu * (1 - dis) + (blu / 2) * dis
clr2~& = _RGBA(red2, grn2, blu2, alpha)
Line (cx + i, cy + y)-(cx + i, cy + y), clr2~&, BF
Next
Else
Line (cx - x, cy + y)-(cx + x, cy + y), clr~&, BF
End If
Next
End Sub
RE: QuadDraw revisited - drawing program work in progress - Petr - 10-08-2024
Nice code, nice idea and program, Dav! Lock points number changing when draw, othervise it do bug - draw to 0,0.
RE: QuadDraw revisited - drawing program work in progress - Dav - 10-08-2024
(10-08-2024, 05:26 PM)Petr Wrote: Nice code, nice idea and program, Dav! Lock points number changing when draw, othervise it do bug - draw to 0,0.
Thanks, @Petr! This program would not work without your great SPAINT sub! I don't fully understand the bug you mentioned. Are you getting a unintended draw at pixel 0,0? I will check that out.
I fixed the IBOX$ text sizing. Works correctly now.
- Dav
Code: (Select All) '============
'QuadDraw.bas v1.9b
'============
'An odd little drawing program.
'Draws/paints in several points on the screen at same time.
'Coded by Dav for QB64-PE OCT/2024
'NEW FOR v1.9b:
' - Fixed autosize logic in IBOX$ Function.
' Also increased font size to 22pt
'CREDITS: SPAINT SUB was made by Petr. Thanks Petr!
' text SUB was made by bplus. thanks bplus!
' (bplus helped me out how to draw lines without gaps too)
' Thanks to James Jarvis for draw color and eraser idea/code!
' And to PhilOfPerth and euklides for code suggestions.
'----------
'HOW TO USE:
'----------
'Left click on mouse and hold to draw on the screen.
'Press Up/Down arrows to set how many draw points to use, default is 4.
'Use the +/- keys to change brush size (1 to 50 allowed)
'Right click to fill/paint the areas with color.
'Default fill color is picked randomly, but you can select one.
'Press D to select a new draw color for brush.
'Press F to select a fill color (doing so turns random fill color off)
'Press P to toggle use Plasma colors On/Off.
'Press R to toggle random fill color on/off (default is a random color)
'Press E to toggle Erase on/off. Hold it while drawing for dotted lines.
'Press A to smooth the screen (blur).
'Press S to save current image as QUADDRAW.BMP in current dir.
'Press L to Load a previously saved image on the screen.
'Press U to undo last change made to image.
'Space = clears screen and starts over.
'ESC = Ends program
'===================================================================
'NOTE: This program was originally sized to 1000x600. This was too
' small on higher resolution desktops so I added screen scaling
' factor (ss) and applied that to all the drawing things so it
' will autoscale to users desktop height. That is why you see
' '* ss' all over the place added to numbers.
'===================================================================
Dim Shared quads, brushsize, randfill, eraser, menu&, blk&, fill&, ss
ss = _DesktopHeight / 600 * .85 '<<<<< scale to 85% of users desktop
' change this to suit your needs
If ss > 2.25 Then ss = 2.25 'limit ss factor for performace reasons
Screen _NewImage(1000 * ss, 600 * ss, 32)
menu& = BASIMAGE1&
cx = (_Width - (200 * ss)) / 2
cy = _Height / 2
wht& = _RGB(255, 255, 255) 'used often, so variable it
blk& = _RGB(0, 0, 0)
fill& = _RGB(Rnd * 255, Rnd * 255, Rnd * 255)
brushsize = 3 'size of drawing circle (brush)
quads = 4 'start with 4 drawing sections
randfill = 1 'default is use random fill color turned on
plasma = 0
ReDim Shared pointa(quads), pointx(quads), pointy(quads), lastmx(quads), lastmy(quads)
Cls , wht& 'start with white screen
_Delay .25
undo& = _CopyImage(_Display)
'====
main:
'====
_Title "QuadDraw - Points:" + Str$(quads) + " BrushSize:" + Str$(brushsize)
DrawMenu
Do
t = Timer 'for plasma colors
While _MouseInput: Wend
mx = _MouseX: my = _MouseY
If mx <= (_Width - (200 * ss) - brushsize / 2) Then
If _MouseButton(1) Then
If stilldown = 0 Then
_FreeImage undo&
undo& = _CopyImage(_Display)
End If
If stilldown = 1 Then
dx = mx - cx: dy = my - cy
a = _Atan2(dy, dx)
dis = Sqr(dx * dx + dy * dy)
For i = 1 To quads
pointa(i) = (360 / quads) * i * (3.14159 / 180)
pointx(i) = cx + dis * Cos(pointa(i) + a)
pointy(i) = cy + dis * Sin(pointa(i) + a)
stepx = lastmx(i) - pointx(i)
stepy = lastmy(i) - pointy(i)
length = Int((stepx ^ 2 + stepy ^ 2) ^ .5)
dx2 = stepx / length
dy2 = stepy / length
For i2 = 1 To length
newx = pointx(i) + dx2 * i2
newy = pointy(i) + dy2 * i2
If plasma = 1 Then
r = Int(128 + 127 * Sin(pointx(i) / 25 + t) + 127 * Cos(pointy(i) / 25 + t))
g = Int(128 + 127 * Sin(pointx(i) / 25 + t * 1.5) + 127 * Cos(pointy(i) / 25 + t * 1.5))
b = Int(128 + 127 * Sin(pointx(i) / 25 + t * 2) + 127 * Cos(pointy(i) / 25 + t * 2))
fc newx, newy, brushsize * ss, _RGB(r, g, b), 0
Else
fc newx, newy, brushsize * ss, blk&, 0
End If
Next
lastmx(i) = pointx(i)
lastmy(i) = pointy(i)
Next
Else
dx = mx - cx
dy = my - cy
a = _Atan2(dy, dx)
dis = Sqr(dx * dx + dy * dy)
For i = 1 To quads
pointa(i) = (360 / quads) * i * (3.14159 / 180)
pointx(i) = cx + dis * Cos(pointa(i) + a)
pointy(i) = cy + dis * Sin(pointa(i) + a)
lastmx(i) = pointx(i)
lastmy(i) = pointy(i)
If plasma = 1 Then
r = Int(128 + 127 * Sin(pointx(i) / 25 + t) + 127 * Cos(pointy(i) / 25 + t))
g = Int(128 + 127 * Sin(pointx(i) / 25 + t * 1.5) + 127 * Cos(pointy(i) / 25 + t * 1.5))
b = Int(128 + 127 * Sin(pointx(i) / 25 + t * 2) + 127 * Cos(pointy(i) / 25 + t * 2))
fc pointx(i), pointy(i), brushsize * ss, _RGB(r, g, b), 0
Else
fc pointx(i), pointy(i), brushsize * ss, blk&, 0
End If
Next
stilldown = 1
End If
stilldown = 1
DrawMenu
_Display
Else
stilldown = 0
End If
'if right click, fill sections with random color
If _MouseButton(2) Then
_FreeImage undo&
undo& = _CopyImage(_Display)
_Display
dx = mx - cx
dy = my - cy
a = _Atan2(dy, dx)
dis = Sqr(dx * dx + dy * dy)
For i = 1 To quads
pointa(i) = (360 / quads) * i * (3.14159 / 180)
pointx(i) = cx + dis * Cos(pointa(i) + a)
pointy(i) = cy + dis * Sin(pointa(i) + a)
lastmx(i) = pointx(i)
lastmy(i) = pointy(i)
SPAINT pointx(i), pointy(i), fill&
Next
'Get next random fill color
If randfill = 1 Then
r = Rnd * 255: g = Rnd * 255: b = Rnd * 255
fill& = _RGB(r, g, b)
End If
DrawMenu
_AutoDisplay
While _MouseButton(2) <> 0: n = _MouseInput: Wend
End If
End If
'get keyboard input
key$ = UCase$(InKey$)
If key$ <> "" Then
Select Case key$
Case Chr$(32): Cls , wht&: DrawMenu 'scpace clears screen again
Case Chr$(0) + Chr$(72)
If quads < 16 Then
quads = quads + 1
ReDim Shared pointa(quads), pointx(quads), pointy(quads), lastmx(quads), lastmy(quads)
End If
Case Chr$(0) + Chr$(80)
If quads > 1 Then
quads = quads - 1
ReDim Shared pointa(quads), pointx(quads), pointy(quads), lastmx(quads), lastmy(quads)
End If
Case "+"
brushsize = brushsize + 1: If brushsize > 50 Then brushsize = 50
Case "-"
brushsize = brushsize - 1: If brushsize < 1 Then brushsize = 1
Case "U": _PutImage (0, 0), undo&
Case "A": Smooth
Case "P": If plasma = 1 Then plasma = 0 Else plasma = 1
Case "S"
saveimg$ = IBOX$("NAME OF BMP TO SAVE-> ", 40, _RGB(255, 255, 255), _RGB(96, 96, 96), 0)
If saveimg$ <> "" Then
If LCase$(Right$(saveimg$, 4)) <> ".bmp" Then saveimg$ = saveimg$ + ".bmp"
SaveAsBMP saveimg$
a$ = IBOX$(UCase$(saveimg$) + " SAVED!", 0, _RGB(255, 255, 255), _RGB(96, 96, 96), 2)
End If
Case "F"
new& = ColorPicker&(200 * ss, 150 * ss)
If new& <> 0 Then
randfill = 0
fill& = new&
End If
Case "D"
new& = ColorPicker&(200 * ss, 150 * ss)
If new& <> 0 Then
blk& = new&
Else
blk& = _RGB(0, 0, 0)
End If
Case "E"
Select Case eraser
Case Is = 1: eraser = 0
Case Is = 0: eraser = 1
End Select
If blk& = _RGB(0, 0, 0) Then
blk& = wht&
Else
blk& = _RGB(0, 0, 0)
End If
Case "R"
Do Until InKey$ = "": Loop
Select Case randfill
Case Is = 1: randfill = 0
Case Is = 0: randfill = 1
End Select
Case "L"
openimg$ = IBOX$("IMAGE TO LOAD-> ", 40, _RGB(255, 255, 255), _RGB(96, 96, 96), 0)
'if filename given
If openimg$ <> "" Then
'if file exists..
If _FileExists(openimg$) Then
'test loading image
o& = _LoadImage(openimg$)
If o& = -1 Then
a$ = IBOX$(UCase$(openimg$) + " NOT VALID!", 0, _RGB(255, 255, 255), _RGB(96, 96, 96), 2)
Else
_PutImage (0, 0)-(_Width - (200 * ss), _Height), o&
_FreeImage o&
End If
Else
a$ = IBOX$(UCase$(openimg$) + " NOT FOUND!", 0, _RGB(255, 255, 255), _RGB(96, 96, 96), 2)
End If
End If
Case Chr$(27): End
End Select
Do Until InKey$ = "": Loop
_Display
GoTo main
End If
_AutoDisplay
Loop
End
Sub SPAINT (x As Integer, y As Integer, clr~&) 'Color everything in the X, Y position regardless of the border color.
'SUB by Petr
Dim m As _MEM, m2 As _MEM
m = _MemImage(_Dest)
W = _Width(_Dest)
H = _Height(_Dest)
P = _PixelSize(_Dest)
Select Case P
Case 4 ' image is 32 bit image
Virtual = _NewImage(W, H, 32)
m2 = _MemImage(Virtual)
Back~& = Point(x, y)
Back2~& = _RGB32(1, 1, 1)
Empty~& = _RGBA32(0, 0, 0, 0)
Do Until a& = m.SIZE - 4
a& = a& + 4
If _MemGet(m, m.OFFSET + a&, _Unsigned Long) = Back~& Then _MemPut m2, m2.OFFSET + a&, Back~& Else _MemPut m2, m2.OFFSET + a&, Back2~&
Loop
d = _Dest
_Dest Virtual
Paint (x, y), clr~&, Back2~&
_Dest d
a& = 0
Do Until a& = m.SIZE - 4
a& = a& + 4
If _MemGet(m2, m2.OFFSET + a&, _Unsigned Long) <> clr~& Then _MemPut m2, m2.OFFSET + a&, Empty~&
Loop
_ClearColor Back2~&, Virtual
_PutImage (0, 0), Virtual
_MemFree m
_MemFree m2
_FreeImage Virtual
Case 1 ' image is 8 bit image (256 colors)
Virtual = _NewImage(W, H, 32)
m2 = _MemImage(Virtual)
Back~& = Point(x, y)
Back2~& = _RGB(1, 1, 1)
Empty~& = _RGBA(0, 0, 0, 0)
Do Until a& = m.SIZE - 1
a& = a& + 1
If _MemGet(m, m.OFFSET + a&, _Unsigned _Byte) = Back~& Then _MemPut m2, m2.OFFSET + a&, Back~& Else _MemPut m2, m2.OFFSET + a&, Back2~&
Loop
d = _Dest
_Dest Virtual
Paint (x, y), clr~&, Back2~&
_Dest d
a& = 0
Do Until a& = m.SIZE - 1
a& = a& + 1
If _MemGet(m2, m2.OFFSET + a&, _Unsigned _Byte) <> clr~& Then _MemPut m2, m2.OFFSET + a&, Empty~&
Loop
_ClearColor Back2~&, Virtual
_PutImage (0, 0), Virtual
_MemFree m
_MemFree m2
_FreeImage Virtual
End Select
End Sub
Sub Text (x, y, textHeight, K As _Unsigned Long, txt$)
'Text SUB by bplus.
Dim fg As _Unsigned Long, cur&, I&, multi, xlen
fg = _DefaultColor
cur& = _Dest
I& = _NewImage(8 * Len(txt$), 16, 32)
_Dest I&
Color K, _RGBA32(0, 0, 0, 0)
_PrintString (0, 0), txt$
multi = textHeight / 16
xlen = Len(txt$) * 8 * multi
_PutImage (x, y)-Step(xlen, textHeight), I&, cur&
Color fg
_FreeImage I&
End Sub
Function ColorPicker& (xpos, ypos)
'ColorPicker& Function by Dav, SEP/2020. FREE TO USE FOR ALL
'Function Returns color picked by user if one selected.
'If no color selected before Closing, function returns 0
'Click CLOSE to close the ColorPicker image.
'ESC key cancels selection and closes picker too.
'The xpos/ypos is x/y point on the screen to place colorpicker
'=== Save users display status
DisplayStatus% = _AutoDisplay
'=== copy background screen using _mem (thanks Steve!)
'=== Used this method because_COPYIMAGE(_DISPLAY) didnt always work
Dim scr1 As _MEM, scr2 As _MEM
scr1 = _MemImage(0): scr2 = _MemNew(scr1.SIZE)
_MemCopy scr1, scr1.OFFSET, scr1.SIZE To scr2, scr2.OFFSET
'Create Colorpicker image
v& = _NewImage(463, 239, 32)
Dim m As _MEM: m = _MemImage(v&)
A$ = "" '...COLORPICKER.PNG encoded by BASIMAGE...
A$ = A$ + "haIkMo7KDGOh77_oaBfFFfOhBL9c5gGWaX9BRK62K46AkHnS9I=`09EP<4V="
A$ = A$ + "e25F]0eB;]jK;#YFXUEJQJGM573`644fjGM:62H66L42I^89^HF<co`T]oHo"
A$ = A$ + "anW]TUUk;O2BnLONnmjek3L7m>li;cS4;]LohSGjC_[gM=C6WciL>WciL>Wc"
A$ = A$ + "iL>WciL>WciL>WciLOFMgBE9=CX6XN80S0C0W7n48C2O2LNH2H480e3e0c4^"
A$ = A$ + "5XZHUa7hn4hl`4`8#0Z7Z1V9L;#boQOFngVWjlLWGjhUNN]SGkiAW:SK^U[]"
A$ = A$ + "lUDW:cUmbnoNZbCf>]MJkdfYVnIk\bR]CKWf>o\CkdEn=KWEVBc:SC0I:[oV"
A$ = A$ + "IUa7h\MJkd=m>KWEVBc:SC0I:[oVIUa7h\MJkd=m>KWEVBc:SC0I:[oVIUa7"
A$ = A$ + "h\MJkd=m>KWEVBc:SC0I:[oVIUa7h\MJkd=m>KWEVBc^e?go9QI1;0NB80_0"
A$ = A$ + "LLhL`73oW4nHhL`aQG02`C2;0V5L[`W;f]2c2F0lT#0N1hh`iP?6n?anHhL`"
A$ = A$ + "aQG02`C2;0V5L[`W;QK5V5\0h9Q0l2`aQc1O<lORma`iPS3_04PW4F0<;hFQ"
A$ = A$ + "?G\2mk?k:?V]c:CYIf>]MJkdfY[h>KWEVBc\MJkdfY]CGaMf>[<UVIkdfY]C"
A$ = A$ + "KW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>]Mj:^cfIUYd<KWf>]MJkdELW"
A$ = A$ + "]c:CYIf>]MJkdfY[h>KWEVBc^]_ho:QI3;4J02```aPc2O4l_BhSPc273662"
A$ = A$ + "#3`2QI3g6l5SMK`\Q52=01HHhH`IQ?2nGan8h\`aPQQ0d0\#Hf`]1Oa4^=Hf"
A$ = A$ + "`2Q6P0<<L<h\`71o[HO4LFhH``#0J0F8<KhfP_H\2mk?k:?V]c:CYIf>]MJk"
A$ = A$ + "dfY[h>KWEVBc\MJkdfY]CGaM5[fiMOgIbl\?KV<o_o_IbLZC5[gNcTiaOl<I"
A$ = A$ + "^iK>oom_okObmoloDhG>R>OR>oR>O_J^LT[C[X[GIOJ59j?Knc?oWNAG^cge"
A$ = A$ + "[LY#_lUVIkdfY]CKW^Rk^FKWcJFIbl7n35fie#3=i]Ql]X>EQdifgn:\;7AO"
A$ = A$ + "Mi[A5miR>?oKo]Ynd:j[Ib>mR>=BkRjWf>]MJkdfId\MFn^[UfiBFBj?onX?"
A$ = A$ + "jbg7eRIk<jngmn_Oj^L4meW[NGdOFJ?]V\[Gf>]MJkdfY]cK<gEKk<ja[lZM"
A$ = A$ + "AM6f]bgVZfiEC[;JAomhYEQNOGceR^ogf>]MJkdfY]cKlgEKk<ZoM]<f3CcG"
A$ = A$ + "KfRniAN]\XonIOO>_FGfo\I]MJkdfY]CKWgH^[VfiDMO>GcJ^L38jiDcT=NO"
A$ = A$ + "nbgbGk<OgWcX?GdUSXWoB5bUSX_f9KAoL=Sj\AGgcgoO3AOnb]fiMlUoW9<7"
A$ = A$ + "HA#3#066>:l>`72oc4n#hMPS2331X1HA`LPk0nba^3H>`RP6P0<<LDhMP?4n"
A$ = A$ + "Wan#hMPS2331X1HA`LPk0nb9L7`LP51=01HHhX`k0O8l?SmQ`k075662#3`R"
A$ = A$ + "Pi0g1lUSU[Ik\lMG=]cle4Rj:5JS]Hd>cg^B7[#_L\a=>iO=A??M;T[oIOIM"
A$ = A$ + "ZJWAONZ#O>5WVIkdfY]CKW^Rk^JJWikna5MO=;Tk7Gdb^CT_=I]cYjaHm:g7"
A$ = A$ + "^2mbAaX9VVfIQd8]MJkdfY]CGig^JJWikaR==]c\Ol9cgV\fIQNjGXOMi[e5"
A$ = A$ + "mL8bfY]CKWf>]MjRV]c2[M6][lJ#9j[?G?N[AbnjT]CKWf>]MJkl6cIk<n[["
A$ = A$ + "#NMg4mlPZ#kKf>]MJkdfY]cK<W]ch_^XO^W5bRNMLV[gO7\MJkdfY]CKWOfH"
A$ = A$ + "f>CNiX#Oo5<JCem1MZJWlm8g\?fE<KWge=m?BhnP53[62`NQS0_=l1`o8Q?0"
A$ = A$ + "NKh8`NQ0\JHa`m1g5LCa^;hnP53[62`NQS0_=l1`o8f70_=L4H_#0F=\HhnP"
A$ = A$ + "k2^Y4^;hnP53[62`NQS0_=l1`o8f70_=L4H_#0F=\HhnPk2^YHiJf>;OGY\M"
A$ = A$ + "6mlP]#OO??OkjIk<jnNF8_?fNU5eJW\gKL_JNmMJkdfY]CKWGIf>;OGY\MF\"
A$ = A$ + "N<8_Nf>S4mhaVVniTmNd[]CKWf>]MJkl6cIk<g_GnTfgOiSJ]5Sg;h]MJkdf"
A$ = A$ + "Y]c[<KWU_cfInOO`;jgKJ5jRjWIohgJkdfY]CKWf>_aLf>Wjg3ISnMDJQnNO"
A$ = A$ + "OJN_A`W[#f>]MJkdfIUiliIKQmn_NdmWl`7>oW>A;kgKi;GN=ZHkdfY]CKW^"
A$ = A$ + "Rk\MVlegiTmn5dEnMEFd___WZW7Af>]MJkdfY]cK\W]c2k[;k[GA?6^iKGii"
A$ = A$ + "<DiBkL6glO?QZQU0[12`NP33W2^8lgChR`YP33k12`JPU0E3c0^iHc0Z6F2\"
A$ = A$ + "680k1><L:hR`O?f5QC176f34Pe0;1Z6V1Lc9<3XJH9`JP0\7h``YP;2omHG4"
A$ = A$ + ">5LHH?#0F3\4XJH6`=7;GcfIik\MVnfITlMO?;dgOL]MJkdfY]CKWEVKjlg1"
A$ = A$ + "IIoJj8O[L\MV_oo7\MJkdfY]CKWgH_Rm_k[CCk\#K1UjOoMF8GN]MJkdfY]C"
A$ = A$ + "KW^[\[Vfi6ghTOj5mHIVf_^YZ54mj3Q_F>^bmI=Ok:?oNbgUSXE8G>R^<TMc"
A$ = A$ + ">O?V]5j?_cLmJD9jeCZ]CKWf>]M6=KWU_kZYM6e6bgRN<MSj6i[_4meLef2R"
A$ = A$ + "fE^_Mika?>je;BJ_LT_G7WGijeDmn=DQLocW\EX_6?Cc\MJkdfY]CGaMG=]c"
A$ = A$ + "YZaD8;jiZJaXM>E?WGCkUS[VNGf;kF\]CKWf>]MJkl6cMef>_FJFijaU<];k"
A$ = A$ + "WS^5bkI1iJAombe?3edln0?Gf]HKWf>]MJkdfi=VkZ]M6Y#NO2PKbNNoTfag"
A$ = A$ + ";PBKo<GMc\O<YCck3lA;jh`lWoenmQ]Dd>_WKiCBHN#]#S#06267>9lN`WT`"
A$ = A$ + "k1W467622#S#]`lPk1^UHg3<?XFXA8031S3W4N?hCRmN`9QaQQP0d8D;<?hN"
A$ = A$ + "PK9Qk1V7D;d84PQPaQC2_7l9aN?hT`h`##0J4Z5V7L?`]4;GcfIik^FJWARN"
A$ = A$ + "_hIOkKZKXAoN^T?nX5cfITXWK#CEc;jcOUW3ACUXWSACeS=MdekNk=go>ldf"
A$ = A$ + "Y]CKWf>]MNSi^FKWI;ZW5eKbnmb^Xk;fTmk6jBUXNNdi;_L4mWG\>mRj_ijg"
A$ = A$ + "IWG_TVIkdfY]CKW^Rk:V]CIkdfY]CKWf>o\`\MFI:=cfY]CKWf>M5gIk\bDJ"
A$ = A$ + "V]CKWf>]Mj:^cfIUYd<KWf>]MJkdELW]c:CYIgkgh_V`32?6\F8032_<L2h2"
A$ = A$ + "`O=Q;0W0NIH#80[5N<h1Qk5n6a^Gh1Q73F;4P1QG6>1L1h_6k2`9PG6642`J"
A$ = A$ + "Q73N#hNQ_A2g;lP`S1[52`P`;3W0^0lGSM1h4`;3321H]`S1?8L_`g8FQnmW"
A$ = A$ + "MU7cfIUYd<KWf>]MJkdELW]c:CYIf>]MJkdfY[h>KWEVBc\MJkdfY]CGaMf>"
A$ = A$ + "[<UVIkdfY]CKW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>]Mj:^cfIUYd<K"
A$ = A$ + "Wf>]MJkdELW]c:CYIcjfo;9l``bPe21H#hP`K0W3n;9L>h=P32321H]`bP76"
A$ = A$ + "V5LkaV5l``bPe21H#hP`K0W3n;a>7l6`1Q1Q0\FHI`33c2^m4V5l``bPe21H"
A$ = A$ + "#hP`K0W3n;a>7l6`1Q1Q0\FHI`33c2^mH5jgOfEN<KWEVBc\MJkdfY]CGaMf"
A$ = A$ + ">[<UVIkdfY]CKW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>[\KWZlU]c:;f"
A$ = A$ + ">]MJkdfYVnIk\bR]CKWf>_a_MjL^Y_IkdfY]CKW>W;MKfgiO>Qi3;7F74PM3"
A$ = A$ + "70N=h\`O>Qc2_6L0Hg#0F7\LHn`\Qk<f\Qi3;7F74PM370N=h\`O>fIQG3>0"
A$ = A$ + "\K80[3F><OHf`MV`\Qi3;7F74PM370N=h\`O>fIQG3>0\K80[3F><OHf`M6c"
A$ = A$ + "iLUGcfY]CKWf>M>GjV]CKWf>]MjL^d=KWf>]MFif>o_ogoKVgomOo9eOj?mW"
A$ = A$ + "bLQ;LQ<WolWOBm^_kkVigokomCZCNbCVi]N[gJBMRCLR<ofOk_MBmKn=oV<_"
A$ = A$ + "j[nZI>lQ?L>=nhSWiGo[oeInEoZOeTJ\a6;c_hGl;b<b8S<Y6L`1clcoiolL"
A$ = A$ + "JGkJGIjYWNb[]^e]ViIOfW=_J_mfcdJ[]VC]dB;IJZYVblcnIo\LJM[KMIFc"
A$ = A$ + "JFCVj[_n9EMeEGVE^bEViWlCn9idBGjBc\TU\TlJ1;H1InAoXODNm0?`3TCo"
A$ = A$ + "PO`?8cgokomclmnNO_9eLVcLblMn>OW<cLVcLBm]ofOk<cH6c8cMOggM>MWG"
A$ = A$ + "jkQNkgn]?YnVOc_IV_nGo[Wi[menJCZ_jGm[Vi[lEn:I^YKjVbY_dGj;Ui;l"
A$ = A$ + "5n2CZ?oWocWYZZZ:QomonOKkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]"
A$ = A$ + "MJkdfY]c:`fiLWa5CX6H5#C#060f?<1L6hR9L6H2Ho`0#0J2F1D3<GH6aV;D"
A$ = A$ + "3\2X98030k7V0>3LaHW1V0f?<04PVPE0e0c5VA2c5Z1F1d44P1Pm3C0W1^H\"
A$ = A$ + "c0C0k7602#C`:PJPi2c8V]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY"
A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]M"
A$ = A$ + "JkdfY]CKWf>]MJkl6[fimo]nS9\0HU`C11HG`nPS3W6nS9LJhh`nPM11hYPE"
A$ = A$ + "2;0^OhK5knQ50[4N:80k2f7LLhd`O<fYQS3k3f54PW2F9\0hnQ_E2g?\0HU`"
A$ = A$ + "C11HG`nPS3W6nSa>=LLHO`^P0lD`:Q50g?l]RIkdfY]CKWf>]MJkdfY]CKWf"
A$ = A$ + ">]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY"
A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>_aZM>_INn4F4\:XI80m3S175>9Ln"
A$ = A$ + "4>9LDH<XO80=3[2F4<?HVaV7\8HE#c#0j763>:LBhla>9LDH<XO80=3[2F4<"
A$ = A$ + "?HV9<?HA`ZPVQ0d?<6LDhT`iSMBhX`H#o#0J6F5\8HN`<SIkdfY]CKWf>]MJ"
A$ = A$ + "kdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKW"
A$ = A$ + "f>]MJkdfY]CKWf>]MJkdfY]CKWUk]c7jkn^9lX`C0=31XOh5QG1NChMCh=QG"
A$ = A$ + "1NAXO80=3?1lX`31OgH?4lX`C0=31XOh5QG1NChMSmV`[0_8d?4PVQW0NDhQ"
A$ = A$ + "P_K2?4lX`C0=31XOh5QG1NChMSmV`[0_8d?4PVQW0NDhQP_K<KWf>]MJkdfY"
A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MFng>M>gdc\MJkdfY]CWcU^Ikdf"
A$ = A$ + "Y]CKW>W;McfY]CKWf>M>GjV]CKWf>[#KWQB\\fY3UF9_NEEYedd1a#VZ:YBN"
A$ = A$ + "NEJoWYYK6V94:]BcNTiNV4Z5Z3F?4PnPAQaQG7>C2_><><:d74Pe3e1e2?2<"
A$ = A$ + "gH?2D;D7\N80m1S2S3_>LVH_><><:d74Pe3e1e2?2<g4N4XFX>Hm#0j36567"
A$ = A$ + "NMh<aNMHLHDX?80[7Z3Z5N4H^abi^>n=]\MN]O#dfY]CKWf>]MJkdfIj>8Jk"
A$ = A$ + "dfY]CKWf>]MJk<M74]MJkdfY]CKWf>]MV^3Rf>]MJkdfY]CKWf>Cg1AKWf>]"
A$ = A$ + "MJkdfY]CKWYkPX]CKWf>]MJkdfY]cdM#dfY]CKWf>]MJkdfIj>8Jkl6[fI=E"
A$ = A$ + "OZ4F:D?\180k461>4<1LZ4V0>4<2\C80K0Z7F:D3DM\JPU2e3K02`>QAP31C"
A$ = A$ + "0W:f4`QPAPM21H3#m`BQJPZCX6HY#m`6P0\CH4h#`4`YR=1L8H4HW#0f0D?\"
A$ = A$ + "DX6XjHiLG7oVFf>_f?8JkdfY]CKWf>]MJk<M74]MJkdfY]CKWf>]MV^3Rf>]"
A$ = A$ + "MJkdfY]CKWf>Cg1AKWf>]MJkdfY]CKWYkPX]CKWf>]MJkdfY]cdM#dfY]CKW"
A$ = A$ + "f>]MJkdfIj>8Jkl6[fi2OPg:QU3=0K42`>PQQ3073N[4>6L0HHH7#0f8d0\L"
A$ = A$ + "HQ`34KQ`bQ6P=21H7```1PS1_E\S17066f14P=2=0;7F8l09\#Hi#3`6Q0\3"
A$ = A$ + "HHh0`aPg:faP3033k02`6Q6PU3;4NPHiLG7oVFf>_f?8JkdfY]CKWf>]MJk<"
A$ = A$ + "M74]MJkdfY]CKWU1]CWc=]=KWf>]MJkdiLYKf>]MJkdfYciBg\MJkdfI5Jk\"
A$ = A$ + "ZB\\fY3QBZTWGEEB=MM#\j;maUB9_FEJoY[>=Mc`<EEEYEJV]CKWf>]MJkdf"
A$ = A$ + "Y]c<YJf>]MJkdfY]CKWf>cTZ]hOh_;Q77F=d24PNQm2_4L4hgU`APG2f;d;4"
A$ = A$ + "PFPE3?>\Hh76Ka`S3[6J12#_`NQG2>2lkRM4hUPm2m21X5He`S3;6nQ9\Hha"
A$ = A$ + "QE3]01XGH_`;171nMa>2lB`NQNQ0d2\JhaQ53o`HiLf>]MJkdfY]CKWf>]MV"
A$ = A$ + "afY]CKWf>]MJkdfY]c;?KWf>]MJkdfY]CKWf>_>Oc#KWf>]MJkdfY]CKWYkV"
A$ = A$ + "Qf>]MJkdfY]CKWf>Cg=3]MJkdfY]CKWf>]MV^K6JkdfY]CKWf>]MJk<Mg<\\"
A$ = A$ + "ZMFK=CT`ZP6QFP0d;<4<6<><A2S3S131m21X5XAHE#]#=aZ5F5d8d24PNQQP"
A$ = A$ + "aPaQ9R=><6<4d;4PFP6QE1e2eT#]`ZP6QFP0d;<4<6<><A\aQaPQPNQ0d2d8"
A$ = A$ + "\:XFXVHiLf>]MJkdfY]CKWf>]MVafY]CKWf>]MJkdfY]c;?KWf>]MJkdfY]C"
A$ = A$ + "KWf>_>Oc#KWf>]MJkdfY]CKWYkVQf>]MJkdfY]CKWf>Cg=3]MJkdfY]CKWf>"
A$ = A$ + "]MV^K6FFe>Gf?nECX>H]`C31hiQ1QAQ32_J2746564NN80?=\FX>HI`?>fbP"
A$ = A$ + "jPe2?=4PW76465>8lZa>8<:<8ll#0NJH]#M`bPOL2;3Z3F;ld#0NNH#HDhP`"
A$ = A$ + "[6kP`X`P`c31hYQe2e1;3naaL>Gie\MJkdfY]CWcU^IkdfY]CKW>W;McfY]C"
A$ = A$ + "KWEV]cXOdMUBI_Z[:DBUl:FXd:kcZZ[ZT:iE[Z:YbNEERoW4gf8DJUhljBo1"
A$ = A$ + "UBYIf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWLf>]MJkdfY]CKWf>]"
A$ = A$ + "MnYA6KWf>;kKW[H97>QjQVPFQ0d3<0<2\Oh`9\OH4H0X780]2=1e3[0FB\E0"
A$ = A$ + "e3=1]21X7H0H4Ho`QS]OH4H0X780]2=1e3[0FB2[0Z7J2J52#?`0`8`nQ37K"
A$ = A$ + "o`8`0#?#0J5J2Z7F1\THiJf>]MJkdfY]CKWf>]MnYA6KWf>]MJkdfY]CKWf>"
A$ = A$ + "]MJkdfY]CKWf>]MJklbgf`fY]CKWf>]MJkdfY]c2Hf>]MJkdfY]CKWf>]MJk"
A$ = A$ + "dfY]CKWf>]MJkdfY]CKWLf>]MJkLj[M^ZUNX4J0J6f44P]3m333S17:QaPQQ"
A$ = A$ + "nQ]31HC#c#3`ZPU6KE#3#c`VP0\MXOHHH<h#a6366j7f>4P=1=3=0[2FJ2[2"
A$ = A$ + "J0J6f44P]3m333S17:fH``#o`fQ0\9XIX1HE`BSU[IkdfY]CKWf>]MJkdfiW"
A$ = A$ + "6I\MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]c;OK3KWf>]MJkdfY]CKWf>;P"
A$ = A$ + "IkdfY]c:cfYciVnV]CKWf>]MjL^d]jFanCXAHm#K#0j6j36265fO2S231m1M"
A$ = A$ + "31X=Hm#S#M`:RE7d8\NX=80M3m131S2k?fX`##O#g#0J3F?d8D7\R4Z3J4F?"
A$ = A$ + "d64P^QnPQPAQm7KDH8X?XK80]1[7J4Z3FA<WcEN=KWf>]MFQf>Sni4F:Ue2G"
A$ = A$ + "jS;UbN_DEEEBUlHHEUFI]Z3EEBUlV6EEB==Mc`;M8=DBUVIkdfY]CKWf>]MJ"
A$ = A$ + "kdfY]CKWf>]MJkdfY]CKWf>]MnoKf>]MJkdfY]CKWf>]MVafY]CKWf>]MJkd"
A$ = A$ + "fY]c;?KWf>]MJkdfY]CKWf>_>Oc`bZfI3odOI2[3f8d64P^QM0k666nU9<<\"
A$ = A$ + "KH7#g#0J3f8\>X1hW6[1HM`6QfP0d=\3Hg```_<f``^QM0M31X=HS`jP6POJ"
A$ = A$ + "2=0[3f8d64P^QM0k666nUa66f=\3XK80]1K4F7d0lCSUcIkdfY]CKWf>]MJk"
A$ = A$ + "dfI6KWf>]MJkdfY]CKWf>_l\MJkdfY]CKWf>]MJkljl=3]MJkdfY]CKWf>]M"
A$ = A$ + "JkdfY]CKWf>]MJkdfY]CKWf>]MnYcfY]CKW9W]CKWf>]MJkdfY]cde>K\nAB"
A$ = A$ + "XIX5XM80K3j5j76269QQPnQNQ]11XMX5XIXAXnH=2=3]0]31HK#_#o`#`8a6"
A$ = A$ + "2j7j5f64PfQFPVQ6QjCXAXIX5XM80K3j5j76269f##o#_`fP0d>d2d<d8DO\"
A$ = A$ + "L>KWf>]MJkdfY]CKWf>cHkdfY]CKWf>]MJkdfiUW]CKWf>]MJk\<XMjL^Y]I"
A$ = A$ + "kdfY]CKW>W;McfY]CKWf>M>GjV]CKWf>[<KWQZZ^T:kEmUnhBYTWGEEBUlHH"
A$ = A$ + "EUD9^NEMEUDI_Z^d7G:Ull:DBUhljBgFYD:=[Ye\W4f0d:\I80K5j1f9<0\W"
A$ = A$ + "460f9d3\E80K6J5f0d4\VH=1K0J5f<4P]2m0k460fC\1PM2m0K52`VQFQ=0="
A$ = A$ + "1[9QVP=0]2K62`FQNPM230k9f0`>QNP]21Hc#[`6PVPe4;GcfY]CKWf>]MJk"
A$ = A$ + "dfY]c;ONIkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWGilbfY]CKWf>]MJkd"
A$ = A$ + "fY]cYNf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWLf>]MJkLj[M^nV6"
A$ = A$ + "8QFPfP>P0\5XKXGX?HP4j3j5j6f24P>PfPFPe3=5Km#;#K#7#0f2d=d;d7<#"
A$ = A$ + "\nPNQ^Q]01X3X=X5Hm#C9\NX5X=X380K1j6j5j368FO#_#g`FP0d1d6d2\NX"
A$ = A$ + "YHiJf>]MJkdfY]CKWf>]MNic;KWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkl"
A$ = A$ + ":WGf>]MJkdfY]CKWf>]M>ecfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJ"
A$ = A$ + "kTcfY]CKWCO]cFf`>CHC#k#W#0j2f6\MXGHW9d;\MHK#G#0j4J7f4d2\QH]0"
A$ = A$ + "K2J7j42#G`fP]3m2k<F_`fQ]1M11XCXMHC#;`6BX5HC#k#W#0j2f6\MXGHWa"
A$ = A$ + "j5f>\=X;80M2]3K2J1f#\L=KWf>]MJkdfY]CKWY[MjL^Y_IkdfY]CKW>W;Mc"
A$ = A$ + "fY]CKWf>M>GjV]CKWf>[<KWEEEEUDI_[Wol>?mY?M9Ef;4Z^T:iiEXT:aomj"
A$ = A$ + "BOLYDRK7NY?^DJjjflCe\MJkdfIUKk\D=KWf>]MVoIkdfY]CKWCeY]]CKWf>"
A$ = A$ + "C^fJ]W4J7j0j42#G`FP]1M3mT#g`fP]0M11XCX3XMX=XeH]1]3M0M21X;H;`"
A$ = A$ + "fP^QNRe=\=H;#G#0j4j0J7J3J=QfPfQ>P>Q0d5\5HK#g#?aj6f6\5X;80M2M"
A$ = A$ + "0]3]1]6;GcfY]CKWf>]MJkdfY]cXIkdfY]CKWf>]MJkdfiU?_\MJkdfY]CKW"
A$ = A$ + "f>]MJkdfY]CKWf>]M>IWff>]MJk<i\MJkdfY]cYjdffY]CKW9W]cdf>cjOgf"
A$ = A$ + "Y]CKWf>]MJkdfY]CKWf>caY]]CKWf>C^>flFCXcY`c01hiP^V2K1fJ2K1jJ:"
A$ = A$ + "lL#0N6XcY#7`Vc\e>nDMVeonEnhliIP0lL#GCQ]0K=fFP^V2?74PW1jL:d1\"
A$ = A$ + "i4j0jL:l<#0N>X[Y`FP]6K;#GCQW32`c0M>5j0fL\L=KWf>]MJkdfY]CKWf>"
A$ = A$ + "SV]CKWf>]MJkdfY]CKWGnlbfY]c?3g>_R>f\]CKWf>]MJkdfY]CKWf>]MVcC"
A$ = A$ + "KKWf>]MVLf>]MJkdfiDMJKkdfY]cTcf9KUiX?>E]c9kcIkdfI9^MNmjkSHkd"
A$ = A$ + "fY]cTcfY]CKWEV]CWciL>WciL>WciL>WciL>WciL>W;OkoC[%%L2"
btemp$ = "" 'decode string data to image data
For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
If InStr(1, B$, "%") Then
For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
If F$ <> "%" Then C$ = C$ + F$
Next: B$ = C$: End If: For j = 1 To Len(B$)
If Mid$(B$, j, 1) = "#" Then
Mid$(B$, j) = "@": End If: Next
For t% = Len(B$) To 1 Step -1
B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
Next: X$ = "": For t% = 1 To Len(B$) - 1
X$ = X$ + Chr$(B& And 255): B& = B& \ 256
Next: btemp$ = btemp$ + X$: Next
btemp$ = _Inflate$(btemp$, m.SIZE)
_MemPut m, m.OFFSET, btemp$: _MemFree m
temp& = _NewImage(_Width(v&) * ss, _Height(v&) * ss)
_Dest temp&
_PutImage (0, 0)-(_Width, _Height), v&
_Display
_Dest 0
_FreeImage v&
'Put colorpicker image on screen at xpos/ypos
_PutImage (xpos, ypos), temp&: _Display: _FreeImage temp&
'====================================
'=== Now get users color selection...
'=== no selection made yet
selected = 0
'=== main loop
Do
'=== Get mouse input
While _MouseInput
'=== Get mouse x/y
mx = _MouseX: my = _MouseY
'=== Only poll this area
If mx < (xpos + (473 * ss)) And my < (ypos + (243 * ss)) Then
'=== if click button in area
If _MouseButton(1) Then
'=== if clicked in CLOSE box area
If mx > (xpos + (352 * ss)) And mx < (xpos + (457 * ss)) And my > (ypos + (5 * ss)) And my < (ypos + (72 * ss)) Then
GoTo donepicking
End If
'=== made a color selection
selected = 1
'=== Get color where mouse pointer is
clr& = Point(mx, my)
'=== Make Red Green Blue color values
red = _Red32(clr&): grn = _Green32(clr&): blu = _Blue32(clr&)
'=== show color selected in box
Line ((xpos + (246 * ss)), (ypos + (7 * ss)))-((xpos + (347 * ss)), (ypos + (70 * ss))), _RGB(red, grn, blu), BF
'=== Update gradient strip with color...
'=== ...only if mouse not in gradient strip area
If mx <= (xpos + (246 * ss)) Or mx >= (xpos + (457 * ss)) Or my <= (ypos + (77 * ss)) Or my >= (ypos + (107 * ss)) Then
c = 0
For x = (xpos + (453 * ss)) To (xpos + (242 * ss)) Step -(4 * ss)
Line (x, (ypos + (77 * ss)))-(x + (4 * ss), (ypos + (107 * ss))), _RGB(red + c, grn + c, blu + c), BF
c = c + (4 * ss)
Next
End If
End If
'=== update screen
_Display
End If
Wend
'=== ESC key cancels picking and closes
If InKey$ = Chr$(27) Then
selected = 0: GoTo donepicking
End If
'=== don't be a cpu pig
_Limit 60
Loop 'UNTIL INKEY$ <> ""
donepicking:
'=== wait for mouse button UP to continue
Do: mi = _MouseInput: Loop Until _MouseButton(1) = 0
'=== if user selected color, say so
If selected = 1 Then
ColorPicker& = clr&
Else
ColorPicker& = 0
End If
'====================================
'Restore background as it was
_MemCopy scr2, scr2.OFFSET, scr2.SIZE To scr1, scr1.OFFSET
_MemFree scr1: _MemFree scr2
'Restore display status as it was
If DisplayStatus% = -1 Then _AutoDisplay
End Function
Function BASIMAGE1& 'quadmenu3.png
v& = _NewImage(185, 593, 32)
Dim m As _MEM: m = _MemImage(v&)
A$ = ""
A$ = A$ + "haIkm5LddLS[TjX>ZS?G#VQL1MDGWSb0T387J?8gjMA6`\1V8bMQb918HEEg"
A$ = A$ + "MeMW8R<nooZV598IBFTPTPo[oeojOo_<<<<<<<<<<<<<<<<<NYh?nSohOPg9"
A$ = A$ + "Mg`#QOogomomOnWoionocokoK;n[oj_n?QmM:_M64U9[`>Q=3doagDii[2Ch"
A$ = A$ + "f:^nkDNlXHBIa>Q]3if;6G7>2oFEonYR9U1ol?oco7LF>>PkGoj#DFN5mmlK"
A$ = A$ + "of_mFU_g1C:3nQOh7n?hZhh1nT;COV86_aEDO4mQmYFWlZhhAIj_n[ojKEIe"
A$ = A$ + "M4GEmADGlCod?mdeoHnJEcUKW_gSiKW1NoG57?b3oh?nSKggA>_\Cn=Gfm\["
A$ = A$ + "7OTlSEUcAN>h^CZ?RjhP[?IlmPK>9LZjWMnncZjjSb1?:7OJJ6jM4WAoiC:["
A$ = A$ + "DQQc_k<g;Eifd`?9L[:7^RiO?9o6U_C[kfYnhXLl9];E#I3X[ROSlndbYX?S"
A$ = A$ + "9mKPh=2kA]k5V;lIb[?:>nZjbk:7OJmA4^9fQ827nn`IiTLkU[J^88__37oA"
A$ = A$ + "DVZb_XOWcTgRb9<NY9YGDG=9L[Z?AiDXog9>N<na757OR><9o<Y_VMaSTS7h"
A$ = A$ + "<Ll[8_2K:de_#lKCZ[`H`NGihC[?NULLDVM5a7WgW4fW=7o:nNEDN=ik9Aj5"
A$ = A$ + "]5VT_V4GX^oKPS_RC6eSC6S;b?CJcPnUV`A^[LlhkZCdW9aeTjQ8mVDf>YLm"
A$ = A$ + "KSS_Jn9X>HJnIBJShLblL_[Ll9lgM:OGE^5YgTb[Ej5B?d^bLliLlMV762kT"
A$ = A$ + "lcW>77QKEiFlkCR[EaSihjbT9OGfLLMJ<=?^:nVJ3WEeWPgMfeElCSS?ILPP"
A$ = A$ + "g^cH#OWhh`Vh`6lCWSb>jbZb\9aeZlcg877jKH_9HK4\O>VXKijP?E>N`_S_"
A$ = A$ + "UQg1fb=\cATGbUK1feN;CbSGeJ>L5f=lMdfQQ>c]_g]\kCVSSb6`]AO00iWO"
A$ = A$ + "4^hI6gd^hKVS_JM8<7ooOOgijJdGndbYcZ;W5hkAWMOGn^aa_Rbf?I>NEOOG"
A$ = A$ + "mn>k\]Ef9]nfhhGAIgg87OJIcDMiAcaaJm7h\W9Q?Yei4jjZ`l=`ainnV`Yf"
A$ = A$ + "IM^^bf=MUk8]\]3oWYodb__5>ndeLl>aaalS_RcLcgljLJ>no<=NTLlM]A`E"
A$ = A$ + "IKlYiOcaO<Ll9[9kA:C_SLlM7oNN?5m\hhk\6iVSg7^Mbkihm^aaga6GkJC\"
A$ = A$ + "[bfhk<OTMV;g>fbMR]BVbaaJl=E?W`aalk_jmFk>hI`aWN^F>:7Ojnd:[??C"
A$ = A$ + ">n>i3`M>ji[][NKji[NEHfQS7HZ]UO4LlSl]aS`aWFGTihk`IgM?GLEf6OWi"
A$ = A$ + "M>Y<2jediX?5XNkZF7SMihkF_LUaIDo4ai>WO#VKl8>GfkbagI\IhLYLULl0"
A$ = A$ + "WI]aSg?_?P>kI0_[Nk:R_<7oEMVUg=_?mKS7enhkV7g=NgY?U[dfhW]olXLT"
A$ = A$ + "gSKIKmLeko\717oEik9VP#gbmKL6>nEl]jW=7?hFG=7?`>c=0c5=O6PieMMB"
A$ = A$ + "L\KmfZ`_Z]EVS?Yn?nmWiL>aNP=ggaDkBDaaWdWc^ciL:7?g_lT`OUf6_SWW"
A$ = A$ + "CSMZODa7:_cnZOH?b0imb_2ZmO6JCYRcEaGnkoIM4]_1hbR9a9Vg0dW9_7W?"
A$ = A$ + "IPl:RGhcmVFFae]a_UcWhkaC:kH>ndl:jG>2Kl>C:7NTLLDW_cl4b]1Ikm4m"
A$ = A$ + "]W;OHPbfZOG=oS9aI5WA=^:Dogm>Ml`<#l=9?]BoDf>SkSOEIe^_o4mVSc9_"
A$ = A$ + "C^lNBnoZ\Kh:\khE[:3#I;gNWg3oM#]ocZRc8\CRC>nRgC5OXlNWhLJnJRNa"
A$ = A$ + "moLTb:>>>CMaAdYSDfl<hh1VjG2Gaa=<^c0k3\YhM:_IH0P_]I>^QQQQQQQQ"
A$ = A$ + "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQan8>WM0ai;mMBgoTc;Ok8"
A$ = A$ + ">KWM2l3:AM]jmQ?NYjME_G4O:1Q=nGFRg9coZnmM5>N[b;omOogoS`Jli`ac"
A$ = A$ + "2cGEL]ElXSba3>fSTSGYC\4UG^Om?G>N8`G94mO7l^Y2le?Ml9h?A2>De_3O"
A$ = A$ + "]6;h\J_[4_gocococF_Cegd<N_hhMl`OiGnUbO_:>amVmIhhAk4hGHIi<Ll0"
A$ = A$ + ":YBGSW5W9lcN?VIlJih1O9hbELY:N<lmCMaiAih`_`XnMXG`W76oMEj0oZ6l"
A$ = A$ + "??ElHh3XZb;?;o3UaSSS[ZOkj_L577n4SSbaAHjJk1Ng:m8ko=>:7oAkWo<^"
A$ = A$ + "_Ll^aCGaYboN777nUb:m2LlZa]WC7<nNUnP_Idaa]oYaLl:^e:^G777nSd:m"
A$ = A$ + ":?nQE]UR_7dE60OJM4V8\:O`4loN0iiFKH>Ne_gaa39dk:mj8Ll>k62KlGaa"
A$ = A$ + "ib?K3mg7>NeLf^3Ll>mj8Ll8mFI7d8^Df5W;o#kQWY_LehHLl:1lS:N`cPS["
A$ = A$ + "Tc`a3d]N]#`M]#GiWB?<NOhhika[^OoMTS3NnZekTiiVSoi`a3NIn^I#9?B>"
A$ = A$ + "n:^gE`a30oNOW0k_Sf5Hl9ikg2ca_oLllMT5??[XN\Z^oAaa3^DWLELL`c[\"
A$ = A$ + "Y8THmocSi>nkGam7RaaihEn[LDgZT797_KM;a_OD>>FKd<#OcEaAlKlMaEl<"
A$ = A$ + "0?Wcg7>N^N;oN:iAca[JKQOo:]M8^kkZb;8m<GnmWSGmN:iAcaSn=[T[VSSm"
A$ = A$ + "#VJO3TC_ZakHlncaEfCN577c7kXLLeJ^`onEbaaHcjB_8>ljLnIba[fgQ1?^"
A$ = A$ + "KoOLF>NekNfaSGUGZj77[k9W6NM>oLhhC?3##bgCe7I?I1>LUMm>kjL^[PkD"
A$ = A$ + "<>=ljLni`akNGFR`QaYDe?O8Chh[6OlA]MhdcjF8ie2SO?_6#OFLlP;^RKPc"
A$ = A$ + "<Cf^aWQSSk<m^Oo8Ll^`WU#gb[5VihgO`[C7_^?CR3LgFW]_<N>_fAaH=#JR"
A$ = A$ + "eJ10LWhi`W?`oFloak[Ng<gJEjX\92\U2FGo\]bcLk0AKG_>W_?PGW^Mhh1_"
A$ = A$ + "]jmcl1N<ZZe#=cmDkWe<gAUV:^eZdIJhid9ON>mjLNo1_>MZemIBL4e]Am=0"
A$ = A$ + "jGLWd4LWhOiO;g>AmnZij]:MD8n=d_?WOVT6N>W666666666666666666666"
A$ = A$ + "666666666666666666666666666666666666gEXlS`:o:<2?lQ2Q?91HWk2k"
A$ = A$ + "8\ig=R;fWnajDnN__B_Zb7:M70g7?lkFY?kXcEj#6MQGMG1=]\WS?X[ZWaU9"
A$ = A$ + "`7;^RCTmAMLi3:SDiQG1VhKZ#nYk>]?RW^lDlKMYE^<SmS>`_6gMWWeM7VW["
A$ = A$ + ";b2h7:o_f4M>c_jlG##oId9AiL^Md>UmEjIF#i2GV0Nn4IEnVc3gI>>lY=C^"
A$ = A$ + "[b>CjTk_QSGUo`2nmW:oiFnMQoPMBl>iNO02hFMQ=[3Cihhm2OFadk9^Zh5i"
A$ = A$ + "W\PkUDnnd0n8Y9BGiNF_jl97?3P_aXZS`gTP?KRo=eMLBhc#hlTbG\5_;GO4"
A$ = A$ + "o]RK1o1HUOB[[\>Oo6[jO:d3ni`Wo`];QOlQe1em31:Cag\QOI^SS[RW#oHN"
A$ = A$ + "hZbNFZ^klDm?0ob>dMeg>clR\Pkh9FRWM7l?<:NBf?=a]]1_CE^agkk:^EGL"
A$ = A$ + "Zj_]SS[R7^<>ZoEj1lCKLNX:_EYcE];cH57G5oakYhhMUmZW[2_jND?kO5E]"
A$ = A$ + "i`_[:g[^[EEimk67?d?^_h^bIhcSOFLL^_;EobZn[AHImh8Ll:M6]_P?aj8L"
A$ = A$ + "lMjOIWW[^7ecLLeMV4nm8OYh4hk>ao7g7=kh70OTXR72M[ZOZZbclH?gUS[:"
A$ = A$ + "kZ6g\ROa]GQO>\J^DLj]jKk\]IjdIlM2EI^:nOVLl#DSm:kO5k^_#EUWAhAo"
A$ = A$ + "Klgan6ihPgRnB1GLZ?Z_RScO_6UgEa;WgFaE`lCbeOMjLeLaIAMg<oXihEmK"
A$ = A$ + "<QS7oNeLQccS3hKTSShN7nRZlVe=F_P^^j^PUc3\`mQSfWah#j^_?[^;8F9#"
A$ = A$ + "_OTLLFfUSgMWY[^[doFihLkmYfWEM_EY6k>\]bDKREa9D_?\m]b^D\N^JlhL"
A$ = A$ + "lRkBPk<7OEn9?fU_A>N46N]ajB[Z_[>9\ZkKZ:NiZnaih#e?^b^:[hhX]NnN"
A$ = A$ + "bXJ\nWUSGUg?:7_K=5ZlodO3LL^oYZn4khhlH_AK5U]]Ef##mMf>^RJM2jhQ"
A$ = A$ + "k`aEnROemMdEaaEe;WI>W`>=Zj9\N8OkLlEm9F]NTC4ejHQk#UZlPjikbak\"
A$ = A$ + ";LEjbnEo757GI_hcbaEjkMinemZhhhk\ilSJnH:>>^?2[h;Zb^9[W<2[RS[N"
A$ = A$ + "O`9HK6\;7?_72fUSW3g^UmEa;77Ze;j<LlZbRkbmfe:>>cCAKFnIhMhj9V_P"
A$ = A$ + "e98;Ef>\SSG=O<ecELl^e5Da]ZhK[\5dIhhkFfG5_:mNeh]Gmk\X6o7Bok>7"
A$ = A$ + "GeOBEI9hHMm5a2FS\hMgI\:MfgUSSZed[Z>YRgVK_>US[^?THYRS_KIOe_UU"
A$ = A$ + "ZeWMG>n:m:OGZn>`aANRcgH^6ii9YB3ek62f;?hmgI]lk6k7;ELlZmT56WAF"
A$ = A$ + "WSo?\7DFgFaaEUU:m[KL[C;k[Rg\Dmm^SHGUYe[_jaS3X^Ooh`T]U=KW[Ei5"
A$ = A$ + "l>hmig=n=H?EngalgDg[OEgeOLn1f#D5Fnnb<OW72M>7Vlo7jV:?eEF6Hgb_"
A$ = A$ + "YUmEoVZ<UeK^?gEgURLm:GFRkBeG5_NG>>bCZlaTfZZkOED^U;7N4LLDG[2;"
A$ = A$ + "WNil2[c8_RWm\hhkDf_37_Z<I:7_B_#H_3f7o<]9>jm7In>Xl>TGfAW_3m9M"
A$ = A$ + "G_k>ce[gUn^=<<<<<<<<<<<<<^K8\a?`c:=cb^jJnL=\Cj\KJMg#\^aXNjIh"
A$ = A$ + "GONfYgTjNEmIUoj9diZe_5W_a:N2_6HkXWEbdg?_nkC>K:7=MFY_khgQHo0F"
A$ = A$ + "GHEWW^ZcXC^NZJ_3Zb3EnLYlnnGMfgNeW7XMih[l5#MUAZb[c`GbjK7bkoUX"
A$ = A$ + ">0[5GWMiIYK=LjB?FbLaEkeSLidTc6E>^kl[FQTm]FI9NWZl0d5V3P_Af9Al"
A$ = A$ + "nZjC_JOZD]?gIAUWajEf9[fK6CigImX2ilBTO1O]K]CDU9CihMlahgAnV;SE"
A$ = A$ + "nb9\?_EaIeI^I:?<haZj9XO\Pe2EM6_iWYB_GejE]37_J_C[bcZm\JnLKRel"
A$ = A$ + "MWnBG9EaC^n6eC[>G:ZbTYLL5?U;cDl2\g;EY]J?OEEf7#]ggimOEDg7eCLk"
A$ = A$ + "Q#7hjj#DW]#4NU^Yf_G_Rm]bSRS[:;DkUS:>nAUEaedmi9;G57?kKjVNf7Zj"
A$ = A$ + "GMgbnYnh;EH31WQ5UN`2loKIiEMNPfQS[jK6nEc8^hm]3;lIiZJo<LFY:oU?"
A$ = A$ + "SUk>6YMhhLoRLO``gI]37Ge_jEaaEn2?57GMfQZ>[58\AiaZmdhMRS[b;Q0K"
A$ = A$ + "0\RS3KgY\1`:>ndn?`cEmY6omTaROeLLVORaZYhhEkMN57_C?IYSSc]1En0B"
A$ = A$ + "4nZ_UG=?Kl>_CLl^iB^S]3GYG\nDaaiWW;;In6:[IO>jEcaib4VGD=g]\4SW"
A$ = A$ + "6SG^RS[BWS`aEn^FNlEih9;XOSXo]>oSnMcfQMLl8?Z>;Vilc4>>lcUMj6?f"
A$ = A$ + "MUN2N77FEO;kd?BGJ];7WWC6dgEf34O__JlhIQ??#\L6>NnoG=6KhgGkh5_:"
A$ = A$ + "NnAhhak1k0YTX_NEomANLGOIjD>>7F>_U]IHgiZL57G5f^bc>oLTJL9ZakFi"
A$ = A$ + "[iDSg1fmWU>>^Jl7ioO^lPe3l=9`;P]9Z>kKgMK7RjUlhZEf78:7j>_k<GL:"
A$ = A$ + "DjIGLTe[liLY;>3Y:]Z2KGiYb7O3K[D=fKFDnIOXCG17?J3a??ooc_GeLLAO"
A$ = A$ + "h0EgK7_2o]o^LLFRhHGOEFn<9n8ihia7R_i_b?g_[`YOgH\igKJiFeha[hhk"
A$ = A$ + ">F5N\dlHCbY=WN`F\Ze0BmMnYSEl>aak:kDQE=FQ717?g_GfgSX:O?ZXnNdD"
A$ = A$ + ">^J]POULlZmX1>_fE2boCF?54nW]OQKjhl`gjE[9VjNQAE>WoFfAf[REU_Z`"
A$ = A$ + "^kjg_[D=V;UMREn83elI^B>nTkbXh_17_Z]IEKV#bmMXbO:OAiA6SjEP9kc:"
A$ = A$ + "l=Y9k=8dNXCFISlcba_Re__BjVC1Ko<TfLO9Mnh;Ej];7OBm4F?S>>>Zg[fo"
A$ = A$ + "RX<HBjUk[iIcaG]7ebcE<koLD2VGa:>N<FdX\MWa]`BEiUJM5W>>`EbZi<GE"
A$ = A$ + "fY6kmSTS[fcGZ`Qh^:\EmC72h\X_S^d;K7dGY?\5[_56?1f3=8Obc9>7fhoc"
A$ = A$ + "[c9\13jc:Sll?_J>>fgdHmGc]??Bj`YgZa8Q_AU;o`_1kWRmW6>;1hIIKDT]"
A$ = A$ + "c:6o82KN_OPeN;WN8_6Si?G?5?Ci[T#HbaOfFDX^4i[LMHNNlH_IT7C:kkFN"
A$ = A$ + "UgaK<WVAVS4i5UOJ28k_[Z2cSRSWeaLJ]cnMSk?M2oVOOEIWb_8YNV:>#o#Z"
A$ = A$ + "Wcm_T[[jl[ALknZ`ROWC75W];m^CgEW`gCQjP:mB5FEiF5>R=FVbg2M^jN3l"
A$ = A$ + "8YcDn]:?Sb?nNQ1k==EI2778?YN>77LmedjDElcn;\9eQLj]khBofaAhLGEj"
A$ = A$ + "mXC;33333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "33333333333333333333333333333333So9nSoh?ngoeOmGBlWoiONh`6o=o"
A$ = A$ + "kZg7QogomOoolgomOogoo#lgakdUnac[RcZl:W6AJgYgZd8S^bU>mahiPX>\"
A$ = A$ + "C2N0h0C2;RgX^=;P_X2O4oao_:>1?[jmIYROgU6X]TB_EYAF2mZ:^[d7Sk37"
A$ = A$ + "?G??9\inmhWo[oj_nO5_ol?ocSJk4_;7>ln\4?;#>Ofa1QnmKof_9eKEJTU#"
A$ = A$ + "ghgKUnHljhh:NC`?nYOjWn?me]:\Al5QU[c3N07f8<o`?l3oGQm7oaODn\Xo"
A$ = A$ + "NekcBl\0il9oNAlYNVB_Q>Raf`BT_Dmo3Xd7SG;7_RgXj7V3;N67_k`a[NFe"
A$ = A$ + "k[deELl:mVK73>>j7V;32Aef82?d3caOOhhChHMLUYLLl]P8>`gi_B>>hP1#"
A$ = A$ + "J4YGl>lg:H>^BGEi1XcAl2TeWllN[#Nnf6G;7_R;YN>o\XNYR[D5_:>8\G1h"
A$ = A$ + "NZd_J\3:>^Jlh`V:inJkhhLkf#0GFaak63n4Q]EUae`aI>DVW]J^GHLkkbaS"
A$ = A$ + "W[hP`V:ak6PSc:Aaa[\[2\=3BSZaS[6cM8ahDDLL>nIT]MI5`gG2Mh^cSNGi"
A$ = A$ + "hX>J277fn0l[M6[B4o`nh:YbfQEBehOkhiEf><caig5SCYSS7?7]ODUolHfE"
A$ = A$ + "`Ll[USG=F5egZEQ=Z?Z\?A77?dU`fMAhDl#U]3Ak:FjVSGT6ZaLPhZSScBNN"
A$ = A$ + "U\>SnRaHQhaS?ALoh?>>^JNL1_EaaEciDmMmESE9d3\FXZg7S]MEj7RRSSh?"
A$ = A$ + "#`kDm;GIcCeH_#I2h_LLafEi8LL?NlW;7OGkZL6K7Zh1M__BGk\[B`7SncIM"
A$ = A$ + "De>:KOl\T7WRZm2KG5NnWXON<>65#K8g?nmTS_cL>EmM^ck[deELLehBRhW7"
A$ = A$ + "k3hJ\TkW>J_DaaGa?mhaOnLLH;35_I7>>cED[U?\cXZodMn>PBGk\MHloES7"
A$ = A$ + "2SmMEjbbZm[BgH>P=6kPihG;7G9Mf7_RSGI?`\<eVTQ4mUN6>NUM?P4jZZ]9"
A$ = A$ + "6g#WL6>^a[WSSnlfUSSeY\Z^?o]n:K?OTd?457OeNK4]g>27_Coa_kaLlj#D"
A$ = A$ + "gW]e#6ieH4lfLHcm3SmW7NFfNPhk]hknH^Dlh=a_G5FHKW^d?gfAUOca?B3E"
A$ = A$ + "N<Wn1bQWAlk`6oEo^ih_NTGo65`H5DQ5li:KUU]A03fN3ZmbdABo>kSc]McY"
A$ = A$ + "1hQ\N`]OZVKHELK>n[7HmGZ`Z`2^GekPOObLY#OoI4?k\Yo>jBGIA5FE6Vc3"
A$ = A$ + "666666666666666_>L4O=2NFNoic[1GgNfo:eo\N<MM0kd=Pli33n:U:oeB5"
A$ = A$ + "Zle;WYl_c7\D5VZl]B?jZCIO6CEieM3kj[AjF[iLiFUDMNF>:bjcdbiEk=P#"
A$ = A$ + "#mkAGKmEnQU:O=cZboZeC>G^bQAUGj2OElf]6\gimI`>nJTE[5M8`f]E2RON"
A$ = A$ + "=K>2bkY#\>jC>;0ChhCFkm^f[[B3dO`^njUE[e_JOXQh<[ChICZC[>KCI9_f"
A$ = A$ + "bg1Nm:>NeNgP;?DkCJD>cbZccB6C7GCFgaN?Lbj0R_9ceIic5Yb?`DUOoUOi"
A$ = A$ + "Gn7a_j<PXl3;HmniWg]gIbj\j\IXRC\?ab_Kenj<dO^n3?KEieMM=H?;7Gm\"
A$ = A$ + "^j8eJdGe7hZaeT;cimgb4D]g\DlYZl;fO1ieNlZme<ib?^_HFoDkaHlK:>n>"
A$ = A$ + "k_NenDnMHO6Lfj3\7RhmnTjm17DMNFDLlES[9gFXJO[dQ:n5fKDCihLjNeWG"
A$ = A$ + "TLiGVSGaiDWcD<WB>M^2>>:_^[WIdMZ?Rl0;h\Xckc8F0GMbl2cLlZnVceSi"
A$ = A$ + "c;f>UaEiMTNZcTcSVS[6352;77AJcciFaKEaK777kY<NOIbQ5ekgANmAihLo"
A$ = A$ + "8lkUgg#ERJ<fCm54ii^W[_Ra3SnC^RlnSRS[fk^Zi^X4EO<li\[J<f#haide"
A$ = A$ + "?n4>NF^CLjcbaIn5o^8N[TLKQc`aceGHlAH<W<Z\[ecVS[fk^k`ai`bSa^j<"
A$ = A$ + "8YT>>>;EWKEnm^[mWO4>N0fFD#ZhhP_Uko2Q=_V5i_oRbFPlI48Gn_R_DIOV"
A$ = A$ + "GEoh1_2cQQiH8?cBeLnidBMFnZlOMWUSW][2c?NGihAiGfoR4iKnmaHdD_?g"
A$ = A$ + "o5[;P_PbBf>70id<\W1NNloE26O0g?c[NlhkFncmMPig`?S;oEc1m8ci\b7>"
A$ = A$ + "Vak>7W[OQoTOjk_b^:XlUihX_9P<gS]I8JoY>SHLJnZihZnak:oj6[#F7ESY"
A$ = A$ + "QU[TSW][bW677O_Mjk?]Mn:kZ<aVQZno_KLLeh[>;7GaAE[OcEba_Re\nA2n"
A$ = A$ + "kHhl[c?CEO4ia`V6I1fa[CVZKZee9cOj\IHei4K7>>c;DS=C=oR0[:CcSAGm"
A$ = A$ + "LFZn>`4O7YZ]9B7EmGegFj\[BeLN^;HeN[8o=YEQ5eiMbIhhIN7B[M]IhD>^"
A$ = A$ + "JL\IYkk8C;WVbaEnH[ZgGaakJS=I_el^caklI8in:aL>[2Kf?cg9WIn9Ef<l"
A$ = A$ + "A`aAHZl3cic>?_WEj:CccEK:7_JNlEkO;n_S`Z\?NUo[9Gf<QSo^<^5l==0f"
A$ = A$ + "o70m?_>1lJhWi_lLob[maAih`FEifC<oJWff:olRJ^CLn=WGkn>2GVZl9<[l"
A$ = A$ + "e<Xl5fA9G>RnMbnT54Fl<TV8?GUGSbaLn3f6Pe94V9c[o^Q>O62[kAia4OMR"
A$ = A$ + "jg?3778[WWeG<`f0Caa[b_IOYbI:C[d1nMZ\GGenSRok8\ila:oGC^m<2;g6"
A$ = A$ + "_SWLG1g>][><Zkk2KeLo>kJRUCccVO[lc:Z`UCgMnnaZbdYnjUZ`YN>o<dG#"
A$ = A$ + "GN=W7AnKU>MUe[6666666666666666666666666666666666666666666666"
A$ = A$ + "66666OGXk^CjAMg^\cMVd^g_B[2k^?WCo^bThgike:LOoLT`bjDGmgWhMDeE"
A$ = A$ + "bgj4hGa_bdLUONJjm[4l72ih^cgIXR_Zkd:4_:o:5WOjl_4Lig>QUUMZk>CI"
A$ = A$ + "hg67oAD6<aGVEaaDB^o_:1n_157GioLZNNfOK\CKFL>Qg9\\T?KfM]EPPbUM"
A$ = A$ + ";3odihAi1kG`2IU_Eh<LlX_;UNX^WBDQ5l>Uo=62l1BEgc7\PkR1>mEn?4V["
A$ = A$ + "5QQO?LoQ\CHI9kS9hg9NVb?eZJGgE6NGhU?J>^Z>_bOSL5Ll>o7IEM1o\8\:"
A$ = A$ + "On77OCmmXhi<WTmA91DUELN4nGWYQEMOddaak:3W4FD6n9jc8>Z_e7Ucii=Y"
A$ = A$ + "PJL>kDo<aOZFaail6joUC75gCE>Tm[Q7QSGE^^CH?27W;Gj:3o4k;o<LlES7"
A$ = A$ + "4agEbaEOW5L2EOnI1n7k\XlU\hiZkBCEi0;g=>n>UQVS[k7_b^D1PoB<GfMV"
A$ = A$ + "j7F#o`EL5EmXbOR39oKlkSadcne#F`hjHoDhMQScB^<dLL]_9\b?nEiok^Zj"
A$ = A$ + "7d7<B3NlgEO?^SSWSSZgWWGBGI5GfX2k[TScUQVS_oHERbg[\OLegIamc1on"
A$ = A$ + "lcRdFaYboMNl=<oM7>>j7?dGL?KDI[Tk`HE#IhIm;ZOSLlWaL>ShTi?ZkL[:"
A$ = A$ + "KeDegM5gSk[S55_5[edT`nXihEUQ7egFo9caaH^cmCa#a;N4fEA=_AFPMADg"
A$ = A$ + ";<Zl^b^e7US[^cTZ2k[PSKK7NO6?nIhh8OD5f:KRcU1<?#5^k\MEnf]MHDoZ"
A$ = A$ + "FOo>>>OG2X#gJOS_7LVj7eJkXFGAX?:9d=5WS;3H>^:=ZFkX9Q]b6<il6G7Q"
A$ = A$ + "ke1EnaLlIkGU>>n^XR3Y:cWFoXFWSMjS<oKZbT^bPEi7\_0ZRkZ`F9H>>[V?"
A$ = A$ + "4J[H>njmMHN\8?3>NfN]C[ODOkFaaacEbAihMiYLNYJL6EQ]BbSM^jNh:K?`"
A$ = A$ + "Mf?4ORLLnnN:3NLfGenE1f^2UeI`g3=aLmcQ=nM\o`bgUCHO<U37h1ZeR9\A"
A$ = A$ + "6OGLU7;2[Ohmj:3`M55#eM5F0N^iZ`Z^[Xcj2R?<F#>_3PjhEUQOZLlLINgL"
A$ = A$ + "6_bmM8#VGY#fN]LHAm:o\:NEecEY;bW:mKEklZlTbfcC3KEi3b3QnFM?LU]7"
A$ = A$ + "hdb`7=GkE1eMUD6?Rd\;mhdDmk[diLl\kckd_9i[ZiKOT`>]<R_gahfDC;3O"
A$ = A$ + "4ee66666666666666666_WXc?2YfK\75Mnb6\N7lcRgS3Kf7TXdmEjA\^7h<"
A$ = A$ + "<eM^CW6fYj0bOihQmM=MU?O3nkW75Vj;J>;jF3oZmUElN:OOBU^_BO3NBW?l"
A$ = A$ + "9kWAV6f9j#gN;9WOF]7DNDn^\_I>>>cHGajOeaaAohlcDk;?\^9H=ggAOGaQ"
A$ = A$ + "bm1?U_]B7V\WPVVVa_keYilLlli#>j[jZf[:<7?W>PcVUEkM`:>NUnZlo:Zc"
A$ = A$ + "NOl^lN1C5F\OeFY3:m?N>o\HM:I>Nl<eIehCm<kl\hhimHgE^O\Zf3Pim9Rj"
A$ = A$ + "g_:>n>W74enAOg`2M#]WaEieX=dT`Rm#eMPkl^caaniCMVS_:O7D>MDkSfG5"
A$ = A$ + "7_j<e\CHgUSGUGELllN7chHLL<NBeLi_ZcZ<>GaH?N>M?Po=aaESE9__Q_cl"
A$ = A$ + "Zk<7W[_DLe[`g1U5HG]9ekG=77kEkln8o^`aI1c?bLl[USG]W;?kIEV[kNEL"
A$ = A$ + "L4FF_EQUUW977c7fLlccaIkM`Le[bg1UC7Uo8nIg?NXc`7AX\[bMH\:`?<n9"
A$ = A$ + "OF6N6LLUMEfUS_cL>cm;=YNoA?NlM2k[H>Wh<eMgiE_3Ll>kZ0KWGMnDDmoo"
A$ = A$ + "^HGUkDohMf>lCd_]m\ih[\9nEhkPbQafEaf>l^aaic;^2ijQ[RS3YbO71A]g"
A$ = A$ + ">hg_ROZFCcZ`b?We1EnZboOK>nmRS_;^3LlEcU8OfeGI7_:k<bj0_72DiSZd"
A$ = A$ + "dLl_K>>\kCUXh2Mg7Jii0Si7D5f\MZWX3EkQAf7=I>nS1\O42UiG=7WmM#\O"
A$ = A$ + "[Yjgagfia15j7\SVb78e]NPPk0`nWTll8F5FXOCdQLLUoV16O4:3b_O0<onE"
A$ = A$ + "i;SN`fbkZihI>C5OZkg[VS;\]NelNELQ`V4Ea7[?C3k4M8\kGUon9[WLjYJC"
A$ = A$ + "H>nnhIi?IDfJLb_GIWb0MnCX>K\1^SJ>bk6fYj#locaSJOb>9oIK7JHHHHHH"
A$ = A$ + "HHHHHHHHHHl8AWo3jAi;?jB?eI[[:lEQ1a1kCR>JnmXnAXLHDoV:_bj<[O?;"
A$ = A$ + "o\dW4fagOLEH7oTCgmPMfOoT5D7b[;ndl;c?>RO4ReAELXJCe]7I0oTOV:n?"
A$ = A$ + "SOFjKSSGEGl8ihIoTCWnQeTQihH?2>I_OXTLoL7e?2ajHg_e]g<idjIhWUnd"
A$ = A$ + "ihZmiD4V[LMmEkWJ^^5W;3EO#ijaH=]SekSUhmimkGeNmFa1Qo;Q3KUO4ZJ_"
A$ = A$ + "56jHlk:A]gZhbQW]OFjKQScW5PlnTnAaa[>[;Z_=ce_ZnVAJUU:>>WO?BH[n"
A$ = A$ + "n#X3EmS?QSck16caO\LL^<IUO4R7Kk^LL^^3mYajUR3QakTU797W3;bSak0m"
A$ = A$ + "#U_WbaOFW7`_5>>GOQknG^<IR<iL:X6[2fKNi`2k801W]PZn9W>FU7177iWl"
A$ = A$ + "ihXS7FaaO6nIYLIlSbFJg9>>;im`OEohEfj2]G`NO]RScBnl7`LLEOcESgEM"
A$ = A$ + "Weo\hhifGPoM4>NFNDnIY_I>>nNOenZ6XJ?CG]GWkhhAiON_CceW<77WCR9b"
A$ = A$ + "cTS[6O>oMUMih?SnaEjdW67G=F5LfGhlm4IBohlHEPObA=oZZa]WUZf#?C>^"
A$ = A$ + "JlCEjnDkZlXlcBicNdWhI<JjL>EmQ?AV>NLEm_ZO?Ek?FO[\Sg[VS[2cMb^:"
A$ = A$ + "OZnI^cHk#doBgicAe_`D>^b^g\Pi3cekZ_io\ihilYbgELg\[bWjI<j<f>4h"
A$ = A$ + "\S7_RS?iK5:m5Y5;?K>>KWcc`aAiaSHlhOjh:hhlIAGQS`aEfAC=G>57G=FQ"
A$ = A$ + ":kH[Vg=jkT3K5_GaOc]c#i47V757OEn3BlKOKfEi8LlMaD>NeJV`2c5ESA?4"
A$ = A$ + "5GD98ofaMHMBaOci9Ek>ca=7WU:>Nel#ijm9LLfWnLDo84?oHelUO6LLeHTH"
A$ = A$ + "M8o^ORf>\bo15oOH?Y[fW2=e?i4oKf_lPi_2M>oLH7VLhbi1Dg5oFUonQmY9"
A$ = A$ + "il;J7bcU>caca;WW`OSe[\b>M7e?;aieLNJUOF2cUmCefQ0\=ZDg]2GmLDVj"
A$ = A$ + "WLZVoZji<_CU>Zl;3Nm0>ZO4RcCX]R:oT1G>`fdZjg?SOFjCo>ZXbo1YNfEf"
A$ = A$ + "^R]GedW=mm[b3MnkW^l9h\ZiB[Rgh_c?SokLnY[\QCWZO_;?]b77]BW<<<<<"
A$ = A$ + "<<<<<<<<<<<<nn`cb?2=9Mjnm\oDIElaY=NNn\;ai]Zh2aGW^Y>gZ6g7\j^4"
A$ = A$ + "oIV>M2O6X[R?f7i\jL7Q`eU^[RW#n4g[7O:HeNfA]F7?ZdIU4LB\n4MkG:\6"
A$ = A$ + "=[^Ce21aGGJZf7T\TmmA6gK>>kgJD[UlS:MDLEn\6PeIW?OLI1g?dZmE=cWE"
A$ = A$ + "kG:`]3PmN57GlMI?BGeMORamRSWgKYEkGR7Ej`RRKQmO1OVmIN[jM[fSSEYM"
A$ = A$ + "6CS;hS]<^oLL\WdPOI3Q??g]:X67oTdAacDLlhMhmmLFZfcYh\oZ^;0[hhMO"
A$ = A$ + "CXZmR7cbmWSS_Ocfb0LlERbgX>9MHA=F5EOn1W:7>L>?Ea9Vk:_gmDY=6CO4"
A$ = A$ + "?lhQDSEAeNi^Goo=bacBUo3NU_32n1dLooCBW>1We<dgJFhaWW?3JEf3Q?_e"
A$ = A$ + "E2nVd>nnX\l^`3nFihhKjZmJ9g?HenFNWdYB`If:OV0b2KgS\OR3];Eb4K7R"
A$ = A$ + "f27eg7Uggj6g3>>kgJhaG>I\:hMkj7GU>\`m37Q5WU7>Llc`hlc]9Eld:>>K"
A$ = A$ + "cWEfE1fl1j2\7Zihg?>^bN7kbaW>NlSHG5U]ZEf27We;`g`I4Se3<fLEJ_[M"
A$ = A$ + "E2NO^\:on_3LQ_=>NfN7ij=hK91WAQlhVg9MDl<UMEVd>Ca13MPm=A#?DYmA"
A$ = A$ + "\[BTODWEYg5n`g47Oeigl\S7GU>:NfAihZiBZ6go:>>d]MlKjVCO_ihIA=V3"
A$ = A$ + "0n\=FQMB75?CaaI9d5N\:H\dLhRaCTU#_DaIFfUSc_[ak97oAT>\Xhh:Oa\b"
A$ = A$ + "F;HnY[\iGejLV5caoLihC7gbEU>\D=G?EhZNNd_m4o0DWLVm5PWci[7\O4Bi"
A$ = A$ + "GM^2>nTdQm5>8]klI#8L:o34NO<^ZlLRIo04J7Z6_EUNXlmAAHcni8ca_?0k"
A$ = A$ + "aSEcMlIT>lcSWYli#Z`EmlXoLVG3TWg#gLX[d3NngH>WlkJlJaAm[>?RdIbc"
A$ = A$ + "ZlI#E?78hjMn1XMe]YniXWMmYQQQQQQQQQQQQQQQQQQQQA?faOCM50k=GeiS"
A$ = A$ + "[:<hiLh[R[EQ;WFE_GfO5emKZb_Mb[1`m4>O^_WT>C;[De1EYeW6Vj_Y^:<i"
A$ = A$ + "LWaQAMVVAmg:A5^LJE]GFbl2><LkaZb]9ie^kE;L6ojBWYUE[b_LnjC2Ml4N"
A$ = A$ + "oaN5Xk<4SeMDE_aki:dol:A5^\ooZkm#HHM>_oGjlg079_b2loFEY3olZb:E"
A$ = A$ + "HEYe[R7n\hhEnKZ757GiG9DWU=eNl6l\ZnccW7CV;Smd2c5HOf22CeM5J5g3"
A$ = A$ + "kmV9iE>^SmDSJo4cgSh8MhWGEFE]g9Sj4nIGMoJ_J<aOCMUY7G?U5`=DLfZk"
A$ = A$ + "JFDW`2_7YD_[j<1UooWUSG5gil:7g:^HenSGaa3YZ\Jbn3>nKnN]kCRSGi_Y"
A$ = A$ + "hl;?oXYn:;n\jX>OmZna`_Yd]ELLhG\D_[Z?#>>Dl`9LLeh5DiEeHmSdTgk`"
A$ = A$ + "k`a[:[VbaimRik>hlWbOCaLlEW]6D7`YUZNVoKEM1dU^j2FbkYE>n`kZJCW5"
A$ = A$ + "LNZ_2>n>iEHWSlnhM7>NEIURSG]7hoDhhZbRZ_G[j7_cVMALYlERLIlTjR#D"
A$ = A$ + "ckk\LlEj3hQ7QScjDENE=WFTOcnnPYS77_kdlKP?I>^ZOEN>XMigZkegZcOP"
A$ = A$ + "JLVI1cGJRmB^J>>VOZ:L7QScL_Zl:hHEfGYbfQMLLFZhh:k:QnWnD6?^ZMm:"
A$ = A$ + "o=EP9SE9:kinaEc_RWc[RS[B_[PSWU8<ll4SgmXLLEkIEN5j?>[5EieYLl^b"
A$ = A$ + ":ca[mgD\?enXS7W[SEf9<Z;HM#MO#LF>>Kk1UobZR_^;7_;_RnE`m:T:LZlH"
A$ = A$ + "57_[\jKL>WChZXn<kG?aH^ahhD8K?0lNC4dNReQZj]SbaEa9;H\J7QS?ADf#"
A$ = A$ + "BEFYdg:>NGIUihJYbnQ1fIlhC6gHEi^bWZl<hh8NfUS[dGUXjcF=obMhhMUE"
A$ = A$ + "OSLLEIQbOCEUWIOdP2X]QJ<fZeb6O78;ESUl<LLejoX6?\R7Vc3E[andlZJ\"
A$ = A$ + "Q:KJ>USgEFYRgEU[OJLLTgDUUW=?cUU8NI^F4F57OEo=ZlB77O7K8OF>NGNM"
A$ = A$ + "bgCP?UA5W:>ndeeE9OSLLllc^_EZhh\NPnCEYOGMQBWkhhC]I^:\IMEamDOS"
A$ = A$ + "X:_ZjO5Bn^cH7>NGIU:]b?kCSSWm5lX\\cOCMVd:jg4fj=RCfgHQ_77?7kGR"
A$ = A$ + "lLG1GXJ]:Di5`[#JWOGho\Da7k?\`n1P776dEHSKnICb[hihI:M2e;An8W>Z"
A$ = A$ + "hLBIEfW`TSW?ae02PWWHl<dNVOnIA^N8gfAmLnI:mR[;jdI>nbL5>nD?_J>f"
A$ = A$ + "Xmb:m_;_ZNNVO3mBU>ZgMEIU:]b?kCSScfm;Nf:o=eEUF8N[\1Y:mkd[Mn]^"
A$ = A$ + "dIJH1Fio_F5g#7ShQoNAf^]Ee;EagZb3ff0GMm]QQQQQQQQQQQQQQQQQQQaM"
A$ = A$ + "5HObV?[a\_TYjl\Yl]BEQ]:]ici<l1>[R_Zhl::?fEWboFW_k2UGCl=IMQAi"
A$ = A$ + "[OVh[]jZokZKkn]>o4fM0Mk]f\^f9Io>CgnW=cCFiKXbUQCBg[0WAWH>CUDM"
A$ = A$ + "^eDiYMlg?CmeFk`1^2o4f[6Zc;2;HmeF9Xn_[N1[Yf:N0:WFUfHo#ME[ilId"
A$ = A$ + "Y\Nd5?X<X;<8^Vj3`VZkE[KIGLSeolXn9\G=7G]7Bil<dEFhWQlLgi`4kMRP"
A$ = A$ + "W<ag#Qm02;icPdE\GaZj[J7MZK?>VmO1Ho^T3CU_9CaMDgAd:OSAU_f:NoLN"
A$ = A$ + "^k\PRcD]jn=MeI4i:[G^J>>GoQl2;lcZfGZio6QYRSXdWZkDIeNBj\h:d9Ei"
A$ = A$ + "ZJ_]=agT=i<dQWaaAechb:EJ`aMX?O:LLd?SbGK`b4>>joBEVYR_ZjJEHAI8"
A$ = A$ + "O^oSa<]boME=Na[#WjhhH?jbmkFiKbZ>?FZWaY9jO_J_6Ga1^Bo4fMPS[6?>"
A$ = A$ + "VK5__;II277co?7gG177eI:k5<I<\Ql<ihXl<?Nh\`Sg5nV<U?3R7[22[BoQ"
A$ = A$ + "m?hm3L77Wo6kIlCHg1>NP>O7LN?FZnM^\Am=HnMANW5lLn\9XhCihGe^=Kg\"
A$ = A$ + ":Xl7_WAWjhhIAegBD6YnNWZL?;AN<On6Vh[]hiMZh^lOce[iWo>`akZCbLXE"
A$ = A$ + "2:[cRZm1>S<\Ti8Lo>EB^M8WWDS1FQELlYjdD>NXG:O51?6_ELLHWTliIHR_"
A$ = A$ + "fZ[?>H?4FOo4hh1Zj7H577U;ZaPXhhMO[7mIRccEgg#hd5jidaZ\Koh[dYYf"
A$ = A$ + "EAaMEfSZj<:cSE9R[\ODNU_fR[giho:mCHgUaSSc09nN6[_:O7E8Zn4i`5e7"
A$ = A$ + "ZjT:>^Jn?Mm_VCgMihZbS[#WDLLnK:lkSiF`?CaaEci4_O^^DI3nhIIK7Zl_"
A$ = A$ + "FEYIelBNg\[BX[Ao0:mU5VWY\W[B`LTDa7[?XOcZd^b^:X?c^cKfdaZ\[>ea"
A$ = A$ + "aalgj6;3TMhh:mDUWbf^MJo1Wa?QM7ihZj_ELl^hC9MagA\QA5^ZaSOUf>4]"
A$ = A$ + "5WjKb>37G=^OF?Vn=_?9>NX_ZeAK:?S[kRnDgImNDndFEJWU>>>O^OEXCo?R"
A$ = A$ + ">Q_Qdmk\4jZbFhk`aEnHk:k^G]W3`gn>[O2;;MkCVW1PMfjTMj;]JN9\XlIW"
A$ = A$ + "\PadLD>nEdVo8jdAhhPgaQK7>>ggTBHoVBegKDmol^ba34j#5?7k7TYLLFjF"
A$ = A$ + "37EI9ThiIOWCW<IL;G1?OZ>EIgULlXb3CfC#MLl^aiWmeFMSIZRScf_WCOU^"
A$ = A$ + "Wc3ii0lZ#N?Ta[QOV3]JMQIoD5RSX]RjialKSnObc5DigNhh=S[VS7h<jDTg"
A$ = A$ + "HOlE6H>biO3c7Um=I:o_E>mc?3SmMBM9hK:O7FN<fImH7o46GNL7hhXNU;;h"
A$ = A$ + "fm1jVcFEH#n[jiI^J6AiGfgiX2cSPSO5j4g6D5?ZlPJ^blc0OFm\>MG]_33l"
A$ = A$ + "XlCHZjjk0RbPLk#FgHK`YR3><PCDmlLo?EY[jmGY7W5WEWf5AlYl1FkjG\#l"
A$ = A$ + "TemXN=GN_:?LTlFWO2[:]=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
A$ = A$ + "<<<<<<<<<<<<<0PoBXk>_jETNEnLfZO?O_Q`?Obm#eddW3?l=G[^W\Z`>g]E"
A$ = A$ + "EQ]CWQn^KnoC1C_c[NfYgTk>;U?`AU6[li9ClY[EQ_c7e`gCFEHbMK5bcEQ5"
A$ = A$ + "o^BGZlASLJlXhH_B\cMNec>mVLgIYhh:Om1lU2[R?nLoF9Mg5DZ`^Z<LR?I3"
A$ = A$ + "]O[2;b3knKIiC\oLUo#R[KEn<]WAj=i^cJbM9B8`OW`a7jO7nCQ<7ObM1Ub7"
A$ = A$ + "o`nFMl\>O7#emR6WnQNFe?1l3<:YcG>aaaEEGOWih<G0U?GAoikTNZnXce5`"
A$ = A$ + "OT`QAEG2n;GOfi3#Dl>>Mfa?FeaMVLgFEU?P4aCEOeMnc_\PbT7U_lh>`aAO"
A$ = A$ + "JZklZLnVWOU2Zab_CjU3;R?V3DeG7W6MLllm#5W7cBeM15;hk#`GNcnaZcba"
A$ = A$ + "EiIl>8?>e_CFaaoTj;OWklZ^jOUXV3c>Y7O7NDMgI]jn\YRS[^7ZjJ?b_OeM"
A$ = A$ + "15Bc\_Rl8LlZlQjiX<1aSjkUO[Ll0C_c[bSE1mSGI;:`9IoOo>Ygdk>[ELl8"
A$ = A$ + "=ES[Q3cZb5>N1_Yb^:X=NUO\ZSScaCn^ISeSLo6PK?US[J7o9ba1WE9[\MHW"
A$ = A$ + "ol[[o[9Y7GfcLLh;9GeO;Zgj\5YR3>m^P:ng>NnEIk`:>^JliZkM557WULJL"
A$ = A$ + "WhWG5DOg?TMJCT5<FkZb[^dCiKh?bLCcQS[gikQ:dG_Z=6b;\NV73GlM^ZaR"
A$ = A$ + "]J>LC7[26W?WoHYZ\ZB#Lcndc?1X^WTZ^c[fUSG=Nl9YWZ>ZZODUm3Ee_EgY"
A$ = A$ + "2I0mLWk2ZPKSl3l=aLKGNn\ChhEf0M27_JLE\l>hSI?;Df>Xj>_:ccajRcg]"
A$ = A$ + "YIPbelHEVVNEf7;;h>MP3;W6XN[J\WIkZDaiD2Vg;o<`ic2\GdIihZaZ`]YP"
A$ = A$ + "odW3c4>NggMoDhhMgiEZln^S7OJj5QMUDIWQZjaMVOe>g5DI1S;YjK9Em?NF"
A$ = A$ + ">>KGeMihgEniSPS[FcG\VNZi>R`_2kVNLhj^k\Z6G?Z_[hhLhj:G`gFFMWHQ"
A$ = A$ + "n#igWG7EVCZFCGEk\:>N^?1dg37V_E>n>giEGam#gddKWk>[:KD72JONF>>j"
A$ = A$ + "cGeoLWmJ21SYI7>NU>Faac]oEmKl=ca3<m>_jZ^[5WTN\d]O;jh_PK^jNOU7"
A$ = A$ + "gb>g5D:kG29Kc_:>nTm;En>[BaOc?C=ol_M>NPln^SGCm7QmTFUN8]#meZk>"
A$ = A$ + ";nil_SmbDnnMB5>T^Eg5D`>#Zg;WObci68?WcLlW_S\Z^CYhigT]Q3NO<g6E"
A$ = A$ + "lEE>m=aa1OJbMNec<mZ\YEec[V3LFokVW<W?gi^P:\WBem1Een><[;X=BU^Q"
A$ = A$ + "h1j07F^MU:nZ:oN6l[k6G?S7]]BkB?fNT[^k\Z\SIGLF5^Z`fmLlKC;oDiSY"
A$ = A$ + "j67fh_c?Sok^bY7Im[QQQQQQQQQQQQQaW>Dn\S7Aj<9=HOE2F7#>LEn;ULH?"
A$ = A$ + "R?EYCOEj]:>idMBLgi3DZRG>o^CN5aE^LV3GElmXh7?BXf_4?RdQUEjAW>E]"
A$ = A$ + "fRibo^efLEnLRoMQcC8]idE5olJYfi3Dbn6Y^lk4o1CGhh`f5^71ohIbaaNG"
A$ = A$ + "kZGk7FbYA`KF]GFbL[^mQ5\;m:>>2oTbT\0KPciYZmTUZ\D]O1ZFCO\fTEn7"
A$ = A$ + "8N?[d5V9]kkl7AMiYg=>nE^7EZhhieICeg7GWW?_6lnm;ooajlYfoRZlZ:O>"
A$ = A$ + "ao^`kmm#`J]GU?[hhEkYT#`N;CaibkeV:m5_o_l;oR\m7Gg4?;2KUo6;_O>O"
A$ = A$ + "FLd?A>^ZO=XGC>G4ZmQEGLbm9a_;_?ZDjA8ZljIihAJcnVXEjBFOciAEjb_;"
A$ = A$ + "fg;Ejhkhn0H7>>fO\[`STS[fciLMAeiI^:>ilJnMaLbFY78\<WiXLlLH#JE]"
A$ = A$ + "W8ii?Di?HVbaS`[jc7a3OfYnThhC?S<?C>NlMEEMaIhhCm_;:Q?cU7USWeO4"
A$ = A$ + "WELLeiE=;EkeNdO`:ohD8AilkdH`_Rnak\]TZM>;7USca57^ZnQ>37GegLUo"
A$ = A$ + "5TiA7US?agYdeW[:nEYKP9LlLnk>cW?;77Hen0EE_bbAihlgUI^1VSUZ_]YL"
A$ = A$ + "LnmH>>l_;CTSbaESgWo6QRS3K;Y2Wjk0\PfdClgCgE>mIhhC7[bS\OLeL<in"
A$ = A$ + "M?37O7okBFZh4WQS_RC2^;WWZl7<WQSS_ASc[U7?noMj`bE`aAOF:N_Z?_S`"
A$ = A$ + "aSaQbSiGa]ZlKbWQS_J<8`68\N<]oQS<WCP?E>NNMokf?o?baZ<A`I;KJLfi"
A$ = A$ + "S<D2l_;Ll[Ngc`aif=<O^K]Sb2VWlE`aagXodG3XGehaW>6hZj^[RS[J_QaW"
A$ = A$ + "bbIhhZij^:?E9G57oMl\3e=nSZk:7n<MEQ>>>4ffL8Mibn8>D[WWZoC5o0Oo"
A$ = A$ + "QO6caInGWoMQCC5Ok<LlLlEe^BU?ESW6f?QOoYfZ9;ElR?9>nA#UPm<bZm[2"
A$ = A$ + ">c^lkRnFb2J7^B#mI77_J=8ESK#5^7=7OR]F#JDI_c9_OFnThhGigWFEVFI_"
A$ = A$ + "Z\o5AeW5h?lcGaaaHOH>NEIPjiZlQJn_7USWK75_gTi0d]n0ZiR7BV3<QSo^"
A$ = A$ + "=^5hg=Dng3eMUbIJ;ei7D`HK`H4ieT80lM[8LIOVMfWX0kGWS7EJ2T7G5[WM"
A$ = A$ + "ng5T^i`5fPIUO<1k?\^d8Gf7?GiWG`jGZ:_RoFU6QnU?cnib`^goAa;NVXKN"
A$ = A$ + "TGINY:=0?3mOaoNl\Xn1lKUM\D?WO6S8<Zkd[Zb0ecEi3fO[X:;h`XBS8n2m"
A$ = A$ + "SSO><kh?HRW7UUZjPE_oSRGl<#Womh:_W>k\iH>LHoA0TeQZg];^WTVMjIWo"
A$ = A$ + "MIR^LVdPOfdlJGI5n=DnNTdi:i5666666666666666666666666666666666"
A$ = A$ + "6666666666666Ilo5D1C%%h1"
btemp$ = ""
For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
If InStr(1, B$, "%") Then
For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
If F$ <> "%" Then C$ = C$ + F$
Next: B$ = C$: End If: For j = 1 To Len(B$)
If Mid$(B$, j, 1) = "#" Then
Mid$(B$, j) = "@": End If: Next
For t% = Len(B$) To 1 Step -1
B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
Next: X$ = "": For t% = 1 To Len(B$) - 1
X$ = X$ + Chr$(B& And 255): B& = B& \ 256
Next: btemp$ = btemp$ + X$: Next
btemp$ = _Inflate$(btemp$, m.SIZE)
_MemPut m, m.OFFSET, btemp$: _MemFree m
temp& = _NewImage(_Width(v&) * ss, _Height(v&) * ss)
_Dest temp&
_PutImage (0, 0)-(_Width, _Height), v&
_Display
_Dest 0
BASIMAGE1& = _CopyImage(temp&): _FreeImage v&
_FreeImage temp&
End Function
Sub SaveAsBMP (filename As String)
'This SUB adapted from SAVEIMAGE SUB from the QB64 wiki
image& = _NewImage(_Width - (200 * ss), _Height, 32)
_PutImage (0, 0), _Display, image&
bytesperpixel& = _PixelSize(image&)
'IF bytesperpixel& = 0 THEN PRINT "Text modes unsupported!": END
If bytesperpixel& = 1 Then bpp& = 8 Else bpp& = 24
x& = _Width(image&)
y& = _Height(image&)
b$ = "BM????QB64????" + MKL$(40) + MKL$(x&) + MKL$(y&) + MKI$(1) + MKI$(bpp&) + MKL$(0) + "????" + String$(16, 0) 'partial BMP header info(???? to be filled later)
If bytesperpixel& = 1 Then
For c& = 0 To 255 ' read BGR color settings from JPG image + 1 byte spacer(CHR$(0))
cv& = _PaletteColor(c&, image&) ' color attribute to read.
b$ = b$ + Chr$(_Blue32(cv&)) + Chr$(_Green32(cv&)) + Chr$(_Red32(cv&)) + Chr$(0) 'spacer byte
Next
End If
Mid$(b$, 11, 4) = MKL$(Len(b$)) ' image pixel data offset(BMP header)
lastsource& = _Source
_Source image&
If ((x& * 3) Mod 4) Then padder$ = String$(4 - ((x& * 3) Mod 4), 0)
For py& = y& - 1 To 0 Step -1 ' read JPG image pixel color data
r$ = ""
For px& = 0 To x& - 1
c& = Point(px&, py&) 'POINT 32 bit values are large LONG values
If bytesperpixel& = 1 Then r$ = r$ + Chr$(c&) Else r$ = r$ + Left$(MKL$(c&), 3)
Next px&
d$ = d$ + r$ + padder$
Next py&
_Source lastsource&
Mid$(b$, 35, 4) = MKL$(Len(d$)) ' image size(BMP header)
b$ = b$ + d$ ' total file data bytes to create file
Mid$(b$, 3, 4) = MKL$(Len(b$)) ' size of data file(BMP header)
If LCase$(Right$(filename$, 4)) <> ".bmp" Then ext$ = ".bmp"
f& = FreeFile
Open filename$ + ext$ For Output As #f&: Close #f& ' erases an existing file
Open filename$ + ext$ For Binary As #f&
Put #f&, , b$
Close #f&
_FreeImage image&
End Sub
Sub Smooth
_Title "Antialiasing..."
_Display
Line (_Width - (200 * ss), 0)-(_Width - (200 * ss), _Height), _RGB(255, 255, 255), B
For x = 0 To _Width - (201 * ss)
For y = 0 To _Height - 1
p1~& = Point(x, y)
p2~& = Point(x + 1, y)
p3~& = Point(x, y + 1)
p4~& = Point(x + 1, y + 1)
p5~& = Point(x - 1, y)
p6~& = Point(x, y - 1)
p7~& = Point(x - 1, y - 1)
p8~& = Point(x - 1, y + 1)
p9~& = Point(x + 1, y - 1)
r = _Red32(p1~&) + _Red32(p2~&) + _Red32(p3~&) + _Red32(p4~&) + _Red32(p5~&) + _Red32(p6~&) + _Red32(p7~&) + _Red32(p8~&) + _Red32(p9~&)
g = _Green32(p1~&) + _Green32(p2~&) + _Green32(p3~&) + _Green32(p4~&) + _Green32(p5~&) + _Green32(p6~&) + _Green32(p7~&) + _Green32(p8~&) + _Green32(p9~&)
b = _Blue32(p1~&) + _Blue32(p2~&) + _Blue32(p3~&) + _Blue32(p4~&) + _Blue32(p5~&) + _Blue32(p6~&) + _Blue32(p7~&) + _Blue32(p8~&) + _Blue32(p9~&)
PSet (x, y), _RGB(r / 9, g / 9, b / 9)
Next
Next
End Sub
Sub DrawMenu
Line (_Width - (200 * ss), 0)-(_Width, _Height), _RGB(96, 96, 96), BF
Line (_Width - (200 * ss), 0)-(_Width - (195 * ss), _Height), _RGB(164, 164, 164), BF
_PutImage (_Width - (190 * ss), (10 * ss)), menu&
Text _Width - (64 * ss), (69 * ss), (28 * ss), _RGB(0, 0, 0), Str$(quads)
Text _Width - (66 * ss), (71 * ss), (28 * ss), _RGB(255, 255, 0), Str$(quads)
Text _Width - (55 * ss), (319 * ss), (22 * ss), _RGB(0, 0, 0), Str$(brushsize)
Text _Width - (57 * ss), (317 * ss), (22 * ss), _RGB(255, 255, 0), Str$(brushsize)
Line (_Width - (160 * ss), (180 * ss))-(_Width - (40 * ss), (300 * ss)), _RGB(164, 164, 164), BF
Line (_Width - (160 * ss), (180 * ss))-(_Width - (40 * ss), (300 * ss)), _RGB(255, 255, 255), B
Circle (_Width - (100 * ss), (240 * ss)), brushsize * ss, _RGB(0, 0, 0)
If brushsize > 1 Then Paint (_Width - (100 * ss), (240 * ss)), _RGB(0, 0, 0)
Line (_Width - (35 * ss), (380 * ss))-(_Width - (10 * ss), (397 * ss)), blk&, BF
Line (_Width - (35 * ss), (405 * ss))-(_Width - (10 * ss), (421 * ss)), fill&, BF
If randfill = 1 Then ran$ = "ON" Else ran$ = "OFF"
Text _Width - (36 * ss), (431 * ss), (22 * ss), _RGB(0, 0, 0), ran$
Text _Width - (38 * ss), (429 * ss), (22 * ss), _RGB(255, 255, 0), ran$
If eraser = 1 Then er$ = "ON" Else er$ = "OFF"
Text _Width - (76 * ss), (456 * ss), (22 * ss), _RGB(0, 0, 0), er$
Text _Width - (78 * ss), (454 * ss), (22 * ss), _RGB(255, 255, 0), er$
End Sub
Function IBOX$ (txt$, limitnum, fg&, bg&, delay)
'NOW USES text SUB to display text
'This function either gets user input or shows info.
'If limitnum is 0, it just shows info (message box)
'text$: Your text to show
'limitnum: how many letters of input to get
'fg&: The Text color
'bg&: Background color of box
'delay: optional delay period for message box only
' (and If set at -1 then wait for a keypress)
textsize = 22 * ss
'=== Save whole screen
Dim scr1 As _MEM, scr2 As _MEM
scr1 = _MemImage(0): scr2 = _MemNew(scr1.SIZE)
_MemCopy scr1, scr1.OFFSET, scr1.SIZE To scr2, scr2.OFFSET
'=== find center x/y of screen
y = Int(_Height / 2)
x = Int((_Width - (200 * ss)) / 2)
tl = (Len(txt$) + limitnum) 'total length of letter spacing used
x1 = x - (Int(tl / 2) * (textsize / 2)) - textsize: y1 = y - textsize
x2 = x + (Int(tl / 2) * (textsize / 2)) + textsize:: y2 = y + textsize
Line (x1, y1)-(x2, y2), bg&, BF
Line (x1, y1)-(x2, y2), fg&, B
Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$
_Display
If limitnum = 0 Then
If delay = -1 Then
a$ = Input$(1)
Else
_Delay delay
End If
IBOX$ = ""
Else
entry$ = ""
Do
a$ = Input$(1)
'=== Return exits with data
If a$ = Chr$(13) Then IBOX$ = entry$: Exit Do
'=== Handle the backspace
If a$ = Chr$(27) Then IBOX$ = "": Exit Do
'=== ESC cancels
If a$ = Chr$(8) Then 'Backspace goes back a space
If Len(entry$) > 0 Then
entry$ = Mid$(entry$, 1, Len(entry$) - 1)
End If
Else
'add letter entered, if not over limitnum
If Len(entry$) < limitnum Then
entry$ = entry$ + a$
End If
End If
Line (x1, y1)-(x2, y2), bg&, BF
Line (x1, y1)-(x2, y2), fg&, B
'Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$ + Space$(limitnum)
Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$ + entry$
_Display
_Limit 30
Loop
End If
'=== Restore the whole screen
_MemCopy scr2, scr2.OFFSET, scr2.SIZE To scr1, scr1.OFFSET
_MemFree scr1: _MemFree scr2
End Function
Sub fc (cx As Integer, cy As Integer, radius As Integer, clr~&, grad)
If radius < 1 Then Exit Sub ' safety bail
If grad = 1 Then
red = _Red32(clr~&)
grn = _Green32(clr~&)
blu = _Blue32(clr~&)
alpha = _Alpha32(clr~&)
End If
r2 = radius * radius
For y = -radius To radius
x = Abs(Sqr(r2 - y * y))
' If doing gradient
If grad = 1 Then
For i = -x To x
dis = Sqr(i * i + y * y) / radius
red2 = red * (1 - dis) + (red / 2) * dis
grn2 = grn * (1 - dis) + (grn / 2) * dis
blu2 = blu * (1 - dis) + (blu / 2) * dis
clr2~& = _RGBA(red2, grn2, blu2, alpha)
Line (cx + i, cy + y)-(cx + i, cy + y), clr2~&, BF
Next
Else
Line (cx - x, cy + y)-(cx + x, cy + y), clr~&, BF
End If
Next
End Sub
RE: QuadDraw revisited - drawing program work in progress - Dav - 10-09-2024
Latest version adds 12 image filters to tweak your drawings. You can access them using the Function keys, F1 to F12. Fixed a few things, and tweaked the input boxes again - gave them a blinking cursor. Made a new input function called NBOX that only allows number entry - this is for some of the filters that need user input for values.
List off the 12 very simple filters added:
F1 = Brighter filter (brightens by 10%)
F2 = Darker filter (darkens by 10%)
F3 = Greyscale filter
F4 = SepiaTone filter
F5 = Negative filter
F6 = Contrast filter (user specified)
F7 = Saturate filter (user specified)
F8 = Pixelate filter (use specified)
F9 = Vintage filter
F10 = Red color tint (user specified)
F11 = Green color tint (user specified)
F12 = Blue color tint (user specified)
Plan to redo the menu next time, maybe add a help/info screen.
- Dav
Code: (Select All) '============
'QuadDraw.bas v1.9c
'============
'An odd little drawing program.
'Draws/paints in several points on the screen at same time.
'Coded by Dav for QB64-PE OCT/2024
'NEW FOR v1.9c:
' - Fixed: Update undo screen before loading a BMP.
' - Fixed: Update undo screen before applying any filter
' - Fixed: Update undo screen before clearing screen
' - Added: Shows PL in color box when Plasma colors turned On.
' - Added: Blinking cursor now shown on Load/Save BMP boxes.
' - Added: Total of 12 image filters, using F1 to F12 keys.
' (list of filter keys are below in how to use)
'CREDITS: SPAINT SUB was made by Petr. Thanks Petr!
' text SUB was made by bplus. thanks bplus!
' (bplus helped me out how to draw lines without gaps too)
' Thanks to James Jarvis for draw color and eraser idea/code!
' And to PhilOfPerth and euklides for code suggestions.
'----------
'HOW TO USE:
'----------
'Left click on mouse and hold to draw on the screen.
'Press Up/Down arrows to set how many draw points to use, default is 4.
'Use the +/- keys to change brush size (1 to 50 allowed)
'Right click to fill/paint the areas with color.
'Default fill color is picked randomly, but you can select one.
'Press D to select a new draw color for brush.
'Press F to select a fill color (doing so turns random fill color off)
'Press P to toggle use Plasma colors On/Off.
'Press R to toggle random fill color on/off (default is a random color)
'Press E to toggle Erase on/off. Hold it while drawing for dotted lines.
'Press A to smooth the screen (blur).
'Press S to save current image as QUADDRAW.BMP in current dir.
'Press L to Load a previously saved image on the screen.
'Press U to undo last change made to image.
'Space = clears screen and starts over.
'ESC = Ends program
'-------- LIST OF FILTERS -----
'F1 = Brighter filter (brightens by 10%)
'F2 = Darker filter (darkens by 10%)
'F3 = Greyscale filter
'F4 = SepiaTone filter
'F5 = Negative filter
'F6 = Contrast filter
'F7 = Saturate filter
'F8 = Pixelate filter
'F9 = Vintage filter
'F10 = Red color tint
'F11 = Green color tint
'F12 = Blue color tint
'(NOTE: The smooth filter is still the A key as before)
'===================================================================
'NOTE: This program was originally sized to 1000x600. This was too
' small on higher resolution desktops so I added screen scaling
' factor (ss) and applied that to all the drawing things so it
' will autoscale to users desktop height. That is why you see
' '* ss' all over the place added to numbers.
'===================================================================
Dim Shared quads, brushsize, randfill, eraser, menu&, blk&, fill&, ss, plasma
ss = _DesktopHeight / 600 * .85 '<<<<< scale to 85% of users desktop
' change this to suit your needs
If ss > 2.25 Then ss = 2.25 'limit ss factor for performace reasons
Screen _NewImage(1000 * ss, 600 * ss, 32)
menu& = BASIMAGE1&
cx = (_Width - (200 * ss)) / 2
cy = _Height / 2
wht& = _RGB(255, 255, 255) 'used often, so variable it
blk& = _RGB(0, 0, 0)
fill& = _RGB(Rnd * 255, Rnd * 255, Rnd * 255)
brushsize = 3 'size of drawing circle (brush)
quads = 4 'start with 4 drawing sections
randfill = 1 'default is use random fill color turned on
plasma = 0
ReDim Shared pointa(quads), pointx(quads), pointy(quads), lastmx(quads), lastmy(quads)
Cls , wht& 'start with white screen
_Delay .25
undo& = _CopyImage(_Display)
'====
main:
'====
_Title "QuadDraw - Points:" + Str$(quads) + " BrushSize:" + Str$(brushsize)
DrawMenu
Do
t = Timer 'for plasma colors
While _MouseInput: Wend
mx = _MouseX: my = _MouseY
If mx <= (_Width - (200 * ss) - brushsize / 2) Then
If _MouseButton(1) Then
If stilldown = 0 Then
_FreeImage undo&
undo& = _CopyImage(_Display)
End If
If stilldown = 1 Then
dx = mx - cx: dy = my - cy
a = _Atan2(dy, dx)
dis = Sqr(dx * dx + dy * dy)
For i = 1 To quads
pointa(i) = (360 / quads) * i * (3.14159 / 180)
pointx(i) = cx + dis * Cos(pointa(i) + a)
pointy(i) = cy + dis * Sin(pointa(i) + a)
stepx = lastmx(i) - pointx(i)
stepy = lastmy(i) - pointy(i)
length = Int((stepx ^ 2 + stepy ^ 2) ^ .5)
dx2 = stepx / length
dy2 = stepy / length
For i2 = 1 To length
newx = pointx(i) + dx2 * i2
newy = pointy(i) + dy2 * i2
If plasma = 1 Then
r = Int(128 + 127 * Sin(pointx(i) / 25 + t) + 127 * Cos(pointy(i) / 25 + t))
g = Int(128 + 127 * Sin(pointx(i) / 25 + t * 1.5) + 127 * Cos(pointy(i) / 25 + t * 1.5))
b = Int(128 + 127 * Sin(pointx(i) / 25 + t * 2) + 127 * Cos(pointy(i) / 25 + t * 2))
fc newx, newy, brushsize * ss, _RGB(r, g, b), 0
Else
fc newx, newy, brushsize * ss, blk&, 0
End If
Next
lastmx(i) = pointx(i)
lastmy(i) = pointy(i)
Next
Else
dx = mx - cx
dy = my - cy
a = _Atan2(dy, dx)
dis = Sqr(dx * dx + dy * dy)
For i = 1 To quads
pointa(i) = (360 / quads) * i * (3.14159 / 180)
pointx(i) = cx + dis * Cos(pointa(i) + a)
pointy(i) = cy + dis * Sin(pointa(i) + a)
lastmx(i) = pointx(i)
lastmy(i) = pointy(i)
If plasma = 1 Then
r = Int(128 + 127 * Sin(pointx(i) / 25 + t) + 127 * Cos(pointy(i) / 25 + t))
g = Int(128 + 127 * Sin(pointx(i) / 25 + t * 1.5) + 127 * Cos(pointy(i) / 25 + t * 1.5))
b = Int(128 + 127 * Sin(pointx(i) / 25 + t * 2) + 127 * Cos(pointy(i) / 25 + t * 2))
fc pointx(i), pointy(i), brushsize * ss, _RGB(r, g, b), 0
Else
fc pointx(i), pointy(i), brushsize * ss, blk&, 0
End If
Next
stilldown = 1
End If
stilldown = 1
DrawMenu
_Display
Else
stilldown = 0
End If
'if right click, fill sections with random color
If _MouseButton(2) Then
_FreeImage undo&
undo& = _CopyImage(_Display)
_Display
dx = mx - cx
dy = my - cy
a = _Atan2(dy, dx)
dis = Sqr(dx * dx + dy * dy)
For i = 1 To quads
pointa(i) = (360 / quads) * i * (3.14159 / 180)
pointx(i) = cx + dis * Cos(pointa(i) + a)
pointy(i) = cy + dis * Sin(pointa(i) + a)
lastmx(i) = pointx(i)
lastmy(i) = pointy(i)
SPAINT pointx(i), pointy(i), fill&
Next
'Get next random fill color
If randfill = 1 Then
r = Rnd * 255: g = Rnd * 255: b = Rnd * 255
fill& = _RGB(r, g, b)
End If
DrawMenu
_AutoDisplay
While _MouseButton(2) <> 0: n = _MouseInput: Wend
End If
End If
'get keyboard input
key$ = UCase$(InKey$)
If key$ <> "" Then
Select Case key$
Case Chr$(32) 'SPACE clears screen again
_FreeImage undo&: undo& = _CopyImage(_Display)
Cls , wht&: DrawMenu
Case Chr$(0) + Chr$(59) 'F1
_FreeImage undo&: undo& = _CopyImage(_Display): Brighter
Case Chr$(0) + Chr$(60): 'F2
_FreeImage undo&: undo& = _CopyImage(_Display): Darker
Case Chr$(0) + Chr$(61): 'F3
_FreeImage undo&: undo& = _CopyImage(_Display): Greyscale
Case Chr$(0) + Chr$(62): 'F4
_FreeImage undo&: undo& = _CopyImage(_Display): SepiaTone
Case Chr$(0) + Chr$(63): 'F5
_FreeImage undo&: undo& = _CopyImage(_Display): Negative
Case Chr$(0) + Chr$(64): 'F6
p$ = NBOX$(" -= Contrast =-", "Percentage (0 to 300): ", 3, _RGB(255, 255, 255), _RGB(96, 96, 96))
If p$ <> "" Then percent = Val(p$) Else percent = -1
If percent >= 0 And percent <= 300 Then
_FreeImage undo&: undo& = _CopyImage(_Display): Contrast percent
End If
Case Chr$(0) + Chr$(65): 'F7
p$ = NBOX$(" -= Saturation =-", "Percentage (0 to 300): ", 3, _RGB(255, 255, 255), _RGB(96, 96, 96))
If p$ <> "" Then percent = Val(p$) Else percent = -1
If percent >= 0 And percent <= 300 Then
_FreeImage undo&: undo& = _CopyImage(_Display): Saturate percent
End If
Case Chr$(0) + Chr$(66): 'F8
p$ = NBOX$(" -= Pixelate =-", "BlockSize (2 to 50): ", 2, _RGB(255, 255, 255), _RGB(96, 96, 96))
If p$ <> "" Then blocksize = Val(p$) Else blocksize = -1
If blocksize >= 2 And blocksize <= 50 Then
_FreeImage undo&: undo& = _CopyImage(_Display): Pixelate blocksize
End If
Case Chr$(0) + Chr$(67): 'F9
_FreeImage undo&: undo& = _CopyImage(_Display): Vintage
Case Chr$(0) + Chr$(68): 'F10 (add red tint)
p$ = NBOX$(" -= Add Red Tint =-", "Percentage (1 to 100): ", 3, _RGB(255, 255, 255), _RGB(96, 96, 96))
If p$ <> "" Then percent = Val(p$) Else percent = -1
If percent >= 1 And percent <= 100 Then
_FreeImage undo&: undo& = _CopyImage(_Display): ColorTint percent, 0, 0
End If
Case Chr$(0) + Chr$(133): 'F11 (add green tint)
p$ = NBOX$(" -= Add Green Tint =-", "Percentage (1 to 100): ", 3, _RGB(255, 255, 255), _RGB(96, 96, 96))
If p$ <> "" Then percent = Val(p$) Else percent = -1
If percent >= 1 And percent <= 100 Then
_FreeImage undo&: undo& = _CopyImage(_Display): ColorTint 0, percent, 0
End If
Case Chr$(0) + Chr$(134): 'F12 (add blue tint)
p$ = NBOX$(" -= Add Blue Tint =-", "Percentage (1 to 100): ", 3, _RGB(255, 255, 255), _RGB(96, 96, 96))
If p$ <> "" Then percent = Val(p$) Else percent = -1
If percent >= 1 And percent <= 100 Then
_FreeImage undo&: undo& = _CopyImage(_Display): ColorTint 0, 0, percent
End If
Case Chr$(0) + Chr$(72)
If quads < 16 Then
quads = quads + 1
ReDim Shared pointa(quads), pointx(quads), pointy(quads), lastmx(quads), lastmy(quads)
End If
Case Chr$(0) + Chr$(80)
If quads > 1 Then
quads = quads - 1
ReDim Shared pointa(quads), pointx(quads), pointy(quads), lastmx(quads), lastmy(quads)
End If
Case "+"
brushsize = brushsize + 1: If brushsize > 50 Then brushsize = 50
Case "-"
brushsize = brushsize - 1: If brushsize < 1 Then brushsize = 1
Case "U": _PutImage (0, 0), undo&
Case "A": Smooth
Case "P": If plasma = 1 Then plasma = 0 Else plasma = 1
Case "S"
saveimg$ = IBOX$("NAME OF BMP TO SAVE-> ", 40, _RGB(255, 255, 255), _RGB(96, 96, 96), 0)
If saveimg$ <> "" Then
If LCase$(Right$(saveimg$, 4)) <> ".bmp" Then saveimg$ = saveimg$ + ".bmp"
SaveAsBMP saveimg$
a$ = IBOX$(UCase$(saveimg$) + " SAVED!", 0, _RGB(255, 255, 255), _RGB(96, 96, 96), 2)
End If
Case "F"
new& = ColorPicker&(200 * ss, 150 * ss)
If new& <> 0 Then
randfill = 0
fill& = new&
End If
Case "D"
new& = ColorPicker&(200 * ss, 150 * ss)
If new& <> 0 Then
blk& = new&
Else
blk& = _RGB(0, 0, 0)
End If
Case "E"
Select Case eraser
Case Is = 1: eraser = 0
Case Is = 0: eraser = 1
End Select
If blk& = _RGB(0, 0, 0) Then
blk& = wht&
Else
blk& = _RGB(0, 0, 0)
End If
Case "R"
Do Until InKey$ = "": Loop
Select Case randfill
Case Is = 1: randfill = 0
Case Is = 0: randfill = 1
End Select
Case "L"
openimg$ = IBOX$("IMAGE TO LOAD-> ", 40, _RGB(255, 255, 255), _RGB(96, 96, 96), 0)
'if filename given
If openimg$ <> "" Then
'if file exists..
If _FileExists(openimg$) Then
'test loading image
o& = _LoadImage(openimg$)
If o& = -1 Then
a$ = IBOX$(UCase$(openimg$) + " NOT VALID!", 0, _RGB(255, 255, 255), _RGB(96, 96, 96), 2)
Else
_FreeImage undo&
undo& = _CopyImage(_Display)
_PutImage (0, 0)-(_Width - (200 * ss), _Height), o&
_FreeImage o&
End If
Else
a$ = IBOX$(UCase$(openimg$) + " NOT FOUND!", 0, _RGB(255, 255, 255), _RGB(96, 96, 96), 2)
End If
End If
Case Chr$(27): End
End Select
Do Until InKey$ = "": Loop
_Display
GoTo main
End If
_AutoDisplay
Loop
End
Sub SPAINT (x As Integer, y As Integer, clr~&) 'Color everything in the X, Y position regardless of the border color.
'SUB by Petr
Dim m As _MEM, m2 As _MEM
m = _MemImage(_Dest)
W = _Width(_Dest)
H = _Height(_Dest)
P = _PixelSize(_Dest)
Select Case P
Case 4 ' image is 32 bit image
Virtual = _NewImage(W, H, 32)
m2 = _MemImage(Virtual)
Back~& = Point(x, y)
Back2~& = _RGB32(1, 1, 1)
Empty~& = _RGBA32(0, 0, 0, 0)
Do Until a& = m.SIZE - 4
a& = a& + 4
If _MemGet(m, m.OFFSET + a&, _Unsigned Long) = Back~& Then _MemPut m2, m2.OFFSET + a&, Back~& Else _MemPut m2, m2.OFFSET + a&, Back2~&
Loop
d = _Dest
_Dest Virtual
Paint (x, y), clr~&, Back2~&
_Dest d
a& = 0
Do Until a& = m.SIZE - 4
a& = a& + 4
If _MemGet(m2, m2.OFFSET + a&, _Unsigned Long) <> clr~& Then _MemPut m2, m2.OFFSET + a&, Empty~&
Loop
_ClearColor Back2~&, Virtual
_PutImage (0, 0), Virtual
_MemFree m
_MemFree m2
_FreeImage Virtual
Case 1 ' image is 8 bit image (256 colors)
Virtual = _NewImage(W, H, 32)
m2 = _MemImage(Virtual)
Back~& = Point(x, y)
Back2~& = _RGB(1, 1, 1)
Empty~& = _RGBA(0, 0, 0, 0)
Do Until a& = m.SIZE - 1
a& = a& + 1
If _MemGet(m, m.OFFSET + a&, _Unsigned _Byte) = Back~& Then _MemPut m2, m2.OFFSET + a&, Back~& Else _MemPut m2, m2.OFFSET + a&, Back2~&
Loop
d = _Dest
_Dest Virtual
Paint (x, y), clr~&, Back2~&
_Dest d
a& = 0
Do Until a& = m.SIZE - 1
a& = a& + 1
If _MemGet(m2, m2.OFFSET + a&, _Unsigned _Byte) <> clr~& Then _MemPut m2, m2.OFFSET + a&, Empty~&
Loop
_ClearColor Back2~&, Virtual
_PutImage (0, 0), Virtual
_MemFree m
_MemFree m2
_FreeImage Virtual
End Select
End Sub
Sub Text (x, y, textHeight, K As _Unsigned Long, txt$)
'Text SUB by bplus.
Dim fg As _Unsigned Long, cur&, I&, multi, xlen
fg = _DefaultColor
cur& = _Dest
I& = _NewImage(8 * Len(txt$), 16, 32)
_Dest I&
Color K, _RGBA32(0, 0, 0, 0)
_PrintString (0, 0), txt$
multi = textHeight / 16
xlen = Len(txt$) * 8 * multi
_PutImage (x, y)-Step(xlen, textHeight), I&, cur&
Color fg
_FreeImage I&
End Sub
Function ColorPicker& (xpos, ypos)
'ColorPicker& Function by Dav, SEP/2020. FREE TO USE FOR ALL
'Function Returns color picked by user if one selected.
'If no color selected before Closing, function returns 0
'Click CLOSE to close the ColorPicker image.
'ESC key cancels selection and closes picker too.
'The xpos/ypos is x/y point on the screen to place colorpicker
'=== Save users display status
DisplayStatus% = _AutoDisplay
'=== copy background screen using _mem (thanks Steve!)
'=== Used this method because_COPYIMAGE(_DISPLAY) didnt always work
Dim scr1 As _MEM, scr2 As _MEM
scr1 = _MemImage(0): scr2 = _MemNew(scr1.SIZE)
_MemCopy scr1, scr1.OFFSET, scr1.SIZE To scr2, scr2.OFFSET
'Create Colorpicker image
v& = _NewImage(463, 239, 32)
Dim m As _MEM: m = _MemImage(v&)
A$ = "" '...COLORPICKER.PNG encoded by BASIMAGE...
A$ = A$ + "haIkMo7KDGOh77_oaBfFFfOhBL9c5gGWaX9BRK62K46AkHnS9I=`09EP<4V="
A$ = A$ + "e25F]0eB;]jK;#YFXUEJQJGM573`644fjGM:62H66L42I^89^HF<co`T]oHo"
A$ = A$ + "anW]TUUk;O2BnLONnmjek3L7m>li;cS4;]LohSGjC_[gM=C6WciL>WciL>Wc"
A$ = A$ + "iL>WciL>WciL>WciLOFMgBE9=CX6XN80S0C0W7n48C2O2LNH2H480e3e0c4^"
A$ = A$ + "5XZHUa7hn4hl`4`8#0Z7Z1V9L;#boQOFngVWjlLWGjhUNN]SGkiAW:SK^U[]"
A$ = A$ + "lUDW:cUmbnoNZbCf>]MJkdfYVnIk\bR]CKWf>o\CkdEn=KWEVBc:SC0I:[oV"
A$ = A$ + "IUa7h\MJkd=m>KWEVBc:SC0I:[oVIUa7h\MJkd=m>KWEVBc:SC0I:[oVIUa7"
A$ = A$ + "h\MJkd=m>KWEVBc:SC0I:[oVIUa7h\MJkd=m>KWEVBc^e?go9QI1;0NB80_0"
A$ = A$ + "LLhL`73oW4nHhL`aQG02`C2;0V5L[`W;f]2c2F0lT#0N1hh`iP?6n?anHhL`"
A$ = A$ + "aQG02`C2;0V5L[`W;QK5V5\0h9Q0l2`aQc1O<lORma`iPS3_04PW4F0<;hFQ"
A$ = A$ + "?G\2mk?k:?V]c:CYIf>]MJkdfY[h>KWEVBc\MJkdfY]CGaMf>[<UVIkdfY]C"
A$ = A$ + "KW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>]Mj:^cfIUYd<KWf>]MJkdELW"
A$ = A$ + "]c:CYIf>]MJkdfY[h>KWEVBc^]_ho:QI3;4J02```aPc2O4l_BhSPc273662"
A$ = A$ + "#3`2QI3g6l5SMK`\Q52=01HHhH`IQ?2nGan8h\`aPQQ0d0\#Hf`]1Oa4^=Hf"
A$ = A$ + "`2Q6P0<<L<h\`71o[HO4LFhH``#0J0F8<KhfP_H\2mk?k:?V]c:CYIf>]MJk"
A$ = A$ + "dfY[h>KWEVBc\MJkdfY]CGaM5[fiMOgIbl\?KV<o_o_IbLZC5[gNcTiaOl<I"
A$ = A$ + "^iK>oom_okObmoloDhG>R>OR>oR>O_J^LT[C[X[GIOJ59j?Knc?oWNAG^cge"
A$ = A$ + "[LY#_lUVIkdfY]CKW^Rk^FKWcJFIbl7n35fie#3=i]Ql]X>EQdifgn:\;7AO"
A$ = A$ + "Mi[A5miR>?oKo]Ynd:j[Ib>mR>=BkRjWf>]MJkdfId\MFn^[UfiBFBj?onX?"
A$ = A$ + "jbg7eRIk<jngmn_Oj^L4meW[NGdOFJ?]V\[Gf>]MJkdfY]cK<gEKk<ja[lZM"
A$ = A$ + "AM6f]bgVZfiEC[;JAomhYEQNOGceR^ogf>]MJkdfY]cKlgEKk<ZoM]<f3CcG"
A$ = A$ + "KfRniAN]\XonIOO>_FGfo\I]MJkdfY]CKWgH^[VfiDMO>GcJ^L38jiDcT=NO"
A$ = A$ + "nbgbGk<OgWcX?GdUSXWoB5bUSX_f9KAoL=Sj\AGgcgoO3AOnb]fiMlUoW9<7"
A$ = A$ + "HA#3#066>:l>`72oc4n#hMPS2331X1HA`LPk0nba^3H>`RP6P0<<LDhMP?4n"
A$ = A$ + "Wan#hMPS2331X1HA`LPk0nb9L7`LP51=01HHhX`k0O8l?SmQ`k075662#3`R"
A$ = A$ + "Pi0g1lUSU[Ik\lMG=]cle4Rj:5JS]Hd>cg^B7[#_L\a=>iO=A??M;T[oIOIM"
A$ = A$ + "ZJWAONZ#O>5WVIkdfY]CKW^Rk^JJWikna5MO=;Tk7Gdb^CT_=I]cYjaHm:g7"
A$ = A$ + "^2mbAaX9VVfIQd8]MJkdfY]CGig^JJWikaR==]c\Ol9cgV\fIQNjGXOMi[e5"
A$ = A$ + "mL8bfY]CKWf>]MjRV]c2[M6][lJ#9j[?G?N[AbnjT]CKWf>]MJkl6cIk<n[["
A$ = A$ + "#NMg4mlPZ#kKf>]MJkdfY]cK<W]ch_^XO^W5bRNMLV[gO7\MJkdfY]CKWOfH"
A$ = A$ + "f>CNiX#Oo5<JCem1MZJWlm8g\?fE<KWge=m?BhnP53[62`NQS0_=l1`o8Q?0"
A$ = A$ + "NKh8`NQ0\JHa`m1g5LCa^;hnP53[62`NQS0_=l1`o8f70_=L4H_#0F=\HhnP"
A$ = A$ + "k2^Y4^;hnP53[62`NQS0_=l1`o8f70_=L4H_#0F=\HhnPk2^YHiJf>;OGY\M"
A$ = A$ + "6mlP]#OO??OkjIk<jnNF8_?fNU5eJW\gKL_JNmMJkdfY]CKWGIf>;OGY\MF\"
A$ = A$ + "N<8_Nf>S4mhaVVniTmNd[]CKWf>]MJkl6cIk<g_GnTfgOiSJ]5Sg;h]MJkdf"
A$ = A$ + "Y]c[<KWU_cfInOO`;jgKJ5jRjWIohgJkdfY]CKWf>_aLf>Wjg3ISnMDJQnNO"
A$ = A$ + "OJN_A`W[#f>]MJkdfIUiliIKQmn_NdmWl`7>oW>A;kgKi;GN=ZHkdfY]CKW^"
A$ = A$ + "Rk\MVlegiTmn5dEnMEFd___WZW7Af>]MJkdfY]cK\W]c2k[;k[GA?6^iKGii"
A$ = A$ + "<DiBkL6glO?QZQU0[12`NP33W2^8lgChR`YP33k12`JPU0E3c0^iHc0Z6F2\"
A$ = A$ + "680k1><L:hR`O?f5QC176f34Pe0;1Z6V1Lc9<3XJH9`JP0\7h``YP;2omHG4"
A$ = A$ + ">5LHH?#0F3\4XJH6`=7;GcfIik\MVnfITlMO?;dgOL]MJkdfY]CKWEVKjlg1"
A$ = A$ + "IIoJj8O[L\MV_oo7\MJkdfY]CKWgH_Rm_k[CCk\#K1UjOoMF8GN]MJkdfY]C"
A$ = A$ + "KW^[\[Vfi6ghTOj5mHIVf_^YZ54mj3Q_F>^bmI=Ok:?oNbgUSXE8G>R^<TMc"
A$ = A$ + ">O?V]5j?_cLmJD9jeCZ]CKWf>]M6=KWU_kZYM6e6bgRN<MSj6i[_4meLef2R"
A$ = A$ + "fE^_Mika?>je;BJ_LT_G7WGijeDmn=DQLocW\EX_6?Cc\MJkdfY]CGaMG=]c"
A$ = A$ + "YZaD8;jiZJaXM>E?WGCkUS[VNGf;kF\]CKWf>]MJkl6cMef>_FJFijaU<];k"
A$ = A$ + "WS^5bkI1iJAombe?3edln0?Gf]HKWf>]MJkdfi=VkZ]M6Y#NO2PKbNNoTfag"
A$ = A$ + ";PBKo<GMc\O<YCck3lA;jh`lWoenmQ]Dd>_WKiCBHN#]#S#06267>9lN`WT`"
A$ = A$ + "k1W467622#S#]`lPk1^UHg3<?XFXA8031S3W4N?hCRmN`9QaQQP0d8D;<?hN"
A$ = A$ + "PK9Qk1V7D;d84PQPaQC2_7l9aN?hT`h`##0J4Z5V7L?`]4;GcfIik^FJWARN"
A$ = A$ + "_hIOkKZKXAoN^T?nX5cfITXWK#CEc;jcOUW3ACUXWSACeS=MdekNk=go>ldf"
A$ = A$ + "Y]CKWf>]MNSi^FKWI;ZW5eKbnmb^Xk;fTmk6jBUXNNdi;_L4mWG\>mRj_ijg"
A$ = A$ + "IWG_TVIkdfY]CKW^Rk:V]CIkdfY]CKWf>o\`\MFI:=cfY]CKWf>M5gIk\bDJ"
A$ = A$ + "V]CKWf>]Mj:^cfIUYd<KWf>]MJkdELW]c:CYIgkgh_V`32?6\F8032_<L2h2"
A$ = A$ + "`O=Q;0W0NIH#80[5N<h1Qk5n6a^Gh1Q73F;4P1QG6>1L1h_6k2`9PG6642`J"
A$ = A$ + "Q73N#hNQ_A2g;lP`S1[52`P`;3W0^0lGSM1h4`;3321H]`S1?8L_`g8FQnmW"
A$ = A$ + "MU7cfIUYd<KWf>]MJkdELW]c:CYIf>]MJkdfY[h>KWEVBc\MJkdfY]CGaMf>"
A$ = A$ + "[<UVIkdfY]CKW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>]Mj:^cfIUYd<K"
A$ = A$ + "Wf>]MJkdELW]c:CYIcjfo;9l``bPe21H#hP`K0W3n;9L>h=P32321H]`bP76"
A$ = A$ + "V5LkaV5l``bPe21H#hP`K0W3n;a>7l6`1Q1Q0\FHI`33c2^m4V5l``bPe21H"
A$ = A$ + "#hP`K0W3n;a>7l6`1Q1Q0\FHI`33c2^mH5jgOfEN<KWEVBc\MJkdfY]CGaMf"
A$ = A$ + ">[<UVIkdfY]CKW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>[\KWZlU]c:;f"
A$ = A$ + ">]MJkdfYVnIk\bR]CKWf>_a_MjL^Y_IkdfY]CKW>W;MKfgiO>Qi3;7F74PM3"
A$ = A$ + "70N=h\`O>Qc2_6L0Hg#0F7\LHn`\Qk<f\Qi3;7F74PM370N=h\`O>fIQG3>0"
A$ = A$ + "\K80[3F><OHf`MV`\Qi3;7F74PM370N=h\`O>fIQG3>0\K80[3F><OHf`M6c"
A$ = A$ + "iLUGcfY]CKWf>M>GjV]CKWf>]MjL^d=KWf>]MFif>o_ogoKVgomOo9eOj?mW"
A$ = A$ + "bLQ;LQ<WolWOBm^_kkVigokomCZCNbCVi]N[gJBMRCLR<ofOk_MBmKn=oV<_"
A$ = A$ + "j[nZI>lQ?L>=nhSWiGo[oeInEoZOeTJ\a6;c_hGl;b<b8S<Y6L`1clcoiolL"
A$ = A$ + "JGkJGIjYWNb[]^e]ViIOfW=_J_mfcdJ[]VC]dB;IJZYVblcnIo\LJM[KMIFc"
A$ = A$ + "JFCVj[_n9EMeEGVE^bEViWlCn9idBGjBc\TU\TlJ1;H1InAoXODNm0?`3TCo"
A$ = A$ + "PO`?8cgokomclmnNO_9eLVcLblMn>OW<cLVcLBm]ofOk<cH6c8cMOggM>MWG"
A$ = A$ + "jkQNkgn]?YnVOc_IV_nGo[Wi[menJCZ_jGm[Vi[lEn:I^YKjVbY_dGj;Ui;l"
A$ = A$ + "5n2CZ?oWocWYZZZ:QomonOKkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]"
A$ = A$ + "MJkdfY]c:`fiLWa5CX6H5#C#060f?<1L6hR9L6H2Ho`0#0J2F1D3<GH6aV;D"
A$ = A$ + "3\2X98030k7V0>3LaHW1V0f?<04PVPE0e0c5VA2c5Z1F1d44P1Pm3C0W1^H\"
A$ = A$ + "c0C0k7602#C`:PJPi2c8V]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY"
A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]M"
A$ = A$ + "JkdfY]CKWf>]MJkl6[fimo]nS9\0HU`C11HG`nPS3W6nS9LJhh`nPM11hYPE"
A$ = A$ + "2;0^OhK5knQ50[4N:80k2f7LLhd`O<fYQS3k3f54PW2F9\0hnQ_E2g?\0HU`"
A$ = A$ + "C11HG`nPS3W6nSa>=LLHO`^P0lD`:Q50g?l]RIkdfY]CKWf>]MJkdfY]CKWf"
A$ = A$ + ">]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY"
A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>_aZM>_INn4F4\:XI80m3S175>9Ln"
A$ = A$ + "4>9LDH<XO80=3[2F4<?HVaV7\8HE#c#0j763>:LBhla>9LDH<XO80=3[2F4<"
A$ = A$ + "?HV9<?HA`ZPVQ0d?<6LDhT`iSMBhX`H#o#0J6F5\8HN`<SIkdfY]CKWf>]MJ"
A$ = A$ + "kdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKW"
A$ = A$ + "f>]MJkdfY]CKWf>]MJkdfY]CKWUk]c7jkn^9lX`C0=31XOh5QG1NChMCh=QG"
A$ = A$ + "1NAXO80=3?1lX`31OgH?4lX`C0=31XOh5QG1NChMSmV`[0_8d?4PVQW0NDhQ"
A$ = A$ + "P_K2?4lX`C0=31XOh5QG1NChMSmV`[0_8d?4PVQW0NDhQP_K<KWf>]MJkdfY"
A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MFng>M>gdc\MJkdfY]CWcU^Ikdf"
A$ = A$ + "Y]CKW>W;McfY]CKWf>M>GjV]CKWf>[#KWQB\\fY3UF9_NEEYedd1a#VZ:YBN"
A$ = A$ + "NEJoWYYK6V94:]BcNTiNV4Z5Z3F?4PnPAQaQG7>C2_><><:d74Pe3e1e2?2<"
A$ = A$ + "gH?2D;D7\N80m1S2S3_>LVH_><><:d74Pe3e1e2?2<g4N4XFX>Hm#0j36567"
A$ = A$ + "NMh<aNMHLHDX?80[7Z3Z5N4H^abi^>n=]\MN]O#dfY]CKWf>]MJkdfIj>8Jk"
A$ = A$ + "dfY]CKWf>]MJk<M74]MJkdfY]CKWf>]MV^3Rf>]MJkdfY]CKWf>Cg1AKWf>]"
A$ = A$ + "MJkdfY]CKWYkPX]CKWf>]MJkdfY]cdM#dfY]CKWf>]MJkdfIj>8Jkl6[fI=E"
A$ = A$ + "OZ4F:D?\180k461>4<1LZ4V0>4<2\C80K0Z7F:D3DM\JPU2e3K02`>QAP31C"
A$ = A$ + "0W:f4`QPAPM21H3#m`BQJPZCX6HY#m`6P0\CH4h#`4`YR=1L8H4HW#0f0D?\"
A$ = A$ + "DX6XjHiLG7oVFf>_f?8JkdfY]CKWf>]MJk<M74]MJkdfY]CKWf>]MV^3Rf>]"
A$ = A$ + "MJkdfY]CKWf>Cg1AKWf>]MJkdfY]CKWYkPX]CKWf>]MJkdfY]cdM#dfY]CKW"
A$ = A$ + "f>]MJkdfIj>8Jkl6[fi2OPg:QU3=0K42`>PQQ3073N[4>6L0HHH7#0f8d0\L"
A$ = A$ + "HQ`34KQ`bQ6P=21H7```1PS1_E\S17066f14P=2=0;7F8l09\#Hi#3`6Q0\3"
A$ = A$ + "HHh0`aPg:faP3033k02`6Q6PU3;4NPHiLG7oVFf>_f?8JkdfY]CKWf>]MJk<"
A$ = A$ + "M74]MJkdfY]CKWU1]CWc=]=KWf>]MJkdiLYKf>]MJkdfYciBg\MJkdfI5Jk\"
A$ = A$ + "ZB\\fY3QBZTWGEEB=MM#\j;maUB9_FEJoY[>=Mc`<EEEYEJV]CKWf>]MJkdf"
A$ = A$ + "Y]c<YJf>]MJkdfY]CKWf>cTZ]hOh_;Q77F=d24PNQm2_4L4hgU`APG2f;d;4"
A$ = A$ + "PFPE3?>\Hh76Ka`S3[6J12#_`NQG2>2lkRM4hUPm2m21X5He`S3;6nQ9\Hha"
A$ = A$ + "QE3]01XGH_`;171nMa>2lB`NQNQ0d2\JhaQ53o`HiLf>]MJkdfY]CKWf>]MV"
A$ = A$ + "afY]CKWf>]MJkdfY]c;?KWf>]MJkdfY]CKWf>_>Oc#KWf>]MJkdfY]CKWYkV"
A$ = A$ + "Qf>]MJkdfY]CKWf>Cg=3]MJkdfY]CKWf>]MV^K6JkdfY]CKWf>]MJk<Mg<\\"
A$ = A$ + "ZMFK=CT`ZP6QFP0d;<4<6<><A2S3S131m21X5XAHE#]#=aZ5F5d8d24PNQQP"
A$ = A$ + "aPaQ9R=><6<4d;4PFP6QE1e2eT#]`ZP6QFP0d;<4<6<><A\aQaPQPNQ0d2d8"
A$ = A$ + "\:XFXVHiLf>]MJkdfY]CKWf>]MVafY]CKWf>]MJkdfY]c;?KWf>]MJkdfY]C"
A$ = A$ + "KWf>_>Oc#KWf>]MJkdfY]CKWYkVQf>]MJkdfY]CKWf>Cg=3]MJkdfY]CKWf>"
A$ = A$ + "]MV^K6FFe>Gf?nECX>H]`C31hiQ1QAQ32_J2746564NN80?=\FX>HI`?>fbP"
A$ = A$ + "jPe2?=4PW76465>8lZa>8<:<8ll#0NJH]#M`bPOL2;3Z3F;ld#0NNH#HDhP`"
A$ = A$ + "[6kP`X`P`c31hYQe2e1;3naaL>Gie\MJkdfY]CWcU^IkdfY]CKW>W;McfY]C"
A$ = A$ + "KWEV]cXOdMUBI_Z[:DBUl:FXd:kcZZ[ZT:iE[Z:YbNEERoW4gf8DJUhljBo1"
A$ = A$ + "UBYIf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWLf>]MJkdfY]CKWf>]"
A$ = A$ + "MnYA6KWf>;kKW[H97>QjQVPFQ0d3<0<2\Oh`9\OH4H0X780]2=1e3[0FB\E0"
A$ = A$ + "e3=1]21X7H0H4Ho`QS]OH4H0X780]2=1e3[0FB2[0Z7J2J52#?`0`8`nQ37K"
A$ = A$ + "o`8`0#?#0J5J2Z7F1\THiJf>]MJkdfY]CKWf>]MnYA6KWf>]MJkdfY]CKWf>"
A$ = A$ + "]MJkdfY]CKWf>]MJklbgf`fY]CKWf>]MJkdfY]c2Hf>]MJkdfY]CKWf>]MJk"
A$ = A$ + "dfY]CKWf>]MJkdfY]CKWLf>]MJkLj[M^ZUNX4J0J6f44P]3m333S17:QaPQQ"
A$ = A$ + "nQ]31HC#c#3`ZPU6KE#3#c`VP0\MXOHHH<h#a6366j7f>4P=1=3=0[2FJ2[2"
A$ = A$ + "J0J6f44P]3m333S17:fH``#o`fQ0\9XIX1HE`BSU[IkdfY]CKWf>]MJkdfiW"
A$ = A$ + "6I\MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]c;OK3KWf>]MJkdfY]CKWf>;P"
A$ = A$ + "IkdfY]c:cfYciVnV]CKWf>]MjL^d]jFanCXAHm#K#0j6j36265fO2S231m1M"
A$ = A$ + "31X=Hm#S#M`:RE7d8\NX=80M3m131S2k?fX`##O#g#0J3F?d8D7\R4Z3J4F?"
A$ = A$ + "d64P^QnPQPAQm7KDH8X?XK80]1[7J4Z3FA<WcEN=KWf>]MFQf>Sni4F:Ue2G"
A$ = A$ + "jS;UbN_DEEEBUlHHEUFI]Z3EEBUlV6EEB==Mc`;M8=DBUVIkdfY]CKWf>]MJ"
A$ = A$ + "kdfY]CKWf>]MJkdfY]CKWf>]MnoKf>]MJkdfY]CKWf>]MVafY]CKWf>]MJkd"
A$ = A$ + "fY]c;?KWf>]MJkdfY]CKWf>_>Oc`bZfI3odOI2[3f8d64P^QM0k666nU9<<\"
A$ = A$ + "KH7#g#0J3f8\>X1hW6[1HM`6QfP0d=\3Hg```_<f``^QM0M31X=HS`jP6POJ"
A$ = A$ + "2=0[3f8d64P^QM0k666nUa66f=\3XK80]1K4F7d0lCSUcIkdfY]CKWf>]MJk"
A$ = A$ + "dfI6KWf>]MJkdfY]CKWf>_l\MJkdfY]CKWf>]MJkljl=3]MJkdfY]CKWf>]M"
A$ = A$ + "JkdfY]CKWf>]MJkdfY]CKWf>]MnYcfY]CKW9W]CKWf>]MJkdfY]cde>K\nAB"
A$ = A$ + "XIX5XM80K3j5j76269QQPnQNQ]11XMX5XIXAXnH=2=3]0]31HK#_#o`#`8a6"
A$ = A$ + "2j7j5f64PfQFPVQ6QjCXAXIX5XM80K3j5j76269f##o#_`fP0d>d2d<d8DO\"
A$ = A$ + "L>KWf>]MJkdfY]CKWf>cHkdfY]CKWf>]MJkdfiUW]CKWf>]MJk\<XMjL^Y]I"
A$ = A$ + "kdfY]CKW>W;McfY]CKWf>M>GjV]CKWf>[<KWQZZ^T:kEmUnhBYTWGEEBUlHH"
A$ = A$ + "EUD9^NEMEUDI_Z^d7G:Ull:DBUhljBgFYD:=[Ye\W4f0d:\I80K5j1f9<0\W"
A$ = A$ + "460f9d3\E80K6J5f0d4\VH=1K0J5f<4P]2m0k460fC\1PM2m0K52`VQFQ=0="
A$ = A$ + "1[9QVP=0]2K62`FQNPM230k9f0`>QNP]21Hc#[`6PVPe4;GcfY]CKWf>]MJk"
A$ = A$ + "dfY]c;ONIkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWGilbfY]CKWf>]MJkd"
A$ = A$ + "fY]cYNf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWLf>]MJkLj[M^nV6"
A$ = A$ + "8QFPfP>P0\5XKXGX?HP4j3j5j6f24P>PfPFPe3=5Km#;#K#7#0f2d=d;d7<#"
A$ = A$ + "\nPNQ^Q]01X3X=X5Hm#C9\NX5X=X380K1j6j5j368FO#_#g`FP0d1d6d2\NX"
A$ = A$ + "YHiJf>]MJkdfY]CKWf>]MNic;KWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkl"
A$ = A$ + ":WGf>]MJkdfY]CKWf>]M>ecfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJ"
A$ = A$ + "kTcfY]CKWCO]cFf`>CHC#k#W#0j2f6\MXGHW9d;\MHK#G#0j4J7f4d2\QH]0"
A$ = A$ + "K2J7j42#G`fP]3m2k<F_`fQ]1M11XCXMHC#;`6BX5HC#k#W#0j2f6\MXGHWa"
A$ = A$ + "j5f>\=X;80M2]3K2J1f#\L=KWf>]MJkdfY]CKWY[MjL^Y_IkdfY]CKW>W;Mc"
A$ = A$ + "fY]CKWf>M>GjV]CKWf>[<KWEEEEUDI_[Wol>?mY?M9Ef;4Z^T:iiEXT:aomj"
A$ = A$ + "BOLYDRK7NY?^DJjjflCe\MJkdfIUKk\D=KWf>]MVoIkdfY]CKWCeY]]CKWf>"
A$ = A$ + "C^fJ]W4J7j0j42#G`FP]1M3mT#g`fP]0M11XCX3XMX=XeH]1]3M0M21X;H;`"
A$ = A$ + "fP^QNRe=\=H;#G#0j4j0J7J3J=QfPfQ>P>Q0d5\5HK#g#?aj6f6\5X;80M2M"
A$ = A$ + "0]3]1]6;GcfY]CKWf>]MJkdfY]cXIkdfY]CKWf>]MJkdfiU?_\MJkdfY]CKW"
A$ = A$ + "f>]MJkdfY]CKWf>]M>IWff>]MJk<i\MJkdfY]cYjdffY]CKW9W]cdf>cjOgf"
A$ = A$ + "Y]CKWf>]MJkdfY]CKWf>caY]]CKWf>C^>flFCXcY`c01hiP^V2K1fJ2K1jJ:"
A$ = A$ + "lL#0N6XcY#7`Vc\e>nDMVeonEnhliIP0lL#GCQ]0K=fFP^V2?74PW1jL:d1\"
A$ = A$ + "i4j0jL:l<#0N>X[Y`FP]6K;#GCQW32`c0M>5j0fL\L=KWf>]MJkdfY]CKWf>"
A$ = A$ + "SV]CKWf>]MJkdfY]CKWGnlbfY]c?3g>_R>f\]CKWf>]MJkdfY]CKWf>]MVcC"
A$ = A$ + "KKWf>]MVLf>]MJkdfiDMJKkdfY]cTcf9KUiX?>E]c9kcIkdfI9^MNmjkSHkd"
A$ = A$ + "fY]cTcfY]CKWEV]CWciL>WciL>WciL>WciL>WciL>W;OkoC[%%L2"
btemp$ = "" 'decode string data to image data
For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
If InStr(1, B$, "%") Then
For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
If F$ <> "%" Then C$ = C$ + F$
Next: B$ = C$: End If: For j = 1 To Len(B$)
If Mid$(B$, j, 1) = "#" Then
Mid$(B$, j) = "@": End If: Next
For t% = Len(B$) To 1 Step -1
B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
Next: X$ = "": For t% = 1 To Len(B$) - 1
X$ = X$ + Chr$(B& And 255): B& = B& \ 256
Next: btemp$ = btemp$ + X$: Next
btemp$ = _Inflate$(btemp$, m.SIZE)
_MemPut m, m.OFFSET, btemp$: _MemFree m
temp& = _NewImage(_Width(v&) * ss, _Height(v&) * ss)
_Dest temp&
_PutImage (0, 0)-(_Width, _Height), v&
_Display
_Dest 0
_FreeImage v&
'Put colorpicker image on screen at xpos/ypos
_PutImage (xpos, ypos), temp&: _Display: _FreeImage temp&
'====================================
'=== Now get users color selection...
'=== no selection made yet
selected = 0
'=== main loop
Do
'=== Get mouse input
While _MouseInput
'=== Get mouse x/y
mx = _MouseX: my = _MouseY
'=== Only poll this area
If mx < (xpos + (473 * ss)) And my < (ypos + (243 * ss)) Then
'=== if click button in area
If _MouseButton(1) Then
'=== if clicked in CLOSE box area
If mx > (xpos + (352 * ss)) And mx < (xpos + (457 * ss)) And my > (ypos + (5 * ss)) And my < (ypos + (72 * ss)) Then
GoTo donepicking
End If
'=== made a color selection
selected = 1
'=== Get color where mouse pointer is
clr& = Point(mx, my)
'=== Make Red Green Blue color values
red = _Red32(clr&): grn = _Green32(clr&): blu = _Blue32(clr&)
'=== show color selected in box
Line ((xpos + (246 * ss)), (ypos + (7 * ss)))-((xpos + (347 * ss)), (ypos + (70 * ss))), _RGB(red, grn, blu), BF
'=== Update gradient strip with color...
'=== ...only if mouse not in gradient strip area
If mx <= (xpos + (246 * ss)) Or mx >= (xpos + (457 * ss)) Or my <= (ypos + (77 * ss)) Or my >= (ypos + (107 * ss)) Then
c = 0
For x = (xpos + (453 * ss)) To (xpos + (242 * ss)) Step -(4 * ss)
Line (x, (ypos + (77 * ss)))-(x + (4 * ss), (ypos + (107 * ss))), _RGB(red + c, grn + c, blu + c), BF
c = c + (4 * ss)
Next
End If
End If
'=== update screen
_Display
End If
Wend
'=== ESC key cancels picking and closes
If InKey$ = Chr$(27) Then
selected = 0: GoTo donepicking
End If
'=== don't be a cpu pig
_Limit 60
Loop 'UNTIL INKEY$ <> ""
donepicking:
'=== wait for mouse button UP to continue
Do: mi = _MouseInput: Loop Until _MouseButton(1) = 0
'=== if user selected color, say so
If selected = 1 Then
ColorPicker& = clr&
Else
ColorPicker& = 0
End If
'====================================
'Restore background as it was
_MemCopy scr2, scr2.OFFSET, scr2.SIZE To scr1, scr1.OFFSET
_MemFree scr1: _MemFree scr2
'Restore display status as it was
If DisplayStatus% = -1 Then _AutoDisplay
End Function
Function BASIMAGE1& 'quadmenu3.png
v& = _NewImage(185, 593, 32)
Dim m As _MEM: m = _MemImage(v&)
A$ = ""
A$ = A$ + "haIkm5LddLS[TjX>ZS?G#VQL1MDGWSb0T387J?8gjMA6`\1V8bMQb918HEEg"
A$ = A$ + "MeMW8R<nooZV598IBFTPTPo[oeojOo_<<<<<<<<<<<<<<<<<NYh?nSohOPg9"
A$ = A$ + "Mg`#QOogomomOnWoionocokoK;n[oj_n?QmM:_M64U9[`>Q=3doagDii[2Ch"
A$ = A$ + "f:^nkDNlXHBIa>Q]3if;6G7>2oFEonYR9U1ol?oco7LF>>PkGoj#DFN5mmlK"
A$ = A$ + "of_mFU_g1C:3nQOh7n?hZhh1nT;COV86_aEDO4mQmYFWlZhhAIj_n[ojKEIe"
A$ = A$ + "M4GEmADGlCod?mdeoHnJEcUKW_gSiKW1NoG57?b3oh?nSKggA>_\Cn=Gfm\["
A$ = A$ + "7OTlSEUcAN>h^CZ?RjhP[?IlmPK>9LZjWMnncZjjSb1?:7OJJ6jM4WAoiC:["
A$ = A$ + "DQQc_k<g;Eifd`?9L[:7^RiO?9o6U_C[kfYnhXLl9];E#I3X[ROSlndbYX?S"
A$ = A$ + "9mKPh=2kA]k5V;lIb[?:>nZjbk:7OJmA4^9fQ827nn`IiTLkU[J^88__37oA"
A$ = A$ + "DVZb_XOWcTgRb9<NY9YGDG=9L[Z?AiDXog9>N<na757OR><9o<Y_VMaSTS7h"
A$ = A$ + "<Ll[8_2K:de_#lKCZ[`H`NGihC[?NULLDVM5a7WgW4fW=7o:nNEDN=ik9Aj5"
A$ = A$ + "]5VT_V4GX^oKPS_RC6eSC6S;b?CJcPnUV`A^[LlhkZCdW9aeTjQ8mVDf>YLm"
A$ = A$ + "KSS_Jn9X>HJnIBJShLblL_[Ll9lgM:OGE^5YgTb[Ej5B?d^bLliLlMV762kT"
A$ = A$ + "lcW>77QKEiFlkCR[EaSihjbT9OGfLLMJ<=?^:nVJ3WEeWPgMfeElCSS?ILPP"
A$ = A$ + "g^cH#OWhh`Vh`6lCWSb>jbZb\9aeZlcg877jKH_9HK4\O>VXKijP?E>N`_S_"
A$ = A$ + "UQg1fb=\cATGbUK1feN;CbSGeJ>L5f=lMdfQQ>c]_g]\kCVSSb6`]AO00iWO"
A$ = A$ + "4^hI6gd^hKVS_JM8<7ooOOgijJdGndbYcZ;W5hkAWMOGn^aa_Rbf?I>NEOOG"
A$ = A$ + "mn>k\]Ef9]nfhhGAIgg87OJIcDMiAcaaJm7h\W9Q?Yei4jjZ`l=`ainnV`Yf"
A$ = A$ + "IM^^bf=MUk8]\]3oWYodb__5>ndeLl>aaalS_RcLcgljLJ>no<=NTLlM]A`E"
A$ = A$ + "IKlYiOcaO<Ll9[9kA:C_SLlM7oNN?5m\hhk\6iVSg7^Mbkihm^aaga6GkJC\"
A$ = A$ + "[bfhk<OTMV;g>fbMR]BVbaaJl=E?W`aalk_jmFk>hI`aWN^F>:7Ojnd:[??C"
A$ = A$ + ">n>i3`M>ji[][NKji[NEHfQS7HZ]UO4LlSl]aS`aWFGTihk`IgM?GLEf6OWi"
A$ = A$ + "M>Y<2jediX?5XNkZF7SMihkF_LUaIDo4ai>WO#VKl8>GfkbagI\IhLYLULl0"
A$ = A$ + "WI]aSg?_?P>kI0_[Nk:R_<7oEMVUg=_?mKS7enhkV7g=NgY?U[dfhW]olXLT"
A$ = A$ + "gSKIKmLeko\717oEik9VP#gbmKL6>nEl]jW=7?hFG=7?`>c=0c5=O6PieMMB"
A$ = A$ + "L\KmfZ`_Z]EVS?Yn?nmWiL>aNP=ggaDkBDaaWdWc^ciL:7?g_lT`OUf6_SWW"
A$ = A$ + "CSMZODa7:_cnZOH?b0imb_2ZmO6JCYRcEaGnkoIM4]_1hbR9a9Vg0dW9_7W?"
A$ = A$ + "IPl:RGhcmVFFae]a_UcWhkaC:kH>ndl:jG>2Kl>C:7NTLLDW_cl4b]1Ikm4m"
A$ = A$ + "]W;OHPbfZOG=oS9aI5WA=^:Dogm>Ml`<#l=9?]BoDf>SkSOEIe^_o4mVSc9_"
A$ = A$ + "C^lNBnoZ\Kh:\khE[:3#I;gNWg3oM#]ocZRc8\CRC>nRgC5OXlNWhLJnJRNa"
A$ = A$ + "moLTb:>>>CMaAdYSDfl<hh1VjG2Gaa=<^c0k3\YhM:_IH0P_]I>^QQQQQQQQ"
A$ = A$ + "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQan8>WM0ai;mMBgoTc;Ok8"
A$ = A$ + ">KWM2l3:AM]jmQ?NYjME_G4O:1Q=nGFRg9coZnmM5>N[b;omOogoS`Jli`ac"
A$ = A$ + "2cGEL]ElXSba3>fSTSGYC\4UG^Om?G>N8`G94mO7l^Y2le?Ml9h?A2>De_3O"
A$ = A$ + "]6;h\J_[4_gocococF_Cegd<N_hhMl`OiGnUbO_:>amVmIhhAk4hGHIi<Ll0"
A$ = A$ + ":YBGSW5W9lcN?VIlJih1O9hbELY:N<lmCMaiAih`_`XnMXG`W76oMEj0oZ6l"
A$ = A$ + "??ElHh3XZb;?;o3UaSSS[ZOkj_L577n4SSbaAHjJk1Ng:m8ko=>:7oAkWo<^"
A$ = A$ + "_Ll^aCGaYboN777nUb:m2LlZa]WC7<nNUnP_Idaa]oYaLl:^e:^G777nSd:m"
A$ = A$ + ":?nQE]UR_7dE60OJM4V8\:O`4loN0iiFKH>Ne_gaa39dk:mj8Ll>k62KlGaa"
A$ = A$ + "ib?K3mg7>NeLf^3Ll>mj8Ll8mFI7d8^Df5W;o#kQWY_LehHLl:1lS:N`cPS["
A$ = A$ + "Tc`a3d]N]#`M]#GiWB?<NOhhika[^OoMTS3NnZekTiiVSoi`a3NIn^I#9?B>"
A$ = A$ + "n:^gE`a30oNOW0k_Sf5Hl9ikg2ca_oLllMT5??[XN\Z^oAaa3^DWLELL`c[\"
A$ = A$ + "Y8THmocSi>nkGam7RaaihEn[LDgZT797_KM;a_OD>>FKd<#OcEaAlKlMaEl<"
A$ = A$ + "0?Wcg7>N^N;oN:iAca[JKQOo:]M8^kkZb;8m<GnmWSGmN:iAcaSn=[T[VSSm"
A$ = A$ + "#VJO3TC_ZakHlncaEfCN577c7kXLLeJ^`onEbaaHcjB_8>ljLnIba[fgQ1?^"
A$ = A$ + "KoOLF>NekNfaSGUGZj77[k9W6NM>oLhhC?3##bgCe7I?I1>LUMm>kjL^[PkD"
A$ = A$ + "<>=ljLni`akNGFR`QaYDe?O8Chh[6OlA]MhdcjF8ie2SO?_6#OFLlP;^RKPc"
A$ = A$ + "<Cf^aWQSSk<m^Oo8Ll^`WU#gb[5VihgO`[C7_^?CR3LgFW]_<N>_fAaH=#JR"
A$ = A$ + "eJ10LWhi`W?`oFloak[Ng<gJEjX\92\U2FGo\]bcLk0AKG_>W_?PGW^Mhh1_"
A$ = A$ + "]jmcl1N<ZZe#=cmDkWe<gAUV:^eZdIJhid9ON>mjLNo1_>MZemIBL4e]Am=0"
A$ = A$ + "jGLWd4LWhOiO;g>AmnZij]:MD8n=d_?WOVT6N>W666666666666666666666"
A$ = A$ + "666666666666666666666666666666666666gEXlS`:o:<2?lQ2Q?91HWk2k"
A$ = A$ + "8\ig=R;fWnajDnN__B_Zb7:M70g7?lkFY?kXcEj#6MQGMG1=]\WS?X[ZWaU9"
A$ = A$ + "`7;^RCTmAMLi3:SDiQG1VhKZ#nYk>]?RW^lDlKMYE^<SmS>`_6gMWWeM7VW["
A$ = A$ + ";b2h7:o_f4M>c_jlG##oId9AiL^Md>UmEjIF#i2GV0Nn4IEnVc3gI>>lY=C^"
A$ = A$ + "[b>CjTk_QSGUo`2nmW:oiFnMQoPMBl>iNO02hFMQ=[3Cihhm2OFadk9^Zh5i"
A$ = A$ + "W\PkUDnnd0n8Y9BGiNF_jl97?3P_aXZS`gTP?KRo=eMLBhc#hlTbG\5_;GO4"
A$ = A$ + "o]RK1o1HUOB[[\>Oo6[jO:d3ni`Wo`];QOlQe1em31:Cag\QOI^SS[RW#oHN"
A$ = A$ + "hZbNFZ^klDm?0ob>dMeg>clR\Pkh9FRWM7l?<:NBf?=a]]1_CE^agkk:^EGL"
A$ = A$ + "Zj_]SS[R7^<>ZoEj1lCKLNX:_EYcE];cH57G5oakYhhMUmZW[2_jND?kO5E]"
A$ = A$ + "i`_[:g[^[EEimk67?d?^_h^bIhcSOFLL^_;EobZn[AHImh8Ll:M6]_P?aj8L"
A$ = A$ + "lMjOIWW[^7ecLLeMV4nm8OYh4hk>ao7g7=kh70OTXR72M[ZOZZbclH?gUS[:"
A$ = A$ + "kZ6g\ROa]GQO>\J^DLj]jKk\]IjdIlM2EI^:nOVLl#DSm:kO5k^_#EUWAhAo"
A$ = A$ + "Klgan6ihPgRnB1GLZ?Z_RScO_6UgEa;WgFaE`lCbeOMjLeLaIAMg<oXihEmK"
A$ = A$ + "<QS7oNeLQccS3hKTSShN7nRZlVe=F_P^^j^PUc3\`mQSfWah#j^_?[^;8F9#"
A$ = A$ + "_OTLLFfUSgMWY[^[doFihLkmYfWEM_EY6k>\]bDKREa9D_?\m]b^D\N^JlhL"
A$ = A$ + "lRkBPk<7OEn9?fU_A>N46N]ajB[Z_[>9\ZkKZ:NiZnaih#e?^b^:[hhX]NnN"
A$ = A$ + "bXJ\nWUSGUg?:7_K=5ZlodO3LL^oYZn4khhlH_AK5U]]Ef##mMf>^RJM2jhQ"
A$ = A$ + "k`aEnROemMdEaaEe;WI>W`>=Zj9\N8OkLlEm9F]NTC4ejHQk#UZlPjikbak\"
A$ = A$ + ";LEjbnEo757GI_hcbaEjkMinemZhhhk\ilSJnH:>>^?2[h;Zb^9[W<2[RS[N"
A$ = A$ + "O`9HK6\;7?_72fUSW3g^UmEa;77Ze;j<LlZbRkbmfe:>>cCAKFnIhMhj9V_P"
A$ = A$ + "e98;Ef>\SSG=O<ecELl^e5Da]ZhK[\5dIhhkFfG5_:mNeh]Gmk\X6o7Bok>7"
A$ = A$ + "GeOBEI9hHMm5a2FS\hMgI\:MfgUSSZed[Z>YRgVK_>US[^?THYRS_KIOe_UU"
A$ = A$ + "ZeWMG>n:m:OGZn>`aANRcgH^6ii9YB3ek62f;?hmgI]lk6k7;ELlZmT56WAF"
A$ = A$ + "WSo?\7DFgFaaEUU:m[KL[C;k[Rg\Dmm^SHGUYe[_jaS3X^Ooh`T]U=KW[Ei5"
A$ = A$ + "l>hmig=n=H?EngalgDg[OEgeOLn1f#D5Fnnb<OW72M>7Vlo7jV:?eEF6Hgb_"
A$ = A$ + "YUmEoVZ<UeK^?gEgURLm:GFRkBeG5_NG>>bCZlaTfZZkOED^U;7N4LLDG[2;"
A$ = A$ + "WNil2[c8_RWm\hhkDf_37_Z<I:7_B_#H_3f7o<]9>jm7In>Xl>TGfAW_3m9M"
A$ = A$ + "G_k>ce[gUn^=<<<<<<<<<<<<<^K8\a?`c:=cb^jJnL=\Cj\KJMg#\^aXNjIh"
A$ = A$ + "GONfYgTjNEmIUoj9diZe_5W_a:N2_6HkXWEbdg?_nkC>K:7=MFY_khgQHo0F"
A$ = A$ + "GHEWW^ZcXC^NZJ_3Zb3EnLYlnnGMfgNeW7XMih[l5#MUAZb[c`GbjK7bkoUX"
A$ = A$ + ">0[5GWMiIYK=LjB?FbLaEkeSLidTc6E>^kl[FQTm]FI9NWZl0d5V3P_Af9Al"
A$ = A$ + "nZjC_JOZD]?gIAUWajEf9[fK6CigImX2ilBTO1O]K]CDU9CihMlahgAnV;SE"
A$ = A$ + "nb9\?_EaIeI^I:?<haZj9XO\Pe2EM6_iWYB_GejE]37_J_C[bcZm\JnLKRel"
A$ = A$ + "MWnBG9EaC^n6eC[>G:ZbTYLL5?U;cDl2\g;EY]J?OEEf7#]ggimOEDg7eCLk"
A$ = A$ + "Q#7hjj#DW]#4NU^Yf_G_Rm]bSRS[:;DkUS:>nAUEaedmi9;G57?kKjVNf7Zj"
A$ = A$ + "GMgbnYnh;EH31WQ5UN`2loKIiEMNPfQS[jK6nEc8^hm]3;lIiZJo<LFY:oU?"
A$ = A$ + "SUk>6YMhhLoRLO``gI]37Ge_jEaaEn2?57GMfQZ>[58\AiaZmdhMRS[b;Q0K"
A$ = A$ + "0\RS3KgY\1`:>ndn?`cEmY6omTaROeLLVORaZYhhEkMN57_C?IYSSc]1En0B"
A$ = A$ + "4nZ_UG=?Kl>_CLl^iB^S]3GYG\nDaaiWW;;In6:[IO>jEcaib4VGD=g]\4SW"
A$ = A$ + "6SG^RS[BWS`aEn^FNlEih9;XOSXo]>oSnMcfQMLl8?Z>;Vilc4>>lcUMj6?f"
A$ = A$ + "MUN2N77FEO;kd?BGJ];7WWC6dgEf34O__JlhIQ??#\L6>NnoG=6KhgGkh5_:"
A$ = A$ + "NnAhhak1k0YTX_NEomANLGOIjD>>7F>_U]IHgiZL57G5f^bc>oLTJL9ZakFi"
A$ = A$ + "[iDSg1fmWU>>^Jl7ioO^lPe3l=9`;P]9Z>kKgMK7RjUlhZEf78:7j>_k<GL:"
A$ = A$ + "DjIGLTe[liLY;>3Y:]Z2KGiYb7O3K[D=fKFDnIOXCG17?J3a??ooc_GeLLAO"
A$ = A$ + "h0EgK7_2o]o^LLFRhHGOEFn<9n8ihia7R_i_b?g_[`YOgH\igKJiFeha[hhk"
A$ = A$ + ">F5N\dlHCbY=WN`F\Ze0BmMnYSEl>aak:kDQE=FQ717?g_GfgSX:O?ZXnNdD"
A$ = A$ + ">^J]POULlZmX1>_fE2boCF?54nW]OQKjhl`gjE[9VjNQAE>WoFfAf[REU_Z`"
A$ = A$ + "^kjg_[D=V;UMREn83elI^B>nTkbXh_17_Z]IEKV#bmMXbO:OAiA6SjEP9kc:"
A$ = A$ + "l=Y9k=8dNXCFISlcba_Re__BjVC1Ko<TfLO9Mnh;Ej];7OBm4F?S>>>Zg[fo"
A$ = A$ + "RX<HBjUk[iIcaG]7ebcE<koLD2VGa:>N<FdX\MWa]`BEiUJM5W>>`EbZi<GE"
A$ = A$ + "fY6kmSTS[fcGZ`Qh^:\EmC72h\X_S^d;K7dGY?\5[_56?1f3=8Obc9>7fhoc"
A$ = A$ + "[c9\13jc:Sll?_J>>fgdHmGc]??Bj`YgZa8Q_AU;o`_1kWRmW6>;1hIIKDT]"
A$ = A$ + "c:6o82KN_OPeN;WN8_6Si?G?5?Ci[T#HbaOfFDX^4i[LMHNNlH_IT7C:kkFN"
A$ = A$ + "UgaK<WVAVS4i5UOJ28k_[Z2cSRSWeaLJ]cnMSk?M2oVOOEIWb_8YNV:>#o#Z"
A$ = A$ + "Wcm_T[[jl[ALknZ`ROWC75W];m^CgEW`gCQjP:mB5FEiF5>R=FVbg2M^jN3l"
A$ = A$ + "8YcDn]:?Sb?nNQ1k==EI2778?YN>77LmedjDElcn;\9eQLj]khBofaAhLGEj"
A$ = A$ + "mXC;33333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "333333333333333333333333333333333333333333333333333333333333"
A$ = A$ + "33333333333333333333333333333333So9nSoh?ngoeOmGBlWoiONh`6o=o"
A$ = A$ + "kZg7QogomOoolgomOogoo#lgakdUnac[RcZl:W6AJgYgZd8S^bU>mahiPX>\"
A$ = A$ + "C2N0h0C2;RgX^=;P_X2O4oao_:>1?[jmIYROgU6X]TB_EYAF2mZ:^[d7Sk37"
A$ = A$ + "?G??9\inmhWo[oj_nO5_ol?ocSJk4_;7>ln\4?;#>Ofa1QnmKof_9eKEJTU#"
A$ = A$ + "ghgKUnHljhh:NC`?nYOjWn?me]:\Al5QU[c3N07f8<o`?l3oGQm7oaODn\Xo"
A$ = A$ + "NekcBl\0il9oNAlYNVB_Q>Raf`BT_Dmo3Xd7SG;7_RgXj7V3;N67_k`a[NFe"
A$ = A$ + "k[deELl:mVK73>>j7V;32Aef82?d3caOOhhChHMLUYLLl]P8>`gi_B>>hP1#"
A$ = A$ + "J4YGl>lg:H>^BGEi1XcAl2TeWllN[#Nnf6G;7_R;YN>o\XNYR[D5_:>8\G1h"
A$ = A$ + "NZd_J\3:>^Jlh`V:inJkhhLkf#0GFaak63n4Q]EUae`aI>DVW]J^GHLkkbaS"
A$ = A$ + "W[hP`V:ak6PSc:Aaa[\[2\=3BSZaS[6cM8ahDDLL>nIT]MI5`gG2Mh^cSNGi"
A$ = A$ + "hX>J277fn0l[M6[B4o`nh:YbfQEBehOkhiEf><caig5SCYSS7?7]ODUolHfE"
A$ = A$ + "`Ll[USG=F5egZEQ=Z?Z\?A77?dU`fMAhDl#U]3Ak:FjVSGT6ZaLPhZSScBNN"
A$ = A$ + "U\>SnRaHQhaS?ALoh?>>^JNL1_EaaEciDmMmESE9d3\FXZg7S]MEj7RRSSh?"
A$ = A$ + "#`kDm;GIcCeH_#I2h_LLafEi8LL?NlW;7OGkZL6K7Zh1M__BGk\[B`7SncIM"
A$ = A$ + "De>:KOl\T7WRZm2KG5NnWXON<>65#K8g?nmTS_cL>EmM^ck[deELLehBRhW7"
A$ = A$ + "k3hJ\TkW>J_DaaGa?mhaOnLLH;35_I7>>cED[U?\cXZodMn>PBGk\MHloES7"
A$ = A$ + "2SmMEjbbZm[BgH>P=6kPihG;7G9Mf7_RSGI?`\<eVTQ4mUN6>NUM?P4jZZ]9"
A$ = A$ + "6g#WL6>^a[WSSnlfUSSeY\Z^?o]n:K?OTd?457OeNK4]g>27_Coa_kaLlj#D"
A$ = A$ + "gW]e#6ieH4lfLHcm3SmW7NFfNPhk]hknH^Dlh=a_G5FHKW^d?gfAUOca?B3E"
A$ = A$ + "N<Wn1bQWAlk`6oEo^ih_NTGo65`H5DQ5li:KUU]A03fN3ZmbdABo>kSc]McY"
A$ = A$ + "1hQ\N`]OZVKHELK>n[7HmGZ`Z`2^GekPOObLY#OoI4?k\Yo>jBGIA5FE6Vc3"
A$ = A$ + "666666666666666_>L4O=2NFNoic[1GgNfo:eo\N<MM0kd=Pli33n:U:oeB5"
A$ = A$ + "Zle;WYl_c7\D5VZl]B?jZCIO6CEieM3kj[AjF[iLiFUDMNF>:bjcdbiEk=P#"
A$ = A$ + "#mkAGKmEnQU:O=cZboZeC>G^bQAUGj2OElf]6\gimI`>nJTE[5M8`f]E2RON"
A$ = A$ + "=K>2bkY#\>jC>;0ChhCFkm^f[[B3dO`^njUE[e_JOXQh<[ChICZC[>KCI9_f"
A$ = A$ + "bg1Nm:>NeNgP;?DkCJD>cbZccB6C7GCFgaN?Lbj0R_9ceIic5Yb?`DUOoUOi"
A$ = A$ + "Gn7a_j<PXl3;HmniWg]gIbj\j\IXRC\?ab_Kenj<dO^n3?KEieMM=H?;7Gm\"
A$ = A$ + "^j8eJdGe7hZaeT;cimgb4D]g\DlYZl;fO1ieNlZme<ib?^_HFoDkaHlK:>n>"
A$ = A$ + "k_NenDnMHO6Lfj3\7RhmnTjm17DMNFDLlES[9gFXJO[dQ:n5fKDCihLjNeWG"
A$ = A$ + "TLiGVSGaiDWcD<WB>M^2>>:_^[WIdMZ?Rl0;h\Xckc8F0GMbl2cLlZnVceSi"
A$ = A$ + "c;f>UaEiMTNZcTcSVS[6352;77AJcciFaKEaK777kY<NOIbQ5ekgANmAihLo"
A$ = A$ + "8lkUgg#ERJ<fCm54ii^W[_Ra3SnC^RlnSRS[fk^Zi^X4EO<li\[J<f#haide"
A$ = A$ + "?n4>NF^CLjcbaIn5o^8N[TLKQc`aceGHlAH<W<Z\[ecVS[fk^k`ai`bSa^j<"
A$ = A$ + "8YT>>>;EWKEnm^[mWO4>N0fFD#ZhhP_Uko2Q=_V5i_oRbFPlI48Gn_R_DIOV"
A$ = A$ + "GEoh1_2cQQiH8?cBeLnidBMFnZlOMWUSW][2c?NGihAiGfoR4iKnmaHdD_?g"
A$ = A$ + "o5[;P_PbBf>70id<\W1NNloE26O0g?c[NlhkFncmMPig`?S;oEc1m8ci\b7>"
A$ = A$ + "Vak>7W[OQoTOjk_b^:XlUihX_9P<gS]I8JoY>SHLJnZihZnak:oj6[#F7ESY"
A$ = A$ + "QU[TSW][bW677O_Mjk?]Mn:kZ<aVQZno_KLLeh[>;7GaAE[OcEba_Re\nA2n"
A$ = A$ + "kHhl[c?CEO4ia`V6I1fa[CVZKZee9cOj\IHei4K7>>c;DS=C=oR0[:CcSAGm"
A$ = A$ + "LFZn>`4O7YZ]9B7EmGegFj\[BeLN^;HeN[8o=YEQ5eiMbIhhIN7B[M]IhD>^"
A$ = A$ + "JL\IYkk8C;WVbaEnH[ZgGaakJS=I_el^caklI8in:aL>[2Kf?cg9WIn9Ef<l"
A$ = A$ + "A`aAHZl3cic>?_WEj:CccEK:7_JNlEkO;n_S`Z\?NUo[9Gf<QSo^<^5l==0f"
A$ = A$ + "o70m?_>1lJhWi_lLob[maAih`FEifC<oJWff:olRJ^CLn=WGkn>2GVZl9<[l"
A$ = A$ + "e<Xl5fA9G>RnMbnT54Fl<TV8?GUGSbaLn3f6Pe94V9c[o^Q>O62[kAia4OMR"
A$ = A$ + "jg?3778[WWeG<`f0Caa[b_IOYbI:C[d1nMZ\GGenSRok8\ila:oGC^m<2;g6"
A$ = A$ + "_SWLG1g>][><Zkk2KeLo>kJRUCccVO[lc:Z`UCgMnnaZbdYnjUZ`YN>o<dG#"
A$ = A$ + "GN=W7AnKU>MUe[6666666666666666666666666666666666666666666666"
A$ = A$ + "66666OGXk^CjAMg^\cMVd^g_B[2k^?WCo^bThgike:LOoLT`bjDGmgWhMDeE"
A$ = A$ + "bgj4hGa_bdLUONJjm[4l72ih^cgIXR_Zkd:4_:o:5WOjl_4Lig>QUUMZk>CI"
A$ = A$ + "hg67oAD6<aGVEaaDB^o_:1n_157GioLZNNfOK\CKFL>Qg9\\T?KfM]EPPbUM"
A$ = A$ + ";3odihAi1kG`2IU_Eh<LlX_;UNX^WBDQ5l>Uo=62l1BEgc7\PkR1>mEn?4V["
A$ = A$ + "5QQO?LoQ\CHI9kS9hg9NVb?eZJGgE6NGhU?J>^Z>_bOSL5Ll>o7IEM1o\8\:"
A$ = A$ + "On77OCmmXhi<WTmA91DUELN4nGWYQEMOddaak:3W4FD6n9jc8>Z_e7Ucii=Y"
A$ = A$ + "PJL>kDo<aOZFaail6joUC75gCE>Tm[Q7QSGE^^CH?27W;Gj:3o4k;o<LlES7"
A$ = A$ + "4agEbaEOW5L2EOnI1n7k\XlU\hiZkBCEi0;g=>n>UQVS[k7_b^D1PoB<GfMV"
A$ = A$ + "j7F#o`EL5EmXbOR39oKlkSadcne#F`hjHoDhMQScB^<dLL]_9\b?nEiok^Zj"
A$ = A$ + "7d7<B3NlgEO?^SSWSSZgWWGBGI5GfX2k[TScUQVS_oHERbg[\OLegIamc1on"
A$ = A$ + "lcRdFaYboMNl=<oM7>>j7?dGL?KDI[Tk`HE#IhIm;ZOSLlWaL>ShTi?ZkL[:"
A$ = A$ + "KeDegM5gSk[S55_5[edT`nXihEUQ7egFo9caaH^cmCa#a;N4fEA=_AFPMADg"
A$ = A$ + ";<Zl^b^e7US[^cTZ2k[PSKK7NO6?nIhh8OD5f:KRcU1<?#5^k\MEnf]MHDoZ"
A$ = A$ + "FOo>>>OG2X#gJOS_7LVj7eJkXFGAX?:9d=5WS;3H>^:=ZFkX9Q]b6<il6G7Q"
A$ = A$ + "ke1EnaLlIkGU>>n^XR3Y:cWFoXFWSMjS<oKZbT^bPEi7\_0ZRkZ`F9H>>[V?"
A$ = A$ + "4J[H>njmMHN\8?3>NfN]C[ODOkFaaacEbAihMiYLNYJL6EQ]BbSM^jNh:K?`"
A$ = A$ + "Mf?4ORLLnnN:3NLfGenE1f^2UeI`g3=aLmcQ=nM\o`bgUCHO<U37h1ZeR9\A"
A$ = A$ + "6OGLU7;2[Ohmj:3`M55#eM5F0N^iZ`Z^[Xcj2R?<F#>_3PjhEUQOZLlLINgL"
A$ = A$ + "6_bmM8#VGY#fN]LHAm:o\:NEecEY;bW:mKEklZlTbfcC3KEi3b3QnFM?LU]7"
A$ = A$ + "hdb`7=GkE1eMUD6?Rd\;mhdDmk[diLl\kckd_9i[ZiKOT`>]<R_gahfDC;3O"
A$ = A$ + "4ee66666666666666666_WXc?2YfK\75Mnb6\N7lcRgS3Kf7TXdmEjA\^7h<"
A$ = A$ + "<eM^CW6fYj0bOihQmM=MU?O3nkW75Vj;J>;jF3oZmUElN:OOBU^_BO3NBW?l"
A$ = A$ + "9kWAV6f9j#gN;9WOF]7DNDn^\_I>>>cHGajOeaaAohlcDk;?\^9H=ggAOGaQ"
A$ = A$ + "bm1?U_]B7V\WPVVVa_keYilLlli#>j[jZf[:<7?W>PcVUEkM`:>NUnZlo:Zc"
A$ = A$ + "NOl^lN1C5F\OeFY3:m?N>o\HM:I>Nl<eIehCm<kl\hhimHgE^O\Zf3Pim9Rj"
A$ = A$ + "g_:>n>W74enAOg`2M#]WaEieX=dT`Rm#eMPkl^caaniCMVS_:O7D>MDkSfG5"
A$ = A$ + "7_j<e\CHgUSGUGELllN7chHLL<NBeLi_ZcZ<>GaH?N>M?Po=aaESE9__Q_cl"
A$ = A$ + "Zk<7W[_DLe[`g1U5HG]9ekG=77kEkln8o^`aI1c?bLl[USG]W;?kIEV[kNEL"
A$ = A$ + "L4FF_EQUUW977c7fLlccaIkM`Le[bg1UC7Uo8nIg?NXc`7AX\[bMH\:`?<n9"
A$ = A$ + "OF6N6LLUMEfUS_cL>cm;=YNoA?NlM2k[H>Wh<eMgiE_3Ll>kZ0KWGMnDDmoo"
A$ = A$ + "^HGUkDohMf>lCd_]m\ih[\9nEhkPbQafEaf>l^aaic;^2ijQ[RS3YbO71A]g"
A$ = A$ + ">hg_ROZFCcZ`b?We1EnZboOK>nmRS_;^3LlEcU8OfeGI7_:k<bj0_72DiSZd"
A$ = A$ + "dLl_K>>\kCUXh2Mg7Jii0Si7D5f\MZWX3EkQAf7=I>nS1\O42UiG=7WmM#\O"
A$ = A$ + "[Yjgagfia15j7\SVb78e]NPPk0`nWTll8F5FXOCdQLLUoV16O4:3b_O0<onE"
A$ = A$ + "i;SN`fbkZihI>C5OZkg[VS;\]NelNELQ`V4Ea7[?C3k4M8\kGUon9[WLjYJC"
A$ = A$ + "H>nnhIi?IDfJLb_GIWb0MnCX>K\1^SJ>bk6fYj#locaSJOb>9oIK7JHHHHHH"
A$ = A$ + "HHHHHHHHHHl8AWo3jAi;?jB?eI[[:lEQ1a1kCR>JnmXnAXLHDoV:_bj<[O?;"
A$ = A$ + "o\dW4fagOLEH7oTCgmPMfOoT5D7b[;ndl;c?>RO4ReAELXJCe]7I0oTOV:n?"
A$ = A$ + "SOFjKSSGEGl8ihIoTCWnQeTQihH?2>I_OXTLoL7e?2ajHg_e]g<idjIhWUnd"
A$ = A$ + "ihZmiD4V[LMmEkWJ^^5W;3EO#ijaH=]SekSUhmimkGeNmFa1Qo;Q3KUO4ZJ_"
A$ = A$ + "56jHlk:A]gZhbQW]OFjKQScW5PlnTnAaa[>[;Z_=ce_ZnVAJUU:>>WO?BH[n"
A$ = A$ + "n#X3EmS?QSck16caO\LL^<IUO4R7Kk^LL^^3mYajUR3QakTU797W3;bSak0m"
A$ = A$ + "#U_WbaOFW7`_5>>GOQknG^<IR<iL:X6[2fKNi`2k801W]PZn9W>FU7177iWl"
A$ = A$ + "ihXS7FaaO6nIYLIlSbFJg9>>;im`OEohEfj2]G`NO]RScBnl7`LLEOcESgEM"
A$ = A$ + "Weo\hhifGPoM4>NFNDnIY_I>>nNOenZ6XJ?CG]GWkhhAiON_CceW<77WCR9b"
A$ = A$ + "cTS[6O>oMUMih?SnaEjdW67G=F5LfGhlm4IBohlHEPObA=oZZa]WUZf#?C>^"
A$ = A$ + "JlCEjnDkZlXlcBicNdWhI<JjL>EmQ?AV>NLEm_ZO?Ek?FO[\Sg[VS[2cMb^:"
A$ = A$ + "OZnI^cHk#doBgicAe_`D>^b^g\Pi3cekZ_io\ihilYbgELg\[bWjI<j<f>4h"
A$ = A$ + "\S7_RS?iK5:m5Y5;?K>>KWcc`aAiaSHlhOjh:hhlIAGQS`aEfAC=G>57G=FQ"
A$ = A$ + ":kH[Vg=jkT3K5_GaOc]c#i47V757OEn3BlKOKfEi8LlMaD>NeJV`2c5ESA?4"
A$ = A$ + "5GD98ofaMHMBaOci9Ek>ca=7WU:>Nel#ijm9LLfWnLDo84?oHelUO6LLeHTH"
A$ = A$ + "M8o^ORf>\bo15oOH?Y[fW2=e?i4oKf_lPi_2M>oLH7VLhbi1Dg5oFUonQmY9"
A$ = A$ + "il;J7bcU>caca;WW`OSe[\b>M7e?;aieLNJUOF2cUmCefQ0\=ZDg]2GmLDVj"
A$ = A$ + "WLZVoZji<_CU>Zl;3Nm0>ZO4RcCX]R:oT1G>`fdZjg?SOFjCo>ZXbo1YNfEf"
A$ = A$ + "^R]GedW=mm[b3MnkW^l9h\ZiB[Rgh_c?SokLnY[\QCWZO_;?]b77]BW<<<<<"
A$ = A$ + "<<<<<<<<<<<<nn`cb?2=9Mjnm\oDIElaY=NNn\;ai]Zh2aGW^Y>gZ6g7\j^4"
A$ = A$ + "oIV>M2O6X[R?f7i\jL7Q`eU^[RW#n4g[7O:HeNfA]F7?ZdIU4LB\n4MkG:\6"
A$ = A$ + "=[^Ce21aGGJZf7T\TmmA6gK>>kgJD[UlS:MDLEn\6PeIW?OLI1g?dZmE=cWE"
A$ = A$ + "kG:`]3PmN57GlMI?BGeMORamRSWgKYEkGR7Ej`RRKQmO1OVmIN[jM[fSSEYM"
A$ = A$ + "6CS;hS]<^oLL\WdPOI3Q??g]:X67oTdAacDLlhMhmmLFZfcYh\oZ^;0[hhMO"
A$ = A$ + "CXZmR7cbmWSS_Ocfb0LlERbgX>9MHA=F5EOn1W:7>L>?Ea9Vk:_gmDY=6CO4"
A$ = A$ + "?lhQDSEAeNi^Goo=bacBUo3NU_32n1dLooCBW>1We<dgJFhaWW?3JEf3Q?_e"
A$ = A$ + "E2nVd>nnX\l^`3nFihhKjZmJ9g?HenFNWdYB`If:OV0b2KgS\OR3];Eb4K7R"
A$ = A$ + "f27eg7Uggj6g3>>kgJhaG>I\:hMkj7GU>\`m37Q5WU7>Llc`hlc]9Eld:>>K"
A$ = A$ + "cWEfE1fl1j2\7Zihg?>^bN7kbaW>NlSHG5U]ZEf27We;`g`I4Se3<fLEJ_[M"
A$ = A$ + "E2NO^\:on_3LQ_=>NfN7ij=hK91WAQlhVg9MDl<UMEVd>Ca13MPm=A#?DYmA"
A$ = A$ + "\[BTODWEYg5n`g47Oeigl\S7GU>:NfAihZiBZ6go:>>d]MlKjVCO_ihIA=V3"
A$ = A$ + "0n\=FQMB75?CaaI9d5N\:H\dLhRaCTU#_DaIFfUSc_[ak97oAT>\Xhh:Oa\b"
A$ = A$ + "F;HnY[\iGejLV5caoLihC7gbEU>\D=G?EhZNNd_m4o0DWLVm5PWci[7\O4Bi"
A$ = A$ + "GM^2>nTdQm5>8]klI#8L:o34NO<^ZlLRIo04J7Z6_EUNXlmAAHcni8ca_?0k"
A$ = A$ + "aSEcMlIT>lcSWYli#Z`EmlXoLVG3TWg#gLX[d3NngH>WlkJlJaAm[>?RdIbc"
A$ = A$ + "ZlI#E?78hjMn1XMe]YniXWMmYQQQQQQQQQQQQQQQQQQQQA?faOCM50k=GeiS"
A$ = A$ + "[:<hiLh[R[EQ;WFE_GfO5emKZb_Mb[1`m4>O^_WT>C;[De1EYeW6Vj_Y^:<i"
A$ = A$ + "LWaQAMVVAmg:A5^LJE]GFbl2><LkaZb]9ie^kE;L6ojBWYUE[b_LnjC2Ml4N"
A$ = A$ + "oaN5Xk<4SeMDE_aki:dol:A5^\ooZkm#HHM>_oGjlg079_b2loFEY3olZb:E"
A$ = A$ + "HEYe[R7n\hhEnKZ757GiG9DWU=eNl6l\ZnccW7CV;Smd2c5HOf22CeM5J5g3"
A$ = A$ + "kmV9iE>^SmDSJo4cgSh8MhWGEFE]g9Sj4nIGMoJ_J<aOCMUY7G?U5`=DLfZk"
A$ = A$ + "JFDW`2_7YD_[j<1UooWUSG5gil:7g:^HenSGaa3YZ\Jbn3>nKnN]kCRSGi_Y"
A$ = A$ + "hl;?oXYn:;n\jX>OmZna`_Yd]ELLhG\D_[Z?#>>Dl`9LLeh5DiEeHmSdTgk`"
A$ = A$ + "k`a[:[VbaimRik>hlWbOCaLlEW]6D7`YUZNVoKEM1dU^j2FbkYE>n`kZJCW5"
A$ = A$ + "LNZ_2>n>iEHWSlnhM7>NEIURSG]7hoDhhZbRZ_G[j7_cVMALYlERLIlTjR#D"
A$ = A$ + "ckk\LlEj3hQ7QScjDENE=WFTOcnnPYS77_kdlKP?I>^ZOEN>XMigZkegZcOP"
A$ = A$ + "JLVI1cGJRmB^J>>VOZ:L7QScL_Zl:hHEfGYbfQMLLFZhh:k:QnWnD6?^ZMm:"
A$ = A$ + "o=EP9SE9:kinaEc_RWc[RS[B_[PSWU8<ll4SgmXLLEkIEN5j?>[5EieYLl^b"
A$ = A$ + ":ca[mgD\?enXS7W[SEf9<Z;HM#MO#LF>>Kk1UobZR_^;7_;_RnE`m:T:LZlH"
A$ = A$ + "57_[\jKL>WChZXn<kG?aH^ahhD8K?0lNC4dNReQZj]SbaEa9;H\J7QS?ADf#"
A$ = A$ + "BEFYdg:>NGIUihJYbnQ1fIlhC6gHEi^bWZl<hh8NfUS[dGUXjcF=obMhhMUE"
A$ = A$ + "OSLLEIQbOCEUWIOdP2X]QJ<fZeb6O78;ESUl<LLejoX6?\R7Vc3E[andlZJ\"
A$ = A$ + "Q:KJ>USgEFYRgEU[OJLLTgDUUW=?cUU8NI^F4F57OEo=ZlB77O7K8OF>NGNM"
A$ = A$ + "bgCP?UA5W:>ndeeE9OSLLllc^_EZhh\NPnCEYOGMQBWkhhC]I^:\IMEamDOS"
A$ = A$ + "X:_ZjO5Bn^cH7>NGIU:]b?kCSSWm5lX\\cOCMVd:jg4fj=RCfgHQ_77?7kGR"
A$ = A$ + "lLG1GXJ]:Di5`[#JWOGho\Da7k?\`n1P776dEHSKnICb[hihI:M2e;An8W>Z"
A$ = A$ + "hLBIEfW`TSW?ae02PWWHl<dNVOnIA^N8gfAmLnI:mR[;jdI>nbL5>nD?_J>f"
A$ = A$ + "Xmb:m_;_ZNNVO3mBU>ZgMEIU:]b?kCSScfm;Nf:o=eEUF8N[\1Y:mkd[Mn]^"
A$ = A$ + "dIJH1Fio_F5g#7ShQoNAf^]Ee;EagZb3ff0GMm]QQQQQQQQQQQQQQQQQQQaM"
A$ = A$ + "5HObV?[a\_TYjl\Yl]BEQ]:]ici<l1>[R_Zhl::?fEWboFW_k2UGCl=IMQAi"
A$ = A$ + "[OVh[]jZokZKkn]>o4fM0Mk]f\^f9Io>CgnW=cCFiKXbUQCBg[0WAWH>CUDM"
A$ = A$ + "^eDiYMlg?CmeFk`1^2o4f[6Zc;2;HmeF9Xn_[N1[Yf:N0:WFUfHo#ME[ilId"
A$ = A$ + "Y\Nd5?X<X;<8^Vj3`VZkE[KIGLSeolXn9\G=7G]7Bil<dEFhWQlLgi`4kMRP"
A$ = A$ + "W<ag#Qm02;icPdE\GaZj[J7MZK?>VmO1Ho^T3CU_9CaMDgAd:OSAU_f:NoLN"
A$ = A$ + "^k\PRcD]jn=MeI4i:[G^J>>GoQl2;lcZfGZio6QYRSXdWZkDIeNBj\h:d9Ei"
A$ = A$ + "ZJ_]=agT=i<dQWaaAechb:EJ`aMX?O:LLd?SbGK`b4>>joBEVYR_ZjJEHAI8"
A$ = A$ + "O^oSa<]boME=Na[#WjhhH?jbmkFiKbZ>?FZWaY9jO_J_6Ga1^Bo4fMPS[6?>"
A$ = A$ + "VK5__;II277co?7gG177eI:k5<I<\Ql<ihXl<?Nh\`Sg5nV<U?3R7[22[BoQ"
A$ = A$ + "m?hm3L77Wo6kIlCHg1>NP>O7LN?FZnM^\Am=HnMANW5lLn\9XhCihGe^=Kg\"
A$ = A$ + ":Xl7_WAWjhhIAegBD6YnNWZL?;AN<On6Vh[]hiMZh^lOce[iWo>`akZCbLXE"
A$ = A$ + "2:[cRZm1>S<\Ti8Lo>EB^M8WWDS1FQELlYjdD>NXG:O51?6_ELLHWTliIHR_"
A$ = A$ + "fZ[?>H?4FOo4hh1Zj7H577U;ZaPXhhMO[7mIRccEgg#hd5jidaZ\Koh[dYYf"
A$ = A$ + "EAaMEfSZj<:cSE9R[\ODNU_fR[giho:mCHgUaSSc09nN6[_:O7E8Zn4i`5e7"
A$ = A$ + "ZjT:>^Jn?Mm_VCgMihZbS[#WDLLnK:lkSiF`?CaaEci4_O^^DI3nhIIK7Zl_"
A$ = A$ + "FEYIelBNg\[BX[Ao0:mU5VWY\W[B`LTDa7[?XOcZd^b^:X?c^cKfdaZ\[>ea"
A$ = A$ + "aalgj6;3TMhh:mDUWbf^MJo1Wa?QM7ihZj_ELl^hC9MagA\QA5^ZaSOUf>4]"
A$ = A$ + "5WjKb>37G=^OF?Vn=_?9>NX_ZeAK:?S[kRnDgImNDndFEJWU>>>O^OEXCo?R"
A$ = A$ + ">Q_Qdmk\4jZbFhk`aEnHk:k^G]W3`gn>[O2;;MkCVW1PMfjTMj;]JN9\XlIW"
A$ = A$ + "\PadLD>nEdVo8jdAhhPgaQK7>>ggTBHoVBegKDmol^ba34j#5?7k7TYLLFjF"
A$ = A$ + "37EI9ThiIOWCW<IL;G1?OZ>EIgULlXb3CfC#MLl^aiWmeFMSIZRScf_WCOU^"
A$ = A$ + "Wc3ii0lZ#N?Ta[QOV3]JMQIoD5RSX]RjialKSnObc5DigNhh=S[VS7h<jDTg"
A$ = A$ + "HOlE6H>biO3c7Um=I:o_E>mc?3SmMBM9hK:O7FN<fImH7o46GNL7hhXNU;;h"
A$ = A$ + "fm1jVcFEH#n[jiI^J6AiGfgiX2cSPSO5j4g6D5?ZlPJ^blc0OFm\>MG]_33l"
A$ = A$ + "XlCHZjjk0RbPLk#FgHK`YR3><PCDmlLo?EY[jmGY7W5WEWf5AlYl1FkjG\#l"
A$ = A$ + "TemXN=GN_:?LTlFWO2[:]=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
A$ = A$ + "<<<<<<<<<<<<<0PoBXk>_jETNEnLfZO?O_Q`?Obm#eddW3?l=G[^W\Z`>g]E"
A$ = A$ + "EQ]CWQn^KnoC1C_c[NfYgTk>;U?`AU6[li9ClY[EQ_c7e`gCFEHbMK5bcEQ5"
A$ = A$ + "o^BGZlASLJlXhH_B\cMNec>mVLgIYhh:Om1lU2[R?nLoF9Mg5DZ`^Z<LR?I3"
A$ = A$ + "]O[2;b3knKIiC\oLUo#R[KEn<]WAj=i^cJbM9B8`OW`a7jO7nCQ<7ObM1Ub7"
A$ = A$ + "o`nFMl\>O7#emR6WnQNFe?1l3<:YcG>aaaEEGOWih<G0U?GAoikTNZnXce5`"
A$ = A$ + "OT`QAEG2n;GOfi3#Dl>>Mfa?FeaMVLgFEU?P4aCEOeMnc_\PbT7U_lh>`aAO"
A$ = A$ + "JZklZLnVWOU2Zab_CjU3;R?V3DeG7W6MLllm#5W7cBeM15;hk#`GNcnaZcba"
A$ = A$ + "EiIl>8?>e_CFaaoTj;OWklZ^jOUXV3c>Y7O7NDMgI]jn\YRS[^7ZjJ?b_OeM"
A$ = A$ + "15Bc\_Rl8LlZlQjiX<1aSjkUO[Ll0C_c[bSE1mSGI;:`9IoOo>Ygdk>[ELl8"
A$ = A$ + "=ES[Q3cZb5>N1_Yb^:X=NUO\ZSScaCn^ISeSLo6PK?US[J7o9ba1WE9[\MHW"
A$ = A$ + "ol[[o[9Y7GfcLLh;9GeO;Zgj\5YR3>m^P:ng>NnEIk`:>^JliZkM557WULJL"
A$ = A$ + "WhWG5DOg?TMJCT5<FkZb[^dCiKh?bLCcQS[gikQ:dG_Z=6b;\NV73GlM^ZaR"
A$ = A$ + "]J>LC7[26W?WoHYZ\ZB#Lcndc?1X^WTZ^c[fUSG=Nl9YWZ>ZZODUm3Ee_EgY"
A$ = A$ + "2I0mLWk2ZPKSl3l=aLKGNn\ChhEf0M27_JLE\l>hSI?;Df>Xj>_:ccajRcg]"
A$ = A$ + "YIPbelHEVVNEf7;;h>MP3;W6XN[J\WIkZDaiD2Vg;o<`ic2\GdIihZaZ`]YP"
A$ = A$ + "odW3c4>NggMoDhhMgiEZln^S7OJj5QMUDIWQZjaMVOe>g5DI1S;YjK9Em?NF"
A$ = A$ + ">>KGeMihgEniSPS[FcG\VNZi>R`_2kVNLhj^k\Z6G?Z_[hhLhj:G`gFFMWHQ"
A$ = A$ + "n#igWG7EVCZFCGEk\:>N^?1dg37V_E>n>giEGam#gddKWk>[:KD72JONF>>j"
A$ = A$ + "cGeoLWmJ21SYI7>NU>Faac]oEmKl=ca3<m>_jZ^[5WTN\d]O;jh_PK^jNOU7"
A$ = A$ + "gb>g5D:kG29Kc_:>nTm;En>[BaOc?C=ol_M>NPln^SGCm7QmTFUN8]#meZk>"
A$ = A$ + ";nil_SmbDnnMB5>T^Eg5D`>#Zg;WObci68?WcLlW_S\Z^CYhigT]Q3NO<g6E"
A$ = A$ + "lEE>m=aa1OJbMNec<mZ\YEec[V3LFokVW<W?gi^P:\WBem1Een><[;X=BU^Q"
A$ = A$ + "h1j07F^MU:nZ:oN6l[k6G?S7]]BkB?fNT[^k\Z\SIGLF5^Z`fmLlKC;oDiSY"
A$ = A$ + "j67fh_c?Sok^bY7Im[QQQQQQQQQQQQQaW>Dn\S7Aj<9=HOE2F7#>LEn;ULH?"
A$ = A$ + "R?EYCOEj]:>idMBLgi3DZRG>o^CN5aE^LV3GElmXh7?BXf_4?RdQUEjAW>E]"
A$ = A$ + "fRibo^efLEnLRoMQcC8]idE5olJYfi3Dbn6Y^lk4o1CGhh`f5^71ohIbaaNG"
A$ = A$ + "kZGk7FbYA`KF]GFbL[^mQ5\;m:>>2oTbT\0KPciYZmTUZ\D]O1ZFCO\fTEn7"
A$ = A$ + "8N?[d5V9]kkl7AMiYg=>nE^7EZhhieICeg7GWW?_6lnm;ooajlYfoRZlZ:O>"
A$ = A$ + "ao^`kmm#`J]GU?[hhEkYT#`N;CaibkeV:m5_o_l;oR\m7Gg4?;2KUo6;_O>O"
A$ = A$ + "FLd?A>^ZO=XGC>G4ZmQEGLbm9a_;_?ZDjA8ZljIihAJcnVXEjBFOciAEjb_;"
A$ = A$ + "fg;Ejhkhn0H7>>fO\[`STS[fciLMAeiI^:>ilJnMaLbFY78\<WiXLlLH#JE]"
A$ = A$ + "W8ii?Di?HVbaS`[jc7a3OfYnThhC?S<?C>NlMEEMaIhhCm_;:Q?cU7USWeO4"
A$ = A$ + "WELLeiE=;EkeNdO`:ohD8AilkdH`_Rnak\]TZM>;7USca57^ZnQ>37GegLUo"
A$ = A$ + "5TiA7US?agYdeW[:nEYKP9LlLnk>cW?;77Hen0EE_bbAihlgUI^1VSUZ_]YL"
A$ = A$ + "LnmH>>l_;CTSbaESgWo6QRS3K;Y2Wjk0\PfdClgCgE>mIhhC7[bS\OLeL<in"
A$ = A$ + "M?37O7okBFZh4WQS_RC2^;WWZl7<WQSS_ASc[U7?noMj`bE`aAOF:N_Z?_S`"
A$ = A$ + "aSaQbSiGa]ZlKbWQS_J<8`68\N<]oQS<WCP?E>NNMokf?o?baZ<A`I;KJLfi"
A$ = A$ + "S<D2l_;Ll[Ngc`aif=<O^K]Sb2VWlE`aagXodG3XGehaW>6hZj^[RS[J_QaW"
A$ = A$ + "bbIhhZij^:?E9G57oMl\3e=nSZk:7n<MEQ>>>4ffL8Mibn8>D[WWZoC5o0Oo"
A$ = A$ + "QO6caInGWoMQCC5Ok<LlLlEe^BU?ESW6f?QOoYfZ9;ElR?9>nA#UPm<bZm[2"
A$ = A$ + ">c^lkRnFb2J7^B#mI77_J=8ESK#5^7=7OR]F#JDI_c9_OFnThhGigWFEVFI_"
A$ = A$ + "Z\o5AeW5h?lcGaaaHOH>NEIPjiZlQJn_7USWK75_gTi0d]n0ZiR7BV3<QSo^"
A$ = A$ + "=^5hg=Dng3eMUbIJ;ei7D`HK`H4ieT80lM[8LIOVMfWX0kGWS7EJ2T7G5[WM"
A$ = A$ + "ng5T^i`5fPIUO<1k?\^d8Gf7?GiWG`jGZ:_RoFU6QnU?cnib`^goAa;NVXKN"
A$ = A$ + "TGINY:=0?3mOaoNl\Xn1lKUM\D?WO6S8<Zkd[Zb0ecEi3fO[X:;h`XBS8n2m"
A$ = A$ + "SSO><kh?HRW7UUZjPE_oSRGl<#Womh:_W>k\iH>LHoA0TeQZg];^WTVMjIWo"
A$ = A$ + "MIR^LVdPOfdlJGI5n=DnNTdi:i5666666666666666666666666666666666"
A$ = A$ + "6666666666666Ilo5D1C%%h1"
btemp$ = ""
For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
If InStr(1, B$, "%") Then
For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
If F$ <> "%" Then C$ = C$ + F$
Next: B$ = C$: End If: For j = 1 To Len(B$)
If Mid$(B$, j, 1) = "#" Then
Mid$(B$, j) = "@": End If: Next
For t% = Len(B$) To 1 Step -1
B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
Next: X$ = "": For t% = 1 To Len(B$) - 1
X$ = X$ + Chr$(B& And 255): B& = B& \ 256
Next: btemp$ = btemp$ + X$: Next
btemp$ = _Inflate$(btemp$, m.SIZE)
_MemPut m, m.OFFSET, btemp$: _MemFree m
temp& = _NewImage(_Width(v&) * ss, _Height(v&) * ss)
_Dest temp&
_PutImage (0, 0)-(_Width, _Height), v&
_Display
_Dest 0
BASIMAGE1& = _CopyImage(temp&): _FreeImage v&
_FreeImage temp&
End Function
Sub SaveAsBMP (filename As String)
'This SUB adapted from SAVEIMAGE SUB from the QB64 wiki
image& = _NewImage(_Width - (200 * ss), _Height, 32)
_PutImage (0, 0), _Display, image&
bytesperpixel& = _PixelSize(image&)
'IF bytesperpixel& = 0 THEN PRINT "Text modes unsupported!": END
If bytesperpixel& = 1 Then bpp& = 8 Else bpp& = 24
x& = _Width(image&)
y& = _Height(image&)
b$ = "BM????QB64????" + MKL$(40) + MKL$(x&) + MKL$(y&) + MKI$(1) + MKI$(bpp&) + MKL$(0) + "????" + String$(16, 0) 'partial BMP header info(???? to be filled later)
If bytesperpixel& = 1 Then
For c& = 0 To 255 ' read BGR color settings from JPG image + 1 byte spacer(CHR$(0))
cv& = _PaletteColor(c&, image&) ' color attribute to read.
b$ = b$ + Chr$(_Blue32(cv&)) + Chr$(_Green32(cv&)) + Chr$(_Red32(cv&)) + Chr$(0) 'spacer byte
Next
End If
Mid$(b$, 11, 4) = MKL$(Len(b$)) ' image pixel data offset(BMP header)
lastsource& = _Source
_Source image&
If ((x& * 3) Mod 4) Then padder$ = String$(4 - ((x& * 3) Mod 4), 0)
For py& = y& - 1 To 0 Step -1 ' read JPG image pixel color data
r$ = ""
For px& = 0 To x& - 1
c& = Point(px&, py&) 'POINT 32 bit values are large LONG values
If bytesperpixel& = 1 Then r$ = r$ + Chr$(c&) Else r$ = r$ + Left$(MKL$(c&), 3)
Next px&
d$ = d$ + r$ + padder$
Next py&
_Source lastsource&
Mid$(b$, 35, 4) = MKL$(Len(d$)) ' image size(BMP header)
b$ = b$ + d$ ' total file data bytes to create file
Mid$(b$, 3, 4) = MKL$(Len(b$)) ' size of data file(BMP header)
If LCase$(Right$(filename$, 4)) <> ".bmp" Then ext$ = ".bmp"
f& = FreeFile
Open filename$ + ext$ For Output As #f&: Close #f& ' erases an existing file
Open filename$ + ext$ For Binary As #f&
Put #f&, , b$
Close #f&
_FreeImage image&
End Sub
Sub Smooth
_Title "Antialiasing..."
_Display
Line (_Width - (200 * ss), 0)-(_Width - (200 * ss), _Height), _RGB(255, 255, 255), B
For x = 0 To _Width - (201 * ss)
For y = 0 To _Height - 1
p1~& = Point(x, y)
p2~& = Point(x + 1, y)
p3~& = Point(x, y + 1)
p4~& = Point(x + 1, y + 1)
p5~& = Point(x - 1, y)
p6~& = Point(x, y - 1)
p7~& = Point(x - 1, y - 1)
p8~& = Point(x - 1, y + 1)
p9~& = Point(x + 1, y - 1)
r = _Red32(p1~&) + _Red32(p2~&) + _Red32(p3~&) + _Red32(p4~&) + _Red32(p5~&) + _Red32(p6~&) + _Red32(p7~&) + _Red32(p8~&) + _Red32(p9~&)
g = _Green32(p1~&) + _Green32(p2~&) + _Green32(p3~&) + _Green32(p4~&) + _Green32(p5~&) + _Green32(p6~&) + _Green32(p7~&) + _Green32(p8~&) + _Green32(p9~&)
b = _Blue32(p1~&) + _Blue32(p2~&) + _Blue32(p3~&) + _Blue32(p4~&) + _Blue32(p5~&) + _Blue32(p6~&) + _Blue32(p7~&) + _Blue32(p8~&) + _Blue32(p9~&)
PSet (x, y), _RGB(r / 9, g / 9, b / 9)
Next
Next
End Sub
Sub DrawMenu
Line (_Width - (200 * ss), 0)-(_Width, _Height), _RGB(96, 96, 96), BF
Line (_Width - (200 * ss), 0)-(_Width - (195 * ss), _Height), _RGB(164, 164, 164), BF
_PutImage (_Width - (190 * ss), (10 * ss)), menu&
Text _Width - (64 * ss), (69 * ss), (28 * ss), _RGB(0, 0, 0), Str$(quads)
Text _Width - (66 * ss), (71 * ss), (28 * ss), _RGB(255, 255, 0), Str$(quads)
Text _Width - (55 * ss), (319 * ss), (22 * ss), _RGB(0, 0, 0), Str$(brushsize)
Text _Width - (57 * ss), (317 * ss), (22 * ss), _RGB(255, 255, 0), Str$(brushsize)
Line (_Width - (160 * ss), (180 * ss))-(_Width - (40 * ss), (300 * ss)), _RGB(164, 164, 164), BF
Line (_Width - (160 * ss), (180 * ss))-(_Width - (40 * ss), (300 * ss)), _RGB(255, 255, 255), B
Circle (_Width - (100 * ss), (240 * ss)), brushsize * ss, _RGB(0, 0, 0)
If brushsize > 1 Then Paint (_Width - (100 * ss), (240 * ss)), _RGB(0, 0, 0)
If plasma = 1 Then
Line (_Width - (35 * ss), (380 * ss))-(_Width - (10 * ss), (397 * ss)), _RGB(255, 0, 0), BF
Text _Width - (33 * ss), 378 * ss, 22 * ss, _RGB(255, 255, 255), "PL"
Else
Line (_Width - (35 * ss), (380 * ss))-(_Width - (10 * ss), (397 * ss)), blk&, BF
End If
Line (_Width - (35 * ss), (405 * ss))-(_Width - (10 * ss), (421 * ss)), fill&, BF
If randfill = 1 Then ran$ = "ON" Else ran$ = "OFF"
Text _Width - (36 * ss), (431 * ss), (22 * ss), _RGB(0, 0, 0), ran$
Text _Width - (38 * ss), (429 * ss), (22 * ss), _RGB(255, 255, 0), ran$
If eraser = 1 Then er$ = "ON" Else er$ = "OFF"
Text _Width - (76 * ss), (456 * ss), (22 * ss), _RGB(0, 0, 0), er$
Text _Width - (78 * ss), (454 * ss), (22 * ss), _RGB(255, 255, 0), er$
End Sub
Function IBOX$ (txt$, limitnum, fg&, bg&, delay)
'NOW USES text SUB to display text
'This function either gets user input or shows info.
'If limitnum is 0, it just shows info (message box)
'text$: Your text to show
'limitnum: how many letters of input to get
'fg&: The Text color
'bg&: Background color of box
'delay: optional delay period for message box only
' (and If set at -1 then wait for a keypress)
textsize = 22 * ss
'=== Save whole screen
Dim scr1 As _MEM, scr2 As _MEM
scr1 = _MemImage(0): scr2 = _MemNew(scr1.SIZE)
_MemCopy scr1, scr1.OFFSET, scr1.SIZE To scr2, scr2.OFFSET
'=== find center x/y of screen
y = Int(_Height / 2)
x = Int((_Width - (200 * ss)) / 2)
tl = (Len(txt$) + limitnum) 'total length of letter spacing used
x1 = x - (Int(tl / 2) * (textsize / 2)) - textsize: y1 = y - textsize
x2 = x + (Int(tl / 2) * (textsize / 2)) + textsize:: y2 = y + textsize
Line (x1, y1)-(x2, y2), bg&, BF
Line (x1, y1)-(x2, y2), fg&, B
Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$
_Display
If limitnum = 0 Then
If delay = -1 Then
a$ = Input$(1)
Else
_Delay delay
End If
IBOX$ = ""
Else
entry$ = ""
Do
a$ = InKey$
If a$ <> "" Then
'=== Return exits with data
If a$ = Chr$(13) Then IBOX$ = entry$: Exit Do
'=== ESC cancels
If a$ = Chr$(27) Then IBOX$ = "": Exit Do
'=== Handle the backspace
If a$ = Chr$(8) Then 'Backspace goes back a space
If Len(entry$) > 0 Then
entry$ = Mid$(entry$, 1, Len(entry$) - 1)
End If
Else
'add letter entered, if not over limitnum
If Len(entry$) < limitnum Then
entry$ = entry$ + a$
End If
End If
End If
Line (x1, y1)-(x2, y2), bg&, BF
Line (x1, y1)-(x2, y2), fg&, B
'Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$ + Space$(limitnum)
If Timer * 2 Mod 2 Then
Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$ + entry$ + Chr$(219)
Else
Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$ + entry$
End If
_Display
_Limit 30
Loop
End If
'=== Restore the whole screen
_MemCopy scr2, scr2.OFFSET, scr2.SIZE To scr1, scr1.OFFSET
_MemFree scr1: _MemFree scr2
End Function
Function NBOX$ (title$, txt$, limitnum, fg&, bg&)
'This function gets numeric input only from user.
'txt$: Your text to show
'limitnum: how many letters of input to get
'fg&: The Text color
'bg&: Background color of box
textsize = 22 * ss
'=== Save whole screen
Dim scr1 As _MEM, scr2 As _MEM
scr1 = _MemImage(0): scr2 = _MemNew(scr1.SIZE)
_MemCopy scr1, scr1.OFFSET, scr1.SIZE To scr2, scr2.OFFSET
'=== find center x/y of screen
y = Int(_Height / 2)
x = Int((_Width - (200 * ss)) / 2)
tl = (Len(txt$) + limitnum) 'total length of letter spacing used
x1 = x - (Int(tl / 2) * (textsize / 2)) - textsize: y1 = y - textsize
x2 = x + (Int(tl / 2) * (textsize / 2)) + textsize:: y2 = y + textsize
If title$ <> "" Then
Line (x1, y1 - textsize - (textsize / 3))-(x2, y1), fg&, BF
Line (x1, y1 - textsize - (textsize / 3))-(x2, y1), bg&, B
Text x1 + textsize, y1 - textsize, textsize, bg&, title$
End If
Line (x1, y1)-(x2, y2), bg&, BF
Line (x1, y1)-(x2, y2), fg&, B
Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$
_Display
entry$ = ""
Do
a$ = InKey$
If a$ <> "" Then
'=== Return exits with data
If a$ = Chr$(13) Then NBOX$ = entry$: Exit Do
'=== ESC cancels
If a$ = Chr$(27) Then NBOX$ = "": Exit Do
'=== Handle the backspace
If a$ = Chr$(8) Then 'Backspace goes back a space
If Len(entry$) > 0 Then
entry$ = Mid$(entry$, 1, Len(entry$) - 1)
End If
Else
'add letter entered, if not over limitnum
If Len(entry$) < limitnum Then
entry$ = entry$ + a$
End If
End If
End If
Line (x1, y1)-(x2, y2), bg&, BF
Line (x1, y1)-(x2, y2), fg&, B
'Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$ + Space$(limitnum)
If Timer * 2 Mod 2 Then
Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$ + entry$ + Chr$(219)
Else
Text x1 + textsize, y1 + (textsize / 2), textsize, fg&, txt$ + entry$
End If
_Display
_Limit 30
Loop
'=== Restore the whole screen
_MemCopy scr2, scr2.OFFSET, scr2.SIZE To scr1, scr1.OFFSET
_MemFree scr1: _MemFree scr2
End Function
Sub fc (cx As Integer, cy As Integer, radius As Integer, clr~&, grad)
If radius < 1 Then Exit Sub ' safety bail
If grad = 1 Then
red = _Red32(clr~&)
grn = _Green32(clr~&)
blu = _Blue32(clr~&)
alpha = _Alpha32(clr~&)
End If
r2 = radius * radius
For y = -radius To radius
x = Abs(Sqr(r2 - y * y))
' If doing gradient
If grad = 1 Then
For i = -x To x
dis = Sqr(i * i + y * y) / radius
red2 = red * (1 - dis) + (red / 2) * dis
grn2 = grn * (1 - dis) + (grn / 2) * dis
blu2 = blu * (1 - dis) + (blu / 2) * dis
clr2~& = _RGBA(red2, grn2, blu2, alpha)
Line (cx + i, cy + y)-(cx + i, cy + y), clr2~&, BF
Next
Else
Line (cx - x, cy + y)-(cx + x, cy + y), clr~&, BF
End If
Next
End Sub
Sub Negative
_Title "Negative..."
For x = 0 To _Width - (200 * ss)
For y = 0 To _Height
p~& = Point(x, y)
PSet (x, y), _RGB(255 - _Red32(p~&), 255 - _Green32(p~&), 255 - _Blue32(p~&))
Next
Next
End Sub
Sub Darker
'darkens image 10%
_Title "Darken..."
For x = 0 To _Width - (200 * ss)
For y = 0 To _Height
p~& = Point(x, y)
PSet (x, y), _RGB(_Red32(p~&) * .9, _Green32(p~&) * .9, _Blue32(p~&) * .9)
Next
Next
End Sub
Sub Brighter
'brightens image 10% more
_Title "Brighten..."
For x = 0 To _Width - (200 * ss)
For y = 0 To _Height - 1
p~& = Point(x, y)
r = _Red32(p~&) * 1.1
g = _Green32(p~&) * 1.1
b = _Blue32(p~&) * 1.1
PSet (x, y), _RGB(r, g, b)
Next
Next
End Sub
Sub Greyscale
_Title "Greyscale..."
For x = 0 To _Width - (200 * ss)
For y = 0 To _Height
p~& = Point(x, y)
g = (_Red32(p~&) + _Blue32(p~&) + _Green(p~&)) / 3
PSet (x, y), _RGB(g, g, g)
Next
Next
End Sub
Sub SepiaTone
_Title "Sepia Tone..."
For x = 0 To _Width - (200 * ss)
For y = 0 To _Height
p~& = Point(x, y)
r = _Red32(p~&)
g = _Green32(p~&)
b = _Blue32(p~&)
r2 = Int((r * .393) + (g * .769) + (b * .189))
g2 = Int((r * .349) + (g * .686) + (b * .168))
b2 = Int((r * .272) + (g * .534) + (b * .131))
PSet (x, y), _RGB(r2, g2, b2)
Next
Next
End Sub
Sub Vintage
_Title "Vintage..."
For x = 0 To _Width - (200 * ss)
For y = 0 To _Height
p~& = Point(x, y)
r = _Red32(p~&)
g = _Green32(p~&)
b = _Blue32(p~&)
'warm up colors
r = (r + 40): g = (g + 20): b = (b - 10)
dis = Sqr((x - (_Width - (200 * ss)) / 2) ^ 2 + (y - _Height / 2) ^ 2)
v = 255 - (dis / ((_Width - (200 * ss)) / 2) * 255)
r = r * (v / 255): g = g * (v / 255): b = b * (v / 255)
PSet (x, y), _RGB(r, g, b)
Next
Next
End Sub
Sub Pixelate (blocksize)
_Title "Pixelate..."
For x = 0 To _Width - (200 * ss) Step blocksize
For y = 0 To _Height Step blocksize
r = 0: g = 0: b = 0
count = 0
For bx = 0 To blocksize - 1
For by = 0 To blocksize - 1
If x + bx < _Width And y + by < _Height Then
p~& = Point(x + bx, y + by)
r = r + _Red32(p~&)
g = g + _Green32(p~&)
b = b + _Blue32(p~&)
count = count + 1
End If
Next
Next
If count > 0 Then
r2 = r / count: g2 = g / count: b2 = b / count
For bx = 0 To blocksize - 1
For by = 0 To blocksize - 1
If x + bx < _Width And y + by < _Height Then
PSet (x + bx, y + by), _RGB(r2, g2, b2)
End If
Next
Next
End If
Next
Next
End Sub
Sub Contrast (percent)
_Title "Contrast..."
If percent < 0 Then percent = 0
If percent < 100 Then percent = percent / 100
If percent >= 100 Then percent = (percent / 100)
For x = 0 To _Width - (200 * ss)
For y = 0 To _Height - 1
p~& = Point(x, y)
r = _Red32(p~&)
g = _Green32(p~&)
b = _Blue32(p~&)
r2 = Int((r - 128) * percent + 128)
g2 = Int((g - 128) * percent + 128)
b2 = Int((b - 128) * percent + 128)
PSet (x, y), _RGB(r2, g2, b2)
Next
Next
End Sub
Sub Saturate (percent)
_Title "Saturation..."
If percent < 0 Then percent = 0
If percent < 100 Then percent = percent / 100
If percent >= 100 Then percent = (percent / 100)
For x = 0 To _Width - (200 * ss)
For y = 0 To _Height - 1
p~& = Point(x, y)
r = _Red32(p~&)
g = _Green32(p~&)
b = _Blue32(p~&)
avg = Int((r + g + b) / 3)
r = avg + (r - avg) * percent
g = avg + (g - avg) * percent
b = avg + (b - avg) * percent
PSet (x, y), _RGB(r, g, b)
Next
Next
End Sub
Sub ColorTint (rt, gt, bt)
_Title "Color Tint..."
For x = 0 To _Width - (200 * ss)
For y = 0 To _Height - 1
p~& = Point(x, y)
r = _Red32(p~&) + rt
g = _Green32(p~&) + gt
b = _Blue32(p~&) + bt
PSet (x, y), _RGB(r, g, b)
Next
Next
End Sub
|