From 728c2e4ec8f72ac28509ec0eb827781ca0b29898 Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 Jul 2022 22:41:17 +0200 Subject: [PATCH] Release 1.9.1 - Fix Issue 35 in Bugs.md (nextscreen/prevscreen feature broken) - Fix Issue 36 in Bugs.md (configure_message feature broken) - Fix Issue 37 in Bugs.md (screen/movetoscreen feature broken) --- Bugs.md | 24 ++++ Hashes.md | 15 +++ cagebreak.c | 14 ++- keybinding.c | 143 +++++++++++++++++++++--- man/cagebreak-config.5.md | 2 +- man/cagebreak.1.md | 2 +- meson.build | 22 ++-- message.c | 17 +-- server.h | 2 + signatures/1.9.0-cagebreak-config.5.sig | Bin 0 -> 566 bytes signatures/1.9.0-cagebreak.1.sig | Bin 0 -> 566 bytes signatures/1.9.0.sig | Bin 0 -> 566 bytes signatures/cagebreak-config.5.sig | Bin 566 -> 566 bytes signatures/cagebreak.1.sig | Bin 566 -> 566 bytes signatures/cagebreak.sig | Bin 566 -> 566 bytes 15 files changed, 203 insertions(+), 38 deletions(-) create mode 100644 signatures/1.9.0-cagebreak-config.5.sig create mode 100644 signatures/1.9.0-cagebreak.1.sig create mode 100644 signatures/1.9.0.sig diff --git a/Bugs.md b/Bugs.md index 2c909fe..822f3f6 100644 --- a/Bugs.md +++ b/Bugs.md @@ -628,3 +628,27 @@ wlroots-0.15.1 Cagebreak crashed when a touch device was removed due to a call to `wl_list_remove` on a pointer which was never initialized. +## Issue 35 + + * github issue number: N/A + * Fixed: 1.9.1 + +Cagebreak 1.9.0 broke the nextscreen and prevscreen functionality. +This issue was not present in earlier releases. + +## Issue 36 + + * github issue number: N/A + * Fixed: 1.9.1 + +Cagebreak 1.9.0 broke the configure_message functionality. +This issue was not present in earlier releases. + +## Issue 37 + + * github issue number: N/A + * Fixed: 1.9.1 + +Cagebreak 1.9.0 broke the screen/movetoscreen functionality. +This issue was not present in earlier releases. + diff --git a/Hashes.md b/Hashes.md index abffe85..97d6217 100644 --- a/Hashes.md +++ b/Hashes.md @@ -1,5 +1,20 @@ # Hashes +1.9.1 cagebreak + + * sha 256: 262c67170eb2a39174d40f97d940707029dca0b2b613b514a1cca29152a12665 + * sha 512: bbd962eaf90441338a67215fc7ac0a717b8cb7bd93ce7ef7ed446aa1df9f4e44026994cc1172e6245e5cd4b9c588150ed9c894941069c5c132c9e2009523c241 + +1.9.1 cagebreak.1 + + * sha 256: f9c1ee94c0788b98f1e8d93433a0e39d4265ed5c8107e964648da11c60c995ed + * sha 512: 1d39748c42a56852ce21aa5ea872160da0810d0539901f6c307b141d4c2545c52a7de98d924e4e45827dafa8cb76b483abf5e02403e6536f69d2144575d3dfdb + +1.9.1 cagebreak-config.5 + + * sha 256: 2b0d5655e01942cb5130a95c7209e32c1ce3f44411f2a3294a160d6a2232bef4 + * sha 512: c13a92e091e56aad099c12c4bf652943bf43dad5aace61677af992331a2700d3d2f433cd2a674cbc2cc080e971169516973835c44416de555a85b5aae9da9a9d + 1.9.0 cagebreak * sha 256: 91096b4c558970666c5ef1ebd5c16301fbb40b52b34a73589f18a14c48edf5c1 diff --git a/cagebreak.c b/cagebreak.c index 00712f9..97f4f91 100644 --- a/cagebreak.c +++ b/cagebreak.c @@ -297,7 +297,18 @@ main(int argc, char *argv[]) { } server.nws = 1; - server.message_timeout = 2; + server.message_config.fg_color[0] = 0.0; + server.message_config.fg_color[1] = 0.0; + server.message_config.fg_color[2] = 0.0; + server.message_config.fg_color[3] = 1.0; + + server.message_config.bg_color[0] = 0.9; + server.message_config.bg_color[1] = 0.85; + server.message_config.bg_color[2] = 0.85; + server.message_config.bg_color[3] = 1.0; + + server.message_config.display_time = 2; + server.message_config.font = strdup("pango:Monospace 10"); event_loop = wl_display_get_event_loop(server.wl_display); sigint_source = @@ -626,6 +637,7 @@ end: wlr_output_layout_destroy(server.output_layout); free(server.input); + free(server.message_config.font); pango_cairo_font_map_set_default(NULL); cairo_debug_reset_static_data(); FcFini(); diff --git a/keybinding.c b/keybinding.c index 5207d24..ec83acc 100644 --- a/keybinding.c +++ b/keybinding.c @@ -76,6 +76,12 @@ keybinding_free(struct keybinding *keybinding, bool recursive) { free(keybinding->data.i_cfg->mapped_to_output); } free(keybinding->data.o_cfg); + break; + case KEYBINDING_CONFIGURE_MESSAGE: + if(keybinding->data.m_cfg->font != NULL) { + free(keybinding->data.m_cfg->font); + } + break; default: break; } @@ -594,23 +600,8 @@ into_process(const char *command) { } void -keybinding_cycle_outputs(struct cg_server *server, bool reverse) { - if(reverse) { - server->curr_output = wl_container_of(server->curr_output->link.prev, - server->curr_output, link); - } else { - server->curr_output = wl_container_of(server->curr_output->link.next, - server->curr_output, link); - } - if(&server->curr_output->link == &server->outputs) { - if(reverse) { - server->curr_output = wl_container_of( - server->curr_output->link.prev, server->curr_output, link); - } else { - server->curr_output = wl_container_of( - server->curr_output->link.next, server->curr_output, link); - } - } +set_output(struct cg_server *server, struct cg_output *output) { + server->curr_output = output; seat_set_focus( server->seat, server->curr_output->workspaces[server->curr_output->curr_workspace] @@ -618,6 +609,26 @@ keybinding_cycle_outputs(struct cg_server *server, bool reverse) { message_printf(server->curr_output, "Current Output"); } +void +keybinding_cycle_outputs(struct cg_server *server, bool reverse) { + struct cg_output *output = NULL; + if(reverse) { + output = wl_container_of(server->curr_output->link.prev, + server->curr_output, link); + } else { + output = wl_container_of(server->curr_output->link.next, + server->curr_output, link); + } + if(&output->link == &server->outputs) { + if(reverse) { + output = wl_container_of(output->link.prev, output, link); + } else { + output = wl_container_of(output->link.next, output, link); + } + } + set_output(server, output); +} + /* Cycle through views, whereby the workspace does not change */ void keybinding_cycle_views(struct cg_server *server, bool reverse) { @@ -837,6 +848,49 @@ keybinding_set_background(struct cg_server *server, float *bg) { server->bg_color[2] = bg[2]; } +void +keybinding_switch_output(struct cg_server *server, int output) { + struct cg_output *it; + int count = 1; + wl_list_for_each(it, &server->outputs, link) { + if(count == output) { + set_output(server, it); + return; + } + ++count; + } + message_printf(server->curr_output, "Output %d does not exist", output); + return; +} + +void +keybinding_move_view_to_output(struct cg_server *server, int output_num) { + struct cg_view *view = + server->curr_output->workspaces[server->curr_output->curr_workspace] + ->focused_tile->view; + if(view != NULL) { + wl_list_remove(&view->link); + server->curr_output->workspaces[server->curr_output->curr_workspace] + ->focused_tile->view = NULL; + keybinding_cycle_views(server, false); + if(server->curr_output->workspaces[server->curr_output->curr_workspace] + ->focused_tile->view == NULL) { + seat_set_focus(server->seat, NULL); + } + } + keybinding_switch_output(server, output_num); + if(view != NULL) { + struct cg_workspace *ws = + server->curr_output + ->workspaces[server->curr_output->curr_workspace]; + view->workspace = ws; + wl_list_insert(&ws->views, &view->link); + ws->focused_tile->view = view; + view_maximize(view, ws->focused_tile); + seat_set_focus(server->seat, view); + } +} + void keybinding_move_view_to_workspace(struct cg_server *server, uint32_t ws) { struct cg_view *view = @@ -865,6 +919,23 @@ keybinding_move_view_to_workspace(struct cg_server *server, uint32_t ws) { } } +void +merge_config(struct cg_output_config *config_new, + struct cg_output_config *config_old) { + if(config_new->status == OUTPUT_DEFAULT) { + config_new->status = config_old->status; + } + if(config_new->pos.x == -1) { + config_new->pos = config_old->pos; + } + if(config_new->refresh_rate == 0) { + config_new->refresh_rate = config_old->refresh_rate; + } + if(config_new->priority == -1) { + config_new->priority = config_old->priority; + } +} + void keybinding_configure_output(struct cg_server *server, struct cg_output_config *cfg) { @@ -883,6 +954,7 @@ keybinding_configure_output(struct cg_server *server, wl_list_for_each_safe(it, tmp, &server->output_config, link) { if(strcmp(config->output_name, it->output_name) == 0) { wl_list_remove(&it->link); + merge_config(config, it); free(it->output_name); free(it); } @@ -910,6 +982,30 @@ keybinding_configure_input(struct cg_server *server, cg_input_apply_config(cfg, server); } +void +keybinding_configure_message(struct cg_server *server, + struct cg_message_config *config) { + if(config->font != NULL) { + free(server->message_config.font); + server->message_config.font = strdup(config->font); + } + if(config->display_time != -1) { + server->message_config.display_time = config->display_time; + } + if(config->bg_color[0] != -1) { + server->message_config.bg_color[0] = config->bg_color[0]; + server->message_config.bg_color[1] = config->bg_color[1]; + server->message_config.bg_color[2] = config->bg_color[2]; + server->message_config.bg_color[3] = config->bg_color[3]; + } + if(config->fg_color[0] != -1) { + server->message_config.fg_color[0] = config->fg_color[0]; + server->message_config.fg_color[1] = config->fg_color[1]; + server->message_config.fg_color[2] = config->fg_color[2]; + server->message_config.fg_color[3] = config->fg_color[3]; + } +} + void keybinding_configure_input_dev(struct cg_server *server, struct cg_input_config *cfg) {} @@ -950,9 +1046,15 @@ run_action(enum keybinding_action action, struct cg_server *server, case KEYBINDING_CYCLE_TILES: keybinding_cycle_tiles(server, data.b); break; + case KEYBINDING_CYCLE_OUTPUT: + keybinding_cycle_outputs(server, data.b); + break; case KEYBINDING_SWITCH_WORKSPACE: keybinding_switch_ws(server, data.u); break; + case KEYBINDING_SWITCH_OUTPUT: + keybinding_switch_output(server, data.u); + break; case KEYBINDING_SWITCH_MODE: server->seat->mode = data.u; break; @@ -981,6 +1083,10 @@ run_action(enum keybinding_action action, struct cg_server *server, keybinding_move_view_to_workspace(server, data.u); break; } + case KEYBINDING_MOVE_VIEW_TO_OUTPUT: { + keybinding_move_view_to_output(server, data.u); + break; + } case KEYBINDING_SWAP_LEFT: { swap_tile_left( server->curr_output->workspaces[server->curr_output->curr_workspace] @@ -1048,6 +1154,9 @@ run_action(enum keybinding_action action, struct cg_server *server, case KEYBINDING_CONFIGURE_OUTPUT: keybinding_configure_output(server, data.o_cfg); break; + case KEYBINDING_CONFIGURE_MESSAGE: + keybinding_configure_message(server, data.m_cfg); + break; case KEYBINDING_CONFIGURE_INPUT: keybinding_configure_input(server, data.i_cfg); break; diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index b931db4..541e713 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -cagebreak-config(5) "Version 1.9.0" "Cagebreak Manual" +cagebreak-config(5) "Version 1.9.1" "Cagebreak Manual" # NAME diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index fd6584c..7ef7963 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -cagebreak(1) "Version 1.9.0" "Cagebreak Manual" +cagebreak(1) "Version 1.9.1" "Cagebreak Manual" # NAME diff --git a/meson.build b/meson.build index b4c7dfd..172741f 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('cagebreak', 'c', - version: '1.9.0', + version: '1.9.1', license: 'MIT', default_options: [ 'c_std=c11', @@ -204,18 +204,18 @@ cagebreak_dependencies_dict = { reproducible_build_versions = { 'server_protos': '-1', 'wayland_server': '1.19.0', - 'wayland_client': '1.20.0', - 'wayland_cursor': '1.20.0', + 'wayland_client': '1.21.0', + 'wayland_cursor': '1.21.0', 'wlroots': '0.15.1', - 'xkbcommon': '1.4.0', + 'xkbcommon': '1.4.1', 'fontconfig': '2.14.0', - 'libinput': '1.20.1', + 'libinput': '1.21.0', 'libevdev': '1.12.1', - 'libudev': '250', + 'libudev': '251', 'pixman': '0.40.0', - 'pango': '1.50.7', + 'pango': '1.50.8', 'cairo': '1.17.6', - 'pangocairo': '1.50.7', + 'pangocairo': '1.50.8', 'math': '-1' } @@ -241,7 +241,7 @@ foreach name, dep : cagebreak_dependencies_dict endforeach reproducible_build_compiler = 'gcc' -reproducible_build_compiler_version = '11.2.0' +reproducible_build_compiler_version = '12.1.0' if cc.get_id() != reproducible_build_compiler warning('The compiler "' + cc.get_id() + '" differs from the one used to generate to binary specified in the README section "Reproducible Builds" (' + reproducible_build_compiler + ').') @@ -270,7 +270,7 @@ if get_option('man-pages') output : 'cagebreak.1', input : 'man/cagebreak.1.md', capture : true, - command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1650564686 ; @0@ < @INPUT@'.format(scdoc.path())], + command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1658688233 ; @0@ < @INPUT@'.format(scdoc.path())], install: true, install_dir: mandir1 ) @@ -279,7 +279,7 @@ if get_option('man-pages') output : 'cagebreak-config.5', input : 'man/cagebreak-config.5.md', capture : true, - command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1650564686 ; @0@ < @INPUT@'.format(scdoc.path())], + command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1658688233 ; @0@ < @INPUT@'.format(scdoc.path())], install: true, install_dir: mandir5 ) diff --git a/message.c b/message.c index 0bcb5f1..9e600bb 100644 --- a/message.c +++ b/message.c @@ -35,7 +35,6 @@ struct wlr_texture * create_message_texture(const char *string, const struct cg_output *output) { const int WIDTH_PADDING = 8; const int HEIGHT_PADDING = 2; - const char *font = "pango:Monospace 10"; struct wlr_texture *texture; double scale = output->wlr_output->scale; @@ -60,7 +59,8 @@ create_message_texture(const char *string, const struct cg_output *output) { cairo_font_options_set_subpixel_order( fo, to_cairo_subpixel_order(output->wlr_output->subpixel)); cairo_set_font_options(c, fo); - get_text_size(c, font, &width, &height, NULL, scale, "%s", string); + get_text_size(c, output->server->message_config.font, &width, &height, NULL, + scale, "%s", string); width += 2 * WIDTH_PADDING; height += 2 * HEIGHT_PADDING; cairo_surface_destroy(dummy_surface); @@ -72,16 +72,19 @@ create_message_texture(const char *string, const struct cg_output *output) { cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST); cairo_set_font_options(cairo, fo); cairo_font_options_destroy(fo); - cairo_set_source_rgba(cairo, 0.9, 0.85, 0.85, 1.0); + float *bg_col = output->server->message_config.bg_color; + cairo_set_source_rgba(cairo, bg_col[0], bg_col[1], bg_col[2], bg_col[3]); cairo_paint(cairo); PangoContext *pango = pango_cairo_create_context(cairo); - cairo_set_source_rgba(cairo, 0, 0, 0, 1); + float *fg_col = output->server->message_config.fg_color; + cairo_set_source_rgba(cairo, fg_col[0], fg_col[1], fg_col[2], fg_col[3]); cairo_set_line_width(cairo, 2); cairo_rectangle(cairo, 0, 0, width, height); cairo_stroke(cairo); cairo_move_to(cairo, WIDTH_PADDING, HEIGHT_PADDING); - pango_printf(cairo, font, scale, "%s", string); + pango_printf(cairo, output->server->message_config.font, scale, "%s", + string); cairo_surface_flush(surface); unsigned char *data = cairo_image_surface_get_data(surface); @@ -175,7 +178,7 @@ message_printf(struct cg_output *output, const char *fmt, ...) { message_set_output(output, buffer, box, CG_MESSAGE_TOP_RIGHT); free(buffer); - alarm(output->server->message_timeout); + alarm(output->server->message_config.display_time); } #if CG_HAS_FANALYZE #pragma GCC diagnostic pop @@ -194,7 +197,7 @@ message_printf_pos(struct cg_output *output, struct wlr_box *position, message_set_output(output, buffer, position, align); free(buffer); - alarm(output->server->message_timeout); + alarm(output->server->message_config.display_time); } void diff --git a/server.h b/server.h index 092f7bf..a5139f6 100644 --- a/server.h +++ b/server.h @@ -3,6 +3,7 @@ #include "config.h" #include "ipc_server.h" +#include "message.h" #include #include @@ -44,6 +45,7 @@ struct cg_server { struct keybinding_list *keybindings; struct wl_list output_config; struct wl_list input_config; + struct cg_message_config message_config; enum wl_output_transform output_transform; diff --git a/signatures/1.9.0-cagebreak-config.5.sig b/signatures/1.9.0-cagebreak-config.5.sig new file mode 100644 index 0000000000000000000000000000000000000000..d6ac6bbc35d2718a0d202eb9ebc09571c3ec4eda GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%BpPf&dB$5TM6H zgo5zH1|d!MJk3MYrMG@+mW zu_B!hLyCsptEvb($9?ogTecWcHapn(b$l+bQiPNJm4^bA=Jo}U=e+ye$JCou%?%$c z99UyJiQPJnbZpTJeZ$$|nFzmY2ORLI));==hW$&1& zePyl%{uIFE7|P<4Ug=Q!tLtKd#EH`^o~VvTVpW20Q3 zQKwL?vPxdOX)_*VO!_X{tEt}=qZPj7c`$j>7B8nP9^OKGKj7JDA`%mEhD0%$Nww5c zCR7d5NwmW6D(b$vw@99AsC;o}^{3*X$=61%1C1eCI_kZCYC(QP6&SB$+QqU_LPa$u zOS?D%NXh*lr*`_`7FL84Ff51wXeQK26F*W4!_Ou+>{O_EyV#yzQ{pJeXC51)*Ru#r E&X@KM`v3p{ literal 0 HcmV?d00001 diff --git a/signatures/1.9.0-cagebreak.1.sig b/signatures/1.9.0-cagebreak.1.sig new file mode 100644 index 0000000000000000000000000000000000000000..47ba7f2978d4cfa6d59e5b25d8e340db574ad9ef GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%BpPe*g*z5TM6H zgo=}DIUWoz{7hfGwj z^imey0J@ey-HnU+B@C^oa-Ib0cEc4X%ehZ(a2a_vs23Y_k3lCVFk{MGsxw>qMvjWt zRDDJP;fxyhvo+2LrGo`xb-~fRB{I>mUl;lw!y;n<-D%{_>@RgJO(~P-@P}4E>)1c? zBtl!)Kzq55_Gb4?)o@(YjfVr@Mr>^)azcSCeaV34$NfO!AF=9pvR%+_wdk@8%mw;$ z=u_9NpuLBE2J0hv<4BIY4TUx3as)h4-eVr;vq7{%DNML|$D0Ii-8;17x_#TyM=BK? zPz`O`y}Y#QX9t@YxtIJh*M=^Xt+^uZ1j?Wi`N`I0rVLX!K+ykoCyBfWv}fV~c!Z*V z@eNWSR{CACsW6`TSjmP-8>e#vHh8A>rRyfhvA#IVeC8-r62C27bbVL&1A>rszmJ1)If? zx)<_hI(xdUgSHKi+2oj7bLWd14Ry)Dxl0Q6a}*ykRohKejfqufwkluKOkIs=F^dK) z(xGR7HVsYvD_98Ti4<(0n98&j0ex#xY%DqS%%E+FD|YOcUY3i)f<^at+w@s$xcxM- ET8sA(CjbBd literal 0 HcmV?d00001 diff --git a/signatures/1.9.0.sig b/signatures/1.9.0.sig new file mode 100644 index 0000000000000000000000000000000000000000..2cc14a8392a06e2f4bee8076cd2bd3acdee2f4cc GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j+_E$ufVhrCX*AwCnJ$3ujQV~JG-0%BpPd;kgw5TM6H zgo6OjSbm&_ZEJ$$GagLEuabvlKYurs-dCP z#3oIYm2Oi?{pu1ZF{He;gxqi@kqjd%|G3QZ>3@Su%n~0l%d#3a{ckK9_K0WjWfPAo zNkknL(M{;s?|M55Zd zW+nlT^h+U-g9YKl2?|kQrMea*2@zxm+<=NDnI~D=obs&(((46JW6TfX%W!R40dn0M z1VnSD9d`RJzY)dZuKUv)>h_&ZLNWeJV2*b-Hp$qj5~{~N!;h{G-CT&b@|1#s8oxAP z^PDV3tXr>ju?9Yf-$rPOgG)x5l?Q8%ncMRxa@} zsZUn+m@#F3baYgr#wwd+>S)gm`y7V>e&`8IYafPMo;jl9?x4+M1#Qrlh6{?Ii&$zi z=E{C}c0!`SQ5s9Vyq%1}8_@_ANb&Xk8+QE1@YTdJ(iRM3sX Ev3HpTg#Z8m literal 0 HcmV?d00001 diff --git a/signatures/cagebreak-config.5.sig b/signatures/cagebreak-config.5.sig index d6ac6bbc35d2718a0d202eb9ebc09571c3ec4eda..7349ebcab4fa32168646d48f892bcd5596a3192f 100644 GIT binary patch delta 542 zcmV+(0^$9(1hxc_BY)&OF#rk)5TM6Hgo9>tYPA>a(B~! z^>{#QM`;&Ks#9hY(iZU4k8V6+u7a|13x%(-a?xhLZT+17sI6;Yl3SkvVYk^S>Ur>mqlBDv%p&b zyXZ>{XYf{zf5Znp7=&To+PBFaU@jZ=3`vY%qC`~oY$L2#0ANF9egTBdF(cP z5<`_TtPH7uydo}(15>)Q8ooXiDY8P9y1Tn#aTuv^bJuxX&4TtJK6;|s;VrH(b%KLv>jY=9%XSI zF(sTrofg)X-Ev#Ga#;y14*3dy8|zq!)BCe1-HB#AE!d_HVju_feh9E#H1mFKV`&0O zn6>xe>oj&}xbQeoI8Zgk(qKmS5EGv3~`Hst27^QY&H~rLYjMaV3Q` zZ>&d3WK{PGOV@wh%jla+RN@q)!ew~v+Edj+>JSDDq^(+J8H%t6gjnI99eD>_tvo?0 zU>n2GCXF?~6zi8<^KF(CJ-H4cGYmEkVX+oY!uZU#QPscv!P(E!)#+GqVS=Q;=EXbK gCQ-SssuyQEbP<+f7PT!o81aUMd)X(zx~6zVzY!<^n*aa+ delta 542 zcmV+(0^$9(1hxc_BY$D2f&dB$5TM6Hgo5zH1|d!MJk3MYrMG@+mWu_B!hLyCsptEvb($A5kFMO(HQQ8qi+_;q|P zuTq4Q{gsCTmFD&ZkmtPn+{e_LRm}|_EF4&4JBi&okK{a1%M&gkX$wy>idW9Sg)Sbh z^h_5K%%9D&kHNab*|;Xy9acqIpM;yThj-5b{Npf|gNkas63T%S>=P_42`UVpr4Gah72`Yzk6soxc&6~5$o zFnQ7zFQ+UX-a>mn;Mr&*5)*NTL@}93wbW83R1MNew8HNy>b|r{bW= z*G8@bjUie(>b-tyL4HIP7_Vd6#j;UCMKvZ%yEp{O_EyV#yzQ{pJeXC51)*Ru#r&H-@<$^ZZW diff --git a/signatures/cagebreak.1.sig b/signatures/cagebreak.1.sig index 47ba7f2978d4cfa6d59e5b25d8e340db574ad9ef..e0a399bb986388fd35276fee09dbbf5ccac80832 100644 GIT binary patch delta 542 zcmV+(0^$9(1hxc_BY)&OIRFX?5TM6HgoqZ-^11nv;!IzNKG?CCR3*qIjlr607+v2?mnfYhMc3P^(}@ZgMa zgU{dgn6#*WL4PRyQ9!3WZp93ru2dr!ECr4Fs!e zymoXj4>W#mCg$7WYOfC$=ho-LsAKrq@_#{zhxJwNF8+HFW*h z*DwhYyk^{acUgYXsG31z3q<=`>)&6T-G^`kC34^f-ml=jX zd3hwc&ZL!_s3Mq(TxI<9kugz{e$flSj!5R(sSyav%AEpyo0-ggo*=TuDTFhAJYw%$ zGU1%#5SptS54=}DIUWoz{7hfGwj^imey0J@ey-HnU+B@C^oa-Ib0cEc4X%ehZ( za2a_vs23Y_k3lCVFk{MGsxw>qMvjWtRDDJP;fxyhvo+2LrGJA3Vs*jMyd^Txv0oSZ z9>XGI0NrWi&Fn9AEKMns=kSMCKkL{(@+3lA*Fbx@kM?HwOx18))QyJ&-$rb0ByvK5 zD}Bj;=Ewa&;vcc71aI9twBx#c+tNoW6&p|uZQ8xOwCZOEn;5y5{4&>uE|jggBJKpr zpc47X)@7y)Q#e4-|8^&dya=>s;sAJrqJQxXQXp3PU9zb#p7~hGhDjTza|1SbruC)k zCdjeAILmzIC{z_&d=&wvE;Ty8?%!;1W`boP1a8cPiGTD;VcHz$G7)mY$=z(vSwjMB zyu?^e!_x7!FzS4=tw&So5hg27xHF0d%CTIwhfQj=ZhK*b;-cF zOA7XL6dy8G+f7uBiB)H|Dqqt~U5#iliv}#xp=W?L4Nd(kSP15c6l|cF%Cr>$eQQx{ gEIIVdpcie4D|YOcUY3i)f<^at+w@s$xcxM-TJx<5_5c6? diff --git a/signatures/cagebreak.sig b/signatures/cagebreak.sig index 2cc14a8392a06e2f4bee8076cd2bd3acdee2f4cc..1813ed2426494a05f625ea4b7e3ab605ed4f8601 100644 GIT binary patch delta 542 zcmV+(0^$9(1hxc_BY)&OH2?|;5TM6Hgo z9ROudEg(73sF&{gAji%Mu!6xkWxIWi-X<6Kgywn!hlTI#HGk%MzxuJUbH~UuWjbrA9pC<}|8A9VJ@X0zxN`VNvWzZw*e)YMR)(MA@zW*V)~gJ!gmcUTel41s4(OMDwux8<4JEf zo{2_rKAG^+Wt5G3vRN{eH~t6A2sWTgUzK`nTW(NYh`EistdMr0(ybER`7|K`Elm#~ g29sryaTk{o0OlLqNij*hoj~ECUMrZkGFI}X$HzDW0{{R3 delta 542 zcmV+(0^$9(1hxc_BY$D2d;kgw5TM6Hgo6O zjSbm&_ZEJ$$GagLEuabvlKYurs-dCP#3oIYm2Oi?{pu1ZF@L1IwS?SoCXoyyEC0C6 z^67trOUx1 zVjW)TE+_A%m5iJe9~+WP?#HeIueE>D4SLqocW9Y0gv=cA&`Rw;lv3FQDCLI79+QE1@YTdJ(iRM3sXvBEq5MF0Q*