Author Topic: QBJS - QBasic for the Web  (Read 11745 times)

0 Members and 1 Guest are viewing this topic.

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
Re: QBJS - QBasic for the Web
« Reply #90 on: March 31, 2022, 08:07:06 am »
@bplus - Yes, loading images and sounds are now supported.  In my most recent post there are examples of loading images and sounds from URLs: (Zoom Tool, Sound Keywords).

If you run QBJS on your local machine (by downloading and extracting the qbjs.zip) you can load files from the local filesystem:
Code: QB64: [Select]
  1. Dim img
  2. img = _LoadImage("play.png")
  3. _PutImage (100, 100), img

To load files that are outside of your QBJS folder you can use the file URL format: "file://C:/mypath/myfile.png"

Very good! Can't wait to try out if I can drag myself from eggs.

Offline dbox

  • Newbie
  • Posts: 80
Re: QBJS - QBasic for the Web
« Reply #91 on: March 31, 2022, 09:06:52 am »
One other thing I forgot to mention about the latest release... there are two new options for sharing your program in QBJS: Play and Auto.

 
share-modes.png


Here are a couple of Easter egg related examples:

The Play option is good for games where you want to have a play button to start the game: Play Eggs o Dozens!

The Auto option is useful when you just want the program to automatically start playing: Eggs o Dozens
« Last Edit: March 31, 2022, 09:12:48 am by dbox »

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
Re: QBJS - QBasic for the Web
« Reply #92 on: March 31, 2022, 09:10:09 am »
Hey those eggs have some really nice patterns in them!

@dbox How do you get back to the code from Play?

Offline dbox

  • Newbie
  • Posts: 80
Re: QBJS - QBasic for the Web
« Reply #93 on: March 31, 2022, 09:58:06 am »
@bplus - Just remove the mode=play parameter from the URL.

Here it is in default IDE mode:  Eggs o' Dozens

Offline dbox

  • Newbie
  • Posts: 80
Re: QBJS - QBasic for the Web
« Reply #94 on: March 31, 2022, 10:55:07 am »
By the way @bplus, the lastest version has that Cls fix, so your original game code is working as intended now:

View in QBJS
Play Game

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
Re: QBJS - QBasic for the Web
« Reply #95 on: March 31, 2022, 11:38:05 am »
@dbox Yes my version of Hangman is almost there too, just get an extra letter at start of new puzzle.

I don't know if I showed:
Code: QB64: [Select]
  1. _Title "Hangman" 'for QB64 B+ (redo Hang it) working almost in QBJS v 3.0 2022-03-30
  2. Const hung = "Hanged!" ' allows 7 misses
  3. ReDim Shared w$(7) ' word list
  4. Dim Shared As Integer round, nHung, done
  5. Dim Shared selectLetters$
  6. Dim As Integer place
  7. Dim k$
  8. LoadWords
  9. For i = 0 To 7
  10.     cp i + 1, w$(i)
  11. Do ' main loop manages the letters to select from and removes letter when selected
  12.     selectLetters$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  13.     nHung = 0
  14.     done = 0
  15.     Cls
  16.     Update
  17.     While done = 0
  18.         k$ = ""
  19.         While Len(k$) = 0
  20.             k$ = UCase$(InKey$)
  21.             _Limit 60
  22.         Wend
  23.         place = InStr(selectLetters$, k$)
  24.         If place Then
  25.             selectLetters$ = Mid$(selectLetters$, 1, place - 1) + "-" + Mid$(selectLetters$, place + 1)
  26.         End If
  27.         If InStr(w$(round), k$) = 0 Then
  28.             nHung = nHung + 1
  29.         End If
  30.         Update
  31.         _Limit 30
  32.     Wend
  33. Loop Until round > 7
  34.  
  35. Function Reveal$ ' from remaining selected letters a * will cover unchosen letters in w$(round)
  36.     Dim i, b$
  37.     b$ = ""
  38.     For i = 1 To Len(w$(round))
  39.         If InStr(selectLetters$, Mid$(w$(round), i, 1)) > 0 Then
  40.             b$ = b$ + "*"
  41.         Else
  42.             b$ = b$ + Mid$(w$(round), i, 1)
  43.         End If
  44.     Next
  45.     Reveal$ = b$
  46.  
  47. Sub Update 'draw everything for screen 0 and while we're at it decide if word round is done
  48.     cp 8, "Hangman: " + Reveal$
  49.     cp 10, "Press a letter from: " + selectLetters$
  50.     cp 12, "Gallows Report: " + Mid$(hung, 1, nHung)
  51.     If Reveal$ = w$(round) Then
  52.         cp 14, "Congratulations! you got it."
  53.         done = -1
  54.     End If
  55.     If Len(hung) = nHung Then
  56.         cp 14, "Yikes! You were hung by: " + w$(round)
  57.         done = -1
  58.     End If
  59.     If done = -1 Then
  60.         If round + 1 > 7 Then
  61.             cp 16, "Hangman is out of words to play. Goodbye in 5"
  62.             _Delay 5
  63.             End
  64.         End If
  65.     End If
  66.     If done = -1 Then
  67.         If round + 1 <= 7 Then
  68.             round = round + 1
  69.             cp 16, "Next Round in 5 secs"
  70.             _Delay 5
  71.             'sleep2 ' sleeps suck!!!
  72.             '_KeyClear ' >>>>>>>>>>>> unsupported
  73.         End If
  74.     End If
  75.  
  76. Sub cp (row, s$)
  77.     Locate row, (80 - Len(s$)) / 2: Print s$
  78.  
  79. Sub LoadWords
  80.     w$(0) = "BPLUS GAMES"
  81.     w$(1) = "HANGMAN"
  82.     w$(2) = "GALLOWS"
  83.     w$(3) = "REVEAL"
  84.     w$(4) = "KEYPRESS"
  85.     w$(5) = "REPORT"
  86.     w$(6) = "LETTERS"
  87.     w$(7) = "BASIC"
  88.     'w$(8) = ""
  89.     'w$(9) = ""
  90.     'w$(10) = ""
  91.     'w$(11) = ""
  92.     'w$(12) = ""
  93.     'w$(13) = ""
  94.     'w$(14) = ""
  95.     'w$(15) = ""
  96.     'w$(16) = ""
  97.     'w$(17) = ""
  98.     'w$(18) = ""
  99.     'w$(19) = ""
  100.     'w$(20) = ""
  101.     'w$(21) = ""
  102.     'w$(22) = ""
  103.     'w$(23) = ""
  104.     'w$(24) = ""
  105.     'w$(25) = ""
  106.     'w$(26) = ""
  107.     'w$(27) = ""
  108.     'w$(28) = ""
  109.     'w$(29) = ""
  110.     'w$(30) = ""
  111.     'w$(31) = ""
  112.     'w$(32) = ""
  113.     'w$(33) = ""
  114.     'w$(34) = ""
  115.     'w$(35) = ""
  116.     'w$(36) = ""
  117.     'w$(37) = ""
  118.     'w$(38) = ""
  119.     'w$(39) = ""
  120.     'w$(40) = ""
  121.     'w$(41) = ""
  122.  
  123.  

I will explore v 3.0 later when I get caught up on sleep. But I guess the patterns I see over the Eggs o Dozen is an artifact of Screen differences between QB64 in Windows and JS in HTML. It works very well by accident! No special coding did that. BTW you DIM'd radianAngle that was a parameter of the drawing Sub, fortunately for that app they were all 0's anyway. For correctness it should be replaced by a, d which are missing. BTW don't always have to have everything DIM'd though highly recommended.

 
image_2022-03-31_114346.png
« Last Edit: March 31, 2022, 11:43:55 am by bplus »

Offline dbox

  • Newbie
  • Posts: 80
Re: QBJS - QBasic for the Web
« Reply #96 on: April 03, 2022, 04:21:34 pm »
By the way @bplus, the lastest version has that Cls fix, so your original game code is working as intended now:

View in QBJS
Play Game

Hey @bplus, your falling circle game is even more epic with sound:  Play Game

Code: QB64: [Select]
  1. Dim buzz, music, lose
  2. music = _SndOpen("https://opengameart.org/sites/default/files/newbattle.wav")
  3. buzz = _SndOpen("https://opengameart.org/sites/default/files/buzz_0.ogg")
  4. lose = _SndOpen("https://opengameart.org/sites/default/files/lose%20music%201%20-%201_0.wav")
  5. _SndLoop music
  6. Dim As Long HX, HY, i, hits, score, Stars, nEnemies, Height
  7. HX = 320: HY = 400: nStars = 1000: nEnemies = 50: Height = 480
  8. Dim EX(nEnemies), EY(nEnemies), EC(nEnemies) As _Unsigned Long ' enemy stuff
  9. Screen _NewImage(640, Height, 32)
  10. Stars = _NewImage(640, Height, 32)
  11. For i = 1 To nStars
  12.     PSet (Int(Rnd * 640), Int(Rnd * 480)), _RGB32(55 + Rnd * 200, 55 + Rnd * 200, 55 + Rnd * 200)
  13. _PutImage , 0, Stars
  14. For i = 1 To nEnemies
  15.     EX(i) = Int(Rnd * 600 + 20): EY(i) = -2 * Height * Rnd + Height: EC(i) = _RGB32(55 + Rnd * 200, 55 + Rnd * 200, 55 + Rnd * 200)
  16.     Cls
  17.     _PutImage , Stars, 0
  18.     Print "Hits:"; hits, "Score:"; score
  19.     Line (HX - 10, HY - 10)-Step(20, 20), _RGB32(255, 255, 0), BF
  20.     For i = 1 To nEnemies ' the enemies
  21.         Circle (EX(i), EY(i)), 10, EC(i)
  22.         If Sqr((EX(i) - HX) ^ 2 + (EY(i) - HY) ^ 2) < 20 Then 'collision
  23.             _SndPause music
  24.             _SndPlay buzz
  25.             _Delay .5
  26.             hits = hits + 1
  27.             EX(i) = Int(Rnd * 600 + 20): EY(i) = -Height * Rnd ' move that bad boy!
  28.             If hits = 10 Then
  29.                 Print "Too many hits, goodbye!"
  30.                 _SndPlay lose
  31.                 FadeOut
  32.                 End
  33.             End If
  34.             _SndLoop music
  35.         End If
  36.         EY(i) = EY(i) + Int(Rnd * 5)
  37.         If EY(i) > 470 Then EX(i) = Int(Rnd * 600 + 20): EY(i) = -Height * Rnd: score = score + 1
  38.     Next
  39.     If _KeyDown(20480) Then HY = HY + 3
  40.     If _KeyDown(18432) Then HY = HY - 3
  41.     If _KeyDown(19200) Then HX = HX - 3
  42.     If _KeyDown(19712) Then HX = HX + 3
  43.     If HX < 10 Then HX = 10
  44.     If HX > 630 Then HX = 630
  45.     If HY < 10 Then HY = 10
  46.     If HY > 470 Then HY = 470
  47.     _Display
  48.     _Limit 100
  49. _SndStop music
  50.                            
  51. Sub FadeOut
  52.     _Delay 2
  53.     Dim i
  54.     For i = 1 to 100
  55.         Line (0, 0)-(_Width, _Height), _RGBA(1, 1, 1, 5), BF
  56.         _Limit 30
  57.     Next i
  58.     Locate 16, 35
  59.     Print "Game Over"
  60.  
« Last Edit: April 03, 2022, 05:51:41 pm by dbox »

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
Re: QBJS - QBasic for the Web
« Reply #97 on: April 03, 2022, 06:46:03 pm »
Wow you are loading sounds right out of the Internet!

For some reason there seems to be either more circles or they are moving down screen faster than when I first made game. I couldn't of gotten that much older! I can barely make it across the screen 1 time, which is how the new scoring of the game is done in my versions. Remember Frogger Game?

Offline johnno56

  • Forum Resident
  • Posts: 1270
  • Live long and prosper.
Re: QBJS - QBasic for the Web
« Reply #98 on: April 04, 2022, 04:53:13 pm »
Cool... "Now with Sound"... But got killed off quite quickly... *sigh*  I suppose I should be getting used to that by now... lol
Logic is the beginning of wisdom.

Offline dbox

  • Newbie
  • Posts: 80
Re: QBJS - QBasic for the Web
« Reply #99 on: April 06, 2022, 09:51:30 am »
Recent fun discovery with QBJS... you can use data URLs to embed the content of images, sounds and other assets into the program itself.  Think of it as a web-native BIN-to-BAS.  Here's an example showing both loading an image from an external URL and from a data URL:

