Compare commits

..

No commits in common. "9bee4d613d0a25237b6b1735edaea8f735978ab8" and "9463b292c8ce22be299a1d49c062056bdceb86ec" have entirely different histories.

14 changed files with 88 additions and 634 deletions

View File

@ -1,6 +1,3 @@
! Cursor
Xcursor.theme: Neutral
! Xft settings ---------------------------------------------------------------
Xft.dpi: 95

View File

@ -35,7 +35,7 @@ done
"$XDG_CONFIG_HOME/bspwm/rules"
# start some services
services=( sxhkd dunst ssh-agent ufwd{,-private,-scn,-fikus} syncthing mpd )
services=( sxhkd dunst ssh-agent ufwd{,-private,-scn,-fikus} )
for s in "${services[@]}"; do
if ! service "$s" status; then
service "$s" start

View File

@ -7,6 +7,5 @@ while read -r rule _; do bspc rule -r "$rule"; done < <(bspc rule -l)
bspc rule -a 'firefox' desktop=^2 state=tiled
bspc rule -a 'steam_app_359320' desktop=^5
bspc rule -a 'steam_app_397540' desktop=^5
bspc rule -a 'steam_proton' desktop=^5
bspc rule -a 'Steam' desktop=^8
bspc rule -a '*' state=floating

View File

@ -49,14 +49,16 @@ super + l; l
super + l; {u,s}
ssm lockd stop
# Screenshots
# simple hotkeys
Print
snap -f
shift + Print
snap
# Simple
control + Print
maim -s | xclip -selection clipboard -t image/png
super + {r,p,e,n}
dmenu-extras -l 9 {run,pass,emoji,note}
@ -82,10 +84,6 @@ shift + {XF86Tools,XF86Launch5,XF86Launch6,XF86Launch7}
control + {XF86Tools,XF86Launch5,XF86Launch6,XF86Launch7}
~/bin/sndbrd-macro -p {8,9,10,11}
# Music
super + m; {t, s, n, p}
mpc {toggle, stop, next, prev}
# Dunst
super + d; {space,c,h}
dunstctl {close-all,context,history-pop}
@ -95,5 +93,5 @@ super + s; m
pactl set-source-mute jack_in toggle
# Fucking Firefox man
#control + q
# /bin/true
control + q
/bin/true

View File

@ -42,11 +42,10 @@ panels:
-h
-p
date:
format: '%A, %Y.%m.%d %H:%M:%S MSK'
offset: '+03:00'
format: '%A, %Y.%m.%d %H:%M:%S'
la:
warn_value: 14
crit_value: 16
warn_value: 3
crit_value: 4
www:
hosts:
- de-ber-as20647.anchors.atlas.ripe.net
@ -55,10 +54,12 @@ panels:
warp:
hosts:
- malganis.priv
- builder.priv
- spike.priv
- builder.virt
xnt:
hosts:
- access1.infra.erty.sh
- brilliant.zorg.sh
- ruby.zorg.sh
- access33.eprod.zorg.sh
- access31.sprod.zorg.sh
memory:

View File

