From adamnt42 at gmail.com Tue Aug 3 02:03:17 2021 From: adamnt42 at gmail.com (bb) Date: Tue, 03 Aug 2021 09:33:17 +0930 Subject: [Gambas-user] IDE crashes with certain projects Message-ID: <39e93755ff3a87b9e02f119958e95d600b298ffb.camel@gmail.com> I am getting the following with certain projects: bb at bluecow-mx [/srv/gb3prj/BedRock/controls] gambas3 imgmgr/ Received signal 11 SEGV_ACCERR 559ae6870130 #0 0x7feb8221293e #1 0x7feb82212a50 #2 0x7feb82213087 #3 0x7feb903ae840 #4 0x559ae6870130 r8: 000000000000002f r9: 0000559ae6ccbeb0 r10: 0000000000000001 r11: 00007feb90501220 r12: 00007feb86930088 r13: 0000559ae686f8d0 r14: 00007feb86930058 r15: 0000000000000000 di: 0000559ae686f8d0 si: 0000000000000002 bp: 00007ffda3494520 bx: 00007ffda34944f8 dx: 0000559ae6870350 ax: 0000559ae6870230 cx: 0000000000000000 sp: 00007ffda34944e8 ip: 0000559ae6870130 efl: 0000000000010202 cgf: 002b000000000033 erf: 0000000000000015 trp: 000000000000000e msk: 0000000000000000 cr2: 0000559ae6870130 [end of stack trace] Calling _exit(1). Core file will not be generated. I cant see anything "wrong" with the concerned .project files but here is one: # Gambas Project File 3.0 Title=Image Manager Startup=FTest Version=0.0.9 Component=gb.image Component=gb.gui.qt Component=gb.form Description="This component provides a custom image view control that supports zooming and rotation." Environment="PH_DEBUG_IM=TRUE" TabSize=2 Language=en_US Type=Component Maintainer=bb Vendor=paddys-hill VendorPrefix=ph Address=bb at localhost.localdomain License=General Public License Prefix=1 PackageName=gambas3-ph-imgmgr-0.0.9 CreateEachDirectory=1 Packager=1 Systems=fedora Groups=fedora:"Development/Libraries" System info attached. Can anyine see the obvious that I can't? tia b -------------- next part -------------- [System] Gambas=3.16.2 6ac18789c (local) OperatingSystem=Linux Kernel=5.10.0-5mx-amd64 Architecture=x86_64 Distribution=MX 19.4 patito feo Desktop=XFCE Font=Liberation Sans,10 Scale=7 Theme=proxy Language=en_AU.UTF-8 Memory=7416M [Libraries] Cairo=libcairo.so.2.11600.0 Curl=libcurl.so.4.5.0 DBus=libdbus-1.so.3.19.13 GDK2=libgdk-x11-2.0.so.0.2400.32 GDK3=libgdk-3.so.0.2404.1 GStreamer=libgstreamer-1.0.so.0.1404.0 GTK+2=libgtk-x11-2.0.so.0.2400.32 GTK+3=libgtk-3.so.0.2404.1 OpenGL=libGL.so.1.7.0 Poppler=libpoppler.so.82.0.0 QT4=libQtCore.so.4.8.7 QT5=libQt5Core.so.5.11.3 SDL=libSDL-1.2.so.0.11.4 SQLite=libsqlite3.so.0.8.6 [Environment] COLORTERM=truecolor DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-hsfeqFxQ6H,guid=991b560fad1f9b344c9c2dd26107ca51 DESKTOP_SESSION=lightdm-xsession DISPLAY=:0.0 EDITOR=geany GB_GUI=gb.qt5 GDMSESSION=lightdm-xsession GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1 GTK_MODULES=canberra-gtk-module HOME= LANG=en_AU.UTF-8 LC_ALL=en_AU.UTF-8 LD_LIBRARY_PATH=:/usr/local/pgsql/lib LESSCLOSE=/usr/bin/lesspipe %s %s LESSOPEN=| /usr/bin/lesspipe %s LOGNAME= LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: OLDPWD= PANEL_GDK_CORE_DEVICE_EVENTS=0 PAPERSIZE=a4 PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/pgsql/bin PS1=\u\[\]@\[\]\h\[(B\] [\[(B\]\[\033[38;2;131;144;240m\]\w\[(B\]] \[(B\] PWD=/srv/gb3prj/BedRock/controls QT_ACCESSIBILITY=1 QT_LOGGING_RULES=*.debug=false QT_PLATFORMTHEME=gtk2 QT_PLATFORM_PLUGIN=gtk2 QT_QPA_PLATFORMTHEME=gtk2 QT_SCALE_FACTOR=1 SESSION_MANAGER=local/:@/tmp/.ICE-unix/22507,unix/:/tmp/.ICE-unix/22507 SHELL=/bin/bash SHLVL=1 SSH_AGENT_PID=22593 SSH_AUTH_SOCK=/run/user/1000/keyring/ssh TERM=xterm-256color TZ=:/etc/localtime USER= VTE_VERSION=5402 WINDOWID=102762505 XAUTHORITY=/.Xauthority XDG_CONFIG_DIRS=/etc/xdg XDG_CURRENT_DESKTOP=XFCE XDG_DATA_DIRS=/usr/share/xfce4:/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:/usr/share XDG_GREETER_DATA_DIR=/var/lib/lightdm/data/ XDG_MENU_PREFIX=xfce- XDG_RUNTIME_DIR=/run/user/1000 XDG_SEAT=seat0 XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 XDG_SESSION_CLASS=user XDG_SESSION_DESKTOP=lightdm-xsession XDG_SESSION_ID=24 XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1 XDG_SESSION_TYPE=x11 XDG_VTNR=7 _=/usr/bin/gambas3 force_s3tc_enable=true From jussi.lahtinen at gmail.com Tue Aug 3 02:57:08 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Tue, 3 Aug 2021 03:57:08 +0300 Subject: [Gambas-user] IDE crashes with certain projects In-Reply-To: <39e93755ff3a87b9e02f119958e95d600b298ffb.camel@gmail.com> References: <39e93755ff3a87b9e02f119958e95d600b298ffb.camel@gmail.com> Message-ID: This is not IDE crashing, it is the interpreter. Please recompile gbx3 with debugging info. Now the backtrace is useless. Jussi On Tue, Aug 3, 2021 at 3:04 AM bb wrote: > I am getting the following with certain projects: > > bb at bluecow-mx [/srv/gb3prj/BedRock/controls] gambas3 imgmgr/ > Received signal 11 SEGV_ACCERR 559ae6870130 > #0 0x7feb8221293e > #1 0x7feb82212a50 > #2 0x7feb82213087 > #3 0x7feb903ae840 > #4 0x559ae6870130 > r8: 000000000000002f r9: 0000559ae6ccbeb0 r10: 0000000000000001 r11: > 00007feb90501220 > r12: 00007feb86930088 r13: 0000559ae686f8d0 r14: 00007feb86930058 r15: > 0000000000000000 > di: 0000559ae686f8d0 si: 0000000000000002 bp: 00007ffda3494520 bx: > 00007ffda34944f8 > dx: 0000559ae6870350 ax: 0000559ae6870230 cx: 0000000000000000 sp: > 00007ffda34944e8 > ip: 0000559ae6870130 efl: 0000000000010202 cgf: 002b000000000033 erf: > 0000000000000015 > trp: 000000000000000e msk: 0000000000000000 cr2: 0000559ae6870130 > [end of stack trace] > Calling _exit(1). Core file will not be generated. > > I cant see anything "wrong" with the concerned .project files but here > is one: > > # Gambas Project File 3.0 > Title=Image Manager > Startup=FTest > Version=0.0.9 > Component=gb.image > Component=gb.gui.qt > Component=gb.form > Description="This component provides a custom image view control that > supports zooming and rotation." > Environment="PH_DEBUG_IM=TRUE" > TabSize=2 > Language=en_US > Type=Component > Maintainer=bb > Vendor=paddys-hill > VendorPrefix=ph > Address=bb at localhost.localdomain > License=General Public License > Prefix=1 > PackageName=gambas3-ph-imgmgr-0.0.9 > CreateEachDirectory=1 > Packager=1 > Systems=fedora > Groups=fedora:"Development/Libraries" > > System info attached. > Can anyine see the obvious that I can't? > > tia > b > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jussi.lahtinen at gmail.com Tue Aug 3 03:01:45 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Tue, 3 Aug 2021 04:01:45 +0300 Subject: [Gambas-user] IDE crashes with certain projects In-Reply-To: References: <39e93755ff3a87b9e02f119958e95d600b298ffb.camel@gmail.com> Message-ID: If unclear... cd ~/gambas/main/gbx sudo make clean && make "CFLAGS=-O0 -g" "CXXFLAGS=-O0 -g" && sudo make install Jussi On Tue, Aug 3, 2021 at 3:57 AM Jussi Lahtinen wrote: > This is not IDE crashing, it is the interpreter. > Please recompile gbx3 with debugging info. Now the backtrace is useless. > > Jussi > > On Tue, Aug 3, 2021 at 3:04 AM bb wrote: > >> I am getting the following with certain projects: >> >> bb at bluecow-mx [/srv/gb3prj/BedRock/controls] gambas3 imgmgr/ >> Received signal 11 SEGV_ACCERR 559ae6870130 >> #0 0x7feb8221293e >> #1 0x7feb82212a50 >> #2 0x7feb82213087 >> #3 0x7feb903ae840 >> #4 0x559ae6870130 >> r8: 000000000000002f r9: 0000559ae6ccbeb0 r10: 0000000000000001 r11: >> 00007feb90501220 >> r12: 00007feb86930088 r13: 0000559ae686f8d0 r14: 00007feb86930058 r15: >> 0000000000000000 >> di: 0000559ae686f8d0 si: 0000000000000002 bp: 00007ffda3494520 bx: >> 00007ffda34944f8 >> dx: 0000559ae6870350 ax: 0000559ae6870230 cx: 0000000000000000 sp: >> 00007ffda34944e8 >> ip: 0000559ae6870130 efl: 0000000000010202 cgf: 002b000000000033 erf: >> 0000000000000015 >> trp: 000000000000000e msk: 0000000000000000 cr2: 0000559ae6870130 >> [end of stack trace] >> Calling _exit(1). Core file will not be generated. >> >> I cant see anything "wrong" with the concerned .project files but here >> is one: >> >> # Gambas Project File 3.0 >> Title=Image Manager >> Startup=FTest >> Version=0.0.9 >> Component=gb.image >> Component=gb.gui.qt >> Component=gb.form >> Description="This component provides a custom image view control that >> supports zooming and rotation." >> Environment="PH_DEBUG_IM=TRUE" >> TabSize=2 >> Language=en_US >> Type=Component >> Maintainer=bb >> Vendor=paddys-hill >> VendorPrefix=ph >> Address=bb at localhost.localdomain >> License=General Public License >> Prefix=1 >> PackageName=gambas3-ph-imgmgr-0.0.9 >> CreateEachDirectory=1 >> Packager=1 >> Systems=fedora >> Groups=fedora:"Development/Libraries" >> >> System info attached. >> Can anyine see the obvious that I can't? >> >> tia >> b >> >> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Tue Aug 3 20:28:30 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Tue, 3 Aug 2021 19:28:30 +0100 Subject: [Gambas-user] tracking down toolkit erors Message-ID: I have this program i'm developing that was starting and stopping cleanly then i recently added some controls and did various other things and now it says this when it starts... (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing error: :1:15: Expected a valid selector (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.343: Theme parsing error: :1:19: Expected a valid selector (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.346: Theme parsing error: :1:17: Expected a valid selector (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.354: Theme parsing error: :1:12: Expected a valid selector (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.365: Theme parsing error: :1:13: Expected a valid selector Is there a way to track down what's causing it? thanks BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: From jussi.lahtinen at gmail.com Tue Aug 3 23:28:54 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Wed, 4 Aug 2021 00:28:54 +0300 Subject: [Gambas-user] File_Read() doesn't work In-Reply-To: <7382d90a-7191-0384-7ab9-0ee035cf9404@gmail.com> References: <7382d90a-7191-0384-7ab9-0ee035cf9404@gmail.com> Message-ID: > > The bug should have been fixed by commit > > https://gitlab.com/gambas/gambas/-/commit/a7a249543ec1e5d137755dfbb0059087c21b7c96 > . > Still a problem or does my code have yet something odd..? See the attachment. And probably related issue; I don't understand how this has worked for so many years: tmp = "" Seek #hWatchFile, 9 <-- Seek to the last byte. Read #hWatchFile, tmp <--- tmp is string. And magically the tmp variable contained "test". How!??? Now it is: tmp = "" Seek #hWatchFile, 5 <-- Seek to the string. Read #hWatchFile, tmp <--- tmp now contains "test" as it should. Any idea why this worked? My brain is a bit rusty. I haven't touched computers for a while. Jussi -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: GambasTestercmd-0.10.24.tar.gz Type: application/gzip Size: 30742 bytes Desc: not available URL: From adamnt42 at gmail.com Wed Aug 4 01:32:50 2021 From: adamnt42 at gmail.com (bb) Date: Wed, 04 Aug 2021 09:02:50 +0930 Subject: [Gambas-user] tracking down toolkit erors In-Reply-To: References: Message-ID: On Tue, 2021-08-03 at 19:28 +0100, Bruce Steers wrote: > I have this program i'm developing that was starting and stopping > cleanly > then i recently added some controls and did various other things and > now it > says this when it starts... > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing > error: > :1:15: Expected a valid selector > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.343: Theme parsing > error: > :1:19: Expected a valid selector > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.346: Theme parsing > error: > :1:17: Expected a valid selector > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.354: Theme parsing > error: > :1:12: Expected a valid selector > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.365: Theme parsing > error: > :1:13: Expected a valid selector > > > Is there a way to track down what's causing it? > > thanks > BruceS > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- Given that goggling that warning text yields about 18.6 gazillion results I'd say it is a gtk catch-all warning for any failure to parse your desktop theme,so 1) try changing desktop theme, if it goes away then I think you have no option bar learning gnome theming and try and find the issue in your current theme (YUK!) good luck bruce From jose.rodriguez at cenpalab.cu Wed Aug 4 01:44:21 2021 From: jose.rodriguez at cenpalab.cu (jose.rodriguez at cenpalab.cu) Date: Tue, 03 Aug 2021 23:44:21 +0000 Subject: [Gambas-user] tracking down toolkit erors In-Reply-To: References: Message-ID: <5ba27d1984073bc189f69d4a8dea6ae1@cenpalab.cu> August 3, 2021 2:29 PM, "Bruce Steers" )> wrote: I have this program i'm developing that was starting and stopping cleanly then i recently added some controls and did various other things and now it says this when it starts... (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing error: :1:15: Expected a valid selector (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.343: Theme parsing error: :1:19: Expected a valid selector (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.346: Theme parsing error: :1:17: Expected a valid selector (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.354: Theme parsing error: :1:12: Expected a valid selector (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.365: Theme parsing error: :1:13: Expected a valid selector Is there a way to track down what's causing it? thanks BruceS GTK has always output loads of different errors with many programs (not gambas ones, I mean), when run in a terminal. People say it depends on the current theme and whatnot... Regards, Joe1962 -------------- next part -------------- An HTML attachment was scrubbed... URL: From adamnt42 at gmail.com Wed Aug 4 10:16:16 2021 From: adamnt42 at gmail.com (bb) Date: Wed, 04 Aug 2021 17:46:16 +0930 Subject: [Gambas-user] Exist with wildcard Message-ID: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> I am trying to determine if a particular library has been installed in a particular diectory. I was sure Exist(path) took wildcards into account, but it doen't seem so. Any ideas on how to do a wildcard search for a file then? e.g. I am looking for "ph.internals:*.gambas" in "/srv/gbshared/lib". The actual file is "ph.internals:1.0.gambas" i.e. it has the library version included in it, but I don't know WHAT version I am looking for. tia bruce From rwe-sse at osnanet.de Wed Aug 4 10:59:39 2021 From: rwe-sse at osnanet.de (Rolf-Werner Eilert) Date: Wed, 4 Aug 2021 10:59:39 +0200 Subject: [Gambas-user] Exist with wildcard In-Reply-To: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> References: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> Message-ID: <98871679-33ef-4361-143a-52bc6bc1bba3@osnanet.de> That would mean, the answer could be anything from 0 to n. In this case, why not simply make a list of all occurrences of files with the wildcard, and then "if list.count > 0 then"... Regards Rolf Am 04.08.21 um 10:16 schrieb bb: > I am trying to determine if a particular library has been installed in > a particular diectory. > > I was sure Exist(path) took wildcards into account, but it doen't seem > so. Any ideas on how to do a wildcard search for a file then? > > e.g. I am looking for "ph.internals:*.gambas" in "/srv/gbshared/lib". > The actual file is "ph.internals:1.0.gambas" i.e. it has the library > version included in it, but I don't know WHAT version I am looking for. > > tia > bruce > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > From adamnt42 at gmail.com Wed Aug 4 12:38:36 2021 From: adamnt42 at gmail.com (bb) Date: Wed, 04 Aug 2021 20:08:36 +0930 Subject: [Gambas-user] Exist with wildcard In-Reply-To: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> References: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> Message-ID: <9a098555125d62805e17f7a935eeb3a5093639ef.camel@gmail.com> On Wed, 2021-08-04 at 17:46 +0930, bb wrote: > I am trying to determine if a particular library has been installed > in > a particular diectory. > > I was sure Exist(path) took wildcards into account, but it doen't > seem > so. Any ideas on how to do a wildcard search for a file then? > > e.g. I am looking for "ph.internals:*.gambas" in "/srv/gbshared/lib". > The actual file is "ph.internals:1.0.gambas" i.e. it has the library > version included in it, but I don't know WHAT version I am looking > for. > > tia > bruce > > > OK, long explanation. 1) I presume that everyone knows the various places that the executable for a gambas library project can end up and the order in which they are searched. 2) We have a shared directory "/srv/gbshare/paddys-hill/" where we place stable versions of our libraries for all co-op members to use in other projects. 3) When someone is maintaining a library, their "testing" executable ends up in "~/.local/lib/gambas3/paddys-hill". That way they can code and test in their own "sandbox" so to speak. 4) I am writing a standalone utility project to help the library developer : a) remove their own ~/.local/lib/gambas3/paddys-hill executable b) cleanup and recompile the library project to the shared area c) if necessary, remove any earlier versions from the various places library executables can exist. 5) the gambas compiler creates an executable for libraries as :.gambas which is fine. However, in order to do all the things in 4) I need to check for the existance of "any" version of the library is various places, no matter what in the filename. Exist(filename) does not support wildcards. So my question is very simple. Does anyone have a good idea as to doing an existance check, like Exist(), that does cope with a wildcard? Nothing more. I dont care what the actual part of the filename is (I get that elsewhere). I don't need to display anything. I don't care if there is more than one file (which there can't be, anyway). Just is there a file named, for instance, "xyzzy:*.gambas" where * will be the gambas in the directory I am looking at. tia bruce From tobs at taboege.de Wed Aug 4 12:45:56 2021 From: tobs at taboege.de (Tobias Boege) Date: Wed, 4 Aug 2021 12:45:56 +0200 Subject: [Gambas-user] Exist with wildcard In-Reply-To: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> References: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> Message-ID: <20210804104556.GA758534@highrise.localdomain> On Wed, 04 Aug 2021, bb wrote: > I am trying to determine if a particular library has been installed in > a particular diectory. > > I was sure Exist(path) took wildcards into account, but it doen't seem > so. Any ideas on how to do a wildcard search for a file then? > > e.g. I am looking for "ph.internals:*.gambas" in "/srv/gbshared/lib". > The actual file is "ph.internals:1.0.gambas" i.e. it has the library > version included in it, but I don't know WHAT version I am looking for. > Exist() doesn't understand wildcards, but Dir() does, but not with the same syntax as the shell, but with Gambas's LIKE syntax. You can use If Dir("/srv/gbshared/lib", "ph.internals:*.gambas", gb.File).Count > 0 Then ... This does not short-circuit to returning True as soon as a file matching the pattern is found, but always gives you the entire array of all matches before you call Count on it, but probably that's not a critical overhead. Best, Tobias -- "There's an old saying: Don't change anything... ever!" -- Mr. Monk From adamnt42 at gmail.com Wed Aug 4 12:48:00 2021 From: adamnt42 at gmail.com (bb) Date: Wed, 04 Aug 2021 20:18:00 +0930 Subject: [Gambas-user] Exist with wildcard In-Reply-To: <9a098555125d62805e17f7a935eeb3a5093639ef.camel@gmail.com> References: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> <9a098555125d62805e17f7a935eeb3a5093639ef.camel@gmail.com> Message-ID: On Wed, 2021-08-04 at 20:08 +0930, bb wrote: > > file (which there can't be, anyway). Just is there a file named, for > instance, "xyzzy:*.gambas" where * will be the gambas in > the > directory I am looking at. > > tia > bruce > > No, I am still not being clear enough. Is there a file named, for instance "xyzzy:[anyversion].gambas" in the directory I am looking at. I want to use "*" as a wildcard for the [anyversion] part of the filename as I have no idea what the actual version in that directory is. tia bruce From adamnt42 at gmail.com Wed Aug 4 12:51:13 2021 From: adamnt42 at gmail.com (bb) Date: Wed, 04 Aug 2021 20:21:13 +0930 Subject: [Gambas-user] Exist with wildcard In-Reply-To: <20210804104556.GA758534@highrise.localdomain> References: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> <20210804104556.GA758534@highrise.localdomain> Message-ID: <090cadbcb575a54da73091f9b2701a545d6b2318.camel@gmail.com> On Wed, 2021-08-04 at 12:45 +0200, Tobias Boege via User wrote: > On Wed, 04 Aug 2021, bb wrote: > > I am trying to determine if a particular library has been installed > > in > > a particular diectory. > > > > I was sure Exist(path) took wildcards into account, but it doen't > > seem > > so. Any ideas on how to do a wildcard search for a file then? > > > > e.g. I am looking for "ph.internals:*.gambas" in > > "/srv/gbshared/lib". > > The actual file is "ph.internals:1.0.gambas" i.e. it has the > > library > > version included in it, but I don't know WHAT version I am looking > > for. > > > > Exist() doesn't understand wildcards, but Dir() does, but not with > the > same syntax as the shell, but with Gambas's LIKE syntax. You can use > > If Dir("/srv/gbshared/lib", "ph.internals:*.gambas", gb.File).Count > > 0 Then > ... > > This does not short-circuit to returning True as soon as a file > matching > the pattern is found, but always gives you the entire array of all > matches > before you call Count on it, but probably that's not a critical > overhead. > > Best, > Tobias > Ah, of course! (Smacks head on keyboard). Your answer crossed over with me trying to explain the issue. Thanks bruce From adamnt42 at gmail.com Wed Aug 4 13:50:33 2021 From: adamnt42 at gmail.com (bb) Date: Wed, 04 Aug 2021 21:20:33 +0930 Subject: [Gambas-user] IDE crashes with certain projects In-Reply-To: References: <39e93755ff3a87b9e02f119958e95d600b298ffb.camel@gmail.com> Message-ID: On Tue, 2021-08-03 at 04:01 +0300, Jussi Lahtinen wrote: > If unclear... > cd ~/gambas/main/gbx > sudo make clean && make "CFLAGS=-O0 -g" "CXXFLAGS=-O0 -g" && sudo > make > install > > > Jussi > > On Tue, Aug 3, 2021 at 3:57 AM Jussi Lahtinen < > jussi.lahtinen at gmail.com> > wrote: > > > This is not IDE crashing, it is the interpreter. > > Please recompile gbx3 with debugging info. Now the backtrace is > > useless. > > > > Jussi > > > > On Tue, Aug 3, 2021 at 3:04 AM bb wrote: > > > > > I am getting the following with certain projects: > > > > > > bb at bluecow-mx [/srv/gb3prj/BedRock/controls] gambas3 imgmgr/ > > > Received signal 11 SEGV_ACCERR 559ae6870130 > > > #0 0x7feb8221293e > > > #1 0x7feb82212a50 > > > #2 0x7feb82213087 > > > #3 0x7feb903ae840 > > > #4 0x559ae6870130 > > > r8: 000000000000002f r9: 0000559ae6ccbeb0 r10: > > > 0000000000000001 r11: > > > 00007feb90501220 > > > r12: 00007feb86930088 r13: 0000559ae686f8d0 r14: > > > 00007feb86930058 r15: > > > 0000000000000000 > > > di: 0000559ae686f8d0 si: 0000000000000002 bp: > > > 00007ffda3494520 bx: > > > 00007ffda34944f8 > > > dx: 0000559ae6870350 ax: 0000559ae6870230 cx: > > > 0000000000000000 sp: > > > 00007ffda34944e8 > > > ip: 0000559ae6870130 efl: 0000000000010202 cgf: > > > 002b000000000033 erf: > > > 0000000000000015 > > > trp: 000000000000000e msk: 0000000000000000 cr2: > > > 0000559ae6870130 > > > [end of stack trace] > > > Calling _exit(1). Core file will not be generated. > > > > > > I cant see anything "wrong" with the concerned .project files but > > > here > > > is one: > > > > > > # Gambas Project File 3.0 > > > Title=Image Manager > > > Startup=FTest > > > Version=0.0.9 > > > Component=gb.image > > > Component=gb.gui.qt > > > Component=gb.form > > > Description="This component provides a custom image view control > > > that > > > supports zooming and rotation." > > > Environment="PH_DEBUG_IM=TRUE" > > > TabSize=2 > > > Language=en_US > > > Type=Component > > > Maintainer=bb > > > Vendor=paddys-hill > > > VendorPrefix=ph > > > Address=bb at localhost.localdomain > > > License=General Public License > > > Prefix=1 > > > PackageName=gambas3-ph-imgmgr-0.0.9 > > > CreateEachDirectory=1 > > > Packager=1 > > > Systems=fedora > > > Groups=fedora:"Development/Libraries" > > > > > > System info attached. > > > Can anyine see the obvious that I can't? > > > > > > tia > > > b > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- Thanks Jussi, I tried that but still got the same result. What I have discovered is that if I run gambas3 --cleanup the IDE opens successfully. I think it may be something that it is looking at in the .gambas directory that it doesn't like. When I find another occurrence I'll look further into that idea and check back. b From brian at westwoodsvcs.com Wed Aug 4 19:21:06 2021 From: brian at westwoodsvcs.com (Brian G) Date: Wed, 4 Aug 2021 10:21:06 -0700 (PDT) Subject: [Gambas-user] Exist with wildcard In-Reply-To: References: <406db95cb25b812a9fa9ad6880b159bc022531ac.camel@gmail.com> <9a098555125d62805e17f7a935eeb3a5093639ef.camel@gmail.com> Message-ID: <1394118349.12460.1628097666715.JavaMail.zimbra@westwoodsvcs.com> Hope this helps , functions from scripter component, exported if anyone thinks they are useful. ----- On Aug 4, 2021, at 10:48 AM, Bruce adamnt42 at gmail.com wrote: > On Wed, 2021-08-04 at 20:08 +0930, bb wrote: >> >> file (which there can't be, anyway). Just is there a file named, for >> instance, "xyzzy:*.gambas" where * will be the gambas in >> the >> directory I am looking at. '' recursive search for libraries Public Sub ListLibrariesIn(sPath As String, Optional Level As Integer = 0) As String[] Dim fileList As String[] Dim LibList As New String[] If Not Exist(sPath) Or If level > 4 Then Return LibList FileList = Dir(sPath, "*:*.gambas", gb.file) For Each sFile As String In FileList LibList.Add(sPath &/ sFile) Next FileList = Dir(sPath, "", gb.Directory) For Each sFile As String In FileList LibList.Insert(ListLibrariesIn(sPath &/ sFile, Level + 1)) Next Return LibList End '' Version can be blank, "1" or "1.0" etc Public Sub CheckLibVersions(sPath As String, Version As String) As String Dim sDir As String = File.Dir(sPath) If Not Exist(sDir) Then Return "" Dim sName As String = File.Name(sPath) & ":" & version & "*" & ".gambas" Dim sEntries As String[] = Dir(sDir, sName, gb.file).Sort() If sEntries.count > 0 Then Return sDir &/ sEntries[sEntries.max] ' return the highest level library Else Return "" Endif End >> >> tia >> bruce >> >> > No, I am still not being clear enough. > > Is there a file named, for instance "xyzzy:[anyversion].gambas" in the > directory I am looking at. I want to use "*" as a wildcard for the > [anyversion] part of the filename as I have no idea what the actual > version in that directory is. > > tia > bruce > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- From roberto.premoli at tiscali.it Wed Aug 4 19:35:01 2021 From: roberto.premoli at tiscali.it (roberto.premoli at tiscali.it) Date: Wed, 04 Aug 2021 19:35:01 +0200 Subject: [Gambas-user] latitude and longitude on a map Message-ID: <06c43fb2e6572eec3b230007cf8e99d2@tiscali.it> Hello, I have a list of towns with their own coordinates (latitude and longitude). I would like to place in a combo box: as i select one, a marker must appear on a map (and disappear when i select another). I write here to ask if a similar program already axist at source to study, or at least where I can find a demo to start with, because i am newbie about this topic. I run Gambas 3.12.2 on Debian 10 amd64. Thanks Con Tiscali Mobile Smart 70 hai 70 GB in 4G, minuti illimitati e 100 SMS a soli 7,99? al mese http://tisca.li/Smart70 -------------- next part -------------- An HTML attachment was scrubbed... URL: From genbraga1 at gmail.com Wed Aug 4 19:56:52 2021 From: genbraga1 at gmail.com (gen braga) Date: Wed, 4 Aug 2021 14:56:52 -0300 Subject: [Gambas-user] latitude and longitude on a map In-Reply-To: <06c43fb2e6572eec3b230007cf8e99d2@tiscali.it> References: <06c43fb2e6572eec3b230007cf8e99d2@tiscali.it> Message-ID: Maybe this could help: https://gitlab.com/gambas/gambas/-/blob/master/comp/src/gb.map/.src/Tests/Form4.class Also: https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#Map_-_MapView_-_Coordinate_geografiche_-_Georeferenziazione Greetings Gen. Em qua, 4 de ago de 2021 14:49, escreveu: > I write here to ask if a similar program already axist at source to study, > or at least where I can find a demo to start with, because i am newbie > about this topic. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Thu Aug 5 21:24:06 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Thu, 5 Aug 2021 20:24:06 +0100 Subject: [Gambas-user] tracking down toolkit erors In-Reply-To: References: Message-ID: Cheers folks. There's got to be a way to suppress the warnings? I've tried env GTK_DEBUG and GTK_NO_DEBUG options but no change. I've even tried catching the application std / error output and filter out gtk messages but cannot even figure out how to do that as does not seem to work. (I'm likely doing it wrong) Benoit... Could you suggest a way to track down if possible exactly what object produces the warning so i can iron it out? Or. Offer/Suggest a way to suppress the gtk warnings. To the lesser knowledgable user (and i've had it said about my own software) these warnings produce a thought of "buggy software" and puts people off using it. A solution to this age old issue would be awesome if there is one. Thanks all BruceS On Wed, 4 Aug 2021 at 00:33, bb wrote: > On Tue, 2021-08-03 at 19:28 +0100, Bruce Steers wrote: > > I have this program i'm developing that was starting and stopping > > cleanly > > then i recently added some controls and did various other things and > > now it > > says this when it starts... > > > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing > > error: > > :1:15: Expected a valid selector > > > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.343: Theme parsing > > error: > > :1:19: Expected a valid selector > > > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.346: Theme parsing > > error: > > :1:17: Expected a valid selector > > > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.354: Theme parsing > > error: > > :1:12: Expected a valid selector > > > > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.365: Theme parsing > > error: > > :1:13: Expected a valid selector > > > > > > Is there a way to track down what's causing it? > > > > thanks > > BruceS > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > Given that goggling that warning text yields about 18.6 gazillion > results I'd say it is a gtk catch-all warning for any failure to parse > your desktop theme,so > 1) try changing desktop theme, if it goes away then I think you have no > option bar learning gnome theming and try and find the issue in your > current theme (YUK!) > > good luck > bruce > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Thu Aug 5 21:34:24 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Thu, 5 Aug 2021 20:34:24 +0100 Subject: [Gambas-user] tracking down toolkit erors In-Reply-To: <5ba27d1984073bc189f69d4a8dea6ae1@cenpalab.cu> References: <5ba27d1984073bc189f69d4a8dea6ae1@cenpalab.cu> Message-ID: On Wed, 4 Aug 2021 at 00:53, wrote: > August 3, 2021 2:29 PM, "Bruce Steers" > > wrote: > > I have this program i'm developing that was starting and stopping cleanly > then i recently added some controls and did various other things and now it > says this when it starts... > (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing error: > :1:15: Expected a valid selectorIs there a way to track down what's > causing it? > thanks > BruceS > > > > GTK has always output loads of different errors with many programs (not > gambas ones, I mean), when run in a terminal. People say it depends on the > current theme and whatnot... > > Indeed, Pluma was always my texteditor of choice and that used to pump out loads of warnings. (but now of course i use my own editor i wrote with gambas that has all those cool Texteditor features ;) ) Would be great to be able to catch the warnings though. Either a way to track what exactly is causing them or just suppress the messages. BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: From adamnt42 at gmail.com Fri Aug 6 09:45:02 2021 From: adamnt42 at gmail.com (bb) Date: Fri, 06 Aug 2021 17:15:02 +0930 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit Message-ID: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> Gambas 16.2 Stable on MX Linux As well as intepreter crashes mentioned in the other thread, I am now getting IDE crashes with some projects within the IDE. They all seem to do with code completion. I have disabled near every code completion feature ( help popups, offline help, etc etc ) but they are still occurring. The crash is with a similar dump as before, i.e. no stack trace. But here is what happens. 1) On starting the IDE (in a terminal) the IDE starts and displays the project selector screen OK but this warning appears in the terminal: "[26563:26598:0806/165458.706936:ERROR:nss_util.cc(727)] After loading Root Certs, loaded==false: NSS error code: -8018" 2) I select a project and it loads without any problem. 3) As a check I do a "Compile All" which succeeds without any boogeymen. 4) I then close the IDE down and the following is output in the terminal (slightly editted for readability, the original is attached.) "Received signal 11 SEGV_MAPERR 000000000008" then 61 lines of object references, then the register dump, then "[end of stack trace] Calling _exit(1). Core file will not be generated." Information gleaned from elsewhere is that the message is that some nss (GNU Name Service Switch) library installed in MX Linux is causing the output. I have three such libraries installed (libxmlsec1-nss, libnss- mdns, libnss-myhostname) and have no others that I can find installed. Now to the question. Does anyone know WHY and/or WHERE the gambas3 IDE would call any nss library on exit? This is driving me crazy! tia bruce -------------- next part -------------- Received signal 11 SEGV_MAPERR 000000000008 #0 0x7f50ed53d93e #1 0x7f50ed53da50 #2 0x7f50ed53e087 #3 0x7f50fb6d9840 #4 0x7f50f59eac09 QWidget::~QWidget() #5 0x7f50f59eb009 QWidget::~QWidget() #6 0x7f50f5056090 QObject::event() #7 0x7f50f59ef96b QWidget::event() #8 0x7f50f59b14c1 QApplicationPrivate::notify_helper() #9 0x7f50f59b8970 QApplication::notify() #10 0x7f50f502c489 QCoreApplication::notifyInternal2() #11 0x7f50f502f46b QCoreApplicationPrivate::sendPostedEvents() #12 0x7f50eb5b8344 #13 0x7f50eb5b8540 QQuickRenderControl::~QQuickRenderControl() #14 0x7f50ead40513 #15 0x7f50ead3e8cb #16 0x7f50ead3e959 #17 0x7f50f505c2dc QObject::~QObject() #18 0x7f50f59eae90 QWidget::~QWidget() #19 0x7f50f1c0393a #20 0x7f50ebfabe7f #21 0x7f50ebfac011 #22 0x7f50ec99dbd3 #23 0x7f50ec98e317 #24 0x7f50ec79c795 #25 0x7f50ec7d5d91 #26 0x7f50ec7d6571 #27 0x7f50ec7e4770 #28 0x7f50ec7a0b5b #29 0x7f50ec79ae1b #30 0x7f50eca9f331 #31 0x7f50eca9f5b1 #32 0x7f50ebfc4398 #33 0x7f50ebfc60bf QtWebEngineCore::WebContentsAdapter::~WebContentsAdapter() #34 0x7f50f1bf7a9a #35 0x7f50f1bf7b29 #36 0x7f50f1bf37e5 QWebEnginePage::~QWebEnginePage() #37 0x7f50f1c5a4cb MyWebPage::~MyWebPage() #38 0x7f50f505375b QObjectPrivate::deleteChildren() #39 0x7f50f59eae06 QWidget::~QWidget() #40 0x7f50f1c5a445 MyWebEngineView::~MyWebEngineView() #41 0x7f50f505375b QObjectPrivate::deleteChildren() #42 0x7f50f59eae06 QWidget::~QWidget() #43 0x7f50f6001ba1 MyContainer::~MyContainer() #44 0x7f50f505375b QObjectPrivate::deleteChildren() #45 0x7f50f59eae06 QWidget::~QWidget() #46 0x7f50f601ab61 MyDrawingArea::~MyDrawingArea() #47 0x7f50f505375b QObjectPrivate::deleteChildren() #48 0x7f50f59eae06 QWidget::~QWidget() #49 0x7f50f6001ba1 MyContainer::~MyContainer() #50 0x7f50f505375b QObjectPrivate::deleteChildren() #51 0x7f50f59eae06 QWidget::~QWidget() #52 0x7f50f6001ba1 MyContainer::~MyContainer() #53 0x7f50f505375b QObjectPrivate::deleteChildren() #54 0x7f50f59eae06 QWidget::~QWidget() #55 0x7f50f6001ba1 MyContainer::~MyContainer() #56 0x7f50f505375b QObjectPrivate::deleteChildren() #57 0x7f50f59eae06 QWidget::~QWidget() #58 0x7f50f6001ba1 MyContainer::~MyContainer() #59 0x7f50f505375b QObjectPrivate::deleteChildren() #60 0x7f50f59eae06 QWidget::~QWidget() #61 0x7f50f5ffa831 MyMainWindow::~MyMainWindow() r8: 000055e923337fa0 r9: 0000000000001003 r10: 000055e921feb860 r11: 00007f50fb82ca60 r12: 00007ffdf4f81fc0 r13: 000055e921feb540 r14: 000055e923337f30 r15: 00007f50f5138820 di: 0000000000000000 si: 0000000000000032 bp: 000055e923337f30 bx: 000055e923337fa0 dx: 0000000000000000 ax: 0000000000000000 cx: 000055e923337fa0 sp: 00007ffdf4f81fb0 ip: 00007f50f59eac09 efl: 0000000000010283 cgf: 002b000000000033 erf: 0000000000000004 trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000008 [end of stack trace] Calling _exit(1). Core file will not be generated. From vonzorch at gmail.com Fri Aug 6 10:34:48 2021 From: vonzorch at gmail.com (Nuna Yabiznez) Date: Fri, 6 Aug 2021 03:34:48 -0500 Subject: [Gambas-user] gb.compress.zlib Message-ID: There seems to be absolutely no documentation for gb.compress.zlib. Can someone give me some guidance on where to find such things as methods and properties, and how to invoke them? -------------- next part -------------- An HTML attachment was scrubbed... URL: From tobs at taboege.de Fri Aug 6 10:56:11 2021 From: tobs at taboege.de (Tobias Boege) Date: Fri, 6 Aug 2021 10:56:11 +0200 Subject: [Gambas-user] gb.compress.zlib In-Reply-To: References: Message-ID: <20210806085611.GA847967@highrise.localdomain> On Fri, 06 Aug 2021, Nuna Yabiznez wrote: > There seems to be absolutely no documentation for gb.compress.zlib. > Can someone give me some guidance on where to find such things as methods > and properties, and how to invoke them? gb.compress.zlib and gb.compress.bzlib2 are both "drivers" that the interface component gb.compress can use. So look at the gb.compress documentation (in particular Compress.Type and Compress.Open). This is the same as with the database interface component gb.db and its drivers gb.db.sqlite3, gb.db.mysql, gb.db.postgresql, etc. gb.db provides a uniform interface and the drivers implement it for specific databases. You have no documentation for gb.db.sqlite3 because it is the sqlite3-specific version of gb.db. Best, Tobias -- "There's an old saying: Don't change anything... ever!" -- Mr. Monk From jussi.lahtinen at gmail.com Fri Aug 6 15:35:55 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Fri, 6 Aug 2021 16:35:55 +0300 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit In-Reply-To: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> References: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> Message-ID: >From what you give us to see, it seems to be Qt related. Can you isolate the problem to some small runnable (crashable) project? Jussi On Fri, Aug 6, 2021 at 10:46 AM bb wrote: > Gambas 16.2 Stable on MX Linux > > As well as intepreter crashes mentioned in the other thread, I am now > getting IDE crashes with some projects within the IDE. They all seem to > do with code completion. I have disabled near every code completion > feature ( help popups, offline help, etc etc ) but they are still > occurring. > > The crash is with a similar dump as before, i.e. no stack trace. But > here is what happens. > > 1) On starting the IDE (in a terminal) the IDE starts and displays the > project selector screen OK but this warning appears in the terminal: > "[26563:26598:0806/165458.706936:ERROR:nss_util.cc(727)] After loading > Root Certs, loaded==false: NSS error code: -8018" > > 2) I select a project and it loads without any problem. > 3) As a check I do a "Compile All" which succeeds without any > boogeymen. > 4) I then close the IDE down and the following is output in the > terminal (slightly editted for readability, the original is attached.) > > "Received signal 11 SEGV_MAPERR 000000000008" > then 61 lines of object references, then the register dump, then > "[end of stack trace] > Calling _exit(1). Core file will not be generated." > > Information gleaned from elsewhere is that the message is that some nss > (GNU Name Service Switch) library installed in MX Linux is causing the > output. I have three such libraries installed (libxmlsec1-nss, libnss- > mdns, libnss-myhostname) and have no others that I can find installed. > > Now to the question. > > > Does anyone know WHY and/or WHERE the gambas3 IDE would call any nss > library on exit? > > > This is driving me crazy! > > tia > bruce > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jussi.lahtinen at gmail.com Fri Aug 6 15:37:12 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Fri, 6 Aug 2021 16:37:12 +0300 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit In-Reply-To: References: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> Message-ID: Also, again, I don't see anything suggesting the IDE crashes. Only the interpreter. Jussi On Fri, Aug 6, 2021 at 4:35 PM Jussi Lahtinen wrote: > From what you give us to see, it seems to be Qt related. Can you isolate > the problem to some small runnable (crashable) project? > > Jussi > > On Fri, Aug 6, 2021 at 10:46 AM bb wrote: > >> Gambas 16.2 Stable on MX Linux >> >> As well as intepreter crashes mentioned in the other thread, I am now >> getting IDE crashes with some projects within the IDE. They all seem to >> do with code completion. I have disabled near every code completion >> feature ( help popups, offline help, etc etc ) but they are still >> occurring. >> >> The crash is with a similar dump as before, i.e. no stack trace. But >> here is what happens. >> >> 1) On starting the IDE (in a terminal) the IDE starts and displays the >> project selector screen OK but this warning appears in the terminal: >> "[26563:26598:0806/165458.706936:ERROR:nss_util.cc(727)] After loading >> Root Certs, loaded==false: NSS error code: -8018" >> >> 2) I select a project and it loads without any problem. >> 3) As a check I do a "Compile All" which succeeds without any >> boogeymen. >> 4) I then close the IDE down and the following is output in the >> terminal (slightly editted for readability, the original is attached.) >> >> "Received signal 11 SEGV_MAPERR 000000000008" >> then 61 lines of object references, then the register dump, then >> "[end of stack trace] >> Calling _exit(1). Core file will not be generated." >> >> Information gleaned from elsewhere is that the message is that some nss >> (GNU Name Service Switch) library installed in MX Linux is causing the >> output. I have three such libraries installed (libxmlsec1-nss, libnss- >> mdns, libnss-myhostname) and have no others that I can find installed. >> >> Now to the question. >> >> >> Does anyone know WHY and/or WHERE the gambas3 IDE would call any nss >> library on exit? >> >> >> This is driving me crazy! >> >> tia >> bruce >> >> >> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jussi.lahtinen at gmail.com Fri Aug 6 21:32:34 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Fri, 6 Aug 2021 22:32:34 +0300 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit In-Reply-To: References: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> Message-ID: For clarification, when the IDE crashes you will get an error message and backtrace from the interpreter. IE the place in the code written in Gambas, where the error occurs. When the interpreter crashes you will get backtrace pointing to its sources or the components it is using. Not sure NSS has anything to do with this. It only gives an error message related to PKCS #11. Can you try this with the latest Gambas? Maybe it is fixed already. Jussi On Fri, Aug 6, 2021 at 4:37 PM Jussi Lahtinen wrote: > Also, again, I don't see anything suggesting the IDE crashes. Only the > interpreter. > > > Jussi > > On Fri, Aug 6, 2021 at 4:35 PM Jussi Lahtinen > wrote: > >> From what you give us to see, it seems to be Qt related. Can you isolate >> the problem to some small runnable (crashable) project? >> >> Jussi >> >> On Fri, Aug 6, 2021 at 10:46 AM bb wrote: >> >>> Gambas 16.2 Stable on MX Linux >>> >>> As well as intepreter crashes mentioned in the other thread, I am now >>> getting IDE crashes with some projects within the IDE. They all seem to >>> do with code completion. I have disabled near every code completion >>> feature ( help popups, offline help, etc etc ) but they are still >>> occurring. >>> >>> The crash is with a similar dump as before, i.e. no stack trace. But >>> here is what happens. >>> >>> 1) On starting the IDE (in a terminal) the IDE starts and displays the >>> project selector screen OK but this warning appears in the terminal: >>> "[26563:26598:0806/165458.706936:ERROR:nss_util.cc(727)] After loading >>> Root Certs, loaded==false: NSS error code: -8018" >>> >>> 2) I select a project and it loads without any problem. >>> 3) As a check I do a "Compile All" which succeeds without any >>> boogeymen. >>> 4) I then close the IDE down and the following is output in the >>> terminal (slightly editted for readability, the original is attached.) >>> >>> "Received signal 11 SEGV_MAPERR 000000000008" >>> then 61 lines of object references, then the register dump, then >>> "[end of stack trace] >>> Calling _exit(1). Core file will not be generated." >>> >>> Information gleaned from elsewhere is that the message is that some nss >>> (GNU Name Service Switch) library installed in MX Linux is causing the >>> output. I have three such libraries installed (libxmlsec1-nss, libnss- >>> mdns, libnss-myhostname) and have no others that I can find installed. >>> >>> Now to the question. >>> >>> >>> Does anyone know WHY and/or WHERE the gambas3 IDE would call any nss >>> library on exit? >>> >>> >>> This is driving me crazy! >>> >>> tia >>> bruce >>> >>> >>> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >>> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From vonzorch at gmail.com Fri Aug 6 22:42:28 2021 From: vonzorch at gmail.com (Nuna Yabiznez) Date: Fri, 6 Aug 2021 15:42:28 -0500 Subject: [Gambas-user] gb.compress.zlib In-Reply-To: <20210806085611.GA847967@highrise.localdomain> References: <20210806085611.GA847967@highrise.localdomain> Message-ID: I already looked in there, all it did was send me to zlib.org. All the documentation is for versions of c. I am NOT a c programmer so it's all gibberish to me. On Fri, Aug 6, 2021 at 3:57 AM Tobias Boege via User < user at lists.gambas-basic.org> wrote: > On Fri, 06 Aug 2021, Nuna Yabiznez wrote: > > There seems to be absolutely no documentation for gb.compress.zlib. > > Can someone give me some guidance on where to find such things as methods > > and properties, and how to invoke them? > > gb.compress.zlib and gb.compress.bzlib2 are both "drivers" that the > interface component gb.compress can use. So look at the gb.compress > documentation (in particular Compress.Type and Compress.Open). > > This is the same as with the database interface component gb.db and > its drivers gb.db.sqlite3, gb.db.mysql, gb.db.postgresql, etc. > gb.db provides a uniform interface and the drivers implement it for > specific databases. You have no documentation for gb.db.sqlite3 > because it is the sqlite3-specific version of gb.db. > > Best, > Tobias > > -- > "There's an old saying: Don't change anything... ever!" -- Mr. Monk > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From tobs at taboege.de Fri Aug 6 23:00:11 2021 From: tobs at taboege.de (Tobias Boege) Date: Fri, 6 Aug 2021 23:00:11 +0200 Subject: [Gambas-user] gb.compress.zlib In-Reply-To: References: <20210806085611.GA847967@highrise.localdomain> Message-ID: <20210806210011.GC1269839@highrise.localdomain> On Fri, 06 Aug 2021, Nuna Yabiznez wrote: > On Fri, Aug 6, 2021 at 3:57 AM Tobias Boege via User < > user at lists.gambas-basic.org> wrote: > > > On Fri, 06 Aug 2021, Nuna Yabiznez wrote: > > > There seems to be absolutely no documentation for gb.compress.zlib. > > > Can someone give me some guidance on where to find such things as methods > > > and properties, and how to invoke them? > > > > gb.compress.zlib and gb.compress.bzlib2 are both "drivers" that the > > interface component gb.compress can use. So look at the gb.compress > > documentation (in particular Compress.Type and Compress.Open). > > > > This is the same as with the database interface component gb.db and > > its drivers gb.db.sqlite3, gb.db.mysql, gb.db.postgresql, etc. > > gb.db provides a uniform interface and the drivers implement it for > > specific databases. You have no documentation for gb.db.sqlite3 > > because it is the sqlite3-specific version of gb.db. > > > I already looked in there, all it did was send me to zlib.org. > All the documentation is for versions of c. I am NOT a c programmer so > it's all gibberish to me. > If by "in there" you mean the souce code, then yes, there is no Gambas documentation there. You have to go here: gb.compress overview: http://gambaswiki.org/wiki/comp/gb.compress Compress class overview: http://gambaswiki.org/wiki/comp/gb.compress/compress Compress.Open documentation: http://gambaswiki.org/wiki/comp/gb.compress/compress/open The last page has an example usage of Compress in Gambas. If you want to use zlib, then change the ?.Type = "bzlib2"` line to `.Type = "zlib"`. Best, Tobias -- "There's an old saying: Don't change anything... ever!" -- Mr. Monk From adamnt42 at gmail.com Sat Aug 7 06:04:04 2021 From: adamnt42 at gmail.com (bb) Date: Sat, 07 Aug 2021 13:34:04 +0930 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit In-Reply-To: References: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> Message-ID: <703f57f9387bfc058325e7b395430896cf471f68.camel@gmail.com> On Fri, 2021-08-06 at 16:35 +0300, Jussi Lahtinen wrote: > From what you give us to see, it seems to be Qt related. Can you > isolate > the problem to some small runnable (crashable) project? > > Jussi > OK Jussi, First, I have to say that this is probably something to do with MX Linux specifically. I have been talking on their forum about it and they have few ideas due to a sparcity of gambas users there. For what it's worth here is a project that reproducably causes the interpeter crash as a result of an action in the IDE (is that a better description?) The attached project does load into the IDE. Then if I try to load one of the forms into the form editor - "bang" : Received signal 11 SEGV_ACCERR 564f8a0ebef0 #0 0x7f848fed693e #1 0x7f848fed6a50 #2 0x7f848fed7087 #3 0x7f849e072840 #4 0x564f8a0ebef0 r8: 000000000000002f r9: 0000564f8a532a80 r10: 0000000000000001 r11: 00007f849e1c5220 r12: 00007f84945f4088 r13: 0000564f8a0eb690 r14: 00007f84945f4058 r15: 0000000000000000 di: 0000564f8a0eb690 si: 0000000000000002 bp: 00007ffe8cb36420 bx: 00007ffe8cb363f8 dx: 0000564f8a0ec110 ax: 0000564f8a0ebff0 cx: 0000000000000000 sp: 00007ffe8cb363e8 ip: 0000564f8a0ebef0 efl: 0000000000010206 cgf: 002b000000000033 erf: 0000000000000015 trp: 000000000000000e msk: 0000000000000000 cr2: 0000564f8a0ebef0 [end of stack trace] Calling _exit(1). Core file will not be generated. I think we can ignore nss at the moment this is coming from the kernel with no reference to nss. All I have determined so far is that it IS a segfault somewhere, detected and rejected by the kernel by raising this signal 11 (SIGSEGV). At least I am only getting either of the 2 "simple" (hah!) types: #define SEGV_MAPERR 1 /* address not mapped to object */ #define SEGV_ACCERR 2 /* invalid permissions for mapped object */ The attached project only seems to cause a SEGV_ACCERR. i.e. something somewhere is trying to access a mapped memory object that it has no right to do. Hang on! I just found something in man core regarding why there is no core dump: "The process is executing a set-user-ID (set-group-ID) program that is owned by a user (group) other than the real user (group) ID of the process, or the process is executing a program that has file capabilities (see capabilities(7)). (However, see the description of the prctl(2) PR_SET_DUMPABLE operation, and the description of the /proc/sys/fs/suid_dumpable file in proc(5).)" This is true concerning the said project. Given that the IDE sort of "runs" the form when opened in the form designer this may have something to do with it. I will remove the special flags on the project and see what happens. Back later. bruce -------------- next part -------------- H4sIACoADmEAA+xYd1xT5/oHFcVRi0LVaosx4kCTk7NHZGjBWRQHuIrWkBxCSpITkwABF64KintW RNG2iNR53cVJFa2zFReiaN1yq9Ci4Pa+JzuAXv38Wu8fv5584OR83+d9nud99km0TKGSc1qDxO3v u2AYRimK4O8IRcDWO8LfbZcbgiMwhoNvBOoGIyiKIG4C4m/UyX7FG4wyvUDgFh39ZjqdTKFIMohj VWr1+1DrfV3RNv+rNMq/Kwbezv8wSQKUQnn/YyAE/vH/+7hc/K9gE1g1p9OwWiOk0yr/Khm8/0kS f53/cYQi3RCMAiCF4SRYR0gYkAngv0qBN13/z/2fNnBA7w8atW4Evn7Qt0/oYHAX8H+e9cF/Q3Ly Q3CrZ/isb4QnuMZ7KlLd3DyJvqE9IoZP37BUlT468uMjk07vrtpXfMK4Ayr06NdyZONmLHbp/Lzc +cODfNLH3Jw68NCY7kjnjqnuyG9T07z6p7adF9rZT9C/e0j0lNARP65ev3ikSrUubHVIsUqZXZa8 1HDqxoxxSmndwz6P/O5MOD2uZNyDim6n/wyuatT22/umabdmFrVaFru3KmFd1b7P/WJnIXLhn0v6 L7xahIZvyFsuXzsunMmctXLcvH16r72thtZvIRkZH38R4/pH5EKHQl/khI8tovsalqWFnI4vufpK ce77TuT6vUvWvpS4bbocvujsmmBod3llvGHpKO+vElqV9epRnMOl1On42XeNG9Yf9M1PG4NHlQxo 3WDjcIP49PNwt+K2MRvn30073PL5tetJXTlx8XlD1sdTfLoG5oQQx/PC+1xvPuh+VMmlBPlaYktV y8Vz9j5b0+ZoUIsDc05GpJ2c69f5he7n6Tsv3BbthRZlNS5Odi9P7bNloHs39nLeshvt8+4+CJ7R 71XrXpUB8z4p2qo6ofxjwqq8gldR9V5kbbgW4XaBS/VtNfzh4bKVWx/8OnLYq343tibOz2o5vs3B ds1T6qUiTN1GpWNHhMU9D8wN/Kh8xt02P+Ir9pc+C8w8X95h3E7fazv3V0nG/7LkybxiasvqiIxJ 586cvuy9Lvjrz0sKnrXY1fBQxMA6ER6Rh8fNyO0dOWg6rlrjKYvopam79HcP6sSCWQ+axAUqr+y4 3yPoVVv3BC7br+OuV78TVWf3dPt655FBdQQHdqdFi0wej3zLPh39aWkF7HffO+LH5ApGkHr72+YL yJ1bxj8KjPTu9aGmJKDw35hbx+iKzMkYdM8/cdOBgrKsu2cfnO2Q9XFuneQzmxP9S5Qmrq80vsuo CTk7Uxd1P0YX+2nK/Do3NCwdjUySfRKV2M8tMjRU+8Xm0uzls6tapkX6Lcs2XS0oTkZOlQdlnvde oZGnCyZfGzUzunzjHE1ZwbP0yseFTTZcHv7R/FW5K8Ne+qfcn7s5+4whJnx3XMMRz5uWdDK1vTGh Qdkl04X8ImnpSNOFn+9MSE9sWNLh4rae60ZmPN2wXFYY4vfHxD3hjefuWEZsy+aehazP3NZmQNPQ k9RtUd76rp83vT6qzaBhxll9Ur18emYo9+R6bB/SekxhCxkjOtA8vfHRM2Ojznchf1095Gr+iq3n Lwz4pGRHs8vnv3H7+vO8p5J5oqDUCk26NBQ7tDbp574rU5iUunrPc03OXp+Qbhq4KiVb0VpeKC3Z PnbHnETxgtttHoofz2z1q+Sk58E5/Ve0XTzjVG7lxOXbtrblMugLB4pi9l0kZ5ZJT50fuzFt65NX JTt0O9wP0cX5uzuScQs6HtlSNPZfDzuTbY7sbqoa79ks5+GKvPLpDZhxx+p20d/JryCXVx6qUNzr XLDIy79dx2NXJPXhnARdERIqhL8PEMVu9AjqAUw10nQ1VOO9yT93of7+oPgV9FM6pOumNS/OPOh2 YBL24eQ/pz8oimOvl9e9NvhsaKr/rYL+KccLttzzLBmQ4rl2qM4jsvsfuX3cl8w4Fj55W8cd8Lbn /aaWsoX67l2/P6O+XhDsmT8xbKC7z53Sx0afw1tib20S3O09ofHSPTOON5Vtbb/L6JMx+1a7sWJ1 a8PdFy0a3xk2KOCu0asB1D41eeC5ESnTPJ4tq8pcrdcws29Mqo8M0bZsduCXFRfzLx6V9yy47Ttv 4bhVlau3Ffufmj/seMQ5k0/49zvqLO2f9Uu9frJ2n+WdOf9yddEsbRbyUlRSkOLjVUd40VjnzqXp I75pVi+zMq1LwfAVhukyj/EHPx14n5kr8j3IfD15gftdv+fbJz7soJzSpaLF1ZljZt7UJ6170oQ7 0nh+2h8bp2ac3/tvnwqkpNMT6apb0CpUm1O5/ruIUWHnfVdnbm4D178WOjWzU68v52qGro36WDHm ILtMsHx+9CliwHzT2guHpp2NmbAgB+8zfHT3tWPhH6jHnXykm9kGknNz97SQ/ZiWwQ2cmXzvfvAq uPSbH9N2nnx1zNTqA/iHSeJBSb7CZoPYho9+pe6XN0twP+V2ucrPe8SSvVd8J3nELRYxTXIX/dA4 J0HczlP5W3B2g/zYlAcvz51YvneOoDTET+j5rGG+u/RG3tQZrw4MEGQsiu5GnsreUrXyVdGerfuH rmz1pEPBIrcQr5NrhrY+6p3zxeYRgcOCr0KlQXM31YvM16XkBCz9aILhXunKYZ7zPD4RLMqTZBEv u8yOqTh8pUFs3Xt+3SvPDvVdhT1e2u32pOtP9cNHhi1p0nLGPEFzweA1UYFT9RumHf1uYM+sKfUi D007cDPJfeGH62NTnjZp3+xcyfbfi1/urSz33O8+MmVAUObdU4HfDZv4TdDvkyvuiPcz6W02pTxd qFfn5+vwD7KmIeeio1ZOOXaw/+j+wu7dL1xLbv1t8cNfVnaqnPSoxcSwjXUx37m/H2w2etTe0hc/ HL+yveRgz6vNM2ZfG/Vp+2Zewo75yzwVrQ/d3N3uVp2c8vSbRxK9HhYG7lq53jBtQvGkM6ZKdv9v T5Z+nO01R9c6RTsh80a3Kv30o9nK6wV9rj5fTE0vmPZd5t5dah/uSEVI71G+47yF01LXjZmiPXQW zgYnS78nTI3xDp2avq9i3qSqR8+WP2v6eNPVR3EJqH/TFU8j5udpFUXLw8cmfn/i1pW6d3a9nP7D 8XP7PuqxO6GjTOXmXenTremYweJZhQP+MBV3VL2Y5d37VczcB+NEceeO7HhQclxMXT2eEdb3du+6 YTvOJB2/+6wycnyCNrjlha9WfCHeKvJKDovYuKTf9tz5OSJhgdxrysWn+JYRl7eMkAfMeXR/aMaF pr63731RdqssJXDx/MIkRuwemdXk5s/zEn86UXF04YUMD/RPUZmPoW3RgH/fN13afhBPyUopL0we 6vZ47q4jMy7td/+ow7969mZbFfJTR9+eA0I3fjZmyv9u7vnnslwu87+SE2tZkxEyJPxlsz9/vXn+ R1HUOv+jOElhGAnmfwJByX/m//dxBQSbNGpBAqs3qDhtoBCBYKGA1co5hUqrDBRGRvQS00IBMJFW IVNzWjZQqOWEwUGNAtqJxYIQPSszsgpBosoYK+irjTPIZTpW0DnWaNRJJZLExERIZQUhTq+U+AvE YrATBFcjgUAAxGoNUoU8UGil18Xr1WY6hVzCqln+JdQgQSBEInSQyx3kcl64KoGVcxoNiF/zTq2h vROxXhFjp+aVScTMRAjDMBIYlaCoGFCIDUlao8wkdt0KdKxtKwrCVQLWHJRvRyU1qYElXquMedVZ OrC+DvzZN9gAyMDF6+VsDNjJQlrWKAmNCLUvimFIYVQ4sbEZ30Wui0e0Mg1r0MnkLEh/K27e7xIO ZoaBQhiy/VZjRpJqIIkqhTEWbEFpC64zmuFYVqWMNdbEVYpAITASguOY+dl2DKldOAxhqIXUqpvz Ek667lJwcv40gKeRk8d9CSoZsFKiTK+AbJ5wJo2WGQBpT2lUaFiUkdXIDFGDOQUIuCggRy2LVrNR Zjau0lmTjtMbxTEqNWsRFQL2c/J4c6QKQIYIhrBGI8gbQ1QPhUalVRmMepmR00eFsoY4I6eL+mk2 qLSsQZwg06s4A/8LS60CTAodcD2IIshh3Oo0SW+i4eKNunjjl6CSs1qLvYCznTxvXubtYseEQYBB gN1C/PEUCSo2kWfrxDhRpVVwiWKbS2kYEdZOYY8FmK5OoZMpWUOsDFAB/Wtb5EBAqoyW+LKuR3N6 Bau3LyDVFuScmtMHCtuT5su6xLOyLcSYL5swEHi8/6vLTuY4jSWyYIyAmerLcpADBAVRJInRZI1F oBWFQjQMFmuc2GoTUy3ntS6B3Sheg2e8Xg8iS6yWJbF611wBwRzLJSrjVQoWVCCjPr7GYcxr4uho zuSybt6m5y0QI1MbLG53drx5m4XUYigzgGCYzdHArpxBZTQHlRihIZIgUZgUISgF0RRK4XYyTq8C yssslLHgKZkDj2qhQPLWMrHaZGIQAjMYSVEiDIFwGsVw6q+USdQiE4UhgmEIEhEhJMOHB/GaY4Ly ZFTJ300gWotABMQZAWMo8X8T47IJEcG1ScJoCCNJmvcgCsE4StLCGlqiGMNYZQVIatYIM65hjTKF zChzpJgNoXFblIFuKx0c2ivIKiBALpcO4/RxNnkCAU8giwblKVAoDLLDAQq5FNRyjcwYpNKApOZb a1fQ4QIkjgUXYmOSjnUwtbDVs5bWWeu0oZBrVPwmyRAjmO768kLstrUzVRnVbJACDB0a0K3jTQJj LBhRzDpYllyozcMJpw9yUoM/bg8lcIgz6Mw7OonvIXo2hlWrdLVy5u1fk4uZsppAMx1vXKvpJU62 D5DYXGN+UrAxBofX+CdQZkibz8BZWZm+tx68JQChzqHhuoKhDGr3WQBonjqH1uZODxBA40gcEJ4x MQYWuBp2wgzGJLWlh+vE5uItbS9j+E83M2TtAFKkm5N/Xi+NrEUa8mZpMSz/ea20AInrsd9sJXsl 59RqVg6Ey9SJsiSDXQPz3CeNBS4HPaoWe77e3CgOOw6itIKRWpURtIN4A6sfwg914dpIe5cDwhDQ sAmIpGnayTBJAEVwBAJ1FHWkvgmtlRagfNEFr2tOtdkmPUIv0xr4dASpLzPqVabOMMRQMOBBiWD+ Y39CIYzgvcN/wWEKIf0d9n3beCMQiv5v8UYgNPzu8WaZaN893oA09N3jDSf4z/8+3sz2fL25aYQg 3zHeXh8XYsQcEHw7BT2HoklKBCY6nIZRxt8lXHEGQigUJlyilYb5to86TSR8tBIEhMMkQ2Iu0Yog MITiKOjqtvbF1zfzN6Wj5ilBgyNsBU8nM8baWBhrqI4BdhRNEZj5BI4nBGJohOHbKETBBIySmOMk QEJ/AQVhFCHCQcCDuyBEgIFZEYNpArdjMETzdxEFgfmGwSjMjoBDEBiCEoIwO4SBAYGxcLJBIIlh DAEsrbwZlBLhGETRYCdqk299Bpxw+z4bFiLAcQgHjsZpB4ibN8IwYufPWDGHDmE2xK5oiA2xHgZj bLwJ0nZgGHHSwWqDsGp2SnYJSd41LoXPmk+2vIEhEjZ/kG7gHU1tT2X+wSm5zI/6eDV4l0pgtZxC AbJPz8WxTqnPP1reYaSgRgFNaEuSmnE+M0CaSfVcvFbhDH7FqbSuKBgrWL1aBW5S3IYpZGAINxcH qV2UXTlhjVwGQ5xSpZWp7UEkICAKoc2uByZlSH4EtmMohJrvYBrnx3ESsyNOQWSDnILIBgGPoBhF EZSNNwwwlE8texDZn52CyIEBpUDooAiDMA4QJy1vqYgzf1LgHECkwDl4SNsBKMTOz35wp8Cxnzus mm2SBTUtydejeAP/9ojRCII7FTT7TMsPgYFCh+3NbnIUY+fa8F/2vFY6zOuJkgyMvZ2vUbuvURzB aTuCWE/K25AGJceBOHnaBjl52gYBE/Jq0HbGwFtMNTcztbiZcbiZoSiUdGDAy4Tdy2beiBlz9TNE uHoachwBsTElGNsxXX2NVvM1Wt3X1oJgyX4U4z9vnf1aTsu+LvWtP3Mh9PutAbaaBzKh9m5CW7sJ DsEEAlo4ZscQSwUFBRijURp4wga4RAdWvZnYIGB0CkcRnLKxZsyNAq3WTNBamgnqaCYISaEo4gCB t2lrM7HyZ6yYyDVG6GrNxIJYzkIxlJ03ajuvazOhqzUTulozeee+Trg09trrgVPogVfLzu1rDuz+ f0ksvocQBJanQVshUMY17FACYjACTOwiFNRxCoQVxscMyGGaQmDSCQWDG+DAQ8AHfPUmHRAGuIDp BFCFOUAE5acWnOYZOkAMHJtBUdwqA2Z4jIFwoBrupI0DA0GN4RAJpifGCQU68pWFBm8dTiiIahBQ OEo4y7FiuJNCYU6oQ/cQJ9R2SMYux9lCDo0cWFittqxl3KEp3D67KqsPruZfBmv8pqiWRbOghUTH 62Vyzjb8W8NToTLowC6pSstHinXNKR3MX9UyI9tZDOZsiqQoRiTGURKiwDiJ2EK/hg7Ya3RQaf/D znPANZF8nVAsAUFFFMEDVIqFYHqIIiCKSBNOUIooLiFA/qmk0CzBwikIRkRBFA+UQ86GBfVOTwWU roIenih6qBSjIiBBpJNvN6FZUL/fAff9vx8PNvve7M7M23kz772ZfbNgx6OyOMPNhB+BQMIPUzug oSkvnoDFgzwQwZFBIGEGY4E4XM3w3TyY4D9btx6qZkDhQdsA+nMgC5CyxoFDYxAeCJ+9FRiydvhe Jogo7GDC+OcNgQb9HBwKA/IATWpAYXy5T4I8DCaMIWiI72UCixouBUEkGoOjjiiVBQa0xyZE4mAs fPZuY6ja4bt5wBE/e2czZP0B1FFYAujUgKLAQmtmpMFY+OzN0NB1h+/kgYBDjUAzEPHGaMiNH4yH wXrkkLbD15kAze0wNQQJdFZJeBIREgXJGEUAp9GDsTCYyfrH7fDdPJCIw2U2CaCCIoAeK8gCAZQE CYvGDcbCsJnN7+XBBI0bLu1ggjUGfTwTSE+boCEvEftlPQ2yMGza4Ws89E9hvjGBgVaAP53ADHih DpUDzuJ7n0E6XQCb3wSPxhJABxuNNsaQQHsIOr79qaD/TCSi0FjpXBQtXUYgYIxMpEIjYD6+t7+E UCnrptBbQDPEvx099d8PH8X/MVkQPpRbf6Twjf0/aBwK3xv/hwVFD8X/oaD9f6Pxf8MP37P/Zzx7 hTsXBlNSgw447FCiBgwm95t0E9CturgSu1mARr7542Jmwa8zbU5YvV3PKz4qseCqpJyKKRv31mSJ dt1zvsVVxJV8jYbw4DXX0ifwYi64U2McrOj6QapryeldbJuT2xuoL0N8D5aYlnRsySzJIa6T3NUy VmJdqyCGbdC4oxdrgkkYW7UNuKbx/FYsTCT63UU97LJeQF1Tc+7abN0ffuvge6CmCc077hiuy/eY s4FKsFa6t5dyus3Um9Dxaqf5TstN7u4Aekbebxdx9y5Pgz+YNal833t/9ZeVATtswzkLo9cbcS5d jbT+8dxURAptCT9o2tFVgEHCDKONZiV/vZl3xiIsfY548VT5rATbaJVk9XFg2YknplimeucZ1vJh zBkq2IfquTeeFvCSNXej3c8eNpRPxpqrZuVnZNw4CeNdq4j/4ZbANb/uJUazbiz7D2oBRsWhquym HMPmZurJp4/qPJks4frxNC0teUFgzAqnJ4/Aes6fu2JT5puSuFI1dZIaGaspf21R2M63LavhnieL 3r940fGfrRs03JTCrcdOpB19d7rR9EN3hu2rx4+zj1JfdlFwRcIzSFgOfarw2PvOLGZa4srD23dX N93fSzluq19qfvK8xqXm5hfznhf4sP01/3KL2pdeCl5SVT2PO+x2yME00jK/tgYXX4WLT6lqvqCh 0jJB73IVufhDy/3dVsy3gb71ha0ZsMspKZnijXabfrbnHLr7p7rVcXx0YeiR2/779zxhtOf4XC9+ fz3y0rYl6ZvNrh4ruPTM/PleRzlTSlrcE88y39rH7+ouUcZpaSOeF/PqCcINGiaqKhOVU+L/IGrZ H0lUZtxayriZRKOZ4KIfByd66G2zW33+ZdPFri2aF+zzaymBrLNpM0/art33OyJ8ufPWNbpZVrOy XU7keJtEOZ1gx6w4mOLaVuvqka2rbZWdMgcXHz83rVSSKk9epC3fCV9702Dr31PqsVDnHw1D79f/ bH8oJGRYtgB/9/5vLBGNRUH7P7E4PH50/+9IwKfyZ7GhyDCuMS+YN2R1fMP+g+JGy+w/EYtDo4mQ /SdiRu3/iMBaLsBg0ynSaLZ1CGsOi89ebE1hUjgAHeECvdp05nGoTD+EvXQysoziC/DpPF1naSZE D7kYYUdl+ix2pkoTV1Do7MWIUdf8vwM+Hf/SjsA1ZgRLoxyHRg18y//H4PA9+p9AxEn1Pzj8R/f/ jAgs8QkCqDwA0XNG+gAcGmIJhwwdyGU9hBShcKQodAOS508l05Cy6HuEJR0g07ypHB+EJQfaGIBY BtBZQK9y6D0j/X3Y1D4iWEpZMQAyF1Q6lBAou6xoRvBnCUiATKZwuVRvKp3KC+m/PPDWr92F9Jbx NTCJzGKwAfKAtI8eaQV4/1IWk8cBuDyEdHwg7Fg0lg8V4QDwyP4AEqBTQ/vwUD69F5dyPPCiLOHT O7gUoJeWoix/Cp2KWMlnUIMRTnSASZH9yqSxCqBDGy4Qqyg8DgvhzGDRKAg3X7LsB4kzRvUimF4E 14sQZIg3vucMcKlkGUoGfBhUPqOH4HMCe4rzAYKYPRifS5NhvnSAJ8NoPpSeSmhQ/CJXhtOlrStF WRyA6ddTFIfiw2AxfYLZMpIL0Hl0oId3JJfBYvH8e3AehU4HODIiSLrehfBwdLBGOjmutLFynjlq S4YPvuD/+UFOwFB6gN/y/6T+v8z/wxAJkP9HwBBxo/p/JGAw+w+OwiHrAd+QPwaNwsjkj8YQ8Gho /Y+AwxNH5T8S0Gv/e60dZPkQ1gADNBU9J6QDi8kCLaI0Yh2cByCXAmwwBxU0TzZgz0G6QD0GYc8i A1IbR5H++AIUZigwAJVasn7SjwOEIByg7UkIx+AQPwoT4QxwQPMq/UVC/ocMWwpVCvQQyyE71I9+ fhFpFchis9h9KZRgqjc4I/mYHFB6X9InJfWk2vMDP75i7c/i8j4t9+PEjzNIm64fHVB1L+lP8RmY 8llupAM4EpFuSMhPGZgs8xU+TfhCfidQWhw+9wtX1lA4PEpwX/2OHO/em1xAI85CuNMZvo7OCA8W Uyb6XsSSA4DeQj/FAj2GXmoZn07vI0CeKcyBVMhHhNS77E1wADgsVv/NDuCzuINeASvIhc8J4LOo 3P4aHWU+Ri/pRGX2F+PE50Bz0F5yFfh0vbgzlR5I6X8KZ1o/N87Qi7I+ytWfOoByA4cFcrm008rc YNAj/NI1e6kT9NEVWY1fzQxy8bUCIL6+nn/gHV8oYbU3n8njU7n+yI9a+5NrfRkdWD6ysnrv/iih p/a+NFm2f1uDjcI/gT77bwzOhqgs5nAsAH/f+i+KgEcRiTisdP0XTxhd/x0R6Jc/1A48PnsY6vjm +i+O0Lv+jyFA/QR0BnGj338cEXBwAD05BAIF/RmjjNEIhJ+3sXSfNYT48anQCQopgc7cnu9b9KYZ M0CXje1vDPpvfB6VDqGBDBCXIgCb3fMyYXQx+P8u9I9/P6m3/+/pf9n6L1Ea/4HF40e//zsi0C9/ HyqHQuaxOCFDXsc3139w6D79j0VB+h+HwWBG9f9IwNqejxPpWoHz/5B1CGhKv9h4gXFvINio6v7/ Df3jnw7OqofnC/D/K/8fA63/YjFY4qj+Hwnol/+whH5KARIwATfo9x8JaBz2E/0/6v+PFHwe/wmH QYc0/tOT86svrC/+UyUHOuAH5qtoQUGiUPxncGLdETv2bOtDzyQJzcteLHn3+MyaILv/XPLVu/v2 zukgYuDpI+ycn4j0nT9UXH806UbrRdeO+u2bmwrNSDNu1BVO66h891il43jE4+b64j2++tG/3KcV 1BscVoBPFIa6Hld1d58TpjveDLYtumHaVl24i/pkn5qW4gXwbbrjhuL/peIf9Yrdbx3ni2si5vys peZa3cYltGWY7oooUzYLjQ+wQDQ763DbPeg8M511O7EWRaX5jlsMRGET34iqO2oC0ISQCYSu1j9F NuPZeXk33lXrHGkSH161WcfALj+jssMzp/yDlqReVXLXUNJdOXu83PNpOhyztQ7yLQ+Nb0TtVzNv KjM0NCcrW8YVq5WG57VeEnu1Tm+I3xInKCtT88YVFolsI5w9X/KRm/T0fnFRxVc0Npx9FrtKbl9N vqgsNiXgdebug+I2zTFtLEF7kllrbIZQd9eksqmwrBXjElO7tr6emnWx0LzZlJAe7rhOjX7Hco7E tDbxfAlMvirNT32RiHu7XNDZ/Drp1M/xRj9lVCTd66whmzjHSkztkjderMUdWiupS5G0Zhc/tp60 o7JczmJF8yM37Lm/NNbVXys8m3BxjEGJs+EJ+eocUuwKuMX+PYc3ee1RSrwwNW7vRDnnuQJmW8al y2b8zh0H0IT1J0q0BALetR1T2oLm7tG57nUZVrxRoWulVTpxy8IurUk5u7TOw3BatDGXy1rDYwWr Ts1jFKx02JJ31OD2FIdNMRIvs/VFMYISW1ac+R7HTv3iyNVR60VV5e3Kd72003aYpv5lKBz7oMWX 8z41TUNLxOkUr31weJGjRJzZed38j6cJOScDGHCnh96r5O5e3Rq9UGdjZmfGwYOponLcQ83TJi3K Z05XJL4nwuxJN97dsnv40weJkvkmWyPe29a5Z5XmIpLWZ5oxZ9prey38kFgrZySU358+c6XkSMnG 1u0qlpnxZxiLO50jx04UBaRMDfO9DmzABo0t0txIFzc1Fnop+4+ReFkXKtUlOXYXmmRVi+LNZxON ipslu58ZpqeEF1U/uhSOSgiZs2eBIOFPvnV+RunD7dqv9EmbGg8AGgaHahdJqtKmqOoWP89Dwrrc TkXvsAg43Q32C6HBswfPH+KSkhyuHaRtYaCj2lrUPBKAm0UFXYK5Gr/MUY2KpiCO+02pftQKn3Je QT1b9OZKda5f9LGutkbKXeH9Z2dbf/CTRJdsvKgaFEOZ63kWCHYAn6E0Ybdisvup6W5nG+fe726a LWk/yBXEbRZsXkkSenUb/TD23qEkh0RXt8kXgo1npuVhVgqF6iX58tEzJsspz4gSdhgsVHFym+ls FFE7y+qn+vvasOTzKxth3gu5GbCiuKzQaOGm7vM2uXm4VyFtdWLRa08Su9xir3f1s9oSzZoqu/wD xQfUXO9nX7Wx8zY9VpIvfp+7cd+pFlt4RKF/Znu67fX5E8x/NGQrRpvXBbRWPqlsmqNtYU9Onxp2 /Ef8vdPCtXKh4tpXAlLm5riHrqKVrZL25mvee7n4E8V/VjhnTFILCOPoVzwItkz/m3S4QOGVuaFa isg+6ohX8Rj7HQrHH0713Lnh121bYRYgw5rEDfCCBG2+kHymSEmwrjrWq8vMDEhre2I/VuVgzoPO je5N5MgFSOuzjrvn7yfDrk5mTYnWKRNbRlqO+7Uh3ro+9Y7X7bMJkvQqePvGU7S5Nniz4sfdcfEh M260Ft17FlMJz9EDa3iXoMMvyfE4ItIMxUUsEEtIGnqxIS6J0e6Tc0ltTsep9K7pVhZHommSytbx 88PQcQJt+azs6Tv3m5Z1pjSs3+OHYqe21bzKzjqQO9tEQ9lCs+2RuOnxW8Gt22Y8lNPSRtixO0/J sFihR65LXJZCRqtkYtWh4KfCfDdCckGXEl5f33bNjpyDEq8cmMLOKcr24lne5qQ8yw37zTyta8NN O+zGHcVLfk/y6t6sLcRNspKWaJmxVyNL71JkxFViZHeSSDKtXBJVZLKm3T0HHhXzJItkK7pd+bzQ KGuOuEQ3QSNXI+9Ny3Q3kiIpJk3kvKm1lA+nv71u5aQyRg7s08sPll0HczR4nkwfv0u5y8n+rqTW ZrZudg11pm5NwemyVXT7JtEuz7+xFm2v7U+i5JIVlmxxgMNV0r3V9i3l6CtczPO9orsvXHluqrpe 1pUZGbDlW4sbG5w9hejVv52DzUS94k9qv36nWbOqMezSuzRYRYJk3C5KTflvzwQS1+b5kbBclD1a +f0vGte3xCmiEkoXHEZd5UwsMAysL6UtWIchtd9sq3Z9vWS8illkcVOMYrLKD8TpBnY7STqOeuv3 P/GrmRWmeJ7fgK4IbQia2rI1xzK4I6mrjPa3VVkQvLpZe3X+srs1pYYCbVLZjUWxVyKEWAOB2c83 y6Yp2587Zum0Ft5+yPYWeZNYfsO+U1VictGz5gfVZR7r35S8TOEldxuda6w9ID9NKfSiMG/7VgX4 0x1KKGRaoM08450+k7eYBJwZL/hjRc35mI4jmXjM3TZ/eyPHqgNVsH2FMVYwdzdYLjfqTmDX+iu+ Rzs38zst3fWNGjpn64qPTgtfEWraFpBmmzDNIg7+d8pieoWA9iLJwWgBaDNKOWLX7AwHVEK2UNEn D4g60bJPJ8n8r8kb3lROj8I1v0o0fTXHOncRufx3F08Xz/nWtqQtRnvTFCiFkQVCK+YSVIzdvIhZ fHf/bsXybv0PmV2HFGDovDOK8LQX5WN+UZAb5+Mx7tVNHYP8yE3vq+OdMrlnUgM8bhVd+3FX5Dsa cHN5E0k4YUUEekny7q37X+ocxWVGqo0zEOvqy+u6zIuJMD2wy1u8YN7zIO1bgKqgUSAR1alsc5uX zoI/RalbqxfumJRnYI5KLTAsO5l44DbNMX58baH58bbdStGIqPdXauxvXqwpCj+V5fKT3JXXQs+m jFW8yoV2oeO9K4wOKCYHGMmv8n23lMBRtF0D2/nwg0ds/Jijzpv1J5TYNpzQuYB70RykQdHcYXRF ft+SBW9fGDmqbTv13qdx+pUEVZjH/7D3HGBNJc+HIlIEEUVQESIiCtJCR6T33ush8EgeSUglhQAi IihiQxTPU+wNO4i9ISAgZwFsiIooxd4RpQjCf18SAtju/B963Pf98vnJe/v27c7MzszOzM7ua516 wtv+jv+UjEdRz7RQK0iTImXFx67acG3XxS0j31xQeDWus2jJuPsLx+t69Sy5qTyTyPkwUWVD946A 1F27zpNZyRNyp13evm+eeJOk1q4RWwu0jZ5tt9c+6WMb+X6B3Nies5nvFYpaz8Y7ZYqWBJusbvk9 IbR15rJNNtbW+RJZp9bqHpBacu+lSm/3qmqvnC3ByWtvCV81XSvkvMB0ckTgb92WHq1PsouUzNcd FVbfwMok9bybS74XM8PSbo3lfP274I2Tk7SOIZ3Ki2fI7T2Qwth8biOt1qf7+rs5czDiZqHJB/7o fP7keSJcaXVYUk0U7a9kLT8KMrxzeb3owc5W0qrH018Lnzis+FTz9vjFJK+Hz45d2HT1Kmw1Z2QD nniGvY/NSZ7D1q5/iXVVb1z+YkzZYeZ0QCDiHuOwWE3HMfMIRRHjHSwT5RQsLbLLrZclpjBWQZYJ Adly42oXKUrI712r8Niyd+G0Q2oJyakntdxURNaV6f+u7ulr9vgyc3lQx4raETOWJqbIZc8TWXbl vMaWiIgzOIk1M7sJ78ZyssxhIYK7HUU0a+eMpE6/CULLA8esXRxcpap3AV3WMXH+vMlzFNAf5mbX pGXnbElKbpJhPAGQMUaqHb6em7xbs9uz81lzdsTu8TWtLS+81o5TuNbTlJQFsJ3NuS58dZ2YSPGq 6ITsKoYZ9ZQyalZ4ig+lKPDl4ZfoGUvlU3ctcmBEvVN4sMHQKnbxqSPjUy4Y3lzoeYSh3fP+bopP WnXsBe20Je25xOTUeIeTN8anpBvIpF2+J3eV9LriIEp8024VjkjKYXnUxsOiatWk0beDpYVtzkre S5CyxtIfyeAmeIYIPQpsylmvJURc7gHaqDkpJBWZQI6qUlT7QzbVy/7FtJ1KEdvNA0eiYMzTN+eL K6JENe9Wz2hwOsu4t961OARjmlZyOXvOwSlKFipW4V4911pbrCQcupYErQ9SFdOTwKKejLJ9WBf3 7FLKRcni7a6HzooTumeNezU9HA43k7IunTCp5g32UmjK3oSe6107W5bIN/x+FGXoQMzHZTHuXakt FKpp1XjRmd9ZuHDNyRM3ilU+9dz9oGMv++Stbs/Fk5TQT0+2hLuyCw8DtI+0jELNPDjBu7q6enzY eIklpm5jLovO760YncfBpK4zyD86wtvRqQ2+X747Xloxf+zJC/vO2e/MODzKF9X7XqVX1F35/tWn ElGWZ/XZKAVM6OMNVkUlAfNsJRe6pBtyDJI7Pu2On1eXqoSrnWxsc+X33wtQku8SU55tSqI/I8xf s8v58AFTCqlwgVVHg9OfsyK8H2cFJwZeEL66/Njo0podn/a6j1G/s+7sIWmR+d0V88V3Cq1TDCdt FC0QD6wWXtdwuPkPuYzDO/XajUYVW31cPF8hD2sjI0OlpohinAKrhGcw7zwuLFA0ab/c3dDl1fK2 cR67/qQd265sU4pWyoQLW/48Mt1S712XkLVjRVZq6vyy+shd2inLsuQyyonMIvfG9ichIxpV0sbL yHIW/X4CVaVa3hmqMqPrk2fyddk/ux1GrURTRQ+j1NfBTaQ1D6z2tWVDpGSRqRlmdIpQA/6ax/Lm qoI75IbRlh3mu4JEcfdOHWuRLQtASzVI3k5fYNWZbaU0c+JqaJK+uXmgtezlP2cWKT7N1ehOrpsw d05Wp9c9G2dU2GqVpF4N5XOWBZd0JwlrjOjNOFOxa05KQ2/35SDD1/PZMzqc7gX8KXxSx916YcUJ C8nUk3LjRM+q6xNExnVNfT0DJxQ2VrJnDGe922+oO9eqn2BkUtHUBW5SqKUoubL9IqdQogXns1Do DPnH70JSgq6M7Kjt7WqnzhUv0363pbck4n6bLFX+MEo8atEUIWvZmaMkUKnBUJ63hPOrvIygJTXn tgRZijsfMJ2ZbJUthTzXFpu12HVX6sGD2vGbOXV2U/JS3nQRjoWKpzYcX3z4aBbKdDF41P1wulVJ c8VK2twZZfK36+vLF6skZxQWFtYpX7puK9ygNLu6FDxteX3mzf0274yZtrfqOr1ls4Ipgd3JuTUp Za5HnrcbwEKDYZoBwDBGwBghKHJGyZZJ2gmnoAMV5RA0vcencNtQl0KKYiQcD5jun8d/4aCYWmBO QNEWDX4zfk5bzVOy5NZnOS+0Xpep7KKeJbnE3VV8yrK564UaNpZEjlLHHxolU6tkoVUF0cWq1tb1 Vi603yghrgE9fPBEZ3mXjo1wg0yWxBJ05VXpsUqjVJF/MlGsUtHk1VOc11g7L5ITUsfTPTKXljeG iOXkLZprNLI9RuZ1LdlwjpT8DZTJ2rmq5eutzTNWiUtUP9wTLHbPXO/1GVGJlGn2pG49ecUyjdPQ UqzVhVUqzZGymVIp74WFIjNFiz+FocgJxrfmTCLlLUrHnj9memXa9QO2rjttt49V6/jQIrs3K/7e gWL9jn2/vTSRQRrz6vkjTTxCaXRLQF2FyRwVp1JFKGdFGApTP+JP0SxxISvItFEjNDkVX3iILmRs MWn0JJ3NB4Ja7sdJj34uM5uUYEjSVOs2LT0SnmH14IWt8B5z9eMWXccXt12ysSmeplo5r9tzq/sn 2hkhS5r0W3ZdxWuXFOqaqqSDWtnOjqrQy8LTkzWlVJ3H5E5I3LZ4pLTCC3mpvIvQu7qLMm4aU9Su LvN9GSeSxLhZkZ85ck+I2Hn/FIO41pAu+aItF4WDVc/7N0TKNi27JTv/Q5NoBCeJVTru04xFW3AK EZGOqf4N5Wh7K8+CWqm3bemLH8y7WsY5vu9kBNP7CM0JJb63uyfNZuEWixcNO9KUZT6OuU8ILEYp boRczq4JEpNDuVlv1Ijo3arSuKxZyNJSCVSyDH9vt3PajZ5c50Vl6Cq95QZHuxVLTdMuKq52h8e/ rlXyp4w9XqBog971MTPNtLwEfR7vBAC/XVE7WQVUy0LhNaX0Rk6K3DVF6JDoqOZRD1jCSYk3K6qZ lQ8ksk+59+jLuSoqfRzT86BVJ9RmefLqpk+vZt2PSTw0U0oO5R27cqrVhYjZLxoURlq83LRQ8cIE 3ynMV/nKOKF7Wmoo6phXrW9G2yLNOY20SLo/senqSgVjMYliL9FuNVst/3OT5faFF0cyV0j8GXZ6 xBLryytbXtySVVFpa3nRPGUWtNTemW79qHeCyPRX85u9Zd+O10jqaRZKPjc/tfo3u41hqlc5NzYu 1LA0U0LLy7GdTqFaMyWcUZv0Sh4obWzY8Un53DPRp6IaUVOKJ0TGypgr2G70k32bO0WqYfzVhB7P rIZW0FOR/6qe0sYPhkWblYIKd+9wb6Arlj5WqvtdiFzVqPg8Nls+Xj/o076TGuV/VNgldR9eWR1q p9SJOe+O8v4wKnObsr+QqYoz6p6wZvUWqEilKT9iIzIcsxprjKxEit2Ydq7WYdikV3ol1e1eWS6r FKT3vm/wuAVgrNcr15VJ7HhkM3qLsvQhK/ExuTtWTVpegpE2zRVKU+8N21qTcsJ6jUJnUh3CmLrb Px0pFrqt7lRp3BAiFpYtEpnht0CvsmH3hO1nNb3/jN0feat3ThYu/v5oH6Z70ly5yPoja2bSKw+k ZLaNdEn3XNdwuRnCdI4WGyPWEr8v22BcuVurpkfwh671Wim/bVXZ3XHWqAx/sGTX9k93p98/cDv+ 8OvGaznLuoxGyhUnW5UtS174pFD2FTp9C+7PnQtXVW903xNTEqIlsmny04UYS5I0gGjf2gU58z7V ObhunTxDqvkP3a6Ol4SUT8niVhYW+mkGptGvU7NG6CnsmXpV+Nq5+Sbub+G6ilqKyifTM/R3zNzu xtOUpuTKkuZjkpup8bfz7h4alZm8JvVIWKlriH2tdpXPEY9gMTv1NY8ap2s0TTggLREpC3ecfoWt LHiLqy9dOz3v4TJS5ZvpE+4mp+pmLu54unVlxKPo3p2PaxWXb4uauCe4lSUU2JWcq1UsfG0/4H/R IjOJQ7VSY654N+IZ6TmUpounF6tYkZs2VWoaaxqfhlIjlN6/BcwHRIqVKmqjuXTaUXZFcWHOitMU G+GnThLh76cdnrEoS6F35ie1UqAwPixdFCc71X3TzIMXslELs0zbsN0flm2+3n1QSEY9qcdlVJX3 MWl/it2u6U9Klj6ofiislWXvDHQB0GROpfG5a1RGeldP76XV729e3D4p/uBrVc8Rm9uFk258aOls AVyirZ5dPiHm+ILaGJn79fug3c9RqMx0n+SAXexsKa0F9s4b7TVCO13LqOuibjQfWn7nXP6fChrS 2aMqkpcjtHh0Odyy06urO3tdZ/ueO2JXEiRS5BeLFgtL3NCKqJqk6q57q/vS+ycng9hvu0bXtpR2 SZ+9T1+FE37AmpeUaFh8JFu2fjYtb2+wWDjtZPz8M+mjlQ82XwsdgTrEkRtXUgyYonDGJhchMWLg +yl7HpdUhMjKZegv+ZS8sCjxWvn0xfOS7rQF7HujVJl/ba1XpbEL6oqEHErKXr5nzxLDy6KHpDPZ ted3RI94UL+v6WLiiM1wg4NVGaBnvrllZprP/bAdzSPMA0auvKUZT6qfeb+OOvra0/WECUobIfUg a12PZLOMt4mlhfR7e7MyfBdkz9BYa9hbmTw64vi8o2mKJaMeTPbGLD+N3f563aHxR3WgGrTQIevt /g2ErVd6Z5yJl7tJFqHR4juq0hdrVweW6FXJ7hSu7pqyud1O9OIjg57lQunbksgajjalrRc+MWQb H+nZGpY+XOG7ACi6oFdTknuAPlcaXWAlHiuXm4HvuD+RIfR49AghBeeNEqzzopvQ64mq8WsXVJDk z955f5XltL/Vf/8B0VcGedk4ucIZ5Y3o8/ddvM+e48g1EGS3Kag7G5gxu80vinqeHzcdWoq79OSZ jCWkenWln5L01JebFwLZLAaaIv6WX8m5l6ouBguIeoZKY1cknEZxbYlD1vpTGqevv3StOmsp00ME zHrKhv7vC5M2oS/KPjzV45JqWNoajpKQuKgWlxkg+5au2JhdKtQ2ckyTOzr7pHeXyKWdKuoT0l3S WZckEmd3pYlvOSHmsLTVwcrexF02N8blDVxg6lR/3JujFXzi5s6HAQjzXMRZxt54NpYjV+HtYLVB flLVtKQGf+f3TaMOKwij2pQ+HFHYBRQRxl2/ZsI6jHhcgVSWy7SToAtTv1eXWI+gdZLvd4x7pXch XBfoHCGgoeNvSV0rajqvnu4TYTenxfSEYcNSO+HIBTg5cYMler+vK5c3NkvDT3qr/q5BDL8neJ+1 Y9mEsgkGps5ATmyVHp+felE01b84clTervCxBbNbu6PuJYzxkZ25f4fCLkIXJlxm6tmne4PLgAUw 1cpR1x2TcWO9yDx8Mu2ydb0xsGyU0hY87k1C2AMXLrFOYknI0vlmIuS8jx1/TE+h0Mn+WuCf2np7 1dzd4/ymXFtp4N4m+l5L5EXeCNSTzfljfD88sZKRS7o1cfskYON8slmYZpORvGYOaczqC4aKE/OW GJm8CXafkHIKsTYeHxgxW/5G8YsPkjLPMYmr9Ct100j72D0pDCmd5yZ7zNvOPh3REVFkuRA7McPA 57n3geT7ZQ9HvnuPLz+fWJ4z/7fDwKwgGjUIQ52eFup45xGlDvMr3fcZffTR9Pdbfk9yz12x+2H5 Wyepmyo5Ktrvk3263XrD8Rk5maF+WS5LHqw5LPpkCgoMUeHtLc86XkQyM6WDQkxbx6P2I2bxIetR ucJzMy+uEl/wUrh8k+TvgS8qNG6dlMje725dafyWtWOpqTwYpKvL5Fiuu4rx26SWva4Ju5d/SvzG S9+ScodtYUqTJsnPhVa4BMkDAV+IEbsBDNkYKvtczxLfBbf0HC+vbGW3uKJui1VEl5+fVCl57oTf SBQwFUzbmqMwWZ4GEzeWGN/UsdmweYXTCsnw/eZ7gpXSTAt9E6n3TdUr1uKxL1bfGd30LgsVjB4V Ezsaf4R9Qnr1qLnTheL2GRvPHH/rXfGm16uK/I61lOxgnw3ntDy7hgLm1uzLXUJPA9LlLxc7FozN Wtx+IkbPtPSPhM3Ja40kll3AmB63mFQXIIdqTU9NkQLGQ+y56i3Xryrsvo+qOchpVyvLxTfHHkmN LteMa4NR+44vqcgN1SFt0KTH5T/eOB4lPw2lbBw2O+YkYaRE5qcZutPClYW2din7U0SAiUjKew7r BXHN+EihsvXWMzNaGLLbXk1XfPjptW7UOlyHhwlC1qpoeSA8pDyJqStHENy2PguN5+xf6iTdTlYo 9s8xvFI7Bkz9hx5I5f+eX0TUqrpGdyf738zdJa+JyjFXQz3OeJ1snuGXVPehJWC69fSNlMmorZKc WdByfKHslsnSDYqjaMYW5ERN01xtoVr/umhawo38HUFPJst8SE6ze9k+9b1O8MoiAjkN2hEFXT7i c0RaEqWDipEwxqulZAPr6dzL5uZS5dM+jL1MA4lj2KpWnY8JVz1JnyS3UOYkr3k8iQYM8iP1Msk1 E7dOvmKZ6dC4Tux1jdK9/Wb0KxPOZIZtAG7XReF1U5dkKV7QAMrm3LOO2+ancqotlv8+E71rIX6C +PVRo5/vqE+abEfZuK3ykbuzmm3NaNG9xQVbap+pSL8lklIAHnuDlW9E7JBa87p249k6DIbmjLoy xmpl0/wbLS0MRUh2t8GJXp2pO+86NSTo2mcdbwE2xW8vlJXzT8V7cwoeheypU3+5essDKT+lzkvz bptLvKXUViRb2Zo7Z0WbBB3jZPu7i+TXzDkbyPFZf+yNYqz2DCk9p2610hMJTzZTs1Sr8toqbuRZ 61ZdXRmg1KjmSjdcfihi5RoU3fGT8Hn/rQorRIuXhWcofDoCPEDj0x9C6jEFfscKAgoiq80/5oe0 IIaVmT4YnzttCFzoc+stetXWuB2qlb468QLQ6CnZbzbt/g2PP/xQWE3YJnx/0YHgjTsac26/I5MT jSfmubzoVQCulNnWeW+p65ocdDeeGtlw4OmHnsvjy4s0My8WNN85GXGk4PE6bKVXRqdtVJzMTtut KrlPOzBgDulZntAbUH5k1OzQ/Q0+O/SZFVBTNDAmmehLasD2OYguQZ862dujWYqKH19Rmr6stjbM /0D5850BvdXesnSZsOO9vfu2a06ouTB95UQd5Vtz/MdTevI7PrljADR1USrSzevvEvI1125znX9i v8xxUlXUxBRZ7NWIuTJhN49v8F5+d3PQVVbNw93Xe8ttxxcrOS+y13W/tiwvsOOIpr+2CM1wZjyz 3q4UQ2ys1rYGz2d8fOr3vjcM2DfTKyXvxwR673rae9Daptgsy6XG3OqKTtGkKs3IR5Qi0Fc4zZ+e /7z41MG7vfK97cCcHLnT3y0h2/3K0daqfds4usnYyvJcfMmOwl6q9FKhK0IaAa+S1aPrEi9f3NGI ArOp/d5g13KcXs3Kq8amYQYPQma8CZsN5oIXk5HOX8ifLXzm87B3LeIAgen1Da22WPGtAwmZMzSj 78zCxertWV0vXXsBaKPd0aWV7SMJnZhzMV1PFz5pV4xEmTrdL9mT+YZ6y/vEs/FnPZ7mW41U9Lt7 PfLIsQ1vgaVxIOjm6vC0ZsCm092vrvTf/8YhQO755iTjJ4tyT3hs5qg9BrwKfNdJ8lIetbaaajJi U+6WkD08KXbaHxO8OW9PPms6NutgVxFlhrgpaLfut/ViIpfpjQ/cOSXz5taX1r1QbuuCrj1qd+h9 fPzeLM4V77FHqfu1TxmHSW3YfL3tt80rDu5bkbu/7Tl2+RR3h3Mi9IW0WULpBlru+8CUEd4O9JB0 3ea0padELXqR8MXaSGaKQSAZJbdTWMHoAb7TTLrifKnRWOD7h122vnHskB+b/rLi7Q13o+4rG5LV bVW12ybMfnP6+V2xoNGFBqvKzQ6chfbceh9w2brUzA4Vb7zvuGsN+7xoxPGA7Ow/SsXBvJ8gnX7e 9kAzCjVKAskFYF18c5qEGN/37xzY/iz00Nrz7RGvutaHpZhF6v/++J27iMjaKacbOkzHPhWVSPRJ XbF00Ui2glFdGcd4/9N0icx0DNAvMiNjsrPishrU3DHOvguJ6WobdETjlY8yPfIuYPduSn9xfEk6 FrRNOK1+i5l9LmaDw7KC89J/bjFXX3zlhMSDF2Idd6iT5ncdXrkDYjV6VgArY51SXcDIB/UHmp6l L87xSOiFUwJFqoRuRO4xV3+eaebXWjljrOnEC4ROCeWDF5vuzT3vuE6SlSY6Mk18cekzYXSV6ELF 3gf0hz1nzaag3lFOTHrtjDKc+RxfbhjJkLFsvIq3VZUXrtcrAcZukcXL5uwdQslMuSv+z1+GiIFZ 5WxhI/C+YqBoHZfSlQFILGGdyKN6SnuXwrP5NedJ82Wjit40FL4KbZmFH5VXUrDqySUVw3t7dazV a0RrmD4nbuubmT8YoedfXK2veMB3Q4vLe+PmB3EiSSfrLkxfLAJU/7T46HU2HrVlK1+bvK3LPwjd YEbqnWtKb39nLRwpM+633xLa3OWpkCZdL6MlSrZRzV12V8i1R39MGpVb0hiC36JbJYuqlT4E26pW iWamKZ6pRyG+estly3PPxMT9FiwLVQrduC165qve+oOam70re6/bhKSY0e+03fK5f7prq0qjqfPV lQY3Kcat9hBq1AVozb3nG9ZhYwKw57YUhysUzZo4zkIm+lp3QF3xBo/RYAAaW0JH/Hb5ZN0b4Drh gFTXeZu3UAMo8WuF0vbaF4e0h6rXNG1bq9L8InMl8MNMNoRjQnQuFRhcoI/1YH3oaHIvRsxoLDJN XmxEIAWeyz5Khc46w41CxkGBV8/8ZnT2zJxSz5oFTguKdqWJFisB3zMXC9045nMiINsN1t9ixUQ8 QuX3kY/New3nvAhMegS9fjM/zhCxyTtONzffXolv66SkYeuNWhyPpKrcz28GQ+Pz3F1L4X3EehEx LF1bhJR39yCn7kjs04q3urflCcAAyH2hkMus9L32MSHo8jOdC8nb28YCi7klgZRSnfmx4z09pRSa 7TdldZ55MNN9dv2epsJXE++Hth9qvtPwsF13Gpj9RUsJ19ymL8e4H5EaYQ28jrRxZ6ZPSe48PLJK 8f6DvBKjV6cyjcbETN9WuHmfdTd7bkZ93spSm+Xha6rCFv05IY3EOBvIfDs33wTx+MiPs7fk9jJs gdLdOq8tB9twMX0xdU1DCFBWGTWSJQZVY4EdXuP19sgtlBj2kGkWTnliwubNBo9aI0ZuMhL3O7Y0 f7KaqWJZR+6O7k8PNooSOlt2tWEejtpjLhaefyaedia9/XhMPPagcO3sOUGH/A+AqQTo/b2hYvdj Ep86IJGbhq0qU5zLF81JfZ9pm7wazOuEEZhzRTeKSUZOFKnkys41kktsNjY+Qp//g6IScWJeUn1L rF4GXS5XUf3OrsQJz5eWdhmNtEo+mqlyn9RwLF2q4iHuo64ZYiHB9ANnxivfDDtbEGhT53WzabPU +Cpgyk9/UGYwdt8Z79XCFZWSt8LGBlxOITFui02a2XFt7YI1craqurKrnfUfNVesv/7x0wyH6f7Y zsOvmuuSnjRlP2XU/UHcUvR63ckI5tvCTbOSSbszd0+6FLX+wIf2eSoHA6XOvYl4zsy79Pr16/OW L/JshSMz93x4M6py6aI3r26OeaTe7iBsPRa4mnNjjBpeu2R0GU1/MOZ2iWdNiWO5YymmMWQfNaLa xKIlzd6jLXzN1kmabk0AbeAvrlLZMVZdsUwjPVbM6lR3ot3BTpWbSklv4ycXsfMXmGy4v35u17FQ 7aSOxsW36+sL3+PnjNCmZxyZIqTnpOhXkn+aG+KANjaWo1O3SKU+TF14WqdksvqEzG7FkWmy2lbn k4vUUPcOo/40GSk/TUj2D9GUfNGUcC96zSfJmueW6enYpmM5aQCBt2lzpc8e8XEoNWrcWHBq8Zsu JDD+ZMv85F3V06jKksI6qNqHwPYas2vf3MwsOeCJs6KDZ4juaYjMkdi4UKPJ/2BJ0VGprBVhKTN6 P+1T3FhiID07xv9t82KPpN5waZqhxc05TOL4zitXgKgfnUgXChZbDNOBfdZyP25yrDpmuYFa58KN u9gnU0KNFGHhkzvzk/0Ul5dgWk861pd31Rl1P00W8TKefZPc2jarKzwNUZwjgtHsirK5vxnRxd6r HiNdLUGfb8gkt77KUTIPmPSGHNhyZnROBzDD22OMY27WtFfZTl4wPgNLJwdQys7bmWcI7UHf7UHn aKjTJz2N3squKyvMWTH9hfL9urzGke3P4wsbM8uVX6tzEl7WLtZKGVGKIp8cn/zkmBHZn3zg1HhL i+cRmuqHZij6+62Srj3POb4PmPfp7SdI8Ucd53YWagJja8HT1JNLy1uKfe/6uUoYVI8HHtFTB2LB vbbjPTfV8W+1Mk9jo+qPvSUcTAUihMAJ0DsQ5E9851E9r+64z/6ayLo/Zs4bb4u+rF8Wu1xv1Cq1 J1K+2W7+y0eNN9+txXRASzWsjfTuEgIazq702KHXIeVNGz7ZGN44XJewLe4Vu6XNMeD398YzgdEZ sNCwwrLnWKi01xbL8gsXLuyqcrsxDlLcfuNZQ/kyhacfEmVtrTcXfDwchYuvl/I2+eNy02lpJOg5 a86T0PTEhxoW1U10d5FJ9SiK1QWXNVGyuzOqCR8TpmKF3lUHStuRji/ZtG+FyQblzdR4QITc0+M2 JL3WsKw7XlBQsKCr/U016+yt7nNvpl7WkdkZU1nUnB4f9qGAWlE7+d2mxaLFct6YGtWcdEpTpdHo 6rlTzhFGtwSE73ggc9PTxqTQKoNaW093nx3e+hZoXzA4yoZK5ATjnLxF6ZTzRmuZNitlhX3Gbat7 1XTnCJ5wLFRRZjFeUgSIT9C82QdHX1UTAnPeBKDyjew675kb1bjsWdv+hHZaPVxmakfBXQW0+4jt 2zF71rno7bmwNaU8YMObpRcb14tprl2w9GLBozvx95QkUjadzb7GeP/KyiOklXNmjpKy8vaaGPnc XrXsnN4Ck7LjY7dT6z0tyvVthCOXXC38dGuO1BtqQMuhxqYTb/K3jVUzfYdVkuEuvUhjj4o8Uu3o vFRItLErVNhy0exeksh17eoLn06nOUkrtJNkjDXHT8x892r/2gUx4VePXNlb+CKmhzLdvvzkpGMK remHUW4LX78KanQ1pyXK2S7/OEJZunmvMPpSkPRabaF6mTCOuOU01K0w4KIFc7T9tURG1b4x0KPl 7eosDGutm/I8Oq/zWTjwV9df2y8xc+2CuQEjK2dPM3km/DRn/iqnwoCe5IcnvNhCWiKZe+NQoa+J Vk2uOUW2Ob2znVFamESjbZQ9Ft0xeKXpO++i7SNPo06+CKt7kr+6ev54NVS40Pt39w7rzDfKPZdq 2NsNXJF81F3f+JqTEpVFjxbueZSz5XX9DWTxLDRve6eKv/BZnw8tcdq13bN3zG1T+nMEem3mTFLy 9LJJa54UjVNDZexqdjS06uw2sBFOCZ64UNZ5tWhpY5ZhbypayFpLemenwugRQkt2TcnEHq2j6F2I ru3evLJCft/bM5o35ZYHT0xFF/f0WKKu5HZaqNBq0089Vtg6t/VdlhR4lZizvfaFUPGIHCvfnAet F58UqSOd2bgmULErn+VsSep5YS3coPTe07iskl5T+NG5tXq0pPDmtPuXq1rP1ilfmlkS0P58/9tR o8Mmv9Il9sifVngyIgT1RFZUqK2tjTpXceayiyzK/DVPOpmVtNWPizScUbJul+M3g3YTrPcDiHcc 4PLku6Rj+6p3BswzkQ5BlV3fZtSLvd7NXCyKKjB0j0l+1/lkNCyUsWvbVYDViVbj8KOb55/LGgGA V1fYs0Hj1ivFF4HuOfOFDpxFdYy26nhEGb0ATV3x6N7HReiMRdbcVUZJYbkySbvxKJsDemr9S6bH RKdmyKenpogWnL8aY40sVYoJlih1Xgl3dzIZwuJNAQu4NbKk+M+GJptWPHWdSK+Krx3dXP/hUy0k tfh/p2v+B379+f90Bi0Gxg7dqY/9v+/n/+vpmZjw938ZghsjfST/39j4f+c//pLfVDTvlBe0N2/4 0Y5EMow20NGT9OPtB7fg7RAOhBncT8nzNgnb0Sh0GhWmsiwEu4UHFSH7hgcVcHcQDyoR7CX+oh53 V3F/6YD9xYMKeTuNBxcN2HNsDzOxDCKd951rfwKRiQb/GDBEJieg6QAzNC0a+YYzOkyVe+RRFJtI joIZYapovhzooF1YyCsEGgeOgxla3MpRMJOFVGDRkM/+oTkwmgDFwWgANRqwB0AHzRUmNIuGhkDL ZORQHNAktwcddBjVnwAzYKRVJvKlaTSFjSUgdaNgNA4goaMq6UCNIzJoVAqCkKqTbYRTgAtClliW URgV3Pr5e9m5Rdg72AY4WWBUJf2hKD9iImyhL+kOUfFsMAwWMDUiwE/Sj/uxa2+IRbDQJdAosG5U lC6LQpf0hrAkUIthgenb19cv/wQiDgf/q+c/GINSE32u/BsZ/m//1y/5fTH+OBp2qHngx8ff0ABj +L/x/xW/r44/hcgcSib48f2fRvrg8f/G/xf8vjr+OJhJxA/dVPD/GH8j4//p/1/y+7r803AweegU wI/rfyPD/+n/X/P7zvhz/9fTiacQ/2Ef3E3eenpfH399IPT6hrzzP40MDXj+H/LNwP/5f7/iN9sq nkJGx/G9O1WMjp4qGqZiaYgzY6Ea4O+obapqZSk5O9jDBQ04QWdATX1V5D1iNBHGWahGQ2QmDDwd IgW4SBCFbqGqD4ZWW89EG6PvjzGZZWgwywA0DTqjMmcFeLhbqBJYLPosXV0mFjhHkA6NgtehMfC6 TDqM1QXPdTE6hqqWkmikYx0CDOFgBveDZcgtYFE24iFBiHPH/RYztxiOp9MYLFCPTYliIGdHotkA NS4Xk2EGmt9f30MdEg5GepytO+jdL1rjO76WGB1jHYzJ4Np9z754yYFPQcsAKpAuHAzoaDr4VUEN 7qd9v4oVt0UKDKiJoPA59Q1VuSVUiAKDcfJwV0UTGHA09xKILFkV+b4br2EB9bgNAmFngV64HYC6 szwEjSPfcaNgVNGCJtHcZ6rAX3WHoWjBGBOZvjQaa8CtTRSTxYCwA4v8wDACzsBCPP+bV86jE9Kp J+iCSYewYAQ4VBjnQIYpfJj4FfwAiWCek/1Z732QRtPIAKs+aPvu4oh9B8BbqNLZUWQi9u/AS+0D h0eAb4Cv+0PwIc9wcHQfgILb4QMhct4z8rwPxP774QNjQCAHbxbvQXY2dRWMNZ1Bo8MMVsJwgtOH 4GPqpxfry4miE/vg9PVCgmrDDlSITifzG+iDdFDR8IGUG+Hrg5F/M3ygY8YCKGADNC6qD8SBJcMH TmxfhLQPzAEFwwfKACbM4J5BTiMLZqCBRcMHUu5J52gnWwO03eeU/eqj4QM5xGbRqDQKjc0UCP6A kuEDZywbYhK1v4T2y/LhAzPE70QL/YW8ffXR8IGcCVO+RuwviocPxIihoo2D6TAVB/WT+fPS4QNv HwN8zhDDCUZk4a3fmEauhw9s3KkfzKwULTQTcY+wXw7+d6sMH0wIEBVH7vdaBLfDB0KWXoxpfKIN y8XLILEPzOFoxfrGsKEgNy9bthvGrg9OKmgvDkbjowyGE6TOQQm2tEQvd5pLgGkfpNyF4eEGqJOZ q2cozhUf7R0YNJikwwlKhm+gH55jQ3ahRLkMhtIcWd7HadOo5GHFqfaY+GgOBEfjWB72fQB7cfMS oGFl1/q5GHm4eMOBhjTnhAEu7HD0tu2wcf6xHsF0jlm0Ub9XQ2UOK13vqk+I9XT0Yoc4OUB9QA4u Gz6wsu2xGD2yB8w0CWT6CpQUMYoBMX7hwPNCkd90u/BERGkGEmFOv781sGxIwGQKaNUfVPxeOPNv BDT5Vfi5N99UE/zom8AAH1DwjzEbTKgfx/FvYcmvhMDt/z3hxfmYOcY4Oxg6eZr04WqbwBqKSWYA yQbi2B/YBA4YL7XKk28q8HLfokD36BlYAsTQ+CtG/dtomgWTPDxwPr4eLFNBnM2WRiPD0FDE2P7f mPZBMERYJtjYOYWQWCR3V4ZAyTmSadBQaOL/L47RvP6HCEOMGcXI28QuCBvHEkyLfkQqnvxvMiyT D8AQ4Rji6sm0CcIZw3QPgTHtR6Ax/s1RZPL6HyIMgx3YjGCKd1CcHdalf/ag4v9FBMk0JF2UyoLx 39G/P4qnM4XGJkTH2ic6GAqUq0tfH/8aqkONJZHg4BEYEqpH8We4DJgu/02JxHG7HyL8Yr31qVHG ca5kM5yDQB5ZDOK/yq9MPgBDhCPBxtEPNiQxXIMSBCtmgRCDODQRmx9Gkp8Fz4cAjVTSGTJcg5wh hgmBYkiKJ8UJgio07oeu/0Vc+RCgeZWGCFWHUDbH1NUmOoQYEP2Z2fPbnH8DWYjBgBKQZH++6YOO g8hs5PUhQphujGeyDTyMo5z0CAPN2X8ZWwSEoUaV7W/PcY4jGid6cVgD1e6/jKpTvwZGIyFg5tAJ LpnhSHPF6dsa25u4DzJvhwfKXFB4OA8Zygxbu3hTlziWiVm0z2cWxPBAmg/MEKPNTrQPZpFhIpuG 0x9oIA4PnAfaikOMON1TzyXOID4WY+ouCD14RSE7oIYH6jxYhlqwHbAUL4qeb6i7H9P5sxl5eKDd NzkPMd7G7vq0RENbOzge8hnk6Q0PrLmgDDGDG+CdfUNp2GgTrK/AJeI58MMEZy4sQz3Q/k6Oxowo iOXMcIsd7EIME6y5sAzxUOsbBscRnR3tAgNc3D7zKf5lrPv8iqHF15uNxWMhfQ7TjS4wT+zYDAZM xQ5F2P4v0R0iNAIdbOgYl2CyPoEsWCGzpwGIf4lDP0RIcAzt8LaxbIaeiSt28Dz6L7p4/MlzSBEN iWORY1g+CTgWSeDh2REgBPRf484OER72bBv9QLw91dGZ3J+yCw/JmuyvQiEkFGK6GzOYNngbwdRm Q2USf12saKgUma2TBxWOCSLaE4MHOtFI5OA/hAbG2DHKOdCZbsggeAlEA2LgiEOz1P/LVFmQk7Gd t20U5MsRTCsO8SyYioNx/yE0DHFMSizkHBsd5CtYMQbOo7HhfwiHRCJZP8THJ4CDDxFIOOKWEn9N lHSIsDCKwcOmUKKdA51jOBCL/5h4ezmwDYiu8Xg9PDFkIBocGuO/JBfGpnp6lBCjWEeKn2cfGj5B /y0cPLxDIMcAHA4fiPce5Mf+twSDHmVEdSa7uzNcXaMGofGfm8EZ3r6GZgzfQOdEQ0HyoB8FIpP/ WwPiF21iakMOjPcIIQkGJIiIg/9z4+FqwDb1sCfZQmaOMQJEhouMz9b9GzlTugOSpn4kkcoBRzDz NtODiG5kAeY8d+g/lkj1F3ia6JsyWHRTWw7ZV7Aagx+KnWeDCSjwLLlnaAl2sKCRfcQQkcpEAxnn no2FJUNMJows9mPJbGApggtuOTeOSWfASDQzKgGNg6MhNpn17UhXPxX+Hq341eyQ7r9FK9tQN3sD L3vToLhgwS4HmyHd9Dh4NAYyxuC06s/IyQUaDzx2hG7IvgsuPGgoisZm8ajKDeewyAloBptKRUJm AzZraqEhKg6NZ0BUFhgHLBZmco8eQ96jM2jcW7j/QDFu5b5yBA7kHujn7yx0D6TyADIje/4ZOtEw xGIz4EF1eJVsWEBdRrFZcL9eDfVIoFL0o4NIZrBgABj4b4gkj3CDo3kCwvnCoFeE76j88BqfExHa IJhDDDx3Hz0TTUcYEjeAIoBSFIQHkVsmASaTddSnxkPm/uA2mshgsgTvomcIrqbqaQDqAC7nQAlM 7psI9H2nx/EbBRREmJPhh6UhkGMFRPo7+vw7ZDOLwuOC3aI8TAxpAofSHoIp32JZHuEGpx4CyrCI EDkQWQsWcO7fYFA/GOFAgHpfBjhCSH/fAAfkLwUiwQP5cyBXoiE0jgsjj7pBBJiKjoJBu1zu5T+b xX2miUZoP/BdIAMkJo+vAYjgFYgF88kOc4AUYBmA68Cg0iGkWy00ExlciCcryOl+/Ad94zOwaRwN tESlsdAciMjintlHBEzS1wuxD14eTH14AduehMCNIzJgLIvGSECYgYmQhoZWj2XTWOa6vD8DX2ay APzA7we0p7NZWv33QKpBARc7QRnMYABQ+p4wEEVKA2zLay+ExkZjISoCNfNr4+Fo4+7ngKZRsTA6 AVTlnkbIpTX82SggYLFgoLyRlO4B2HyFTtxzEhFew6GR3C0WU6A0gCFEZXH5Go0lQFQ8oCcUzU0h IXAPQST9LDkwwZNp0SQXPyMGQ3BAhT3xG9FGHlcPzqEayO+Dd5B8oVe+YJs+WvEIyTsVkvVdFgFz HFCrgHyD5YLJO1HzZxHJm+6L8fRLCMDAJgL31IEa9z0iJRCZBiSCH8PdHpfwQ0SCQKMAFyBvWBqZ DNBG8AO8xEsSY36uk782G8UhSyJRZJj5s+iRaObk4sl0dKXBLqF99HDm7rj7HkkGZ1D+IN8wE8AL FDSdiEPP+FJoNBAKATFlCKYNNNcKYAxsAZlcuHk7iPDxaccTd55IuuB+Fr3YzsQEAtMjOMHRWxAQ d7H/L9OKN9o/i172dC+WiZGLiWOwpyD3HTFWf4JW+kIpIb1pIVj3qRq+se1i79B3gG0fMYhAS+OA AUDD/zTFg2XZO5mRbH39TIwFyRQQi/BL1DMddKSFJurAOtxH/UqYwztrlwVYhgn46qepGRdf2AmP 4bBiXcjx/TtmiTQG8Vub5v6R8KCBscAzBfpnoD7xofO77Z/y+0q4JiyayqZEIV4YzOLAwCjT1tdD z0DaIRDxBJjJ0uAaJhgzXiGZxkHKtNB64IU+RU5FXBTyZx15Ucl8m5oNGI7NRMwDYJ2DC6RPGM9b khz8jg0THQX8WzyDxkZMPYhJYnKNHz4qMLABE3i2D7cdro030PBBoGPwZZ6PIt+U+bzZnzXuXhjD qCAf2zh9fWPX/gwL7gz/vWGPoRizjOhxHFo0LepHNQDfgOC7jTTu4u7PQi/ENjrENobuGeIYR+tD z5/I+v7k+Y+kmoW0/jWDlMd+cDyMBQD+tOmPAnnE0G08TOJiHQVyzD/g7aeh3OeT8s91++UanRdk +75PP6DOjwVd3P1tKCFkAz037wTTv/b5f1m0hTi0oYOB7fKOnvjiCUCCiSYTSYg6FGxR51fmAfLt xrjn1cNAccMMxFhGc4gsAhcIRy9ftIONnTOaBCcgC1C8Jrj/+fFa7ucWnsYlk8GwcS/tgHZk9d14 QPH8K1413qn0FBpQxkwaHYCEQIG43ANDRv2REv4ZFmieYxpHRCJ/fDrho3RANaYgZvgL4kxsN5oe iUC2izKluQiivwDz70nw4FS5gcw0+DCMzzUyBEroCQMiQdw5uJ+HIGTK5TlE/FH+WYa7npE/2d7Q zSvWx01PkHeAjPH/z/4YfJjd1yYiviEBUP8qUzD5rvKXqpwAISEYJEgDgARdMrV4MQ2eFQ8uMDro /nCcoNp3InADWv9p9I0PcnUM8fPz8ozRF3hGQGx+AnWZaERD6vAEVBuNGc76PSYwBHYleeDsg7zJ /fod8PkPK3gWg/09/f4NLc6VOl60j28QRaORT3Uk9GW/8XU88uxrChYJqnHDiYhiHaA+vQfrTQ+Y RaDheNe2iFnJBNTp06DIWhjyh0gB/7vDVDzQzmg0V6WiuctzfIVLhpFDhtG+MIUGTGHkgklMhAfq 3V+gG8mMACfPeOfEKG8/wR4HHkb/vxjRX3DygBgRl+QMmA5cMcTB50+3UTxqIsMGgSmHN1w4ImiF OQTS/HN5f5AVz9e4yAtDzfs/bNt8hav/0hThUX4GE4bREU4wS+OL13AwnYi8CfHv2cz+WX7A+t4X 7yHuWxSirxEPkO+lEyl03hIez8aF+tcUtRDftq8LDvDpWMBJBVV44vwLrAcDR1JALNMWwjn7E/vn 0e+e2ccbGUMPLFPfx9fQPhj32ar44FN1vuoE9K+psvopFwUje36Q5bx/OHkZG5piKAwHunGCc/wQ 2AZ/A59+4wCOR6xHIO08V5XJc+MRNx9CBhZZAsHyJ/I+xP/WDojvoGuD8XAPSbSF9d1ggdvqzD3Z /u+vmP0Avtz1MGJ0/wI4IoK8k/T/KSa2zCjHWIZdtEu0ieDgCRc+zb6Hy+BE9B8cu4GDgnhJbBZN W6BNBk6ljkBU4XgIkWUthABIsIYX8EFWsfnxV48ER+SGF5MDegZoDDazT/vzyMULZLKQNUKu0P7G W03jvcm7nqPThzbwfoATw+i3QwXgIqt5XObifkDsH1I+ypHATnS1MXEL9mP+88Du35GYAfbskEhB ABwQxDF2MUpgu1H7Mfj2UW4/Qwp4Sv+fYkIO9sHYBCVSYggwoT+2zPgLffztINvfGI3BK8hcfAYE mHn4RTNoFDSHQARmC5EF2JAAM5CFUiaNN5DINdSHyz8eTWc7WI/hQqAbBxj1b9pLoETRyN813L7t 1/4FEQThEUQJ8LN7mNz+eHYKt3xoGBWihbrZhkJmbn5ERv/sxJXqH5igBqc4GA1GdvBhcQJkXag4 blyjb1Lqw5AbKMfyQeDpuoAB1o4bkZdEwwtE83lEhzcag+3dn+WN2uBCOb7sqFgWO1YQ4XCI+wuB +B69DP8xvaiI3zU8qeUYZWQcyIrVj3PnCGZRnkf3/yWXwT9nLwoXgOFILmoApIcN9nQ0ZNn9zeNf /5pg+v+cYH00+Qck+0kEM4o3YruYmAUS7EJtBm05/ebuxb8mGOafE6wvueLf5zEv0FFfXtHXXWlb O4jk5+lt4KwX0L+rAsIhvXjFwQwGEdeft/Z159qHDTMSBnjXnznbgTysvre28DfcbASmfg9YkKnA JSwy3yOQ/zjJQLkLFQmeftWZ5dPQFiZAcUQaAyI78rxZHUFk9LPqfZnDfXFTwXHJnkRbmzgDb+No b4EXSOWZtDye+4y0DGIc90Crrxm3A/aafma28hZmIdzftgr4AZi/jR+vuoCl/j/sFm9ExgTTvJ30 QmNJgqglcHPsuImFv5TpvhZZ5/mOg/2wwSHML+sgEg8woAjWi/qSJIFJToVhXF8yocvAoRJkQ4I3 aJzP20RSMNGeAe7uaEHOTV8rfjDw8shMGi+w6etg4++A9vO38Xex+7eZ3MbAwInoa4sLYEdjvu4N k4Dys1Dl4TMMeFHf3sTIzwRiBTjpC7KiHZCYyXDTfXwG7fPz+pQggbfExR9y/gT0beH/RWwQYhDI MfKFYHsTjvfXXdvvssG3mvWM907wZ5gEEoKx3oO9sH+kRP0/8//5szg/54EayyYykExSZEPAcFar OMdQ0wCIBOMoTMHRG57IHpnhxci8SBKwtfqyyj9fHWIAOiNLmUhSLxOJcHEDV9yIOVLd0yEITePS gsbQAo+xMJ3Vn4DOdRsZbCT/bOA6MLKSzhs1JKWAALrAEwROtkA1IxE0DvfsQRq/Os9go0UxYUYc zI9v8SNgWJh7vAjfOed6X0w0HqYikPXbeoNT5nlBWF5eFYXNZPETq2DeIRE6wLZFVmH4aQkDXRTu R5iQtHEAGb8yGFokST9hcJyfP3sQ+2EAFB3Y0qC5g384hTpEoZvzgn9oj//j7kmbFNWS/StGvxcv 3sR02yIocufOi3Dfl1Kr1LoxMYGAiCJQLC7169/Z2BQVLNuqnq4PrUgeDpl58uR+eI2XUXAgcEea 8NFnypTFdLLfV7WC0c5Wb9hazg07oNoZS6psBswhWBaDGSeeWAlXyQSXQPjggZDA8ZmTZLgEORcT jLhUkzokP0H05Ablwyq/f55Pn0suEv8tSw/aRHH87sSHFl3NFfCiiSmkPpMsL18+XEH3g/ideXvK L/m8NuEW+i/c7Eahze7T97pfGjIOxwhjBRc/kBMXB3nX55yXi4Jh9BlBzPChMPcNpxLcO9DNH5We wM1QVvW5676QLGSLxgtUf53kvQclgxja+LlFm4MV9T65Q1g4Rq5rIGfsKnke43kyOq+Dw3Q/EGb0 4dM3jr/+SsGTohH5YTrREi/MooVVI3SdXPtniqzB1F94Eyl6/fT+he77F/7PT8QJBK3u6Kp6YL4N 0+o2hp3M/nnxIgfaGUp88oPq7i2Hrqah6aQJG1TfFZITCibu+XMsycuPIHo0Sq9BwsLV8FEh6U9S JErGXTgaEn7WH6nBsNkbf081e4Nn8F+n2au6n8ud/qiK62ktPeVXg340EU7VBVT0mEKdpvumKMH8 tqom9hc1RZXczx1oS6VIIRb40LTGkoly5cAPMJFuzMMx8EU8siQDnSgFWFy3IEQFTCIFE+Z4kQw2 ksDLpFIT3gbmSupIcjZQ0Q/EsqpYdlDaYPzjSG0K806K2G0bHRL2D2LsbGCaGn7NsmOqON0BvJOL E8H9dQSG4tWBbmJrZQRQIuGPz5oQHOYFCBK9Im0VQTo1g8hUsBnURHTuYzp7BP7128Fm1q2XrN2s tB95uZwujW9LGQgfdXWyI+AqJsvNGsBLAhJuTp4aKB4PVz3j+uvvaDOGHIikWmAMZCGjUcjgmCEA ky9R6omOIPGSgElm5GL0CDvw/O/IFPKSXby9SgOaBilinDuLBc5SXjjqBQ9YvJiSxeV7leJyOGNn /tFB7iq7bX+OSQ2UlQk7x+toQTukBgIiDN4D0QVuUDRUQw5TX0OIC5adEWJBgYaK0nGFOHQ1Q3zj xvR4waGgF972JEswFXQ0Hvouz9MlRQZyROHxBfANqFPwa2CWaffejmLbqhS4HV84B3G6EofVYgVz 3bA5rn40kirSanbObbhxxjujxBOPd11S49DysBQZMKYFORfyPkI8kAnY2wPEob85QLIKS+SSQkiC vy4UlM+lgcfy6IK7ynjE2TjNH+9MGoT5oS9+oGuC2wH0o8zf2prPVqO6fmrn5iG8Qen/y5kfeszg 61gSNB+hN8RPdUVq/RGf60DYQs0eMzR09f3hsuOzpuyR5FDRVkdGxIOVl+Z//y+V+ZvHuxNFE/Wd dfl++m+us+wYvMsL10D9SeNaCzfrMihX3XcNKhBItcD9OKDBjhGAd+9wVL6n26RO0315wA8OMoFQ iMlCjkdXmsyBOE7hu8DQ7usj3GPHiZVOlRzYMDmFDC4keqyUi1Rww0cZbaxm363X9aKoD7zI/Ufa A8TILCO7BVxkKZEIO+gqtiydOE2JhahYLqY/Wpo92U3ed3rDFP0mt1gH+wWJgDg05G/lx+/Fu81W PrxDOu9Preazs6ptZb8tJuTJ2woZruXDeXkRQVU+zNTEyrclHwOImeeHKy2W4r3waKgKtcJGkOS8 JxWB6nzpdcMHLN0oD22gnp+y5/GGfyRGoHYEe8V6LmRSPwkQhFY71MaghRQqI/CrBFNNG+kNpDgT hRnc/ulIdn0Ql4JjjSZC4Wk+WXo5h9dWxI28c5l1UB8lGPDAqCZr4xK+7+v/yAiz2kutt5cLU6+D HDK/vlrUDpXVQ3QRPRupnm6BSEgF9RtCIRMcq/xYn4ebOuzWgy0KCZuRJNYBrWFAFOlC5soV70dM lFcbL2/7+XA6bu7ffYeqbj028SQGytGkrJO1jrsfQd0PRkaRyx4syUC6NPI3IAUSRpNwGdcvxaiT 648FuiOItuVVmUOfwedk8iBvBepDgqwjyIgwSWIO221g5gWr2lJg1o6nmAvIyYO5GHs/SMj0F2Mu X6E3LX4xNQo9rymi62b5auwI54V8OhrWXKW9fWz4f/ej9AEbJ8iJbqS9agk86pzqh91ICQpR/y2v RYq9093bPQsHR/SBmaWbbk7U2A90w2GR9w9sbsBkwvLGtaLKoxek/X1+gG/UUBz6bUyzu54VHbS7 KaC947qr2nLy/rwp+D3IEP4+FDesoJ4YyJPtUsEjkcErJnK64nIMqC14ZJQ0AcY00KpzdwGXcF84 ok3VX9rattKRlpOq5+0G29XnyDS0UbqOaCjXoIMAWGWwEYYOuxtGizMkyn61DMvq29fioM9MVM3z WyLH8Oeg6n9U+x/Qm056uPzfZ69y47U0ri+XzYloStGq7KMyIn9pdEiutqtcbjrPqeWSH8x0g8Of 0W+m6RY5I2UJqABAjcch4CUMa6ylA95FSNgOWkW+C8m1dohfhWTh4qAQ2qWIKzvSxIbNhDX4gHQK FlIBDQ21D/7u3Qoh0ZgEANzqhrFQQz08Ng/Tfjf6Fh/S5e+1fszddyihVgZE//M844F3lk1o7YgH gFASE8fHdfLYWLSA3RjaSL3AVPw69tRP4pw+G5GPH4a/EPby2j7gJtbgUxtgz+/8AG7i/lEUYXjK bflQhj1iUimU1pvyO0A8KMxfLutv9qqntpn3e3SGueI5OKr+dleAZcMN1011CnDQR4sH64O32ivF vRolT/gTyvwCx0io8Z6feUL6mROvqhvkdVPm3QXrN7g5XbFwrbqqKWr06yul7tq3PbetNzD0rcCl CweB6WU8vuHD9fMvDaU5HK9svuDlhQAev630OQa7wFcgogNpD26oCX3xnGqiy0wffb0nvjU09z1j l8159jdevL/fgriekz2vVHalZaGfe/P6vfxbe3BStu9RQGnIqA2ltIv10g9Skp4m2wVf0mbTzsw7 fKyrizEtlvO8cSb/Fg7trmliMqKtHS5o6ATlkUYANYQ//CgoirgucHsU3pJ+WLBHDmqrSUAsd0MG tzeRhVMG9wVBHC0S6AubQep6re4dU+BKb83H52dFF2kFZfGxKG+HBfmpjka8DCd1VZ+9AoYjbiC+ PRt0XdxF75I3OQNe206L0VfNob1fhPeSxJ6AL8uj1b7ZYukXRZK3XpPxfxvOJ/Fo0WU1y9UHTjnT 51/AgogVCVvagY7CZxkc8y3UYcUoowCGAIG5gBr/fL6Ta8WM2lWmKvFco/QYBjw3E0tY1uVpY1in it4Rty84lhVnLuHF+GUXg53VsiWp9ZQprnIBhWP/Sauh6qqPFm4wh5n6rPJ1lMXgaWvQIg9oogQQ Z0iBT0AFRylmrh2L0xZwPZcpGSpPnGNe2gWs/FKhnnvwgOB2H1iFeGyw0taScUHlfdAqOlDLek6u iltxXLxhd3g8Gy5bouDk19nXzNoL8AKj/JNEsijigBlmJ7/g6svov8MS31Zls9gozAuPkk3n5pLb b6n3AyXVhCr3n6oyKHuuvnfYPo0i7W4MWOLNT7LL4KOt25nyJtO0Pd3P5clyNRZWQ98vZRw+V7UP d3T+Qku0tihr235v36qM8y63h53eX0wE82va6DZ32Vq+7iXXPb6zwantZkK1d4H6tJ31oaP0O+QV j++feRAfULzwxo2czWi6l+7Y2oDZWi+6xs3M+Rv9nyp1D90Zla3q3c1q9+RnO0BD5rNYEj47pBpE BVk+m+PE7KJUdtrjXbbV+O1Y4/agY5wTat27js6o/eDpthcDneHYLaaGo4nS4u5H214j1vW5Os+m OJqVBKBX9mruZNOoQXz6UtfxJKV74TmHKyLONB8nkU7lXfI7j3s9x13z7FwQkYxJziI7U0CXulo9 7J4GEeus4Evsey49Wj/oBUUxuyPmWb9D2O/6gRDBEDBp625YkiPqP9C7Bvqn+uEQD+uxuktcW8un 6zjGOvxz2m2mpb1NqA/xh74B8xtgcTM3JVXVPXr8KSo8zGP2BYV7xT9zsJfhGLss1kwLttVc6jve ti1FRk39YEaYoqpAuusmuvCu6xvwIeOFZklrLjzot5QMtiRRtwnAf4k0/MPD6oaFGwXiRwAGQGoM uajxhmBB6H9+A2PDbDl3jAz6B/GtG5KGfhZ1ATUDIYj/FjhBy4VaoH/fUqoOVhsc9Qd4ykJH2UE8 0KtgJeTiO/f9B/U98z2X+e79eZMlKIDfvHkFkIGekCG3B1mPwFi4Shl8E3hty1s7RbSXaBD4rt6I 8Avg62wOQxlYviI4uFX6D8NICD0CEsrD3h4PAoH8R+FHLyVFXtr4cfAZaA3BZQ0vBZYmgJMl2woe 3A440QLzCV3z0jLAOghyO2GC86wm76yS2dvnJtVRLsxqmbOsVvDigKSGWIDH/LierocwHHVvhsud Z7jM3RmOyjDZNJ37RLbLM7l0LleIx3xBjQbJFnw9QETYnzo0F0UG3/NwmtHnvJxwFpjzDzqfTWfp QjTl3ZnTbICejdEKIFCmpKHcQ4NahL/D42fiUh2iP5NmWRczRyQNU56X+BMyg22R9D50F5A7o/B0 MHsRbdNH3TmaZ2iMBI8rXeyKJr/jLUExBRU/MUx0l9+y3DfU3NFEB8b4jwsR/ud96Bxqmh5J5wJD pwtQiFykM/ziEZox2PliPmxuV+vqnQj9A1GayV6nNFvIQCnye1A6/zBKh7tpnBACUpqiCul8JneZ 0tlcLkDpXofe8rtl54Vm2veiNJVNs1yGjbGmA9L8q1OaySSlNDAwJEJo+HGMUBAgqFWw7HVmJMtN 6E6NXLrZDJUucJfpyQTJudsN3tU6VaSfik/3ICd8MLBCcIAZVvSiY9NhS5I0pjVdSFMMnY9N67jU DZBO02FpSzRV8idUuc9iCx+DGb19Fq5snVDkeoQpHVRgYLZlqvFs3W2dUdRvIk3PCM/sw4Rn2O8e SU9k0V0UnNngSquL3LJq5XW+KDh3IigNVnuWzv3WNIWq3INoWnptV+h+pTDZTjdnNsQcm0lzWfYK Xamgjms+61N92hiNWbF5J7oy+XQ+V/i96ZpnH0bXcP/CaJU2S6VpeG79JbrmgxrtMMcvuvPZarKX 9/eTv1yaztK/CV3j6jmPE8pHzuYoSnNUmsnTTAIb1anxnR23eKJ6VEW4F6WBpUxxuRi77SM1Wtcz cSulMwmX9J8/TxwUV51jQT5B1wmfRJ8U5ru5S9EOMUt605wN9D4F+IHohx4D1PtM6XViW+3R+ytA viZK+/kx4mPywrFfFA3GH7ul8ASEJa/JEu/Nn4OkCF0skovRDHBmHWM+y1GZIHqK2GOn27yKamX5 YzLjKWFk86d+AvzD/PSHI37wnzAP+6oAOeHTDN5eplT+oDsAeQNdPcCLR4VQFuwDYeiKZqfQR+Rz 49JZaDqjC0igA5uRBgrzUXdKSRMxJPgQhANfIRTLcFFQGCQ4LNauMPDZm93Rzt7850/3nUNXF6qO CvRQfbupwzXHUgExt5g74rjcr660mnNmPwPm8rcUaqMKza2/R7C3K+uoQoDVD7rebNUKgEhN4wJ7 x/bC4se7J/VBhOevyjw8vVgi7gyHR7Et/JI79a0YumXjSYa3oJ8B2XJN5PQpZj55Km0BeVv3Ejmv s+08q1Atbll2fJFD3VPknNlpPip1okztuCIne1nkhPXzm0RO9m4ih2K4gLhx7YLL4gbBuKKGYpET 9R4Coak+F+hKblArZM755lkKKLgMc4tQKBkjvjFd8IcGPC7vXkIBdfNxDCQVqFw2nWGv2jM3S4YT h09ILOTpD4oFcvlYQzmJ3nkX/Nh0KPKMr+KANawPU8kF7/u5JItnS0qhQi+cAYFje0cXP5wZsjk6 kG6hq+KFPtHuK56Pvv+8+X29hvmhFz6++vXeOJw24033zFsWl/ZaMLgiw+69pCt5fof3OkZU7GbX HhxpymZ5DUHc9sqKJqiO6NdHBNq5wxZvpEz6Qj6btJcEB2XQhIyFeBgr5O1XbVLblgqil/AiS5qh 6vc4WuEYbbe8QkUyYF6JJhz8ZPde5yU3Zqr8Vuu4k46eraAqiBinr3mOsI5hABjzmJdipXWRtLSz iV3y+3jxtNn139iKl9x76XTpu7FovGUYR/Skkub+RGX/RCRlNA5Usz4u7A9LeA5CvPyfAuWl/3jv /sgUoLtnZDw0BYhmc+kM8px9OCODvTEjI5Om2ezlhIzIlAzo8HIpTiyL8HOOdJPo7eGSXRCBSo9+ +WW1LUkFbrAuRoX745HWdQBBtRFFGSEiPhKsQ+F9KhdlSlz2z/68A2LD4vVWxG43u4xl1Q6vw0ZU gCiequwhNkvc1GmOzbNMGLlzWhAW2cTIxewasp8JPpPgOMKHF+3FO+/HO2NWh/fF28zonmBUKnu+ 1NLt7WPN6ATG8ZEFTIzlzHljeH66/ANWcph94xvD8c3haIP4B1XIpSkm6IMj3HqS239kFnuQxDSm cicw0YbxWT/NOZMsKqXy1Cw7Y5hdyte/piwZdJc+NO2l0S/n/eOtAZt+fV3pKM/8qhLuOBLX1ura 1Kp1ve6PDd20pFKfucPrHuEy+LZORaAyaley2BdrmFhBj1fu8UsURmddZPpzlmWLreHqhoxxJPFO M3cXLPz7YqniHWXuFmlBGfudylzJ372mLQqJtUWK5T5RU6QKj1QT76PNOO2XfklwKrM3dRTFkUlI GwwXInHP3UOhyeU+rszciOIjiXczjgeC3NrrxQy7rOzvhOMsQzTyfD564STBMUXTZ5bDAxTGn79y E78u+W/wUlYkQ9UPm2M35cnlr+envN0zW9Vs8B6poaRiqi0VI4UA/EN8zt7w2+DhGreE78dsCD2m +OewAmFd0iD+BDutJdkw9GOd7rqOprw5EpIcan5yMOS34qo/QSoWlFlHZWjoXf6Ex+HBn/F7wG8K PIsG46uA9nkACPkSaBOuY4hg4fjuLIXvPtY/XT3Bxe8JXBbDhS0Y92E/r4GFN7TrYOSdjtTGo0me f9yRcHfhfp4FpDgCGNbpVH4uqb6mdjwONHDwOFdfJOx4DRPpwnzCTkkynQhf47WZnXw/mSiLH3gi 6I5odQIIs76vCJFrQ2QIT4ZLgq9xJEUT1Ibzx66jliFw4Urb5LTNEJSFC0ddGoXLQU9GP0EjYZQK D2QFuGTF4XbCJLNX3urkTasoF9k4zO7ChdtPHC/K83DVV2dXaBUXM+V5kQSuLD5xtVWjytR7bBI4 Iy9bDt3Nz+uZZRK4Qane1aTVRKko0yR4ofK1eeOlYTDmsp8Ebra11ZX9dBDt9SIJ3MARZIHP7qy2 0UkCpyyr3ZfZa2YzNptJ8OKMK7vGVsm/93d2EriXatGgmlM1u1QrSea5m9Tz5UFpzg93id7vUCzX Z2t73WmZfJJ5qmZNb4nZUr7CdpLAMaK1eeMbb4vJcJdknuHq+/jPM0vlfaG5tVlu8ZQEblp1zOlm MNmWhWR0f69MbVVSHF3MJoHLrWSpwL+Xq8aOSYKXd0XNzp6ennfyLJFc6lcdWmnt5YysxNq8PT5j ynLpzTEzbEtIJF96meaW3r9RhY6VBG7S4E12uWHW+/U2kfwUNv1NZvjaGVkROtR5uDzQ9Taz3Ftt M+olwUvFKWZf5IpWa8CTBBPIs1bPKk7EvGR0y4nm2cnq70ypLO35RHzdHcz42rMoyi/yIMk8jXlO a6idjtlqzRPJeW6TG7DlibC1D0nmScuN4asuLFhhmGy9D4YMZw5fGu/MJMk8w7144j9vXK/lzTlv N8z2WxK4cFvA+HBZZrpVGrXyy3OznQRutGALRfVl352tE9GvRTuFbmVd4oFWcZMCRzTIqrjkBlyG V9pqYJyzj3f1vnAXB6L3RTdniGGAFPCg4eNKjpXZ81pwOM3y+B0uqMGj1+5B22QXkzUnRUz0AiQ3 l8Vpe95lGT1KTboAycqqvlg3RznTpJJBDowh1RsdnimJjdoaLkC+c/Vmz6q1dKn5mgzSaSiHpdWd HmqDKPF5AbJi9G0212Rr0x6f8D0Fu1Ln1qXhiM0ng2wOpbpM7ey3prpPBhlOiU4COSstZqWV0ZvV thGW1CXIDd9dGcUuu32rRc72ZBFfWALhat0ES+D/2bvSJlWRrN2f51cQ/eGNnuVWCcjW09Md7vuu 5dLRMYGCSomCLG6//iUBlURWxbpV010zcbsKM/FkniXznDx5Hr0mpVZLMTelpYqHIQnsmiL6Yj5d a207tVTMrodhtTju9VrNd8xTruKMHS70cWM2AqgQlUGpeSifpu0e9jAVUEp3FA4Q9g6znTu+k4fB dDTIRpxFu+eBENGR1C6lJttVvPnHi6vBVs2yXLkfU61ZaVLLTlim1hOUeD3JNI2ulYJMHssxlTPD TfZdfbrV9G1UEbVnCMtTRI9itUEJi2ngM2ijPj5leazGx1TrrDotbpXcvDKnjvGofc/m2FWv2cbL qUG87yxOCfJN22K7+j7qd9o9p8WlfqpmqNqo57VWB/Qc8IPhnqwQR722iTdOrjihB+yK59ZqLd53 wpfl4vTcDNjUbNQsprXcKV7Pco5PKZWlTA6ITryexIHQKxTztsxNMo+aF/hKcAzzItcn7ePo0J6N 8ZiiIW/6gyqutN/Rk9eWPRb5cPWBGOTDYCqxpAyCEYrTE8YDiNMThtWI0xMu/h6nJ1yXO05PuJp1 HNGA8dlirR8Q+FkcauHazLFsOQQOFqcnjLsVh1q4bu9jypNuzFSs003nR5ynjfbvCBVMiqF1MMR6 rE3tuFHKqvtx9tCLyl+7p8qQzXxm2R1T45hyDKOTx+kJo3DHWk84XMSmzJrpp6LaJbtndacM1HJh 1akRXh5/QM++iJ3UyWqekdoxNaA93A9Pe6mscJ5RsKA98qlTrQz09+Ju4RXHDJhbGKc7Tk8YRzgO tb2uOCvS6xm/IGPO7UxXe8MZ3ZkOlzHtL4zlG0XTb6MzoeGas0bDlZTdh4thB50p+4jYddMOfg38 Fuuv8wn8LzOJ4xf8xlm12vnMREDcLHQzFa3NqiBf1KZFlYxVnAdtzzW488IaWeauGEwZFbn+ZVYx Nv9xNvkP0uT3jlbIT8jv5kkr6FzZaAYdCvIH8nePHcCrLx3X1/3+h/ENLy8vyPXbw4kELVgb+hZ8 bP96Q/vvJg6V0cAGzwXfde7nsXvwpzciXaHEmf8UDZYVQDHpS6vKxvlisxECJsXCGbJQkdybpLPk QKJgic+NxLiynNRf/2Y++fVvP8T4mbIcSERUX1+WAsfxm1dOmr2uwZG79S/231z+5bAW4rzT/ZNK pTAylQL/RSni/F/0BzNfDKXSJEX8gOJUyvg/QRm/G8+oFPoDknrkS6P+6CBpHUF+mE6D28ksxx3V b0tBFD+CrI/6+eW3w1pEdryimrlF6EsKJOMbsmZolmHf+sVv9I+/GZJlCBaiCWvemK21DGqtYqlv KeobSvZT9M84+TMonAPymRxvAjdX1uJG/XnQqBv7ck2Tf359VWdLfs2+SOvFi6QsXgHWLciZekVf QPoSuHQh8JwjT8vMmVryLGfV/Tf/hPKhLIWxNEGWFIAPcM6kQnRjaKYUi4Y1swk4f/iy4nhAwlmL 7L43b3uzBvQr+kK+oBTc+vzZTaeCPYO/DjYC0FtjHmm466WFqdueozLfuOaNCTfz7lyza0zXUuHn Bo8adUNBRWv67QvgjbppSawXX2bvFzgdDU7qc2XbQTl+l7eek3E8svH8Uu7P+YFrO5IYet/AbNC7 JPO5aXFRapF2zvdzpQTeQeb5TR4pia/302dDih+ToFCfjLjNLHXoqrmSnjShVjqimgSdl1clS6Eh gbp4m/15z0RWKqgqFzmpRCyxpMnstpBEmV7NVTIyk5HFQU9+lnQiP5X4zd8TIfe46rbUt1Nm/LY4 JU2usdNaJ0IknaWVU6NeXYw6ic8pZ173T0SRLq8KodAzPduTODhH8nEK4fd5kHn2xiIWyPC5U+ca i1fCt51of81/DAC4iT1Mx2v9xxhplHYj8MJ+VImyvB1oRA6C7pH/wa7WPGzT9fIo51254fUReq+u T5I0t/gMRfBcVmRK9eRptub49z+SpDhXZcuntLJ476JS8hTbvnqyJLdb6Do/H3BijyeSJ7ktzABw T5IEi+tlM5sq9DIzcCqSNMFZSRJ5NlExbuYWS7rYqeMHInDpeUgokiS4diImVYrvtA7yewjBT8A/ 8xzlrG+4knw8E39FPQWX1sxITO+4nkr2laOQSShlcxO6ozTz/e0gwhoQA7kLussMb/DP9XXWTvJ7 vKYikoIoZ2BLgKxlNDljcIGYDvhlzQdUXLK/Dl4GLoMVuvRUGurHHXZoRRLRGKPpaUcxQOqCCeuu xeawO+O7pVaYKMYmrAJiYaGEwYvQdY/+JnSk2pitr6re4vHIjAHAulDCYMN9VV6arS87O7ywHg6T JiwH4gkHLZw2eB280IaiGYXs9GYTpkUnTRswGm1WW94raeMDKe3E2vsbdWQfoQ123uw9uFlow1lo rZerGAaJ+XdfYTkBUMmKFgRhrmd9UNnsTLR4+6n1sGfYO55DwF1y67l6fo85YsMY/qTyPJLZt1aG c2c2WbObIyIZ1kFRzb/vnZ4DWW28DWv9VY+PtrOJJVaGfe7NLAsPWW3DjHKQ4X5oDMNdY9jcVwh1 3mwkPYbspTjCQ/buraBp/eZoR1dBumrS07y2s4vvo603kyZF9vCuZ9PeFT4eoK1wYNdyhGlje6fC u8TMqvxk6PQUxr0KyR32KjF+S3yZ2BjKI9xv9JRSq9wQcy15pQZGnsJog8Ms1yXMxvoMIQ7e012I W/PjVGPcljqlVC7pibMj5veKm76sC0wfx0rCpJY0aUV2LYjHGHss8zBOmFnbLESTkP1SmNnw4daz KS9Km4VqI8IKqoUtq4FRA8N8QTcwekoqKJlpmH3juXk8CZovdF5VDePOOrChrTebdLAb7kKUeqbK /BwQYHQySRFsWTVfcfdusN7qMFO8oVao+SHSzLf8ALm9w6X8VBdErgJKa8VyUG5Bt6+VdZjili5N C9TqWAINYbhs5D7Q70SGmWONhS2pYW7r3cwhX2iog+JnGWaP3XkP76pbRgtblIXNXFLW1svBaRdn OKpAmy5FZI19EAIeLtg7Z4hsabnlcIhtd+j6CTMUH5k4tqcLbHqysUzXqvmhvqzpt1sO7X3GKFV7 L3bn89MiP2ISXwZ0UXzEZ3g/pavTN/3YHU2jRXZiOoE9s6TxfbSx6dISzZ/EcqMed9sBOXuP0LCc N/PlbG17SucT35ZdIoshpMHhwmtgQahMsjO2XhjmS4nvGNW6sFmFUgbHBa9HvmVcHQntbqmd9a5n /bi9zngHBh11wHnTq/ztLhM8Hsk5PUu36/Rom5gJvo7ZGnSWX7I7QVJYsWiZqBeZVYwBnvM6nG3b 50/OGQSG2sum2tvJYffK9247RnllN8LXJ8o1CkXYsRq0ttprQyTCraYXxn7k8tNg5YRXn/L+gI+z 1IBWKe/QAbz6mEebdgj5ReMNt9CYyLbHHIHGfffnkQa5M0TX58jKRe09491lKiMdX2rvOhGmwI4a UuEjTnxt7mnSbPXI2rwviVwDk1TqvRrtgC4GcRlRYO/2uenJOt/iC830eFmJxILnqBQ0SDgDxc4c MOZCEBPWt0x3I8mZxpERee8YUkyJire+zBTjJTw3TcrlmaSbjdom01InLZARvzf88J5V73N2IfyT uEKK5fH5jP2yunZ5dcZawBnG34LCI6+6qryqS1bhX80EXYQzns40STmafr8uGy4RCAEAaA3N+AAU tbXRmlSzBctx5sdrwZiRzcJxJKQGRAECZh2rN/XOu9R8J/fLD5z1D1NGOB3I9gZAiTvWdVj9uDoy 8inFcLMxIY3LwbYowaFkgSC6ToX9h6IpOu+GgdlLusghU9NzR9assEEGlRekKe3PoC922Mv6IqTY AE1kRdJMugKk7hpmOtDqlt2fevtGyDrpBlU5w6cEDC7ku/PvJJEpSqeFVqtdIVfCSXKArcCMfQYT ezyrzJYJi2N6sT705up+RKjeKENPnHWp0+c1vcTllvrg3lmH6I8/6/bU3pFOEJ5iOi/3sp0SV5wy IYfod1Hb4DU26Z3Cpsh1lFZLWXa2Hy0Lb2Kme+KKM23c29wrC9CMP1Nu5dYyO+mu+LrMOWgNZbiT VmiuryWHQtNn4lWiv9ShRxRelUTdGg9DOvZ856r0XuWcb0rOu6pS3lSnhSujO+u3Q6XYKTrtWT8e B//zgSeGa7U7CuVfg/6VzBTP6xN9cMx4YYe4Srw7MJBu67L7VMyH6tP71d2Hy+o7y/DHrYUfghE9 uxSlR93F5+E6+FDVe6g6v6N6PVyvniBw5yXn2/LdEGC3hWOOBhcFR7Hbaup+SNQOqG/UN3IdymIf HHEXq43xpzE3APbj3PLA4fZiYBDfrlXi+4tFfkafDtNstwJEF6rfbnfHUnRwHXq/Ou9QVGojabyD qxgDl3qHIUMZF8x7yrsc/zVn4A1V9+ibLJ/IjQ9mKQFw2h+cejCGvvmHF8Q2POMW4qexpBqO195o au1xFZ5HpOm74VzZp6vgYBfkYG54nuM56yLnP8yNr12x7f+2uqT924yhWL9aO2JHQ+txn1WMufVp speUFXDY7JeZ11adTV+cMsEtV9JxTrGtyvoWHv6MBcAwweitfkiqr4GqToSoOkYTj6o6nHCZnKp/ wxn6uyi7iYwSSdnfu83tcJDG3w9ywVfZQd3sh5XdzVicYIIZS2GP8hUOqCbIV/r7sDW6DWfRCZ4X 5exIepN92ZrGn8DWNBrCVpIMtOMR2ApHGRNkK8Z89rV5t5hPF0f5TUWBinvzlXmcrR4YKl4IKn6A exDcXgCOnhuZ7maPD6DIs8ZT8HsEU+CJIu9CpHsM9uZmgXcA5rl2HJYAECju5q0DJfDK2LcJWe+U au+V1ARK6s6cOXtG33MtVtCQs/aQHdCBYAYz9gxe35p1C0LktRo64byB88ubweNwbHtrVb/g+OE4 ARkVxAPBD6ykNnzfTXNP8D4/6L5w4bxCO7nkMykR9MmYf55kwr7MWTJvrI6nZCp1gSmX0yVcHeeS lMzPJI2g0M5FGlESC5VG0MGSxjQWQRaRX+aixAKYHSBm1r4WgAkD7TQ2Oik0wO8B62kEwbtGWQ/k eDkY4ZXsoOYhU7KkapYfYoOjkUZnE0DdepZc3MDfA4Lka8TTbXrX6uHz1cjXtSAe9yy8eAAm7swD JkEedLTxcFzGpIlQlmPz4NvHMMG+g+Tw8VJNQhqtjsuhv98fuGV8gBFOZcASZMS2qvXEeeewGcmT cEYAYKEPVoV/ODlQ7ODtTL2QL/ZB0X0fVXgSBxyqgAaFYeJyQF+u9GP2OMBZ3gtl2a0KTg7882NY YN95c2yymVG2QldLTWrO+SoClUCs4wvsUODrLZ9zh1IR0QxKbgYHWVX/R3coIJwdZ4OCpR7en9DP sQebiqx2e2pB2MteW163PcDIjzcIlxthVxHLTk/HQ3FGMEt86WcSyKAo2WMmwQdt/BamNN4R26By /7kaTpNe52o8+Jl5h+YjnKsN6eJqqw4ajc3g+Kc4VwNhHK9zNTSBczXM2NPGPFdLYXRw9A7cvwxQ 9wur/aN38DF7ctE7Akt9l+CdK9Z+wzhHjKfHZN7as+2+UWF9jYgxv5zC7ll1JigzC0A++SCtwedU yKlKsFmPwGc4RSE5PpMAZeZT87l9SOWMXU1lQaiKL5+fxNb0s9kKJ+4kx1azPvOnZmszI5f6ud1i vKSbvrF39AlsZciQI9DHjTKcmpegstL4J+cq3t5Ps9r0wK3qe19lxZ6hrCjY2z6XrXACcJI2+Psc lEVnq6IV8AZOYu1SpufHViooqvhdD8pcXv2N8xVBKnw9ejij8CGP3unAw+vCjZ9le/QguAcz0NOj P46xt1LxUGLQ2QD24OFdhcNZ/67HByny6p5TOBl+fAA6WP45WPeSP8x6pgDBCeyJCRBsqx4UoLaO T+poI7vq5uewAMHux2cRIOB2nQWIoNPhAkRfDqCALf5aAgTn4icmQPAe5kEB0sbTXJkvVKZi5u3z CxADkpxjyI+5o7TFx9ihfS3xgdP3ExMfeGV5UHxqHLtuTcbF46lBfn7xgRewSPbnuoABf/xuAXpS YNO8ETYXpf398c00zXjeG3DsQm9S1sLjm7VltrjQC8R2tMn+KeKb13sDZOL3BjAqFRLfZGeasBO0 o9PtSvvkJ94IyuVrouUXX8saUzLFybLWWqR2Hjw+0+S8s4yAi7vGGFFwOUA2tFbaWLUZzcQ3u8N1 jpNnEcyZqx1r5Jc5QU1lmfpK9nWj0taxDUT0w+7yXFJW74bNsZJKXygsjRMhdz5SkdaVC5+oAY7j lTS5ULiD3wWB9AtNUowVkgVVMcHVLSvTPzkeUBgzn90kbF95wMvUDO9Oc4dGRfU9jk4inHirLbjP aUBiusJyEw0rpdcHftsN1RXjY8VYMXfSChSrsz+yjwkJ6nMpTmesYDVUr+SUFu6fykE9Q3M8jZ6P 7vgzMliZbhgpVN+obAmbV8hyPpSR1nlNKMcev5wTh2On9400l8nC5HRA/a89fRDDsBQVk2FoTM1T iHld3DSpTk+oRmPYNxCPDOZYsoYxjGODfjm3Ooh8prLSgjIHk+fYVDrYzDLmBTfWB1PJwEJ4pQ7V q3l2387MU72F444UfmUZ8OHjTJfr1sS16k8frRZ3/JDItueek+rKoYEnKsjZuJkdL5H0mzFfXroW vjBdoHy+N7lFaLQmlOyIOzDHU6gqcIIqGw7WuS6FpRng2OczrT65lcpl31rHVk7xjX6jIOP1g1af Z2+552klzx2r0q5B90I5aPq5umxxjqQ/F+fqGNc5FLVOuygLQWfHH8G4p+/+KlK7Mc/vG6ic8Yok f93dH7Xl9yiVUxk953tU/JTd3//sxS38mcmnsPk4J58SfsmnGBTp07YMli5W9Ky6D04+hXdcX/Xi FuO8KmNYiLBIIbD953tb9BMizd9fNJ96pxAOUoSKJhSEJrPkm8atp4tZTg4WTXgH9EVFE/i4V8kk XtIEGiadl7jSWUI9ev0lpRGy9yH5iSelbJuRC+Qqvaf3ITdfYTP9RaUUxdJOMSVfQq++Av/nLJ83 zf+SznDphAPy8aQzq1WG2366pWujbLB0whGwryqdYFN6yWShQld30NySTTTSRZO/JBM+c4YcoHiS 2ebng4NYHndnMyZYMuE9xNeUTOIFowjSucKfz2aCRRS/lg0ANcG+S9mALy6kMb0jSEjT2dEOLyx0 edUq/CnMJ1igr5kUEQyo2cGW0Cj+kddVPTwNXvKMi+z1HH+SO/OusQKmw2/rpdGPv6wnzCF5qxUG 1fK0QPeqjO8hTlA2d4CMJHhP7/Lg3OaXV6jWpvXUUaLffhAPf32g8kiONf5JCoDd9cLHEdgzoNJ4 pLGA6B80BBctd6FDVFrSJtOeVZkGHqEGrfGN5hdGIde0AMYyoapulIcAul21sIdL3ip3bb/GMisq osv/QvY8smeBGREAvibAsTImyGwssqqGaGbhP0NfpgqrHP+FSLpi1/nj+Dmri5eagK527PlXwwBL qvH106P5UjP2anCKRQwFPLeJUmg700fRKt0fdNaHfoQpzly1x6t27s3chXz7Eefm4+lkvjvVtxHg CBzf/jKTNhsLo8Oh3a5GhQ13odKPFnaxUPiF/cyyYtDa9p8fz3+KV2gJWDAvwxkwJak1a5R1omXe H2yyO2EBOp5FJwoMxgeQDzP9Qv5oNeCWzS1BjUvz+ORbxjCYRTdt7tZfGyNRUPn/Aky4KXv+KLYW N3meA/o55RETO8H41c75Yq11C+l16oLG4yb43FQ1Wywl0cJcPCPVRRB2GRuviMl2qqKTEITjG1Vz rrtWhWf1xyT0T8O6YoXYMqkDpn4l/YOn8oohXWmc2gtRFjQZcwmwP+LEJ1LAYoanFp3/Z+/JlhNH lu1nfwXH50Z0d4Qba0UwMT0n2PcdjGHOxAkBAgm0gIQwMNFfdD/hvp0vu1WSAJUWQAbb2N3EjGkk ZS2pzMqlsjKZ1EQoKNfOgFZBk8Dcd6rsL6eVCFZY1/kJfqQI26txSz9eLijrRTr/kNLfE7egqNxz y6KAUYnyU6WRTrxHbklMK425mn1Il+VnSNvX5ZaBWT7GKL6jBWSVnaT6si0fbGSgnqkKTEn99QTC JeK9J2GVr20Gee8an2fo0cAqNNNRP3dWTdgCK4ombmAFGdbKbx3KCCIs2wZ0XGgMQ/12YBaeDAmj kMrNdWD2D8Oh6gxOGzSxDvHCEKjjVkH4Q/WN9kxdrRYXSyzfyw3aL4IbQ4N/LnLiogis7r2KD1QP jYO16QCSTBNh4UohfgdmAYwATTFLVAuLz1qI1WZG+nJYEGrGqbDSrr1ID0wzboVjCLCEtAygTkFe MVd8Smc4nWWIUwjrwtYDQfQltTdPKqPRR7AeGKGv08klH4ukhtdsPaCryT6lopaa9R4HfbwxY95i Ob4wcTHZWK7wREU4tdf4AMRV4yci22pJtVUpec3Eha4o+2rK1VVsPe6PCtLq8QMQ17LSeyAWw/xA b9c/AHGRjVgpuylznbS+vGbiQmX9bvgVrNhQmvpkyiadivDVKZJbfcvmeLis3UXyRE8oPfU7TW0d rO7XS5ldVSUXnxYGOBFprGwVto4O1F5hC3nzZ2h0RtW90Aj6xM/R5M3qfYbWa1biNJpkZbM455Ow 4KEnl4U6sOGkh+cqoYPqCehqA1aFRWdCbcufbJWcMYrNmMMB2h4Ah0Z5ONQCT6icpotQ+QMGyMhQ qQ1Hl6VWn6LnFdJalsrjiUS78AZe4lKG6oIJCLzU/Qh63mN2tX5Y1rDVWLvq1RJ96fuyTUs1x2WW U2KTxK59teyrwHraliMdCkE3qHb8Wp1ZOz2AfQDjGK0Cfl24qvOeQM3dMRMlVXKtbApvYDM9FCpa TOxSi0519gF4qU1WsUJilV5w7c418xL60ve5dsV4+rE0F7qbtPwWvOQjvYfG5ctI72WJpsuPyaoo Cwmb9D7qOUDqY9odgK+uf9RH9dqYTEb7ncn6ufoHMt1Xn0FuuZIS5Yaiak3WNoOjrq/rmcFDmRxH qrPRKpW012Q+qpdczww2vaK0aHYaqVQpZpvBUdfsiTO4sJjYsLViNVUtVIdJ773KKxUTPutsO02W KuPWVCUp6aq3Onws1OxjtaaP2nk6KlNXJCcuyR8lTG0+qmNWU4SajT+OaktH+ePq6yjDwKABxNTZ pZSj0ViYgAmwTkv7HiAt0iRDxGbR5bpMddI/WVokwhnWeH45ZSJ6JC0SQDCkiH0Kg28wFYFx1iSG FAedRukNXSvyGZgbd3dunNjHk9IBMz44Yk99thDfTwoDi8bvD2IXxygDu0aB3D12531hWCg2VY1k invswkyQl8Yuqku+H+xaDRzG7jecISz0IqHn0/okrsZ781JVauzQC4tWXBq7qFB9P9g9iXYJWBPL yEgDy5vYAq3px1EtnxnIGzJtI94XQC8ajPV+0HsS8RKQ3c1jgcjaUI/LmhibYInmfLpHL85cHr1o 9M77Ri8Lw8ltKwNJWthFcBvjqDlTKUq1Wm+/7kZsQi1yobw8qFPp/aCWpCI0Sx1bdgl4BGht6iJ7 5K5qBa2JKTWBTOf2q27MRrf+yMXdyL1rcGNdZFV/+kU9PYeRTLwhkn2Shh5GcoSyFl8MyTnR721q 816znWSLuk0vI5+LZX/sorFx74eE2SEzYqNHsEttCRjJ2zWb08MVNk21qYeFbenFL7/0ou6l94Pc 05ReylQcogjlTohNq7+g+dG8FbEh9wV0XtSyf9/IlZXFFrPGakAfOOFH0eEo45JJ9h4IjGLhI/v8 Z2BAo3q8jCmNunciVDISO9sEhpNo7bIE2rEw4GKUK/+pebovpXBmeOL2cESfExV5DAMV2RB4ZWN4 osI8xGTsbRtbcf9C1kp5/dDgmV6lp/iXF44SpmMj+LHAQ4kBKUv7IFCrWms1xjE1JovVjrwbAmm3 +wj8UhrIsDpILjJ8o0+/K8OPGxExAjna/eqFVnaTOCdVPXoA5qwj2kitFUQq+6Wqx12uJe9U9eRj Oo+x1VVMcRzJRi2v60hVT+C2TPXQOD1aCHVXKAOPOJ4+9Xw1rKO4O11NXvB0dT7Cj0vMKj4dyV7Z jx2nq/HY65en/u//Wk74//4f4roq4JEnvVZr1+WRb5bC6OtXSD6j7MT25fjyMhqxezFeRu0XP16G ZHcCL8sNsZTg5o3KmumgvIzaolfBy4SNk4GMPFY1idhVnDBMz9esWXKKLDhKP+gu+WvTz2myIDWq jVI5ZpFpYkOUflAn51XQj+Hv3RfFpo4REI3vU8E4Hz5RFOAE/jKSYFrgO83YepHt9vjjksAY/5WI AqHUWrMUn2tOM/L7EAUX0ezQw5rXqdmxrD7qjon1Sk5XUG5Gnb5Xwc2mB3yv2R3PLAo9BWdqdjgZ s2fOOYOjtwSzj6lobVLJXjf2mKkMTtLt4ECug6XjNWky1hsbEctmfiKWRg8CXIylUcl5poAuT7hE tZVPKmqzi7I0usd7FSxN2DU8uAl+RMGzaXjR58lno4mXkM9SU35Y9dP10kSJHufm2LVwcm7xuOKz o2pk3q5+HE4+qmqjQcGvLJxP5OT57Ink6U1CkElHgUlUo39RTq4p4hpePEU823Vt5mhmZZzZZQaN uBjffHLbUmj7/PNEOOzoJVj+gRlWIsXKIFPZdE5QyWnyTQS4FUuPsn2MlNbT5gpT6MeZH9szL5cF 763YHo3xvE4Ley4sp/MqobWobg1le3TD6ioEeNSW6x/u551uXxPPk9+RyIXUcRc3i1luzRGdXH/A RE5Qx7Hr0cZnrfi0tVi1E6XNzyTD0SMZ18nMybwml/K5/EyJCigzo1v7V8HMJLZnZupY0nkSO5uX YRMvwcnL4vqxKPbqrUjGq1qXUy5TV8TKFDVbUzWaoOYb/+JOH4+V0bNJ18nKPKMxAxrvZ2lo/NtZ GQ1NvwpW/mZ3lcHY/WPK+NnM/A1/IbncF5ZjoRLh8qOVlx/V5fjGqGth5jGWKyU7RWnVmUR+ImZG j6teJzO30hIv1GtYRVPiV+8lM06FnO4lu4CWjRMvxMzVohgl05tUtUHET2Fm/Fp4udIeTKRBrFSZ kr1r4uUPXv4EDTzcbm6dFuqQTXe4ikbF1WhhcLiyBLrZ9U4rSzC2RYI8qr4bIaLmKgFDN58dK3Fd 9QySijQDNARmeamCBs4Wn1XR4P4ys0txM1FZS5ecnqvJt5xfWl6AfkMNTjSpiRdmIQP6EjM90Pgl 53zssDf6vMkERk5Z4zZ6Dlw7dBD8d7ACadwCSm0tpMvCXOdM4xcp9e1Y/o38vZLxQmCnLJBiRuw0 D6R5SOSW4LpuHQaHuWthGldT9+ITmbGepuePcsJcK8BCpS3gfXPW8Jew4CRriY7CJXN3Ahs2AalL s9DqehrGzCBPO7ju3g+OccA5ydkPkIw4AP2pw68JzDnmkjIWYLJ+o+Mt/TihoOgyoTATSmebm/RE iQ0KXK+zP+HvgqOccPyoksolivMNlXqwpeI4DjjZUIX+g75uPPZngQB7OVJ7FGqNbC2xCATYEPK9 xIAtpTup7CFA2gnYfZwl9US0Voo+zgP1yFJZHk9txFy5RAQCxIqTTGM02oxTj3uhCOWhCej3WjHG 1pDI9jnx++1ABJJxn1LBDOLKx/tkSu/p7XV83/xxIsk9rchugmlHNUYJQiTRnpSqcukK1eXzgfDw lBWHZULRmEmhdAgw4gRcxvOPwIZaTHR6EQCB7ilnE8letK5WUq15O8iUH9KLRavyuIwWmG6gKXeW 5U7lKU9ro0o5EGBzoPQy7GqiJygqECCOx9VIvTnoxarRQIDVbjMfGa6eNLobjPdL1XqsT5a1PDNa BQKUuC5W7taUehZLBgIsPAh1pdhlS9NCOxCgmq3mymKyOptqwVh4FSmUHzrF1rTJKYEAhUa0r3T0 9ZJYVQMtU/NSI75KpctaOxNsfZvGMvNotp9mpuuDgK6hdlcRZSkWJw/Mmg3UY6S6SPKdDjFf4lKg HotRtsTXl2Ra6nSCLf6SWOk0BlwjW50EAtT5khBrkURW6BUDrCQk5mgoxQLtB9zT/FcR6CxFZLle SY75aKZeIlf0ISHpBqxycYbmhgkxlj20cLoBixu6V2C4enU1O4QnN2CtikupUXsoNjk6EKAo8ZUE lm7GB8lEIMD2slhZzalS7jHJBQJMFtjchlLHkwaunCUc4g1ZmcXL65jIdQ8IBxf596hKuSjHq1qv epD8XYBEqaLXJ0plEnninzXyLQpKq6g2Z582zafy4oAG4FRs9dhsg8WGgy6tdHOnaA5bOGosrZoj 7emR1vpB4PKjXDNRzw4z/Vg1CFxczgzrarWq8vW5PxwWsyHY0pfKwBoJjUTlacsQLpvDsyUPzaud 34r0aGY619rlstxe7xR5x0tzt0g45tRGEon5osIJhoZr+KPQBYdsJwWAQw7jBYBDvF8B4JAd7ABw 3knSjsMhnvkAcJ6pt0+A80z66SYX2k2Auiuhmml52XOY+Q/EaViiJ7O8yRj9af7aWue/D4AhO+Zk yxdrPm+7pqhg3PJYN3KnNfS+hdzf711wDp+d9seNceWPm0/nf/rs0EhgfB/mheGQk++HyuDecFWY f/HwShLO7APDMCKCYfAbZ+jtN/7J3PXCIzhFf8JJBiNoisRp6hO4S2LkpxB2gfkd/ejQeRsKfer3 Dz83Y4fDtfaNF0TxNYb1Wp/f/7WSxNCSUzXDU4WHjfgSQIKCPAZrcCvzLXr7L0BwgN5C4ElZ+61d Ln2/5ReL2W/399qA5yQ2rEjjsKKO72GxIehou8fDlOkCtDUMGB38EkYCN9x5CReCxAH8S7PvtwRG YN8w5htOtHDmN4r6jTQSKxquOZ5jh5xqcAf8iXjXTL4yGWSmqAvw3NZhF9LB1AwqFjk1ZA15ezM8 HXJw0FvmsmBdrT2YM/gDD0fCOIM+vb3nAkpbGPyjLQuQnQEeoyjo7ombrU/eNSujRVjuwfQcQnRa 5YPLJRd2Ab55lRsZNwHLmg40s+Ed9n5HvZ4H/cTeXl1PB7BXgeNyaevl3TqCJWvH5WgFYuOB5m4L 8fShIePwGKnDmW2OdKSIQ1jAeDvM7W//xKrPwdqzhoZ4NncDRK+eX+m5ZqbvvNxc7Lu/W2za5oeO 39ph2dmK+x2S/aWjWYgP7hRsff/WPHc2xNslh3XnEbWlNnVkUN0lfw26B29L5oqkisUcyUptWWn3 Z17t7lJ7OlN3etltAi3PzLXbFK1oildH1ll7+livkBirjiLq1fVJE+u5k46kYMW8ktjaM7l6xC8g eXe9EqT4JG05MQOubVPXyqRiT5tyLJWKPdvzy+/9XnR9Qw28V69lf4G5OIa6S+tskyfPrWX/vorN n4taM5n5McwaM9/i4TK17P3Gemwor1vL/kD+eH9ku3LFe1ZUcU0HrWXvkcw+eMb8iw4ffdmu4aO1 7IMO/5yM+T+tSkGQ1AlKBZpJ/iqUCre/6Nl6BQ5dsi+lWXhmon+WZrG/4kwM6UMMhBcxeGHUI1W+ I6GdT5JUz7hVI6DcS1fzQpKPHDBTV9C2NKyxA4nvdlkuSVeYqSNc80CuPd+cx0FY7UzsokmU/bBL QMQEwy4qNyB26X0MLhk9AbfwoUvg9pIpB20Bppc5fX4oFNUzXnYyl5KpxGzBr/u8r1rhEfrrGdTq ROjRQGUvAjlEF/ZYYa8EZra0aPtwaYR8bW/inLhb2nZq7hsePXgGdreeWEG4jONgzjuJvL2o9eWM sH3zyNuLzs4VYPv2kbcXnd+BsNqfLfKWTPc3gioPJrFR1xY7i+qbZwXknhp5uw+43e0k+mx2E94B tzuwQ5G3nlR8DBBG3h4himNNYF4Bt46J2qC8wzFt4QMersbthq7vJi3pCi5ywpwUZ+DhZvKdh22f 2kPaO5Dmnr/bxrBtYHsQ6lEU4J7b066399H2qX99Xuaz3//X1MH9y/QB9/8ZhvbZ/zc+n3AKx0iS IWgS3MdJLMJ8CtEvMxz085Pv/6PvP1NTwUKiLgQg9kaKKl2mDyP+I0L5vn+SIc34D4ZgyAgB3n+E IKlf8R+v8flnKMtKfVYLZcDrDmVgmXMyjN3c/G1dAH/AYl9WllwTCH1u+AUawFQU/PcVXI+rKvTl GorI9+2vMGhFhDeBKdowTFFwr6XqHGyIVceCvP/9d+gfo5lqxCDCvvfkZ0gxW7f4HX5HEncU9tW4 88+aobbuGwqFEjs/IriahNZquMMDkWfcTK9mrHHDevzHzY9fUgl+/Pnf0Nwu0scR/icxasv/QALA ODE8QkZ+8f+rfD5v+d9U1EeACW9uPt+A/7+f+zGbCLk+Fo2tQykOdGpqj5r7sX0T541i110N+pni Wqi5UIEN6e7Q7/M59ILY2I2uCSwaYIywqgA3vVz42Ddx3ihqqrCEHf3P7LnY+GwNdWkNNQQUBcN4 NvA7s+bzkgQEPllR6UMb1A9dl0TZi85k9/7jgwGnaYrqNZV9E2eO4nPoz3gy+Rew/xe6avk8lqyo cyFl5PEOt8SS0WVjC9S4/Z8Gxw6/fN3Tzg2QpyY5fQ8BYS4BYR6GD4LLZj/m3ZubtDy82Y+hyS1O HkBT75t9d1Qg0b88GBC7AXy1j8C4B37bRwIuI0O4ACbhX28GSS+hNpQD6obIeb7NC77PG0sNgvix 9Kj/QN/IFwMlWxTAK+E8rML1PVQTBuCVcH8a+PjrBq5uyGOwEBh47BYqBbcmvt5aRP36vOAH1f/K kILCkjLURe5yfRyz/yhwzYr/p0z7n/4V//9Kn53+Z770V1EADblnLlxlbsErw1dcJSGBm6tjfDYT rd2YcAtWJ4TLnrEtewvuZgxOaPLK08deBB32nzHry3l+zM8R/qcpOuLw/1FMBPvF/6/xeZb/J0re MQR0xDiUCkNr+O1e4oaCLt2zhkZ7+5evn+gBehpAq4YfSJJ1o/cyJ+uGy6YFk+J9D325BSqysXNi en6MJ6szTt4/aXsWKJWhlhnOWjLjUy2w0HaQ7uGK8Pl7uIFijBU6h3YdVbgnqzmv3pIqB7VT8NAz O5W5J3ef6ZXg3R28cWrLcx08u2/6xxbHLUURNQ8kG9ftKE4q8kgYwx48Z769e+p4Boo00xec6hoT 3181WWkGbbhcQlk5/X7YHX7HRO7wmNlPc8YOoLlq8/v9DS5CKwC3vq3xIL5D5o66o74iiB6pUnOh DKahDKAtzg1Eg45xJhylmd33dqoZxSBj+PXnbRtuVRulGv6ybh90iiJYHPfDmjEGyEc7TP4dmgGc wOsGe1no3OLGhR/iDgf4iXzd3a2BlcrEEbW7FheFsbwdEfx3OAl+cKr1wA8ENSYeSV98EtRddI9Q YPHI0AaH3tUMDFlwotk0AsF9H0wTMX9UH104EHz++9YQ5P++9UCocecEhOKHEErsrx0m9yGMIVBm cNw7ugj4FmqszImE+eVGGsXckXe0bZhOD/fJ2Nu+bwJ93y4qs73wHzvQ/kJOKrN1SylBxSkEV5GE vlgosncrERhI9/UgEqXx/Vj5JoNXGtaW4x3yfjhGSx8cLY65h2ujSHOwfoxPBiVHL9Y2uxBcZGhc P4mvsRfia8qXr8F8o+hCaS7RBgniPsszAVZXEvz96rnP4rliOzeBDNTIIpApC1UR/SgeYoSgrNcS C75KeAwEdjzoK6b2n1SkvnLgbRCeDADAm3CH6zA0jUCHgJqgwZH++eV2IchAW7gDFINHzG9NYkXR /CdBmN+mQmVdo8xv0rpnrDfmP6mo+c3r2ysR6+GY1TZOgEfcLAUmYZDk4Ungvjjgp7bNtyTPDab+ jThR4bFtV/r/do5lt20ceO9XEELh2oEhRXEbLFB4gcJuUgNJWiTdk2sESqzEahTJkOQ2Pey/7zxI ilIkO4+uC7Qc5CBLw+GQnBnOgwweFy7fa1StXHh2ZxxkN2FmNHea1b24K46DJbV9B+5aw/azD4s7 +Eu7GE1C/O9vWzJsiv9+XuWPAYO8/ddt8Z/vvxnsqfhv983ePuZ/fN+38d824BfU/8R2yze64kUu da0IOBSOl2ffvGuaBO/6YgDiABxRvOKhSoCPjvkQdtQlnoNVsA9pPOcCBlUeilR8X4QZX78MYGuH 8cmpZR+f1EwEgJHyhU7KNYnb4HIB0YNb8knb0VOKla+EQYTi0SdQMYkUtDFWZuvd/HsQFYHzcCJ0 AKRCg7esR3GCk1clIrMLjyECs1GlwR57x/c6e2sJmURuYTMBIrBTxXwvcOM4SiL/r1LRAXOQqO3k VLEIHF0KI7V6HiVR0Z5bPZNnt6fOIR0ajb2c4n4SMqcvnMMgK9I0OQ3nqzvy+0lh3dPwKgvzrdTu 1CJvKSttFDdPwxzv7RzRLZicJ1FNmEsF1+Owp6ag0vIs+NbSjGulbe2O0mAOjhG3GUe3Il8+0TR6 oBIeqpILD2Qa6Xg9/JUGMU9X2aUu8pI240UGgdoU5ZKD4AgMYcnBdKY4m+D1AqPgLNGPWRUNbPgj BR1STq7UUf50kGbiPZhbQeepy5FOEtCdGGQXE5AuTkyXJgNcZudLAqJ5sorjPnmD7CIyo0PZCqkh ZiEaUCXvQ24z3WXnm1hX7fmLPwMab6UTi4OYctMZtgV0eH8CPuy9tdS1+cOw0MEll+dlhKkWOMDh 5eaMCTXBZ3UbDRKSF12n4991fBgVayL0gIhdMum9Hk+qpDoUp+Mo68p23irPvHwBm53H3iXtdR7R yql1X3Wx4+10fHeZXMMnMvNEeHIlCbsjvKsm/ha7IFVhImh65LEClTTY1Cmad9lvX5KFhaA46L3K V9VIUh4iSUmqkTfCTebRFQ76Nz5EgPn+c8yus12omqUXpg4lFZVEHZo6nzGYBTE+oxAWHo45cIWn I9rz4eEDBqesBSDCMEgkVJcwfNdTEk9iJs0VsvBKfLz4CnoNmnp501XxO6KrZ1fG10yUXuXm5wne w4Tv+sVBlMy77O4gHUn/nySu91B+VJ0jv7JvfDRp028mnUuse5RV86ZxoSZL0vhYHRW+yY2PRr/0 m/uNJIl7/Sra1G+ZivLd1sTmYA8s//KHI+0sx9WujMnJYFFvM7Rx2kiVkiXHej6i//7A4vVSHg5W czVaZRnIPRHlXszEbQNrrPno2PWZmLIhM26rDaLRtmonW1ilTiu8Nrk0Wn5qjFcdFwH+hPHjWaNq 5hbpVJgF83mSFloWJHtsQdnSyc0y4gJeDdFYgNZldr+mUdLF/bH3/HXS1Y72tmX01gHHBISxtms8 b8XNDNb5CF7f6ImsfHP56Fm5FVUG3pbLOsyCHwq7HOpDsMvhbMDWG9kmhsb8r38exE4Ndy0zJS7v k2tMwPgiNqZ4reFU6c0mcrJUai4XKNooTmEmmtFxYzPRW9B0cXMTLu2W1KF0vUtfvAndnO7aJKAX tpgkVyluqei7HlSuQsAffVWnGZXHs0hvQ+nysJs+cP3X63MXDaqjqeNxl0/pcrVs4V4L1s/gvsEa PJgRLYnbZsRgo1r6ui8qvzqzZ8GCBQsWLFiwYMGCBQsWLFiwYMGCBQsWLFiwYOFPhP8ABzaqHAAg AwA= From adamnt42 at gmail.com Sat Aug 7 06:06:46 2021 From: adamnt42 at gmail.com (bb) Date: Sat, 07 Aug 2021 13:36:46 +0930 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit In-Reply-To: References: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> Message-ID: On Fri, 2021-08-06 at 22:32 +0300, Jussi Lahtinen wrote: > For clarification, when the IDE crashes you will get an error message > and > backtrace from the interpreter. IE the place in the code written in > Gambas, > where the error occurs. When the interpreter crashes you will get > backtrace > pointing to its sources or the components it is using. > > Not sure NSS has anything to do with this. It only gives an error > message > related to PKCS #11. > > Can you try this with the latest Gambas? Maybe it is fixed already. > > > Jussi > > On Fri, Aug 6, 2021 at 4:37 PM Jussi Lahtinen < > jussi.lahtinen at gmail.com> > wrote: > > > Also, again, I don't see anything suggesting the IDE crashes. Only > > the > > interpreter. > > > > > > Jussi > > > > On Fri, Aug 6, 2021 at 4:35 PM Jussi Lahtinen < > > jussi.lahtinen at gmail.com> > > wrote: > > > > > From what you give us to see, it seems to be Qt related. Can you > > > isolate > > > the problem to some small runnable (crashable) project? > > > > > > Jussi > > > > > > On Fri, Aug 6, 2021 at 10:46 AM bb wrote: > > > > > > > Gambas 16.2 Stable on MX Linux > > > > > > > > As well as intepreter crashes mentioned in the other thread, I > > > > am now > > > > getting IDE crashes with some projects within the IDE. They all > > > > seem to > > > > do with code completion. I have disabled near every code > > > > completion > > > > feature ( help popups, offline help, etc etc ) but they are > > > > still > > > > occurring. > > > > > > > > The crash is with a similar dump as before, i.e. no stack > > > > trace. But > > > > here is what happens. > > > > > > > > 1) On starting the IDE (in a terminal) the IDE starts and > > > > displays the > > > > project selector screen OK but this warning appears in the > > > > terminal: > > > > "[26563:26598:0806/165458.706936:ERROR:nss_util.cc(727)] After > > > > loading > > > > Root Certs, loaded==false: NSS error code: -8018" > > > > > > > > 2) I select a project and it loads without any problem. > > > > 3) As a check I do a "Compile All" which succeeds without any > > > > boogeymen. > > > > 4) I then close the IDE down and the following is output in the > > > > terminal (slightly editted for readability, the original is > > > > attached.) > > > > > > > > "Received signal 11 SEGV_MAPERR 000000000008" > > > > then 61 lines of object references, then the register dump, > > > > then > > > > "[end of stack trace] > > > > Calling _exit(1). Core file will not be generated." > > > > > > > > Information gleaned from elsewhere is that the message is that > > > > some nss > > > > (GNU Name Service Switch) library installed in MX Linux is > > > > causing the > > > > output. I have three such libraries installed (libxmlsec1-nss, > > > > libnss- > > > > mdns, libnss-myhostname) and have no others that I can find > > > > installed. > > > > > > > > Now to the question. > > > > > > > > > > > > Does anyone know WHY and/or WHERE the gambas3 IDE would call > > > > any nss > > > > library on exit? > > > > > > > > > > > > This is driving me crazy! > > > > > > > > tia > > > > bruce > > > > > > > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- Yep, lets forget nss at the moment. This is all coming from a much lower level. b From bsteers4 at gmail.com Sat Aug 7 21:39:22 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sat, 7 Aug 2021 20:39:22 +0100 Subject: [Gambas-user] tracking down toolkit erors In-Reply-To: References: <5ba27d1984073bc189f69d4a8dea6ae1@cenpalab.cu> Message-ID: On Thu, 5 Aug 2021 at 20:34, Bruce Steers wrote: > > > On Wed, 4 Aug 2021 at 00:53, wrote: > >> August 3, 2021 2:29 PM, "Bruce Steers" > > >> wrote: >> >> I have this program i'm developing that was starting and stopping cleanly >> then i recently added some controls and did various other things and now it >> says this when it starts... >> (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing error: >> :1:15: Expected a valid selectorIs there a way to track down what's >> causing it? >> thanks >> BruceS >> >> >> >> GTK has always output loads of different errors with many programs (not >> gambas ones, I mean), when run in a terminal. People say it depends on the >> current theme and whatnot... >> >> > Indeed, Pluma was always my texteditor of choice and that used to pump out > loads of warnings. > (but now of course i use my own editor i wrote with gambas that has all > those cool Texteditor features ;) ) > > Would be great to be able to catch the warnings though. > Either a way to track what exactly is causing them or just suppress the > messages. > > > > BruceS > so best answer i have so far is this "hack"... Uses gb.args if the arg -q or --quiet is given then before the app loads it launches itself with any and all args plus "2>/dev/null" to redirect the error output and an additional arg -s. when the 2nd run instance quits the 1st one that launched the second one also quits before it's even done anything. *Public Sub _new() Args.Begin() Dim bQuiet As Boolean = Args.Has("q", "quiet", "supress gtk error messages") If bQuiet Then bQuiet = (Args.Has("s", "supressed", "supressed gtk error warnings") == False) Args.End() If bQuiet And File.In.IsTerm Then * ' if we are not run from a terminal then no need for any of this * Dim sRestOfargs As String[] = Args.All.Copy()* * '* the next 2 lines just handle if being run from the IDE and make Arg[0] be executable name. * If Not InStr(sRestOfargs[0], "/") Then sRestOfargs[0] = Application.Path &/ Application.Name If File.Ext(sRestOfargs[0]) <> "gambas" Then sRestOfargs[0] &= ".gambas" * * sRestOfargs.Insert(["-s", "2>/dev/null"]) Shell sRestOfargs.Join(" ") Me.Close Return EndifEnd* Attached is a simple test app It's a form with a tiny little TextArea in it, so small it produces warnings on my system when i move the mouse around the window... (Test:79673): Gdk-CRITICAL **: 20:26:58.775: gdk_window_is_visible: assertion 'GDK_IS_WINDOW (window)' failed Run with -q and all is quiet. ./Test.gambas -q Of course this method will suppress ANY error messages , shell commands can be fixed by adding '>2&1' Shell "/run/mycommand 2>&1" that redirects error output to stdout and stdout is still showing Please somebody tell me there's a better way... BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- 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 724MQbqeXJw3EdLSZarpnZn7ma4ON8A2a3eCEHxWo2tq1LXbVmjDq1aBriX1/kNzJETXRKaC//bn zHuo6aJPfjrV5qnWwo+7bWxMzDpv3hITqNfoGOn9jC/Fr5+1eV+6dQeO+7KG+aofzoJOUrT956In YmrV1zh4hYCds8qxL+pJ3yfHEfj4cGZ3K7/nu6pyt0jKV+Pgru0L/ZA5iQ9uAydZngjSazR0li8W U95O1Qf68kmfIDUB2+TVkpTjV3Usn7miPeZ4R8wg4uN7b87C+JWoKc5l76zBKE7VSCVD1FBk3J37 M/Ts+DVueNoc6hrbtCr7kzjxwtUZqBsfvybz55bHhxY0Vnpsn+lsP7dF8WdiHzIGo4i/1mRi7KO4 WHH3mPCMTlmQg7tTi4+NNYHuai7f00KeWph5WZdKl5joJ7rwWctyrW/C259DLsd7l9M9/r706XLw E5ulp5RQ/gLu+enrMXclKecqueVbXU03nKlponS5dgaRAjFnUWly/be97LwTPU/0Be9CXhjvLdaL G6xg9s+MRjMFl6VnpT0lvesu1fri0clbmoJpqcXJ7VX40ozcjMpANEtxV21jC1oJm7KKMOFKARVH lYmb4iD+o80pZHM7/ce7q0Ueu2Q7hjfDcNiPHr8tLE/AxtsIlU+ag1nf9rBeyvAL+cTCCM1Y6HO+ 6/QGgrxuJ3c5bZKKhHkXueoRF5FBNgZl6nF3YSknDM+eFjJl/9hya8vS6WDJ7jGZROBUmYGZfI6D hyoVqySi2VxwxzmR1ferWcAkA7zoG40Uncc70VrZ2FZ4aTeuOeuS/fzw3GsjNrIrAC2at4gU4OXX 54seSvza1x4RXVOv4w9CMrjl1atx1jaZCrR5CE0XhZNTPh7atEPRrI0bOVztuU8/htE+lvtmsrmo sAmtsb4u6Jh17ZlJck3iOVHKkHMvEF24tlg/BbNki+K3P1jMl9F5nUWlOXnBycRW+wREzBRBPiN7 3+rpk2K5Gpknmp1t0aTVNgwsRDziT9SqJvSyCntPeeh1jA07FjXVS/Z87w4Ye9URmG7u3E1Hc7Ua VSxZO7ty2MJtx6kyWHmWU5d8xbflfHl5VyUKd3+j8uGO4dK6QtLVaVvqSyHE5cNuitxjvzLv4M1Z Qrsngje7k+7YeLgP9xUwmmouDy/3VdZZehwwac/XsVfIfWpPLbAzC8mfN4QmDzrDfGe01bdoccj+ ANk/1zsxQDQlLS9gy+2+wHaNBt3VV3YI7fU5J9c5shHqbkdUX/lV0eEHqbYCNAFHHmDZNGThUBBt N7s116X7pcYXffRXs46X5s8gSYVt/qTVdszknw1jpRbWDVpAJqhMjJa20MOFWyEXBkMqNrnWvcNL 4GRjwNHzg1xeTm3EmkLTSztYaxGG4RzJFRN72fPxTOwDq6mJQSHySd9npwnd6/wekWDxoNywLT1S unKIMa8YfGC62iIu7bDabXUqK6Nw5+W7zLu7hXw/67rcEpxY32Ve3Ntfz3iitpguXg0fFY19sN+q H4WNU6Qjpx0yaMuFFRlQkn//1iOHItdRc85tStNt2iL62ACDX8UxaijvyqUF7ftgewyWiMOqbzzW p5BMHTOLl0mRXj02wVKVvT2Do872Gg9QPDlfjsJxvJ5w3hjaHy/aZT6kOMmwQrRKeSIXzZp096t6 75dL44RY7BF4dRp5fg3Pe0KiVPII9kYWJuojW/Wfoj8/Z/F11D+cxw7SFk2zErEitFxNH+RSBkmq s6NzHOAhCOYhdlZ55oNPom8NX2JpA/xRo6uVke2o5sOSjaDhsl2PmLC9R9zXCY9ozhLEt3dvbGjs oTzpXS3tssgCeEjA7qxUh3hw+eFSv0OC20XDE4PlZ0yAkGSgeXyU9uBHf1f8lX+3gOtnHoXr3LxJ S+zszmIqzt3icsbnPIVv9avN/Cd7EVPPz3VY7dr4O8bNHTmvjCkqB1K3a7EHBhOX1aVsKPgii3rq azm/4e3m8b91rgqBk0Yk3FxrdjXHCIlW/+hVhiPsc/HuhPktnqUNz6PQT4m+BNICM++JHISZ3E2w HBK/2vFREfRpwRhHW+oTnIlctG01LpvllWs1X4o0g2+HUCEvx8FGkwG7mxy7sungpLr6EcyCzxmV 8KWH9iud2lKPqo5pBV0uDpueaDpf+t4d5j7EGHDo7tWoaY42d8QeoYEDDlN/vhgnVklv6Oi+ke7T sboxxMHgbb/fMjX0abRhRtxUlUurZyTsxlmqeonM0j4jA4o31I0BgHtG1R0u/bFR8Eb2oTMHKxEW nu3BM4CVw2axwCfausYeghwikGPalp267XFve93M1EjialpiZLfuY6wXGfCD+e1djC/R6ln7Y2VU RK4Vh3rLIyxuh23OAWhojGzsxDcQcv3Lsua2Fp9YT3TUUvPlruFNDiRoxcD6FZ46iP+44Nw1VWOv CREH157ppKzKMAA2AJn7x2cVV7+GVYe0U2eguNUvp0G37spy4PSll4m1ZdpSq3rIIjkO2FqXVbzx oPByzDgG6bdowsMq3eDwPCIUbkq0+zk9U7xHvHr2VoncssljBYUMDG6c0BdsYqdxNY0o0tBl3/hj nl2xkxEjGNlDcHHBxlsvWZdBdYSunQ1FVpSgsWOSb/G6x387sAX4WEnZ0EZqqZEubA3MmFmoJPG5 KiEs6GsyvENEBnVqnWRjR1eUlAd97fU1/LcDauS2nPignpuCH7PdL8iT9X6sgLyPuj3uAzKpKVQp Ia6nrsvPHDcySirx5JndN8EJ532FWeKytmuXSS4x8c6yDLzvxZ0VgMxk2QGkNl1srao0cKk4XZjY VuhpvcEJ5sH5QZ7R397rzWdsZRIQS38B3VtZCKwZcF55hineNrAcM9vZBUsCYnNawi27gJBWjqm+ Nb9DWHp7JXnDiSMC0rj2rUeEctspeak8jUP8V3GvJ60+CFCMk7nmY9/0ryMEmQtO9m4PzB20X/R1 vl8IYQ7SqvZ+zIkd/v0L4Q13IodJ76oI/ayRdS/7PSeuh648+WpnQfKj0SwZWDzSnVQyYVkfw8Mi bI56zdWOuQVMrB09Ad8onHkg3xQkb9vRQXMwxOLFLeqcLf4OD1BbMcMuIopFp93xG5UYnLtfvsq/ BSbOVj03WKWRCQv7Glr4fWIqikQouxU6TAXB5R3pj60zXhS9KpGYcN1B8HK9WFw36Qb0hjJc7Oj4 2Lqs5EVhUeUI2t7Fhemt4YrkWnPu4uufdDJFl70UsdUD0G7xzo5xV/qEvZ0bMx72iabBbyhpRzIc ZTKT11n5v2KuvJJsqjusx3TUlEvQ5cq+Gy8URJTkcYiEzwgzMi554qg3vXM7iApjdbuQAVvRt6Zj pSMKiY5gmhqzYpeWlMOe+9KTP5ypc1i2ErQuZ4NRnlxHIVklrYJDh8+ndoAM6eJbdq1hrklp6LmQ tsopwjxKLwTurVQn2b4HO4E6j922Q4zUaSo9/WwtBdoapZiYbJgCqlpcsHiGcREFRyhLESNT0+iw j/ZJ+ucgaUuD1dtjJ1qKhk/EVr7CAhlVn58jXLgYrF4P1/T2KOsYQvIOqpoWGpCzvtmSCSM8S/VL vHLDt2fRExNXZOmGzRrIBCdxdckOyJ/Iuc5zbFjYWb+PyRAJiV4nugEUOJglCk4pzPSt8SLrRd16 Y6SVrJDNhmmOon/g70dFd0kT/+3Q37qUKfJGKSwsRUEpYC+cJhxMRcAGp33+83HV6DtDYz+/sXPI ViUmLUzl0d2o3cqmnW0SUtIwRGYsxQfWCXblbwRiv5v6oMdd6jASA5Hpf3W7eaq37lFewtwy2h0E Iju0KRANDVhnGJdDc0w1Jof3olAs0ryAtjDKJVuBWvbO8vIzK/faxPDeS3OM7Gkr3fCzmc4uCnqm QIf8OC6H5RPt/W/MQghX5m+xzuwGElFx0g2Xo3Dx9AyNXit5fGUlkMlWEIufmOgL66XJuG5hqaxp mPBZAQ41VRsrakJBVL7J+GzzFT89uxOX+pNz12N7S+8WMjkhLTCfIZF53ZI/C+RaFSI4RjxnWJY9 VxqBlZc9d1I1st9oS0ubV2PejBcNPuWQ3MrrWrv9xFDHc3V8lJ+Xhy9e4kdlYCO6bsGF39ynZbkH /baiJIaJd6K5AnGBSNZYyJClL+NXQf2RdLfPLQ5FWQWCs6SAQHPbxwSJct+uQp6n+aV65UqleT1R rNxw+UsbUxxvvwEze1v9vvStgmyt6tCEXHkcxVk3LeWJg4GEkn1s3LXDrS8iRWV5KqffdHfT1SqU zVKy+SvKGclzO9gKLy6bF3QsWztTXYvPZQJYj9WVDZeXDVaxvsZrf6yvJwTkAfH2dLteLRLRXlZF gzq8X0b2VD06dk3DeIOETdxdfXUsfLILvz/wlqBSwpVIOUTODs8N2dj9io6bf2SldSob26SxY+oN 9RUQaYork3h4G6mZRvPR5bESmk4AyMGMqKhHvU2dAmUHfnqx3+IQfagSPabgRzr9dmYxKLq+e1YT /SJ9ua/Ci6PmFl91NDz8XNu7oKyKSaglHW1g/b2fsNFyldEKpu35Cl81oos10MFk6YYDR3RZUfSH xOmPA1EMzJF7e+R1IHof39cnDD30KIIf0TBcUuB97VDELn95RMXTkDWBQjKkmLUBRYEaK8zqlOkC Dq20Ci0pY/yK61mOmbF0o4ptuPTUVtajYsLETbD9J92PfuFrdf8Nl27Dn9bfmAr3ZW/rD/cteGSZ XIbTA/GAy7zRbOgMexX/6WobVeym2qiTPV6G5z4xaEqNv0AjURZv4uC8MesegoNlYLB/4MSjYYLM wsOrooItPixpG7pMKPr6fC84n12SnLt1RZKXG8YUvizpUH9HXVw+cNJMXFlzMUOBepievOcnlc6t d+zApwxuAD3Wa3p3AJpL4Pa9l3X3Ur3pzKa+HNEQNpWXn4KLs+jGIXz8vYDFNsGj9q7/CIESDhRu +zgkw7yAkmr5u3fsR8dTZS4KzeayfgcB9meb1PH4QCdJBKKlHZTobpCRbdCbundANDsps7T5RzMK nEVl5TqA4ALyO3dMLWZvN9NloCI1uEO+62IlPcZglUqhoOpYcG1JaRn41hRT8Ldtp7wJVY6yZFpl 4G0+ouHvifInh6wFNpqmfjwEDa3zfytjfE7+XHH1UjbSXE2reZDhPB71AEXcZLLjs4hb3rjHktu0 VMpXmFsFO5pKutmSY2YIH6GezEUKrH7PMFrWN0nyBaSk3bTqCFXplv4wb4qkNi7P3G2rgF4jW+Ex WUNnEsRjqj4ysDgZ/pq7bMC5cW0gMTh3+6MiwXBB6eGQfYaPoxEwpVmz+QDLmJe+MiQ0tFDnZeQI tQ3spxIKKQSllfZBIyLOXGUuEupVGBR4KBNOY+L+13LMBw+2l7y+vucHjmem7RkTrvyxKvsRoAcG WaZnQ089NrUwgb4ASqUEqBDe+Ly1tdWujtmeNXwrS1S0I8a+Qidm46RM3+T3hOnpy8eE3u1UMtb7 wsiLzRP7zT2UtofPzqrHQ9ST5rSM+IHs8jk2EywKJh2FpD8amEHRF3QvuK5SkQ0tKW7XqEv3OGLL fPleLnuIappwdyIGxI5KNN4gXV/8LUGOirUnL/dXIIasXyW8hja5Hx0f7Z0WkfLVFL3KeEhY5+Y/ 2nqaIY7HkbJEFYW9/mRu+ft5Zc1x9Uq26v3ahpOiiaKOzOKeckyYdzF4cAnJmbEfUhzN70M8tvhJ RYA3rOc6Yo8WEgAkI+HQfp8fTlVfUB4XKLkysc0K3Mh0UVdaQ47b0j2ulP3CPIUqEYtaLM0U/6t6 bqKjhh73KfPh2nRj7PXqoj1/RmwdGbxWUN506qS4cg43kWNkI98Vlz3b57xaEp8TC68rKZ8h1ZE3 6tUbuBXgEC9+rnQwp+06pqDLWWhYTHP8EH6XBOr62mZT9BhPWET44ryJN5h0JCrVsPBI+QzazKzK tIl6tnBZQPNqmU9kw7Es1x5zCN5118IeCY/PXNricrwLRCbMH1oKMxU7sC2PQ8rNPeZe8xJJEL3z TQ2fOI6caGL7FSZEyuoTZbYkK0rUXtWXNgK5L7krfIBsL7WRx/kIv6HosCknrJhjzj8qpHkoV1RB us7lPdXblVqZhhqmYF5pLj5azY0VKWEiQgRsHhYZOXphP8UcjXrXPXroOTtrn2C2wiy665fQfC47 4VO9y+zNuM91pN3WfWX5D2emE80r5KsSw4PzvalIXRBtKdgyle7KsE0HV/eFtmNPNSdaUiwAZf8p t44sckH+Z4/8GlRg5DSGMFjKQKWXPQxzmfXsqOviQh3qthAy4GysJmDAjNNGPxuxcgOYZMnyT8Wb awOMbF3V436tdDoRPadvjg+lj9HIufgiezkSh6iu2tyVox6OBJ3ePhNWdebCKpg1XDWdXjEzV3+p pNiVr8B8iOxcmm9c5u0bE+cvDruvO6YSZb2thBuLcX3c0Urhcp+xskPtIwOJjy3XDaH2zfkKsSWg RqpMrtjLy2KAWFQ6LSawPrYGJzXvTDmZi1GeshxWeVDEl/MHUU9mGi2X7LrxAgGSrJG9tLY8acHz KJettjQv7llDvJHb7Qnq2oI45P0HOt9C2/z3GRpr6+1nJHpZR44/Ev3JBDQ832zy2tDY6a9Ir5Fe 818U6ySsPfteNpk9EBoCE20kL744P3HRN7oaVZ+G28lYPZg+QQlAs/QN9EYCnVDdn4w2I23cUChg GXwTCfUXF1udFpgdsD06sMx+5MLBFxmu3ssIqjCdj5eV60earrz1G6lcXzips4AJejDwvaNFAkoq OuNbbz+/Ov7R2rza2ok7azkBqEfO858LtnhJI7U+7h2X23XFjsWeLaEuOTKrNJw+biZC+zJTDtzz y8hDTGqxT1MuPv3JllQ0NBR0Ne+WuKUiByJ6T+P9V6/X7wJhpMBDZr5qyvWkecKOkvrVKnzAHuEN foOtemZPh1eQZn1gfjqVXdtR08++d6CF+smCy5/xGdBhNohrz4yOmZMxv4su8bIYGUz5y9pQAbcQ libXvwAUooQ5XUZWTEOvWoEjChuHsUCbB0waFQ0DBX+V3lcrxYkOSnc+PnBomL9q9GkFYDDtXTR6 u1V+FK54GG9YPPWsmlzPcmufiarX3YspdAbpX4ReWcJUvuJMVb2SfWKnLcOa7IYw2P5ovkpXU1Sq cz53tvetvYfgkPjqQohzWiCNfwLeSyDA2WpSP4m+zVcez88PcJHRPKii34iJBM1GPxwhFGfR9xPv 4PTkUzWsZhyKK6geio7Z4iZta2366C1/KSuj0FVVWQNFsx48j7vLR+DkfKTN8AY4B6VfCLPWjV7N iKXrfVc9c9OONHiCKNYkr6PbYA7CQdOLrPDoR71omx/KqpC8W9J/hg6c31hva/ErDl5niVcbLT/T TSpsG8BC/ApguoZgNZ1iv3oqeOLAj51C7zHOxGAwgcgS2s3Rt3oDsfSYhA+YyN53vF+/0tV9XlVV tbS09CU6WlRDA/8JuUSWTU08j6Mt43ht657nN6AjAzbwutRnt5Unnc1p/TMwdIaJVn9E2vDriDlR wG6RTfVb7lBrG197zm5HYuZy+EREQNAk1fmJAA4btfq4aTdP4txaHehv1ViHLmKw8g7B7llvUyUD sfoegcDb8kE3F6Q7MMMcYglpcr3dgNFoG4ESF5gYCiy/lDXBL2tfVSw7uqgVKUJ053EqWcrUlyQI RxjEtjdSJ6Igx9j6eVV4yjrGb97Z9zIYI9O32GCbvuBHq3xUbAuL7quPvr6jld3BAjef5HB86+qe oaOPjE2o6RgaBqWn42RkCGPj4enmGSGbW7Jd+1nDv8vadORyOWdnxww89M74QMzKZ3nuNorDRRXt bJbZ/rolt8o8RvmaGA/lCftW3RQtD+afvifEa/+o5sNSHNEbJtfAszxN7eM0C+1VZxaXJ/1QS/C1 3QAbb+PJwIj4diyy98pqcRD/0lPKyuipK+55T/9syO09MZ3Vdd9T8kixy5620HAKXCKMakrp7GFH sgfP3lSbZtAlGi8/M7163I3XjkNdWDX6xoMidcTqyEUlxm4qBs9ytPZA8bs92uibyWtK1qCJpcMc NTX3gsLCtrW2D8VlrEKyGvuGG+Hyb9X9IpSMY3DxDubt7v7sYVjwJcAi7MDbMhOHut3Mn7Dt3emI eB1pxXnDQwWgoZWigePCRk2tGukD8ZVmaekFL03hp9ORLM9jW/F+YHto0zV57IpSFqXuyQEBHGXs urw407Dk/93Tyc9xlz+a+dP+PkrEEFVVxaGiohqQhkAOz/gZ/6+ecv6PJwpVHd3oNSrfBQdjBAUF wd6MVjvrCKfZ399vHBgIUS0xYnuFitfb5I2Cw+cCTd1SV682gy3nZfa4OuMmEiAmhpOWlgaJyNTU 1H5GWlMimvk+ERERKhraeKmpfNneTJ3rExycbAd1zUG658/hnzwJRfAvSYoFAbOwuCi/ew1bkZ4t nzniKvC6U0lB4aMEOenz58lSk7d7zRgwX8T22Jni+uDlVVxebrQ312gfYDht4q/ufrw1HkrkcZbc f8LwoFtIf5VMckNdGPbTPi3+WBwWaTHvjab316eqWJCQkNz2W7DMmo174kRfv74TSi6ZM2oDujta oJk7ym/2GBdXTV+wmik9LY04tJ2Sjs7w6mzf7Wq/TS6qHGppUVxcHMdllyE1KZXIH78+mGl+1RWA w+J02M1R5bCNi4mJSa2bq1xI/vz5+5F89dGLsWPRiqwsSgNm1UABZ2fnsplMbhQs+jz5zKHWVgQe Hh4/f/9fj/9dXFyOtsZLXi0oKsPWmFnN1k/chouRZWRkbE1WSF9oW1sz7tZf7jQHJCgd12nD37l7 F/ZiPyiKiseep9Q2qoDOaoz2FcKmWm6BwxwtQUaXIRnrI0Guv9oTz73b1tf3haH+7I6rq2t8RXZg xaxH7P5iW2h8fHcQAQ/uMnZZv8w6AmwhHLvJuJxqvVI3ERiCMHkok+fNFQKPlOQb/sLY1q5VuGYf tFylUdgPw1EnZpvHj0fB3pKQIF8EHR+4VauABEqQp2ZlvV29ZhXGGf6y/FLedISA6JVT39X54XiR 7l1RUVEAO2rrY8Wk3t7eTzExbbfGmOBmVm2N/q4FCAkJSbsFYtgKtaenR+6u+XS1/T0EBHabAGrc uxvCuXJycpTU1HKfUyMjsXp5D7sEA+IdPEcvy7LZHKrLTAd9Ej0ukN41Nb3+9XsZre/r6/lLjLqb Bga+MaW8BTNNwA01CXMfVRRMw/u+1p+Kl+5W5X5ZzuqvA2vm/n22M6ahR+e1EFyeadibNcgoKLC1 0LCXm0FvPWMpsN+/f5+n3UD4Tr8tSNfCQmPTnVUJZ1gGNsyDoF7Yzw9dnmwXf/sG+6m58RLj0RyR 3G7YDzrX1PCws7ODceQExB1vDKMICAjAIaDhfkxMJGr2xVAGkujnrxXIElGM75Xy1eY3NjpAiLz3 8zMFJzi5uWHvHKcI+ctQh8N1JfDhgcul4rlb1K3qvEENHh4e1NpzYaGhgm/e3OPn51dRVe2vcbSC zNRSeUeGhcHeIe3q7kZCRVVYv+bI6OqSEA7Afl9SAnstFfibvFmeckdnJ2yBpYqa2kCqCAa9Vi2l 9/LqKovriUVtba21ra1eRxgV7EXRt1PUhf0D6eJ4Bp4bGjUOgeWWk3rm5p1ZsqlvpaULT/kNmXHI ycmjoqJ0DAzuvQNhctQgRqNc8IKS8gEeHh5sIaaFRd7TiPDwFmB7G2vr7z09QYR8Ll+ioh58hyUX MJhEzxsuz6t9X2iD4kxudRSraYhCH2wxawAehxSZhvzUa0HBaB5H+ruI6D9mZxOLihjDoShoaIbn B8sDs7AfViEVCRrCzUxKIj44OHgrLq5/fXH804C5J1FAGsx+REREZU1NaEjIB9ASBAIxy6ym06j8 8lzQh9FyghX2A74yMl/EtKpBMMJ+0Kajw+/Ll4c70zWZ367DaZSdtorbioqLG0G7hQ03uO/YzEf6 cpUZyvYdoNClpfZQjGWP/NwCzRpm6JpMXFwc7MVGJDS0lvHx6FAKabFEUz9z9OPOVYAAoEOtAThe YArEI+lbRkcjwWSCMIZ/l5tLU15e/ucXHZic9nRQUW8u+He57FbeDmZ5eXmlm2tR0dJK4L53L9L3 2Jt7hY+Pr1LrxKRZ49AClC0YvtbqmXQMK+w3bBYWFqK47MhhvkE6AMSE4vjYWJHZMLXL6U4gwHTg JgZGRhvQbrb+CMjExuF9FMy51VXfz59Fy7Ihx5Ic74r1234tDI2LkzAzyxFrk1WvexHarvLNAOn5 8+ewVU52K11mNrkd37+/A9g2Nz8kbn8s3bPq4+MDpj8pM9MXRB7whYHrHPF45//1bXQV94MB4D0m gxlomtXQ55SUn0DwPDQ2NiaXiqN0Nzrbm7eYrY//9o15pEBT3dJI3r2D0tI+hX2i431HebG/Pwrs Z59rdutDJ1q7X4U6uh0dH6uWmT1bX1+P47T5cH15yqESfPX9/d08jaoQ+Uypr8DjTrYn94+Owpqk 4zjfa9Aj6gCo/7lsWw6ZVrMUmHU7RGMx7lla6Y7VaPCIB97zFPk+zMXA3Pz48Qb4aEcMmzns1WyZ fU4Z+shBECUz7qeaS7ZctlUa6at8hh1PC7TqOoDRfv78+ev3y9PS3iDPlpljLbYFU/DxxfO7XzBa zfDG905PTMQo5iolFxb2ojDUfk965QWdKU9L+wg8uUCj6rWwMALoLxkvr0b6YLn7pYOWyzoZMzMz 7FX7VOHAlNLSp1lRH7D/l7dvVxfNS3Qa79Sfr8TijiJKJvBGUyS6PVZWVq6/OuhU2/UczJC0mK4O B2OxtbMD8QNxT80LBckkCPbuAZHn1dfSUlYfNLzWT49I06DXsN97FxdfBBZLy8g4aMHSfhuf8W9v iA5cs+t8h4sPJnr8uAkExliDpwAhISEnD88mPsc798uTYsNOTD19fVnq8DyV4pQZ04WtrYD8fDqQ dkHeRLCysgKJU/L16w+selsLCx806GFTmWsjgIiOP3c8qr16sNwJe9+ZjAEMBAcDA2NntqG3jciT NtAA/ikWFovbmTUMSszMqDdHC2GLeufBTMMWh4Os+nbwLk37su3B4eH6QDqKzO3l8fXpLAUnZ1Rf nwwJCQlUmrc08u78/DzshXlACmA/Ku7PUE+Zri+veSh2LFkB+117QG72x40TbY43FC0sLRUz9BQc jmC/KzkoLZD/LR9AuevpDhkFhe9wrjIMItEJeSm9dycrgtfW1nAXE/7La9dZg86FIGlUaQQVFjIA PHxDHyl+mpZxuf8KfDEAGfXFixfWIEay8/qg3fbJVNOlw6uwdY7A0bLlKcouC6SrFVstQTmLsaL3 YCKyPq7LMbS0tsJyZ0pKCuzNRpEg/P7zMZLEUUn91cMYk1wWfX19JAwMwG+40jIzYcP88flJlc2i T2nwxVJ6bS1vEJEArJ9YDFov+PkTZj1v45eWDOAkJCVhP/rI47hjcLozPZwhMFIRMKBAsZGSYZtk NskJGI22x7m3wM2ZoCXOsEJM7SKL84EBLLSTk58XFBSAWStvTLBYW1+X1dCQkJBAFRISOru4GDFl uu1LFoT9tAMcbOU9muN/viXrFYjHsVHa+1/fN7wScHUkJBw8voW/4nMlj976+qz43nM9itdhSVnp lHTpJgrqOWEpIwPLmaURG+Q5w0rH6jnDZrlmuWVZOSlDmOKCJMUUX/lY7Dw801iYmUOj81ii67V7 WTCiXXerVhPsIg+jXXeq0PD+n+reAqiq7w0bPYSASEungHRKN5IiiISUpIR0d0lIt4iASJcgjXQj HSLdzaG7Q+qu7f//zXfnu/fOnTtzZ+7cM+f8fp7NPnuveN/nfZ611n4XH8+fxwQEQfpNnr86Ox9I BWP8AvzT+k+FdjG02PxJrBwOGZnVueBDhZvb22cOK9Jj+SpIqj/woae6gLEp+jwIDw9vk8IWRQ6S 9CfhNl0CURLKAMjFzQ2IpsG73s90aGhofsnJZFCuj7OdydnK/eHsF+2Dg4O7DBwc2DAoQbDz/hwJ cMqSaR4h191QwB3bR0cfA7f/6dGACcVsYPVS2cPvQDC+PJ+1U0iVfdvR3W0MvkJJ1wEW6XsfyYCw PHBZmKXGLKOtTfonVRg1TPqj695MpmwUKUG1D/jij4RKw85eMlWqMHGMgn83UzBs/iRefhjUVnWv lA7YTHeuQqL95aEhlLa/qzWPZ17LyMgoslsjkV0v0qMBYA7AhRBQxVbQTsPDw/REXwGFoRUUJAEI GiiZ+bzBdW+oxdcXSm6Yr1PDfnNzY3+6qUIu5k0MIi708KLP9R4/XBCT8f5OCIQ4ZFRUWhERclHP 0zKPZISdDX+AQ1kSASif5J6aj+XjtrW1ffr8GTHDcaeROdqpvRo4HTZzfJ/JLGwp9gXlL02DD0HA 7Z8wM/eZTIM60LCyYuCFIYMwIxOCRSHvoqfKHN9lvOmPSgklhmQ3aLY+OU74Uim+YAcYfb5eAx/s CQ8PvmUV6fNeF9uIz33FjZPgBB3ABhFgIJ42v1wy3nFhYmfHgi3B4QEA3FVT291TiDbQuj3efgDU EHrKNhiDBDHpVTAI4plAJl3uNxyEFzewdquam+c/awFYY+/kJPXuXUbvMWinbqdB0RDAEQh3tjUW nL7kWmUVs6ai7tuRhQQGvhvKkMj9i5v5s7d4ULUOauX765b79quTjczRrU+xsYY3uZWNQm77kTIR hMvjmgadINxAmZuBEWS/jKPPle+eCzgMCwvr6e8HTDDwqAG4eWBw8MwXUyMjGlgGMG3CDaaZfBcH B6ZxDoO12PR06HktkmQ+G0koaWZbw/PgxwTK7oWjrePjBADHaoGY0dXTow5sLTNsBx4Ag3k2UTLH o4Moe3h6yuowH0HEUX3p5zmM5Hu+Ow09/QEEh8byrWaErY6yMg4wfRB3H/Dz16DrDd7iPX5cbj3N BaVy6Dr4Ik9XYtCCBfvK9R7d0dGREyC6bp3jA8DVpLy9RcCLmRUbyvCRJurFCQINfF5B5xilNceW AF0maK8UNKmA750IEArQ3gMdXV0AKBO3SRAUPBQUFR8oX+4kSRRrV0Xq0QGtsLSzY/XzAERJkgP8 7o6OJaB7pDw9hUAoKAPRFXpUa3PsR1zvXxYnXzbspFcodbpYP9TQw6RBh5re5NZw/dfqSOrfEVcr 0schwEDhoCJVzNNqFmsHAdIyVFs8WWoAEduBHVc3txA1Zt4STeZ4jZ6jdza+rH0jMHa68To2eeaa Y/1Blqy5NK99wd2p8nbiU4SgwbspRz3mA8HI7jomL8qNtfivX0MB6/iqawbaTnHGe00wAWMj8/Px QpWVJo/1FE72ixj2am+PQZW1+Um2f1ZjVaUNeHlrd3ee2pYmfQOKGGCX7puZIYfQYzYdobif5HPd 96omy9wO9OOuQKs7C6V2On+Rz31JVJ7VFUUW4gDvoubmfgzUTOfYjzflHiemcR5P8V6G3WJHnOvx oGFiysjJhY4PL+Wo/piuxEQYASFzGLB9vNF81oQ+l+EsmSlAcVz358L8/GDmVdrGz42VTzXDdnet QdChZWTscS+fLjcOeVkj6bSDomx9C3hw18Wir51rEnAUEqUEAB/mE0UkGkVa/haj36drO7/v1FQq EcxXf/mCD4h6MrLoxHn3T3RAokH0egY6u2KUlxQTSo4HnJ6Gielhk+dZWzgBC5TikmSjvLJlmhlA ScvdX6sfJ6ZR2sV8grKjo6M2+tWgnlCU/MZvhwW48aazUIqIB16T1wX7G/1wLuS6GrtFPn17u4VG C2tvYCvLAHqBE3HvezExMXWtAfgr8733AVxoZa9msQswkcjHDK/xd0p0Fm6rmEnO0/uKTgqE/hy4 3Zcb2p4WAvYJYfJUk1dNuYIGoJkUWTH1VbfljE6TbAryDTbrfQMTOx7vyfisv/ZW4MGsm9nfOt43 p8THvz8nbYXPPYs5+fxlTJaM8x0MKEF1i53q6sZX9O0ADhBac4q3GDcYnTb8s2yMU1+HjI2pwfM2 4XjnJpMltnV1dT29vRKAXFPHyzvsTLDB28dleC1GkAFuc3kc3t9toWJTshKWU4r7kF9fHLyQkEAA BrHqWDctjAUovYDnqfmP44ViHX65p3hQSqGeP3+CNQo7QZAqd9r4Y2RB1PTeGgcHx+/u9hp+tZHe DYAYwFKZ3aJYirBbidoVI7bCmuf1uQ2wo+7LyBfe3t7lrccg6l+CkzPHLaHMR4FBQZkeJ+tD5jzE Yt4CgOmHghqgUQP5p1X0KAOoEkQkpIj4yZXOCAfAbCqopMpMOK0mWFn16sdWX6tZVH8AjWmqhG81 UfQL9P+npKQwEKpWyrspWaqtX14bvxW93q34Ku4rBkrPAQsKeFWk3zRzidELdEbkhyI9gGSxcuF7 g1BlgSRO6ssR8aigFxGZE3guCyCBz3bO/KS+vb3dAQgr+HNEFRWVS9DdzCZqjAYGBs5bIw+gfWFg uk2e46sIE+CaNEDVPiJkfQ4a0uf+1s37/vYCoumwDEDgIbfQ1dWNHJRLFXLp281AXZs22MsEaFIQ ffKz9sM1H4CRSD2m+0s4NrmAfYb8hE1U1e1wmnVT2mxA8SSdwvZkKfTgPmSlsMiNR07uKcJ/HPSV lf3m5nQ3zzyBAa+urxM20BpvfSMhIgoB9OUdoPhdDYQ6Nba8W8d2HNHe0VyTfGJe50W9MK1z08nW bkAljo6OoBICZg5l4KrAXg4JCTEGShRSYTykiuWyo8C3lUv1RS+vrwHRIH5BXgdchP7VVygXGIjT cOAXprRjgCM/qjAdkATQMBAAq62tfQeMDiI72+OFqKCtRE5+c3eVGEJCpjNTKgQHHz8QqKdvkTQV nmeWPJZjaMDtD8/PwY25IwcfqD1QWBMC6jsnNzcTCCNoHwQg3cN5ywAZjFrrT2zv738Erg/YL1lk ja0mgAogz2mEhEiB4nAHOOdwtNJptGNQ50j3XSkdi5+fHxprfG54IdbOKH3hi6GHj+F5uukPCpDg uUoFg9AQIjfmPKSVVpN/TGayY8TCgUlnA187PDxkrB7UmqXq3/6Rl9aW8zLu8BIe0z4/T6GYzAfp x6jZD8ttD4DSQAXRMTQ09DlwLSgvVlLO0ZRxTKbpwDcIMQHtL3fZmWDuTeaFWgD4CbQ/VCSlaL1a ADuP7RyxJJox53CmFGqPCZexZhpgUhmAOkCZbUBEi7yGsvVYy/uebY9P1dhRzVRaQFtYkaZvIKEf 7H8ANna5lmgASXXD9uDl4poFyRrbeRgsNja2Z2CA97zXbraa7RufjWW1jonHuaZX/m+h0gJ4Iyuk +ps/XGe970/YHM5GhR6qjyuJIOO3lQb2Gem2jUmbR7DHrPa2aC/m3GQP2rPHsggOwg2UADMf1KLc Set9+Vm9SXR6OhWUYvZ0f54MSPAQ/VJ+/YP9bvicQ/QJIJaSxRrG1+d7UM6dTI3CiKbJ3hHeCkBN IOwlZNWC+fr6jhW9fayQyF5c1hgfQpueHV4dRcZj7gclpU0XX8z0QfsUyjVHBqWJ09enBNTA/mJf z8TEZAkwWQG3fd3yWLXwmZ/vI9qbGMMLauxabglB4WSAkux8pKLOHSmgEdv+M87JvuO2Ssi+yxHA wWCZ7bxQiPdWOu1GMTgE8FrAuE59w3irlyGd525Ih3C9vh40df/KDYhIQTgbgC8giIsruXtZLS0v o7i5aeaPy+ergfdai+C7i1+YoX3GS63+Al7nrJ/j4hQpTekcpecM+oPXZMcfXkz+NKxTUX+3JDX+ TZrmF5Dle6mYj4G++cptFt1UIYHVg3sxud1K0j/A6V1G67jaqI76p7ZF44EZa822NysmMWfGVIRX qsRZESYNaldrSGiRxXBWUCeRx0wy7UZUvtCPP90jfghIu6lB8oYXRF/xcKGXOh+KmDT0Wj0lvsSB jsSOGi9J/Tv0OsYf+99JgqL//zgpblYY6d+x08WET58Cdybnl7a2oD6ora9vHVd/EC+PECSJFZR1 Y/gIiYoGev0sRMG0bJucRPLxSTs8n2htz+aEqRbGK//4ovwDf00ftaEe9//b6irZHmD8OzbsqyMp iVdi4BaQl0c2N6+3vL2NqKlJoMb8AB9dED/8OIQNwzsUevWUkPLkPzQwwL688mib1UHCjmmDyRVr SOaqgvcXL4rdbdn/f/bu/2ddoD/Ooltjq6de+vlfA9/BC0QOSYSczf/Hgd0OFVvvskKy/yf3a3gg hhfWoV9ID1mhI7rZn7SulVy7lYM3DCwuog0Xux0j7yPKvA5K5PWU3q9Q/DPWLMvN39OjU1XXRBgU XBhe5/sFY0sbm+XiRys5Fpcng+LMNhTxxX2L8H/3MuE48HHCt/IVxIS5N3oZvyIfG/kjyJw8avba 8CItlfhKmlxXb5yY14hH7H7ljVyuKg+WneryjtX4T94Edp1AvuJZDfcZ9U7Dg0tAygGfgzafWHjr IPDs2TOtciOZulGglCEZXoPeE+vkcdzLALGziNHZGrsYaFusbS41RS0WfrMlVpcWrwvby6uraWEy ab4kbjMsAx/bIFqDQYqjxrrzxNGvfI2i9Ng2IS7CBWbCJ6dJb6DqRXqvvGSMR8/JnfdX/dGaj+sw 1WTG8DpdUH15Z/fmOat+Cg8mtvO26rKFJkEDqhgQc1PlxqiQBAABSsP978RHBi9kTUBLfn19Ziyf YgbEEgBQrD8pgkhRsm8KThM5DKIB+5L8oZYF4kiutuv0z/ef5J6Ct/IPNSi740yVlUJ81/58Ay4x sdb6VjwdLy8BEgrGc3t7zqd4D10PFvS+O0MpJ0FA17Re79n64pyyc+YJ8RID76Og6a37mxPsMUve u6sNqoitvO/fJWlinxeOG20OZWo1upd3egThhEZGdkCJKgps8tETjicACUW/8u9OOU4L6Evmd5qk sHK56yQyyFDJlh3aOXv/DQu/WVCUnh4FhkNMHCp+x7hbYmTjy1Pm2sQ+eDanusAcXiXkuxavWSBS W7AJn8PzolKIdh8Y20Z2PK683Flhw99kpeKOLijzmsWKJMVFzVUNWy18ebk+a2e/Jk+Dj/5ANoo8 at7LVcO9hl8MLvWey7gLA0rlJicvX/DlNODjR04QNzs6O+Mtrv6e7WRnZMAsLCzc4VH8kHhOEXlb h/1b/UGY9Ef9Js/lWbsWNk2hAFRsWXd39wdr4SnqL7vr1Jg7AeWBLASNOlyxFFgOtE1k49mEDsHn RCqfSwS3g4XOMsN25qdN4as9HoXyE9tQbtAQIB74F73ffN+iK68WV13LB3VTEVzhfYPmH1kkMveq P7g6o3VhmikeMuqNkj1gzZXPNqdPR+mBgiBKrrlRI77pWSPmdeQ5v63Pe+Xmw64rEIO9stiJenSw slvnJT7y1atrQ7ftLbyRiD2l9JNN0SssqkvvkwF+NCws2efPYaa/vyKkvkZt9dbErNONBhIXAZaV nY1LSIgC25yuYIA2jTpsxybbqOK7BaYAKZKb21tcPLyPRPruCEBNdW3hhSFDw7Dd0RQqDa42kWT8 f9ZtuIqgbRZzWaO8gEUGhIaiuXt5GQ9lSNS67CQ4zLT6Iw2XGoiDY4mCH+p0saq0owC5hIbxXsRQ PlC+LJxa+hUQdXL7d6f08PgYEabb6I5raGgI3dx2oTGsrIwTaCTDu5srPkVUP2jXJCC9wImSASiY ZY5r8nAeqVQO3Vocm5lKaIjjcCsvfaZREQEBgVjYlVW70lzlOxc0VwmqtrSyYnRe/UFWFgWSWUIu 263t7UjA/aH8Kw5/AZcG2IagpKQESDAWUIP8r72ABQ41uNlByeO4uPCiyPjZxznS6OJ1bG3ZgdvQ K6VFQgNcQKZ/5bdLe4lkNpgmCm0X0NjYCC7lDxiyutYC7B1oq9Do6OCaGv6PAQHQvoQzXy74bGYy lNLFDi8uoCwAw7kKRMjIyFNzubTs7FhSwRjP7poM21EgXshvOweDmbx/bziS8xIam4OGWi3HGAH/ I95YrHNioKGlXd7fj85L80TXLp5Yt6l2TYkhfoZIQkJyuRxC9RtgjBO9Rql+FKBy042vFQDj9APl lWDn/1B0AqScbBQpL1Cw7xxZt5yFoE1aAVsPKi3loPS5NDSG1ViM0kODLMU6NbLwrqjyd78QQTG/ IrNP9FXlNCp+43kIOkrAeRNn/U+qlYjSXJPXZO0rb28RUn5bDA4Ojo6urpXd6Qp6iz9pomRAYkK9 5u4uAO2dB6tODZA3YrODJtS1tL466HDoN6IBnQQlg/Y723n90oU9rheagGTVKmu1XihSrOmauTO3 S0pKgjL8zs3PQzmz4N0xZHnxG/WVrnvawEaW590WobTeJinNxt1Yxp50qQ39XnoFPfAbnzXRhJGR EU73w3cAuH91d6MCJVvruIYOm43O/VySNNHHxsGBDdwBqjpQbNC2atmga9+zR+TuxGTMj1oNWZ5a VkZeY6D/oLRwc3I4eU2YIxnSs0yVtVVGYM7n/WBBt2LR8yNfSV5nXHpGZ766udixMY/XSrZj6QYU 4ZqNd5oyGK7Qm+8Naeu7XNsD5j0zrHYDLg1HsWtv7A65j8MEbn46hbw8NIpI97nDRUIV+Rir1GF4 Hc0m4PLXDvbj4bLT/1gL0Jl+JAiOWc/eccuK4Yb4I1H+UhK/19q2KXDMwnB0cpLx9KyXU1QkePjw 4UpPLK0RsD6jq+O1FaAWCMWBFfB+N9Q6mzTwZQNkvRPUsxMI2KjRR+joyLCjpQDs8MhIDAeg6IDT 04hdrT6mDsRpcN3Da25upr/63GuyAqQS/SICTp5SenUtW8J3bDK+V6fb4wo5eXlQ+ulwoPfC6pw2 vrFeAA34kDoQggCgawmBcK2qQoPyEQbJZuMCo+YUvgWFIICmteUUFB6nfzhP6q2MphCGZpcd7m48 HIDI+VceoPQIFYz/nm5Bfk94gkNKyoxFKWJ+PA8B8/Zkqd2N18FCkyRzfDgwh0fUgZArAkX/yeEv iJ2BeXl5L0mhCgBAIJy0svDU10/L16kpgc7qGRwkCsGiwCONkt2dqxutJYcdXW2kg0tM1TnlDZnz QPtrrdT/7u3txYV1lOg1/H5NxWv5RavsnX/nWnZWVkdeuo/27jUCEkooCKwROTlPVZSVn7juzzEB c2cJxFkBEQJE5HA2nerQjx8Ry4060ZfX1uhsF5vZAhlZNYmIiOA3oEoEeg2uVRZeRfHJhl4vokjp AnGAS0vxmA899z4b1wTxBcr0pqur2wEkfqBGIQFoSYL9/f2Vm6uT3L7kXMdrwJOCIiIitFp8mqAa gbbF2ZkormA6AF5LCE2dTDW4lR5pfQBg1jGqJG7zZtrEzCwCqEtcKioOdr36pzc3Nx2grSJHX0QS Uwu57bOqvnkjY2r6nVjEvYxY1LMSRzIUsKBH2NjYRwBSwm9uvI/2Gw7QYaY7C3hW3VfCB420WVlZ rOzi9kvPod2X3s5Vx4j9lds88yx32nh9BLo5KdUOmGHb4uLiqsB0lVXiJ2BI8Zr6uNPT0yugSLyC CVA+Q8vJEjY8PDxpV9dqYkHHnCPdY3iMeHhGxpPY5GQWUHv6YAwSGi5ubsiCQKdIhn7uH9dewIBK vAKHR3xosRxnxsXHfxpNKcqMjo7esdIZIZMtGyUtIeGPk3XYuLS3x1aiW0cDeqYt6NFKR9hjegst 4RdvjZnsJNGOgLmGZUqFhDc2igxX2+iA0N5mdPLFWY/5xx8n4FTKyp+mGj2ckr4b1NpL3FzCY0DH QDvCEcxyFO/FJJRMVr/mePnSI1nUqxqwLqOT9QEacXEDKJtPls/t3y6h0tCdkUaPk45P1FLhH+z2 5vRwJ3PDBf4M6A1i9nmyDqQKazrvz70FOP+wWIMFi0LoaYlBi+3nYLbuz3VW36scvfaqJqVNTHLk Xr7EnSzRezzwjfdxZmYmXUne0+IVMVwnjT2iEzFRRn39KoPf2leFxEe+Oh1Ij5vxHi9O031nX6TV 9/atIW5wbzA/3mwgqE4TpCIoseoKue5QOPLqb0qjU1jE0yylj7i5EQGu97bcvBfRYSVnS8xhZdXA aPjzA2BrFaA6SrpN31gTWD8Uju0IOq1/Acb2+O3bJKOtnzW/S8x6Z+3Cf/9ugE4DzLqg46xIr6G6 g9gQgp4AbPowl531cArhhFDaF2L4Dx8ahI6N2cl4/qWPTW5QRCsvnKNqWDwiEXHnBBESl5ISWgCD nyz2vg8a8c4GLAxKbMVnPaW85TGycwbtFcr54a8z4GNPGBnRHtO/agU2ZsOVnsmSFBODDdzHYVtt ea8DxLZfg4OlU3mapfpd75N5rYIBBsJBkOBNDgFIk+WyM3F4etqRr5IdrkgFbgDABDtKNoDpzfcv DdcaKhDnRURCWobDA2zn6w0BwzGfKHoblGvXu9weEpuSEgm4v2Smcgbw383FlpaXdSzx8hhUYuSw w1Yk7CcsLI+gHXFPG9867c3wWs/V4kIrcSQlJZ8k9uOSkUUAuoHIeNPJKSREKup1HqjL3l0xKPaI n5/ferF5/qvsq1eRDnfAOYkv8tQLNZLm04GTlgFvSu7DhEFZBGF+DQ3CEOeEQxs6Ec83uHUD03oS 1zv04w0DtJfB4oeL1PHGaaO1vnhizncw6FRGfHQQ/UgO2qY+X/yfTSh+5Db7o8WaCNqSApahUQjl CHq3P1e3OVlK9V0p3dY7+gk392OgBx5A09R+frDaujrD891pADyisKVEAx//wkKWNJ+/FuA+kVTi lHd3d3x2/O9uBXz/buU5HK3IQCC7e/q2wtSwM5wAgD4Ln2KxhvHvr89AKUKjomSAfU/zLLjDMV+l iZBYVs2segEKDk6XAGddHi7Td48Aso5LRBQCKGH+uCXkXND+Fv9mzSDaIp8rqaVF3NbeDmXtb219 npOTo8WmqXOs8fny0h0aAWXTrvQDDR3B0RwKzbUcnCvkqq5ubMABue4ZGJBp8jwbqrR4kzzKUXqx 6EsFQhzoBgxERERoKiXe8urztm6u6jJQMZXumt0zp55n2yTpTSR81lrl+o8nzl9YTVpZjSoATgO4 BTTflKHMCO2ToFvv3Ku1Ed+b4FSTu/OZbYMxwyj65GfZmpa8gkI7CJVPYuWGSvSEx4AZtk0YjJx5 3/49c9+v2wDCCM3X9171rODZC01lP+EtwSnvQ8Rq8r+oLTceJBul3yUY/LI37JYOp8kEPJcJ/9Dn SRUOlJadWYt/DtXr/lx20KFOLhKvvX+Gb/7IfmcCM0U83a+05W1MGva57GioHLyCH+htSfCvU+8y /uY7U9E/6UqtxTr8yhlsem7NaaKUbTVkLRJGK3SgO0WuT50uPfpNUwSOiGBLHWEth6PrVEe/vzoo M8cDGsXVfH2nc7o93TA2qzZO7iOwAzA77p6o6Vb3LYh2USBgIKOiJhcJ09F1mogBgg2/J0B/4Ojo CMNfaON17mWRz1VNugFeYA0NI49+VwxoaPD6cezuW2diakoDHMnW1jZXvjtFu8pyGUgFRkbG1t44 hmeep+aAII/msEi8B7DoX1pa+lIQmqi6ufL6IDs/P08dT9i1w5WEofpjTGv//MvXr2gZhys2r+Xl w3vvkPEX81j3lKRCsGQAZx/4rpMtiwmhukY/Jsz7wwfFu/Rv3yx/X/sjob76+84MlIKGps1ywTr2 69dQjWLtpFRThdR+E66eNUe5XFW5p3g9JlzmVRAFfWt9CVCJ+H6xzFAKmh5J5rfjQ/GF2V8dv0ej 5rSe4oQ/ij/zFFVjJhgZHY0F9yBHQ2K0Rg4MDJxqnEeho9iwrCKNo1dsg9ZHQjPiOtVARISGh7dd H7TEQKDrOQ9laY4mFzQ6D8EFTQk6Bxbkon2qVe/ry5tih3Fd+IoeSXmKbmJIZkCZY6JvvIwj/kvN 56f09EbTP99fbmbHRC4yxcsbK0/UOZkBeYRW2vyXGYBhMBAkT8TEKBW/qd0MlazX1tYuJZml/bo8 gpfbzFarthTNaqfGUAgTPiJkbS1tubPEWFHgbnoKrN6L2XPAycUlKC/PLNcZuyGdbcNWYTL3u2Ly jHM084GDvsZEdC5A1CcMDKjQVH88i+YQEIMd3d3Jq00i8vVpiwb7F5MSFpgfyh42X24JVApRBA5J sSdmGVxUCzhsEbKnKT7X90F4gpyD91AW2/yN4Q6u5PNNmWXQCnppZyJzbjA+b81LcoP7ENQnPy2W Y0aCzewSmiqQU6lCAZ5wy+WoWl+WHJr+yvDPtWqRkeYJ0sjrnHGxeubcowy8HhveLRrjtuiFSsSu 1/qjRcloJfCl8g+1Wm86XIOSWzzsi50YekWaIgZbMyCjAZwQH/BB/1XyAd30QIZSrr+vj4vMWu7p ZzyqCR7+eaAr5HNBJNXnvevTc56f6Ojo+CriZDwE+EScQRgQ2sNFb7mhjIbAxiuYbAKyGOb/M6mr KTeEhJ/mh5FdOVag/ujD39NfAE7DfgWgErFcnJ6eGvUr5I7g9c+NnALHmqt3eeTh4dEVbG/RN58m KSWFgH/uZQvgo3xLQkKiEyW0zGW2+eZYIeK6G4C8NXsNIKbGcA4mpoeAAnc1YhNzQpsW/vyW+BNg ZmfQI6Lfr1msUh9Rf/r0Cdr2rmKUAchaj5N1BMabtcPD5Xb31dgXOAB0AZPEAuK/ymoSRfnyRgVI 7d/rUHps+sX5Ro+K1Sje9hkHMZ8bd2gQRMD7knOmmu3ONhDA9/LwC6pOgLlompqTqsVeQMgTi/s0 vlyyjAC1gaYOL2uWvR/j45vswu2icdos62a+8StshA0NKb9KEcCllY0s+3pe6wDntJ0TAHhgBI19 Cbkw89ktWPPa6MRXektKIgL5GQGkDBwyWaAXluBwY66Yqh3Vly4lw+achm3IUKZS8dvTN+Xvi/+j JDlkSj0A+5RTUqqZoszf3FF9OzhfnZbtd0yxMfHlTGvEnAfaUwiaVQfNBwQOtKMnZ13E2wXj3s/X Af3Xvu7sxSS0xpzGq01UiNtnXo8W0koOD3skbG0p2W95snW3dLSVZKzmah+u86Tp7F5rsOnA99wI s10KvX6pjYZ+NydVOW+YH0gmEMNuWve1OuwoY1Cusf3wKuUQUcOb2Jdjs+4GW8ygAgVbfG5RoCW7 wkuT3wqKug1uByuA1mpVmGJCuznCgmhj1lZXiZXkgPbia/CWkws9+uWtkwfiGrSFLbT6PjY21h8Y WePFghff4tFUkxc/8HaNXWNbxmkoEm+N5Pb090PGyGs1sQR4cc/v3x0juQpRa4j4zUhM/PxEQqlY nk2UdXV19EQPdIhHBBxWkF0PFqJQMElhjORQ1vJsaFYcB9Fqooip2lpODg2Qpfflj77lbkELjpSV caAhB6B/bu6uDy7B55n5UIbqWtNTaDTp55/BwRcA3YNSKpEQEaEVUtCuArWeZ8zOQhTQYh+gjxAY ye1XWv2RpupdWMBRaJsZYAZZQAZpjFIKOedP325NlRtvDmUGDKxVux8ZzTV5EQHtq9XgWuzgqatL DmijHwBRicJxGoBBUFbs81b3t1Ek3CjQfpPNd3+t8PHxl8DNumLz+t5sBAuLrYs9ZniNDEsR9SKE FoHMVFmVO67JQ+lhIwjZEJXdVaj+l5n6UACi6LChJi+3nNxcQxBQYH5A9H2Z2gSSoLsuL48BWuAC ZQE1TdwbyX1EymdtflxYxHZ3d20H5QWFthuRT10E7g4HYghyyU9xcQEQDUsVcvn5ozC9yrGK146a mtrUl833fNrsme+d982ZpmFihLDb/ruz7fGeQY5dPsebS4fdxRYqEAJBVP7Uv9b5kcVqI3911QQa GmnHFmdVX4DWFbkfvvudIvj4ERF7RwC2WCgkr4W7tRrY3xaehD1mMFps/kCPfZlo6vkSmvd03Byi vrk5GRyyrIL8AfBEaNtPGIGbnpDLtlq5caXIhq3OHxWU96J/bFQmjC2gSW+vc9ZAHHsQEqRpmM7K 1TRiRM+JocS5O5Ol0PJZwpjOn3ieonNjzO71mtafLDgAVHeuEn3XuLx2+cZv5Y+ALf5xUOweg4hD z08ys3X1JYckYF0ruY+0zraYT33d/V62rh1ae/ZtiREI1vrTBf/CXB9M5/j48aP08+d+X4H+Gtpy 7vJIYNdjthwvoINkI7T9dEUAGTQATMPDowa4SASkL3Ricrf47RbwAQkg8PHxoWFklIOsjx6bBZHT 4101sBRoaUt1E06E+ej3qE7U9wPA0LKh1fehoaE4+vr6RodLv6Bhla6tCrNBQtgrMQDcTAnRub8w MfoBNVAp1GCD9nuJjY8Hol6ycDzcsD04DLDGsDRRr/Crkw0ir1BgP99fJdEAmQEtKoIGJQZGQZil NzIyCgwJCck3aGnWavauc/hWjKStZTSVt39PLuY9ZSLmhL2Vl5MTCjASl5SU+Yt87uHZGQEQhPTY 1nm5uWFH8O4IYLaP3NzcoEl1iHzDT892JiO6osj+Hax3sSo3G6SE8+hQ/mF7+XLNlHhu6f7u4B5q QzQ0NByn9d/PBBNc92bohJw3nzQ2NQXFxMQAVw8RcFp/9eNYYyQDR6faGhcw3bbR0TfIKCjffmuq LkDOVW23yG47V0ttwpUERDdCL6irNltcURHrMKDW0OAnaYuw03rk4fExF5a048W+3jOPYxOVvNcU mcPm0gEomB2A+hiqsoPwgrc3W0MExE0taG7G8SUUmXjnFIMWHz0gO8JA+J/dPaXyvVEBAVMBcPjZ xmaodR8+pv+aarqnNWJZZfQnRTALkLW27u4XgFe+ABSI9GSk3PgFdSAOvDuGCLCYehzJUCASSQYZ /o1nkpALu77isVuYc08DcYFIEi1zckfG27vRfCQnDBoOEhDQgjYi1+K7Pt97DBwcn5KSsm1yUvN0 b1bzKR0dgUJLjtNYrkIiMiziuiK3sbOzM2yhyetRkz5HYC1/bdfN1YliQo2rHl6bZ6pSElfnbvtl 9WuOsKrb8oKBNFEdqIzQlaDq5eczxu3YyegmcnFxSZfqN/3rlocPcUGbP3vNsjWnt7CjqvJe8A+m POlcRlH3yPFavwyQDUENDQ1oGBj4g+L3jQ5LAVm/4wuroNGD/oEBgkGRk8jDoyNcYAVE3Ka/cYD4 ZXOp01JtWUxeaVI06wiMD5GZas/1OlzE3Zu5jdA6PtcxukhLjf98t9zeEvGDo4nxT8qVjomZWRi3 2R3hGwNPFXKxm4YBC4G+JRQ8avl7Jzd9fcrj42MIukCUAiIcyW1/7hcQONCCER1d2/4Eti6iwLcN 4/cGx8CvoFUUcnJynOeppegu22O/gKOS73canZ+vxinRiIiQc5uq/S628wJFD9IulpWU/OjAON+3 ZL2mMVxEsQHwWVpb+1tnYiSgAeQcjYeIsjGUNi56RBz60oBbOaz/JjGe5H6x3OPhxEM3DuU0P4r+ uBztbfFdx9jGN6dP5Ru8kdGsJa30bQWU/5aTRL5RZOHShEhs2p0YdjjmV/1VUKhacqQqsWbxbWQv x6vOn24J70YevWF+T+FLLhh5/+Hqwd8LL+LF+0vRYJG/AjM1/IvxoymgSZMwjl1aAEWSDHUCHumX ns7Q2MR7eGgPFA3LmCWdGjN4y9TVtC831N8SYZAL4EAJ9T/Hxe2lEtAUPJ2IPoEGnlWyZU3T1ZH9 1voTibywY+h6e3tDY2LcelrbYk/WzeULTgBvKtKtG1mpwJ74nxWaS5qvdUCarbEL0S99oaFBCA3e nu7rOdAGD5BSRJyINwaCj9peAOXSArcYcK+SSpdKi3nC9mCs7g2Dol/ZASFfmDcdnjbCT6iqrae5 MChFiAElqHTTIO8DqLG8saG5jRtLrq4+f+RQ7UhLU8CesueZlpISGULpiaZZousvmy1xf3dbDiIw EA9Twlb3HjUHc8ExNTFnJAdwRjfvy4o236mcl3G7qQ9CeN61wrzMMiXramvVemMw/mjYSkuPB1Xo DUpJSkYGsH8yZlIYgsvtToxHuXn9m4/OLzgk+c/yBkfP/7EoYOvZIfW/Q3ndrSH/DqXox8dsVwP+ UaBP929S+rZb3WLpzcjl/L+5aun4IL35/8vfUiL9X99Ac+3g6Ops0sABkNcCfbZ4KS0tYgDRu6mY 4K/JZcUqt1MzE+/mNcSjx6KLRlq7yyq6RHmrmTUV1k63CghgS5zCbLi4sXTWVmpK1ZW8WjXjcbRV tIU8h4K+dyLBWGRBwGE01ix/pPwVE0FL9plawhFmxcVVeTk1kZ9mbWFVZlvI8MLyhYaHJj8MR3LK uEpNtoiDhqbA1n2vQF/+jUHR7HZn7HZhHxIVNXkhDCp5XVnxcqNWjRqlay2ctrZdg/vf+frgerbW pRwTNi5wuTP1MzfvJa0HzyfKm0H7ChnqZP8tr2oGZYuhHdccXzzCPY8YO7G1lTXd1rTH9Ca3bNF3 7ZU6WxWAihar7mptpfx2Wgvc27LHYXtHnLtWYj8qPdZpDZNn6y9S9D0+UmK0aKEI9jjBIIe0tNp8 mYNu05fv9SlNtkqpf8l+/YLmgn66aTAH0qpP+hrZB3yMFI/18KHXxhRCtVmwkSNoHt/P6AW+HxER oTehN98XHhp6N0u+h3DZ0TF6eHoK5CbVU7wfTRXwT9b726bd9bfL16UOdFvo2tXWUVgUQsmvhE+v fciFPYklJHiPDtsD+qvSJJCul084JjIVk6vX5LtVBEbKN08DyMyd7n5VGQONdu+K9oEPy3cSj3lx oTb5psXoRP4pFyMPrrJlG0LYWpaHd8+Tm6sNXKD2L/9eZcpEaHzlXH4QyG+ryjR7+Ov6YOkgjqHc u/NF/Odm3ujKdjxc3LcbWvOZzp5slpdXSyPiG8t7FDBNzRiu3DfjezEFahQo/HKvX8peoArDe2Lh gLOEhoU9gJELlBEl3gmGRD/bO9opRbXpW+yNYzhcaLCDX0i1SOSNZuo3/XVfn94YalAygAWtLctd 23sIjLgKfNCs+UKbjTPt8UytpFmgzuqprsg27EGesv3JlyTvLfsdaxqTgvpDO0rsuvrqaZ5Sg5bo LW7T5eW7GEB8dS5NbzXdV8Iyp25OsP4NQ9VQc3As/kH1g++WAa+pts/pIoQFIk9+9I2C6co3+o1Z 3bfOCsPkZbY8HdVcrrMtBe+8vLV5rILgvqnS3dEqAu5LboCJkvkhJ969fN6fECvguouszWNnxesb gnUbPKwk5h/iefHrmICqvSVY/HX6HVlaWtpFgktWa3fsTKy6T8v4kF9pQUzJEpaIJU8Q3wbMkjdc +pZQj82HtHI77PxDXitHD6qmjxeGp03CNA9C64AiEhUVVWAQb6sCtyk1PwOqL7kYMjVyiZ5CZ+CR 8XD9+zfOEXuBdvzexrqucDeyoSoFjG+Bky8S/1DYgyBY2A9DFHa1lmovU+bBeNSZuYil4SCocaYv CczWVX1+ouwcssPXeZ17wvwq7YNUAzQ0sbEOSJMlBv4aeVWCFK2O11KFbM/Bz1OEzmoc7jKlUJYr lDQl0PwNwFVLKfWgAkjzYLWHMgTTCDL17r9/M1MdLHoyxV5A+xHRcjlGPDpzFInC/rZLPSdHXxZq Lp/Tp5JWIZk2s+aFW43nff2bd++UWLUbMVRU9lRq9EVP90exhymESHfqNm/Eb8pwm7xcXvSvK3Ja rnI+fZrC/ZpFoWFEZaeaWeCWgup9lMTlbR7DUPWG5NM0wbAO7pYvAi3JDajazruhkbOOc42H1Dek r7iE0w0FOm9uvK3/Hnmtrq39Gh/HBKKP4xUx9j3M9+b0xDVFxAHxMUOklEmFKdrDH2FvuQ3asjr7 D59vsEPjf4AgKuh+97nlREPocN0Lfn/gDYMpM+Krawer17HT0GSFL8lNlgAOuHnmubq69oQNjvWF mYA0hN+/OgMWci+A4eZmd3n1QIImVkuxX/UafodSYWjavpjIYRAcEfGIz2YhGPy28W5bpPFvX79W uaM6nW3dHgC+86LZzU1U+6VWfXJRV0QgNyVtbdmj7zzIq6R2qIXq48Yb6RgYqKmXydcbb+TDTki3 r2oWsd6d/0487PpYM1Tk8ci73JR3RVbUn23WVZI5PuGH3ttx8i2tyvYllCz5Rxmy2Um1x90nAvVO WDTCIv6VyRvUwyKBrfQcBIPJYlSTf5oDWrBLJeZl7wQ8jDi82/U54wpaP16VLhfzLz531SAEYhWI pMhNLIqji0WGo41033eLd1KHJ4X+UyXzQ40yCrsLVY9pX3RKFGvQgjLWd7jKZMsu40h+qX3V5HmG gCZHp8oY3+clmN+X2uPvqgUijVVBfbGhIojtzp4Ux8eO1HH91Im9sXFxmG5RqJS7E4/JfOdgTfqt i+JT8vIJs1RdA7zT5236tEG+j0BIBodhsMPVzTzO98fS3UwMZCfLOC4suPRX8XJPcfiw6u1PujBh z9+9U+71H2yZvRqf4RiuMfCFbA3GuZebdOlxojR11Y91unumTDIbr/574Uw9UC+Y8EffrJUfMjVb 4tKMi+Dr+7tn32rsosYCBwcGWVRaOazJSwz6A7VdcJPc8H7nPVqqO3p81B6jc/i7Aj7E2PhsRfyG WPUH/mRJLiKsvtNV8qTHnicGo/vI+IUDKE2PCZf36ZGZwHH3gXvGG6/GJudnldo2Yf3EtrjoUwcT JfDdEgieymd5R39323e/oE+UylWT2FtBB80BlG7ZcsPZ4XERgnjL8+SS7oQZqmDZSn2DSkxnO3we qdlRzoHJSeykpKQhS5sDyw1GG0yv9ZNW/6ZaB1qCYu2aVqCLHW6mHvLYjqABO2z1D/AqZj+4OsAZ /zGpyvrHOF+AGvnz5zjlBtd8h2+A0w1844394p1LviffXTzbt36qNw97TqOe+fo6XqBp59lTg2ms JCukCI+e1+KoP3RRiicoJNctHMTcsLEvr6+N55wel3lNvi66230sQnKB/xEx4Em8fLnZooS7u/s3 VtrA5yYV65erFRyHF72PidGe4iDDYFhPobUA/OcWQHtlyUQk0LFnqzHHpqcbrK1p8GCDZhkPo9Vr +Pnz55NYuaUsR/+8Bv4nfuk11sF++MtROhLUmrAytkHQJqD1oSfQfOCkbTLwtlPl1ZA3aMYXTLAu Wxf6KBthZkXK3fhFqZBz+MyZSWWMbcQHL+wnreJofsjdMenSERC0nyLn4JHMVEVUf5UFrBKXnPwj QNoAPpuZtymDyhy/fv2qTbmMcUh2EaL4/LnkyVOBnN97fQXraNeJ/qn19VuFnlWfWERxF9YU5urq yRZ+6T0JpPTUozzep6fhrziMS3XAtWBqyXi/Q1rro4gd/yLwqpEwTRCco/oD2Wm9+eOwA+0wHR8h JimftDuc/iu3F0pa+iGiiKhI7JeUQCD+pPJGl3uoQoafZjHdWI75xZRij4yOyuuiwCSlpMrXT5Qc zn9b9BA4mvPsH15clP786ZRDkQD4E6lXFS9rb1/fR/k1RCoO8Zt6Xyp2vfpAQraZX6OjZDDrQauH ezFDQ0Lm89/ZxG5XjQMDA5/Dv0vYvo528EGTquFv6hUKGpJC2xkkVOfTmSUFOPWYIXrlF2W5wOGO xCVqYMaH69cwvwDUB9FU4v6EbLTlZhcIlTZk6kZCo2a/21Z7H2cq90DeBz1QCbh18CtmKeeQ6CHz OYftsZc8dsOIMWJ8+PBu0YD8c+hhIcG7ixZemN8fPaPMccIv/1DsB8UWsMFwn1V5qrH8E7RV+fQ2 +aENKfq6h7mniHOrL5bzBP3+lP9Cw8Bq643bQrO9iezU+SRzbwsuJtQp4tcZsYAMa7z/hQ58MJLk 9qmn+BjSiYEvQZ2gIPSEtf4HF3Yh2ZrO9ltKydShemKu0yO8RFzJJ9VW/NJVMV1QpLMdQ7txudGK T0imxZSSk5Y2eQTa9PcHYJH2p1O4jdd3XGjU7UjYp34hIZokwD1nqSTRfqdxY+OFIUtRkQU2f/Ck EWYgo6bmvU+log+g+KowmJY+gmVmE6P0Thmt2mY+rLVVO9R2sffyw/X5s3z1CvbzPVG/pU84hVvO exMU99fHLE/vTrC7xLhRkK4vOrP4iVaO16TRqAHyGJffBFzYb43ISMtUdVuVDnaHsCQYD9Fiw+em ubWujvKUC8ff22oKOc5r8IVx7l7lfkpMDGlsFFldXV3an2/o6elpTRV2s9+fExS5u4QTJkIL6jnt h5RNTHISWUYJZD5a95xtPCHaoJ5MRzpWgndV8aQIepAgRNFT56ukNFVs4jgLiboezIUzpHuPLLwF AoM5NruKF7YUwSEmGUc/MFT01qpnzdWjr3V5emTCvqOebsf6x+z/raQ8OU537+omb2JHfTA9GZvq QCG49aPntZKMrSmKCBLV81ss0Ywjm3WcK2dkVlRIOpBvzfB6XxLD7ymYDKJzeNbauIr0yX807z6+ 3NwzgOGFPfpiW5XpXIhZmrHf+V1YkpIiGGnvHxlccmn8xqS41F5frE+eD4zs4Cjz+DHWGH8c5DbV vAVUwN6BIOnWnve8Fe5wU78cdHWhnS2vBxqjHmgMTyZFl3LbwsTPBf39/Y+goUEjY+PCpxyNcCmN /4MQyf3LhSyq3svu5n06Z1hIMkGEi6vOAUQUf/Uk0U51PZO+gUxAWjyLptHeTJX65zhmTG9oAeOt 285wgeJ1gS5b/Gi6701wWRmnl1kAKB4zKB6DzgxUvK27+ibxTYcZM28g42D4hDB1KkNDw656WqD/ TP6nTHszXM9LdCpwxi327Nkza+nHQJTlGuq0e4AacChIKKl/TuBHCJM2Oub4z5J6iZcSg33xLAgw vJeGIipJ5TJ1iFRS6zmqTP+VllyGbJvPROC0cb1P4l5Sxy4tTmVxEhfIETh2v2COl6SPU5f2+Y/y fDiFd0p8l9D//hN495p8kqeLdunutq8J+e9iawL1bxmojKSXclFNveGuHwrR3qN7h6OIBGe8yFRW 0/r+H8nsyaw4ZAyMolPmIfSIgOSd3SEtEx5M/VVz34fuF+yJUuyJ3P8RuH9jWGygU/M4D2MlMj+R HNwRo4jkM0LDOn9nP35EhDPw8xMJCgr29PW1LTR5sbAa//eRBBzChAdRspjY2Py1dXXPizUIHgaj HyDHayapck4OKP5Qgx5Jmp6e7vn9mwdF+urqqmdwMOR1XgB465dyuH0/cFvtwa203TM8ueG3W3/C wkLl01zyqZ9ObrBHSsMUwXLcMUSXWsqnGUsGLpH6eknbkrCxSW9pbc+RI5VsuqeP3S+kAZ3dkmTV kQk/PNx3YuvmChrr/iIw+PP94hL4EncwZklA6ZlPUe9qo15wRoBv/szjGDU0yiZsoSk7Q6NQPtXs 3yr0rBzVMIdTvlxVrFxVQwz7ubkx5UJ1ZeYBN7dCtDV0bxMucAvB03/Tts5CqQ71qj8C5XOh7SIr tdnAu8/eqZeekpIyX6W9f/3qYOGB5dhhYHo6C+yJFscn+30+HlLMOdFw/uO4uH0aTrmwmSrRqMX5 urhHREQZhrTYPSZrlOSl0vy2OTrzYrmq0YRsbUPZL8ikpcceKAsgZ0hSh6hp19+AsiPgo7xubk6z d3Iq/4n8z95c8Hqb/DG+yD9QK2iLoYaBWN61bxu81L3vrzTcIOZYRy6fiyeJBl9kju+bovhjX/MC zRAjmvlzYSFLYyMP3+ABPDtIH9Xdsx4Q7yfc3FT7+yVoaKcfVS08u+mFhak+9Qxn+BONbXsNPtNr SUAFnTxXrw5rwlIuXENDn8DXaaYx57EsnDWb8mhsnMMl3nxj7TmYNjpUoC41V+dExG/3PVODzVfk zp2/0mqSGHa4V+NV7nPLDmA0+23FXxgsXh5BSYnfnGcbffHfEwN/7Zi8lWKQuZLwuZJOF9mtg2y0 QIfEyz/MVUWo09VgCiD7UleRosYchIPoeNX0FJ1f2hQjsFK7+GXrm7f+McnJZI1NNtjeunrjlxuq pCV6/SENDXhbFkI8YWgfa9yOhMlq7PIyTUP5PwYczDv09o+3yRQH+2JqunvWPUd7wkv3uMbWEndh CknVojNaGDREdf0HR4/l9nd0A8mpqQFHcNQMmQhODHIB1Bcx9BkeJ5y6dY4UhZp2MovNw8RiNxKs Bs24z5elTPX1SWsb/uNVWcdMpJfEd2yeF904aCTN3MjiBLm/3bxhXxtbuu2J8s0v+Is1HjXpY1MH 9rYQDPx7utyWbzA9VgVGlKh7iVorUUgwRCiXyfZJMttBangSd23dEoH6xbznwuGh8oKOviosSodd cudSspidVdLAAPNOzOMxHuPS1tvywY5//cIQ13t4fZDnsNojCHc7235gOFeLsDmczQt7QpPFPlNp EZjxhCowZDIYB1G7mBAVK0XaxERP5PA5N4+FKlkcPWbb+Z7v8x9f2tvbCSgpSwjqRf/j8ca1Acab zfTx8neY9jldJTbBvo8MTJiLh2Ln+8gvieurHlK/qm/aOvM0XjJGc8VI70PzhAFcaJ+fr+6qw0Ek +mOW5XNLiobBjEF/fOIs4LCC4uiI/PHj/gNikq2kw0NnKfuyxF42vrAcWEnJtHKh3tK+PjGOBY9f oRW9Grt88okRS5X2e17FOt3w/Hx6Yp5NhErbeRxYhiqTSnYwg64u+snmfklwTAzq3LxepiqBT55a X2xCwkMODkzgkh9BwGxrs7wTVkRwc5vtT/gHkk9lAkikDt+4c8tory56jcKEUcWCMeaoboibuece MJNewvIrf2F+kafT1bPxgomLK6EmvUKxo9KEc5WU+OWZEebgJb0UEhQkQcM6Zjy3bwHAoJ3q/xEx zOFutwixtpZxeW/P1Enfem3F6MM1iANzc7o4pKTm3rIbPo51GJZV6CUl7F2h2rmqNE87sB8+7MWR bB0ffzBZmkeQnP6veI0Yz14Nt6Iy+vD34OyqrXp59xFczt37trdcLE4zkd6ooQRl2fOg6eSroQND XtG2ZNfV/fKpP7fWSZhImw0HJ+PZ9+zRh+ZVfqXpOuWV6sxPBKYe8duZtPcrYAZJhufksIJftS0u NuFVK9m6XGMIR+mX8kf3oSwt2rBiSL/nIgG4UokxXKXK1L30S4/TedNKwIUZV9Sruv0b7+xdqoEl uUXAv2LSfCUraz1kVRo2W4tAeU6QqWuHWC9Oe8Fl/RdH9T2KKOzuQ+KnveQRVi7Y/U1ccAQR95NT RHZ2x8CQ61/iS/r8NY1z3j1rXLVWur+/z2dkcnyRJ2FnWAjS51hay5W85TyQ94hRWr72l18QC5P+ WKyDbbwz0U6/OJjMj15hJo4Auz/PZiUnazJv6YumoD067qc9WvAiO1xLFB7KkDDUrGlrkCQ4aWP8 F4GRFI4i65JZCKpfq0yrvCSAshcFY2FWuvExD6SJdg/XOTn9owqgSjMFc/x2/3mgUBD2/9JDWbe+ Da6vkJ7gIKucouMrLyM+7GlFyLL3w5CXJ+XRZRzye9izznfAdLn3FGmLRAwGe+6p59yqWV0vy3Cz 7rmvuoObigCDDchze68bhr2+HFhIf0/atYkBg5knFJLBYJ/SlpFgsByzSxgM9t+fc1SpE6LUPFDm BodgL2VeS5dIvvvI7uRs6OjsYs9u72hn+d7Ymd3Q2NnCzpbdzNDGyNCJ3drQ1ozd3sXI2sLY3t6Q y+S9EQe3kKySquIzDl4hQ0czJ3Z7WzPoemjgIwA+PP/9N/SxBh9qUEgc8H9U8LkHL+hcov/lOyX4 PPjffaf9X/7O/N/vUeBaX8CFn/33+tToMFgj+IMg+Pcj8JnHhcGq/sBgyDBEGBK4IgoM4d8v0WD/ G1BLAQIeAwoAAAAAAHOjB1MAAAAAAAAAAAAAAAAFABgAAAAAAAAAEAD/QQAAAABUZXN0L1VUBQAD qd4OYXV4CwABBAAAAAAEAAAAAFBLAQIeAwoAAAAAAJOiB1MAAAAAAAAAAAAAAAANABgAAAAAAAAA EAD/QT8AAABUZXN0Ly5hY3Rpb24vVVQFAAMG3Q5hdXgLAAEEAAAAAAQAAAAAUEsBAh4DCgACAAAA o6IHUz36ruQhAAAAIQAAAA8AGAAAAAAAAQAAAP+BhgAAAFRlc3QvLmRpcmVjdG9yeVVUBQADId0O YXV4CwABBAAAAAAEAAAAAFBLAQIeAwoAAAAAAKOiB1MAAAAAAAAAAAAAAAANABgAAAAAAAAAEAD/ QfAAAABUZXN0Ly5nYW1iYXMvVVQFAAMh3Q5hdXgLAAEEAAAAAAQAAAAAUEsBAh4DFAACAAgAUqMH U5aonBoXBAAAvAcAABIAGAAAAAAAAAAAAP+BNwEAAFRlc3QvLmdhbWJhcy9GT1JNMVVUBQADbN4O YXV4CwABBAAAAAAEAAAAAFBLAQIeAxQAAgAIAJOiB1MB1uRudQAAAJoAAAAPABgAAAAAAAEAAAD/ gZoFAABUZXN0Ly5naXRpZ25vcmVVVAUAAwbdDmF1eAsAAQQAAAAABAAAAABQSwECHgMKAAAAAACT ogdTAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA/0FYBgAAVGVzdC8uaGlkZGVuL1VUBQADBt0OYXV4 CwABBAAAAAAEAAAAAFBLAQIeAxQAAgAIAKOiB1NXGgNu3CsAAFYtAAAOABgAAAAAAAAAAAD/gZ8G AABUZXN0Ly5pY29uLnBuZ1VUBQADId0OYXV4CwABBAAAAAAEAAAAAFBLAQIeAwoAAAAAAJOiB1MA AAAAAAAAAAAAAAALABgAAAAAAAAAEAD/QcMyAABUZXN0Ly5sYW5nL1VUBQADBt0OYXV4CwABBAAA AAAEAAAAAFBLAQIeAwoAAAAAAJOiB1MAAAAAAAAAAAAAAAAKABgAAAAAAAAAAAD/gQgzAABUZXN0 Ly5sb2NrVVQFAAMG3Q5hdXgLAAEEAAAAAAQAAAAAUEsBAh4DFAACAAgAc6MHU/0h5nfMAAAABgEA AA0AGAAAAAAAAQAAAP+BTDMAAFRlc3QvLnByb2plY3RVVAUAA6neDmF1eAsAAQQAAAAABAAAAABQ SwECHgMKAAAAAACTogdTAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA/0FfNAAAVGVzdC8ucHVibGlj L1VUBQADBt0OYXV4CwABBAAAAAAEAAAAAFBLAQIeAxQAAgAIAJOiB1PF0Zwh5MAAALXOAAAVABgA AAAAAAAAAAD/gaY0AABUZXN0Ly5wdWJsaWMvYXJncy5wbmdVVAUAAwbdDmF1eAsAAQQAAAAABAAA AABQSwECHgMUAAIACABSowdTRh1PkM0AAAAaAQAADgAYAAAAAAABAAAA/4HZ9QAAVGVzdC8uc2V0 dGluZ3NVVAUAA2zeDmF1eAsAAQQAAAAABAAAAABQSwECHgMKAAAAAABPowdTAAAAAAAAAAAAAAAA CgAYAAAAAAAAABAA/0Hu9gAAVGVzdC8uc3JjL1VUBQADZt4OYXV4CwABBAAAAAAEAAAAAFBLAQIe AxQAAgAIAE+jB1McyGvZcAEAAJ8CAAAVABgAAAAAAAEAAAD/gTL3AABUZXN0Ly5zcmMvRm9ybTEu Y2xhc3NVVAUAA2beDmF1eAsAAQQAAAAABAAAAABQSwECHgMUAAIACABPowdTu+rShjABAAD9AQAA FAAYAAAAAAABAAAA/4Hx+AAAVGVzdC8uc3JjL0Zvcm0xLmZvcm1VVAUAA2beDmF1eAsAAQQAAAAA BAAAAABQSwECHgMUAAIACABaowdTfMVYOysAAAA0AAAADQAYAAAAAAABAAAA/4Fv+gAAVGVzdC8u c3RhcnR1cFVUBQADe94OYXV4CwABBAAAAAAEAAAAAFBLAQIeAxQAAgAIAJOiB1NI8BuGfgMAAJQI AAAMABgAAAAAAAEAAAD/geH6AABUZXN0L3BwYTJkZWJVVAUAAwbdDmF1eAsAAQQAAAAABAAAAABQ SwECHgMUAAIACABSowdTyCv8TkzLAAB44QAAEAAYAAAAAAAAAAAA/4Gl/gAAVGVzdC9UZXN0Lmdh bWJhc1VUBQADbN4OYXV4CwABBAAAAAAEAAAAAFBLBQYAAAAAFAAUAJAGAAA7ygEAAAA= From bsteers4 at gmail.com Sun Aug 8 01:28:15 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sun, 8 Aug 2021 00:28:15 +0100 Subject: [Gambas-user] using 2>redirect with Exec? Message-ID: I cannot get redirect working with Exec. Is it possible? Ie.. Shell "/run/mycommand 2>&1" works as expected and redirects error text to stdout. Exec ["/run/mycommand", "2>&1"] does not redirect and only sends '2>&1' as an argument to /run/mycommand. Is there a way to redirect with Exec or will i have to Shell it? For some reason i am under the impression it is better to use Exec over Shell if possible? Thanks in advance BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: From jussi.lahtinen at gmail.com Sun Aug 8 02:01:40 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Sun, 8 Aug 2021 03:01:40 +0300 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit In-Reply-To: References: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> Message-ID: No crash here, but some of the components are missing, so that may influence the test. Can you test with the latest Gambas (via PPA or by compiling) on your system? What is the installed Qt version? Jussi On Sat, Aug 7, 2021 at 7:08 AM bb wrote: > On Fri, 2021-08-06 at 22:32 +0300, Jussi Lahtinen wrote: > > For clarification, when the IDE crashes you will get an error message > > and > > backtrace from the interpreter. IE the place in the code written in > > Gambas, > > where the error occurs. When the interpreter crashes you will get > > backtrace > > pointing to its sources or the components it is using. > > > > Not sure NSS has anything to do with this. It only gives an error > > message > > related to PKCS #11. > > > > Can you try this with the latest Gambas? Maybe it is fixed already. > > > > > > Jussi > > > > On Fri, Aug 6, 2021 at 4:37 PM Jussi Lahtinen < > > jussi.lahtinen at gmail.com> > > wrote: > > > > > Also, again, I don't see anything suggesting the IDE crashes. Only > > > the > > > interpreter. > > > > > > > > > Jussi > > > > > > On Fri, Aug 6, 2021 at 4:35 PM Jussi Lahtinen < > > > jussi.lahtinen at gmail.com> > > > wrote: > > > > > > > From what you give us to see, it seems to be Qt related. Can you > > > > isolate > > > > the problem to some small runnable (crashable) project? > > > > > > > > Jussi > > > > > > > > On Fri, Aug 6, 2021 at 10:46 AM bb wrote: > > > > > > > > > Gambas 16.2 Stable on MX Linux > > > > > > > > > > As well as intepreter crashes mentioned in the other thread, I > > > > > am now > > > > > getting IDE crashes with some projects within the IDE. They all > > > > > seem to > > > > > do with code completion. I have disabled near every code > > > > > completion > > > > > feature ( help popups, offline help, etc etc ) but they are > > > > > still > > > > > occurring. > > > > > > > > > > The crash is with a similar dump as before, i.e. no stack > > > > > trace. But > > > > > here is what happens. > > > > > > > > > > 1) On starting the IDE (in a terminal) the IDE starts and > > > > > displays the > > > > > project selector screen OK but this warning appears in the > > > > > terminal: > > > > > "[26563:26598:0806/165458.706936:ERROR:nss_util.cc(727)] After > > > > > loading > > > > > Root Certs, loaded==false: NSS error code: -8018" > > > > > > > > > > 2) I select a project and it loads without any problem. > > > > > 3) As a check I do a "Compile All" which succeeds without any > > > > > boogeymen. > > > > > 4) I then close the IDE down and the following is output in the > > > > > terminal (slightly editted for readability, the original is > > > > > attached.) > > > > > > > > > > "Received signal 11 SEGV_MAPERR 000000000008" > > > > > then 61 lines of object references, then the register dump, > > > > > then > > > > > "[end of stack trace] > > > > > Calling _exit(1). Core file will not be generated." > > > > > > > > > > Information gleaned from elsewhere is that the message is that > > > > > some nss > > > > > (GNU Name Service Switch) library installed in MX Linux is > > > > > causing the > > > > > output. I have three such libraries installed (libxmlsec1-nss, > > > > > libnss- > > > > > mdns, libnss-myhostname) and have no others that I can find > > > > > installed. > > > > > > > > > > Now to the question. > > > > > > > > > > > > > > > Does anyone know WHY and/or WHERE the gambas3 IDE would call > > > > > any nss > > > > > library on exit? > > > > > > > > > > > > > > > This is driving me crazy! > > > > > > > > > > tia > > > > > bruce > > > > > > > > > > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > Yep, lets forget nss at the moment. This is all coming from a much > lower level. > > b > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jussi.lahtinen at gmail.com Sun Aug 8 02:05:32 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Sun, 8 Aug 2021 03:05:32 +0300 Subject: [Gambas-user] using 2>redirect with Exec? In-Reply-To: References: Message-ID: No, that is for terminal. You must use "Output to" and "Error To" keywords. http://gambaswiki.org/wiki/lang/errorto Jussi On Sun, Aug 8, 2021 at 2:29 AM Bruce Steers wrote: > > I cannot get redirect working with Exec. Is it possible? > > Ie.. > Shell "/run/mycommand 2>&1" > works as expected and redirects error text to stdout. > > Exec ["/run/mycommand", "2>&1"] > does not redirect and only sends '2>&1' as an argument to /run/mycommand. > > Is there a way to redirect with Exec or will i have to Shell it? > > For some reason i am under the impression it is better to use Exec over > Shell if possible? > > Thanks in advance > BruceS > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From brian at westwoodsvcs.com Sun Aug 8 03:39:05 2021 From: brian at westwoodsvcs.com (Brian G) Date: Sat, 7 Aug 2021 18:39:05 -0700 (PDT) Subject: [Gambas-user] using 2>redirect with Exec? In-Reply-To: References: Message-ID: <2028421333.13063.1628386745614.JavaMail.zimbra@westwoodsvcs.com> Hi bruce, Just notices this new thread Replied to the other one but here it is again Add this to the startup class of you application Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" Static Dummy As File Static Public Sub _init() dummy = Open "/dev/null" For Write dup2(dummy.Handle, 1) dup2(dummy.handle, 2) End No need for any other fiddles "Failure is the key to success; each mistake teaches us something" .. Morihei Ueshiba Brian G ----- On Aug 7, 2021, at 5:05 PM, Jussi Lahtinen wrote: > No, that is for terminal. You must use "Output to" and "Error To" keywords. > [ http://gambaswiki.org/wiki/lang/errorto | > http://gambaswiki.org/wiki/lang/errorto ] > Jussi > On Sun, Aug 8, 2021 at 2:29 AM Bruce Steers < [ mailto:bsteers4 at gmail.com | > bsteers4 at gmail.com ] > wrote: >> I cannot get redirect working with Exec. Is it possible? >> Ie.. >> Shell "/run/mycommand 2>&1" >> works as expected and redirects error text to stdout. >> Exec ["/run/mycommand", "2>&1"] >> does not redirect and only sends '2>&1' as an argument to /run/mycommand. >> Is there a way to redirect with Exec or will i have to Shell it? >> For some reason i am under the impression it is better to use Exec over Shell if >> possible? >> Thanks in advance >> BruceS >> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >> http://gambaswiki.org/wiki/doc/netiquette ] ]---- > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- -------------- next part -------------- An HTML attachment was scrubbed... URL: From brian at westwoodsvcs.com Sun Aug 8 03:56:54 2021 From: brian at westwoodsvcs.com (Brian G) Date: Sat, 7 Aug 2021 18:56:54 -0700 (PDT) Subject: [Gambas-user] using 2>redirect with Exec? In-Reply-To: <2028421333.13063.1628386745614.JavaMail.zimbra@westwoodsvcs.com> References: <2028421333.13063.1628386745614.JavaMail.zimbra@westwoodsvcs.com> Message-ID: <1389133628.13081.1628387814747.JavaMail.zimbra@westwoodsvcs.com> I forgot to mention that ' error to' and 'output to' do not redirect the under laying c program outputs on the gambas ones that is why you need to use the dup2 calls. "Failure is the key to success; each mistake teaches us something" .. Morihei Ueshiba Brian G ----- On Aug 7, 2021, at 6:39 PM, Brian G wrote: > Hi bruce, > Just notices this new thread > Replied to the other one but here it is again > Add this to the startup class of you application > Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" > Static Dummy As File > Static Public Sub _init() > dummy = Open "/dev/null" For Write > dup2(dummy.Handle, 1) > dup2(dummy.handle, 2) > End > No need for any other fiddles > "Failure is the key to success; > each mistake teaches us something" .. Morihei Ueshiba > Brian G > ----- On Aug 7, 2021, at 5:05 PM, Jussi Lahtinen > wrote: >> No, that is for terminal. You must use "Output to" and "Error To" keywords. >> [ http://gambaswiki.org/wiki/lang/errorto | >> http://gambaswiki.org/wiki/lang/errorto ] >> Jussi >> On Sun, Aug 8, 2021 at 2:29 AM Bruce Steers < [ mailto:bsteers4 at gmail.com | >> bsteers4 at gmail.com ] > wrote: >>> I cannot get redirect working with Exec. Is it possible? >>> Ie.. >>> Shell "/run/mycommand 2>&1" >>> works as expected and redirects error text to stdout. >>> Exec ["/run/mycommand", "2>&1"] >>> does not redirect and only sends '2>&1' as an argument to /run/mycommand. >>> Is there a way to redirect with Exec or will i have to Shell it? >>> For some reason i am under the impression it is better to use Exec over Shell if >>> possible? >>> Thanks in advance >>> BruceS >>> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >>> http://gambaswiki.org/wiki/doc/netiquette ] ]---- >> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- -------------- next part -------------- An HTML attachment was scrubbed... URL: From brian at westwoodsvcs.com Sun Aug 8 03:37:09 2021 From: brian at westwoodsvcs.com (Brian G) Date: Sat, 7 Aug 2021 18:37:09 -0700 (PDT) Subject: [Gambas-user] tracking down toolkit erors In-Reply-To: References: <5ba27d1984073bc189f69d4a8dea6ae1@cenpalab.cu> Message-ID: <1001425865.13031.1628386629349.JavaMail.zimbra@westwoodsvcs.com> Bruce replace your _new with this code Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" Static Dummy As File Static Public Sub _init() dummy = Open "/dev/null" For Write dup2(dummy.Handle, 1) dup2(dummy.handle, 2) End Should give you what you want without all the fiddle "Failure is the key to success; each mistake teaches us something" .. Morihei Ueshiba Brian G ----- On Aug 7, 2021, at 12:39 PM, Bruce Steers wrote: > On Thu, 5 Aug 2021 at 20:34, Bruce Steers < [ mailto:bsteers4 at gmail.com | > bsteers4 at gmail.com ] > wrote: >> On Wed, 4 Aug 2021 at 00:53, < [ mailto:jose.rodriguez at cenpalab.cu | >> jose.rodriguez at cenpalab.cu ] > wrote: >>> August 3, 2021 2:29 PM, "Bruce Steers" < [ >>> mailto:bsteers4 at gmail.com?to=%22Bruce%20Steers%22%20%3Cbsteers4 at gmail.com%3E | >>> bsteers4 at gmail.com ] > wrote: >>>> I have this program i'm developing that was starting and stopping cleanly then i >>>> recently added some controls and did various other things and now it says this >>>> when it starts... >>>> (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing error: >>>> :1:15: Expected a valid selectorIs there a way to track down what's >>>> causing it? >>>> thanks >>>> BruceS >>> GTK has always output loads of different errors with many programs (not gambas >>> ones, I mean), when run in a terminal. People say it depends on the current >>> theme and whatnot... >> Indeed, Pluma was always my texteditor of choice and that used to pump out loads >> of warnings. >> (but now of course i use my own editor i wrote with gambas that has all those >> cool Texteditor features ;) ) >> Would be great to be able to catch the warnings though. >> Either a way to track what exactly is causing them or just suppress the >> messages. >> BruceS > so best answer i have so far is this "hack"... > Uses gb.args > if the arg -q or --quiet is given then before the app loads it launches itself > with any and all args plus "2>/dev/null" to redirect the error output and an > additional arg -s. > when the 2nd run instance quits the 1st one that launched the second one also > quits before it's even done anything. > Public Sub _new() > Args.Begin() > Dim bQuiet As Boolean = Args.Has("q", "quiet", "supress gtk error messages") > If bQuiet Then bQuiet = (Args.Has("s", "supressed", "supressed gtk error > warnings") == False) > Args.End() > If bQuiet And File.In.IsTerm Then ' if we are not run from a terminal then no > need for any of this > Dim sRestOfargs As String[] = Args.All.Copy() > ' the next 2 lines just handle if being run from the IDE and make Arg[0] be > executable name. > If Not InStr(sRestOfargs[0], "/") Then sRestOfargs[0] = Application.Path &/ > Application.Name > If File.Ext(sRestOfargs[0]) <> "gambas" Then sRestOfargs[0] &= ".gambas" > sRestOfargs.Insert(["-s", "2>/dev/null"]) > Shell sRestOfargs.Join(" ") > Me.Close > Return > Endif > End > Attached is a simple test app > It's a form with a tiny little TextArea in it, so small it produces warnings on > my system when i move the mouse around the window... > (Test:79673): Gdk-CRITICAL **: 20:26:58.775: gdk_window_is_visible: assertion > 'GDK_IS_WINDOW (window)' failed > Run with -q and all is quiet. > ./Test.gambas -q > Of course this method will suppress ANY error messages , > shell commands can be fixed by adding '>2&1' > Shell "/run/mycommand 2>&1" > that redirects error output to stdout and stdout is still showing > Please somebody tell me there's a better way... > BruceS > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Sun Aug 8 11:43:07 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sun, 8 Aug 2021 10:43:07 +0100 Subject: [Gambas-user] using 2>redirect with Exec? In-Reply-To: <2028421333.13063.1628386745614.JavaMail.zimbra@westwoodsvcs.com> References: <2028421333.13063.1628386745614.JavaMail.zimbra@westwoodsvcs.com> Message-ID: oooh , that's brilliant , Cheers Brian :) I removed the dup2(dummy.Handle, 1) as it's only the gtk warnings i want to suppress. Now i just have to figure out how to read the error text as it comes through and show anything that's not a gtk message. almost had it using a pipe but it was flawed :( Thank you , much better than my app launching itself twice :) BruceS On Sun, 8 Aug 2021 at 03:06, Brian G wrote: > Hi bruce, > > Just notices this new thread > > Replied to the other one but here it is again > > Add this to the startup class of you application > > Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" > Static Dummy As File > Static Public Sub _init() > dummy = Open "/dev/null" For Write > dup2(dummy.Handle, 1) > dup2(dummy.handle, 2) > > End > > No need for any other fiddles > > "Failure is the key to success; > each mistake teaches us something" .. Morihei Ueshiba > Brian G > > ----- On Aug 7, 2021, at 5:05 PM, Jussi Lahtinen > wrote: > > No, that is for terminal. You must use "Output to" and "Error To" keywords. > http://gambaswiki.org/wiki/lang/errorto > > Jussi > > On Sun, Aug 8, 2021 at 2:29 AM Bruce Steers wrote: > >> >> I cannot get redirect working with Exec. Is it possible? >> >> Ie.. >> Shell "/run/mycommand 2>&1" >> works as expected and redirects error text to stdout. >> >> Exec ["/run/mycommand", "2>&1"] >> does not redirect and only sends '2>&1' as an argument to /run/mycommand. >> >> Is there a way to redirect with Exec or will i have to Shell it? >> >> For some reason i am under the impression it is better to use Exec over >> Shell if possible? >> >> Thanks in advance >> BruceS >> >> >> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >> > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From adamnt42 at gmail.com Sun Aug 8 16:59:38 2021 From: adamnt42 at gmail.com (bb) Date: Mon, 09 Aug 2021 00:29:38 +0930 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit In-Reply-To: References: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> Message-ID: <726bfc3b5389b58c5a28f5c00ef5ead75f990623.camel@gmail.com> Inline On Sun, 2021-08-08 at 03:01 +0300, Jussi Lahtinen wrote: > No crash here, but some of the components are missing, so that may > influence the test. Damn, I removed all the things that need the ph. components but forgot to update the project properties. Just delete the ph. Components. You would also need to change all the hardcoded paths as well. > Can you test with the latest Gambas (via PPA or by compiling) on your > system? > Tried that, no improvement. > What is the installed Qt version? > 5.11.3 b > > Jussi > > On Sat, Aug 7, 2021 at 7:08 AM bb wrote: > > > On Fri, 2021-08-06 at 22:32 +0300, Jussi Lahtinen wrote: > > > For clarification, when the IDE crashes you will get an error > > > message > > > and > > > backtrace from the interpreter. IE the place in the code written > > > in > > > Gambas, > > > where the error occurs. When the interpreter crashes you will get > > > backtrace > > > pointing to its sources or the components it is using. > > > > > > Not sure NSS has anything to do with this. It only gives an error > > > message > > > related to PKCS #11. > > > > > > Can you try this with the latest Gambas? Maybe it is fixed > > > already. > > > > > > > > > Jussi > > > > > > On Fri, Aug 6, 2021 at 4:37 PM Jussi Lahtinen < > > > jussi.lahtinen at gmail.com> > > > wrote: > > > > > > > Also, again, I don't see anything suggesting the IDE crashes. > > > > Only > > > > the > > > > interpreter. > > > > > > > > > > > > Jussi > > > > > > > > On Fri, Aug 6, 2021 at 4:35 PM Jussi Lahtinen < > > > > jussi.lahtinen at gmail.com> > > > > wrote: > > > > > > > > > From what you give us to see, it seems to be Qt related. Can > > > > > you > > > > > isolate > > > > > the problem to some small runnable (crashable) project? > > > > > > > > > > Jussi > > > > > > > > > > On Fri, Aug 6, 2021 at 10:46 AM bb > > > > > wrote: > > > > > > > > > > > Gambas 16.2 Stable on MX Linux > > > > > > > > > > > > As well as intepreter crashes mentioned in the other > > > > > > thread, I > > > > > > am now > > > > > > getting IDE crashes with some projects within the IDE. They > > > > > > all > > > > > > seem to > > > > > > do with code completion. I have disabled near every code > > > > > > completion > > > > > > feature ( help popups, offline help, etc etc ) but they are > > > > > > still > > > > > > occurring. > > > > > > > > > > > > The crash is with a similar dump as before, i.e. no stack > > > > > > trace. But > > > > > > here is what happens. > > > > > > > > > > > > 1) On starting the IDE (in a terminal) the IDE starts and > > > > > > displays the > > > > > > project selector screen OK but this warning appears in the > > > > > > terminal: > > > > > > "[26563:26598:0806/165458.706936:ERROR:nss_util.cc(727)] > > > > > > After > > > > > > loading > > > > > > Root Certs, loaded==false: NSS error code: -8018" > > > > > > > > > > > > 2) I select a project and it loads without any problem. > > > > > > 3) As a check I do a "Compile All" which succeeds without > > > > > > any > > > > > > boogeymen. > > > > > > 4) I then close the IDE down and the following is output in > > > > > > the > > > > > > terminal (slightly editted for readability, the original is > > > > > > attached.) > > > > > > > > > > > > "Received signal 11 SEGV_MAPERR 000000000008" > > > > > > then 61 lines of object references, then the register dump, > > > > > > then > > > > > > "[end of stack trace] > > > > > > Calling _exit(1). Core file will not be generated." > > > > > > > > > > > > Information gleaned from elsewhere is that the message is > > > > > > that > > > > > > some nss > > > > > > (GNU Name Service Switch) library installed in MX Linux is > > > > > > causing the > > > > > > output. I have three such libraries installed (libxmlsec1- > > > > > > nss, > > > > > > libnss- > > > > > > mdns, libnss-myhostname) and have no others that I can find > > > > > > installed. > > > > > > > > > > > > Now to the question. > > > > > > > > > > > > > > > > > > Does anyone know WHY and/or WHERE the gambas3 IDE would > > > > > > call > > > > > > any nss > > > > > > library on exit? > > > > > > > > > > > > > > > > > > This is driving me crazy! > > > > > > > > > > > > tia > > > > > > bruce > > > > > > > > > > > > > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > > > > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > Yep, lets forget nss at the moment. This is all coming from a much > > lower level. > > > > b > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- From brian at westwoodsvcs.com Sun Aug 8 17:23:17 2021 From: brian at westwoodsvcs.com (Brian G) Date: Sun, 8 Aug 2021 08:23:17 -0700 (PDT) Subject: [Gambas-user] using 2>redirect with Exec? In-Reply-To: References: <2028421333.13063.1628386745614.JavaMail.zimbra@westwoodsvcs.com> Message-ID: <1915159648.13139.1628436197914.JavaMail.zimbra@westwoodsvcs.com> I added a text area called Errormsg to your project, and here is the code to get error messages and process them from your app: ' Gambas class file Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" Private Writer As File Private Reader As File Private restore As File Public Sub _new() Writer = Open Pipe "/tmp/testpipeout" For Write restore = File.Err dup2(Writer.handle, 2) Reader = Open Pipe "/tmp/testpipeout" For Read Watch End Public Sub _free() Close Writer Close Reader dup2(restore.handle, 2) End Public Sub Form_Close() Quit 0 End Public Sub file_read() Dim buffer As String buffer = Read #Last, -Lof(Last) ErrorMsgs.text &= "From Error Handler :" & Quote(buffer) & "\n" ErrorMsgs.Refresh() End Public Sub Button1_Click() Print "Something" Wait End "Failure is the key to success; each mistake teaches us something" .. Morihei Ueshiba Brian G ----- On Aug 8, 2021, at 2:43 AM, Bruce Steers wrote: > oooh , that's brilliant , Cheers Brian :) > I removed the dup2(dummy.Handle, 1) as it's only the gtk warnings i want to > suppress. > Now i just have to figure out how to read the error text as it comes through and > show anything that's not a gtk message. > almost had it using a pipe but it was flawed :( > Thank you , much better than my app launching itself twice :) > BruceS > On Sun, 8 Aug 2021 at 03:06, Brian G < [ mailto:brian at westwoodsvcs.com | > brian at westwoodsvcs.com ] > wrote: >> Hi bruce, >> Just notices this new thread >> Replied to the other one but here it is again >> Add this to the startup class of you application >> Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" >> Static Dummy As File >> Static Public Sub _init() >> dummy = Open "/dev/null" For Write >> dup2(dummy.Handle, 1) >> dup2(dummy.handle, 2) >> End >> No need for any other fiddles >> "Failure is the key to success; >> each mistake teaches us something" .. Morihei Ueshiba >> Brian G >> ----- On Aug 7, 2021, at 5:05 PM, Jussi Lahtinen < [ >> mailto:jussi.lahtinen at gmail.com | jussi.lahtinen at gmail.com ] > wrote: >>> No, that is for terminal. You must use "Output to" and "Error To" keywords. >>> [ http://gambaswiki.org/wiki/lang/errorto | >>> http://gambaswiki.org/wiki/lang/errorto ] >>> Jussi >>> On Sun, Aug 8, 2021 at 2:29 AM Bruce Steers < [ mailto:bsteers4 at gmail.com | >>> bsteers4 at gmail.com ] > wrote: >>>> I cannot get redirect working with Exec. Is it possible? >>>> Ie.. >>>> Shell "/run/mycommand 2>&1" >>>> works as expected and redirects error text to stdout. >>>> Exec ["/run/mycommand", "2>&1"] >>>> does not redirect and only sends '2>&1' as an argument to /run/mycommand. >>>> Is there a way to redirect with Exec or will i have to Shell it? >>>> For some reason i am under the impression it is better to use Exec over Shell if >>>> possible? >>>> Thanks in advance >>>> BruceS >>>> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >>>> http://gambaswiki.org/wiki/doc/netiquette ] ]---- >>> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >>> http://gambaswiki.org/wiki/doc/netiquette ] ]---- >> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >> http://gambaswiki.org/wiki/doc/netiquette ] ]---- > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- -------------- next part -------------- An HTML attachment was scrubbed... URL: From brian at westwoodsvcs.com Sun Aug 8 17:57:41 2021 From: brian at westwoodsvcs.com (Brian G) Date: Sun, 8 Aug 2021 08:57:41 -0700 (PDT) Subject: [Gambas-user] using 2>redirect with Exec? In-Reply-To: <1915159648.13139.1628436197914.JavaMail.zimbra@westwoodsvcs.com> References: <2028421333.13063.1628386745614.JavaMail.zimbra@westwoodsvcs.com> <1915159648.13139.1628436197914.JavaMail.zimbra@westwoodsvcs.com> Message-ID: <72623243.13198.1628438261766.JavaMail.zimbra@westwoodsvcs.com> I have attached the whole project updated as an executable gambas script. Hope this helps "Failure is the key to success; each mistake teaches us something" .. Morihei Ueshiba Brian G ----- On Aug 8, 2021, at 8:23 AM, Brian G wrote: > I added a text area called Errormsg to your project, and here is the code to get > error messages and process them from your app: > ' Gambas class file > Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" > Private Writer As File > Private Reader As File > Private restore As File > Public Sub _new() > Writer = Open Pipe "/tmp/testpipeout" For Write > restore = File.Err > dup2(Writer.handle, 2) > Reader = Open Pipe "/tmp/testpipeout" For Read Watch > End > Public Sub _free() > Close Writer > Close Reader > dup2(restore.handle, 2) > End > Public Sub Form_Close() > Quit 0 > End > Public Sub file_read() > Dim buffer As String > buffer = Read #Last, -Lof(Last) > ErrorMsgs.text &= "From Error Handler :" & Quote(buffer) & "\n" > ErrorMsgs.Refresh() > End > Public Sub Button1_Click() > Print "Something" > Wait > End > "Failure is the key to success; > each mistake teaches us something" .. Morihei Ueshiba > Brian G > ----- On Aug 8, 2021, at 2:43 AM, Bruce Steers wrote: >> oooh , that's brilliant , Cheers Brian :) >> I removed the dup2(dummy.Handle, 1) as it's only the gtk warnings i want to >> suppress. >> Now i just have to figure out how to read the error text as it comes through and >> show anything that's not a gtk message. >> almost had it using a pipe but it was flawed :( >> Thank you , much better than my app launching itself twice :) >> BruceS >> On Sun, 8 Aug 2021 at 03:06, Brian G < [ mailto:brian at westwoodsvcs.com | >> brian at westwoodsvcs.com ] > wrote: >>> Hi bruce, >>> Just notices this new thread >>> Replied to the other one but here it is again >>> Add this to the startup class of you application >>> Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" >>> Static Dummy As File >>> Static Public Sub _init() >>> dummy = Open "/dev/null" For Write >>> dup2(dummy.Handle, 1) >>> dup2(dummy.handle, 2) >>> End >>> No need for any other fiddles >>> "Failure is the key to success; >>> each mistake teaches us something" .. Morihei Ueshiba >>> Brian G >>> ----- On Aug 7, 2021, at 5:05 PM, Jussi Lahtinen < [ >>> mailto:jussi.lahtinen at gmail.com | jussi.lahtinen at gmail.com ] > wrote: >>>> No, that is for terminal. You must use "Output to" and "Error To" keywords. >>>> [ http://gambaswiki.org/wiki/lang/errorto | >>>> http://gambaswiki.org/wiki/lang/errorto ] >>>> Jussi >>>> On Sun, Aug 8, 2021 at 2:29 AM Bruce Steers < [ mailto:bsteers4 at gmail.com | >>>> bsteers4 at gmail.com ] > wrote: >>>>> I cannot get redirect working with Exec. Is it possible? >>>>> Ie.. >>>>> Shell "/run/mycommand 2>&1" >>>>> works as expected and redirects error text to stdout. >>>>> Exec ["/run/mycommand", "2>&1"] >>>>> does not redirect and only sends '2>&1' as an argument to /run/mycommand. >>>>> Is there a way to redirect with Exec or will i have to Shell it? >>>>> For some reason i am under the impression it is better to use Exec over Shell if >>>>> possible? >>>>> Thanks in advance >>>>> BruceS >>>>> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >>>>> http://gambaswiki.org/wiki/doc/netiquette ] ]---- >>>> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >>>> http://gambaswiki.org/wiki/doc/netiquette ] ]---- >>> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >>> http://gambaswiki.org/wiki/doc/netiquette ] ]---- >> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: test.gbs.gmail.txt URL: From jussi.lahtinen at gmail.com Sun Aug 8 22:22:17 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Sun, 8 Aug 2021 23:22:17 +0300 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit In-Reply-To: <726bfc3b5389b58c5a28f5c00ef5ead75f990623.camel@gmail.com> References: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> <726bfc3b5389b58c5a28f5c00ef5ead75f990623.camel@gmail.com> Message-ID: > > No crash here, but some of the components are missing, so that may > > influence the test. > Damn, I removed all the things that need the ph. components but forgot > to update the project properties. Just delete the ph. Components. You > would also need to change all the hardcoded paths as well. > It does compile without changing the paths and your earlier instructions did not mention running anything. If this is not correct, please give exact steps to reproduce the problem. > What is the installed Qt version? > > > 5.11.3 > This version shouldn't be in use anymore. Maybe it is a bug in that version. Jussi -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Mon Aug 9 11:53:51 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Mon, 9 Aug 2021 10:53:51 +0100 Subject: [Gambas-user] using 2>redirect with Exec? In-Reply-To: <72623243.13198.1628438261766.JavaMail.zimbra@westwoodsvcs.com> References: <2028421333.13063.1628386745614.JavaMail.zimbra@westwoodsvcs.com> <1915159648.13139.1628436197914.JavaMail.zimbra@westwoodsvcs.com> <72623243.13198.1628438261766.JavaMail.zimbra@westwoodsvcs.com> Message-ID: That's fantastic Brian , many thanks :) I made a couple of changes.. I changed the 'Quit 0' in Form_Close() to be '_free()' (I've never really been a Quitter ;) ) Then a couple of InStr() calls in File_Read() and it's now exactly what I wanted :) Many thanks my good man. much appreciated :) BruceS On Sun, 8 Aug 2021 at 17:08, Brian G wrote: > I have attached the whole project updated as an executable gambas script. > Hope this helps > > "Failure is the key to success; > each mistake teaches us something" .. Morihei Ueshiba > Brian G > > ----- On Aug 8, 2021, at 8:23 AM, Brian G wrote: > > I added a text area called Errormsg to your project, and here is the code > to get error messages and process them from your app: > ' Gambas class file > > Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" > Private Writer As File > Private Reader As File > Private restore As File > Public Sub _new() > Writer = Open Pipe "/tmp/testpipeout" For Write > restore = File.Err > dup2(Writer.handle, 2) > Reader = Open Pipe "/tmp/testpipeout" For Read Watch > End > Public Sub _free() > Close Writer > Close Reader > dup2(restore.handle, 2) > End > Public Sub Form_Close() > Quit 0 > End > Public Sub file_read() > Dim buffer As String > buffer = Read #Last, -Lof(Last) > ErrorMsgs.text &= "From Error Handler :" & Quote(buffer) & "\n" > ErrorMsgs.Refresh() > End > Public Sub Button1_Click() > Print "Something" > Wait > End > > "Failure is the key to success; > each mistake teaches us something" .. Morihei Ueshiba > Brian G > > ----- On Aug 8, 2021, at 2:43 AM, Bruce Steers wrote: > > oooh , that's brilliant , Cheers Brian :) > I removed the dup2(dummy.Handle, 1) as it's only the gtk warnings i want > to suppress. > Now i just have to figure out how to read the error text as it comes > through and show anything that's not a gtk message. > > almost had it using a pipe but it was flawed :( > > Thank you , much better than my app launching itself twice :) > BruceS > > > > On Sun, 8 Aug 2021 at 03:06, Brian G wrote: > >> Hi bruce, >> >> Just notices this new thread >> >> Replied to the other one but here it is again >> >> Add this to the startup class of you application >> >> Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" >> Static Dummy As File >> Static Public Sub _init() >> dummy = Open "/dev/null" For Write >> dup2(dummy.Handle, 1) >> dup2(dummy.handle, 2) >> >> End >> >> No need for any other fiddles >> >> "Failure is the key to success; >> each mistake teaches us something" .. Morihei Ueshiba >> Brian G >> >> ----- On Aug 7, 2021, at 5:05 PM, Jussi Lahtinen < >> jussi.lahtinen at gmail.com> wrote: >> >> No, that is for terminal. You must use "Output to" and "Error To" >> keywords. >> http://gambaswiki.org/wiki/lang/errorto >> >> Jussi >> >> On Sun, Aug 8, 2021 at 2:29 AM Bruce Steers wrote: >> >>> >>> I cannot get redirect working with Exec. Is it possible? >>> >>> Ie.. >>> Shell "/run/mycommand 2>&1" >>> works as expected and redirects error text to stdout. >>> >>> Exec ["/run/mycommand", "2>&1"] >>> does not redirect and only sends '2>&1' as an argument to /run/mycommand. >>> >>> Is there a way to redirect with Exec or will i have to Shell it? >>> >>> For some reason i am under the impression it is better to use Exec over >>> Shell if possible? >>> >>> Thanks in advance >>> BruceS >>> >>> >>> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >>> >> >> >> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >> >> >> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >> > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Mon Aug 9 16:41:24 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Mon, 9 Aug 2021 15:41:24 +0100 Subject: [Gambas-user] tracking down toolkit erors In-Reply-To: <1001425865.13031.1628386629349.JavaMail.zimbra@westwoodsvcs.com> References: <5ba27d1984073bc189f69d4a8dea6ae1@cenpalab.cu> <1001425865.13031.1628386629349.JavaMail.zimbra@westwoodsvcs.com> Message-ID: Many Thanks BrianG. With this and your other help I now have this routine.... *' Gambas class fileExtern dup2(OldFD As Integer, newfd As Integer) In "libc:6"Private Writer As FilePrivate Reader As FilePrivate restore As FilePublic Sub _new() Writer = Open Pipe "/tmp/testpipeout" For Write restore = File.Err dup2(Writer.handle, 2) Reader = Open Pipe "/tmp/testpipeout" For Read WatchEndPublic Sub File_read() Dim buffer As String buffer = Read #Last, -Lof(Last) For Each sLine As String In Split(buffer, "\n") If Not sLine Then Continue If sLine Like "(" & Application.Name & ":*): G*k-*" Then Continue Print sLine NextEndPublic Sub Form_Close() If Writer Then Writer.Close() If Reader Then Reader.Close() dup2(restore.handle, 2)End* *Public Sub Button1_Click() Print "Print Something" Debug "Debug Something"End* I had to check each line of the buffer individually and used Like to pattern-match the Gtk- Gdk- messages So with that code my own Debug and Error messages still output (albeit to stdout but that's fine) just the gtk/gdk messages are gone :) Thanks again Brian , much respect :) BruceS On Sun, 8 Aug 2021 at 03:34, Brian G wrote: > Bruce replace your _new with this code > > Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" > Static Dummy As File > Static Public Sub _init() > dummy = Open "/dev/null" For Write > dup2(dummy.Handle, 1) > dup2(dummy.handle, 2) > End > > Should give you what you want without all the fiddle > > "Failure is the key to success; > each mistake teaches us something" .. Morihei Ueshiba > Brian G > > ----- On Aug 7, 2021, at 12:39 PM, Bruce Steers > wrote: > > > > On Thu, 5 Aug 2021 at 20:34, Bruce Steers wrote: > >> >> >> On Wed, 4 Aug 2021 at 00:53, wrote: >> >>> August 3, 2021 2:29 PM, "Bruce Steers" >> > >>> wrote: >>> >>> I have this program i'm developing that was starting and stopping >>> cleanly then i recently added some controls and did various other things >>> and now it says this when it starts... >>> (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing error: >>> :1:15: Expected a valid selectorIs there a way to track down what's >>> causing it? >>> thanks >>> BruceS >>> >>> >>> >>> GTK has always output loads of different errors with many programs (not >>> gambas ones, I mean), when run in a terminal. People say it depends on the >>> current theme and whatnot... >>> >>> >> Indeed, Pluma was always my texteditor of choice and that used to pump >> out loads of warnings. >> (but now of course i use my own editor i wrote with gambas that has all >> those cool Texteditor features ;) ) >> >> Would be great to be able to catch the warnings though. >> Either a way to track what exactly is causing them or just suppress the >> messages. >> >> >> >> BruceS >> > > > so best answer i have so far is this "hack"... > Uses gb.args > if the arg -q or --quiet is given then before the app loads it launches > itself with any and all args plus "2>/dev/null" to redirect the error > output and an additional arg -s. > > when the 2nd run instance quits the 1st one that launched the second one > also quits before it's even done anything. > > > > > > > > > > *Public Sub _new() Args.Begin() Dim bQuiet As Boolean = Args.Has("q", > "quiet", "supress gtk error messages") If bQuiet Then bQuiet = > (Args.Has("s", "supressed", "supressed gtk error warnings") == False) > Args.End() If bQuiet And File.In.IsTerm Then * ' if we are not run from > a terminal then no need for any of this > > * Dim sRestOfargs As String[] = Args.All.Copy()* > > * '* the next 2 lines just handle if being run from the IDE and make > Arg[0] be executable name. > > > * If Not InStr(sRestOfargs[0], "/") Then sRestOfargs[0] = > Application.Path &/ Application.Name If File.Ext(sRestOfargs[0]) <> > "gambas" Then sRestOfargs[0] &= ".gambas" * > > > > > > > > > * sRestOfargs.Insert(["-s", "2>/dev/null"]) Shell sRestOfargs.Join(" > ") Me.Close Return EndifEnd* > > Attached is a simple test app > It's a form with a tiny little TextArea in it, so small it produces > warnings on my system when i move the mouse around the window... > (Test:79673): Gdk-CRITICAL **: 20:26:58.775: gdk_window_is_visible: > assertion 'GDK_IS_WINDOW (window)' failed > > Run with -q and all is quiet. > ./Test.gambas -q > > Of course this method will suppress ANY error messages , > shell commands can be fixed by adding '>2&1' > Shell "/run/mycommand 2>&1" > that redirects error output to stdout and stdout is still showing > > Please somebody tell me there's a better way... > > BruceS > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Mon Aug 9 19:41:24 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Mon, 9 Aug 2021 18:41:24 +0100 Subject: [Gambas-user] DBus oddity with startup application. Message-ID: Hi all, I am using the following command to shutdown the computer... Try DBus["system://org.freedesktop.login1"]["/org/freedesktop/login1", "org.freedesktop.login1.Manager"].PowerOff(True) the function exists in an application i have running in my "Startup Applications" (with a 5 second delay) the odd thing is , At ANY time i try the function from the application run at startup it fails. It says Unknown Interface but the DBus.System.Applications lists as existing If i close the application and re-launch it the function works as expected !? any clues as to why being run as a "Startup Application" fails to find the interface? PS. the shutdown function is not run at runtime. I have to press some buttons so the DBus login1 thing should be well awake by then. Can i Reset/refresh the DBus.class? or does anyone know of the reason and know of a fix? Cheers folks :) wishing well BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Mon Aug 9 20:24:53 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Mon, 9 Aug 2021 19:24:53 +0100 Subject: [Gambas-user] DBus oddity with startup application. In-Reply-To: References: Message-ID: On Mon, 9 Aug 2021 at 18:41, Bruce Steers wrote: > > Hi all, > I am using the following command to shutdown the computer... > > Try DBus["system://org.freedesktop.login1"]["/org/freedesktop/login1", > "org.freedesktop.login1.Manager"].PowerOff(True) > > the function exists in an application i have running in my "Startup > Applications" (with a 5 second delay) > > the odd thing is , At ANY time i try the function from the application > run at startup it fails. > It says Unknown Interface but the DBus.System.Applications lists as > existing > > If i close the application and re-launch it the function works as expected > !? > > any clues as to why being run as a "Startup Application" fails to find the > interface? > > PS. the shutdown function is not run at runtime. I have to press some > buttons so the DBus login1 thing should be well awake by then. > > Can i Reset/refresh the DBus.class? > or does anyone know of the reason and know of a fix? > I've fixed the problem with this in my FMain.class ... *Static Public Sub _init()* * If Not Exist("/tmp/dish_opened") Then Wait 2 File.Save("/tmp/dish_opened", "true") EndifEnd* that gives a couple of seconds and then the org.freedesktop.login1.Manager.PowerOff() function works if app is closed and relaunched it finds the file in /tmp/ and does not wait and dbus is still okay. Seems any call to Dbus like DBus.System.Applications.Exist() in _init() initialises dbus too early, it finds the login1 DBus.System.Applications but the Interfaces do not work. So the fix above is all i can think of. #IffyWorkaroundsAreUs ;) BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: From g4mba5 at gmail.com Mon Aug 9 20:32:37 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Mon, 9 Aug 2021 20:32:37 +0200 Subject: [Gambas-user] DBus oddity with startup application. In-Reply-To: References: Message-ID: Le 09/08/2021 ? 20:24, Bruce Steers a ?crit?: > > I've fixed the problem with this in my FMain.class ... > > *Static Public Sub _init() > * > *If Not Exist("/tmp/dish_opened") Then > ? ? Wait 2 > ? ? File.Save("/tmp/dish_opened", "true") > ? Endif > > End* > that gives a couple of seconds and then the > org.freedesktop.login1.Manager.PowerOff() function works > if app is closed and relaunched it finds the file in /tmp/ and does not > wait and dbus is still okay. > > > Seems any call to Dbus like DBus.System.Applications.Exist() in _init() > initialises dbus too early, it finds the login1 DBus.System.Applications > but the Interfaces do not work. Then the problem is in the application that handles 'org.freedesktop.login1.Manager'. -- Beno?t Minisini From bsteers4 at gmail.com Mon Aug 9 22:27:31 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Mon, 9 Aug 2021 21:27:31 +0100 Subject: [Gambas-user] DBus oddity with startup application. In-Reply-To: References: Message-ID: On Mon, 9 Aug 2021, 19:33 Beno?t Minisini, wrote: > Le 09/08/2021 ? 20:24, Bruce Steers a ?crit : > > > > I've fixed the problem with this in my FMain.class ... > > > > *Static Public Sub _init() > > * > > *If Not Exist("/tmp/dish_opened") Then > > Wait 2 > > File.Save("/tmp/dish_opened", "true") > > Endif > > > > End* > > that gives a couple of seconds and then the > > org.freedesktop.login1.Manager.PowerOff() function works > > if app is closed and relaunched it finds the file in /tmp/ and does not > > wait and dbus is still okay. > > > > > > Seems any call to Dbus like DBus.System.Applications.Exist() in _init() > > initialises dbus too early, it finds the login1 DBus.System.Applications > > but the Interfaces do not work. > > Then the problem is in the application that handles > 'org.freedesktop.login1.Manager'. > Seems quite odd that the login1 interface is not found but the login1 Application is unless I restart the program. Like gb.dbus DBus.class sets something up as the component loads that does not ever get refreshed? Thanks Ben -------------- next part -------------- An HTML attachment was scrubbed... URL: From g4mba5 at gmail.com Mon Aug 9 22:49:22 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Mon, 9 Aug 2021 22:49:22 +0200 Subject: [Gambas-user] DBus oddity with startup application. In-Reply-To: References: Message-ID: <3bb77d62-a21a-cd8f-498e-709eeda5a0d2@gmail.com> Le 09/08/2021 ? 22:27, Bruce Steers a ?crit?: > > > On Mon, 9 Aug 2021, 19:33 Beno?t Minisini, > wrote: > > Le 09/08/2021 ? 20:24, Bruce Steers a ?crit?: > > > > I've fixed the problem with this in my FMain.class ... > > > > *Static Public Sub _init() > > * > > *If Not Exist("/tmp/dish_opened") Then > >? ? ? Wait 2 > >? ? ? File.Save("/tmp/dish_opened", "true") > >? ? Endif > > > > End* > > that gives a couple of seconds and then the > > org.freedesktop.login1.Manager.PowerOff() function works > > if app is closed and relaunched it finds the file in /tmp/ and > does not > > wait and dbus is still okay. > > > > > > Seems any call to Dbus like DBus.System.Applications.Exist() in > _init() > > initialises dbus too early, it finds the login1 > DBus.System.Applications > > but the Interfaces do not work. > > Then the problem is in the application that handles > 'org.freedesktop.login1.Manager'. > > > Seems quite odd that the login1 interface is not found but the login1 > Application is unless I restart the program. This is why I say it's a problem in the login1 application. It registers on the DBus bus, but misteriously does not return the expected introspection data when you first call DBus["system://org.freedesktop.login1"]["/org/freedesktop/login1", "org.freedesktop.login1.Manager"]. I guess it does return the expected introspection later. The 'gb.dbus' component does not support DBus objects whose interface changes during their lifetime. I could add a Refresh() method to the DBusApplication class, so that you can call DBus["system://org.freedesktop.login1"].Refresh() to clear all the internal caches. But anyway you will have to wait an arbitrary amount of time, because apparently the "org.freedesktop.login1.Manager" interface does not appear immediately after the "login1" application register to the bus. Look at the 'gb.dbus' source code to understand how all that works. Regards, -- Beno?t Minisini From brian at westwoodsvcs.com Tue Aug 10 07:49:32 2021 From: brian at westwoodsvcs.com (Brian G) Date: Mon, 9 Aug 2021 22:49:32 -0700 (PDT) Subject: [Gambas-user] tracking down toolkit erors In-Reply-To: References: <5ba27d1984073bc189f69d4a8dea6ae1@cenpalab.cu> <1001425865.13031.1628386629349.JavaMail.zimbra@westwoodsvcs.com> Message-ID: <1232559594.13585.1628574572540.JavaMail.zimbra@westwoodsvcs.com> Bruce, If you make the following change your errors will go to the console and all underlying C code errors will go to the pipe. No need for filters in the File_read function. probably a good idea to log them in case anything really does go wrong. If you don't want to capture those errors at all then just make writer open as "/dev/null" skip the whole open for read. "Failure is the key to success; each mistake teaches us something" .. Morihei Ueshiba Brian G ----- On Aug 9, 2021, at 7:41 AM, Bruce Steers wrote: > Many Thanks BrianG. With this and your other help I now have this routine.... > ' Gambas class file > Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" > Private Writer As File > Private Reader As File > Private restore As File > Public Sub _new() > Writer = Open Pipe "/tmp/testpipeout" For Write > restore = File.Err > dup2(Writer.handle, 2) > Reader = Open Pipe "/tmp/testpipeout" For Read Watch > End Public Sub _new() Writer = Open Pipe "/tmp/testpipeout" For Write ' get the error destination to a known handle restore = Open "/dev/null" For Write ' open any old file to get a handle dup2(2, restore.handle) ' Make that handle equal std error Error To restore ' point gambas's error output to the original term dup2(Writer.handle, 2) Reader = Open Pipe "/tmp/testpipeout" For Read Watch End Alternatively if not wanting to capture the other libc errors then just: Public Sub _new() Writer = Open Pipe "/dev/null" For Write ' get the error destination to a known handle restore = Open "/dev/null" For Write ' open any old file to get handle dup2(2, restore.handle) ' Make that handle equal std error Error To restore ' point gambas's error output to the original term dup2(Writer.handle, 2) ' All other outputs to null don't need file_read at all End > Public Sub File_read() > Dim buffer As String > buffer = Read #Last, -Lof(Last) > For Each sLine As String In Split(buffer, "\n") > If Not sLine Then Continue > If sLine Like "(" & Application.Name & ":*): G*k-*" Then Continue > Print sLine > Next > End Public Sub File_read() Dim buffer As String buffer = Read #Last, -Lof(Last) '' write to some logfile here maybe End > Public Sub Form_Close() > If Writer Then Writer.Close() > If Reader Then Reader.Close() > dup2(restore.handle, 2) > End > Public Sub Button1_Click() > Print "Print Something" > Debug "Debug Something" Error "something" > End > I had to check each line of the buffer individually and used Like to > pattern-match the Gtk- Gdk- messages > So with that code my own Debug and Error messages still output (albeit to stdout > but that's fine) just the gtk/gdk messages are gone :) > Thanks again Brian , much respect :) > BruceS > On Sun, 8 Aug 2021 at 03:34, Brian G < [ mailto:brian at westwoodsvcs.com | > brian at westwoodsvcs.com ] > wrote: >> Bruce replace your _new with this code >> Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" >> Static Dummy As File >> Static Public Sub _init() >> dummy = Open "/dev/null" For Write >> dup2(dummy.Handle, 1) >> dup2(dummy.handle, 2) >> End >> Should give you what you want without all the fiddle >> "Failure is the key to success; >> each mistake teaches us something" .. Morihei Ueshiba >> Brian G >> ----- On Aug 7, 2021, at 12:39 PM, Bruce Steers < [ mailto:bsteers4 at gmail.com | >> bsteers4 at gmail.com ] > wrote: >>> On Thu, 5 Aug 2021 at 20:34, Bruce Steers < [ mailto:bsteers4 at gmail.com | >>> bsteers4 at gmail.com ] > wrote: >>>> On Wed, 4 Aug 2021 at 00:53, < [ mailto:jose.rodriguez at cenpalab.cu | >>>> jose.rodriguez at cenpalab.cu ] > wrote: >>>>> August 3, 2021 2:29 PM, "Bruce Steers" < [ >>>>> mailto:bsteers4 at gmail.com?to=%22Bruce%20Steers%22%20%3Cbsteers4 at gmail.com%3E | >>>>> bsteers4 at gmail.com ] > wrote: >>>>>> I have this program i'm developing that was starting and stopping cleanly then i >>>>>> recently added some controls and did various other things and now it says this >>>>>> when it starts... >>>>>> (Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing error: >>>>>> :1:15: Expected a valid selectorIs there a way to track down what's >>>>>> causing it? >>>>>> thanks >>>>>> BruceS >>>>> GTK has always output loads of different errors with many programs (not gambas >>>>> ones, I mean), when run in a terminal. People say it depends on the current >>>>> theme and whatnot... >>>> Indeed, Pluma was always my texteditor of choice and that used to pump out loads >>>> of warnings. >>>> (but now of course i use my own editor i wrote with gambas that has all those >>>> cool Texteditor features ;) ) >>>> Would be great to be able to catch the warnings though. >>>> Either a way to track what exactly is causing them or just suppress the >>>> messages. >>>> BruceS >>> so best answer i have so far is this "hack"... >>> Uses gb.args >>> if the arg -q or --quiet is given then before the app loads it launches itself >>> with any and all args plus "2>/dev/null" to redirect the error output and an >>> additional arg -s. >>> when the 2nd run instance quits the 1st one that launched the second one also >>> quits before it's even done anything. >>> Public Sub _new() >>> Args.Begin() >>> Dim bQuiet As Boolean = Args.Has("q", "quiet", "supress gtk error messages") >>> If bQuiet Then bQuiet = (Args.Has("s", "supressed", "supressed gtk error >>> warnings") == False) >>> Args.End() >>> If bQuiet And File.In.IsTerm Then ' if we are not run from a terminal then no >>> need for any of this >>> Dim sRestOfargs As String[] = Args.All.Copy() >>> ' the next 2 lines just handle if being run from the IDE and make Arg[0] be >>> executable name. >>> If Not InStr(sRestOfargs[0], "/") Then sRestOfargs[0] = Application.Path &/ >>> Application.Name >>> If File.Ext(sRestOfargs[0]) <> "gambas" Then sRestOfargs[0] &= ".gambas" >>> sRestOfargs.Insert(["-s", "2>/dev/null"]) >>> Shell sRestOfargs.Join(" ") >>> Me.Close >>> Return >>> Endif >>> End >>> Attached is a simple test app >>> It's a form with a tiny little TextArea in it, so small it produces warnings on >>> my system when i move the mouse around the window... >>> (Test:79673): Gdk-CRITICAL **: 20:26:58.775: gdk_window_is_visible: assertion >>> 'GDK_IS_WINDOW (window)' failed >>> Run with -q and all is quiet. >>> ./Test.gambas -q >>> Of course this method will suppress ANY error messages , >>> shell commands can be fixed by adding '>2&1' >>> Shell "/run/mycommand 2>&1" >>> that redirects error output to stdout and stdout is still showing >>> Please somebody tell me there's a better way... >>> BruceS >>> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >>> http://gambaswiki.org/wiki/doc/netiquette ] ]---- >> ----[ [ http://gambaswiki.org/wiki/doc/netiquette | >> http://gambaswiki.org/wiki/doc/netiquette ] ]---- > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- -------------- next part -------------- An HTML attachment was scrubbed... URL: From tercoide at hotmail.com Tue Aug 10 14:25:56 2021 From: tercoide at hotmail.com (martin p cristia) Date: Tue, 10 Aug 2021 09:25:56 -0300 Subject: [Gambas-user] A little feature request In-Reply-To: References: Message-ID: When the packager maked the installation .deb, the installer creates a .desktop file in /usr/share/applications. If our program can be used for opening some file types with rigth-click "Open with.." in the file manager we need a %u added in the "Exec=" entry: [Desktop Entry] Version=1.0 Name=GambasAPP Comment=My great Gambas app Exec=GambasAPP %u? <----------------------------THIS! Icon=gambasapp Terminal=false Type=Application StartupNotify=true Categories=Engineering;Science; MimeType=image/vnd.dwg;image/vnd.dxf Of course ir can be manually added, but having it done by the packager would be great. Thanks in advance. -- Saludos Ing. Martin P Cristia From brian at westwoodsvcs.com Tue Aug 10 15:49:38 2021 From: brian at westwoodsvcs.com (=?UTF-8?B?QnJpYW4gRw==?=) Date: Tue, 10 Aug 2021 16:49:38 +0300 Subject: [Gambas-user] =?utf-8?q?tracking_down_toolkit_erors?= In-Reply-To: <1232559594.13585.1628574572540.JavaMail.zimbra@westwoodsvcs.com> References: <1232559594.13585.1628574572540.JavaMail.zimbra@westwoodsvcs.com> Message-ID: <1628603378.277274694@f35.my.com> Hi Bruce. That idea just came to me last night .. seems to work. Sorry -- Thanks Brian G Monday, 09 August 2021, 11:46PM -07:00 from Brian G brian at westwoodsvcs.com : >Bruce, >If you make the following change your errors will go to the console >and all underlying C code errors will go to the pipe. No need for filters in the >File_read function. probably a good idea to log them in case anything really >does go wrong. >If you don't want to capture those errors at all then just make writer open as "/dev/null" >skip the whole open for read. > >"Failure is the key to success; >?each mistake teaches us something" ?.. Morihei Ueshiba >Brian G > >----- On Aug 9, 2021, at 7:41 AM, Bruce Steers < bsteers4 at gmail.com> wrote: >>Many Thanks BrianG.? With this and your other help I now have this routine.... >> >>' Gambas class file >> >>Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" >>Private Writer As File >>Private Reader As File >>Private restore As File >> >>Public Sub _new() >>? Writer = Open Pipe "/tmp/testpipeout" For Write >>? restore = File.Err >>? dup2(Writer.handle, 2) >>? Reader = Open Pipe "/tmp/testpipeout" For Read Watch >>End >Public Sub _new() >? Writer = Open Pipe "/tmp/testpipeout" For Write >?? >' get the error destination to a known handle >? restore = Open "/dev/null" For Write? ? ? ? ? ? ? ? ?' open any old file to get a handle >? dup2(2, restore.handle)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?' Make that handle equal std error >? Error To restore? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ' point gambas's error output to the original term? >?? >? dup2(Writer.handle, 2) >? Reader = Open Pipe "/tmp/testpipeout" For Read Watch >? >End > >Alternatively if not wanting to capture the other libc errors then just: > >Public Sub _new() >? Writer = Open Pipe "/dev/null" For Write >?? >' get the error destination to a known handle >? restore = Open "/dev/null" For Write? ? ? ? ? ? ? ? ?' open any old file to get handle >? dup2(2, restore.handle)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?' Make that handle equal std error >? Error To restore? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ' point gambas's error output to the original term? >?? >? dup2(Writer.handle, 2)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?' All other outputs to null don't need file_read at all >? >End > >> >> >>Public Sub File_read() >> >>? Dim buffer As String >> >>? buffer = Read #Last, -Lof(Last) >>? For Each sLine As String In Split(buffer, "\n") >>? ? If Not sLine Then Continue >>? ? If sLine Like "(" & Application.Name & ":*): G*k-*" Then Continue >>? ? Print sLine >>? Next >> >>End >Public Sub File_read() >? Dim buffer As String >? buffer = Read #Last, -Lof(Last) >? '' write to some logfile here maybe >End > >> >> >>Public Sub Form_Close() >>? If Writer Then Writer.Close() >>? If Reader Then Reader.Close() >>? dup2(restore.handle, 2) >>End >> >> >>Public Sub Button1_Click() >> >>? Print "Print Something" >>? Debug "Debug Something" >? ?Error "something" >> >> >>End >>I had to check each line of the buffer individually and used Like to pattern-match the Gtk- Gdk- messages >> >>So with that code my own Debug and Error messages still output (albeit to stdout but that's fine) just the gtk/gdk messages are gone :) >>Thanks again Brian , much respect :) >>BruceS >> >> >> >>On Sun, 8 Aug 2021 at 03:34, Brian G < brian at westwoodsvcs.com> wrote: >>>Bruce replace your _new with this code >>>Extern dup2(OldFD As Integer, newfd As Integer) In "libc:6" >>>Static Dummy As File >>>Static Public Sub _init() >>>? dummy = Open "/dev/null" For Write >>>? dup2(dummy.Handle, 1) >>>? dup2(dummy.handle, 2) >>>End >>>Should give you what you want without all the fiddle >>>"Failure is the key to success; >>>?each mistake teaches us something" ?.. Morihei Ueshiba >>>Brian G >>> >>>----- On Aug 7, 2021, at 12:39 PM, Bruce Steers < bsteers4 at gmail.com> wrote: >>>> >>>> >>>>On Thu, 5 Aug 2021 at 20:34, Bruce Steers < bsteers4 at gmail.com> wrote: >>>>> >>>>> >>>>>On Wed, 4 Aug 2021 at 00:53, < jose.rodriguez at cenpalab.cu> wrote: >>>>>>August 3, 2021 2:29 PM, "Bruce Steers" < bsteers4 at gmail.com> wrote: >>>>>>>I have this program i'm developing that was starting and stopping cleanly then i recently added some controls and did various other things and now it says this when it starts... >>>>>>>(Desktop-ish:12906): Gtk-WARNING **: 16:29:25.336: Theme parsing error: :1:15: Expected a valid selectorIs there a way to track down what's causing it? >>>>>>>thanks >>>>>>>BruceS >>>>>> >>>>>>GTK has always output loads of different errors with many programs (not gambas ones, I mean), when run in a terminal. People say it depends on the current theme and whatnot... >>>>>> >>>>> >>>>>Indeed, Pluma was always my texteditor of choice and that used to pump out loads of warnings. >>>>>(but now of course i use my own editor i wrote with gambas that has all those cool Texteditor features ;) ) >>>>> >>>>>Would be great to be able to catch the warnings though. >>>>>Either a way to track what exactly is causing them or just suppress the messages. >>>>> >>>>> >>>>> >>>>>BruceS >>>> >>>> >>>>so best answer i have so far is this "hack"... >>>>Uses gb.args >>>>if the arg -q or --quiet is given then before the app loads it launches itself with any and all args plus "2> /dev/null" to redirect the error output and an additional arg -s. >>>> >>>>when the 2nd run instance quits the 1st one that launched the second one also quits before it's even done anything. >>>> >>>> >>>>Public Sub _new() >>>> >>>>? Args.Begin() >>>>? Dim bQuiet As Boolean = Args.Has("q", "quiet", "supress gtk error messages") >>>>? If bQuiet Then bQuiet = (Args.Has("s", "supressed", "supressed gtk error warnings") == False) >>>>? Args.End() >>>> >>>>? If bQuiet And File.In.IsTerm Then? ' if we are not run from a terminal then no need for any of this >>>>? ? Dim sRestOfargs As String[] = Args.All.Copy() >>>> >>>>??? ' the next 2 lines just handle if being run from the IDE and make Arg[0] be executable name. >>>>? ? If Not InStr(sRestOfargs[0], "/") Then sRestOfargs[0] = Application.Path &/ Application.Name >>>>? ? If File.Ext(sRestOfargs[0]) <> "gambas" Then sRestOfargs[0] &= ".gambas"?? >>>> >>>>??? sRestOfargs.Insert(["-s", "2> /dev/null"]) >>>>? ? Shell sRestOfargs.Join(" ") >>>>? ? Me.Close >>>>? ? Return >>>>? Endif >>>> >>>>End >>>> >>>>Attached is a simple test app >>>>It's a form with a tiny little TextArea in it, so small it produces warnings on my system when i move the mouse around the window... >>>>(Test:79673): Gdk-CRITICAL **: 20:26:58.775: gdk_window_is_visible: assertion 'GDK_IS_WINDOW (window)' failed >>>> >>>>Run with -q and all is quiet. >>>>./Test.gambas -q >>>> >>>>Of course this method will suppress ANY error messages , >>>>shell commands can be fixed by adding '> 2&1' >>>>Shell "/run/mycommand 2> &1" >>>>that redirects error output to stdout and stdout is still showing >>>> >>>>Please somebody tell me there's a better way... >>>> >>>>BruceS >>>> >>>> >>>> >>>>----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >>> >>>----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >> >> >>----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > >----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From g4mba5 at gmail.com Tue Aug 10 18:49:35 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Tue, 10 Aug 2021 18:49:35 +0200 Subject: [Gambas-user] File_Read() doesn't work In-Reply-To: References: <7382d90a-7191-0384-7ab9-0ee035cf9404@gmail.com> Message-ID: Le 03/08/2021 ? 23:28, Jussi Lahtinen a ?crit?: > The bug should have been fixed by commit > https://gitlab.com/gambas/gambas/-/commit/a7a249543ec1e5d137755dfbb0059087c21b7c96 > . > > > Still a problem or does my code have yet something odd..? > See the attachment. > > And probably related issue; I don't understand how this has worked for > so many years: > tmp = "" > Seek #hWatchFile, 9? <-- Seek to the last byte. > Read #hWatchFile, tmp <--- tmp is string. > > And magically the tmp variable contained "test". How!??? > > Now it is: > tmp = "" > Seek #hWatchFile, 5? <-- Seek to the string. > Read #hWatchFile, tmp <--- tmp now contains "test" as it should. > > Any idea why this worked? My brain is a bit rusty. I haven't touched > computers for a while. > > > Jussi > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > Hi, I have fixed the interpreter so that read watch are automatically disabled on end of file only for pipes, process and standard input streams. You must run your weird code step by step to understand what happens. Moreover, 'Read #hWatchFile, tmp' is a Gambas 2 syntax. You must not use it in your test project. Beware that it does not read the contents of a string, but a Gambas string binary format, and it fails. See the documentation. Regards, -- Beno?t Minisini From rwe-sse at osnanet.de Tue Aug 10 20:53:07 2021 From: rwe-sse at osnanet.de (Rolf-Werner Eilert) Date: Tue, 10 Aug 2021 20:53:07 +0200 Subject: [Gambas-user] Installing gb.qt4 and gb.qt4.ext Message-ID: Now it has happened: I am in holiday with my laptop, and I need to run a project which had gb.qt4 and gb.qt4.ext because it uses the old editor component. The laptop is running under Kubuntu 20. If I switch to gb.qt5 and gb.qt5.ext, the project runs under the IDE, but if I want to compile it the missing editor component lets it fail. The parts using the editor don't run either. I need the project as is because I do not have the time to recode the non functional parts to the new editor. So either I can reload gb.qt4 and gb.qt4.ext or there is another way of reviving the editor. What would you do here? Regards Rolf From bsteers4 at gmail.com Tue Aug 10 22:26:04 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Tue, 10 Aug 2021 21:26:04 +0100 Subject: [Gambas-user] Installing gb.qt4 and gb.qt4.ext In-Reply-To: References: Message-ID: On Tue, 10 Aug 2021, 19:54 Rolf-Werner Eilert, wrote: > Now it has happened: I am in holiday with my laptop, and I need to run a > project which had gb.qt4 and gb.qt4.ext because it uses the old editor > component. > > The laptop is running under Kubuntu 20. > > If I switch to gb.qt5 and gb.qt5.ext, the project runs under the IDE, > but if I want to compile it the missing editor component lets it fail. > The parts using the editor don't run either. > > I need the project as is because I do not have the time to recode the > non functional parts to the new editor. So either I can reload gb.qt4 > and gb.qt4.ext or there is another way of reviving the editor. > > What would you do here? > I'd try hitting the "compile all" button or delete the projects .gambas folder to recompile all the binaries. I'd see if I could install qt4 on the laptop. BruceS > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jussi.lahtinen at gmail.com Wed Aug 11 03:29:34 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Wed, 11 Aug 2021 04:29:34 +0300 Subject: [Gambas-user] File_Read() doesn't work In-Reply-To: References: <7382d90a-7191-0384-7ab9-0ee035cf9404@gmail.com> Message-ID: > > I have fixed the interpreter so that read watch are automatically > disabled on end of file only for pipes, process and standard input streams. > Thanks, it seems to work now! > Beware that it does not read the contents of a string, but a Gambas string > binary format, and it fails. I'm aware of that. It actually writes the string in two ways (Gambas way and just the bytes). Not sure what happened when I initially looked at it, but the old code was actually correct. Somehow the tmp file content was corrupted or I did something weird. Anyway all works now as expected. Jussi -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Wed Aug 11 12:16:18 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Wed, 11 Aug 2021 11:16:18 +0100 Subject: [Gambas-user] DBus oddity with startup application. In-Reply-To: <3bb77d62-a21a-cd8f-498e-709eeda5a0d2@gmail.com> References: <3bb77d62-a21a-cd8f-498e-709eeda5a0d2@gmail.com> Message-ID: My fix was terrible. Seemed quite random if it would work or not, i tried using Wait / Sleep to pause the app while login1 woke up but sometimes it would work sometimes not. My new fix is to make a simple gbs script, now the Shutdown option goes like this.. *Public Sub btnShutdown_Click()* * Try DBus["system://org.freedesktop.login1"]["/org/freedesktop/login1", "org.freedesktop.login1.Manager"].PowerOff(True) If Error Then If RunGBS("PowerOff(True)") Then Message("DBus error " & Error.Text & "\n\nWill try shell command Shutdown...") Print ("error " & Error.Text) If System.Exist("shutdown") Then FakeDis("Shutting down, Closing programs cleanly\nPlease wait...") Application.Busy += 1 Shell System.Find("shutdown") Endif Endif Endif* *End* *Public Sub RunGBS(sText As String) As Boolean Dim sOut As String, sName As String = Temp("script") & ".gbs" File.Save(sName, "#!/usr/bin/env gbs3\nUse \"gb.dbus\"\n" & "Try DBus[\"system://org.freedesktop.login1\"][\"/org/freedesktop/login1\", \"org.freedesktop.login1.Manager\"]." & sText & "\nIf Error Then Print \"Error: \" & Error.Text\n") Chmod sName To "rwxr-x---" Exec [sName] To sOut If InStr(sOut, "Error:") Then Return True Return False End* That works. If the running app didn't get login1 interfaces on load then the freshly run gbs script does On Mon, 9 Aug 2021 at 21:50, Beno?t Minisini wrote: > Le 09/08/2021 ? 22:27, Bruce Steers a ?crit : > > > > > > On Mon, 9 Aug 2021, 19:33 Beno?t Minisini, > > wrote: > > > > Le 09/08/2021 ? 20:24, Bruce Steers a ?crit : > > > > > > I've fixed the problem with this in my FMain.class ... > > > > > > *Static Public Sub _init() > > > * > > > *If Not Exist("/tmp/dish_opened") Then > > > Wait 2 > > > File.Save("/tmp/dish_opened", "true") > > > Endif > > > > > > End* > > > that gives a couple of seconds and then the > > > org.freedesktop.login1.Manager.PowerOff() function works > > > if app is closed and relaunched it finds the file in /tmp/ and > > does not > > > wait and dbus is still okay. > > > > > > > > > Seems any call to Dbus like DBus.System.Applications.Exist() in > > _init() > > > initialises dbus too early, it finds the login1 > > DBus.System.Applications > > > but the Interfaces do not work. > > > > Then the problem is in the application that handles > > 'org.freedesktop.login1.Manager'. > > > > > > Seems quite odd that the login1 interface is not found but the login1 > > Application is unless I restart the program. > > This is why I say it's a problem in the login1 application. > > It registers on the DBus bus, but misteriously does not return the > expected introspection data when you first call > DBus["system://org.freedesktop.login1"]["/org/freedesktop/login1", > "org.freedesktop.login1.Manager"]. > > I guess it does return the expected introspection later. The 'gb.dbus' > component does not support DBus objects whose interface changes during > their lifetime. > > I could add a Refresh() method to the DBusApplication class, so that you > can call DBus["system://org.freedesktop.login1"].Refresh() to clear all > the internal caches. > > But anyway you will have to wait an arbitrary amount of time, because > apparently the "org.freedesktop.login1.Manager" interface does not > appear immediately after the "login1" application register to the bus. > > Look at the 'gb.dbus' source code to understand how all that works. > > Regards, > > -- > Beno?t Minisini > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: From tercoide at hotmail.com Fri Aug 13 23:38:58 2021 From: tercoide at hotmail.com (martin p cristia) Date: Fri, 13 Aug 2021 18:38:58 -0300 Subject: [Gambas-user] Distributing a package for a non-gambas/programer end user In-Reply-To: References: Message-ID: So I am finishing a piece of software and was trying to deploy a release in Git, just for initial testing. Then I made the .deb and tried to run it trough the Ubuntu Software manager in a new and clean system installation. It refused to install it due to lack of dependencies. Inspecting the .deb found that no gambas binaries are in there, and Ubuntu didn't ask permission to install them prior to my program. Am I doing something wrong? Or the .deb works only in a system with the correct gambas runtimes already installed??? -- Saludos Ing. Martin P Cristia From tobs at taboege.de Sat Aug 14 00:13:14 2021 From: tobs at taboege.de (Tobias Boege) Date: Sat, 14 Aug 2021 00:13:14 +0200 Subject: [Gambas-user] Distributing a package for a non-gambas/programer end user In-Reply-To: References: Message-ID: <20210813221314.GD338080@T580.localdomain> On Fri, 13 Aug 2021, martin p cristia wrote: > So I am finishing a piece of software and was trying to deploy a release in > Git, just for initial testing. Then I made the .deb and tried to run it > trough the Ubuntu Software manager in a new and clean system installation. > It refused to install it due to lack of dependencies. > > Inspecting the .deb found that no gambas binaries are in there, and Ubuntu > didn't ask permission to install them prior to my program. > > Am I doing something wrong? > > Or the .deb works only in a system with the correct gambas runtimes already > installed??? > Which error messages do you receive exactly? In the meantime, my crystal ball suggests: - By "gambas binaries [missing from the .deb]" you mean the Gambas runtime. You mistakenly assume that the Gambas runtime is packaged with every project .deb. This is not the case. The Gambas runtime is just added as a dependency to the .deb file. The idea is that the user installs the distribution-provided Gambas once and for all of their Gambas applications. I can generate a package for a project on a Slackware system with my highly customized Gambas interpreter, but you will still install the one provided by your distribution when you install my package on Ubuntu. It *is* intended that the Gambas runtime package is installed as a dependency by your package manager during installation of the project .deb. If those dependencies are missing from the .deb altogether, that's an error in Gambas. But if by "gambas binaries" you mean the .gambas file of your project -- yes, that should also *not* be missing from the .deb. - The missing dependencies error is actually an error about not finding the requested *version* of Gambas (or did Ubuntu remove Gambas from their repositories recently?). This is because you created the .deb with a newer version of Gambas than Ubuntu offers. This new version puts its own version number as the Gambas dependency because it assumes by default that you use all the new features of the current version. (You can lower the version requirement in the package creation wizard at some point.) Since Gambas on Ubuntu is regularly outdated and your system is a fresh install, you have not added the PPA you use on your development machine and the dependency cannot be satisfied. Best, Tobias -- "There's an old saying: Don't change anything... ever!" -- Mr. Monk From bsteers4 at gmail.com Sat Aug 14 12:32:02 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sat, 14 Aug 2021 11:32:02 +0100 Subject: [Gambas-user] DBus.Unique failing on KDE and Cinnamon Message-ID: I have this application... https://gitlab.com/bsteers4/glaunch It uses DBus so if it is run when already running it opens the running apps window and not run again. It is the same as in my Desktop-ish app https://gitlab.com/bsteers4/desktop-ish For some reason Desktop-ish works as expected and sets up org.gambas.Desktop_ish. But glaunch sets up org.gambas.glaunch and if i run it again it sets up org.gambas.glaunch- bug is happening on KDE and Cinnamon it is okay on MATE and Gnome -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Sat Aug 14 13:51:28 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sat, 14 Aug 2021 12:51:28 +0100 Subject: [Gambas-user] DBus.Unique failing on KDE and Cinnamon In-Reply-To: References: Message-ID: On Sat, 14 Aug 2021 at 11:32, Bruce Steers wrote: > I have this application... > https://gitlab.com/bsteers4/glaunch > > It uses DBus so if it is run when already running it opens the running > apps window and not run again. > > It is the same as in my Desktop-ish app > https://gitlab.com/bsteers4/desktop-ish > > For some reason Desktop-ish works as expected and sets up > org.gambas.Desktop_ish. > > But glaunch sets up org.gambas.glaunch and if i run it again it sets up > org.gambas.glaunch- > bug is happening on KDE and Cinnamon > it is okay on MATE and Gnome > I'm not sure of the problem but i can report this... I think it has to do with one app using systemtray The 1st instance of glaunch sets up org.gambas.glaunch DBus.Name returns org.gambas.glaunch glaunch dbus application contains the usual introsect, etc and org.command (my interface) The 2nd instance of glaunch sets up org.gambas.glaunch- (ID is a number) DBus.Name wrongly returns org.gambas.glaunch glaunch dbus application contains the usual introspect, etc and org.command (my interface) and also a kde.statusnotifier aah, result.. i just fixed it by adding DBus.Unique = True to the programs _init() function. BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Sat Aug 14 14:05:28 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sat, 14 Aug 2021 13:05:28 +0100 Subject: [Gambas-user] DBus.Unique failing on KDE and Cinnamon In-Reply-To: References: Message-ID: On Sat, 14 Aug 2021 at 12:51, Bruce Steers wrote: > > > On Sat, 14 Aug 2021 at 11:32, Bruce Steers wrote: > >> I have this application... >> https://gitlab.com/bsteers4/glaunch >> >> It uses DBus so if it is run when already running it opens the running >> apps window and not run again. >> >> It is the same as in my Desktop-ish app >> https://gitlab.com/bsteers4/desktop-ish >> >> For some reason Desktop-ish works as expected and sets up >> org.gambas.Desktop_ish. >> >> But glaunch sets up org.gambas.glaunch and if i run it again it sets up >> org.gambas.glaunch- >> bug is happening on KDE and Cinnamon >> it is okay on MATE and Gnome >> > > > I'm not sure of the problem but i can report this... > I think it has to do with one app using systemtray > > The 1st instance of glaunch sets up org.gambas.glaunch > DBus.Name returns org.gambas.glaunch > glaunch dbus application contains the usual introsect, etc and org.command > (my interface) > > The 2nd instance of glaunch sets up org.gambas.glaunch- (ID is a > number) > DBus.Name wrongly returns org.gambas.glaunch > glaunch dbus application contains the usual introspect, etc and > org.command (my interface) and also a kde.statusnotifier > > aah, result.. > i just fixed it by adding DBus.Unique = True to the programs _init() > function. > > BruceS > Getting DBus.Unique set at the start then caused the TrayIcon (in the Form) to raise an error with name already registered. I just had to import gb.dbus.trayicon and make it exit cleanly if unable to register due to existing name. BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: From bsteers4 at gmail.com Sat Aug 14 17:49:28 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sat, 14 Aug 2021 16:49:28 +0100 Subject: [Gambas-user] DBus.Unique failing on KDE and Cinnamon In-Reply-To: References: Message-ID: On Sat, 14 Aug 2021 at 13:05, Bruce Steers wrote: > > > On Sat, 14 Aug 2021 at 12:51, Bruce Steers wrote: > >> >> >> On Sat, 14 Aug 2021 at 11:32, Bruce Steers wrote: >> >>> I have this application... >>> https://gitlab.com/bsteers4/glaunch >>> >>> It uses DBus so if it is run when already running it opens the running >>> apps window and not run again. >>> >>> It is the same as in my Desktop-ish app >>> https://gitlab.com/bsteers4/desktop-ish >>> >>> For some reason Desktop-ish works as expected and sets up >>> org.gambas.Desktop_ish. >>> >>> But glaunch sets up org.gambas.glaunch and if i run it again it sets up >>> org.gambas.glaunch- >>> bug is happening on KDE and Cinnamon >>> it is okay on MATE and Gnome >>> >> >> >> I'm not sure of the problem but i can report this... >> I think it has to do with one app using systemtray >> >> The 1st instance of glaunch sets up org.gambas.glaunch >> DBus.Name returns org.gambas.glaunch >> glaunch dbus application contains the usual introsect, etc and >> org.command (my interface) >> >> The 2nd instance of glaunch sets up org.gambas.glaunch- (ID is a >> number) >> DBus.Name wrongly returns org.gambas.glaunch >> glaunch dbus application contains the usual introspect, etc and >> org.command (my interface) and also a kde.statusnotifier >> >> aah, result.. >> i just fixed it by adding DBus.Unique = True to the programs _init() >> function. >> >> BruceS >> > > Getting DBus.Unique set at the start then caused the TrayIcon (in the > Form) to raise an error with name already registered. > > I just had to import gb.dbus.trayicon and make it exit cleanly if unable > to register due to existing name. > A better fix than importing gb.gui.trayicon was to remove the TrayIcon from the form designer and add it manually in Form_Open() (after setting dbus unique) in _init()) So to summarise.... If you are using an object that uses DBus like TrayIcon and also need DBus.Unique set true then you need to Set DBus.Unique = True in your Applications _init() function and add/instance the New Trayicon with code (not use form designer) Wishing well BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: From adamnt42 at gmail.com Sun Aug 15 17:08:53 2021 From: adamnt42 at gmail.com (bb) Date: Mon, 16 Aug 2021 00:38:53 +0930 Subject: [Gambas-user] IDE Crashes - nss_ocsp is the culprit In-Reply-To: References: <6dd7675f8eb2235f27762be3cd91f0532cd16402.camel@gmail.com> <726bfc3b5389b58c5a28f5c00ef5ead75f990623.camel@gmail.com> Message-ID: <7481fd08f0528a03a2558df63a364f06ce56bcbf.camel@gmail.com> On Sun, 2021-08-08 at 23:22 +0300, Jussi Lahtinen wrote: > > > > > What is the installed Qt version? > > 5.11.3 > > > > This version shouldn't be in use anymore. Maybe it is a bug in that > version. > > > Jussi > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- I do believe you are correct. After several attempts I have managed to get a newer QT5 version installed and so far, cross fingers and stick tongue at special angle, everything now seems to work! cheers bruce From tercoide at hotmail.com Sun Aug 15 18:04:22 2021 From: tercoide at hotmail.com (Martin Cristia) Date: Sun, 15 Aug 2021 13:04:22 -0300 Subject: [Gambas-user] =?iso-8859-1?q?Distributing_a_package_for_a_non-ga?= =?iso-8859-1?q?mbas/programer_end=A0=A0=A0=A0=A0_user?= Message-ID: An HTML attachment was scrubbed... URL: From adamnt42 at gmail.com Sun Aug 15 18:34:27 2021 From: adamnt42 at gmail.com (bb) Date: Mon, 16 Aug 2021 02:04:27 +0930 Subject: [Gambas-user] =?iso-8859-1?q?Distributing_a_package_for_a_non-ga?= =?iso-8859-1?q?mbas/programer_end=A0=A0=A0=A0=A0_user?= In-Reply-To: References: Message-ID: <1397219c85d4a179417e7bd7557cae6a7cd1e03d.camel@gmail.com> On Sun, 2021-08-15 at 13:04 -0300, Martin Cristia wrote: > The myapp.deb works on a system with lastest stable versi?n of Gambas > IDE installed. My goal is to make it work if it is not present. Say > to make the software manager look for the Gambas Runtime binaries > (and components too) in its database and install the required ones as > it does for other software. At least for major distros. > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- Martin, In short this can't be / shouldn't be done. The "debian" dependencies are not "binaries" they are packages. The debian packager in the IDE constructs a package for your project only, not for the entire gambas environment. The debian packaging system, for example, is used by many distros, not just Ubuntu. Each distro may have packaged Gambas in its' own sweet way regardless of the recommended structure. Thus even if you managed to solve your goal for Ubuntu, your package could be useless on other distributions. Finally, if the target system has Gambas "installed from source" (IFS) there will be no detectable "packages" anyway (and if someone clobbered my local IFS Gambas 16.2.xyzzy with the distro version 12 packages I would NOT be very happy at all!) regards bruce From bsteers4 at gmail.com Mon Aug 16 11:37:21 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Mon, 16 Aug 2021 10:37:21 +0100 Subject: [Gambas-user] Handy desktop launcher Message-ID: Hi all. I have been busy making something i think some of you may find useful so i'm sharing it with you... It's called "Desktop-ish" It's a pseudo desktop application (just a launcher really) The reason for making it.... I do not like the Gnome desktop with no desktop icons and no panel items and as i use he Desktop Action properties of an icon and have made an editor for them i wanted to have icons with right click desktop actions working. The reasons you may find it useful... It's got a few handy Gambas coder features. you can right click any launcher to a gambas application that resides is in it's project folder and you get an "Open in IDE" option If you have a Gambas3 launcher icon it list your recent files and give a menu, It will offer to set available GUI toolkits (env GB_GUI=) (auto-detected) For bugtracker users it has a "copy system info to clipboard" function As well as incorporating my gambas recent file lister app into it i have also added my icon/desktop actions editor so you can edit actions and the changes (inside the app) show instantly (handy for testing). it was primarily designed for gnome desktop and shows the $HOME/Desktop folder but any folder can be set for main view or the panel. setting save independent for each desktop so you can have different layouts for Gnome/MATE/Cinnamon/etc It lacks documentation at present but is pretty straight forward. It's all a bit WIP at present but really quite functional now. As a developer i'm finding the right-click and select open in ID pretty useful. Find it here... https://gitlab.com/bsteers4/desktop-ish dl it here.. https://gitlab.com/bsteers4/desktop-ish/-/archive/main/desktop-ish-main.zip If you don't like it..... change it ;) Wishing well BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: From tercoide at hotmail.com Mon Aug 16 15:38:51 2021 From: tercoide at hotmail.com (martin cristia) Date: Mon, 16 Aug 2021 10:38:51 -0300 Subject: [Gambas-user] Distributing a package for a non-gambas/programer end user In-Reply-To: References: Message-ID: Thanks for the answer, Bruce. I'm having a better POV now. From tercoide at hotmail.com Tue Aug 17 21:58:06 2021 From: tercoide at hotmail.com (martin cristia) Date: Tue, 17 Aug 2021 16:58:06 -0300 Subject: [Gambas-user] Distributing a package for a non-gambas/programer end user In-Reply-To: References: Message-ID: Hi, Tobias, I don't know how to make the deb add that PPA on the target machine. If that is what you are suggesting. Thanks for your answering. I will investigate AppImages now. I believe that a novel end user should run apps easy, or go full monty and run the sources from IDE in the same Gb version. El 14/8/21 a las 07:12, user-request at lists.gambas-basic.org escribi?: > Since Gambas on Ubuntu is regularly outdated and your system > is a fresh install, you have not added the PPA you use on your > development machine and the dependency cannot be satisfied. From mckaygerhard at gmail.com Tue Aug 17 22:54:39 2021 From: mckaygerhard at gmail.com (PICCORO McKAY Lenz) Date: Tue, 17 Aug 2021 16:54:39 -0400 Subject: [Gambas-user] Distributing a package for a non-gambas/programer end user In-Reply-To: References: Message-ID: End users are not administrators. so end user must ask or pay for support, for admins taks etc.. not related to "usage" as "user" a word derived from.. this is the way free software originally gains money.. 2021-08-17 15:58 GMT-04:00, martin cristia : > Hi, Tobias, I don't know how to make the deb add that PPA on the target > machine. If that is what you are suggesting. > > Thanks for your answering. > > I will investigate AppImages now. I believe that a novel end user should > run apps easy, or go full monty and run the sources from IDE in the same > Gb version. > > El 14/8/21 a las 07:12, user-request at lists.gambas-basic.org escribi?: > >> Since Gambas on Ubuntu is regularly outdated and your system >> is a fresh install, you have not added the PPA you use on your >> development machine and the dependency cannot be satisfied. > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -- Lenz McKAY Gerardo (PICCORO) http://qgqlochekone.blogspot.com From colifata at freenet.de Wed Aug 18 21:54:00 2021 From: colifata at freenet.de (loco pobre) Date: Wed, 18 Aug 2021 21:54:00 +0200 Subject: [Gambas-user] pcre: accessing named matches Message-ID: Hallo, a pattern using "named capturing groups" like "title" and "artist" in "(?P[^<]*)</td><td>(?P<artist>[^<]*)</td>" works, the matches are correctly given by index (rMatch[1].Text ...), but I don't know how to access the matches by name - is there an implemented way? (If not, I think I should make an regexp on the searchpattern to extract the names and then merge names and values of the matches in an collection ...) Merci :) From t.lee.davidson at gmail.com Wed Aug 18 22:18:54 2021 From: t.lee.davidson at gmail.com (T Lee Davidson) Date: Wed, 18 Aug 2021 16:18:54 -0400 Subject: [Gambas-user] pcre: accessing named matches In-Reply-To: <f8e86eba-d0ca-0abf-6585-e84282ec346c@freenet.de> References: <f8e86eba-d0ca-0abf-6585-e84282ec346c@freenet.de> Message-ID: <2bd076b2-a252-1137-7986-b2dfcdf3838d@gmail.com> On 8/18/21 3:54 PM, loco pobre wrote: > Hallo, > > a pattern using "named capturing groups" like "title" and "artist" in "<td>(?P<title>[^<]*)</td><td>(?P<artist>[^<]*)</td>" > works, the matches are correctly given by index (rMatch[1].Text ...), but I don't know how to access the matches by name - is > there an implemented way? > > (If not, I think I should make an regexp on the searchpattern to extract the names and then merge names and values of the > matches in an collection ...) > > Merci :) > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- Accessing named capture groups is apparently not implemented in Gambas. The "?P<name>[group]" syntax is for use with Python. http://gambaswiki.org/wiki/doc/pcre -- Lee From adamnt42 at gmail.com Thu Aug 19 08:28:25 2021 From: adamnt42 at gmail.com (bb) Date: Thu, 19 Aug 2021 15:58:25 +0930 Subject: [Gambas-user] Security, how to check if a library is genuine? Message-ID: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> I am working on a non-intrusive authorisation method to see if a user is allowed to run an application. In order to do so they must belong to a specific hardcoded group. It is (currently) implemented as a library. So the actual library "could" be replaced by a user with another library that just returns true. So, does anyone have a good idea how the application could check whether "authlib" is the genuine library? tia bruce From chrisml at deganius.de Thu Aug 19 14:36:16 2021 From: chrisml at deganius.de (Christof Thalhofer) Date: Thu, 19 Aug 2021 14:36:16 +0200 Subject: [Gambas-user] Security, how to check if a library is genuine? In-Reply-To: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> Message-ID: <a7fef132-4908-1475-b651-84ca4ccd63f4@deganius.de> Am 19.08.21 um 08:28 schrieb bb: > I am working on a non-intrusive authorisation method to see if a user > is allowed to run an application. In order to do so they must belong to > a specific hardcoded group. > It is (currently) implemented as a library. So the actual library > "could" be replaced by a user with another library that just returns > true. > > So, does anyone have a good idea how the application could check > whether "authlib" is the genuine library? For sure by cryprographically signing the lib's binary. But then you need a CA with which you can issue certificates that can be used to verify the signature. Alles Gute Christof Thalhofer -- Dies ist keine Signatur -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 840 bytes Desc: OpenPGP digital signature URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210819/62b963b5/attachment.sig> From brian at westwoodsvcs.com Thu Aug 19 21:29:57 2021 From: brian at westwoodsvcs.com (Brian G) Date: Thu, 19 Aug 2021 12:29:57 -0700 (PDT) Subject: [Gambas-user] Security, how to check if a library is genuine? In-Reply-To: <a7fef132-4908-1475-b651-84ca4ccd63f4@deganius.de> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> <a7fef132-4908-1475-b651-84ca4ccd63f4@deganius.de> Message-ID: <355827539.15426.1629401397465.JavaMail.zimbra@westwoodsvcs.com> Question if your library and application, have secure permissions, and the app knows where it and the lib should be, is it really a problem? Could the system use and have configured app armour/SELinux or the likes? If some one could replace your library, then perhaps they have root permissions and could therefore replace any security based library down the line.... Or just take the info the app is accessing, or just give themselves the correct group permissions...... Maybe I don't really understand the problem well. "Failure is the key to success; each mistake teaches us something" .. Morihei Ueshiba Brian G ----- On Aug 19, 2021, at 5:36 AM, Christof Thalhofer chrisml at deganius.de wrote: > Am 19.08.21 um 08:28 schrieb bb: > >> I am working on a non-intrusive authorisation method to see if a user >> is allowed to run an application. In order to do so they must belong to >> a specific hardcoded group. >> It is (currently) implemented as a library. So the actual library >> "could" be replaced by a user with another library that just returns >> true. >> >> So, does anyone have a good idea how the application could check >> whether "authlib" is the genuine library? > > For sure by cryprographically signing the lib's binary. But then you > need a CA with which you can issue certificates that can be used to > verify the signature. > > Alles Gute > > Christof Thalhofer > > -- > Dies ist keine Signatur > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- From adamnt42 at gmail.com Fri Aug 20 00:53:37 2021 From: adamnt42 at gmail.com (bb) Date: Fri, 20 Aug 2021 08:23:37 +0930 Subject: [Gambas-user] Security, how to check if a library is genuine? In-Reply-To: <355827539.15426.1629401397465.JavaMail.zimbra@westwoodsvcs.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> <a7fef132-4908-1475-b651-84ca4ccd63f4@deganius.de> <355827539.15426.1629401397465.JavaMail.zimbra@westwoodsvcs.com> Message-ID: <39f378da2cb5d66be31c2ea3d1f921d2c61e22ae.camel@gmail.com> On Thu, 2021-08-19 at 12:29 -0700, Brian G wrote: > Question if your library and application, have secure permissions, > and the app knows where it and the lib should be, > is it really a problem? > Could the system use and have configured app armour/SELinux or the > likes? > > If some one could replace your library, then perhaps they have root > permissions and could therefore replace any security based library > down the line.... Or just take the info the app is accessing, or just > give themselves the correct group permissions...... > > Maybe I don't really understand the problem well. > > "Failure is the key to success; > each mistake teaches us something" .. Morihei Ueshiba > Brian G > It's becuse of the search order for libraries - right there in number one place is ~.local/share/gambas3/lib/, so whatever the user wants to place in there is going to be used. b From brian at westwoodsvcs.com Fri Aug 20 01:43:35 2021 From: brian at westwoodsvcs.com (=?UTF-8?B?QnJpYW4gRw==?=) Date: Fri, 20 Aug 2021 02:43:35 +0300 Subject: [Gambas-user] =?utf-8?q?Security=2C_how_to_check_if_a_library_is?= =?utf-8?q?_genuine=3F?= In-Reply-To: <39f378da2cb5d66be31c2ea3d1f921d2c61e22ae.camel@gmail.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> <355827539.15426.1629401397465.JavaMail.zimbra@westwoodsvcs.com> <39f378da2cb5d66be31c2ea3d1f921d2c61e22ae.camel@gmail.com> Message-ID: <1629416615.332397066@f19.my.com> App armor or selinux can restrict the access of the app to only system directories -- Thanks Brian G Thursday, 19 August 2021, 03:54PM -07:00 from bb adamnt42 at gmail.com : >On Thu, 2021-08-19 at 12:29 -0700, Brian G wrote: > Question if your library and application, have secure permissions, > and the app knows where it and the lib should be, > is it really a problem? > Could the system use and have configured app armour/SELinux or the > likes? > > If some one could replace your library, then perhaps they have root > permissions and could therefore replace any security based library > down the line.... Or just take the info the app is accessing, or just > give themselves the correct group permissions...... > > Maybe I don't really understand the problem well. > > "Failure is the key to success; > each mistake teaches us something" .. Morihei Ueshiba > Brian G > >It's becuse of the search order for libraries - right there in number >one place is ~.local/share/gambas3/lib/, so whatever the user wants to >place in there is going to be used. > >b > > >----[ http://gambaswiki.org/wiki/doc/netiquette ]---- -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210820/c1eb1e60/attachment.htm> From jussi.lahtinen at gmail.com Fri Aug 20 02:38:04 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Fri, 20 Aug 2021 03:38:04 +0300 Subject: [Gambas-user] Security, how to check if a library is genuine? In-Reply-To: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> Message-ID: <CAFJMe7ScrhL-+kPSVjjKWU05B0MjmnQ7stQGJvainpqZ8gA3CA@mail.gmail.com> How the user can know the application is genuine? Jussi On Thu, Aug 19, 2021 at 9:29 AM bb <adamnt42 at gmail.com> wrote: > I am working on a non-intrusive authorisation method to see if a user > is allowed to run an application. In order to do so they must belong to > a specific hardcoded group. > It is (currently) implemented as a library. So the actual library > "could" be replaced by a user with another library that just returns > true. > > So, does anyone have a good idea how the application could check > whether "authlib" is the genuine library? > > tia > bruce > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210820/b776d7cf/attachment-0001.htm> From brian at westwoodsvcs.com Fri Aug 20 01:45:32 2021 From: brian at westwoodsvcs.com (=?UTF-8?B?QnJpYW4gRw==?=) Date: Fri, 20 Aug 2021 02:45:32 +0300 Subject: [Gambas-user] =?utf-8?q?Security=2C_how_to_check_if_a_library_is?= =?utf-8?q?_genuine=3F?= In-Reply-To: <39f378da2cb5d66be31c2ea3d1f921d2c61e22ae.camel@gmail.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> <355827539.15426.1629401397465.JavaMail.zimbra@westwoodsvcs.com> <39f378da2cb5d66be31c2ea3d1f921d2c61e22ae.camel@gmail.com> Message-ID: <1629416732.372146497@f22.my.com> Also you can specify a library by the full path in your application -- Thanks Brian G Thursday, 19 August 2021, 03:54PM -07:00 from bb adamnt42 at gmail.com : >On Thu, 2021-08-19 at 12:29 -0700, Brian G wrote: > Question if your library and application, have secure permissions, > and the app knows where it and the lib should be, > is it really a problem? > Could the system use and have configured app armour/SELinux or the > likes? > > If some one could replace your library, then perhaps they have root > permissions and could therefore replace any security based library > down the line.... Or just take the info the app is accessing, or just > give themselves the correct group permissions...... > > Maybe I don't really understand the problem well. > > "Failure is the key to success; > each mistake teaches us something" .. Morihei Ueshiba > Brian G > >It's becuse of the search order for libraries - right there in number >one place is ~.local/share/gambas3/lib/, so whatever the user wants to >place in there is going to be used. > >b > > >----[ http://gambaswiki.org/wiki/doc/netiquette ]---- -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210820/82ffe77a/attachment.htm> From brian at westwoodsvcs.com Fri Aug 20 02:57:52 2021 From: brian at westwoodsvcs.com (=?UTF-8?B?QnJpYW4gRw==?=) Date: Fri, 20 Aug 2021 03:57:52 +0300 Subject: [Gambas-user] =?utf-8?q?Security=2C_how_to_check_if_a_library_is?= =?utf-8?q?_genuine=3F?= In-Reply-To: <CAFJMe7ScrhL-+kPSVjjKWU05B0MjmnQ7stQGJvainpqZ8gA3CA@mail.gmail.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> <CAFJMe7ScrhL-+kPSVjjKWU05B0MjmnQ7stQGJvainpqZ8gA3CA@mail.gmail.com> Message-ID: <1629421072.579545316@f33.my.com> >Thursday, 19 August 2021, 05:39PM -07:00 from Jussi Lahtinen <jussi.lahtinen at gmail.com>: >How the user can know the application is genuine? >Jussi I think you can restrict the app to specific directories that can be accessed using app armor. -- Thanks Brian G On Thu, Aug 19, 2021 at 9:29 AM bb <adamnt42 at gmail.com> wrote: >I am working on a non-intrusive authorisation method to see if a user > is allowed to run an application. In order to do so they must belong to > a specific hardcoded group. > It is (currently) implemented as a library. So the actual library > "could" be replaced by a user with another library that just returns > true. > So, does anyone have a good idea how the application could check > whether "authlib" is the genuine library? > tia > bruce > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210820/1bee6f8f/attachment.htm> From jussi.lahtinen at gmail.com Fri Aug 20 03:28:16 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Fri, 20 Aug 2021 04:28:16 +0300 Subject: [Gambas-user] Security, how to check if a library is genuine? In-Reply-To: <1629421072.579545316@f33.my.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> <CAFJMe7ScrhL-+kPSVjjKWU05B0MjmnQ7stQGJvainpqZ8gA3CA@mail.gmail.com> <1629421072.579545316@f33.my.com> Message-ID: <CAFJMe7S4UurgMi_rKpqHvnbgV_=JACv1cFTnaNyzAgbpNGj9SA@mail.gmail.com> > >How the user can know the application is genuine? > >Jussi > > I think you can restrict the app to specific directories that can be > accessed using app armor. > Sure there are many ways. But I was interested in the case he is planning. Jussi -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210820/a76292d8/attachment.htm> From mike.crean at y7mail.com Fri Aug 20 07:15:26 2021 From: mike.crean at y7mail.com (Mike Crean) Date: Fri, 20 Aug 2021 05:15:26 +0000 (UTC) Subject: [Gambas-user] texteditor References: <717706838.479423.1629436526751.ref@mail.yahoo.com> Message-ID: <717706838.479423.1629436526751@mail.yahoo.com> Can anyone point me to a code example of the new gambas texteditor I am interested in an Arduino editor compiler programmer using gambas.Example of the full features would be great. Best regardsMike -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210820/0a4134c6/attachment-0001.htm> From g4mba5 at gmail.com Fri Aug 20 08:33:46 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Fri, 20 Aug 2021 08:33:46 +0200 Subject: [Gambas-user] A little feature request In-Reply-To: <DM6PR12MB3946DA356A20F2AF7F5215E6C8F79@DM6PR12MB3946.namprd12.prod.outlook.com> References: <mailman.1.1628577961.21311.user@lists.gambas-basic.org> <DM6PR12MB3946DA356A20F2AF7F5215E6C8F79@DM6PR12MB3946.namprd12.prod.outlook.com> Message-ID: <801e84d7-a1d8-d671-2a5c-16f4d4a6789e@gmail.com> Le 10/08/2021 ? 14:25, martin p cristia a ?crit?: > When the packager maked the installation .deb, the installer creates a > .desktop file in /usr/share/applications. If our program can be used for > opening some file types with rigth-click "Open with.." in the file > manager we need a %u added in the "Exec=" entry: > > [Desktop Entry] > Version=1.0 > Name=GambasAPP > Comment=My great Gambas app > Exec=GambasAPP %u? <----------------------------THIS! > Icon=gambasapp > Terminal=false > Type=Application > StartupNotify=true > Categories=Engineering;Science; > > MimeType=image/vnd.dwg;image/vnd.dxf > > > Of course ir can be manually added, but having it done by the packager > would be great. Thanks in advance. > You can override the "Exec=" line by adding an "Exec=GambasAPP %u" line to the "additional configuration" field of the "Desktop configuration file" step of the packager wizard. Did you mean that in the last sentence of your mail? -- Beno?t Minisini From adamnt42 at gmail.com Fri Aug 20 10:16:13 2021 From: adamnt42 at gmail.com (bb) Date: Fri, 20 Aug 2021 17:46:13 +0930 Subject: [Gambas-user] Security, how to check if a library is genuine? In-Reply-To: <CAFJMe7ScrhL-+kPSVjjKWU05B0MjmnQ7stQGJvainpqZ8gA3CA@mail.gmail.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> <CAFJMe7ScrhL-+kPSVjjKWU05B0MjmnQ7stQGJvainpqZ8gA3CA@mail.gmail.com> Message-ID: <3f9273157a6a6f3867d92eea9eebdf13d54586e9.camel@gmail.com> On Fri, 2021-08-20 at 03:38 +0300, Jussi Lahtinen wrote: > How the user can know the application is genuine? > > Jussi > That's not a problem (at the moment)but as we are moving towards debian only packaging at least we get md5 sums etc. When distribution gets closer I'll have to look at that again. ATM it's "How can the application know if the user is genuine? :-) b From bsteers4 at gmail.com Fri Aug 20 10:22:56 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Fri, 20 Aug 2021 09:22:56 +0100 Subject: [Gambas-user] texteditor In-Reply-To: <717706838.479423.1629436526751@mail.yahoo.com> References: <717706838.479423.1629436526751.ref@mail.yahoo.com> <717706838.479423.1629436526751@mail.yahoo.com> Message-ID: <CABuQYCAdzirv0BaskEuFYRM26Cz-kGpDsEXa3Jv3AQZTvQLzUA@mail.gmail.com> By "new text editor" do you mean gb.form.editor ? I have written an editor for making executable scripts using TextEditor object. https://gitlab.com/bsteers4/scripted It's not any kind of simple example though. in fact you'll have a job getting a "simple" example thats "fully featured" I read the wiki ,, I wrote some wiki :) TextEditor is mostly straight forward .http://gambaswiki.org/wiki/comp/gb.form.editor/texteditor It has lots of features that i am sure you won't want them all. BruceS On Fri, 20 Aug 2021 at 06:16, Mike Crean via User < user at lists.gambas-basic.org> wrote: > Can anyone point me to a code example of the new gambas texteditor I am > interested in an Arduino editor compiler programmer using gambas. > Example of the full features would be great. > > Best regards > Mike > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210820/d5075320/attachment.htm> From bsteers4 at gmail.com Fri Aug 20 10:28:00 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Fri, 20 Aug 2021 09:28:00 +0100 Subject: [Gambas-user] A little feature request In-Reply-To: <801e84d7-a1d8-d671-2a5c-16f4d4a6789e@gmail.com> References: <mailman.1.1628577961.21311.user@lists.gambas-basic.org> <DM6PR12MB3946DA356A20F2AF7F5215E6C8F79@DM6PR12MB3946.namprd12.prod.outlook.com> <801e84d7-a1d8-d671-2a5c-16f4d4a6789e@gmail.com> Message-ID: <CABuQYCBc3iV8BXvUKX-+yGkzkdbnxjOYvoEUOsqp8wiR1b=jpw@mail.gmail.com> In all my programs i have to remove the %u (single file) %U (multiple files) token from Exec lines. I found arguments get passed as expected without it. On Fri, 20 Aug 2021 at 07:34, Beno?t Minisini <g4mba5 at gmail.com> wrote: > Le 10/08/2021 ? 14:25, martin p cristia a ?crit : > > When the packager maked the installation .deb, the installer creates a > > .desktop file in /usr/share/applications. If our program can be used for > > opening some file types with rigth-click "Open with.." in the file > > manager we need a %u added in the "Exec=" entry: > > > > [Desktop Entry] > > Version=1.0 > > Name=GambasAPP > > Comment=My great Gambas app > > Exec=GambasAPP %u <----------------------------THIS! > > Icon=gambasapp > > Terminal=false > > Type=Application > > StartupNotify=true > > Categories=Engineering;Science; > > > > MimeType=image/vnd.dwg;image/vnd.dxf > > > > > > Of course ir can be manually added, but having it done by the packager > > would be great. Thanks in advance. > > > > You can override the "Exec=" line by adding an "Exec=GambasAPP %u" line > to the "additional configuration" field of the "Desktop configuration > file" step of the packager wizard. > > Did you mean that in the last sentence of your mail? > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210820/082c56d9/attachment.htm> From adamnt42 at gmail.com Fri Aug 20 10:48:48 2021 From: adamnt42 at gmail.com (bb) Date: Fri, 20 Aug 2021 18:18:48 +0930 Subject: [Gambas-user] Security, how to check if a library is genuine? In-Reply-To: <CAFJMe7S4UurgMi_rKpqHvnbgV_=JACv1cFTnaNyzAgbpNGj9SA@mail.gmail.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> <CAFJMe7ScrhL-+kPSVjjKWU05B0MjmnQ7stQGJvainpqZ8gA3CA@mail.gmail.com> <1629421072.579545316@f33.my.com> <CAFJMe7S4UurgMi_rKpqHvnbgV_=JACv1cFTnaNyzAgbpNGj9SA@mail.gmail.com> Message-ID: <1b08a811c2ae18014ee3e74d82a1259babe0637b.camel@gmail.com> On Fri, 2021-08-20 at 04:28 +0300, Jussi Lahtinen wrote: > > > How the user can know the application is genuine? > > > Jussi > > > > I think you can restrict the app to specific directories that can > > be > > accessed using app armor. > > > Sure there are many ways. But I was interested in the case he is > planning. > > Jussi > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- This all arose because someone thought she was working on a test database and inadvertantly started changing critical data in the production database. No matter at the time, but it got me thinking about how to avoid such accidents. (We have four versions of the database for this system, production; test; learning and "development". People generally have access defined for each version they need access to, which is a PITA to manage on a per user basis at the database level. So we use db "roles" to allow and restrict access. But some people have access roles in more than one db version.) The problem is that application usage with a particular database needed to be set up in a heirarchial basis: "admin","user","readonly" such that some application features can only be used if the user is a particular level. Say Joe, our packaging magician, should only be able to use the test database but at a level of his choice. Whereas Caarol can use the production database but in readonly mode for any application that has update features on critical tables. I did not want to build a "login" feature involving names, passwords and db selections. Been there, it's a mess to administer and maintain. So the user authentication is now based on (Unix) group membership. People have to belong to certain groups to gain authorisation to use a function in an application (or in fact use a certain application). That's fine for preventing "accidental" misuse, but I thought it might be a good idea to try and prevent "malevolent" misuse as well. Hence the question. b From tercoide at hotmail.com Fri Aug 20 15:07:38 2021 From: tercoide at hotmail.com (martin p cristia) Date: Fri, 20 Aug 2021 10:07:38 -0300 Subject: [Gambas-user] A little feature request In-Reply-To: <mailman.1.1629449341.29664.user@lists.gambas-basic.org> References: <mailman.1.1629449341.29664.user@lists.gambas-basic.org> Message-ID: <DM6PR12MB3946452E840D55BD22BBC4DAC8C19@DM6PR12MB3946.namprd12.prod.outlook.com> No, I ment editing the .desktop file manually. But cool, didn't know that overriding thing! Works perfectly: https://youtu.be/6x1_8LhBMfM Thanks El 8/20/21 a las 5:49 AM, user-request at lists.gambas-basic.org escribi?: > Did you mean that in the last sentence of your mail? -- Saludos Ing. Martin P Cristia From jussi.lahtinen at gmail.com Fri Aug 20 17:05:36 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Fri, 20 Aug 2021 18:05:36 +0300 Subject: [Gambas-user] Security, how to check if a library is genuine? In-Reply-To: <3f9273157a6a6f3867d92eea9eebdf13d54586e9.camel@gmail.com> References: <48f9525f944119439ab703642e9cc64eb0b36df2.camel@gmail.com> <CAFJMe7ScrhL-+kPSVjjKWU05B0MjmnQ7stQGJvainpqZ8gA3CA@mail.gmail.com> <3f9273157a6a6f3867d92eea9eebdf13d54586e9.camel@gmail.com> Message-ID: <CAFJMe7SziiEYO1mDouKH4seMMz0Z6pi5+MT8eddiwD+Qe6KnQg@mail.gmail.com> > > That's not a problem (at the moment)but as we are moving towards debian > only packaging at least we get md5 sums etc. When distribution gets > closer I'll have to look at that again. > If tampering of the library is a problem, then tampering of the application is a problem as well. And if the user can have root access, there is nothing you can do about it. Jussi -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210820/c299d7e0/attachment.htm> From bsteers4 at gmail.com Sun Aug 22 11:27:57 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sun, 22 Aug 2021 10:27:57 +0100 Subject: [Gambas-user] debian Picture.Load() errors Message-ID: <CABuQYCB-Sx87cP_-Paczf+L9Frk3SAV7p_kZm=sqR40obA=GVA@mail.gmail.com> I'm getting Picture.Load() errors on Debian Having to convert something like myObject.Picture = Picture.Load("icon:/22/play") into myObject.Picture = Stock["22/play"] just to fix it. I thought it was just an old bug as i was using Debian10 and the old gambas 3.12 But i just installed the new debian11 and the repo gambas 3.15 and getting the error on there. could it be missing a package? Cheers BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210822/9819423e/attachment.htm> From adamnt42 at gmail.com Sun Aug 22 11:44:49 2021 From: adamnt42 at gmail.com (bb) Date: Sun, 22 Aug 2021 19:14:49 +0930 Subject: [Gambas-user] debian Picture.Load() errors In-Reply-To: <CABuQYCB-Sx87cP_-Paczf+L9Frk3SAV7p_kZm=sqR40obA=GVA@mail.gmail.com> References: <CABuQYCB-Sx87cP_-Paczf+L9Frk3SAV7p_kZm=sqR40obA=GVA@mail.gmail.com> Message-ID: <c23fb851490dd8b238fb3b4c3018222b221ce50c.camel@gmail.com> On Sun, 2021-08-22 at 10:27 +0100, Bruce Steers wrote: > I'm getting Picture.Load() errors on Debian > > Having to convert something like > myObject.Picture = Picture.Load("icon:/22/play") > into > myObject.Picture = Stock["22/play"] > just to fix it. > > I thought it was just an old bug as i was using Debian10 and the old > gambas > 3.12 > But i just installed the new debian11 and the repo gambas 3.15 and > getting > the error on there. > > could it be missing a package? > > Cheers > BruceS > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- What UI? From adamnt42 at gmail.com Sun Aug 22 11:50:36 2021 From: adamnt42 at gmail.com (bb) Date: Sun, 22 Aug 2021 19:20:36 +0930 Subject: [Gambas-user] OUTPUT TO, stdout and command line usage Message-ID: <603296f46d889a4d36a897e56687f9a24fb764d6.camel@gmail.com> (Sigh, just when I thought it was OK to release to a "client") How can I detect that the user has started a project with CLI redirects, i.e. gbx3 myproj > ~/somewhere.txt before I issue an OUTPUT TO in the startup routine? They have to come up with new twists on anything don't they! bruce From bsteers4 at gmail.com Sun Aug 22 11:57:25 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sun, 22 Aug 2021 10:57:25 +0100 Subject: [Gambas-user] debian Picture.Load() errors In-Reply-To: <c23fb851490dd8b238fb3b4c3018222b221ce50c.camel@gmail.com> References: <CABuQYCB-Sx87cP_-Paczf+L9Frk3SAV7p_kZm=sqR40obA=GVA@mail.gmail.com> <c23fb851490dd8b238fb3b4c3018222b221ce50c.camel@gmail.com> Message-ID: <CABuQYCBJMSFcHd6ohxHYA2c+AxtH5xtFR_UXwVuDx6QTtj9Gow@mail.gmail.com> On Sun, 22 Aug 2021 at 10:45, bb <adamnt42 at gmail.com> wrote: > On Sun, 2021-08-22 at 10:27 +0100, Bruce Steers wrote: > > I'm getting Picture.Load() errors on Debian > > > > Having to convert something like > > myObject.Picture = Picture.Load("icon:/22/play") > > into > > myObject.Picture = Stock["22/play"] > > just to fix it. > > > > I thought it was just an old bug as i was using Debian10 and the old > > gambas > > 3.12 > > But i just installed the new debian11 and the repo gambas 3.15 and > > getting > > the error on there. > > > > could it be missing a package? > > > > Cheers > > BruceS > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > What UI? > MATE and GNOME (i'm guessing all) gtk3 and qt5 tested , same error [System] Gambas=3.15.2 OperatingSystem=Linux Kernel=5.10.0-8-amd64 Architecture=x86_64 Distribution=<hostname> 11.0 Desktop=MATE Theme=fusion Language=en_GB.UTF-8 Memory=3820M [Libraries] Cairo=libcairo.so.2.11600.0 Curl=libcurl.so.4.7.0 DBus=libdbus-1.so.3.19.13 GDK2=libgdk-x11-2.0.so.0.2400.33 GDK3=libgdk-3.so.0.2404.20 GStreamer=libgstreamer-1.0.so.0.1804.0 GTK+2=libgtk-x11-2.0.so.0.2400.33 GTK+3=libgtk-3.so.0.2404.20 OpenGL=libGL.so.1.7.0 Poppler=libpoppler.so.102.0.0 QT5=libQt5Core.so.5.15.2 SDL=libSDL-1.2.so.0.11.4 SQLite=libsqlite3.so.0.8.6 [Environment] CLUTTER_BACKEND=x11 CLUTTER_IM_MODULE=ibus DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus DESKTOP_SESSION=mate DISPLAY=:0 GB_GUI=gb.qt5 GDMSESSION=mate GIO_LAUNCHED_DESKTOP_FILE=<home>/.local/share/applications/gambas3.desktop GIO_LAUNCHED_DESKTOP_FILE_PID=2561 GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1 GTK3_MODULES=xapp-gtk3-module GTK_IM_MODULE=ibus GTK_MODULES=gail:atk-bridge:canberra-gtk-module GTK_OVERLAY_SCROLLING=0 HOME=<home> LANG=en_GB.UTF-8 LANGUAGE=en_GB.UTF-8 LC_ALL=en_GB.UTF-8 LOGNAME=<user> MATE_DESKTOP_SESSION_ID=this-is-deprecated PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games PWD=<home> QT_ACCESSIBILITY=1 QT_AUTO_SCREEN_SCALE_FACTOR=0 QT_IM_MODULE=ibus QT_LOGGING_RULES=*.debug=false QT_SCALE_FACTOR=1 SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/1890,unix/<hostname>:/tmp/.ICE-unix/1890 SHELL=/bin/bash SSH_AGENT_PID=2027 SSH_AUTH_SOCK=/run/user/1000/keyring/ssh TZ=:/etc/localtime USER=<user> XAUTHORITY=<home>/.Xauthority XDG_CURRENT_DESKTOP=MATE XDG_DATA_DIRS=/usr/share/mate:/usr/local/share/:/usr/share/ XDG_GREETER_DATA_DIR=/var/lib/lightdm/data/<user> XDG_RUNTIME_DIR=/run/user/1000 XDG_SEAT=seat0 XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 XDG_SESSION_CLASS=user XDG_SESSION_DESKTOP=mate XDG_SESSION_ID=1 XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0 XDG_SESSION_TYPE=x11 XDG_VTNR=7 XMODIFIERS=@im=ibus -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210822/cd262dda/attachment.htm> From bsteers4 at gmail.com Sun Aug 22 12:02:12 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sun, 22 Aug 2021 11:02:12 +0100 Subject: [Gambas-user] debian Picture.Load() errors In-Reply-To: <c23fb851490dd8b238fb3b4c3018222b221ce50c.camel@gmail.com> References: <CABuQYCB-Sx87cP_-Paczf+L9Frk3SAV7p_kZm=sqR40obA=GVA@mail.gmail.com> <c23fb851490dd8b238fb3b4c3018222b221ce50c.camel@gmail.com> Message-ID: <CABuQYCC_xtrtXBNEVgKcq_am=Us8WseBamP5eGA-zgC2PCa-dQ@mail.gmail.com> On Sun, 22 Aug 2021 at 10:45, bb <adamnt42 at gmail.com> wrote: > On Sun, 2021-08-22 at 10:27 +0100, Bruce Steers wrote: > > I'm getting Picture.Load() errors on Debian > > > > Having to convert something like > > myObject.Picture = Picture.Load("icon:/22/play") > > into > > myObject.Picture = Stock["22/play"] > > just to fix it. > > > > I thought it was just an old bug as i was using Debian10 and the old > > gambas > > 3.12 > > But i just installed the new debian11 and the repo gambas 3.15 and > > getting > > the error on there. > > > > could it be missing a package? > > > > Cheers > > BruceS > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > What UI? > only getting it on commands using the icon:/ path. I suspect the error is more to do with the icon:/ address than any graphical functions. BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210822/43b82529/attachment-0001.htm> From adamnt42 at gmail.com Sun Aug 22 12:17:51 2021 From: adamnt42 at gmail.com (bb) Date: Sun, 22 Aug 2021 19:47:51 +0930 Subject: [Gambas-user] debian Picture.Load() errors In-Reply-To: <CABuQYCBJMSFcHd6ohxHYA2c+AxtH5xtFR_UXwVuDx6QTtj9Gow@mail.gmail.com> References: <CABuQYCB-Sx87cP_-Paczf+L9Frk3SAV7p_kZm=sqR40obA=GVA@mail.gmail.com> <c23fb851490dd8b238fb3b4c3018222b221ce50c.camel@gmail.com> <CABuQYCBJMSFcHd6ohxHYA2c+AxtH5xtFR_UXwVuDx6QTtj9Gow@mail.gmail.com> Message-ID: <479a125860eeb1f96a52a8e0f82cddaa93df3b45.camel@gmail.com> On Sun, 2021-08-22 at 10:57 +0100, Bruce Steers wrote: > On Sun, 22 Aug 2021 at 10:45, bb <adamnt42 at gmail.com> wrote: > > > On Sun, 2021-08-22 at 10:27 +0100, Bruce Steers wrote: > > > I'm getting Picture.Load() errors on Debian > > > > > > Having to convert something like > > > myObject.Picture = Picture.Load("icon:/22/play") > > > into > > > myObject.Picture = Stock["22/play"] > > > just to fix it. > > > > > > I thought it was just an old bug as i was using Debian10 and the > > > old > > > gambas > > > 3.12 > > > But i just installed the new debian11 and the repo gambas 3.15 > > > and > > > getting > > > the error on there. > > > > > > could it be missing a package? > > > > > > Cheers > > > BruceS > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > What UI? > > > > MATE and GNOME (i'm guessing all) > gtk3 and qt5 tested , same error > > [System] > Gambas=3.15.2 > OperatingSystem=Linux > Kernel=5.10.0-8-amd64 > Architecture=x86_64 > Distribution=<hostname> 11.0 > Desktop=MATE > Theme=fusion > Language=en_GB.UTF-8 > Memory=3820M > > [Libraries] > Cairo=libcairo.so.2.11600.0 > Curl=libcurl.so.4.7.0 > DBus=libdbus-1.so.3.19.13 > GDK2=libgdk-x11-2.0.so.0.2400.33 > GDK3=libgdk-3.so.0.2404.20 > GStreamer=libgstreamer-1.0.so.0.1804.0 > GTK+2=libgtk-x11-2.0.so.0.2400.33 > GTK+3=libgtk-3.so.0.2404.20 > OpenGL=libGL.so.1.7.0 > Poppler=libpoppler.so.102.0.0 > QT5=libQt5Core.so.5.15.2 > SDL=libSDL-1.2.so.0.11.4 > SQLite=libsqlite3.so.0.8.6 > > [Environment] > CLUTTER_BACKEND=x11 > CLUTTER_IM_MODULE=ibus > DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus > DESKTOP_SESSION=mate > DISPLAY=:0 > GB_GUI=gb.qt5 > GDMSESSION=mate > GIO_LAUNCHED_DESKTOP_FILE=<home>/.local/share/applications/gambas3.de > sktop > GIO_LAUNCHED_DESKTOP_FILE_PID=2561 > GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1 > GTK3_MODULES=xapp-gtk3-module > GTK_IM_MODULE=ibus > GTK_MODULES=gail:atk-bridge:canberra-gtk-module > GTK_OVERLAY_SCROLLING=0 > HOME=<home> > LANG=en_GB.UTF-8 > LANGUAGE=en_GB.UTF-8 > LC_ALL=en_GB.UTF-8 > LOGNAME=<user> > MATE_DESKTOP_SESSION_ID=this-is-deprecated > PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games > PWD=<home> > QT_ACCESSIBILITY=1 > QT_AUTO_SCREEN_SCALE_FACTOR=0 > QT_IM_MODULE=ibus > QT_LOGGING_RULES=*.debug=false > QT_SCALE_FACTOR=1 > SESSION_MANAGER=local/<hostname>:@/tmp/.ICE- > unix/1890,unix/<hostname>:/tmp/.ICE-unix/1890 > SHELL=/bin/bash > SSH_AGENT_PID=2027 > SSH_AUTH_SOCK=/run/user/1000/keyring/ssh > TZ=:/etc/localtime > USER=<user> > XAUTHORITY=<home>/.Xauthority > XDG_CURRENT_DESKTOP=MATE > XDG_DATA_DIRS=/usr/share/mate:/usr/local/share/:/usr/share/ > XDG_GREETER_DATA_DIR=/var/lib/lightdm/data/<user> > XDG_RUNTIME_DIR=/run/user/1000 > XDG_SEAT=seat0 > XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 > XDG_SESSION_CLASS=user > XDG_SESSION_DESKTOP=mate > XDG_SESSION_ID=1 > XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0 > XDG_SESSION_TYPE=x11 > XDG_VTNR=7 > XMODIFIERS=@im=ibus > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- I have seen quite a lot of complaints elsewhere (outside Gambas) about that Debian release, especially for both gtk and qt5. Why it should affect what you are seeing is beyond me, but ...? I'd tend to wait a bit before changing code and see if they get their testic.. oops, I mean ducks sorted out. cheers b Oh and p.s. I tried the new version, broke it in approx 2 minutes with a python app, 2.1 minutes with a couple of MXLinux utilities and severed its pretty little head from a system backup. No problems since. From adamnt42 at gmail.com Sun Aug 22 12:31:24 2021 From: adamnt42 at gmail.com (bb) Date: Sun, 22 Aug 2021 20:01:24 +0930 Subject: [Gambas-user] Someone was looking at Telegram? Message-ID: <4531030b9474fc7776104b4c20cd47b7343a93b3.camel@gmail.com> How did they go? I have tried out Telegram and by crikey is it ever speedy. b From bsteers4 at gmail.com Sun Aug 22 13:39:18 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sun, 22 Aug 2021 12:39:18 +0100 Subject: [Gambas-user] OUTPUT TO, stdout and command line usage In-Reply-To: <603296f46d889a4d36a897e56687f9a24fb764d6.camel@gmail.com> References: <603296f46d889a4d36a897e56687f9a24fb764d6.camel@gmail.com> Message-ID: <CABuQYCAg5iMssNs0h=PwzYALevDRLVmVOhqSPDpH=19dEQsR8Q@mail.gmail.com> I asked the same a little while while ago. File.In.IsTerm Is true if started from terminal. BruceS On Sun, 22 Aug 2021, 10:51 bb, <adamnt42 at gmail.com> wrote: > (Sigh, just when I thought it was OK to release to a "client") > > How can I detect that the user has started a project with CLI > redirects, i.e. gbx3 myproj > ~/somewhere.txt > before I issue an OUTPUT TO in the startup routine? > > They have to come up with new twists on anything don't they! > > bruce > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210822/95094a44/attachment.htm> From bsteers4 at gmail.com Sun Aug 22 15:39:44 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sun, 22 Aug 2021 14:39:44 +0100 Subject: [Gambas-user] debian Picture.Load() errors In-Reply-To: <479a125860eeb1f96a52a8e0f82cddaa93df3b45.camel@gmail.com> References: <CABuQYCB-Sx87cP_-Paczf+L9Frk3SAV7p_kZm=sqR40obA=GVA@mail.gmail.com> <c23fb851490dd8b238fb3b4c3018222b221ce50c.camel@gmail.com> <CABuQYCBJMSFcHd6ohxHYA2c+AxtH5xtFR_UXwVuDx6QTtj9Gow@mail.gmail.com> <479a125860eeb1f96a52a8e0f82cddaa93df3b45.camel@gmail.com> Message-ID: <CABuQYCCvneHf4SK2m8bv7HZmpLbBcAYm8O0wA0PCATfnUmWFOQ@mail.gmail.com> On Sun, 22 Aug 2021 at 11:18, bb <adamnt42 at gmail.com> wrote: > On Sun, 2021-08-22 at 10:57 +0100, Bruce Steers wrote: > > On Sun, 22 Aug 2021 at 10:45, bb <adamnt42 at gmail.com> wrote: > > > > > On Sun, 2021-08-22 at 10:27 +0100, Bruce Steers wrote: > > > > I'm getting Picture.Load() errors on Debian > > > > > > > > Having to convert something like > > > > myObject.Picture = Picture.Load("icon:/22/play") > > > > into > > > > myObject.Picture = Stock["22/play"] > > > > just to fix it. > > > > > > > > I thought it was just an old bug as i was using Debian10 and the > > > > old > > > > gambas > > > > 3.12 > > > > But i just installed the new debian11 and the repo gambas 3.15 > > > > and > > > > getting > > > > the error on there. > > > > > > > > could it be missing a package? > > > > > > > > Cheers > > > > BruceS > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > What UI? > > > > > > > MATE and GNOME (i'm guessing all) > > gtk3 and qt5 tested , same error > > > >> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > I have seen quite a lot of complaints elsewhere (outside Gambas) about > that Debian release, especially for both gtk and qt5. > Why it should affect what you are seeing is beyond me, but ...? > I'd tend to wait a bit before changing code and see if they get their > testic.. oops, I mean ducks sorted out. > > cheers > b > > Oh and p.s. I tried the new version, broke it in approx 2 minutes with > a python app, 2.1 minutes with a couple of MXLinux utilities and > severed its pretty little head from a system backup. No problems since. > haha , to be honest i was thinking it was great (when i had Debian 11 SID/Testing) boot up was amazingly fast compared to any others and no problems with gambas 3.16 Now i've installed the new "official" stable Debian11 (overwrote the old SID) and repo gambas 3,15 i'm getting issues :( hence my wondering if i'm just missing some other package i had on SID but not the others. BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210822/26aa27e8/attachment.htm> From t.lee.davidson at gmail.com Sun Aug 22 16:36:24 2021 From: t.lee.davidson at gmail.com (T Lee Davidson) Date: Sun, 22 Aug 2021 10:36:24 -0400 Subject: [Gambas-user] Someone was looking at Telegram? In-Reply-To: <4531030b9474fc7776104b4c20cd47b7343a93b3.camel@gmail.com> References: <4531030b9474fc7776104b4c20cd47b7343a93b3.camel@gmail.com> Message-ID: <7a092775-78d9-fcb0-88bc-93f9f7dc53e3@gmail.com> On 8/22/21 6:31 AM, bb wrote: > How did they go? > > I have tried out Telegram and by crikey is it ever speedy. > > b Bruce, are you referring to this thread? https://lists.gambas-basic.org/pipermail/user/2021-July/073732.html -- Lee From adamnt42 at gmail.com Wed Aug 25 11:25:26 2021 From: adamnt42 at gmail.com (bb) Date: Wed, 25 Aug 2021 18:55:26 +0930 Subject: [Gambas-user] OUTPUT TO, stdout and command line usage In-Reply-To: <CABuQYCAg5iMssNs0h=PwzYALevDRLVmVOhqSPDpH=19dEQsR8Q@mail.gmail.com> References: <603296f46d889a4d36a897e56687f9a24fb764d6.camel@gmail.com> <CABuQYCAg5iMssNs0h=PwzYALevDRLVmVOhqSPDpH=19dEQsR8Q@mail.gmail.com> Message-ID: <8f9b76d03c2b81df7f58c6c5c98b0608be50d99c.camel@gmail.com> Seems good, but I am still struggling with getting the entire command line including any pipes added by the user. I can get all the options and parameters but not anything after a <, > or |. Maybe the shell consumes it? b On Sun, 2021-08-22 at 12:39 +0100, Bruce Steers wrote: > I asked the same a little while while ago. > > File.In.IsTerm > > Is true if started from terminal. > > BruceS > > On Sun, 22 Aug 2021, 10:51 bb, <adamnt42 at gmail.com> wrote: > > > (Sigh, just when I thought it was OK to release to a "client") > > > > How can I detect that the user has started a project with CLI > > redirects, i.e. gbx3 myproj > ~/somewhere.txt > > before I issue an OUTPUT TO in the startup routine? > > > > They have to come up with new twists on anything don't they! > > > > bruce > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- From bsteers4 at gmail.com Wed Aug 25 11:50:35 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Wed, 25 Aug 2021 10:50:35 +0100 Subject: [Gambas-user] A modification to User.Name/User.Home Message-ID: <CABuQYCCdwMB_cHT0gV21Qw86fM_2Q9hD4BTX13eoku=zz52Cdw@mail.gmail.com> I propose this modification to Desktop.class that now exists in gb.gui.base. (See attached file) I have added a property to it called UseRoot As Boolean = True And i have also added 2 r/o properties Desktop.UserName and Desktop.UserHome The purpose.. If your application is run as root then User.Name is root and User.Home is roots home the additional UseRoot property is set to True by default and Desktop.UserName will return root If you set UseRoot = False then Desktop.UserName will return the standard user name not root. Using the Env vars this method can be applied to all the xdg functions involving directory names I think this is ideal as nobody ever wants to know the roots desktop folder in an app run as superuser do they? So i will also add a Desktop.GetDirectory(sName As String) that will also return info relevant to the UseRoot setting. I have often found an issue with a program i am running as root when i want the normal users name. What do you think of something like this Ben? Respects BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210825/77bec0de/attachment.htm> -------------- next part -------------- A non-text attachment was scrubbed... Name: Desktop2.class Type: application/x-java Size: 3294 bytes Desc: not available URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210825/77bec0de/attachment.bin> From bsteers4 at gmail.com Wed Aug 25 12:02:35 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Wed, 25 Aug 2021 11:02:35 +0100 Subject: [Gambas-user] A modification to User.Name/User.Home In-Reply-To: <CABuQYCCdwMB_cHT0gV21Qw86fM_2Q9hD4BTX13eoku=zz52Cdw@mail.gmail.com> References: <CABuQYCCdwMB_cHT0gV21Qw86fM_2Q9hD4BTX13eoku=zz52Cdw@mail.gmail.com> Message-ID: <CABuQYCCQmnxMmZ-oiYQ5bckz-qhRToiA6A+yBJkJwkx_zsjR+g@mail.gmail.com> Hmm, this may be flawed because it requires sudo to be installed and sudo may not be :( I will think of a better way. BruceS On Wed, 25 Aug 2021 at 10:50, Bruce Steers <bsteers4 at gmail.com> wrote: > > I propose this modification to Desktop.class that now exists in > gb.gui.base. > (See attached file) > I have added a property to it called UseRoot As Boolean = True > And i have also added 2 r/o properties > Desktop.UserName and Desktop.UserHome > > The purpose.. > If your application is run as root then User.Name is root and User.Home is > roots home > > the additional UseRoot property is set to True by default and > Desktop.UserName will return root > > If you set UseRoot = False then Desktop.UserName will return the standard > user name not root. > > Using the Env vars this method can be applied to all the xdg functions > involving directory names > I think this is ideal as nobody ever wants to know the roots desktop > folder in an app run as superuser do they? > > So i will also add a Desktop.GetDirectory(sName As String) that will also > return info relevant to the UseRoot setting. > > I have often found an issue with a program i am running as root when i > want the normal users name. > > What do you think of something like this Ben? > > Respects > BruceS > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210825/b4c27319/attachment.htm> From bsteers4 at gmail.com Wed Aug 25 12:14:17 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Wed, 25 Aug 2021 11:14:17 +0100 Subject: [Gambas-user] OUTPUT TO, stdout and command line usage In-Reply-To: <8f9b76d03c2b81df7f58c6c5c98b0608be50d99c.camel@gmail.com> References: <603296f46d889a4d36a897e56687f9a24fb764d6.camel@gmail.com> <CABuQYCAg5iMssNs0h=PwzYALevDRLVmVOhqSPDpH=19dEQsR8Q@mail.gmail.com> <8f9b76d03c2b81df7f58c6c5c98b0608be50d99c.camel@gmail.com> Message-ID: <CABuQYCBCzg7pOs=ZrUBERLH4Hv97WM6T-yDGi5-Xgt3YKeuKEw@mail.gmail.com> Aah , sorry fella i didn't quite read the question right did i? hmm, that's going to be tricky , a pipe is pretty much another function isn't it , what's to the left of the | is it's own separate command. there is always a way :) Experimentation be the mother of progression :) Respects BruceS On Wed, 25 Aug 2021 at 10:26, bb <adamnt42 at gmail.com> wrote: > Seems good, but I am still struggling with getting the entire command > line including any pipes added by the user. I can get all the options > and parameters but not anything after a <, > or |. > Maybe the shell consumes it? > b > On Sun, 2021-08-22 at 12:39 +0100, Bruce Steers wrote: > > I asked the same a little while while ago. > > > > File.In.IsTerm > > > > Is true if started from terminal. > > > > BruceS > > > > On Sun, 22 Aug 2021, 10:51 bb, <adamnt42 at gmail.com> wrote: > > > > > (Sigh, just when I thought it was OK to release to a "client") > > > > > > How can I detect that the user has started a project with CLI > > > redirects, i.e. gbx3 myproj > ~/somewhere.txt > > > before I issue an OUTPUT TO in the startup routine? > > > > > > They have to come up with new twists on anything don't they! > > > > > > bruce > > > > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210825/0d03bb36/attachment.htm> From t.lee.davidson at gmail.com Wed Aug 25 16:17:12 2021 From: t.lee.davidson at gmail.com (T Lee Davidson) Date: Wed, 25 Aug 2021 10:17:12 -0400 Subject: [Gambas-user] OUTPUT TO, stdout and command line usage In-Reply-To: <8f9b76d03c2b81df7f58c6c5c98b0608be50d99c.camel@gmail.com> References: <603296f46d889a4d36a897e56687f9a24fb764d6.camel@gmail.com> <CABuQYCAg5iMssNs0h=PwzYALevDRLVmVOhqSPDpH=19dEQsR8Q@mail.gmail.com> <8f9b76d03c2b81df7f58c6c5c98b0608be50d99c.camel@gmail.com> Message-ID: <0ee1636d-6a25-2f03-9086-6e2e6bf481b2@gmail.com> On 8/25/21 5:25 AM, bb wrote: > Seems good, but I am still struggling with getting the entire command > line including any pipes added by the user. I can get all the options > and parameters but not anything after a <, > or |. > Maybe the shell consumes it? > b > On Sun, 2021-08-22 at 12:39 +0100, Bruce Steers wrote: >> I asked the same a little while while ago. >> >> File.In.IsTerm >> >> Is true if started from terminal. >> >> BruceS >> >> On Sun, 22 Aug 2021, 10:51 bb, <adamnt42 at gmail.com> wrote: >> >>> (Sigh, just when I thought it was OK to release to a "client") >>> >>> How can I detect that the user has started a project with CLI >>> redirects, i.e. gbx3 myproj > ~/somewhere.txt >>> before I issue an OUTPUT TO in the startup routine? >>> >>> They have to come up with new twists on anything don't they! >>> >>> bruce >>> >>> Perhaps something like this might do what you need: Public Sub Form_Open() Dim sOutput As String Shell Subst("lsof -p &1 -a -d 1 | grep REG", Application.Id) To sOutput If sOutput Then 'someone's trying to be sneaky TextArea1.Text = Split(sOutput, " ").Last Endif End Using "-d 1" assumes that any program output redirection will be given the second available file descriptor (zero-indexed). I'm not sure that would always be the case, and so "-d 0-3" might be more appropriate. But, then you'd need to process each line individually to find the one opened with the write attribute (eg. "1w"). -- Lee From adamnt42 at gmail.com Wed Aug 25 20:31:43 2021 From: adamnt42 at gmail.com (bb) Date: Thu, 26 Aug 2021 04:01:43 +0930 Subject: [Gambas-user] OUTPUT TO, stdout and command line usage In-Reply-To: <0ee1636d-6a25-2f03-9086-6e2e6bf481b2@gmail.com> References: <603296f46d889a4d36a897e56687f9a24fb764d6.camel@gmail.com> <CABuQYCAg5iMssNs0h=PwzYALevDRLVmVOhqSPDpH=19dEQsR8Q@mail.gmail.com> <8f9b76d03c2b81df7f58c6c5c98b0608be50d99c.camel@gmail.com> <0ee1636d-6a25-2f03-9086-6e2e6bf481b2@gmail.com> Message-ID: <da00fa0389d1ae866322817a882fb2d51742930c.camel@gmail.com> On Wed, 2021-08-25 at 10:17 -0400, T Lee Davidson wrote: > > Perhaps something like this might do what you need: > > Public Sub Form_Open() > > Dim sOutput As String > > Shell Subst("lsof -p &1 -a -d 1 | grep REG", Application.Id) To > sOutput > If sOutput Then 'someone's trying to be sneaky > TextArea1.Text = Split(sOutput, " ").Last > Endif > > End > > Using "-d 1" assumes that any program output redirection will be > given the second available file descriptor (zero-indexed). I'm > not sure that would always be the case, and so "-d 0-3" might be more > appropriate. But, then you'd need to process each line > individually to find the one opened with the write attribute (eg. > "1w"). > > Spot on! I'm using Subst("lsof -p &1 -a -d 1", Application.Id) i.e. without the grep as that would miss redirects to /dev/null. -d 1 must work, at least for bash, otherwise "xyzzy > blah.txt &2>&1" wouldn't work. thanks Lee! bruce From adamnt42 at gmail.com Thu Aug 26 10:20:44 2021 From: adamnt42 at gmail.com (bb) Date: Thu, 26 Aug 2021 17:50:44 +0930 Subject: [Gambas-user] Why is Control.Group virtual? Message-ID: <f4fdc690aa7ab7eb04182310149ee2fdf75f0b68.camel@gmail.com> I can see no reason why it should be. bruce From g4mba5 at gmail.com Thu Aug 26 12:08:57 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Thu, 26 Aug 2021 12:08:57 +0200 Subject: [Gambas-user] Why is Control.Group virtual? In-Reply-To: <f4fdc690aa7ab7eb04182310149ee2fdf75f0b68.camel@gmail.com> References: <f4fdc690aa7ab7eb04182310149ee2fdf75f0b68.camel@gmail.com> Message-ID: <22325af4-38e1-18e2-091f-31e44b13ab0b@gmail.com> Le 26/08/2021 ? 10:20, bb a ?crit?: > I can see no reason why it should be. > > bruce > Because it's not a property, it's the event name used in the syntax "New Control As <event name>". -- Beno?t Minisini From bsteers4 at gmail.com Thu Aug 26 12:34:12 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Thu, 26 Aug 2021 11:34:12 +0100 Subject: [Gambas-user] Get normal User.Name User.Home if root (possible solution) Message-ID: <CABuQYCAw0_sP3SPHEZ4b_1teGUBhEKLJV1yHQQJBePffzvuCSg@mail.gmail.com> I attach a modified version of the gb.gui.base Desktop.Class I figure this could at least provide a solution for some searching help if Benoit does not consider something like this worth including in gambas. Modifications are... Dektop2.UserName Dektop2.UserHome these work like User.Name and User.Home except if the application is run as superuser it will return the user name not root. Desktop2.GetUserDirectory(Name As String = "DESKTOP") this is a rip of gb.desktop Desktoop.GetDirectory(Type As String) it returns the path of Desktop / Music etc but not the roots folders the user who ran the command. attached is the modified Desktop.2.class also a test app. Run it from terminal. try NoRootUser.gambas su -c NoRootUser.gambas sudo NoRootUser.gambas sudo -E NoRootUser.gambas To see difference between default results and new functions. Note. Desktop.Type only fails if you run with sudo and do not use -E to preserve environment. works okay with su -c Wishing well BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210826/b0fa8c3e/attachment-0001.htm> -------------- next part -------------- <salt FCKGM-0001-A1A5-71A3-A604> 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 eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAifBVTAdbkbnUAAACaAAAAFQAYAAAAAAABAAAAtIFm OQAATm9Sb290VXNlci8uZ2l0aWdub3JlVVQFAAOfDiFhdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAC AAgAKlsaU8jVggS6AAAAMAEAABMAGAAAAAAAAQAAALSBKjoAAE5vUm9vdFVzZXIvLnByb2plY3RV VAUAAxBsJ2F1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAZWxpTez5UNXEMAABtHAAAHAAYAAAA AAAAAAAA/YExOwAATm9Sb290VXNlci9Ob1Jvb3RVc2VyLmdhbWJhc1VUBQAD8WsnYXV4CwABBOgD AAAE6AMAAFBLAQIeAwoAAAAAAKoUGlMAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQfhHAABOb1Jv b3RVc2VyLy5nYW1iYXMvVVQFAANP8CZhdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAGVsaU/Ps l+KxCAAAzBMAABsAGAAAAAAAAAAAAKSBRUgAAE5vUm9vdFVzZXIvLmdhbWJhcy9ERVNLVE9QMlVU BQAD8WsnYXV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIABlbGlMuuR6ynQIAAHQFAAAaABgAAAAA AAAAAACkgUtRAABOb1Jvb3RVc2VyLy5nYW1iYXMvU1RBUlRVUFVUBQAD8WsnYXV4CwABBOgDAAAE 6AMAAFBLBQYAAAAAFAAUABIHAAA8VAAAAAA= </salt> From adamnt42 at gmail.com Thu Aug 26 12:46:42 2021 From: adamnt42 at gmail.com (bb) Date: Thu, 26 Aug 2021 20:16:42 +0930 Subject: [Gambas-user] Why is Control.Group virtual? In-Reply-To: <22325af4-38e1-18e2-091f-31e44b13ab0b@gmail.com> References: <f4fdc690aa7ab7eb04182310149ee2fdf75f0b68.camel@gmail.com> <22325af4-38e1-18e2-091f-31e44b13ab0b@gmail.com> Message-ID: <b74d60bb7dc009eb044b237f68659ccf180fe26e.camel@gmail.com> On Thu, 2021-08-26 at 12:08 +0200, Beno?t Minisini wrote: > Le 26/08/2021 ? 10:20, bb a ?crit : > > I can see no reason why it should be. > > > > bruce > > > > Because it's not a property, it's the event name used in the syntax > "New > Control As <event name>". > Hmmph. Not really happy. I can't set up a debug Message that appears if I haven't coded a handler for the group. Really, virtual properties should be somehow highlighted in the IDE properties panel. yours bruce From j.betzer at comcast.net Thu Aug 26 16:12:30 2021 From: j.betzer at comcast.net (Jerry Betzer) Date: Thu, 26 Aug 2021 07:12:30 -0700 (PDT) Subject: [Gambas-user] PictureBox Message-ID: <1544815548.920178.1629987150468@connect.xfinity.com> Apologies in advance if I have selected the wrong address for this e-mail. I am a novice Gambas user and even more novice member of this user list. I am looking for help working with the PictureBox class. I got off to a pretty quick and easy start displaying my images (.jpg files) but I am having difficulty fitting my pictures within the picture box container in a proportional way. Per the gambaswiki.org/comp/gb.qt4/picturebox link it looked like I should use the "Mode" attribute (specifically PictureBox1.Mode = PictureBox.Contain). When I run my program I get the following error: unknown symbol "Mode" in class "PictureBox" My OS is: Linux Mint 18 'sarah' 'cinnamon 64 bit' cat /etc/os-release yields: NAME = "ubuntu" VERSION = "16.04 LTS (Xenia Xerus)" Gambas version: 3.8.4 Code snippet: Dim strMyString As String strMyString = FileChooser1.Value PictureBox1.Picture = Picture[strMyString] PictureBox1.Mode = 3 NOTE: I have tried substituting PictureBox.Contain for the magic number 3. Thanks in advance for any help. -Jerry -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210826/399de91b/attachment.htm> From adamnt42 at gmail.com Thu Aug 26 16:55:41 2021 From: adamnt42 at gmail.com (bb) Date: Fri, 27 Aug 2021 00:25:41 +0930 Subject: [Gambas-user] PictureBox In-Reply-To: <1544815548.920178.1629987150468@connect.xfinity.com> References: <1544815548.920178.1629987150468@connect.xfinity.com> Message-ID: <6dd50f7287eecb8a806b7fa941801651bbf2826b.camel@gmail.com> On Thu, 2021-08-26 at 07:12 -0700, Jerry Betzer wrote: > Apologies in advance if I have selected the wrong address for this e- > mail. > I am a novice Gambas user and even more novice member of this user > list. > I am looking for help working with the PictureBox class. I got off > to a pretty quick and easy start displaying my images (.jpg files) > but I am having difficulty fitting my pictures within the picture box > container in a proportional way. Per the > gambaswiki.org/comp/gb.qt4/picturebox link it looked like I should > use the "Mode" attribute (specifically PictureBox1.Mode = > PictureBox.Contain). > When I run my program I get the following error: > unknown symbol "Mode" in class "PictureBox" > > My OS is: Linux Mint 18 'sarah' > 'cinnamon 64 bit' > > cat /etc/os-release yields: > NAME = "ubuntu" > VERSION = "16.04 LTS (Xenia Xerus)" > > Gambas version: 3.8.4 <----------------- TRUE? > > Code snippet: > Dim strMyString As String > strMyString = FileChooser1.Value > PictureBox1.Picture = Picture[strMyString] > PictureBox1.Mode = 3 > > NOTE: I have tried substituting PictureBox.Contain for the magic > number 3. > > Thanks in advance for any help. > -Jerry > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- You are using an incredibly old version of Gambas! (Typical Mint) I doubt whether PictureBox back then had much. Try and update to a more recent version. bruce From bsteers4 at gmail.com Thu Aug 26 17:10:12 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Thu, 26 Aug 2021 16:10:12 +0100 Subject: [Gambas-user] PictureBox In-Reply-To: <6dd50f7287eecb8a806b7fa941801651bbf2826b.camel@gmail.com> References: <1544815548.920178.1629987150468@connect.xfinity.com> <6dd50f7287eecb8a806b7fa941801651bbf2826b.camel@gmail.com> Message-ID: <CABuQYCAbCpe5+HSX854ZGJAixhydO1f85ft4rasgpxCgNfUung@mail.gmail.com> On Thu, 26 Aug 2021 at 15:56, bb <adamnt42 at gmail.com> wrote: > On Thu, 2021-08-26 at 07:12 -0700, Jerry Betzer wrote: > > Apologies in advance if I have selected the wrong address for this e- > > mail. > > I am a novice Gambas user and even more novice member of this user > > list. > > I am looking for help working with the PictureBox class. I got off > > to a pretty quick and easy start displaying my images (.jpg files) > > but I am having difficulty fitting my pictures within the picture box > > container in a proportional way. Per the > > gambaswiki.org/comp/gb.qt4/picturebox link it looked like I should > > use the "Mode" attribute (specifically PictureBox1.Mode = > > PictureBox.Contain). > > When I run my program I get the following error: > > unknown symbol "Mode" in class "PictureBox" > > > > My OS is: Linux Mint 18 'sarah' > > 'cinnamon 64 bit' > > > > cat /etc/os-release yields: > > NAME = "ubuntu" > > VERSION = "16.04 LTS (Xenia Xerus)" > > > > Gambas version: 3.8.4 <----------------- TRUE? > > > > Code snippet: > > Dim strMyString As String > > strMyString = FileChooser1.Value > > PictureBox1.Picture = Picture[strMyString] > > PictureBox1.Mode = 3 > > > > NOTE: I have tried substituting PictureBox.Contain for the magic > > number 3. > > > > Thanks in advance for any help. > > -Jerry > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > You are using an incredibly old version of Gambas! (Typical Mint) > I doubt whether PictureBox back then had much. > Try and update to a more recent version. > > bruce > He's right that is pretty old. Try this link... https://launchpad.net/~gambas-team/+archive/ubuntu/gambas3 follow the instructions "Adding this PPA to your system" to upgrade to gambas 3.16 stable. But you will probably find your issue it the container/panel your picture box is in. It takes a little experimentation to make sure your picture box is not in a panel that will stretch the image even if Contain is set. try setting the parent panel Arrangement to Arrange.None and Expand = false. If you are not sure if it is the panel shape set the panels background to a temporary colour to highlight it's shape. Best of luck BruceS (a different Bruce) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210826/5cfd0187/attachment.htm> From j.betzer at comcast.net Thu Aug 26 17:20:01 2021 From: j.betzer at comcast.net (Jerry Betzer) Date: Thu, 26 Aug 2021 08:20:01 -0700 (PDT) Subject: [Gambas-user] PictureBox In-Reply-To: <CABuQYCAbCpe5+HSX854ZGJAixhydO1f85ft4rasgpxCgNfUung@mail.gmail.com> References: <1544815548.920178.1629987150468@connect.xfinity.com> <6dd50f7287eecb8a806b7fa941801651bbf2826b.camel@gmail.com> <CABuQYCAbCpe5+HSX854ZGJAixhydO1f85ft4rasgpxCgNfUung@mail.gmail.com> Message-ID: <346101655.926442.1629991201202@connect.xfinity.com> Thanks all (Bruce, BruceS, and Gianluigi) for your suggestions. I will (eventually) try and/or look at it all. -Jerry > On 08/26/2021 8:10 AM Bruce Steers <bsteers4 at gmail.com> wrote: > > > > > On Thu, 26 Aug 2021 at 15:56, bb <adamnt42 at gmail.com mailto:adamnt42 at gmail.com > wrote: > > > > On Thu, 2021-08-26 at 07:12 -0700, Jerry Betzer wrote: > > > Apologies in advance if I have selected the wrong address for this e- > > > mail. > > > I am a novice Gambas user and even more novice member of this user > > > list. > > > I am looking for help working with the PictureBox class. I got off > > > to a pretty quick and easy start displaying my images (.jpg files) > > > but I am having difficulty fitting my pictures within the picture box > > > container in a proportional way. Per the > > >http://gambaswiki.org/comp/gb.qt4/picturebox link it looked like I should > > > use the "Mode" attribute (specifically PictureBox1.Mode = > > > PictureBox.Contain). > > > When I run my program I get the following error: > > > unknown symbol "Mode" in class "PictureBox" > > > > > > My OS is: Linux Mint 18 'sarah' > > > 'cinnamon 64 bit' > > > > > > cat /etc/os-release yields: > > > NAME = "ubuntu" > > > VERSION = "16.04 LTS (Xenia Xerus)" > > > > > > Gambas version: 3.8.4 <----------------- TRUE? > > > > > > Code snippet: > > > Dim strMyString As String > > > strMyString = FileChooser1.Value > > > PictureBox1.Picture = Picture[strMyString] > > > PictureBox1.Mode = 3 > > > > > > NOTE: I have tried substituting PictureBox.Contain for the magic > > > number 3. > > > > > > Thanks in advance for any help. > > > -Jerry > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > You are using an incredibly old version of Gambas! (Typical Mint) > > I doubt whether PictureBox back then had much. > > Try and update to a more recent version. > > > > bruce > > > > > > He's right that is pretty old. > Try this link... > https://launchpad.net/~gambas-team/+archive/ubuntu/gambas3 > > follow the instructions "Adding this PPA to your system" to upgrade to gambas 3.16 stable. > > > But you will probably find your issue it the container/panel your picture box is in. > It takes a little experimentation to make sure your picture box is not in a panel that will stretch the image even if Contain is set. > try setting the parent panel Arrangement to Arrange.None and Expand = false. > If you are not sure if it is the panel shape set the panels background to a temporary colour to highlight it's shape. > > Best of luck > BruceS (a different Bruce) > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210826/17a5a8a5/attachment-0001.htm> From adamnt42 at gmail.com Thu Aug 26 19:08:42 2021 From: adamnt42 at gmail.com (bb) Date: Fri, 27 Aug 2021 02:38:42 +0930 Subject: [Gambas-user] How to use MessageView when closing a form? Message-ID: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> (Internal #614) We are trying to show a MessageView when the user clicks on a button that closes the form or presses ESC. So in btnCancel_Click() we have Public Sub btnCancel_Click() Action["Exit"].Enabled = False mvwOutput.Open("Search abandoned", Picture["icon:/32/emote-sad"]) While mvwOutput.Visible Wait 0.1 Wend Me.Close End which works, but seems a terrible waste of electrons (top shows it using 7% CPU). Anyone got a better idea? tia bruce (&Caarol, Joe and Fels) From bsteers4 at gmail.com Thu Aug 26 19:21:55 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Thu, 26 Aug 2021 18:21:55 +0100 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> Message-ID: <CABuQYCDDSYtbTJh0+eqtokDBsyxB6De12D0EakprJbTh6=N+HQ@mail.gmail.com> Use mvwOutpit_Close() event to close form? On Thu, 26 Aug 2021, 18:09 bb, <adamnt42 at gmail.com> wrote: > (Internal #614) > > We are trying to show a MessageView when the user clicks on a button > that closes the form or presses ESC. So in btnCancel_Click() we have > > Public Sub btnCancel_Click() > > Action["Exit"].Enabled = False > mvwOutput.Open("Search abandoned", Picture["icon:/32/emote-sad"]) > > While mvwOutput.Visible > Wait 0.1 > Wend > > Me.Close > > End > > which works, but seems a terrible waste of electrons (top shows it > using 7% CPU). > > Anyone got a better idea? > > tia > bruce (&Caarol, Joe and Fels) > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210826/8879f8b2/attachment.htm> From g4mba5 at gmail.com Thu Aug 26 20:32:15 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Thu, 26 Aug 2021 20:32:15 +0200 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <CABuQYCDDSYtbTJh0+eqtokDBsyxB6De12D0EakprJbTh6=N+HQ@mail.gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CABuQYCDDSYtbTJh0+eqtokDBsyxB6De12D0EakprJbTh6=N+HQ@mail.gmail.com> Message-ID: <447198c1-972d-71a9-e6a8-665d26349ef6@gmail.com> Le 26/08/2021 ? 19:21, Bruce Steers a ?crit?: > Use mvwOutpit_Close() event to close form? > > > On Thu, 26 Aug 2021, 18:09 bb, <adamnt42 at gmail.com > <mailto:adamnt42 at gmail.com>> wrote: > > (Internal #614) > > We are trying to show a MessageView when the user clicks on a button > that closes the form or presses ESC. So in btnCancel_Click() we have > > Public Sub btnCancel_Click() > > ? Action["Exit"].Enabled = False > ? mvwOutput.Open("Search abandoned", Picture["icon:/32/emote-sad"]) > > ? While mvwOutput.Visible > ? ? Wait 0.1 > ? Wend > > ? Me.Close > > End > > which works, but seems a terrible waste of electrons (top shows it > using 7% CPU). > > Anyone got a better idea? > > tia > bruce (&Caarol, Joe and Fels) > > > ----[ http://gambaswiki.org/wiki/doc/netiquette > <http://gambaswiki.org/wiki/doc/netiquette> ]---- > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > As soon as you are calling WAIT inside a loop in a graphical application, there is a 99% chance that you are doing something wrong. -- Beno?t Minisini From jussi.lahtinen at gmail.com Thu Aug 26 21:42:10 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Thu, 26 Aug 2021 22:42:10 +0300 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> Message-ID: <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> You should not use WAIT inside an event handler. Use sleep instead, if there isn't a better solution (I would guess there is). If the problem is high CPU usage, then simply increase the IDLE time, example; Sleep 0.3 Jussi On Thu, Aug 26, 2021 at 8:09 PM bb <adamnt42 at gmail.com> wrote: > (Internal #614) > > We are trying to show a MessageView when the user clicks on a button > that closes the form or presses ESC. So in btnCancel_Click() we have > > Public Sub btnCancel_Click() > > Action["Exit"].Enabled = False > mvwOutput.Open("Search abandoned", Picture["icon:/32/emote-sad"]) > > While mvwOutput.Visible > Wait 0.1 > Wend > > Me.Close > > End > > which works, but seems a terrible waste of electrons (top shows it > using 7% CPU). > > Anyone got a better idea? > > tia > bruce (&Caarol, Joe and Fels) > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210826/c406ac9b/attachment.htm> From g4mba5 at gmail.com Thu Aug 26 22:05:57 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Thu, 26 Aug 2021 22:05:57 +0200 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> Message-ID: <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> Le 26/08/2021 ? 21:42, Jussi Lahtinen a ?crit?: > You should not use WAIT inside an event handler. Use sleep instead, if > there isn't a better solution (I would guess there is). > If the problem is high CPU usage, then simply increase the IDLE time, > example; > Sleep 0.3 > > Jussi > Please, this is worse. You should not use Wait, and you must not use Sleep! Why sleeping inside an event handler??? -- Beno?t Minisini From bsteers4 at gmail.com Thu Aug 26 22:25:51 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Thu, 26 Aug 2021 21:25:51 +0100 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> Message-ID: <CABuQYCAxJp_6Oji0pW+=rqK-3mFn-3kuyujhMgYXYEHRonZWCA@mail.gmail.com> I vision some awesome new command like Trigger Or Call For example Public Sub Form_MouseUp() Call MyFuncion() End Function is run freely and event handler exits. I've had many a condition where I wanted out of the event handler, it usually involves event handler just starting a Timer that runs the commands. Something built it would be cool ? Respects BruceS On Thu, 26 Aug 2021, 21:06 Beno?t Minisini, <g4mba5 at gmail.com> wrote: > Le 26/08/2021 ? 21:42, Jussi Lahtinen a ?crit : > > You should not use WAIT inside an event handler. Use sleep instead, if > > there isn't a better solution (I would guess there is). > > If the problem is high CPU usage, then simply increase the IDLE time, > > example; > > Sleep 0.3 > > > > Jussi > > > > Please, this is worse. You should not use Wait, and you must not use > Sleep! Why sleeping inside an event handler??? > > -- > Beno?t Minisini > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210826/d6b392fa/attachment-0001.htm> From bagonergi at gmail.com Thu Aug 26 23:22:37 2021 From: bagonergi at gmail.com (Gianluigi) Date: Thu, 26 Aug 2021 23:22:37 +0200 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> Message-ID: <CAJ2rqFYpFPsbJcpj_Jk_Z6nBfU-xa_FvRx5nW2LyO4Vdu_O0Zg@mail.gmail.com> Il giorno gio 26 ago 2021 alle ore 19:09 bb <adamnt42 at gmail.com> ha scritto: > (Internal #614) > > We are trying to show a MessageView when the user clicks on a button > that closes the form or presses ESC. So in btnCancel_Click() we have > > Public Sub btnCancel_Click() > > Action["Exit"].Enabled = False > mvwOutput.Open("Search abandoned", Picture["icon:/32/emote-sad"]) > > While mvwOutput.Visible > Wait 0.1 > Wend > > Me.Close > > End > > which works, but seems a terrible waste of electrons (top shows it > using 7% CPU). > > Anyone got a better idea? > > tia > bruce (&Caarol, Joe and Fels) > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > Could something like this be useful, or is it too stupid? Regards Gianluigi -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210826/64b4968f/attachment.htm> -------------- next part -------------- <salt FCKGM-0001-86C1-2B15-D77C> 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 </salt> From jussi.lahtinen at gmail.com Thu Aug 26 23:24:21 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Fri, 27 Aug 2021 00:24:21 +0300 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> Message-ID: <CAFJMe7S+vDvfkZHeC3utNah8zgSFq6RMvZUSRKyLDP4g1hJgXA@mail.gmail.com> > > Please, this is worse. You should not use Wait, and you must not use > Sleep! Why sleeping inside an event handler??? > Yes, it was a brain fart. Of course nothing will be done if a single threaded program sleeps. Jussi -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210827/6e6ecf14/attachment-0001.htm> From g4mba5 at gmail.com Fri Aug 27 00:34:06 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Fri, 27 Aug 2021 00:34:06 +0200 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <CABuQYCAxJp_6Oji0pW+=rqK-3mFn-3kuyujhMgYXYEHRonZWCA@mail.gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> <CABuQYCAxJp_6Oji0pW+=rqK-3mFn-3kuyujhMgYXYEHRonZWCA@mail.gmail.com> Message-ID: <7d98149e-2503-9f9d-4f56-2df78f97df8b@gmail.com> Le 26/08/2021 ? 22:25, Bruce Steers a ?crit?: > I vision some awesome new command like > Trigger > Or > Call > For example > > Public Sub Form_MouseUp() > > ? Call MyFuncion() > > End > > Function is run freely and event handler exits. > > I've had many a condition where I wanted out of the event handler, it > usually involves event handler just starting a Timer that runs the commands. > > Something built it would be cool ? > > Respects > BruceS > I don't know what you are actually in mind. I just can tell that when I need to run some code later, I use a timer object and its Trigger() method. That way the code is run at the next event loop. But it requires a lot of lines of codes, so maybe we can imagine something like: Do SomeFunction() Next that would run 'SomeFunction' at the next event loop. The syntax is not terrible, but introducing new keywords in the language may break existing code. Another point: as there is no closure in Gambas, the function cannot take any arguments. Regards, -- Beno?t Minisini From bsteers4 at gmail.com Fri Aug 27 01:11:32 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Fri, 27 Aug 2021 00:11:32 +0100 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <7d98149e-2503-9f9d-4f56-2df78f97df8b@gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> <CABuQYCAxJp_6Oji0pW+=rqK-3mFn-3kuyujhMgYXYEHRonZWCA@mail.gmail.com> <7d98149e-2503-9f9d-4f56-2df78f97df8b@gmail.com> Message-ID: <CABuQYCAJewXG==_Rr4MKKduqanvG6nnPr+LcuU7YTVCZMMAZiA@mail.gmail.com> I mean something like how Shell/Exec can use Wait or not. Something like that but for any Sub/Function/etc like Try can prefix anything (almost) A function prefix (Do sounds good, Run would make sense) that would run the function/Sub asynchronous, so the event handler would just trigger the comnand in another process/timer and exit. That's how I exit my event handlers quickly. The event handler triggers a timer and ends, the timer runs the commands. Hope that makes sense. Wishing well BruceS On Thu, 26 Aug 2021, 23:35 Beno?t Minisini, <g4mba5 at gmail.com> wrote: > Le 26/08/2021 ? 22:25, Bruce Steers a ?crit : > > I vision some awesome new command like > > Trigger > > Or > > Call > > For example > > > > Public Sub Form_MouseUp() > > > > Call MyFuncion() > > > > End > > > > Function is run freely and event handler exits. > > > > I've had many a condition where I wanted out of the event handler, it > > usually involves event handler just starting a Timer that runs the > commands. > > > > Something built it would be cool ? > > > > Respects > > BruceS > > > > I don't know what you are actually in mind. > > I just can tell that when I need to run some code later, I use a timer > object and its Trigger() method. That way the code is run at the next > event loop. > > But it requires a lot of lines of codes, so maybe we can imagine > something like: > > Do SomeFunction() Next > > that would run 'SomeFunction' at the next event loop. > > The syntax is not terrible, but introducing new keywords in the language > may break existing code. > > Another point: as there is no closure in Gambas, the function cannot > take any arguments. > > Regards, > > -- > Beno?t Minisini > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210827/936e271a/attachment.htm> From jussi.lahtinen at gmail.com Fri Aug 27 01:29:41 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Fri, 27 Aug 2021 02:29:41 +0300 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <CABuQYCAJewXG==_Rr4MKKduqanvG6nnPr+LcuU7YTVCZMMAZiA@mail.gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> <CABuQYCAxJp_6Oji0pW+=rqK-3mFn-3kuyujhMgYXYEHRonZWCA@mail.gmail.com> <7d98149e-2503-9f9d-4f56-2df78f97df8b@gmail.com> <CABuQYCAJewXG==_Rr4MKKduqanvG6nnPr+LcuU7YTVCZMMAZiA@mail.gmail.com> Message-ID: <CAFJMe7S90grQNeMwaxhNBGxj0pMmQUOOw_zMKkHAK2XSj2PN0A@mail.gmail.com> There is the Task keyword. http://gambaswiki.org/wiki/comp/gb/task Jussi On Fri, Aug 27, 2021 at 2:12 AM Bruce Steers <bsteers4 at gmail.com> wrote: > I mean something like how Shell/Exec can use Wait or not. Something like > that but for any Sub/Function/etc like Try can prefix anything (almost) > > A function prefix (Do sounds good, Run would make sense) that would run > the function/Sub asynchronous, so the event handler would just trigger the > comnand in another process/timer and exit. > > That's how I exit my event handlers quickly. The event handler triggers a > timer and ends, the timer runs the commands. > > Hope that makes sense. > Wishing well > BruceS > > On Thu, 26 Aug 2021, 23:35 Beno?t Minisini, <g4mba5 at gmail.com> wrote: > >> Le 26/08/2021 ? 22:25, Bruce Steers a ?crit : >> > I vision some awesome new command like >> > Trigger >> > Or >> > Call >> > For example >> > >> > Public Sub Form_MouseUp() >> > >> > Call MyFuncion() >> > >> > End >> > >> > Function is run freely and event handler exits. >> > >> > I've had many a condition where I wanted out of the event handler, it >> > usually involves event handler just starting a Timer that runs the >> commands. >> > >> > Something built it would be cool ? >> > >> > Respects >> > BruceS >> > >> >> I don't know what you are actually in mind. >> >> I just can tell that when I need to run some code later, I use a timer >> object and its Trigger() method. That way the code is run at the next >> event loop. >> >> But it requires a lot of lines of codes, so maybe we can imagine >> something like: >> >> Do SomeFunction() Next >> >> that would run 'SomeFunction' at the next event loop. >> >> The syntax is not terrible, but introducing new keywords in the language >> may break existing code. >> >> Another point: as there is no closure in Gambas, the function cannot >> take any arguments. >> >> Regards, >> >> -- >> Beno?t Minisini >> > >> >> > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210827/e68ddca2/attachment.htm> From bsteers4 at gmail.com Fri Aug 27 03:30:49 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Fri, 27 Aug 2021 02:30:49 +0100 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <CAFJMe7S90grQNeMwaxhNBGxj0pMmQUOOw_zMKkHAK2XSj2PN0A@mail.gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> <CABuQYCAxJp_6Oji0pW+=rqK-3mFn-3kuyujhMgYXYEHRonZWCA@mail.gmail.com> <7d98149e-2503-9f9d-4f56-2df78f97df8b@gmail.com> <CABuQYCAJewXG==_Rr4MKKduqanvG6nnPr+LcuU7YTVCZMMAZiA@mail.gmail.com> <CAFJMe7S90grQNeMwaxhNBGxj0pMmQUOOw_zMKkHAK2XSj2PN0A@mail.gmail.com> Message-ID: <CABuQYCD_mgdDJxXoLN4EA=97Y_Vt6EBVN4ZNYEhm0aM4LM318A@mail.gmail.com> Task would also make sense if it could be used as a keyword Process might also fit the purpose Task SomeFunction(sWithArgs) Process SomeFunction(sWithArgs) RunSomeFunction(sMyArgs) With Process ' also makes sense , as it's running a function with it's own process Respects BruceS On Fri, 27 Aug 2021 at 00:30, Jussi Lahtinen <jussi.lahtinen at gmail.com> wrote: > There is the Task keyword. > http://gambaswiki.org/wiki/comp/gb/task > > Jussi > > On Fri, Aug 27, 2021 at 2:12 AM Bruce Steers <bsteers4 at gmail.com> wrote: > >> I mean something like how Shell/Exec can use Wait or not. Something like >> that but for any Sub/Function/etc like Try can prefix anything (almost) >> >> A function prefix (Do sounds good, Run would make sense) that would run >> the function/Sub asynchronous, so the event handler would just trigger the >> comnand in another process/timer and exit. >> >> That's how I exit my event handlers quickly. The event handler triggers a >> timer and ends, the timer runs the commands. >> >> Hope that makes sense. >> Wishing well >> BruceS >> >> On Thu, 26 Aug 2021, 23:35 Beno?t Minisini, <g4mba5 at gmail.com> wrote: >> >>> Le 26/08/2021 ? 22:25, Bruce Steers a ?crit : >>> > I vision some awesome new command like >>> > Trigger >>> > Or >>> > Call >>> > For example >>> > >>> > Public Sub Form_MouseUp() >>> > >>> > Call MyFuncion() >>> > >>> > End >>> > >>> > Function is run freely and event handler exits. >>> > >>> > I've had many a condition where I wanted out of the event handler, it >>> > usually involves event handler just starting a Timer that runs the >>> commands. >>> > >>> > Something built it would be cool ? >>> > >>> > Respects >>> > BruceS >>> > >>> >>> I don't know what you are actually in mind. >>> >>> I just can tell that when I need to run some code later, I use a timer >>> object and its Trigger() method. That way the code is run at the next >>> event loop. >>> >>> But it requires a lot of lines of codes, so maybe we can imagine >>> something like: >>> >>> Do SomeFunction() Next >>> >>> that would run 'SomeFunction' at the next event loop. >>> >>> The syntax is not terrible, but introducing new keywords in the language >>> may break existing code. >>> >>> Another point: as there is no closure in Gambas, the function cannot >>> take any arguments. >>> >>> Regards, >>> >>> -- >>> Beno?t Minisini >>> >> >>> >>> >> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >> > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210827/fad6e8a5/attachment-0001.htm> From g4mba5 at gmail.com Fri Aug 27 09:29:30 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Fri, 27 Aug 2021 09:29:30 +0200 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <CABuQYCAJewXG==_Rr4MKKduqanvG6nnPr+LcuU7YTVCZMMAZiA@mail.gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> <CABuQYCAxJp_6Oji0pW+=rqK-3mFn-3kuyujhMgYXYEHRonZWCA@mail.gmail.com> <7d98149e-2503-9f9d-4f56-2df78f97df8b@gmail.com> <CABuQYCAJewXG==_Rr4MKKduqanvG6nnPr+LcuU7YTVCZMMAZiA@mail.gmail.com> Message-ID: <38310033-3451-f4c3-b859-3822f6204c20@gmail.com> Le 27/08/2021 ? 01:11, Bruce Steers a ?crit?: > I mean something like how Shell/Exec can use Wait or not. Something like > that but for any Sub/Function/etc like Try can prefix anything (almost) > There is no multi-threading in Gambas. -- Beno?t Minisini From adamnt42 at gmail.com Fri Aug 27 12:21:54 2021 From: adamnt42 at gmail.com (bb) Date: Fri, 27 Aug 2021 19:51:54 +0930 Subject: [Gambas-user] Unknown CLI options 3.16, trapping of Message-ID: <2e1bd5b9566486a61ff5a4e7b315bd6286ac5299.camel@gmail.com> With the new(ish) 3.16 gb.args component is there any way to trap "unknown" CLI options rather than the project just exiting with status 1? tia bruce From g4mba5 at gmail.com Fri Aug 27 12:28:49 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Fri, 27 Aug 2021 12:28:49 +0200 Subject: [Gambas-user] Unknown CLI options 3.16, trapping of In-Reply-To: <2e1bd5b9566486a61ff5a4e7b315bd6286ac5299.camel@gmail.com> References: <2e1bd5b9566486a61ff5a4e7b315bd6286ac5299.camel@gmail.com> Message-ID: <7ec67279-a34c-cc7c-9a7e-81c0d49c76a2@gmail.com> Le 27/08/2021 ? 12:21, bb a ?crit?: > With the new(ish) 3.16 gb.args component is there any way to trap > "unknown" CLI options rather than the project just exiting with status > 1? > > tia > bruce > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > What for? -- Beno?t Minisini From adamnt42 at gmail.com Fri Aug 27 12:35:48 2021 From: adamnt42 at gmail.com (bb) Date: Fri, 27 Aug 2021 20:05:48 +0930 Subject: [Gambas-user] Unknown CLI options 3.16, trapping of In-Reply-To: <7ec67279-a34c-cc7c-9a7e-81c0d49c76a2@gmail.com> References: <2e1bd5b9566486a61ff5a4e7b315bd6286ac5299.camel@gmail.com> <7ec67279-a34c-cc7c-9a7e-81c0d49c76a2@gmail.com> Message-ID: <79ff7b56e4d65d5f5ba18fa8cf96857e8466bda4.camel@gmail.com> On Fri, 2021-08-27 at 12:28 +0200, Beno?t Minisini wrote: > Le 27/08/2021 ? 12:21, bb a ?crit : > > With the new(ish) 3.16 gb.args component is there any way to trap > > "unknown" CLI options rather than the project just exiting with > > status > > 1? > > > > tia > > bruce > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > What for? > We are having a lot of trouble with desktop files. I just want to be able to tell the user that something is awry. If an application is installed and present in a menu (and the menu desktop file is not right) then all the user sees when they click on the menu is (that was an Australian joke meaning "nothing".) b From g4mba5 at gmail.com Fri Aug 27 12:54:04 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Fri, 27 Aug 2021 12:54:04 +0200 Subject: [Gambas-user] Unknown CLI options 3.16, trapping of In-Reply-To: <79ff7b56e4d65d5f5ba18fa8cf96857e8466bda4.camel@gmail.com> References: <2e1bd5b9566486a61ff5a4e7b315bd6286ac5299.camel@gmail.com> <7ec67279-a34c-cc7c-9a7e-81c0d49c76a2@gmail.com> <79ff7b56e4d65d5f5ba18fa8cf96857e8466bda4.camel@gmail.com> Message-ID: <b4c39131-874b-9b83-9f61-cf5333f81abe@gmail.com> Le 27/08/2021 ? 12:35, bb a ?crit?: > On Fri, 2021-08-27 at 12:28 +0200, Beno?t Minisini wrote: >> Le 27/08/2021 ? 12:21, bb a ?crit : >>> With the new(ish) 3.16 gb.args component is there any way to trap >>> "unknown" CLI options rather than the project just exiting with >>> status >>> 1? >>> >>> tia >>> bruce >>> >>> >>> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >>> >> >> What for? >> > We are having a lot of trouble with desktop files. I just want to be > able to tell the user that something is awry. > > If an application is installed and present in a menu (and the menu > desktop file is not right) then all the user sees when they click on > the menu is > > (that was an Australian joke meaning "nothing".) > > b > Command-line options are normally for programs running from... the command-line. I will add an option to not abort. Regards, -- Beno?t Minisini From g4mba5 at gmail.com Fri Aug 27 13:07:58 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Fri, 27 Aug 2021 13:07:58 +0200 Subject: [Gambas-user] Unknown CLI options 3.16, trapping of In-Reply-To: <b4c39131-874b-9b83-9f61-cf5333f81abe@gmail.com> References: <2e1bd5b9566486a61ff5a4e7b315bd6286ac5299.camel@gmail.com> <7ec67279-a34c-cc7c-9a7e-81c0d49c76a2@gmail.com> <79ff7b56e4d65d5f5ba18fa8cf96857e8466bda4.camel@gmail.com> <b4c39131-874b-9b83-9f61-cf5333f81abe@gmail.com> Message-ID: <70bc9ffb-63f2-1605-0a08-8f4b1d661e6e@gmail.com> Le 27/08/2021 ? 12:54, Beno?t Minisini a ?crit?: > Le 27/08/2021 ? 12:35, bb a ?crit?: >> On Fri, 2021-08-27 at 12:28 +0200, Beno?t Minisini wrote: >>> Le 27/08/2021 ? 12:21, bb a ?crit : >>>> With the new(ish) 3.16 gb.args component is there any way to trap >>>> "unknown" CLI options rather than the project just exiting with >>>> status >>>> 1? >>>> >>>> tia >>>> bruce >>>> >>>> >>>> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- >>>> >>> >>> What for? >>> >> We are having a lot of trouble with desktop files. I just want to be >> able to tell the user that something is awry. >> >> If an application is installed and present in a menu (and the menu >> desktop file is not right) then all the user sees when they click on >> the menu is >> >> (that was an Australian joke meaning "nothing".) >> >> b >> > > Command-line options are normally for programs running from... the > command-line. > > I will add an option to not abort. > > Regards, > Done in last commit. -- Beno?t Minisini From colifata at freenet.de Fri Aug 27 16:09:19 2021 From: colifata at freenet.de (loco pobre) Date: Fri, 27 Aug 2021 16:09:19 +0200 Subject: [Gambas-user] AVRCP-Signals Message-ID: <0d05172f-8411-8b04-2816-2e70853d13d0@freenet.de> Hi, we'd like to handle AVRCP-signals (e.g. "Next Track"-command from an bluetooth-connected device). Has anybody an example? Thanks From ioyrli at yandex.ru Fri Aug 27 17:41:23 2021 From: ioyrli at yandex.ru (ioyrli at yandex.ru) Date: Fri, 27 Aug 2021 18:41:23 +0300 Subject: [Gambas-user] No access to Gambasfarm Message-ID: <ZW8IYQ.0E6X8JX9O48P2@yandex.ru> Hi. The website gambasfarm.org is not accessible from Russia. A window appears with the text: "SONIC WALL. This site has been blocked by the network administrator. Block reason: Gateway GEO-IP Filter Alert". I was checking from local internet in two places and I was checking from mobile internet from different devices. The result is the same - blocking text window. From g4mba5 at gmail.com Fri Aug 27 18:34:29 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Fri, 27 Aug 2021 18:34:29 +0200 Subject: [Gambas-user] No access to Gambasfarm In-Reply-To: <ZW8IYQ.0E6X8JX9O48P2@yandex.ru> References: <ZW8IYQ.0E6X8JX9O48P2@yandex.ru> Message-ID: <2f2e4b2e-7fac-4895-8673-686b9eddd1cb@gmail.com> Le 27/08/2021 ? 17:41, ioyrli at yandex.ru a ?crit?: > Hi. The website gambasfarm.org is not accessible from Russia. A window > appears with the text: "SONIC WALL. This site has been blocked by the > network administrator. Block reason: Gateway GEO-IP Filter Alert". I was > checking from local internet in two places and I was checking from > mobile internet from different devices. The result is the same - > blocking text window. > Sorry for that, I have no control on the network infrastructure where the gambas farm is hosted. I plan to migrate the server elsewhere, but I didn't had the time for that yet. I will ask the administrator to see if he can unlock that after September, 1st. Sorry for the inconvenience again. -- Beno?t Minisini From bsteers4 at gmail.com Fri Aug 27 18:42:15 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Fri, 27 Aug 2021 17:42:15 +0100 Subject: [Gambas-user] No access to Gambasfarm In-Reply-To: <ZW8IYQ.0E6X8JX9O48P2@yandex.ru> References: <ZW8IYQ.0E6X8JX9O48P2@yandex.ru> Message-ID: <CABuQYCCNZmFj86yNQ6_QbOUmB1jWGOZUjd5sTHGK08UupiQWnQ@mail.gmail.com> When i load gambasfarm.org all i get is the wiki. So maybe try http://gambaswiki.org/wiki BruceS On Fri, 27 Aug 2021 at 16:50, <ioyrli at yandex.ru> wrote: > Hi. The website gambasfarm.org is not accessible from Russia. A window > appears with the text: "SONIC WALL. This site has been blocked by the > network administrator. Block reason: Gateway GEO-IP Filter Alert". I > was checking from local internet in two places and I was checking from > mobile internet from different devices. The result is the same - > blocking text window. > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210827/e7195767/attachment.htm> From ioyrli at yandex.ru Fri Aug 27 18:56:24 2021 From: ioyrli at yandex.ru (ioyrli at yandex.ru) Date: Fri, 27 Aug 2021 19:56:24 +0300 Subject: [Gambas-user] No access to Gambasfarm In-Reply-To: <CABuQYCCNZmFj86yNQ6_QbOUmB1jWGOZUjd5sTHGK08UupiQWnQ@mail.gmail.com> References: <ZW8IYQ.0E6X8JX9O48P2@yandex.ru> <CABuQYCCNZmFj86yNQ6_QbOUmB1jWGOZUjd5sTHGK08UupiQWnQ@mail.gmail.com> Message-ID: <0ECIYQ.JTCT68JKEYS92@yandex.ru> ? ??, ??? 27, 2021 ? 17:42, Bruce Steers <bsteers4 at gmail.com> ???????: > When i load gambasfarm.org all i get is the wiki. > So maybe try http://gambaswiki.org/wiki The address gambasfarm.org is used in the Gambas IDE to download programs published by other users. Benoit Minizini, thank you for the explanation. I will be waiting. From t.lee.davidson at gmail.com Fri Aug 27 19:52:07 2021 From: t.lee.davidson at gmail.com (T Lee Davidson) Date: Fri, 27 Aug 2021 13:52:07 -0400 Subject: [Gambas-user] AVRCP-Signals In-Reply-To: <0d05172f-8411-8b04-2816-2e70853d13d0@freenet.de> References: <0d05172f-8411-8b04-2816-2e70853d13d0@freenet.de> Message-ID: <40ae824a-6399-f2c3-869f-6bf996c19ba5@gmail.com> On 8/27/21 10:09 AM, loco pobre wrote: > Hi, we'd like to handle AVRCP-signals (e.g. "Next Track"-command from an bluetooth-connected device). Has anybody an example? > Thanks What type of connection does a bluetooth device use? Is it connected as a serial device and accessible via a serial port? Or, does it communicate via DBUS? Or perhaps, does it behave as a networked device? -- Lee From adamnt42 at gmail.com Fri Aug 27 22:06:50 2021 From: adamnt42 at gmail.com (bb) Date: Sat, 28 Aug 2021 05:36:50 +0930 Subject: [Gambas-user] Unknown CLI options 3.16, trapping of In-Reply-To: <70bc9ffb-63f2-1605-0a08-8f4b1d661e6e@gmail.com> References: <2e1bd5b9566486a61ff5a4e7b315bd6286ac5299.camel@gmail.com> <7ec67279-a34c-cc7c-9a7e-81c0d49c76a2@gmail.com> <79ff7b56e4d65d5f5ba18fa8cf96857e8466bda4.camel@gmail.com> <b4c39131-874b-9b83-9f61-cf5333f81abe@gmail.com> <70bc9ffb-63f2-1605-0a08-8f4b1d661e6e@gmail.com> Message-ID: <87b4055e70f35b5c11e199980e44556732f958af.camel@gmail.com> On Fri, 2021-08-27 at 13:07 +0200, Beno?t Minisini wrote: > Le 27/08/2021 ? 12:54, Beno?t Minisini a ?crit : > > Le 27/08/2021 ? 12:35, bb a ?crit : > > > On Fri, 2021-08-27 at 12:28 +0200, Beno?t Minisini wrote: > > > > Le 27/08/2021 ? 12:21, bb a ?crit : > > > > > With the new(ish) 3.16 gb.args component is there any way to > > > > > trap > > > > > "unknown" CLI options rather than the project just exiting > > > > > with > > > > > status > > > > > 1? > > > > > > > > > > tia > > > > > bruce > > > > > > > > > > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > > > > > > > > > > What for? > > > > > > > We are having a lot of trouble with desktop files. I just want to > > > be > > > able to tell the user that something is awry. > > > > > > If an application is installed and present in a menu (and the > > > menu > > > desktop file is not right) then all the user sees when they click > > > on > > > the menu is > > > > > > (that was an Australian joke meaning "nothing".) > > > > > > b > > > > > > > Command-line options are normally for programs running from... the > > command-line. > > > > I will add an option to not abort. > > > > Regards, > > > > Done in last commit. > Thanks Beno?t, That is much better (for paddys-hill). Another use case is when one gambas project is calling another. In which case I have to look at the arguments as well as the options. This also works much better now. How is the website redesign going? regards bruce From g4mba5 at gmail.com Fri Aug 27 22:18:59 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Fri, 27 Aug 2021 22:18:59 +0200 Subject: [Gambas-user] Unknown CLI options 3.16, trapping of In-Reply-To: <87b4055e70f35b5c11e199980e44556732f958af.camel@gmail.com> References: <2e1bd5b9566486a61ff5a4e7b315bd6286ac5299.camel@gmail.com> <7ec67279-a34c-cc7c-9a7e-81c0d49c76a2@gmail.com> <79ff7b56e4d65d5f5ba18fa8cf96857e8466bda4.camel@gmail.com> <b4c39131-874b-9b83-9f61-cf5333f81abe@gmail.com> <70bc9ffb-63f2-1605-0a08-8f4b1d661e6e@gmail.com> <87b4055e70f35b5c11e199980e44556732f958af.camel@gmail.com> Message-ID: <68d44ce0-9c56-9ac1-c3af-5de9b26f12be@gmail.com> Le 27/08/2021 ? 22:06, bb a ?crit?: > Thanks Beno?t, > > That is much better (for paddys-hill). > > Another use case is when one gambas project is calling another. In > which case I have to look at the arguments as well as the options. This > also works much better now. > > How is the website redesign going? > Nothing done at the moment. -- Beno?t Minisini From bsteers4 at gmail.com Sat Aug 28 11:47:25 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sat, 28 Aug 2021 10:47:25 +0100 Subject: [Gambas-user] Unknown CLI options 3.16, trapping of In-Reply-To: <70bc9ffb-63f2-1605-0a08-8f4b1d661e6e@gmail.com> References: <2e1bd5b9566486a61ff5a4e7b315bd6286ac5299.camel@gmail.com> <7ec67279-a34c-cc7c-9a7e-81c0d49c76a2@gmail.com> <79ff7b56e4d65d5f5ba18fa8cf96857e8466bda4.camel@gmail.com> <b4c39131-874b-9b83-9f61-cf5333f81abe@gmail.com> <70bc9ffb-63f2-1605-0a08-8f4b1d661e6e@gmail.com> Message-ID: <CABuQYCD3R51EyUT_nrFiqhnea-z6AhPM9U7-UCoQtpT4KOw66g@mail.gmail.com> On Fri, 27 Aug 2021 at 12:09, Beno?t Minisini <g4mba5 at gmail.com> wrote: > Le 27/08/2021 ? 12:54, Beno?t Minisini a ?crit : > > Le 27/08/2021 ? 12:35, bb a ?crit : > >> On Fri, 2021-08-27 at 12:28 +0200, Beno?t Minisini wrote: > >>> Le 27/08/2021 ? 12:21, bb a ?crit : > >>>> With the new(ish) 3.16 gb.args component is there any way to trap > >>>> "unknown" CLI options rather than the project just exiting with > >>>> status > >>>> 1? > >>>> > >>>> tia > >>>> bruce > >>>> > >>>> > >>>> ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > >>>> > >>> > >>> What for? > >>> > >> We are having a lot of trouble with desktop files. I just want to be > >> able to tell the user that something is awry. > >> > >> If an application is installed and present in a menu (and the menu > >> desktop file is not right) then all the user sees when they click on > >> the menu is > >> > >> (that was an Australian joke meaning "nothing".) > >> > >> b > >> > > > > Command-line options are normally for programs running from... the > > command-line. > > > > I will add an option to not abort. > > > > Regards, > > > > Done in last commit. > Nice one :) That's handy. The forced Quit if an unknown arg was given was annoying, especially when developing. Much nicer to be able to print a warning and manually exit the program properly. (Quit is such an ugly exit) BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210828/511b791c/attachment-0001.htm> From bsteers4 at gmail.com Sat Aug 28 13:20:13 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sat, 28 Aug 2021 12:20:13 +0100 Subject: [Gambas-user] Run a function from a string? Message-ID: <CABuQYCBtBAr1yK-uF1VjBsdAtDYMHa8P3RG2tFsB_61mdkDW=w@mail.gmail.com> Is it ,, could it possibly be possible to run a function from a String? It would open up all sorts of possibilities. What i mean is for example maybe i want to make a timer to trigger a function so i want to supply the function name but not run the function at that time. Eg. Public Sub DeferCommand_Click() sFunctionName="RunNow" sFunctionArgs="a message" tFunctionTimer.Start() End Public Sub FunctionTimer_Timer() Last.Stop '' This bit is where we hit a wall because i don't think anything like it is possible, but would be sooo useful if it was. FMain.Functions[sFunctionName].Call(sFunctionArgs) End Public Sub RunNow(sMessage As String) Print "Running Now\n" & sMessage End ------------- I should imaging the 3 dots ... could be utilized to transmit any number of arguments I of course have no real clue where to even begin to implement anything like this. That would be our Benoits bag of amazing insights :) (<-- stands back and waits for the "nope, not ever!" :'( ;) ) Any kind of way to implement something like that would be incredibly useful. I hope I have been clear in my wish here. kinda like bash 'eval' can turn a string into a function and run it. Well wishes BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210828/9dc4df56/attachment.htm> From tobs at taboege.de Sat Aug 28 14:58:54 2021 From: tobs at taboege.de (Tobias Boege) Date: Sat, 28 Aug 2021 14:58:54 +0200 Subject: [Gambas-user] Run a function from a string? In-Reply-To: <CABuQYCBtBAr1yK-uF1VjBsdAtDYMHa8P3RG2tFsB_61mdkDW=w@mail.gmail.com> References: <CABuQYCBtBAr1yK-uF1VjBsdAtDYMHa8P3RG2tFsB_61mdkDW=w@mail.gmail.com> Message-ID: <20210828125854.GA2934148@highrise.localdomain> On Sat, 28 Aug 2021, Bruce Steers wrote: > Is it ,, could it possibly be possible to run a function from a String? > It would open up all sorts of possibilities. > > What i mean is for example maybe i want to make a timer to trigger a > function so i want to supply the function name but not run the function at > that time. > Eg. > Public Sub DeferCommand_Click() > sFunctionName="RunNow" > sFunctionArgs="a message" > tFunctionTimer.Start() > End > > Public Sub FunctionTimer_Timer() > Last.Stop > > '' This bit is where we hit a wall because i don't think anything like it > is possible, but would be sooo useful if it was. > FMain.Functions[sFunctionName].Call(sFunctionArgs) > > End > > Public Sub RunNow(sMessage As String) > Print "Running Now\n" & sMessage > End > ------------- > > I should imaging the 3 dots ... could be utilized to transmit any number of > arguments > I of course have no real clue where to even begin to implement anything > like this. > That would be our Benoits bag of amazing insights :) > (<-- stands back and waits for the "nope, not ever!" :'( ;) ) > > Any kind of way to implement something like that would be incredibly useful. > I hope I have been clear in my wish here. > kinda like bash 'eval' can turn a string into a function and run it. > Eval() exists in Gambas as well, but in this case I would use Object.Call(). Your FMain.Functions[sFunctionName].Call(aFunctionArgs) becomes Object.Call(FMain, sFunctionName, aFunctionArgs) ' arguments are an Array Remember that Gambas has almost no "functions". It has objects which have methods. It's better to think about it that way. It also implies that you need to have an object available to call a method on. An automatically created one like FMain suffices. Best, Tobias -- "There's an old saying: Don't change anything... ever!" -- Mr. Monk From bsteers4 at gmail.com Sat Aug 28 16:25:11 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sat, 28 Aug 2021 15:25:11 +0100 Subject: [Gambas-user] Run a function from a string? In-Reply-To: <20210828125854.GA2934148@highrise.localdomain> References: <CABuQYCBtBAr1yK-uF1VjBsdAtDYMHa8P3RG2tFsB_61mdkDW=w@mail.gmail.com> <20210828125854.GA2934148@highrise.localdomain> Message-ID: <CABuQYCAZPJEA_T6vPiekyGvdsnthyk03ehCTuQ0Exy-qMhyLrA@mail.gmail.com> On Sat, 28 Aug 2021 at 14:05, Tobias Boege via User < user at lists.gambas-basic.org> wrote: > On Sat, 28 Aug 2021, Bruce Steers wrote: > > Is it ,, could it possibly be possible to run a function from a String? > > It would open up all sorts of possibilities. > > > > What i mean is for example maybe i want to make a timer to trigger a > > function so i want to supply the function name but not run the function > at > > that time. > > Eg. > > Public Sub DeferCommand_Click() > > sFunctionName="RunNow" > > sFunctionArgs="a message" > > tFunctionTimer.Start() > > End > > > > Public Sub FunctionTimer_Timer() > > Last.Stop > > > > '' This bit is where we hit a wall because i don't think anything like it > > is possible, but would be sooo useful if it was. > > FMain.Functions[sFunctionName].Call(sFunctionArgs) > > > > End > > > > Public Sub RunNow(sMessage As String) > > Print "Running Now\n" & sMessage > > End > > ------------- > > > > I should imaging the 3 dots ... could be utilized to transmit any number > of > > arguments > > I of course have no real clue where to even begin to implement anything > > like this. > > That would be our Benoits bag of amazing insights :) > > (<-- stands back and waits for the "nope, not ever!" :'( ;) ) > > > > Any kind of way to implement something like that would be incredibly > useful. > > I hope I have been clear in my wish here. > > kinda like bash 'eval' can turn a string into a function and run it. > > > > Eval() exists in Gambas as well, but in this case I would use > Object.Call(). > Your FMain.Functions[sFunctionName].Call(aFunctionArgs) becomes > > Object.Call(FMain, sFunctionName, aFunctionArgs) ' arguments are an Array > > Remember that Gambas has almost no "functions". It has objects which have > methods. It's better to think about it that way. It also implies that you > need to have an object available to call a method on. An automatically > created one like FMain suffices. > > Best, > Tobias > > -- > "There's an old saying: Don't change anything... ever!" -- Mr. Monk > Aaah , that's fantastic Tobias , many thanks. So now I've made a simple class file called RunFree.class ... *' Gambas class fileExportStatic Private $Timer As TimerStatic Private $Parent As ObjectStatic Private $Method As StringStatic Private $ArgArray As Variant[]Static Public Sub _init() $Timer = New Timer As "Timer" $Timer.Delay = 0EndStatic Public Sub _call(Parent As Object, Method As String, Optional ArgArray As Variant[]) $Parent = Parent $Method = Method $ArgArray = ArgArray $Timer.StartEndStatic Public Sub Timer_Timer()$Timer.Stop* *Object.Call($Parent, $Method, $ArgArray)End* Now during my Event handler i can simply use RunFree(Me, "MyFunctionName", ["Plus", "Args"]) That way the function (sorry Method, thanks for the correlation correction :) ) is run asynchronous of the event handler that is freed to move on :) The answer to my current set of prayers :) Awesome stuff , that's going to open up some options for me now :) Thanks again Tobias :) Respects BruceS -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210828/07a25dd4/attachment.htm> From bsteers4 at gmail.com Sat Aug 28 19:08:49 2021 From: bsteers4 at gmail.com (Bruce Steers) Date: Sat, 28 Aug 2021 18:08:49 +0100 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <38310033-3451-f4c3-b859-3822f6204c20@gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> <CABuQYCAxJp_6Oji0pW+=rqK-3mFn-3kuyujhMgYXYEHRonZWCA@mail.gmail.com> <7d98149e-2503-9f9d-4f56-2df78f97df8b@gmail.com> <CABuQYCAJewXG==_Rr4MKKduqanvG6nnPr+LcuU7YTVCZMMAZiA@mail.gmail.com> <38310033-3451-f4c3-b859-3822f6204c20@gmail.com> Message-ID: <CABuQYCCUw_ydxhWAjBT2ACb6ntaoRZaN07+unC-PRMLpA3N4ZA@mail.gmail.com> Something like this was my meaning... https://forum.gambas.one/viewtopic.php?f=6&t=1189 A built in feature like that in gambas could be an answer to your repeated.. "you shouldn't do that in an event handler" statement. you could finish it with "Use this command instead..." Respects BruceS Ps. (Sorry bruce for the post hijack) On Fri, 27 Aug 2021 at 08:30, Beno?t Minisini <g4mba5 at gmail.com> wrote: > Le 27/08/2021 ? 01:11, Bruce Steers a ?crit : > > I mean something like how Shell/Exec can use Wait or not. Something like > > that but for any Sub/Function/etc like Try can prefix anything (almost) > > > > There is no multi-threading in Gambas. > > -- > Beno?t Minisini > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210828/a56c8470/attachment-0001.htm> From adamnt42 at gmail.com Sat Aug 28 20:37:39 2021 From: adamnt42 at gmail.com (bb) Date: Sun, 29 Aug 2021 04:07:39 +0930 Subject: [Gambas-user] How to use MessageView when closing a form? In-Reply-To: <CABuQYCCUw_ydxhWAjBT2ACb6ntaoRZaN07+unC-PRMLpA3N4ZA@mail.gmail.com> References: <f1dea830da37191ca35ab24633556e70615df74b.camel@gmail.com> <CAFJMe7SFB6SDQ--UzM=wR-eXW+sCt3K63K9GwKmvOgYv5rZ_Ow@mail.gmail.com> <2983b70d-c45a-afda-781b-9a3a77a10ba4@gmail.com> <CABuQYCAxJp_6Oji0pW+=rqK-3mFn-3kuyujhMgYXYEHRonZWCA@mail.gmail.com> <7d98149e-2503-9f9d-4f56-2df78f97df8b@gmail.com> <CABuQYCAJewXG==_Rr4MKKduqanvG6nnPr+LcuU7YTVCZMMAZiA@mail.gmail.com> <38310033-3451-f4c3-b859-3822f6204c20@gmail.com> <CABuQYCCUw_ydxhWAjBT2ACb6ntaoRZaN07+unC-PRMLpA3N4ZA@mail.gmail.com> Message-ID: <357c7bb4e8fd0567719508c22dcde3ade7c0ecba.camel@gmail.com> On Sat, 2021-08-28 at 18:08 +0100, Bruce Steers wrote: > Something like this was my meaning... > https://forum.gambas.one/viewtopic.php?f=6&t=1189 > > A built in feature like that in gambas could be an answer to your > repeated.. "you shouldn't do that in an event handler" statement. > you could finish it with "Use this command instead..." > > Respects > BruceS > > Ps. (Sorry bruce for the post hijack) > > No probs, I learned something! In fact, the solution we used was "don't do that in an event handler" and just changed where the form was closed to, as you suggested, to the messageView handlers. Personally, i don't particularly like the MessageView approach but that is what the co-op wanted, so c'est la guerre. "If at first you don't succeed , try it differently." is going up on the wall beside the "RTFM then RTFM" sign. bruce p.s. Moving right along, we are having a group hack of the gb.report2 component this week. Should be fun! From isafiur at gmail.com Tue Aug 31 13:39:50 2021 From: isafiur at gmail.com (Safiur Rahman) Date: Tue, 31 Aug 2021 17:24:50 +0545 Subject: [Gambas-user] KeyDown event in gb.web.gui Message-ID: <CADKn0TLEMBW6ewwah+_e00Xb8X_q=ekfXA8J1dWXEyJDCQFzjw@mail.gmail.com> Hi Beno?t With KeyDown event added in gb.web.gui component it has become extremely easy to program web application in gambas. In some of the WebTextBox KeyDown event is not required but KeyDown event is fired whatever you write on all WebtextBox. Can there be an option to disable/enable this property for individual control e.g. when fast typing is required. -- Regards Safiur Rahman From roberto.premoli at tiscali.it Tue Aug 31 13:47:58 2021 From: roberto.premoli at tiscali.it (Roberto Premoli) Date: Tue, 31 Aug 2021 13:47:58 +0200 Subject: [Gambas-user] import data from text file and popolate a 2D array Message-ID: <f914c27c-0930-891d-6d35-d3627423c14d@tiscali.it> hello. i run gambas 3.12-2 (debian 10 stable) I have a list of raw data into a text file. It is a database as follow: [{field1,field2,...fieldN}},{field1,field2,...fieldN}},...{field1,field2,...fieldN}}] each line starts with "{", end with "}}" and inside each line, the fields are separated by ",". i wish to read the text file as input, get each "block" {...}}, and split it into fields to populate a database bidimentiona array (about 6000 linees and 20 fields in each line). I can elaborate all file database searching the "marker" ( the "{", the "," and the "}},") but I suppose it will be slow compared to a dedicated command (if it exist). I write here asking if there is some "magic trick" to elaborate strings that allow me to speed up all the process and avoid me to write a dedicated funcion. Thanks, Roberto From jussi.lahtinen at gmail.com Tue Aug 31 15:50:16 2021 From: jussi.lahtinen at gmail.com (Jussi Lahtinen) Date: Tue, 31 Aug 2021 16:50:16 +0300 Subject: [Gambas-user] import data from text file and popolate a 2D array In-Reply-To: <f914c27c-0930-891d-6d35-d3627423c14d@tiscali.it> References: <f914c27c-0930-891d-6d35-d3627423c14d@tiscali.it> Message-ID: <CAFJMe7SDzsYYeYd5+66yaz_Ndf9JLrjUwc-PU4+tUx7nKJOSjg@mail.gmail.com> It should be fairly easy by using split functions. Quickly thinking first by "{" and then after a little cleaning with ",". http://gambaswiki.org/wiki/lang/split Jussi On Tue, Aug 31, 2021 at 2:54 PM Roberto Premoli <roberto.premoli at tiscali.it> wrote: > hello. i run gambas 3.12-2 (debian 10 stable) > > I have a list of raw data into a text file. It is a database as follow: > > [{field1,field2,...fieldN}},{field1,field2,...fieldN}},...{field1,field2,...fieldN}}] > > each line starts with "{", end with "}}" and inside each line, the > fields are separated by ",". > > i wish to read the text file as input, get each "block" {...}}, and > split it into fields to populate a database bidimentiona array (about > 6000 linees and 20 fields in each line). > I can elaborate all file database searching the "marker" ( the "{", the > "," and the "}},") but I suppose it will be slow compared to a > dedicated command (if it exist). > I write here asking if there is some "magic trick" to elaborate strings > that allow me to speed up all the process and avoid me to write > a dedicated funcion. > > Thanks, > Roberto > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210831/eb8d0817/attachment.htm> From isafiur at gmail.com Tue Aug 31 16:35:03 2021 From: isafiur at gmail.com (Safiur Rahman) Date: Tue, 31 Aug 2021 20:20:03 +0545 Subject: [Gambas-user] WebMenu issue with jQuery Message-ID: <CADKn0TLPd-tdJAd--mSx-8V3-PR=AOBwXt8zkqemn-Qa4m=+bQ@mail.gmail.com> Hi Adding jQuery to project does not allow Webmenu to pop up. Attached project. -- Regards Safiur Rahman -------------- next part -------------- A non-text attachment was scrubbed... Name: jquery.zip Type: application/zip Size: 16291 bytes Desc: not available URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210831/d9b6a155/attachment-0001.zip> From carloskabronsete at gmail.com Tue Aug 31 19:59:33 2021 From: carloskabronsete at gmail.com (Carlos Kabronsete) Date: Tue, 31 Aug 2021 19:59:33 +0200 Subject: [Gambas-user] How to offer a new component to gambas? Message-ID: <CAPtuRjKZ=KTj2h9bJXgr3PVp1vQh5f7G63FrvrLUxkxTJu29Ug@mail.gmail.com> I wrote two components. The first one is a new functionality and the second one is an enhancement to an existing component How to do it? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210831/f2481816/attachment.htm> From g4mba5 at gmail.com Tue Aug 31 20:20:41 2021 From: g4mba5 at gmail.com (=?UTF-8?Q?Beno=c3=aet_Minisini?=) Date: Tue, 31 Aug 2021 20:20:41 +0200 Subject: [Gambas-user] How to offer a new component to gambas? In-Reply-To: <CAPtuRjKZ=KTj2h9bJXgr3PVp1vQh5f7G63FrvrLUxkxTJu29Ug@mail.gmail.com> References: <CAPtuRjKZ=KTj2h9bJXgr3PVp1vQh5f7G63FrvrLUxkxTJu29Ug@mail.gmail.com> Message-ID: <a03c3cd6-d57b-b35c-95cb-2e54053cf2b3@gmail.com> Le 31/08/2021 ? 19:59, Carlos Kabronsete a ?crit?: > I wrote two components. The first one is a new functionality and the > second one is an enhancement to an existing component > How to do it? > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > Please give more details about what you did: - What do these components? - Is it written in Gambas or in C or in C++? - What are the dependencies? - What are the public interfaces? They must match the naming convention and the structure of the other components as much as possible. - Will you maintain it? It means fixing bugs and maintaining backward-compatibility. Thanks! -- Beno?t Minisini From carloskabronsete at gmail.com Tue Aug 31 20:40:55 2021 From: carloskabronsete at gmail.com (Carlos Kabronsete) Date: Tue, 31 Aug 2021 20:40:55 +0200 Subject: [Gambas-user] import data from text file and popolate a 2D array In-Reply-To: <f914c27c-0930-891d-6d35-d3627423c14d@tiscali.it> References: <f914c27c-0930-891d-6d35-d3627423c14d@tiscali.it> Message-ID: <CAPtuRjJ9w5NHQ0KTMGGf6Ghq9uaYzM6OR0cZU91pmX-aupPwqg@mail.gmail.com> Hi See the example Dim Data1 as string, data2 as new String[], Data3 as new String[], Counter as integer Data1="[{field1,field2,...fieldN}},{field1,field2,...fieldN}},...{field1,field2,...fieldN}}]" Data1=Replace(Data1,"[","") 'remove garbage Data1=Replace(Data1,"]","") 'remove garbage Print Data1 {field1,field2,...fieldN}},{field1,field2,...fieldN}},...{field1,field2,...fieldN}} Data2=split(Data1,"}") Print Data2[0] {field1,field2,...,fieldN Print Data2[1] ,{field1,field2,...,fieldN Now the same with those strings. Data2[0]=Replace(Data2[1],"{","") 'remove garbage Print Data2[0] field1,field2,...,fieldN The same with element Data2[1], It start with comma. Data2[1]=Replace(Data2[1],",{","") 'remove garbage Print Data2[1] field1,field2,...,fieldN Now you can separate on fields with comma delimiter. Data3=split(Data2[1],",") For counter=0 to Data3.max print Data3[Counter] next field1 field2 fiel ... fieldN El mar, 31 ago 2021 a las 13:54, Roberto Premoli (< roberto.premoli at tiscali.it>) escribi?: > hello. i run gambas 3.12-2 (debian 10 stable) > > I have a list of raw data into a text file. It is a database as follow: > > [{field1,field2,...fieldN}},{field1,field2,...fieldN}},...{field1,field2,...fieldN}}] > > each line starts with "{", end with "}}" and inside each line, the > fields are separated by ",". > > i wish to read the text file as input, get each "block" {...}}, and > split it into fields to populate a database bidimentiona array (about > 6000 linees and 20 fields in each line). > I can elaborate all file database searching the "marker" ( the "{", the > "," and the "}},") but I suppose it will be slow compared to a > dedicated command (if it exist). > I write here asking if there is some "magic trick" to elaborate strings > that allow me to speed up all the process and avoid me to write > a dedicated funcion. > > Thanks, > Roberto > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210831/e9879911/attachment.htm> From carloskabronsete at gmail.com Tue Aug 31 21:09:01 2021 From: carloskabronsete at gmail.com (Carlos Kabronsete) Date: Tue, 31 Aug 2021 21:09:01 +0200 Subject: [Gambas-user] How to offer a new component to gambas? In-Reply-To: <a03c3cd6-d57b-b35c-95cb-2e54053cf2b3@gmail.com> References: <CAPtuRjKZ=KTj2h9bJXgr3PVp1vQh5f7G63FrvrLUxkxTJu29Ug@mail.gmail.com> <a03c3cd6-d57b-b35c-95cb-2e54053cf2b3@gmail.com> Message-ID: <CAPtuRj+YNXSPqF9T0OMpBab7WppTRAm0qpyq+VEq9kApmDh8ZA@mail.gmail.com> Naming convention is not a problem. You can name it as you like. The first component is a gambas component that creates a complete public key infrastructure. It is written in gambas language and do this points - * Create complete PKI structures, Root CA, intermediateCA, CrlDistributionPoint, Alternativenames, etc. - * Manage X509 certificates. Client & Server certificates, ocsp, codesigning, timestamp, S/mime. - * Manage Pkcs12 certificates. - * Manage private keys RSA, DSA, ECDH, ECDSA, X25519, ED449. - * SSL/TLS client test. - * Timestamps request, generation and verification. - It is an openssl frontend and it is the only dependency. It doesn't need public interfaces. It can work in a script I shall mantain it I shall upload to gitlab tomorrow. ================================================= The second component is a gambas component that encrypts and decrypts files or variables on the fly. It is a openssl frontend and works with over 40 openssl ciphers. Symmetric, asymmetric and hibrid encryption too. A function for Diffie-Hellman secret key exchange too. Openssl is the only dependency. It doesn't need public interfaces. It can work in a script I shall mantain it. You can see this component here https://gitlab.com/kabronsete/mycipher ================================================== There is a third component is a gambas component that manage a complete message digest. It is written in gambas. It doesn't need public interfaces. It can work in a script It is an openssl front-end. It works with all message digest algrithms available in openssl. I shall mantain it. You can see it here https://gitlab.com/kabronsete/mydigest What you think will be right. Thank you for your time El mar, 31 ago 2021 a las 20:21, Beno?t Minisini (<g4mba5 at gmail.com>) escribi?: > Le 31/08/2021 ? 19:59, Carlos Kabronsete a ?crit : > > I wrote two components. The first one is a new functionality and the > > second one is an enhancement to an existing component > > How to do it? > > > > > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > > > > Please give more details about what you did: > > - What do these components? > - Is it written in Gambas or in C or in C++? > - What are the dependencies? > - What are the public interfaces? They must match the naming convention > and the structure of the other components as much as possible. > - Will you maintain it? It means fixing bugs and maintaining > backward-compatibility. > > Thanks! > > -- > Beno?t Minisini > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]---- > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210831/8d18d487/attachment.htm> From tobs at taboege.de Tue Aug 31 22:09:56 2021 From: tobs at taboege.de (Tobias Boege) Date: Tue, 31 Aug 2021 22:09:56 +0200 Subject: [Gambas-user] How to offer a new component to gambas? In-Reply-To: <CAPtuRj+YNXSPqF9T0OMpBab7WppTRAm0qpyq+VEq9kApmDh8ZA@mail.gmail.com> References: <CAPtuRjKZ=KTj2h9bJXgr3PVp1vQh5f7G63FrvrLUxkxTJu29Ug@mail.gmail.com> <a03c3cd6-d57b-b35c-95cb-2e54053cf2b3@gmail.com> <CAPtuRj+YNXSPqF9T0OMpBab7WppTRAm0qpyq+VEq9kApmDh8ZA@mail.gmail.com> Message-ID: <20210831200956.GD3551052@highrise.localdomain> On Tue, 31 Aug 2021, Carlos Kabronsete wrote: > - * Create complete PKI structures, Root CA, intermediateCA, > CrlDistributionPoint, Alternativenames, etc. > - * Manage X509 certificates. Client & Server certificates, ocsp, > codesigning, timestamp, S/mime. > - * Manage Pkcs12 certificates. > - * Manage private keys RSA, DSA, ECDH, ECDSA, X25519, ED449. > - * SSL/TLS client test. > - * Timestamps request, generation and verification. > ================================================= > The second component is a gambas component that encrypts and decrypts files > or variables on the fly. > ================================================== > There is a third component is a gambas component that manage a complete > message digest. It sounds to me as if all that functionality should be available from gb.openssl (especially if you use precisely OpenSSL to implement it). Now, of course the problem is that gb.openssl is written in C, not in Gambas, so the barrier for you to contribute to it is higher, and in its current state gb.openssl does not yet provide even the primitives which you need to reimplement your components on top of it. Still, I think gb.openssl would be the right place for all of it. Especially because your components currently use Exec on the openssl binary all the time, when in an ideal world they would access the openssl library directly. It would be really nice to have someone take over development of gb.openssl. There are so many things missing, as your components exemplify (although ciphers _are_ implemented). I don't have time to do it and probably lack the best-practices knowledge in crypto- graphy anyway. Best, Tobias -- "There's an old saying: Don't change anything... ever!" -- Mr. Monk