summaryrefslogtreecommitdiff
path: root/hypr/hyprland.conf
diff options
context:
space:
mode:
Diffstat (limited to 'hypr/hyprland.conf')
-rw-r--r--hypr/hyprland.conf283
1 files changed, 142 insertions, 141 deletions
diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf
index e053008..cdcca3d 100644
--- a/hypr/hyprland.conf
+++ b/hypr/hyprland.conf
@@ -1,8 +1,6 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
#{{{ Monitor config
monitor = , preferred, auto, 1
-monitor = HDMI-A-1, 1920x1080@60, 0x0, 1
-monitor = DP-1, 1920x1080@60, 1920x0, 1
#}}}
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
@@ -10,16 +8,51 @@ monitor = DP-1, 1920x1080@60, 1920x0, 1
#{{{ Autostart
# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox
-exec-once = ~/.config/autostart.sh
-exec-once = /usr/lib/polkit-kde-authentication-agent-1
+exec-once = dinit
exec-once = xdph
exec-once = hyprpm reload -n
+#exec-once = hyprpaper
+#exec-once = hypridle
+exec-once = waybar
exec-once = pypr
+exec-once = lxqt-policykit-agent
+exec-once = import-gsettings gtk-theme 'Flat-Remix-GTK-Green-Darkest-Solid'
+exec-once = import-gsettings icon-theme 'COSMIC'
+exec-once = import-gsettings cursor-theme 'BreezeX-Black'
+exec-once = xrdb -load "$XDG_CONFIG_HOME"/X11/xresources
+#exec-once = com.github.wwmm.easyeffects
+#exec-once = dunst
+#exec-once = hypridle
+#exec-once = mpd
+#}}}
+
+#{{{ env
+# Environment variables set at launch
+env = HYPRCURSOR_THEME,theme_BreezeX-Black
+env = HYPRCURSOR_SIZE,32
+env = XCURSOR_THEME,BreezeX-Black
+env = XCURSOR_SIZE,32
#}}}
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
+# Debug {{{
+debug {
+ enable_stdout_logs = false
+ disable_logs = true
+ full_cm_proto = true
+}
+# }}}
+
+# device {{{
+$LAPTOP_TP_ENABLED = true
+device {
+ name = synps/2-synaptics-touchpad
+ enabled = $LAPTOP_TP_ENABLED
+}
+# }}}
+
#{{{ Input options
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
@@ -33,7 +66,13 @@ input {
follow_mouse = 1
mouse_refocus = false
touchpad {
- natural_scroll = no
+ disable_while_typing = true
+ natural_scroll = false
+ tap_button_map = "lrm"
+ clickfinger_behavior = true
+ tap-to-click = true
+ drag_lock = false
+ tap-and-drag = true
}
float_switch_override_focus = 0
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
@@ -51,7 +90,12 @@ general {
col.active_border = rgba(198844ee)
col.inactive_border = rgba(1b1d1cee)
layout = master
- no_cursor_warps = false
+}
+#}}}
+
+#{{{ cursor
+cursor {
+ no_warps = false
}
#}}}
@@ -61,8 +105,9 @@ misc {
disable_splash_rendering = true
enable_swallow = true
swallow_regex = ^(kitty)$
- vfr = false
- vrr = true
+ swallow_exception_regex = ^(wev|.*ueberzug|n?vi?m? .*)$
+ vfr = true
+ vrr = 3
}
#}}}
@@ -70,10 +115,6 @@ misc {
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10
- drop_shadow = yes
- shadow_range = 4
- shadow_render_power = 3
- col.shadow = rgba(1a1a1aee)
#{{{ Blur options
blur {
enabled = true
@@ -83,6 +124,14 @@ decoration {
xray = true
}
#}}}
+ #{{{ Shadow options
+ shadow {
+ enabled = false
+ range = 4
+ render_power = 3
+ color = 0xee1a1a1a
+ }
+ #}}}
}
#}}}
@@ -115,11 +164,13 @@ master {
special_scale_factor = 0.55
mfact = 0.55
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
- new_is_master = false
- new_on_top = true
- no_gaps_when_only = false
+ new_status = slave
+ new_on_top = false
+ new_on_active = before
+ #no_gaps_when_only = false
orientation = left
inherit_fullscreen = true
+ drop_at_cursor = true
}
#}}}
@@ -131,45 +182,48 @@ gestures {
#}}}
#{{{ plugin options
-#plugin {
-# split-monitor-workspaces {
-# count = 9
-# }
-#}
+plugin {
+ hyprsplit {
+ num_workspaces = 9
+ persistent_workspaces = true
+ }
+}
#}}}
#{{{ Windowrules
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
-# windowrulev2 = float, class:^(kitty)$, title:^(kitty)$
+# windowrule = float, class:^(kitty)$, title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
-windowrule = windowdance, title:^(Rhythm Doctor)$
-windowrule = fullscreen, ^(Xephyr)$
+windowrule = fullscreen, class:^(Xephyr)$
windowrule = float, title:^(LibreWolf - Choose User Profile)$
windowrule = float, class:^(xdg-desktop-portal-gtk)
+windowrule = float, title:^(UNDERTALE)$
windowrule = float, class:^(Tk)$
-windowrule = workspace 2, title:^(REAPER .*initializing.*)$
-windowrulev2 = stayfocused, title:^()$,class:^(steam)$
-windowrulev2 = minsize 1 1, title:^()$,class:^(steam)$
+windowrule = float, class:^(lxqt-policykit-agent)$
+windowrulev2 = stayfocused, title:^()$, class:^(steam)$
+windowrulev2 = minsize 1 1, title:^()$, class:^(steam)$
windowrulev2 = stayfocused, title:^(menu)$,class:^(yabridge-host.exe.so)$
windowrulev2 = minsize 1 1, title:^(menu)$,class:^(yabridge-host.exe.so)$
+windowrulev2 = float, class:^(yabridge-host.exe.so)$, title:^(menu)$
+windowrulev2 = float, floating:0, title:^(menu*)
+windowrule = workspace 2, title:^(REAPER .*initializing.*)$
windowrulev2 = tile, class:^(REAPER)$, title:^(.*REAPER v[0-9.]* - Licensed for personal/small business use)$
+windowrule = tile, class:^(WebApp-Qobuz[0-9]*)$
+windowrulev2 = float, title:^(menu)$
windowrulev2 = move cursor -50% -50%, class:^(yabridge-host.exe.so)$, title:^(menu)$
#windowrulev2 = nofocus, class:^(yabridge-host.exe.so)$, title:^(\s*)$
#windowrulev2 = move cursor -50% -50%, class:^(REAPER)$, title:^(Snap/Grid Settings)$
#windowrulev2 = move cursor -50% -50%, class:^(REAPER)$, title:^(Routing for track [0-9]*)$
#windowrulev2 = move cursor -50% -50%, class:^(REAPER)$, title:^(Metronome and pre-roll settings)$
-windowrulev2 = tile, class:^(WebApp-Qobuz[0-9]*)$
#windowrulev2 = move cursor -50% -50%, class:^(yabridge-host.exe.so)$, title:^(menu)$
#windowrulev2 = nofocus, class:^(yabridge-host.exe.so)$, title:^(\s*)$
#windowrulev2 = move cursor -50% -50%, class:^(yabridge-host.exe.so)$, title:^(\s*)$
#windowrulev2 = move cursor -50% -50%, class:^(REAPER)$, title:^(Snap/Grid Settings)$
#windowrulev2 = move cursor -50% -50%, class:^(REAPER)$, title:^(Routing for track [0-9]*)$
-#windowrulev2 = float,floating:0, title:^(menu)$
+#windowrulev2 = float, floating:0, title:^(menu)$
#windowrulev2 = forceinput, title:^(menu)$
-#windowrulev2 = windowdance, title:^(menu)$
-#windowrulev2 = nofocus, title:^(menu)$, class:^(yabridge\-host\.exe\.so)$
#}}}
#{{{ Mods
@@ -198,27 +252,6 @@ bind = $mainMod+SHIFT, O, splitratio, exact 0.55 #MASTER
bind = $mainMod, O, splitratio, exact 0.69 #MASTER
#}}}
-#{{{ Dwindle layout binds
-# Dwindle layout binds
-#bind = $mainMod, P, pseudo, #DWINDLE
-#bind = $mainMod $secdMod, S, togglesplit, #DWINDLE
-# Move focus with mainMod + HJKL
-#bind = $mainMod, H, movefocus, l #DWINDLE
-#bind = $mainMod, L, movefocus, r #DWINDLE
-#bind = $mainMod, K, movefocus, u #DWINDLE
-#bind = $mainMod, J, movefocus, d #DWINDLE
-# Move window with mainMod + HJKL
-#bind = $mainMod SHIFT, L, movewindow, r #DWINDLE
-#bind = $mainMod SHIFT, H, movewindow, l #DWINDLE
-#bind = $mainMod SHIFT, J, movewindow, d #DWINDLE
-#bind = $mainMod SHIFT, K, movewindow, u #DWINDLE
-# Resize clients with mainMod + secdMod + HJKL
-#binde = $mainMod $secdMod, L, resizeactive, 10 0 #DWINDLE
-#binde = $mainMod $secdMod, H, resizeactive, -10 0 #DWINDLE
-#binde = $mainMod $secdMod, K, resizeactive, 0 -10 #DWINDLE
-#binde = $mainMod $secdMod, J, resizeactive, 0 10 #DWINDLE
-#}}}
-
#{{{ Group binds
# Group binds
#bind = $mainMod CONTROL, G, togglegroup,
@@ -230,6 +263,10 @@ bind = $mainMod, O, splitratio, exact 0.69 #MASTER
#bind = $mainMod CONTROL, K, moveintogroup, u
#}}}
+#{{{ Device binds
+bind = $mainMod, Backspace, exec, touchpad.sh
+#}}}
+
#{{{ WC binds
bind = $mainMod SHIFT, Q, killactive,
bind = $mainMod SHIFT, E, exit,
@@ -243,74 +280,41 @@ bind = $mainMod SHIFT, N, togglespecialworkspace, minimized
#{{{ Workspace binds (using split-monitor-workspaces plugin!)
# Switch workspaces with mainMod + [0-9]
-#bind = $mainMod, 1, split-workspace, 1
-#bind = $mainMod, 2, split-workspace, 2
-#bind = $mainMod, 3, split-workspace, 3
-#bind = $mainMod, 4, split-workspace, 4
-#bind = $mainMod, 5, split-workspace, 5
-#bind = $mainMod, 6, split-workspace, 6
-#bind = $mainMod, 7, split-workspace, 7
-#bind = $mainMod, 8, split-workspace, 8
-#bind = $mainMod, 9, split-workspace, 9
-# Move active window to a workspace with mainMod + SHIFT + [0-9]
-#bind = $mainMod SHIFT, 1, split-movetoworkspacesilent, 1
-#bind = $mainMod SHIFT, 2, split-movetoworkspacesilent, 2
-#bind = $mainMod SHIFT, 3, split-movetoworkspacesilent, 3
-#bind = $mainMod SHIFT, 4, split-movetoworkspacesilent, 4
-#bind = $mainMod SHIFT, 5, split-movetoworkspacesilent, 5
-#bind = $mainMod SHIFT, 6, split-movetoworkspacesilent, 6
-#bind = $mainMod SHIFT, 7, split-movetoworkspacesilent, 7
-#bind = $mainMod SHIFT, 8, split-movetoworkspacesilent, 8
-#bind = $mainMod SHIFT, 9, split-movetoworkspacesilent, 9
-#bind = $mainMod CONTROL SHIFT, 1, split-movetoworkspace, 1
-#bind = $mainMod CONTROL SHIFT, 2, split-movetoworkspace, 2
-#bind = $mainMod CONTROL SHIFT, 3, split-movetoworkspace, 3
-#bind = $mainMod CONTROL SHIFT, 4, split-movetoworkspace, 4
-#bind = $mainMod CONTROL SHIFT, 5, split-movetoworkspace, 5
-#bind = $mainMod CONTROL SHIFT, 6, split-movetoworkspace, 6
-#bind = $mainMod CONTROL SHIFT, 7, split-movetoworkspace, 7
-#bind = $mainMod CONTROL SHIFT, 8, split-movetoworkspace, 8
-#bind = $mainMod CONTROL SHIFT, 9, split-movetoworkspace, 9
-#bind = $mainMod, mouse_down, split-workspace, e+1
-#bind = $mainMod, mouse_up, split-workspace, e-1
-#bind = $mainMod, comma, split-changemonitor, +1
-#bind = $mainMod, period, split-changemonitor, -1
-#}}}
-
-#{{{ Workspace binds (not using split-monitor-workspaces plugin!)
-# Switch workspaces with mainMod + [0-9]
-bind = $mainMod, 1, workspace, 1
-bind = $mainMod, 2, workspace, 2
-bind = $mainMod, 3, workspace, 3
-bind = $mainMod, 4, workspace, 4
-bind = $mainMod, 5, workspace, 5
-bind = $mainMod, 6, workspace, 6
-bind = $mainMod, 7, workspace, 7
-bind = $mainMod, 8, workspace, 8
-bind = $mainMod, 9, workspace, 9
+bind = $mainMod, 1, split:workspace, 1
+bind = $mainMod, 2, split:workspace, 2
+bind = $mainMod, 3, split:workspace, 3
+bind = $mainMod, 4, split:workspace, 4
+bind = $mainMod, 5, split:workspace, 5
+bind = $mainMod, 6, split:workspace, 6
+bind = $mainMod, 7, split:workspace, 7
+bind = $mainMod, 8, split:workspace, 8
+bind = $mainMod, 9, split:workspace, 9
# Move active window to a workspace with mainMod + SHIFT + [0-9]
-bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
-bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
-bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
-bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
-bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
-bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
-bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
-bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
-bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
-bind = $mainMod CONTROL SHIFT, 1, movetoworkspace, 1
-bind = $mainMod CONTROL SHIFT, 2, movetoworkspace, 2
-bind = $mainMod CONTROL SHIFT, 3, movetoworkspace, 3
-bind = $mainMod CONTROL SHIFT, 4, movetoworkspace, 4
-bind = $mainMod CONTROL SHIFT, 5, movetoworkspace, 5
-bind = $mainMod CONTROL SHIFT, 6, movetoworkspace, 6
-bind = $mainMod CONTROL SHIFT, 7, movetoworkspace, 7
-bind = $mainMod CONTROL SHIFT, 8, movetoworkspace, 8
-bind = $mainMod CONTROL SHIFT, 9, movetoworkspace, 9
-bind = $mainMod, mouse_down, workspace, e+1
-bind = $mainMod, mouse_up, workspace, e-1
-#bind = $mainMod, comma, split-changemonitor, +1
-#bind = $mainMod, period, split-changemonitor, -1
+bind = $mainMod SHIFT, 1, split:movetoworkspacesilent, 1
+bind = $mainMod SHIFT, 2, split:movetoworkspacesilent, 2
+bind = $mainMod SHIFT, 3, split:movetoworkspacesilent, 3
+bind = $mainMod SHIFT, 4, split:movetoworkspacesilent, 4
+bind = $mainMod SHIFT, 5, split:movetoworkspacesilent, 5
+bind = $mainMod SHIFT, 6, split:movetoworkspacesilent, 6
+bind = $mainMod SHIFT, 7, split:movetoworkspacesilent, 7
+bind = $mainMod SHIFT, 8, split:movetoworkspacesilent, 8
+bind = $mainMod SHIFT, 9, split:movetoworkspacesilent, 9
+bind = $mainMod CONTROL SHIFT, 1, split:movetoworkspace, 1
+bind = $mainMod CONTROL SHIFT, 2, split:movetoworkspace, 2
+bind = $mainMod CONTROL SHIFT, 3, split:movetoworkspace, 3
+bind = $mainMod CONTROL SHIFT, 4, split:movetoworkspace, 4
+bind = $mainMod CONTROL SHIFT, 5, split:movetoworkspace, 5
+bind = $mainMod CONTROL SHIFT, 6, split:movetoworkspace, 6
+bind = $mainMod CONTROL SHIFT, 7, split:movetoworkspace, 7
+bind = $mainMod CONTROL SHIFT, 8, split:movetoworkspace, 8
+bind = $mainMod CONTROL SHIFT, 9, split:movetoworkspace, 9
+#bind = $mainMod, mouse_down, split:workspace, e+1
+#bind = $mainMod, mouse_up, split:workspace, e-1
+bind = $mainMod, G, split:grabroguewindows
+bind = $mainMod, comma, focusmonitor, -1
+bind = $mainMod, period, focusmonitor, +1
+bind = $mainMod SHIFT, comma, movewindow, mon:-1
+bind = $mainMod SHIFT, period, movewindow, mon:+1
#}}}
#{{{ Mouse binds
@@ -331,8 +335,8 @@ submap = reset
#}}}
#{{{ Menu bindings
-bind = $mainMod, R, exec, exec sh -c "$(tofi-drun -c ~/.config/tofi/themes/dmenu_vertical --prompt-text Run:)"
-bind = $mainMod, D, exec, exec sh -c "$(tofi-run -c ~/.config/tofi/themes/dmenu_vertical --prompt-text Run:)"
+bind = $mainMod, R, exec, sh -c "$(tofi-drun -c ~/.config/tofi/themes/dmenu_vertical --prompt-text Run:)"
+bind = $mainMod, D, exec, sh -c "$(tofi-run -c ~/.config/tofi/themes/dmenu_vertical --prompt-text Run:)"
bind = $mainMod $secdMod, Q, exec, qbc
bind = $mainMod $secdMod, W, exec, lwc
bind = $mainMod $secdMod, E, exec, mbc
@@ -348,87 +352,86 @@ bind = $mainMod $secdMod, P, exec, passmenu
#{{{ Misc bindings
bind = $mainMod, Return, exec, kitty
bind = $mainMod $secdMod, F, exec, kitty -e lf
-bind = $mainMod, W, exec, t waybar
+bind = $mainMod, W, exec, pkill -USR1 waybar
bind = $mainMod, Q, exec, loginctl lock-session
bind = $mainMod $secdMod CONTROL, Q, exec, systemctl suspend
bind = $mainMod SHIFT, G, exec, get-app-id
-#bindr = , XF86AudioMicMute, exec, volsv -m
-bind = $mainMod CONTROL, M, exec, volsv -m
-bindr = $mainMod CONTROL, M, exec, volsv -m
+bind = $mainMod Control, M, exec, volsv -m
+bind = $mainMod, Comma, exec, acpi-notify.sh
#bind = $mainMod CONTROL, R, exec, startx -- /usr/bin/Xephyr -screen 1920x1080 :1
#}}}
#{{{ Scratchpads
bind = $mainMod CONTROL, Z, exec, pypr toggle sphtop
-$sphtop = ^(sphtop)$
+$sphtop = class:^(sphtop)$
windowrule = float,$sphtop
windowrule = workspace special:sphtop silent,$sphtop
windowrule = size 50% 50%,$sphtop
windowrule = move 25% 25%,$sphtop
bind = $mainMod CONTROL, X, exec, pypr toggle spterm
-$spterm = ^(spterm)$
+$spterm = class:^(spterm)$
windowrule = float,$spterm
-windowrule = workspace special:spterm silent,$dropterm
+windowrule = workspace special:spterm silent,$spterm
windowrule = size 50% 50%,$spterm
windowrule = move 25% 25%,$spterm
bind = $mainMod CONTROL, C, exec, pypr toggle sppmxr
-$sppmxr = ^(sppmxr)$
+$sppmxr = class:^(sppmxr)$
windowrule = float,$sppmxr
windowrule = workspace special:sppmxr silent,$sppmxr
windowrule = size 50% 50%,$sppmxr
windowrule = move 25% 25%,$sppmxr
bind = $mainMod CONTROL, V, exec, pypr toggle spblue
-$spblue = ^(spblue)$
+$spblue = class:^(spblue)$
windowrule = float,$spblue
windowrule = workspace special:spblue silent,$spblue
windowrule = size 50% 50%,$spblue
windowrule = move 25% 25%,$spblue
bind = $mainMod CONTROL, B, exec, pypr toggle spncmp
-$spncmp = ^(spncmp)$
+$spncmp = class:^(spncmp)$
windowrule = float,$spncmp
windowrule = workspace special:spncmp silent,$spncmp
windowrule = size 50% 50%,$spncmp
windowrule = move 25% 25%,$spncmp
bind = $mainMod CONTROL, A, exec, pypr toggle spmutt
-$spmutt = ^(spmutt)$
+$spmutt = class:^(spmutt)$
windowrule = float,$spmutt
windowrule = workspace special:spmutt silent,$spmutt
windowrule = size 50% 50%,$spmutt
windowrule = move 25% 25%,$spmutt
bind = $mainMod CONTROL, S, exec, pypr toggle spprof
-$spprof = ^(spprof)$
+$spprof = class:^(spprof)$
windowrule = float,$spprof
windowrule = workspace special:spprof silent,$spprof
windowrule = size 50% 50%,$spprof
windowrule = move 25% 25%,$spprof
bind = $mainMod CONTROL, D, exec, pypr toggle spirss
-$spirss = ^(spirss)$
+$spirss = class:^(spirss)$
windowrule = float,$spirss
windowrule = workspace special:spirss silent,$spirss
windowrule = size 50% 50%,$spirss
windowrule = move 25% 25%,$spirss
bind = $mainMod CONTROL, F, exec, pypr toggle sptodo
-$sptodo = ^(sptodo)$
+$sptodo = class:^(sptodo)$
windowrule = float,$sptodo
windowrule = workspace special:sptodo silent,$sptodo
windowrule = size 50% 50%,$sptodo
windowrule = move 25% 25%,$sptodo
bind = $mainMod CONTROL, G, exec, pypr toggle sptrmc
-$sptrmc = ^(sptrmc)$
+$sptrmc = class:^(sptrmc)$
windowrule = float,$sptrmc
windowrule = workspace special:sptrmc silent,$sptrmc
windowrule = size 50% 50%,$sptrmc
windowrule = move 25% 25%,$sptrmc
bind = $mainMod CONTROL, Q, exec, pypr toggle qpwgraph
-$spqpwg = ^(org\.rncbc\.qpwgraph)$
+$spqpwg = class:^(org\.rncbc\.qpwgraph)$
windowrule = float,$spqpwg
windowrule = workspace special:spqpwg silent,$spqpwg
windowrule = size 50% 50%,$spqpwg
windowrule = move 25% 25%,$spqpwg
bind = $mainMod CONTROL, E, togglespecialworkspace, speasy
-$speasy = ^(com\.github\.wwmm\.easyeffects)$
+$speasy = class:^(com\.github\.wwmm\.easyeffects)$
windowrule = float,$speasy
windowrule = workspace special:speasy silent,$speasy
windowrule = size 50% 50%,$speasy
@@ -466,9 +469,7 @@ bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioMute, exec, volsv -t
#bindl = , XF86AudioMicMute, exec, volsv -m
bind = , XF86AudioMicMute, exec, volsv -m
-bindel = , XF86MonBrightnessUp, exec, bl -i
-bindel = , XF86MonBrightnessDown, exec, bl -d
-bindl = $mainMod, XF86MonBrightnessUp, exec, bl -I 1
-bindl = $mainMod, XF86MonBrightnessDown, exec, bl -D 1
+bindel = , XF86MonBrightnessUp, exec, hypr-brightness +
+bindel = , XF86MonBrightnessDown, exec, hypr-brightness -
bind = , Print, exec, scrshot
#}}}