Code: QB64: [Select]
  1. Screen _NewImage(800, 600)
  2. Dim screenshot
  3. screenshot = _LoadImage("https://wiki.qb64.org/wiki/images/8/87/IDE_Mainscreen.png")
  4. _PutImage (1, 1), screenshot
  5.  
  6. Dim logo
  7. logo = _LoadImage("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRDdGMTE3NDA3MjA2ODExODA4MzkyRDgxRTZDNzNERiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3N0Y2QjRFNjUxQjgxMUU5QkRCQUEwQjNGQjY2MzA5MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3N0Y2QjRFNTUxQjgxMUU5QkRCQUEwQjNGQjY2MzA5MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDc4MDExNzQwNzIwNjgxMTgwODM4RkI5NjAyMDgwMDciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RkQ3RjExNzQwNzIwNjgxMTgwODM5MkQ4MUU2QzczREYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4N8oYNAABB7ElEQVR42uy9d5BkyXkf+GW+98qbLtfejJ/dnfVYv+RBFECKAigegbgTGTxeMHSEKJEhxlEiyJPuDymoi1PcXTDicFIwJFFeClFkEAoRNIIIUIAILEiYxfrd8dOu2lV1dXn3XN6X+fJVvaqu6qru6RnMAPVmc7u7+vUzmb/8vt9n8kvCGIPJMTlO+yATYE2OCbAmxwRYk2MCrEkvTI4JsCbHBFiTYwKsyTE5JsCaHBNgTY4JsCbH5JgAa3JMgDU5JsA67mHboK6vVZKmZefIA/yS/A358y2vxMDno5NRf9CBVamYvkfO/7s/3TuoqRTou/jRG9jexnYD25Yc0wcAWAyBReDtd34SHruSmIz6fTjUuxowxvR22yrbtvXncfCewo9+Sv6qhm0V2/vY3sT2Frbr2LLYrO8UsGCi9h8OYBFCgCoEpRP582LgukcE2xOy/YT8rIFtDdsHHrBdw7aJzbjnolk8H5mM+MMALHncHPO8ELbHZPsf5GctbBt9YLsqP2tPhud7G1i37uJvA9guyfZj8jNdSrGrEmhvSuCtY2tOhux7g2OBHHB2inrGh+28bD8iPzMlP7vmAdv7UrXWj2cfTo6HgmPhsY2tjG1qoEtC0CcmWQ4V7QQY5M95RrYf7lzasTyv94FtFe9UIVSR4LexWfgE9mS0HzJVeIBtpx9YDI0/3+VlpO5PopzJAblTBHOjCKxQA9tsid93abVyEnLNEbok20c9n28DJdfJfOJt8tj0m8q55HvNhfidUCJUSl1ITkb8IVKFllSHjx4y8VsmtP7CBYCPXXCYU8MCWmwC3a6Af+MArDsHCLgDMLMlYJU6WLYuBZGDm66EO9Yxz2x73szu/QBkc2BRFdRYaNdeTt78X77oeydEGZds72C7LSfFd91hYR/+6t97CZ54KvVQq8KBBJ5LIXOnAspeC6ypgAM/VQE2GwF1IQKNl+adE7mmrCGF2q9BYKsMZM0BnI1fYasCdrNxSJ06oCMj3AsOIJmN3Vwqz5ql4ux/fsf+fs8pefnc70g1+o78Of/wQ8uEv/ZXn3h4geXx2t8a5Dey9Rao+RpYKQSWyYSDktkEdAM6QNEQnHZQBevMFLTOozb9gRVQUWixNrZqG9S9Klgo0XyrBSHd9LUSwF4FLKFOTc/dhvO3IZIvI9vLfWqdv8u7HrBxd8ruwwQrG99VUb6zPjv1lK5zexhxZwgMuJIe+ocGB6cFPf54UwAOfxfzg57wg4p/36QXnHOaNvhKLfDvlKG9WQL1TgHs1QNg6yWwi8jfUJ12+ZurTsfmb5yEvSCbeyCS4Y4HbG7IanvCpO69Klwb7HKwIbRZhjIFz69IjywZDjjpZDChI5fE6RQlXjoE+mwI4Lk5MImjTmkdVd5BHYe7DOG1IlgcbNhMBB+rozplusfdcCz+xo2SZ2X7aflZVYKtP2S15SGJE2CdgirkVmFRzvheIolqzIEc64vVncCnxMC5hi1B52IZ/7N9aFkuxICtxKD+6pKDQ52rUwOUfBVCWc7fCmCiOgUOPDQgbL0p+dtoddp3RLE9JdtPys/qcoJ5wXZN+t/MCbBOJrGKUjUk+z0C5kYZ/AbHApFDOJ7EGuhc6ICr7xqsy98cUef8XkUw22ENrcIkNC4ngdKzPNXHCSSVW2hYVEBDiaYhf4PbB2BwdwgaEVaPO4Tiv7G6KYztimx/WX7WlBZzf8iKRxb0ezu03x0cy5Yd+Hg/gbfQMrQaFhC/cvK8BuwjqtsolRBdQSJAxgm+iUAieE1mueAaoE7x95blDKPt9jdviQBYaWxPTYOBP/tQphgNPKPUgABKM2vjAPkbqtKbBbCubp00MyKI7RHZPik/4zHQDTgcstqQkD+lgz28wOrL5bo9yBpjOFBQRpUzG8ERPqEqRDBF/vgmVH/7dQitZIAsT4G1lADfXBSa06iV4mh1BhX5NsRBEIJJQcBRWwLMvR+TzVWnMtStc+mroiqciYA9HwHjxXkwqCNz1J/8DzhB9oQLZfRwGj1ukQGHH9tF2X4Uuk6XTegNWX0gVWuje23nxdjIvkOjyX6IgeVRhQADsxxQYlltCOVqYCxEQDfIiVWhlQghGd+B+uquRx6qQFU/kFQY1HnkV0tToC7FobWYAGs2ClYqBFbE7wwlJQ6gEHCOlPOAzAM4hmOnG13upqLM8Z9PQn1nZwSwGKpaP9CzF8AulJHbYbNaCAWz87QwnMNp2M7J9rGOn9PhZyJkRdTgm+pM5n2Wiq1qoWDN8uG748QmqNttEx/adl6A/5FhW+BPxr8rVOFQlwP3NTFUh/pzs3fj74P6YhwUGsaBN3oGxjZR5Ow1wdzL4TxnUgAhLyIakGAQVAQY4N+yZQ66KWjO4fcolWgsBHaAHk2rcaxMPMV/KQ3wGhtDWjHQP/HngMSCoJQbQIoVNByKoOyi0bCHRkMeLdQ2d4m0O7HLXoOhB3AcxSuy/RBD3mft7jEo17b06anrynzmbXM+8yadTr5nJuOrdhjKzB1NVKjhefiuAda6VDD0UHdzy/AuUs0VzpMSYaDxMJjFYo/X3fleOSxNUPTYjRq071QA7mw66k6cr4KCUs6a8kP4R56A+qeec5gNG84erQtpGP0CBAHTBP/mHrSfOiOAy6awnZ+FFj6ihu9gtiyglTpoCDi6VwC2ewBWDgF3UAbbaHBYdtRcF3Bdq4VZbQK15qJdyy2ad659xJlCGkrt0I6aTt4g86l32FzmDSOdei+3HbuR95NK/1gEAgpEo76HClg70nOdPsS80TJUeceSk3FKQc0iClAueYqFMf1PRP47fC4zdRFC0r98B+Cnn3MEBRsuLTmfU2jgkLQ8LLFsoNt5AASW5XH6cshzFkA1BexMDKyZGMBji6DiPSmXmE0d1FINoIASDQFnoXRjOTS0qxXgksru2NOuOlXEBOlK7foc261iW/2wC7ZP/mbgNbR1Puz1q7XxOn/9Z56Ez/z69z9UwCpJl8MhYLFsGUwhLsjJjBXmsBDlTALg3dPwP/Ih0lBi4IQuo/KM+4e6Nbm0NDLI4ZJI6vcLR/IsflUzm3OkHL6q4nlXRXI4Yve+ls4BF/ABm0+CspTEyXdO/oJ7xlAConQDVKccbMClXL6MQKxKdWp1pJvjFlE6wG8brZdayDqlJpGHDtWaDvfjOE1gMWnFPNlvGZq7VYAazrqIdjK/tDtAZxKn8phMOlbtdgOiyP+qqcxQrmVxUozSMnA2BbX9/AgCryBYC6C2UA2jhTnuJOJg442Z0Lm6yudgNAh2PAjs3IyQ9lydQhuvXatDgBsIKNVcCQcFrk7raKnrQpphv+Ml2LNeYPEYIqXkwQdWKITqqdcyvD1oFrMmzryDOrRjUye/Ge/U5cRYJv+RflbkVxBECYHSwLJxIG6h6no6czSoeS9dTgF8i42QgxTsVhUoShk2M9UjnYYd3DVnq5Im2F2Q8fsOVKcIWDURhWYajZJHF537IiBJ00D+VgOyh2D73S+jeuQLpeir+L//9ECT9z99bTfx//zat1ZUUDmP4hmjdcOwzWKlJYSwPG4MJrU6BPaQSJ+/O2AZszFh0o/iOsMxYqGVOAWtf/wJUKstCO6gSpkKjnZLcmlyIQPjWCBcYqicH81PCQk09Dzu5G2hdPnsl4BF/BDIoBpMIxinomDHwgABNDB8zi1VqUIV20kSsSxHRXe6hntG/BqYswnwreDke/M6mLev8nF56YG3CtfWKuRzn3v/MZxjTDr0eLiihkSxJPnVgeM99prNrDOgxjZiUVm8K8vQSIVBi4fQMiyNzMcaIq9QLeNzGHixFSTRSzHxrTcMNNTdgQNGic9xdB0JXlRV2zkwnzl7pGzVuM8MJSf3eVm31jjkpSXIrbwAWLEoaOk4kAyCLcVbHPR4FPzhELQ12iMNXf7GgafjTf0rs6g7uH9VREI4591/YIGlarSOoKojkPxyFHhsjAdjpceE4O/NBcQan1vU8fkpsiEMNkpdn+gJCDxFrqOGeaB5CoziwUkyS50Qk9kE32YZ9GmvpDoapApXNdzDH42AVSkdeW+h+rP5gQS+B6tc8mAXBc4tgPHtLF7R1xGPaOUBO6hi20Id4LofVJTWPmj7fRD6yCtQe/lRUNqDpStZmnGtxrjkvF+638A6zujojuutAw03KGLIhm9CUYrpNSfQ7wqxgvhqbW6LeJx2whiWgbdtY9+rgsCf3DLkDltl/QCOQ9U4qM0YkoDzSU9w+mgCr/E07DGEqr00PSAaQR0gcemFgONNhMeQAtjNAzDeu+NwsAHX9+HjtWbQwlTDbjjhZXbv1wPfFbD4UzaOmN6cWqL5pxz0qkMHf9bWHuhoLRmEnBQRzgOfgmWo3CqMI6i6oObZFDhttAupkeJWEHicW0qpInjUUQe38uhsysm25fE9AVr7iHvwM31g7ewjWR8MXJ1LrEgAaCYlJhFVgq/4zlwGQtUHFlj8qA8aDhuFmQ1tVPumzoDk+juGW3Isj4Ks2oS7Mup4nO+uLUPkWXcKQv5qxwX2xcxYaGQ8r3rvAJQRj8lJeBv5k/bc80g/z4ESnQbCJQ1RBMicfnUa6wAP+7tdAVIo9Vyfuyf4z1Q4YvED5FkidVv1PWP9jx8JEx70vI85iMeFcbW/t7n57v/x5wF2a2CsFi22Ye0ys33YMjTqQPLIG9IdEX0CYBFozEUF1+CLJJx5wfqcXTBSopjrJbGAg+fa92ZcwIBrye9NVMUoLekYcOR+MrqFBP5D54+YAjyAjFRdVcD6xPcBfx1m2MJS1OpNINUakFIdDJR8FPmWVcK+K2MfthrIE6sQ3MxBYzkFiuGAyjYQRM020HAQlADagxeXgHxdA6tdmfNt5R61FPr6A0nePRKL9QDGMsD4+BUwL+GA40v6/9Ubu83f+IL0AjuOGIIzx0Z65tstgf34rMhpP5Yu6rMM1Rher8RjhkH5CooEGemzDthgVcUdjLkqtM4nBhOVQ89GxKvoczFQQ0jgG5WRBN5AAs9VnTGUwJMOieeRc65t/ZRCG9WYFQ0Am08IwHD/lipdDAytV7XVBrVSQ76J3Es60bklSMpNoL/+O8B42GgqDrZfE5OASzvY2H0RdeIDDyzTO3o2MyBwC63ZlSjvBMU+l9lz8lRUz2nM4f3ZusgWOLESQ0muhlWwF6PASlsyJ9UFkyLv6W2DwAYi/93KlkG9lBg7Z1iAJOYTxoP5QWmEVYqqLIeWaxM5jk8dS5hy8JnQ659i8q3cpFk/6jkOPC0WEK4Fy+oSdohHwQqG0GrdArtRADetiPcBW915FV/61x9kjtWSFiDxMiyNxwKpgBxtZ8L7lKg26xiOrNPZdKPSzX+H4zfOMrhlSM9koHfthrvyoim1dVFaowXpy605YkGc41wriDzLAfmY9+ZJjXhvcjE5kqt0CPxB5QieNSjpkQ2RtswBHnOAx/3DltXrumj7ucU8K++vdYLU4ll2c88xvaHdz3Tl4wJLl6PX84RiwYRDrpVgKlyivmDlcOcTJ31GwJJ4JMkxmpvr3gEWG6BevBLK6gOb6/4ogXErK9KbnTcZ5/6ywy5lxuT6OhAeNKYwhqp1fFpWAKWMnwiPO9WIAKXw0GN/WWNggnLH6CHwcLrSOsus9rn7CazjqkLX5ZDssbL4ggldxEdJM+Kra5nIActWp0gfhnn+e6huQTugiATbk1mGCNDlWen7k27xjmRkAwaO9D2+cLWDuZrFh2Uy44KNJ024rj+THJvAW1t5MJ+/OITAdyWujWQq8NZtaB8UUc0hV42GwQyhCAoFEGh+lNIq+FQquJQrCtwwj214XBfzGeloZYPG+UPgZKM+kMACqVdIjzdbLphQ/Aqx/KSlLMRyRnbrnNe3IDzS5YZodih68oUVnMTOcZdDjLs4wOFzLmBsD9D4uqAu2LyciLsr7N0yWlpoZaUjo6I0PaEdYyGOvCkMlt7whJUGGwmAwBKLOY7wwIu/RpyyfBHYV76A8jUgQzuK8D0RBXmdPwgMuZU/EgIWC4ESDUEbm5JOADszJwDGVWM9PYVjgFyrXRzkkvk+bL/5oAOrl0+UECyVpliIwMcMgbV32JfFRXIbrFwd2FLUMZdOIpqRUCiZMMD//sNg8XoPVSTiVQRYpY0mui6W5Vv1NrA60kG0oBABIvecQUX6gRzux0M7wfV9aPJFHgYZbRVKX28zjgO87APzVg4/DfRZpF6QYb8ggacNbiprA7BHev1zZ+eBfCXcMwG4p53xld0GTzti0E35cR6GqklQfuWngee/i5T3oALK0gw+27481/YkBbIX4MQBtfsDrAEuhzaE92pgzEc4CSN0cWpnsPDHHtwpc3fzyd8Pe9DixUU+fglsKpewMI/QcoPKPLrcNtE8R4uigXyn3gCKYNNqLQRiExqVKthhv5ScY6pC/i3yIOViDOAW52sBCSoOLs1jjSrOhDMagsDDYspZzzhEFQqrLpMAqqBEspp9apwMXX5imw3w7yNvXUoDMZx8LvJjfw7p5DMQbODkarXAfOMGmOu3OMB4NSAe1916UIHV6Hc59CyYwImkz8f3BrvYUdpsFvsI8/EPw2V6ncFhnWvyWKShYDeqKlghVaghQaBJUpzTkgKBe6jb3MbVh2U2DBhO11d6Ecfn8+AJWcmFi51zHbDZ+M+/uwfNFceROez6XJW1okFQEwmwUQqTMYeFh4Hs7TwYZ9Li+s51AqChVG1w/xfiXgsFEVhiARWvAfv0/QLWSbxKTXDXJXg98Jsl5xMLaHsmsk+JZg1iHvZm2WONneIhpZYhvRzCHEe1yQzpaWjJJ687za7J6XHcB8Hr+s7N4l/5B0g3b3xUF6zB2toYR7sLgafOp+SCCqsvbsiGv/T67iEnMif0Ct7ewslHuCSkQfcarzzIHMuQwxT0dqglAWMih6fJUJn6AhWrXUv0YhfPy1bA5MIsQjoeCVX6aKDPreSWe1BYr8biuUxGNzA3RHWNH+YZ38fEszUJ1FC1KeqiSG8hHYll9lmoju/O3toWGZ6HCXyfH85G5XnlHJC9PChoXkMbkWEgx0L9xmxTLIRk8trdspcmWDc2QWk5Urk/Y1VkOkxFQIknwSwKQfXygwwsJud9Cjq2nbNggsdeeRzUivjrymz0gK1XE70KBbnRRgFC/9+fAYtyUxpVVRCJMIrsQAAtIb9PfNbA5vdpYOBXVVPB0BRQFQVMNLk1VHOGTPPyM4L9zwa4Fo6xKNaDe411Z47jNzt8DbHQNRECupAAa70psg16Iwy2J5SF0mcf+wX5DgT9fZZwX88gjhqPrIAPG5e2Nv6P4iy1EVxK20B+gSBDsGktAyw0SkgTjRTkUJrBQ/869qFvoCS08bbayjSwolgCx3OzpsDJaXqQgMXcXR7q/ZYhXzBh1bF3Ij7uodbJXCwH69nz/S4HvsC08R++1jeyDezzqiS9RMQZDYpAIyrORLR0EFyAlo+KQIMAfg1oYPqRiTx7Adp/5cOO/juucCJS2vG1fngv7kuyEbSWIgmYS5XkiugeICBbUa7MgrGe9ai+bjjHfWcey7Tx2SgSeLqSEWGYtieEMygWylft+HltE5xMPO6nhXzCaOXuNsPjIzZJV2DzFVCKPdxXRlfm+Fpq/nOKEMKzSl97wIBFXBul2g8sZ8FEA9oxn9AAdCm2A19nQ67g6xvhILhd7sx7W+wAJRLUpJXHGv1qyYDWbgO0n/qwk+N1zKId3IYzcAR9//cfgP7mLQQrSiEErBpIiZRhEuArqRHYQQ0UBLMd1ASg22gQkCl8h2aVK3YJKjIwJgkyEOXntVCXMkKCUOqoLY5dVYLF7BOqnJy6gpQLZFeSCn+VlKyUdSHN2V6bDAKsEzw3ueOU+NCgbvF6Gy89UMD6yz9+AV5+5a8KWPzWv79Z/+W/82Xm9UCLSnp7yIidBRNEW5zaHb90itIZFDJEpZHD9iWQIgpOvpQ9FRrfyemxLHnekoIqGQpbyFYCEhQ85OMbEQ88kDBSJCugHknlbVR46Y0/wnH8ypvAVAUoWqvcr8U0isBGlaYFIOCP4y0RzCiVGVIAit8z/J5o/HtseK6O3/vxb228hs0lGVIDAxtVUFtQ2gNYQ4LWlFLXWEiCGk4Cq+3B7/z27Ve/9c3crw0n0AySqHU+9/kfgWTSfzrAKpV0+q//5dWgZTExkby9y+NWPp8j4t96M4/WLO1zOVg4M0ug8wUT3DKcG+ZyGEZ0KBzPHU/BMmoQ2CuBMR060W483KlIHpkXQHJqYLl8TTuC+PPnjEC3CIwtmzEgZklF6In7+aDWkI4Zr5uiIN7ZEOsd1J57Eo8UdFdA64TTAyoSAS3CQcUr7HAAqsK9wsHIgej3O6D08cwKBKkV8suepVBpNp99+4NaAIauTWKg0QDaDfbpSaz9fBP+5i99Gd+S02Pi5rPrnmY4PaI0cCZKy9CTjiKD0X60DI3pSAHFr4lWjXr0ihp3MFWPe2w8isT9OGr2AODpE1bA4D7U5bT0fnUypE4o6MmA93IsReKR7L0yOCx9IFQqtBGDyS1DZkm5wpzlZW0mX6VrHbMBDl8nb14k4SwhO+VbzLwz2DfGkM4qd+0P6ukhSomtUp9h2XwVLVHl1A31eQIl2GzZG0QWZyfM2nSSGpAXUJYKlZRgoMIa1eTohyRwspxltIg2953xYa4VR8QCNb3PsvOzLnEmbqksTkEWU6D6omDpFTnAZq/jdeBEcJMLGQzPsvB6Z4JDfq9JYA06B0Y6bcdJURzgRuG/fmEYsDrXuEs/ozo41NrjUeo/X+XLI/E0XvAg5QCLSzc0kDcLBhzoJgtophL2NZSZaMFarSTJWCGq4wNLBJO/uQrkv5wDhccQkW9YOCUstCR9aOFxS48h+QhSIpa8B/B7hqxXxc+biuO64G4MfTYGbMNN3nMJuXLE4PBuSHrUoO35O9sDTtdRasPhzFYquZysznt/K/DxFdL//EjhyE4fWMbAGJ9j/bmxEws6LgdOGZmPW8T2fgn87+8ylgzZWthXNxL+Iqya0BukJUOcj8cXv1zF6NfXgP1vn+24JzupKB6O0uhMQSoe2yRNAUqL15hHzsIs3VNn1A06jgJ6f8W+fuAwD9C85+jSqFY9PMz03PO+AOwFeTPrfkqsQ8DyzU6D3TbALtc825KwuqSWrjHMbFMHhedeJ0K03TRVNRE86HqlSR+xJX2fKXCS4DsRliQdOCg9PnPXbGSiPBr0u0sOcyP/iGdhI37urW3VVa+Kx1PvnWgWwF3WpTjGcQGcgm537qe7wfT2EifIwZ94Cko/9ijQtQqofFuSjQNC3txqmN++Y4uwvay7KBaD5ipgn0szTsz02WhuWGikt1PpADJPxgzNsKGqiwzlNaNCpOaYACfHAJpX5at9RoJbtcB/vyQW18HPfieA5QkTM6c2epCCfXYK7ItTAIEV4rtzuen72y2TGRa1TSQ4bRPsah1YG0EW0sBomVRNhfdH1e3szlYirRnDY2bTAZJtEFBNGH+VoJs/ZR8BFmMEgSee+w5OYT78t8zDrTQ4tHTgO8OzPns/OZab1SSdOUTs7iAWeBoMDB5z0FEF+1WdRf0GlFoBJehnjKfRBvzCwVdfiXETTAnbrERpwLRt7nIYJrX6LcMupr1bz8Ehvw7pUyPjqFHmcWbaR1qbTlM9Jvwg0lGGbnXMrjrvlnikHh6lymsQITBYZ+lANz+fSMcvdM48ni+JicmpjHTSUKdfX7I7PA+8n98LjsW87FVz+Ye9jWSzgUpRo068wSakHdSMYDzQMvcbQSrcvnIA9mqOB0xBmjwfryqhSBVq5US/urM7t/fyj7g0u70rfNzH6Zr27JA6tcFbgGS0+gr2CuWhklQZoKa91/FJP6NbqNaUbzLI/ZAEShRxjjNwdh9cDbxTHRSi4Xk2mDzAbh1HNRIIKy1YDCIPxr9VkPryDRQUxe4sxVfwuvv1AKy3kxy0V55Lbk1H/HqO4nlrxRisNZMdPs/uUmSpQziDx6uOwCrUwFdpgZEJyWL9nA4Qi6ZCTbhZ6CysIHzHqUIDWAsfzo/2fEhtKjORolUrJnpSbnHAUsEG/MWXHBXPX4x3tEJt0SFUdTqFUv45E79XqIWdxD+znc4Sj4afEZzpCvcWa6LGDZUBW451/vcqns+/Uv63IJegKyhOqe7cT9xDyhXKxGf8XIXyonKqmAIqZZ3fOedLmxNnEKWmeC5+n3CwDZ//+nn4W//0mZ7Z706kjy2vwj/9xGehZfjx2ggkwp/flXlMVNvj9/GrbdgqT8Pz/+xToNv+sSSXjXLgpdl1+OKnfg10vuSH28W838DuVCJHzMIb64/Dc//8r+Onvug/+OEvPfWDT/zZF3nH/JMv/Qj83B/9JY+hSE5dFfZYhk5GQgu0fM3ZGMnoaBRmT4cbSN5JhzjjaFplnMG1NgIrxGWeqSzGC3B745w394gP8WKmAf/u//yHvVrp+B6/4+iJuzuHjfE5CjBNteDTv/EkznjSJ7kMyJajsJjI9mbZDHnfZKgAj8SK8HZpYUyVaME7uTRU2zGIBiuOPTWA5FzOrMKcrwLb+gx8dXXllR98HIHF03Rsci/dDWygy8GWqcfw9LTnHBS309G66R11XvawgTOxpoOG0k3bbdjWlD/f5SxdfX57Jwr5vTOQSa3h3dRj4YP0fc/66DIZcO5xMXiiexgmzKVzMBdtwlYl1AesJlyrTMFGcRmWExtgmYMpvvsZRS34oYUcAmtprGdGvQJ5Iwof5M7Ai2feAZsdNiO49g2H6vDc/B783toMfG1t6WW3AJV9iLzfnSqkR6hC5u1qX7bUm6uOGoGlUWJxHeAdP+Rg4a+tAvtGFuzXbhO7XMuRTmkt3tq80hXUDQLb+fSxXTeDUviG2Y0nnXQnvoetQCh6AI+f4+KCZ3nwunRhERUTzlxUazfycyO9HW7g5YXFrWNNB1TI8EZ2WfQpOcJ2eWUlK354I595ulDLRAc9D7lLkUWHSCyzn90aG+We5fGc2tRToRYNKKYX3NRHofX5GwD/71eh9Zk/pvp/e7sAYunVgWw8op/Hr0VY2wkdO+v+eAvTT6g1icyLxtb5ns8fntChyKbyKnKy8YpyflNE3wEN4lee4KuuI+CEWSMCYESATIU3t+bHe2e81NMLW5Lsjz/If7a5OPTFmTR4X1zeEEqpZEZm3t9beWzQ5D5l8n7I5UA7gpbv96fLDEann4kVC7RJ1K/bB80gUQjrgksR2Z9E9SvM1LmoM+SyzB4FeyMbu6sdK3pmmKjn2Lt6nwwSNUcVuvHk2ruGKZFa3LJVsKwA8s0gWms+/B4lkKlB2/SBoeNX3Qe6oQijoW3SIbyIwOvb851FRexoNg4XUluQUGtwYEb6jIHhaHx9cwaMNkVjxsZnHjyyj01vQESpQc1KwLc2l1/87556/Rv32EFKoC9g1nE58NXOCjIqxvdvdjQe0YKaocSDbSvfCIHS67xkOMJE03gWWtWp9Gcd2iTzxkbEWa7HrUJGTqamJJ7L1TkxuG0cXN3gg6xCS1fxZ2y68z1vzbYCTfEVW8v5vsG/8p91it87X1v8vBZ+RZXdahNo4GDpJhG/M3U/fo/XtfF7hnYXfmVMFUYJkzOFiloR/c5TE97Zjh098G4P4u9SkTw8ni7AV3ZjME6uGgfzrXoCedwKnEeSPgjb/LrTsT14Jr0PX91Lwmtri6/+kgX/8LRVoXqE6ePmcjj2Ta0JFt8iLhJzfFl8pYyP2L50sAE37OQg0cMCPI2AILGi2MvmofSZG9mIuAsRy3HI2Kqwf80xCVnwf/z6D8E/+tw8DrCBxNUvNsW0B8Ykx2FgwxSqG+NTe5ysxLOpNRnox+oyj9vYhVulOTiT3jrSR8s1EU9cem5xF4F1fsxJx6viBOCd3SU4P7s6MLXMve7Ly1sIrIvw+tbMh6ABPpXY+v0g732WoVOrXeGpx4o8jwkvAyOZCN9weeAoUb+Iy/FVbvuDZP3aTgBa9TiMVWl/CDSEpMP/FjNNlCJhMCyUrhJU7iA7P1myGSLfwWlN2VrCoOBGhvN709MsT4POtSjYUj6xAUGdwRVreGcbSOCv7c90jJZhtW1cV7VD4Me1bx12/s2NpQ4VGHbdl1Y2xWTY0uNn7uyfPa9p1r0k74dihp5HtkATtdp734PNROtswEMQRDwvOuak2ij5QZ2wUw5Arpy6+6A+4vLK2ZwMi7hAAjiciMf6utibS+UtAG0cMZgEji5AO2rgFXhre6Yz8MMqcrnv9fhsFlmGPiSkNLgzvr45L17H3bro0HXxdZ+a3UB1zHcc8ynf3jrzvE+xTjVWSEeowh6XA90o9rJcx+XQJAo9FB8RH4hqq5x8HQaWCPVaKmT3po4FLDbEhj07twMKrUmOcze9wo7wXhK4+7oaNnwrm4YxfZ5wNpmFBa3S4W69io+Iz23RuI/dqeD3tb15yFXmgNDh1z2TWIVLkaIA+p+uL7/KGDmBR/lkqtDqdTk428M58V4ZDEYBoSdDTRpQzX6Ec4nFFLSORMY/LQzOCadwZ3vqWJbhQJaEzzSHZHQm3Bpj4Akcrlk6RAwOBBW9S/erjRwoCXrbsSCPhDjeIhSsw6PTReG6sMEvmybAJJZ9INOIqw1Y9pXgidgOfP/sbfjYyirU24HhT8Ctevz1S0vO8vxvZudeKDf9PVuznTJ5P9rlYG1XnMRxj8uBRgO643Jo9LgcOg/oWIZFJ4WZ+foH68Zm7O5DNoxCOFKA84st2L4aGaGq3AwHOsIjNoi4k57o38l2x2Cw3ghDtjQP5zKbowk8tr/20rfg8fUCzEQqkA7VIRlsQiLUgLi/AbFAEyL4NaTVIKDWndKUvBJgXznJQbLo5TMb8C/efw6uHSQurxYTi/gwm6elCtUROsF0ImCOZWgheQ9W29CU+/txl4MV0oxwItCy8vU+l4M8/CqFJuoox+WQ6r/Fjc2oswnSMVwOhwcAnw6f8tEzVfjqVW8ZSdoXjBlHDg4ClcOrmKf2FUg1dNhB5v17R0kdttz8cDU/A+dmN0cuCrIQIJ944ivwiWe+MngOeBoHg20DjOnygucWNvD52lA2g8HXs3PP8Aoc7N7ECocTeKdgaxPM/ToAX8joBn38iK80Tp9r+ZRXCvDB1pu8jnoIH9GHOko9IAJYvU98MxsWUvA4LocBrnJx2StnykdwhMOlJNlAZjBoM/CuW4HTSb9iQyxoQTJCIBEzIRVrQzpuQHqqhV/bkMKvi5ka/IN/+yT8yfvT0h3R6yJ8YzsJH39yTOUpE/r7oX7Uz+MA61L6DiwHi7DWTMM38rOvYo/83mmlGo4CVm8wGuVreK8KxqPJHq3S73Iw0eRfSDbhFz/5bVCYDu3NXfO3vhAqvLnuv+gdTk4+s7smVKppiMX25YqyE8b2cOwfWeE2QkkmqbjF0AaTcz7YPMwZ4CAJWBCPmAgSDhRNAqUNGQQIB0k6WsfPazAVacEU8rhwWIewvw5Bfw1VvXk4FYw5kZw3bmTgv70/3wcs/o51eCPr7zBYwsaTo0d54USqEHhoIOlKvEHnc8kWxHf5yLksqsMZMG31pdPMYD0WsIQ6EBuHr/SMkzIdbTDS2z22ReCHX7iJg4NA3M6xzZ3l3BvrMz2hDq5eC00GuwdTEEvsw9hF14fI1vOLBViMVSEQtCETtSARtxEkJkoSQ0oSHdIxHRLRlmgx7NhoqA3hQAtBUgbKQaLC4HUQ3txDTw4iMxUnsbFf2jITnjhXgMHZrSq8uxuFVktDXmQM3hzD69btC1W5wCHeclx8PaehibSZUjMGuTrfBs+EF5fecZYlDOm2V8+sI7B43Vv2BDhr2g7uNcdyVWHvLTbLvbIXJ38jHW4oWsflwHgyXK7qh9WdJETDbaDpOXL+SigPf6D2qCRRpw0HZGMvBpcu3SV/NxQ4P7cJV3/z8wgSJLG+5mGQQC8oOm4s5hgAotSMBcdSyeSInuMSVEWrzbJpD+3n6wDWW5zAZ+DCzHbH59xjqLqFCiVnauhhKCNoDhoxyNdjsFeNwXY1AlvlGGxVorCD3+9VQ5BvBaFi+8Cwg7Di34cbv3wVfIoxNG74oYVNvnifP1WCOOD6k/vBsVyXg2TBRCzs5HJMlGSULgc7FWypAdW0DVtxZ1e7pcB2IQLPXLKEE255GQpk4KocFW5lp+CjdxuMZo5OiUT2OyDhyW4E4OTc7W4OvPfi9BYsIyW4sx/tUYei7BMS+Gv5JFyY24ZyPQLFZgRBE0RwBGG3FodsJQHb5SkETwZ2KmHI1UKwbwagZWncVQ2HC+oyj5pnImqwpUdh/WAFLs7cGmx9WjzQvQ6Lvgps6LwStfmyC6x7LbF6XA68Q/RdZxk9CzolcnAMCUugPokHdJqrh2yVikwTzpc2c1GnrpPJ6EzGLGkKaxsWL//U+9Q3NsOu8+vEIOgAyFLHigYe7+Jye/LjPJutgC9ShSfPlRFYsUPRTl4D7Bd+/yn4u198HLZrfigiYHBeSg8790ElpEGe6NG/ji1qwWjeQAR439pdhIvztxxP/AB/VihUhw8t7sLGHWGwvwqnZBWOkhPeNU6OZVioQfzLtyH01h6Qq/sQvVUitNg0SUBtWYbFg4rCOcoHY20v5kTXGKWJuFXPxO0KG2Bx3eTAMuE7c3TyrWSOFc+tCmALYQtjQ1IPaAES7ZhbHsg9Dp+5XBpCwxW0xiLwZjEBe0ZQgMrRhtxF0cTG99puyO9NASbaV7t+nLjhNzaWh4ePpPH16sqWC4VnoFur455KrD4Cj6+FZkblV38f3GVODV5ah6qWzvQmYxbhHltTbhD0wddrUPxoCS0OhURmwq3FeShuHUCmvwNubwXAbgaAKvqpqi3hGyOSqHhXZHm1iJz8VisKlWYcDioRyJcjkCuGYacQhq18CNaRaD//SA7+xk/+IbC2Mr7kwts+fWl/iOtDcxaEDHQ6ufUfFOiumTyJbrLgG5tzMoNkiHrDWz2/tOHKjwU86zJ+8+b9AJZ5WMgqHn8V33pBMMw6L+Fqy/A5XxW9vk7hYJ9AUG0iNVTMlSVr/xvvKZf6Ozm774NCNQWZ1NaJXQ49YAo65EpYa7oCjWYKeUwUCuUo5Esh2EXul913QLO9H8QWgL1iAPaLaFWZyGHs/k0BNLi2HoK/8RPH9Lfh/R9d2QMFCbwtCDzr6/qjFs66y/zHrUQzJHy0n4Z8bQYykb3BGOaJfzPrEFdrUDY5JbFf5MC61xxrgMsBhsTQSKNLk53/F9sBKCHpjKZbaH1bbGXByg3667qhwnYuDhkku3e1fTEapszywWf+9V+Ad1eR+O77EUR+lD4aFBpoKZmKXNA5aAl/d1U26RsBBm1Y2/FBtTwNUV41YFzwIzZWpndgMd6C9WLE42rxboPXHsIGeXpUGEavyj6K59hQscJwNbcEmfhgYPHEv3Q0Dx/K5OFLO5y6mJxn/ZNT5lhs2NQZFYsnElg9WQ6mraIkCIGi2mC2Tboyb+QHxc44q1jbjY+V5TAq551qLfgXf7gC/+oLF+CP3piDt9cTwqriGZ/M2flH5lkZnubNu/KWJuqm1ew3NNjYyzhxuFE91hk0JPDRMjx+vgTdkkYcSHwV9KHu6ptuFngrMJ9QfgsAv55dchzZPM8EvyqIZ4WXikUbgYfCuKZ9bmnHfZbnOOLv1YLVQcA6qsYOB1bLQwxkJQYFsmgZvnIFFWPLpnPxxoGzqOAwvkU26RizZNgKmk7MELXHK1eK8H420Vl1fDJvFOsFP1Ph+kYKrlyBbgW3URFILr9x0J69vAV/+Lp/gFuQHE3QOga5m7V6ssH+xsa8eA6eclluoiSvTMPqQQau56fhgxx+3U/A+/tJ4c/Cu/J01TP4bLfutSp031A52gQS2+jwTWjD3R4gsLEbEXlBum7TiL5f0pRE27Bon8uBwc31wLHz3wcOJI8Znq3AeFuqsAFeUyaVjtZRQUyC/1tX0/DJjx/TjYGXfuZiCcYLhvc/myGJ+8lNZi6R/+vaMvzMv/lZ4Te7XYxDwQyBKRJNaOchu9Ja3PA5lG6nCSw27A1HVd1wVgoIqcUi3j9d2w0L4oqNxiJGPROyyltVOk36bnEzGxwr/33UYlInZliUg2J6zHN7cExG5iwwz5UdHhbodLpKTUiFZejF6AX/yKwsQeAPRCkA+9Dq6FFga0vr/+SVaDhYDpCU/0sRtnG32+Pk40gy+yqqwt+616pwDAIv/pabYn27r6LFlwtDS3cW+4QDZmsubRS3qr7pfqaytuMX+e+BQOXEqtC1cs7N53EgD2Rc3O4EUlivsdFDcoOqBXNTBqzM6nB2rgXnFrNwdr4OKzMVmM+UIB0rQjhQBmipx1sUaxK85h4sRNuwUQn0VcpRPJLpKJ5l9gZATgAu4tXfo48fIoQod0HuxpJYA4FlH6rsIsRqnRdf9J63WQhCqRqEqUhTlHZYyBj511fhcj+B3674IF9KwtJC+cjXGSmxcAzmM/sQRqBUjEBn/xleaSXhM/F3OqzMtRF8LTi/0EAQ1WFpugqz6QokokXwBRuOMvDu/ivHl5NxLk2PtYwfpXUwVobHziMteDMNvWWPqOzawhgsxE2Nu6cHZ/A3OC1DiaWdIrDG9WURuJg+wEFqCqcbT7H1qQz2y0rjva0QUzo8hYjUFK5mMskK+DWLPXamlv/cN+M9hiafxbpFYDMXgaXlu+waHPxwsAJ/68ez0NBVeGS5Bmdma7CQrsN0oowALziedXdeeA0v7kbglch1cgjIx5YTwjFrOfdBe+X7nqzCf3kzAN3t57zJiMOEg7eo3DjlK49lLnJ3O9/K923pEH0P2yo4Rb9O2/N+pCq0u/NIg1/8iXfg5//K7zgbM4CgJOSDd59s/M9//6O2qtooSZmIGTYNFSKhBiwuXxUb2b9wJZ4HmBngwVDgznYYXqEntwo7liG2v/dzX+waUj1FjflSZWVsJ+fIFYnEKacka6t1hRH2mN6IQj43A7vvxWEzH5RWKjsUdulKJDKk64NwPAcfV366ey/+5rxYwzUPiN6XIKoNkpJNnFin7CBlw2MDfS6Hq+spGQ6RxmLLIsl4tRUKmkazpaqUOsBp6xQ29+KiTC+vLbYyUyuQIXJABKPJ6Kl2pCp0j5Z6utVmOGHvBxA43v12PQa5IprwOym4vpmAq6sJ+GA9Brc2wrBZ9KM09kmyYA2Brq/Xh9HzO8PDw+xR8pOftInq/+onf/TRt1bORN+SIFqH7lYaI4JAAJEgSv2wel8kVp/LgcGN9SmPVBfVw0g8UtZTUUPfaGg+6unFjd2o+9R0PlMpB1Wz2TDVYL9wurkRHJn/To4hTU7ktHABJLNCiZxKvPpEE42LXCENd3aTCKAYAiiKEywCtzZ5blUUDCsA3R0mvBkJ9hGro9268cNXCzHhCiDQV2uVI5EH+T7A9pZs/PsNPL/16V95Bl5+dRa+U4d6jEnsUfIMVrejQtT7fFUnVYVREgwemNPJVgtVWlSVV+ae3o1c2DVsaDp2UF9MGZUbe1qwXy3c4i6HNrm7/PfjcCAPgLwGWqM6BbsHCZRAGbiGkplLn2trUbiZ1WC3rIBhe0SWp6wkkXsUHp8HqR1J5GZTQaciqY48taWb9hRPNOOq7GtSpV3l0slD2nqOet2A7+QxrirsIfB8BmZLQShUZmFuuurkZTGxSYq9kKk3TDvdQQVffLCNlqHdDvBwCynV59qpKD2APXWml2dR2NgLQbmagvgR+e/HKYp2CECqx2LH4agjgHYKSQRQHK4jeN5fj8L1tRDc2vLDboXnR8WlH4l5uqAtJZDd91z2OH049I14lpVK2pBS9dZSrJ1bSbQ3F+Lm6kzYWvv6RmDr99emq8jRkB+xD+AhOMZVhT0uB94NLdMH2VwK5uZuOo5N5mTzL83U617ixyXXfjEApXoaksksAlCxZpI2EnjyaP+WRYWmBnuFKYgfkf8+VBVKAJF+APGNt6rTsL2fQgCh5FkPoAQKw9W1ANzJ+mGvrvG0HvBuYOmqL740ijmr38boIa+faZi/qT+cw+OrSo5BYOPpRHn18dn2mm6Ft6vt6eLqQbj5pxsRO28EqckUFUHFH2RRSir2kAELxgKWI7I1WNtOwfPP9vbbYqbaIB5CwQvTVnDw8sUpSGayEA7U2PKsPjAYbTEuteJw6fIR6kuIQcu7JWAnvlupTMPWfgatSyTQ6wnBga5toArbQulaR3Eqtsuq9Xje3eS6wWNlDYHzwG3UOz78wSCiaD8ru9jlyItUtMhUJNTKNq/Eg7K+9W7pMnurKMrwylI2LOByM9LdEdstEVj7bgLWoSyHG5vJ/oUKZC5VaQZ8ts1rHfPcUV5huNHSUGLE4fJl7u/S6fJMKz9MHt3ORpz8d1FBzz4MIORg5fIcbOVTcAsBdA0B9D4HEJLo1e2AkHo28xb9EElZoqoM7WyYNEwl9StS9++He7yZZ6oRuRE4AQ35gbrrgEdDECnrzs98RbhYRclJpLtmmbeg2DtxQMqOx5Pq7jyQ+m4D1iGXw82NRK8Vh306nSy3IiHDaDRVjVDpSMFzeP477yJFadKl6fbBMJfD7e2QQ2tQSRRLMwigBNzeiqH6moYPVqdQAoVQIvmhxAHU4x53+U9ziAQiY75iL2yISHHRADzyyMvpFAJVbPkItbJlK561WAglUuAG4qAkt9xzQaQ6qzwgeIQm84IIurJYeAsr0nlZfAg51she73E53NyK9a5ixpGeihT0VMxoo/rz+VxfD/5qcy8qaUhTmUu1yj7FbugWDZE+dfi7f5KC/V/8UXjnThglEAKo7RTA6KbnWh4Ajahpfbia1hhEmvX95BQ2lDXiy0h2chHKtiIKbIZ8bDuowr6mQFVTmPFegULJ9OFppOqAww6OeDjSB6K2B0RFCSR+rebxeRV5aIAFvS4HG9Z3ImjWzkA4tCf7USH+QMWcSTZbt7LhGHRcDgw282G5fQwj6alGPR2yK1vVfmBZcHM/ADf/a6ijypwiZ5acuKMIMfRYmYeKeQ3dVIl02BaIKi4En5mWfITuRSjJRjUTQQQ7fgX2EVg1Uf1fbHcm9vZWUI0pFrYprYnAivJtOgIyID8MRJYHRBw8JdlqEkSnFLV5eIDVYxnu1QOwd5CBc1En7VXufmAvZBoNy+4mt/KdG/b2g9BqJiEQPCCXltb0yyvnC1vvTc1CX10DemqvNoxEkx6NQwnFJ6UlP4IohCAKqcqmn9IdBFYBf18zbGoapkJydUVpMVVpME2dVurq0lRJLLbt3M0mEFEN1P48CE8C0N0zm79gywMiVxLVYOi+zA8yZO6dxOoAy7R9qOJScO6cxwOP/y1NVxs9LgeUWPsVDUq1OMyGDkCJl8wrZ2v7X3ovfordxAY4IRSP5OIhHsXC5y4imHYVomRVomxi2yVACwzURtVWzFKbEptRhWGzxSYhRGN9KmYfX27BKhPTpsS0KP/KLRUW0AxLoWbLtNUy3v22lEIuiNpw6pPmwYXeiSWW66+5vZ2CD3vqaTouh1pdoR6XA45tveH4qGZnnXMuLLZyd9eh3lXV7q5XTlVQvooIZZHJIHjAwI/WmLZJQM0SYe6TA8ZIw2DEMhx2qHosLg16srY6LomOmOMLykymMZNRazbaai7Hq/Xz6VL1kfRB5cm5bPXTf/iJxmdvP94ioG+c9mDxtec/+6ln4ed+/vEjz+OOjwsX4g+dxOp1OWxM9b8VmUtXmn7NtlyXA/+wZWiQ3Y/DU47bgJ5frO2P3qCmFzzesi7ummDiNEOlUAgoZCfsh2w4BNlY0N7d3A0W99vxJhWL7Zkrujgv8nn9WEOINYWejQk5ZyJ1vFfVYr7Kr3z47ep//9hrDb9m6aJKIz98QH7g/Br97O0nVcf6Oy2+1PXuLy9H4Kln0g+bKmQDae5RLgcBLMvjckCunUmUWpGwYdQbqs91OXDVKCxDGQJbmakd4Hgwu1OU0DueCnhjMKxnpamKysoqRLT2TsRPNsNByAZ9sOfzsRIaCU0qbU+8r4LPoOy3eXK3DSOss0EgQvXFrTtSlt83nFA0nyl+qLTDxB+xqI3GKbMcasifmC/+JCKhi/Ms1jztATMMGx6GowdYfPBNWeXLHgwt5CiKSZzAicAY9zGxltJ1OeCXRLhopGK6Xq5pfq/LIZuPOL1fp3QrP1NWlGDDttQweNRYb8kVymvE73MPNQEti4+bRS60pyhG+cqZHM+vt22UfoyJ3egU/N5ve2RcOGBKlwSRBPAQiAwnT18ApyJbTQLLa4ZS+XLyARl8ZXUZPvV94PjJPY/8SGYNMloNckbU391E/LQO8+EE1sJ8GP74C59Aa4cBHSKz/tdf+Kp59UYuQIRGsWEzF4ZidQGSUxtO4NhWiBasmHOpRvPmZqTjcgj6Lfj2tST88v/1P/EVyOS1d+fqumU1CRhh1o2buSDaxEfb4nE0HLWyHHzmDCxRLZQQbV3xq4rVSUjr2UwFSbVuEmqI0uw23/EQTTUhbTwgohWHVAsQeVYrMAkTphzl0vvW5gzkD2Zgr5qEm4VpuJ7PwAe5NFzLJaFoBfBauu9jP3ie/s1PP31qSLDx3/nzUw8fsAIhFT7yg0dvY5bJBM0PbrAOuS3rftjZT0MytQHM3SpNBXs+3exxOfDyWbmiHz6/NwcBn00si6/BDX3JyZEX8bO8lBhtp+ayG+4QhDngai5njR8BBBaoQZSsCGRDgIjyPyKawuxYxDAW0s3apZVy7bf/OFi5lUvhdZk0748LokEeMgtu1pJw8TO/BDUzgD/5oHcLXLQboK2ePR/TPvpDS234HjyOnSZombbhJSg8TXltNw1XHvOUEuIuh5lel4MgZgiuUMDZ8TQSMiipJr/IxCJvZ5cBqVQCbvVyInZHtflmroCmPPhUm6CUQouAES6NWm3Nnoro+nym2Tw3X6tdXimWLy4eVM/MFWrTU9stJdM0a42fZZ/53Tm+SuVEIBpGo/kTls2QNCF0GODroIYhPO8TYB3DMmReb/YtGYxmPS6HasPrcujlcgSBwgvFGj4+MCpF4FAT/D4Tgth8KNGcbRCZs6MIAsnvsy0OogUE0fmFavXCUrlyaeGgsjy3X8/Ed1o02DJloJp4NqhQXnl8Cz7zu8/eg65jrl3iTQ9zg5a6bE34Hj3uEljS5bA51TNdnSyHaiPgQ4XHUMAQm/UbCX6fBU8s7XHpJbQqL6tlmmIJBvG5IJpuNi4giC4vFysoiSpLs/l6OrbdJgGzCyJbbmvP6yYR6CygMBtRKB6koNIIePb8O7Hj8NBqfgkid3+UtgSSccps/XsOWFZ3CJkDLCd6JqvqCZdDOxo2DB6MVojrcqACQIZJUZUR4a0O+iw7EdPby9ONxvmlavWR5WL5wkKhujSTrydjO23wW5bMWpHbYXDfp3xufAqjkYDd4iys7WTwOdLwwVoKrq4l4VY2BuuFEBiWNuaeykeCyOyTRBMQ3QNg2R5giR8P5b/jGVPhoj4VMfTtfDBEuUMAQRRCkKTj7dbSTKNxcalSubxcqnAQLU7vN6Zi2TavGS/jxo5bQOx0jvfBIWzVk7BXmIPV3QxcRwBdXU2JXKybm1HIlkJyJYziwYLdcaOOANGgBCxjAIjsCVzuLbBcqRUAuS54qxSE/fIszM9UZdVhhaj+qvXYmXI5GjLMpy4cFC8hiM5zEGXyjVhsR4dAH4icdQhqs5yBncKMkEDXN1wJxHOyongflEC2NgBA7g4QRwoQYnM33HAQtT2q7RRA9PD4nB4kYPVkObRF/nsa5udvymVwvKSkQn/1Z/7gHTVYtSDoAZEpymuSeiGj7uzPCQBd2+DgcQB0CwG0W+E1Ob3VUMYHkFzlQkQKnuRVFMQIG2cXkkYgoHglkXmvJJGOHbGyEp0A6wQSy2N6a7Cxm4QXuHHNs0WoQ7dUo2rVKrNk686MurbNl1KhBFpPwnUJoL1aEExbg95cN3chwziVgcXZ3AHq7gANKjHs2WjDePRc2Xj+8p6emWq2P/0bLxqMqcbv/eePs8euJO9Lx4oQPSUTYJ1AYvWQlzeuz8BLty/C2zfOwnW+Fm+Nc6ApwlVYvo56j90dgAZwIlG11q8a5mOLZf1Dlwv6M5f29Ctnc/rZ+ZyZiu2zUCQPN9eehF/+jRcdP5pKne0TJ8c9P8hxSwJ+/0v/EV77xoaGhtmid7wV6tR/slivF3r0SuCxLTMvJ5LmPTFUxTSnwy3GfWBodYJp8E3B8aukU6ZNoGz4hB3w7rs/BY89npiM+gMssax+l4OzNg9GFfQ6Loj0vmZB366vJt+ltRIdcQPLc+nJ8SADq8/lAONKpGGORnOAo3FM/ciAjrj3OMtNJ8eDAawel8MJQNTvIzInQzEB1iGXA0xCHpPjboFVrTo4scFylwi7fMiVRG2Pj+gBAZGzTtm2J87zBxZYP/8LT8CdtWX8Q8oj93vQ9Vg/sKNmiaUWBKZnQpMRf1DdDZNjckyANTkmwJocE2BNjskxAdbkmABrckyANTkmxwRYk2MCrMkxAdbkmBwTYE2OCbAmxwRYk2NyTIA1Oe7r8f8LMAAct7uiOHaEdAAAAABJRU5ErkJggg==")
  8. _PutImage (300, 150), logo

View in QBJS

Offline _vince

  • Seasoned Forum Regular
  • Posts: 422
Re: QBJS - QBasic for the Web
« Reply #100 on: April 06, 2022, 06:52:24 pm »
I'm very happy to have this game playable in the browser:

https://v6p9d9t4.ssl.hwcdn.net/html/5512918/index.html?qbcode=AnKnuDo0t7cAQQF8OivDg2NLG0umAFaIUmFuZG9taXplwIqNLayuRcKiMrMmNzP4Ag+AWoBat0NUeXBlvEKTe6KTK5urY6GGUF4eJgUFz7ioje6sTYyn+gLy8/Le7CRW5kf24CRGltSFU2hhcmVkWVfiODSysbLAAo5AMXAG94BZsAMi9YBoMApsfDvtIEY29sb3J1tkeHzdeuMNzaXplV1AubvHhBc2hufzAHumFzeR0xuTr55ADVssRSZURpbdG/dpCMTewuTI81udlNbO7MyLDPAMK7trlW9fQWAddhhB1DWTH2jvbCZ5D6u29UyQvk/eO7Wxro0YRjHhopvo0YY0ny2L7tO845c+GeQROs6Z9NZuRRey99+3FTKPs+YgGf713ls++X53Sr6o7HV770hd+osdfd8uFfuRePvm+c/X5l9kobxyBw6iLowuFwwVh6qw2HaY9uwVhvHaY9wCsOxsmPbMFcbjlMe24LI4DlMe3BZHY4Jj3DBZHI4hjzDBpPE8jy5cWk9nBHl1DFqPRwx5dRxejyPNbPsSej2cO2fccno9HmNn1HJ6PE85s+xEniez22fccnkej22fccnkeZ7bPsSeZ7PTZ9xyeZ6PTZ4lk8zzPRZ4uUWWF2XTqWcWXSwXTqWcAsFiunYHArtZddO5ZwK6XNXTqWcCsVzl06A4Jdrmrp3LOCXK6q6cyzglksRdOwA4EXa7XTuWcCLldrp3XOBliu107A4KXa5XTuucFrlcrp1POC1iul07A4kXaxXTuecULlYrpzXOKVksl07A4pXa6V07rnFK5WJdOa5wJZLEunYHAl2umunNc4IuV0105rnBFiumunYAcELtdrp3XOClyu107rnBaxXa6dgcFrtcrp3XOKFyuV05rnFCxXK6dgcULtYrp3XOKFysV05rnFCxWK6d1OKF2si6dhnFK5WRdOQzilYrIundDitdrrXTuucBXKwrpzXOArFYV05pQ4DldrtdO65wQlyu107rnBfWK7XTuhwULtcrpiucFy5XK6YtnFSu65XTFDirWF3XTmucWa5XddOa5wWWKxXTuhwWXa6105DOC65XWunIZxUWKyLp3Q4qLtYV07rnAC5WFdOa5wCsVhXTulDgCgGy7Xa6d1zguVcrtdO65wAliu107ocFddrldO65wALlcrp3XOCpYrldO6HBau13XTFc4L1y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3u+8BIiz/D77fX33n7ufbXVf6LNnF9sIqNLo2Mt/F82c/rI799nI0AURvzVD/gpLNOM6E0M9oZgB9P8MxDS0JsJBbmSEGEnN7pDOhkBqjQyt2aqqGXhLiOzC2NLI4zlDOUM6Ea9QzmhC81VVVYfjhghivzVVQww0Vsc2XNVVVQz44T/mqqhmIY2c1VVD3Ph/H//xn54nuf+Jrh3Of+JXDzGFP//x5xN3EFYoLhhcPm4cT////GEzxdiODYwsbK4sLFdcNLFZp////w3ioxVn/////jFnwBwPyln/////y4l/PF3lgV/K+K4UOLEZvLTNyziwzlOzn7nWP3nVOXnRml/////wBQ8UpzL///+c/O0v//EbEUpf/+PueK84sHOTsdaX//j5nzgl//86541CX//wLn1KX//izn1L//50Z46uUv//GmKXipecVwesQLg5uCpf///iXCRm9yxBc+sIQKo34icF7l/////hY4jWfWFhxwwXuf//////iBOHZYeWz6n/////h4DTmV4dJ////gZa////ifPmv///43g2eJYXiVi/EkGciA10qzaT0HhpKMA0lDnSRDcNM1f///0yDsCo1f//SXSdf9PtO1r/p7D7Atf//B2GmNLcy7yeWBHT7QLRA6caQ6WMdMivJ5PLHjtBQkav//hv4+684beOsE7r///+lvS3rzpawNhXdf////8Bw2OF5wxbDIAeBnc4Hr//////4ZO6O8c8cHjDj/j5goAYam6Mrg4Rw/odCaD0Y4pUZ42vGp40bUu2OEPX/////UZr//////4Qd48wlqk8d6h1myqEBeM6x0PHNZ6MdapOBJwJODLHCAAhV/////wBgNf///wzV//9Qda//+GGDdOcLtev///6kYO05w96V/////4xAmFcm90YXRlwanCCcOnD54/PHFf////+LVwgjqI4fOCjgmv/////H8XDZ1cdmrhPjDu8c8Zw5wQgF0WV2Dx07h3jWzICDFhdl4CtiC9wHseJwns+LHFWqOqlOD2////4LX//8Nr3//92BAZEaXNwbGF5v//4bac3/wZgd7/4GOnDAAKlsrykNLpf/B+0fC9///Ah04dowyWyvKI3u7c1TLswL2uAp7l2Ay7VMuy6t///tDFU2VsZWN03LQ0Nhc2XhTf///+1h6D3YI4I2sAurhf/////CtyzQg4FOGzs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