@ -2,7 +2,7 @@
# vim: ft=sh
service_respawn = always
service_command = "$HOME/bin/lockd" i3lock-extra -s -o ~/pics/lock.png -p -- -e -f
service_command = "$HOME/bin/lockd" i3lock-extra -s -o ~/pics/lock.png -p -g -- -e -f
function pre_start {
notify-send 'ssm' "Starting $service_name; press again to lock."

View File

@ -1,3 +1,4 @@
#!/usr/bin/env ssm
#!/usr/bin/env watchman
service_command = /usr/bin/ssh-agent -d -a "/run/user/$UID/ssh-auth.sock"
service_command='/usr/bin/ssh-agent'
service_args=( -d -a "/run/user/$UID/ssh-auth.sock" )

View File

@ -1,12 +0,0 @@
#!/usr/bin/env ssm
service_tmpfiles=( "$XDG_RUNTIME_DIR/ufwd-fikus-scn:dir" )
#service_respawn='true'
dirs+=( "$XDG_RUNTIME_DIR/ufwd-fikus-scn" )
service_command = /usr/bin/ufwd -n -c \
$(printf -- '-d %s ' "${dirs[@]}") \
-- -R -t 'screenshot' -A "Screenshots%3B%20$(date +%Y.%m.%d)"
service_cgroup_cleanup = 1

View File

@ -1,4 +1,4 @@
#!/usr/bin/env ssm
#!/usr/bin/env watchman
service_tmpfiles=( "$XDG_RUNTIME_DIR/ufwd-private:dir" )

View File

@ -1,4 +1,4 @@
#!/usr/bin/env ssm
#!/usr/bin/env watchman
service_tmpfiles=( "$XDG_RUNTIME_DIR/scn:dir" )
@ -6,8 +6,8 @@ service_tmpfiles=( "$XDG_RUNTIME_DIR/scn:dir" )
dirs=( $(find /home/fbt/.local/share/Steam/userdata/22500463/760/remote -name 'screenshots') )
dirs+=( "$XDG_RUNTIME_DIR/scn" )
service_command = /usr/bin/ufwd -n -c \
service_command = /usr/bin/ufwd -c \
$(printf -- '-d %s ' "${dirs[@]}") \
-- -R -t 'screenshot' -A "Screenshots; $(date +%Y.%m.%d)"
-- -R -t 'screenshot' -A "Screenshots%3B%20$(date +%Y.%m.%d)"
service_cgroup_cleanup = 1

View File

@ -26,7 +26,7 @@
#service_stop_signal = 15
# Enable cgroup-related functions
#cgroups = 1
cgroups = 1
# Refuse to start the service if its cgroup is not empty
service_cgroup_exclusive = 1

View File

@ -44,8 +44,7 @@ set_misc_path \
"$HOME/games/bin" \
"$HOME/.local/bin" \
"$HOME/.nails/bin" \
"$HOME/.winepx/bin" \
"$HOME/.rvm/bin"
"$HOME/.winepx/bin"
# GPG
GPG_TTY=$(tty)

View File

@ -44,14 +44,12 @@ if [[ -f "$HOME/wallpaper.png" ]]; then
fi
# Input settings
setxkbmap -layout "us,ru" \
-option "lv3:menu_switch,grp:caps_toggle,grp_led:caps,compose:ralt,terminate:ctrl_alt_bksp"
setxkbmap -layout "ducky-mini(us),ducky-mini(ru)" \
-option "lv3:menu_switch,grp:caps_toggle,grp_led:caps,compose:ralt,terminate:ctrl_alt_bksp"
xmodmap -e 'remove lock = Caps_Lock' \
-e 'keycode 135 = KP_Insert' \
-e 'keycode 49 = Escape asciitilde' \
-e "pointer = 3 2 1"
xinput --set-prop 22 'libinput Accel Speed' -0.92
#xinput set-button-map 17 3 2 1 4 5 6 7 8 9
-e 'keycode 49 = Escape asciitilde'
#xmodmap -e "pointer = 3 2 1"
# Start a dbus session
if ! [[ "$DBUS_SESSION_BUS_ADDRESS" ]]; then
@ -64,8 +62,8 @@ export VDPAU_NVIDIA_NO_OVERLAY=1
nvidia-settings -l
nvidia-settings -a InitialPixmapPlacement=2
# Warmer colours
xsct 4500
# Colour temp
xsct 6000
# Custom functions
services() {

View File

@ -1,206 +1,4 @@
##############################################################
## This is an example configuration file. Copy it to ##
## $XDG_CONFIG_HOME/ncmpcpp/config or $HOME/.ncmpcpp/config ##
## and set up your preferences. ##
##############################################################
#
##### directories ######
##
## Directory for storing ncmpcpp related files. Changing it is useful if you
## want to store everything somewhere else and provide command line setting for
## alternative location to config file which defines that while launching
## ncmpcpp.
##
#
#ncmpcpp_directory = ~/.config/ncmpcpp
#
##
## Directory for storing downloaded lyrics. It defaults to ~/.lyrics since other
## MPD clients (eg. ncmpc) also use that location.
##
#
#lyrics_directory = ~/.lyrics
#
##### connection settings #####
#
#mpd_host = localhost
#
#mpd_port = 6600
#
#mpd_connection_timeout = 5
#
## Needed for tag editor and file operations to work.
##
#mpd_music_dir = ~/music
#
#mpd_crossfade_time = 5
#
# Exclude pattern for random song action
# http://www.boost.org/doc/libs/1_46_1/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html
#random_exclude_pattern = "^(temp|midi_songs).*"
#
##### music visualizer #####
##
## In order to make music visualizer work with MPD you need to use the fifo
## output. Its format parameter has to be set to 44100:16:1 for mono
## visualization or 44100:16:2 for stereo visualization. As an example here is
## the relevant section for mpd.conf:
##
## audio_output {
## type "fifo"
## name "Visualizer feed"
## path "/tmp/mpd.fifo"
## format "44100:16:2"
## }
##
## If the visualization on occasion diverges from the audio output, please set
## 'buffer_time' parameter of your audio output in mpd.conf to '100000' (100ms)
## or less to prevent that from happening.
##
## Note: If you're using Mopidy, an address of a udpsink gstreamer's output is
## also accepted. For example, the following section in mopidy.conf:
##
## [audio]
## output = tee name=t ! queue ! autoaudiosink t.
## ! queue ! audio/x-raw,rate=44100,channels=2,format=S16LE
## ! udpsink host=localhost port=5555
##
## will make localhost:5555 available as a source of data for the stereo
## visualizer.
##
#
#visualizer_data_source = /tmp/mpd.fifo
#
##
## Note: Below parameter is needed for ncmpcpp to determine which output
## provides data for visualizer and reset it at the beginning of visualization
## to synchronize with audio.
##
#
#visualizer_output_name = Visualizer feed
#
##
## If you set format to 44100:16:2, make it 'yes'.
##
#visualizer_in_stereo = yes
#
##
## Note: set below to >=10 only if you have synchronization issues with
## visualization and audio.
##
#
#visualizer_sync_interval = 0
#
##
## Note: To enable spectrum frequency visualization you need to compile ncmpcpp
## with fftw3 support.
##
#
## Available values: spectrum, wave, wave_filled, ellipse.
##
#visualizer_type = spectrum
#
#visualizer_fps = 60
#
#visualizer_autoscale = no
#
#visualizer_look = ●▮
#
#visualizer_color = blue, cyan, green, yellow, magenta, red
#
## Alternative subset of 256 colors for terminals that support it.
##
#visualizer_color = 47, 83, 119, 155, 191, 227, 221, 215, 209, 203, 197, 161
#
##
## Note: The next few visualization options apply to the spectrum visualizer.
##
#
## Use unicode block characters for a smoother, more continuous look.
## This will override the visualizer_look option. With transparent terminals
## and visualizer_in_stereo set, artifacts may be visible on the bottom half of
## the visualization.
#
#visualizer_spectrum_smooth_look = yes
#
## A value between 1 and 5 inclusive. Specifying a larger value makes the
## visualizer look at a larger slice of time, which results in less jumpy
## visualizer output.
#
#visualizer_spectrum_dft_size = 2
#
#visualizer_spectrum_gain = 10
#
## Left-most frequency of visualizer in Hz, must be less than HZ MAX
#
#visualizer_spectrum_hz_min = 20
#
## Right-most frequency of visualizer in Hz, must be greater than HZ MIN
#
#visualizer_spectrum_hz_max = 20000
#
##### system encoding #####
##
## ncmpcpp should detect your charset encoding but if it failed to do so, you
## can specify charset encoding you are using here.
##
## Note: You can see whether your ncmpcpp build supports charset detection by
## checking output of `ncmpcpp --version`.
##
## Note: Since MPD uses UTF-8 by default, setting this option makes sense only
## if your encoding is different.
##
#
#system_encoding = ""
#
##### delays #####
#
## Time of inactivity (in seconds) after playlist highlighting will be disabled
## (0 = always on).
##
#playlist_disable_highlight_delay = 5
#
## Defines how long messages are supposed to be visible.
##
#message_delay_time = 5
#
##### song format #####
##
## For a song format you can use:
##
## %l - length
## %f - filename
## %D - directory
## %a - artist
## %A - album artist
## %t - title
## %b - album
## %y - date
## %n - track number (01/12 -> 01)
## %N - full track info (01/12 -> 01/12)
## %g - genre
## %c - composer
## %p - performer
## %d - disc
## %C - comment
## %P - priority
## $R - begin right alignment
##
## If you want to make sure that a part of the format is displayed only when
## certain tags are present, you can archieve it by grouping them with brackets,
## e.g. '{%a - %t}' will be evaluated to 'ARTIST - TITLE' if both tags are
## present or '' otherwise. It is also possible to define a list of
## alternatives by providing several groups and separating them with '|',
## e.g. '{%t}|{%f}' will be evaluated to 'TITLE' or 'FILENAME' if the former is
## not present.
##
## Note: If you want to set limit on maximal length of a tag, just put the
## appropriate number between % and character that defines tag type, e.g. to
## make album take max. 20 terminal cells, use '%20b'.
##
## In addition, formats support markers used for text attributes. They are
## followed by character '$'. After that you can put:
##
### Colours
## - 0 - default window color (discards all other colors)
## - 1 - black
## - 2 - red
@ -211,388 +9,63 @@
## - 7 - cyan
## - 8 - white
## - 9 - end of current color
## - b - bold text
## - u - underline text
## - r - reverse colors
## - a - use alternative character set
##
## If you don't want to use a non-color attribute anymore, just put it again,
## but this time insert character '/' between '$' and attribute character,
## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename with
## reversed colors.
##
## If you want to use 256 colors and/or background colors in formats (the naming
## scheme is described below in section about color definitions), it can be done
## with the syntax $(COLOR), e.g. to set the artist tag to one of the
## non-standard colors and make it have yellow background, you need to write
## $(197_yellow)%a$(end). Note that for standard colors this is interchangable
## with attributes listed above.
##
## Note: colors can be nested.
##
#
#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3%l$9}
#
#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f}
#
#song_library_format = {%n - }{%t}|{%f}
#
#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
#
#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
#
#current_item_prefix = $(yellow)$r
#
#current_item_suffix = $/r$(end)
#
#current_item_inactive_column_prefix = $(white)$r
#
#current_item_inactive_column_suffix = $/r$(end)
#
#now_playing_prefix = $b
#
#now_playing_suffix = $/b
#
#browser_playlist_prefix = "$2playlist$9 "
#
#selected_item_prefix = $6
#
#selected_item_suffix = $9
#
#modified_item_prefix = $3> $9
#
##
## Note: attributes are not supported for the following variables.
##
#song_window_title_format = {%a - }{%t}|{%f}
##
## Note: Below variables are used for sorting songs in browser. The sort mode
## determines how songs are sorted, and can be used in combination with a sort
## format to specify a custom sorting format. Available values for
## browser_sort_mode are "type", "name", "mtime", "format" and "none".
##
#
#browser_sort_mode = type
#
#browser_sort_format = {%a - }{%t}|{%f} {%l}
#
##### columns settings #####
##
## syntax of song columns list format is "column column etc."
##
## - syntax for each column is:
##
## (width of the column)[color of the column]{displayed tag}
##
## Note: Width is by default in %, if you want a column to have fixed size, add
## 'f' after the value, e.g. (10)[white]{a} will be the column that take 10% of
## screen (so the real width will depend on actual screen size), whereas
## (10f)[white]{a} will take 10 terminal cells, no matter how wide the screen
## is.
##
## - color is optional (if you want the default one, leave the field empty).
##
## Note: You can give a column additional attributes by putting appropriate
## character after displayed tag character. Available attributes are:
##
## - r - column will be right aligned
## - E - if tag is empty, empty tag marker won't be displayed
##
## You can also:
##
## - give a column custom name by putting it after attributes, separated with
## character ':', e.g. {lr:Length} gives you right aligned column of lengths
## named "Length".
##
## - define sequence of tags, that have to be displayed in case predecessor is
## empty in a way similar to the one in classic song format, i.e. using '|'
## character, e.g. {a|c|p:Owner} creates column named "Owner" that tries to
## display artist tag and then composer and performer if previous ones are not
## available.
##
#
#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l}
#
##### various settings #####
#
##
## Note: Custom command that will be executed each time song changes. Useful for
## notifications etc.
##
#execute_on_song_change = ""
#
##
## Note: Custom command that will be executed each time player state
## changes. The environment variable MPD_PLAYER_STATE is set to the current
## state (either unknown, play, pause, or stop) for its duration.
##
#
#execute_on_player_state_change = ""
#
#playlist_show_mpd_host = no
#
#playlist_show_remaining_time = no
#
#playlist_shorten_total_times = no
#
###
visualizer_in_stereo = yes
#visualizer_sample_multiplier = 1
#visualizer_sync_interval = 30
## Available values: spectrum, wave.
visualizer_type = spectrum
visualizer_look = ●▊
#song_columns_list_format = (20)[]{a} (50)[]{tr} (6f)[]{NE}
#song_columns_list_format = (7f)[]{NEr} (20)[]{a} (80)[white]{tr} (6f)[]{l}
# Playlist look
playlist_display_mode = "classic"
song_list_format = " {%a}|{%A} - %t "
now_playing_prefix = "$8"
now_playing_suffix = "$9"
selected_item_prefix = "$4"
selected_item_suffix = "$9"
#playlist_separate_albums = no
#
##
## Note: Possible display modes: classic, columns.
##
#playlist_display_mode = columns
#
#browser_display_mode = classic
#
#search_engine_display_mode = classic
#
#playlist_editor_display_mode = classic
#
#discard_colors_if_item_is_selected = yes
#
#show_duplicate_tags = yes
#
#incremental_seeking = yes
#
#seek_time = 1
#
#volume_change_step = 2
#
#autocenter_mode = no
#
#centered_cursor = no
#
##
## Note: You can specify third character which will be used to build 'empty'
## part of progressbar.
##
#progressbar_look = =>
#
## Available values: database, playlist.
##
#default_place_to_search_in = database
#
## Available values: classic, alternative.
##
user_interface = alternative
#
#data_fetching_delay = yes
#
## Available values: artist, album_artist, date, genre, composer, performer.
##
#media_library_primary_tag = artist
#
#media_library_albums_split_by_date = yes
#
#media_library_hide_album_dates = no
#
## Available values: wrapped, normal.
##
#default_find_mode = wrapped
#
#default_tag_editor_pattern = %n - %t
#
#header_visibility = yes
#
#statusbar_visibility = yes
#
## Show the "Connected to ..." message on startup
#connected_message_on_startup = yes
#
#titles_visibility = yes
#
#header_text_scrolling = yes
#
#cyclic_scrolling = no
#
#lyrics_fetchers = azlyrics, genius, musixmatch, sing365, metrolyrics, justsomelyrics, jahlyrics, plyrics, tekstowo, zeneszoveg, internet
#
#follow_now_playing_lyrics = no
#
#fetch_lyrics_for_current_song_in_background = no
#
#store_lyrics_in_song_dir = no
#
#generate_win32_compatible_filenames = yes
#
#allow_for_physical_item_deletion = no
#
##
## Note: If you set this variable, ncmpcpp will try to get info from last.fm in
## language you set and if it fails, it will fall back to english. Otherwise it
## will use english the first time.
##
## Note: Language has to be expressed as an ISO 639 alpha-2 code.
##
#lastfm_preferred_language = en
#
#space_add_mode = add_remove
#
#show_hidden_files_in_local_browser = no
#
##
## How shall screen switcher work?
##
## - "previous" - switch between the current and previous screen.
## - "screen1,...,screenN" - switch between given sequence of screens.
##
progressbar_look = "▰▱ "
#progressbar_boldness = yes
header_visibility = no
statusbar_visibility = yes
titles_visibility = no
## Screens available for use: help, playlist, browser, search_engine,
## media_library, playlist_editor, tag_editor, outputs, visualizer, clock,
## lyrics, last_fm.
##
#screen_switcher_mode = playlist, browser
#
##
## Note: You can define startup screen by choosing screen from the list above.
##
#startup_screen = playlist
#
##
## Note: You can define startup slave screen by choosing screen from the list
## above or an empty value for no slave screen.
##
#startup_slave_screen = ""
#
#startup_slave_screen_focus = no
#
##
## Default width of locked screen (in %). Acceptable values are from 20 to 80.
##
#
#locked_screen_width_part = 50
#
#ask_for_locked_screen_width_part = yes
#
#jump_to_now_playing_song_at_start = yes
#
#ask_before_clearing_playlists = yes
#
#clock_display_seconds = no
#
#display_volume_level = yes
#
#display_bitrate = no
#
#display_remaining_time = no
#
## Available values: none, basic, extended, perl.
##
#regular_expressions = perl
#
##
## Note: if below is enabled, ncmpcpp will ignore leading "The" word while
## sorting items in browser, tags in media library, etc.
##
#ignore_leading_the = no
#
##
## Note: if below is enabled, ncmpcpp will ignore diacritics while searching and
## filtering lists. This takes an effect only if boost was compiled with ICU
## support.
##
#ignore_diacritics = no
#
#block_search_constraints_change_if_items_found = yes
#
#mouse_support = yes
#
#mouse_list_scroll_whole_page = no
#
#lines_scrolled = 5
#
#empty_tag_marker = <empty>
#
#tags_separator = " | "
#
#tag_editor_extended_numeration = no
#
#media_library_sort_by_mtime = no
#
#enable_window_title = yes
#
##
## Note: You can choose default search mode for search engine. Available modes
## are:
##
## - 1 - use mpd built-in searching (no regexes, pattern matching)
##
## - 2 - use ncmpcpp searching (pattern matching with support for regexes, but
## if your mpd is on a remote machine, downloading big database to process
## it can take a while
##
## - 3 - match only exact values (this mode uses mpd function for searching in
## database and local one for searching in current playlist)
##
#
#search_engine_default_search_mode = 1
#
#external_editor = nano
#
## Note: set to yes if external editor is a console application.
##
#use_console_editor = yes
#
## media_library, playlist_editor, tag_editor, outputs, visualizer, clock.
startup_screen = playlist
mouse_support = no
external_editor = vim
use_console_editor = yes
##### colors definitions #####
##
## It is possible to set a background color by setting a color value
## "<foreground>_<background>", e.g. red_black will set foregound color to red
## and background color to black.
##
## In addition, for terminals that support 256 colors it is possible to set one
## of them by using a number in range [1, 256] instead of color name,
## e.g. numerical value corresponding to red_black is 2_1. To find out if the
## terminal supports 256 colors, run ncmpcpp and check out the bottom of the
## help screen for list of available colors and their numerical values.
##
## What is more, there are two special values for the background color:
## "transparent" and "current". The first one explicitly sets the background to
## be transparent, while the second one allows you to preserve current
## background color and change only the foreground one. It's used implicitly
## when background color is not specified.
##
## Moreover, it is possible to attach format information to selected color
## variables by appending to their end a colon followed by one or more format
## flags, e.g. black:b or red:ur. The following variables support this syntax:
## visualizer_color, color1, color2, empty_tag_color, volume_color,
## state_line_color, state_flags_color, progressbar_color,
## progressbar_elapsed_color, player_state_color, statusbar_time_color,
## alternative_ui_separator_color.
##
## Note: due to technical limitations of older ncurses version, if 256 colors
## are used there is a possibility that you'll be able to use only colors with
## transparent background.
#
#colors_enabled = yes
#
#empty_tag_color = cyan
#
#header_window_color = default
#
#volume_color = default
#
#state_line_color = default
#
#state_flags_color = default:b
#
#main_window_color = yellow
#
#color1 = white
#
#color2 = green
#
#progressbar_color = black:b
#
#progressbar_elapsed_color = green:b
#
#statusbar_color = default
#
#statusbar_time_color = default:b
#
#player_state_color = default:b
#
#alternative_ui_separator_color = black:b
#
#window_border_color = green
#
colors_enabled = yes
empty_tag_color = cyan
header_window_color = default
volume_color = default
state_line_color = default
state_flags_color = default
main_window_color = default
color1 = white
color2 = green
current_item_prefix = "$(white)$r"
current_item_suffix = "$/r$(end)"
progressbar_color = black
progressbar_elapsed_color = default
statusbar_color = default
alternative_ui_separator_color = black
#active_column_color = red
visualizer_color = blue
window_border_color = green
#active_window_border = red
#