Fauxdacious(tm) Media Player for Linux (and Windows) Released

I’m pleased to announce the release of Fauxdacious(tm) Media Player, v.3.9-beta1!   Fauxdacious is my FORK of “Audacious“.   The reason for this fork was that I’ve accumulated numerous changes (hacks) that I’ve made over the years to Audacious.   I’ve also added some big new features, namely video-playing capability and a shiny new DVD-player plugin!  While I’ve submitted the patches of most of my enhancements to the Audacious team for mainline inclusion, they’ve rejected most and completely redid one in a way that I felt limited it’s usefulness.   The final straw came when I rewrote their FFMpeg plugin to support an option to display the video portion of media that contains video and they rejected it out of hand.   I was initially pretty perturbed with them because I believe this enhancement is a very useful addition and I started to get the impression that they really aren’t interested in code contributions from outside parties and started to write a rather angry screed here to my dear readers, but after further contemplation, I have concluded that it’s not warranted nor helpful to anyone.
I think the problem is that Audacious is a very mature (and very good, I might add) software project and therefore they are more limited in what they can and should change, and that their perceived “not invented here” attitude may be necessary at this point to maintain it’s integrity.   By forking, I can be more open to new ideas and features, which can potentially take it in new directions.  It should be remembered that Audacious itself was originally a fork of the now defunct XMMS media player!   I plan to continue offering further patches and changes I make to Fauxdacious available to the Audacious team for their consideration, but will no longer be concerned about whether they choose to include them.   I can also therefore be more open to new patches offered by others, which the Audacious team may reject, as well as cherry-picking new bugfixes, upgrades, and features that they include into their future releases.
Please be advised that though I’ve been a computer programmer for over thirty years, my C++ skills are somewhat limited and Audacious is huge and very complex, so my ability to support and fix bugs is somewhat limited (but I’m getting better at it)!   Therefore, if you have an issue with Fauxdacious, your best bet would be to first check their forums, then try real Audacious.   You need to determine if it fails there also, or if the issue only affects Fauxdacious!   If Audacious replicates the bug, then report it there, but if not, then notify me (as it is then an issue with my Fauxdacious patches), and I need to fix it!   Please DO NOT file bugs with Audacious regarding this project unless you can replicate it there without notifying me first!   This will be non-trivial, since it is somewhat challenging to install both Fauxdacious and Audacious on the same system at the same time.   By installing one, you can overwrite parts of the other unless you are very careful, but you should still be able to switch between the two!
Fauxdacious Features not currently found in Audacious:
1)   A “DVD-player” plugin for playing DVDs (video, audio & menus) (Now for both Linux/Unix and Windows, may work on Mac too, but I can’t test)!
2)   A “visualization” option for displaying the video of ffmpeg files and streams that contain a video stream in a popup window.   Since Audacious already has “visualization” plugins that pop up a separate window to display stuff like fractals, equalizer graphs, etc. that are tied to what’s playing, my original idea was to create a “visualization” plugin that would display the actual video part of the stream, if it contained one.   I ended up rewriting their “FFaudio” plugin to add options for handling video and, so far, it handles any video stream that ffmpeg / ffplay can play! (See my previous post for history / details on how it works)  Screenshot below with my new “Lavadacious” skin (included):
3)  Restoration of XMMS’s “auto-preset” feature that permits creation of song/stream specific equalizer settings.  In the equalizer window (when using the WinAmp Skin interface, the [Auto] and [Preset] buttons now work again)!  When you “Export” a “Preset” file, the window pops up with the name of the currently-playing song displayed as the default file name and the default directory is the Audacious config directory.  If you save your preset file there under that name and you turn the [Auto] button on, and restart the song, Fauxdacious will load the matching preset file from there for that song/stream while it is playing, then restore the default equalizer presets when advancing to another song.  The [Preset] button also lights up if Fauxdacious is currently using a song/stream specific preset.  NOTE:  The Audacious team is currently working on a similar capability at my request, and I am likely to replace this with theirs when they do!
4)   The ability to toggle the recently-added Audacious record / dub option via it’s “audtool” DBus-based command-line tool permitting creation of quicker one-button desktop launcher activation, or even script activation of dubbing, ie. using Cron to record your favorite late-night radio show!  NOTE:  The Audacious team has merged this patch in their latest GIT at my request!
5)   Filewriter option to automatically deactivate equalizer and all effects plugins when recording so they’re not doubled down on during playback.   NOTE:  This has been replaced (in Fauxdacious v. 3.7-beta2) with the Audacious team’s latest GIT patch (after my request) which is better!
6)   Option to divert audio output to stdout in the user’s choice of selected audio formats for further processing by another program.   This is a rejected feature added to Audacious’s “FileWriter” plugin.   The idea here is to be able to use Fauxdacious as an audio component in pipes.  It also permits continuous recording across multiple files / tracks into a single stream.
7)   (UPDATE:  as of v3.83-beta3, we now support Audacious’s way of doing this (in addition to our prev. way), removing many of our code changes!)  Better (imho) stdin input (for streaming) of most formats as well as playlists.   Again this is for using Fauxdacious as a component in pipes.   Audacious actually implemented this at my urging a while back, but my rejected patch not only permits streaming media through stdin, but also lists of media files to process via simple ls commands, etc.  ie. generated by a script, etc.   Audacious now supports this via a slightly more complicated syntax, however.  For a simple example:
ls ~/Music/*Swift*.mp3 | fauxdacious -Dc -.txt
8)   New option (-P) to use the Pause button to simply mute (ie. commercials) while stream continues to play (silently), allowing you to listen to something else in another instance (see feature 10 below).   I often keep two instances open while listening to online commercial radio streams (which are in commercial for nearly half the time anyway with typically 5-6 minute breaks).   I have the other instance playing my own (legally) downloaded music without the Pause-Mute option, and with one button-click, can switch to and resume my music where it left off while the commercials (in the first instance) blather on (muted) to the bit bucket! 😀   Otherwise, one must either pause the radio stream, and resume where it left off (at the beginning of the commercial break) or mute the system’s speakers preventing the playing of anything else!
9)   Command line option “-D” – Delete all playlists.  Audacious added multiple playlists via tabs in their GTK/Qt interfaces which is quite nice, but I could never get used to it as I only use the classic WinAmp skin interface, which only supports (displays) a single playlist.   When starting Audacious with a new file or list of files, by default, it creates a new playlist, leaving all the others intact and invisible to you, which becomes annoying.   By starting Fauxdacious with “-D”, any existing playlists are deleted for you.   A second new option “-c” clears all entries from the current playlist.   by starting up with “-Dc”, you are guaranteed to start up with a clean slate containing only items listed as arguments.   If you start it with no arguments, you start up with a clean, empty playlist!
10)   New “-z” option to start up without the equalizer on.
11)   New “-#” / “-n” / –new=<instance-name> options to activate a new “instance” of Fauxdacious by specifying an alternate config directory name (~/.config/audacious_<instance-name>/).   I use this, as described in the script below with two separate instances of Fauxdacious running at the same time with different playlists (and / or different configurations).   The default config directory is named “audacious” (~/.config/audacious/).   a new, separate “instance” is specified by “–new=newconfig” where “newconfig” is the name of a different config directory (can be a copy).   This “instance-name” can then be used in the “audtool” command to specify which instance of Fauxdacious to manipulate!  If just -n is given, just a new instance is created, but the default config file is used and it can not be manipulated with audtool.  The default instance name is “audacious” (not “fauxdacious”) with nothing appended to the end of it.  -# works just like Audacious instances, except the config. directory is “audacious_#” instead of “audacious-#”.
Here’s my script for toggling between music and radio (and adjust the volume difference between the radio and my music) in two separate instances of Fauxdacious (the 2nd called “radio”) activated by a desktop launcher button:
audStatus=`cat /tmp/audstatus`
if [ "X$audStatus" = "X1" ]; then
     audtool instance radio playback-pause set-volume -12
     audtool playback-play
     echo "2" >/tmp/audstatus
     audtool playback-stop
     audtool instance radio playback-play set-volume +12
     echo "1" >/tmp/audstatus
12)  Additional skins, namely my very own “Lavadacious”, which I designed to match the violet “Lavafox” theme I use in Firefox and in my current desktop theme.  There is also a “DefaultRed” skin based on the Audacious “Default” skin, and additional flavors of the “Refugee” skin.
13)  Ability to play Youtube and Vimeo videos using (an included) Perl “helper” script (FauxdaciousUrlHelper.pl) in the contrib/ directory for prefetching the video title and extracting and adding the hidden “live-stream” to the playlist in lieu of the Youtube url.  You need to copy FauxdaciousUrlHelper.pl from the contrib directory to somewhere in your executable path, like /usr/local/bin/ (Linux/Unix users – the install script takes care of this for Windows users!) AND add the new config option:  [audacious].url_helper=FauxdaciousUrlHelper.pl and [audacious].user_tag_data=TRUE to your config file (~/.config/audacious[_instancename]/config or C:\Users\<username>\AppData\Local\audacious[_instancename]\config).  M$-Windows users will also probably need to add a new [neon] section and [neon].ignore_ssl_certs=TRUE as well.  This helper also replaces and obsoletes the previous “getTuneinStream.pl” helper script as well as the “youtube-dl” transport plugin!  You can also edit this script to handle other weird stream urls that need modification, if you can get around in Perl scripting!
14)  Ability to play most Tunein.com and IHeart.com radio stations (that contain an actual live stream; with Perl and the new (provided) FauxdaciousUrlHelper.pl url-helper script mentioned in the previous paragraph.
15)  Ability to save tag metadata (title, artist, etc.) to files in media formats that don’t support tags, as well as streams (URLs) by adding the option: [audacious].user_tag_data=TRUE to your config file.  Such metadata will be stored in a text file (user_tag_data) in your audacious config directory.  Leveraging this option, you can now download your favorate CD and DVD cover images and use them for cover art when playing your Audio CDs and DVDs with Fauxdacious!  Now with version 3.9, we’ve added the ability to create custom tag files for specific directories and audio CDs (ie. user-created “mash CDs” for which the metadata is not seekable on the disk or the internet!)
The Audacious team leader told me that it was not worth my effort (or theirs) to add video capability to Audacious since there are many excellent video players out there, but I disagree.   Sure, there are (I like VLC and Mplayer myself), but I really prefer the Audacious interface, and I’m spoiled used to it!   I also like to use Audacious’s sound-enhancing effects plugins while listening to audio or video! I admit that I probably use my audio player a bit differently than most.   I’m sort of a Linux command-line and scripting kinda guy and that’s what most of these hacks are for.   If you are too and / or like being able to watch videos while using Audacious’s wonderful audio-enhancing plugins, features, and beautiful classic WinAmp skins, then Fauxdacious is definitely for you!
Ok, so how do you get Fauxdacious?!
DISCLAIMER:   First of all, before downloading and installing Fauxdacious, please be aware that I consider this “beta”-quality software and therefore likely to contain a few bugs.   Therefore, I provide you this software “as-is” and I assume no liability for any damages resulting from it’s installation and use.   By using this software, you acknowledge that you are assuming all risk of any damages or injury that may result from such use!
NOTE:   If you are using M$-Windows, SKIP all this below and simply download, unzip, and run the Windows self-installing binary which you can download directly here! or read more about it first here!
1)   Uninstall libaudcore, audacious, and audacious-plugins from your system (if you are currently using Audacious).   This shouldn’t remove your Audacious configurations, but you should copy your ~/.config/audacious/* files somewhere else first, just in case something goes wrong!
2)   If you already have a fairly up-to-date version of Audacious running, you probably already have the dependencies installed.  If not, here’s a list.  Note, most of these aren’t required to actually get Fauxdacious (or Audacious) to run, but many are needed for particular plugins in order to process different types of media.
Depends: libasound2
Depends: libatk1.0-0
Depends: libaudcore3
Depends: libavcodec56
Depends: libavformat56
Depends: libavutil54
Depends: libbs2b0
Depends: libc6
Depends: libcairo2
Depends: libcddb2
Depends: libcdio-cdda1
Depends: libcdio13
Depends: libcue1
Depends: libcurl3-gnutls
Depends: libdbus-1-3
Depends: libdbus-glib-1-2
Depends: libfaad2
Depends: libflac8
Depends: libfluidsynth1
Depends: libfontconfig1
Depends: libfreetype6
Depends: libgcc1
Depends: libgdk-pixbuf2.0-0
Depends: libgl1-mesa-glx
Depends: libgl1-mesa-glx
Depends: libglib2.0-0
Depends: libgtk2.0-0
Depends: libjack-jackd2-0
Depends: libjack-jackd2-0 libjack0
Depends: liblircclient0
Depends: libmms0
Depends: libmodplug1
Depends: libmp3lame0
Depends: libmpg123-0
Depends: libneon27-gnutls
Depends: libnotify4
Depends: libogg0
Depends: libpango-1.0-0
Depends: libpangocairo-1.0-0
Depends: libpangoft2-1.0-0
Depends: libpulse0
Depends: libsamplerate0
Depends: libsdl2-2.0-0
Depends: libsidplayfp4
Depends: libsndfile1
Depends: libsndio6.0
Depends: libsoxr0
Depends: libstdc++6
Depends: libvorbis0a
Depends: libvorbisenc2
Depends: libvorbisfile3
Depends: libwavpack1
Depends: libx11-6
Depends: libxcomposite1
Depends: libxml2
Depends: libxrender1
Depends: libdvdread
Depends: libdvdnav
Depends: zlib1g
3)   Download both Fauxdacious and the Fauxdacious Plugins tarballs from these respective links.
As of 3/7/2017, you can also now download the bleeding-edge latest source code for both from my official Github site as well!
4)   Untar each.   Switch to the newly-created subdirectory (./fauxdacious-3.7/ for the first).  If you are running a pretty modern Debian-based Linux distro, you can probably simply open a terminal and do:
sudo make install
cd /usr/local/bin
sudo ln -s audacious fauxdacious
5)   If this does not work for you, you’ll need to compile from scratch.  This will involve installing the development versions of several of these libraries.  Here’s a list from the Audacious team and this command will install them for you on a Debian-based system:
sudo apt-get install git automake build-essential libasound2-dev \
libavformat-dev libbinio-dev libbs2b-dev libcddb2-dev libcdio-cdda-dev \
libcue-dev libcurl4-gnutls-dev libdbus-glib-1-dev libfaad-dev libflac-dev \
libfluidsynth-dev libgl1-mesa-dev libgtk2.0-dev libguess-dev \
libjack-jackd2-dev liblircclient-dev libmms-dev libmodplug-dev libmp3lame-dev \
libmpg123-dev libneon27-gnutls-dev libnotify-dev libpulse-dev \
libsamplerate0-dev libsdl2-dev libsidplayfp-dev libsndfile1-dev libsoxr-dev \
libvorbis-dev libwavpack-dev libxml2-dev libsndio-dev libswscale-dev libdvdread-dev libdvdnav-dev
6)   Repeat step 4 for the fauxdacious-plugins-3.7.tgz tarball by untarring and switching to the fauxdacious-plugins-3.7/ and try the “sudo make install” command there.
7)   After completing the installation of both tarballs, you should then do:
cd /usr/local/bin
sudo ln -s audacious fauxdacious
If all this fails and / or you wish to go back to Audacious, simply switch back into fauxdacious-plugins-3.7/ and do a “make distclean” command, then do the same in fauxdacious-3.7/ and do the same thing, then reinstall your Audacious packages.  (libaudcore, audacious, and audacious-plugins) and you should be back to normal.
8)   To enable video play either go to [Settings].[Plugins].[Input] tab.[FFmpeg Plugin].[Settings] and check the “Play video stream…” box; or edit your “~/.config/audacious/config” file and add the following lines:  (You can change “Fauxdacious Video” to whatever title you would like to appear above the video window).  If you also use the Afterstep windowmanager (as I do), you may want to add the line “afterstep=TRUE” under the “[skins]” section!
video_windowtitle=Fauxdacious Video
TO DO:   Create Debian, etc. installable “packages” for Linux.  I still need to fix an annoying error msg. popup that occasionally comes up saying it can’t find a (should’ve been deleted) playlist.   Right now, it works fine in spite of this.  (FIXED in v3.71beta2)   Next step is to eventually figure out how to “package” all this up into Debian “packages” for simpler installation!   Another thing is including the QT interface (right now I use the WinAmp skins interface and built it with the GTK interface, but not the QT stuff.   (DONE!)  I also could use someone with Windows and a good C++ compiler to build a Windows binary version (Audacious has one).  This is something I’m completely clueless about though!  (DONE!)


  1. Posted December 13, 2015 at 9:34 pm | Permalink | Reply

    ” … but my rejected patches not only permit streaming media through stdin, but also lists of media files to process, ie. generated by a script, etc. which they do not support.”

    I thought we discussed this already[1] and decided it was already possible with a bit of shell syntax, therefore the patch wasn’t necessary? I gave one example of how to do it with backwards quotes (“). If you don’t like that syntax, another way to do it is with xargs; for example: echo test.m3u | xargs audacious

    If you still think this patch is necessary in spite of the above solutions, I’d be interested to hear why.

    [1] http://redmine.audacious-media-player.org/issues/514#note-12

    • Posted December 13, 2015 at 9:38 pm | Permalink | Reply

      Correction, that should be: cat test.m3u | xargs audacious

      • Posted May 25, 2017 at 6:34 pm | Permalink

        I finally REMOVED my plugin changes and merged in yours (but had to add one to m3u for relative paths), while maintaining most backward-compatability! (relevant changenotes):

        * Merged (mostly) our stdin streaming feature with that of Audacious for compatability. Our implementation of this feature predates Audacious’s and required specifying the file extension (ex. as “stdin://-.mp3” for mp3) but theirs does not (“-“)! Since they now support stdin piping, including seekability via buffering during probing, I’ve now REMOVED my (now ancient) “hacks” to the sndfile, vorbis, and gio plugins previously needed to support stdin streaming without seeking, and remerged their latest versions of these plugins (less maintenance for me – yay)!  (commit #8524685, and plugin commits # 7b0be4f, 9d4cfa3, 240e090 and 2ba6b75).

        With Fauxdacious, one can still include the extension (the old Fauxdacious way) and save the overhead of probing all the plugins, however, the extension is still REQUIRED for non-“Input” plugins such as cue-sheets (“-.cue”) and playlist files (“-.pls”, etc.), as these do not “probe” to determine what’s being piped in!

        Also removed the added Fauxdacious requirement of specifying “stdin://-” (instead of just “-“), though the old way is still acceptable. NOTE: This did result in one minor regression: when piping a simple line-separated list of items to play (ie. “ls *.mp3 | fauxdacious -“), one must now specify either “-.txt”, “-.ls” or “-.m3u” (doesn’t matter which) instead of just “-” as I’ve removed the old code in main() that specially handled this and now use the standard m3u playlist plugin for this.

    • Posted December 13, 2015 at 10:59 pm | Permalink | Reply

      How’d you stumble upon my blog? Cool beans, glad you did though! I do remember you giving me an example but not the syntax. Guess I had already done it this way awhile back (long b4 I had suggested it to you) and happen to just like it this way, and am not asking you to implement it this way now. I’d pbly have to undo some other stuff to undo it (as I think there’s a few places that still need the “-.” created b4 you added the recent buffering stuff). I’ll correct the misstatement that Audacious does not support playlist-by-stdin. Consider this fork a complement and a tribute to Audacious – If I didn’t really like Audacious and use it constantly, I’d never bothered to do any of this! Feel free to comment anytime though and keep up the great work w/Audacious! Do you have a blog, I’d love to check it out!


      • Posted December 14, 2015 at 12:38 am | Permalink

        It’s always cool to see people getting creative and finding new ways to improve a piece of software. And I feel like I owe you an apology if it seemed like I was rejecting patches out of hand. The video playback feature is something I had already considered in the past, and while it’s fascinating as a proof of concept, I simply don’t think we have the manpower as a project to maintain it. I’m glad it works for you.

        In the way of history, Audacious was never really a fork of XMMS, just a renaming. That is to say, there was never a more conservative or “stable” branch of XMMS being maintained in parallel. Basically what happened was, the original XMMS codebase was so awful that around 2002 some of its developers decided to scrap it and start work on a totally new player, but reuse the same name (resulting in XMMS2, now defunct). Those who favored the more conservative approach of keeping the old code around, while cleaning it up bit by bit, had to find a new name and so Beep Media Player was born. Fast forward to 2005, and the same story happened a second time–the Beep Media Player name was to be reused for *another* new player called BMPx (which never really got off the ground), and the old code got renamed to Audacious.

        All that to say that, somehow or other, I’ve ended up with the job of maintaining a relatively successful, 18-year-old piece of software that’s outlived multiple would-be replacements. So, as you’ve noticed, I may be a bit biased against major changes. The development team has also shrunk in recent years, and the most recent big change we’ve taken on–the Qt port–is proceeding rather slowly as a result. But I’m definitely not against *all* change. 🙂 Eventually, I’d like to see many of the improvements you’ve made here make their way back into mainline Audacious. It’s been fun sharing thoughts with you on how to get the auto-preset thing right. A more convenient “mute” feature and support for multiple instances would also be great to have.

        Sorry to write a blog-post-in-a-comment here. (No, I don’t have a blog of my own; maybe I should …) And thanks for encouraging me to keep working on Audacious. I do appreciate all the patches, even the ones I don’t want to merge as-is. Looking forward to more discussions with you.


  2. Posted March 18, 2016 at 9:27 am | Permalink | Reply

    Thanks for the post at antix.freeforums.org. I still just use xmms and smtube. But I am going to come back here and read up on your neat trick after manual labor outside.

  3. Posted November 16, 2016 at 5:04 pm | Permalink | Reply

    Fauxdacious version 3.8-final is now officially released, see “UPDATE” paragraphs in the above post for changes / fixes / new features!

    • Posted May 31, 2017 at 12:43 pm | Permalink | Reply

      Honestly I don't think is necessarily a good thing. On slower machines, flash widgets slow page loading to a crawl – the size of the flash widget matters, Youtube should strive to be as accessible as possible.Granted the site require flash, but I mean in terms of resolutions – someone at 640×480 would have a hard time navigating the site especially with the enlarged player. Yes I know 640×480 isn't exactly the most popular resolution, but there are still users set at those specs, so I don't think it's crazy to cater to them as well.

    • Posted June 27, 2017 at 6:58 am | Permalink | Reply

      That’s really thinking at a high level

    • Posted August 29, 2017 at 7:42 pm | Permalink | Reply

      I recently wore my anniversary-and-weddings-only expensive beaded cardigan to work and was pleasantly surprised how much it enjoyed its office outing.But I definitely need to give some more thought to mixing things up this way!

    • Posted January 12, 2018 at 2:20 am | Permalink | Reply

      Yeah, that’s the one. I can’t believe I couldn’t remember the name! It worked great for me, but it was a bit “resource-hungry” for my little netbook – that’s the only reason why I switched to Panda Cloud.

    • Posted January 12, 2018 at 2:32 am | Permalink | Reply

      Don’t worry, your readers will still be here after your pause, even if it’s a few weeks (or even months). If there’s one thing I’ve learned from taking many blog breaks, it’s that people give you a fair bit of time before removing you from their RSS feeds!

  4. Posted April 15, 2017 at 5:14 am | Permalink | Reply

    Great post, I am going to spend much more time researching this
    subject matter.

  5. Posted January 2, 2018 at 6:19 pm | Permalink | Reply

    Sua atuação é vetada com uso regular dos ômegas. http://setmyclock.com/info.php?a%5B%5D=dreamcaps%20injetavel%2C%20%3Ca%20href%3Dhttp%3A%2F%2Ffloresecores-silvana.blogspot.com%2F2012%2F02%2F%3Efloresecores-silvana.blogspot.com%3C%2Fa%3E%2C

8 Trackbacks

  1. […] doesn’t do), and can adapt it over time to meet changing requirements.  I did not write Fauxdacious, but over the years, I have hacked my favorate all-purpouse audio media player (Audacious) to work […]

  2. […] happy to announce my latest release of the Fauxdacious Media Player (version 3.7-beta1) with a full-functioning Windows version complete and bundled with a simple to […]

  3. […] Version 3.82-beta2 Released for Linux and […]

  4. […] Version 3.82-final Released for Linux and […]

  5. […] Version 3.83-beta1 Released for Linux and […]

  6. […] Fauxdacious Version 3.83-beta2 Released for Linux:  […]

  7. […] Fauxdacious Version 3.83-beta3 Released for Linux:  […]

  8. […] Version 3.83-final Released for Linux and […]

Feel Free to Comment (Name/Email/Website optional):

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: