diff --git a/plymouth-updates.patch b/plymouth-updates.patch new file mode 100644 index 0000000..e4504f7 --- /dev/null +++ b/plymouth-updates.patch @@ -0,0 +1,21990 @@ +From f89858654353d9ab1ca9a2a2a9f758d40f868091 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 5 Nov 2018 15:45:53 -0500 +Subject: [PATCH 01/74] configure: bump to 0.9.5 + +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 0382773..66d3649 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1,4 +1,4 @@ +-AC_INIT([plymouth],[0.9.4],[https://bugs.freedesktop.org/enter_bug.cgi?product=plymouth]) ++AC_INIT([plymouth],[0.9.5],[https://bugs.freedesktop.org/enter_bug.cgi?product=plymouth]) + AC_CONFIG_SRCDIR(src/main.c) + AC_CONFIG_HEADER(config.h) + AC_CONFIG_AUX_DIR(build-tools) +-- +2.20.1 + +From 763c023caa5215070047b07c80208b9d99dc8d8b Mon Sep 17 00:00:00 2001 +From: Laurent Bigonville +Date: Thu, 8 Nov 2018 11:05:05 +0000 +Subject: [PATCH 02/74] systemd-units: Also add + "ConditionVirtualization=!container" in systemd-ask-password-plymouth.path.in + +This completes the fix for #27 +--- + systemd-units/systemd-ask-password-plymouth.path.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/systemd-units/systemd-ask-password-plymouth.path.in b/systemd-units/systemd-ask-password-plymouth.path.in +index c2ee420..826a6b3 100644 +--- a/systemd-units/systemd-ask-password-plymouth.path.in ++++ b/systemd-units/systemd-ask-password-plymouth.path.in +@@ -7,6 +7,7 @@ After=plymouth-start.service + Before=basic.target shutdown.target + ConditionKernelCommandLine=!plymouth.enable=0 + ConditionPathExists=/run/plymouth/pid ++ConditionVirtualization=!container + + [Path] + DirectoryNotEmpty=/run/systemd/ask-password +-- +2.20.1 + +From 4de54f598b66cd8d8fc55328f99f3b568cc9d4eb Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 17 Jul 2018 09:46:12 +0200 +Subject: [PATCH 03/74] logger: Add a separator between different boot logs + +Since we concatenate boot logs one after the other in /var/log/boot.log +it is hard to tell where the logs from one boot end the next boot starts. + +This commit makes plymouth write out a separator including a time + date +of the date, when the log file gets opened to add new boot messages to it. + +Note ply_logger_open_file() is only called from ply_terminal_session_open_log() +which in turn is only used for /var/log/boot.log, so this only effects +/var/log/boot.log. + +Closes #29 + +Signed-off-by: Hans de Goede +--- + src/libply/ply-logger.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/src/libply/ply-logger.c b/src/libply/ply-logger.c +index e9b90de..03dd347 100644 +--- a/src/libply/ply-logger.c ++++ b/src/libply/ply-logger.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + #include + + #include "ply-utils.h" +@@ -312,6 +313,9 @@ bool + ply_logger_open_file (ply_logger_t *logger, + const char *filename) + { ++ char header[80]; ++ struct tm* tm; ++ time_t t; + int fd; + + assert (logger != NULL); +@@ -328,6 +332,15 @@ ply_logger_open_file (ply_logger_t *logger, + + logger->filename = strdup (filename); + ++ time (&t); ++ tm = localtime (&t); ++ if (tm) { ++ /* This uses uname -v date format */ ++ strftime (header, sizeof(header), ++ "------------ %a %b %d %T %Z %Y ------------\n", tm); ++ ply_logger_write (logger, header, strlen(header), true); ++ } ++ + return true; + } + +-- +2.20.1 + +From 059390ac569798cbf40a958ea714b15f313b46a3 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Sat, 10 Nov 2018 16:04:31 +0100 +Subject: [PATCH 04/74] ply-device-manager: Fix race causing undesired creation + of non-gfx devs + +On systems with working drm/kms devices we still sometimes see: +"Creating non-graphical devices, since there's no suitable graphics hardware" +in the logs (and actually create non-gfx devices). + +This is caused by a race where the create_devices_from_udev timeout handler +runs just after the pivot-root, just at the time when the "udev trigger" +from the real root is done. + +This causes create_devices_for_subsystem() to hit the "it's not initialized" +code-path for all drm and fb devices, even though before (from the initrd) +drm-devices where already setup successfully. + +One way of solving this would be to stop the timer as soon as we successfully +enumerate the first drm device. But we need the timer to enumerate fb devices +so on machines where some outputs only have a fbdev driver (corner case) this +would break support for those outputs. + +Instead this commit moves the found_drm_device and found_fb_device to the +global manager state and sets them from create_devices_for_udev_device(). +This way they will be set when we check them from the create_devices_from_udev +timeout handler even if create_devices_for_subsystem skips over the devices +because of the udev trigger race. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-device-manager.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 55248ac..d70e709 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -81,6 +81,8 @@ struct _ply_device_manager + + uint32_t paused : 1; + uint32_t device_timeout_elapsed : 1; ++ uint32_t found_drm_device : 1; ++ uint32_t found_fb_device : 1; + }; + + static void +@@ -254,6 +256,12 @@ create_devices_for_udev_device (ply_device_manager_t *manager, + device_path, + terminal, + renderer_type); ++ if (created) { ++ if (renderer_type == PLY_RENDERER_TYPE_DRM) ++ manager->found_drm_device = 1; ++ if (renderer_type == PLY_RENDERER_TYPE_FRAME_BUFFER) ++ manager->found_fb_device = 1; ++ } + } + } + +@@ -818,8 +826,6 @@ create_non_graphical_devices (ply_device_manager_t *manager) + static void + create_devices_from_udev (ply_device_manager_t *manager) + { +- bool found_drm_device, found_fb_device; +- + manager->device_timeout_elapsed = true; + + if (manager->paused) { +@@ -829,10 +835,10 @@ create_devices_from_udev (ply_device_manager_t *manager) + + ply_trace ("Timeout elapsed, looking for devices from udev"); + +- found_drm_device = create_devices_for_subsystem (manager, SUBSYSTEM_DRM); +- found_fb_device = create_devices_for_subsystem (manager, SUBSYSTEM_FRAME_BUFFER); ++ create_devices_for_subsystem (manager, SUBSYSTEM_DRM); ++ create_devices_for_subsystem (manager, SUBSYSTEM_FRAME_BUFFER); + +- if (found_drm_device || found_fb_device) ++ if (manager->found_drm_device || manager->found_fb_device) + return; + + ply_trace ("Creating non-graphical devices, since there's no suitable graphics hardware"); +-- +2.20.1 + +From 9639ed895331924b24670ff6f814aaa952ad5b02 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 12 Nov 2018 12:50:33 +0100 +Subject: [PATCH 05/74] two-step: Fix animation not starting on later added + heads + +Fix the animation not starting on heads added after show_splash_screen +has been called. Since the core calls show_splash_screen after adding +the first head / pixel_display in practice this fixes the animation not +starting on all monitors other then the first. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 7307e19..924207c 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -1002,10 +1002,12 @@ add_pixel_display (ply_boot_splash_plugin_t *plugin, + (ply_pixel_display_draw_handler_t) + on_draw, view); + if (plugin->is_visible) { +- if (view_load (view)) ++ if (view_load (view)) { + ply_list_append_data (plugin->views, view); +- else ++ view_start_progress_animation (view); ++ } else { + view_free (view); ++ } + } else { + ply_list_append_data (plugin->views, view); + } +-- +2.20.1 + +From 75d93c0f30e7455f817c4705af371c743d0b3913 Mon Sep 17 00:00:00 2001 +From: Jakub Steiner +Date: Wed, 21 Nov 2018 15:44:39 +0100 +Subject: [PATCH 06/74] spinner theme: update + +- update spinner & lock to current visuals + +Hans de Goede: Add extra throbber-00##.png files to Makefile.am, small tweak +to the new lock image. +--- + themes/spinner/Makefile.am | 20 ++- + themes/spinner/animation-0001.png | Bin 1001 -> 1579 bytes + themes/spinner/animation-0002.png | Bin 1008 -> 1573 bytes + themes/spinner/animation-0003.png | Bin 1004 -> 1591 bytes + themes/spinner/animation-0004.png | Bin 1012 -> 1594 bytes + themes/spinner/animation-0005.png | Bin 1023 -> 1624 bytes + themes/spinner/animation-0006.png | Bin 1037 -> 1646 bytes + themes/spinner/animation-0007.png | Bin 1006 -> 1666 bytes + themes/spinner/animation-0008.png | Bin 1003 -> 1634 bytes + themes/spinner/animation-0009.png | Bin 1007 -> 1640 bytes + themes/spinner/animation-0010.png | Bin 982 -> 1613 bytes + themes/spinner/animation-0011.png | Bin 988 -> 1621 bytes + themes/spinner/animation-0012.png | Bin 995 -> 1619 bytes + themes/spinner/animation-0013.png | Bin 968 -> 1617 bytes + themes/spinner/animation-0014.png | Bin 980 -> 1618 bytes + themes/spinner/animation-0015.png | Bin 973 -> 1615 bytes + themes/spinner/animation-0016.png | Bin 948 -> 1605 bytes + themes/spinner/animation-0017.png | Bin 950 -> 1581 bytes + themes/spinner/animation-0018.png | Bin 948 -> 1582 bytes + themes/spinner/animation-0019.png | Bin 911 -> 1578 bytes + themes/spinner/animation-0020.png | Bin 911 -> 1558 bytes + themes/spinner/animation-0021.png | Bin 879 -> 1545 bytes + themes/spinner/animation-0022.png | Bin 841 -> 1541 bytes + themes/spinner/animation-0023.png | Bin 825 -> 1481 bytes + themes/spinner/animation-0024.png | Bin 806 -> 1492 bytes + themes/spinner/animation-0025.png | Bin 784 -> 1455 bytes + themes/spinner/animation-0026.png | Bin 749 -> 1427 bytes + themes/spinner/animation-0027.png | Bin 752 -> 1407 bytes + themes/spinner/animation-0028.png | Bin 685 -> 1385 bytes + themes/spinner/animation-0029.png | Bin 668 -> 1348 bytes + themes/spinner/animation-0030.png | Bin 621 -> 1316 bytes + themes/spinner/animation-0031.png | Bin 560 -> 1245 bytes + themes/spinner/animation-0032.png | Bin 541 -> 1185 bytes + themes/spinner/animation-0033.png | Bin 443 -> 1111 bytes + themes/spinner/animation-0034.png | Bin 349 -> 1061 bytes + themes/spinner/animation-0035.png | Bin 299 -> 981 bytes + themes/spinner/animation-0036.png | Bin 83 -> 989 bytes + themes/spinner/entry.png | Bin 367 -> 1431 bytes + themes/spinner/lock.png | Bin 1896 -> 329 bytes + themes/spinner/lock.svg | 283 ++++++++++++++++++++++++++++++ + themes/spinner/spinner.blend | Bin 0 -> 737108 bytes + themes/spinner/throbber-0001.png | Bin 1001 -> 1578 bytes + themes/spinner/throbber-0002.png | Bin 1011 -> 1568 bytes + themes/spinner/throbber-0003.png | Bin 1016 -> 1561 bytes + themes/spinner/throbber-0004.png | Bin 1019 -> 1570 bytes + themes/spinner/throbber-0005.png | Bin 1034 -> 1585 bytes + themes/spinner/throbber-0006.png | Bin 1028 -> 1597 bytes + themes/spinner/throbber-0007.png | Bin 1006 -> 1629 bytes + themes/spinner/throbber-0008.png | Bin 1032 -> 1604 bytes + themes/spinner/throbber-0009.png | Bin 1015 -> 1605 bytes + themes/spinner/throbber-0010.png | Bin 1001 -> 1601 bytes + themes/spinner/throbber-0011.png | Bin 1018 -> 1595 bytes + themes/spinner/throbber-0012.png | Bin 1004 -> 1602 bytes + themes/spinner/throbber-0013.png | Bin 0 -> 1612 bytes + themes/spinner/throbber-0014.png | Bin 0 -> 1601 bytes + themes/spinner/throbber-0015.png | Bin 0 -> 1588 bytes + themes/spinner/throbber-0016.png | Bin 0 -> 1577 bytes + themes/spinner/throbber-0017.png | Bin 0 -> 1572 bytes + themes/spinner/throbber-0018.png | Bin 0 -> 1601 bytes + themes/spinner/throbber-0019.png | Bin 0 -> 1608 bytes + themes/spinner/throbber-0020.png | Bin 0 -> 1583 bytes + themes/spinner/throbber-0021.png | Bin 0 -> 1602 bytes + themes/spinner/throbber-0022.png | Bin 0 -> 1595 bytes + themes/spinner/throbber-0023.png | Bin 0 -> 1603 bytes + themes/spinner/throbber-0024.png | Bin 0 -> 1605 bytes + themes/spinner/throbber-0025.png | Bin 0 -> 1604 bytes + themes/spinner/throbber-0026.png | Bin 0 -> 1605 bytes + themes/spinner/throbber-0027.png | Bin 0 -> 1615 bytes + themes/spinner/throbber-0028.png | Bin 0 -> 1614 bytes + themes/spinner/throbber-0029.png | Bin 0 -> 1588 bytes + themes/spinner/throbber-0030.png | Bin 0 -> 1580 bytes + 71 files changed, 302 insertions(+), 1 deletion(-) + create mode 100644 themes/spinner/lock.svg + create mode 100644 themes/spinner/spinner.blend + create mode 100644 themes/spinner/throbber-0013.png + create mode 100644 themes/spinner/throbber-0014.png + create mode 100644 themes/spinner/throbber-0015.png + create mode 100644 themes/spinner/throbber-0016.png + create mode 100644 themes/spinner/throbber-0017.png + create mode 100644 themes/spinner/throbber-0018.png + create mode 100644 themes/spinner/throbber-0019.png + create mode 100644 themes/spinner/throbber-0020.png + create mode 100644 themes/spinner/throbber-0021.png + create mode 100644 themes/spinner/throbber-0022.png + create mode 100644 themes/spinner/throbber-0023.png + create mode 100644 themes/spinner/throbber-0024.png + create mode 100644 themes/spinner/throbber-0025.png + create mode 100644 themes/spinner/throbber-0026.png + create mode 100644 themes/spinner/throbber-0027.png + create mode 100644 themes/spinner/throbber-0028.png + create mode 100644 themes/spinner/throbber-0029.png + create mode 100644 themes/spinner/throbber-0030.png + +diff --git a/themes/spinner/Makefile.am b/themes/spinner/Makefile.am +index e3102b4..2a008cb 100644 +--- a/themes/spinner/Makefile.am ++++ b/themes/spinner/Makefile.am +@@ -54,7 +54,25 @@ dist_theme_DATA = \ + throbber-0009.png \ + throbber-0010.png \ + throbber-0011.png \ +- throbber-0012.png ++ throbber-0012.png \ ++ throbber-0013.png \ ++ throbber-0014.png \ ++ throbber-0015.png \ ++ throbber-0016.png \ ++ throbber-0017.png \ ++ throbber-0018.png \ ++ throbber-0019.png \ ++ throbber-0020.png \ ++ throbber-0021.png \ ++ throbber-0022.png \ ++ throbber-0023.png \ ++ throbber-0024.png \ ++ throbber-0025.png \ ++ throbber-0026.png \ ++ throbber-0027.png \ ++ throbber-0028.png \ ++ throbber-0029.png \ ++ throbber-0030.png + + MAINTAINERCLEANFILES = Makefile.in spinner.plymouth + CLEANFILES = spinner.plymouth +diff --git a/themes/spinner/animation-0001.png b/themes/spinner/animation-0001.png +index 3819624ea4e32708e4964bd9bf052850d51cac44..6bd823976167325046fb5759916e6883936461a2 100644 +GIT binary patch +delta 1563 +zcmYL}c~H`M7{-5?faDD-w51uES?+R3nn}s7VP2UgR+M52VN!r7M6i~>z$?uR?GOv2 +z_Gr7-YCBY{1WnQ1#LlV7i=s8`K+-hZv|Zd|cIJKOnR!0XJm2@P?=bwllfn-K5Q3OZ +zLI7|?%`5~srosRKKoLdJMXNbnHh|C0;j!`CIXqq_3op!L;kR)_cmY?+%h@T)#*4Dq +zJhl)o6ma-_cHV!AV{+O2txS2hy{!r}Q$@`bv4LO$F$_;6;)6-PL}GZz@^Aui0^Iuj +zNn6NmCX~YAu>k@h{NEwIX$xqzF^9iz$;+I9#29v0i_LSN@mATayiDL9!4U|gsk>n` +z8}yukG!~oB1~T~^UZ#kX!}lc-vIIh3SCiZpK+Ob_Z6~tx!2ch`5kl@V&KYbR`FFdN +z#bpb9X_-8MO#xzXSiw#ZtdXp(BcqChpj>-mT<#Qe@z%xGJMM*&}W-jv7_u +zg`T$W57g{hP~YcJFl%_1z)zE$<{;OY4YX00Ur7^U>FHF +zFe@j^P`iB0P%AV{v-y0!rPE@uxJQwzn<|K?SD+^3gXSUfMs)YOG711Shqg +z6^+&^Q_u-UtOP!Va6uist(ImDTb=4Bf6!Y1o##I=m8f;p;=21LpE@^H<4uZ?%3KDM*1aNj +z&>oraI}TN&%|o(t_kH(Mf&K!i0srcZd569{cOE=qnK}jCMFC9lW<+?dy52 +zht9f3=Pqh%7-5dn`yyDBXG6%Ry&ZuY=rGU+4(o#rh@VZS@+a#QU#LSaoBYIIRzKc) +zyx&MXS$BP-`zF#wqCJJGn2!XLB0s|?!UGYP3&FE>MSomfycz2l<1UWu#igc{p{klO +zIONTJJjbP(G5(J$Lv;_cRNnaE=ojU0Ve!Zp+WwM0yA`wbiE%jD{jy~0ZcoCL?&W66 +zFtRy6b|pA|^TJuX5-~%ci)ysGSi>H^G;5iim>Q*TyZQBJU1$ST*<*Ku<(0(fIi@KB +z+q@e~9@Kr}Ogmz@kRJIVV^UXTGDcUhY)VjPSFI6_t+eY)i)FN)n&qS0s1^S5JVC*d +z6l2lJI|rrvO#8EbCQr1+av{S-()hI0=%kK;7Mj|$3F@VInZ3v$+wTMYR^1p;>?U+l +zEi_9rT$(u$EaRFoJakcW8v7EA3)UsJM{C!4c+w( +zC@*YNJJ-oue_{LzrOH3Q>SO%x{XwnRo2mh4RK0ve)*i=X?%(4fv3NaqDb}BBTs!Jn +zncc=J&lm)IRs|(k!zFW+OK;zFI2~W`Y{c0Zy{1(yi{jdiHFmgMC=3Cu-n$xijJ0v2nrr8B%{ZTTjwR+7N#MNsfvLJ2I +z2A*Ss?5)S*IQ5I|W!<%;ja$$!9@aAw-w#M*xbVXpD#&Elbi2g83Jn>r`sx-m&Ag6& +zlIl}<`*p@bvTO9{ZyUi1+VhG{s`*R0401sl#1o(=8KO$yLv1@NsjF)J%X@(dq8Z| +KT55e{hWsydn70i8 + +delta 980 +zcmV;_11tQi4Cx1uBYy+1Nkl1W@lHcX$V4d?vpKfj>Ka>>+m+n2K|4V7Zrp+5rx@AR +zGNF8?i|5syZGYE+>4KP*T&2HZ`;_g|d3O&9E5fybP1_5SRwQA2F-)(A{S&|nFc}Bd +zazC2L?*NOETx4b%xUaDJcc%koR3pGS+bdDDVS73Fwt$wTrtND$P10H#(r%nwip((Z +zK!U5s-e6fhDpQn~C-b87d>2>(7J;FEsiCzV92kkA4S(Rl7#_^sP_layxDkHs?S!_+ +zlCH4|-+W(}w0g)cIRRXV+%PbZAm%%DG`cXqX?s05SGcv0*kLOu#(*v0$3WRW(kv)i +z@$O-x@5tl;uqtVH-(eJ%cI$GEf@Yrs>pXC#C|4Ch&r6z@?Q!6Is=!?w+ySmh+C1v0 +z2HpsSbblDH0h_?(M(}FqQazegy^jQ(2z(`nTsSiXoKWFyuR+s11_ZOfY*9@VZTgRp +zb6*AZezzXmGqxX3GdlW4RJ700qw>J^6TsVPLO%na16L*O9Jr8Vo=;_}Rm5x@VtFag +z4saUS1|AK`zp;H;(tOtpq~_0NnW$QEErVqVSbs=k*_E`>Bl2f~b>Mg4HQrQe3r-u1KR-bs_j`x*MWC|_kdqhlJz*UhXc0~ +zb$=_RS8g(Aq8MOP(zfkqa^C`;i=m%@M{@s`?RO;I0p@If3p^c&uI|~0B()?hNxEGc +zPc=*w^}Eoqw6?PoYy%$_JLHRT?7tx==}Sp-B3}Ss1@B?t%?zc! +zx8kxx-nC}+SYiP_F5rB!%tF8a3#zl+qfPwO;ly{qry-m&bo%>imaTR^L|f@Hs(THo +z4}c#ce}#K-Y`>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;g_J3rfpa1{>5OhUYbW~|= +zWdJZRIxsLgFfckWGIh##cmMzZ2y{hQbVhPvZDjy3GSO_91poj55p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*ylly-7qtR9Fd(mrZM)RS<@gG=wUpYS17-;zuP2tpFezr;{gd(hl67IWu$S +zo|$u=H+6Dya&ls8YimMLkHnUJU2B|nV{4wo*0>rId$SoFgL(~guf)HX&$!WOG=+@R +ztK{4`+jKRmhis_3C(#Vc0$2oxz>7dx>F@_dT(O98qz1+=kNOV66yO>VI0rrkKZ2{^ +z9@qezKz}k<_xe5q+Zs!r;c7uU3aB;`&43TUPe4-1o`eg;%#R}*+T8D207(vllVA-z +ziM0A}6Mv*O65`kzu^XjsqLW}2dRtb{t4F +zEI`{AAm9DAe +zPb;t`PV%~{?^2w^vp^oNQ(|>`del@afCP4E=LXrm#O-~szF=?&Tr0Wz_=xSLvxPjw +zuEIy&VpD*dtKcTE7zOB-(={?PASsE}L?q{)YG|H+#p!K31`u1(JH$2dVDC51GRLR4qZ( +z@%Q`E{Q~AWU@mhgcJEZ3Oe?fqfe9(Xs(uE`IuWNJe3(n%eT!h-A*E}l=^eiU-UJfc +zm{*|PT&sD27MsejH~EwQ-U6xGN`Le}J|%a0&RQSD#%;EWztw9ay-}+-7`uidT9Cj#YUg +z{RB!O=WzZ4J_06^+&D>=fknLs-U1TXrKI{Lv3uh@=Omv4{<`WDd8F;#^nV5Dun0%X +zNWW)m!lT-e6cXJD*tru?W`UEDz!B?n+!lKW7{5$zuch&HUrMV|TVGZ8Anoc~a2BXr +zsH@{NiNtnjVL~$Pb6_6Wxwd`4Y22;k>{}7t`sh9+&fTOsRue6O!{80z-a>rYcI_&W +zS77)0SAd1)hwXaE!;$>*HGlRYarPw13%BEUz}vuS*r}`JLULEf?L7lHq;=7jnQ +ztD8T?pg-OuaA?!6bl1z8ugo?oj;k4HFFQ*|+3fLE47rlJ|dY>W+}!%??x100000NkvXX +Hu0mjfH5k+} + +delta 987 +zcmV<110?*V4Dbh#BYy+8Nkl_ +zkP23$e}yYIqTnAOu3Wjan{J95#fo&HOL3)0>jhh}Hw#+Z8RwRalW8-__aZ}kP(B4520FkmlA5E)DSr=9k^xgd2CPczB-_<+ +zpaM()&7OOcK&jx~&J76VhvRt+xKU(h!Mk~2HVo_nEBzE?Lk#GK0t3^wt2=-67QD=;r}lKY-hIXwkLx` +z`C5xeD1LLvet-VXwoAZV$jp*^x%{&2gSKbl>|G?x3D*T$wr@&WmxS%bV0tOoKMAY@ +z^)O%~-dDr(JHVnOCy|*04)hYU+y{v068Lt2j-;mT%RnY+BMMSGWG=^@ +zeZaj*D$`3$r6G#L^$_CNZ-=#uz&(FcLmPcKFdk9b1b+^N;!4QMA~Gw$?|F1oAY>xK +zHId^R|5qe6c334Rfd`Vi4o)me+8kJjBD8-7&N*(KT~^pOupRPSkx6U0*E{Y7Nh#jm +zsrSj<{Q*a7P%0{6X|+$8ZH(GzLhgYANB@y4+qJ+;eGF^^mnF4!seBB0WI(^^09VU_ +zRX1UNQGc;2jSzrJct4i(6ng$EIRv#n5CAmy0KqgcohVF|H-P0~0!pJ!J+^0UFW9b( +zG!Z4`v$|Uz*nSW=9`b(!z5}inWkb17Kc9&@kVUx4yW~MPWNbx$IRsp?{f(qQ3L_9X +zKOe(Hxu<+CNxEhGSUjKaEq +znGARecr20Ml5|ee#Z-PaB%Nk}*MWTztxtio1%)N&(wD$jaehDW@~|2*Y$`q$o^*g; +zf%hbB4;W$rJ`N5EcocYiF9vKym<61c^i*xZ2Z_>bl5`39BF4H>aAdSkGvG7e)gb8S +z1^cCBWKY-WAX*bR$A7VGKWF>A?VoJF!2hvqKWqENVGU={`U_(I%XE4gBIf`A002ov +JPDHLkV1lyb#9jaZ + +diff --git a/themes/spinner/animation-0003.png b/themes/spinner/animation-0003.png +index 3f1fdcdbc5a52c2f7e8d2edd783476c233994613..205380b1ca8e000f19adb89243a71cd48bfa579b 100644 +GIT binary patch +delta 1575 +zcmYLJdpOg39RAH_E~Bh=5kt5MA0c^STZaoyVzzb@f%yoQ6!aWQ7093 +zG9*bZn_~!x+;hTCgj`$2=z6Ae&T~G`_w&5Z^SCi1TdAM`IWLh*O`s35tS*uJv<=JM7_a#`A5cU$-Cm +zBH|`_!{?Egu3h=p!d(2bw>1}KNpsSeg57@7)vQaV^~;NKn7e7kqP)!TbYm~ZIn5_f +z9$)|~gvO-$kF&s4HsU02xfSbzd6wMU^KSApeCg%s+UQ>G0ceBtkoVDGNb>aj`F_ZbayEo&Ys2sXx^}?D-)H?{P^Lw&UsJA35k^lYP2KzS5}{?L`*{d +ztg*~Km4_~WG$59qvS8_v;XMuv6A-#Ukt=MQMqt`&#co+WKfegP2s>~H!W0BbOInd+ +zw{Oe96JC7Xqln=gSm%M5Dc{(5qqiM4l(Ko9FI`^MP-RqAV>Nl}hbj0>rj?&Zd+*Jq +zsrM(EW;Yx~_BXT+m$x(>5=2ks!>I)^R(sp$mwde^P9H9}OC)0Qp~Q7|{M=aW^)=a1 +z-NZQ4a9zpW(0zp$;u9V|$m@sb62xjKk!>p|86vjMm(He)HfoIp4BLqB?6E!6ggg?f +z5Oq4r9}k^#l#hJFi=@1p2IAKEFqFuJ;az}yJV@t!j16|?o5yHxc(y)dMR-s6`8%3W +zU3c*5t)OAs!;qC7YvZegdH(Z;PD^ezO92dCoYByx9#cR}+hegM=EYeFZ`v^ofd!{s +z=Sn>sMz52K;(o7!=Kx;v%|&pdT^qax8hO(dZ~Wzsbz1s%N<_v!Qi_@Doc(vCW#9rm +zSZ{Eth9%p+|H_S~`^qQ0ZqJbSd3=Si<9YlTrZgp>uKzY6?KohJXPEVS9!D|{bIk7DD60rI39qR;KDWhc7BzN( +zXJRch?VD;~Aae@bEuej+DNbs$+`<-T^7qn`&kO~4@@`2(cm9eSVLR8Qy^5|#fL3bd +zz{hzL&9cC$+^aOgYH%ho<&A`o7=PSXGy?yM8b3sdD+M55Dx@-^EV7+~e}Muc)uM8K +z+E&FlJ$+dIvSK>9$!^@dx^GsiPHfGVbR+uB?-}{$@M{5MmpHCc78?}Oa~p&p1cVYe +TD_)@b0s;4(UOU9j!AXAu;oZ(L + +delta 983 +zcmV;|11S8r4D1JxBYy+4Nkl3NG6o#)eGmZJ4d^A-QZ7JA-MX<35Mbwp` +z3+Yx@T?vY~6S{ZpFVKbJN(9lZNNEGoUr;exm3xUbxcE7@$EM&j3AODX9pqA7bwVFlL +zJ`aIfW)z7+sehxBRLj7Lv>ADCyusa1h8o&}zYiHf}EGS5E +zv)}9scSn+r#(u3Bh5jAuB}Rh|nttqtI+=X+LZb;RMnvO~&WC`r`^=jraJQ5XtsVhH +zwoiEg0DsB_@#L2QhhbcbwCH1^|CTBpYuZ2W?4fp_f8yL<$o&shMx$0H(?l>?4)YJ!^#at;k +z9s@oF-c4tZQo-&6Ujsj@uLG+QakEF}r-1ELy?>=t)FEIiWqDj(1D5t^gZiG@P}kK> +zbyfXRJ)iF{tGCq~>Y4m)PJJ$)pHV+iKUQBUY|SsIuc{Z-m(_W7rW*wlIXGItRp1NY +z$B5Wbp9elHd^b^`YD@hrtGYcu&Z&zLv8vumB%aMF`zX6>PXOO0RBOOOhxC4wb732} +z4S)OsT+Yc^2hIUM04oXgG;l$^nout%^v82f)b<1r5f78=PHNr)-c0A)z~?#tqp-A= +zBBH5Y2QDR&XMx{<#k9YZ_0<1Pm|VS|g;WN90G-_%-*2VPHNbdEl-14PZXy +z`X2CAL^KNlSd`m{0JxDzm6P|=M+so7uuu_y9}%|>6o8076N!XYxn*Cep2f%=0ZEr`3FgS7)y3x2>k#6002ovPDHLk +FV1hEx(;ol; + +diff --git a/themes/spinner/animation-0004.png b/themes/spinner/animation-0004.png +index bfd03b445634b8cc5ec7755643ccc6f7e36c226f..6038af8bd429a28118214dd308533e60107d531a 100644 +GIT binary patch +delta 1578 +zcmYL}eKga19LIm!keD!Tq~s)2i)|Lx?m~Ge#Eq3wVly*~G22wj7+Xap6cuJBbVU{= +zd1kB2&?S0MqqN9V4|L_}X1Cqx-h1x%e81;?&inN~@6YG2@2qBnPNoG1(4y@PWB`CR +zbor?PdHKcw05~(<4>LU|Q6vB!5kn=xk5i~r0uj!j6X9eE6Hbd_QDfqm5pZS%iArL? +z88k|CG>QJ7+J;7vqQgSD-C$Lf@p6?Lfk^`F5J)r}iGwl| +zmO}?9R1$zdVE(<^^UI$4sMyLMyU+>Ca65YSPK3(SU-n#87M%e6BenNA1)$3Tf7Oa4I_LkPwg^Wj+~Z*tH~7)cB1VxI +z<~RbCrcwZDhfcg^3D2M%jpz2*}sa5t1@>3Qvo6#2o1y^SWlV7F3J&F_GZ +z8O8RUl@F|zcV);u9EYFQL@R&+pBvgCy*~QxTX*sM%gfr25JisP6FCf_a`v@#?G3ZV +zw>ubPzq9x#hOkX_&I$wqbx$Y5z_GZB(_Jq_CyI{FmHWQ;`IQcyIoMa9J=fg-oWIY? +zyVtG7f4)1*=Fkmx{w3D9@exAZ2CPnclB-KfE4LaiFzHjgc>SOCwVCO$cF{|HYT +z>K-p1SyXk-Csa|@s&pO>uN~B^mGc)# +zUI4}0&##l#5rC*5P)xE94V6AVS+@YGveVsoFvk=yodQp*p>oNK%8nMvxt-Opc;1Z8 +z5*OR$Fc2xX9M2^GoPk}S${Q4yCQkg+&ph|}TzOr^eva39yil`}mmv0dcD|{k7(z2( +ztM!0L3*1r(L$20qK+Nt**8Wzu>r7?(r7818K(W$6L-BCJ?^MAwmnatVp;EOa;|y-C +zB#@@h)`%Lef7xuk)2;Z%b%{yg*O+9FwBRN!-TV2Ao#E0|%mDF-JW$T>E1UA0V9Pcb +z3Mx5VauWHt%xH}5e1@a>=5ZReI6icL;8@24$#v4yOpt%+wK3iMW-FF1&I`X_5`-_Q +z?W{gZg(L!zT~CZ?y3?eN*!)JSur0)OwpUAhljp*~&RO+ejnkh^1dNX)$VTcLt=@q8 +z*E+_r^@l9bkZqAi{hi|O`Abw5>ChJ +z5}Q^NtS|ovr`g~`jnz6Y#rlhhhZPWJ6k-@Dk8iOyN!uPab<351B*khIJMy&N7j18w +z3l#N4^3-7Th>U5*^H40FGMF{Hl`Fk_VnrCHx-16N0xP!$GA39Qs?43%%LT+bN5n$VMt@G6l#k#8Ws4MWd6d&GvQ< +zSXIAoQSK4@6+(E(Eg3JoPBmigD!&x0eS`|VAjCtTXFkqB3~o(@+a)VAu-hD(Rbk>wia-yg{tWm!%L$2g`w5`Xovtng}lm_1n7V8hz- +z0OpKKZb01e5I|F9gH@k@xnLjiyny-%?d4gbfjCAGpF(=xXE&bvH+0+E7XSbN + +delta 991 +zcmV<510ejm4D<((BYy+CNklXOcO<>Ou9tF96#O+h=W0 +zhD6m`2R4dZGk=@?`|5AI37n5jMFaJm?ea*MEO9BRBJEMF6Syr(pC)zMv~MvaDO4Fo+y0n0(XJM3LW(^GLcLt +zdiMX2)IOq0P6Ce>WOR76ENS~dAqupA2exymYj;3}-3@ZBT;oMxqsn@qUJyhWRO?fY +zCeS(PDk?9(4m?v6&}WjqI7Y)7tJ!W#+LY~=fsaD4Zch-+kna^qzYOU7Brq2ex=-SJ +zz7 +zFW7!!2K;uXQiR~-E+raa{$wKF+28h2K +z4!DwaU?csd(>H)<`MbcYakdj8E&?9|KiYmOf`4+eF7uq($?chr55?wqddgy@4J86E +zCG&fEc7e}<4 +zd0SpA&8A9sE2@`a{g3mf5G-b^nb(lR%~?3L8VnRp*C=>PhFn{uB5Izz$eL! +zLg5;cy0+(m$AaW!p7q$@?>8Mcj?h-$DCUD3$&^AlOOaUu)`CJK<6HAMQ}NTlrE0_i +zt{0uny-iILz@OP`7USE{0qlg;2ELYbt61j4L_MWk1y0BQ{?MOhzz@LtVfN2`oHuH8 +zem+FIR}yaE03_`IU)F5@20WhMD?R6S!-xOx>o_ERB>n#P!#+Uj*1tb_+%qDUIF$eZ +N002ovPDHLkV1kE);u!z{ + +diff --git a/themes/spinner/animation-0005.png b/themes/spinner/animation-0005.png +index 16cbdce0ddb19f52c551b3f852543cef55fb862b..7a967678a0fcc44fc8238e53a5de9a88d0ff5336 100644 +GIT binary patch +delta 1608 +zcmYL}dsNbA9L9ebB9yl>Ov??moNF4OWP+OaOP*HSByW`p;ZJ1>a)fja^Cxt(sT +ztu#DSb9uqk#2loel@1lP<|dSlNv7#?tkkJ!4%>G2p7%Y^InU=g&-eS+yKXXOD%cGH +zDAu7^HUMm~+ITSFYMBiH0Dhd17)~fX4Fqs0=?oC}DV@Qf(s1ky8ZMd6!Lib^8R@4v +zDL76F$Ny_=ht2gwWX +zwg@FwRv1E-8=+%#1_%Q*eHnejolTs~FO<2o?etELa +zRlXk33QXR_PkH^)uGF77sGT>QpA-s(a1Z7SSN#uB2PbEuyhj>7k92iq_Mk7zri^)noeBsfH +z`gHjcSlH1$p3MSe=J5am@|&hu_G=JJupAUtbFVA3I0N%=sE^t_^hLMpl4XtslYf7m +zC!IcNG9~vJ+s+kR;g7?x`<XOHEfe%VMerUWvK1wgM2JJW$nW +z@WV~jN?D&DN_Ca3fwzntkHC4-5T7_+3;AvLEsPIvv^Dgk7V>GXo*S_J%#Jakp|Q@@ +znippalN}EMcCtrtc-mpe!pFG&9PgxY0#77IQ$FT)J=VnO91m68D!RSkOWZU!O(+qe +zDlL5qx*aH63RlhX(y1V?gi`5wQa7XNZzy>;F?N42YIvh-b}-3O#K +z0sS(szrM^0Qq^r*C%r15y!%c5KK%`NzXTGl0GalBQ`w9I2SZHTNmNcIOx%mCh26oF +zl8Y86S<$;@l_ehMm4cqip#JJ7ja1tl6KpSO^#b(eXaUoX8&(T*9$Sh1W?6irU0v7t +z+Yb3xl)a@||GPR8IV$_Fl8Ixn^9c7`QC}J7VsCvp3{=Vk-ESfuEZYQkdisXfD1I6Z +z??Wwcq2UIvHmAdJd4nvw(a4US=9qSUt%#lW6sGHD7+ijT)M)u4fP=L*)m~r41}@)3vg7uAQ)$ +zOKo|$XBULO7n5dPdHS3-Tf(KX$RGw%dT6bB#e}#CQN=b}+Bw(juaAq44*JnQUg7KF +zSm&*|E^pg`jypSDH#aV!4^TAo&=%;Sk&8p4G9E7~)P(iv12aN~Jnv=QkG`FS>{K0` +zI+Ap2LC|tDL2h)%ER9#9dzp10XRn{;RaDt+lfpA1lDk%T$rTC-gaygmmqE^lZf$AM=jBhl5&$M>MRaw9gFKHh=dt96hd&9)X&319hnf +zTXW(v-(>!=Nt$<-ZXNovY>ey|U2Yr0XPstpJ{3sh-@3D>6w-pFI#pYtps`rKH1mmZ +zazF?{g5Jr&HNKwhx-ok!OpM5GecZA?R;@|(nixy0&P6z~LR2sruv*vaS_KyrUJpw` +zyEd$d7ZcoVS|sSFo|i+R_x6^Yj;zoktqQrdeL +zVpN>d`l~G37`wpht24E`SKhT=u~Z2zN}SL-+cq-<^_r;;k*Vhuke>~9aM$>)4)b`E +z*pl<#Us%gTnsrC*IdO6517b>U(yP1svTv$Q{UUg^Rs6)fi17fcd|ZnDqYJVrRsZ3U +z(#8YbE~QZo{lcfW&nlZ_+s|qd4<=Py=N}Z^E{*e;-N=>J6J(i#;g1BuLyiWE11bE! +E0k~D~SpWb4 + +delta 1002 +zcmVj2TH(JM0As% +zt4?4Fr~%s(o|`-X;23bij;4Vdd2!}EdjOdCIRP8P9F)cc(6xaca9mPtg4Wc4S)Y?_ +zP&9yTpzTaDU|!NV+}!7P!{?iY1Bi$ou#!~bsCzps`?}xhXMbx{|MvtSsUqo3N#`V0 +zlXn`xZD$m&LVsy+k|dRZ1=|c@%jf#`GfA_Oj{DtvK=?ZF39t)XmGnVGT#5)JtpZ1Y +zve93+@mV`;`gzrvcYw8sP*RzNWODumW}3;2|Mq~VfsZ78Ea|C;Xaj4>?;X$m@4z4a +zzvDZA^@wOmIwa|&`J$Q!%t%T!2fPcsWgvAudTYR^z<>L8UW$n35DZjY)fRBS$9T$4 +z!`0mYZuYAaIY!O^7lBuR!*)6aoR5evCS=Jv@NnW-#?op;v_?)rM0^cg0Nw$9hjR1Fr#h6X#ce&m&?<(hI;@ +zU|rH@5wR}m&_CoEJCbHx_L3?0Pdl5pdY0{P5!mUgVH!XsQL3xJm%vXE(Ur6Syljds +z0e{ny7VWSlX(=f?z?`Jbh-gc??f@3ujy-Ca2Jnp|YXUzH@b(!8*z|_94m@I!$~La$~oCT05#SWb{W$Z&b>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckWHgc!4VE_OC2y{hQbVhPvZDjy3Hr4@L8~^|S5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*ylm21!IgR9Fd>mrZM)MHGgU*BC!bD4G^sh(;~CC~ia$q=XjSbm_-d5US`# +zTnhdH5$O+b6GTcuT#4YqML}D^;!29Of{RdMWBq8=+JB^`Z@jK~=6*8olW6t8otZgv +z=A8SSInN}So}Qkb+T7fnQk+Mk%eoy~JN4SOeq!6&wKmZgoyJi(Zw*~5*>CrlkI;{^ +zr`>ow9wB4rt>oNJx{`A1Bt|QE25tw+E#Uu<_!Ikg!CO?~3gd*7On +zM=SGBBJr2Ot5kJ1na6l0iV$Gqac~$&PBLk*Rpx#LSHUOXYj7TD;}`K1H~{9sP;N!> +z8aPY5kBL>T!r08WdH{t1-T;Tdbzu1|xtUst6JQB^3v@E(O!`404}+J$^T41(IfLR^ +z&VQ{KS1A?9g0-E#AN&QB-z)5akHGub{><24S@ZC$QDOtU39Obx?4?%jWwBQRHTx-F +zv-0|J*laD~&A_tTJdS2~0xY$`;{bgT*OI};&OZu10QN^K?p=(coXLVwwvW`c8GF~l +zL&tFLSTgtEP?CuH+U=6~3h2x0vvTi&AAdpdBm +zCm|FPb-lvwi(nBf03W84kSkTmnYIV+!e9jc0PDa$kokAuYJ%oqg0VMImFT?=wpO^> +z^I#6Qqw^sl&h-Hkywy2ZN)L3?@~zu25rZppW)UYD-53T|7YU&dRiCr% +zxm3XY?}24c_uB(LKo3}f_7J+_taaG#Cum0Pm3Hl1jH(l}T?W2>ijC-%NZ=u`2mGrf +zW5*C{bso-M>!@T_nfdBT!UxD-Ab(!RO<)#0NflA( +zbf3*RCsxv@~-ngB_|ZK|fhWoEYe7;M44@r8D1eE0IsshJQT=e6S24 +zQGaVX*GAGdv7@^5)&}wVzlzXXg^obRn%yFM`+>n%fSLJFodtV=SEKv@(yX!7?kC`S +z6<94vXtyo_#v;a)Z7(YP=8-Q@8uYygvUsmgR +zQIjmXtscnTIAZ8qa1wk2EPtbc{B3ApNlVB~75A)&b`r78{fZRNXnVa4?uI1l*i8%^ +zWkbeb_Joyiu46yVWpEELfPob=b#3!07l6dBC3s@Qzwt`+Vc@LwqA{?^?gsmSck2Bb +z%GT~`v`w-xZ}{0Gsp +z_r9Dft42=koBYy+bNklZ&WMgZ6ZIzStE +zP13UmNX-;*%!cI@Q5L}0zzusc2fQh%HsYP*j#xM?o23Cn#694BpapCLSAZ9Xcs~P7 +zC*I#3mjC+zNPn7?bXC&jzSjB@_{wK9;4MkhK+j&rzptwbob_aDOA|n(jU#GRoK8dJp>Gq+93< +z;A7x1pcWC|4&jXq*aA+u8zy{LI5Mliojf`*;F62Ls}6O|XKKJ35%J9dSuzi~5-w-~ +zD~?<-5k0$RD(8VB*oXiHX>ppBwYaB296}Wo&%@?Yrs1Zu{fsjBft{{dK2!L +z-!m7-x*4q3Co=iL$r1smrbJb+U(HkSlv9wZn+)jJi1?{w3Z{Ug1>0M8eCP#}lFmwc +zq+}6Jdo~zRJ#L7WOHQ-T)d4CI70oEg;H*z46v;bTL9`|1@_jGNH +z0Q78Jzyqe@mZar~Xb+5ltM)SRq>XLca1;0$_zsu_I+p1o&wCcFIa7MpSJ11#QZCbJ +z1kRfEc02)X12=*1BjT>4(+=ypq?-}ZG3bha*S%jc<^CmU%|K@Is<&jf4dgxmnGx;+ +zi+`SkZbd{-Qo}O3ZBH_j%)C9nWiRuBo0YU`Mf}6ne$u3*wB1txza-xO84)|a91Ba% +z@ohg3C8O7r`MzUWp8!rtx^4b%N!oNIx@r4mi3oL^>;84Zvf457<%sAS*nfl-5t6jz +zNabVsjF}YYygAlP=p4@{lTXV}(aKphXK}z2qr_;`R6Of8+I4!Che@i(w-p1Hb3T0- +z0Nq5}oBcgp0HW=%SNaRC%$HHqm+Terb`*Ra-EpCINAZ0&!keCHc+gsRimEo2zSkZ0 +mIrhJN9Vg6JG0&^a9sdBIiOnoi0>*>@0000>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckWHwB=B_W%F@2y{hQbVhPvZDjy3H=zb>iU0rr5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*ylm8c9S!R9FdxmQ9P?MG%K~#?|$O7>SDpGzJNxC&@)r@Q{EYdeMV|2k{`H +z2QPjBk6t_k4*?GzL=Xf)#V??s_=cd6gBm0*YE%q~#($T%?q;3!d20GM(=$6J1;6R) +z>Z-1nuI~Q~27|%U_V)IYBp-?_^M360l&jnC6Wv~~*NJ@MLqVW%6#9)K%ZTyNb;sED +zd}Pt@=QA=li9kMNbo27jXtcumjo>zL09*&ogEL?ad<{+xhr^BD{v!O&Bj^p-a0$n& +z40nJ>z<=#v54a3m3arEk{0j`^3-C7hfCNr6?np$L)cni_5a*6y89g084h{k5I=iCr +z1~5+v<`WiP1Rqh6t?WCmOpuEMAZwjG3LXP{!8xETnO_AjRWFR$9lvLh909L^bNCwR +zPck5BVE`=dX6ybA}7jI)AG#gBR?LdCiL6sJh79{C;p3_!X#g +zIq-}vulz3HW>&?~0RNAyn#nv#RhN@_lqZ4&z`~v2fu>-y>GaPw8r)yNMmq+60IuHv +z4ueC$hMgyG&$Hkw@NW8{jnf`LU}nz&ubJ1&=tau@IsB{OI5%hM7NQL{p0#3(fS%x#Q5}wZ~;FYloX0O4djB$*toI6U&v!U~j|CZ@f;D0_~ +zf**tTTX3-Bm#r9n%+|(BY}tw5YHFX|n* +z*00M;8EY~(k4-gU>w%xp@d&)5o`1g;@mOvKi=J1+Q%XjCV7*MutWB-jL)0pu)9-*4 +zup(AR`0+VNkkzosG#SK6<{2Y*j1BwDRK>MAf?~$k#H@I}-vgV` +z4bK7}k-veD()D03Fk6qv)RJsD7~ZT41YLOCvdf^h{LL#>qeF!yh_8@quS +z8L&?4!^G(KLNYi5UIPZ5ihsbCUA+TNbl&?^u_#eFaw~NB8Tb*%TXvsngIEFD=}?)G +zJJ<1UV6{9J$!6U25gJd&jVGUk8ONC?G8emGbYQvnfh&PzKwjCafxTgHI;b;el;rdI +z_TO*`<0Jbkua#aw&CKOh2L4wtGlTIMtb$HFdxMdDx;-8%q4Rb2v1j=GOvCZ3PTOrv|g*ypa{fsgs_sh;%BXjN#|!7+3E^-p`dqUYoW3 +wBFp+@?3Iiv6obsOb}@PMw2Q8?@Yyfpf4bee>+G&nRsaA107*qoM6N<$f`KpbcK`qY + +delta 985 +zcmV;~119`}4eke!BYy+6Nklo+~HUJ9B5I +z3(sag&V9e0_dU;ZE_o +z94N2;G;qdy0)}(90JsVKYDX);N0JsQY*vBHNgcR|`4WhThrs8+K5zuQ23#&wpZ2~3 +zw36!YN5pgpNPlWbdPCBNq{ZZ!8^E{zo&g_wf8^ikkgeHg4d?;=#DBePFw-G?1-NF% +zo07hWh?^0Cr0c+|hWBOQZQvW=17I2WLDCX%+La#xI}xD-nKfXkIGAYy3&635<|*Ks +zq+7sO5%HU(uYnI;*#cNw_iGo2eW +zJV-ZyFMSjn5pin_Z#132!2HkwPB~}|cm(VMTRA#W;^cYY9pD9E(GDBHClT@Elq}gc +zigFAYxt)j@OeCU+_*v2)z)Mc#IpA-@JMGF_nVCnnfnHwqiFg&2G@QtTi1=wnt@yVc +zla68}uzz1n5{d-6-y`DBIR&fZlTo(%5z!Ax&j42o?Z^|TnaQq4#MX?#7l3ES=uNmy +zn{@~11I>ip(q0`+AzI@|E=97qG9b%aa0z&_5Ik49dl7MW&K4}2sG>x~2B!Fl4(gIt +zCAH=V-jvjqG+A#ZI9LZRd5HSJFU2!F!M0`F41ahC+z0j}VpMq{k+cF_u>2kyreQ&J +zs@5oZe#s}SC+R;#lu~g9JZ-_rhi~Z5F0kc(9*;x9m5*$*>WfJ|VZ>wm+RnKlMc}NB +z9y#zZrB6xcJg7rSwZm76Moo=h@qqt7gHm(olttmE$k)!yR*I*)Jv{elgK0A +z&lzy7>b;=qR@_R&>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckWIF%osW&i*H2y{hQbVhPvZDjy3I5D|#8vpg3by_Q +zEk%Vif|Xzyu~HOaEX2k_0^%hGrxBykpfQ&jCpqKu?0>W0Z`S$d#0Br{wbx#I-M@Wi +zadB~RVQXt^L6Q$emVI5To^o}oo#F04DJVafg8Xjum-*ZXNlrs9IzjpU5DS{x +zpJYJN+yFS-!`Um~DWC&OYe4d57spn}>~8|sqknY{-UDw^36q#1FSj0*$aM5Hcm$Y% +z&UI+UQk +zbbb#w1`J$&OeXLu_z|q?Q-6Kko&f|7*=t}gunju%8&Bzffd3Gj0aq|G;m%TD{R$2P +zTYvWga6hK65WI~3c>|DIN!)0N{SmMN_5-uih|xY!Aj1<@&1Li +z7PKMk8kYTTpwn}}j4py-z(*LDADqiqDu0O>h;wrS{9biB?{FVfU$g*ZpaVeX%FNnF +z#?^tlV1`|HOqnbdQ6=qK>G%!nN9hw??#&*F9t?ESw$$7by0|3*d|aj5a`V25LL +zhakCQ1-}I2HuxDo$oX`JG;A~o9kxG#&h3>Cjse)yMse(B%qKw43ctp-&5iO-I)7g8 +zKBq0{2M(TxM(hLR-T?F=tDsh)wI&s?92)g|mUVb;0|sIVJ>RRc +z=W$e>SI6iM)b;&YegmOSkAYvo``}FOVQcyzkmUm$JPRb-k!tvQeU>0ROd#Q1rS5bG +zuK@enYy+O`mA4`6B{n)0d=D&{ynl0W5bOc}OUcMJfm9hz9pv_URzvL}>Jd47Yry{N +zIDIpqL!f1z>|Mjxv$1>}jOQWG%(6vH5IX%HI0rg+`W+01@lmRDAM0GwP|Y?@$H9y* +zd)|hy9M}eb1C%=hegy_8e~2J_L{5W^9&oEdZz1A^W#pR)MnQs+m&SX7*nj?niVy-I*k&Hwxw|ZLj_78Iy(!@RtJ9rKTTWX +zqvDh8-r=-82HG66O5`x{7gE_=szISQt$=HY`fKiD@)1+umw^dwQa_J0z7i`X|nazM@0UrF0y$^G@TLh=TqW51Zta%@K6nncUG +zvp2cOszDuDZpppb*?0d-a%c^}VU0YWuR+_2%{bGpeC*3N?^S_ILzMC=_dtA%_JOpd +z2IEZle%JzS`si%34z}VnGWRV2|77D~_^ir8%tp$u$X`tRF6qoRtV`2AGjBAuQTO3z +zD&VagxJvV?Q_re?biEgyv5l(J&io^#64Twb +Q!2kdN07*qoM6N<$f+yhGH~;_u + +delta 982 +zcmV;{11bFC4C@DwBYy+3Nkl)?WJ<9%4v(L(*yfk0I%8N#97iEa~-m<5VVWvVS1yO-b)cS}sh#1S|j> +zz-xu~7A2jN^ns+txIL;90KN*G2aW(+z=gv6(4Qzg{{;95SOgA%i*scF==pO1yd~-R +zDX7^7&KcN!pglJQz)!$$4z>*JNU9aq6i@%5X{iC1fiLF<5E1u)FMuv^&%Eb+%b$Ni +zNIDC=W55DFi+_meG9alY>5Qc33a9)Y_%7jkN7917SAYx{N?HLvHt&xZ_@yL%Rnk#O +zk4nl$iSSwAJ#TVD(pM4jOGF^)5^x4s2TlRoz}LWzfn4>oZO7UJK8=XJH*Wx&1{coG +zei1-s#bOTMmvjpFHX^P|x&oZFs5%kxgQWAoN<>_h^nbF09s@3T{)oRfl57hYJRl%1 +zeg!yf!DUY6A@HM5yag;o#Lp!a@S;z81y}{vEJk^+zCr#K5gMgnB%J_W0G={{Do_VL +zkBDEVbjcOqnPg)*b2lR5V5|{E#GjJ(fTs=Qgezb$gTwZ{KC_QBfp&iCaWz~#NzIu! +zjEFyG?0*$?^WKYyQt)~GZkV(DStQ_YM#QZ-8`i3oKWcO$qFeQ%lZi?r`C9>2CG{fW +z?u?t)fa4|oCV(|b*Q@sHyI!af3kQ>^Dj8XlNtMi3B2n#9NuX{-bmydC*(E({902V} +zBFxNTzgRv~im>Jb49AMFBtUAPec)O|^k(pZCx4yh1K=ibdsG=#N4&gb&tFM|S)JnY +zQoN{S=DrR*0W>5vi-$<9xB@)pa;z5Y^OntI2^f^oVb1f5$hxh#7^?*|b8kpb)$mJc +znr`RzDQO*e92iKt77;y{TIT=jHm!=iV^31cjjiE~WTv%O)(!KFbb-HZ7ILH7Oz6n$ +zAAiSzko3EO=aj8UY8lwB0c<*h|LKM)fR@uY0PYm*^OzM)a!1_q`{7b+damy0o04`d +zytbq}1~LRX4*>9n`z6)TNT_K>#86Ts{XLwirqv(TQrk3^#-H@Npz73B9JD>*mYdJ# +z4!DtCzvj6WFDK39z6Gf((^mA1k=VJp=(R2><{907*qoM6N<$ +Ef@@9F@Bjb+ + +diff --git a/themes/spinner/animation-0009.png b/themes/spinner/animation-0009.png +index c39a878f1197acdfa1dd6faa58bf3daed5234d2c..3e79b9bcdd7c337bb0de3db1fa15ea8c05e38917 100644 +GIT binary patch +delta 1624 +zcmV-e2B-P&2j~otBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckWIpP?u@Bjb+2y{hQbVhPvZDjy3IYz!gjQ{`u5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*ylm07*naR9FdpmOYDIRTPGEXQIZB7~=;HG8Pe0K`>yaNI(R!62UTsAQo2s +z2rC;K(Mlmjen1Mr#-J#%5gQ9dMJEzOBk?1~WE^MA9e@n~J(24ch1c!m; +zv=Uq3WAFnoIQLfU1b7PggiOhKc@=yIKGmoG8sD7(1h=E`3eZS0GON3R0h|Z#g9~5- +zBY$)5EH!Q$R>8~QMUW?hgd@ +zt7)3K28`ax_l2@yv`w#g)|^!Z`}0?enL9(=x=fJcLmVcEhmAq!aXb?IBK2{E#q;qi%WnZm><3;NP=$Y&0!1g&)Q-AWQ +zD(Yvzj2$|;mwf*HxNNroN2QNLxky#e@7Ip{v;wO5loj;>C~)`=0f)lNV%cosK;Aod +zpEGm^YBHTqeWwNU=f8GP`4a&+qV5KlP+|$T@)i9vw$bSWdOx!P99e9zprr9n!s~O0Fk&(p~hJ24pcLM)x*b=MY2g?tPnM*pf +zN(Nh88#+#w{TiL3=(rh0tbf1@ZO|M@Gj;}~!@%U%$=3Mousu37fSLoiL2cup{-|gx&a#eu<>kFs;PP<6waUQk?6)r@ +z+n|$F&ySbi3}?eYoE2>t&|oW0BXeH?_>+x?S%)hNQC=&cBU@lFK2afQgAU7iYvEuE +zc~NgO>rn;N%7I*3RGt2;*N?9EqBFJ8>(rS)QYx{t+jX3M3{DM9<=MxkT-o$q?EVjP +WakOlGyGi)~0000`_PTC{cLyO +zN>8@*?ma)g=X<{QJa~j9X;ad9{*NW;MM7PJc?0HY8n=R33SK5hwvC +zf#*ifl_g!1^oFGBG#{m$0G|P_0cGGZ;QP@S{fw@6fwzDa;1KwFAq0Q};Gv&QN$18m +z4?kJJBABk6D~;nq@?61GkLA&?uDrKY-#t$5jE|cHPUscfb#c{ko*r +zCA}l5HjacRfO9tZP|_V>HzELj0nYl}lfVYB1zdF!TfimYviIx)pGQRB&R+rE1FpD~ +z2f$aO0fb)^T)&IJx}=?m*p>7f@B+{R9z?_~N!Ni&M1S0rwBdKB?R-np1>k+)RiI)& +zeV}=yc8;9c2M*>KU +zRDm_1>L5zMap2d8*qu=&Uj{xiPmcNbTj1k}xG`0TBBCv+1JoQy#jy3~P}sXJ$0?)n +z5%7(>>VK%eoJkE@h0d+m48KNLmG+ +zo`Oan*p7(aoX(ek3sdf!0q}bv5tvB`6->r?S23r=MW7f7RFw%EJM-2*L80Ojj9Xox +zl}Ey&xzUe^?wroc){{;|45yNCf`OXbXk}g=7=O{H40G2)){F?{4kU)H4y-yrd0%NB +z0L&d(#LfauNsZAYVx;F!TW(9quyF|72O8$dU{X1p`OtUDnq@h))d%)~Mnnuo5y+G; +zg=rtS7ZF`ab>InLC}}$)dTzC%{~tH(1)up-(!OohGS>UP={b-i0TdEM+Q45HAxT>H +z!GG|XqB(NLncq%e2RJEd&w=eEvb^Gb!*LwgPv*Ez29ejg8I7awx?I`$s`bC;nlAy5 +zOS)s?HGRLV+Ij0g0odXF3EfajO4Eplp`_7EOp+QNSh72$=EO4ldvkvm7`kloZKlJ- +znALQ4+5WY>AvSL+t|ph%p~IcfuuLfxl&Fx!*Rs)YI%Olv82ijHQ|*|ca;GgMn;IalQqC7=U%ERKl5;V^gt5{GkjbaBPvIUwt^wKjy9 +z3k5S+bO4KW{dsX%(JOm%Ez|$83ol9waafd45vTP`=e&(tix&m_6f_n~_@*QVX`%TX +z42q$%=|B{l!HN;A`Cu8 +z9J^!kT@TE(asIf_JA@5wyGk>)>pEIq?ng30?fCtu|5n?@_WXvSsvdCEzl`8~y|46L +zb#?WqN7Akk?MX~Z3R%%np|~+Btho^JvUj^6Sw^w{e4@%WZG_S$D;Vo3t#U4F?I@Ry +zoZ)dwm@jO4oore0=;%~5}D+fJl9a4$KkZcbVif%mfkp>7j2)}bL{&2U+ +zidM8pQ$KY3vc7lD+B`rJW{-iCzJd$XCMR_Q4(VGSZ`n|6YbiEH4^wV +zx7GnLUO%<3Z?zgaX=o|0^TOYuT^TDy5iE!9BT2Ug&D7wc!p`H^7e<#hN79Nuts)v3 +z>jq50mC8u3A<~8Wm;BE3Z`XY)xcZFWkdI?y8p=gMg<_ +zc)z&QIMX35B>MeE)EC&KvH01A@78rL5dA0b6R2g`8-my+35nKX-MUoP@h4KV*moW< +z0d4w<3M}}Gq(*7b_Wd_~+M$^{)Y&870ulIWjJ)A(DI|QVPhoSbf2d7plLAbP+jL3# +zd=CzXggvg@Hj}Sd_h~*AF%kOJI;AScS!!qUHxh3@>&~?$7PylOL)1H4pS!It+p;8# +z)I*iJPuonUyLl%%GUIcYJ~G=#$t)tmYV~^1sikw{yR3O~y*KR=bP+`gv7cQM5qLQ? +zmy(^_`jy|IBvS_~-^g1ol5W<0cgTkKn*aedWBdB>lg|$t^0*ny(4np5+Y?{J&~~TE +znf(Q83R7MhZW@TBHf}&v?no<-kSOsR|Kw7#Zhf@HY{`NsI7idQF{FFDDlUd8RXagv +zmGP-!Tc0x3E<NB&Ikd+- +zCBwt6gSUIL-n_b%D~ZDJaDUJKAn@rwxu&Yji@pQ$u4H%{@`cTeOkOj9g}C}v#)}U& +z$Y$63t#w>h3PXjbsf^;zZ~H2IV`Y2zI(R4}wzeN}vMB#tdIfa3#rmpN;`fDKiuw*}}P)>T%Py=+JeY>O3w%_WB|D!?&= +z__p6dKU#51_n!0?HNl%GVZDpzKVlF+FV~znbbfdW8?gqMKh>I9sH`woGft(q7(JBC +z?~4TYr;wb(47<>)awMa|mT@v6@4*5!#&Mc2H%gx!^m8SYE7~(^_bSljy@B&;nrWWU +zyo+zHZnjW5CNCa&NWKQ@3eUiTH1XHQi}6lvHmm9dDI5;ZwA$?PXv9e=c`ZRdyl=Cw +zl>du)Ve}=;xh5}*=TE0rPV{m_7*fO32deaj%VMAOr_T~;1{q_YB#qwt +z$qcYNN&bX&tPqD_z}+4MPLOJoUMHWPxqH?Du`E5-{UzT;=CpLUVN;Fg&9;$ech{*K +svUj9cZsJXVpWia61YnNiOIsz1a>Jly)nwI3tk@4MZnnnV@-3whkor2qf` + +delta 961 +zcmV;y13vuC4AuvbBYy*(Nklx5^w}2LK33v!RS~!4+$bk+pGz#m$Rtf$z`|H5_wj03D5iuJA +zCR|HWGszO*5P#?!g<*n%QX3}QuIpY0egS?>?6)NCO8QLF+Bgz6O*jFkk~$I5j|e2~ +zo9&rVxC}f6-m|mEz+1pOws{ELj);++-vqt@t^>-+6VR{Vj!t!_)mc6 +z5%G_tJ3u`mo=Ca|oH@X|5%Gtl9pFpzqDVmI)_>baQhyED1~%N^#To)#-~f0D$Rgsn +zq64lufIoq+fRBM!y40eT(iJzZvvxPvro>x>m(jcIvaj@-I+2*YLBXF +zK0^?n0)HQr2p&aABH}?vY5+S4L(2gUfxUVG(G?$x}=A +z&n?Bz%#&di63#sL=-#T3^&ZeE232_)ZkBBJJd92yZ33?VxuiW0sA4vpnI{G8orw6` +z18mcRl-b|5hgP>7K+P}Zo>m7IAxT>H!J>yVi`Q$;{E16dz`h}==OF*`eWKu#-1;wY +zpnqrQBe&it+1pOuJ@YlKojhA}i3aZbCE&88rzT$C^QCDYM=u0mhuw;9XePSwEFyAA +zBzHoLRL6uXW=PYQlS=#3z6**wLZOm<|EktuvLC>fZ7h5%ZX`qM+~m@PODxv-qI|2i +zv2XyXv+gWH)XOjOWpw1r=O`u43_40$5HhbgH(LPyF6d4OZo?=JO6Nus&iy}M +j$BFV~Kz|Z9Car$~V5_=_>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXG4k2y{hQbVhPvZDjy4F;RZ_{r~^~5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll?MXyIR9Fdpmd}fpRTRf(UPrC0m`JCxgvb(uYGXkgA#l;6Wt&{~2eqzs +z;3jA(NVE%ESYS~?V3c8+8JVR0aK?GxKA-#E@8fx&d4Kc3ch0%@oO^!V^W1kE(eoIMI&1TO&B`@n9n +z3)}_XpMME{1SsqrM^NJ|qy +zsiPC%DDbYe_M}{=w%(v7CEo(sGq{ul-2Vi;M}H@7s;Fc;+Z~n6Z0k$ldGH|ckoXsv +zghQxP&sw$nCLug)GLo{%$WMTibai(sXWeKm8%coOXTfX006LR<1>3-YPW*Y`)c+0a +z)_!2Oj)5nDiMHb4lHGU*d<#A^rt#!!5nKSB9RUgMK`ZzR80;eW68s8goSkwefzGgZ +z5P!T4-U5<|gzV6}*nh{l-`q6z#J~yydIqF|e~_)(ip3Y;40cz+b{-sg$0qy|HXneG +zfC-Pu;$AhDaivKX+>g~i*LLTDy?+z%zAu1t*m?y+`#c+pL-y>}hu~A-`AQD$oBa!G +zNu+%msoVfgxlX))E58iBp*n|c2(DZyg@3q*t<|3bt<~-oI*fckd(je5fK0$3_Qv2Q +zq5KoLnX5u>2m2Y9t&*zm-S`>R*Uez@&tohP(S>&X?N8UQ!<}}?)|rfzIB;7DsPi6R +zM_}w)a&pMm&;;g}?arM1G&h_Zmu&{f#z_}`?^Z9FL`wwYc9#jPax5o7b;>=!FMllK +zPnBd~i*1w{NZZ}CYO8nPJUp{q@P*bVpj?a-(jID6&c)%cz7lt({u~>u4H{fooypv_ +z8UrLy4PFCdJ5W#h02@QFt~9AzIaif__fEaTml=?+>ny=pH_}0pQdjjoK_~ka;MG>r +z=e3+^PcaKCyp6(yeCz)J8k(&?v43`>y#es0l#0SJIs}e^dymEZvsAB{Fg)*RX5Hg@^Te+V^b`fAWXV4{`@qeqj05a5w +zjeg+oxmv{F$jniA;0o}b)cGzL{2K7L!iUPXK29QgKz+!DLF@s}Vs{!iPx|;Cybts_ +z5XsNm7EU6z{b^u8Uo&4W9i$WLO;q?xC?Ci|M!pWCH1SK|20Dkkk#^u-0#R5QvIm_5 +z2hnR$_ONhRP2>&en +zzQ$yNQsMKBWTY|&;Z~VXQB}we>?MJGw%H%fy77PAh=27hda|jCcytfgDL*Zf$qcli +zRbS61XwFw%-OD-ji!%^Kcn-5;43qBpFhcuAlw64eU +zxQO^^4n{uWZ_o`w??hckme-*7+mD?#3FcnpdRF;Ar8mFxog2k^00000NkvXXu0mjf +D4qxQ2 + +delta 967 +zcmV;&133KE4BQ8hBYy*10r7{z~QGHG5W)3m9nBvxBcK~pNIbfq97 +z)r~7ZgYK)}zz@-d-$C$YBZy1IMXe|zb)kmV8l_D_lF7tLnwjI~O!+frUNZ5*C1LLU +zKdo&c)AT}j*H*r^V2QUU4-w0|L~T|A!2?~}l3V7oY1 +z1)c(?fZrq?j1@qfFUQe3aDT)~z6iXKAOUXob5I!)KnHOC&fA_H=G^vq;OW>Fa4^Wh +zumGCCehgKC1=|`D#B)FmI0gI(+#5RpNu89wol4B5Esqk8b0zx=z>~m4Z2u@}f206x +zS8UJQt_OVGtA7FP7LLj)sB6RaB(MTZ=l&g7E$r89zij)}a&)Ul0M0% +znzru%lad;?C-Q6>xGCxH0Po$fO@9>qJo~ND}ecC|{R|ssk``)O8T>9e;*~SAZ{Ve2la23?V7ec%J&r-JO7{nW6Y5;nV9o@dM9bt0vA(yoR4wx0V^R1aV$2{<;+0B@$MUrBm6 +z(sw~JT`t~Tle812dlZ1A2YGj?sKi>g*JJI3#g5QzO(XXp73^K#Dks^B=Zd}^29O@G +z!~$&QT^H-y*a373tZa=UNO@L9s)_~yV!;r0> +pbL|1={-3Yog83?0T0D-8e*r5zwTU=bFsT3l002ovPDHLkV1mQg+sps} + +diff --git a/themes/spinner/animation-0012.png b/themes/spinner/animation-0012.png +index a0412479f0ba3442324e1cbed1e5e057eeffaeec..cdefdc78205460aac77e50eed3ac35b2f2c15456 100644 +GIT binary patch +delta 1603 +zcmV-J2E6&>2h$9YBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXGHlUCIRF3v2y{hQbVhPvZDjy4GRSwSL;wH)5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll>q$gGR9FdxmP>DyRTPHl4N$J4l|%-DBa9^Kz&L{eGb0nH#((C(p~QiP +zkuiigGBIKxG~N;!85_Vxyx@hFp87od+wbZ6PLJtI-hb}3*IxIvzkRx}u&{7oXJ_Yt +zBp-?_`?^*=H(XDz_C-Np!IRg2r=w8ZsJ%e9FKFOJSlgVTen#fm*-8@+);_tY*+hz_`M^j1~{~`BP{2@Yv2ONtd#!?T$g}!3)}%~ +z6!wRLd4B~e?{UTnB)BVBMDHxP*jIyiVUB?(U>VqjgWxG(`<1)D3qApBbYv@j*^h|i +z<|jbaI(ZYk0#1R$;2&W7{{$z&W3UQL)Zpsm4#;nVkHIzYm{`+0V?xs01US?Z;nNoG6BpeEy-P3QzLn2tKSAbpk4tx)O0XuO-Wd{2K +zoPP#afOp5F^e1^QOzK_m4Y&_l=NAoZ5(4tucIG-Xph7!gr8mJ>=-mU`^}&$`cIYSY +zKDZ7lS&U?N-!PVOC110)p$g}<3Up-a46c^zkKi`CCe@Nn;_fB)CW4OkSHTTn<*hPS +z$xrrjk2Tmd@$knMWq!`r_WQZnt{-sj{C}sxM0ML8Sz% +ze9n{=Ui&pL4BNwj?DT2J<+gnV{T4ePXKVtt+dHALuV15H*<8K^9$HHP$Pwtvpno9) +z+wDee1f4ffs(1A=c@MUFg3WOP)m45rxo%VaFUqyitS1O*Bab? +z&d{AD--Q~(bAA67n|kQYw+kjAnSig@aX0g-OfsI;^PZsh=>o_bpc_fQ_hXZX$gFI+ +z33*F>-`i)$dW?3~86w(CsmQhSXMfOo9n^O~L+`~s8L2%)J!9u>5-K-s +z_4OHWv~6tl4k)wrDjC>M(w}0-BQ4?lh@BwV)Gn2)(35anZ-e~5=uzlfn15S&0~Gq= +zHPV=aO#;{+A0>a3bmHZd;!qpEj+U5qCL#6J_WOp+l9&4TK&_tkG?Id6svqm+XxGZC=V +zu@c?7R=zpyf2yCzt1kTiXBov9S`9de+z~|FR?qg6Rh{s8ibu|}Q9LOWp4K~xI_s#6 +z*63#)9kNNX(=rrP{?KqRnOwbD< +z!@c)?KF)KV^E?-haoKLzo;i*U9mDxNuncs8bxG}U?9`8NQhx)QKn>WI)F~d%CV@II +z2ekW~n*g?Y&J79w~Nf?fce0? +zkO11bKU>(mA<1$6Fz^iUATSjl*Lwq~6}m73EZc4YwA+kLY2v6iC=lKD!6)sHuLw}9_qGNkD@3fQgnZn+52)zPa +ztGJ;7ZL}0fRRppoX=g~4JPo{%jHeU8&%ig5em_)*0_UC7c`dw;UODQW-EVHC2=4tS?E?x3-KE<8|?Z1sOd(hsuT08Sr*Mh94x +zv^S#jMStLpw5odos6|`eug5_*d~hFxG=yaLyBgs@vry8~ZXKAbO3(=F`%St#qt?Gb +z;pw!adM2lVUx06qGEf_L>#_Z~?eo!w(Kn(DmZgw$Bp%p454;)mTLC@>zV6oz^#N+O +zSZIGWiYG<@U_Zg%O$p8dS8abJ>8HL3q~}kCwST=*ya{ZCCml(<12VsmA+-v;2D}_8 +zu8{i^_yYK#;#C>ILNN_12`-1xN#KDndR5Y%?a2(IJ=@O$mxJoNk}lbP0(cd;kaFzj +z`9(=rdKZ#f(ROWM9r!KIr-1v)azwly1s<_I9j?sB!7H}UO1cib4P4Clt>(+_plR3) +z;eXntZrff?X)2xnwOBlrWpx+$5O^xJ{}gzuB3=-FJ|(&;>EIp&By}WhW(n!`bVD;G +zF|g4yRGbmL1H2RT47>!qSlHi^^qHiuD(6S;gvE|fm8X@zLD%QNmFxsF!0Rd1*jsU< +z7*Yozqz_qQ0p809Ht<}D!Z-nx&Nc_NUq??6-vOT#glmueX%@oV2r+j?P}57m_t~hw +w{I5Pv8^A+Bab42(|N3=Y1X0V<;&E*J4UvJL%3!$b{r~^~07*qoM6N<$f|xMU5dZ)H + +diff --git a/themes/spinner/animation-0013.png b/themes/spinner/animation-0013.png +index db1f1205099e43dd5ed4fa8b6fb359bb7f57f731..de5aa6ec0cd0e46ab5e254855ce0ae1f01bbe6e8 100644 +GIT binary patch +delta 1601 +zcmYL}dpOg39LImVu!cx9_iMtjvRfBhwQegdQ%-ZT3N^OecC*dolDRyyQ*=2l6-vda +zh*-!7wb2v0kRI2LW*upCgd&$hXX-i6`99z8^M0Q9>;1expTE8>unvO@tHl7ExA(9B +z0Q60k9tg<2Vh#YnHsNlXa8DSE37|r`Y$hr^jLoJ8qXhh5R7jW*#bd>=xlzJUlrWUZ +zW(rUOUKoeNHbt +z4Xs!T`G&EX02)pBc`-PvZc(|GE&H(xpRR=%+#_DjE3Id|C{Aul&&- +z6U<@??5T7%Ppbe1>ydEL90>r>5i)6qFAXla_#)!!Zc}My-umvZ9j}e<6dYRnV8vP; +z$CwW5~3k0WvGmh#e1c1!VR3 +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 +z1N5>+SnO;7A`5c797<2d{!@ +z^TUS=vQ&;8(5cR#8a%j*T!pPPp{3xi +zIb-D~z?;BdNUO*$o>9h(^X-x}#Ds3$(}sCQ#M09)q_eJs;A?ajPx#07*qoM6N<$fk + +delta 959 +zcmV;w13>)J4AcjZBYy*%Nkl_bp%+=vCy} +zK;sm-@g0cqNAr9E*gVb8Q{FucEX6?sdvyjHBODk;fq@0vvty)YHjWq04bS?1lmk7W +zpXVm96nM`%i}|*Y?@jGMa<^4NVlKI@i@sgC-#IJ)|8l^#Y%kbuSEB3y-Q-gh6pDA) +zZUD=r&f1S$p?|+=d*1e9zCBTdMZp>9+uoAYk%aB-RC+Ui+flv{gS~XcY~%;Pwj`I3 +zSuSH1OQlvmQJ5-26ax#1 +z)VUwT+wHWX>PRO}G=T$PB}kQn900q(R)LOc+Gsg&mVfX6l++!QCELJb6|U$cE&Vfz +zC~zLc`yy|{2^sb{G7aD`ozy9!9(xv~THC;2+~_OmXaN1QT2ZCJGE+md-Dw9+Qc=gA +zT}fTpo=d(|~@wMW7w8%V)o!PutgkPk(`J+n-3fZTk^mR?;2YSAc7YepS+S +z+qZ!i(~cK{;tQDv>s1FDrBT@fc0v}m{WS1l?iYdipz$$qWc%|(-cGcy+5Sz^U$$3) +zCxMr`umb@Nm?)KZ;WWCOTY)o +zUlX_vtd_{cl~(>0xB)zrrRHthGw0cguL7?WybXL+Ln=y?06(UN1Uv;ie;x-8O1r>! +zl5URtttb5f{1O5y_JQesngKrnpQUYnJ~(Ag)D5cdfxAIsjsN17Ny84L!lY{^O002ovPDHLkV1k(E%A^1Q + +diff --git a/themes/spinner/animation-0015.png b/themes/spinner/animation-0015.png +index 207553e4efe3f2f8af3c0e4a724fa968d2a21a1e..249e1739d36456bdf3dd36c70537c928e25ee8f3 100644 +GIT binary patch +delta 1599 +zcmV-F2Eh5v2hR+UBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXHS)F7ng9R*2y{hQbVhPvZDjy4HC7Wm=Kufz5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll=Sf6CR9FdpmfMeHQxwLlO1odij9WsCahV80A~7!$Po8-4SNPw&lJGeC +zg@go8MurxeF%g$RkD*)ZF2CQZ{hit8sIro;_TFo+y?-v>Ugw;e&*$^ma=Dx-&Lh!f +z-H*MUdTo0@vF+`8o9IiYaTLybL)S|7|8Gyb4V_*^sV8yqA +zBcS{Oc7MRv1o>S>UzF>}+5{5Z5m@1U;7M>lxCIzg7WTWf3A(4;0saA(!G~ZMMvmf_ +z^+-r=%s>pO`erO21CIiox|V9Gw_2$;3HMCEWKHe>n2b8@J^&ws17a=1hH;d&39u=p +z20jf8q@-%+p1v3O*l4RbH}KuSB*KLHPr(J4uz!G&R1+pEcL;7J&wwvr!HcWvhWHxgw<_g9rf|HIx2GLAtqLR71(H2s8jFN%Kid-z^?xjn20uB*Hge= +zk$&-8H$Tt(3i#ZZCeg+lJ%B>mo&Y+uS`#sV)Y$_+Ht6^eCv~Sf0x~CSF9I3#sW}8E +z+JDF}`x3m#xocse7|4Q6v-W_2JM&lVnb(c}R}D;6fKn6V{n=&XH=h_oi +zaSc?0@-8N3BD`N2@Q%In?{IEH!`(UWrGGC3ThDz2eg!h&m70tUKMqc5FDd~ih#6`m +z<&IWjP-#8rE6!o`CGPe6&XFr%7kC{8a8zXBGzHJKTQuX^;m2ydFGuP3MYHeywj?W1 +z&NzzfVcXA5{tIAXCZJ!h!||lo#W>sQ4r^r98pzCbVAg5E3dXu5Nw`>-gaN41?|*`U +z^eOBG6Y~ivsVk5URtDENm1~eDbY9gZ;eK>JO{fms2rLW65+<=|F;_i+LNS=sn~ZZa +zwV5i(1n8?x;Ot>LNDJVbFn6Cli`?Vv>I&30x@5rMcCJ|})j&GarVo^Pn9x|A>!y?P +z7l30g7WRG44X@&6;bxu$GfW@o#DBewl7up1_y~9&SX3{v>Jw5jG$9%J&6Wi_)hjTl +zFCh~tx{`G&ML(@tm4D5A?q3CdOQ!NIil0>Kr|ze7=wqk&@~~nP5F7vRx#xMs1PSiv +z_%-mdD$t7sZUc)f`)Pw%xo;~CD=;vpb#M+;^D;)v@_#GvS>6F| +z3<+38YeuuHl30&|d!S>>r4>u_bKop^3HU{vR*q`+2Y9QEu1kgltg0p99|!gIKTfOc +zW$vh8XRtTGv%sEN7Z`Oh`ZnVwe68+FV`7eIQlYG?Tz#KNqx?K-JKcmg1((tHz&3up +z+Tq%q4-ACbj9!NZQ%REOt$)}%-xS#MzS!OY?@oiqPbJV-Hl1_0B>IdfZCIaYn{~t_ +zYpdP?(tZ(WJM@o5D*77!5p|A76oru-${Ks7%lGl~G_VIO#+S@4xBxDJy)ZdFpEZ6~ +z&F84NG1b+^hCO=0KQd>4<7MC%&`&t7#-Hkboq0t~a1M?VaGgC5WH>#YuS+;KIpdh1 +x&LgX`S;fh)(HO}(4wKL(eeB$i?Yh7@|1X?Nlva;RVp{+J002ovPDHLkV1k0&)RF)I + +delta 952 +zcmV;p14sPN49y3SBYy*wNklI(boB!Owwi^H&5VBnm3tb@IuJT +zd+$Aeo^#G~&I@N)wij*BpGAhwpnM5f2abWiC3R+zGdDqrfPbYJdMN3**j~u{xjc7H +zdGGWFM96vsodfQUvU9|{hk@1HGjLF)pf(BV;(yup!YM+t5W@%ej>ny!WIzY#=D7~E +z0`IuBnzMuZM>89c*zLv(1B*a&LSi-x@At;V|AYayWqa9nbI8j>pq+SX1PaRi8qg{# +zt38yM^~hhz*?$L;aFB2SUE4d7+LExn7w_xI_@yXVj>4n7Z{&U-*p=icZvt!CKarSo +zLud>(8^F5lb_8{8AH>6Bpf9Oodkd&ZIarXPM +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 +ze)vXF)_#>}wS +zxif*Joc%^j@fLn(2BKi3LJ4rtDonFvw2%|Q-RHQ|@x&lM%j3jjJQt)BU +z-G7h(+G{q8LiGaA?fo@t(~W-{yPLtm{K6pzbk}3^Ng$AU@x&-fhmiR=E0(xuZ(d|A +zYi&cSL@F2HYHY`;p216X7@hN91d>pB3(^5k)j6{eK9Z2#peO}G9C&;j);^WH^Fa;X +zb@{AMvS#D6KoN=p{slHCC)vYDfUs;fTYteN;qE1It5+3yH}5aqkhm-9qbnBw +zx^UXuup2WF1!5p5Qb98wSFt3y24l1xn67pa6>%ld(Y4c&4fct2Xuj&*$Cz?R6hcToBok$_(tm+5Pyg5 +zgr=hS^c1)XS75y+Fa~cqEYKK+aI!>3<>4bh1I@wb!0fijea}~^VC(&!8wo591#88l +zGg#;)+1Ug)aBl>!2gARu0C}W84b0cDuYvU-fl&EaEPtBBTy1o9Zo&-bI^Y4~Zv_{p~IV_sL@=s+B-6*E8*MDv;) +z^lU`$uRH&A%=YBjM`e0+-{O4V}Ux^Plm{{atNxZHcsKI`nY +z&f5FJHHPhN+x6?j&@~pn0o(${z=@>(I&o?X77@@4(4M4m@qfCW=bJzS=uerq0dyzk +zEe`;wb_vi1PM6%+3&3uL2RNVg;l_eM;{-6UW4o~gHH`pw5rcIB^nqcK>fNMw-nf}> +zmH8KI1CZpTzRJXQxSh58X1=Mib~cayD;h}ZJ_35cQK9NyuAOR!wtG_+-w5x@)twOL +zM!;PWW+}oCfqw_U2zX-q8%f_w!gi;a+(;Js1*nTWZ)E2qppy(%nc2!?PzqY(|7%NqV;8;+w!hV$8DnRxSLT$3jbvDglk>>|&A2 +zYQg)BihqLp1qCGl1CJ&Bx+VpU_{+30D4lX<0NaPQZ?Ca<-F9?L**A;LP?zNoTfesSU%_ +zf&J{fBk44Y?G}AyRkDXwH7o&a71i)5@CbM+X>5BBcs&*?pq6L*z`%B^NIPlYx&d|) +z0DGb1N;ND2{2XL`;MqjcxEFx^7}FW>a^_!#vUcXzllDE^ClOxH_C}FcA +zwY%a2;Kii53;a=>Wlt&Pgq~5}&vU}109@u81Aj{DEd1B|PdnX0kY4-OEGa(<|E(!z +zGiy|W953?w>-?PVAeCUuOIZ<6F7oF!8^%00000NkvXXu0mjf +D1S8ND + +diff --git a/themes/spinner/animation-0018.png b/themes/spinner/animation-0018.png +index 902c837ef74e618bdffaaab2f1cc04e86e9e51c2..667cd7d4ad375878eb731326ad70a12f5536d389 100644 +GIT binary patch +delta 1566 +zcmV+(2I2X%2d)f|BYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXIE)0ZCjbBd2y{hQbVhPvZDjy4I4Gh(S^xk55p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll#z{m$R9Fd>)=O_(MGytx*qC?1BM_8C5J5Hw5q2y;^`gIJ7!r>asj;brq;gKy)2eVuqUZ2P6y4hgmvg_gM7K_D$ksn^IpA3H} +zxF75Vf39$MdwV;_56+(;AH9P4K%AaR;O(%p!4tumz*-``GxAPwFZe0A72He#k~&fd +z9a_cNOn;!k@j#$QgNuOx4Maw&e`E#gyMfL~WH-1T+)PIn^_%qu)zOC1V%7eqBAyPk +zS~3DW7N{KP76Cu@*qLZJ7dU?-9sDYMFFp-S#AWq32S-TD1BY8R=YI$6{|dC$z4Io4 +zJAr+Hbxdb;i~MqM#k#>Gj{>cOWk!@Jfhh#n%6|s}fjAPt-gAKjBxm1XO6>7~EuD4u +zB?H%jFB9+n9COFrph@XYIUNHOZs>jw1mNiB;Mc%C16$W3;pYQMJRQ*A4s_^zAfesF +zyPjC%D#YFqn6QEhC4j3$b{q<%103!K?vvw@c)CV+BltdeA<%wZkjNi_gr5ms4HUr7 +zIDb1jFja4e1QV14$#9?=UD%xiOB#9a!}gQNZ{h4!dnwRGXC~{aJoq7Cpc?`s*Yr{n<$uIg<)D>P^|ChU$aHJpZSOM0 +zp@gXh&HC8#^J$=y5^$Zx#mHya!$^P-@_%UMj8!eDyT8|#MIHxNXDmBEL*I3{LVOkZ +zLavuA&gm4qHM%ynKl%~0L+4%vm&C>gq-SuLlbK}aCE&a{P^`|ljx(#dS~_zL*P)d;+jiG^ +z_qt|->Y)48S+8`8Gx4s#TP2n%6nUrT)}P`i2if4f29$@_OUun?6DrT{+2C>@5x*s_ +z#1NV>ulAtvA!@KW_#AZJpKU7hM1L-FR<&;g&jzZNMBfH)hCeK$FdG{c)+s*IRN1T^ +zvc2x-{dUi91+NGE_qRn-I`BoH3nSq%0~Vz^DxdV)=$Fxb-ZG%}V%JPf`nllE;7ZUt +zkGPh9iTq9HtQ+{c3$0uNWM8aoUk=_5{1@5_T*ICww7{Wz_QYmAY=oY7%9 +zXMPMm3rw{^`!8h5zY9JHzJCrz0dtYjjbuh!n+=0*3?UD?z#H&d@Je9P4c&a_4hmu@ +z1@>Ry+ra;b;k3S^8-cCG4GxCTW;e>|&}tq`y!ZTkVA}hmVzT`&EcOIG>|vaz#D*g +QhyVZp07*qoM6N<$g8VPa^8f$< + +delta 927 +zcmV;Q17Q5F473N3BYy*XNklMM^{viwG7h +zkk}%A0D`~3Ph!g&i4_YZHXs(j3Iq!TB0ORQAr9E{^4L>s>RQJ)bLVA_WO-)pIj5_; +ztE>CMIhO4Uwmav!L+3Ew11NYXOMy_pok1;B?;pMF749 +ze$MBMz*|d@Zl}0+90%3|AZY}A1oU&!%fKshyx$BTs@0#D|1$t=cWmFYeK%pO)>pvS +z$!9B3*sAB>c7H40D}TeJ@btOup6%`IeS(B90q-Pd4{U!T=^IJd{usCm>;kt#&d)=% +zD%9P0Z{P$tlvGA$r>LA$VwNfBw9*(&rC +z+Z(noMK8Luh*^ek3wRy47qnHa_mhTCQ;Ho)-#2ie6Mv^BA#Ja4QUN#s4kUS|6575A +zyawD#R9gA}zNGJ#RLM=?O1!PsFlm|06(UJL+P)9m36K|pdb)zbPUCG0I0g=YQRVg0 +zy&%S`5^s3H2QQt&Kry)ayo=?_T{)*V=C(p;_y +zFwzo4x}1Fdvjz#7gmAo>%h&(Zy)$l(%}l8U(WrLsOQWw+?a9rN^1XVAt2Kw +zhL@&6r4uP0+I~WaRAcS!lw&*Oo5uS+;8$QPb$@*{$MdQgZD)V0#;IYXcv_FZHQ>1% +zJ_>+8f!`z@7ENVj`>!;cHqgrFP7(G)N&ng&rmt)k?R+O`8Pox^gYX#m8~8n)&hczF +z&j1vWc{-l&*TTMKdl+E*0dO&*bfz1Y0QO>Fl6HHX%ZcYCI@O+DK$B8C$nTW|@7R7E +z;(v{79~D|NegZ%Y?lsJKy%=`YN(1cF>-=^Qu*#WHa!ztSSZO9qj&~EXia^5!Q}n3# +zerEhyXDZ%G-cIUcR>KfWYJOUzX7fA%rbXxn^%`yfF-erP%zMEiaTyfk8?T_G6(QYl +zZaDy9aKGX4I4M&7<)evk|Lfavp?s|-ofuzc{Rb2zuUC^T1Cjs$002ovPDHLkV1m7) +BxFi4o + +diff --git a/themes/spinner/animation-0019.png b/themes/spinner/animation-0019.png +index 7ba8e421289fa4731e94a79a57fb21539080032c..760868a01e3f03eed0b521bad6279d4a38bd5965 100644 +GIT binary patch +delta 1562 +zcmV+#2IcvW2dWH^BYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXIr{^ju>b%72y{hQbVhPvZDjy4IbWr4%m4rY5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll!bwCyR9Fd}*UOJoMHB|`nHJyRGoq1&L1N;<*TT3r{^f2(;=;s;niv#h +zAtEU97{?jEU-kW(>Slt8C;8@_I(6Pv_x7Fr{r&yDiC_Vap6CrB0KlInK#M@L6bWdG>^e?CxzvB90- +zAh^F;t&V2@|BxR&g4rPf_mWtG7lLPk7X$030);p~@~PlK@MoZyn`yxMkw)myl4rYs +zCdUIEK7SiL7wBA~Cj$j2=AS@f`om>?X5oK?Uk`rYok(;W;(Q`4;}^`RoAfBMGr=qD64Ql=xb7Yw7l|-a99DtO1&8~AQA>I+Fk0tLC&u3aJ8K0a$D_gX +z!G&PeX9nSeq +zIcqd21p|q7>C#EaP;h5^D=>}XbmW(VvjI|gle2j>csn>uzF(4S9EIGGA6~*JjE%GE +zO-Dz%Q3!rJ5bz*=Mm`EpXY9Zf-U!|dOpp$VtDxV4OYyxcFIp{CbOH<|XvdQL70~Ni +z;(z;+H$ZfIx#h=hdPKHA1rnJS(#R+_-2Hf+ue@knj4rZPmhSOhGL?I-@5OQ4hX$C7 +z5JMr+@%t{g8SqtrBSj{3E)yGfZ}<##{w!mZzyuV4TkGn9;NfFZQ^8b&T9id>`CSfh +z$sLC&YVNh*G<%@v_{q@cn6uGIoSY9|&3|={evrL+pB(b&{u)?_t0_mIm@^t?H|{_b +z=qQy-E-Bt)IEa38=1rFUk#tT>r?`bAc44T5^0Qn?%H<%wivT0lke(pOU@@71nt~<)5 +zlTTygESuz`$QObu*}op{2TBue_u0UnV%bZoXtE>mA@k+J!`8H!z&!e83V*%>{Khvq +z4`)dK!2-7%(Zfvj!=3+E!PVqhpH~)gZaKC4g?pE)`f;QI*orebxC09KHn^D4`=uO- +zakOzE%IR~^9;x_wcRD_#vtq6&|;k;zVzi4yE(G8koR^FNbt8U<^)0o$l +z!!sQ>@~ +M07*qoM6N<$g0WB70{{R3 + +delta 889 +zcmV-<1BU#n437tpBYy){NklBI1`mdWtQZ3?zLn=?h8YZ22xw0)Ll*qf9O&jU-JZZFI8S +zV&D<*H823K0pI5~dgPm21SXyrFz*!spaN=#`GKU5v(3Arb^wf$f12JY0DcGlwxS8} +zP*SCw-Ch*$zYIE1zHezXqAl19KVSv!dc?PP$YQqo;XA7x%X_h@tdP}0Dm +zEj(HyrpfohDSvGB7m~&~Fw>201CRXuM$(TF@kc};=?QQLxa9xt0Y3v@*^uWpdSLm+ +z-lvh7di_7ZObxgIoO$sY@JP}f;8{fcBk39NC2$IyM#OKDz6Hh+(HhW3!70avo=h0{`RBqE3V6>!Ujd|;27Js9>ZNyiG90gDzBJJ$l|@D{L)h`;u% +z6)oWEO-C{O^Nl2Ak-c9=#Os~~Ym^{Ar|@M&R3Yg)@R?76vds&h<);xb+jH{^!1WDe +z*8p!zqkp`zrRt#AvmGeAPpL0}qD{dSlT6O>0^UW$anBSSWYnBKHBfB>VPQ^KMMTvD +zgoSghy~8Bw(9OnyQ}il7!y9CWmTgJt1gN?UDLaJ6ZYahEO6B)H?VA$Z3~Wp#={+Kf +zEZkRdc(1#xeYsZ8mGxoR~H86 +ziRU?Brb#GQ2G+%7?!Z8+lLB@q>DYP}l9o=P(nh6Bicr(lz1q`JGBt|`Ny=(iNYaS` +z7joWg=rpd?U+lmGd7HJ^Ad;>JFx_@9*haC#b#2y~CKh9-Nsi#?JO-q3p6^0L{%4W3 +zV7+ff6>yvbXNPBIKyH;Qw|KMZT2&>zW1Y!0o33O3%k4N}zF5ceyFC8_QK+?Yst*bc +P00000NkvXXu0mjfSNo+$ + +diff --git a/themes/spinner/animation-0020.png b/themes/spinner/animation-0020.png +index 20c00389fef232ad13c1e327f5023e50b6443431..d228ed84fbddcab44ada03bb79b5c3d842e58a24 100644 +GIT binary patch +delta 1541 +zcmYL}eKga19LIl{X-P_9*X?1h)y2x5ilsa&Caq~I5+=5pwi%lZv6&SKp^kAq>*10L +zk?uS{lyZ{CuBnzwb-R?wB9DnXb?&+6d_L!W&inN~@9*cYZ<>~5UAl=7fUsS?IRK!& +zX?4|roIEH10CwDiUfe@;1_eL{hcYS15IU0?5QyZ22O?>7E|SfNVunU=gOS`|3X{S? +za@cehixU2yTAX1}SV3pvyFjWc=xUX70G9$_P-q+yjYeXyFf`hF?>=i37Ag#BOHqY3 +ztcE=4ObUQPS^pRe>edujrebTp-x406f*6#JXYOs4w{g{TQd!{vzz?xNp|DH6IFbtL +zuR>BFg+&1ZSafCpmmbQ3VNp~z2d4WjUKQB18aSppkrFQa|4|E+l`X0Bt%~b?Z;uLO +zP&hDB0F$j!0FA*3Bv1qZfXeaC4xV0+RGClO@q-&Q$yEE#2}bHh9wrWf4F|@OlWZ5J +zWBVRm>?`$%0`@?YV6e5=cZ<=pubz*hjLf}BL&paq#$Ux!X*AmCqgG*SD4vg%@+GJ%XT#NhMz{JEFMLv5aiO+6)aCCGFhG(PAlzUr<% +zNWp;k3q^t9bumgeV>8jVo{#ac%Gg4zt_ZZ6+4(KXOxa?ldTN|gF>z3;lAaL1ay*Sm_*B|SNBRM5TUpnoQeglUxDLUnwzD7yr +zRbjlS6nEkBKugJskxT5|jZM|@$;pq&+^ezjXV5oQv~NVEvL@uRTMQhM^r8P~YibdG +zY@2`ibPQD#1247_O9+Z{?Kp^GcJ^@Kdx_e?*;k|D|1wMsu*JydLo0Oj$551W_5VOyqo+&&3^tzp4gORd0 +ze0t<&gMMTwI6q`3i3q`Q(bCNwONsZtxLrZ@osFNa6Ld%t|GB#>KT}#3HaOC$%+s}7 +z_h2hVfSuo?>`b%(7q)+X4@dhswF!^imN+w(OdGd17?$SP_0(R=Yt(ZM;zq&A*o_bQ +z@!*oFxEQ^>!*R&AP^%1(A@IhpR#$yM&Y$<3G%5!-cMsO?>_uF3(52QoT#2-bG@0L# +zbXu36m3LT{UyoTSnEBPa9kyOxp+4kg<|~KR^+|9mrUu)!b}p=x4jO-O6gm?7St||@ +z!M@Lrw|HD?+!#kL?tC*0x*ewP^EyJ!&L%~!%>aX%^iWtub(bd*C3S4g^INB0S)a^hZm;g@T@agI-p?(y +o371Y3(aa~CY{RNPj#n)CXIMlD7V*axRUaIHKS*#ccO=LE3y4X;+yDRo + +delta 889 +zcmV-<1BU#T437tpBYy){Nkl09 +z#6}$8{2uTH@B;WMA|CByr`O@6FXi`|k>v?p*@lIq;Vq)xd|6 +z`WSL?G!QaO!V2&H6{c$6osw +zxC6ZFq%MK4BjSaf4}k_4Wc-;l +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 +z9`%Kp_n+lc(EwyTVVjT-jqz@fwk +z2yZRX9Z<`XRt^7SSbRBAlxEEf7s9k;u?d&bq%3MG-D5j+@D8J8_FicUYeW;e{$NRE +z7pfp*psb%ra+xn5mFcKirE1?HGcQJ{^jQ1zQ$BTCDn<5+KDi&+K!8!Ry4?w7`80cl90P?{pD6v^K$ZjsEz6 +zA0Rqy<;^r{Dk_$}kN&o;aHMphl?5|yBsVlp%+gHbT_XJPOMv01eu;=27SIL{subD< +zxRThEB)C511oCzV02361zDlj>#*sd%Ck-CmXhLiQtWA +z`|Jz;@>aoJZRJZNFOamtC$KS)HptlYDp9lRiCcn8qJ2GftXkaGPnwpOU+Miack}DE +zLG=J^#CM~|rFq<+#^EA@bS=~<<2~={0I_B|t~P~uKd?f$9DXDPejqAs{N94|`L0ig +zUl%^SEg9SESdE0hTkG?O?owW@*MV$+v*f{^rKQb&R7Kb91ebTh9tvxk$Nk8*NW +zEx2wQ`Tbh-nAR*2Dh;0w*Za%K+rhk^tM03d?$kO^!NZ&ye=*g_Hz^Bzca2@;-=pi3 +z=gG+v0Z9&z?}xv@%iP;}l9py7xioNVuV-VVU72Hu_V#YiAZUKFRBPu$G+?Zp0dlf6AI*7V6Y)9tw-x8??vJ0C_r2yz6&=kkXqeN<~q +zy<5T4Ch8JMv1LM^o}uVPP8Gv~B(LHJSACLXCegDgNCiEKC%MCsQZr7v?I7p>x&WY> +WPbGIwK!Oeb84yW~AzTjKUHmVCd$36W + +delta 819 +zcmV-31I+w|49NzNBYy)BNklvC>>5J7fR$Z~vZ!Jsx*Ibob#tHf#^)w}EG}F*dWw +zE_OO=oEXppTEN`Qmf`hK&bz=NFbU_{z>(ganb~3|05UMrzJE@15^=7`?1=-bwD>0iJ7b2lx*B2=@EH6TLq*vobHj +zRB!;5yHCxmG=DSXu&Z||3zxusQ8WSW0QUs60KTRm-2E7M13Z#X2TpPTrsd*q}VtIYHQHN_1f5(NVp$O~<*T4-OFhLsKC +z)Cc|m@6?K;pchw){8Q2tTVbRtBi-!PMV;dnHjaV!S%004fiGru-Y7(7R=WE_00x1x +zZJwFvH~@YDpGC`Zt62~`W7Fuv*$2wxxtSG>!$=BOC(Grw&I5?oz|)#QPt9y>;{4Vc +zIi8qVwZpXh5L!DIz$x&t6ZF2df@|AjY^RRu)zr`k7+9$MItmthQ1DW%xGJk>z{w^> +z*pcvTOMgLIT~+OLBT`mk8*W?&I-3NjQd^c`zSQf0hDzct0&U6IMi@eHZGkD=eU=B2 +zOYtz%>?p-kX+kX>irh6d`!%v&0MnF>d>ZyMn}zOz3ysr*Yd=2GfNE(rRN_3PeWqbm +zh{kRhc4?p$P1A4@cuNH}i2Ed72a5b6%V^)-3x5H-6o8@V@Yt4}EZUT&ykG|5_Ec&0 +z0_bkg|8|Ph-LGUP&6lJJ*&Vbcs!)*h7Z9`v8c~d=nwko+1>a@BC?|bY7{i%PrJ&8onpW +xoh$*=6;1%x3!Sm)x&QNZ96H2+qNz5Tp1+RyhMYIb1bzSj002ovPDHLkV1kICk0Ss8 + +diff --git a/themes/spinner/animation-0023.png b/themes/spinner/animation-0023.png +index 27f73d18cee5ba995a375da61b20703a986f5cbc..8e77aa140cd3f80f32987569cc3938742b68961a 100644 +GIT binary patch +delta 1464 +zcmYL}c{tR09LIkcX(GoA+Zc*nSGneD8OoV!Z0ZR)$~DGdn2Q;=F*6<=(@M-zHe`FS +zDecffh#@0lbEGAWo3xI|eP->bXP^B(-|zE&p7-nhyg#46zBT*W?`Y@eHWFmkFr%{NA2oi;YCmul<`P1?p6=X+s-M0L%*(UE-mgZ(=R!{8i%28_o +z-E56C7kO1zD4%|(Er0G)EKjf8swymFZgE?f6fZe+7K_E1Dq)Lj1190Erm>r0k&$vHbad&^b?+>gb2 +zu$K?OLnc7Q(#>&Ajjwues=_}Pdb1HS_9KSvwV>ADO$@OXVAz8?U&`*1lt@Y6rb9hW +zBtx)3%xm19Ix4eS0I|?xR8guT?3o7t4L1po<7MS;1hh@)M)kK7 +zw3vRP+d!9?o7de@j+0wM`)Nnc2~U(bWP)^y*&4JfT@1lk-DPuBfQ>8|R&X?4FA1ln +zI3>0tGfeIpjNKb+IgVQ@T<~41d#rR=E$yz8;#$uGgHUW=ze4|Ni1%XB#*KvpSm{g_ +zD|Gx$z14EKe|o8GwJx(;RD4-auxo)j2n*S89W`!VbaF<I66~twxT%k; +z7MX|N7Z3fsd7ONs{k(CO*Jl%Oq@TuwYeQ(%cYU=vA^${e=mI0o!d!4!s!|s1(#v}2 +znn`zkii%px8aejljLZ0{PBBZ0y)c!al{@M`v$F$frHwU&**0(>-BJZ=vy`jMamS6; +zh4;gtk3-k1ba@EKMofRpfXjKGRl^dQo3=(bEFn27BznsZrb!bM#D(eaXdb&LH|%tA +z8#=|&A5vsipY_-T0_j22KrS~pPqdPt*esmbF71^mdQRACw;>)(R$vFLn83jms?}TB +zhD%tMx|vU(kyJEtp{fs_7d!f4L*%XiImXm + +delta 803 +zcmV+;1Kj+{3%Lf6BYy(`NklOpZT0R& +z@F0i?34)Mh;zD#LGrgodSS>|6Jv}qghK7dzYJXMrKDfkVW~rGam(ih181DjGKnM6K +zDc?j-+G0e0MnEpf7RYvh9+21Mwt)mVlXS6>13(uT21BzI1Ap5Ct_S_!n+|r`G9A8q +zW|po{njx^`Src%v?0lO81yBaO^vtXcOIJPe1eo}{nFC()dB{Z9-=^qCz{vFq_$sMf +z34{S~07U>?UNhV`vm!Vpm+t`AJn{ti;cx7k>i?;vq7K3cxYEq#l5$Cy**tVZ;@^d% +z-+&AlxP0Pe8-G_pnAt9{4_tBC_rTGzE=Yi(gD#U)npp<)tAHdGW;Ovjl5)>rB|DaM +z?tt9)u1Et`iod|)3i=+EYMqcd7COJ7p`rl;12;4ah6gT}xSk{6pqdR@G+y12dUhsF +zh8O7A1s(^(0>;26NoPw3k*Buwe|=Z5?vn>xO@Ra8q<=O^+jl|e3|lq&AiLwTKbFZV +zv`AB=#k$6W6L)~!5NHheSkj5S=A)KzJZT#!3yg08&m4q{0?&ZgsT;7Ca%{4;d*QX( +zUXcT|tAPCUKa}7WaJwO^-+<3;3bZNfF|!+HcF*y(erjE?YQwc~U}krL=iY|Lz&qe@ +zk$l=Ph<|#u(Wy0YaN%^V^b+g=_s#6Bq%R9I;5|QZuNRHtS(piB6G`>+Dex3{TsqAfI9BjYISWj< +z%HC8`+>{TzoQI9uu%R1<;q27+|1dfrY1VXhV@?=2f9$WSzU;%)#0!m#%Ox$d=T*YO8V$xqovz +h4jhxOy0~tn;}@(|cMD0SwJ-nx002ovPDHLkV1k+Nd)xp3 + +diff --git a/themes/spinner/animation-0024.png b/themes/spinner/animation-0024.png +index 88ad349e71b683e0ce9f9cb82ac32795828f66a5..ed52d3d40d594dc4ff4c0f9b796b3d0243a9aa81 100644 +GIT binary patch +delta 1475 +zcmV;!1w8tu2Gk3XBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;i7=LQQi~s-t5OhUYbW~|= +zWdJZRIxsLgFfckYG_Iep&j0`b2y{hQbVhPvZDjy5GzvLivH$=85p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yllY)M2xR9Fdxm)mX=K@5g>)ASI+83Ym+EpWvJ@BbWq0uBNs6me)Np|oie +z{?9xAt}|W0l6O3|$G`3IZrZkO+h()bG!U}MI`8wE{eRHoo8#Cw`(+>NLx-~!$k~xS +zWP7$rmb%rlX(y9ORA75|YIu(6t&5TkFdP{YsdYLyk*;f5(;!1$uO)9t$N(7sBj3D& +ze82&uBU#vBJJ>|%rs6f5LL_oYhuDu5h#njVV;^L2)=Um29Y7cX;XE=N-PF1#o{8s* +zu`3RJ9e+>uNKA3JJAk7zu4N8M2dIGwPA32*3G_|`86x2`UCVkbo}I$e4;;swOJc4b +zV8Dn02pxe<*mlL(@2}VEsSCpa8IA%!PQ2o9*LB`M|rc488n3-P{~4$YMW +z(CEAeGwiLrO(Btwy`%zwp!;_&WD>@cD&D6FJ<h%s$o|7&~(5%(dG53ze9*18AZX>@VcM +za?D8%gr@@V>deG_ckqE~aO*1@{Ur&mhRS^n{Z%jv(nmbn5+o%kPsK-K?r1A-7{z^IFz}e1fsqRU?It#i3=yxZrhjZuLU!nO-7_3Zf>E7;@`_w1=QAakL0wE= +zY$z0fL7`nWVV_Zr0a!CQd)w;6+H!%D%ZB37*;C1>Z8Qh74c +zi5W1WxaG_OvG^MRK<@j8_{sxkQ0W5L$p~xsuwb;oD>|qo!d(N-#PjDBErytIz`2U} +z(Bz7x3(7GqZ*>4K8(1NCBRubs#Xc*s`$yHjoWsXtJvz(1trtos^4>D51J(g*z4x54 +d?-($4=ntcar~ZL!Kg$3B002ovPDHLkV1mW>hFt&v + +delta 784 +zcmV+r1MmFQ3#JB;BYy(zNklo`t=B`cPF@14gvb7le?TxOP=S#OgwvQ3Nw+raiFPUK6B +zD6AH6usJb%Zaf37+wlK~1A#aORAFQ3cab7AvvL7p`@#4u +zVsB=dS4{@|k~FWAFcPjZv#F#~5@t3FtWFqLAv2}F?}e;hNlM0tz@6a0DR9|V1wCNk +zkxnI5?nFNYB!8(ivx!4h1%js3mu6PD;akBu0doSe>M1PZdyg`uGfM_rDj@UhB*XoX +zxeB-dMhRjqIHcc@or$Efqe^ZAkAh(VW8hrURjUwrIwziqA}HP}*W8U3p1Bb)ZmI}% +zlw#`|eb~F@&R-?QHew(gx5#}A7*l`{-1$rUrLVuyFwaM}CwkQ@D?*p%ce#DH+ +ziG7%a$CkjMH9KvpDy#LDBvyGB2&z@_4_UYi>?~+XW8ka{342b$YDMF>U0KiC_G(FE +z=_dzP;enYw0N(oEAHZkev}u3dB1F9!X|$pa4E*<=tKzAd9Z9-u%s>Yzz7CqONQ$5M +z+A**TJbw?33*ZX)1{@|{MF)z|4GCQ?HKX+XFC5-t@#p)%J3sS4(!P`MrOR?JDCC}` +zfh3Mu3Ez3` +zT@IW9=U#S0;EkERceqZ>Yy>=Zh`!$#$t0PinST!ywIR}2mWZj0fwgbV5G_MCXlG~NdEa?vp3gJS_xsl?R<2hQ8}R^Gf>#I! +z0MxX%p8{~c90>pbo=XVk9*mA-0O+WACIcN4&16z&Xbzi(j*RA_6XH^t@rm3hG&hRD +zWN^@&glHCv!TwJzsc{SzoyxzXD6c|pS9wsl3;+XK;m}rAXbe{0%F5ox&K|@fc`?2D +z@{rbcC?J~206@_G+r`*CDa{O#Gw9b{*c3U$*rYqh8_T_2+n&4JVpD)`VhMuS%@G_~ +z4tH-uGL6Av02EdUc*?JJnTxzYTUX0Y1ga= +zCMplR01K-29)nt&kn3YqtW2FzLIR<1`g-7oX(Q2<-uFgZ1i!xY7? +zd~Y~*9r7pD+UxMgKF`BEdtvFo0+^<1ry68Xc7znSObBluYNeGrG>(;xrkgFF?&qp0 +z%viStDfW)fh0&ctElUtB?tw02`B!h;9wymWivzWSL=l%3L(D{mBb9=CJK7ct5{}tQ +z3j1;tNt0bFgUW!B5Zxz6IqZ@)R%XX1J5Ia9@1DtDN>Q|Gso;qu=u6s)uQ&*u-a{Rp +zePM;csb&p@{NMpPykBK9dGaO&(w&1Jcn6QX><R$`1K +z!cw%Wp!B;dgtc6K+bo(lRn6XCw*r&Fc70J~6s9B+xgz_uAtz!IN$?dJ5KucYMB7Yq +z8r1pllEQPVf|~sFut!f>detuZo`wzm65=MRwdeHkBVwzO5Lc83PIP6TB(&lzH{b47 +z->+Bj!YKx`6(gzrU7?}a%!{;-yhNCAX+}WwinXr>ftE#)fjRG{6l2W63+)zQ%MZUo +z(j1DNL?=%-W^V#5OvZzA%cc$R3mx^cWq$s5sl4_P@p|>D#FS!8JDQl1qG32udK@Nw +z+Vdn9d$|_Ch6EpG*X6%aN}%Wl_8XSZ?Vg`|Ky66eFck-9tuHl{p!2VI;|4yMXk_>q +zv1Td8&OWxMP>mX8-o6&T7#On5EX{7u2ZOz~r;<0YjwX=sYT5hiWCyMB&ei^Bnj4$5 +zyz)0qD%FMO$L;y>sv?!j7weTi{7OMM$>VXXM~9$a$bZMvO_~PSy4<_Xb&{&_)ZTxN +zkJ~D3uK9FpN{Ldhqx8X9>J)9&(V|UK&2cfyzPFMC?@o7<5#5%AU=IhQAovX3X#cx| +z;@phzu0HX!tjhQO7ir0oKi;jly@N+qsH2^Ur=_6|Aj3~W91ZD~Kbm_8=TSBpKB_2l +z0&k~Z0iNAijsir;(R9(4wFUCCxTgk`oE;Lxjb+Acpw>h28}oSwlu~kor({rk4qlj! +z;T|H%a9jjmv&k87N4USP9tycLV*KbaQK8}X5p@^;zWUyey_qn?aV*b(t8@Dh>Bdap +zmTG-j4RS`Me&n@uQG1qWml0q(@FfWh&8NN2Ste}h%-9@LP=|?pGV*dep3maOE(+hf +zwMBs82g6{JDyZdNX-!FCsCZWNDJ(S-k`f&uFjan=Hod+NpMDeH^b7UOeRpzFwpH$f +o!cI)AN(ZrC&zZllW6yy>-qY)ef<`w;xcuhOV + +delta 761 +zcmV`nGbE?I)9mi2ERf@XaJ-airyT`y5kEC2uwoMFfad-h>20#GrN!DZH6l)HN +z@6;p}%vmTR2T%|68=ipeGyg6DEC&`g1u*gNdjM6}i<|IQNPo(Q=%P`W`rcocKn-9O +zpq?1sb*Qn$fAa*)T^Xv#`)IQ;qrL3o|33``;mE>CrmAu9L{imqI0Ns=uWs1$rZ9^R +z!L1}MN!BDGskAeVTH)Xc?%My)0`Fxi!n&B+P7AYaCcp+YGfA}rtz31gP$X+fi+@b9 +z_CS*3RQAd2Q-6dr7=_6e2#ZECGMr@!&^2^?AT7KYD +z`xo0!NPiwn+5_+gz<$^f1aM4p-nR{FXPee>7B(UO<*SbXK6`b4b+Tzqzc<`>l8ykp +z0PqgLUO?lK2C86aj?YO*a79v*4m`kW00#iR1GqKkGXRH@zL~DMq#Gkq1Gsv0B_k=4 +zmH*Ut&1&dFUePN6M*-&7))0Yq`~Gy(WtE=4o3DJICmCQ?00000NkvXXu0mjfT?At@ + +diff --git a/themes/spinner/animation-0026.png b/themes/spinner/animation-0026.png +index 88ca75ebd3bbbc21cbe2d5d57d9ce4a8cabc59ef..1bfd5dcaa6cfebe4fa8fbe8a4c53a2650e039182 100644 +GIT binary patch +delta 1409 +zcmYL}do+}J9LC>q*-WfPE{%f>xvtB+W0ska8DixmRw9zi+Zc>yhMjqt%+O%9re((> +zjV#iraVjlEM=5uO6I+rs$~8jkmN3ntZAYCwd(QWJo^zhhbDrP#uiv6-q57};_y98T +zP$(M!)U~%40hE-Y0RSMuULo*zG&&W)#w9SQ*mxR)0a37Q76ltigRzP96h=Z49EXMD +zs0=C_%TA;*nN-$)YJZAOWk#RM>{C%xp|`6%A(#p{fH)!+hr>GHF*uyF<9=rlkLJg> +z=PE*|?a(nAg9?D4^OtdOBIox{DVW;lTUd|+Iyg-e+{zW6*0y(0VX+|Ki`au8e(M=A +zPyuzfVIYOdqyi9=#(-d20uzG=V-nezT~nEgfcAFasNzH_i~s+l_8`G6@X2ch-~G8g +zg+iyYF@X>xQK10Nfq3>J+6DkrYb_DWWY@Rr4cPGP-f(EuKmTIHhqE0ym{Zf;1*M +zPE*rKDd|zmKm?%2F$eTFBE`O~uisoWmZ`Lf=GR{`>ze!yyeqlJp+OmNmt^&;@t=(@ +z6>V{d;&N=GlIMcSZ{~dcTHA%@O#%R)o^?v*$(ek+LC8jhIvKpa&~R#jn{djfI2w=}o;BW#K;1@k3d^ig +z22CE2a<;NhfPK|=y%y)^wit3NjdRgq +za}!KWh%Ik{S>xe0H{#1z2H$f<*sL>EHJ^3qf`cq*IGjhte>G5OP +zxN}@drCw)gJCL%jqhZOiJ+Gyw-x*`Qteg=h{UaZN5eSYyemNbxAF;N2ddNG$J?Suc +zAA}95GKs<8ZX)s+d^^8U)>Wrvbd_P}H@bvIJJS4VK2;W5uI +zSw@yQI2MPvcuQ8tD}x;a0P%%pFDXGab3Duc=!BJOY^nB@c`16c5Uhb4&4o)vv;xAk +z*)!ci;-B+5W`Cnqjm;Ql={_>sRKtJtNa-8>ZF^>VSJrdSX8^rnD?Bu+@OkSN=dV7C +zxo~-q)DLND&3hwAqFGDVyFcbX<}ZERDB)@YckNJ@>jkDYqXOgh%k4UjKqMV>4u*xt +z!_xLwR%tCvPvmtEos|vmxi&MndaJiYi@h0{t?$yKBDO`X%^A9IWu=Z??Oh8mUgy^Y +zAjlm?6}9g}-cAI_y^2ZZnYD4_fzl6ZT#L4AGb0TM@bvfU;)tM=ddYd*K#MjH%ad-c +z@>FHbO3Xq@&f5Xl9qJZ$Pd7|UB)?!HgsW&(<=_;1ia(9;&TCf +My!7K#7=6>i)(L>z)3 +z4hbZVm+3AJc_SXp^elGzH16%auBx{f*keeVNvig_quR$ffEqx(j}u|Q2ms6g5I`iU +z4(Dlm(#Uh;9k5GkXJ|X}VF&JR0f>)5!6?3M&+M@@5FNAx5PuBbAzEqQ$x}1g0g?dF +zWR%PXgz49tKK}pFfD;Z(I39)Q)`FziVVs$!qUYY$t6Z3&Ah;x{AsICA^+Z5> +zrthw8iw+By9Dj5ObVD*u%#wLTHM#SlL;1;|&3T)Ysk85GChSh$`%*E+zP^i&zEGrt +ztn|`Y;(R0(rF#>}$O2zEoSUgmn5gFi+twlDt2a_64xe~XutSc8YDWq}PY!s9iV-kY +zCZx23@ycReli|(M=Oi6SdII3Yer^FQ?YssX5(}Rkx_@1CaA5VKO~)%qOOj0~6~pE2 +zJbgAK8%byOlHY}wAGN6#z%hVByDPagyaI4ns)nJIJ|(>c@Dad9(kGI4l4<}mlJ}D4 +z0A8D+E0R}|mgdOZMZ~eyl~rFgOtz^l$43C(JKBPzQ=5yDzSx;yPM=7+CApFG6Tnk5 +zT<0B9-hV)}kf%&AAM9`ha0}oLz#CVzo&opkPdB4Sa>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;i7=LQQi~s-t5OhUYbW~|= +zWdJZRIxsLgFfckYH#e5ybpQYW2y{hQbVhPvZDjy5HO4@a-b&K1F@e{28{#LM@oNi*ZH&5Qqdpq|5v +z#JmeXBY!ybJ^V3zohh*=Sv1o1BMDLhXdk{E8;W|QszzfN8in3QeHjKljQ%FPrJ+q@ +z&ph-HMPM4*IO>Lhwrr^9a!_})az2fphJ93uKE~I8##~5WESf^qFmjoyT$_j3eE{@3 +z1%r^p*J0$EZsV{)oe8`OEf1jQfbZ;P*ygMa@PFC>$|&|E0Zh6k3V#XjZQ7=u*D#(B +z)_*e!&{$ANKqYndTQ)F?a`>Epa3>N!hrim?0@?&OV21!lYC#qR^{=obN78oWRD~ +z$oQCa{Z{z~u<3f}$gL|VWqH#1+@8Azewi~fvB|qsE41d^l +z!K(yv6%aw4`H}jN1`pG0=FxaeO>?H^e+aG(5&-e&O#UZ4DY?go3q3_%s8Y^9O-vFEC +zVdl>3)#l#qfrJ>IBBdbv0XCFPAXq667 +z!@#u<{{TW0!0-~hcpw?4_{j%?06=CRYm&|6 +z(}MsYj`yzjc}U>HK$y)#K+3@MKY3v +zq{a1xb9V>=_$@Pl(9| +zM42Oz8rjzAe1F%{F(1jc=_~!MJvZ1hMxl|&=xt{{W{o1EwI%j0B7-iv3c}DV_v{d+ +zz+D@WBUiD`-Sw^=v2PUFnBUfAG*xKE_@x~xde9JnJxNVKU^d|Q5JvjDNb~!A4z(a{ +zMZHD~0K_2@7629ib|g2iM#2sUHvqm_0($^INIsoWd4Dlx4D%M_4*jJUis +z3(K5F5I`_}QI{G90N(*D?RgTL9e}?8){+*sM$4X-J+E8yBPVvjG^J`&!yBtSy7xVR +z-y}DZmiGNY(od2*Nx6y9!Gd3#T}iSu6)hS>%w3Wva-3cd0R8}YFeRJ=`0PbS(mMd3 +z07OZ*4u5U{cq3^~vX-=SQt##Z1c5tqQUO?z^p}n=t}P{its$0MC365PvrQUuCF#+i +zuARQfUsQ4@LKT49mcCxwB&4?7nP9!t^&?VGb~bInnN1LkeAQWZLhJF;jq3`)y2oT| +zq)j_uKJ?3JXcaF2yiI%Cs@K3JwscZl7z!6(%Tfj4AIa^|LL+%F6hh0*>g-=eYXHBj +zcaJSP(X~xChL{ouCM96^fcuWGO91cf|9y+y_SI!p(v|rrrz+-uI69885HhPO00000 +LNkvXXu0mjfFm*{f + +diff --git a/themes/spinner/animation-0028.png b/themes/spinner/animation-0028.png +index 6bd4cc9330abe5d547de97dc0deb497bed4adfc5..eda5e3f2f3ab415780c5c7fcfc273bea1920cf57 100644 +GIT binary patch +delta 1367 +zcmV-d1*rP11?dWqBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;i7=LQQi~s-t5OhUYbW~|= +zWdJZRIxsLgFfckYIHxK6bK>Lqu_-Tiqa7nLjKONyM +zCO>6;)k#UFzdq`erRs@=zmb^#NOVW$Zu3N>S^-@-3g=fPv5;NAXMW +z=iqDbzu?P$f4(?lVk=0)#MN5#U47d1>PBXz382cK!4E-r68;|i9DE5DkXV2pGEMAy +zdxta<(|>8R`kjx`nG%HlKKMsa9}=>O--7Rg6UPC60J>)@>r)_Cau|*2i~tHVtx3Wb +zAm7+M8so~EKhxGaRzzHFW3{uFHHbI=7es3^B +zub$%9L@dB0{{%V20%CwcDGEqeo+h@zs9hU?>3<|le@D~;RQfCUCB9YF#_^Nq(Atg< +zO)!YfP`C!e-==E=E#Sa`84$LBWK90p$*UkS7RJkj@M(mn0*ReXM7+A@AYq7^A43|r +zG(CwPI_XxN1QX^|Ltop9ysf=$aX)Ud8t6%GW4!eCU!#AS6SsfoI!%urzupFoTbPOA +z(SH>mANb=9zyxUK()zi2-WH!(VB@u6pM1ovAfebB;&#keH;^|$Kc7QKC||u5+>@1U +zn6J9wjvzfgM-c_w$P;TYeVlPi+*n6Z0cIW5=htAOhW++&Em80 +zjP0hK9uquB14(f-)t-7?{DV2`uI0NVtABu54Bn#-yZweC +zI00wAoZh>S&DY{K7D~)d!5T7@Tn@NxyN+;dz<;wiicImrEjXzYSXjC36yswJ1!;nO +z(rSd*>aLjMrSpwf#-{RoLw-yXP80D2#M=ms#^R3{{B43k$oJf|o^4I|Z;bWdE`O9j +z0zi10xKDxG6hkhcuv24;62EozHc<`q#w$Lt=f{&IzsB+@XmbQ{8_2vJNRyyX#(QI@ +z@B{}yM;za(&lel8k)DnpB>oyA3Bj|0h_w~gIe|u5HF~C2w&|zTAzuMCo${nO-ooEe +za1R6$Kr(q^nB1mZZ&U?t3&E!OgnvC{@+wYYVQau6g2s{L55dPE3Ee{20^-bq%|cLZ +z>Yt+fx)!&I&|@BtDbCwPcT@a}=9e)CMp6Qt9tr|bZOBZ`ozye&?$+qMb-Y!5HbJB^ +zJkCL;q7i--b8z#EiKaxKhQc)PMq$9B@Z?8^22X;Hs}4QTpK*?i2A~W8(og`C@?5X3 +z+al2wOj-VH19)kG0yG0m8Gex&Wc$r9{o!X0dGx?BJ4|n)v@Od+XTcxo^~1+v=;UWC +Z{C5GqWb>{UMri;5002ovPDHLkV1jT+WpMxi + +delta 662 +zcmV;H0%`r}3atf@BYy&PNkli)M@M%ML(eb|5d&9R-mn6$Bsl! +zFUw#bjxs(R3igubNeDHey_LautB8K>T#*s +zIh8CkDwf8F34i7%3wMdzT}oZt$67{kp|J2?t@m)WQjs?KD}d+9oFmEOhJsZ)T_h7F +z9RU2OOeBB-z)zBw6%hzCQ67Wk~K1a +zug-|vxPOcmYF}UAD{JsY$c&gG<<7%mp53%>=4~iAkX(D0?&=8**S&jnv1>}Oa>k@0 +z3Y)s(9e_ud%crKOyl-NC`?lHuIZw~E^eg*`xmNt1KckD~e=?FSRnyTmu4%OardsF9 +w=fU8)A(yRN^c%P7*IH7p_ru%|NNxNFW}9j5=?@GUrvLx|07*qoM6N<$fHq)$ + +diff --git a/themes/spinner/animation-0029.png b/themes/spinner/animation-0029.png +index 2999ed06001988014fa95f7c497419cb2d7e430e..33f2683016b52bf778779348c8c96cdabceed39d 100644 +GIT binary patch +delta 1330 +zcmbQkdW36&ay0Hi1+GdGpNz`zQEj4Utcohbs!ae&=Y +zln9hGvMlLP<_C%ig2bGGLPd!T5K7O$!1&Jvi(sInC`d9mIW;epAu%sAH?br$KTpBf +zAg!QSf&Xz6P=PQ=K@iZ1sYUe&OZ5!QJVSn$0Of_irdKBCq!ud#C*~FaX$C_hi@IqN +z+6)ZLcRXDjLn1h9r*#KO8}hh%F1T>%`v3aW<-t*G9G>ql{*p+&xj=G#is!YxoA%Cr +zQ?~o=)t4o^oHmHop4XY}_*bAKlTrE2na=P1 +z1WXq3UA)Em*mj$zLVYXa&xs#RnX7ewSgqV#p&Xihe6OYHf17DqP6rYqHgP=o-J@G@ +zAkKK+Tb}l$>x(;6wS(Gs2^i-6lRJLu|2z9*?j0ua +zo+EkYAGkhtc%;bfto+U9cj@`GGfpf8*2m}F{=-!1 +zY@f^XnZdKGUL+S~g}>tKIdV4NDXCsy#`^;H3)3V@w;b1d;I!uo>%2-?+eV{fGuP}^ +z=Q|zV&3oy``CUi!4K}8QPhav_zNoF(%=6H%KiR$0+YX7nm-@|Q`O0#|)wiqeau#G- +z1?PyRFn<$XP_A9TzJ66D&m~!b>aJ`nM!WSK2l$?C*A!dxJ=Uu&qTl-bt*nF>er-)# +z>zBnl)g@VX`gC)wUpAfN{<0f_RXnp^i{DPGE)p+1s +zZ@RAiO@ZabCZ)giL@p+|PMpBdb6!{KrOPXJE+Ow1e=@Ic%{a-pr~JIth84bxTN!W8 +z6RH1uXd}0X1B;7ulDyD_Cs*gVKI&fGQpG1zW-DC(X!d$jPQ{O9J2wRLESP`9Ln2Ah +z`oX>{>{?Rt(LU|>M6W&4pLCJqTd+ag!N4SamMf2aetLepACR6OxP9{7L+-9@#YyWD +zch6M*>dAjjg>~7%QyRxVIe*gUYirfAlVhmtyK%+Ad&&BZcJ*<5e{UG+8$NvFY%HX> +zVc(R=wMn;Pz3bZ^2|d~ockO{mw~Ibo^!?nX#}+@D5B+yOzul?whN*1wVn)#!j}va+ +z)V;T975lLj(G{)x*vig1O)`GbW6o?8XW@92^X%f4pU?eaF;LRjrgA|tfBJ2lF44hdhR?_qW3i$v3E)M}(plIuJclyE& +z7+PA%5@JArWsBsH!zD++hL0pl;uas=5Ig}$cAH6Rjh}ud2wadtGJ>c3u7!5X0hp7{ +z-Is-lbq+w&F3nZiKf8o)dxjG}RsoPJbF%Wz`J~HyJpkh_JAWW-*@Wyh$N#$?FyqgL +z`arUTDkMimnP}K90GMq|--OQq_GWaJ^o!(QlCXeuS2CbJ*ktyWTo-zyL<*8aJOJ2B +z+DjVjjK8ah{g%TFkjqdusJfBhx*0?^SiS@JVg|MB8NeR^Kda%?&~c|kE@%u~e04bD +zos_)QRANOrDMB!@Y~D +zer+8^y0Q-w&m2h}*KW(k+$bbPNsj=2G^$Ymypp`E2;MdP3PA2FKLM%2mfN)RTh*@= +z3?md&5NDF74HUG%mnBX3V0>LatO+L^40aTI8%DpEf`177H;-XIV*Fr3Xy=-cEBe5z +zr38SIZUzxY&ioK0RsnDXa4^6knHP-W6tsb#h+6$K|@5)`8(0KI&>T1`Vh~-id +zJEw|!SGHo=&xzO)mGo9w{+7KHsx1%-c3S;vW)tvePVO1SUdrnuUrsw$omDTVo7Sw` +ecC#-aQ=k8l5OG^l9jNvI00000Hi1+GdGpNz`zQG41uI_MWG>3jsxtL +zqC}viv4M#Hs#icUL6Dd;P^c)80Yd2+7#RP#U=a+I6a`5JC#UA6G9>0@<|dY8=I1FG +z8>AH!EAT&V0xA#&DF^~OF}0{3VX2;hxn1z-M?iTYu<4b_IjO}8!HKyAK$^kO$f9nV +zgf;^M^BzwZ$B+ol)@j{Ew;Xs}nV0(B`v3om-!G4bd&=)4xsz9HK{DO#zKZq +z|N85%tWMLe?0moH_rl}bpI_YmyHx(`(!-IgMdc~{nf3K)hyAUKmfP;#6AQ?uGL* +zO+ANJ7nl0o%6ws5-+Y$i{0YxL%CB`_3s(5J&Q~!toTaC)H}&&Uf6w_^2YAn|D +z&wlR5PUiYeYBx7>6)j(Q>sIM;>$e)VpWWw9<_(zF&|ebj@2L2s{fQW(x&5*e*VoqC +zu^yf|`^e1qcQvfoew2sx+WukNP`-?Jx=vDe^J4iwE12XK{k~f*XnUakJ!e(bGiCpn +z>Bahqx=qI>CDnfF%XMzGd0xGEdGUeQ2EC2mvJ!tS%4JG!eX^Qom-S@tJI1G$>jgRW +zHvDOn3pn1NEqXAx&3-kP0|#T?)Hh4_3!ak`^=d9XaP94h#}k?FsGa3~?xZK|Aknhe +z@0CH(<=5X9nQS<{m@(vY)77-UFY9-5Uzo9r`SG4LCA`r~o+|d;>DoKl*TZA_O(CnW +z8@ZEZOZpaBPCqBk+39=F^3&o+4m?+HNb9TG?`5z`jqI>dFPOu?Q2L=xMP+d!EqLygv8P`Z$-xQE_XZKg|4|Q)&58@Y58V +zdM0%tzv90e#bV-qz7pET8PMV)DE4WVQt*dcnbSE7^!vM*7?Kqyb5}lFdc&$oXc|A) +zyvqFA{ro-;dzB8oKe5j6!Q`Vys=m+AIkarmi?zYEk9nW-xe2&VnDf8o^o%IgPQ6u1 +z`^8spT==?jLb}d3pPbs336psg?A&# +zeU5|nk$#^4Gt#P4xEK#D3YZk-azyJ~)6*Z1m_zmYc$hvfdlaNo-dJz{j(Hy2>BXyD +zRG3?2KKMO*>d~?I!uh%!tJfCsJdd4(Tm;wn`7t{zngkz>WqNMs<6l%CNNG66d%XYmp`G6+mKW62^#2IjUH0Kd +z_kqnbPP}GY&Gu7h)1PG$4iO@T{rX0&7DW!LH{|y13s<`-W4npXVvG4)!>O6(Zt*@$(Ga!0hhn>gTe~DWM4f +DqE#_G + +delta 597 +zcmV-b0;>I_3he}tBYy%kNkl4>@%%7fDu} +z;F&xmlJ9o+J_B6wNTMWOV}sW?2axRRLQ-4o>gpounzS{4^yByJtzM;ye;kOw3ZYcK1wy3BU`0p8#GF1ho?!th}%Nb+wd +z2Z|!8Q4KQC^?yz%>E1w0?wkOAw;Zo@$&;LjYUN7i?VwG`=OZ?)w;$-@-`tL0rJMM)XJQwQJz;GN`rp>tT$c0-e0X|Xd4zHQW(5abTp +z`MW{@KpZS5gg`an9G)>$KB$l9s2TjzAK +zL3AkhTl?RZR-A$wIj}ysK9I^pD~`&D4YDTy$--4z$4(M6SJ1&2&sG7|-tK>s6mx?| +zwJ9B?WosgO0J8_+X1P~NLE_l3B8ZZBk~I5G`3!)?bza$U%YOj)t)?t4rbG%-%Pls# +zXeX?&Urwutc%CBAOSj_GTC*BUEE-9-8Gw4rL}!y8?i+akz#J22Z~@`SdwGRT&wyG^ +jR^GeKzvD{=PVe~#0SQ-xAG)mK00000NkvXXu0mjf-ZT+= + +diff --git a/themes/spinner/animation-0031.png b/themes/spinner/animation-0031.png +index 9a4974392a82aad3c7c6820ba8f9f982f9b2abfc..f6ed4b2b3cbe1611c2530eed5d67900ef2ae557a 100644 +GIT binary patch +delta 1226 +zcmdnMa+h<0ay0Hi1+GdGpNz`zQG41p-5-f=lljsxtL +zqC}viv0<{utQw%0AV|y^C{&cl0HO2@42=I=um}c9ih?AAlT-6j84~j{a}!H4^Yavp +z4blpV75E=F0Tl>?6a)dCm|9eiuvE{$%roS72~b`LYeu80U=p$;a<;`d+*fKC$$YSJqu0w&E-Y2UP>pBWsS|)qJqW|4c^BJQkNV +zIZkJ`H5NXpXZty`KI{EYz3*jJ4?O$ca+WenF=eM`^?j+o)WZ5m?azij>ys}gS(hG* +zH}_lr(v#Jl0&nu%teF?}ROa9rjs{_b$(z +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 +z?c5ONT4^Js>%@&fjm|N)iq11k-rRBGr +z_AgV*iZ*7dwC8+FeN2T$Ac+~DH1@}G0+~AnwDhX4pzrZtX~0)j3`xp~@%$nX?0@FaI|5-6z`OY0Th*OW +z|4@ijFSGaDpFt$0oSd~iMij7c?x-k<6({e!hl5_ZQSG@|FY?i{e?O`m2c9R;(FK1e`a06(4EF +zzyzcnN+iMV?Tgr$CB9;$K|2-6kQN&-s@%PznjK2jfO$m|w4AGPC%K~N0F@R}!<&;H +zXs06-9{p$3t*9fsM-rH7L|2p8X9C|GO4buteT1&qEgL__4~=g400@xrIwhi**8l(j +M07*qoM6N<$f_iAeZvX%Q + +diff --git a/themes/spinner/animation-0034.png b/themes/spinner/animation-0034.png +index 3b053defea6d5b6c5cf6408acd8d81598935db6b..2851ef3b109f69058707a6400a094ee5f2d4c16a 100644 +GIT binary patch +delta 1041 +zcmcc1w3K6lay(xpiogF1BB8uFfjge!6FzaDGHJdPEO5BWk}4+%uOuG%+FIW +zHb^TdR^Wf!1XLglQV;}mVro%6!csj0bGzWvkAU(*VACs;b5e^Hf)jHKfHZ@lkwx7! +z32g=jroEmnjv*18OQ$zZdZobQy7uw^`c1WSPAtsidKEo$C8y%f??PSg@@{Xt`>l4r +z;Ro4cbJAyj?wCBg@XXmt%i|SCJj@#A3(qu;so(B)@AJ?4J$K)i-?_X&kGlDIS%vvrup0G+=^Z0X&)qz*?QF05q`CUxb6|=u_<0xQa +z=*<1I^zD_kZi{a?vD9VobCxBuRf^8| +zxN_y&zP=|*-W`uU7SFlvqt)_l@`mpOZheZIv$pi>8>Nl4J$GlnZVG$gQ@`ufTGK*q +zo_(8{oYWTX%f6Dn|54=h&+kN*h%di(*HBWfN +zwrg#}%I7aD6Zij25dNw<#YDc<&_GbIxI9r^?a_e~TZ4Vq{@da7L)L@wmgEJUZ+iAD +z2M#`#kUilPlT+sQ=u>0TlMU;9U)$m&{Q03Vn=^n38_mAV^gRmU0 +z&c>V9`#HPyGCD2A!h4?vPv5ghRQdeZ$L|?Ky_Tq+G~~J@F6MqE>v*2xxhGfBcs6b* +u>YFBX;-p%{lUvJoRL*RPSS$Qpp7Yh?GFj7Uz`Vf4z~JfX=d#Wzp$P!7#=SQH + +delta 323 +zcmV-J0lfaD2;BmZBYy!TNkl#RKUOfuY8a@#NU$MB)qiGe!JqT6<_$9L9hFDL +zfT7lhG-g~Lopwgnw~irM5RXIW|J{p?XwT0QYg})RVnphnRplwguyX(qQS&7gcsbi{ +zDd!f#n+}%%hEaLigzh=a%=?Ks5LQx7yz{1#Iyj0$F(d<6fm*d@uJb7c>aCXQL*r~E +zc2lYk71;E2D{tT< +V!X$#D9)17-002ovPDHLkV1m`|l&=5) + +diff --git a/themes/spinner/animation-0035.png b/themes/spinner/animation-0035.png +index 6f402ff606f16fa7e385677dcecf3fd5e5e8740a..2bd3b0dcbd17f182023d4d609f1103a8b128c7e3 100644 +GIT binary patch +delta 959 +zcmZ3@bd`OAN`(_kW-nPUs{r(Uy_lUn_8@2T#%WUms$j)^^$T@^HP$U&awcFk^mXyl30?; +zU}Ruup>JrYZ)B`sXlP|>X=Py2##bM%4^$)oQWTPzo62BdUkRtBcQLaqCNavWf{ +z6eR*BjZITj<5GcQf*>(xpiogF1BB8uFfjge!6FzaDGHJdPEO5BWk}4+%uOuG%+FIW +zHb^TdR^Wf!1XLglQV;}mVro%HJ={_~19Q9J(~p4iLSWM?lXFsw6@n9U3xG6(p^-)1 +zGzo162But37srqY&b8CHixwLQxbRN>Eq^o4_Tlneex^BGtGb?Fzid0n;NvEp(~rMa +z*+%@(D?XMf>@Jt{slzuW>CAVT1mPc?Dru4Ss~fBB=J%J@#}?X8tDR}`eX?iG(N+FF +zm#-Fauxj12vC6NnXKl)9Gr9J^x+`TzvX}W{UZ3)dH|I7yiujil%gHTz{nqxnb*%gO +zoc2gNh|P}HS-3QRZLPk)fMffFdaDNBdV%wbl1t=UABlXOU3y{d^R$n>CBJ2ymptot +zpLp_()dzdIz5_My)atoj{<293Z{^%~!}gH#oqG!ZSGd=`x^&+^!O0~1#i69FUypvi +z$8zKF~OrmlC8VgLRjzH6VpWtZoBTBO}?vZ@p>U+%YlgW2b#y+O$= +zv3$4QEK`qg*!tkewOL25TwcGU=jd9i$T>f|nzy^(m#TdkF85pL`Uh{jzx7*}AK$FJ +z=DXVV^={&xMegP*w)lbF}lF|jo1oXN54nI!Y} +zOOJl#FK3R!Vsl#gf>Z>?%k9fU1Ft6q35xJk=g5HNe_%h*d+Y65e +zI{j_V&C>4~C-D`z6}aoJ&*5P(bbj*jj-nd-o+5w$19y{IZ`CXhjk)cAfI+dQ?Z7=l +zk55n3zW$az$mq7IbN7jv=HJ)0ZZEp*&FA;#hii&sk*l@FyYs(hp8YNMTp{Z7-|r5- +zQ6(G}j|>Z?+ny%acHGF`9IoxR`k6(x5T{r|^VZdSEPfrCba}e}Z+`c6bN7BpcgZiB?Qqj|Pc_~9XDnl{A7G24KYGI9>TVcqmaOi6m;Pic6MT1_iY!I4h +zG$SYcUUZ&mRDu*�r8T6%e!$%`lX$e55AQv%p8fT*;ZPWPfspvXa4-Y~c_L%oOeP +zFp`wOtrUEx2zL#ZKV2_uk-naI=T%aDx)qNEEj0~i2D>58Rxoa@8;qRNjPVgWelI$A +zj$8RvykjPKCoIUZAa{AhO2pJE5M>()+l5Fax`uZV!Kl +WtQ~;0BIp1B00{s|MNUMnLSTXgsm#qUEy>U?$wVr$A1EdW5_1L$6(ur2C_MuM<3ATHf`O8vAj#n5)Vx%N#JtSh#FEVXJOyKe +zw1Q#<{>M!~1;QW&K|m*_7KPNqE!8tHw+lY~2q-TEHoY=AC$(51I5D>XNHZ83S=3FF +z&}Lv@D)n@642j_Eoz@tn<;cV0`uBhQvy0{5F16U!MzzB?-_P9p8I!7I_1-tVTJ$-*GJii4JBPsygKXObQ_G0H +z^_AxyR#vm;SZ!H-vCdjAhJSkKbouuTtxV3F!Wjt?z#1YW5T>TuN<}K%VobiaQvg4#jTH}cLdIwX3dkb +zTK@29`uCgL#ZFf5xo3Y^s_e&p?-#ER*H1Km{nhZzGrsOvm-$iIe?BwmU$rmPeNe#8 +z^Iqv`#adVWglmHMvHVU|MiBFROOYp*l$Ufki_{`I=^`l_9F&yOZE +za{IIy@N8e+cU*4H;^%A5&A;6I%4xx$g6~Q!+091}|G9i!{gvSByP4-?@3-XzKfdy& +z@k^AjgPG~?*dyLo4}7&xblvG4Fn#;HUvu`p+Wp{{+NYB|7ZP$W#P70u_GQt@v%>!w +YGgoPHKfXE*l!h5RUHx3vIVCg!06jvn00000 + +delta 53 +zcmcc19y~!sU&_ +zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3vdk{c@wh2L4lT|!Gj5-f+`s_Y=kzX#0Nu`@F@ +z$pp&XSRe`X3Ft6>{+QuE6cXhS)stnj3nk{5xuB7*Te-dIiu<`s=hH{e@<8KsFhqj4 +z-2U2;Q-NF`3LcNVKFfo*V<#O$bT_<(=EW;(FpWiSJuwOhXr7qr +zj_Y|esldc|-cllNl)A%btkWRTsFE<<9I(dEoe +zgg7SfDVRA+mCRXiglV?yA*Y;kDR5d~xN +zL@AZ4)L6Az^_ps~r6GMZdteIhDS(6$N3){5a^nt}+9nTxcReb!+``#K>T +zJf!+2O!slwO{wCx`&jo$HGD(&Ni}>!_enK;L-$EFd_(t1HGD;viYf&7K=Hi3d(5Oa +zWSW@9NmpZC7i4vAmU@Kl5rN@9@=uUoliKY^ok@@KqbGcx&jSk)z@(0e9l;_^b>6 +z0|^X|qww2t`Tzg`24YJ`L;(K){{a7>y{D4^000SaNLh0L04^f{04^f|c%?sf00007 +zbV*G`2jUAC4mu9y$&hLQ00EmxL_t(|+U?xUO2a@D#qo0|6R8UYan<*K96|6A)Jjcl +ztsv5me2j~vlh}=!bo>7;vkV;W+`};T^!O0w^SN&C?v-V^WCHM?AeH4&t5u=paw&U# +zc@F++Cg*dRks@GpmO@Znm9nOk?e_cd{j*b5*OC}WK*CT`?law7&*Z)La?Z)>Mhqli +zJd@pqwnK>||4dTYBS@dK1625js&Cx$xJf!6UlW!B1ypb +zw&8S&^Rjk4#fe0afN?o8=`?!=I}$+x()OdlM6xzX@pwm)fbm>B+DU!c&{cT=63T|Y +z{??!74nRVXVr!@NSmy{5kQk&`HrQF&K#+j(g~PD^CP=^qJ5p@zM38_>f)vM-i5&@; +z6r@3G7Z)dT1f-P>r`GQL;wpggbwhu&Gf9CR379J0wF?Sex(E_5DM+UQ#f}6_`R8K#%}PY9EU9b@wnNEd!9QX&RMfDfhYlPPx$DM>^@RCwC$+rdi1Koo`HbH<4ap@InFBPjU(TNi?lU>6~3Q;n$j0#+CoZS75L +z)2-nDEefH#fuFfEB)+}5E?1Wqnw*{sz|y>(>25leA0O^Zbu?i`fWWd2^(mK9%FFvl +z_yhRgiX_`QJ2_Tf*CI)#4q#n_(m`GYVgdnrk*s3KF$_}(uq}|~Ln07Bah%FA4BMR2 +zfwE%_C +zX>@2HM@dakSAh-}00027Nkl&+RXA8IVqnqX6v=>l1nbR5JHIG;|dqPa4jg>4yoY)0000< +KMNUMnLSTZ!>UDtt + +delta 1891 +zcmV-p2b}oH0_YAdiBL{Q4GJ0x0000DNk~Le0000f0000i2nGNE0QjwuMF0Q*0drDE +zLIAGL9O;oE9DfTF000XU0RWnu7ytkO2XskIMF-dg7Z4XH8;4t{000K)NklTY8UYZEXeh#?k8iL_#(l{Zo%*%QryLl_}#u6xTUhn0xXURTOF5_3Xx +z;WlFCwAbCkid;Al^?|*hMI=O#2nL5l#`vc#6Py02s((4SyVDo~{$WSc(x#fgKZ6c*ar$;)SP6Ox#@J9d`7#R2~V{C$RzFRJr|LNYg4WOp$y54C&q!Y+=I-LOU +zw}%fO{$p}-5)%^>7#|-;e}BJ!PqkV_Hk-xn?k?WFdxsY*^eXlMukpePE4hlepZI0!-rR#sN< +z{Q2|mbzT3t)qa&W03UgPwryj7e;0qHH*aEQW(EM3)9JLK>-xX0Y`9aYRN{w)g|d`VT9zd@Ha6ty>Z+WdpU@0hxxKwDS5{W! +z+<)BMRw|W>wfH4tb8~ZBD=RB}HA!k4qtw$>ev5L;}%h +z6q!s0hGC#oD*n_eU=XxaD*j{`1~QopqJPmS5{U$o$>eukLkb~AhKGl7e0&T5*xTDP +zU%%e|rIV!m`t|lNdwY8(03075V|aKNLWq&BA#L0Ks<*e-uOA$|*K}Rq>jYBQ^}U0G +z_nKGl?d^qa+h27JsVE8sfKsW{cz{xLb9m2t?Ro8Y1<4pA06+-2Qb?~oul*~5{D0gD +z>k^V(*nX#w^gJcHRq{*icLYf(CAC@&08pt^Kq(>JK@w7_Q~&_AS`C!aOWXV60%LJ; +z@v%ec^2FE}rlzKRqj#&O5W+8CyLJt)UcJKZ!2z!I^?m>3$&;VkT41QEy7=ciU*pD& +zQN-hMjEs!9Daq<;xNEigsruc!cYkr?#&sA*Wf4Gokd|e|rl!6|u~n7>)`>cs3duilbO8#oAt~nWhQOIXLJ3 +zdeK`S+O~aqmEw7a5WmhC1-rm*!C@zaz_#u7*OQiIK?s3-J`c`07-OK6qJLJaK?ng= +zRiSAbG)?ot2q7SZKnMZO9WdH}c0UEA1PB2o1o@)^Ow$AajE#+T2YLJUZG^*NU$tAe +zZuu%Ss~7~;Gz~o=tuf3B17ivpWuS~fVHAIe#=toTAq1a3eL6K-Z9#I*k;~;UFfia> +z-{0SdloE=fKvmUq&j8>!9DhP}hm|MmaX9BVIy!=7S&dohdeXB(14jBCan2#7 +z^dTuhOP-8Iqn&TWIOn)?=MF-lkPj3NhjDUpa%yG=mGsV`PzaGoq<H +zQ=aq`qLhL$=7W3cIgSI<1nLTF$&;g_qunW)OeUeKsy|WU@i;8YI@gnmqWI^Yo}QLH +z*|m~y-@ZjpPmh1CRDUY@zc^Rr$?@^=-@hjrW1T}H*+1 +zw1)s72q97l05Slo8(Jt7LM#^ZeWqzD%4Gx9Y88Y4rg?&5u>i+$nqJij*Q1|b0w{`t +z{{DVY%Ajc~B9RD&hK4|CW83lO%^PT%2KP?_3xMqg0ElKKJr$L$t*sv`mCD~u(?mX> +z_xCT}UdF3?Yk$b#o`-V|+qU62jvrpV`TF(i*AWhfVVdTTZr{QUPfg!{XOwJ;kQ>3W +z;sy(}ab_#ydW*Zm=m0R?u$s!j@RZ~L1i8SI&7n3$5Rx`cx}f<*6Qtb~&N;yYippS; +zY@XdT&^Zg#={faNS;0#LO`y%g7_0~HIWxP-MR~I6d@NZR=Rh_CUslF>d9suDI^+sc +dqiiSl{tA1=D}U-QF|+^x002ovPDHLkV1kE4d!qmV + +diff --git a/themes/spinner/lock.svg b/themes/spinner/lock.svg +new file mode 100644 +index 0000000..19c3df8 +--- /dev/null ++++ b/themes/spinner/lock.svg +@@ -0,0 +1,283 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/themes/spinner/spinner.blend b/themes/spinner/spinner.blend +new file mode 100644 +index 0000000000000000000000000000000000000000..314aa4b9f885001f452dfb95ad4187ebcb5e029a +GIT binary patch +literal 737108 +zcmeFa3!EKAl|SB-38V?IJbVxZVGzaW3JHWqRLHy%xL_b56G-qiOlEE}1Cz|`%p?R+ +zb7fJl=mNe2ix^Qc>Z&L{BCyE-KCZjy58V}lAmWN^*7yE>fR82r^R23H-|D*E_jcbq +zlbOlf{!Gv5sygS?sdG-9s_w3?+qQJcg^QQ0IBCPv2sbrN?$no4?p$Uw_5yj!UpGo2OfA?{jBSt?gP`? +z2M#&p5Qzrf-a4E-GLWz4|=+K4887*Zco;?*FrA&u*SIYt|NlEq1?{F4y~W|A%eGx3|E)jg5`F +za7sFt<^(NH@PUu)kM~8=w&2+>{9&s4KKt^_nKJ`BA9T<`EwCHyDD8U&Z7g@fPlyi) +z9?%JVfWE`>sj4f=4L#WQpKAV1o11p1z75;JhOUiiyC?`7N9DVG=o|Da(4annQ#L+` +z>{G7)L+7+P`=V`c+7fnRxuL1p|G|fLCav_B2E-Ba6&%G!%9Z_54j-`ar^GW +zLTPJYf3y*DPNoxf=a>!~;hHvqosb7zGY^pVV;RbAIvY3cnzpv>D0~s?b3zl@|LF@t +zlM@}Pn1DRUF`0BqS$M&Fo7NE5meB0ijgN=~S +zQ_2&K{Wc$=RsKZ(5WZ#mKk9((Q77$=Jn&)Klz9`WU)GJb+V-Dl|CBfx#CqCU^f_w# +zfsr}X&xr#(=$HKuxWq>pPS}C%l(g~>K-if1xF){K3${c#VmfeGj(nk4^F-#MoOTyE +zo?%+rwiEQMZz7?{bQw?RioUV0A?z)B8-@L7H|UXmKs!3+qtL0HM?BaF`8*}R>i!QN +zup@0wUXrioA9g-uMj9usE2a0fp6&XKt^)f{gdd8YnxP}u5fCy74Ecd;W2T93+L4RO +zx67=48}xhFR_Ih3<?`vcGQR)!&L*MN4l3&&jP!8QehqMoQFdt>)XX7NfhFqY>DY{71{{=UQ +z2~vle55SjjB8_tJ0&kow0~~LCyZoU8+y48~|DaRYkG8=z`V(X_a>d32gBz3+pEj3t +z5bKExzhXJ+LH$t>IM4&^0UDgbV;ALu{eS~qf*y6D9Q@FqnFqY6G;nc(Klp$i5NYIt +z@4mEy$a@)2w9)mE@kqnw($>KCQh#Kh2aa17m4@yiJ5S(1r^q*Dfjyah+`LmBhQ19_sekRLD&9M~Brcn}x)ycUR9X0l>uxJYK_BAOq?Lzww6BzRP%`eW-7|&PujN{Wzg>`hk7zmN5-|5ubU`wVRJJ +z`vhMXtV9o~`_HWwLO#`20Hm!Rt?ZG`_tK^THJs_{NC$Rr` +z`kQTgX@3xN-D~I?av9lj_O-|wDznqz1KSw-p#LKeC+tU`03GnkLD&QMq!&2?o4dXM +zd$NDyIx213m-OICI$Sd!^uQOWd|*87BJB(84_%LkzuC4&9XzFd!5pC6HEci{T)RGk +zbejH;x@cDyO4%;f1&B2G(>6wyz!zv&!41vzL5I^WXDk42h3jV03fu`E<6#%HPudgM +ze?0uGobAy@qvOC2px>x`$x}81K4}DZi=BpzjBiBtf8e9shL8{Sx%tpJ_(2|=QcqxW +z`U2%dxou}RZR1NlYF+?Z;^7+p0R5vL!Ecpx-~*5i_8$-Xhzx=KrS389|I{t`;zWA^ +zrM)40yX7`6ui3vr3qEma;sXbIBOdFp%YhSh+PJU{_|S&Hm-67A&$c^kYp2=A!2>7C +z%3Tv5{N*~*2jB-|b)ucpp1}TN>0icwOYAJ|55|6@%aCsvnR0+p*R&`2fZk2RRzg?O +z|DjvK5BfjpSP$%Cm&4xB2l7x4dBVn$ubu^g2J|Sm?M`1oIZoh%53VVPn@`_BxzIPG +zK7k=001a$EmUa@k0{f#aW8qt{J$O;aMt`Axk8+-Nxv^geSK6&?ZR3+S@<2~IrkQ8s +zp^Usx9(O{|tP9uRO`C#7$|A>l*bXOXaN0h>GSEg{6CY5@mED1B{6ftGCBGT8V__rk +zkOR64>_1k1#rA{0eInmZoBDHrQWnGoT+?oDzR|zpi)+{JNZa)Qhj;>2|Bosc8G@J& +zJlGrhz%}Sm4mpLt>i@_GADr|JJB@PCz+Nb~@$7tD+w``*CBGSTh#vxXN?Q2^@L|8P +zu$Rag*dOhy)wf_bqp!Upb6`h15B1=*^K5(b8s$;f;2ULk@onl|0YzQ9g-u +zt*6ur8wB>R)t{t2@YhlBwNJ>6G|FsyGOt`Ya9}$?gRk^yu1ov?It4$_(B8GS3-rQI +z`2l=E(xK6I@CUbDeN{fI-#2Wo-BC$K+s +zT8mH7Mu3nHP~;s2v`@5wY5D{3cuiX1l)ENAXn}_`Aaq_!JIc|*UZ?|pfO_P5i^v&z +zmXG$KjJ^oSYviMxIDir5%HEQ%>}_b&a{$Bx$yeh5=%lRbIAHV}*uNG(f^hW23Klp+lU@h`Pk7?;e=AF`R)En3oHbH-uwg%%mu9**6 +zZG8HJTMioF!QR48*&DRLM;RdWP>tMnJB3GJf8o0q{L-ExJNz`T5%}PQO?XWhWoI{! +zxPUfa_uBZ}Xj*y45+8Ph9Dq1QW@T$!!(PmHuSJHyXK)QV<_S&6-a=c__n}*~1N;H2 +zIiX+M{L96{~t<_<(xS*vr;~)KOFa7r7zZ +zDDB3+%rxZYH6U<_BX#GPM;trP#RCq@p)<63GM%s?Vu7*YF0?)B8hDPqRh$4V+J`n- +zw6T4kIHXCd3!~4#{?8wH(x(ss*gK66g{R*GJ{%QP%a=P}5NRQHvEQ^3af49m4I_O36Cw;$n^(S&GABgDR +zAs-O^JY)NZ(3On)&; +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 +zpY@Ruj^YtgG_=@-ubXk80v+-o#PD!k@a; +ze2lP?Ft7)0LI@hzXSG1`b>kawaO9VbT|8|Pew4dXe4|`}y^MVVd!1nHW$Xx9?PFEP +z3VCLg9fHBC9RjPd*B)c9%xpdWW!id_y$Ed?qps~a^DGO2_9B1Ui}esS^Zn3x#O&0N +z^^rg8BO}UD_|H&%RZlihUz0GWo+|kV>ks_H_(R|yFEajN{DyK9uIlLM9_kxZv*#+O +z{8i15wj00j57z$i^dCmlcuGk5lE8y3B-)GoX)o48RDZ?T^=HHn@@IXlhjJ7~$JRfn +zr%L|8`UC$k{t))K0GNPPackiD3l8V3E@$Y04`lq;~8u}@&Hmze%+?C1(4_Ui5Gss3IV{L;kx{Lrgj +zgZq}b=D85zoE?v={!Hk~x%viupR@4B()%6zi5TrgzH#>A^R=;fUeYAOQtnFjqFj&@ +z_aAH*=f7+p+h6Paw?Sqxxc`{@Lj4@IaHoEb%lcU#>u0@`tJeBG&mNh{UH7Y;C0Dt5 +z?pV&h{g-Mz5K|&o%wq^n134a8<|3?B +zdoGx!f3sfy@ANoLxci&WQS&)M;>E#+gFWwXQ#jK?V*e)Jxc;3fjBPxo+?Dz_oDXmR +zW%zj!>&|@iEH!>I?f+%9dJmR)SnH4ZmEf)3srNQ~^447%FK1wp%C=`Qw|M3M=m(+a +zSucIvVQ1s~&I1p~x%BJ>3l=N_y!oc*DR{(;Chs+e*)yvmujza>Dvi(GU7UMLs@c{D +zp50*#s&vp^FLDrjB#l#hv*O)MT;w;Ivqd1zIo=WS|21kZe34uo(%I|=FfQP)6S1Jg$X$H@(zTGcy!np|&bT>~W= +zkoi;`-gE1*mE&srrR__Xbaw25o2R4ihbq%L@EL`jR5-mxtIdh|4M^DLCWV_Ft +z{|ctk!{HU@wxy?vr^uhL-}e$0UaiwE#Vfz_tX<}mxtV(QwFrL0XV;BhWAGfixT3`6 +zQcq7K4Fq#|%;jU+ZSqUw)EXI^)PN*GsY!_8bDD>aPdDFmlRR&I;B4i85)iN!26^I> +za(bwHk)(yDsa4Y!+OVFuMNY~CTHwKtHC;ja7G=@U;HtLB({drtHG>bJibEowH&bPd +z(Z80K*$%OYHzxow~ +zs=DCc9wS%pZ^Q2kT)BuxxmAr5|fM_sC?DRqg=F`D;Mosv?CT@ZW=3dT9Sk>A=eYqpZMP8+foeKcR%_wHJ_aO +zBMl254*O^3aQ$8n{Zc(oZxE^jf@kXuavYC%a;*1kRH&ZE%R8H9`vk2%>v&UDFEDN` +zhyTFh58%CMVclDlzwrqZdFHPV&*x+woP&S5{fqejE(4REBh8fg^>R$I8M26y2+k5` +zK0sD@pQ_$ap|`4|Ih@WpX|LuqE0TVJaW!Zs8^QO;{zHFL-&b1r%^1gsH%q36Ow);Lj8F +z=OsaYUzBT>u{xyn!FHEIZSVN|_3aCf4&5h`^d +ze_d6NkAWd*Hx~v7!3F)3`b*-U+k~2a1xDHra3wLy_?`c8?SK9^XMa$|&9w%;&cN#o +z%ouptO=?}8zsRINc!%15z`w_&A2R$tXW-*cT@JoH{KxKAAB? +zSgIA;pZZH;|M|j(_qX7v>~HRS{T(JQ-E81a6OUeI{KASu+k}?y`MzlQxbOS=vujhl +zbrB}c(Ye&gs4)qBZ4(}plX8?7T{RGUqQ>-&5E$QP-MJ{C#KdZEuU*-zSP!G0*LP +zOcybD#ePWrCFzIi{>R@h97-^flTJx8gg*D`kR> +znBpF_?lGkvtO(ONx9D$d7QRhG|IVCxw;ZI`>t}bq1NX{2tJo&5IrE9|Gi1tZ-&ga! +z(=X;ew`K0*8lRB(F5LXQkEpQ>dYNmAb~FgSBn{kolU{6CvxNPXuxqymE4lIL$&clVNd6Tbalf_E{8&y%exxTqmb0GBW6AmX;w)^>Lb;~zkY^M;cf|#=#v?l< +z%RT!0v)yWMv?#ps&MQ3c8*0r{=5jrUimR_FuAo9b^o_BD^_*$+RJp{9!e1*yUH1JwMc5S`=vTGyP4rM;> +zd?WUU>b?;R%g6Dpm+kaSe?3H)3B}pq@+R@6eFiin`Y>#(3VJ7h$Du#Gd}JeojpO(;Gr>QD>=E#_Aif +zNbq!}H@EfuGE#b8plkFQZ{{sC@7-8nZ`Zr=l +zpR8Zipn+fxZ@#mNVr9LonLz*Ou@9H>KOq*}S%=7Vb@6nRp+K8s!S?z$V!`)r#W~>g +z`__&9s#?fz#4>aA`*imkvBJ&a`P{VsM$EiN_8+W&BQ_S_h%wIHCk~7;f!~Pb-|)z1 +zF&!KMHGix~9_m +zAN7~i|L8YK{14xVabCAeu9d&?8?ig}b42$WvCN0U{x{y=h_Sx$^3UxbyE62fu+!Bu +zb-UC1C-s-aKetIGdE-~8uQ$Aw0~2$pP;=s>^AEh +z{onmYjP&E?_iw(U?)QNKs_=WGza)OI<^{%2P^F5q6}}PUeb0E=zhKD|sA1Y(q_;oy +zm&E?~MvV8jP_eRq72k+0mqnOdC;I|n0zQYEb+h1`19c75HBi?;T?2Iu)HP7oKwSg-od)pSdz-W>W7ZRLPX~8h;bh&5f^t%B8i?(g +ztb0*#-I{&B&u2=6T#FM0EAIX9fgP7$Bk!{+9ToYkPWC>j5})4BCfh?o^ND}Iwda)Y +zMt;v)zMbjs_cKO+N$&UYyeDJyloX%(NQ%#PC&7P_$isEJz%TVDPu7J&Cpf4Zy77net0hm%FDeZ3Px_y1$$ALZ>gD&7>m6uh)??6U()R--+=zfABXmXB|Y&; +zPd$-uK>v$qdg7Cw@{w<_7lyOe0QKhtIb-zfu4N*hvEB=#cZ0SQA?v|&FdUSN<>lm> +zh`liAXOnF&4E85?uL-SHv2)29WwRHC>3^AHoV_qiKKZen{PMe#?_IG_h)7R<|~d22Ne7>|E7e7%pGMGBhtk4*iHwW5xdmUh&lahP3;8$@RT3;&oUrscT^W)Z~ +z-D{WLPci0K{=MX_pR2UT0&AWQuy~JY-)}~>e604uIQ)lu)HgDB>^$!y*U0lE9yi{o +zpGRhfcVCM9Ju52NY5&{{qwwO3LVB5WdtrQ8KTq=w%zPvI`C9$=lIhuXm{0@ty)Y6g +zDvTEXy<|QgFZUiTOkZ1S&n5bKe8xa>bN8Ge9_4cJi+d=LLv3*GYAx6Hi^J~=T)Bux +zxmds13>sxh7&S4BE|=i}o$racuU&*naX^YL7HR>Vfk@zCUKUE0>MG +zaX33RLXl}12)Uk^Der~M`ylSovHLSGRP)@;hn=nWep?at&-}6V-*M(|FBj*e^*uVu +zxLRZp_vk3R=|Sah?j9Zf>)suDPdV-P=rHfM{m1lgC=`{NtN)I(C?oanIGZ@SjFWEdvx%=XWZ<6)28~k95{Rx +z_BZ-VVt@5J&gT9$uz$6CbeQ$K!5$qZ9WBZ0$h|Jy^^TKvj}EgglXA1!Y|mufql4?|?E8H_Qz9(?9w_d~lGecX +zi?fNIb5`10BlEYz?zVqRhWd43MLr#AQ-4YB_wl@k +zdPeB;f0(i1bG?5 +zwBDm5e^{Sdvy(B9{FqOEEGNIh4tFiK=ErhE@*_R@v7Ghf?@7*2?a^V@f={(QI=0U_ +zTJ3Eyx5DqPG*Lk*A@q&0i}i5N4YxkpkN7MnKC2}k+GlBp=lxDPtH0(R_3r5(Bp{>j +z`oma(suk$MHoWH*x1ryVovi683=HVQ;(~Kwh(&DG3Ou- +z*$459W3FAQuMPjwf+?6Y=O_Ai-U#70z0wY**BC!=o7T~_ez3o9!#X!VY5D+#h;OZU +zG_~R?@I&Kw^h09NKba=9{P5)Y^G{)RYB)Bwt@~kG#cw}CuVp5rA2PkK{cxE?iaW$f +zeY1z#N2NjV4gW9U`I_6#Wo_+U>$5{$p88+CD~^pH7Nv_G#f#+=edYJ)affoC{eO`Y +z@ma@cYNWx#+_kh^GN-`t=aqM~#EXfz!PCZK9$?(zmbq!r*?IQ0TgEzEoKig99^h5R +z)m)?T8iZcX1!C7bP3;T76M0C>Fm$J!p9CJ#f_J){FO~Fm;Qi+$>^R+lYU~gHrB_e6wI$SH8f}mUAGUCVWS9IHipV@F#b$LizQgpOk`o2KKKY4@}p$IQ4DjALex?6~_fYaBbZ +zmgqO_#Hg8nzJRqsK`5Aw#3 +zV|rywxSW(z7ykFVA8FBc{8#<7_V#Z@wK&lUIT{&;{qNV8rwxVCmZyyyKdUY@z=g%Q!~%7eUkKNx39ZtaJ2L6YtKWy;X0G& +zm5)U(*KobM6nSy^N$Fj@eV?w!@$u1laScgw{)~4)95-=0h~s8mrtkcQ8f&oP_@sKS +z#CB26$p-!3zALo10ptzOx7h-`=daJlOYP^zK{pKwJI}uMyrgsQD7<PuVh|EV6wITtUT8zbiO +zjMHp5E{9__X>1((I{DnYR5tLAlPz3_mLe`ME}ya!CdDKEzJv8RK0dl0oB8s*>ECH(k4{6vxg1zI)ht +z_O*P^^YTaApZVazuaiQq7bA~pLda*Xt@eOdn4iW;la~gU(h%mFfB*5Vuas2IK208x +z0CU89@unxv{GUT!g-_dZd-raM(3MS=>^eyt$M=%5Ua9_kJef)r*31;RL}mQs_Zy6l +z&sF-D=i?`h-@2`0tj#r}eqV%QT!4I(4c90~`xq~f$MWErkQsA6YRb5;w{Pw#Kw}?f +z4660fejta~`LopTRqy_v$vpdLZuh|mS0-d+Nj6qw?*t7M#@g0LoHR;B1 +zHw_9q&%Tx~CW~WBz`8N)}^!a)ylK9D^7iCu$60TtEvb8?HG9 +zF<#i^!5C!rcicf^jab$XOVm9Rpt|?sWB+?Z2kRaDTdCe#*T5k +z#v|X)?H~6+TfhC3`fbF_{TjmGjL%syJ6eOh2P%#I7%zA#+T7ahcaMg-gvXTdctcDZ +z$G-NwrehW_zGd6zg8Lr1z8`s{B(!9++7ptEr~<=v=z_SsxO|J9x{Su-{S7MRxv%eo +z%$_i1*9q0{gOm|d{Tq|}AQK;hF{pR^*8LV^ZSg*caRCjF8iN=w?DCEa<^D*J^UEGl +z`-&YX*P!)R=rnMnj*byjA}W?A9mVqxOVaX!fqk +zoOP{w*5$ua!*V>`-?}P?%QB4TO_HD-vy8sxzQNrChZOo3JOVm{N4o8%9pp!AVAaz2kpZ8iBI~4UwK@$pL|JAJGk`3 +zCw=Dkx_of4R2_ZJ{-Q*4%f7*Vs7IJ7nf;(ZuuB +z34-tur5j*SpMRDC8v1k(a74s0qQr1_sU}~VcB7qWH~InXIoTwSvs*Gb53=^|Ohz%; +zuxK~hiFTu$w5Lkv(BE#nk7axJZfoDWSHH)4g*b4VapIqv$tcEP97ky2vA?n0WE0@M +zP|GzEdm6l1-jNb|4it`0&cI2OB8;;e`y1ld(-CwoH#c3ZVRB!=ZU`ETyN`&tM%`rv +zujam{EW>dxoGp7n%`R!%-u0fhEuwDd1><4fjDH*tIsfN4$#Ib5D(4mM_)dR%w#4qQ +z%GoGqTf@hdJW)QFKmQiBhJi5i96fINM@5Za5e;y%*gwgK{WFqZ?t1B;IL2T+^v)Ds +zG9CsH&p`BZkg*sKZxua4pYE~0jfb=o?Z)=fo;v*{(e>OQu6iEkF|+SS*{|h%Mox)` +z-iPJH!8m%5P6p|BnsgXwyWK3hhTS}w#~`j=r_L}YQc*sQe7hffSh%C>ge9sKUnL7oS=rof-BEEcLfuS(~QfE(=2EF +z=KT`ypBS%sKSO-Ly|Q;B#(l(<1{m$YkEw4aqkP&Q(R&XP7Ut;qTsW?_I88q6@A>CP +z@Eg5;G2|`A=}{-GOXL2dojBBe%VqBsT8Yzyk@qd$fpV9Dv*d`<4Ute!T%6Y2iuWz# +zo}{mk|73t1Uuh@WEpv?V2jdr7*4MRpqb*;j+)d!pu8wHEGU& +z&ot?Lbg*#ezw#~2Lhqf8I1Ql%%GnL|pdUoVY0d3`;J$_2)7mY6#DVKYTIK``@jBm54JtkPt>zDg_ijdi +zyF*&S{O?Jl(28Te^#%BU=-7Mvku9MNN&M4+xm|L9DW^UT{{GUPxLW+%?=4#Jh41X# +zaqC5j&pB82HQ#XlIg3ts`PWqWZ7VOm=l0{X%`ZFq$wh`#fvcaq;a=RYo+I=bq4}cV +zNkQ&(;dP_XZx^cA~?K6TM9 +zkzv=N$KTexYu-;6efadRL54;D^s5iv^QpGRmfe{rcZv*3CJ1oaitAfNhSrXkd}z^E +z=FDwA_3C5p+5N0<-|@=)f}J-U`Ps7@{_k5#-ly8%ci(f5n$dRs>Zbe7`rAiF+qS=_ +zZS7~g`!ZXPZM$OTwid{sPjIbWAGNkeOELZaU;CBMDgU!uo;1(4pG}|qI@kQVMQ1iI +zyz7abzyA04?`-_lFLuJWNPpvf8(+z5LUsScgurs~$wE`_ZJ$OzHupzAkV5q1N=Fd~ +z{%Rjht=JpcOo>Ch@SHb#FJkf_wE0zc4f(W;`0vj-T(QZt!8ZE0r`{;{QE^9{9EZ!3 +zNtuvUamRsXq1_G(RT7ad`wnVR3YFbA(`LP)jfaB{L{O#r=8X_ +zzh~hYXDsNRf7&a$dwR03n7`)K?rhJQ*|n#i{)*01I!~WJf3ut?Up}~Qk_bOGVu*h( +z4bB*r=yPVADD~CLn&H7`XK)%y*|eO!n;*@{?zj8flzNv>w%0MT!+$Y>MxZ#ysn3M +zq$|8$uOni+Nbjx(A|C1Hm~|WEM>@~jtwIgvYfX|#JksrMG{5O*>Lp#n|h0MVfzt}bot-w^-knRI{8(_u$%^ubaVD-I`Si3(~K}3@kq!1$$Cl0 +zrzF%1@kmEJ@?*MbhJLyNI;_VE`n_~y^yNKY)$5^%&wk^gH$+ +z@+Cd-NxzxviHsbir(e7D#3%jJ|7ZNq$iaGDe`Ni{Cw<{DO;5h8H;$h8q~HB5tv~Xm +z-q;RTe&Pr8U)J>GOM16oQ2yNppY%Jf(CZD!m-5Ha6QA^%|J8mGcE_@v+b16@D)ay($%aO)>N>383)^-sRke;hsWNuM!s +zoqRdoxbcGaBR=W(eC&N{4=D1b-^9@qpY)q=+@hX0lP~Gw>zZ(asf8q!A|NG5K|K!X1 +zJ6_XPfnBi;kDk}?qb +z*d~>c51)r-PKe?+b=E_kBD#b=-D7`S|3N#^ZuA4%({2Amr;|P>ik5T#Sr17&(Qa%n +z?WxnUPA4}Iybspvc4n!xy&m#tItWs$`B*(vCJT%`!ah&9Qn)9-_ +z`wRNh(Q>!^u$)*?*4FT^>K-e~2mPgbJtSe_MDyN!Zq)b{G$;0g<01L5f99k3O`-LW +zJB>cwhVO6VA?-xFvAwjXPDibWJmG$nrCASo8<~e7o{#35-SvSQo +zKloR%oqM?4+_Z~7S<~omSP#kmTVD@ZtEI}Xhb)-5%s8ESN`J@2`0d{J@jl4C4~CS- +z$#{?ZmOJH~C9kQPW_%mf&v5n5RfNoc)4*X!0j`HpL3#`D!#$~UgR0~7j$E^)etUVnrCdSpfo +zQ}N*VN;}bRYzytF(xbDqopK*E_VNupuKg&{Rg{uaR{?JJ;QT(M(GAP)F&43LZ9xj-^~|| +zooF|A6Kn1-_MMGS7sKI87|H8;){q3bB_ +zx|Ngpe=uJ(cB0+r2ejv8YePA^!FK2eQTO%QVl%NyZ?ZKhl{~Z??L@ngNvPkcz9A(o +zS1+Eu@xR(X{o=1K9{j+r)|KrWO}`^mG-Q9pj~hSL +zh||W@*X8WS_!VV0mz$d|t!Z-Rz;0W`KN)xTh?q${k#n7>Rvltx@;<=Is$bSMP*DTR +zV=&;a>V3SKmvElK^_QH#a6JOoV{pFWt}j3}cy7=qC*~Ky`tr*xI(>pp=dQp1W0Jx9^|jZqyL%$@FA_adv}zv>V19_uv@Be4U>Bz0Kbo^Bt$jFZUhih4(eKu)Tz1 +z_8sTw!Dn3YjowT~L`sjb$aC9r4;o-Z-t#@~XzT;f}f(Jt1akfA9 +z%VvJZ`O`UVXB_pLH;yil?>I$<*1wbQI8T=EIKO_?G55^)Zs#d?e*fH^C*C%C_EB3O +zSKo2I>cj84@2>TKY<+A)+kJoh>qkak*l=Cj)(`xD_g;KQOWTXa@H@`qzdvv<+jHi+ +z{!n|q@U!rDsfEv!ewTXOXZl-(hv;N_9!bC1jKb5;f@{%R`R_P0Z#?N$fBsQ>^V`06 +z&(06e`{6Fsg!!#~l#5R`9_BmhJ5Dq2{ecuZtZek)x`>14-u5v$zvH}7i8%Sct}m(nKKw$_CG_bYarfaa-egbHZnP8aM!9KEmFD^qZ-cR)v0Lte(E5_C +z#X*Z~6oh}`h%VQC3@G;clA9WuX519PFUqGCbNR=9a6zQq!rY>{lhfpdup7RsT=*UR +z9TC=HMyM&s+irdjjV%H_o-Nz?q(|9iNiatICWbe85n@kF9Dk=l$$!d9xMKfn3+7dLzkYk;^HfXm7L=KoZ;Fh!bvk(4CAZBV_7 +zo@2g^-EF@8FP!=f_03!6F|&5*jrXc_Ili@g^G`YWt#aWZ{mo`+eREV6{Ju%9h)22| +z-_?DL{1meM8#pvfM?BI!ZNAwjKhk;LYvj$o{_U|Qfy5)7Z+@$R{D6yN;LtD~@krO( +z{ZXY)^3znFcl5z?Bn}k6i67x(M1$sd&rJwQ}$L%>SC-G^2 +zS5K%H^u#B9-h5k5zVw4Qdg7CQtNG0j@})nx`eyya59t3%%TKe)6GSSwHbf-+Q8t7vxL1UHg-s_@pm=6 +z`d;&mG5L}{PJZH(e(TG%{NzjjqaV5T6QA_{O#MwP`O^O6af^JZfA$ZT +zp7^9^ye41L#o0f=mjS~bGsu^6laF1$TH|WQ1>Ot!r-b)}VZGEp?cv(lbAwVHQOi)*_V@(mx(sS9mU{Ejno>8D$@KAy8! +zL#C;vXxL%qxW}S6(Ql@#oN=6JHp;wO_9%U! +zH_(W)ly5n^oh^L<@2lStL8rOl8)2Db%5jYMM8qAFDhmB8Tx@=0$iPtH1SC}ahuw@k +z`ki29L6)yrwtUHomFF$#=v=D(a_pZbe_jV`e63^G;MIeZ|*t6x| +z)c8T@mXCFseowjR_nFmN&ba#8E?&8E*@epKy9YLmWH*n*VMgcIO5a{hrH&{M$==T^ +z#g|?t`Ghu#xIo2&`lG(6zx<_If7GkXXvLBX7cW_Xm{FDbyjtm9d8$c6f9R{wAEC|1 +zUV~`o+t<_|^+o;puQUB5#t)0_@9A5g-7qX6ci84z>AF_>#Z}cBmTFMqF7$T3#5cf` +zO`Ic^-u0U)4GXW)dLg9#n5O>1RHdn6`_~S2tvfMFL3u(ch@Q%6b36V*3XNhDSOFhX%T{!^73+uR8kWQft%l +zw6%s?vC{Y-a-;MY_YBtNLj6%+)L;G$CjOazY}4SnsK0@YBZC`LjvlqsFRQB7a4X*a +zf4cvEQL>}-XMYtQrYxqYKkAG6D|DLpXZ)~8p|6Vi8y@LeKj;=$OxH?(L3X68r)#9E +zVnt;Tj;Y{(`i`Ou11X~Zs4wcz?=t<@_@T?iZhv+tJ22cmFnE=VR3=?3eaA>OwK@Vt +z=nqem8UHw6cBn#0>W})O{xWN{{;1awktB-k&t^Aevz@(NeTnXO$fs8NOv?ILuMM9x +z{TF#r{a5apD<0Gz^+o;VyG{Hve&{lC+dnLwxIg*uQKJ8}^c^YdbLB_+a-+XD$aR$d +zo)typE{s_33X;=Sg>CZ`7Uz9ApMt^cMtn>$HAJ4WE +zG1t@|^+o;pYfbz!e&~|B?H}&#>KV8)`4qZV`i_+Kx$+}@*WdK``(C+@@;`jCZFuH7!k6pDRDo^DD%^=SC4Z +zdDI{EMg8S_P5d){=#Z84-{FmGhBpqa?dr~U4tIBr$mm#Jhpzt8(su;)$xkCDsLz!j +z>1Rji&mMn|iXw9Is6Xn9`YZIA_-FjkAuH8i_fR&wp>uc;8XU^5?H6AxcTZfRzm)VH +z3cslX^~rr)#rja(mBxG +z-M+SOlL`o*ZPX<%*BImzlPl|c4?uAskTqKKS4>W})O{(MirU!YzcvJ(BR=^q$K +zGl6#XmzKUQWqq#vNcUIJ-wUFMoIL7}`l9|a4O)NHt3zh#Z>7xFs +zqd%vrTEikOub@A*9w1ColA`{oFY2$*Xx2j*KXeI~wVl7DeWmsOqjO-*llm9Oj-XBG+k8t@@f7BQCmpM@Dk9u|KitQg6>e?{8c3>z?@AbS|=~q@&Yq%A6 +z%JVC{cl(iK1Kt}h_L`hDlKuh4uMDLAm{0vhkcP5~?eEF00R*S5<3Rpw0^VJ0Xl7nWFxvFX}IIu<5_X4_#ub +z{e8oO{atC^eSlZ3^q2HyuN)j08fjWwRrRVl?G^O*BDc{IY3h&qqWYynHSJ2;y0cQLK^+$bCfBs=6{uw`XIjmf^yscHO +zAL^0^eVekKBLf5dE>f9vt@N#`)~1!|Y7GliY5h>S{msaU`lG(6zs%t#{uw_cKH;im +zD_-5PytRD^Zb8;}^;LS_M>@iq=?8|cP!DU#unKsWS$_pmK0n1Z=YO-2sBln!)ED)a +zKf=U6FjIj +zkNTqi3P+mwXZ+Bn!F8zp`W3p;V&`Dj@Nj}?R4e`RWYxH0hte&^|Ki^N`XTJ-1ocOK +zQGfokP5d){=u$6Pa>iH1$V)QGfa8 +zn)qk@&?PPPAM^UsMT|+;O5dShmd0>Tmc2vfFYvpY1f9^Pv>qwg*`aIdkNTqi3P+jv +zXZ$ckB#F}Y>o-U)UR=6Xdj0+=j(f8FTa5mI9X0+&d~Q&}nEIo>s6YRCCjJ>ebO}q_ +zKQLJKg|EY)R{CYBYI7<#$?fL-`EE%=e}MMEd5oRsUQ>V67xkAh-&attE}b2}5d3g2 +z>f)43*GfMY_rLFsSbqSSsW()_`iNkm +zPTzdz8c8IX^uf6D$(rx#bBnxI`Dlc&&1T`Wk2TIR95c|rpnSRhPO-RW +zuza6;Y{N(+&SH(cDrYy;^DQ}F8DTfg4SNRb7gq^;5 +zA9d$>NI!f((ze|`YwT0R(^s@xOnIc;KG$$;!{;LSRk9n_Xniw+PIJQ-+xqye*BgOl +z3MVn3-DoG;Epvgk8||r@(6mHi8;-#?`S%JhoK_{}{#|4~ID8e54hOIPwg5)P$rXp3 +z<>4$n;_QY#k2twkdQnt=)7)kTbAaWuPc3CW1#)ON+KG0f=(MLww=^#HT5c)EN!V>v +zr!!)c6>{QPziyju-j%4iu1E4!@uj(pTvG9)gG9e;($EQmIwLd_hTc^ +zdF$2Nzm7}J^)~cmhh!OD$^}#v1e@18us%EQ^1k)!ySnFf_h!4VknarVt=oXyuAVEq +z`bN4=>XT2ePa5gXN>;1RnkQ?|`@7ckXHVKVc+$wgNefP$C!g1iY#g3fp}Kl;T?2Iu +z>}MJ&QW^;anDokUB|un;`TJ;o@@AxK0MQD +z6u5H67uC-X6eTLkkY8?or`bS%nYl+>u3-@~*%j|0$cOh3g(!Zx+vOe|2cMDEu!o&@ +zrtm7XdI2o%y{_*e4w2s@tbPx>xMyVh-5z$vPPCi0kNBtY3!Q#kbp3woS&P^$_wD;p +z_G>wxk@HA7KP)E>?ls7JKc?Sn-=t_%`LFGEvpgd!{!a7C8SiVr86X80Q9g}AyB|c| +zv%B1W-*8a`_n?|ddx8G8TqI{d{-H>kq#=!ywnfPV^EdzFjo08_bvP>@^KR@PO!X$O +zTpfp5`V0R~GxjE7y{Czip=W%rkMnRN5A4w*1xzoHYn0EG6BPc9`gfYJP7vcke)m^z +z=RG(0*+=bZsqYV~-=y>;j8UK86RzKX)UIF3AN<>@5dPbWdtWR1+kbXtFxve5sycnc)d(k-zTQfQwe&5M*F@9YZA+)wz>F-ZQ +zpib&6+KqOi-6%Bsos78mdfqkCzrL^f*YUXn?ms>^E9h@Wh`x@N6Z6t@4Kd>)@^CQC +za^yX+cguNu_iovuf8RXQc0MwtvmGw|ZKiN^Zs&BV{ExF65X#xj<+${qs5ezXHIw!N +zc3UmMp5x{cxn}GyC$tR1Q}W=vZoGt#-q-EG#u;X?<@|{AAEGVwd0)AoZqVSpy{)0; +zLtjT4FW(lLf>)csajQwQF9@+ZzNWm=B#NL}E?cgdg}5^dabM;~?cQB8aTbwy73I?` +zLp|sRQO^-Hx8hoxh29?%7zu(O-jh$$>ycxG> +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 +zYbd*+yFy2agM;_E4`z!TVxJ3IW`*r@F +z3jJ4p5(Yo0*R`QL8(EQ)S)#v`^vly#=hUu~mq)}ulu&<3)&o#~)ED*VuQu_|#6f@g +zugZ@fYr3vTq&U-(68)v5Z%bF5sWl8Ptf0Ts!|0JI>W})O{_>s1|BN5zXFVFyU-8DR +zr%#?5;Mb>9O=fGQUtCqKVHMnL^mo2=RE!@d2OU(>=GHD|)BDQGbQY +zw4Ujg{$X+YlRXj#Hzs^)Rct^}f7Q`1tE$#w{kVEdZ2#5%7xSG(hzb3V`l9~)H75R< +zew=TL)1Pb>xqdLjGfASTzv}2O$c}XNbd7W+sVfd=O$Gf$eRtyWqW-8a>M!48;vfBR +zZoK}oL)n4h?t#GyQ@&8uw*IQ2?~r**`dULGc;`guPv8G)|9e3gJu*f8QD4+wrrY#i +z&l+*`nr9U@ab*}g-y~*6aArT%wGin-(`myl8<6`|!w=&5NHPj#VMg3)ZP5d){NWBpj+pm8J +zF6HAp>$m8uqaTasf1j`5e`-An8yo|vKkAG6%lDc1XZ+A5clDR@^+$>R($bH``;Yfk +z(BE-xqa)JPAN5836)rdZ*Z84J>gq4$fri~95X +zwf?AAmzAr(;oh#Efh&{W!qrOOk+MElexzSpL4U_b5jlC(AN583W!9VcXZ+A1EAgMc +z4LyBB+3t}}^&YMAJjT^uTKe-$eNE~`T;=*)`H^m}pg*j|sdP|()ED)a-(cdO@k5u7 +z+y3E=Ys`-kcFKPCBltPY4dp)1sg=GXs86c(?~iuJkjBR#8v +z{$3PCGk{b +zW})O{`^fQ{uw`X`MB+0(?2kfW^((jw^R1Kt9Vd<)ED*V +zUv1)_@k5tUss8i~#KntC*GjMFFLB(H?i12*)>gYVCu#f&nL`lG(6zs#FV{4;*& +zvM6o;)cY;(cgg(+^tM|XM`*Y6*>)o4n);)@sK5N1P5d){=#tyaZ;-}8 +ze}MM!96J$nP5n_{)L-E(CjJ>ebjfY~P1WD>{-(@dpf{{D1?0j0`&?#}fz%)MMg942 +zH2ZGQ4;z0RTEDS!+48nlwTqnI@ltJnS*9Mhs8;$`c|5Tx+l1{eUDk=yx0v?(jAN583<=?9HN4@4h5dQvS)v^_@?pWU1z64u`uJ4lV@X{SM)64I>sfRu3 +zstsYk%e+7OqvS$=?)M&tg|KzP-(tQq&S@Cv&*W2o8B+0!AxqQeA>8}cU +zz4EWAwWsH#v{kc7-a|%zw*TSzOPYiFqrRv=@}R!+Hstj8O4 +zSvWY-mrefWfGzVp`XAyS{Lfu)FIg22>W}@E`YT+c{geILWz^BWI(k%Ql +zjB2K@uG&yDauwnq$B__`lc4^nFY3>~R_l*?b;!J+{Tny*rCxj`%xa~-SgNhY=j?X$ +zRQUer02?{xn);)@sK3nHwEn19mpo|y71^ugO-JW&HeGXSrGK@mwy7g!wV`HYD(FwI +zA_|d|B&a{?i~1|P!}MR{hc02z{%(9on)>tAqW@J%KNjDwt}x>Ve)A0RZ>Q5py^1KD +znSZWliz +zTxa5+>Blakp#6irR}J@drw-+{(w{rjwW)6;>1sJwdYyiLg#K**R=it4D?sU+!?Zr#r*ldD(ElCZxK;{ +z)ED*VU$6B?y}J4{>qi4Mr2PEUtCfB%zF+-jg#PUQtAAm@ZFx9N{ZU`kU*-lA|BN4o +zsjT^LTE!VgRV$wKWAObi{EyGA2yOkzPjFN`s6Xn9`pe&F;-B$Dml1wTPCMu>9i&w38hjHA&C8l +zs5e48{xycMqZ80yL5jHF)*<4w<@`2y?{V=`tTY(z9~c?#jAmUiSH$02uC9s<5+I;` +zXb|_Md_-uH)JY#qP{kxcIb8O0J3MHc|Jc2kW538P>l@@Zii*eTFX;WypqCwz&HX{S +zUufpP^?sq;N0j@7a^KUq{eQW?<-0_2Tjar2qd4E)4S!VfsQp4O3-1@|zd`>VG+}<7 +z`JJ!6sQo>~es8-~{qFUg*OcEclzh1VUM7lP?lbLLBV({%sCTCDDzth5%r$%FcOm3g +ze;a3d_`SpG_Y3V3T|%GkQE9(W|6;TM-Z%8Vd%l4#pS0=x!Fu1l{4c}%%Es~8WBe_y +z9DcYB{nOZqb|XIRsnd^(uHSzj%RIHu>m~Oi{cAa&krQh+J}f5=?(53?IHvJiA*F}5 +z+s%#g7;d;T#A@zJW4Hepy#f8#H!y@$ +zMWXP;JiX7Wft6Tn-cfnq#N}c)_Fp_hlw`$2)H|h)t-sX!WfEpK|D%47Ezb`-x;OR@ +zR`c>9QUmte&U05RJW>g`D506+gPtAqW7Rl2A6yICsz&1+Ts4e+nKPNl&Q<(bDEeh>Xkm7`UP +z-lPNildcZ-?^NY)8wsax|C#z7i$MMxwLGjZzuT$r503m#{x~e}FLavp{-X~4gO0o= +zt?O^_{5#q|NBv=!=E9C6EP16o|J3#9ueyDbzWp8H@&|4Cr2Mzy@hc7Ia|NLzeUN*c>u@#U>hYxT-x^k;-=1JR*(OG$odUbvtAEdi_SE%kZkNb*f3eQ1+P#)TzmD{8<@~cLI4we7 +zD0;eVxt<4L|71N6!0#Ua**kp(PD5yey>=peje5`zE{LE5w+7T;NFMYap$n@V|8>T0 +zhg`1usc)b`uNwIOqwSUdbuzp4-cxxVpzLPsM7y#7(wbHqpvx?SN$8&GEPMn`WM&V{vx=HUr}}gw+4AaA^lk$-*W7>hj!c9qwV%f +z9oGuq((&8>xrTc_@go(V2}8m~B=Z09l6x@zWX?KB&kG;_nVN^p`H7yNxFr7k;&@?~ +zJ#Fg!|JnN%z$%KX|INd&;tRpn_#{?q(Sjn1L?gM$P0)))ak*d!5`_a4um$hf<2VZgE-Znc2`9WTgAJC9%Vt#=9$nK&mGEB*@i+GVAnO`{j +zHX*s4@;B0VN0uAU8^c!&l*NFrAq(Kl@*7RhQ2uuzkO`NQqKQAo189%XJ|S62X}4%M +z!qt{FDq3K@@3c?9eR#s^J^GD~j$Qr4y0U|=i84LETk!?jn|aMc)SM9pPgHAP-IzS~j(w}#+j7PB +zmb@QHOx7J^9de>jtwYB8WUM#F`s3uoY8^>z;%mNj6n`aK*c#hihunu2(Vta3-dRz> +zwyk!(e;sn{4`Tlgf4vGPUQ)iE;BB%Fc|g&@zIc&K*!{+Y5A1&J7Y+QX&Z<@XWj(~i +zpZddkyYiq +zvYz#AS?4XjAqkzjl{izaH%czMz^8{GCM&a8ceI?82t7e>$=^%)5Pd5Ccaxp=-D};r +zj-l{Jp0NAGbcLNi{)$55Ct{oLs)a>tcihWacUEFOV!czqKR=-pqB3oATnA7OOzT;-EK=*y!DrRe9k0(^L>WQ9`7Qyy`2ru^ +zr*61gIqZ{y{Z)8R+xfG8#BH<3#UnEwK4RU{ML(-aY*Fj+;oB?KJ}~h4-0Au`r#4Kf +zA5RD7dRTl;mt4Q55pSgDZ**zp)jJX{Y<`^+&n@BT8+SWQ0e17?ffwus)uPs>~J#sO!4CUwAdKhy4Et{M-gNK@G)jq{%r~jB +z^`ZJ!OdL&h&7laWaDS(V=yy!@jX8St^ut1beVaDx^U+)KH%B}B03{w*zLSRxe^zEu +z-|8qM=r>2uHRsEg{xgU*kBhpa!@ho>SK7_v-J+tx1u90o|JbjqehBp>`6t78!Wu(k +z0Cw0ngWrd|VHFDcyNlEtHBYpauslyBzHvOUYhizjf9Wo$ePc?FCulsOxT#i-X&)=_ +z?^nn7x`Tt>peN`p@xL;j5Phn=%&wu+5U2ZFE)=S3M_63-2E8dxBkwGON6$48ug%B#0?xq&n|=q=#6(i=(9tG8(d?_1Lh{5sMbk05VnL7yt+XcuQk&Ed@XLpxc)WX}863>uH{dl&fu?c@p6 +zPSQXl&1KRX$Mbcnx2Exg;^yvJ^H{->`lZ68$JRkk +zJIVXV?n*y)kBYxo1udL&1-;?9JQh#AcQKUTyU3^au3ZZsE99S_l0zNojqBSXq&wZ| +z+#V}9(ZF3t4|mesz)9ZFk?v`&M?<@fi_Cqzz8bUZiO7 +z`(H`VxJh)1bM@S^=#2VVG_h7j=epE)H7*nG$Y~8T>yNbPw2qnQPHj5Un%ppJ>hyDu +zv{ZCQT1S)*KGKqVbB{D}2=9dw2qmy1OMuQrRA;5nJ>nd0H+E!Mgn17o5K5qP5}+Ya +z3y*`ms45EBmQA)AMOGjFnBZ|dR&u_%$u~B9a{~!%s_<XP@K$=4Ss)oz($9`IgLyyrX>Zg&!+X-`ZB~to*ub207mVG2X;G +z1o+?`BJqC)eyvy2dm6j#U`sXeI^sohWbo78{rGIBuG>-t&5?CvOO>dTZ#RAAYyk09 +zzPtW6wpPs{Ctt{JF1aa-x#Z=fMCb{6i)~SQgFaP?Cq}LKPg3uG1r~=tbi!8eTZ9$=tuy|^&g|;Vm=UU3GzZUS%Pw0evHO+m_^?-j|4@~duYF5*o +zBV+Df_AAf$e7*s=Dcn9+sBh2{^kz%_g+5hmWb-z0sq>Dm!UwBx{OYy0(~U~2$@1-&7R=kgeyqqp89L|1Q*Sg#b_PCt-z?862wv)=rB1bg+CJiUAA4SIs!AR*`z +z;e7G^J)4^(n>5ca*PlP2T6XrLtf2 +zf8(|j?%7(5<@)vjm1o?4iSBVOl5g(L<=^L?-)UUx-YIYV=jn@oUQ~Hgb-abK3)6n@gwg&x~B65#y`-i=p0(U#V+pr4aTQv2w%nc&Za;9!$FaQ +zqeELxJ?ZW$=Fv9xZEyM={)1w_?(8&-3E9({Jt$gp!~w9L6{ObhX7+3ld)A`ia(X5}qIA7>tw +zSG{|~Q^|XZs@h_2H4_iffo1i-XGS&gsP^*Qk*+U$^w(aUIa$y4o+^jANK4K8dO6(o +zhb7flJg|TB9S^UdQdzZXc9KiZ1-9`S9LX +zHShG3|7mtx8JCjl@iwlh>q?R(hNR3lFjg&mh4lB +zp+FJ6jkp7@0&DuLxsB5s=aK#5d9%;$h-nXeK6uKc$%D@sJakh1F~>|9Jf-~DV~?IZ +z_?Y7+PnlAG+~9MDOs=0YtbXdyp~p=)YQoULgPZ8r;{-+Jb5!c5RGd~Gxox5!-}gU@ +z71KCBGMLI4mvN?XT{>Uqx$sig<4(1#QmQh^8`K$xC3MX-DAugbp0sNVoHHd|uIg&s +z*xLH3ljhB6B)i*V^oN}Yb6lNq$*0bC-n;D=l|SJ3%3t}YI*T;9UfJd*-%x%g-a-4| +zXTos%Sw;j%M=z0A-P0-^>DW?7p1^?)xK)A!Kj0g7^W#7VT&!8e2Y$d=)|t-dEyM>p +z;HIrnIPe3mVK+Yxbil1zt8m~4+79dPBpRXFf-aU7qE108T%ekbXa +zcwO8KD)BB3bil=)Q8@4eu3`Je;NPAVMuF|BepJ4F=o1RZeYf&)LG_S=PV +zZaP5+++x9jA8=%6=v*Q`&;gee9QXmZ-!6=E;{zRV+n!hX13%!N->J;GM0}tFZq<5) +z13wox#_8aI108UvpWp}F)*?-wQjdWH9rz)1L!8|y)E^x{3Vr6(4$`H<&M+K +zc+dl1_p-u+FUmQ}Gx!1zdf-#EZVW!1s*J +z*>CPk@rh+_AAvv-KOtn%YqYoZ_}K +zz5T11iT$n1F(r^5iRX^JSk9go-}C58xpdlJs&7b_`tH$jQbvzGZS;t-<42Ad#|Jad +znsom3b0;-UZss_<($J(?gvm?G=zTaP_B6l%?{tKj?$j1r>VbAx%b%QQ@I~fcuX<> +zQZ%WHpmJa7Y5z^-Ug!2oL3ZUnwnUZt*yF0dNF_urR?hjIbH+G){rUC|que81DEEn* +zR62v=J1u(hh??R?a)r_Y@|W6}jW +zK?mVn@uyF(pFg`{PGebZm!fx4H?srz9o#`4_%Y-Mc|m@OUrGIya;UR%^FOn}8L!Wt +z)HtmZ6*yP?DNd|qqdOO?KNn*O0P_pU~LQFheKG5Y81}?ZjF(zH_mrCkXv6d@sfR-ax=LS>c;$!j-vODx@(l8Wydb~C +zUDEzZIn-H=9dT;y2&eqX`d!@mw0{d|euc~5WSM6H74}p@nEmA4QZL1a{BR%g^I}Zb +zZvLmvnKZM0!kqeH~+I6<~DNgJGp-D+^)#4YxvO=EBC&gi`Act{vGtcGzHh8gZv;b$S?70 +zY5$}i>x^9aHOyyJAO=ZZh2zH!o&NsW^_j3@)adH+@Q_d%jD)nEGjm*$f9OZz82 +z +z`Juc)ezAw7{gZmE^YZ4ueolSE+{q2IJM#{lD}G#KS7P<&qFu@#-!;i^cR#r?1o=T; +zkYD0qY5$}i>tHwk_4Vi1*H4%>X?j-QtH38$e5{l4AzrWlra^xE9OZ8hFLA&%wm$DTf*?U4D~kOY&J0=FVmb&Z(c;(I=%e`E?RM&Y>?G +z$MMm7aEI~f>F01o2lA8c%uUeLJ;)F8g8X7nN&6?|Fa?kcJ^zzto-@6E7Fi)oo;+h7 +z&&KEgEu1U9TE$m(T9)x?(L2HZ9mwyiCXjXy@`Jn}zr@qh{z*C1U}@#={Dv9xX4W^( +znLb&kG>3KhbryemC*w1vqNoG;?QH^S_aHyW3-U`gOZz9~P=lq(Prf3ZGh<$M!)RT8 +zoyE)dqiDAA>FMY2U(kQhHTqv~`^VQEImi$4g8X7PDElVJRp+DUe@gxA#%U88rcRhT +zy?(|NojN_7E54TFD{Giao7QC&UwR5G>-i4k$2OB4Imi$4g8ULUiaoKEL!FPF|8r(E +zG<0S_n=3xr$@uj2bNK!a841^Fd!Q}Tmc_4wWVPo<7`ZsP@=+`2GV{E1zP +z)t`%>cObw0{N%BlQW*|56VV$ +zKHgLU=;DbE?ElDgx1?x#CA>7mc25 +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 +ze*U>J;wqEgs)#L;!i9c +z6FFqyZ!kk!K#h +zqVkrZk5?W%@bSuim$W=};epE{ZLznS411SNcS{WI>ZUPG;Uc{gdOZt`eEJ0yx!UGzyrSjX;(s=K9xrPYnO)m +zly*gmUpywAzGu!4J3vz5F=P0T&Y-_yIS+q_L1^ +zIS?P{fNK&Q_yM<|mmdc@;8qF_{D5mL^ve@;z_keu{9K%0o}dHHMm-TcaF+FRXSM?Q +z108VXf&)L`8Vmh6&;f_~34Xv?)@tVx@qrFF(19PqjfF0b_iaVJ$G(-@B%PoymvX9? +zJC2v}pa*`yfBfyqV!`X>4|vc6Unh9*1x_!Az=Iz6gy6v!@$2Ogc+dmCO7P%|c!Thu +z2Y!p-!54BvJ|I`b4|?EB|EuH&zQC7ie^fsf6)z!@)q +zFXGkPFO(n91K)Ou!h_->SZ$G`6|%73ZoKPEovHR5Zc +zLEr+}cX%%KguL&tT`+b+d@vts +z4>s|;yGC)^P_6vSv~X}d{Dk{hc545w%L&`jzQZ={In2Lw7c}1hd7eqKWO?dNadW>L +znYrtz{0l>G&=d5AasYkiTgrpE0%JO`i1X(2-h0w0l|3ASKD{kE*MeBKj!LpL3%@dBfqqLhjZu;v)XsK>-}L7$&%%%yPnn`LQl{e@(X>cu)gmw>+L9~oi*({jCOQq +zVTSMnVD9tzn?gL|-*?z9c#ul*gFZSHFqLV3;;jdTM!osDnYkMx%(Giu-$qkIiu(I1 +zr7xRym70Z~;lAK~htV#hosMl)?KIwB^!Glz|KNSfD|8-TbHCq8zh3kX(^z6EA#}tA*Il#6Lw_G +zSDQ7x4XpV-$*Pfl?Cw!s+F$6+{9Luu%%Xrs8RR>9yVohjX{_jM&h&e@&H{M^jk4H4$qEsPgYk9WB7 +z;&#^uT4-jReoh72Wwg_YyHz`laU;fs_+Ekcd(3|$xm+&Kr@3w(FYpEWW4yp+}dgIL4CI`G4P9TqWaEG+UY9&+zRzH=x>2^c51x%Vyzl4 +zif?SE3yb$9X>?}12zds**DG!qEwZdl+=FtEKld?Sgr1jt^1i)s%%>3?eu`Nw0auyenIKd5h} +z^F?}ZI`{<3y3pZA<9y~sy&=d5Ql==&ODw*W}I!PVy6&!egPx!_4Y+l=Y_bTKU{`OwSdC^o~o?$v8s2Ob(e^1>H+-Kf=A^Yb;geYG%Z)s?Ne??200TkgCz +z`oZ1SnkR2OF#4yWTP-FS#iH(zmUEPuzO+ssNpv)*{2diILAgSCCt=C#|(QYMYxXh +z%U#Eb_i(&-<2@Y34e#f$tH=8|-oIgI0($m&JhX=V>&Wlhm*2x*atgX>43+r4*a5=- +ziF)sfU14}{_C^wLjrX~P@WJ@f%x`RsVzZ%I`8m9Y!>$B=+Ix6z_9YjPELonq3wjUN +z>GC}cy+KdV8`2GZI^mRk$wbkg=q>)5&%Wf*faaCUCp+_V^<9@qy!IuJ6*Lw;X5eQk +z(++d`gL=?p)SI81nL9Y;ug`jGBDtU*|DBR*5K~$Ps9A8_?rBfVH!3SD%gj%9jJvZh +zXq?tCD>$zMY0i^><4(1#Qc?ic;bUEX^0#XJ5!UPLoV@GuvEP_ZlTA1q-Fx{YW~udO +z_TtNBwwb&Outb8w4zoyUB*%dwykjrlwg^>=n0pUDsxkjan +zE;YB8^Bg$P0av<6;lK}IUYE~&fdd_IF~NZ!aF(^+89D+7I^b3c4*Y;y(94el9dK=e +z13%z+UA{M+paagnR^<=;T%12X&;ge?eotqeB>1_wLwxxI9dO%5C>;0!x1g6F2Rh)U +zeOKYY4>-&EzN2Bt6Li2W7998iH^0P>108Uy9q2dQ$;Dgc+ +zdf;OpDm?h2K9x$lqsI?=;F|;wzNlA_qmBnX@QXiE@q;ho2Ok{|df-cc^>e5H0bkTl +zyLForQ +z@Qa^Q{Wtic{zDFW{GbOuDR}S&J}Cd72fprk6+if*T?#6Hpa(uC;}7r!KB)YG9(asj +zz!&KUA3gt|2OiJC7v;{RKgTXx#z}a8Pu}kzF9C=8i~6j$2e3zFJEw!GXIAUl_bB4d +z!St?^Sf|F7@a><p(p4qA>{!2)bsyk +zhfQTV`!w~Ob?wj-^adF~pDN7j9(p_W4yka}a3_2!H4tYwBS_jwOv*Wr0om=TywpAt +z9~$OEh(x!4C@vve`j2Q``$q=)Aia6pFW!q>cRDvctkdUfn8zLbqK0<2=dNpKn}=fO +zoz$y~4%f9y|A+oC@qp?NF`s~b5dAsE)#w)y7s}JusVqHDKebNjPA5I4GHB0~bxPvL +z7O8&AzRuKtA(mjD^}L+)3_hrzMt7tv`gGpf}_f`c&cO8k*->gJ)`; +z(r#-x+?jRlKXVy)uGD#8s_>on(75E?1F6}bf>DYs+oyPkM-WT!ShW97DPkGDHQ8Z4NLAv91n(ZTo6i%c&1;+Ol +z`w_AK6+iiNX{VRu)=q;D>U-iB27awWYgM{8R6BlrSAW=>DZ@4Alby3p33k8m)4n^h +z{qGQ3)6Tzi7gXPwlH&<#rxiEX{ukUy?A^+te}$f)x7dwJZ_ua8l*#^A?ela65nLxZ +zA0a|mDq)O&VgI|uEF^vW>)8MPwctAIuLk-|dgExh9+=wcbo*b$-4KPOK0iI^4SIs! +zY^lG{r%HYP+y8Q1L;Dr1xAc*4chwv81ihh@L7xcci=U~!L2ume=x&J92f24uIRCX~ +zKM-L5EB9glyZ69DtK8hFt0hbJNxOGbwf`KKSivdInJ7P8d}O5b?K_$;Uw}71`~fYBTYSih^7_av|9+G0Y2!_+pKJbXmzL%;3y)b%!3g6SL)Sz2IrBP@ +z@Qh(R^Q|RbH!Hj~tA1iovY?Gywyx;Xr6HMr7bs9*SFkw_)*oAhU#eaCzV5gcunOAMOQ!a +z%6`KhdbP55bFa~bm5s$MPI~vc;45pM-Kj8IpV+v%WYeZg- +z^;Y2(29qT_wqmQy$7ocWDJP=+&<}N!I)YZ?l+xtTx8taQ|*7%Zur~7{+A?d +z5+np4;AgV`-803H&IhQUI%(dF#sDro|8{8qo16V_85uoIj0`3_bGC7J=Fn4xhHTHt +z_FettCbv_*AGZh2_d|K_#(Q}3A@v@Pc~gA%#rrtE!{WPeDpI=O_4d5y)Ol3Sccn$- +z^Ghn65^owqC1#2JulUKE}QZ#m+Q?{`Zed1 +zUH1Eh%rDuOq|w>;aE@mTNs#5KJH^d?4>xnyQTZ3f`yBKHy~UQwd$^PfmGW2(&Csop +zT#&gUh2x9X2IcA*d4RnR5H2&wQ}yNXh)o!^uTvp?he}!p74R=T22+^^701K%faeo+ +zr?^oJ^1#epN9A7_dV`*zH(Tm2^qFrd57HagHMCzQy{Vd({vMuh`Rgb>&>Qpwy#WV( +zT2`OcmbK7R-y|&cZ3Ue_dq4g5ARy|~uPMxq@3BJ|&-vcw_5~x`+ZQZQ`@F=WC-Y6J +za(!rzmtx{*s%uOTq_-qJ%cM7*qaJ47-NCWm>ZmpzM>1%9hNtbk1!s>_$VRv==fd%`z(x;FfM}Km6t!4Q?{=;^&F3@5>HR?;AMI-mv-p?pOl8_j#d=fk +z>fXEDrg5vr<0I9&C5_zun0ySOpM{>FH`HHay~~4)1nCXqqs)5iLE|H7XQ4N!2Ko#f +zAIX{Jv#70~Pd|)>7|$|fhkFRCyXtS|@zH!<)@5`-dINE0y)l)VSe#$78z9}v$M^{S +zWjH>{O?~F^QAyhP2;(7)j}R-yO|aL1{RZsrFpmWKqpA3Deel|G)E2WHhk5L8KP7e? +z;wNJ=K04JfoTSKW#a19Y4#)jsxSI +z3sqC83xMZWz2|e09Y?u!Q6c|yQgfMRD%KnSvbEy?_wK4U=m~nWrT#*nN^<#c$AR%t +zX1%44kGiYgpeN`JB^>%hIA8pZ+DY^~dV0|Z;l2vzzt-$k0d^d6A9ft3ecT4F=wF5W +z!r$KexY2j+)%-r$*?rt16KboEZo03val=MRquR&q=O@N}`=0e4`-yMgvs>TVJ#gQ% +zIkb=4?`R*l-n5U~%}Z|`a?d-5G%xwj(&3l<<}tS8up&R0x8}f?+N%36+iA^l|6SHP +zX4stQ<)3U^ec_*qqURPbchaD~9WXVmqu%;b<^PWn&ilB@xOXG-LQ*sME{&f4{M^T_kCT_}VaE~f$9;RkgjO&zCY#q!%l?Vb|pKI{eoJb-}HOsuM~gFf?L(TKaa>dkl!dj +z6IW+Ct&<7h_r)?|igaMVl4+8z^!U^)HE^HVxH!-O2mOMd +zi|gmZfetv(fgi%rUj0&X;eB6FZm@4co1_!;w#Y|MH|LY_pa*`y6jlDf7kUZ8gC6)g +z!GkaKt>+){gC6*{dKEwTLQg?>&;xHzRe114x^+1se$WFyP4M80c!Thu2R?DWiXVKD +z{w7T?h(AS7^_Qz~(}fBTzL0+q9`uO6?qY=pU!*$-4|?Fy{-pRy`GFo$u8@Av1CQt6 +z3;9Eic+Pmo?oQe{%$wR;dk4Ip56A`l3aAl`(h!H|_xn-};e9)z1)mkNOik~+_A{zq +zfS)`~&6CB(8Rj_=Nd}+uvz#IWAIt|N#+djmCwmfh8>*Fms}@#wgZ@@?rpP(-rt!-O +z%jYSI@7Q9iu`Szg6W(>biIt=TaMw}!7lz)T +zC+H330Q$_gln3c8yL9%PeLJ8h=neUYKAmu!>RY_QncwDcd;9X5_V#iod>j?vs1)Ki +zsjRc(KA0W8{h+?#xq6!VtLD4O=Bt4A%BFoi$zC#A@Kz!JQZ%WHAibf!ar?E+fYZ6@ +z;Zy{9e!=yP8x6F(f28z^xHG1ln)7by^t`ptw5;WZoS;8M|A+oCDg9wg`bqSI=ud;j +z7bs7AQQQ3({dnJwXu+=>S)0mW;!tI01>gR*d^bAX)PET=pxr{d3O=ZxNfW=ceLHgK +z53OM}PJfv4xi8#){ozuPr$S?G%!jF)w2du#}%VNFtUdv(Az8z>s +zVP}Ofe{)QCN^kysJE8?wlBBOpCpM1pn9N%bZXw<2PUohFb^3e_bA204jScGWtCUc^ +z?J=d@AQBT<{@?q8_w7KtjCL9VLi=rN?@eg0@je53_S-wlG_9K8?>i9 +zBch2(qUZ<{-t+s8UH%=9#<5VTUQw9O=Ay<&arUidSGg&6*oS&PdRY!u6l!> +zpf~#_(VMT{IelOYd2I-CK +z8rmdD +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%0AI)-a@6w= +zdf?IifG^?=!h;@o@CRR{AL+nzPQSDNtF&{N?@qM%+dJTNIYKYshyCvO{WY8YU+wjB +zuC@5d$J9Jo>`Bx7G-3(%IX}y(0D%wY0}_v$_${wdoHkS|pZ2G89KtFT^cVY4I`iE) +z&lLc=neUWK2@0NSJk9-c&5%@ +zRr|k&=UTf``68~kzHvv3_VDcKDrWG$?DXdx{}+6&HQHsg(?~zwU+~_ezdzx92K4Ofb~=2n +zwR6ASOQo*uMzPZoKhdh%=fpF)wbS5(`W{!dtL +zxlpNLJDtC;MauHgPKVRR=Vu4m4fHfS9q0*qOa4~r4f<5N3hi{19KQU&sBh2{^oDj9 +z`cx^+e>RV5<(}A9#H@7=2%U6DUd41*9ub)nKJ#+?8^cH;cV-!8q(d4BWY +zoriq%X1}9n-20bSwvS*uW9a%}B9H%tcrl(a9A>`n6R&p_K7PeB6RPH~U)}nPwypF$ +z9(m@YC6T&6+}M2GxKB6@&HFubRHW?UqR88WPmfR2D=%xNG&C=} +zvU14Bv+p|ku`zE{Q5vdFU*12`ckHUl#z*@KxMTzPgum9WXe$VV#y|=+mCs%oJeja}43SWMD$NygG +z&CkROEMI;ex_3z`KP0mq(q(ItW1{17l$+4vk?RN5MkXe{+H&|A2Q`nW8QaWd3p~}i +z)=v38hVI4re$I9}^1jkD?R0h(6WJJzv*VE$)~_FKSr^K?5=&2aLHg@s_0~zV3}>>_ +zDN9WR6k4_QQzy-v(U>LIo<}x$#-s}-oHM6k{;VVFo90;M#~yq1V*qvzHN=z={)2AZmqNDc!T!F*J-_Be(xxw8%PK2Lsm(;ytL}t +zZ>Iw~;I;@3{D9Z(bU+7OX^qM^_yK2GZO&X3(g`}?VuAxd;G(_!IM4ytBslN`PPfwm +z9dIiJ2YxQDt%%=gkWSD6*Csgdb8&-wIM4w%tyake{D6!08sw7;=zv=+IPe3`vXp5y +z(g`}?k|(M7zz?`+i5~|#;7Ug-9QXleSw}jTh!1qYZ97@vz%PX>Ig+I5$`f?JrRs~s +zo5ES&bgCfY108Un13!eVl5f%wM8(H;OQooX#EluQlrZQ~PW5uY@j7--8s0udXRVFXWH%jB)`y=z(t%JoqBsAUx=S +zUnzL-Mf#BrJ$}#wZ;w{}3HYMDY?5-Q<3XRok5hQ?Mf&x6g#6n=4}4<0!hJ#I?l_*Sr>VdEPF1y#-pAbay3vBq +z3i+3!NnHf#&D(xqAB7Z%E_7~s*h`zw*IeJY(Lnp#bM4NQ7SKLICmo$Tj{Xn*VN&`- +z^pofZ(XW@vxTH-RpP)P)L2dUY`W4YHT5z}1UYp9G{Y^P{T>RJu)o(sB +z94Pj|;wS$g?ergWYp1~n^*yoCz_039`IfSw+DV|5gWXx{i^Pl19T(sEmd15n)%Rk0 +zg`;mUED4c@iV=T<>N`L8$`kY{-{I!Ix0t!7sPpy${VVhYy~Q>uy+NNU1F;%v8P>R& +zVf~%$3A<1D%304uKH6!7kM)yDNVU^8g;YCTNbU5#WJAWkbeBnQOwI4_YUbRJRT`rh +zM!(}Z)p$G8`m||w_v>$Tg9Tce9Kq1>4Dy$C+H1$=+m0XfDK$p3`F_n6W4UPev^3!L%)fKq?<_Nl`{~bE+hP$J)7d>?i +ze-Hh<9Ogv){7Z@oB~F$%&+B45gz=Fr-(@jw!n`o%xA8u!&l7Vz+`bGXrSW@gpFVV> +zu&Cf0x9g+wqLD|u +zNb$1XMiXbGV;AXX_4JIKHG5tzR&R(0d=U>ah4@dJQ$LB8qK&SfHF^3BJnV#za)@$= +zatIbEpO#ftZCS5VIouMZ+}GT8VZU{CpZ=)!s7iXtM@6(`uBxK3Rm-J +z|8X9h+GhI*`Q9OZY?O=}$K*Cn1Rt~)_NfMbt>=qAHc;EaE`R6I_9R)dJkwkcn@5A5 +zpts~{N^j7o%0JJeow-(ILDO3to`i6kh@O!%><<@(0+Xy`Y?d9>VgW}ZhYO3kBTeFoNJV0}jHW!Xnn_EXhU;a#6${$8Ua%wa>< +zVJ4Kj)36R>qS(JqQhwVd4bJ+EBRD9qE +z-24)MIzb0qo8Z9D#rfj{9dO&eqv8WU7ssc&sCj@g@<9h&+gVZ`BwnUvx1g6F2Rh)A +zXDb}|DHQ+xK9vx6-2>==+wxtBPvQk`eu*CkI^bg8Q#kMgPG6q^I^gUH3I~3`&8PJl +z?4Wnh0aq?K@B^-*=&L>)=ztp_^$h%6-0e=yL42SCE+IJZ18zv6UoM~n4s_s$@Q^~c +zyg2JQq~60GeDOI-E}%!f(90dCm+_znJ}LN>!WZRSFMq&;9{810RQ%wJcu}sAF5p2A +ze4F6G7x4z+K@a@4OH};ei}dT|8S#T2_$^bWIqfI-LViJb&;#F8ukhfDbO+%<4}AF? +z)qaC7+9%XgU4Ebke$`xs2VclfuV2VN=z-rNc<@EML3q#upPZ-S2Vb=3dObz_pa*`- +z`I3K02jUOHgC2OhN#Vg4>DKEz;s-tO<$?!al;0pc=z$+_fr=k|k?tUTir#5mX^ef5 +z!hi+!lBXNyuMkNFpYyYv$`JVAJ +zxQ}Az*ePNEW%y}!Wqj_SO{-V^9<^aedaZzu=Q +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 +z@cz2oAD%@&wXge0&SO&2_AR +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 +z=qK+t*Yar@%$xkZG>vb~Z8T +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 +zLE8~*yF#_LD`ZK@Q|8EFh>o>HDsvFcJ9(; +zT&elzg>8O2vs2$zsa1UTctipxpTch0aqj#5^GkW+7HWt4zG~B8(l3`Y4js@E(9fC; +zpM1BnP`jOcgF`uDvPuK9%@Y8G`@2^!)6_i|9R5fRm$aT)D2=WJB5N +zKAxvNIMkDYn+*44s*PPikw(+U#V6sHrmZU(dBGp-PYM0{Yge#wq{fXljyzf8NR2PE +zYqu=Ik@0Xk9c>y{m1s)St6$T729pDdBdfa&j&x)P+;WdauV2EF4q^3YaHK;ECG+mE +z*Ply2mB;)V3K$9)3izRb3rFtlJ(6Tucy^?eb53sCzHSZh1oizoS*LNN#+Tj}R4$sE4A=A-JGzS*P#hWfoxzcU1r?DY +zJGk63B!0Q)zOU{X9O$+Ge-!ka9qAWcMQmN9JNia7|>%?RV=RxvyMkp1_ew +z$XI;?osYDpcyIX)^8m_y_QG#=J00Vt>cawXAT!I470LO62w^OkDf%q$=I%qn^( +z2QJ|g_NVDt9s0mrK;uRmN3PL0QsYaN&-txfG(VhL>V*5@V;q_19B^NY;{FAm+%#~c +zr4OVG<6a1zy}We7jxKQG^2X +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 +zndP;7Ylt<6x4azP@nvF1`anonM1Jcauw +z(tY9A6!PcO0V?iG))Lo!&~-Td%a@*#@f8?vWqrRF^4Y!u{%z^Y0mcrYh&n6R*A}JYM;C51pR*e=Q#c +z-D!)>FBLC6mw9R8T26n#i63Ns^UV?L-|*qkdmo*!;ZVQjT>N|M-cx>m*E*yx-{$Si +z53jGvz+cnxbmqTrtzMGo?y*B(j({tZOPXEYhote>p{9pDzv)gW&J@)*_cRA6I +zCan7~IrLuCckn&uPy5@2|K+?7PMs8dbKJjum-EaoE)G`g^b)6^vhc3p$M4d$o*rqBEfJ__z~_ijNX +z9x?sp;IunC*}wmat)|!2hkTdwrC$!6J}Eqh+p}`Uoxy)T_e=KwVfF0b)%z&AISne@ +zp6Hy=x)nQ&WIAv4*ow?4hrh_>e7yeU%x~Ylf&G5U+4|Wn?|p6RolKM6FZfsHqT!!# +zU;c6OmiLa{S;>{3a*kQ?Qs&}qRlR5ZdRb*fv(a6A2!^UgL^!H(`v +zIPZD?{dsWol|N_yovBZPJ%60(yI+@lvc>ejJpN7Y%Uj=gCRkD19z^|beP@g5Q{O+y +zH^27(@_&Mtl&N|j`Jc7H4^wNo4SzVhJb2t+{Ev&-7oN1PeE$(lho!$rXKp$9k6g|{ +zXFikZIp-SR{W@g$uzUZu{jJQeM{a*BbLO-E;=Y8=9eVGG(Q7&051rrq##5OGufLk> +zeej9XGjIOpN%kLi_HpaJwBs<}{QCIW!-7{v-s8N}et2_mzezW<|FIq43m$!Yko|tz +zbM#k+PQNRp`0{xBt;{0m=2F!xir(W{87&P+LXsLKOOx;-{l;6!hbSTZn}~A^3E%N +z&K&vsx419chd<8DUwe~pe*Jjc$1?Aazntsc>+XikwAX&i{`a<9xNh`<|M+gtupdti +zP6)is>E9oHW3VE#iv5juycN7<*<|14Tsixrpz!5@8y*h+ZB|_n{90J^VQ_WLBH#Ra +z>4-Ojiv^DcTP*!q9-IUZqk6`priy!LW%)s+Wvy?^VvI(X|oN{77s +zj{}1@{Z3&9DWw?xS^32Lbzi$r$>HhW`9|it%za$uelM=iTr~GPzWWv5?#;~n&<~g| +zw=H}!v(@#_abG6y@wfw}|8ltH +z+_K=CbJg7U|K|QM_`<7d%2Goxb~*;1)|1UzR_0cktG)9vehIp1k?B +z;N?^2`R3R6FL*lGQ?nn}yU$K5gXMSqfcT +z6mB`;n!7Ty|L1()Il +z^X2_JH)I}ee3<+4(j$M&T>GDMIo?luUfTI*neyeGT<^NWXJyW;Q8;1c@bY!H|5afj +zKjrN5-00u|-+GA4S=ex4uxG@D?0;t5L&05sv5W71egEm-2mgJr;>)^S*905?R1rk| +z^WS|kIOq78zWMd!`Uiuz1ysFTS9JxS`_s3%4exw&=irBHmCpCmucuxwUw7L+N)B&2 +za7N~Pqi*7I*6q4F6MCu5cfVpgKbkq>xHjg?kN@|s%n$3=b6?i&{77b5eTQ#;o&V~p +z%>!AmYbhy8#1!+pWT +zC13Mh&W``?4nDNLocnU!^y`C1K742pbbb7*-NCx6rgOX>I=@+y32y)U9k|}Pe>f|+ +z^mH{AKHhJK;7&)Z^WC17w(0989sL_lKVthSnI#o!UjFNg*JkeCw$XPvvttirc3x7? +ze0gZwwV7{Ezmxm2b!ubgsy$*H@26jP-*|Oq@gYmO-sK}FW_G{fD%G}Ur>uLpY@_e? +z?Dehff~P$E3r>H|cFTiR3zo6}qNZO2A3t#$-{ow#`-b4tLls}nIq8bvP8-Js(T_)_ +zuMbWwJH$7?um+5*{R-FH^H6K><6%lBxBTbU!D+AE=DR(!@145t@Wj2GzW&1lGPj(% +zlKq#hUYXf_LXGcoF8bp=ncuBAp84|paW`d7nDR63%kzJ{JM+;cC;H}BsOkHedrvr( +z>wV!LV>5~SFJu48`U&ffJoawi?HM3BJpD`M}#U7oIbR`SQuP +zugT2)(kkxDxP#VaGApY&UV2q*J{`5sMVYyAs`>bpJD +zw;d7OamyPx{o-gic+sUw1}bj7K6uevLw%QXas4g9%lA}#nRi83@Xh6;gXqWHb8im* +zW!}NQ`8EBp9|iZSQ1!mNg!AtI&`z28 +z*C}k)IR3oMyQd%JyI=P$zbR9;dJ6O9r$7IGX8U1RabM0k@5an&_Z;GzU-$q0?9A2Y +z9l`Zp_p7gGu72-q_J3{q*mb9$rPjQD`gQ&t|D87X61CocJ#=jF-XAUIa^9Kz!{C3b +zKJ?w5J<>M>SJxfHeL4Kb&fuGe?GQx$D~8?>tULAqj`!1^#{aAguK3vpT<@yjqTmlZ +z7IJ&$9Qo0-XA+ePo1HbbGxN%&vpL>RIZvdn&wTX! +zzTBQ2pZ#uT@!eN)UtmMNa*x^EM?d9!GVkB(-g +z^|aTI`zQOC506e;apA|l%X#LSw-23mqux&;`pACDvqU%9XYtdoD%p?J`;QPF_kNG; +zQ#xfSpWcrwbvrt%E^i%v!VMpvbLrW%pD3=MJnl5rLx<%#cZB&>{+!fiKhmLv*4?sH`Jex!~!`;iXkis3D@9|<~T%eI?xW0|aIi_^#KM;51#*^ewvAG04>oIYkhvN(Oreq?d_nElA&^fCL9#p$!T?nlm_ +zZCRtXp#7qU&gJL%4$&6-!3qB|jkP-uui~&u0}E_|j>-e^&jL +zdcR3Ti~7upHh<8KE9JXhc&)gO0Pki;F{l>BI$^e4}|uW);_y4v&b +zXR!DI!j)P!$|%O4>XwK2xz>TG$4?n(i=T9b(x5+hwi|!>#?Kgv$Dj8?dD(Gt?jd*Y +z6K%X~>zu!R35q-CT8i{re_9gll^>^ZVeyyJ?sp2tqs5;;v6^P@tLiNdw$wiHcWWoSdM%3p7?2qdw2Mh4fMxx +zXWn$yNr;>H!m%5koAwos`@zax=OT{E+VHh^9;A0H(;GQ1_;@_xsLl<){>@yDYdiac +zQHZ0x?G3R#evIP~){svAwKh2x2AQt9@lzAn+_eLP;3_h+KXfx6yZ=c;-?CfdDCG(>4TC_5-s3-$5$+H7wx;3(rx*W +zqVokS6rE3?@($JfnAxiMu`kv8mgZahG{v`9seMC7DE^*xlH%{flxBvOgI(t;Ie6pm +z56)=N^78R`B`>ECT^`hO^}#45S28YS-js16Z&N^v2jdca!sCL(Ov2?<*%nasqWuaZrU6!@V!kb1^J6BmF$j@&cp?HFY97Y;^_XA=0@%{sZ;r|l-A`Cy?S&1KqhEgg1o^*8euNRfJ^dmK +zKlCrc@PCbdl|Ei&eVzOWBYsEvMHqe>kQ|18C-Nf<|IYM_F#NmFFT(KeO1}uhKbn3K +zhJQEuMHv3w=@()6aUl#p`0@n#WPXEOfbObKNR$6M?)drP=KQz%6pKC-!$S+^CYr{~ +z2}hy_9Uo1mqwRev+?815UvP=YzoMrrp~q|2?}_hg&|b&rb&I`@dFLX=6|%nZmMiO+ +zQV&)-|1#{N=-8Cl37!uglzRMjm%~ +zQ}Uy2(w}1E7U?#J>(F7j{245MfL^7RjWUYyr@P&(V?ZPK1$u3&>lo2@GGDpdJs5t` +z$Bfqq2uQe+DjQ>0Xx1@i9rM|)V`ScxaWUBI7{Mp9j*+lg$81{b7@6NT_jQcm5|RH; +zeI29ME%rL*-+CQWU|+_yj`8`XUwg92@?fss6tBRBPJRz&Ao87}@9mYgcm3shJ6)-m +z@6*VSb_=e|w~pzW_%ip$-4^6=hc_j^yFXuqbxhYGx%?R{ehdWPd*e@F%E0u;Z(AYz +zrO*rYz^;bBeB);f#pBO=q0a2M&&Pg@=xMRLiN2HhD!Weu9}<0RuVb`+HtQJ6GW#)> +zwW;jK$h;}zV$jzy8lTwf7#%k2m`!UPBlFwlzK#)GBJ%&KuVeJOMb#c%)fr9(YmOJr#@nJ-;$ +zaj5G+I*_T(WEM`{wd$~w&OXz*4-8TG%4_4q(59<%hH};KkReLb1nSiH6Xo8TuV2T{ +z$4Iz{%jJ$>sufA4Z$aNY3wrDNPA5NT(A%}(*u@Ru+Gujjf<$dJos33%%aG?jXe@Qj +z%5y(o)D>H*^GjW0M_dQ`t5%>9$M&xgo=PUSOsTqJRZCT%LD4_Zq}=MitM8t7|LGO` +zdtlObaXm$q6da)r(w0<4zRch^KTn|P_;nIov_Ek0a(n+SU%pb}oUzeaj{5&Z6$*Xh +znngd~TK;E^bNI(P?Q^)vv46{8H&K +znh}Q3zv|~l{RDak8fS5WW|_2-NJ;0{RkXasrlX??^OsQlj?zE*?-q^~x(76!h3+Ds +z!jG>1WYhilM7*W3|75pH%`ZI~X3ZRMy6-mPY~OU3cJ$R1x(l6!?oy8MBk)N!-Dky8 +z&2bX=#%NPo()PtIHNVs~#JZp9KK9REc|SfHNhkV@tsw6+MxIvH{lDsa;JwMaw4<*s +z=#J-0oO+7Yt}*?{W|IZ)Z0_XHCwe{_ +zk~JR%ex~$m;5I!k{XE;X3o76Vysh+(xTD7HS^3@(7t#3nZ04hx_f%BAyZQvGe@4}f +zr>=I5W7UC~_nc1mkIaepc2CBq&_~8+*R9#}QCCm)_@qa7yhZgXTxx!&GNl*CzUdvG +zbK;3`nyTsBAO&45>+GtoN3YlG44|@szd(09i{;d##wUb#@}zfVO~g3yRNw{858;o< +zvG6T0t`?BrM$rKd~}z)eRl_v?mgQK9WZ$#JAn%8gSLU~7y)N;V7tr`XTzed7eht+bP~M-YjDW@uHlEOS1j!%x +zxd%_&=fxA1soJ_@li{XRb2#ZA47zfRsa!m3j<+AZg@Gq7i{lAt +zM_*lAA8P$4`cTRdJsG&eqYoeP>ciQMu~aISXp)@%-2UZq%HDp=5bHY}6n!`>TOZ!3 +z_1|4uFK*0sos#_dw!iAK2Y-3Zp2U~WMju|j%WV(N`(!GO-D@fjoL=dY57qw5cljyZ +zucZ6MFIyjK`p9_e(sYvCU4iWJ)<10{rCC;~`K6?R)`y_0W&NwN;oo(iiavDe=|vxE +zeh7c0{{hXnz{qU=ET+AlrusCt5c+kMn%}8(CLxs})|$7y^A)duon$_J;Lq|M?ynr1 +zUizu<$Eip7V_8>Sd8Jza?wy`zj~}g1y!?@Fb#0Z+pHlT*srjW{13h0sCtW^zluI8C +z-h74ifUM(WJ>a#!%f6tE=SA=9b+datz~yQCy_6^GbE(HJN81~_#7?L8lf30geko7r +zF734ERlRPpak{prsCNsgb>~dVEc?sAQlRV@`olGbe-SstT0La-kihWk?EO!DE6c&& +zIWEXAUb^E>KR6sy^$phVuwlc7Z@>NayY92kK8H-5I(6~%>C=}Sc;JCmqehL|Yq07> +zxx4JL%YLVva>|v8CgM#A30YXf)ari9~v8YHE7I;V}OpOm+7p5=}kr?d|w`X~KjFN0!o##ful8 +zcg7iKP??FI+S=NllTTjKbNung_fUM#!i5WajydKS{(~QJxVL1<5^h&K9`9*uYyG&c +zuI|>Yw%Q6}?E4A?0$-*&H-fH|zvmm@_y*T=d&5XXebA{8v#?LE$Qn +zpEqw_&;0rGdloHP#CbrUrluzF=qbPQfx6q;+MY`$lT26i>xd(c;5uf^n9&mq273-U +zn6} +zmgmsFLX4m`6Ukec*T)`vEZ2=bqkpIu^&EWg!96tIdJZ_?fUG~n;U3Z;EogN3;fM9i +znl+2t@Xc?2ljQgG9*m)U^>4fFwxdYaJ_fD8?<0__Cl_t->4h?RrT)I +zv)_LE_3XRvzFB{WLz|EWX^}_T0J(r{o^;YlERPry?)pcJ7!g>pV#U9u@72|Fx!vF= +z_$+lxy`*1y^8KMrNF!}PUho3_Kz}e!L4)PXmwoIWlayyVbO!E$P8d(f1G*n{&_P^Y +z{<`sc%OM4QR|RgKQ8FdKN5Lz_JV8L6*>W +z&=uu6ecrog@4cPBefG(22ht)B@`47SBh3>m&nKL4LQg!t6m?xI^+RVjHa7A&!MH_R +zF}BBzJD6n(eJ@nEw8PzoLiIxqF|O+C>q!n8H%k2^caI70At#Vov>7r4Ub^d-`n+zw +z`Y{%S|L$=Bok|1!IjO&;rRAy9PCKm!w1K_>t&q>n``-GG_DCA(KllfI4W3q3R02XgbYEBWgMV<{CVp|Snj#UKE^S|b9Hq!%QyH8oCX{z +z{f7&k3?7_#;)%=y%stblP2+Ls*1;%SF$SRDFvrk1yVzYf +z{J;jJgFgffATQ7r?ztCj03A>^Xd&%Dol-C2W$u|YX(H=z^aFhtxnHs3jE^wadh16R +zb2H=sm<6%|KA;Uk2goz}g?6AGv_<|92EV~C=q|_)>c;p7Pl3gN=g5CnzPb^Ic@TO5 +ze860}V8MLO57~tbLzYoC+5vi?E%<{UaiBNm4F~_sWm<~N16viUTjIe7lEv4ck3k2t +z9b*#mi~gV;pod^U)CWKMi+kneGl*_gj2SVPhC<)uIiGOH|0{;Qq<*+qYmh9wMsoyX +zP{<@?0ytFR-zuKZ-53}$2AM$`U_R(_(45u|!0*5DTeq|WW0K~n+i7lK{fV-G?IA}P +z$B<{p2=oR15JrE|R>(QlBH%Y<$~)Gi4nHn*6LdB33HpNZi}?%fK|R0|_`^B~@sJ&~ +z8FPwT$M~tMP#Uy<%$PCbFm6dUUOMB9<%A>KS&u=Np>3p7fGuC6cH98|6)LOLc(et) +zLErY=bI(bn_YOhZw%&T{e2<&S13d%vUo+>^7;vE*+R$FhyE&*%GfeV^+2{?2UP7U`3H>x!=(&d+HN +z`uTo+zFhX50_Q);-(Lw_qFgjc9{<$SvL+^+Pa@9ySxzF+7g`xV}E<$*aPviM%=`TSDz3%@?= +z^Zi{HIeJIh_aXC~p#A=W^j +z?{7FJdfQ-+Pi($9^{DZQ!=zuceqN#a=bXnAeh7a=j)iZ5@!8|D)bq-v<`@2a*5~`( +z>lA5|AJ@hU`ux7oUGfS)x|*`bg`!*N3xB>})`>zdzpl_-^s<-kQcj>TAKm3{-`#Py)UTkhQcSYPq^0uINvY%r94@mOFj0wK=vK=bKGK|_m(I5r97d# +z)ML-9x_yFsWc}_v-!J>ikWEPb7+s*aur*yU;(`%@!-f~#hnBr_tb_P`zbpOVj40jE +zL2_`u!JO|m=lk7fo6PxsbG{#E8*$bUXAg1a59j^N`F?Z0A7?+!`Tj$*o^vth`_1`& +zbH3l4@ApDqR_|M1OWTt2wgIofX;dK;Ym%aJ$7_bMHL6OK7T*^-6fOJP{2^YP{2^YP{2^YP{2^YP{2^YP{2^YP{2@N6Quy`0>_Ze +zL+lWHP&opFEcZpzL}UcMH` +z6X`Mi{I->p0axmi@}<5vbbZneu5Y3{XaD?CpOi24Rqw9)C+*<+CiSllcP^<<%9r}q +zG%98($3!6 +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 +zjshskn`%rXu1u5{EIMCElPo*G|i@4*Ekb +z)ec%))54D|59Gm|M?ax95D-Y8ejreFq#=HFdvrPb1$epO&34r}-5uoDjFpZ>%82)A9B&iMUgxYAqiv|Py +zkU0r$RnQBDv)Wi|C_>7H3`DgPUAq@3+l%T5>sU;Oo=9mx@*$zd?c;VcOC&;j1 +z-=jr%2Tk^gX6g`$R86Z4m9kU=b!}-I8FEw`XbC~fQvz>^Cdv{cKtv!c)!U_4xvY_^Q%(yBJ%=%P%NmJLq$V1Huc0nVK2lZn@BFV5xS6*D8YxC1ep{RV`^)n +zlX`EdNfEMO#mxc*_ug~4yN@X=?Jiy+7E5P>zrncbTTP5fwWdDAxVOf +zgdrze(OR~-MQEx{ky%P>CoJ7)Y?sxxK?rqZBmpJX#J_00lKEDP6ksxjTii9OpDM4j +zVpeL`h>Q?MnW7#d;_H3-evG6YilkKNxYBh^RCBn!=^r61YWSVln=k`3yF_JN`l +z0p<`=L@C;#nG0x{Mg`Id?>5mw#)QB{C;wBc5u#%pG0JgNUjl)^iNJN@uS;`0V5cQqHJocFUk0%kc7^_!l~FnU2#AU +zH#AKvacUTiJNq6nqPc_FtuPE~Okv*Bc#4)}k!W?81_c2_TF}z?fKPKR9&6M-;UngA +z7hB0DLP(IL8r0QAHZ<`R(9lGX!J%Y*ve{u;Bu+L89>`>#Y{aUptS+8tV_}TbK%%im +z8jtu*wsAzB8f1; +zk0hBTsDEVKOLa67LP~aon22n{fn^0PChB0l10v}`Kwcseufw#_2nAAU%x|g)Z11r2 +zOhyaRB=w8h#JedZqq1;8C&50NDH_5t +z#U^+dw!_$u%3Kj)UNbroBtqFKB4i?GKvzZ(inI$M2Yz=-8IAdNQYQ2ZuMh{CpUgeZlu8jU&-A&Y5*ct`o+MQNn$JDN}gd)&Dx +zUbRLiU}}*cl+y&)Aq9s}8;wLvLnHuPxtc+wa;kVNN7uD9MR*Qi>k$(mRL9f1^4qgL +zW)CI_&m(H0<~Ybc_G)507_|-48@6{ZV62Zth>+UCVuuxRXw!jIJ*|nzPVJ}zRz2QG +z)=bS|y%7ZKYnleMg$X7_n-(5yNH&DG{=)5iG_~A@J4GeysAUy(Fi;rO{~f +zEZF`P7~)w%d5>=d5)8$maZ})1n08n~8i|!f +z06KWSwg?Bi^g@z0x}9kr+o04p-WA3kDuwjaVK<&5NtJ{c7ttPW6TvgWG?dhZa8!sl +z6bS05l8{LNjie6=;IYdmoF0lzkQocnp)gMru7-qaB*xXrP}tM!Pz_DCR3#)I9@=-o +zDj*b@0Q^HEpdCX&livv{0%Bg)_X!N?K}gC=nV)O}7|KgcAe|m=Y9-TM8E>4>bV>WW +zuvU{&uK|Q<&@c^)N7wvJ=mf?5Q~NdSy$BVBf;lrJRMduA~L#yoRRu55y}^sAw)}HIITPvN0W@V6krXd +zXlJ;F?KjDYT9)b?wWNRe26^}f&t6RXW|Drz1)9NW`=(Z@lNK6L818kn4XS+FuAp@e +z=j9DMOnx-Lw4e7@qm1gX*J!bqA%}`o7zaeBy^JiJM(UMxgPNLnUBJ6&YDY0d+Yw|8 +z5{)I}hIlU_(ge63Y!Nkpr+CJJ4)p6MH(n1H1HkC4t#T^*n^mvV>;$lO7>UUk!F;{hfeeX4%|?y +zMJ51tTS;m`60IueSOD+uDmk}jbu}x~&6Y;U9OWSmnj-UNGYma?8BOONXoQiKsf~`f +zu(639vM;Gfp#2s;rbC7#^0%?2fwXGJdA*pn-$w8lSnXqFW$`&!g +zTxvU=<~t^7qNV|iBVmVS0Emc}{MrkN&|WQ7Dn_kb)bv5tK-vRj-23}4|O|9XHBezL}Dpy?F!UtjaNnz +zM#GBsoXV(!wrG<5ZagZP3{h!T$0cZ4ONWeT&9zvLFwj87!Km6{-P +zAHRHl2JU_ +zX1qLf-&25(8Z?1t|9C>J!l`P#GNTxDcPiUt$;w6?qop#ePNaWvXPUC3!nT94${@0i +z&4|1(4EzYQ9UhF%2v(j +zOD0eawC7brK!9d1oUx!2fKXLf9g(N +zN|cv6sy(pdGf3gnNNSUny)-Y;!WjqhX#DcjkAp|fnhy4Qo<3X)37MI=L|Qu$a@R8$ +zCQ1T_ipu0yOJtmqRSBp!w6_ZINe3hmO|Fh;Owm~bI#6lB!z)(;0JVf`XzdB`U3>i8 +z5RKdvHwF}=dTV20McU+24MAuQjztKfuwke^5vHR#TpheBDRB+~NHx18wCnL?&)e(D(gDl-k#B8_(JC$SlW +z>443p6d5)M(Wt^{)RSn?*$w*P5daSj6Pg54H4!za!?aBWqag+$o3+s?R*F|wF}9K_;yf<`PIm7{YY5!$xG_K_+**3?WVu;>=;0>J|7Oc)v~sA-;N +zDlv`3NqQi-ahh$&WiPK*B|ufviV+Z*7Qwh(R@X=)kZihPQn@(48Vc980!7u*&I*AK +zEV^YW-QKZ`mPmXSjv^7FY|8Fc-x4Ep1JvStKn9wbN$a~~NDq^(h=$hjY=pIgoZJr0 +zmNNs8Dl`vg`W7?Nhi^8|v`eEZ28(ONaDR?gM_}q{PG)7eC`vXUI>X!)J3bn3*Dme; +zaCjM+IFh{Oa*T71xu%ATMXlr|tqUKf;5lmb%vRh5w8oFnaXzb+%nOatc}=nOv9Q2n +z{#;Cp7S%gSfHUOLV+rQrK!${mky)1Or+bTetCClMIPgIcykFzY$Mc%%&=f8oMkfka +z@IleKaB>a~d+}YyxYSQrHE>ou(wsV$426nJIsi(MccDIIORyZ9=sZm=79+Mha*;Z| +zCAO06gjumVCB(Wuk{>)5P-l14>O`Fjq9s_8P)D*JKQ-7-PY^d~%|^#rXkAQW +zh&DxGgN`ToG*lyDBpOz!G_jUlJp-obEQl2*WJ{~ea6+HLp*eXH_=fZ(gS4IAJVzaR +zCLfWXjKYx`9TTZh5p|IW^N`$XT6^JP%-XgiqaAZFPG*xbqRr+up<8WRWk))iIwqQ2 +z%sPT@Y58cI2P1hrO7!Mc>H| +z(W1_E4+rGQxI$Q*3!(06pOQzbo@`Q#7_i2yQA3@&tgSb+$RrB{(UvX#b&bu@dMq?y +z1WA%2BTEKX1wUmMzdBZ=i*0GAr6V1~A~OQyvXR1^PMXPE9jx;Slws;6CXgy2+a)b5 +zRK?&JGz@D_dQO8!60b5s@?Zkix1nW>o8hB1c^s!0$j?X?M}uuosGTqwV$>NEm*om; +zDTOomWJeXALLgfU9f^vy^UQ#gv|J7~$+1X;o5J<+j^+ksGNGA~xJpA)2OAlcQ)-%l +z?8%yhH>o*FhXJBwvf*O2pANPXb9I2utGPN%!F*uaWPsph0 +z4P`LJ%0#FYE~?|!D&*5rqb8Q-|IgTa0N7QO@Bee}mV_1}pu`>{Dkc_40I@yCT1lZCSL_JkkKjYgDymkM!)^JHgJlPd`#Y +zOAR7b7aa9)3`gz-zbqM~sFyH85mFVU{vbr^gO0a3kzHdGBJCtaVK?qWN3{=emCRmD +z;!8P~9Q2NCV}lic3CV@X&y}Dl%9`yedebf^ +z3Ret<-Q`S!Ju-yTVu@F27gp<*bd3*h&9WO-5~Q?$8Fn;FP>|u9GLibA(;!cWwnZHm1X@fLPsRRp$|%y2epv=ZvELY;(gkjx6@Qbk}P +zhZfhUYhbW{3iPMt;3dr%YiWhv&mmU$(Om3R(uig(mXlMm@5@qiBX*Tt>fbBntEQ#M +z3*k`legojo7*>b$jrE2V0Hixwa2Z}BA_(OP!ntTG)rzxCj*Np0EvIcEl*GIdW;Huu +zy`=>;?~*G=FsMr&oxQ1hz$-TDKt{*(#Mr*K%(_Ypt&xW!W|ifdX-{=$56M!5j!G4q2&4DLN@Cl!d9;h|30%E*& +z4T>zsfu=$(%hWwccFC?$7W#~h7fc9Cy~xD}IidJQCI*;B`jfIXint!9m7zO^i?gZ- +zb-Am7(IY}YPnX;`G)AUM;08(NGP_uIwrZc{pe8ROfAjlAB@fpbBa};{F9K=MC>2-v +znL+Z0hN0+d81G)MU>(bVo`A|1mb1LP%!S|s++4{p3NtK5RWg=d9Tl4zWm}Ya0Txke +zFE;v^$Ev*Gdiu~lP$zD-aKqkMv)3vIG0JZk=*B9u#id +z4iH5gD1lQ6QEI!_NEs>t8c}BVqBTSu>_l2#$Ow&R%n+EPs?3nWD6YH>{b9VpAutAr +zOtM%VR!GdC22!ned)TSrIdZ8m3)UQBNk0)M4vjr>r>Rb+oAzUg +zIYb;BMjhT<86FgkF*BujjD;`6AzH)q1t!RoMfYQzQKN055~A6P&85&y4z<~2Ai?$^ +zk;J8ljB?`8S02+qDh#&z8d7sxOs~qP;#wXV@E3b**QDlai!1m=+1sR7i|J8Nic=wOw0-xRZ6$M=fb!&_Qdu(2vJ +zB4R(qj9eQw21VsrLmxRsrlpkMFxpUdhEb6*MNJU+viNp$D9ak;Dt`CEgG032wx^LC +zGeRKowJ4ZWRYp}%)x}lbwaUtd*@go|2Kj?Eofr%9j*cojl~kSMi~w`LsKz6oJjLKD +zCRx~7M^`-VA3{yW#oV0@-zXLfd>QV_)!rT&zH*d$t|iHoSjiEP5Nphm%tf +zti3*Qi9A!Hs8*#Rzq9=zrHcph}6#OYKWW6EBgWVWhROmbTw@|o)Nb3Jjvuc9_3 +zOxiZg`$I#TL{cru2$rC&Q~lOW*T`Z*8G)kYYLDPRh^Qek>S02VbN1-%O%iaq25E>6mkgZ&GOD!3(&q<^O`U=O;QUi6+I-#W9hSs!XCBg +zm=9qhRSVWAB8M&cZJVr52m3MwWH%aCADiz7UF)JP$(RZ29FWhEx%S*w +zprsO;ikh2EE$cu;g|NnDmZp@gmdxkOg-k7lPR*Tjj%I?TnC1()o-86;3=!f8dJEJTQ`5MbGaC>WKG8w1C`8p0}Dw5jC^e<@bwuqp}Ee!*w>rDK7 +z$(wXYrx!8{nWNOL$jXS_HPzn=!wQ!zCHqlT3~`)AeITuBwzVJ>g4He|AmSE)#MPvW6SiL%$fdQDuS`_=3snG9f@$$1Kby=(0eIyTv~%fCD8W$lc793~Tn%qQ5D?K#v% +zg@-Czt2$N7P0yBuDVSZa1x21DuHDO*g}QZzbXt}4i9>71$Q{W65KJ0ky9;+lkS!D? +zfdspKh26NOf!6~wsH*6DY9Xz{3Ri$Fss&3`28i6TmA9g$<>ZtTghdvz!0{r2EWBtA +zWV9f6Gj?tj)2f(+5kdC`S?FUeI&7iD%D%T8=?q%Q0}^~syrzD$7Mz*xQ=*a16n1$P +z%qXsNnwTIvr;CAZiUPurFKo@C15~X{@K;Aa3a2x!^LbUBOQ>e;A%PaU7zLmm+{VUX +z~=UMPUGOGq^`=&a{!i +z@Yu#!L>pt97kL%}BaDl1$OeRrGTdqfOGb%20lV~Gz{9rkKs|H +zD!hJzJlQZH*!Ae08fNE09>URJJ)J@hS%wF9%zm*~o5sGxkqUd_sl)45H(?&%Uj(Xh +z%Hmc}hAf{YR*z<uoI@UN8 +zlP@omO`c3NJgkz!d-UgXh)m}qNaQS-Z*2Pd)xbfHGG$~F4EEQFL?&Af;n-iw2uj?N +zQ#0c@-lxUpEF|p5?I+F4@J5gwt +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 +zSDx0$qd?ruJYps3kgqDqlg#d +zN#3$IV3mRuF0@$36o3XgGZu=H{aPysHjI1WT7Ioe>HEDjdnH;Amp7b9Tqb~%W;;gh +zSDQn;7WN+4LquxD>!FtDSKq!Dw5l^ +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 +zPxkz|g}G^Qh6JMr@-&Db$wC +z9IEXu9E1c%Hm*U0W64~x??<8|)Fl#1h+@s#X;5DvU410M@#0>JgryKTuBduQDh#$? +z%Vi{)3Pl4C<+(>cL;hYfx*Bt<=qN&BWe$?5Ee6#eI+fg(U7WL$R(xqU9|#jNi2Us^ +z@4l$o*B<9?(gAPcbSFhGXix0)us)qg!;mU+J3!i}uMn^(AsOrOg^-Hq;=}MPz5>yU +zz1=pxd|CPX5uq_bvVfMdYHr`A0?y~|yj;cpsj+=1sl}VPYSt;j*sFOw{7E9|W5r7A +zTVRq~(EFaM(C&y#d^}v3I`0W$OpUl%Hx_IA9k4H#BFMlXm*6B!GNf$!_%GsB_m*Ao +zC7iQSn00;G@-Ez%O2R>7B0)###t}a1Eh@L4qk%fjBZq9#(JgUn8G* +z-|^Z2MW{TdRA=!ykH#9;7%WYw(7YJTo@gKT3S)W61GigBSA-xn{)&_{~6ssdn +zm&>-*yI0}@vRvTFI)0~M=$lZof6M+ +zO_fw+5&@2vLoHUXWoH%6N`-kQ(u)u>OD{7@{&Yk?=lxxh66E#e!Huegle--}nk}DQ +z&d;tY_w0k?kZBU@5t3A&J!*aHNI~TTM_?4JfjLOdlF&dh0RHwS5vNu*fZf6yigs=SDDrK(Ml^l>8*rPEc{ICEG>hFFj|U>j2@03Y1-F3Jt8za=?p^xKzB~ST({vX9&}|)4)R?@8Z&kyYgmzW<)#;!H^j8PuI5s3d0M)A +zSfZDytq?kho%4jzPRzk3rl1@VA5IiN{uB^BgdN;APzv8Zi2Z^^5h^FCS?tO)K-0_W +zqne+W%LIYaH}~1AYbC%`{)}*D7}%%1e-;#4yj6QZy|NhR)=_<{N@5gYW$E2iyZ9ut +zS7C8#5$07{vD0ZuBvlFq?s_wq*c45e-#4L*Eyyf4(Q%-Id)&pxK>! +zulTkzo_PT=NrdMm(Gn{T$~8w`s;7;WFS&SOf_T*NMO36wsk>!x%gYuc<#6`_J5Uu7 +z0nR6!GEKvrkUq0jVWQE)d^bQ!YR0Q{XXPlprRb7WpHN2JW7S|0!_XuGBNrcl4*XSf +zmL`#rc730)jr8GU(-saDYlrGn@~9{gnHq4DKvEF~@);Xd|C%ER!dZWl{Z7h1}kV3XgN(8)MLT{skLy4s4riZG#t4AK9xYdG}}a +zUeM+s$LLMfW1;FuNHo#4UgT~R<5Bg{?roKm!zJ-{SV)F@x3pc +zUnFGNLeJ0FU4`s-e(>q-?BEkA8112GDjzHmQL%LlQ&)taa-)TgN~$w_p-VL{^kwK6 +zg;pXepAVTtGW>iZTi5bR&8R%e660!-@@)(AnB~J4VMAC_1yPD}fgHkO&q6Rr0cWXA +zR@(>{fPld17S7a$6Rn%h4Qc5yskLvwV1&dI4--k;l!Cd2%8QhbjX+Rx$c!Ee3*Agm0smiDz-JpwG_072neeHuA5wXe8WrDN} +z*EkzAmIYP{qf82YUp|piO=R8Dyu!$ulbCFJ3=Cz{_Ld9K5Qj9wyhkHo^V~6SwFp9^UilDjTWoy12eii4mwQJ +z*x4g{hJ}FIsm^RLwvZ24$Vj{<`3aqmoIrG^ZkI!?F>W=Y5WfkjDunqjwc*yuT{}@@ +zaXaY*uWIbPKvADV!0-`Z$oKi^0j11U6XIeYjbylV#k*ZFs4_Z$vkxPB9Pm958u?Vh +zjuEb3A3$r0h04y*kIE%V8P&HAkScI~%ZrU4Y*{r}(Jsqa!f9iileAK4y42gT+RNm` +zNPHKzaAV^bUTz(Oq(WrC${_=;ln-q*tlhEi +zUdnPRa^?%LVg>RR<$&BB%qxAtIX*!l6*FFwr(yF!d-YXCh%A-?PK;UM^y!qC%B&P@ +z&O9;gavH`LV$^$RI3*~Q^%~1w=P7G9HJ-Qd6sc+HB2xq66avFp3(P9w>*T0T^I>() +z2!(Yg{VPiYqFi4%OOPVVsuV;r?)Xy}XQ6fdEh$6)=nBeLYm>YbkKMJtm9UFb)1b_- +z)NyX(JDcp#A%$|3Skmd{bqCXxhwfh^08EQmJp07rwE2*DR574%yV)});=3-kMN(nCK7Jjq+HYnlo8A*Gud=G*l$Slz +zWhNmYmo=M~cAFTq39-3m`&i4;C}dA&*4dfMC(-Bcku?ws?D7;fz~`bJ#?+HZzM}19 +z9rZ&<$lr3sceNc@F<}&_M3o=wkv9K+su<;rpQKSAKUu#6;i(uZg~ho9PY5T}63kP@ +zc)NEy|?)L2ZcOC|=r_Lu?-bQze*!wyONXVk81PvHh-l~lngT*fu$#bszFuNBOVtE +zFan2#GgD#UG##GYJs=rBo`^L0!gQehHW|yrOISw7R~#%iice2l7mzRC(X=pMM{S{; +zEL$#U#G~w82W&ub;tZ&uYNF~|)1ej9Kjj-IB!lL>g65BqDPIE&cProUg9?Ih4R7$L +zG^O@tt1xU*k;ZU9VY_VZB(!S_36Hh%mJFBKhrNg1W9{^sW6%De>F9O@>9AK7zsAl0 +z5t&5}+2j0-NhH+r-1kY~nER&6IF%k1lLp*E1ngA!bb2}NECnwNX%SY$9&4dPsORj= +z^0p#bADV(o&O+RL4S0zv9}cS!W08#o?qs!v21=sz;wig$NCrwyCDzT$r7#Zp+bEWS +zltN(9^8p!QTpb9OZW7rUghDOAw@gMr&M%Tcv0LIIrtqMHblIQJ(HTJ(;koxHO)Z^{ +z+bXoo06+)B>p{cq-4|?fk;`j*oQ_qB+9;gbr&)f*s>+;Nwzvv+*4#sE!%t{^voq)N +z5Ln41_QK*;qFIzq{bzolfZFXx&wCZ5% +zwYf?X!lfmAPTZ%(e7yte4{rUKM7KmXI?)9gC+27CFrS@Nt~*XnI~JxLi^wc4XYM7W +zzEbszYUI4BNd$>NOAXxoJDG}e|{IxYt@s3Oy? +zaRgT=3)ZzxGx&COyWRhMdBJxYkiyjhb?GkU_@qsAMrB|YSy0E}5ePt^-a=TZ9XiC) +z+Sf7OZEG0PVqHxe6N4_Rd8m3A-4&rov4U+Yy#yXqixNCtZAx5elgZl>n0ufttgRUnGXS2 +z8p7Iw&|0XVu*vL0#wfOMubbhr4eH2i#mm?HNFUW*;}Gt7Yp;kc{IOj)39Stx +z4SW~Zp;SA6G($2WXgA5QTqFF#ecIXLD0%piEyEJiEs$!sw3P}6>nl2Fh=y2GP(>Ik +zMi=CMccWuCv=mwt*2t7DMFqWtf>V31$61He?G*l~+)P~<`ZAw1Io&ko5WQ7-!--&G +z7>hq`AD+b-vqv!WJuy?VF|n?#cM8r02udd;5qVpn54f<&tH$`BzV>zHS-a;5QD}&7 +z!b&hdLv@?^

Mjx#W^RKl(LgH|CK=#o(is6u{amegi2zIOorQriX2c_A6 +zNSgg^X;ky}vLd9Ok3!nZijafTw3nqcrL5e>mZgghL2Gq0tBWB_W#ZBb;%in1r*iG4 +z51u9i*P*1&y0YG?>=IDDSOThYOF&zx^}s`3jS`_3*k?6rd6%sgbHpgs^f7uztDg_X +zPw}Zf(P`wQ^!3pB{IVnjHP;~<|8hOS9o!8#%vNHbHz>z +z;bx#afMPg^CktB33x6uxxbm#*lq+sHDV|OoEuw%oB^k +zNfY1a*gKV<$o_S|qb`6b4H8|SwN6z~n4aX;v0>>aN@%wL3eV7Ghoo +zE0KHv%lVVDdt2XlaVnVO@XnFo;#BaWRxnPHVGzG;^tn9}KEGp!&gs+)kgW!^QQn(ro4Eh(5?sVKXS+Mi%9r%NMl;cFM^B5eo`XFE00<8eCs0HWU +zm>w_WC0e>9ne?E^^57;k^CjFdcs=0;JsB +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 +zw$jJEdnL&i +zx+WcWm_{(t%%+^P(na{^c5b=vf#Xg*?$YKpU1t*7N$V12?B(st8keLwlz$Wc6Uk$C +zy1a8v2mSN#Eon~2c4~V$^}MWcIyKtzz&XsSs5A2wmwMzHJ*epx-rY_w=pU2V|JHRT +z&BDfPLheU7moN)&={%8{qSmU-Gnsoc8LP|EEsa}f`8YK`;MhyZ|4gTuLrv%4qrLpQ +zxtVAIwP!BxrO)?L!*R+zk+-%`AN|dw<(lJiYprbO-2?R0mUI{Y(Kbq)tx@Sbi}z1r +zcCiZ54g9M1Wpq`hX0vAa%uda1<#rsubJ8+OybCR1m2}PSI0AK7S<(txYLnA#iUB&Z6Tyq+XOye5nJ>$jf +zxrR}>nsL3Fn8YtB$m254(JLwOGOwLW=^?O8V@u<5moPV%qfwsgHM9lSUjEc0F`oK8 +zjz9Xi*@50YIYXC7x8WaBg|xupHDrnBlL92yNIV+eyQj8TzY3t +zccMPvpT-TU4`nA(-Q1X)&UfCi+ApFW7tvp;kK76s7PzQNBcEnNgoj)Hn0E@F%_KXK +z+)oFR=hMw9t#KK3=b3sotY7-HW}+@lK+i@xDs=z}Xrvl +zG}8>+GjQLI_~M>{>lo5%SLjTK0fz%eq+|J=LD&q!W)L=mu;a+%_Pl$0;_l#7M^fHV +zxMl%Ir{hU?Jasvqx~T6HB{j)CIk)3@r@VPQJ$x7-%&)y_j?*>M9SOM;aA)$n3vgFL +zIvsjP=Xp0ux;rVlNHG`pJ@R|=@ZS?Snp!5Hf%^nAJ56W04><|f-WQk;ETEqE +zBd`0D_5r-}K++$E`y@&|nfDd~iwHX<-7TF;`qRkgLBQ$MK>hS!;34=Q3Oo$=!>Q3D +zc-|NPeR%f_YS*3SG1r=DF|Y*CD5yV{Qrp`D320E$Wz=*zy|e;YSxbKw?p44efwO^Q +zfYsG_bfz`9&jHo~>nQJ0w04HuFe|MmuO8B?>+Gx1vh +z&4zP +zu*Y@1pXcjd%Gw9)2ObYR0eB*5o&-FZ(eB275pXf^6yT|ZKMh#GEa+rLJe@SppkB`e +zE@4(^4Ll2YHtl&1@Lab`eK{jN4|qN^=14$$V}qIV0%pzuX3h(lIWHpq#lTAd)#Ii4 +z-Ip<=?ppO@^wG;5Hv`NwBfSE6CGaZX)xc|j*8;BtE(2ZpUa9mH5knw*i}hw*&8>E&oT|j%Fsmla^iqybHJzcsK982Y4^=KH&Y-&aFz%1ZsU^Z|&;27Xo;5gv+z#V|&fjPh(fjc#pc8_2G?grc)n9Fn{)X_YaE#iiInN1Q`sfmN +zjiadl0BHw-UyzUXnf7@q8j^MrzYW+{^tPCbze2p^Kh$=o=@BhfCIn_Y14~% +zz8H83@KWGqz{`P4-LLBFN79Sx>y%zW`d0!A*oBWL>{ShggPTeJ8sN2*q49nl&&z<< +z6ZQt+jli3LHv?}0-U?g}ybX9e@DAYr$ae&ICw07{v6>lM=56HpF4ENd_)7fm2Hpd_ +zlsdeZ=lg*710MiB2wX*89|E>gmk$H#gV#06{L#Fbkv>A$M}dz49|t}GTn&7Z_df-E +zn)g2gd=~f|@Ok>Z&zdXMeu^j+$u +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 +zNN4s_()|qhIdCKJ3*eW)O +z2;2#{GjJE+uE5=R=kCB<-1h+H0rvz>0PY3c8@LZ}B5+?|KCl3|A8>!*0l))!|0Lk# +z?#{H3x-0@t={}}$YWH!C)4Ffpco6>6iF;y)DQD6)h2QCD50TaL^>8E(^=D7#h3+(H@TVp?M +ze>~w&0G`-=8uVGAWrY9!nw~`1le=f7i@NXLxVZa>^px(oji>Ui_UEVZ6b+}olug9k +zhG>#|G@jmlhsHBV`^@e;H7@B+jXz*@^epmtHt-zYc`oog;-3$^05|}=5O`7dru1Us +zv@gAcv@h+R(|B38_*2=x-LdiVZt+lur%SubzWa#uitc%hS9XhEnw4JFePeoc_dOf0 +z>4u7DoK|+;weh;{6B_F8%V^*0fj0ne1l|O^8F&luR^W2rZQbkA+e!b9?t3-8gM}e#8pO5kU +zIDj@heS-OSHSkH&ev0R(fzROnEbuw{SF(f8Dwbn+KTr@sCY;a>*6 +z0$dAx6}XP{Ujx1ld;|C<@Gaomz;}S_f$sv}>%MP8e39no_woM#_#u7%BjCs6a|8aL +z06ztOM%d4J-U$2x_$6=?@T>0mjfdNsY5{w|tn_Q%`wj40;CIBAKKVWVKLFYjZYHlk +z0)GPjOglabTt&=_y5^<7bRV1kN}lf^?ca!xxrN;VX>I}j0jR#;qn~BN_)p6C7w~W3 +zMrPepdG8CP`48}4;D7i@CQ~->6!?#)L=!uq?;xG9M??-W;{l+@Bhri+nqSQ{lkmfU +zMI<5ZnpQ;K40Hg1fsD+}+*X +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 +z)Ds{4E~|Fzf=qS2eQHR>4-eKGsc|p{5DWlRt +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 +zeW5FzCclj~Yg8|pw^ +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 +I`|j_501e%aVE_OC + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0001.png b/themes/spinner/throbber-0001.png +index 3819624ea4e32708e4964bd9bf052850d51cac44..6a64683c32c8e2258a59d2168e4d56a7b6ca86af 100644 +GIT binary patch +delta 1562 +zcmX|>c~nvf6viJWAi0AIEiR#%6l6K}0f{=;!Z2CI<%u1TSCtI|ScI +zFb_G*4kc!CK!8LF{B*L;i&2eI(1UKq7LSp_4lN3-dXP)>`j=9`md5|)3PUiaV_VC +zV>R+bY>XZ+Moy#bFo*BR7wB0$zwbMpSFi2x82@1k&k;e66HrLdGco=TT-E`ixhGU44^JZ5ykIL$ZL1Yz8x-YgOc+ +zB|7FM0aLB!qrvQh-~E`Yz35+0e0|QaTU(mF5E-&UnTYMA0z=UTRB*Pk`U&|>sncqg +z0}KY~EY<|sRBYEIPIoA3yt|(|IY7#twUj>^3Kpz_9bdCY6EI;@+?Kmd@cwnLjy^Mw +z&bm)$FKMkGWlqrhLRi#i!|12I?LM372*?eI=tB&Mo=qlkCu?Q%l>t|VJVjqs_3Sv= +zuP2|by|Kk{tN$gkC6y*~M?-O;pOGJfeNb2O&qK8Ze_mU<4R0OcC<^T*Bqf$$Dw}Ww +z^sR#&>*Z+?UOg3onn&phSK>(ci_&+9X!Hwpe^H;ss=3heaVZBa~S*?uRn(dD^aq4q+LAp;);Go!ES@J{e&?3e+34J7qqh3+^({(i7~5jJq22Ccet-#b-S>Fq+nMlG +z@(tuCt7fffA?XUk!F$h57@tkcTP*AlrMIbbk+E8*^YhjsE!f)VL%eWMjqWC)rR_KPqW@rnJ#$57_C2SkQ# +Kpw)$@=KT#mVYO%g + +delta 980 +zcmV;_11tQh4Cx1uBYy+1Nkl1W@lHcX$V4d?vpKfj>Ka>>+m+n2K|4V7Zrp+5rx@AR +zGNF8?i|5syZGYE+>4KP*T&2HZ`;_g|d3O&9E5fybP1_5SRwQA2F-)(A{S&|nFc}Bd +zazC2L?*NOETx4b%xUaDJcc%koR3pGS+bdDDVS73Fwt$wTrtND$P10H#(r%nwip((Z +zK!U5s-e6fhDpQn~C-b87d>2>(7J;FEsiCzV92kkA4S(Rl7#_^sP_layxDkHs?S!_+ +zlCH4|-+W(}w0g)cIRRXV+%PbZAm%%DG`cXqX?s05SGcv0*kLOu#(*v0$3WRW(kv)i +z@$O-x@5tl;uqtVH-(eJ%cI$GEf@Yrs>pXC#C|4Ch&r6z@?Q!6Is=!?w+ySmh+C1v0 +z2HpsSbblDH0h_?(M(}FqQazegy^jQ(2z(`nTsSiXoKWFyuR+s11_ZOfY*9@VZTgRp +zb6*AZezzXmGqxX3GdlW4RJ700qw>J^6TsVPLO%na16L*O9Jr8Vo=;_}Rm5x@VtFag +z4saUS1|AK`zp;H;(tOtpq~_0NnW$QEErVqVSbs=k*_E`>Bl2f~b>Mg4HQrQe3r-u1KR-bs_j`x*MWC|_kdqhlJz*UhXc0~ +zb$=_RS8g(Aq8MOP(zfkqa^C`;i=m%@M{@s`?RO;I0p@If3p^c&uI|~0B()?hNxEGc +zPc=*w^}Eoqw6?PoYy%$_JLHRT?7tx==}Sp-B3}Ss1@B?t%?zc! +zx8kxx-nC}+SYiP_F5rB!%tF8a3#zl+qfPwO;ly{qry-m&bo%>imaTR^L|f@Hs(THo +z4}c#ce}#K-Y`dpOg39LIllaV=_-N*B~dQhwWnAt9HjBbO*8Wz(`{o3)F}BYwsrrwBWAA-X8t +z&YE+~W7ah15joCDNLx~N)Ui$?xo7B1=kk3%-{<{2@7L#fe?NbGpU=3#)g^@+A;5?g +zc#s1CCg{bh2V5>+1pt5-*FTCIK%-LtkebM#fG21S1}P5Yu;ajZ8W&{IQyGaoE*0cb +zDGUk+LWj5|;uHaCjn!$AbhXYdqfF+1Y)Y+Y1O8 +z=BR60w%8OwV^9Db&i&sa@P18B(J{ksv#?2vkkCoLh}3z@7d>B{#U=s&h$9Y1IIA># +ztb^u@a9DovOyb!cc5;a9C6R +z@U1l`vGwQ`N)h5~mKtPX9s3Nwx2{Luc^1j*F&hrJ>vvlcXi27@wZi|H_z)5aH5r8T +zF&7nI<`n<5TpB-Eu3>n1>W)M%_q<8nHPGJh!Lqtvb=j`QS=7?pe@eggS`0kK;bnhf +zNB!rN?b+uf_ulnk`sutAxpb<`wsY-?LHFr>h519ny>eHDXFj$gH2PTu?CyC#j@o||TR8Fc2_?(IwrFX(=u&Q_x(Max>1XJR(-mX{&M)#;;VDWP9V;Wun(^#kXb$t%day#EmGFa +zydSYkeyKt<&SuBz-{(&&^r>VfyDp$-_n$*vbHvog4^ZQJM2I}Oczr0N#mV<4SH7Qb +z=d>g75SnTiHo@{5Y98slQ~a)R7R)s3_~hPSKV;?uVcpPO4eL?QFOm*BIPNtpZR${1 +zng5XtegUCax09VV>~*z*xiDo-kFoT)k8E@LqyzEIhNL5P541L7cn@$(y};diM(jtq1qa8jMP`4W6f#(@RXFMv8~y_XuX}wU?OWGRT5q +zlVShX#ds~sa|sjfx^?I0HAkI`OwQ&n88&~PK_7$MNhYCXUSykKOo8fT*8Hs)ld)P@ +z^Z@3;p|q%F8uL62fBTW@=H7|g?g)oWL=sh_|5DyOoPJfa)Rf;)EPJ}XM$T<4%#GSw +z$F@bLu#krhEaLQB`H#1^A_i@FG}OFLaZ=5o%Y|UK&Krsl=@(9mRpk`8+C>D&l2Dg2 +zq4S>)ih-$;!h0UCay4?V7wf)bR+GbmdpCX@iGz12y~EA4))LPd)IQ?HyV%<<+W7|V +zqcdrU-zcV!N3Prz(oWYo;B5S(dRB`EZ3oN+X5*NYrVY>1s<^}3P=%_Nhp_p< +z-Y4){RYcCCw&Xdfak!-92(n4>GbdfT_LGq-?`!qmiNyK +z8jf}RtaTBS^OXEH2sz8lvQl8x6){0unuM|FsCw~gtBQdVk)p;Xq^i=}zPUNRsa=67 +zUSrp0DZbsUwr9arH>*bWkf&Qxp9WbbDo66RcTF*8VSQr5UG0HhB-$_W(8NZ2OdXmC +znEvHG$QKrQ6RHR5vC~Tr>m|IKI%F9#eY1A+}ch4Uc%AId)vidy?%d=QO?5sgpZhk(sN!5@Y>4-9h|}&S9H712nh1u>nGY7oAo!e>B7|j + +delta 990 +zcmV<410npN4D$z&BYy+BNklcYLaa^+6kxG8Q_D$<26#a)rs3$|!)7PPjhxy{5}nwfcAcs_ak`pqR1 +z#21G7=6m0Bd(Lytc?b5eY}aj1>_vz6V0;=l0(5|1B(+A-Q-2*`Bm<^_3|NuWNw#b8 +zJ_9C!RzYqGsFcVJ??4zo63^qn^`ehG +zYc-HieCCq<{C}NoSAe;Mn7Lf8ziRuS?L%?)4ie^s>jIm$Z%A5`gzd#(dL`ID1*`#$ +za9};&*CO)Uz@j84$jku;io~pzpdnxaSg^eoiZ*O7M}9j%M^el7B_NZu9u27-PA-Ma +zKH%=8lqnKZDMWF&5so?b+rSdA2;B8IHMHJ?0~6uE27hok43CAbERb0Se$UZSiIT~H +zYckJod|#H-9I{JJ0rw@c4o)me+UVPe0@^<#&w1XuyX>$#0dob|j7nO~qaJz|B(1nT +zZ1joj{@j6nrKp6ZWnIodbJRf-dJmKY`j1}Ou1CJIlHRU>^OB^^T^b(;9_ll1I>41` +zu)G@%sDDSZs*C`@SVTXb%oGaWV|fbdJyHPB+CvIvfSJT#YP=cc-B&?n)LW13S=$S? +z$40slCGE4eTOQcHA2<;|e*?Y)u9Q_nwZ}Z4jj5Isv${(jbOZXWm@kKci?+X!^hYTI +zQSEqac5_m8W+z!2`C7mx`NV239TfkM|S{OeHyb=2i +zVA}Qzz-PdRwjYZ~>oKsNwSAAI>%b?#sTgK?S+>hKuoB*NqV!V2ycK!e0e%3!2i^>l +zZhr%h10Mj_fO~^Ouh@QH(hhLm_Eq3$r0DV;HzG+LNlTJeQ{%Q@23`s-+y>r_zM!PR +zWMSx|IFkWS0FNa4Hzl2wbRpHB4JfBW!0W)iKdpOg39LImwT$Wo}#0Xsur)U?%OwnXX7kAn*#mw4VX0uHu+HYHzlbonWTB!-q +zJ(rYQ#b~Ib9!YE`rYUmINYVXF=kk3%-{<{2@7L#fe?QOnkI%gBIfIj{K>)_u_8SKP +z^x+Fv3&_7<4gi1`mq6rhjZ35gC_0ltMa9Q47-R~H!=|8UaaZH(9Y( +zOSc#sA`@cg?76l^KC+9d$m1dQ-uAeqwBYSUf!=z*$mj{Au83aV>-Q7jySa8;R5qbr +zHCaD#SI(GXUgRcg&VWi4jSn_zF?%pGc4f~igndJI`Da;wBCf44az%IPO|PU~jicOp +z=&n2m>Z^^tC5XJ-M8_L&y2VFFZ0{#nEf=1scU)0)>_M7e${)&&dpr+7li7!Sp5<1g +zsI7UhtE4BvZJv>R5Kt^lRYCmtzjwHlT03<-iK#bk8!+cBkA#B4A3MM|^Bahm@YjU0 +z4C0;ZV~^g3skLhj3l8%sU3Icsm88_vB2BGj4zbNyJ6xu`7wwoff@nTdnH!1h&d7CdO;vva&8-$uoJNi2wZ0m-3SAqI +z%B7Z4{R0*m+l$B5TkjrQ*Ae=#88L6d8@RvC7(ap(Eg!ccYTfE>7M}_bR;i$8OS;s{ +zR?A%#riuz^zb+{7@~Alp3cfn4rd|Gg3tene?kkpW>Lles!=tpAqA${_4wF9oce4zF +zU=vS&umFU<2v3;|OFd{k8qz4Du?`e@cnZ?1`(tgysDnz?7WU9~KLlwu`BciDI=;4N +zC7*BC!3h6uJ@FztKCmaEW@gQaDMk6%=WPY)@cH38xU-^kX{X1Li_$}hJznXnXoijF +zC_&|?58ij)@mJS7fsWN~Vdk#zy +zjAA3IfGmsbhP}-RjuWB`{`b=el>z*0pp0*Pd{m8f%2T``*npFLZnBJ4WqU)oUur|M +z2vm}8(WZ3l)fg$Xp}8oRj|%K*g#^hegUu!xp#!I3^Gi*eZN&&Ku4$avqY+{uv-m}$T0;Z~gX +z9gtYwO@6rm_G5-tk!#+`kpMzbQ9btk*w@+EN +zmz*C#nUKGn2;n6#(gfB11w +zeH7iIE%Oq*(6m+a=T_K7pkwnWQ6M25mgsl%dEa*v3z!Wb&3us-UM;pZ>yZ0aMv{(E +zFr(`#LQvv*m{nbi;={LmZr{#X*~N3fdD`N@a?9d-7QByTU$zWo;l4)1%k4ucKGr=t +tMFGWQr-ooyBXqTIYCy(aLeJjOsFF%|BU3VDTC?N;KZ3tcnKvX_^f&&1yA%Kb + +delta 995 +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 +Eg6_DwWB>pF + +delta 998 +zcmVmu)kV|)8^ +z@IupYgN)X-kkNf;k2}81`rV$uw^d^TzQ-)gd-uYXBW8CXq-nakz+E0UHaJ>+lyL&BVJ8PJtM}KVigmsl1nH}Ix9-SyqQg^uO +zd4B!>dqnI{SS1&Mi;1kviAF?pMiwH6_Alo-&s#QSg*|eZ%RtvBX)pJBs$L*z0noIy +zUef6tz^J1b{`f86`5~abiimHH(Xi%+INFSeR!Djc_!Kx*5bBDh39b^V*O` +z;8lBm=-(0WHSlpn{3_{9;C*0Q(uWc8r%UdMh`4X#YnE$7#BE8tuBQ2XSa!eZ7Ink< +zq+?wJJ^_A+h@PbLz&j4@X`m|UDc}mwlJuonJ?|-KMbb`0bR}&Xz&Y47{os+cb`rnk)c53_S@v9_FXy3UW%*@G5Gk^md&tHJ=BVuFhUGG6E@8#3exO>64o6%3eM`rfV +z1-&Bd#9*_z=>~V0PR3IMh=>E=+acS(0Z;h7F(7wjKKy^TW0Ulv+x7am3&^nNA1wRc +UOtl}>1poj507*qoM6N<$f^@R!ssI20 + +diff --git a/themes/spinner/throbber-0005.png b/themes/spinner/throbber-0005.png +index b78133eadac9b3caa4e6d809194253b0fff35f47..3a56beb7482ff40b652972de1a4b8abf25a3cf2f 100644 +GIT binary patch +delta 1569 +zcmX|>c~FvT6vjVI7D01OEio-kyh$u>k+fK8%B{52O0sgH?-dlb6Fe?$oo%;v56pOe{A+MBYl+JT$F!|00cb96e@{AA$fQ@Q7FFN-o9R|x*)`M +zqJGGHZYZ3^1_3hJ_uuC|ELHXB8T#ifyqG!Y9fCHk(R&ti-bTH}ivj)-BAM(_@D|;! +zht_j2j0ti;KoHMMij4(%PM+l7xO`z~N3)(=&GAtEg&;2+`hO>p>_ZQq7U;R<&+s&6 +zBFJ|Ni(zy13Q#<#ndj}?0l-K>_g^0#VJtrX?7&{o`smq>ZVl(1eh+f1MxJ&%jF3>J +zi+s&L=cK3Gt1j^r9M~_@l-Pn-Z^e{9e9V#bH_c4xW +zZ~TGn|8wF>(u}%M`$VU&-sjJsi>h$>#E*(P@nLp?NV)U&0jrExEL*ZI*UOS}Lt&Enu+VJ3O4I`y~sOV#D8>3BAWe8$cMH@0;Pv!AZ2EAEr?-dfqpLVvR +zS-q|rhSQ=|IdT==fdHvol}4A_j=|P+LgLGFAB)qF7e24W*JpCliMmUhELEbWv=KR``1X5ihY +zwb*e@JraSanoU!{-dp%=?7k*-n5oifBo@XRWWajIFm +zSdQjSo}3_vUu4dI=ktB+ZpyPt?BMvtmsd*<(^4!e +zatd7nWeKsPv1Jdw2Q|XhVNqCG)Eo2hiSG^&HP5qrKxFi3x5VWOp`D}k(v?-c;Yf1S +z_+M?G?s_WC^VLQ>i(doGX4j(C9W_J8*Q7>`c6S~t>kYitw?NslS)(XPfFE}rkxn+_ +zCo6$RqhBsavk9<=l_n#}_Imbv=|TbYy4~jq^TItZwi^665EAEFsd#p1Q38j5XdL2+ +zD*N#NR1H-X7ALAWvnZpGeS&75 +zhhy4mtfv+!^Y#PSpg`>s8X~anuFkwTcEIJU|SgcurSHMp|Y}a +z#ZsYZw3Tbhazz_*+=c>4yKX7GGduQ~a)+?nyX>fn9b7wt!R?#3eGMFQ0;tQdy)K+q +zE4M8);B4LcUuGBTbcV1l*^3JRhirDzp# +zAu8fRLF&eZ8+YBhbmPC^qTou`QV=&51))g6A`}WmlV;Oqk|von(}^Z|=W)?9aQkMy +zG6TLa%*%W4x##OS&p8(ccx+GE9v|ck4WN7mSOPNOmZaT&&VL!|qND)K00m%MQkE>2 +z;(Gy@1a@T<->i@}+nm0dD7QY$NwLa59W*09)-86uKDD2qgyQZI^mTO$nF{ +znMS0Dehs(>)RSnHZFj@X$=It%ORaAMBsG9acwt~Fa@z@*Q%Te|I_3W%18k4m{>1is +zwkMK3)rf@RSAPzWk$ki5B2Z3%*_3OZKV*B>_9L5?RDR|4t9 +zK>swb1I&d1wfJ5N&-a0KNlqeD1}5^rOj9tPAp0fYqV0>eUzD^5Y{Ys7WKs8j0e{E) +z0dN?5HYL?}r8@9fl<{yl +zRfx!J0e70wQHw*)0bc-b0;8dH82C`qk3F*FH1Jd?R{U2ZE%lC7An6z2Q{Z#p_rS^h +zB)q*m2N6L5d%!BNnpfV7Clj_mw*6Kgy<*IEDMftSW@P&v;N@IO6yd)t>9+wI)EDjxyQMML^h +z(yd-cwU{HCq_iHOYjhn*Y`*}!A1NsYK8Azmdw+czA={+*MWAZC610BQ0NbO$XTZ5o +z_HU3$1^5}bVfz_iSJIsho@XIj0p=4Ov%sY7EnuzLrqc+V0p1P1{wEH(0$h@`V*3p6 +zHn3^?dr5a~pNQVD7kywUDra5NZQI+?1)K9>5qLD%aVu}YXdpiWt^q#**Cb`O%fM?v +zv3~_%#P&ictlM5r8jgTD+goASY8bE(<=m{UBN+HKJg))QbG-cqFcxbS;4W|~y5)Y9 +z+FHnu1!fj(uSVC~v0aPqn5E@6lr*9Hz~vTseLfhinU<@P_H8>MElINNHQ>pJ#7uO+ +zYHY}W&121kF`AuCQgahnNr);>v8~3p;%*>Q@oC_R$bA*~BdO&h21p`m{xH@`orc(6 +z3^+)7`*lg{UGI7iu(KU!KLogbZbmnOAEIoQ+uVv;vFTdKWZn3Fkjv>j@N|TGSyJ_X +jy&WgBpMvMz&l&##tH0D%gAyxB00000NkvXXu0mjfCVbv9 + +diff --git a/themes/spinner/throbber-0006.png b/themes/spinner/throbber-0006.png +index 1a12e8e8c44e790bc9cc6561bad7c3a6cbd12275..949cb23012469efb42c33953b5c79d5352ff77fc 100644 +GIT binary patch +delta 1581 +zcmX|>doK(35{_>VK68sXDbZG!^Op8hr5EO8|0`R +zTD3G3N@IWk8tw6Kxw3`zBrVhbc?+Ag1YH$6Q3$QKddb_Xwb&%!A8|yZodmD+A8MiL +z5)7e$Oc3D4vlGc=kZt9Rrm{Hv;3xOA9KOVZwHJcyP~QJL9nr4-q4QiVH~AT!Mxlco +zs}K@{rBwjqa5j75=`vL&FU&6dz28{?+t&=>h$l?dvP@tc*^|gAq8^CL5gH +z?`}zNeR+J_Ek<8<;`B~m*|OY&_15QlAT&Q1+8W`PpqqcY5+f$we4Q@l&B#ZT?o*$d +z95ACfcM_%=UUl4mMNr?qT2fNtE|E$zeUdCrAm?w1%9Aq_%I1!=jKPo9e?sJrkBt&K +z)4V8NZQh+FSw)?(c>z&j{{4i;B48b*((b3m49zrlG+nXUxpYK5tpnHSH$ +zS>30wzF~xu=$Gl0^SAMa4^5}&y_h8q8&7+s8e<`5T~(W&9aa}Gp1U_Gf~-5YrE2{+(_la+>%d3_)C0(7M?rxFeHzyC#VM +z)ba(xal@*E_RRx})=7}XkeI=?y%Xg8cZk?B$RYl?tg1WKk{2t!+oGE_^~LP_(EC+- +z4y^*i8N@f?LdHAlW=5L%gI*u@In2F2=#S;h9OG7Zmcb~;6bsv^ru5pl=$dKRbjhp>*Q +zO*XsLJKLO>t8T^5{m7e)6K15!Z_lkb-CQ-0uCtxL)r@G<;o%!;)IwE_@1MpNIQYC~ +ziWt(J8uMm?z(Hr$e$p=YnTw%NcHe3(&3oZ5==oVET4pw +zXV(`dMEeI^&9-&xV=A9S?(d8Oc82W8-Xd3qhLMGZb>mo-XME!gB&En9OXYl`cY9#B +z4CRp`0UuL~tGgbbri~-MwN +zJW8z}MNs?DhL$;N7G~D$ch2`1I-n96>>pZ+adEWh8NtWAan^M6D=w;hR<Xy{2T3Zg=x=FsQ^pbK-HL@psLEg +zayR%>uM7F*RJ|aZUCTTvI&cq3*0l_K^_HO3WNc&wc`}9mWxO-if~|y4Adj^))uw$3x`iAkOx^8g9vHBX6JM+&$6UDXH9sa| +dm=_}!fn5>3ns=i8I@(VN`1=L=*6fMN`5T{`)Ykw2 + +delta 1007 +zcmVFT4=)-uIm6Js;0`F6`lvv>>Uz7aOq$=Ldlkz!3N&B7Zi^*r`r%QUhKG=76sw +zVk5IX4^+Gk0GpX}6<`rafQ^V4mI46034G!AP68k1F&3PA2v{<>5zs7hP?-Rr18f03 +z;2lXX?jkkwz#)ShIYpEOa2dGjS~&u|FKK4NnI%UooR&^$01?pvE&^?!51a>Holuwy +zzP*6k_sjnd0DqEdlHQPXKG#~`0N?uEeU8F{!y8_blmN?_!fXL|GWM&I4oN!VckhY7 +z%fKhVXTT*%7aRqEPk~iO;W^+nI~X{}9e2gNZS{e*h)^ankGgG-yF=~)FqA0QFd4F$5VMZ>0@459Ja1LjH4d5%_ +zbKhbnBEBoAfx3IY3mgLuI&Jc0`)WU4NvZyAlyU?qOif6%4(0L~MqnGr&jAvvMF37vTpHabrs7`+>(ZMVP<%0JvGr +z5JpNa#;D?B~?V)l4XiK^t5j}%W{JZY`iYfOmNgE!~sXk1A2hEPnJb-;h*avO^KU?jN +zEPt~eu{;YPG0Cj><~K6~CxF9}ng({u0FIiJlxg=J0DiIa9`I*G^lcmq(v;(SUdId? +zw_3vhYySVJq+90ywxo`y<1pKP)yxpua<22wvJY+8%BrbUTb?wGCaL1X&S=|qUS<`DSlsgiM`u1Ozsdkei*f`s^J1a^ +zMArkXk}tS2Uq(&qzU{2S-3602T&TlId|#b#n-TC&!S)@eD5cx%xxu)C`(M9~Gt(|H +d&#R1$e*tr8%P;zNj8^~v002ovPDHLkV1mCq+dTjP + +diff --git a/themes/spinner/throbber-0007.png b/themes/spinner/throbber-0007.png +index 315077101e10db2593fad056ed17680dcee09e2e..14d8b45c0084ce927e17130790c7328e8018b91b 100644 +GIT binary patch +delta 1613 +zcmV-T2D16?2i**iBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdH99mo)_(<2E&u=k5OhUYbW~|= +zWdJZRIxsLgFfckWHwB=B_W%F@2y{hQbVhPvZDjy3H=zb>iU0rr5p+dZbVFfnWpZHv +zLt$-Ya$znoFfxnR2*m&Z02FjZSaefkWo~5vbZByKVq#@-ATuy#aC3lC%eepm026dY +zSaeclZe(S0RDWr0WdJZRIxsLUFg8h4`*Z*R01|XXSad^qV{Bz}AX8y&aBO9B05LK+ +zewG+3000E`Nkl13M6o!*alv1>m5~5^KqDT>OR5}vvplAmU#EFXJABckJ +z(2)aiAUJR$4jgEqpua%y14MC9P(h?f4Ol{3YubvHwtvJ>Z+xD0&wK7ZH)&k(-o5tP +z>*L*P@3WKn`T6;|?d|P3MLiN*=Iz+}Y1g;S6W`Xa^@+W&p&>9h4sD{?G7>y;-7&GP +z9$Wm|`M_q97}O)Oo3)R}<9)0j29JUx;6AVgu7Nf1Ggu#uMw@N?|L8l9pba459EFz{ +z9s{f3D1TT4cXzN8V{jW>1!uq~;43z;!MI~1+7#;y7PI4wI4pqU;1u`+Tmx6YP4Exc +zP5#B`+Lz!-u#kL?v$!Jx0{4TL!1v&H@GH0oByb&ANbDsNehnM|b!S3g(t~Qi@Cb0U +zH3xBc6}$j!we7tJECA13+o5jGu&3N&^*!*WcYkBna|bJmoBUbu1n^At@$yN+vsOO< +zOm?FiUAvR)XTi<9%w6(G2Y&sBpL4?L1Rk#di!1{PS;*qiy=Xsz^FaGy@Dw-+ys*2; +zpBPuE^O=j*lMLhZ2ryXmZQy5St7R|Jb_;(1&T1oeOiXo=x#S)OuY>2iIm1A{W%e9# +zmw&CRj5-$epfGL>eNIcvArX8wFuVm$gW0=bja81>3tc4AKIe +zvX#P5KDAsN$6_u)#0yrw5>d~naW|cqE$nB(FSxkL`eIt&_7Ymq^GT~b0z0v2af6gL +zI3%)G4&9Ho_!!M>_Cb!FKG+7)~>578EY~#PfR^T +z-5t1q&t1T8)ZN<=kL4k-1oo74p?@XT+6>NGo2Yiyb-<#(fh)k>+a2MhJO;_Su-R#L +zkRq99jNLIYqHDLX^33Fa2|LWP3X($E9p^O0?QrTtuLF$l{@1X +zRJ&(1)=TdDp-(S4E^C6}gQ8d0$`h#f19xWv2}szYc1B5J*Cf0KsxV`SxK{4~W8Z;v +z!sI1k<;YiI;_tvZP&b)RwSUR{DvYzBHg#d)gTQX3vtGt6A0ccdZdhr?;q&TZL&gHj +zU*Uv7)msMwdv@wNgGE$#CK-2U7pk?4l2IHz +z9!XgI7J0pdsMAfUYYQ3l=_HP`Hth;`!!D$_q$FbpgheH>j|ADUEchNtpFZRgJ8=DF~Cd*>tL +z!WRZE^WJmbbDr~@=e!sG!;pjseg?*WKPnXlHQZlENyQB +zv%os=LdmWsX+_dKlCn`})W-z)3UC3K0UiR*mtzD5K$QN!4`?~T0nnKW0pKs-7SIFU +zk+fOyPL#4=1XhyZ@~KMzTn2ve^9t~Rq?r-|<<&B>0UQ8_QwIrw6y^+V=3lYa?6U^!0o}xZy^5GA37-W% +za^1EheI5~)BLYdEdA|ib1H1}+1)KvGf$t=p^s|85z)nOcL1qm&Ste#0zzlH5n~wk= +zN_q~s7!g+_eF?npa_mOLHWX9S7bd@M5?41cp5m2h#!wRE9Q#; +zMzvxjuzx?C1QZE$S0du-lmlzo%&$sxKOzo7(qq8830cx0GL!Jrh-e@4@EPFo#BVwA +zKCo4{-X8$-iGq;?b8CX3RkgBGGFAIoQG(OJ{UwbrhRL;v_-)D(ECEYHwvSBikq+vT +z)+9BiIDA1;Q_|>pGs3|-aN6?P1%58~@Ce(6ZGQ_<+A-+{V=p9FG(= +zAbEem9kwUwdPMXp5%7e1)B~p=UvBxl3AA0${xBq*d12E6PB}>>%n;xbX^3**pd_Cg78D$P&(p5>Z^W*pRes +z{oj{#=;@fJ?N?8RQ0`h+$!RkYsCGo;lF~b27^${LcFl+F`8U-6xbK2`#Wib`cof&L +zVwS9p`z{!FD{fc^C||RNTw-z0_l?e?(Ndc_fK)g-lL(RD*|l$#d>s4Bs0(bDi8Fzc +zwoTN0oZi>RWHYEDP7>T|BDbkse}vuSH=+rrU1puvG(P?T3%S<^p?bgx00000NkvXX +Hu0mjfPRP^o + +diff --git a/themes/spinner/throbber-0008.png b/themes/spinner/throbber-0008.png +index 4772a97a9b43fafeab835f36a369012f6b7d3365..beef391370a4183ec221e131e4d06e60e1792919 100644 +GIT binary patch +delta 1588 +zcmX|>dpOg39LIl{&9rm0O(-g{5^6V$G%A;D>EfD|+lGmN&aPVC6Zb<;W1ClQW&m=lOn~_w&48pXdGg{Pis`=tP{h1_3ySa)1W_ +z%g{@$16-&y0{~zf-@wm~rL-BkZCn1%Uc$6Q9s +zOdgKMiD$E!-2W6CmB3`jLg%8nZfs4xQr#}LTF1e*Luh$&r@r08Nfe+#p8)5dkr3I +zq45$7jApW#06&hK7!}3jS~}okIlQcZr)^q}Ug81T3z^&?@c*4yJc$~#z}Irr_wdx{ +z1SZcikip_;6(A5@j-55L2LQ+*)oVu(4W4;+M_iTn^5cuS8|_*s8=cNfSYI_pB5lQ` +zqkHZeM0iPrvqDS3a*=o1#M_4zs^DqN6|09QtBjjrNH~&fcNJnA;EPz73vP4oiXCn$ +z#eu5@GMU32hfmMOTR{_TZOG5hM|-=WLf;*&|JZz|MXr2(yRotGUVoTHPFnbASRq(t +zG+;&K4JMGx`R_}{p8if~+0R8i3-x1R1O;EVaFCU-Ll5;-krMr5uvU7KGrZhLIbL&# +zEWF*n2Sa+vQ?1~@>p`JUdk!5wmXevTah*eC>|+d^@`QEQO_LRHOq(@+Zq?5Sj3u(P +zVcLJOhAz!vyiKymifqrPUo5u3V5g#Wm0uv&UmFfXnsRK~*Wkabtft-bLFvAhb737Y +zRiMPP@%$HKxGfK^A{TuMpCID18_G`K?p`llElJCqEe!`P*5=glA6XR_Rt&6M5es$D +z$l48evpwwhi>FERk?oM=pEBX6q6tG=RVN~;c3oHAbQtNF+{>C`(H{j{W@E}EtLNZf +z4Ka*KTLF?1mRUua**sbQ(J}IY>FhWF#q|eE5M*fSfddB@Ve{|l=rL4`yy~(0t~slT +z(IMcu0-Ury-b({Rb$1;pMC%c{Y+8iuqfqHzCoc6k^+dq7R$lAeP&|I98Evj|n?SlG +z4fXZ3`?{^QTX@fgA!q-?@D_tBF?E)Y27?9_Uy0sgJ09>9D%;5$@un*T`ny +zzL35dMK-lHd&Qu>bGs=dWUaU^#5Rx8nLc6;(krEcwrh>1MOlX2AIrlkg3~n?AT*_3 +z(sU%6pV1&zhxm{lw%S>5>G=8~1Nm7dKqw3)Ty&_kCUGGGwd$^oOG)`HJ?f0vdl=pw +zx-8vr@#SiwBmtk+Pu^CVwx2zXjXNUl+$&ErP}|R&{Fa>9oI=pByHfd(K?d>S25?4) +zi#?ySiNq21`e*Jg$UFh*$tGA=Y#hF-*V0jatn22t`YK(NG;jV~c>T7*!;=@vZ{f}6cV +zSVp3BENlWVVXBJ*Ijg=l)mkZ*gEvUxw33032lQ^`Uw4?i>m~!U3iICP-K~!L#q@ctv_G;3O{8UFc5a5 +zmX`8LM`5tQT39797dw{toh!KgDVLh3oTh#Q94juGg;b{QL_5Ll6+@4PISKsM9SwYQ +z!KUQcHj!GKR1~>82DBwab9P^5l2b|jPvW+t_Y9tLX?5)i_i)aJj8Vo={s(O+&6i^2 +z!TT~kpS_3W9D1k5j(d@3WtKhx%F(Gt0VKKGN70CoiXBPsi?TrC%av|5Ee0vpfA-d5 +zS3Zu3Iyd4AJ5Iy;9ey^daP>27+fH>>XVi;MQYua8#@3q6(BbMcvX`U?T4}6kq_3*& +ge&-95@bt1pKqh}8R@>M=*M5iq)qAg3qX%91H~0#}KL7v# + +delta 1011 +zcmV9Ub9sxpw0udxZNDzWV +zMMMEY7RnC@5(NcCegVILl8yqUhlYX*1wsKRLVzMf5fm(>WNZ|B#zSn!o|#3nE;_oN +z$MvM(N=I|&-gEYI?X~xX2e>4?Ch0l;k4w@8NjD^2mvnwoIe(=wN~R^fF6m84Gr8Ai +zfhk}ScqMnPCh4N2_ax1Y(oq>>;LE^e;1KXA@M-RS-z##@KLS1gYQQdVWugcG+rWMQ +zz9H#!fz-STT(n_(Kzrg80KWo%SlBGEEUB8?llT68r=<#f4P2erfQZ-uJ_kCE#EZbW +z%vrDhjF9veaDO35%_kADS;zoMRY@;MIw@%?+4G}Umg{#VP5Xb@t8cJ<2s{K#1784N +zCGsnh79<^&R2~GvXMlHnzb5IMi1;lckn|<+Ja80v7B~-F1D1g~;Cn~roTG9F_&6f= +zth^31Y+T94ujdV@ILvtSvZPbMcMb#zO}IFh`2GN0#4h2YgYQO!6+NBYa{POga#oP +zNymXRzzNrX)rMS&h~Epcwi%-ocE;aNZgNzl>_#Q!%OWa?Y7S@5@;V=75yI5sJozk|<4eXurNHo#A5^l2Qv;p^T9Q`tPNY;^^3=0nWhs5$1)9$1&~(`I +zp3f|riYp1AyQbo1#to@gbstJgW<8@%NsGW^Ku^-mh}d?im3?1x*h@ZhThfNpIG?oc +zV}EAHeciB>w8{?fH?SEIa-%wCFDgLU7&&gwZzT~6;E1Gk8@6HtmJDcF$36^f_+`(? +zP3d#Vh|cE3ZQzmQ*{oBvnVx@oSQ)IAzFPgG(cZSX}d6M`y;- +zo7jMqIM$1>q4#Vg9MXS~FQZLhB@dheOxiS1d*eP#Dr3Cq4+2hN+>wNC({tSs=Za56 +h1-o6@Jg-S){0nJ;#4_dt*)jkC002ovPDHLkV1g}P*?Ry0 + +diff --git a/themes/spinner/throbber-0009.png b/themes/spinner/throbber-0009.png +index 35bc4817c7b488dd8908b59f66c9f0d9241f4e69..b366daa8f009ccc64fa2356234e45d09e544486f 100644 +GIT binary patch +delta 1589 +zcmX|>eKga19LIlbwst)>DMA+O;BvNkETf2tMXfwVMr^H&joocgvi(?Hh4QcpMW}8` +zIUXXCJEjNcN|Ce~m6k*#OUf$4o$kZud_U)X&inN_@6YG2uM+-HC*KML5G?-)4ghEy +zF1H47q0|@v08g%OICmSJK?AUHNlY3xp3Y>(Qn4I16?>4*#j+Sjm`R7Yaae8~jY;ER +zIV^f&B8~l@Vkit+;(m(Y2~-_ryc|V{<ZjU591zY~LVC5Fs%)g1XV{0Nmn +z0|7sdCm7HPRXtjPCWv?&L{bX~e`3?R9Mwa;igHE*H{^`qBBEGD{p89o>frNPWYLE|Ac!`E8Qy*4 +zIcuE9)pm*9ty*2h+oJ(u*OKR>Ce^il?c(N4n-sDY;^dAIMS5>~)YQX+yezWBTv2Re +znQ#`^`G@cNHSrYcBa4XD>{ +zxhbB9yqnF{T8eIdM2B-{?Cd5Gao->>A!ga+=-U_2tdD0}dreYcbXRI1=lyKb^z+z+ +zfm$;ehN#j?^NDOf0AC$S&*xTn>TjLKd+yn5Rw#^GjD9Ryd#|&Tw9Pw~!S?j4lq!_D +z!fdiTrRVugIj0WNrm=_y;oCu!(rr-(KEbK +z{_EGrC%uD`$5y)gir+*J3mblamA@-3Rq(@3)>%!g%U!UqV|%XI1Db+?@q4NXmwQee +zz0|w=W^%~8MyvJ5!LIAVu_-xO3s%!qH108z^uBG}R$lTW#CnJ?nXV`@w(FvH50&eh +z*BKV9j>}nCTc^Dx%gC>Yyrus}nP|WMwJ2PKh5LN9RVUOKhLmJ9QVx362fa|pw~Jd? +zp=heTbqg%=3h^4!F#_x!+);X^VfewEwnnweIsc@29pz1wVe4Fz)wEHp%yY-pdt8sgwC-eA}FbnO{=vhzIHc^d9l;~@&Slh+{yW1DVUttV(LfPkM{?ra$vz=r=zgVrztL4vhU6iGkWAL+i!W-kQky#BSF+II% +h^ZWy@#8p&uX9<$P>1ebLmM(w60MU0Rp~gE#@Hb`h-Ae!f + +delta 994 +zcmV<810DRu4EG0+BYy+FNklCRx^XAsLaG)wrBc&HJ8f*f#(bFEna73Cz}xBE +z`O3l5`k2v?S?0Nz?soWCH*`54;6T0!M)Fx-oi3*ZIf52f!4t4}3Ki1HeDtyTB<) +zi$l2PG_Yh~EucBJ3xH+d4v+(ffY&8uJ#L>e@V?oq06zdfjtw9p_JN;(Ei-W(c(Kpz +z&jN2IN0%dFIDZBtl_VXNRF_mvK>Pt*HwyyZkW>NMzIpjSaaDm2fy2NA@GbCtqW_4b +zcO`u!X{J{YJ_;=QY**4Ua4#YNt^&{4*fHP)@C$I(m-rPp1)TObE5K(Fk=ytZa1Jyj=2)qjZiP0|U!I|^L!*>k{o;B7O5 +zvtlDP+My`3@SFoEGui;|0)LvNN<`c$h=G?Ze+~Eqcn5gO?wSB@1DAn|5wS;){KbW1 +z9+)$YIl#k5FOnnC80K_!Ris +zS@od30e?3s0W~0xh|N(O74R5vH6s2hOm%-;1FF6B0GoqyxetgLyRz3sHzJ}L{%FzZ +zq#gkGfg2IAGotZMCRGab=D^L&4{Za8f?`!3gMf0PFACn5BcZBVps0BO7fjm)z1B9c +zF(?Sj&VoE5wnsERW%`>D(e4|B1qy0T!|JGUV1GuRHO$9(gf31b1wNm@0qWdm4nK+85Bih;Fsj_Xk5wcv=x=y!m}le1~NXx9U5 +z1z3=@91#LGB>iocTWLGak|xx$uX|;~Y~q?mM6@K4oQ0Wc08g8V8nEtNsDIFZL1rIz +z+_Rpd@3GcBlynBw`E>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdH99mo)_(<2E&u=k5OhUYbW~|= +zWdJZRIxsLgFfckXFoNGF6#xJL2y{hQbVhPvZDjy4FeZ7(XaE2J5p+dZbVFfnWpZHv +zLt$-Ya$znoFfxnR2*m&Z02FjZSaefkWo~5vbZByKVq#@-ATuy#aC3lC%eepm026dY +zSaeclZe(S0RDWr0WdJZRIxsLUFg8h4`*Z*R01|XXSad^qV{Bz}AX8y&aBO9B05LK+ +zewG+3000EqNklYSZNFkH;0 +zudwzgIDZb_1-rolNCLKE1FV3b!DUGPr0pf;I5t&4$Zdg}9s?&ph|TyVV5wgKFVEy+nB`OCn~{{~CIlJ5tKk<7TJAfa&a6nqQ50BdlK<<%}9-Zn_L!2m64f +zd;r|Ya!Vv66;?${JXM)^Ct^NgaF(jhC-VfmhaUk<^2|>IH#!6?w?ZUPoP@uD-+?hp +z?Qt9d%is;5Z)nc_5T1($E6zd);K%1*7@>EoR5J>(Q#JmF+z;`TM1?&0X*j8-N-eJyX;A^nsyz%*x +z-j`fnZ7zd)>)*on5AbXiVXIvQzewyLYiwiL5T9bd1V4ds;k=3qgXLfJ-q6m>yFfMcg@gtItMHh~cd>v`T#FvUNHj(#0;V@p!#O`HXxrB9NpPNt<18Pds>TZ^sg+QKV~O{IMbO;=36g1uGj3Yf +zUk5o#x6p0^lPyBa9dMI+)9>KV#Zips=a$%|v=M}b)@L;;d2W~KH=h&8*OMS#Tis{r@(-MLP3^Yzei9i +zlC}6cLG8ZwGsk{mZzp7-t>$E4rnwiAOKeqQYr~6}z;JK<5m5xR1A`I{efqWf9WZmr +zb1@BVvZnjV)}dvu$*4c>#j27W=i|b}vPl(}voCIaTIOb4oQ;1trz*^EC#fnn+$6F8 +j^JiYjYJCW!ble)h$4a;7cK;KBif>MA(?iXN!poY>?A#IPUM+)k~eAM1EFo+ +zKKD8I+;h)!UzlM@x+ZCBmKZU^;m-l@IL1yy>`fD=Fy@egq<^O+ZAqHTJiY)FffZmo +zvu{DtbxAiRE$5w48UwHjTm_bZWnecw$Dd*AJ>Zu2^nq`tVgNV;dcZ%xrli`qQc8LO +zxbE)+bfzu=aO?m*2fQSykYOM)TDl3W1M|R7{!9lTBF=z2z$4(HOY%$tAe;TGz$*!; +z&m-c&L;x(fnt!B9k|jV3XuFm@;If~er7z +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 +TB1x*~00000NkvXXu0mjfApYv= + +diff --git a/themes/spinner/throbber-0012.png b/themes/spinner/throbber-0012.png +index 91fef168da709dee773b833e889c6d2e19d27de0..ca4f0172ae9d1cd41986c14896e8e7717b3e7d0d 100644 +GIT binary patch +delta 1586 +zcmX|>dpOg39LIlSh*55pE^4t{!fs46qSy>cDY-|?FO$vIHkS!Mrcy^Kq_Zx}>2j2W +z3JtmKoZ`@lj#Fe=grk_{l8Tfw^_=s0zMtp)Jnz@%d4E2CedQVw?Q^COpvm?K;sOA| +zV5woir7K1N0J!idfjsvZ1_)s2EGCFK9K&Qr&@fyM4HF&1!>}2ACM%vt$MEPN6XasJ +z?3lPXkn^9SBN<>^RHWcfxH8IUDT*Ay0|7i1N5tT87`!bKha(XPBm%YulJs^chjf>Q +z{9>3OfW?x2JRF|!%-uoBmVLj46QP7Sd|TozveMIA^4ydbCj$5(Xe<_=-LveG5*jYS +zeKar*1bB1~D>4$~AZ@XS*xdBJ9kohsu*CN&F9bP$(EmHp*sad{I^HO`{`YV`jRA6z +z`y!ZZr7AZQ(=HfU0RUX;N#5ZXsCoQCXZD5thON;jc38U&Q^--m_;1--W&<&WB|NO^r! +zF_-$Zp|db3R9U@JX~?-@w_Gs1=Wt1=bgg;K^YT8jENU$k8Lrd6^I3rLg8p<2uWwgL +z_h$N*aLcrrs5>KTQSLKWJlHA?M4hLCfQ%2?jEtiLn<#Ss#h)j$&K8q&yPoFUFUvp- +z7+1nkBb{IB%79=wp5hOxx$}oU{5%?F++c2cCuXg0w(0|6WRvNaUP9u(xIdwL?&Efr-go%>z2CP|?MSgZu%LU_$eqQ(5sU>BT +z^NU)H(!BhzS+OB{yo+^rbZAXT`cOheZbkSt*~`#Ilx(AoCh}}^pqb8^ZfdEoBP4iw +z*`mKb`Qk$j$A;!r#8YEiTtY%W-I~&TPDkBdXEpPe1BoAyO?o5FYpym++-O{Lzv`#r +zfA+BC)TvuutVT^6*Ly(g=m^7eXxRCbjoHb@)o)X$cPGk#e$-G+mPfr4*?*+XrY&S1 +zUe%csFCmVvF(G+-7D+0J8Zy;tPpD?1`ys}(I_qYDoF8&*b*tc2mcLVXU(5)hT~=VS +zaJoX!J$8tm`Sn+PHuE{*1a$4(wmqQ(Q8 +zz`U;JUZYm3X})&^9`%Q9#Wum)9~l_BHw$XQdDSxXgvktlD?c%;SVZfMZC^_jS2J32cF*kh3eN}2ln9fypfp!_!k5 +z(uFG(*REU%?$p0P#ErUe<-(miU5KE9V7qeR%8%j)YDx`iscD;LGHIe|CdbXWa2@9> +zGw2I1b9wK)&*yp0^IRBV*{<6@Hi`_5pnL{61+;))BsGVTQ-ABDqyo$U72t-XR_XO* +z&MUwa&}_Rm9r+t=_Xam0%1`C_2ynUG#xD03fO%jHxCs2wO+lrP0S8fH;JEF{0a7yw +z+#cDr$Y59lwt$^dwB~L1!_6FUTOzgv+!)#bNe2mED^aK?x4nQ_2dXjRvZVci46t3X +zJ!^Y9AS%{oJbzL4eCd60X4}=|y$X!S^Q$HKW44!UKWO`CClD5ZI{C7Yl(aPaG}2BhNsLA@{CJ(0ZsF6qyn%_v~$#Bv6JR~#3@g@Cy5*<}I1Wq{ +zDX4cz0YGzv6s!QJ+oD@Ex1WG7`U$8GJN4LJw*6SYyXw2g^4bILh~X>1GVq!0cYh@P*f9dB`GpJ<1r=8!>^g8I?6@y! +zr;F#0hi)$c&jHUwUg7yV@DcEKfvd6sv%tv`N}X0*G^07-t{{3<(yr|zKsC>&fltye +z-jwu;?fYZM*^ts+==mi{AGQx9l~O4-kQ9B2W!!v{HJl(z{a$Wx?}511ADfGOTU`=YR*oE$;)*7r=|bXXD&C +zNw)@`|1-rrls%L4yKS#zFXZfL+gEKjY+tkeR6qHZKFVwHvPjQnCZTTY1K{IKMPtAV +zwx>s#ipvbS7eKnl5DV}Ya4q!y2=K%x22hmefQ@eD*Ji|*zf0?fuC +znDo^QoekjA|LWtko+-KtT#~f;zkVH;=Eo|~=!K15>u-W=z3o(9@SFeu002ovPDHLk +FV1i^N;yVBU + +diff --git a/themes/spinner/throbber-0013.png b/themes/spinner/throbber-0013.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ace8764887795c1dacd9060bbe7d0e1ea932abc5 +GIT binary patch +literal 1612 +zcmV-S2DABzP)>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdH99pgw!+xU0000GbVXQnRB3Hx05C8*FfckWFgh_a8`gHO00008bVXQn +zMsi_oWdJcVzi^q-0000HbVXQnLt$-Ya$x{NVQpn{VJR6m&&cbW>wx +zZe;*;XmW32Vr6n5GcaawbAVFIxc~qF6LdvbbW&w*WMy(xX>DZyFfckWFfK4RK2yu$ +z0000IbVXQnLwRFtWpf}?VQp}1Wpe;AGB|#g7%Kn(1m#IYK~z`?g_c2UomCKqlS>Gp +zgiF;Jq=a%&5G|r0-MFdRg$wCMP;eo*5s>zdxsFN8-!6)oq-9W7~5Q +z+s3sq@pm#^qc0_hV|8zQCVt)l32FJh{?161? +z9sCA1N2AfS&3}M>?-jHO95_c|3qA#ogXh39Sg1f1B2%>Z0elTE)4&b%J&ov7YMnlT +z6pyC3ot^|wfK~7xI0`)63G7zw-WE6noXSt&9Qclj?BzVxJ%QwG0(IOLez|5?><{oX +zxCM@YKfzq0;yn=rHB^S}-t0)GP!&Y_Ol7-3Pnl!R-E8|PHi +z`m|4jGc>lC&RG{(h$95>J`U_$a{mHfzOn->==gsGj{gQwEaFui2TsLDD=CSqoyt4l +zD)qjiR=EmmW8ZxPIPBmh@FZ}o-lGI0BYp*!fWTd;Zp07tsbzXdQeEJ_lZnF_Kf9ijAGJxOJ8C +z6?5VJu$}-%Y;o6W$M-YvckQ8tY>2y7TuX!)ujM0fUO!^@PQvrlZ`4PAkb@&)A%mR2 +z7O-o{Y=G};hh1@eJ?V8d8cFmMAQ_7)PC`5bCdP|09u341W&GZIMlXR|ZO2K*U&Ot3 +zUmNi{E&yvdg@}zF^W7L%{?r|dUI$LW&Q0#Fnnq=AbTuyd~X= +z=dO8OF3KCIuQ(4z5+(_KB@kT-s+Ew4J&Oc;UgeO0DSlsylq;xgEF|j|Cht^&rMnbr +zwf2xu%_--XO8q}~vMd2L*q@P)$KSqVa_=S>OE3l0ZE@GxBX%eg977T|x|N*vaaimK +zxCSKSqjVZ2W>%N%b!4+gk5Tv-^)E9a?fXhPQdj#~ +z5>9~O1UB)l=dkYIDIB?bNtC;#CUb@gSWu2d(ZTr6q_xChxa1^$LH~9vX%^cuDn}e3YVQ>_zffb-{6&wN!8Fg}_*?S$_2D9WZ +zoUefH+Rf`ml%I61b(erqg%JfP +z;up+&$`yFPj>VJ6x|7EDJI=1D8sIr+!KdWgM0ai4y@dqg<4}L1j@;`QYr7vLZjj@( +zeG8O3;2-cI7$h-$HMwq&$p#MyEA0zh?7d`Y5@Bf?KgDVO3PaBKf?}(&AD7sCIFM8JA{d{d+?0kyb +zyv{Z#(%Sm6j!s;3{L%48cT;E`ZEymzpS=h96K7sx^~KJ4(fB4wQa^7o2i|!L>KTqMs8X;j7+TN0D +z^lYa*KcmHq1%3$@k0**X7Oh5TKLtaXAR7dd6L?8+aUjoSC4MJ|FAQn>%gF7fc!=>p +zkoW(SSiA=%w5`{OQ9rX&nJkd+5*iC}j0zBlq^u&Rgoo<1iIq(oi)#Ly1Tol9ZGS%bveCT_1;5qzfeo5 +zC=fMfz*J|u;dNWCHnOaB(}^BzN@;=O16>VX$*{I2oAg!;mVmA +zWul4UE;NrQXdSE8@1SOD{p=~Z+u#_b%%{4R#umEU`~&Ozt%}Oj2(Y_@vde4eF0Hbq +zS%g;IekwRwVxfUYW29m=Lou6C~*?m +z<6c$Ns}-!MXlnnu#Qui%w$-|aFJ<2uG3Y}1&BJrUZIh$VF?_o2z0R!9%RHUtnc4B= +z@Hzf>ZT+6Yt_!Uh3C|ag&tt9r@iYVVrNj&7w%6ls>YPVB%g)=5x1_!G +zJF_~eMb6k)cn7H}M!~S^N&dZBt>Fz9*SH(q* +zH=Uge)8s6ysbaP2p=-x)Yq#Yrd+wML&D-deZbJ9z)IOB1L2TH9fx8XLLS0dB-_TOFv7~L=_Z_Oq(a$|6&!QON{az*lCdQ9lnH)NlFzPi#n}?nF~#j +zhS9QbvjPTeFL)xqD5zV@pY6%5G|k>C=h>=emb_h>0$Nsvq&V;cn|B8r&KGwtiWHYF +z<~n3ftGAGMpS(ZmtbNDXOjMgLfP>cg`(zuPsfMHg+jpKr&{%`op!Dq7gg-XP$$;g5 +z?f)E;hB{y&ZJGU`Na>3~B1rdcwM4_bh1pHSf6V(I$JD2c9yZ%WaILXJp6pa3TP5C^ +zTxjfwH!{oIa8JjopD`dF;19iTk6t3#^r-sgSk4x%^mWFyHEJPft#%qQto?{hWp}Tg +z0sg2Dd_n#@?8imHoXPpp`GH>Y(u#sT%f63GU&4|Ua%p-e7!eVy8rC#;8$OkxYi3{p +z=M(2r#w|atc+!BmxUFn1q0{V=1O44@|6MpkgD#WOC>T@cz?GUFyQ=m5jJWnIB^mx_ +zqFp%yk1GSkGhV)`OjmwD-8z}tYp1DX8k!x+jH)`_t-KG~iSia*5R<%i$D1#|Q=4~G{7 +zx&J@uf_JAx{>_K6`RD8mIs@d{MkFygumS|4XYP*}CjeN{NAdTIj5W?F3qJC7)Y@-L +zF+p1cXs52p!Va5#V^_C+ALkO^wUwjiy0qtzaBZY%+NGlFqQH`H +zyOSx7b*eCbxdrK0UB=P5toF(A;0+zrtem_zIjomj_#917*KQsVkJ-f}EDpVnpOLkF +zjH(%{2+=xv$Ls;OzV~`GTd~(3`B28Ill2W^qwBP5Eo;gswM(0t^#97A)@wq!cLkK+ +z3_{1Zd`GiETo0MMwP@1QwfWZyC4FNt#LmwWqC9neO$N27DeQc;-MOeC@!8$3mVs&8 +zn;^3(jHk)_At)xm5P;FOUF|yO@f{NzQC53A5DY_P+ +zRBQ@b#efb4SVTyk8mhnKRK=Atq~yT|2z>h>dgFyR)|w+bxf64G5=G4P)wjezI&0UW +zM7`1d84z)>HzM6XO%N*dCZ67YYHo7J;_v#`*fpbY`(QzWdR2hkRX(pZxoS6II +zh!+PNA!C)}d6RgZJ4IDhZZy`0sMZS=(V+o3_HJEc*AW@>5Rz$NhF1wLznk3q>g-@B +z6k5NK2m@{h7PNgJ@aqprj@qU$RT`6Q}BglSiPZF8#(a^NZ}- +zy=az<`A9}pBbc$1h~b`=MdT4dRkK-;O^F=&Hl{+JrPWecyQRY!4UvXjikq%#a}N4e +zxJS0h)p1;$fwisI&>zNcVp;nX#O_q8l`0J@7T&j^@-LSlTVx% +z(&7}j^mn-f@gr<@^SYq#_shOz`#fIofVu|r6-l3>8j(BNVnqV(s}5m(<%G)KqOPfX +ze*g57{n(YZZOLNI^)D>50Jp)1p9;I38(K;qUqNNCs=5otiGrK0KK(D#jgSR#t_ga< +zq0Z*b=j&sV&vo|>WfRk|nxT8wo_YPS(lpv{a)-NNJ1uP;HluTm$Hi>p*e6)b8<*ai +z*I`O~k=vzJ+sEZqP6ZEgHW8$uX>EreY)C9%LH2tuGed)P9IN8v@{1^{e%~$YjAP&M +zHA{>(wI-n;UGr=E`lF8T1y`YSkkIA!m7}OX +zeUnQmKE1@>8jmkQ=NrVwte@N~+w7yXF+|#|SU*R;9N0;P6v`LsoJ28Uc&BblY=cfJ +z0n0{Yxs@vWv&s8{^BW&$>UE%USFSG)hzYAkNN2Hm-$fRcqE;0sr^dw^rWPWKyjC%3mmm(i;$`6G( +zMym>YB)m?mJmts=cF6$l>S#j;DKXsgq`11`jIYjk#kx>jm?_e{++bqX=BKlb?W +z*?IAWqYq7|t$wa=-6kK~Hji0YnQho99O&Yy@fhp3i%_yswlqGVBiJ_FI +zQwp8r(xXUj;gCv5W8tJCa$S;~pL))7zR&mbc|Xtl^?5$u_g`Q6ZolowWv0sj06_YX +zhykElEfx$4cF~CwQ=q^Fq(4LefIu(S5+GA)44PZSUV&n7RtN*YGWlEvmd)aFsdTJJ +zNXH&yiLru^<6M52n28lL8C-@4D-y7HJcjT;b)cmzqP?t#*3?nR51f^!r=*6 +zJRa-hY=y_WxwyEw;7V({n!y>p#hE=UE(5^f+ +z6Oeai198o&IA8rwz9sG(ALyOGB>VmG!$|!@=TAqgpC`y<2-SmB$C13<*W&|x53XL% +zh5LVXP8hEr+N7xrZk?Y{5k4P%*K*l;vQ;^$k}RI1;o;%l?TNLDu!0`Ke0}M0R8ReV +z{J2r><4|Tl>hNFm+ +zISUrjp`NX~;^0l@E-gD|FcBS_Yww5J&7lb&4Wt3{qqBsE)^B6>xa-KJuvT2hthn_7 +zX$ZEYGO@>ce-zy812pi?jN4aC7xZxa2@}#6q}8S(qGwq&v1L}jI9gQk?v|z((2WU( +zS`>2{Zobh;)L4{jSN52b6z=)X^w?N1EU9Tc>jm8B<-J@H&j#5RyEAMZief$1M8kYt +z8PV0+re6jx?XfiD7DJRRooX%Ixr$#cWku8~*81VKqEE8>+GbZZc5^sI<7!%vVk5f0 +zFwORoSu;P%R+(9Grt{;O-lE{ZO*Z$e3FK!q$#B<0dT57kdr;`7eXqUaruDxsAL*?* +zoS)PQ$Jd3>C2WJ*JBYo)=EP4^{Lo +zEv-Z9y@s!K)5+@|BQZ7k@1*(*T7qR<`o)%Om*5eWahz^egih~X5;vbN^-8&7ezI|I +zZf)NZOs7PPEx$cPFY^HozN|v +z2zcW9V6}mJq#YwuG7k?7RiWd9U+iyucg3`Us$ThQ2ED%O61OFZTNxl)Cmcn5Uh%#e +zZDtwsJmP7G-H~esdoPkl7dTP`Jt)gSsof_#M@UH`Wy!?oTo)p=?y!gg_ + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0017.png b/themes/spinner/throbber-0017.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ce792def5cc6aac0b16a4ac9d029aca472c08595 +GIT binary patch +literal 1572 +zcmYL}eK^x=7{`B_%EqXz!<4reDIMFCXoN+XQ>TRTmd5yDY+kl0v|L6B%S$>5qg7H# +zr$XC7VI&=u$ysT#v{s?aTi(LTnYzw(p6j{q?{(du@AZA|zn(15eeQ7BS{MKTa1WxJ +zmr6~RN@InpGm?|1R0547`ZEAP6S-7sKuIY|HFRd~@?-9%P(c6_8A}5(Q4|_2BoxD- +zhhicqOiUa#i58o{jKnY_K^n-wFybgNF(CavwI)-+m@sl$r@AT%wG`zR!UO>uEY2Q- +z!(nW;nBZ`DTU)#>R?sSWs`9K_^7v3_Ab`cHPhQ~2dy`I*qIC6=5sTKt3 +z|37Js-R9x5z*J$xkL;vSD#$SL4xz=V6u{Zorxc>B06@Lb!;RqM2R&cd8C`a8Rr|SB +zzg5cJi4{ak!p^t@{G;!#)jdC@sb~5fZY}+4oaqoh(%NW}d8zK0c^%@j?`l4g!f*2m +z$h>kew50#*Lg$VyE+e+T5I-*69w90%juElres4meB3h8KmlYqYQ;dhMD=dg=~lA90&00gHr+_yJpV&f +zusq=|^wvCDvV0ce;iyiXi@zjQ-yk&lYQ)mEetz~%8|Y+~UpnGqP$~ToEn9P!jtqR~ +zEn9)DXYk9gm8RQI_@)k%*g7rR^%eu(&&tmrg1c*jR_3uoU2H6#8&!Md4Lao~3?3cE +z=NFL&otE>SXT7zZl4sz{bBkN{D*PRCQA4q^lEJdR6i#(Cq9$r&v=&(~d*dPm)BVz{ +zvNWlKuC+e(rHRE|n3dq09#_D3X76#aX*E5>cAwrF#|uMOG?yJm5T7)Xio~qnjiqW@ +zl}Bb)5P#_p?~t@=3U4}g;l(pvXtG?d1t~PMhf2+$oO#59hfUEN6E{*zT0Wbfoe5~M +zm5nsPn%c)KB*V`3xop9&tbWK~>Phn`M~AD_H1UAVothW>i=GAuvPTXoPC`?Je`SJs +z_<~dk`WtS1W|)_z5U#Z!4sy|h_8m$)(4MWvaza#}I4VO}dVG0Se%v9?BHUB+h>VPEs-aE!cHjZq{5If`p83rCCe +zPiIc9C-5xMPePOt@LG2YE~!Ab{tdln=caR)$AU~>>QC(yMLGE|oBC6yKD_oz1eh3*_o++>4oC^yV_01KX%x}oCo0zPMq$8_njmL&fE&a8T_ZA;%@qE*n +z(H~2bnhWE5m>-;q6$!HIy;nBxtG;9s)T0CAT8YL=X#0nCXQF$nM8&=iHNnXS-rd3#Tsuka4)}w6 +z0`VS!nka3MP22xeUt8YW48N_dyVAl?3{ssZ*upBA-Z-Xi`K=cMd=od(AXcq8E!{_| +z?%QQ{@pZ3K#zUbj9d1Fj33Kpcp;=X% +z>y<*2$-+=&9*nDl66COgS<8oozOrNA373?xlu^&cn$E{VgZi(K8fME3l2iN{>2fLV +z#`SiV+|Q8oP0rgsJ=PC +NW7j^n+dG5P{sq3l&Vm2{ + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0018.png b/themes/spinner/throbber-0018.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6423b95104fd1fb81420f5cc0cb5b1baebc90726 +GIT binary patch +literal 1601 +zcmYL}dpOg39LIm#*j!?6hZW5wXDsX@oRLCDX@%SpQM)kLjoE%2VHr+QlpIDEN-pI* +zY9cA3wo-1V=_W;@nnXgB$&xemoacO>@8|P=p7-nXyuY8nzDIn#Jv7wTr~v?=LEi4} +zr%;oXQh_TvHznn>LR8t?gSh~puDenY;B+ZUVY+}@gTQUkOa_3Dif1wKG0`j*Eey}) +zgyAEjK|GszfEAwzM&ZFI28+SPbJ@{xaSYCXilZ|bapCmL2TF=4)Jl{)4P*ee1R@Df +zB;sv1m=K9h_V!Npgr+;sdlWNTD>DJnECxUzIQ_gtQl3(sg@UR4ScOAVKqASq!ga60 +z(_Zm@S6Cbx@KbOEf^BZU$~^_tTY>&zj5r1WMseclbOy&{10jOV<@@zCE4c0o_fss$ +z;Qaq2j^IEJkb?@W^CSB}7?Z&@@u#ua3I&L^q=UsMD*#X$AiKK-1gQ#&dvgW5Q5})E +z!knN^bIv1jc+Q`}IjU|r@O7YCrpj{mci58p-o_~Hr+2Q|>~(L9F+7=@7i#Heb{FNa +zida2f^A^0=JN9ypH{CqFN`Oooo^$R!aPZvREtzEHFyrHUx6ht`Z+1O4_Tv6Q2XAJ` +z&1aZJT=r4dF;rtlMbFVW5wCxtDGjWTAH|lrRh&Qu@1wY^IW}LvyyIFhbqIMj(`&{e +zS>+ibOI-718F_F_yHQiA)bx{4j~QWH%Q9s9sV$=vIu9O~wVRy_w~p~xH&JyuvW0K{ +zhcf0g;-Uymecbkob+sIJ32)_!6lq_9Ol8E5=Mt0*w@62~)|Ee(x>^O3mO3lf%vw>%+4}E;1qK0ZSg@wkMP=EoMQ`i +zhwu9OFP*ml^tle2zZko4e!fD_1lHBjIX9=1g0PNQ=b=n7s?DcQ?Rw-9(YI_s_3R>d +zo{4-v7A;zLWdYm@_(=p!jNdL*q;xK$M70K-GN=6<=8+=&M>~vjk=g?ex +zqKRJGzFwYInCv`|kSRZzqU1PX+Iq+cIHb2FNys!!Y9;GXo=n}hAh$?j_?z=f*Vzjz +zWp572NNR#^uxV$xTVUco4y($cKp7iZhw^keZZ>c^tR&6QI^1S613K=Ro3~MX)gagq +z3u!Pe +zHS&$sPciX@7f}7rFllLLcsG}{S|O7IX01;r(&4pK=dEQ`q-l&S@iH$#i2P{z&E$s4 +zS^jM?cV^GM_)7+&s!v0i*WK>EwL=z*pq4Il`}4+n^#-L%C1RLKHISPOzXi+wtls^r +zovLA3gJ6knnp#{U(wR}0*`%Zo_w%Q}LP;7D=x`#>ynp8V*)-_4)?GDa{DIE;@++n{ +zG$%3Ucr?s|mA$+zX_@%`)iQ36PK5c#qgj=k)NTEq8(<34HQx<}VyPY4)aPCh#PYCw +zX?}?3J3BA$SzNu4Go9CJ{*$MX^ +zR@eINUptfEjTl)wvekK2%eZ*(vj42#cRe+}o{%A|w=^MtCg1aSkJ~)JA=tE6LQCna!V)P6BwmjP~WQjhU|7f6Slks1M +sHyw}tVF8gt-stkA?cnZ`rS_ghWCxsXXObb9R{Vhgd8@a(a0@l_U;abPJOBUy + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0019.png b/themes/spinner/throbber-0019.png +new file mode 100644 +index 0000000000000000000000000000000000000000..45e935927623eb5ebd3bbd1f5f6aed9207a55c88 +GIT binary patch +literal 1608 +zcmYL}dsNbA7{`Bj<6^8xBxmzB4OgaI3MER>1u5mFDHf)AK}k(+a%twJK(=M6c-f{| +zG;0;QwW(QI9z@B~)-bWQ2ptP6J1lKpn&vdM{cLAv?|Gl+d(QXsobUVm^&a0H9gak} +zA^-qDG9qZPpn5JB%mM7;{QPN9;KGOmF#tF^Ef)khrE&pHs)Wvx?8xSF09=-U$H5)U +z=JC?fabi(AE;Cz#6LJsp1X4*BPLjppal|;WFq_Zki2l<6HkZTCU>D!B1EXA)qiAUo +z4nV{c$T$K4N8IE|AW%po3JKrVZPJ4?tCnY&**p$_$5Z~jge`Au>o0>0_HGqX8VCtn +zQZ5SnKo7O-Z3it;8t|_K;PJ%LN3b3cqL*P@I)~2zBv~Q>o6Qk$}NLQnw$k$j}a#SZ}No-k-(Ocwm}8g0&n +zc=WL^y*BDw8zYi3SRW%$Q>AqD56(=xL=<=9w58<=ntS!~Rc92<4wcZtLiuyiRG3%9 +zirjL7L%FMOh~e&{R-8%H6buJh&0@o>b|R{#7Ch0>(KSBLcS{mxJFdqy^E`apwEG24 +ziY#L+^k7tmA1&A=;9x40yemzaz8qqp!B_32Ls7#9B>VNENhJMlW+cGz?8W +zy4lrjcIkSh!98puRJU&R=?tV9Vw8`S>WZODsjn!{T46WA7-I@YV +z(vkp7D&Z~AaBj)a)@lA5v#@LO*#d0vP8D13WLD^sTD5_hXE! +zTN_WC1-t9$gV*d$Kb}XnTTA?Pa8~8WXVbYUXTsUs8O#CHo6R#@+LiN#e(%#8er23A +z^&4eyWX7a_3;csCIdd*%TX%=*XECDL3ELQj_p73?CJI9A9WwzS?i{f0nMfF_`khr` +z9>E6RHWVK$lc>)K5f!pKvfN)8y&|?netq(HQuF46@k~!6Ce?=OYxu=S6T0X?*5z78 +z;4=R4#E>bq_qgnmj@DZhnbgy*_1HU2YGyXGFirBiBkdUuCWivDu_!{;2}@_eD2tDw +zRG{MK`15L~eAV&qE`3P+c3U8}MKnV?cw@ht%LmC{jw1HNfAwurYL04F)^pPQtc6hV +z8iF?_Ga(3GoUKzq?uw^>L~bKwU-5IV(~e%S2<-FAETfKPIZYaQPnkAo=;7XhVz=Ko +zn%!9Acgl0+HP5FZ_Z!xos@vHRG=*(+7>@4lE!)~pJ9YpwdU!~EP>Act4Dg;aw@v@MZrgI +z#g(=GRNlGk>%Ye0^n(^Ox_?|T3{Pb@4BJn;wCS)PxdxhhBrK(`5stcZC +zrwp<3tkFF-hr;HJD4&v_=isYe5=W&%H?C0gXT}%PwbMP16W+Wk#h4zK2aM;|-IW=rU5qjZ0{*I%U +z*Dq=1RZc<+yaTad2PN*M_;IR(#uNDugS<6sq_r5Ad}!ZPK%Sz%XehIS!gzy}G7H>0 +z9QY*rNX&zySu;g$ef0&-pR_MBP+D#nIoZyjFzCvA`;6~Dcs*wORtt+&7uq{whk>(&9A0>1Ai_m`)Tyz +ylZqQ_OI6YL)DWxfZQuDH{K$lL(m@=3_Ajb$XmVakmnIzi3IPT^n%4AjYVkkv|H85W + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0020.png b/themes/spinner/throbber-0020.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b84b04dd859b199729c63df17ebf7cbffe8f3185 +GIT binary patch +literal 1583 +zcmYL}dpOg39LIl#2}dqtTPc>?ncFTRLwGEglq8f((S~8!W^E&ua#z^| +zacx4#I31QHky~=vsZ>TR$3fvZQ_p$M_xXN4@8@~HKF|C6`RjYb!`($mVXp!J07|Y$ +z9X%zA*r{D$NoTUzD-w~XAN6AbfFfk4q=27_;S$rH<>bq9CR0cNIy{m}LSG4D;(UYgEE^eO-k?lt43#l6TQP +ziKn{b9g$cJBJfR67>rr^*seb$P<;n_1(RqbfECV&3<@GK5C<`#bY_C5pjE;lJKR&U +zAc^t+lPHX(otNOX1gm|`jt!=ems(11=f>Q +zuqBknf`!l*C3a=ZfwiZFHn8us*QeiG4a80lSasU$ocm2p7P^Ml%LNbLca*TH8@Ps# +zAK678(%s)6^DZA5^IYAqecKgtDHNa@g>{NFiz>5dC+}C|b6OWjW4QjVm6wXpuJ-xC +z@QOuLi*$;*xf^KI2FVWgiCt5Dj4aiwe^tfP6$15d^f4eP(Lwa~p3tDhK`nh^B-NUH +zLCO^+7yY2FI|NF=N7d@LIw^J85{S_I;M$}Jty8ZXryZ<%_aB2rZDz(w;n;020%=1V +zh!Ff5ckB!sTny?h6z-G#&P1oeq!KFRCr%xkpd{!;|CTwfGs)C}3S}ml7hb-2kBo7> +z5?_^<+%tD(uzKi57;4WXZGYYJKYdNinrU40BG=96(hOcp4xM!1L;zwg^gO@x<}Y4* +zdAza2L}k#EgdrtDRqY8{&LpHQY5=4q+jDWIJS*|6u-dBM=ku!Z-6!L(*FatkKiM|t}fQV7E@ +zVKZN_L+=jzO1aV?g(3)F@MWUI`~$2uJ-XOq@G+EdV6DFC?r7BcYf^^Y-3zN;boqjD +zd~tQd?j+qu3hU2&2tcvrR@xpJS`eqdA<(kLonONq`#CVH<_QYeIt{(B&P{jR5U|RHlM@kVHIW;A*}WI{;F9(7FTY%th+3VBy0p+cf;_ZlwMPU)!zb=EA(T$8QERvz`W%+p>2NZv6X}F7a|Ew`Wc9IeJKNMtOS1;fH$90-1R6P2zRlVYP^wY8WWM^~sv=^_Kh>$_kw)jLp|c-9gC&n%x}{VW7Mn6cfgN}F +z6Mk4Olf!sNFRO?jF(zoJU)c5t@KnTn5(qU2vt^heG_o5}!wYnG5!GAF?YUi-{Hkg4 +z_`0;O+#AE5Q-N)3S4w5=InS4NMJ9CQu7VX#Z(kYjkX_kU-IPIbjDxTg8re0YBNzK{MGz{e#*6bxuWK&3Mf-O=2gesRjyk* +zsMd#45M$=txj5@RWIbbH@C-e?q*~#IXpbI#y<+!io|-nP>315r+b?X%;mi0O>}=Ez +c5cH<~U;AcCT{$u^$&UxPI=MU6;t5Ir0u~;_O#lD@ + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0021.png b/themes/spinner/throbber-0021.png +new file mode 100644 +index 0000000000000000000000000000000000000000..a64932df50150f1ac1e29b1d181b80430f802459 +GIT binary patch +literal 1602 +zcmYL}eKga19LIm#JZ!|pT*|WumDz)bgtRcTYHq1csCn8Qn{BqX)lAq>Nm8g=vh~QV +zZc28Ft5n!+6BDj(EfOP%+x@9?&pqe+`M%G2zdq;v`F#KR=4}fn8W~s_003Y_ +z3JZw<)nTdNdf?4ZOVfga;D$x<0l*NsR1lz4wj4A!3J8&cPzH+zpy?bo4V}zjv*W2~ +zK97n{VhGS&mWa*SFQB6ZbQ+t+NAtOiloT58KlMmp(Nca+$nMYqqn0m4g~SVJ01kuo +zMPspOoTmd8>*ww5=Z&dR^tFLKCQCg#8EhJW!T5bYIPBm|2p(kcZ>#X)L5Rbq?WouQ +zdZtTWFlh1Of$!ph!Qk?H;YtviFTovDS_%yi(0QDM1RBr56O+j0OCs9tfgHKSBfte| +zy#GgfV0=hBzX(8V_AOgPWzqN!JL1_~PysB?H}lN$wE&>gPYT(zGZIm7wu5Wci3LH4ELpv{^qg6-wjl-eokTLt0Qa@}4JopqG`<0{JH57E(^g}NxhHVobL +zLD+kuTXARs!-})8*twxg+H;UoY8-HGz2|giKvJhj-5*XSlgIy5sZ?cj;&9vj7wij} +z{C>X{_Owbim)|w&d$&KNck?iNSzWI9QmEe8s>*>@XK^~MjZxJfoYNRrDtqYtVZD}B +zozz_%3AHwf-U1t`>l-0<2gX6HK5gUUp303v1USap9DulBfp84r$#Mv1q=)D%5ca;}i4#s9EZ2b_{V{Tef +z`_(4%yfClN#kIyhZ@r&*IhRM$wZ>1b*<$)y(fH +zwMLt*JdC$MTtTJ8D|538d83M=-15&^`#WZg!-m}=LS=3R~^eck{j!*B%owKdnl+{IrTp4rpRt}kSAaANUi2^f> +zh16#!Nv6zGEmDawklRvDtnzl$@7+as#B5sN-SF4mRms#vQK)STf6h65#R9;ZFb^<$ +zeQ5A{^WL=egDWjeR;#>Lf8b6Hclq6)@i$sf_m&7->&oc$dSe}y;Ik7$f|^Q-t7qx| +zxQTk7peB)%1>7~sYP0%s{-Eb{tGx}uT^1@gx@*+4Rm>VGYMQN`Z(#UBn$ZYs>@}|k +zFyGDCnUTjwiniA=0&K=7m;d9e_IHqFPkOYEkx!9L4Y#hjfmW7{5-(Iw7`Ky%o$nD_AuAPnDUA4E}l!=h7S_WRGq{QN21!Ad%pGc4KXFALfl1( +z?6N+mu9{CuiXHSqy_$PARL9B|%-!({1vTOFdzlT>UGh_dP1Obe-CvSpppT3W3mk{8wA$WXMpW9SLmpji +zlzM57#=YSOlH27MVfHZTeWuh;7olw|NQYIek}u9jEmP+XtsSyt?sTt#R%SDYk}lZ* +z#D+SD=G>@I6hboy9lWJMW#RN>=Z`#&;aV)f4j}oD|2QUoDs0S{+*17&FV?q^2yY>5{bq3sgh_8zAh!^)9nYex}R?KS6**2oI?Yip%~Nwrj*Y + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0022.png b/themes/spinner/throbber-0022.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4b57e234270c5b3810796a93de9e85e008f446ce +GIT binary patch +literal 1595 +zcmYL}e>~H99LK-PHRIB1$}-h-N-nmU!;Hd3BZ)>?UGihiuk43yE>ze?8g~+MlpmG4 +zx+L>+QuL)&Ty>~hcE@H%NAlx{Z5DE0caMAA=ka;JUysM@`F^}U@4r5xfCJ>!hGvEU +z0Ic@$_M||HSuTTBQ0FEm&q4xcdmrHffDv-J^nlAHD9CihN +zjBpx`%c0?-Vt6=qToQwoz>CK5qUj7e7sqACFqw4De~OKWqccxL2wv(#QK;o8&u|_c +zAmHtYI6FHW!5(90M{;l=Ip7=H<bSiGZ8&^!;q>;B13qQ%jjM74NWJ6KPLer8awaT$Eb4rqAFvCv1xP%ewIzTba8$*KcgnxgfC@8Kz&T(P~4q +z;A*kEhh&ecb>H|0-r_r?iUtYdg3>oI94=A6eQ|Fn>OYTOp^& +z#F{=I%qUh2i2PEV6-gc; +zskvU%FsXfeRL>(g_Mnvcvg)4sXxiRVcfp*boBK^Lax5^|=9e65$%swIq4-Vl#R*wc +zNtbV+zsFp8Z`st)c*VymJMw0UEiena$xF@XGM-`Y(VA{ +ziFH?ZF_m(SY0-WvR8J|F^}UziyO_f2KXjKGT2e +zs?P%~wMWhnT&C@tz+y(1bwxjQ&v&GHvRHziw|V#d!>4!ptW`g-;og=%MI1a1E}Bst +zcI(IqLN5FEGgE>2oo|N<2J1i;n1IoRsPx#drZsn`Z~PMAlJ60V&M!I!7bWNU_bJG+ +z4;5gm@$ZFDybk^yU>eb=NLLo~4Yjf=kC3Tu( +zA6)ed`EUWel{<2)h_SXaosyt6MiF6HK`Q8~GkrFo(&mIxyM%QrBI?s{`bkyxD|pB` +z!LOs~RlDG2`dtEhFz2mq_Vk1LdD!fX%0+yMUt!Qlt1-|nwr8Rh@h2vtDCcLypD*;k +z0T;oqKdlJnKh~h-7ZXWj1)0@S%@934B&wd2@tt~cJ?qA#sS>1H=@+{CosZ>XMG4X7 +pj+6Ucx<}|`XAc`QUQ3;qw$zWv#>e*6g3#{=_;?-gy!UmO;BO1~<);7u + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0023.png b/themes/spinner/throbber-0023.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b3dbeef0ed06455beaffa218655d8070cf2324d7 +GIT binary patch +literal 1603 +zcmYL}doBm|NnwcRZPeW-J?vR*@C$Rb2?0KnL6w_rep#0oNfxIq!z;8Z#dz@#wKX_&Os +z^z;NOhQp>}l2f@D7M+*QyueMta8qdMG!BNtN@Xx;?EmyQg-&B6QUp&BP?XhfRA2&^ +z1~`LQ90rTUIJ?+lv3OTkyeoM3*O6XmX7BDySZX>A073k}*VzT!bf81b;Gb342@rI4 +zDT(PZg*?+;F95RG3BbQ{90Z-O4jU*TXubjEaRI636r`w%zV +z3WlSbpAvzebZ#%mMy{Z +z7Sb=UFwrh30BM&OA}C=^twxy@H$!5N1sEq+H +zT!NGsafT6Sb=rXf<$JbEL`uW$g#$yTaVVc5svG#x!H) +zCp0m3Duz>iTXpMazN^JExK8)lyOBJ^?>5H85jPT19$zs8%%U#r)xz(E_z)BB4b3!4 +zR_mCv&jVhVci5qL-%(;;U@YSBgCLZw>zQoHvLWn;;I%gRLNPbqcwC2HvSa&R$Df)+ +zhnyN&n7L$1N3Fr412*uF#Ld8!GD3H2nlMDE07k6|QP02W=CNQihnCAL=J7v0sYEV1 +z)I~L>32vv2;rF4I)K +zk!&*pDnpU{`FGTpUmtBeXKmiY>^2+-~(ajh9}F`veNqPA7|r1|c^W()JS1G^4 +zEz5q9TXVa~T+aLjR;Bk)=QQ7EJn_-_;fQIAlMd4(I|iz>J&QRm=q0SGvDB{1+g=zu +zdEic2N1z1$d@K>2>H40$zw47fje1DFY-Q^`MdUlKK1Bbpv#S9jamc#Ejr^F97B|tI +z=YHkpbvjQQtILWukz5`5vqr3QY8I}g)mI43mEXw +z?(H3CG+*U675_nPhRY~KNzQndXwo#-f1|uV>zEQq|_nw(S|l#M$1#*3TxEz +z36e+~RV5;~t<Ydlqt;ie?wH8Rqaa5!$ymVbd +w7Va}%9+gQkg;W)49{h64Q@D6+QnPa~JmKc`YyErcp~H99LK*gV~H-4qx^27b?k@6to%%DsmVwy9Hy~h8{7N{$()LWYGLG8bp1G4 +z#nB4+adIbVbr&fMQMwyrjOd(mU)|##_j!EY@7Lq;dcGg;&+D&G&LOh5&iXCu0RYe; +z5j`oOny-}>6zsf|lzC8Kam1rM0MLf7)jFWG%n&qP`TMARFJ>$qKruKhIx3pUVueSb +zc-#n76qApNi#@^OB=8w1K7-Dp^H97vCYw#?{-<`dSUUSSEwc{-t}aRin2s)b%@EKeVjYj91+oL1nco~%52Ox*9aS9la +z&i(&MJG28SV3`kMy)U~@M8wj0=KkTVI8Xr$7N1^ZxDx;%!z54l04gl67{jPItbaym +zSmUMBNVKv1aAPkFdCZu=_tU=?Lp19;>NfpC;tXCr6a${uhp)V~a +zI4`H|^M?Gr%}_!hHuU4&Vx_eI7n$T~%#o70pI_}KXRbD6pWX;h0uKDp3JH8T>}^K0 +zff<@@b9m=^0)n&II%@v{OYJ{<(<*!pr}Q=3nxq*!WHJBTU4e9##;cJ`6>17`9ra>1 +zUS~QnFB&oM;*vzCsh|J8YWghaDmwpt;q1%*By6sLOLp#3MN +z)4ibL;=0?Hev!y2t&>wl{f;lDC#}|EDYB%LN^iui2Di-As)UoTACE)G@`9J5r4WC` +zaLMi;KRXT_T@bcsZQ5=5z;aHH;c9)U8Ut9+|wnpfxw +zP1}^{nK}{Tc7G-IFucrX)D}9DG1F0e9z`hWYZL}I?_c;$r+@*cCfLO#flEKok4P>}FN(yvEXu +z5KfW8uRlA_bd!$hZRo*%JV(3ov^R3dc0OKduEY~ +z5$7Sp>x8*&AyCtG3f-!ppqJ;O=$%NG4AztfatP68N{hB_I1w7Iix#N5DoC@XF_avauVm!Ef22z)- +z{$8sk`&<&uI_8bll;Y3RIjn77+>+VT7iYTAn{PF*=)0o;=}?hRSAGgA(M^~LTRx5X +zT<|uu@Dx$(QGZfIVIqlR=a*Z`Q#C}gBu>=HBGaBqH@!T@ZZ$_iRVPM9+ +z^Hcc+N@FO+wS$v+L=eT{))r@YBpnFGTLoH{gj|rPb#CXAM_djW=iceS%^CjIRR-0quIY_p +zU?5S|lL%qe$0@jqdOnHV27xcaKjDy^<-$FSu;h#SIKj6?8#}ziGy~%Ohvcn?Zof3l +zoh{iB_>DzQnzoCH^+wpdU;lQoLoQt$Je6cBYqAfFG +z_4YNYs&Q((%c$YG&yJjgIHMMwXX-%}jK_*@F{K1A;C3-G6wQ#HhoA4lZjRE+3q#2^>ob +xnW{0GfYu~c=SS4;6s*o!KNBIY>@RcvTcZ%$p7KGe+64ZC0BIlDQ|u9z`433t&fow5 + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0025.png b/themes/spinner/throbber-0025.png +new file mode 100644 +index 0000000000000000000000000000000000000000..3905e00eeb09a3546eab2dec2158fa9bc5f280f4 +GIT binary patch +literal 1604 +zcmYL}dsGs36vsiy0B0%Uqm1bmq`l;kHnoM1K%;zt6bZkrln|nmSLJL?-Hj|I$$3}BFOx}NLPmf`8BIs$)K)NW)~D)tx*E~gJH(?R$$3}7%hOn`vJ-OqTR4)B|7+(ci8SMsz0-Wu@mS +z9(E}B#v7oGQ|&_<@yEfg7Na%uiOSB-iwlumO{ClP_4T+Nc>L9ks&n%Cn!~x>oS0|% +z^0ib3ox44q;a`)gE|{-aEj%MU`A6e?Z^e~}Ja&V@Z+#j2YvRnK+S*+N+BFCGh?H>r +zHS1EhxxBsOO7-VO>e=g8cr@9=hnOEvva5FKEyWiz-{Gtkp5PD1069e|v>cri(#q5;ziiY58p?ksP +zu_V29EJ`-(anf+t+sSS{sG&t6V>-p +zGmBH4ce!bU!a5OPYtehVrrKx94c-)^bLCsLJb5)z@z+N+7if5>XMY<#uI#pc*SWG@ +z0`~~jhcyikE0|glM(K#Z2bbM3jxp!v-`Hk&kZ>#sVW&oos03a5H6to +zp`~-BM-`?bt%z&^YZaxH4BgK}wyum%C60$aSwBb^Qq5j^cr9`?^p$m5RBE%7n@*)v +znp5+Ni!SVf$&oxWd3lJ|*sRUcw!u9hx5(LnaM%B;L2slYXB{iASK=X`ucL1FRoSvcsM^y_=sOM?v#moSz?Av^`%uIs8f=J +zjsm^vhDPnYN?NT&Ef{%= +z@ps<PYq;ZF~D4IVE@+G>%VU|P~h%*?N? +zTaq|ppr$Qzkn;SuOz}0Km#f(htaP=)D^_3r$axYZ2a0BM`t{<+d&F~XQVR*Bk&Am^7d4XaWsbl~oT7)zZjixz?>dejRqAvxsS|r|qQq +ztvL=>_7)aooX>-^7G9L-I&j%Q5|j$SjF +wD~E2)ka~oIzC8+u<0Gd@SoVvtpxGs$Ch&UB0pY0y-8Tpz5q$~O9${(!0^C;FL;wH) + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0026.png b/themes/spinner/throbber-0026.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4c02eb167941a3611d36f1b0cfab5086d77ad0ac +GIT binary patch +literal 1605 +zcmYL}eKga19LIl{Yh&g4DH6`&dT0-5hIAur6Qib7M%k>WZDt!|=3$~Jc0E-0dRlc{ +zNkTiggeB!6*F}mf<+ySdtHw*leqO*CtPYQuBamUyIprN~2N%ntP7kLb +z*enX-bQA}{q$SX!V>yusP9&91Wh2uywg=Uk{_Mr(5>D2h%6kVw}b*8#mRZ*WGzz~5J4g)5)~`nB_3 +zk;2p7^!6((RygoO;7Fvyr4ewa0_tr-B8AGJ0-Q)zG?`3gnL8p+G1;kydhaQ??j}E^ +zSdhy4|4BF!jSpJoD6r1=>;wvp$~Gs4)0qkdP!5>nt44MJ02;@8c?2DWB>mQYHuSJo +zR{{2xj%RiG`9Mzt%VT=Z=WWyAzAXoxV+UhzxOs49Mz3gSZ-BTA{ZMIIbEG~J!RZzb2ecD19+C%=b=4pH6}Fo6w_zp@pR +zg<&1-c5}k1lUqA;AAMNfB{o&Eo3xSk_`ZTB)!4}L_G^F>j+`65!Wl=uxd6ez3*!y! +z&!q@d-9>&@bw!#l&DCnmMWfVAB92UI@wcp)bh7Vi?QXe0r9aG&U)1X$O8>x28@s^~8W#GJLJZ(7xW9hML0){J)rD +zv@d8PplbIQ(+)?QMP*US*tdb4aY;PH)VP1gJJ0%LRx$O0RN#yTcpn>BA{ +z=ft;=RQC4O#>sl6P}7%clf49VFtfj9)FQ@OAgg6q5FS`IjHxwdj-kV%hCjiMBpS5d +zDa+j6n!g^eGg<&0hWNF+n^#UZfNMLeFoRzLZLZV!ya5%vTJqC2ry$mf=PNz|T)Z4t +z)W0)WsB~#`u3*%ytfCk4e8j`-j&xzRIJ-^HG$o`;(mmca^~p@B_+#Oc@2FR{VUC~b +z3(z=G-|jy2X2Xmr;rjh|!B{?W5iqF(E}^b{6_*%`aM>nfJr0>OYo)?CUS7^ET_}$) +zx;S1jsX`O#O@ZtqGEA$#l$$=ld@v)r%_pHD;$m^wN2s^fscs?3L1TGaNot0Z@q{dV +zb*i=$W^udfYt!}oi4q-O8mc;T50Sx=Tb#K)bSIuUd=lar)MFRpHki_!RQ)y=i_zBL +z<+H12M9hnixUu%p^3n7?1YPigNB-xdkOk>Ti2Jix9Zl9v_jIkf)*C9>Z=mP<#4)X! +z3F?nFEaSJ}WQim<+@ehKz#7i +z%Gb%y#@zNoE~`C|Y(G=CpTd7!A3`!~J~7yKp(1C8Bvin4%JdE_-Qa(PmTeCOx_*BQ +zpZCH25n7y1@WGurC^n&>Qc`!kAA4IUV1HBRM3!al-kJo0D_2Zoc4jfG1*)zV!5Ww4 +zR(G@PCeJ?Z)^wgtR<*Sdjt93Ss*#i{1bA3XLoO*JBVx$l`UYHXyrwMTEl&MB))-tC +z>-S{I)2i-qjky?9|^4S*FA2I)RZ_`h(WEkpwZiqXPtGcQguH21YkZ9q5 +zP1|+%wlRj$jkwq8XVGx?UZqf0=yUe)L!4=>pUZsF^pcygO!yq}ZfOI&;4(oWZPgp% +w_dN>G8A;-dz?^FSl8Pj#tYHI*=?RwN&~aO&a;Y)OHos;umu=0hFsa-Qr5+WzRJxpV +zO3{k-3gQ9)6uHzYK+y#wrRmIbr|>*jQ6PYch+%`6gDf_i#=vkn +z3=EUS!^B1_~RF`o_^vrup*}4owO1#M4-~rqa`0 +z@_tiV92)RT&{!-!r%SU@3H6ttKLd;g0bT?rhE4}LC|m4-SZcCCvU7C{pK05$jL?r~QfU3E7_hh#l)4at-srgS9j`%&nMZGj=zi!HKI8v?x% +z*5(n`c73y3MoPbOC(e4WN|-!vYs(yV;y#Nns;aE4^vTQ5x5`ek6t{e&3|5;`r!B=z +zFVD$}TjfTbk>%XA3yyQSIs0p$;*+B~Os<#G+dpm*iNMW414txw*q9N|wu<|td3Q}@ +zupH~!JRo8dic6XZkZX19flfohyDc}*xMVXoQ$m~bdMmznQoQ=8A)ceeYaQ<^oAeil +z8gv_))2*Au^@+TA0)p%l)$}J)`ZTP)2JRRKzc5;q(cq_Q*%RK{E4NixC!Cd!>(lR} +z#3rJ1HZg3b&y?L^YFG__S8eO%@QNoJ5|H0v7K`QgAi-9ZrL%<@ceV=QgnDD4I=@a` +zxU8CdkT$MAD5){bN;H-=WkSuCeY_HOc)Fw|J_UMtl?*6oy;9wg{OpgegO}R!%hy%x +z5HAFVrHlINOtZ8Hew!P9 +z&z@itHO3&*K>@`aq(sCwEMWHJn4$)m^|8-PPW8%i^|x9vGE+DR~pWP23BcEGPq|-c_u|Z@y@` +z0v-_e*i3LFXGTKsAX4^!iBC5uOe?7o>YVw~^4<_P>7vs_=vKd3NmuNZ@6kSR(Y1ZB +z!=U!f35ZXDP--3ybM6w)`3F5eYGlyR*hLkIy@A +zy~rN(*a6jhkahZA-Ur4uCxQC0lF#cc*XX)a88knue%XP}_Qpo4*j9aIWZcLUc#2^) +z?rXDt(?sZVerF_HO}L}#{Vr=db2X~_Jt$pneB|Zdd6HMRZcC(J;n$_@k1AO@yP5Mg +zaOVIIRs(D>4aQx5d$ +z(Fw>zpD)FJ)vQ)+t##GQ?q>)+joCg@-aGf@XHm3=Ncts&dDH8yDyt#!0;ynN&U?tD +zrf0XeSoeAFJN#gLDDeqXw)>t&|K++L`lgxXBMx76&V|xTRd%X!q0+dWW=^S&SWU}? +z`HW8TC)It6MsZdKg*A&O69myf+obla-gk}MZdGReBbOId?K5jmrb!o9RKsT0FnjuQ +z9RvuPr$G`VL=`QTIO0Tig=ys4>WQa2eTs)x>ZB!BL5KtAQ&rIZOnZ7{Q8)tDuYOlS +z@;K6_lCu%L`A)@H2KmR;6^u=2hrw#^D5TdX)7ZwoTxi*tOP%)_G$H}ek}4b%v=WBJ +z!IYNQ4#AccKKE7hMj{p_>mLtQABE;q%Gwqk4OC5D&PSZORzDr4LunacNpBED$7Td6 +zj^=O8>a64>s1*4L467ryg2yg;XRkBbjSazpYpB%a)C#xoy$N8E#oSWjkwf7!J2- +zu^-yA^O~uEM3&30)*`3Av!_?vLtmxcm>Ek|*>@L`y}fdU-QMuNcOEVyH_PLQA3|2i +zjJtY*-=ufj=claYce$4(D`46_u*_V@;JkD4K+93hd@()=D$m&+Y8&J@4~=&-?v6=lec?z2dlCF^(%e +zRssOvNG3%mfQno$dt312A3XRH6eyRJ!Uq5c#Bx~yCmPm(W_Ug^IsfBqHUmI2^EeE2 +zPBw=_rK9;gIyx&mAI)Wd$;sQF&qU`l85{;5&F5z4<}!HyX#kDQ$jzXMep>-XtyzwW +zrsgvM90rR=W3gylAQFoW4GIbk!fJGrd%+&qa!*n=hXG(Pq5p0izHQ^;BaqquGYXFi +zLL43!9xaOGP(Scgd05| +zM=bLMa6ks{|0e@5Az_I(CO{1TC;Lk}o54pWQaM~u0W1zLJicZV0IaZ(qa%`%p+(0v +zECUhNpXTjDs%$+9ixd;fNzNkoh$9nCZK)KE)LUDTdg0*gr?4l)xY?)iu!Ap?TH5`+ +zx4w*PVb;LPNty)O$c4l1;j*H)MRl)DBc*wng3JQ5s{8F&Z7aA2H5v_RpQqS=?lh~R +zfX+Ipy`%I%9O_={S!VK>{6hTxec>;6;7o2(J#{C|{U@ofLzSq)h(5LGAQvGP%22=FnvrO5$yR5)HqAPZ`lHm%bR&NT +zNZPj)@eQg2h1-Lm?+fX)4OXu|a8`Z;pGDY_j-0=5d%kRSoNhi*dy~Dd*o`-~StG+;E5!ZFqv1cbfv$$hU#+qE9K{yMQxCI=0}=r +z{o#imeXrF=6{U-Pi#v=&HvCVb<A8zxLV9JFa@{xEt2FcDZ4W|!7j%}-jr0ORh}*N9X2||i9^#lG8w+f< +z9rf^@X*;~Ue*C#Cn_x{@UDNnL6|s8?+oP8%nlC0>`v!JetQWlX3y*f6hv(hz=$d|% +zVy^e7P`;sbCJNYvX@5k%+FiVXX2-rlvx~e&FuujS*q-ucv(xQ!24f(d2#ZD*R4%&{A-9}(RuqvB-rJJpJ90~?>3J;y5dvfv@_ +zYBaEcEeyF(4^?P4CS5eeR0qmBr9Kmx4I$z|acyLbug}~F@mpj>(K=ls!yh57wZiP|w`Zr7a)$J)EEG(nL*lo-P^*R@YZIygM<{*v2gw +zCQxe`2+9{)@=YPs5c +zzJzk>UGT7h)t!1K%&(y*BEZ^BdcDH9LT~LBYd7BbsG!8M1bMUex%pb%2HH|JwGfX* +zR!#aP@I%-yLOa*7)OS=Yv?W;SIF&Fw?^jE2HQziShXh>*d=2gVezj?E+WEWiXG`Jj +z9ps5dt=!*~?b>_yl%V-m;GPW+F`C~`_ORfp_D{{R30 + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0029.png b/themes/spinner/throbber-0029.png +new file mode 100644 +index 0000000000000000000000000000000000000000..d9931e1ecbf2708841134a846f9d36d9cdbd20f8 +GIT binary patch +literal 1588 +zcmYL}eKga19LIm!qOFifi;-usn{8y~p-HWVgCuIM(q{c)?8!Dgka_A9NuAQ8sPu5v +zwXhJ$*j(za5*4kaEUARrMC^K4_ovQ1_j|sd&-vP`U&tKoX@Gy!Y(gFzpfMHM| +zIRa9fxmutPbwO(CI3x&OV6*@L7MjkL9#B+_f=qwm2C8r)lLZ3U1TGuICNkM +zW8FP$@OU3jPajXbylrp?G_!baCX&ep0UXZf*LC;qbbHK)*n*#{@aYhA_ZH^b8$+JS +zoVOmb_;lcxxZ!Z_`N{=t5Hy>ETNoe*1cV8EZd@G5xADO3<_R(*9^Hkw=^T%M76keK +zKk0@e1Vv5@A-v>g_I?Hn6xeK`vw4sLcz2@c36 +zd~XgG-|T7q6#YuQcTZFC9(me}p5csJ(hl!2=m_rJyC*owU)fNc_ICQFvaZ9l?``E| +zUX##=QrhdAdM2*d=?Ap6RPs=h +zv#oPc-ubJ8$irvl&sDDVfxSKlY{mlfLTytdE|ZZYDV|R>%2zpR9JQ8#du2*hjcBys +zfEVXo^c~v(bc+iQ-U!nHjD~{#P~3KUU#_>q$ik^>RSmHdjj9LdsQ;J<)!AdTWEQvK +zy~p_VU=K8_b8mGnr~LUQgH4oo!bbSpdDTvo9pfIC;!PRd$^4PnOP07k$)1V=$BN_2 +zx8}UhS5a{J+h?OR`ou2h;M=?rri%CtNklfjC`DNIDZMxP&cYvGX%3GC$}m;w*Jyo< +zNauUA&ArsFM2843NjLluV&76~LP(g-TEjMTtjD6QLnT5Mcf!@CnzB?_K~O--s>4@mU +zm)(jZn8{OrbiGTGB${(ZLDj^}##db@byqSLAE%=-YD0vG?Vp{)a8q_{X?l%eeo@(1 +zYmu3jFhS__o~{>uRmiZiI~%UUC-|%(ySi1ZtNgf(haWifg^ScQdFCExV>+r3K?wTj +zd!s*j(4x;vIw5Lu+av&^bwwByCfkm*;9NpR4yzwZmB5jO-LM +zIEKrO7ex0`K6O1j-=teMKK8&M{V7P|063?CgISmW@_U9++_7-1|5SEO|Rmey;+UOCm~rawU07jqNUQUUNHqj_0AzquXC4W +z_I}RL(;pt2x9@@z>mvXr8fvL3gi0O!cZ&{n_tmg$rdvEe_4oHxMi=2d2gp7ce`D** +znW3Dj+M<@w%hf^2NWZuBlCUq*X-uL~rHs1YWc2xi?vo{L-)wnH6lA3wuR6Ul14c4% +zBAmyVm#_U{R-Gm8ed(FVqBHWb;EA7L6P3k^-(rjU}V}$Z3 +z;z_1J<-oH`G5=n{w&^psOtJrwJ)NnP=o12FH^dJORAM@bZpGDvlB~it^DpWd=YTYO +zb11M*1LHmGkaXEe%wd%zWY}ggyO?cmwd4{fVX4$oN$DJP +zA<127>xn3)q%_V?=Q+>$KHtyh{XFm2=XrlWe|@v};=MH0*Q)~npo#PL +z@CVgwwbWF=&N*`AGbk{YcQ6M4;5w_N1YEkZ4m4f3o~b|>4gWE1sc4>kt>DR`K|#@c>8DY^oqsef)bOCFi8b-c)+2q +z>zvfSGOr`0AM0rJnsJS0v8>>=wceFI`&03$t0wKWm871)i8hVDLxL+brSCgma3=e8 +zg)Wx;4uMBM?Y(TCpc%SxQIn-N068rjl&c5ba~~q#-Zc9qezw^#+r)1!cxK}w{6cHx(+!rX7tyCFc&K(}wK-X_um +zbkfH>)sY2%0q#k-rQBV$>Nc)kCLUCV8x}?tn4e-Qo?Lz7B+HR!|Dogdm(?vlWps?Xb22Zys5>eJ$UBR_x{Ee^9D`$*rsQ4L*DoUo^&N +zl8b~Yd?Qy#b=Qvk_S^ZNT4Z(ex_GabSAvz6+26&J1J0JPc&hmR2R&UfI$x$|rro+E +zH;?4$Kd^#*M$Yn1YGK#n5!_OhkWQzw=;AFHXBkKq33@DZ^oCFJ8i<#SdNlaPHU~tm9;4clFB7nQKE(bBfZS?5;d&MvpbwawC2K +zv1dQx>&G{>+a#i2?IaaCB2(>?hYM^U0b#25&8B@95>rE9hVaZ!C@KGlasl%t0{e7* +zgIker4R0G6sXE-(x2b{Zr+O6lRViI*Q{*}~O09b;$*28< +z<&M2R-Zc|W=NA>bJ`{hMTOszpKa@ +X`%H>)eQ8Yx_}u|GPrOH^dqny_<-gJq + +literal 0 +HcmV?d00001 + +-- +2.20.1 + +From 50adbfd30085715940a22f1517c81584d73d767b Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 08:24:20 +0100 +Subject: [PATCH 07/74] two-step: Fix crash asking for password with multiple + heads + +Commit 9639ed895331 ("two-step: Fix animation not starting on later +added heads") unconditionally calls view_start_progress_animation() when +adding secondary heads, to fix the animation not running on secondary +heads when not asking for a password. + +But we should not start the animation when adding a head after we've +already entered PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY state, otherwise +we end up starting it a second time when the user is done entering his +password, causing plymouth to crash and the boot to hang. + +We already have the is_animating bool to indicate whether animations have +been started or not, use this to decide if we should start the animation +when adding a new head, fixing the crash. + +Fixes: 9639ed895331 ("two-step: Fix animation not starting on ... added heads") +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 924207c..0ceda90 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -1004,7 +1004,8 @@ add_pixel_display (ply_boot_splash_plugin_t *plugin, + if (plugin->is_visible) { + if (view_load (view)) { + ply_list_append_data (plugin->views, view); +- view_start_progress_animation (view); ++ if (plugin->is_animating) ++ view_start_progress_animation (view); + } else { + view_free (view); + } +-- +2.20.1 + +From addff821e0a036f7158758e0bf0ac97688d7500e Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 5 Nov 2018 15:03:28 +0100 +Subject: [PATCH 08/74] ply-image: Do not assume all files are PNGs + +So far the image loading code has been assuming that all files are PNGs, +this commit makes the code check the file-header before assuming the file +is a PNG. + +This is a preparation patch for adding support for also being able to load +BMP files. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-image.c | 45 +++++++++++++++++++------- + 1 file changed, 34 insertions(+), 11 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-image.c b/src/libply-splash-graphics/ply-image.c +index 8b46978..fbf42d6 100644 +--- a/src/libply-splash-graphics/ply-image.c ++++ b/src/libply-splash-graphics/ply-image.c +@@ -55,6 +55,8 @@ struct _ply_image + ply_pixel_buffer_t *buffer; + }; + ++const uint8_t png_header[8] = { 0x89, 'P', 'N', 'G', 0x0d, 0x0a, 0x1a, 0x0a }; ++ + ply_image_t * + ply_image_new (const char *filename) + { +@@ -112,8 +114,8 @@ transform_to_argb32 (png_struct *png, + } + } + +-bool +-ply_image_load (ply_image_t *image) ++static bool ++ply_image_load_png (ply_image_t *image, FILE *fp) + { + png_struct *png; + png_info *info; +@@ -121,13 +123,9 @@ ply_image_load (ply_image_t *image) + int bits_per_pixel, color_type, interlace_method; + png_byte **rows; + uint32_t *bytes; +- FILE *fp; + + assert (image != NULL); +- +- fp = fopen (image->filename, "re"); +- if (fp == NULL) +- return false; ++ assert (fp != NULL); + + png = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + assert (png != NULL); +@@ -137,10 +135,8 @@ ply_image_load (ply_image_t *image) + + png_init_io (png, fp); + +- if (setjmp (png_jmpbuf (png)) != 0) { +- fclose (fp); ++ if (setjmp (png_jmpbuf (png)) != 0) + return false; +- } + + png_read_info (png, info); + png_get_IHDR (png, info, +@@ -188,12 +184,39 @@ ply_image_load (ply_image_t *image) + + free (rows); + png_read_end (png, info); +- fclose (fp); + png_destroy_read_struct (&png, &info, NULL); + + return true; + } + ++bool ++ply_image_load (ply_image_t *image) ++{ ++ uint8_t header[16]; ++ bool ret = false; ++ FILE *fp; ++ ++ assert (image != NULL); ++ ++ fp = fopen (image->filename, "re"); ++ if (fp == NULL) ++ return false; ++ ++ if (fread (header, 1, 16, fp) != 16) ++ goto out; ++ ++ /* Rewind */ ++ if (fseek (fp, 0, SEEK_SET) != 0) ++ goto out; ++ ++ if (memcmp (header, png_header, sizeof(png_header)) == 0) ++ ret = ply_image_load_png (image, fp); ++ ++out: ++ fclose (fp); ++ return ret; ++} ++ + uint32_t * + ply_image_get_data (ply_image_t *image) + { +-- +2.20.1 + +From f5915187b44dd18dd9d1956d169bb17fbd4078d4 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 6 Nov 2018 09:15:22 +0100 +Subject: [PATCH 09/74] ply-image: Add support for loading BMPs + +Add support for loading BMP files. This is needed to be able to read the +the ACPI BGRT graphics (the firmware splash shown at boot by the firmware). + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-image.c | 88 ++++++++++++++++++++++++++ + 1 file changed, 88 insertions(+) + +diff --git a/src/libply-splash-graphics/ply-image.c b/src/libply-splash-graphics/ply-image.c +index fbf42d6..204fd2e 100644 +--- a/src/libply-splash-graphics/ply-image.c ++++ b/src/libply-splash-graphics/ply-image.c +@@ -55,6 +55,27 @@ struct _ply_image + ply_pixel_buffer_t *buffer; + }; + ++struct bmp_file_header { ++ uint16_t id; ++ uint32_t file_size; ++ uint32_t reserved; ++ uint32_t bitmap_offset; ++} __attribute__((__packed__)); ++ ++struct bmp_dib_header { ++ uint32_t dib_header_size; ++ int32_t width; ++ int32_t height; ++ uint16_t planes; ++ uint16_t bpp; ++ uint32_t compression; ++ uint32_t bitmap_size; ++ uint32_t horz_resolution; ++ uint32_t vert_resolution; ++ uint32_t colors_used; ++ uint32_t colors_important; ++} __attribute__((__packed__)); ++ + const uint8_t png_header[8] = { 0x89, 'P', 'N', 'G', 0x0d, 0x0a, 0x1a, 0x0a }; + + ply_image_t * +@@ -189,6 +210,69 @@ ply_image_load_png (ply_image_t *image, FILE *fp) + return true; + } + ++static bool ++ply_image_load_bmp (ply_image_t *image, FILE *fp) ++{ ++ uint32_t x, y, src_y, width, height, bmp_pitch, *dst; ++ struct bmp_file_header file_header; ++ struct bmp_dib_header dib_header; ++ uint8_t r, g, b, *buf, *src; ++ bool ret = false; ++ ++ assert (image != NULL); ++ assert (fp != NULL); ++ ++ if (fread (&file_header, 1, sizeof(struct bmp_file_header), fp) != sizeof(struct bmp_file_header)) ++ return false; ++ ++ if (fread (&dib_header, 1, sizeof(struct bmp_dib_header), fp) != sizeof(struct bmp_dib_header)) ++ return false; ++ ++ if (dib_header.dib_header_size != 40 || dib_header.width < 0 || ++ dib_header.planes != 1 || dib_header.bpp != 24 || ++ dib_header.compression != 0) ++ return false; ++ ++ width = dib_header.width; ++ height = abs (dib_header.height); ++ bmp_pitch = (3 * width + 3) & ~3; ++ ++ buf = malloc (bmp_pitch * height); ++ assert (buf); ++ ++ if (fseek (fp, file_header.bitmap_offset, SEEK_SET) != 0) ++ goto out; ++ ++ if (fread (buf, 1, bmp_pitch * height, fp) != bmp_pitch * height) ++ goto out; ++ ++ image->buffer = ply_pixel_buffer_new (width, height); ++ dst = ply_pixel_buffer_get_argb32_data (image->buffer); ++ ++ for (y = 0; y < height; y++) { ++ /* Positive header height means upside down row order */ ++ if (dib_header.height > 0) ++ src_y = (height - 1) - y; ++ else ++ src_y = y; ++ ++ src = buf + src_y * bmp_pitch; ++ ++ for (x = 0; x < width; x++) { ++ b = *src++; ++ g = *src++; ++ r = *src++; ++ *dst++ = (0xff << 24) | (r << 16) | (g << 8) | (b << 0); ++ } ++ } ++ ++ ply_pixel_buffer_set_opaque (image->buffer, true); ++ ret = true; ++out: ++ free (buf); ++ return ret; ++} ++ + bool + ply_image_load (ply_image_t *image) + { +@@ -212,6 +296,10 @@ ply_image_load (ply_image_t *image) + if (memcmp (header, png_header, sizeof(png_header)) == 0) + ret = ply_image_load_png (image, fp); + ++ else if (((struct bmp_file_header *)header)->id == 0x4d42 && ++ ((struct bmp_file_header *)header)->reserved == 0) ++ ret = ply_image_load_bmp (image, fp); ++ + out: + fclose (fp); + return ret; +-- +2.20.1 + +From 1723419e6c3ca89a973250ca8ca955baf8724af1 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 12:24:12 +0100 +Subject: [PATCH 10/74] ply-renderer: Add ply_renderer_get_panel_properties + function + +For some themes we want to read the firmware-logo to use as background, +when the LCD panel of a laptop is mounted non-upright and/or if it is +using scaling because of HiDPI then the image which we get from the +firmware will be pre-rotated and scaled to match the LCD panel. + +This new function will allow renderers to let themes know about this so +that they can adjust for the logo being pre-rotated and scaled. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-renderer-plugin.h | 5 +++++ + src/libply-splash-core/ply-renderer.c | 15 +++++++++++++++ + src/libply-splash-core/ply-renderer.h | 6 ++++++ + 3 files changed, 26 insertions(+) + +diff --git a/src/libply-splash-core/ply-renderer-plugin.h b/src/libply-splash-core/ply-renderer-plugin.h +index f1455d3..db18d19 100644 +--- a/src/libply-splash-core/ply-renderer-plugin.h ++++ b/src/libply-splash-core/ply-renderer-plugin.h +@@ -68,6 +68,11 @@ typedef struct + ply_renderer_input_source_t *input_source); + + const char * (*get_device_name)(ply_renderer_backend_t *backend); ++ bool (*get_panel_properties)(ply_renderer_backend_t *backend, ++ int *width, ++ int *height, ++ ply_pixel_buffer_rotation_t *rotation, ++ int *scale); + } ply_renderer_plugin_interface_t; + + #endif /* PLY_RENDERER_PLUGIN_H */ +diff --git a/src/libply-splash-core/ply-renderer.c b/src/libply-splash-core/ply-renderer.c +index ecf7082..5e83627 100644 +--- a/src/libply-splash-core/ply-renderer.c ++++ b/src/libply-splash-core/ply-renderer.c +@@ -410,4 +410,19 @@ ply_renderer_close_input_source (ply_renderer_t *renderer, + renderer->input_source_is_open = false; + } + ++bool ++ply_renderer_get_panel_properties (ply_renderer_t *renderer, ++ int *width, ++ int *height, ++ ply_pixel_buffer_rotation_t *rotation, ++ int *scale) ++{ ++ if (!renderer->plugin_interface->get_panel_properties) ++ return false; ++ ++ return renderer->plugin_interface->get_panel_properties (renderer->backend, ++ width, height, ++ rotation, scale); ++} ++ + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +diff --git a/src/libply-splash-core/ply-renderer.h b/src/libply-splash-core/ply-renderer.h +index 59391e1..c0e0ed5 100644 +--- a/src/libply-splash-core/ply-renderer.h ++++ b/src/libply-splash-core/ply-renderer.h +@@ -76,6 +76,12 @@ void ply_renderer_set_handler_for_input_source (ply_renderer_t + + void ply_renderer_close_input_source (ply_renderer_t *renderer, + ply_renderer_input_source_t *input_source); ++ ++bool ply_renderer_get_panel_properties (ply_renderer_t *renderer, ++ int *width, ++ int *height, ++ ply_pixel_buffer_rotation_t *rotation, ++ int *scale); + #endif + + #endif /* PLY_RENDERER_H */ +-- +2.20.1 + +From ed3aae9d8f79afb546cc9edeb8b051237c3e4752 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 14:26:11 +0100 +Subject: [PATCH 11/74] drm: Implement ply_renderer_get_panel_properties + +Implement the get_panel_properties plugin interface. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 34 +++++++++++++++++++++++++++++- + 1 file changed, 33 insertions(+), 1 deletion(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 1ff2b29..34b52d7 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -138,6 +138,11 @@ struct _ply_renderer_backend + uint32_t is_active : 1; + uint32_t requires_explicit_flushing : 1; + uint32_t use_preferred_mode : 1; ++ ++ int panel_width; ++ int panel_height; ++ ply_pixel_buffer_rotation_t panel_rotation; ++ int panel_scale; + }; + + ply_renderer_plugin_interface_t *ply_renderer_backend_get_interface (void); +@@ -542,6 +547,15 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + ply_pixel_buffer_fill_with_color (head->pixel_buffer, NULL, + 0.0, 0.0, 0.0, 1.0); + ++ if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS || ++ connector->connector_type == DRM_MODE_CONNECTOR_eDP || ++ connector->connector_type == DRM_MODE_CONNECTOR_DSI) { ++ backend->panel_width = mode->hdisplay; ++ backend->panel_height = mode->vdisplay; ++ backend->panel_rotation = rotation; ++ backend->panel_scale = ply_pixel_buffer_get_device_scale (head->pixel_buffer); ++ } ++ + return head; + } + +@@ -1488,6 +1502,23 @@ close_input_source (ply_renderer_backend_t *backend, + input_source->backend = NULL; + } + ++static bool ++get_panel_properties (ply_renderer_backend_t *backend, ++ int *width, ++ int *height, ++ ply_pixel_buffer_rotation_t *rotation, ++ int *scale) ++{ ++ if (!backend->panel_width) ++ return false; ++ ++ *width = backend->panel_width; ++ *height = backend->panel_height; ++ *rotation = backend->panel_rotation; ++ *scale = backend->panel_scale; ++ return true; ++} ++ + ply_renderer_plugin_interface_t * + ply_renderer_backend_get_interface (void) + { +@@ -1509,7 +1540,8 @@ ply_renderer_backend_get_interface (void) + .open_input_source = open_input_source, + .set_handler_for_input_source = set_handler_for_input_source, + .close_input_source = close_input_source, +- .get_device_name = get_device_name ++ .get_device_name = get_device_name, ++ .get_panel_properties = get_panel_properties, + }; + + return &plugin_interface; +-- +2.20.1 + +From 986c911e21b41464aa17006fd048dc38d5824325 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 15:49:40 +0100 +Subject: [PATCH 12/74] ply-pixel-buffer: Fix fill_with_buffer fastpath when + device_scale != 1 + +After calling ply_pixel_buffer_crop_area_to_clip_area cropped_area.x/y +are in device coordinates. So when calculating the x/y offset in the +source-buffer due to device-clip areas possible making cropped_area.x/y +larger then just the xoffset/yoffset (in the canvas) we must multiply +the original xoffset/yoffset by device_scale before subtracting. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-buffer.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/libply-splash-core/ply-pixel-buffer.c b/src/libply-splash-core/ply-pixel-buffer.c +index de3b107..04aa0d6 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.c ++++ b/src/libply-splash-core/ply-pixel-buffer.c +@@ -868,8 +868,8 @@ ply_pixel_buffer_fill_with_buffer_at_opacity_with_clip (ply_pixel_buffer_t *canv + if (cropped_area.width == 0 || cropped_area.height == 0) + return; + +- x = cropped_area.x - x_offset; +- y = cropped_area.y - y_offset; ++ x = cropped_area.x - x_offset * canvas->device_scale; ++ y = cropped_area.y - y_offset * canvas->device_scale; + + ply_pixel_buffer_copy_area (canvas, source, x, y, &cropped_area); + +-- +2.20.1 + +From e1e9e554d2014d80ce666d85174dbea89b05e038 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 9 Nov 2018 23:05:24 +0100 +Subject: [PATCH 13/74] ply-pixel-buffer: Fix marking buffers as opaque when + doing a solid fill + +Instead of comparing fill_area addresses actually compare the contents +of the ply_rectangles. + +This allows us to use the memcpy fastpath in ply_pixel_buffer_with_buffer +more often. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-buffer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libply-splash-core/ply-pixel-buffer.c b/src/libply-splash-core/ply-pixel-buffer.c +index 04aa0d6..86e8e3f 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.c ++++ b/src/libply-splash-core/ply-pixel-buffer.c +@@ -315,7 +315,7 @@ ply_pixel_buffer_fill_area_with_pixel_value (ply_pixel_buffer_t *buffer, + /* If we're filling the entire buffer with a fully opaque color, + * then make note of it + */ +- if (fill_area == &buffer->area && ++ if (memcmp(fill_area, &buffer->area, sizeof(ply_rectangle_t)) == 0 && + (pixel_value >> 24) == 0xff) { + buffer->is_opaque = true; + } +-- +2.20.1 + +From 385a008c83e41d7958392bc4cf8aacb94965fe30 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 6 Nov 2018 18:55:27 +0100 +Subject: [PATCH 14/74] ply-pixel-buffer: Add + ply_pixel_buffer_get/set_device_rotation helpers + +For some themes we want to use the firmware-logo / splash as background, +when the LCD panel of a laptop is mounted non-upright then the image which +we get from the firmware will be pre-rotated to match the LCD panel mount. + +This commit adds ply_pixel_buffer_set/get_device_rotation helpers to +help deal with this. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-buffer.c | 30 +++++++++++++++++++++++ + src/libply-splash-core/ply-pixel-buffer.h | 6 +++++ + 2 files changed, 36 insertions(+) + +diff --git a/src/libply-splash-core/ply-pixel-buffer.c b/src/libply-splash-core/ply-pixel-buffer.c +index 86e8e3f..1599bcb 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.c ++++ b/src/libply-splash-core/ply-pixel-buffer.c +@@ -1079,4 +1079,34 @@ ply_pixel_buffer_set_device_scale (ply_pixel_buffer_t *buffer, + buffer->logical_area.height = buffer->area.height / scale; + } + ++ply_pixel_buffer_rotation_t ++ply_pixel_buffer_get_device_rotation (ply_pixel_buffer_t *buffer) ++{ ++ return buffer->device_rotation; ++} ++ ++void ++ply_pixel_buffer_set_device_rotation (ply_pixel_buffer_t *buffer, ++ ply_pixel_buffer_rotation_t device_rotation) ++{ ++ if (buffer->device_rotation == device_rotation) ++ return; ++ ++ buffer->device_rotation = device_rotation; ++ ++ if (device_rotation == PLY_PIXEL_BUFFER_ROTATE_CLOCKWISE || ++ device_rotation == PLY_PIXEL_BUFFER_ROTATE_COUNTER_CLOCKWISE) { ++ unsigned long tmp = buffer->area.width; ++ buffer->area.width = buffer->area.height; ++ buffer->area.height = tmp; ++ ++ ply_pixel_buffer_set_device_scale (buffer, buffer->device_scale); ++ } ++ ++ while (ply_list_get_length (buffer->clip_areas) > 0) { ++ ply_pixel_buffer_pop_clip_area (buffer); ++ } ++ ply_pixel_buffer_push_clip_area (buffer, &buffer->area); ++} ++ + /* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */ +diff --git a/src/libply-splash-core/ply-pixel-buffer.h b/src/libply-splash-core/ply-pixel-buffer.h +index ea7f833..ddec47d 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.h ++++ b/src/libply-splash-core/ply-pixel-buffer.h +@@ -59,6 +59,12 @@ int ply_pixel_buffer_get_device_scale (ply_pixel_buffer_t *buffer); + void ply_pixel_buffer_set_device_scale (ply_pixel_buffer_t *buffer, + int scale); + ++ply_pixel_buffer_rotation_t ++ply_pixel_buffer_get_device_rotation (ply_pixel_buffer_t *buffer); ++/* Note calling this removes all pushed clip-areas */ ++void ply_pixel_buffer_set_device_rotation (ply_pixel_buffer_t *buffer, ++ ply_pixel_buffer_rotation_t rotation); ++ + unsigned long ply_pixel_buffer_get_width (ply_pixel_buffer_t *buffer); + unsigned long ply_pixel_buffer_get_height (ply_pixel_buffer_t *buffer); + +-- +2.20.1 + +From 3f71c28e455ea26c23ab924146dae0871b342732 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 8 Nov 2018 14:25:05 +0100 +Subject: [PATCH 15/74] ply-pixel-buffer: Add ply_pixel_buffer_rotate_upright + helper + +For some themes we want to use the firmware-logo / splash as background, +when the LCD panel of a laptop is mounted non-upright then the image which +we get from the firmware will be pre-rotated to match the LCD panel mount. + +Until now our device-rotation support was limited to using rotated +pixel_buffer-s as destination / canvas only. + +This commit adds a ply_pixel_buffer_rotate_upright helper to rotate +a nop-upright source buffer upright so that we can use it as source-buffer +to other functions which expect source-buffers to always be upright. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-buffer.c | 25 +++++++++++++++++++++++ + src/libply-splash-core/ply-pixel-buffer.h | 6 ++++++ + 2 files changed, 31 insertions(+) + +diff --git a/src/libply-splash-core/ply-pixel-buffer.c b/src/libply-splash-core/ply-pixel-buffer.c +index 1599bcb..3ce6f78 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.c ++++ b/src/libply-splash-core/ply-pixel-buffer.c +@@ -1109,4 +1109,29 @@ ply_pixel_buffer_set_device_rotation (ply_pixel_buffer_t *buffer, + ply_pixel_buffer_push_clip_area (buffer, &buffer->area); + } + ++ply_pixel_buffer_t * ++ply_pixel_buffer_rotate_upright (ply_pixel_buffer_t *old_buffer) ++{ ++ ply_pixel_buffer_t *buffer; ++ int x,y, width, height; ++ uint32_t pixel; ++ ++ width = old_buffer->area.width; ++ height = old_buffer->area.height; ++ ++ buffer = ply_pixel_buffer_new (width, height); ++ ++ for (y = 0; y < height; y++) { ++ for (x = 0; x < width; x++) { ++ pixel = ply_pixel_buffer_get_pixel (old_buffer, x, y); ++ ply_pixel_buffer_set_pixel (buffer, x, y, pixel); ++ } ++ } ++ ++ ply_pixel_buffer_set_device_scale (buffer, old_buffer->device_scale); ++ ply_pixel_buffer_set_opaque (buffer, old_buffer->is_opaque); ++ ++ return buffer; ++} ++ + /* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */ +diff --git a/src/libply-splash-core/ply-pixel-buffer.h b/src/libply-splash-core/ply-pixel-buffer.h +index ddec47d..7b5da36 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.h ++++ b/src/libply-splash-core/ply-pixel-buffer.h +@@ -159,6 +159,12 @@ ply_pixel_buffer_t *ply_pixel_buffer_tile (ply_pixel_buffer_t *old_buffer, + long width, + long height); + ++/* Return the upright version of a buffer which is non upright. ++ * This is the *only* ply_pixel_buffer function which works correctly with a ++ * non upright buffer as source. ++ */ ++ply_pixel_buffer_t *ply_pixel_buffer_rotate_upright (ply_pixel_buffer_t *old_buffer); ++ + #endif + + #endif /* PLY_PIXEL_BUFFER_H */ +-- +2.20.1 + +From ae8a676c096731e6ad0868e80c53e23ba82c0695 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 15:46:06 +0100 +Subject: [PATCH 16/74] ply-pixel-display: Add + ply_pixel_display_get_device_scale() function + +Add a function to get the device scale for a ply-pixel-display. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-display.c | 8 ++++++++ + src/libply-splash-core/ply-pixel-display.h | 1 + + 2 files changed, 9 insertions(+) + +diff --git a/src/libply-splash-core/ply-pixel-display.c b/src/libply-splash-core/ply-pixel-display.c +index cb01a2c..dc088bb 100644 +--- a/src/libply-splash-core/ply-pixel-display.c ++++ b/src/libply-splash-core/ply-pixel-display.c +@@ -51,6 +51,7 @@ struct _ply_pixel_display + + unsigned long width; + unsigned long height; ++ int device_scale; + + ply_pixel_display_draw_handler_t draw_handler; + void *draw_handler_user_data; +@@ -77,6 +78,7 @@ ply_pixel_display_new (ply_renderer_t *renderer, + + display->width = size.width; + display->height = size.height; ++ display->device_scale = ply_pixel_buffer_get_device_scale (pixel_buffer); + + return display; + } +@@ -105,6 +107,12 @@ ply_pixel_display_get_height (ply_pixel_display_t *display) + return display->height; + } + ++int ++ply_pixel_display_get_device_scale (ply_pixel_display_t *display) ++{ ++ return display->device_scale; ++} ++ + static void + ply_pixel_display_flush (ply_pixel_display_t *display) + { +diff --git a/src/libply-splash-core/ply-pixel-display.h b/src/libply-splash-core/ply-pixel-display.h +index 675c181..a57b9a9 100644 +--- a/src/libply-splash-core/ply-pixel-display.h ++++ b/src/libply-splash-core/ply-pixel-display.h +@@ -51,6 +51,7 @@ ply_renderer_head_t *ply_pixel_display_get_renderer_head (ply_pixel_display_t *d + + unsigned long ply_pixel_display_get_width (ply_pixel_display_t *display); + unsigned long ply_pixel_display_get_height (ply_pixel_display_t *display); ++int ply_pixel_display_get_device_scale (ply_pixel_display_t *display); + + void ply_pixel_display_set_draw_handler (ply_pixel_display_t *display, + ply_pixel_display_draw_handler_t draw_handler, +-- +2.20.1 + +From 9f3aff2e7c5ad70b37c779c06509c8d1c74a6e58 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 6 Nov 2018 14:41:38 +0100 +Subject: [PATCH 17/74] two-step: Use a pixel-buffer instead of an image for + the view's background + +Use a pixel-buffer instead of an image, this gives us more flexibility. + +This is a preparation patch for adding support to (optionally) use +the firmware splash screen logo (from the ACPI BGRT extension) as +background. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 0ceda90..efdcaa9 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -93,7 +93,7 @@ typedef struct + ply_label_t *message_label; + ply_rectangle_t box_area, lock_area, watermark_area; + ply_trigger_t *end_trigger; +- ply_image_t *background_image; ++ ply_pixel_buffer_t *background_buffer; + } view_t; + + struct _ply_boot_splash_plugin +@@ -181,8 +181,8 @@ view_free (view_t *view) + ply_label_free (view->label); + ply_label_free (view->message_label); + +- if (view->background_image != NULL) +- ply_image_free (view->background_image); ++ if (view->background_buffer != NULL) ++ ply_pixel_buffer_free (view->background_buffer); + + free (view); + } +@@ -255,7 +255,7 @@ view_load (view_t *view) + + if (plugin->background_tile_image != NULL) { + ply_trace ("tiling background to %lux%lu", screen_width, screen_height); +- view->background_image = ply_image_tile (plugin->background_tile_image, screen_width, screen_height); ++ view->background_buffer = ply_pixel_buffer_tile (ply_image_get_buffer (plugin->background_tile_image), screen_width, screen_height); + } + + if (plugin->watermark_image != NULL) { +@@ -882,9 +882,9 @@ draw_background (view_t *view, + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, + plugin->background_start_color); + +- if (view->background_image != NULL) { ++ if (view->background_buffer != NULL) { + uint32_t *data; +- data = ply_image_get_data (view->background_image); ++ data = ply_pixel_buffer_get_argb32_data (view->background_buffer); + + /* We must pass NULL as fill area, because the fill area + must be sized as the image we're sourcing from, otherwise +-- +2.20.1 + +From e10ed13fffb59b7a7656227c8f77b93310c160cd Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 20:27:08 +0100 +Subject: [PATCH 18/74] two-step: Speed up background-tile drawing on HiDPI + screens + +Before this commit background drawing on HiDPI screens is quite slow +and CPU intensive, because we do the interpolating scale, which does +a whole bunch of double-precision float operations for *each* pixel +for every frame we draw. + +When using two-step with a background-tile on a Cherry Trail machine with +a HiDPI screen this results in the diskcrypt password entry being visible +laggy, I can type the password much faster then the bullets show up. + +This also means we are pegging the CPU during boot, significantly slowing +down the boot. + +This commit fixes this by creating the background_buffer at the screen's +device_scale and rotation, only doing the scaling once. + +This commit further speeds things up by also doing the solid/gradient fill +of the background + the alpha blend of the tiled background-image once, +creating a solid background which allows us to hit the +ply_pixel_buffer_fill_with_buffer memcpy fast-path and avoids the need to +re-do the solid/gradient fill + alpha-blend each frame we render. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 40 ++++++++++++++++++---------- + 1 file changed, 26 insertions(+), 14 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index efdcaa9..65586f9 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -245,17 +245,38 @@ view_load_end_animation (view_t *view) + static bool + view_load (view_t *view) + { +- unsigned long screen_width, screen_height; ++ unsigned long screen_width, screen_height, screen_scale; + ply_boot_splash_plugin_t *plugin; ++ ply_pixel_buffer_t *buffer; + + plugin = view->plugin; + + screen_width = ply_pixel_display_get_width (view->display); + screen_height = ply_pixel_display_get_height (view->display); + ++ buffer = ply_renderer_get_buffer_for_head( ++ ply_pixel_display_get_renderer (view->display), ++ ply_pixel_display_get_renderer_head (view->display)); ++ screen_scale = ply_pixel_buffer_get_device_scale (buffer); ++ + if (plugin->background_tile_image != NULL) { + ply_trace ("tiling background to %lux%lu", screen_width, screen_height); +- view->background_buffer = ply_pixel_buffer_tile (ply_image_get_buffer (plugin->background_tile_image), screen_width, screen_height); ++ ++ /* Create a buffer at screen scale so that we only do the slow interpolating scale once */ ++ view->background_buffer = ply_pixel_buffer_new (screen_width * screen_scale, screen_height * screen_scale); ++ ply_pixel_buffer_set_device_scale (view->background_buffer, screen_scale); ++ ++ if (plugin->background_start_color != plugin->background_end_color) ++ ply_pixel_buffer_fill_with_gradient (view->background_buffer, NULL, ++ plugin->background_start_color, ++ plugin->background_end_color); ++ else ++ ply_pixel_buffer_fill_with_hex_color (view->background_buffer, NULL, ++ plugin->background_start_color); ++ ++ buffer = ply_pixel_buffer_tile (ply_image_get_buffer (plugin->background_tile_image), screen_width, screen_height); ++ ply_pixel_buffer_fill_with_buffer (view->background_buffer, buffer, 0, 0); ++ ply_pixel_buffer_free (buffer); + } + + if (plugin->watermark_image != NULL) { +@@ -874,7 +895,9 @@ draw_background (view_t *view, + area.width = width; + area.height = height; + +- if (plugin->background_start_color != plugin->background_end_color) ++ if (view->background_buffer != NULL) ++ ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); ++ else if (plugin->background_start_color != plugin->background_end_color) + ply_pixel_buffer_fill_with_gradient (pixel_buffer, &area, + plugin->background_start_color, + plugin->background_end_color); +@@ -882,17 +905,6 @@ draw_background (view_t *view, + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, + plugin->background_start_color); + +- if (view->background_buffer != NULL) { +- uint32_t *data; +- data = ply_pixel_buffer_get_argb32_data (view->background_buffer); +- +- /* We must pass NULL as fill area, because the fill area +- must be sized as the image we're sourcing from, otherwise +- sampling does not work +- */ +- ply_pixel_buffer_fill_with_argb32_data_with_clip (pixel_buffer, NULL, NULL, data); +- } +- + if (plugin->watermark_image != NULL) { + uint32_t *data; + +-- +2.20.1 + +From 856297c7a4bc8dff5b3d03951b250d9620468f9a Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 6 Nov 2018 14:55:29 +0100 +Subject: [PATCH 19/74] two-step: Add ACPI BGRT extension support + +Add support to (optionally) use the firmware splash screen logo +from the ACPI BGRT extension as background. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 86 +++++++++++++++++++++++++++- + 1 file changed, 84 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 65586f9..3570182 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -94,6 +94,7 @@ typedef struct + ply_rectangle_t box_area, lock_area, watermark_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; ++ bool background_is_bgrt; + } view_t; + + struct _ply_boot_splash_plugin +@@ -105,6 +106,7 @@ struct _ply_boot_splash_plugin + ply_image_t *corner_image; + ply_image_t *header_image; + ply_image_t *background_tile_image; ++ ply_image_t *background_bgrt_image; + ply_image_t *watermark_image; + ply_list_t *views; + +@@ -242,6 +244,62 @@ view_load_end_animation (view_t *view) + view->end_animation = NULL; + } + ++/* The Microsoft boot logo spec says that the logo must use a black background ++ * and have its center at 38.2% from the screen's top (golden ratio). ++ * We reproduce this exactly here so that we get a background which is an exact ++ * match of the firmware's boot splash. ++ * At the time of writing this comment this is documented in a document called ++ * "Boot screen components" which is available here: ++ * https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/boot-screen-components ++ * Note that we normally do not use the firmware reported x and y-offset as ++ * that is based on the EFI fb resolution which may not be the native ++ * resolution of the screen (esp. when using multiple heads). ++ */ ++static void ++view_set_bgrt_background (view_t *view) ++{ ++ ply_pixel_buffer_rotation_t panel_rotation = PLY_PIXEL_BUFFER_ROTATE_UPRIGHT; ++ int x_offset, y_offset, sysfs_x_offset, sysfs_y_offset, width, height; ++ int panel_width = 0, panel_height = 0, panel_scale = 1; ++ int screen_width, screen_height, screen_scale; ++ ply_pixel_buffer_t *bgrt_buffer; ++ ++ if (!view->plugin->background_bgrt_image) ++ return; ++ ++ screen_width = ply_pixel_display_get_width (view->display); ++ screen_height = ply_pixel_display_get_height (view->display); ++ screen_scale = ply_pixel_display_get_device_scale (view->display); ++ ++ bgrt_buffer = ply_image_get_buffer (view->plugin->background_bgrt_image); ++ ++ if (ply_renderer_get_panel_properties (ply_pixel_display_get_renderer (view->display), ++ &panel_width, &panel_height, ++ &panel_rotation, &panel_scale)) { ++ ply_pixel_buffer_set_device_rotation (bgrt_buffer, panel_rotation); ++ ply_pixel_buffer_set_device_scale (bgrt_buffer, panel_scale); ++ } ++ ++ width = ply_pixel_buffer_get_width (bgrt_buffer); ++ height = ply_pixel_buffer_get_height (bgrt_buffer); ++ ++ x_offset = (screen_width - width) / 2; ++ y_offset = screen_height * 382 / 1000 - height / 2; ++ ++ ply_trace ("using %dx%d bgrt image centered at %dx%d for %dx%d screen", ++ width, height, x_offset, y_offset, screen_width, screen_height); ++ ++ view->background_buffer = ply_pixel_buffer_new (screen_width * screen_scale, screen_height * screen_scale); ++ ply_pixel_buffer_set_device_scale (view->background_buffer, screen_scale); ++ ply_pixel_buffer_fill_with_hex_color (view->background_buffer, NULL, 0x000000); ++ if (x_offset >= 0 && y_offset >= 0) { ++ bgrt_buffer = ply_pixel_buffer_rotate_upright (bgrt_buffer); ++ ply_pixel_buffer_fill_with_buffer (view->background_buffer, bgrt_buffer, x_offset, y_offset); ++ ply_pixel_buffer_free (bgrt_buffer); ++ } ++ view->background_is_bgrt = true; ++} ++ + static bool + view_load (view_t *view) + { +@@ -259,7 +317,9 @@ view_load (view_t *view) + ply_pixel_display_get_renderer_head (view->display)); + screen_scale = ply_pixel_buffer_get_device_scale (buffer); + +- if (plugin->background_tile_image != NULL) { ++ view_set_bgrt_background (view); ++ ++ if (!view->background_buffer && plugin->background_tile_image != NULL) { + ply_trace ("tiling background to %lux%lu", screen_width, screen_height); + + /* Create a buffer at screen scale so that we only do the slow interpolating scale once */ +@@ -670,6 +730,10 @@ create_plugin (ply_key_file_t *key_file) + + free (color); + ++ /* Boolean option, true if the key is present */ ++ if (ply_key_file_get_value (key_file, "two-step", "UseBGRT")) ++ plugin->background_bgrt_image = ply_image_new ("/sys/firmware/acpi/bgrt/image"); ++ + progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction"); + + if (progress_function != NULL) { +@@ -747,6 +811,9 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin) + if (plugin->background_tile_image != NULL) + ply_image_free (plugin->background_tile_image); + ++ if (plugin->background_bgrt_image != NULL) ++ ply_image_free (plugin->background_bgrt_image); ++ + if (plugin->watermark_image != NULL) + ply_image_free (plugin->watermark_image); + +@@ -895,7 +962,14 @@ draw_background (view_t *view, + area.width = width; + area.height = height; + +- if (view->background_buffer != NULL) ++ /* When using the firmware logo as background, use solid black as ++ * background for dialogs. ++ */ ++ if ((plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY || ++ plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) && ++ view->background_is_bgrt) ++ ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, 0); ++ else if (view->background_buffer != NULL) + ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); + else if (plugin->background_start_color != plugin->background_end_color) + ply_pixel_buffer_fill_with_gradient (pixel_buffer, &area, +@@ -1097,6 +1171,14 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + } + } + ++ if (plugin->background_bgrt_image != NULL) { ++ ply_trace ("loading background bgrt image"); ++ if (!ply_image_load (plugin->background_bgrt_image)) { ++ ply_image_free (plugin->background_bgrt_image); ++ plugin->background_bgrt_image = NULL; ++ } ++ } ++ + if (plugin->watermark_image != NULL) { + ply_trace ("loading watermark image"); + if (!ply_image_load (plugin->watermark_image)) { +-- +2.20.1 + +From d45c477d44e9d352e9d91686237e26474ab009d7 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 13 Nov 2018 09:03:10 +0100 +Subject: [PATCH 20/74] two-step: bgrt: Deal with quirky firmwares + +On laptops / tablets the LCD panel is typically brought up in +its native resolution, so we can trust the x- and y-offset values +provided by the firmware to be correct for a screen with the panels +resolution. + +Moreover some laptop / tablet firmwares to do all kind of hacks wrt +the y-offset. This happens especially on devices where the panel is +mounted 90 degrees rotated, but also on other devices. + +So on devices with an internal LCD panel, we prefer to use the firmware +provided offsets, to make sure we match its quirky behavior. + +We check that the x-offset matches what we expect for the panel's +native resolution to make sure that the values are indeed for the +panel's native resolution and then we correct for any difference +between the (external) screen's and the panel's resolution. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 79 +++++++++++++++++++++++++++- + 1 file changed, 78 insertions(+), 1 deletion(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 3570182..641eb70 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -124,6 +124,7 @@ struct _ply_boot_splash_plugin + + uint32_t background_start_color; + uint32_t background_end_color; ++ int background_bgrt_raw_width; + + progress_function_t progress_function; + +@@ -244,6 +245,41 @@ view_load_end_animation (view_t *view) + view->end_animation = NULL; + } + ++static bool ++get_bgrt_sysfs_offsets(int *x_offset, int *y_offset) ++{ ++ bool ret = false; ++ char buf[64]; ++ FILE *f; ++ ++ f = fopen("/sys/firmware/acpi/bgrt/xoffset", "r"); ++ if (!f) ++ return false; ++ ++ if (!fgets(buf, sizeof(buf), f)) ++ goto out; ++ ++ if (sscanf(buf, "%d", x_offset) != 1) ++ goto out; ++ ++ fclose(f); ++ ++ f = fopen("/sys/firmware/acpi/bgrt/yoffset", "r"); ++ if (!f) ++ return false; ++ ++ if (!fgets(buf, sizeof(buf), f)) ++ goto out; ++ ++ if (sscanf(buf, "%d", y_offset) != 1) ++ goto out; ++ ++ ret = true; ++out: ++ fclose(f); ++ return ret; ++} ++ + /* The Microsoft boot logo spec says that the logo must use a black background + * and have its center at 38.2% from the screen's top (golden ratio). + * We reproduce this exactly here so that we get a background which is an exact +@@ -286,6 +322,45 @@ view_set_bgrt_background (view_t *view) + x_offset = (screen_width - width) / 2; + y_offset = screen_height * 382 / 1000 - height / 2; + ++ /* ++ * On laptops / tablets the LCD panel is typically brought up in ++ * its native resolution, so we can trust the x- and y-offset values ++ * provided by the firmware to be correct for a screen with the panels ++ * resolution. ++ * ++ * Moreover some laptop / tablet firmwares to do all kind of hacks wrt ++ * the y offset. This happens especially on devices where the panel is ++ * mounted 90 degrees rotated, but also on other devices. ++ * ++ * So on devices with an internal LCD panel, we prefer to use the ++ * firmware provided offsets, to make sure we match its quirky behavior. ++ * ++ * We check that the x-offset matches what we expect for the panel's ++ * native resolution to make sure that the values are indeed for the ++ * panel's native resolution and then we correct for any difference ++ * between the (external) screen's and the panel's resolution. ++ */ ++ if (panel_width != 0 && panel_height != 0 && ++ get_bgrt_sysfs_offsets(&sysfs_x_offset, &sysfs_y_offset) && ++ (panel_width - view->plugin->background_bgrt_raw_width) / 2 == sysfs_x_offset) { ++ if (panel_rotation == PLY_PIXEL_BUFFER_ROTATE_CLOCKWISE || ++ panel_rotation == PLY_PIXEL_BUFFER_ROTATE_COUNTER_CLOCKWISE) { ++ /* 90 degrees rotated, swap x and y */ ++ x_offset = sysfs_y_offset / panel_scale; ++ y_offset = sysfs_x_offset / panel_scale; ++ ++ x_offset += (screen_width - panel_height / panel_scale) / 2; ++ y_offset += (screen_height - panel_width / panel_scale) * 382 / 1000; ++ } else { ++ /* Normal orientation */ ++ x_offset = sysfs_x_offset / panel_scale; ++ y_offset = sysfs_y_offset / panel_scale; ++ ++ x_offset += (screen_width - panel_width / panel_scale) / 2; ++ y_offset += (screen_height - panel_height / panel_scale) * 382 / 1000; ++ } ++ } ++ + ply_trace ("using %dx%d bgrt image centered at %dx%d for %dx%d screen", + width, height, x_offset, y_offset, screen_width, screen_height); + +@@ -1173,7 +1248,9 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + + if (plugin->background_bgrt_image != NULL) { + ply_trace ("loading background bgrt image"); +- if (!ply_image_load (plugin->background_bgrt_image)) { ++ if (ply_image_load (plugin->background_bgrt_image)) { ++ plugin->background_bgrt_raw_width = ply_image_get_width (plugin->background_bgrt_image); ++ } else { + ply_image_free (plugin->background_bgrt_image); + plugin->background_bgrt_image = NULL; + } +-- +2.20.1 + +From 4925a485c56fec0bd1333ec94d99b9c0e5b769b4 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 13 Nov 2018 09:51:32 +0100 +Subject: [PATCH 21/74] themes: Add new BGRT theme, using the firmware boot + splash as background + +Add a new BGRT theme, this is a copy of the spinner theme, using the ACPI +BGRT graphics (firmware boot splash) as logo when available. + +Signed-off-by: Hans de Goede +--- + configure.ac | 1 + + themes/Makefile.am | 2 +- + themes/bgrt/Makefile.am | 84 ++++++++++++++++++++++++++++++++ + themes/bgrt/animation-0001.png | Bin 0 -> 1579 bytes + themes/bgrt/animation-0002.png | Bin 0 -> 1573 bytes + themes/bgrt/animation-0003.png | Bin 0 -> 1591 bytes + themes/bgrt/animation-0004.png | Bin 0 -> 1594 bytes + themes/bgrt/animation-0005.png | Bin 0 -> 1624 bytes + themes/bgrt/animation-0006.png | Bin 0 -> 1646 bytes + themes/bgrt/animation-0007.png | Bin 0 -> 1666 bytes + themes/bgrt/animation-0008.png | Bin 0 -> 1634 bytes + themes/bgrt/animation-0009.png | Bin 0 -> 1640 bytes + themes/bgrt/animation-0010.png | Bin 0 -> 1613 bytes + themes/bgrt/animation-0011.png | Bin 0 -> 1621 bytes + themes/bgrt/animation-0012.png | Bin 0 -> 1619 bytes + themes/bgrt/animation-0013.png | Bin 0 -> 1617 bytes + themes/bgrt/animation-0014.png | Bin 0 -> 1618 bytes + themes/bgrt/animation-0015.png | Bin 0 -> 1615 bytes + themes/bgrt/animation-0016.png | Bin 0 -> 1605 bytes + themes/bgrt/animation-0017.png | Bin 0 -> 1581 bytes + themes/bgrt/animation-0018.png | Bin 0 -> 1582 bytes + themes/bgrt/animation-0019.png | Bin 0 -> 1578 bytes + themes/bgrt/animation-0020.png | Bin 0 -> 1558 bytes + themes/bgrt/animation-0021.png | Bin 0 -> 1545 bytes + themes/bgrt/animation-0022.png | Bin 0 -> 1541 bytes + themes/bgrt/animation-0023.png | Bin 0 -> 1481 bytes + themes/bgrt/animation-0024.png | Bin 0 -> 1492 bytes + themes/bgrt/animation-0025.png | Bin 0 -> 1455 bytes + themes/bgrt/animation-0026.png | Bin 0 -> 1427 bytes + themes/bgrt/animation-0027.png | Bin 0 -> 1407 bytes + themes/bgrt/animation-0028.png | Bin 0 -> 1385 bytes + themes/bgrt/animation-0029.png | Bin 0 -> 1348 bytes + themes/bgrt/animation-0030.png | Bin 0 -> 1316 bytes + themes/bgrt/animation-0031.png | Bin 0 -> 1245 bytes + themes/bgrt/animation-0032.png | Bin 0 -> 1185 bytes + themes/bgrt/animation-0033.png | Bin 0 -> 1111 bytes + themes/bgrt/animation-0034.png | Bin 0 -> 1061 bytes + themes/bgrt/animation-0035.png | Bin 0 -> 981 bytes + themes/bgrt/animation-0036.png | Bin 0 -> 989 bytes + themes/bgrt/background-tile.png | Bin 0 -> 79464 bytes + themes/bgrt/bgrt.plymouth.in | 16 ++++++ + themes/bgrt/box.png | Bin 0 -> 870 bytes + themes/bgrt/bullet.png | Bin 0 -> 131 bytes + themes/bgrt/entry.png | Bin 0 -> 1431 bytes + themes/bgrt/lock.png | Bin 0 -> 329 bytes + themes/bgrt/throbber-0001.png | Bin 0 -> 1578 bytes + themes/bgrt/throbber-0002.png | Bin 0 -> 1568 bytes + themes/bgrt/throbber-0003.png | Bin 0 -> 1561 bytes + themes/bgrt/throbber-0004.png | Bin 0 -> 1570 bytes + themes/bgrt/throbber-0005.png | Bin 0 -> 1585 bytes + themes/bgrt/throbber-0006.png | Bin 0 -> 1597 bytes + themes/bgrt/throbber-0007.png | Bin 0 -> 1629 bytes + themes/bgrt/throbber-0008.png | Bin 0 -> 1604 bytes + themes/bgrt/throbber-0009.png | Bin 0 -> 1605 bytes + themes/bgrt/throbber-0010.png | Bin 0 -> 1601 bytes + themes/bgrt/throbber-0011.png | Bin 0 -> 1595 bytes + themes/bgrt/throbber-0012.png | Bin 0 -> 1602 bytes + themes/bgrt/throbber-0013.png | Bin 0 -> 1612 bytes + themes/bgrt/throbber-0014.png | Bin 0 -> 1601 bytes + themes/bgrt/throbber-0015.png | Bin 0 -> 1588 bytes + themes/bgrt/throbber-0016.png | Bin 0 -> 1577 bytes + themes/bgrt/throbber-0017.png | Bin 0 -> 1572 bytes + themes/bgrt/throbber-0018.png | Bin 0 -> 1601 bytes + themes/bgrt/throbber-0019.png | Bin 0 -> 1608 bytes + themes/bgrt/throbber-0020.png | Bin 0 -> 1583 bytes + themes/bgrt/throbber-0021.png | Bin 0 -> 1602 bytes + themes/bgrt/throbber-0022.png | Bin 0 -> 1595 bytes + themes/bgrt/throbber-0023.png | Bin 0 -> 1603 bytes + themes/bgrt/throbber-0024.png | Bin 0 -> 1605 bytes + themes/bgrt/throbber-0025.png | Bin 0 -> 1604 bytes + themes/bgrt/throbber-0026.png | Bin 0 -> 1605 bytes + themes/bgrt/throbber-0027.png | Bin 0 -> 1615 bytes + themes/bgrt/throbber-0028.png | Bin 0 -> 1614 bytes + themes/bgrt/throbber-0029.png | Bin 0 -> 1588 bytes + themes/bgrt/throbber-0030.png | Bin 0 -> 1580 bytes + 75 files changed, 102 insertions(+), 1 deletion(-) + create mode 100644 themes/bgrt/Makefile.am + create mode 100644 themes/bgrt/animation-0001.png + create mode 100644 themes/bgrt/animation-0002.png + create mode 100644 themes/bgrt/animation-0003.png + create mode 100644 themes/bgrt/animation-0004.png + create mode 100644 themes/bgrt/animation-0005.png + create mode 100644 themes/bgrt/animation-0006.png + create mode 100644 themes/bgrt/animation-0007.png + create mode 100644 themes/bgrt/animation-0008.png + create mode 100644 themes/bgrt/animation-0009.png + create mode 100644 themes/bgrt/animation-0010.png + create mode 100644 themes/bgrt/animation-0011.png + create mode 100644 themes/bgrt/animation-0012.png + create mode 100644 themes/bgrt/animation-0013.png + create mode 100644 themes/bgrt/animation-0014.png + create mode 100644 themes/bgrt/animation-0015.png + create mode 100644 themes/bgrt/animation-0016.png + create mode 100644 themes/bgrt/animation-0017.png + create mode 100644 themes/bgrt/animation-0018.png + create mode 100644 themes/bgrt/animation-0019.png + create mode 100644 themes/bgrt/animation-0020.png + create mode 100644 themes/bgrt/animation-0021.png + create mode 100644 themes/bgrt/animation-0022.png + create mode 100644 themes/bgrt/animation-0023.png + create mode 100644 themes/bgrt/animation-0024.png + create mode 100644 themes/bgrt/animation-0025.png + create mode 100644 themes/bgrt/animation-0026.png + create mode 100644 themes/bgrt/animation-0027.png + create mode 100644 themes/bgrt/animation-0028.png + create mode 100644 themes/bgrt/animation-0029.png + create mode 100644 themes/bgrt/animation-0030.png + create mode 100644 themes/bgrt/animation-0031.png + create mode 100644 themes/bgrt/animation-0032.png + create mode 100644 themes/bgrt/animation-0033.png + create mode 100644 themes/bgrt/animation-0034.png + create mode 100644 themes/bgrt/animation-0035.png + create mode 100644 themes/bgrt/animation-0036.png + create mode 100644 themes/bgrt/background-tile.png + create mode 100644 themes/bgrt/bgrt.plymouth.in + create mode 100644 themes/bgrt/box.png + create mode 100644 themes/bgrt/bullet.png + create mode 100644 themes/bgrt/entry.png + create mode 100644 themes/bgrt/lock.png + create mode 100644 themes/bgrt/throbber-0001.png + create mode 100644 themes/bgrt/throbber-0002.png + create mode 100644 themes/bgrt/throbber-0003.png + create mode 100644 themes/bgrt/throbber-0004.png + create mode 100644 themes/bgrt/throbber-0005.png + create mode 100644 themes/bgrt/throbber-0006.png + create mode 100644 themes/bgrt/throbber-0007.png + create mode 100644 themes/bgrt/throbber-0008.png + create mode 100644 themes/bgrt/throbber-0009.png + create mode 100644 themes/bgrt/throbber-0010.png + create mode 100644 themes/bgrt/throbber-0011.png + create mode 100644 themes/bgrt/throbber-0012.png + create mode 100644 themes/bgrt/throbber-0013.png + create mode 100644 themes/bgrt/throbber-0014.png + create mode 100644 themes/bgrt/throbber-0015.png + create mode 100644 themes/bgrt/throbber-0016.png + create mode 100644 themes/bgrt/throbber-0017.png + create mode 100644 themes/bgrt/throbber-0018.png + create mode 100644 themes/bgrt/throbber-0019.png + create mode 100644 themes/bgrt/throbber-0020.png + create mode 100644 themes/bgrt/throbber-0021.png + create mode 100644 themes/bgrt/throbber-0022.png + create mode 100644 themes/bgrt/throbber-0023.png + create mode 100644 themes/bgrt/throbber-0024.png + create mode 100644 themes/bgrt/throbber-0025.png + create mode 100644 themes/bgrt/throbber-0026.png + create mode 100644 themes/bgrt/throbber-0027.png + create mode 100644 themes/bgrt/throbber-0028.png + create mode 100644 themes/bgrt/throbber-0029.png + create mode 100644 themes/bgrt/throbber-0030.png + +diff --git a/configure.ac b/configure.ac +index 66d3649..78550d0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -322,6 +322,7 @@ AC_CONFIG_FILES([Makefile + themes/glow/Makefile + themes/spinner/Makefile + themes/script/Makefile ++ themes/bgrt/Makefile + images/Makefile + scripts/plymouth-generate-initrd + scripts/plymouth-populate-initrd +diff --git a/themes/Makefile.am b/themes/Makefile.am +index 72e642b..8e4566e 100644 +--- a/themes/Makefile.am ++++ b/themes/Makefile.am +@@ -1,2 +1,2 @@ +-SUBDIRS = spinfinity fade-in text details solar glow script spinner tribar ++SUBDIRS = spinfinity fade-in text details solar glow script spinner tribar bgrt + MAINTAINERCLEANFILES = Makefile.in +diff --git a/themes/bgrt/Makefile.am b/themes/bgrt/Makefile.am +new file mode 100644 +index 0000000..4cb7aba +--- /dev/null ++++ b/themes/bgrt/Makefile.am +@@ -0,0 +1,84 @@ ++themedir = $(datadir)/plymouth/themes/bgrt ++nodist_theme_DATA = bgrt.plymouth ++ ++dist_theme_DATA = \ ++ background-tile.png \ ++ box.png \ ++ bullet.png \ ++ entry.png \ ++ lock.png \ ++ animation-0001.png \ ++ animation-0002.png \ ++ animation-0003.png \ ++ animation-0004.png \ ++ animation-0005.png \ ++ animation-0006.png \ ++ animation-0007.png \ ++ animation-0008.png \ ++ animation-0009.png \ ++ animation-0010.png \ ++ animation-0011.png \ ++ animation-0012.png \ ++ animation-0013.png \ ++ animation-0014.png \ ++ animation-0015.png \ ++ animation-0016.png \ ++ animation-0017.png \ ++ animation-0018.png \ ++ animation-0019.png \ ++ animation-0020.png \ ++ animation-0021.png \ ++ animation-0022.png \ ++ animation-0023.png \ ++ animation-0024.png \ ++ animation-0025.png \ ++ animation-0026.png \ ++ animation-0027.png \ ++ animation-0028.png \ ++ animation-0029.png \ ++ animation-0030.png \ ++ animation-0031.png \ ++ animation-0032.png \ ++ animation-0033.png \ ++ animation-0034.png \ ++ animation-0035.png \ ++ animation-0036.png \ ++ throbber-0001.png \ ++ throbber-0002.png \ ++ throbber-0003.png \ ++ throbber-0004.png \ ++ throbber-0005.png \ ++ throbber-0006.png \ ++ throbber-0007.png \ ++ throbber-0008.png \ ++ throbber-0009.png \ ++ throbber-0010.png \ ++ throbber-0011.png \ ++ throbber-0012.png \ ++ throbber-0013.png \ ++ throbber-0014.png \ ++ throbber-0015.png \ ++ throbber-0016.png \ ++ throbber-0017.png \ ++ throbber-0018.png \ ++ throbber-0019.png \ ++ throbber-0020.png \ ++ throbber-0021.png \ ++ throbber-0022.png \ ++ throbber-0023.png \ ++ throbber-0024.png \ ++ throbber-0025.png \ ++ throbber-0026.png \ ++ throbber-0027.png \ ++ throbber-0028.png \ ++ throbber-0029.png \ ++ throbber-0030.png ++ ++MAINTAINERCLEANFILES = Makefile.in bgrt.plymouth ++CLEANFILES = bgrt.plymouth ++ ++bgrt.plymouth: $(srcdir)/bgrt.plymouth.in ++ sed -e 's,[@]PLYMOUTH_THEME_PATH[@],$(PLYMOUTH_THEME_PATH),g' \ ++ $(srcdir)/bgrt.plymouth.in > bgrt.plymouth ++ ++EXTRA_DIST = bgrt.plymouth.in +diff --git a/themes/bgrt/animation-0001.png b/themes/bgrt/animation-0001.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6bd823976167325046fb5759916e6883936461a2 +GIT binary patch +literal 1579 +zcmYL}c~lZu7{$Q^#a&RLMI$t|oMDkPlaj_Tw@eZ%N->2nDL@n=$kM{ea)enV3c{#@jVv}3fJsZ|Ffn^s98L-Y +z!_Q=3_OJvP9$U;w-!DkR2-27wCLhD+vAA4j=6^)f*-Y+ky0p*IT!omgBBcnJ0Dmkl +z2!q36{P9Q}E;wLKFcvqx`-cW|#%Vqi&*CrvSZwgW2luwqyTj~Re_bUrW!}U^Fnin0 +zn)AH2!7OE_0R90Qi^b304WgJ$*Ljn|U~-v&6fTRCB4DL+k$7w>kB@ZJOU(h;d?3!e +zAv5#;H__ODyR`FKvkm=PE@rTqd?Y1>!!r|r^AE~CiSPpeEIT7f-^EiQ`6pxd?b_;8 +zP)82+ZH%haDdJqBR-j2?d2aAI%OPLofn`mD*4Ycj4)8pcaf#Mar9q26uB?WVi*F-V +zk^Htkcv^63W^MK7VePp0u?6X=+S)af+FHJLj>+Y6jXg%A(K(Dz)mqwS%+M|#nDn}? +znUdXkELYdwHA>1(%s5WqR+qm;z}tm2xuf_4SFQFIviA~F@1b711lgYkmrDi+1VYWd +z5pqwU(#vvT_?{$>cZc&6u}cCeqzV;LHv)e3p+EZgl4UWc&!KZ1%iLo+Ks?|f +z2v=fN)RhR1rc{+usNMHImm#-SzYUsB&~Z$>(WMPTt?y5iUvu>?686yFY`P->@y>W> +z!EXTFRDTuKm{vaVCwH6^Ow`Ka;W0Xt$Z8hi04u*OTdZU7{D16qUALhJIr-CP6i1lj +zJQWi3OoaM~NI!y6J=TSr2vj|Yy@j-Ve9?$6^fhH;f~WMsKsIQJ*YIqt%2tK$8=QG+ +z-&%#yR|J%0(CC!DwUHy1(3qEKSdA(Z%FH$8S^n&ONlRw1hu@$gF{gTC?5rn+dm>csxL|Xl`!2A$p(()iK7z}!pYsk?G%N62gt4BRho}h +zQsMzRsAvhvcjDX0mm9>%4s9$TigryF9O%=Q$h-t**T;5+vg>GKd%5?gLPLylRJ#(w +z=aO3Vc-58WzNTiF8>+R7ZRf7JFm;7k>6KOaDf;D*UkB=@eAph=BpsJ@MbYUchh0QQ +zx91M|n)5B2CtS%VvkfP +z2^jgew?K)8Ez|~*NAB%6$;%0j;S+ysFQq&$-63DPvR5m$Rn>=py!g$+(bW~gfy=I! +zY`CGu%42o+19OViw}=rsfmWQ~wycPg1UBB!LQ29!?;j?x4n)ZO#`I6{?%0(M*XX#Y +zrTcP~#F@FqiIU(iJEukOPJ3RT{5?r{tPvJKC}sST1uX3I(aI{;z}qf9`r^0@COUPv +T@C3yC*#RQMHj|n{lcj$H!ojpL + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0002.png b/themes/bgrt/animation-0002.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ef8ff54a5ba88688b91eeb3eba6753e9dc28a169 +GIT binary patch +literal 1573 +zcmYLJdpOg39R4+z8J28?quXRSrOcfaV{up)l}pn>4NYctX`96un@gs2LAsGVMQG)6 +zN~!bYx;ow5r8OH1549TVDOdokpXdAeywCH#@AG~?e|_@z1qVV6Ee!zxfMSFE +zL$rukY6E@kWU$#^wE&?79b^E25qzna0awZ_v?Q7t5W)P7m_z_j2~;uxl}IF$W8zQ@ +zdK~H~k%^)urIM-1%mfrOfj}lOPz)N8LLt!qLx+XKZZ#FoE@D! +zQBF=MXBUK%lb738FGr`jBR49vo)t@;Fd~@%I68X$`<#)R%1f&G)2`3>B`88SukDoY +z!4I?GfT%|Pu}b}?4rkTNJ66gpS9pSb^wC)Y**XzW>g$YCs(o~ZEq9f_OZ3}jSmO@s +z;+nMW^$mGmo?|3@b=G>dSTgfFfL)$djE8Q|zo(|cGb`O;VidyAQiM=^*5bQqdXfL +zAZnC0HSO{&Nv{hx2^^C5q}&W*tqF47>^p3Z7+t(Sfi=TmZymx4>YpIbO|+;7+VZB3 +zU!_VGJt|s@%8o%<$mx@OH0gBcjD0TNG)hNPVbGfPoXQP=531f{*JL)~yff%~vRUC` +zId1j}c*Wtl9ka$Fpt>!2`L`#wzs%XHS1RQBgm0X$GCQ#Z{=N3VgDc34lEu3+pV_AQ +zN8StDLs`xQtuYH3}@RvuoWXbt +zLItOx1y3`GvVSHEI!Dqpz)2aIe<^LBU~MvcUFqF1?Q@{9 +zOs|M70@qHrn_TYDgl+MA{aHERzX+P#ig#fA%9;tgy4(IErXSsthfwieBgqA} +z?eW%_4S~~~ZQiSC)Z0;Y!4>A+Xid(eBQs;(%Wg-Et-^oF|_au+8)%Lt>T&wrJf=sjvFXJiJp7 +z5_vdWiBQNRX=XK%HG*;1d?70#2IH(?;Ma*B-siLtC3hx1MVd<0?|qQn(n_xb@GZPf +z8B{icNq@^yY%0Xzm1-O}cQQ}Ge%4vI@WpM;>ew9exzU61<88xjL{Y6^0z=3BHG|ZE +z%y~cRCv(&gK`Hu41$qQYOBkqQjy5YTQ{KRW*hcsAedXubuwu)L!(OLii + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0003.png b/themes/bgrt/animation-0003.png +new file mode 100644 +index 0000000000000000000000000000000000000000..205380b1ca8e000f19adb89243a71cd48bfa579b +GIT binary patch +literal 1591 +zcmYLJdpOg39RAH_u~F8#teZP=lx?jtmvdHBqO1!tSu!kEcCpPAVQi%xMMA1Yom4I- +zLz3jOIfhcAa?1%j5prL}=z4xS=RD{8d_SM}dEWPZ-tYU@SF)Gvs*hNS002PWZRfWA +zAR5n)4jkOPsHl%1=yG=Y@&Evdo*xKs +zV>b|t@py+#_6|7wOmNP1&|@&~@nSIP01oHy?AdI}L}$?f8jHcC@fmEEF#&gk!!usgp8y)r^M?IkLpt~W +zH*Im7-Ml{YL3#0y@Do8{be^#%jmZHKz;7VNUc}e{0IbDr+g2}%ZdT@#WH0X}rz@p* +zyp&MY5Y11=t05<$u6k#o{peXOF_CYsr)T!&DGZA@X+@b@ +zBv8XDB<-<%GhY(Da}mze$90h@V`{ZGnW)XUWYW;ce)sFVOtHCb5SzDeIXDYIj*`i%OiWQuTrVUF< +z@Yww15@~K)NQyC;bzbKoQ~<1o6+t7Cd`CFTZDk3bDjQC^d8W$KBR}yeq3qH`U3eFw +z7uu*eth$z{^!QQ(*fh9TJ<8A|9q?ZBstWOowvVFDQWh&OVYA*UZkJ +zpZjIN4jhKCMShCX78KR>+v1aCq5g5?KsK!HK*YFrWQ^gvm$tO>S-mgqs$-PA-^m3`XK6cFdHyI}BZ;6i5GF4bKM1s!hdk!=2XT-p7K8%D28M$9mmWb{b^r +zK8nO_$Bg}Vl$GBcGr*v4(E=;3eb43VO?Na81sxuN?{kG}@ylm1!`L#(!TO$C#N;US +zFh^HBV@45cH}8Gd{d}|^J-xb^7c>q_(Lz4x-SqlbRwNKKyg*D)$ZnB@lThef#%qs+ +zoT*hX_3?uS_5x|i=ukYmOS>aJWRl&m`~J8KTdDjOeYGuJ_ueA4S%3lZxv{9gF{^8xvNFIV +zq_#e4X0y#SdN^HRvR-W3J>JMdWf!_xK)cH%PFmCaqGo66_p;K@EOp$e{L;pbyrtKJ +zw_7H^4zG-bR_SKLM+Bo!lz!tmR~W<M{<`dUMl-l%DyyivK6O{a9{eNClI5iavh~W6OKrTeI_8!hSn}(@s?hSI +zFKC44=(wX=Vc9=zsb-y-IHG!0Ig!|8H)3AXJ*`_WThEnuAbZRU41KeOb%0AWU!#ol +d5A3`Z2SJL6rEpG+2>kc}x9#L@GUtGVzX5+W%Q^r6 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0004.png b/themes/bgrt/animation-0004.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6038af8bd429a28118214dd308533e60107d531a +GIT binary patch +literal 1594 +zcmYLJdpOg39R6uTVQ%9@7wt)?7Te5a?aZZI3URO!B{nm&7_&_^Mr@TXqM}kW6FNl} +zlHA$qFzFB}HA;(e=|V?thn;q&bIx-<&-e3rpXYtw=ly>E`ke9i+Xc~DqXhr}#A~;E +zpbBBjy;4IpnMp}ADp*C|9l`_vZRm2V0oU_QRHO^bBben$jU@w!=y)0#ahOV@5lILp +zgM^?^SqOS8n--tQibk-a$uu$(!K72;;>e8u&?X|592XhE?E;Y)Ldk7p~|Db?Ac4DkpUzU`|q>MFMZ~#(pLUhg+W{v?J#;yNEK(W +z%(-H_q6dRliN?z!oK7AT?7ktP#q4%VGKu_M8E%$UBepVBw00w+-XovUs8hC8o!S63C +zZ9hN~Iet%N3Y9ajt!i(WExg^%9Q~cmM>BjE;oGtTv +z@B1qQJiV{CK6kdc|2cn;rB9E0OW<5rj`jW*j8<+nK>+K9 +z{x*lZRXz`%MUQ`W=Kc|tIn*_@T9WW}Ge$=zl`6Jxze9j>be&fSFBJniMn}6rLFG9eR*qvwUgi} +zHS{&gg0iDUa>}V1p3IxpS>ob49R_0L7GoDEKWF3SY4Qfe`SBw^^|MZWIaO9y?(cnu +zAk?hjrHDQI&NP)2L+FMawQdl3o_kBel&kd^l5)G#wHHfwoT$h;KM7j^6e}Gx6c5J( +zjulLCNn$Y{DpgxD$>!EdLg)q@jo9J(m(5mA?!`B*N=ysC#ix5_hBd9yy`R7EI7+I; +z3KEaVL*)G4(#e2vj%Wej`=b6yhJZS4;fTXCuKbIrZO6 +zviin@#zs52g=Td_e5LPU57$r|`u`8XSTLX-@B3DLpfRA$yQIU&M(q#&e +zZMc_k0*b+;Rh#X8JYZS<$vww8VQ(_Th4HfYAsd9k?tHHoir;o@i9{C+Xi_0f0XAg&g0u|2eU +zwb+7?wtcIhZf-47KO7G)^y`ymbIeobzWEo4!wR)hUzA1LKdTwiU!PYhlg)jMcFU`Y +z!754elp)ACymEW!{HT>vAISg0*1}^aVa`!Gy11v{chUCuo@!6^n&h!ocH9{g-P>s< +z3rg&6`g2YDMDazy$Px?Mcwv`58`5PNX>RI%-G|Mk-}h?Obm0}SIeVA78na3odcZuL +z`myn=B7ulhksI`6kbLi6cpRm}!hgFjTa5AgEvbHBTj!2KIU#n=)6 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0005.png b/themes/bgrt/animation-0005.png +new file mode 100644 +index 0000000000000000000000000000000000000000..7a967678a0fcc44fc8238e53a5de9a88d0ff5336 +GIT binary patch +literal 1624 +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 +zJ{{0XKM!(vI2fE359h!9)U3tY +zm7#grc0QX%QC6u=u|$Xbe7#=$X2L8DiBf +z2St`ur?B$eL|v@T^A6N>+nd&d$Q8KtADa5%aH@1^GOi2SOY%6>vzNRvG!B{lO9+VQ +z6T5(;k{ZV-^COa?b|OK_zucFTSKsz#g&h0qyhYJ&`zq~Yqo=qpLEL1_+7w6CdOFr@ +zV#{KbHYS%skRp~AKjzV|=Z;){S&^%5gxF4I#Qb#cZ@leguDARM;Th2~)C5!aa{Bi5 +zz;_&Ub>gd2yP(JK*mxwL$PF2a{w=7rspIo&tGQ)m<%`Ud=fCc*AN4x6B2uT7N|%xv +zERTuOnoPiN^439vkFErn?ia_n?+@zs>b}UrY&YqvF-gv!)gj-&;LAkqwL{fc&w2d_ +z3CKLrw7j_wjQ&7MohnYQ_3dbO>m9{YCo;MA$HBf$A`^>2j@#3lfLxTHDX?$tTdj0_ +z&N%kS)^N&uQnS~_g&xsOUMR2Qw$Q@+=v+9qRD=u^u#DTBN*}juE}}kG&c%PG=;ZTP +z1MWOASgn*6POdsXn>L<4dp+%DVi~DB@f{ad+37vmf%q7+k)7R`oK^l7`}0nbD`wkl +zmi^oN$d8jI=)m2@P8quSd4b!ORpdS7557C$CV6@DZjMAD+;vZqbv#??z9T86cY6&u +nBWE^xSySxaK8cekt4@HAzE>A1gVN#VdkMrv?Tc*LO&0$fmG<3V + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0007.png b/themes/bgrt/animation-0007.png +new file mode 100644 +index 0000000000000000000000000000000000000000..d2ccac920882325a265fe11365dcf170461cefb7 +GIT binary patch +literal 1666 +zcmYLJc~H~m7X1-IkTqCjNnA*wPpVOVSt=nRC`dpML1cHJX(A*L$R-K3p@1Z*C|i+N +zl_Ca$by_V;Ky<1g5*0!AO$1wtkx-FENMwtE(qQ}M&3yMeGv}N+_uhYQc5u)k3sa;i +z000*Lev}YBqBd$1O#cf~Qy27L!uLBa001-VjWPf(U$NJd2ZTORLSGh}0e}fS4g*YN +zaX9o?P>>u8#QiKVhFoD5g2tWa!#pN=R|A#Io*bHvm2}u`JA7#H0MWG8B +z01kt71F={Theu(tq0u41msMap*!8kBh=%n0x^Wu9oNx)*FTp +z{e+C<|Mzsk5cY?5jOpc1K8A~8*$e?Hl+NMn5y0ZyGA`Mp0l*09Pw@(iGC6Z8Fn7eq +z>g=hO!NoK7*}1SUU?x|c+kC<_=QB~MeNu_B7IoDa%rGdRlA&+|_zsE{)ax-Qm+P|R +z=cUNcToS{~vs;Sp%ra$*qQn)#0N#D4QPbqq)UVY=)wAp7FzJK-rKP3+e&&#~XFg+Q +z@j}HPbJl-S6+_u+W8Pl!lUr8u9XrlxdsAA6m(t?;<|gnsLbm7rIN|);zJyy3SMpV^ +zd?3cSTZ*Syq*(-6o_&-*`oVFn+v&B%FyExL!u(X`A>|ty{Em5yX=U@KH8b;ZGmWb* +z6B>k{^`jI&UF(EdO?*#7cx*plX=yM)YPhO}VUC)-vbLo{9gY=N&A2O$oX<5xCCSL9 +zI}E>lK$Pz({>lgp2lJk9Z;CJ6W}pxYbjZo0I24Nx?3rc0VQH*-U)uJT+YCe7t6739 +zvwl(qD7Bl(7j@-~Uax;LvX;TO)7e}X5H)#w6>BakX2jz@V7;L7avRw{yyyqf1!oCV +z`B0`3|4gf!TA$h04wCXs;8y-_Uh@uL_|-MLm_5Ii7|zg!+Fo?4$N&Ho{ +zZ}pI}gm#~>pv5!>6RxwZz9Y}Q=Zr~jT6T^RG`1yw7+X)g_2`P*w+*>)OcS6O&_yF6 +z2klZaaJ_-b3dXw>F5F&uR&}K8WL}}&-Dipp?A1qxm)JqAL50&SxzF>hYJK?%&#otQ4v-KRxszyOumD +zkn)1DZS~kj?qcRvPtrnK$nFB=;hDa>z9BsJ&)szqrf-~+Q*IeYYi7T+$q6))L*81e +z;HrJ?kv*9aRi0O{;MDdz`ZWR&NjO45;6D1axU5&Z>E2JJO*YynE-be+vN`myZ#u2< +zNLOWG)$iUB3Y=b-)WWw(*Wp$0;;1CLs3(^2GL^i7A6u2&6w*V-h@#O}+1 +z4U)>s`J!|VxWzna04^o_l1S!hHt87_50|~1VX?nDivyF&VjwXCH|CSO6aHe7%0%IZ +z4}3}hry#YaFAPiiEP5agg-zmu{zV#yi7t4e?!V!6?KExL0}))sS&E21NOVb;oHW|z +zU3Fm@v&{Q#Yl9eps0o^W)ckt+AkNK@Y6z3%C@+24Xc#0MT@9=K{1`DAEz}`&o1a8~ +zU6v?~GWdNmxVX@LNXw<&Cfl|#M;10CkGAGJmwkt5Eq2D)HPD2#yUSvwB0HYc3-!j2y|4-_p934jVY6ud*F*2w80;^NsE3|oh>?7wW +zqdgaWs3o`GJ9ezZ&0Ngey+ztt_cd0ua4Wa^rsg@QK3)H3{q#(AScLwD0{%Whlt +F$=_zH?q>i1 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0008.png b/themes/bgrt/animation-0008.png +new file mode 100644 +index 0000000000000000000000000000000000000000..85849c8f8bf3d6f785f39567b2e58f6af9c03102 +GIT binary patch +literal 1634 +zcmYLJc~p~k7X88pVG+WjRF)v&w3HT=ENmevBy7skQ~^;cNCG4fvnLXOyJ-EYDl!$nkdEqaisbQg34-OLfbj>&hNc@&b{~C-}~#G+)dr- +z;^gB50Dw!tpq}t$8w7Tn2!{k^X+fI)4SzsyY0*iio}@ +z67k(aUn}Rn#>H7F5gqsoLU6dyH@AuDR?%}!OwVWV7yzBe;?f}&pN9#>F$H3b>xA5D +zSifdSvu?-`{r}GpTtrgFGGvuK{tPe8=P<;WbUIgHMF3AAO6$Eg1Ay&PQamMNzhg!H +zwojY(ZaDGei;`N8aD0us3&kCu%=tL%LT%;+v#Z|0Nws3PHQ{)eypHC5HEjcZ%k_a+ +zoAE&8_wE<(DDe&6K~WPg;m$|=-xvRL-EJDbcJE;MLv;mHXe~OM&8B?enowVn)1nX+ +zw=_*=_B5|AJ@X@4CfN&NA4`nh9f3s`j0FVmlKJzaw~XN(^&+$;{RaYibZ7-2I#1aj +zk@@xpwj=)q7M>i>L$~`k=2Sg0$jb~VMC0JBR|yi0*lc1dUozSq4})No9aWCq1*4zs +zrYt5u)Nugel+$71*n32jb1xZEsoO|u&n+_NQ(&>D1f(9_8!QSxY|yz;w5~@l5APn- +z9V_oc-d^-06Uq|2x0pe)CVYBIdC78k{&oVa-W)8u8 +zn|l|FQAUuT=6L380QRR%bwkjruoBy|GHr3uKw6`sY8A{zWHQfrXsVs30$*InO(J}* +zZFTSf?B|xcTLnQah-{FVXECdhb9xLUbtNL5v!$u;z6f4$zx*`4vf`lvVT&@bY1nob +z(o5eD|EN5=>eh(Zha-$>({e3NDDc3%jUeW`Hn(4DR!YHBA0>?zRa@NKZRWtvk?K1s +zL46M<6*di%h2@g$9^Iip>alx$Kht)qPwzk};1!yqk^@`%O;}p4%dQ}wr415!YvDBs +z&o@iEsYX15TJYN6m#podSvh{~t*!vrr{2O-j);3}Lgcx8s{N$$Q{?38lWIxkRj)4st;)ZN#XEGc-N`nfE(Z`qVOMQ1NzPCW+E+tGu=yGhUz%MTbo&M<%Nm`IVIZWt(+ +z>sLND<5hCwded7bliugp>?#6ukJhoth8S98`$tcg+OCpnJ!({!gg~5KGKREmohH-1 +z5{&uaz{JJzGtZ4m&Lo$V=x?9O%WBj^wMj$f73>J@X0W7q*Vgnik#jnONsk(Hh7*a +zshN{?eT$q(U6AT+xJ#3q4wPyJEt4X}sHk6yX9P)=I;_^szC_hZK +zXMU_O*mMQ`kK~ul>AGeq)U&baYHjm~_RZUuJVqX>Cg6Mlhqgr*9g$O4JN@seN|%XY +Vb9~PAKI@GHk`k!#t+6!ue*vul*6aWP + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0009.png b/themes/bgrt/animation-0009.png +new file mode 100644 +index 0000000000000000000000000000000000000000..3e79b9bcdd7c337bb0de3db1fa15ea8c05e38917 +GIT binary patch +literal 1640 +zcmYL}dsNbA9L9eLh=N#J8eUp7yW8R?lp%RfysTy^Y8F_KA+i7ou)JZSmANu=X=aDa +zHBHOXRJxF+P^VNhGrO46)FQJ68q*ZaNyA;v&UwG@=bYzx&hvi%dULji2BDFTNB{uP +zA;AIRCSvEt!rXKVQ&K*gV95{ODFgu2g1LbJ=cO2v=p!OWivrmkCV-1i;4*PPvbkJF +zEKVqh#j)5T9G{cSO-K~Q<3#aHE>nmT^4UBdQ}7?x?d33e`}Sr&hMB4`b5#Kh5fi|J +zZbY1$8xBvvy19`yc#uGR0(acel$k%5iC}Y?00@%)Jsxi{)jE@B@%JhM#+>O9*yNXM +z(ro6m%_d2}0RF)`5G4HBMWmQayE&5*%j7Wu29M2Uh}a1{ECGz;3$gRmnWn&kxj?vS +zL#E*WH`jq1y(#T)O}6dd<;k%erVvYEaQP+zZg^t)S&S)>52=;~5+A8r!vG!3$3s)znr{6Cnr~4w6k4jh7+Bl)eh7N<;1r&*qF7+bBkZ?m5A?>XQe)6mj|zLBaF5Bc#e`mNFt +zMG8kh+PBB6PDlmb%PKEkuD=a`){gN~y;cvwl3>n|LmA8I+c!c!Iz~g6WYiPo7E6{7 +zd&|HKVi7b~V{p*T2U9<~mr}Cd2l7!MCZsn}w;^efwESCYZF_nE%%j?OVcT!r-iQ(e +z2|U-VaMLZ((Z)MgyPs~2wvQRsd-0Li)cdP_LVUXK14LQlO69L~I45J@EN*|+fmdUY +z&it9-M-Ny8x$zMF5cF?(}3}#F=^4|?4c1s{lmZ13&Cj|v9MRaO&X)YzRmg#1!R^B`3-s83f +z{-Pd6lyZiGZ?l^u!-vf7R5tYiWIxm-y_816XC|U@6FllhDBVwLJ#A)V +z-vG#v5%V`kzFN4ex2qp3ziIh^_N$ZqJfe`H&mJyZQ`i`%h@Ve_dPiAH%Y+Be%stn$ +z)MO3pL$T()V#bLxxC?5d%_ZW6MJ +zZ?J}B-*4aB%X#ZNu<6i6f(Y>={=znKWqt9c#8;|G0wQi~;xPQx=4@T1U35WtV7SES +z2@&W$b)!4JJF=x&vQ1EP>;`!Pfru-~rjD4apYJLZuXbo_P)M)zD1#Kq2HQqRlNlLS +zr>>ctW|uV`tGG8KT_bK5GAml-i&!40PiA$hP@@g~XpQWr9i`SW-!1gt&k<9niMt@U +zzLv;N=gt%Ij+9a&p)&n?=9kvA95k+u7SSAsHM{dwllEDAcmO(vR;fJc=dXKpYc7(&P9M#qz^ih?O +zM}}yC<1J(}&}N)PYAdqX+qi{?xAxJUlf_#|vhU5QG$&H%*;&U6mp+ +z#`rL}ZFGx%YQ>^AaZGsHA*bW1Z7&U@H@ryeGtNWr_;J;x#>#lt&bm|L;o*BbhQ|5I +zn<|A?dmFc`uk=jBlf0rqE7k*FsT~*7MRyH#5$=H)&g5qA%yvbE?RG77q0&L`rR*&0 +z_T>F<=&0nd1cD|E{#+%Y?TWZyyw;Oft-nOL`Bd|~*e85VZGB&&RBRQB-a6dda+%iq +cdAHU$Pk2Da5jTWPn|?|lgd7@B?N87A3!Dev#Q*>R + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0010.png b/themes/bgrt/animation-0010.png +new file mode 100644 +index 0000000000000000000000000000000000000000..1f64875a17c6ac9bea646cbfc133dfe5013ea639 +GIT binary patch +literal 1613 +zcmYLKdpOg39R9JHJ1fbxTFG?X)n&+S5lbae%w-K*tah^vEeb2QBbQSysR`9_=|VMK +zR%gdlC!;Va*AmH*R90jpIaAMh&gc1lKJW9q@B6&p&wrn+-MhT?bwZaWJ(3vY#$;Q0CbHOTMalXG*yvqJg;EhHX5A@AY)hzD)JzW!H9@Laye1R +zXc`a6rt=xBI9?2r7ei%GxkxUX#$-}C{~;ohPGwRe1+8FJl<8uWX9SN5U{Gir5{*V; +zurM^*$DnhCQkcsht1+ +zM4;>mfpa{Sy!2-{KZ;J}!U7@~Y!w1%4DMKw=|%tmj}SaP0)w^Figsp)dqLBq;TJz! +zT`(Fpky#5e%OjUV!n8kyW!*LWp^=K-4999WkVsbB6G}h;mKHazyl9ytJ1G=Pp70!3vp~YH}he`t4 +zGQeLudDFMaN6aoNxk^Wc`eDdRZTl280{qPp3!z$5<9gwD$SUg**LvF&Trnue)sUnf +zOMk2ce2;40y&rqL&v0!!LZECMy>ms&BX?syAPccUf=XX&@)U+=)O?R=nVxLhQmp55 +zX-zjV89bnIZszQ`-?O}WTfkuR?4iN+3h<1sskFfzbC+^;vJ{Rr9en`9-yShiEHCUi +ziF&Db**lz4^m!dl&p_RGR#PqycOS)9J-F<1zCSn6tAv886GR2Z?Z+tHL-Js1utakl +z-F(>r25euW#2^`PQwtpu_84T?rUpfR*b4s&nK2MPulix$;0V%s`XP>7ma`>*SrQj- +zE>v$wVVry_Hi~}l3gJ=au67mtg;&6p2%Di>o}J(fe?`vtcRwg*4k>MVR|*Q99h6zz +z9vbc7TOx~If4T(kfUGh4sezO85L`)nPl#@kL2 +zqKG60*(|IK^Sct9N6JZT|Hkc>6Uif$Z>4S3_*)G>Y;!b+3<2M|$wPyfnHNWOIqY!P#O<&$6z4y6nJjxPt6Za4`ji&CfFE?AI)h%0Rr3>GrV1Z`=o* +z6Us!58rjRIAikk}r?W_{rEz{dpqDkreBRPJ(ENJvLv(+>uMAS94Zj(9LPA`r);HGN +zLTZtiKRD1cdcZg--PNj_v)@}or@`79#}5r9xD5q7`zLQnS4Oqhu(UT(vjg_hVqPMx +z8%BYgd@5swN1G%In|(IgtuBSYLsPr-VlM6c#(!&OdHhE5vGnNrA?TT+(-+e!z-vr4 +z*RxbSD|FD?OU&JE+#F6R6wl$FI61XENvzAy<`Agl%IN`?0Eus!{YVzybX?(?_Uw5) +zMLT`+v#8nQFp-wrmmq!0$SOobX`0Rt{igBt32ze5&ELCV3tgQS?edE2C|Nbuw5`tV +zR>%1Bdz%zZIsR#t+c?w7U*6Gd?zP;^omVUXU4IBqxH=Cl-Uoo-wac>>PZs>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdIXW;hZ*B4#0000GbVXQnRB3Hx05C8*FfckWFgh_Y_1G7K00008bVXQn +zMsi_oWdJcTQGWRT0000HbVXQnLt$-Ya$x{NVQpn{VJdbW>wx +zZe;*rZfR{{bZKvHATuy#aC0CJiliLMUe=XYJNLD%eqvkgs!jIWp2pcw +zu7<9q=zq9bUIZ@y*ZaV3unXJ;-k%A61SsqrM^NJ|qysiPC%DDbYe_M}{=w%(v7CEo(sGq{ul-2Vi; +zM<;HosAN0a9hJ;%>r3Ey@F4Jz_!pRjL#R{FTDAKoAv|j`lCsIjPk@tjb$2Rf-DoWv +zNr2sF!E3+(I+J?^+rWTM{CVKi{|)TceqgtbfhT~8w&LKD-FOFl3qCWZ@#Jd}TmYRN +z0SWFwEBFf->>~IQ{0e5AopL6D&aih7ybaz0l8J=u(7V`w$GP9!H1@>63Icitq=J8t +zt=fvk7vKzbSHX539C^nk{1P@FfRBI)kICX*HI{LuNfz9X)j!vE=YhR{6Y#z-fOFV- +z1w;Eh8;V2r?AC|iQ{eeZ4(*%$3u{TFeHy9U08Y71ynidd48EZ{hiwS1Tq%XPhppA0 +z0=P=HLpAoj-KCZYTjxS6X$ZU_4rm#vbj@7?$r)z{5n@y}x{57C8o +z{q0ZJufv^o$<~>Sl{j!)38?cPU`Jr=T5@v8*U$v!m+j7+{4_V58<%Yc$i_(*e(zQ< +znM6wj<93$`ta2u4H{fooypv_8UrLy4PFCdJ5W#h02@QFt~9AzIaif__fEaTml=?+ +z>ny=pH_}0pQdjjoK_~ka;MG>r=e3+^PcaKCyp6(yeCz)J8k(&?v38@q0q~`iio!8E +z1df4wkH!4tpRmhw5yw4S*Ct>Gq+E?pv7e`{yb{|~&fY>7To*cy{A5{2yohk!g??Hf +z1@9ShYHgXXpK~DhYL1|@1OB_UW3W=S2`U49Y=C;jEZe7f8a}+JV*~$%GN5x1GN5Z) +zxt~OK5nwoH&?TMmtGWO()QF9K;P1Iw#Nf!xQF!1A@SfE9E*Sh8@VCN;%Cj +zOW+1Nhr5w>;9dezSQ)YhodXBaYf<*Fa9B;`4hd}6pksg0VcRI{@P#YTLPc+(KSEY* +zh2Fo3Bq6^HAE==k)Po0jbx-U2jNzkPf=CK4(ug?e74yi&bsk`-H3nn +zEqb!4ig + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0012.png b/themes/bgrt/animation-0012.png +new file mode 100644 +index 0000000000000000000000000000000000000000..cdefdc78205460aac77e50eed3ac35b2f2c15456 +GIT binary patch +literal 1619 +zcmYLJdoCghqC)<+b5c0uM^X(cHsG2}MetYtU0XllZuI3l^E3$5ExE~T5K +z%ch%^FG)7jgpbBhs0?4@_F$3m5r|ZXTW}43qxd0`x3j^z5b5$p8xF`Mb~<+WV~@ptkhaDaiy-L}SFMH*g?lxX5h= +zsbm818=O%nm$`Oq2q>B^iXlWYgA5QDR62n}Wik*hs00=pVKA5l8jKeWd%z3H$^Y+k +zM!EZjv<`r>(XVhWkw#`CLI`vgh~Q>ydYQQs06@nAaGUmq>tvS&GD|~Eaz^xmZ(c6N +zX=T~w+l`8_d<_>{hRq@!~^nAwKC=n*M}dA +z^L>3bt@t&`@SGT*_sKiL>7i$Chqo=WDTTG)Gc +zY}XBo68jWiBm5?9h!;tupOQKqo4J~Onzar +z+hlq82QQ*uM-LR+i4EQG!Sy(-E~sjkrqlZRR6l0Hma~Jix@%^7{Ct<#wCDCk_+Rxq +zUsQ2wDdT*s79}&+8{+9YYgRvhUL>#|ys%RVMU@xq@ayO`KO-`IbnZ>Jdt?DZ2f;Ix +zrO0b;hr-3J36SrpqRnwzw0PEsHofByXJF_Ox1{332DQc$Kk}c+TD8hXP%@7=)0Ai1 +z75I$kS^Xmh=^9>1II@-+azP89k=k-~%7KgAF&aIo*Juzqyh4v=1oiRhG0m_HM%^*zkQAhcveAX4zO_|N16-$?2T~ +zUDL^hZZg+zlPzZC^tP^P^~3I)Hmvcvs%C}LwdLd|mNw5A +zdn?+6FPf^K)=Q|u2lBkSUhP*B>HIQlNggr(aS=roWgV#<>z@71MtI7l*HZQIV)}R$ +zX=5>_an_U;UbN{NwB|@#iD``54Yf@EJoC#GwMEguTQYCvWkaDs8suJ=Zr_T%64M>^ +z6lxtA2#5`pt%6mW@~>Oz&QohmYtWFE^)?A22~A)BkP$LJSp9xmn0wgRwYvus +zMn>O#$@{t;=(6bHwY68Q?#s4#&gLzcoljG~eV}W<>TJd>S(5vY>K&L$$&X6G%m_qm +zDX&Jc@_i)(2Qb-01NJ~^c&Ek8vH|Knre4e|XSl=d{M&eV;YCtmu%Z}{MRh{JRv +zN38zLrBKSb+C+uU1s6QY_tQj1NK&x$(d5^)(uR`)^ql3(Oy*;fs`BiyUAKkv{>@Px +zG2848v?BQrL^QQZ1!vu((^UFv?y4N&vRxe)<6CV1{Cn<11wz*8Tw2p!%!*?2=Y-1L +z%6;YgxSA$E2i!W!`8y#pYn#AR{GiS}6kw?pe|Y^{bclU=etoRHVyBV}k~S0+3w)Q>(SlJ>DH +z%JXaL4w}+)YEO17!8cuhBFssDdJA$;2*rEc6_`2boN6C;GV3*U2ut_l35<~m5awl< +zpV}doYYQT*_-DGDXAj2@9A5e;`uUrh+~RwEUWBp1&pP^SkI;%eM!|v&GZH4rgP8-n +zQo?t1F|6;rZS<)r?5W4sqtzG1HO_Mj6!=T?NImR{9z$GD*t_ZC(27ZJo`2h&-D^!M +zrCxcSW7qSgN{W@$oq#(ZFeZByYhIuz>epAQqB*76g~HkejW$xXLG30=5L< +JZu-S#{R<=3;bi~- + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0013.png b/themes/bgrt/animation-0013.png +new file mode 100644 +index 0000000000000000000000000000000000000000..de5aa6ec0cd0e46ab5e254855ce0ae1f01bbe6e8 +GIT binary patch +literal 1617 +zcmYLJc~sJA6#cQJ;hI^vFPW($C0mP7(uNs{=7dvJYN3!Dn}C?ODHk!%)#j^J@v=%`2zhY^Mr +z3c}Fgks>so9nay#iXzaW2o{GWL<{+mTrNxSA9{qcSzKml+H*Jt|JgJI3DM-HRxHg;0cW6umB8(`14`$HeKQhP+RUiZS228zoUL|Pb&%K{kONDf03$>TcWF-Q19N7I2c&|tn`*aL3J +z68!(C2WCAb@S6yfm;MNk4`Z{0jx+{`40<0Q^!oqnlK(v3lK|!nFjJeh{2J_65GOsv| +z^Nl1vFQvj-CTgFngg}f>Z0ls|E*HMp8r~9ac8Z-H#^-9jTVJ#t_>Um!{ +z5BWT5HmT3A-EtU4G7N#YsG1L#L2Klu)YPg5qx&%JFPhym<=Z+a>)O~*guOo><%KBH +z(@*KNhY%I8=~P6m!o(gb9yFLS(Czf8`TO)2qd(s1;8FF)tDVzzCZ|##s8;X|ZQ-Mo +zgw$ZUjd<9BkGue}dHA`>(WLXK>wMO6&E6OT`W#N~)arf=CYd!H(f=w(iMMUc!6Lq> +z&ncAdbPE3+4%xj5B4xjFhY_PuiAFt9b_esOT&|qNl&Ts{6Sfe?;gwUbd#+3?-KA?b +zo+v7CLda*A$pts7JJpH9_C4?q9;usCS}A&>Ks4m$6!(1Y@dR~wgRw`pQt{Be1e4E# +zp#pm(=4ZYe-s&NXn0LFC)|i>Kr%I`X4oU{!x&boz)=SQ8FL*4|gljB)yOZP``=L|N +zzqnWR@~C7>jZK;wICwv{OPZT%ch7_bIRr&tUhm>Mn|ldzeNXih3bIZ1B}a+0>ATxE +zH3v`ZCayua#&l;#o2wq(Ni=9Hli5n+wjUD@#)h`a@CJDo3U`P#Ci1A9Ps72b%WE`4 +zN8F^P54*^lVJ@_^vht($$$<%1Di>qSF-PCCplZH0R#D+8dubu4=--!N+cK@R6t7_V +zoQ~&Jqv9@)9;I+$mvZv7$U|3){nB?Kx}NsZEPC;)8#mPXa(%ygJxgw_?1NNo&5z?Q +zwO?voh7Lp(qFm*L7f0M$5D}r*4fD)8*hWXbNqe=c`YI5}mKe2gFh=l&`ss89_U@l2 +zwyvA9B24J6R-xilBy%bd@6Z=JCAZ6Imz;moc1l{V%~Ft<^6eTuj8*^bH*OXYA$cQr +znYlSZelLWsTL@#xt8P9ha{9aihf0@BG-fru>lnMbJ*l`aZ)yIs=YMIBa +zj(S|gy+iGW2pgYi(oyrQn~K^hWvFk{KvzLZQKHMNbHefL-zV7p@ONT;YKkVANdm^8 +z^)GVTXE)KGZcsiy%lMeKyZy;rba;Sier&w)_^PyLK{o>1iYDFZi^L2navDn?+i(Ed +zRzVa_AwqHDEpEK*qzKt=_{y^>dtDfS#^M>lirPY~)v8NF +zJDMj@P5ineiN)RRR^tTin&Ojwbyh7go(Z$g|2Vc++KrA((&m>n-`AUOb|R2`!UrA9 +z`pl{)kO#ZdFE_gl*pk>?Q*A#0)KJ0FENS+IU%}0wN7hpEd$~!AEf_61HReQhT +z+u7;s`tLNJA4*U^CAK6ZE~`J4gnZy+LNffU2#KCJ-3|*9Z|u8huI};dvT1F>tzS#e +zb+YX2>&J(hOH6seL(3auj4CfR>JNu$>w0cv+8%rR9nvzA(M#`>n1Lq|pm_U}%eNg) +F`xj=u(4+tW + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0014.png b/themes/bgrt/animation-0014.png +new file mode 100644 +index 0000000000000000000000000000000000000000..a0199041fce991f918eac5776b9baf7a1cf10287 +GIT binary patch +literal 1618 +zcmYL}doj2cn&PqX`r$89;?c(#WU?3XK*_La~@6 +zR2U^1#h`L%kulNXsOWGqjm$!^7!*34%>0kY5Gt7-8p3-ER#d^)s~m%)$$%9aV~fII +zP*zw327|Y@!=tStY2OSK8Ljn`hfkdORE4{W}3R7?0^dgbzWFVMMp#?`%BIyV$`YeNm(462Y0y^sfPsN60 +z=KpUZ(KZfVuRkhm?SIQTBr2JO@Cv3e6a+9JJRyJX#R(z+@& +z5_!n83qybai3)}v6?Q-Tg~rK_inZ65itaRAPjt-KaI(W(IC2HPlaSE~O-+B3JI9%x +zS$NPR!uWRW^9cwDcv|`E)0?w3L&IZZWA}=UQjs(H3+(AS*=l?J(;3=*R9=UN`NGx8 +zlG&=^BQ`lbQXgT+6Zq7JNx6;m#Fw&3urIlH2FlQ%NfIPT5Q7l*WwjLzWWpZp#vw>^ +z!o_919}q?ZL9!f_6n`j7iE;pa{gOZx%FUAN4Hj1)@Ts(L=cd)<9^@tItU&8~cp^cw +z0NJS@q(7)q)J->EgCXNJg__Z!HotsPo4P98E(^|)I7arc=N4N}%Z%la*oLU8b`9e2 +z+e6x34iE>`k@jI18&~H(3C^TJY_FLQyqb~3n;QBzDs7~jwZ{ZOT;Cw?R;x8D2Z9XM +zGW`cW8oW0uvovWC=7W#NFUK#KFSNiy`|!6*r;_U;{Y>u_&$@n^2$-yCACZwNOZD>l +zf-e|-9<_k6Yr62bBFmr+{wk{0hop|NF_44Zr>_xnl@IVxSj~*_drG=zSB!d#GVOQU +zBnx5BhZZ%619^RQqpN?+=7CX4T)T93`_P>DB5dsA=n3^ojZooVv=)f(6TLe>aq>8> +z^mesR;Q3RsBegCjt^9ch2J{Sg3H!{y&0|t$adAh$9m7$Tq^(Al*IZwu$}WfQ)L)iF +zxi_su(M$$oox+5i!tG5`>tUh}p16CyZA&7-;O-UiNJPQ~(TV3NtbLxh45`OGyDfXsodz)(A{J?T53(mcMVKvT0ZiZ_GmiTaz9i+Qsla$cJ +z!4gh>T{Rf(HyotC?5U_rJ~F~2AYIMhcjd=?c0K4l^1*aMR36S{3IuNDH@Co>&8l;} +zo_)vGW^)RUHI?>&7arF3+}E8}r$U&fXPWu%3g{0lMQZO^QRtX;TgHP~#J@ho8G``@&t^mgFSgn05iF8WBm|+1^p}~iq;to{o~?C^gThXEkmQSx +z!2ZSjPWe(@o3Qb=+c>0Z9C-6q3jV2K51LID2DE}4K!H=Sm03O|)Ap+0${)Be20Z)s +zo29f-n>S95^NtH|>0T@RoZUS^dKieL*ows+Yl9QzZe<|V%&IS(fuWpVrs=df_|(DH +zyUmP+Q+3wW(>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdIXW;hZ*B4#0000GbVXQnRB3Hx05C8*FfckWFgh_c^0m{N00008bVXQn +zMsi_oWdJcXRuequ0000HbVXQnLt$-Ya$x{NVQpn{VJdbW>wx +zZe;*rZfR{{bZKvHATuy#aC0CJUtc+2^RT +zlCSpOYp=a7-(KgOn$PF+*>bs@Db6F&W!;axoqBD1Ke6rYdYkA=r*Ra{dqdYs_Wy5B +zyW`{I`C_qHRimOw&SmWw-Bz!3o?z3tYYyGSa3{D2oC2S>UzF>}+5{5Z5m@1U;7M>l +zxCIzg7WTWf3A(4;0saA(!G~ZMMvmf_^+-r=%s>pO`erO21CIiox|V9Gw_2$;3HMCE +zWKHe>n2b8@J^&ws17a=1hH;d&39u=p20jf8q@-%+p1v3O*l4RbH}KuSB*KLHPr(J4 +zuz-0Y)npCgC9+_&obu55eOA +zeTi$5kP+G120K6oJtLbkC>!V66IO8zRD$v@CT1eMUm5U@z4PyIZbHM|Iq#(}1Y6I2 +z1bziF;gy<<3_lJ|X)h`PCx{tpB;}4)Vo+&4=qt`)^d;`~`_7RoU>A5D25?kl;WP!$ +zwOcgf+Tq7)y)Q@U_eHbs{k9}4P|i4t>|xu_P5ujDVJ4toufy@A*Tp#7>JDpU)f&jm +zbzs(M!V1Q^BuThfmxKYR((i(S^eOBG6Y~ivsVk5URtDENm1~eDbY9gZ;eK>JO{fms +z2rLW65+<=|F;_i+LNS=sn~ZZawV5i(1n8?x;Ot>LNDJVbFn6Cli`?Vv>I&30x@5rM +zcCJ|})j&GarVo^Pn9x|A>!y?P7l30g7WRG44X@&6;bxu$GfW@o#J!D@gfe3I2zVY? +zR4=mX6H+oXAsPA2mIXW2D=?@pArmROl65LYKdoAof6aXEUj=?krt&R{pH%9n?x%C; +zW2gA?uwoMs8~^XQ=Xu2h3GV0kHSn@3(2E6b1B)#CX@gj~Zz~NeFiuC*8zf9%Gt67l +zJ&fvga1K=SGDghuEAUy~0d5QlSVe0_v#XL=kAi!kW6Px#OY?K!EO-g{MVwZSYW4?s +ztBtNph6JptCE*_j_4PkatL$a&s9>L0q;(O$4@2D +zS2mqhp5 +z5^$Y84`e-^uS+;KIpdh1&LgX`S;fh)(HO}(4wKL(eeB$i?Yh7@|1X?Nlva;RVp{+J +N002ovPDHLkV1n9E(TV^7 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0016.png b/themes/bgrt/animation-0016.png +new file mode 100644 +index 0000000000000000000000000000000000000000..f72a577c023379bf99ea2b7fb77fba843bc9e37c +GIT binary patch +literal 1605 +zcmYL}c~FvD7{)(EL=BTPP0Es7D$`iR%mvd*NVBY@92%E_4krKcWw_!5I4Cv>rWemE~fUFO3fZ&RCoq +z28Y8q<54)A$7XjAtTUH0w^ExyEM^WcIUs<=di*{(S5|WxO6wW?yGlGwYvNpcS8~F% +z+OkD$hgOQG0l$I9V)5#yZe*=#zG#voz!(sq#V|QEK9d`R!eb+2c_@>2Y1)9Y%|J;s4Yb6wW5oqM~`h35r6d<5des}5W%mT%Azd|Fg?m=oetf1lpp{N%9I@?C)!e+d` +z5b9BN^MtI4nrI?BFT1YBpALQ^INSuE!cl!vbkb`w3sMb3^T@5tW*%%GL+vsnIusK4 +zaDbio3+fFK2v)6sL3UOITXwKyKD*nal?o$dRn*AXAkFlaw7zgTsnRyUvB)=jjjQTL +ze;DksCi9(@lPK>sWCW6|>{4ad%@g{^)b$yvR;mJUDti=pzQcHQJv;2%T!Ry{(xu-~ +zhPrvSwHa2YFlr%q(abZ7?Kf;H(32KbYE;k6UUf_2B%afKX7^tPe1~EM)8sV)KT07{ +zcUPE;%-X|?TBM&8C-YYLFU9N;C;jN#c;ds==+KCtOR_L#PumU-&ki$QSueRXGkLYF +zJ@`Qg*WQ9GNrw*=M(qtN9ymEIdQsKb0MqAZZ#?LEZy+_OYJ#zfBnVpgT+~9JxHI0< +zTXP2?8RN1;4o!=&IL*(DGnYrv-7gudTL_UC>d}VcRJUH`xPvN`(fMV9k$L0&sjkui +zlW{5QZCQA#^U`f3HVGkr1!REmfCa)Q7>Z%X;E#IMN;{{6cAlh&i%3Ffs94Pe33Kcsz_?HN-C{7Fb0!6aNS&&PAaiQ7M-z;!jza5?;<@SXd{O|@4pYK~y$CG#b1 +z#_069k=;EDw)+;0J-ozwhK`q1-#b1T`Cz}Pi8!lH-=vz}IyS6ZAWNFq&zVfeRNou2 +zw*}6XkG?+Rmt3HyQ}&GxE1^x5|FlVfQoera-v7c;<3;kG+(81?c2y8Nn&j>orfrZ? +z*w=xm!5X#=Da=0Q{47hJbL#VE-KV>V)@D8q<;flP0<&hLKwCO1i`(W%%`uu6I+T82 +zqjUKVax;Mlr>;<2Hza=@nA7==n2VdGmDN)wL +z!Y#O(09n2j(56|yA4Y7k&-VH#ZIw62oLfe$`Ky9{`!+tx3Rb=97e4{*`f=;udt3Te +vvk7-xn%>0@ZOgjY+gP$!e635U2Gu4#kk=Mgf0fpzp2i)U6giQ + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0017.png b/themes/bgrt/animation-0017.png +new file mode 100644 +index 0000000000000000000000000000000000000000..02926e7137b875d477182dacbf0a3f457bd34ac1 +GIT binary patch +literal 1581 +zcmYLJc~p{l6#Ya&DKXS6k6T1m<_1VANn>ibW@(1Gz&;09bCi)H*;(sX0V$1AQYwKPHO-;8M731}>G!X44XJ +z{PaXzG84q{SUGHN2AF~aQy6RpAIIl0IUGj%f9OnSF*y6_1yA*$DD$N#3JqicE_eb7 +zMeLtj~|cVZq;(D3DOL{uaZuKM1p&>b!-R3 +z8830$Au62)`~YV>o;cr4+5?GZOX8kH28RLAI7~JTWO6weB0h=7$E+ABfDEQfhA?PD +zM*9DMI^*2}sb4`zHu)Z&lgMK5F?(oi9)tkFg(N&@?f?LK4+1IP)JWt>MaM6DebMl# +zi#la?_SgM*zH+%D%-t_mI=wCP+6K<%-Q~-pXxM;)VO?K;$kh__q+|=s%(rns0>B@MxDx<>XxrTDn7Nt +zKw|M*wJMcI&^lX7V%ws)p=Vxw^g`{Cs6r53`Wcn-dKp)w>dPh@9~hN+!N4y#{WAUA +zCgY)7ZH=VKuz`=(Wv8C%iuN~@#N=*;aiu+iv>~Z+fZ=q;TCK}vZ6SSwe!KO~i#^DX +zHSI#u@K~+t!(BnvV0c={`9b8U?M=(~@A9XDq`6gRlYbh^Hrt7b-euL7bgImt#wkWT +zsayE4u81nY^1^X?oq-RZh!ql|=tk*+U-0xQVKU-+!VMoJuiHMjet$!;scdMp`T4uR +z(?{>(5HKlh`}hf4P#rc!>l`Wu2GiVr_W2C!QZKlsJwJKSvgMLYHZNbR4=NHhftcc) +z>HBs;M~df24(FOvxN-ZP(%9Q8DfX*XsjT*jE3zFK=9e|`dS^m&mOs-8d9kG)?Rlnn +z=&Bvu$0|GDs?YOmi^dzJ%$TbRxs^0h?`3=(wg`9IxN+cKz#%cqZJ%uYn~C)Y{)#Zm +z8L6mia-YNv6*oJ4D0f)(P0Aa5CAK7@;dG2$m^aZTqRv)=NNljaP?KqFc3^#XPvi5` +zs4vGrX3XdX5##tKk2>QctfPjjlhLw>*lm88cZ=fp?#((c-KVnAyC0h# +z3A!RG62=#Om9?{E}#uPl)>_a<5BUorNMdkn#Xf$(`U_{Cx3Ha +z_Yd7Z$Rxm9Sf!0SL1{PZJ(kJubuE9^3TkWy2K3x{T)kTTdu`P~&W&xTCkk<`=rcwX +zIv449u;hLW8_eLyyY#s5T12(SaF7BkIP0T$6KC3=sdSAy?)XT1wJ1+EvvYK|P()s% +z#ky4-b&!0WEr{Q{v&dB>`HYHIw)VHJx??)SX{6$X9(Ro=v6*Y&tB2F7kG^)*@wZD- +z>WyK)zM0EZS;l{gUci~mkEj+Jl!>0hy|X2NuLB!=PT2SQGi%3f0f*F4b`Tg~ +W=68_kkLRFs2L$@=qSW{#6#NVJGszkN + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0018.png b/themes/bgrt/animation-0018.png +new file mode 100644 +index 0000000000000000000000000000000000000000..667cd7d4ad375878eb731326ad70a12f5536d389 +GIT binary patch +literal 1582 +zcmYL}dpOg39LIlbOxRpg*~TO#WE)SK>A1DIwH%Qy$o9`x=erKj;@6;_1O#1kxkcMVc% +zdMnxvrNoK=e!>=qvsd&G0+i1iDl3+_P9e#Hb!S8Lm4nw3HU2F +z1X=&TX^V64-twDo_KCr8DBY)n7|jj1GnwZ!+n)WaF81$agphUB +zBm>2XkIi*2kaXP~H1rZ|Tr1}-6uUQ^IHw!gno)F4LrdR{l(f!WA2U@vJ@azi+<-^c +z`L3$*@$r=SL8qF!y1MwoT<)^r`l9krDSy|Xe|abVl}2q8|FIaaefqJ~_~n^$>uzcO +z7GGFR2s*Uv*|9|pDduG0AXjPdu*RsKMLXBI^OiWF6dZyD=hB0lLdB*UQMe(>m^~(`eyqtzD(@==7!bpDJtiQ{u=0@b}@zDI_1ju%*^EhaFRzkH(Kpe +zBd^OVdRv3Zdy1#g%#|7SzTT|Yk$vB9t-p$>4YE_+Zgd+pYNX;aJ8&t6u!g`jM=Pw- +zu+DHw8#qINd3tq1vV*tExUh+3&D#Fv>5V)m-Z5T0h04iQu$b+FR`au}Rhgj21xwy$ +zsOSYul}FGQ4zYRA4bW~(!2pd$<^frBl$@J +zk3{o%=OnY9^n>R*OnE2DR)xY1h1~=vA})||3Tkix@|?*xJ~&Vc*=d~o`N?cS2SYj$ +zn7X-#Otq*;6(pHCR}-z}4?NLefHhjaL`L +z$ZZS!$iL`6bKhaCgL7n<_Svre+KD^ruNDWsOvmyI^qHmY?H$yCCtk;Ozr=jZ3*2(M +zu|-r!Hi7M<+BmuF7>;jnPg}j;L*=Pl7gl@wC?vq7@RqQ%-xl^pBFO0dzzpj{B({N_+2=er +zaVZ>>+~Snk!9SCeD{N(wdnI-Jpf0RD#k%o~Ta-F#FDT@f(9tFE%MkAlLF$w6X=(0w +zpgg#zej=eePju~~^ja*c+jKAE@6Ph4%nsjkoJVnn%4k;8BwNzB3Jisc7C%*TxoK@SuR^j=w_(hg(>Fh$^OJiGGEJFiia58BwCeyeLGszdu+&# +zKN~5c>{@&%c_s1baXQ;j$jwpgl2sz-1zJ@hs?lMUabbudgksI)$tL5aI;P8ZtFK{G +z{*#fI=NnJ%OOQVi%8u>IIf~=JiTg~&&qhim?tawHM3&fxSe3;!FIe6^N&m1QKWL_Ufa_$^-&Mq*U53MYLnO)l6faRa +zs4OCvH}^z0>BL-f>zyIFjJ!W}-t&IW_w#wqd7kGy-_Ktk;b}Mg4rLu>004G46C6B1 +zgm1QzA~?C>;om^m$|juW0>Czn&6WeQaorc +z6ecPo!#Og +z^xf2WyMU3Vz9tdo$2ik*r0MU(EN#t82K$WXwOjYR@Lycdnhq2QjaI(oScVLqS^A#4 +z4p!ah=%}>=;!NLS7sV?4DL3a+cW9OCVz#cP!h}v&OsQ$gLPsRui?(sTy!`t@xQh{C +z*I3$g=pr7EKXqwi3W%~f9aqtqI|LWK@OhXVxUq3V-&)XbAh(p}EzlBB1X|FUVn{sJ +zcK-g5os?3LnN4k2O?8^=Nu$(88@59AY+%Q{x)7HlI+#j5~4hH&&G5sB*1qyQd=v$Q?_=&_SC8;`O3AJ@!Rui3!+15uXjo- +zSde5FB3-j6aSL_YhojfM;)bIgHc@~IL#Ez1x1DBFB1}<9BfPQOu~l*&{F_x_NBCCQ +zllA^-G~M{msrr6R#@Caord{#)8h52gD>W%R(#b~o6yI71r|hkRN8G^agp&=-+3i +zV}^!F9-fU}u|DaJ^py)L>~_5blgpAPLx&>@CYRfLCNisfopW+j{a=M7N8YFl%h#Qs +z{GsEWSZ0DR$VBS|VkE~kCyj5pAWQ~H*u+Tg7uSsSRG!<(Vp05oP%0ieY)CAWgRcOaZFD={QcR}OIBO8sS58n>(6W~a*0rCCUC53Y5y_nL0Bd~YCz@zT) +zUK|a1V9c$ZyoRX8Tbgw!>XfZj*qwu}4umi$gV^!@1yS8D0$mwVK$LnrJ-&i(u8N +z#x6niU=jMZ^QxWUAFFF7KfJrhXWM*w4RK`G=g9lViJ1l!Q?V&BVC4WGlc{fAN%h?p +zDY1gj2Oi5Vx9TXmd5Sb@mOXZ_O-o?f|6;FX%WoRYrT&JzfPRC%;eZ@SP!zA{1XmD&!ljBv!pG4ES)7%7#q`2UO%&QEl&2HKfVDGXRyNf +T*Shb6w+?W2baN;_aZ&IujE2>N + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0020.png b/themes/bgrt/animation-0020.png +new file mode 100644 +index 0000000000000000000000000000000000000000..d228ed84fbddcab44ada03bb79b5c3d842e58a24 +GIT binary patch +literal 1558 +zcmYL}dpOg39LIl{X(UqEak|X0I%;LNVkvhuE3IiN5+=5pwi%lZF=j<_ugB^Xq032# +zBAvNkN<7K6W2$l7PKPpCGEue1{f^))Fp +z`_J(v>LzYx4*t~##*z|k7p9}To?q(9cZ&e_KoemwZS2Tm$h+#QK1xJJ31VVmtj6oab#V!Vz!J66f!vo(p0YF_hm=T+8YtQ_ +z{1@DY{P_p<{RD6eJbb_O=RSfyfwht9Yi%h4H)~`7%V(4vwd?@i$lRa= +zQ81ve8p}ZB^DDGjLJaAr?!@A`-^*ipifycwvr0#f+2(4ZQI1y9K-Y3hJi6B5^p^aM +zAxp<#kAli)+Dq4Y$&sekkVjmi2&q}3Ri%4tMr!o6OXQhxvfMzB>aKA**{+PkKk7p2 +z+--Xk_;eWl=-Tb#Z4zR@d6)Zrx;HNDG#u-QB|9ZVUOt0Qzl%ee<(~FVU!x>{yI7<< +z+SdN8F|9W4UgX1GVs*cMr%(OY25E;f1BVv{oIoU&i6TgA7sU2>-S>hWvpzb1d6!<_ +z50i?e3eDz8%{eXy>5;IbG=v|K?7G}jfB((kWzO!J+OoK$q!$$4)oA%E=uj#B8%e1w +z4@x~81&1Vl=swnvl1mud;#)i&MH5BA^K8TtqT+lL4q|-0?CRTr(X6~&a-*}D7Qxi4 +zGQuIHIGW=N+YYS458ionBVxB#HTrBcP|^aS<1&J;1UEkg-hAolR>WO +z4g=$G?H_iXqr>0CX14KP--zkyz)}Fc$xyc<(fFRJ%$*ri0X;mqE9ddI{##x-!)vtMIJL^pHHU_#4@B)V +zs$$75yu4#)Ty3Jv3!NUkS8W)c56%wSP9{NcJhXIU%TmIVFNd$7y3WN-R|;Ds3I9CY +zm7OUq2%YvxzaCfGW8iF&`s4sSWMvP*(nF*n+(wS8eF +zzt{AGqa&%Cz2X27?)&^=liTH*^|6$^)}aAVVThquUznPmO|o2v2?o^}M9EEW4Z94F +zX(~*P89$kMR&U=noj&28@hNbww_y}g+qD=8g}iaaqGU;~d#|aB!%RsNBk3Q5LB3!+ +z@Of|vnsc|a%Ti|#A|4jg4LPjWa;`z%uwajebHkNm?a>2P;z@CixGH;oF_j5oWA145 +zllb1mc!@J8^Hr;eF~`V&C@xOxAr4$evLzPz +ySzG6V*gSPVFW)9qI+07?IazBPQu=YcWXU(fB0{)GIKHU**8svnqI0n$CGKAn?7oBm + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0021.png b/themes/bgrt/animation-0021.png +new file mode 100644 +index 0000000000000000000000000000000000000000..e7bd0f5ca29b11e6f3f14f5b14ffbfc53dc2c6f3 +GIT binary patch +literal 1545 +zcmYLJc{tR09G-+I$6#fm%(Q5Vn#-1PlE +za%@|Ol2T|R_cc4Dk(FZ_=VbS%o_+TFd_Ldz`M&S_yx-4XpQPjNPO4jVw?ZHgRiZP& +z6GX&DD=C6ECp!8I2+AyH3I_t&rnS+VAUE@2AZf#O@ZvfKhXN3E5R(p|LxSmaS^%08 +z7Jxn%%tf<8qv*_VZV;Lq1keEvn!^faFo3ZC5ak~VFarJg9r9olY$J+5;{p&I28%~y +zv1ptr0*kdcXl{Wqg@rs5fF9_Eha5}?AQ+6r_rhUEr3710Q~EYa7!4G0*l1G4VUW|< +z;EsS)7!C3rP#BD<>`y!i6ty=*QUJgJAT&lWoyHAjG7zSivn&omeVh*(v^ET$;DkWf +z|9_$|X4a%PB2d=+79JH43UCl48l43q1dGG-a$qJ9i2N-g!H(>uoY2>icESOwFqg|F +z%csZ-d@~5!9X)g$bx^LdkKT{Fu7S@MF-%)-?*evwMLNv!eH#EXHm|C9Tv6eEVyR)a +zVFWw{B_$=h?5ntyi&mYy$(2s_C(E@C>jF3@-_ovV*T9`=$>}eyvuE*xBSS-a+T5>^ +zeUp-!mClsRJilt-NMNC*mDO;v>cj`XD?yf)=s<#q$Aa0X*J +z{>iU~7EcIbw4(9dGkpjAZK!7nYEb;iwB%BCIiTl-fG_9avAY&lEhD+K}xoB7#R +zC&$3APV;`aigAcY>Uw>fNiM2hyM8;O2}N9*s1lZ?NA{xxYVTi(pqq%TCz~hM3>%f& +zwK1nC7R!u1Pz`65i$6SHH$V2muIQJ;ZF!hv!Pt7ehj5_MM{@w*n<71YeXZTcTD<)a9DP +z_4?wa*xst7C#_E(lEp9Ht9gZ~gfgGM3v1O)FZ9bFRYM_PUD?4@T&m@|lN$m>)e-bu +zQd4R1u~?lQ8T}?vuyIYbj-$Mhz~#Nm`yVu46o$;XvCJaxW*>ivZ`7w!4kZpPn!MJ+ +z1yY|qY!mc-K-vxX|C9O$H=qdajGLzT&H&yzW9o+5&&8JU%P5!)xrH(tlcJF{(nZ-X +zeqEb>176zWRD4n&j;&OHD;7r0*NoJc39kb?@AM7bAd2+PUpk|DUUG~7Hm)j5=$Uz+ +zaQo_-__a@O&DS@=I9pGrpzJLgvk5k-oF~u^iy&36Ei^)yi$5$v_obXOUvJv3YU-yJ-qu7^K7GG#BXV|50 +z*SL+RbQAIEH$FnV6X83ACGKgxFLd-zn^+*3|?C{(agAHk!}{#NDB-)^g=-0l--i!u35hHnA12ciJy46=Ow{9_0(P$WN!jMqUW_m +l#LTP=R?h|}IX$=}Q}60dsL<_peh02H2+_fvP-*YS{}=dUzTN-; + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0022.png b/themes/bgrt/animation-0022.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4c7728223e991497f28174a8789626155cb762be +GIT binary patch +literal 1541 +zcmYLJc~sJA6#c0fC^;5dQU;P*l6C}9%O#f#+?p{=W)ZB2%Qgf?x%2IQ} +zGi94bR#>8^9FOJ{7E>dZCQX=DluNWAq0Y}bbLO4zy?f5R_uTLO^-3cnLM+Tzn*#t~ +z5f)0^1tMm#VN1Z7nw9kt1T%hUOez4ttrpt|I9-nf$p9gVEDUC`=>U$&_U=(sOikK**0|dOA +z7tYNMM{viux%qf{`{3P?$=&6kXW61Bn#G|5c)ZW|M<9e4R_H+u_H7kGA}A6F>R5d- +z$Sq&wwtYKXmlzc(xU?g3Ly&QggJHpD-pCST6y$s{5?2(2D{#F0uus$D9kz-^P|q9~{4kU~ +zRXqn*XIopFUw5m=;7qb|%l=y_4dX4DDG_Ri^|y@XPcwh?$@@E=`V|U=(x45h%RUR) +zKg%RG4D!F6pxN^!M`ft9ZKY;XsxNjj_ra%ehQXv2&!!AeRkhD +ze!6|QvN;*O_5`N0QN9IcrYRosS`~&W51mJD&P+dxI{FgJ?DsbALMlXo?@vfR^<7A- +zdB$+rTgJwP4|{ar(UL>Nw@Wb{(4|GqTEWNQ=yH-cX*oYc1lLg{COm3`s-U5CzxB}J +zJItopd!-5N5pB?h!$p-{=-iZnvVIcTX})|^uBWAyYP^SF9?T%w@%HCuyiVw7RQW5$ +zpFxA6mq6zayq?CAc%=j{yZ7#yJWv;S#N`OAsr0ya= +zE^{}BVI$1Dc{9)3_tWLdiXJ=S@S$@O9O!W_rc;Y`RFY>6S9sx#&IrHbb*JtR-?K8O)FZ1rv+JtAe8G+YHvq}D0b$1ON +zNxtm{i4r&JABi@_buFT{AG!79HW$U0uDew7L2T0Y^Q8fvq`~DT86^J7V +zh(qB?i==0vw245{tJgVvtGcyV<+gJ!(C*{rV(BL!#20juu^YwM7 +zi&+iK7C~`5#?4s0;JkC>_iNk7bg)>cEMz*w;H#kQ%FFJ#>bj=jPK_NcuY_CeE1?;A +z$ECfy#;Nk{(f28`6_g3TIJ?L9LtYT%uI+qjQzMB|>c6Acy*|vQ%zmrx_CEIjXimIL +zXX8k&ORyQ*m={|;6&z62g}QP75(Jx{zVzx%jo1!*exMV1#WMT1R>$KxXGym#1wxZ! +zmSPe2&Ar33y(`xgC?st_I^eHA^p`ja#@j*(79DH(Bm=^d_& +hmU7xtH{H!x)-ud3U=iGbG{oY?s{^Oni3p11%000(b +zl3x&r=*3>T1e^k~coGB{j}$HdfMtlqh5%a +z;M1@SrVz_xiP+p^VFFf|KxfkhSOJg8;n4a2p-U`_&WVf7Y=(kS$i*l>s*n!gajrzH +zt1A{yK)bqne(&LlBOnjeW`iEt%~YLHMpdBUAmt57DX|rU`m;K$$_#t?u1-%Uj2MqI=dkeT@!O(+^1A3Z^0Ze +zLCapd)S3na1caKXqOPP6DL+k^q2l_WwGW>>Cofn3Ir_2yYrMT{V^bBh;djhN +zq6Z9lwK|-=Fb>gJt@UnRnW{0Sd0 +znkW(Is-uz+S})v~yXMxq%9(4;$Ad+~QrG-z(2>2foP4578f%TsP#!=(PwBRVs2F$c +z@}J4lsbqOxkv^)i&oQZ^iRK`T(3}NYwX)*2<_fauG(G~IIIP}s(JvS3SZ>EX)+$i; +zR3CMBjq)~uAxqb%Ii-_rEeEu|ECJ@ix}Hlt^_$7#=SRb*t8ZAXvdy}%({lRx)pha2 +z_73xoskqRwbp5GO5%Th2o+Q5aT#eU6LS*)3lS*}F@(ZQp-3kXZIpKkV2`_gR7v($) +zfbY;5`8+ZUa*&4@PWFFDz1#dLV%x+?xSjZke7JPGMQHNV9qZO(hY&x`8uizojUTS4e +zM$5eOc#OnjYs=i5(K1!sHgj(hyvr%=)(z=(?n6bzstb(P=5iqe>QI?{igBiU;pljiP>-Osa|S*M!zZ^{e#gn=bS*!Ast5TEo-dsSiFKS_E= +zpesOK1XE;M<#CTZu0c#=+G;XvZ0o04DO(3gy;Ez-C6LhpkwZ~;0Y~!=^S~G(PR)e99AEILYMI&l76x +z2{AI{+Ijm82TeP79yA~Zq-)<<3M=Iez!#<22T+{_TS^D+#ZwpFB + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0024.png b/themes/bgrt/animation-0024.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ed52d3d40d594dc4ff4c0f9b796b3d0243a9aa81 +GIT binary patch +literal 1492 +zcmYL}dpOg39LIlSN7EQKGMPeHa@eg4BbQ7}LO3U#6WQz+W3$CMk6|s<{;* +zHJ2h?i5!=-dJ^VV2?xn7PVIy`Q_p$M^L#(w*YmvJ@8|vf{Ph)id%CKx-?$zC0ClPx +z#YaKIwSlQ9Zhl-`P0vwkW%jQH0LUDpnkPY&2d@eI00_6QiD>@5|V9=AFLKRi$wJHit00Klj!5T*( +z;D{tc0)f24hKwhn!oD?FaG^4!{2Vd|`zzQJGw2+$&!Y?^?{i7+JLk8=5j8l%aI0BSAZqu3DS +z{r{#Fekav$S)j0y-^ycySs>rgm&WEQ2oQ+Y$8*sZ003oCDNcU=swsaAMxdP3Qe(Q8 +zG@JFHNL@>A>ko5ZF^NhDB@^w)Q1jwjOw^ZWwqGTrfTnXXcJ*zIGYb&|_3Xi;H~Y71 +z)^?ER7B8+oAH6gx+qDdCo_0>Vsngz{y_*qVPtCpCQ_IAjr}_oO$Alfrn!0i7oH`z( +zhpdPqTW3qc4|N+l2UeMK+}Z*3*DbH_Cnq#PO12!51=-3dlULvFxU|QFM@^HR(MjKg +zSr@#S!R_@xm>D>tAtQD~%<#***aFc+MvVm`(ZK7Yn@8kr+oUTb35cMsD;KJIVgXat +zB~PfH@dzp4N!*VG`OV!Lm^Se~x@1#OQ#u4@AlxsDZk5ed^-Wj6TOfK_(EE>op7`lz +z*=`u3ywcSCFCdzZyaZo(n1^_p1MN1CEb@No-c=`!Z{+cc2P_sqx~L{*+{8KidRMFP +z?fk6!d;Dd~t=CK9#_k)3yeN2QWUn$(Me>|zum4{+-2XZ +zkGADab=3{5z;p8Il|wJ1-s8p^d0kY*$ugz+cU_MYW9Efn+-VE_RZ~?-YGQ8w1 +z3s<`Vq>1TPuU1$3EZ2NkUnnO3I`z5IN%}i{BnP#cyPB1EGF|;Q-9DoeNHrH|PJ-8p +zyPEam=kH-F{?da{$dLn^qCz?g?oC)WSgJIH2lr)HAP<|*nl*0F7-w)rPBDLreGSyK +zhLUpGEd?N3&$=-;c6f16n^eR~&uT%pCerZpd17HU9GEfNnW?5#Re6==y(fAydYFXS +zmwX^!_#xvkc7kM@=M>;^gtb*W$*DMC2d(hHX^20`I)3n7%K*Q0=tKczh<;U53=pdj +zqL)jKJwwL=)IEqtu|CL>cs>E$ZUQ;5+o31YDz*C7beWn5d;gizH&LIldPAa)3$Fnw +zq+s3I%B+Ll;i#M(p;K%|t?|RqG@=(UZk +zJqLf2-^-7(yjDb?s`gdeT!no*6t^@%Ul{?X8YshF%nQ4q$}4qwy?vA&x8^U&Psuol +zri2AF`7WhYkX+AKF`y}d`kG#i +z`k9G^4C_J>N2G_p+%VpyR3q019A}r)5Q@e~#nns!j_agT{`50&U3R +z{{N>rXzfTHc?HSpU&E6b(JY=WmBxvK5U{}F)6Stx0YKJ`Omy}OM5LbkD~9THL@bj0_q{&Rh;iU}fr-be$aTgzd&1tD{L2vPSb&WD1eyDQo%@{htZRWRzk>^E|qu6=N8@FC*UYxpy +zH8XnHm6X}2yzyzz91$Clhg(F1)E*gG09e8R#+|11eO*mJfKug<$D|6vQQ=lDv6<*EXkYU=d7Fv{4MuD?dVsULl3H54SSP +z>>9_*$5KsJPWSV7%gkD~1<3YJ%!e=?g3U{jEw27f^!Md{v1Mk$sFZ;lP99odQu=}+_ +zH8>S%lPP}6jf(>_Hcz$x`>D%)vSOG-J))tW7N8IhkbLTg_JQPIVa~yDaB` +zJv^+8@H2d~{qGK%V>8l2^2^imYOnWSq@~L~1ecQb4ysHY<4i0g1$__|dJ<-@&ouwh +zl$f)Cwo3C2u{c*S;m0rLymx5}149pmAjH*hb1i92X<=~joaj?XayTrB9VRrEf15J1v7eB7lhAa6 +xe&)U_H6hC)_d#JNHcFv`T(9FOSlo4RF#YNEcwwUpEEGC80GZ@XtaAwy{0oZvaTWjo + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0026.png b/themes/bgrt/animation-0026.png +new file mode 100644 +index 0000000000000000000000000000000000000000..1bfd5dcaa6cfebe4fa8fbe8a4c53a2650e039182 +GIT binary patch +literal 1427 +zcmYL}do+}39LL{5WspWLjYWoB*Ja)@%S^}&u{enkkzC%!U^FxA%*$kk7OORu9S3P- +zkw$SUEk#EucZCyMk~PY;5n3W)nnl}=I(zn<=l6Wh`F_9W`~3cTa*p|W?pFCm1pt8E +z-d^qja$>eed8hnlbGd7BAQQbp*#MxbxjhJ=v6#2Bjesj@Ks?;G|SbxcEXz@Mt +zzVsT024%oK)vG%ve=)dJyu~4kDzME8?u$mhnd;VCFSc$H0Qk(DLo!dsEGqIo>&!0g +zvwUA}_2@9ClhY-fZjkk_He!D0BG?WqXK0O;kEpBljpBcuoPN^H;0=U^Qwv=L67P~| +zK&F4ra5DmR8__K&w@4W_dO*tE%03AW)Y|l$<;-s}WEN`i(x+X1@0>rFB&F*~KH>8! +zNa^&#;_7;Bf8No(gYKJPYC>#98_b#vx4IEu5v!G_hf?V91jTXl^~0}@MwvV+Sji=x +z*2tLiYPr|`gd#pWR(J|EhKzQKu|ZvehcVf6T4CW=cZCXp`B{A56+x?(q-G%-D-=}b +z-Yyg#N>%;w-W}ttd+QO#QWU=}>nX2irv!i&l4nqwQLKrdZWN~>!0ILP1=L)_VucTB +zXfPF4Ga;vZmmWWnjXTe+uF~l)>jYBPwbaa6);StFy4^9B%ZeFc;y(%y7(V~R@VdFc_T5G1~Spo-) +zn$nQz>6HC?scLRCXzh-4`p8FTuFKC^t}h;f)wYmIleb1rV0(W+bfMKlOxTe*ndKKSWw9f+O!LZu7`<5p +z*1^rDf~8_wAz{Yknf5U8&xKr*ztKAkO&BKW-csvS{eN^w=^KL``)2!B*7I^Qfc~%* +z9vW5jynT!F*MQl4xGYHQi!`?6z2PU(EXC`+p9&r?ecCAHY65p{P?sC|#&zR-!_Lc{ +zTJ}IB9drza1t-GN4p!A@EY3{j_l}&Cj_$iQJG^?Uzf^<08JVr?)Tbn}My<{3J8`9D +z_C1|Fi!WXm)cGUGT?Uo)A41+v`O7>?NT!+fag%}KkIG!Lj%%}HO$hMJF;!7S&?%kd +z{6Mn~H}g|2?Xpxw^(xF_Y3|!0*cIv(_0BX+_ny!*5IU|YDvuJ`)d&lIX9fONxf3&Y +zN@>02!(Ak7u8(Oar{zB!lhh=9^bGdPv*X4I4Im#;Bc-nYrRv1hkv)dF@2u#8HiuUn +V%1LTM1PC>0whMGv-57~7XZB>`}9B8>!3pwMUp +zBAmq}!oQ`k;S6djEs?_}!`WmKjl_bp7!*34#QcwTaa0ohM4WI?Ras@QS%oFANq{{9 +z=?q6A;r1vP5_!PUfE0D(C0<=CUq#giPRr}23eCP8W1ql*w< +zX(%=F$usI*dY+8jbY~yrK!JZh7d_~5D08rh5$9jf_Y4VEI=|-O0 +ze9T=2XY@Va@b9VOIC(T{#mVWj@{77E4g-zp%%o#4=)X-2PBJ7I`FZzwyENmBxHJ=D +zT2#SEjJuFiwSuAcy;GFyOuKOFSQ)&#yK?BLWx7%QVLVcHcBHOh?C=}lBo{1e7emCp +z+l$8Uf6U;wcJ0Rs`gau^sw~oy7&lu$!UK+%N&cYw={ip4k4eJ)b}G!6hk+D-FN+qa +z-_H++^gHVKR6x6XVC5PfC2JhaSEN)`bme!qZuQvfyyUilOfR>-X&LS?y1Z92ScPnQ +z-^3`7d*!+>(ZKN33t!$&HMcXLELv--1Bs7am$ZFi4W-Vrr!#-0UY%whNxsc=KU;a4 +z7nFSEY1Wqi4BhE5sIBH7$7icf4fk +zC#?l3&~NqL3>45}0pV-DrAccm#t{|JXM7Z7IP3@xW6pUW>4eB*u8IW=OI;69n{-S? +zs)~*k0fa~(bIvyBik+KX&qT0`v)NJBwGp!i?lo2q5+cf)N>~|-u*HN$9OikKn(LV$ +z|L&}XR@05F6mTMWw%dP;YPKm);*d0tOBmNKjN*aBG1r|z!)V=KARAceZO4*9*S(%R +zS13JmN+6iqr`9*UC|G#Erz^_k|2WTUS-Lu)nqg#3qAC$lAA +zryh9P_a^%myhlZjGU9L~Yj(FWnP1SAbFjPalKN8H309_g$%-PVB=_~zro!fVu4%8{ +z!1&w_9h=L;^#bu*yFhV!kF;;Kg#Gd8np)!wSKilPV?|0GU3*?}S1m&vt+Hn^yH8Zz +zjj*j`xz7QayUjgj^tVYk9rdbAeQnS3wZiptYS1Utsgaa`KvwM(U*m?BF7S^$;FG1R +zb#t$1tD8^st0i6uzW8P_Hjj}UrH>)7<5n+sruPr-u8bGPE_-yg^# +z)g{H(R>?;|o!m>eD&&*-C2hi0uvcr5qPie^Xz~hk|H?b$(E3`rs8=YA|(pG1KlMu`+A$PuoQ!-!?ooqj)JPW^iPyT#icU|^zWHt<#g +zX4N(}!qDb8=TD&QHDPLK?&;Kv`OIvCiaj;34i_J&ui +F@L%rzZB+mO + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0028.png b/themes/bgrt/animation-0028.png +new file mode 100644 +index 0000000000000000000000000000000000000000..eda5e3f2f3ab415780c5c7fcfc273bea1920cf57 +GIT binary patch +literal 1385 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHM!~1;QW&K|mL#79s4^GcdOcKK%$NEd(~a +zGC3!;SRptuw*W{p7#dmBO_R`OU|?bNba4!c;H;h2={GxEz-?pWG`-A_Dc|c4cm%S> +z1|51-lWz0;`;Sv8OA^0*?dvVyefQm~0*e^N4^382J(tT@)uhYSF2DaJFy3lT=mCHC +z6o=paIX^Pn=NEXc&$E|(sH2oS5ub0>TKOVaVDq144J>TZ$}?}z4~lQ +z>KprGUV*Rof6|?QzoGGhg8N7B56>TDf7t)vbY1;Ei{vD2kHbfUI;M%bA;h&F#N5Q>f*i-4FKwd7(|6_nY1~ +z2_I*yXV{gl{W@47yhx(=We)?F@mkMAVhZS(nY7FIGpysHwKp?2hEG%QtXZKkw0X7o7tt|5+@LFeNoOYI1pm&r{oW +za7C>wl$>q +z{JU{-wSuA8vC}OdGFz52b#KHB`D=k2n&a>6zq%$|iN +zSLap5{%N*+z3%C5mDLTAJolD)uw{k&*}PuHmce`>y!KW1irs(P6fGFj_szMtyZ`L< +zM`mJPXZ#OJ8BK}d+mXAwuOR0@{bq|UpN|K1EmjIgMC^Pk@;I57HM6PaQdY~2SLn+$2oZKz6zx1nFAn%uB+IAbCAD^tU|JWzZjAE8T=@WZoJti;kKUST*`~wTS +zgS*WARp-T}H%y$@C$I8PN{RE}=Ejb#qSq`N-6Bn^mW6G5x%`S^JfrE{PfINB9l9S_ +zz|SJ&U{skj>8w*g +z?yLEWe(w_7-gzNeu3z)qZP)VPKi$u!8?w6vG0lO +z%yEg4%{j+qiv;ULiwiz?cP?|8-*(94gInT(MIWBHx3T#*^{wW!y)eJ9uZL{`55pyf +z$)94@ue+^uQPd~$Uk-CcW&@K6vyWumM9GxjXAS;7Oy{foa=_5qCx6iv-P6wL2jyRW +iJ$yXr#glZMKjn=3Qa-N}cgqA86%3xPelF{r5}E+GgkxC% + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0029.png b/themes/bgrt/animation-0029.png +new file mode 100644 +index 0000000000000000000000000000000000000000..33f2683016b52bf778779348c8c96cdabceed39d +GIT binary patch +literal 1348 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH0f49q-3ewP5Hg}{ba +zCg-FUD+DLz7654mLnDj2X%gBD49s^tT^vIqIBTbM2T2?9xOy(QaOwL0`qbsYQEVKZ +z?=Sw6NWHm0a(#;DwY{76&VEz2`|j13CA*w9h}NFl{jT!I$+x9v-d5VW*Z=gm)_7NV +zrt&fSu8HX~yH8JxzrRmCiF?`I=Q>t${l>>7>OP-7;XJ>1Yu&XZ_x<)wf(5(_1pZDc +zoLzXL;*8Z7kyi@qL^12&6&>c{RB)F@m;*d`q*}xr$Q^^&xs#RnX7ewSgqV#p&Xihe6OYH +zf17DqP6rYqHgP=o-J@G@AkKK+Tb}l$>x(;6wS(Gs2^i-6lRJLuG`xXPAmo1$LHPt!&tENW5;xOk_=ETwZqE>sL|AS1F^;gzqXf +z2KA>b4wOCd^<{cgCUm@PpUd-^!LzGgBo}3czvAmTayH*7NnpnN0`?2jBucj&*L&c! +z=L+k*N?F@RqhmAI>{jPH9p24*>Bsq9NAwLgriD*m@>ss8t=P=-(62w)z0=zciM^Nl +z&1Ct?a>doRtL}0ZWLgF1h@~)p6JAiRUBJG6RVB|QS%K=VY%4~)^&AKIo^96@Tk}2E +zt1Y76`uwe|gcp8oOrk`TUW?yOt1dpRDl?s@U|-R` +z{S1{n-`_ROz14W&TyMIr{Y`=8#U`b{^+YZvxlWwG&~si_>ZQvob}k|B7k@IZZ_PN# +zxTpNQ)rJ+mi(46Q&J(HsduSuKhy#m@bCSH!geO<$xIXG$-BQITQ)VmtX!d$jPQ{O9 +zJ2wRLESP`9Ln2Ah`oX>{>{?Rt(LU|>M6W&4pLCJqTd+ag!N4SamMf2aetLepACR6O +zxP9{7L+-9@#YyWDch6M*>dAjjg>~7%QyRxVIe*gUYirfAlVhmtyK%+Ad&&BZcJ*<5 +ze{UG+8$NvFY%HX>Vc(R=wMn;Pz1toMJ=zg>?SVzsy|-x<`>_?#6|MW&%Fa1WGJerx&TJHC;dqtv?BbQ5&;4OBP}10@ +zazQeG`h_D~`R$GNF^9CUFc<9p<|KDF&tc`#FFVUzw@*sRS#$n&_5OEmYszJX1xnP8 +w&iL}?)`A1)tQl)xY`t%3n4QBY?Ea6L{cQB)#qG}?14{u0Pgg&ebxsLQ0Fll~+5i9m + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0030.png b/themes/bgrt/animation-0030.png +new file mode 100644 +index 0000000000000000000000000000000000000000..c5132bd9cc5ff00f5c8bc7c495d215a48cc85dc2 +GIT binary patch +literal 1316 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHDi8)K2m-n=wFqISo`Jbt@aacDX(6!T +zmB~4&#R|cRxdlL)!O+N}ZkmKP0|WCOPZ!6K2+r1N-9@(?cwCv6`ri8g|BBx)kA{27 +z?<2XBSEPw$e%&>xEVsr&hEM#wX%)2{4%zvuVDD&wlR5PUiYeYBx7>6)j(Q>sIM;>$e)VpWWw9<_(zF&|ebj +z@2L2s{fQW(x&5*e*VoqCu^yf|`^e1qcQvfoew2sx+WukNP`-?Jx=vDe^J4iwE12XK +z{k~f*XnWv2XI0fRW&fDz#rlc5O~)oB)qd*Bb#AqJUcGpE@qyO{y^Y?o5`QhqWlC;+ +zvYKa?^sUH%s>mo|6;xYA!u+?d^%j +z6PfR*o#lP*q$lhk(X!a@l|j+v*WVVIY&gA`G30a8)wI7acXD5tv5Wcfo;4-B(Mz5x +z_TA~)JK5L6WBN@YtFRlnlVwZ#7FkX|C(haFd(ZOI;ztfVS8qt`tJ?2nuu6^Wuu(6V +z!@yAbp-x3*%B|prQ%ol3YeEm~Flew|_fq1a%ci}0x@^(gcguU8(A2y>_t5${m&H+W +zYo9;N{GL;3`BCuG6dNXWA;03k8^vPce!ddg#u?D!A}IE0mQwJCTba{23-tTDm>7~3 +zCv#UmTYAH)NoX2B*SyO7+Wq`K4||mky+5(e@WJGxN2#eU5|nk$#^4Gt#P4xEK#D3YZk-azyJ~)6*Z1m_zmYc$hvfdlaNo +z-dJz{j(Hy2>BXyDRG3?2KKMO*>d~?I!uh%!tJfCsJdd4(Tm;wn`7t{zn6wRRdT!_AUsNARX*kAvy#M#1o!=*x +z7u3}B{|MS$_TfhNfz2~cyk=X?_ETunpJfsb5h8~D`bMo5MGmVs|yCFK++< + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0031.png b/themes/bgrt/animation-0031.png +new file mode 100644 +index 0000000000000000000000000000000000000000..f6ed4b2b3cbe1611c2530eed5d67900ef2ae557a +GIT binary patch +literal 1245 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH16H7Al^AwB?(h7Eaj?!Pz>kGf&!($0b`mv+>{m^UpS&K7Mtw +zdX%K9Lih0r&RP2Ldecv@|NZwLw`2I1%;)ng{v>SfyKzL-t^PN|YX^S?v!ojF!{vM9 +zq|^8G{t42Xp(hQ3j;pO?*%tHt_SazI%)^M`Sj9`h8o>jYA +zb!XzY=(XRY=8J5zU`&yH@ys}gS(hG*H}_lr(v#Jl0&n +zu%teF?}ROa9rjs{_b$(zAMDBCHrF=yV=a?J>D|uaH|I|%*6F{QGlk_y(hH%bc3F?J +z81s|Ed%Fz&ep{wvKl#7Hc88zQlWxp2Th&@}ma-Etz^R)f0QeJ3F5%XRapJiS*T~d!D(z&QN5UM){YmipA3&9l!DL +z4BM}dT{Fsfi|4Wks9KgynysI9LumK;Ie7^()ALP>RMP7cXWgA*=B)F0q5q*(ldB#d +z{Mw!2b0L4bg8tT4_sMSkuM2+o?Vs0F&8SdfDNy+%ZS6kJ%!}!B2&p2I_MV4>U=3-&(Ror +rNw8KVhI_{1_}jDI{OE~3|5yIS2B&Hd%}8rt_GIvM^>bP0l+XkK%<~xE + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0032.png b/themes/bgrt/animation-0032.png +new file mode 100644 +index 0000000000000000000000000000000000000000..097916423d6c42f03f07781a8ca380ebc91a6e36 +GIT binary patch +literal 1185 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH%kO+W?0AO%4{7p4{=?9?+b^9=c20+bd4 +z8(x{5lUl40oS0hxq!|p2Eb697XfrS{TY9=UhD2~Kop!tIwgC@|^6|I-|K|(sl$hbX +zKI3Mk#<@hsN1M2twp_}+y{-TD+i#5t+Q05BKWFpjiCW*znbR$Q-FDx^_r@osU!q=I +zIsg9m{?kvJDg|C&TKRsKU(U&}*|x5#J)B}&l$8&xlKUp@>k+W8`9*vBjq~9Nlcut2 +zy-fe9Vm@b<+P6q&4M3HmfI-TRA%$*<+t;&@9oCKldZocT#LLzLs& +z_M-S_stGr4XWVl(nQ8ZFL!`g3f`yyk8xy~C(hr|(-@{a-=smwoc!%M}FaIahA7&S0 +z+V&))HdkQ&u^((#UhXVD_Rq`VX7WUJzvBv1XDpax_jWbg-K$J5?%t@^I>(urFsb3- +zs%QN788=?_YlvF%+C)RIaZY%Rnm~Pc;Q7FSk}j2F#>@1-&T&v}I`ZTE692eX{gaAp +z5}r-Q2DMk#Jhqd2K9BQdcI_e%btFnV%zofFOLU+g7 +zGNEj5iw&QumjBIqbFzN3V*{&y?_RSh42kv~$LGJzbJ*bFQ+(RG`9w|UmodSCU$tY}lSMe|I<8^ww$FPL~PJo~U(=;YOj3M(aE +z`Mq?vkdtKj`)F~*=gXQEyEX^w+jXdjv)l4JZLVd_y(91X|Cw?1jVGnT>KpfQ`OE3= +z-#GnG-idfo-u3Z^ZpMnddTe|)f5&W}365T!>S63YvlBY6_hmi$D11oIz-qf;gO0=Q +z{&kB>NX1ryWwJkjhJ>FC%CC#gQ +zRn}MUW}L44?$SiFt0_fGQqYQ953J)5uh``_LZ>G)vH372H; +i1Fy>eOK;rqpJCrO<8F7=?H7PqjKR~@&t;ucLK6VT(*5NC + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0033.png b/themes/bgrt/animation-0033.png +new file mode 100644 +index 0000000000000000000000000000000000000000..c9ec0e5e62b10de61c6d8f00e456d2bc8b2fff1e +GIT binary patch +literal 1111 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHzT +zS0?AA7ApiN<`w{H216r@x@i*H3=B-~JzX3_A~@GhFxtU1s)%boxL_q%)PyBeeM1I0y(bpUtgKoKL5@UL-Wr@?)5)Ct~Ji>TqF2+e$tb@ +zaqHI~f81Cp`1;by_cQ%+PP)xDb@jcWw%yBjLDSmKxoRp46kP3X?(UOs^b|9S6n1+& +zQRKc)MoZK5!z+$I$z-0ixN_DX-H#pq!uRDmcO+l>d!Wiq{r}}@Hv4^TA8lH9_m#zV +z@2>gJ%h*@EiRSyb$??-aSB2AyFRWvWVYp%aPyR`1U4r+$jq7_YT79>?oH>ilj`Mjm +zOKh>rPl4ZgGoEcp^_JLYxp(9D=nK{<;bG}<+jk!gzZ@C$Q~`TMl%*}?(&u=Ir%VOYcif1_P?%mgS0^F +zzIoacA{PtHSTE;UZc#C%n0=Ap!Q4Z4t|+YW2>ZAB-s7gvPCuY0og>AfbXlneV +z?;Y*S+obw?FWhX1UHI5(U56V}=kzL-?-HvR#Y2)WyL?|;wn!~%Q!Mk>Qx8umZp{{w +zwwPP!`JvQ)r={h$oc1qM%ZfH;s~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkKsgoBtr|c%4zN>-5`mJ&Cc;X2pMhe6ATej4P*EZSgwiuGF#dDFA{Zzs +z3X%*?PR&bYNX*O3O)SaG&r>iqNGm8-;D6i%R3Hpe5Cn8#Y7xRtJp*&Q;M0$Q(n4Uv +zE0c3lixq+sa|?hpgQ1Z{-82bp1_q|Ro-U3d5u8h>H%@w`z~j31@&EcwwR27^%;b6% +zJ#!_e;?D0vUGMU4Z@c@gcE8~V*<*9kXMgUPJiGAB*-Fdf6-PYG8s-bnG>)m??so6< +z&pmhFm*2U(L65!Hwn!j;(<|fUEBY6Qy2X`+x3D~an%w;1%beGOSCSlVHVobCxBuRf^8|xN_y&zP=|*-W`uU7SFlvqt)_l@`mpOZheZIv$pi>8>Nl4 +zJ$GlnZVG$gv+LAa(?V{ZeVdt_)E4f`zLLKGQRMW`??je}FTZx=PW%p@fWJO#>`$LG +zJn-7uKy-ma1M7J)d*;{D>2b+IzWcjkuRN0%ZZO(;;8~XON<;HQF+DFDbj>zKaoz3B +z783X#*z@4oxizNzjZs4Rzh6n6Gw?G!x!P9MSIzgtjy4_r^+~UVn35fmV!y?nUu!mP +zt?Y8MK7~22?-w;sc*M4AZNtjvFDn!G|4b16syf9)zSYn`P_Vc>QC;oPffHMUeb@fm +z;q*h+gYlN+1)Xnt_ACbuK9-O@;S`fo=Jx1QW73li>wI6^>RI^5y9ie7<-UA~`Tt^f +zTYe`I{(VynFxv + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0035.png b/themes/bgrt/animation-0035.png +new file mode 100644 +index 0000000000000000000000000000000000000000..2bd3b0dcbd17f182023d4d609f1103a8b128c7e3 +GIT binary patch +literal 981 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkRtBcQLaqCNavWf%6eR*BjZITj<5GcQf*>(xpiogF1BB8uFfjge!6Fza +zDGHJdPEO5BWk}4+%uOuG%+FIWHb^TdR^Wf!1XLglQV;}mVQLY=PCWy2yWrE0fYL%> +z!z+_>Qi~OW6LSlIG=rg$Mcp(BZ3YIWTu&FrkO%^GtTzm@?3tV +zIb5r{o?pLgJIUbVCY{rdzgF2s{Lm{tmMQEmm-DH^Hzw)KcbNp?ADk*_k@l+_tL^6Z +zm&O*_Pph42@_n*r&Cyl*hTe{HS4zkp-=gnFw6-g<%aijqs@TOWyh +zon3li?enycy(Pb8oR>W7cb|CjjnxNxxxNE6@6@~OrmlC8VgLRjzH6VpWtZoBTBO}? +zvZ@p>U+%YlgW2b#y+O$=v3$4QEK`qg*!tkewOL25TwcGU=jd9i$T>f|nzy^(m#Tdk +zF85pL`Uh{jzgw3d->kgmz)XXtXJ5B|dHnu=dDt_tYTF5(GsNVLrtkYHVya&DO(05o +zn(zb{?~Rjs+nzlUc=q<}zGw0Aj4XVO@f;psmohm1iZ1(;l1tcKx)2pSco~ +znAg=Yu{7zN$+7F1B=h!5kACGZXO7O3GdJv14*FI6+wK( +zpWlMshd=l-;cwduj|V#aZO+Zo?-?iY6}c6->#on?VK8)l^6`$M8vC9ifByq_lUZ-o +zEDw#j?SFtlv8L_7JwuOAPt?BtmOjYnwyAUXiJ9i#*S2miy6ny8_vVLdier(hwZ^;i +zzh<8OE%sa?>hs_44!%((9FGhOrQ4n+*mm5=-W;y&xB8hywh*USLi5(udn|q(nRI!& +b|8IWxb#wQAN#$7xOqL9uu6{1-oD!M~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkRt9FLq_2SVbAX*vln9hGHv6l?e;+6&2oiG!3KbDnW?*0{^>lFziQw#=))=Ja$iw3L_kaAei{;-gwb<51 +zw;Ip%Nh{W9-G2M+x5EAR?JWxWXO(WWE7^1QVsyOitM;}?#yDlu`sLrx-1`}ms%7=wH@#Z) +zIlMA|KNCBL!3~3K+XPd~h`#le=N?v8v*%cCS$(n2S}%rwdgyfd_YAE}&YQ!Sf0tZ+ +zC^P@hntA?y&*oe$PS7u%nKfhGt5CMkSR{dpqwZK+PtP?5FR%M4a%InBo(i?{ +z%wM18E|Wjt?z#1YW5T>TuN<}K%Vobi +zaQvg4#jTH}cLdIwX3dkbTK@29`uCgL#ZFf5xo3Y^s_e&p?-#ERPc(o1)$q+TzV29; +z`BB+_J~QcGwJ+3tP{7XfUg>GYT37vqYn7%O_iknIb#~b4{H=UpmO}9&$wiTCuQTyp +z+~M5*^}6%=s-1Svk0vv6`?MMGY+v4YTyDF?Mh-d7KNwNG^2=^ZeA`@COs_P*Nv;FsE`lROs^ +maxcX1vU~Pr(aE#I{~0q^X>vclIt`S189ZJ6T-G@yGywpOfw1BL + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/background-tile.png b/themes/bgrt/background-tile.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6b70a2d40790fcbec68b2db067f4f6b0d47ec740 +GIT binary patch +literal 79464 +zcmXt<1yGdj*TxCykOf{k7b&HrJC_h71eWdw>F$n2S{g~|1r(&aL%Kn_8|eo59{w|* +zj)U$v%IRPT+ +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 +zZQI$~@9<}KU@;kXN@H7w@<Cy6DdV +zBiCzmE^Ki-)VR3ZpQ`w6hMy_q@k0@G%cZ8syQ~NcLH)8Hb^AuTXBp<0!1K;C62vc$ihrwk`I;5DvE02$lYcCzr +z|9-zXogkZrBDj`aod)6}R`8@CA0fPa7d?zkIPP`ue_6!{qk%wwGX!BBTD=0Yp5<=YU3=AE%~aTUZT8 +zkd>XiUI4p3fGu0ZhnG0P)6|qsTVKE8Eac477d?CEAFtn0ReyN?L5B +zI?r7fahoF^$g_CLx)fgD-cJ2eKws1VDfzEC`_o+tY}7&l3PXsXd$wQy_-dV5Xd3F# +zK6VlabS8SgmmlrCp51C}?=V7=W?>;HBLqr*?OWRFZrh;l3iQbTNW6-BP>-w;$DG$Xg6JPw$$Wht +z&-&5kpC_ycRiR8^_NClvO_d%M%@)z;$BQn3<|-IrhqF=It*tUcV)SG~kibL%{4KTR +z2WWn6ZLJq5GT<_wdZd}&f8{p*;G7k+bzwB9;`OD_NsF3K5pZXQKWQV8PgnYO=YT$i +zj)^_{Mo5sr9isHh$z;P8|0r=Hx+NjL?-}!>0p@g=*}v%N_#d%Of9pV>zxfv}TqtxHrP-@Bne*?>7dz +zy6;MV(WKySX$X|y5OnB2`0p6#xbUK6_rAqrck?u44NYcl~?#>a6S_39f=gl +z?Dndv1pW>hIBtTJ3~2DirG6)d{axWKS~NJFs69eNVQZ;E9HLq#848qC;|tLDu6Y(V +zHmZWLJt3bY(W_}S8k3--Bz}t3a% +zUKUtR2c2J9(lg3;u$H46`i1<8|BG4|mikQnn5s|&aCT_C2g~1368LY>otxliCW|U~ +zU&Fq`+PXiS0nOe8Sr-`^gVT-)Trblo_`=rw$;M4jC~vqYjo@$|%#(=CtJUBqEx7H8 +zuP9^!k~K%`;)z~;=7MEjG^iwpRsLr0lV}uv(#^u>pKeS6sjaQ8zQ7Pbh8qzEM`cvX +z+|yPRQh}cIL=s#O?u090euWKux07kjMg7sscGh3@7umG>j>u%zU|D>000DeT@;EXw +zk~ySl)*#RL_DdEIwmye*-;MCOys>r)aDTQOF*G!^U*C3B5n|!%%*li{03%W|XZcD>ql&ndDdjxW?#yS~#jubUdlWy6 +zS?vPa_YllV@rs58wn%x>ynT<$nD`-DAw=ao=lL$@ggQoM-HfwTBEu(MLKw3wjqO{M +zob4J`8}WA~EG!$CA8^9BBu!1BS7I*(cHHQ-Rc-gj%!p2|oqP%b=Yn%=3!<;_l`oEj53&<%>>CN=uAY*k8Kf$ +zo_&lh_!&?#RIcENSg#E{)Gc5F#CkNbs1!!pwwA$vW3PQrowcBgkcKstdM}$xmjIR)r48cf@1RkvnB5O9xoFn +z5~g;z*L_&V$n@bAnbL1YS_psj>Cd_?qNW{n9qae;va{24!O@llKtbEgII|#P^W4je +z2-otB7}yvwVz09edXOQDbOa&%GBPcF+=+x`iu&D0nb9EcUUfI6c$1?akjShz2d2~R +zo8;Q8!rmI8Sb*^tWUk=wb5`|=*R_-kFwrtT+4jeK8@UraQmEGlUggK>`|4!1A#*4I<2@5Lfqei +zx6L>uv{p>Z_HyrePAyZ1b0qSkbNsIVWZR{%gH5)X12{;M>SX*1Soewp>od2%!{L}e +zfzg_Sn%wLS7^En2xcdC>234BDt+$6QS@t6b&AH;+AQT8L=F!F-#o3?ro?dpy8!p}j +z!apc^ZcylZ#C#rc3t}Qy+c9f|!Rza5uu2RiGO1uGv3OYu95uJ6$?X{!vz;cg{lvG; +zlD?xPgFf$NFsd}GL&xx(Zon7>StZQ!hC%3zBaZAxXsXYzJgb~ +zaspmvetTnMBwSr7nWz$-T*EmI0x|I3FN{S@yK>Q<>C6|U03}$Ae+JHPgP?%Q*1 +zQ(owE^(>72v;J(IRJ$1z<;eIoj|V~^;agdRLl*BZMR*sBnUM=5VmC`JSaBlP^YM+K +z1~e#iTQ-hL|GN*~NJo+hmLVcF7eb5a6-J}CRiyY!gd&A3>T){W!px?Y*UcX9O944yFpSQ+XwQv6&Y9tLS= +z`*0iAyYp>9S70XRp^}Kjsm2T`fy+{=iOS2HYhNED^uCJiq$z}x1-td-M39Lr45OeC +z3@xPV!Vk1xZA?ZdE-&j-L<8>BT-$Z6IYlg~9>V)y@$BHzZ9luHulIySeCc);r4z!1 +zqK%X(nYhu#@Y1ldf6osA&kmjIu~EqbDJ2l~`ZvH_cZhuBaqPl2F3pPG5QF}%Q8W8* +z_#A8F)ZigmXb(DzfWXcv5$cz2q2TBj| +zs3L?ww&G1sv0EPMuWaC76SYN}gI+Tfah18%EL3U}6} +zrYSz1smE=f$G9;CS!)g8tYNf1TD4h~!6UkD^ZdNxzEVaj&VfTRc&*#HT%Di4wzLh) +zeegvvKyV*Ecb^EAB%)4$a3h=I4b21(rLzA7?A)fN1+yPW6~*k}^W>kt=A-^AoKA6* +zxE_nRw);u^rfAYPk*AY{36C#BvyUE_TK{`2AXw#$=#BJ_#Q$0$H6$oyq3IUV%20l5 +zxVq~7v$FCRe*$ZJeF=g8(ute-EG*GWYId3_g}*nA(R#VQIg`VdOP0r-%s=B-{UjPV$l28SAiU +zaLF-@H@+KvHC{QDSj^#hTQtxLQ0e4x{qGU@w%Rn_S#AjzFA39m!PyX%K;(oQtgm{a +zFI0pyp(k_g|J))vg%AG@kuHk@vWNKN`=M6vI!BzL`sHhV0p~5bkiDKIJwl<|Fl8Pu +zTfOKu3?FLIH;AbM6TF{arC%xs+$Vna6@(vv#*_1?0^)>4xT5o1h5ZwCl3RVadtTZ5 +z+yG|y9~3Kv?e4Wm#%wLx4402Sf+#Rma~f1FrP&sDj)S$sF8fXll +z|2Mxgh5z{E&JD6DSdp&@+P+9v6S3O(NMmj+Nm@vCD-wF&85i)liL&T``mi)musJ>z +zrc?F#2NrV1?a#uTpey4yDRp%=IPa7A#-V6fpK+KI;Hd6*BA`e(+$Qlo!h3odZ4)~? +zR+&R)HN%kwA29yd$Ow+1*LE`Rhkz@IiLE~Lhf@K~w_CC9#^Tu`wa99+e{q*$Ka-0FtLy2YD@6m^LGJ +zG!7bC@|!~C;(EdJgLS17arzU9cq1lB8CCBwrQg(ibu&u))X>=Yr}zRhIBm|RRuFf! +z9a3YKLu;WIkxidbrRjXW^*b7&PZH`v_l_P{bW?j(JZtt5=!#ZR0|@&>82zWj{H#$# +zpE?t2A_F*kX=(@i)uD)}A0WO_76*jJfRWvMpw*+ATv|j!bB-N9QxIe=flVP#5|!!V +zjoeQ2HGTvE^!X6oHBrkJw9Pf_Ib`9vJ{^#vgJKup0EV|2UakAocb?e*EAqtq>@*nsK>h +z&K8&l#=ueqxJ+ACVw0IXWq4cK-VbCLm@`(r_V1cHG!8uUz(VQbR9bq^eDJR@szJx| +z4{Ao1`Jb=)gU%YU()3@O(vjaJ!{Iw)Ibve2`&od_3EN8MBa2y^Xr_^BfRLN2c`3El +z{7v~~K~>brVAlBZ_WzxBzb4=MaM*2u$+8yyV3A&YFs_1+#LyKk4b2yO+E*UY-lBom +zOha-ncE?^f{)v1|I~hs+xP~@<5cQks#`-m;AdAtegz~7aws!i%{am|$Ag&7Ps3#Pv +z-`v9g(XFt9&BDH~wY{}9E4@yi1}yUVt-N%>=Lyg?jSK%JvQW=Ob*RQZ5|!gzS9YzG +ztz27qqtgdHwm{i}f_pa>RUGLzA$c|24aPI&s!)OUh}@4XV3Rj|>H(^sTVq%-(V5Sk +zhI+Se+Mk~UK*m9-p0n9%>Vx#F^e$;GxFYQeH!O}!?X5n6tyO_z%8C>qn-QAnG@hs> +zJ|KG~_6D+5Z5iw0xkFZbTC;;FrljG@1HgXoSdX8h&5@?MV$hY-Z@Jxw!jbB-oD_Jz +z33#sGR7oKKVbId`*>r=y3IiS(11K9IwMi4 +zxK4gOXa9aW^?IUT9PCL^a_2yV#^#(|27k%S5=+Ybp-@FG!Z5WT?=Dyk?0ILKCQ)Q2uk10dDP;&} +z(f~HKmD(4Olbcj|@_$TCtg0VolYI#E%(rm0HHik~41CXeWuQEL-ROlqP(}D*4z7hq~&&87t^joVI*8L9-Uw~(5K)1OL6Xwz<35`j4NH}yir=t%E +zog!}$!QiL@ueJA{HVIJHTzML{cj!{m{bC+}^?*wGwAu{DPw#Zu9~}2%f)vouRPfFh +zIdwFJJg!cwXK{hf;#1-$Nc0*U^FFv>NWQz9F}DU;ca4kOu7#XFf{c}G+rSG06A5p@ +zCZPCT{;>IprH|!r{nkSC +z?olZW=GNQT$S~K7tS1k>iZ0obLHO0!Ncsd+8@8?MOoVzx;<1p)Pp=j@ux!5eUO^yK +z{X9XwK+1oM +zb^VC^#alQZ#|O;G9bb>pZ7+fp1Vg{1+KRRR&QFy-6@j~oa=Ajl!{=HiFclN*(f5(uOC>SIxbM8~=nzP0J63cWJ)Ij+^2#YD3grm9y7>8Jg5qY#KxW@ClU +z7vaYmVa}o|1Uk@ur+^kOoQmqMt!L3Tg +zE-HVyhpL>M(6%m_-ljX_)$P=>G_6Z|lrrBj_2xGA;j-iPwRJ1IC#ba;2ZZ0sl)y#B +zdHg*~z6~zRw|cVIxb=a*`tAy?3Wx_2gA(M7Dokaqdx;Ymu6S?3VAN6R%`^VoQqBqN +z4K*m|r0 +zk&|)LyXfyz_pDs#0!+kxKmKLvUy5$01qoGr_=wygufErgUV;gll;~MqvE*^n7(CO1 +zP@TL_|2R&iZ;DUSLJQ7%IBBOQ_>#t%b&le~)QzLNnM7BeYUtm%OQOyTPJoK^#JqJX +z%?1pL(SrjUq%0{xVp6D@a7J;*m{8OXg&?zs_@~J6cC{`%RkV;pfrQ^#vmZd#c>F|o +zpisWN_aW%2f@mn~KW~7}$Nq1FxP9-U5^JsutjQ_bw9Ap_E05w_{6;On50LwcDj{BZ +ztY78Sc{VHYQ-eUhL(7u7Av*dRkggE4*Zzok@7VaZ>waUubu)x^ul~EP7lA64;BeKu +z9vVzf1v?)^3oNPE*@&GF(7ik2K?{+v9@9KQ#@S87lx+uQDHZ~DusU@0d{MBS`=fN| +zD^uw=B2F8SxR%B5aE79{_|$;K|pf|R(+KoM%{ +zXbnV3ukBKhZWJp`oWWDbUTXsfTzy7vfE{f_Q1FCKlT&y>w>yj&5(R-Y@xJc(uPIuE +ztV(f50yi6OkupY<_`3k|Pj&^I)tPo)PQ(nxpMUc`l+^x>^!EFE1)a~JnOQDDbk>6u +zB%CX}{OxKjM+((OKZHyFeNSO3yrNG-{IorM-9e80yfm!Rd}}BEH_frIN;5%hd82hJ +zxqDnN93b9x;SCy@#r{(dpTGZGd#ohazgfx8E2%S=Xw~``fKJuws$9a +z7eAcrM{_X3fL_uw{0QsRI1dPiM8o*n+r-g7tJ +z)+=GW($|-i#jJ3LAO#-d|FjPh>s@xfXbF@w*VRG2vJ(J}NC8P!# +z#UcD?&sT=eGg(3TGlw^`x(>-4;VHrAw(^j+fhX;hoX&Z13Z-h8T#(9Lew^qaz$6S# +z6)UrgK3z^xLc@kRK7XBw@CSYv1t(54y6oaE1ck~g$Xx!BgSG-jOr6KyrN-;m0k_>K +zjUrb(sA?aet^L#iEg|Pv!WreEH69$$y;u6}^0wDRfE9{!E^Jr=w~6iE1Yj3nsB3O+YRc$XNVK3O +z@zJ-e({qi3b)_y6cs;!qz0IWuvvPN=i71kbeLrne>Mvhpula)BLO=UCHoNr?fPKh_ +ze_6J{bh+#Ov}8>9&GDO=Mh^_um4HV8#ra{-x=<*SwTC8l+ldE$hk6bEh2FP$20#i+ +zHX@Y+rAjDSs;+N5YVa*S1nrq|sYi_@*so6#gQeAXm%kosYi&<5PHI{pVzKZTo=W;Jb@3+7W7QDfSLCrSR*LpP^ +zSR)jAbr`=(UI8anVM-(Z#Fa%6rvBfQBLo@(ctu4#cqr3WAPOP(@?36{m2x^%Z|>Y+ +zQ#Yp^1vb<-yq0p}J}e4_@Vn?qJ=?*y1T~>{Q)>t1dK>^#NF)Bhs-7upj*^%Z^W{L^ +z_G12Tht1)8w%-6yHO23=(et>oW08{dzW@eCaSo?C=QK_}yPflZjnpxGHA#CwmLcW+JxL7Gm=hcS7tPdu7 +zK90FW_YbeyBCX;}&BG5a>#wS~=-Y7n3^XVdah+Ut4S~b^=*G8Q=qg +zx?G2zMTqYh(~HtFa=_;*ekFrn=(^!9Cy4Ou=MQ{gPEnzAG+yH?u&=~lxA8`K#@^Ii= +zETI~iOfu`PHpy-p;!m5oFWz~j*W&4fJK8~5i?!q1RWe#*vtLy|Ihdu=UGnnc!BPhPGZQSXTeZQYwz0|?TFEjBD2FC@JzN!MpcDc +zS{q%JnYHfMVzvX6jh-pVQkvxBM|eHt6z+$YN7@b{bHL4pf2qEHk?IM=`k@Jvm-~&^=d1CMafZbtCY`pl#x&>1W06N1-6&GSr{YT%> +zaO{|^XgUsGcb;4td +zEOAfXhg|>%P=h}IvCQeMDSQQCR{dp;z*g8<7!;C;#)Z!RgH}3`M4?`B!uDABK6FDi +zsVL~~H@46$2r>o%gDEXteOT&!{wYMMXQAIYzQ4am3dylm&$`3+4LG>O$rV)bi&m6;npc}y8Z@IMV~h#O63}ox +z@L?(w0kW{x&HgxQqmdgQTj#CO0x7z9FNJIV(o&2t@ftf0^o}xA-Y@K@FCP@}A)}~i +zOIwY0({GIh{BwDq{}1QWC@%vgh>q>MFaEPAaGg$XT@k-8FE8^}NK3BM!jY^*%uga< +zsAJVeHX}k-+LWUy2kj*3f^U{?$wgT=1mlEaKQuqh2l%^yLGXg#F#i=C6xbZH} +z)Au^+_ai_9(kau?2jVFdZ9zs=wk+n~6{HhZk1xGiBRqPWD$6ElNu&8#3;+@gYg8)F +z#GWt2>}0w?DC4~z^gVR0sRAMRRr8(o?N7&T32%$GzQ3@6WH@tnG#OyY-02CxN!oHx +z)hvatM=NnY&uALzhjw}&*UqUhl%ZLU54;m?5iMui4P1Tt>+u>Nj5|4`@2qmV0M_~KmZ&L+atS#joFGD}og1?)@$KJWtx?mld_kJ~LO +z(5Kg8kCnzPA$yN^7gF(sd&9Y8(6Ip9TAi$`E4LqlMm4?w$n-Pd>GRNax}~w_n<`3@ +z#*!awpmoL~Rm-C_%lU5t>dq7kf~R3U(MB=(pg>|kLWy8xibh=iOMqRng0UmHdu?Rb +z0eyo&g=v7zGp!2QdZ9)0XKZHPib0`a4An{JGA3=A(gZ5?c26cR82a9rH8Y=qDC6AKC|eeGp$Z$21Yj`j1!C={NH28s_4f-+7|2#n&uyQ& +zXt#+-vq5@IuFQ6|I(AbRWxDyLOS{eDSJCIC!$t@U;#bx+p0=MPezmsZTr&tFd$D-# +z70@Uigp{aZ;#1i*BCsVE#GfEXyUW80;VBFZ-JA2sJ6OKJbS=VPDE(4m0lVrXU5z4A +z&iin-Vr#lo4d=qWmanMuD>^l@Bn_$db;nqy9~wW2>%YhC(Etbw|B=$GBZ2@eU~`K_>3 +zcfDY@>*qJLY1*heO^<-izbQHU$tHhd4}|tz$pMIEeUIj=x~?lyW=wF=_3Icu?}Apr +z^);;EHrbY!p?AQR%Lx<2jN?eo->!;p(PwVV0X7G2J`e+-7n}0GD@FWSUbTlmBd&g+ +z^R9v9Gnez=^+ojN%)^Hf)@&Fd1OFeiM9f#gz^n_HV3igd#!19JI6t!Te_)3bnj+8Y +z5zd$2FP-V3Akytg^wYksYyeu(zR>F3C}Ju}cf=Rxjo@sdO$C|MQfBb`KxyLQ4r!@n +zGIX{nbpcN2*YTvO;T5d9kCPxKb0RYiDVar=j$CGCi4M{Z?Mi_tZ4pE+8TD13zvXcF +z^!1`5Eg}-{OMK$GzT8I|IuPWCG$X8ZG@J*7Q#mDPX3{g2_J%++h<&BZ7 +z!MlZ4+%zq)plN}PZ`{&00w=NS5RQ5JWFnyyrCW-G@jI;MW&5e<;mr4+{h(I>0p<}O +z9k7gSyp+(TQ;OWL9jQV`IvSD{a!Zw%l>l65g3ic@g>Qo +zgbmpap3o;*uLmWd`?W|9r$PVkHBGVC$d6USui}j_gp?ffXpq|;&cH}y#K(c&m +zs)2WDh+Kc3J{tT$$mAC%zyYHL68^x?UB_6f_UeS)U_r?_$7zd;cxTJ0=6I;$kc9|D +zp|9nm{>k@ScN)9uU(=3;SM6sg!N+;>SDZT?eEla&x7N8{pyEcrPZmh1UBsl02Pwjc +zr~m-QJE2H7VmQXp+n{L5dI~4x(Zz%kT3J(~C>18#FtrD;S`h+aj*_iwfR>w-m^4xN +zUCk)zvZRPnY)s78?zAb>^(k1tM%&ka^!?mgWLxonI5q(YWfnw-KB@FHk4wt6-#jMS#w1lRm=gBk&j*^jI-r`bx +z`j4p9f+b_{LC%E`p+%+#M_f%w3ZgU1qCR<95G(Y}gy_o0%S(VhIZqIi18E9T_@}hS +z6s|lpA0R9HsL10)z9!8fAVur{h +zY=cxpz4+Iggl4|ICudDZEP}a=(=k5AM)$0%YV@|ft}}sj5q!j!XZr8-w{8Tk(QJ5e +zT3$AxCbV|IjBJ$eeR-{=fL&_0%Gv9e0@N5XEc>*!PMVqb3-oi&Ymy&iZqI?;YiOXTnH{Nx@)tVPM`) +znnS#j4UH$!zsdIb+bH0(>)w=nAJTOz;lEGP_NpGe)Htp^ +zZq6#5UWW(&AsCz$6N97CTzVk_|0auIn#mapgFUZDQ1iY_^f%PcXVg+vjo5O04f5+n +zuau@gMMQM3SLW`S%Vmo>Gmn1k%b57sW4FSbT;mH~H481A4j+TdHICTXs*=8U_e3O( +z%;u)_b^ta54#O$GOdl{E6pKAszoysZatwo+@eaRgAzY=1QpW6zrZd|~FD6NHO;Cl# +z_`d+VTy+xL8X%C@L22>MZ@GT3bH`hhc+Q_r;mTr9+z&f^?Tuit39;5d;Gkyv{Y)4f +z?)w(MAhY@-_w~F1_ZURbY8&UWSTV@NoDv`sx8N^t=Ga~uz;H+kERQ4K6sj%(o*u9l@XM)+ppHoEGw +zHi8}G*f=uEUK$o(AdnX=Ztq|j&gvp^(r-AVnJW8* +zCs{Aif{Ju&{4M%=G+V2u +z3=b`L$bSM=v8*Wzq?q1m|HFirxyT1>H8uCirjnGkkgbH0}U2&Z&!@i1@4sxt~_|ypP<$6*#Zy2_ACN +z_J_Sr{QZeB*0Vy&rq=U;U+(>049T@3OK)_2&d?w%T({a3(_lbQdKj{73pgy))9Yme7QACKSnCztt{I_zWcwdj*3WL$&fh`ewep3(C +zM8$Z_{nTl<$i#d +zX3TWVaSJCCIqg7x7n_QjP)ZAK3{y~0zu$8lwIYt|<=0pDfD6Thhcp#dbW~jq++dB{ +zj0lNqfgKA6a2R1m1K9vI*d5w+6A3;5lClkeMzAik5tou|INDdL`44~%uCIXAS40Lao>hD9&1eH4Y|0gwfwBgpcOjf#dP$U= +zv<{_as>{k(f2rh;XR{|QW9B&d^Zs+#IK`JAEZm53#P~tI9?lDF`YYa##5JfDzW6lq +zvkfc*$ +z$`$q#`Fn%Gnm-Lh#8Hc>RCQA5$!r8u-qOR#viO}$sIrS^Y?dwg6%*O1kbT7fm>^Gh +zkshJs@p4MJ8V+yb{o%W!&Bu$2Q7EJKAKtq%W0eof>`1e@Q<>Yr)>cA0t`-T1h7TU? +zaQJxg3MUX +zrBr;e{E6{%zKb!j_O1ySPmA%|pt>n(Ol}l*gf?M@MQCay+>G>27c+kvs +zCYhbkKcZhPBZ6vc8p8G?*U_t{-r$p$3=DTqBmU*D$!vB%UdWutDt09RR)#VxmbDk& +z0ZTpXVnEiI9iy|`GQ|bw@|ntpy}`o5@;gGl+yL=p3VU&W`^Z3wy$5u^!XfHNw-Dh$>n6V`2KgS^+%3wHL?1UtlnAq7co +zur)4uU{x~Cgdm}79+nrfDE=_v1NidafOjsP)3_6cKvQpA+bP14d*=gMWx8@#gX^sI +zyU6N%D|X#YwZwhaLMR8?r?gUttl~0?4lZxv6&2yMu?F28K%igHoT!NQVY1sA(?M|* +z-wqQbWD;?3u}?1pi%y7jj#r%rhraIR$Gw3$Lv5avr`Dm_f-BcUDJYZifHS;T66PgUL56fW;1!~T*k!fn2 +z4J=c~%~yWHK+p0AMkw#2Z_-$KSHU&RV9Xfeaf|4XH@C>}YaVkMf+$9CBhJj0@wlDGvHBbw3YL1=KR~w`MbEZG+Y`vn5EvG*RG5vTyy^E;A^R^UE?wz +zEi!?2sCw$8BRa4`+&Lh%KforAs9^+5%4Y?XQLiK;h6#ty@wxiC`w6Lh;ACzF_2~c4 +z0th-UvUW$IDmCOdx!_+%f3NAn3m}n%C|}JBb{p6-JdrUU_*KQ`@#O?b;bTzk7O4Vk*c(lvI(}=coQEg2V?x8E%Z=t9tH( +zfX}jIqEsNh!}-YaifhZ$>)T%EZ&3a=GO<$|gsP2h&Ff_R2@jsWTdL5lM->th5=cIY +z&kn8mG!z~_7u`qN;<@S^@OmX%266|__$L0F0-OVE!tpZfe`gPr`+%3sq|PJcexzk= +z>^X%2qRUP@zw^!aW#hge1r@viS>VXslX`#)4J)irZZ +znU%AKvCc`30GZSx-G3%tc5z;hhBn-Wp#-2H>6G8KY{ywUs{9m +z2G+5aQ-|!_@<@LDA5CW&6?ON1eY(3lhED135@{(3QM$WB5Tu5b?rxAyN$Kts1f)y4 +zB-Hyk^Ly6+4KIYXoLTdo6W8ARvvt-*ZBV;vlXvIE{H!gT7t^Yqmbs0DRq;<~z?RIs +z=1+ZKG2ztV_Ju*H9^$SN&@%le_Hf{|kNb{#ub0F0NG+XL(8U0EuURU(*O$(up49H6 +zw#^2M~PRRn-*f+jHpW2OQU!C~fTY24y%S7rsn2>;R@XB~kxd+eo~}$_d-u +zc3)@u_v|h{KBQR$y%l7>F(%zXd?dW7Tn?P@Pk+lO;bIw(#h2$8_f`|&`Xs;DH>(v% +zF{KtKXbU^fs`~i&=meJ=uy|TX!93yIh6t!R(rV5USGFk8*~Ya}f<*z~;`SdbudlVl +z96sC)_HrX*xmTOMZgE5{z +zZ?ShGP_4JzafUcucBTAVA2PYV{?ZH39Ya$*;ciST<{=b=GmQ9eqnNnGj;RUCP1XGD +zF+i^E%9duakcKGI3ExPabQL(UB3B`4mURp)xRk5(>8H_k4=C)K{6=^ywXf +zF)b?XSij!=O)@GAr&>WEpUENrf<%OxvO~l;IaaWmBidn5Hj=+F#Jl?QXXM+A41tdI +z4zDjHE8U*Q+CKzn#5^}8vu@I%$}{Zl^yCYoSy@C$+O3pkdvC|XxkK(o_7oOuG-l3D +zh*Rwj{`-%HK#jYn9wzgozp-^BTcaNUVo6>DuM_(fuj#LWu0m#?s9HlYM{ +z+&Q|bFj0?pepov)3bS-^sk^wORM4{^B+YE$#@cMZ-gZWoQ(*kx$Q0v_4Yhj7+ZIlF +zlhSAeEYRsPqsy>^=vo#C|HuqNo9$gW(ySH)loK7^7Tdu4*bL|8|i052M{qs +zuxhGe&sUMp8{pmxce(boJS1p;9|HBXL*uAu%|s+yssmODBl9QJ*m1%iFGPWx38W!9 +zopS~2WB1oHy-!v*ku@@PxZn3kG~W$bp)g4x`;GML;x;iJ%ar$G!v3AnoMcp&H#OR% +zy^Z9fK1WNmXmBV$YfoM&MhuV+T#Vc63RbS+2f4VotgJZ;wU9G;mQk<_sqSGZ9M#B +zP)$p!(EkO2>4PFhkFu@9RKBqK4MiVJKBz=5Dlp<{^Gy3)A*<9}i5|!4Tv=r^>NHSe +zWu!qdn)_(2lNeR?6w#{WZrm +zhbRqQ{X|nxc;(z%2M33S7RN|_c3R#2pM_+%v+nTd>T04pg8NDgc70hn3CfUOVuj^<<{| +zK<-~V&|)}|edR>U7yn6N5Vmi~4#=EWK{FGb#YB+#ZAtgz9lIiXsQH_DZ;`jY_689r +zA=im6f)9DFzhBOIFQH%dMihxasoqIGOzaXQ9Rl&$Y8qH!U>qnfS(Ne!2_1-7H-u+Y +zH;Xg5%B=mx4_6rDgu^~M0_Syqp+>C8*yC?e-7n>u@EAOU@LOloen>v?vW@rFW3L7y +zMA`6xY&;CbF!mRtiXtOVDp=olq~nL1hsRCAdZK59ewXThUN3@rTU;S(OZ?~6o<|7P +zOxtXUqfTS)#bzsB`yk>PB|74D4^{H?I+ipc&PvFd774%Ima?cZ +zmP>Md)o2wbm$|UNCkX>zzt>(@OUn|Y-BmE0Ev?VIFXpE1;>h1Sq^hNB4HA1-7X5)y +zlonnXal&v<2&cpkxxNc;%^J`B>&tHK-erQs*jqFPdrvzGwAEH@Y}V?L&_}TOx2L9m +z7#5ob7FtHFFu`r@9b{kr{sUK(8vb4F)PY46tkU<5IkmD%9LNMj +z8?77!j)uh7*P?p*Z(GY;P#a7&<%j7(P&DTKpB=tZyGmX(kLXVryVbv)#x-+UcKhD~ +zjS3b_k${;)RGN$+2%>f0yL^>$@HO=a`Kx&03o@w5@fL75rR%E3Swa~gJMc^_Y8H7Z +z?gQkNa?W2vRJ*Qi;MdEfx5&54;N@LN-Azvhde&(^t>NQ~g0=6jlInY0I1J6ZozMQpu0w@k|yQ=DJiZC^GZ?ZQMp|fAA#>>&` +z@l9CY)(-=8L2z7f)f0)(2&65t$X(?0;7?lH2-;PR#pj7YKX9mgeS=w4-dpLUdBviP +zZ^&61%pp36LqwB5Xlo(TctnXbJQgIx;{L{nTea@(dR5_Y@Z*@7j^DDcRk#s3BrK5x4k +z;321tDe_XnY4b+!-5=dP(EM@w>HdzS0t-!DsVAREk@w}~xZ(cy%y#<71CoYP&oTLH +zPB86XMN|uC~<(~EAZrJ!Cxy~_8%nLe^&(6u%C3|Ec +zHYVtu1%dci*y~QSR`A?&8AIK@Xna}pqQv++Kw@8gtjL}@@6THyIg@?!93h7Y=EWO*UCj)R>VU;V{w49{VLPBd^je?L0a)sw`$ +zp}*G_$2=M8WxB=wapeS!dC`U}ZV}c9Qrv@9{lH5fi-5zh;t%wB`b~V;>xDNEBWBh> +zhfrdYMnN-%O`+$C^IwRrD@v6&YICENlfT|O3)4d?V?)dX{#HUs4hganbP*K4y^O8= +z_B+9agZiD?*<*TIn*M%#7X>Bij7nJ>Y9ASH!8^uaocJ)evnBKtOjfn2Q@LB}nJ~Yr +zDCi_*^eN%!elnf4%!1Br&lsTv-Arzbax$D8FCG`9)ntzf&a-J_DNn^z*+_3G=P%{r +zL0G~$1y9&R<&t6FQPm*?4{xlLS5q%=*7Vh1=*o9ss`AbLf`F5(o%3hY11iQNRQ>wR +zq?W?4RkhbMOy|ZyK|ES{7D(FKFvU(EyjzfQ` +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 +zw3Eunzbv3krp!mq&rfL`M}~_ +zQOjGiLNrRRi|5eRLc*<$;N8gBrL>yQaqUq85b&=gsLoPa&@t`ikEi+h%+!Y`34^H* +z-&SDs<9Bg?8na9~vD0-GU=cl(X9*tvXyunz2NxANo$FCc_IV`LgWDJAL(-}*+AQgD +z?O!7;X7%mF*fJb2FSS^VspHqt?P*p}=!_D5N3a_)tEH3aE@KJQVYw$TPfhJ2+w?ok +z6&0NwLM83P;jwxdPi448l1l#}%>1oMN*IAQZT{G+p3l{_;xs1u0+P&Go8*+%yMvaaVR +z>H%yYjI(G3q@);geDu`eOmEXQ3N;M-ntr*wJFyRNuMv&aFi_l0r%#x!v>*xS>MIO$ +zuzX}E(JNB5?tGamU6y-xM2PyFdm(MP6Lvm)uqnXx#b*TpPw3urEi8@97l<}#_2on>G` +zB!-iViw|OhAjo}&mR!aTS}zCVlx7jhhUU>~!g&k+K+o~W4APH*Z-Bu$Hbl-S^zt$U +zX#nKR3?p0YPf6DH^-==K_^;1(?m} +zfU{FKz}`1MKYvoGQ%+JCZ5}NC;$ta`tuiB+5xxK4w&&^Ze!D-(Sa8kcHm&FChkO~f +zsQN>a?z*|T3|kLHV%~opwG;$Ny>IugbAoZ-rOZ7DyoYZ@{mSqu&UuiM0?)(xv +zB#=@EYg-3FlGQ3AWL^Sz1RDhm-@QApt*O!b_}k~Bu>4A5wDKhwt~^4aqcBdg#nURi +zm=@gQ;&-d@fNS9J%ir(S_=VegK4By^q${K*%5R}##6#dHfqlE#v<)a#-T7f9+)I#> +zWBUYea4GQ^^L^Z`7avcMw06{w +za^$~EL6)Md;WDKj1}(WtnQ|^;bclpzol!n%IjSOVShh}~jC<;adh%xzIMI0;MZlDh +z&nG*h`}Il;)}4t?d%99y*my*E6~y$HbgJ7rs<~l1S+@rEB;FD3)1v7TSA&Exw|>M& +z4KVY1R&m +zgbSCc#!P&g%Jm;@{(rC-!#^ou9wv$+J0_XJTJpW^pDuiqaXPF_?yhyjH=EnAtGKSV +zif=yKa0Xf2m92ov;o+g`23i!9lT9kv6YETBm_<(Xl1-U4H#{&43Vqw{?-ib~839EC +zv_&UM9j({N^R3?epPseed-zKwdemw=T1FQ%H8#$h4d@VRk*`J))Jc00OH9W0gr1(B +zPKFFYzbP6X^d><4i>ihNqa}zpgWuJ?K41j!+)=1Ghy54Sv#8Ju$ +zrSGg>F-SySydoI9#%#{rW&7-D^zy_dj~sPbo(W!89gJX`L9n&qb;(dT{!i2VPdV^n +zjshBr*eX9p3c}6FoTz`@X1|Nn@#P1E6*fbpnzRfWRvisOp##t95Dr=g&4049vUajl +zX1g3)BuV;32_xygbElY? +zJLSA%B#Q?5XIX1$?ur*O>F`Hj*sR?r_EVOQk%qeXlQD>fR@7(mjZ01?sf?4=BsIeD +z>C_CP7@B<VG1Isr%yNHJYUhtJqPmP7%eZ>}Hv +zf!Ur5+zDMXiSTecXV1}XJEBDUA{wPdQtblpkFC`X;_140@WK_1qm)bRJe7XuxVruY +z&*sKL_`)1vgBEAFY)Pyz$A>H1=)`ai0(rXrPE4@f$Sjl3i=*Z&OY_TGRWGr20C>E9C?e +zt7bd)&X*N6!!3R>muYHcLoU3fXmaVu`v{|7h!q=@9o3CDn_(A}oXgzG>lw5&M)v}d +z4}d!7`t-8eQT +z_>G~#8UEPK(SVaT#-O5AwP3%;tyNKOIs@0_4y0Tf3&s*e+os4$#ADcWau?)61I5M& +zRBwjYsNLnrhOX+s^(j$fc}R7HLSC75ub +z)b?sIWAq;p`Mb2}7|TUw>=GrsK~YjFaEl^=HjvXqUGIdH1K^a0zVg8q-Nm*{xD2kHik*?+Nq@i2NA`8&ay +zdAwi^DFnehDL%44l*ZukmjQu7STBgXEKtYJo6J^7|6QkdO=YGlqJ~D?A*N;``WH;b(^VU?}Mq3Rniea9y|ND60Bu +z*rk|;9QyT~=D=Lz$)xXmx5Eg^`m>Ul@e8G6lcXvaT2mn-Y7WPd9MJUi?90&a +zI5ml@i4Jk@Z-{)-fnSh<9~tqta&S}u +zxT+DO1&e8h6`eNAo$r7cC033xzXaHjp!Lc6r~o}-suxFN$zQbCnV-(-s{pIIF;xZ; +zR=A(akFRKt{xpAZ-RtiyIfUqz{z?wOQyg2dLg=640fe2u6X00xGiN?n<5!fHX;fDe +ztbcVYe%W-djQFEj<~0RYjt9J5k77wI!L5Hclex^$R}$A9`U6|ea*8zy*~21*fVq;y +zaA>nGX5IvC3epgm8o&aDSWtwR^k`_Fy%PVI5WG;~@U_H%1RY^nK+G;TXQA;wuu{hm +zM-GY`+3jnZk@_J_rxO-}ukxm^!G-W4MeNXh!&3gFDr}KMBiCcDR5d*d=zo$HFVe_% +z@JXEdQEHWcdNoYY{`W94ObR0JhHELrhJ`b>Jfn78ZpJOD@`f>RKCd3rmp&W3W&!@q +zgu7r~qK@;yOE?JRY%7q{og@TH&#>e;k~Rpfx}^FT;VLVe!s;8ayc1Feffop2aXOzv +zRZ}p3*9-fJtOQE_FlroBm}GTrBNHrn5yNzZ9lu*p<0k@5qm2WCxZLtG +zum?bOSAYD7(VLJKsC+*|x7(ocff!@!4)8Xsz^X;xh(pGS*UP||#138zqGVsUECZKr +zo|41t+aRkh9GiA3(4u6*$LeJNG}y#Q$)!{?((!Bw`Z&^ErxpDhhX%KH({$5A^g1-o +z-$ZuF!uS}QKtX)Qc-P;>uyc-PZ)_#|l!UH-RAQCEUbImI&t_BUG(n9dl>7>Gf^`8V +z`$+fB?-q&CT#rO+%hywj7RhF$f(PVl-0KgE}G+M7fcZcoca=X(hzJt>uRoy~34K{OR{De@G5;_*RXQMwShX +zl{Lm0hWF0F{b&o8v|I}}4I?LC$M`i$yY3__q%ZFuWp@w|9qV~8nMvQUhBH#nCa6eHDunt@0fRa&}o`W)}XQh9yOA!a_U+7;Y&63XvEPCVX6z+6)ulOf-r? +zG!4@BshaT=OE9%G&vr3}YA^F-QaI2E?X-l>It2hJXdeG}?2lhvLVgFkAZ3nBD{-rF +z10$B-1HhF-V-&`yZ$}%&X|Q_i(%@GS78I9c6^Hi9p{DL`6X4AP?_8^o>g@-_4-b(v +z{rQfqZ;}#`UD-b5u +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 +zSOq>}e?g(b%t>d@0olMYo=ACmuQ= +ze(*nS7%|EcJMa!xCJuEhzyUX#G}P3pqgr-X=3A<;b*KgYt3p!-)cXq&yX16aQ~;v~MmJ +zT*LCK6`s2odU5oL)zSD27U>as7S1L4vH~!s3KrDrd?3YkQ>&7r%@rJ2f>+ +z)PqdyP-TBj*vg1kgh%S`&r*?)iR;ttF*5&~{s%eP(zlh8{`q$Ofl)}N1VyZEIUZvz +z4l7x@Ldu;R=Z!V#=(EJH8^if_WF~gV2foX9E;php8ZYUY9F)D6#Fj&M@#doc6R>hB +z`YrI;yQu3wIfZ#(CinF6Y6)-0wN-TI8KURURMXA~VHF}q{AxGaL-Jt~3lgZMb>P&5 +zBJPox>bU?XrrBX1-ce2jtV>J0M!24K<6%P72UFr|QGviC-!Us`^TlFA?HHVKu3>f` +z|M|4(_E=`ZOp7Tyzn`3^mz&)IqDqSUGCsBCEQa9WfZU0rO+v8Ms5gWK%}^L~8{iu! +z&)HeYS7s9elmba8y(92UxkLX{hvel1d3YS?3ZIsK`+>w)W0|h}>y0IK;hL%8flc-+ +zL)#|$P_1G@qynN2jOh25Tl$j<#5f25qq0{U1h2ticGTpA+*V~N4#*EYc?bs&IudJ9hEup>i<@Qp{ +z`ich6SwTMecu0(^A>rS^7Z0Fwi0dDi@CK6H)s{&pXRdDbwaO?cLej|vLT2)yNLpRI +z5!lEHACU0WojT1G7+t&J_P#5k_2OP4XOsaQr{fU>vF<@SKKm2V%%BbA`CNKW5AM}5 +zQTG9eK34wmRt^y-PSmc8>_(4Bd1Ylw?}iSlGhZL+TBylR{Fl>8=*JKd#?&mLL;p$l +zC`Z*xyGbs4$us{?gjUT!~?_glHFWslX4+ +zP{A6$w;cC?LtT9+Ne($92jdG&+Ign~+a4 +zIy_{**9rncB>(7gxPrR}3P>ltEMcQQKAkBog6!$RMrpIJY7)t66Hsz4^ap{%Efbba!XvZXWh@bD%bcn{ +z7C08mpVZ}hn6>=W3KWHsN3E~wAZmm7BK$VWFCxFYjPo@spwjOk^Mn&iZufU2`|@Qf +zyq(V2bf|_mOY~oXU-@8aH+TG2>=41}qm?ytHy=xo?f;|cEWD!n-Y!lK-8~4>-7vra +zA~7J{AR$Og2qK|?(lvB~}}w +zZK2H=@1F!#e2eVji(x9a&tRL^e85E^JWUr7DwNpOHXq7Wft_gOo+}%3ywbT;HAS5v +zm03wZ;q;C~axkTmqg`5t`Nb7OkGIS?7!0HW?%r4az;-1H7jbc1=gV6rb%veu`koJEM`4jq0{ +zLicwfRTY*XBl`p(3AdworLF#kv91m0@ZUw{m`^+OC2Ky1TqTHkTH!k&C| +z4r5z*vEAQ=kC(F9z8s}izs}Xswe#|E>xU0d$)1}L#{1)kV!~)0TUsYDjA8%9yhZrl +zYU(qJeY=H;EAnmR5TsHL#PoA7xtklW1Bnytx+%7=z5?#?s}Ar0{rej5@2k@8vy$$k +z!o}y9?7n|{?U2AC5dyUVn!|H*6WLbRnXBZzD{rxa0 +zg!CP2_fIH`6nDjdy|%6WIFsmIpnR@qT5b7vw8@BrpIFfga2hVfN-HghbhQw>kQ_c= +zLqoqB@>REf=tfR-YR*~@Woj+{cVe?C*G~x?c9cZ_@u(*Xl^bN~e@YmV6)Tjmdk}e1 +zvwAEceAC^!bL9&thtyP_rrijJJ8C4IJu~|c*FVU={z|y-YMEYCx4u9RE~&ydDb#)Q +z8xLVuDvZ^K1x@rLLI2{eqYMfJ2u&0`K{?u&sp2Ou#v+ZKxD!r?o+xv9g|ehbCnB-f +zOidQuvFUowKz*O9HShO*?wL{1sn@4+wyP?0&%Ol8c04&`DTPt&-Duk_{w~+-w&9Lo +z$P3PT*)rLlOIL|`_Y7N=g3J+M%l;8me}{_MiigSXUAvqvhq}YnxP0Kd3d17VwwiH~ +z!w2-MS6_w!EyW+4)GvYXI1Z;F;GT(kkikCuLiRkZhJ*kF=RQ|4@C(FxtUt9^ZVh3!d!D(9tRr=Vh4d0WR)w){YQZQWF?DN^>| +ziQ-2*ZFKpPe4+B?kUYm#VI;kd*+{_t{@@CB*xg&X(26eP1@K#T?f|VPd{6ni`~${F +zqk2iUFXqPjMJMa85%cPm&dfzpOC-`ifoT{dSt4s0#Lq{C43y0C)AonA)_%=@N6LFi +zmZBYM`~Tz<%3tOAJu10N&aaPQfA6?sy7ykqKvb|nuHyFAAezL_QKw4o8>dJ%4WsZ! +z{eOe3@q9XEHo~EPo(9En60Jgseijl?trhI))o7y|XDejgeOB}0y#ceuZJ^wwQYAs`J?f7B +zXZ_fwr>vhbBun!(u*W^{N_gOagYuR?3b^~%{rz3>OFS`AT<7Tyj@4p;1Y0Ys9a|&22ugP +zw0UV0&<1BcWkCJr0`&Z!YCot)`vUX@sFON&0*QVycRHPKLbGuR#zZ{M>xy?t(Sw+m +z$E;0Lo)Q~O!w=s7bQOB+KkPKpj71+#gI2oFXobjp^8i`}c`%K8%0d=mz55K#7{AF0 +z1ZUhw&H-)*U4xz#xIYpy<}4k2@S|9%Y>$#ACvH?#td*>9-&j@fI8C`q>*(}M|A9F- +z1R{Gl^wxW#t+RjX=(;0*CiKY8p0bbw6_@iHHSq870%T8)6&884kzFN$o*ciET!Oc& +zt7`?mH1gs#kvHxn-!+g^Z%r^a3{vvgp?nE=DZ3N-f-O%UzkOIEE{rJ=3m_fhXmk6$ +z7fn>2dX!O%jZy^E4iRXj-Ef>I#;?cOxB8=R5QkLUoca-eUwvs$IJJN-7tLB?PLpoR +zyL^+!wHgR>-f)GGc#yTuY{&~(@_xy%k^4~+<+Pbn_CsOOVJ-;Qnj24)qQL@4N>A_v +zD}Rp8Vg<{lbHZpz8UrUSwU&i5lS=#A3tXYyUNXCsUpS)vVHOX+c=3Xs>ov@qQfwt} +zjj`p~@F-09!}=s4e$6?v4NWx(jjri~T;Nsv@0kZv>b~^xC;iGKH|sGGM^SMQK|Gdm +zxc+hq;&#FWO~8g)(!Qk`mo?r-Y95@Mn~PtWlK4wa?t8)U_H}oHYm^8nfkOA`q_shf}EoV6ob#Tr=A9E61XXH}VLFvBi2 +zi}apLX-pT(Gi3`C#lAx0>)wrV^z +zeL1ccN?)S(Q4T)|S@XZ#Z`Lv$jr_Y7LSky~%?Bt^DDMnAPGLqc`P{~=Up723#ZLf< +zPa>KaBWkkytSHmMx(!pdbe@JRwZokG_aB?%UlJM9yyR@OO+6%1hcW11nJWx7jBExYn6rdhlKfZ2_E`9`p +zTow7QbxLd~T3uJ(g9dc8Y!34=r>pad=kS&|o$I}!hva{`B(^o4=r5R<{zK>Lz*-YY +zB#?=?0Is%uASIjucl86^_Z32z@T(a1-Dg*T&%4B}^v0pFT#7g`5LeSW*k6%2$JIX9 +zgL&jd^c8n+Z7{O(8bje&5HOAYf+X9swCx;?>^X&xGv^e8$$~|@1HV5U{rox5EP(z% +zVzR}t#q?3jF9DaIu`h^|;*ozXwvTOo0ab +z`rh-5#|QcWEG-C*mbKTTDG`rV?nx58iMOD?Y^L|)89jJdMu3_~=Tn+)K>wlHmWwar +zY*LYAtcvOl*T!xq*p@s{Of*Jd6=kv9gmYcLRomeKoRGJUcU^NhI*6=go(|vNPMGxH +zb4dNLR7H}3>|WUQPbq{R>@A!hjrl{z+bEk3(dvJ#bY`Q@HL0sa+FvqSy*}6&tSK_a +z?-6|KfrKwPJjd-0-p(gr&gYi7U)fMI_h^Jbc2XoB?KNE7XENz$6=s*^^=EL?x--ob +zcs$NNWLzA0d%QAsQ4&+3-W)nj8l>D5jQEQ$9Qid^8-0|;b3FCun~rnTW&&(^H^7!O +zbO+A&C3VpU^W1fkkqF#W0TA^uuku;Uw@OciyzVf`&r?&0oAX6Zk{s0J%Aw-ggXOITkeA7jM0 +zwy+-_3(U;Jy$*fRzlE6?2qQ548%r+{Ra#oAfW8-srY-)jS*|*vLZcu8LQGoCf2@Q{ +z|L#BbA$Ib`cA`YTRN7gR`ugdhAUCj_P_o7&9SXd5+R7pD+L3Y}PsO4f<2|E|tU8w5 +z6;b+oyc;R;O~hFY+T`_;%jJhH;?7|@TmW&&UrJQ<`~W7dc~}>OLnNMKq3wE8H!MMV +z+o3+*W+2L0cA`aA;((BBWGNVC-Sa>T!w}f(IC`lVs8>{Oq#zZ|zcBA~r1LpImskTd +z8+SijjTmn`B6xn)OGXvbPib4S?_KhneP`z8V%cNH=_P!(H~#S*t&5%dD4ia|$ntII +zio9Arju6=)za75xOeCsgNy|$I!8YA+%q1c)#hzdJ*_V>dj2y +zDY12dd^Alj`$rD;Bzbd3BLt!xSCK3dB&W%*lyLP!gNQ6LrJ6iS<;mf=xbH9bwIuqpvagfms-5MtKld}P;fOL5 +z3DV6R0+?JFRul{tc%!GX-8kJYkOaw8BFp^tN3=gfX0DU*Jv03e3=N~i%QJq5(zJHG(~t9!_2;<0OT1^nLa0#U@HN~NvVZ2CH +zeYkD}MQQ9M+0Bq+0R%z{8mX(3QqmJd$h4`$J&6kO{ni4z3-q-S-K`JKio&RaAssqB +zZM2qrr3))6WVS-ZE +z|8^fg7ISC@yJe8-dg}<~UtV5*&>a(J!BvS;QTMsRmLaIr +zpDKR4uWG8KYiX$pN``nCa(^XkzV_J*O;DV9o2OV9#4RM>Zct|b^2OSE&|rDF2`l=k +zSP|F^8)#Z}$2l*T-;akluPk_1ZNvP6LpmNp#~^5qWL(=aujJ=!J#b}ZqOEorbcjKY +z|5Sc$H4-uvdPSJX{gr~OXQHr#klWi>~^XMH`v%`u6}M`L+DSN?^7%H3G_=&p8BMn-lMg!LV`e@j-W2BEbZmbuU&krl;S +zVZ@M8IDdV_cps|slJR1xK?sbG9yI}0EYM8P&r0$_q+Yk*l==uh*KtB?8I3%?)IAo9S5}oE=VECM_>Z8kgDT^Ly8ac%u%mqs)484j>3-56vt)vfnKI4E^;@BHik_P?rkLYi?l_y)(U^aBm{4eBA3X{GEMBMFsv`|7uKdC +zX!99WNfLMtq;dGJwe6es@u!3qNl~v2enU5|nJD5)KD=7hqP=CG99nvmXsTAVMT(da +z53=W;hSs>8oM5U~Ob!sVWXMIbFn_CRgU4njGf3^SFzi{*AY&w?zdwa6_ZO{c637PF +z8oXs~dd(s=g`a%+ngN=`CO)VabWJQ$@hzy?C^lGIWjWZM=$+8kN}bfgR^uxg@p>=L +ze24ZR;}2az@J~;ZWlRPp?f-);3VDm%C>W +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 +z+FT*BQcmuF8=Ld~SKeSorD +zdCl}tHk%oKlRK`2^V3O_=Mg*sG5z4b<` +ztg1r)%gQ#(j06$rO190mx!Bna(HBa#-oOXI(MWf||HNQ%3z(=zKx%YKpRk~q%N>Va +zU0eRxO}zq+D|vpAN78T%D$sX9GXU*u111cO<~nBmJC;n*4N$Zv0EWmm+_+vPUATH+ +z!Uvc&25h4$?`})x5BaBmV~5VZ-IjaS-0<<^$NuV`n>D5&k6N9VtZ&8#O7tE8C*5fz +zFIbOYZYVR6wh;MKBUNxkrcstC;M8q{Cb~%InI!9SvTpvVramV+m?Lx)q-K+j7;Q8l +zR&hr;v>X3|@5*p=o5Qg6SC1w@-}baBWS@}*quLV|97ewifW?)U%o0zQ?zYiM$JR$P#U*GaYUkk2H6{W`CacnfV&VJU{&83OPRjb`XHQrRW!ufv~fSA2b-Q%f0 +z(f52@NHdy`5nrs@v>=S4)MHse6_wM-yzSYHmqY|J$<-gtT}=JkxLJQrc<#6VH8GM| +zs>?KrI-H5wu0SH=^1o(PhO&s9vV;E<;@nJG&XdnCOrANmAm!7Kz^&j1~jE%K=JW%wp|`t +zTN&0O@o5EoTF`-PW7ZqxP&$xKpBv^h}U3 +z{q>JTK|RfW!S$4#$fI9SG8LL^`5ZY!=z*lnhb>U%Y|;Bp*Y11H&AO9I_%V2PxxS5c +zIrOviq-yKNnj=Z7F`6Xk#Z1*<$oj=#0HfaoKMDHx)URU{I@M``nDwq(9(p +zH{gwqyRpw{7Wwe?Q^?w+P0TqOw-=vV)Ee@m1#9@$J!z$A^j2sWeT@)dG3= +z6*L0R94dFSQv=AQYR*2a`qS&Hw_$`3?LL#|5idjr;?YE__=4ifOR(H43XW-z*Py8R +zK%<24w7PMuLuFC5ck^WBer@7liD8HISmt4vl)3B5WQH?#?qUYMEa85S$**O983b4E +zPR79o+%B_&HH!HQvrKvc-}W!ISv_7hCFU_m3;Tk33i=2A9wN%cQ@|oCPZ_GSn`XF$ +z9TLBi{0A?zrLDE!Sk|ea#iM&rW}@ZrPln-q6S_$V!cGc9C(M4{N@EPqF3FpQy-AZS +zMJyGN&g~v56Lc!^FQ^RZMapmaP0lO!e2`iNhQqQut%Ch#LkicGa*}-fzgOS(Ae3K_ +z_A2t2`ia7tz2UZD7P@JJKX6|i466G-hN5`mgO=n*MJMXOz +zF4CQnfjEL>xHRmLL6FQ}BfMp7S_nt8t_|&1Wh>X;1g38Yb +zcBV|kmzFKrsvx8M6v?d;MDH{v324qV?jr)Oa9TYN?)S9=oJ4-4YF!P&)A7V#WXy9AMm%NKk>8BeH1oj3A_=WrHjbXIuEW`ZQxb{ +zYsY_JYtLxK!I~FhO-81htH={ipCg=+6oLtXbbZ2$BN;Rn17t6)(*G1g0JiP3@w=HH +zz)9G+n?ukABAgTFwzNv)2`mii+Ay8}9Hnxhm()9F`ugFaU*dS#7`n@joXITTFtfRd +zz>LN;oOezqCj&W)6iS6}{TPn|KQQ1xYUigeBS&T6(@Vt9Y5w~&7}Twlj9Dl$h_UUE +zVt-;=fJn;7w56w~f3)!7Dx8h>)t5YE$w5?#gE(1~N;SbJ)Q>M080q~8sj}eI;=9bv +zLRF?9{qQw#!ISOZZP0vn=(aQ%i9trB%Bd*qv^6ztCOVlv*A)E}LQW}4ujo%rn04R< +z;pzCY(_D~nGiy9=r)6n6?!J|kYgNEwH;&%SThEBf`R$+r6~IBM>H&bJ2NK32$V&ch +z#GmJ?c4|e3mE?&D*s75$jI?nhDYI}AtOXN_da_J6Qu1|n(nO8&>5u7gN~BIHn87g@ +zyw~8{x$HG=_wfCR{0LX6wd*6@f!bQQFSOwjsJ2R80<+nCC(X320@F0@Cq-c9UZ_O(vIO +z650V#ozRqG=mIz?FwN)X=DNsrrgOK4vw1p9R)m{?Ha@qze?EgvVYW<|Vp3k?0|r?w +zhkM^hf6RvER(d0MUpYK2v#i%6zBus~X|i^@l;}E*g*zE4kHZO-!_)+d@b9>k(%>2HrdY}4t +zu7_LMfhgL4tQ$XW#vprvPxt<0Z(9RrD=e<`WOAa9|SWdA@Svg3PU#wzdco<*-hTndm7q +zC2WaQHS2GrfrNu|#i2{DB;nCiW!g)+%%9W@9PrZ49+0RR)-QP=WIg>{1&xv?FPLmg +zM|4E|BQvmYxL`fhd+y&2r|G&}bZ+uBZ-T9H&pjt`nF5~@rGf5tHIZl~Hqh|o#7&B8 +z+UoG3Fs09CsL(@zX*niDrk+et>SO&>T`&nR-AQ>MiUmR3>S2B47zedwtO +zu?I7+#1#jN&d~koc4?DgDJ9Q;cL?l+Zdf*w@F5s$u|aSYazwB<0I4xLl!w!1U(_~a +zyynx+n6P(R)P*hn1wHGvM+z}oV!;%UA +zPmtl9L1RQ9*Mp2q^%J}_Pk@219eg(2zd;;#pMf5Uurv<=+u(R4U!+RNmtOMEN$>)X^Lt34$-8Qe*%Jx?I +zNB_k?caB(gV~&Y5^#?oh6BJfgENp)`h>BuD>?sSm9Fvt8v{XunBEiz(B_vS_(yXGp +zR0Jz>yp8!;=RPdO7~co*q9ko`j{zPwf;Li^HsX4kH$<{H+^NdMUW1;QX}D%`Ek<%T +znCAKWh9&S}%E*4Yjw^E!<8upG=#RBBpLDn6NMV9SzRs_9c8|gNuFIA?(13XjNO@m> +zsldechY98I`11v#69VPBrv!v%i6ERbh;fgXLOu=#l{z%VvtBKB>CxbM0x? +z)q3?8I84)=C%wh(KHi&QU`w8}IpyM7qnF@%UQe@5%>6S+LwnC){=vj#xi4)iwO|U46zgS;+0s1K#fP%IDCewt?Fji*Pfat${+lorHiuP@E3n^p0 +zwQY*A`C-^V**yF|mpX2dh&=a~)>-??hxZSU#JbACt@-gw^1z)Rp$0`+neqJiD!Fz3 +zzyBkd799oDfCwoX?D==L(98^Sr*T3@cC}xbb%ksnMnkQ}qtvTkygDI!_(06%r)Z5? +z8RuUFaT)qj_)&7SN@HVVFa6>RrTf!|_frxDWJ&*i+sP_^VW|=N@2nrb`^JXBybHGz9z(Kh$TDx=<<^;yd{$pBxk@XEyaQ5e!it~!g_e(E^3Y& +zxxkj!6N*!{`3aq^*>SE@Q=>;kd*>M<3qYEO;~qY~3q-1bID?{~#Y2OC_qgwtXgUr> +z1O8nvujbu&?2Kw~h(f;?jfyck}a@h;7 +z!>#;jnb**N=76FL&^5W{%L*L1LiLd%QD-Nb#_DDRaz +z7kIfC&hlq!K1&^2vT=U2M`{=MSJ71oNsWBzdqLD#MFTtam2Qj9`D22-vyDoG81xH7 +zYP~U`N1t{nU9N9*Erj>ki}axsM9Sj?-yH+4)+4%-P{Dbe#a21axCXtFkKJ;JVN@yW +z53uID1iNg={qMA>lJ|CDFR(qd3j6J3Z9%0|Q|N0RKl?elwVN;^U9-HYtAFPc^WbDT +z1vUcFZrcd-PoOL7Y;UUg8z_dUGGg$T@&p_l!YuS=Ndq#7ln;{6)HTNBNPE*0quCjZ +zZ%0iN!ERJP+(-CvT4Dsi&UFUB@@*5;c*U{0n}rOHMEZ(OBG|>w$TdN5_>p0GAwzR;6UYUiD;Ux&Vjoan> +zUpv;ezMldMfkj`{7esL@bZyW7-j%%kxP7?ra;Iq%d_^dXl<0`$ouzW$TnzLt&W9sp +zVE{PQSAUH)8+z+)7?viDI$;YplA}JdZ9N-b91Z9Toe8IpS_#RpgohhoMmo@9X +zPAI_;X)#0ic^~Wly#QvQWf+aYh-$#Mhe)D4 +z<8Azc1HF;X{!cHaPqeYW3iRZSTq|1}^RL-H{CHyqnz1|m=FQ*6RwI>bKNxAdP0C(= +zxA`vxmS~ccsY*efNn%Y^1b^3SST}Dr&>^(8xh$nyFVj=X>7*I)`!%rAs+H?A)JVOL +zB3*$$S(vbI`uNR>XmC15P%TcY$@ACkLy@IG<#ru%MBxt7NUaS~M0lToG+J^ZJxaMK +zP|TX>E6-1L@8fuePA|7$Dx_A*2y+YM|kZdY+R_c*H0SNd%z+f*pBi1?Qgu8cAJ=C0XEX)<)DbvrO&*`Fx +zx{rH#lB5)=Dh)E^u&%&&@k>J#3_~sI6_HM(_mO9tAfaL@>pt*^QB7)@)Ym=y;+;ZK +zH{_#>fO)&Yf#&M!!omS*OFzJo#uIypL4ehTuJEv*b8&8}7Trj*>pV3Uqk>9&HBn&>{G +zcm0!KTBH+e6gc2{x_t4&sJT@^VWb$urWEk@S0nt(tJbX#(9o0y@l3UIRSYG(sdW{r +zpI-d{4o)<<4W7AFLk;fQv(U?F1AbY=4)|nH#UdUJR@CS?eN9oTc~MrNQ9c7DR#_81 +z|H%6OSKF=-B(h?eV1MW695R_*TKwVB>J^TI4IizhJm1aK?A0WE@~x8i-)7uJA7V!T(Fo7*OCi)FC%`~0r_g@;n5U& +zlwmpvufy-m>GYTXQ6N+qx#q)sF8o@y4(*DXp=?DpGM3=|1DeA0)HC(>L@4VYt9D~RP~`*l-k>|v7XL=LYw$NIZ^TOn6eqi&W;W<@OqPK$pr+h +zQLX@cMF=CXbk?NxPQOVwd>FhiKCmqn4{&<~Y5elrYMzmT2UmtpT-sGQN{MHI5yis`uN5dDJ +zKlC|b))R#I6(X=i6S>=L7#B|YtDrX;kEo=v8by>Tp%yA;CdIG-oR8u`JcOhMN){E+ +z^vPfpUXtHs_3qwZPa88N=8Gp247{+(OByeO6uQC^B~-p)p8p8}UXypR +zwCap1{i|)D+pwc7f6O6;AeLUsk|mpktiw}8k|CndyHUf{5fISqt; +zQSh+gWLQTN8~*u|*ip=7v8t*{n3D_iT)Bo^=9{}K=o|UI;b0%R9vV3~aC!yW+Vp!8 +z@0$+hSAjATUsc3qgi9N($xY;^IN5E!79xuZ*((jp9&^PweTAp%&H3T!#yfVr_vX0= +ztUf33&u4g&OIO*GYiw5^U_r|7*4l!S$wvHoe(^aL%?!xLhZqYs8V{OhkqFaP@^CWI +zB&rCG#i{ivp2vusReX$Nia3&E^~Y2d$dg7xs&a-uj!lLuKX$=V=q;gdX9$KU;)}bU +zbk<$AGvUViy#FqDqm&QH=9qdj5aG7bFF{a~r@`@d@Y9B%=lHg%6a+B&l{oI!x&AC2 +z_BF_NU2Q}!ru^_=As_8Aq@_|23ZDLE@QD5H71xYGm#Gc0Y^KHmuqcBY0>#PW82({R +z7pS)2e>yXLI4$uD({a1vZI}hBwISonq%Txg4ZiK(n +zLG4#V%k^-LeC3MMB!MLYy7FepWn{d~QViN~P9CrES|^sCLo(;_f`SU}Kxs?munU37 +zoTJ(1=1wLZ?!Esr!r8cMFVJgBA8@m@`YZ8RZgI`0I}ge{6|@jLMBWed*%IhO#@`bR +zU(gvV(&7{|wI#mdBGq0JOpBJ^3ihOpw +zFYzQM(a*f|^UwW~{r~};Ze<5KE*%{+iM5oF=WCnwA6NAYasFNEFk?$<>;-ZIhET8v +z@n0Md9F8w8mt`~9gJm_?nbr6S@2NtWJ{MxSdVo9*$%XP5l^kYJS@f|MyHmktW!x9t +z-(IIwSu)wAr_NS3HmrsppvQ0JY(x?}yT2#qD(HA2`}c?AHpDFWIP|j?;ptV$dL8H| +zAQb`h^t=82BTg1s_-mj1X7a9ow;ixCMn^}p3ap#e%oQ*f +zicye(WU>E@_?z#0_m6m7kz)%@G8EWK0$cPQ;6Y@TXjpLv!wx +z(4~!n-`{#s#?BRR(JdPNnicPm+?XTnHZJczcGFNmFSGpp`<@N{lw0C8{sr)A@ZUkndexUgCP@vlZ(^A%$v}j?Q +z;$SpW)Me~R#B%axg*WrxGu#KOyI7;x^DuYAdE?aHbc2yM2pPT!I@QZO6y$is9 +zntF<58Ta)Qk_rxzbyQ*^DySS)=>h3ezhwU;TFz5NCeouN7)`# +zIqk*I7?dtqZ+#+6_`$A=3I!GHl_2%E6x0k4tweTXCg^T+G~wqs2!$p9E5SGjzmSu` +zNSTC-=<(&L!osy%_t&Y=9ySd9A5B*o7FE}-X^`&DA*4%MnxR8lB&0hfq!FZsl3d@(2ETgtv +z=ivTE$Tz|pR&s6q&N(bUpKy>rp6l_fj_uYhSe83;)P_yhV~XB!PR<5y{J~rG*@{b) +z+1-jzNh!DKG{6*jmMKM*QCC)>JcQIK_s5>H4XO9|YXbfwEgxSp*nH^r6iFPXE^Z~P +z--+caxOUvKXxlA?ahI2^srfcCK~nWm5@hbwOK?R>kB{bb5MFBb)Qv9zUg}HWyI5bb +zVVQ%NSd8|u?0!{UNk!pxzk4mv2LuYh>`GI|2386Ertm7L(Vrx>wPW;_NLXBOtbGb2 +zaRzu1(`OV0w(;BeAk7;X}>(0{Ogf==t*iPhD&l7+Oc+nOCVFPW%Qt|qS>EmQ3zD=mSIjK +zFEG1ftyhKX3z~wX1$k#_{LWJp(+!c +z{{03X2*5!b^378N=_|r---XZ>-!orEGSLY!u&Wv9zC@eG_dpG6POEQrG2J^o4EUM5L=__h0exwvPvc;N`7jO2)F9eaOiSuS +zM@vBS-7cXr@~))^jVR5XKXc}08ArHTv*Ne09S%1>lGM9`y=bCF`JD|<`YR|?mPYxi +zy2=@HP`}4W2Z*_{$;3@Q66a}Z(s*+rf8QViP{tUi8^eJ=SUDb=0XXtjGSx6#vmo*8 +zQFpF2)z%%K2Sy0t(rsH>feiB354e@(e+jwd%yt_s-CLghzEL0Uwf<+)!-9lgR7GAV +z_}(Ib${Tb(Z4V@pa3$XZpb$DIt%Jt~U+NI4r3ECEhxI=s|22qwI1qogm#9d4Fx~&{ +zi!ul6AUsJwdUNcBi~3F31bJ=P&-^g?M%GpnXvy4?;LJ?vNF#a_V&6n^eTaReA#@nW +z{=njT{^#N%r4P2-=vmR1|4v#ROSUN<|8?oSk`M%y=yB>ut`+IZGAMMr^X0k(amV2b +zl7Uh7s^L}0R}gGy$rI?TNe7Z(f-Nah22b}to|gFgTSAVp +zRw4iwP@HxMG(QuelESH6L8tYI@z<(C1W}hfjEip?)%KQ~44&%9Ed>KB^RPOt2@b9o +zjQOXGO1U635^C-{7q1Nyx0#4#25i8Go3Sv2GU-$cxZpjx^6>EZpGxfPKQ~Op#*X0> +z_Voy*qW`xp!GuCP1b%e_n5>V|aO?)}COb$V)TGDn(SKf0d3es5ihPQPK8prrYHS^= +z)sbWUcd9=MWrGyv-K~}*a>aI>!*Hn)+NeuH-WjT(<9IxT<1(G1Bg85QZ`B_^r$c^S +z*;Jy@XxcP&1QqsDo2D+&!+VnTAA8Q#7rU31fTO}GG@A#F2! +zI-}Nnm*376b5ObMYzh<*mKm*;`irGxsl(_e#Xu6(WQ^8@LA@_gzD;Tx4w(Wj9>ez43`dv7%QPfV|uK|yGrI4 +z=;mom+HBUVOvNjm(DQR2u5;uheScxA(vLh7NMpaz`p;hm-2Bm82%bRW%@z6f^bKaU +zzIUYCB}Va1g`ea8Bk-!${51=!MJGrEi9r(gfOhsU!78+nxOp?9kBX}mHEFZG{HV1w +zwUZdw<5?*18y_pS{=kz`<{UzgCw{XYS_~hC9^o@7iv{LT?%&GtJW71AH!vk=NCH7! +ze%f(2qYO?ACDOFw?fMu{j4%&W^_&*yGx+ZpM&iPhPXBE5$f1@R7TI7#SWx@`3DPvs +z7az8$*2p=0i%X;lf+{!Q96`sbw)m9ApcC``>ZKF$AQ!YoIDpR6JnK3Fx)KXKnTpok +z9w}x-B%}}F*|_zaCm!Px&AgyD6*%h%3G_x#rr9x@k3ah1Z&#h|Q{W3aIWX(KIw2!p +z&bOAbanv|J0}L~_BS-qfxzyA7{3fx$$%P*B4hl6q`kA*gJZ#+KaHet&exVgq2-{Ei +zBJh1(FiZ8l#V$HP>nkL&V@`OJm;xIB@Y+sjtI&6(_>E{MBOM2xrA3#<#IrL5uBpTv|`Dq0ujCrK4>avU0g2 +zoCL%cHnI_-A +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 +zlq~$GGMG +zbnE|L3-B3RfmQ-_L0g^QaPrMNR)4l8!4;^u#v$NM$Q9CclhUKb<&1TKJg>NVYry^QIu8&~(h_@HhnV#p@;SP4r)|MdN`~LX4##kBXg*x28 +z=8-1peT0bk#>b{h3~cnZG)ltuaeeHZHa~D +zWi>mNPpDD1&U9$x($Sf&8l^P(wbWQbLK4)ZYPf+7hDxR2tUL}MU`1hr@=zVZt4;4Q +zYo^H9Nz1cOQ<0+23Ct_MU?u}Sw>3Bc&&tSK?WLo*n)WUvF5%#&vb3gd1Vo#IuZ;d5 +zf-RyAgs`U>H_$%Rc>a#6ccfp(^FzEq>3A7JgZkvjk**W)3n1H(R_;G5sgUR1W9a73 +zLPe;iC|v?bo8uQFndVc-%46lgTRTjeHfN7cG)U5sw_KB_w6L}E`@?5+)Zz+lAi%JS +z-Xgn8b@sDo)G*m7kZuG*qsXJOIQf!p5qpr68;0%Q)IrK&)|Cz#m#tnY +zlRwi#Y%z9CU*VfEe-$9(#81E#=GRakGP4;f2%_V^5UV3d5R6b7@QA}Fl2wm(;TtJWh{j&xh{}LVzBms;c$4D1i|`X +zZV>1G3lFif#*_aq&WT{fqOq0)1zY}HjTjINXia?@9``r@={6tPS@_{2_=9U~41dk; +zqZ?S{W{xiL7MK)bIn&FBtRXp=V)9;l(l7xg9ZYC1gX@Z1?5M>gJYdqJ& +zJQ6jI-OTldB966EaRcQUlZADATZ?0A2onV%DW1JP?UU)*!@U0i?m)KPl-VDbBPjlJ +zj35iji&^!?g0@{FN`)6^V0!indK*IbYL^r>UBr(cg30bU!BNX#fq+hVxs>hUK6^HL +z(;bf0cYD4^riM4iFLokL_x?CXF2$p&m&H`b(wr|?AbWHXI%IFO3)!5OFS!BD*#QZD +z*P>MK(#oQhs{ +z@T$}*uA|xBiU{+(EQw1w8s1&Xn>C%ycI{Z0jLVNvqKbbpL`!X_U_4^B0BSAE5Dcng +z{*#LleQu#{?I*5e@nU(Cy~+T=GLa?{&VUwGBc&_Fq6Lom4XV)ruTD`}a^9*c){7Z; +zis$bXqI<(6{xxaC2AzLt7g=f`%po)8joRd3>#i0&IrB>qcqHhu7zps*##&gmfXiA% +z9}2#<;&RF6fckX2M0^s_*{c4SpBPqerwFs(mCXjo5!%lo2fjS +zgh$TNefo)|(uG4zh9S?iUBPR?@(tsc0|#?1+xLVEB%^_f-$?K57P;I +zwd3W1pco-q-1R*ESB~T{c34da1T^0y4Ihc%O|fUu^6RnaiRa>36GjzG1oH5KgoG1wh4+~=|4piq +zAM=1<>FQlZYCj~2^;hQ3e}XP1G$3kbN)oPo_|irm6W6DL!imLlE+>J&TiedwaAQYb +zuSxpHkF6Y4J=sIy)wO>sYcvVBx^x7I8^1x*)y-6TM`Ib4npsR=VYbuMU?kDAx8&qG +z=aitAv&NpIfet{#5Mnjz;pUkW9 +z?}iZd7R~8fRlp45LoPeD$ZJu>{~}7MJKyga +zS2&|KWA%Xfxm3utrfQ>|t%QEN$`#OOq~K>^iQhbM=X5I($AVAF$$t(_XOYWZ +z%XaLh5|&yAed3HYIE?DCr^d?&D0l^0ikpd{N2I?vvP{YFxl({(6!Xih +z&{r*}pCPw9hp-|(lA&6)>0H9BK{D1mGZr}l7E*+!jPFI{TF-FN0@I{LFK^)>1LJh8 +zA;TZEheh3CG0wkk-ri($rpN7($PhaSHpOx|zX93}eI-nHpnLmDc!C2GDxDVEX`LD)(zVXWfN+fch66I|+eB0fkAD%ra +zp2ar*QyIDh=lK29hC-2b`0}CE}d21;$sQ-jH||ztmprR(mj|J +z40t4miBe#r4PT7hA0r9mYP?Jyw36?$64?*5jyk~q_b-DxG}P{uU0JRPh?g8^;%(Ff +z4iBnIA<25e6HsEhkB|eq%r&pFz>(Z4Q;yxZd!Z_%?b1(;i;`e;wUUaQrPc&3`46ZY +zD*^-ZDKghPI$wlBh60lK*tMNqxxCT1>|=-uE)o8qODLHca{XD8fEjU-CQ@%FOZ_`| +z1s?t&e;Kaoe`=J0C&1!hK%Ty@?d8X_R2sv6}-{=bOOukYCN+Wge%G2L$ +zrY{T7b;)~$f$3G)?DdtzX5fM+@J|$R4m0a%@ws+VilDV-%H~pRdEd&1W(wVISZ+k9 +zeA3WEP9VzbW>YCtFbijrHl)TzV}-$VQXGG8Qt +z)ZPpD03CqyU@9_$&(I0_9Ml=i#Aqn}q!GU8v*=ZVUZe_9(oJL39BgJ2(KmoB%6AY!LtQb575ji?;3WY~&ic7Z9Kx}hLY6Z^#{O6C__ +z#UXsK#)iR1M(AM$xKV0~|EgFf)k}nJ!SXzb%2$@SUwOHX4NinqaodH*lmAJJZ2^Y& +zU=XsO?;mqwAhckP#)8>PajNoLW*vhX-6cr?9vg)yvY1$gv9BfPowgzH>_uk1=NJH{6xXeyk9QE7M?wk9WUS +zC~`&y@sy4d%^u{P2?jW6vOcFjylf1AHdrPeT1uI1k))SH#@`OwH^Hm$rXUdH%)k9Seh)H+wD)78{#9zhfIl5ieQcF`q6f(k)k(yaGzZIq2HSQYBHMG|8*}5ykVo^ +zIfo3{Sy3_$hEA~|M-eJ!rV>@p^M5PXW+3DA!z%U$MAtM}al8?)yQA&Bdld +ze^hBHp8ZJ-Ti*-q4uR_wgBdpk<)-Jv1kd8BMeFN3I#vNI7fqk;Y0zs{8-miiYL7Fk +zR8m~J4HvoW%HvtD*$eAiNw$DY;6jNduQSW1yRT2J(w>$Nv?WZDLnyKGSK!HDUv$qM +zmUDdU+9nSE=nQ$q;DpRrSYnQ7n$8{eOtpOa;9%FFwgqBq=xhV(!wr3yw)tWS@0_94z3i_8*d~fc+;KIka_Ec8VM(@{3Bcm@I43 +zV*p!=`30o-Z@JVz`@XImb!oPVJ>a+U_KKik{mjd-L%AH4PX3a?Sw;!nSTtAT9w*od +z#W`3X6*fOKo+t5NClepnxlF{fN~i*{4<}>;{?bCc9JI(Nk}GZhxRgjI71X9(BRiv+ +z>W-Rr_CPnyPLo-`TVnB^nww8zSvHvA8-vZ|m#o607Ei{E0ZZxKiJwRWGpz0ueEjzc&GaF9;#N8~MI-xDsDh +zYVJaQI7&oF#NBvdeD2PFl6i53gY#XeM4r@9z~|$t_J^MX?CCQtEDZFvVf=VI0?2xX +ze~A^mGAc5aC)|1>8y2t?3Qd9-bT>!Uspm^JK%&^?#|#km3$P +zIhpg{V%TYx-7st^K%IR(_qExQ8LwTUHXnbpx}n}I5^f9p2x--;9>^7)dRQ5@YHIC3 +zp=gJa)WQYR%quk%1kJls8T;pvA7rGF^JLi|$P!8xM6i!iJ?DSax@1k~MfT_sHuZyt +zeb!!le$TJ~1oP`k%n;`lM!xD{QQS^XvA7C!bXIE33vYHvk6a|Kmr^MkfC+LzejE9T +z+{1q$ISai@U;Zx98gh2491^kg_9v3w3PMhNq&TU}AT5ZXE*a4;N@7?~asjl~1fO2% +zi*0H~>9^SMP1(uSwcN}epsNp{x)L2oqU|Tpaf==g4-con+lAw1Pz!HOpo$He8hu0S +zq}&f-gb4J_?@M=6A#v_05jlL-#m^={%WbNsmC2%@a92@~{jB2eo)_pn5&>u@WW>WC +zKo#N7sQ{{Ahbw2h5Yu2vHO+yh!zQu!gzZ{p*EAWEhANauM=AJA} +z6qEc?yP75r7QSxuT(|B8fD&hozh>3K1Wpg1tfK3hn2uGD>NRo!M_Y7fzHl2xc#fP +zPw=uOd;2--k1>xYnl#QurKQY`L|6S)lu*u2a_yvU738l$tdI~fTn0fF*-nhUs-EI5 +zqD)D^4oY&3L7^^XRmCiQtKGn!Ll<7+nIgX*%rStIHGCL6@z9%=l96Gj +zT009H{>3@cj{H{*~fEGNqt=&<5X|EC!XoA5kh(wSz%zRu4e)#&2M +zSMcT|fCVr$!>q{tC$Ej(kLdxo8xzP4-NKJnDqO}OwPujR`xkhYdm3OXKR^;m9%Odi +zrvN1$cuO5nk)r$U%mpYTtvTIq9OcnIa7d&i +z4>IZFs-c||Cv17XaGyBHS(d}An-Q05>&c@HVxVE7UqpmrSEy_$BOgKPTdIb~CNBH4 +zr_nQ{vMreY!oREjc$gO<=lN#BDxf8+0N9(M^BWyR3(FI`{cY +zM_Xi@i~ABGj1_08A+4|c{XS#HYU>d42)7kqTpUbe!4=LlB5r2#Q1a}g%OZ6?liVCDi}eSL)gI +zgoy|{QXwLFQJiST`L(M9h61Pl +zCgoqw^{~Cj`q;R3+FbW$V*1GT3&89sMc?OmgxAkNXOh%%J><0BoWpfyxbG-I9l9gv +z^5nW(QQb3se7rwpB;+JZ+y-``R1+qvZ-kjwCDj-n4nJe-^JQa=2aod~5AsQ~4QUA2 +zCa3oA<7X8(%u}s^p(fZUg*v)D8^<_FeBR?gi5&G++*kl4a*y%-gdiv*PiW#)G_)FYS4b)}na%fCUXuk}r`xD4y*`LJZ1u5lP@K>N1;X1^S|&5j7NA +zpXQ4AwAI$JWGTtwOc6e#^@+Z&sjl9k{%BEEvw`z~ie+K*o|r1iGjWdp^kR_#f4?>P +z2dL!pO|np#xB{2mn?)66C@qTrX4G>uxU=mH1ae|qjelXDLp32O +zpNssK6clUp>k`Hti+s2D+S>GynuD=Hy^Pdj8Z?zvFy&+n7)~*@b^rJW%A&tKhjiPI +zB5c90F~EGbOmCMJJ64pa4F2rY8JaboN*q<#R!)2)1%U+8+?D}lhbU@@!dOclYzA=4 +z29@0Ub@puhyGIp14rb*XSW0RHi7G#>JJN06Fnm4>Rv~nF)@tdXrE^Ckf%ePoo+32n +z7^I*G>)fUT;6>6!$)vZV%@q8be9G(cqs)$FPyVx;?Mh43nF5G&5F{;+m&L8+_p<)9 +zJkO}+4qOFBs{6r1Yq6vmTqHV#7Y9TD5TF>41a|mXM4cd&I?y#CS(aCCcVc}f86x(s6e_#5o4LoTnZ%|2JB;R +zc&Fvc%s6eua_5d|q^tU^U(~_EMnrDtkmw2DSY>}HL{MV_=aGh=0Td_^5c>EqX8C}; +zn$h~>va%r5L3V6y$`!B9Kw?@*;m{wlb@he4SpNswYO~#pn0h+tL1($LNGqt>>L2)2 +zbG(m98+sS(zl*vHs4XtRZ_T(I-7W=VmbkuFuFp*#5ZOo=cS3mVUhcWlHRWM8*`D;U +z&gs&-hq7|tFSsKuLbe#AaA^3rvOQ5{cN`9LVu)ebUC~QmP`j9D)HmWXsM*Tm7HVF3|AP;&;S +zBtV@SW@+aOTeK+%yrrS`ogw+w^#?@{CpDf)AnO0*l$O +zA7x1KE#bm+V5o;#*h`uu$M=mqxKZ7Ximrtf$aq84TeQnb5^q|NJIe(WGZZ-TmkHWzYM^y@@qDM_RnU{Z*-Ix>&0%<{v%!^==fk +zfuDrvpENpZ^*uyP0Lr+>{J^Yy|8b~>m&AF2w=@P?qT9y$1GHcTO{)u6PwF~8ogb-_ +zC3ndeW#=*H!WGZp0i6c>;NIbCmc704u<2t|=EuREV-O)BJ`oDBoQOjZ!{=~cDUi^I +zYCYpbVd0u8TTki$s232)virSU_;o9nn6V6(@qdrYoDC?Y2>MRG9&!6iEbHE(@up<_7W8lN>ykHYxE8< +z*gal%T({FEHi_G8=5TllkP#F+)kJ?}+lBW4@)p%7nM6dAlht3|_r;JYKG(<@*uVNc +z&2ZFy$!hUijH{#db$GzKIkD5j4O0K-i_WP1mB_39KIULiu{S$?{P~7fsz<IraijE#Om9hwIu#7dAi8u8UtX&z3Hxi@vm(dU +zU7$?R=-P+|p;F|nBKs)V{zj^ctE+bkmYM6~%*0Q*J!9pANrRt~mj*P+vK^Y_rhKo +zXygB{1&AcIi|yKK*S5`PJ3xg<92kamv(RUdLxtLX&Me9>e5TgjHlO}08m<$Y@S7#S +zJ-NPo>J#37@}2DWv;!@*vU{`it5!_if1Y!szzQ&qJTCena0=%&2V21S>iy}DHHfVV +z)0WlYiI~-zUz_eq%JEpTp{`LKUYHrNfOkAdjp_omy^HD35C2ltk0ami$V2!GG_}k- +z6XruH`a{_#<#+Tbeq%x_G?Fl +zc4Fn=sjDqrjP+n_BD~2xf_+8!=rq(Z@~7P>Rvf;-BQV4MY$_^%uxIsG`I7B3wFnVc +z5i<`6g+c!zKh}3R<%b>RaCn)ML6SbxwSId3D>}r#WGFVeE$yyhT#|#h)S1YDbSRI? +z-KKN&C};pdk8*%TRMRHV_wgl&tAwNj6Rb504uzR1N{aEll~ZFpOc$=LV83}Ntoj`> +zjyn(Db>JkPUY-DVv8=GJh0PvC+@t${A@U_((HY6({{bul1Zqg_HPSKAKGlz%b#-&> +z3pr(9mDw%_?s21=7&Rqz)!XI=e)~GJ&x}fGxrpJBnc(n-lq0qM)3@{-ZzRK`+ZW^F +zJz7?&d~fR#uh`f{t-pSpNjbbbouXXN7JJScP}|tpsFF?M$n^oh(04$_vwZ_ny^N>S)$mZjtKZ8u +z{hwu4E1x8k54E!7*oZv}7X06-|5j^FWXZbffqt*-Xd~U2;F&juP#&8vN2|JQ&!-bX +z0?Bpty&TK6Kt9~giOKYf6|9qTD!+jl`prD4aVAoEm(2TdcMHT|IHSVxU*UvP2uTAZu^G!A$eU`thFA`4L+PeLEv43O&{y;s-KHKBgixD5C2%-Bw +z5s6as<-Q@tv24}Z=1;>aBd2nNy2OoU;FwQM(*)IsDBtw;E`2- +z*qZ!h+J*Mw`>o7Jj)`mtShH+wWOkSf$w +z_--vtiFL(iCC2CSy>LNuBW_5?T_RfMH|?jN!sa?#_bYx!)##0iwERZLAU~_BG1WdX +zg1)4VaMko0NOwi;s)|HE&VV-}QMD+uv<3kA%QO_NVrGS7#3wOXSvdUKe$615oy$E< +zRzz4Px1c}>lqVpWhcDzm+lx>_AdK3EERFB}`}1S0@JEF+mI+zdr>-I6#mGkg!o7v~6G3K45zP6vl+$o-jM7^;WuO +zN6RLJe)bKzS@Y!YpNOc={nMu0w){%W-*Q|?-TFh +z`eYM>nh8Xl;xLUB4{C5SU-KL-Ocl)_~-q*C-3sA-#N~ +zt){#(w1FU|WI1=So6$_b)>v_)JC0-AYM7vd3(98N`MP=g!=pI#|$4=F+5f`66dE(|PGo%!05OD)1ilH!^-SMQ-6j@<6H{z;Z +z5&P#n!lAz(A?1JOTE1JMETfV`0%-B;|6XmQg)#NQ-RKqPtmRw;iD_3i0ipDX%pgAu +zTraajLzn}EsW22T6TDoHkiUm}Q<_vkcaS8|FVV>Mntod{D`7FXLkGG;?h=fV^0rst +zpfLRa4e_$2I)4E&YS$#P@6P0pn8C(y%7y&hW~{}4By8feTzXuq3N&4yc5@_1nI711 +zK7yRDcav&T9}hf-TpA>`mqp1wf8^axCxz#5&rqUJFG{#v`ejVaQ#gMbvPnb2EMdN +zfoEQrx^@U1SbIw%tsI?nmD+#(`n5#9_i-Hs%QM-Sm@sd4>Ir?VM}@T>muwQe)qh~S +zQ?K2v{<#c6r?vZid~C&{{*B8Yx7}kzFnTvWE^;wvgK4zvEZChr@TJ-lc)h_H_3s-O +zbnKWhK^T6Ii?N}Q*18N&;%FF%G4+#~)TB0MxWx$r%Z(I>2E)9*7SnfhWZsr~$xOE5 +zxj#`DAHP2oA*YCaUaOjnMIMNPVmSEe!^2jM7*a?AktUt#;lunE&Z71_ul~so*Sf-* +zdb-Np%0*Dd(Y3oMm@-%z-^Jg4fOPjVD2{bEF>wNI6}!@_U5j*MeqB9qvBX392e38f +z@7-pNyhM90z>rm3#t|%1B4^D_EpLP(q|-%g-5ZId25rneoGQZ&=SR=l97*jY)$tEG +zB~H3RWGa?q>P5$+HMR*QI8WZto*E~`SI`!C2X4wPZ_u7ivS<7Uj$fDRMSKnR17cB? +zg4iiZW`abyyR~XT0cp;o+~zp}BY6aLhK80rV^w&R=2GpYn}3%A^;?Ig)tm4_=&t&A +zr14BIA?gG>D~&8)P^$qo!hCvpv6hppS3eHI7Uz2S)+Lh+(`8=}Cr7;Tn2{#K{jD(d +zg4^WYI7QF3kJwEvm}W5Ifp>FHIkJOcgAg +z`u2m53!3|7r9h%N(%Nc-XjZWUWAMTUw8M8V49V&S^7z=>U&W5gHq{|>E$xZ9p^o^) +zMO+eZn0&7O@725R<9x`k`4;xcI{W2`))@$7?QX7lS7CE8&7wP1{ORFb5Xs+O&1g7J +z*Ut@EYer=221Ef7nY=}W$;|KCoU5pJ{+_OMGe8exykR!>pFkx8V5O)NnV +zwne(}ZgSKvh5(Alo5$~87gOf41}|$Q37Xjcn8I3qG-;?}{$)TZnZV@O+0zK-9k5It +zLHAlu7zI^d4D%q6{|!R1nXMWLaaLAOR +z5^mr(E0DKUJ@$$kA&C+(!3>-GzN=#XqOvPe)871J_hazGUNFHgalkMRNP43AIKs)id?`{Uh_>cbm01SU*on8lEgwdq9mEMVQS +zzSh!Jldv@@X7;lU%vzyhz`|sy*{O5hFQkO%Lz&x+#6!Dlk(0s71-e>ZTOEx`Avc&K +z*D77U=~H`t;wdIEwuo@9kLna+U*0*AJG>dZ$3lZ`@Usg>%WXiyiS!dWHA@LyE11 +zGJQGn3!_R>;F}99^9oHY`s%kDc)dc~crCzi7J_@YUN7A&w3LzVxqjK?EFv^W}3k$jryH!W|xt5lj2r{VC7sX01mxAjS +zj^k1?ANN3x$*GHz(?t^sE^Ixy(@6X2p8FgqQ?gJURm^-qMQ#_`u5ogE4!(*X}`>6@z!LNC-(32=4VZFQkI2bA7 +zGppVNeFx`f^Z&wLy|z*2`T(XARQx4iku_dW3uyf`JNKWX$jk#iTEDuG1O6;$_L*KJ +zSqd8KSn1uv;p-pWImVvb`>y@)0@GBR2fjB<1c^vk!TI@O-@-VvWY|`=r-Oh`eV(6MzXCr?fDj<2 +zxMi4wi;Ihp=VV$tC*iU%ifQkaR#2*d8PBHh%oJY-b2IDW@|UTUnGnGcb$lc{MxO?> +zgh6Vi7ICGjMgYRSLOgR +zrNZ30F2qS`b5i-SMf6D3j(aq+@Bwal{c+XwwR+NzV}#2ump$4Z&S#SZD(=!tagw~dHIl6Wmn#Xwr9`F|aqcRbbKAII&z +zuD#>hWOGGjUi*?ADtl+|y~nl6C0n@mjzY-Z*<_1khm3DX62If;AAh;`^KkDu=Y8Jq +z*X#M(QASh0gv~aka~L<(%ei6E+5&LU-1(;|k%62q5wnO)fC1j`c3j}Zp^5$bBG-%w +z3y3~AQ-LaP^7eXC9*&prW-xG6MZ&fE@4p)&!7av{PzkGQIAT=gCHFm=e|pqt2;>verZ2H!ZB}7V&KHgpF~?% +zoiPlc9Oo0!vm;Iwyq+~uh8l4t1Ger0D*x|Cke8;I=I3^o%<_wPP7Ig>^fcN2BU#LP +z0qBbmv+O_ZiNOIW4~C82h-SYk8Hv7c7JNDo$<3N{^eoR25*o~Wg_avFq3X7;Zc_ai +zm(*oZ7`#pIyF?xnUx8bLP-d#{r;GdQ3?sH=sN>|?kv8U+y`;zRDF*JPkM<;f9#dD( +zCx=*rYHY{}l6^OIzxyD}P$8Ka1Q0!Nti`w@iEyZY6-C43tynE4*JhT}@a69p1RY7g +zTu+Ht3k0gyW|aB}xR|xsxshFAXsFU+CYvd*D=CMJWw_V#!1+GfB%2?`7~O4PxXBn}h_5f?$bFY4f#k +zfsg%yIGCuxECo;*FQ&fhGUJCwI?P{zOw#}zNg_T`++2*wR}MGbcMWFupYg0e&&lpg +zcHQms2~0^9{~Q=>*pz4~i@yE7ge{yC3y3GJtOOE7w#@lW%z;XYF~>>DPA?PR(%>&? +zoN3}KVz`vS{t}A$Qy2G04N--?wW$l?)EI_QdVW&n+D$EZ$j`s73)eJ^>n&IU1OK~Q +z*`=F<7DJA15*EoFuCXbyUQSuBv!PcAy^RN4a!eq2q2(e%+01q_K>)9MN}4X+wpESn +zy}D9AEzIQp`|=&E-!I-;Uq@gyB!<4meIWsfD`kw#&^fnxR(;3e5c_HQ;cnuX^3j*@ +zEtw-HcLJQp^eRJUKM8Ct6GuS9;b!zt$-#>!ps(^gS4w1CFPj{Xs|SAeNi3K5FfXy@ +zH!J3c)4N0&f8oZ%-T&(}d`K%?wBCAQX60rIn@^N~ajYt^U(X{BJuALP+8}qB$ +zg4X0~nf|qYG1o{LI*u9CCjnBUwuf=M+m?X|=NrKO+)3E?%2~nJ3$pmk!rtcxX2X{n +zo_`e-xZX=ivc}T6 +z6$=^SC!M+*aziN<$E);H-Ynxi$(iwC9_@6R6Zew*++tx=X9fH5oMs9G+7uw`HfWk> +zzGI&`(nkg+92^<^{}JnO>uGIJbBp_jbl8>r@fZWT@~U{OO@@E+bn-Z5R8xL)9L5ke +zHYsv+K& +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 +zVzq4ASV6K^qGVws02HEiE +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 +MD{I5+6fGkE2SYF}a{vGU + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +new file mode 100644 +index 0000000..b5cc843 +--- /dev/null ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -0,0 +1,16 @@ ++[Plymouth Theme] ++Name=BGRT ++Description=Jimmac's spinner theme using the ACPI BGRT graphics as background ++ModuleName=two-step ++ ++[two-step] ++ImageDir=@PLYMOUTH_THEME_PATH@/bgrt ++HorizontalAlignment=.5 ++VerticalAlignment=.75 ++WatermarkHorizontalAlignment=.5 ++WatermarkVerticalAlignment=.96 ++Transition=none ++TransitionDuration=0.0 ++BackgroundStartColor=0x202020 ++BackgroundEndColor=0x202020 ++UseBGRT=true +diff --git a/themes/bgrt/box.png b/themes/bgrt/box.png +new file mode 100644 +index 0000000000000000000000000000000000000000..54876e68097e45b215f6f4c4ab2f1c06c5bd1e4e +GIT binary patch +literal 870 +zcmeAS@N?(olHy`uVBq!ia0y~yU{nIK{W#cwWXpePWgsP4;u=vBoS#-wo>-L1;Fyx1 +zl&avFo0y&&l$w}QS$HzlhJk^Z!_&nvq~g|_Tl@W`(W@UmTf#;@V6`wU#Lhm4Z}sF0SlKS+*^aA-R3`>*{yeueW-)S*X4G@YAFJoyCWu +z!{O)Wo_xLQ+`LKbFZ(4ABrTh`(q3?m&E9!O)NP+RvD74Xyi)P_S~F#t;;ilfL3MHE +z1W&=NWnIR?iwip@ariP_*|lfSpSt|~_sjj3f8KO8Ywhm&2b4~2+9S``ULO}9zu(%z +z;>Y5hQ&=)(7Mr-7-7@Rt_uuQw%gS~={Np^M{fA?Nt4VAm@8-(l;>)-1-mMj$9dwNE +zs;kh#k7^}_g&z-p`}S>h!9D(Bb*BT<^;|cq{#~Z~{Q2|yM=gBg{-4?NKQi;#zkmOx +zZ{4~z@lFfFw9H%si9HeV@&8Td*dJTj{p0k@#gWS|-{d(y@i(hYb7IDsusa>g;+xL4 +zYv^}9authLV$_Kgm7aXQU1M*+4*vt;2AAiV*!&CU_z{&>mCVfaPyDrDg8-uwi-HS~ +z;t*7DVQ^yMpuf;Xm%BcZ)8tvXD%2`NL!T}&&+K@Wvg%+$fplN)ckT+d)#c^o^`>h* +zZwD{A9bmkC`SSeNyZ$ZHoL~R;T$Q`K`}^lgA+5SAv%;3@@F(>|6^2dHd{hy_YQT^U|C$4w;ifVF9Iaeb7Owv@}e9~w#FT2z?jTJ8>EaGR@9qdy5ApbKm +dPUG{u`zzfzHqH8W$O>o>gQu&X%Q~loCIIScDqsKr + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/entry.png b/themes/bgrt/entry.png +new file mode 100644 +index 0000000000000000000000000000000000000000..65810dea3ff2a03f620f13cdb9f680aa116c033d +GIT binary patch +literal 1431 +zcmV;I1!($-P) +zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3vdk{c@wh2L4lT|!Gj5-f+`s_Y=kzX#0Nu`@F@ +z$pp&XSRe`X3Ft6>{+QuE6cXhS)stnj3nk{5xuB7*Te-dIiu<`s=hH{e@<8KsFhqj4 +z-2U2;Q-NF`3LcNVKFfo*V<#O$bT_<(=EW;(FpWiSJuwOhXr7qr +zj_Y|esldc|-cllNl)A%btkWRTsFE<<9I(dEoe +zgg7SfDVRA+mCRXiglV?yA*Y;kDR5d~xN +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 +z~-Wh$@phq!Q?`IDPU`GePO +zubHp{v}I>%ANgb!D((`4)jX9jw{2|!Gajmal@hX|%*!6P!QvJT +zAL@7{TSlB;s-G$H`yBI8@a}?h)9kPD{4@0kZ$dHsr*v?BpPNctx*6Ga_33BJwFp7Y +U$^7#${bvUX3EV|$3`ofO8=tzejsO4v + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0002.png b/themes/bgrt/throbber-0002.png +new file mode 100644 +index 0000000000000000000000000000000000000000..8e9a85d8be80e430f136327c98db0185a36fe7c8 +GIT binary patch +literal 1568 +zcmYL}e>~H99LK-*Ln368NvEA#)g)L +z000;hg8U-2YON~+eeKEq_SBaGn;RH}=WB{Zj(aGR( +zDxFSD0NJbrFp(na=aoS}Y>)k2qp5xU&j_yIN?jgL@Om3^Kr>u#!k5GRxWtbBxK(j_i|YIa0?X +zwF8n_|6l2daUn!$I9iPOnw^$FBeSjd66s8>0$3bAvto?{0Kg;!KcA?W<>lu?PSixN +z%oCL4?b|b;>?Qbm`hLx3e +z&CbH^uHjSqJ(uI4aSl(1llt2}r0&c;CvJNE95qbi9?z#yq_zX=kDG1FMNe)C&xDSt +zApSRFx=@kOSLXxMO^Jr#%V0%v2bI$#at`@i?+e6#d`RXh_bf#BhsQpsfixETu~q() +z=#uF#_sBUGwxz}y!uPQNp(r~=zJ1b~m8(LEOIP+N&ctounpMF*sxl@`Q^P-3K(E?R +z+eV5RDXU1i_)}|UEK)bjy_v8}d8&kU%;(1I-{j58^(iCWna +z`$oj$3&cYXj-dt>o&9nv^FLC+&tSaU$pIVIh8F%pgra%SP;$&ix;10Q0snGS^5NE7 +z8XFOO*D?kEF(P61VC=~-?B!(AKu7V$1;474tzLse`vm-+1HtplCdHa|&r@c!a+8>e +zvhl=V{+zw$B7;Ek*r=ui4W_v5k7M{w4A6jOSpy$fFyR!#2YRjb}7JbT+n@3&Fhqw(~m4`__ +zv%9ToKY?pqgn%>|aWT92!vPWSsl24g<5|91=JjO5H;e{SM99$QcM}QFeua0Wsm5CD +zIfvMbztD)j?xI<2=iE7y4*QL4a(CiVqkww4)d6GUA2YaCG-^9y&NuytO6}bAAia(= +zzC-q^rxQ`4?7j_I938p`ZBa($-RVtPkQhda%MZhgrkq8v&IXF01zQQLEi@=tFPR;m +zrpd+4tQ(iS!Rp~fe*4k>pEWKbQh|ckn+2a|nEd5E$`h1&;~GZV(6h#e^iI6~bkH(vw!UTS%uF=b^r3JUWEh|u +zMSFw_f@t|mF0s`|=L6&Ql#*TjZiUavtGNzW9xWab$eac*hj0w5fiOT}G3Ak3_Xv>& +zPkz7TE_$$vx#5tJB&{#nRobkM;Nwr2s84I=Y9`|M_hiqTh=AU~qG1Al>OJqve)jG~ +zzIZR+^4(ICGtaj+vtH9JQ^=(i-VdWy8A(2Gzqh<0*>utSg)|YuO~4nnKhf{d^Oyv; +zW<~V);%3X|JXfbD=F48bvDH23jr;PJ=Plhl@eVaoan5TA+EQ86&n~%oN&CeC1piP! +J;qLgHzXAS3zy$yR + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0003.png b/themes/bgrt/throbber-0003.png +new file mode 100644 +index 0000000000000000000000000000000000000000..9fe95aa2734b499cd3df6e65de24b90aeadd2716 +GIT binary patch +literal 1561 +zcmYL}dpOg39LIlVE^|$b7@^DIDD8rnDVny>#bqw-m||vaVm8}kF3q+sCpnQvTG52) +z9!j}YjD|YuQ7PMrX-bL6l%o6j>74VN@ALh9-_P@YeV+IC^L+pK=7t6bm>MCB001xz +z3M7y~b(}9leemREX3l^D;{^W30{~tvRG6a +zipQm)7>RroCpm+~PUACCd?uYm=b?C<#FP{|_di9(C(~0B;wAT?V3hTI6oJa818!&x +z7KOo}+}s^87~GmQI1lfBy)Y!$vtYg_B9TQ0&}iJh+Z}R0;4R1ue~!YX&O`SzN#}|{ +z&tl%&09srs@Q)zTXtzA2VJ8R|&BJgSJ%tYNnOt^!Je}+4j^4@PiAX)oAcxO$5;!28 +z`~Q_lw3lyq&vOtj{F$9WOQ!Q2!>KF|r~t+dD?Dbs3IL#2g9!KtGE64joFt1}bfAc1 +zNb-k8`nz=E4VDOQ<1LoB=onOD!xduetTW%yjG#EBi8&PR?C*?Q$RKU12=zDoMZrv> +z^hFN{p1+@XJKKYc%_p{KCR--1D_K+QQ~XqL4Qn)Uc#>JC)vb5qXSY8?IJZ8j{j3;D +z#&ws+EO}CW$uDJV+ZewEy0v%}{n^@qDnxNnvg<`S)8?ZqcHk4Ni4RXUJfx~Pcq=0) +z?GN?Z?Y^1NRPJ8FgQB`Lt-Sztj&hIG?He-)k;>CGkRajjy&l!}ZoT*7Tg+b5*;H7hP(S$<>ph#50sB&n{qJwP7j +z2V2*9hKlMmF-5o%uR$uCL@!cR8Co4{h+~1vXpQDo`$ +zcDgjTF|#?HuO^;i&$a_fxvktd(jzi%M%?Z|%vlJAZw8v98tCz=KJB9AN>7!gst!72kR$T*X*`l6`s%Kk_W1J^)X1SWK&o8#kWvhd +ziq&CDzR2r)Ee7%5t+I)tbpqp&GU(%|w8_ZyJ@#YaZ4w42v%<$$l+`el;2=fqQEN7E +zUv3IQP-apK)3!GY^?a`gg-*S!sPFa@kMnnh_D46qTXA?wRXhGUuq+EcH+l_sT#_Y! +z=(GQnd~b5UU)C~)Y1;`}Snbh0H{Cb?)%RAUZ?{dHyR~HM*>o)9>(c{@_ajjLYHqP9A2!old$rgS;iqM$AkB2IR=7+|#Shr%;W1>UO +zE;FX|owaMpx&_sXoTskJzBDu`&z!7F<+Uxa*aA1)mC0pT`HfIuV?E{-PW61C&5-&5%SeLCq8>{ +zAWmwieRb-1LYRXEJZr}L{7U$1OGStX@A{w~9^8f8-5#km)^7RmP`PX}I`*5VnAq%; +zp%@rxqL(drH#|ESF!sv4og&vnu|x0ftFfKi78j=Pnd>X=K3g!@W;rte@fk@PEy$iR +zbnSZRwx3P*`jqE*+CBFjD{j5=$?7}hPf4YKP;ch@MRTIBCAzgNTE;T8)^GRO=5XUqnAi#>(N(d +zJ=MN@l(Ky&c=T>qODxl-JNGoa+_DRNaXYN8YsVN_B%|z;8TStQ-}I7-*sUL}0+2R- +zosJGGkvo^hP!7^CV=L>zQPLKeU2~`E!?zOt;FcN1sS`jc!zi@Yw(^FJ;A72~4KMR> +zU!!*^og-)j`+oh3kjnAGmoTgux*;GvB>OtCf5%vC)fI0uODbd<{M&#aVlbh`KTh&D +DSwXl> + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0004.png b/themes/bgrt/throbber-0004.png +new file mode 100644 +index 0000000000000000000000000000000000000000..687aa8bba7e7c470034487c5818c825a6a6e2407 +GIT binary patch +literal 1570 +zcmYL}dpOg39LImdHp`3*5#{oDB4Try5IPRVT$Yff8ymmOVXSTBI&(Q)c$9}sGR@^U +zDB0?`6e=qz>Y$D__jV-9rAQ@0=S=6E=X{^<=ktD^_v`b#zn{Op=L3jds#~^i0RTXi +z;O!A8SHsOxhRHiKCFPS`5OnWQCIG0QHwyw>;pxcD{VdPJEPQk<2wt}% +zz%UsRn5bwLh8~+ti%(!tF)S)b1DO~mJvuH9Wc;UAlvpq>l9Khik~~UhGs=U^0s$MW +zwFAc58e?N?Xl?C;!#UYGzJwmMlFz7b&ICu(Kmdz%`uE!L>RYcPCr}4$;u)V<>zEZMg~3*w2-^vTjlm=$ +zCqist*ZZc5`BsJeAQ~!6G)3mQ_6?In$#m@og(Cj-q3pk)iJcN@5dCMvql<0_8{NBg +zV}JchM{0}aq`r&rmA#+#;xiQbk16DRFy(i-qovXlH;d$DOCh$@qYaCLp!DGe +zfW_+lPiPdc)LmQ_totCcc563kq)dvF6r4_N@P25pa6A%~E2t!d-dJp>Ak(&a8pN}6 +zm%s)q#q3#DYp+m)j%GvC6fgNtA{L#K5G%!(gQ<$-rw)Xw5;&=|+h#>)OsUnJot>&R +zAzPE~!G6&2IB^QehIPQ>IQyhWrRoN=7kZkAgU?tj$U1=hW;@XHF1Phh-`y5xUz_Qd +zK^KupTZi)T8@k1fvJKI|XX7MDlB{JMjvv;}P?~tO?Ap<6gA&g?#0^0uZOx-WgtB|M +z$2XmzM~a`oG!2&8RI{q}3PdqRp8RHKyE}q=CIR{SCSkWVl;5i#*^q_1Xc?9Gys2~` +z4h$`en%_wrU*CP)k5JmL+tYbpK_E33-VmO;&cs{YlCd%E?{~`vA2mMXWIP%ePI<)u +z(Tgs0ZF}ndIk&vjC^g?Ii5E)3j}#W%B2mP>UpSJRB=nw8(~nmz<{UH~QzR8#xmGP3 +z>aIVOu91ig-*5R60_tf^!&Ay+ElhkrtjNyGDB^rrAJ-E>0a$aLv&AmdQUA#N>B+dF_>!M!V9wSKL{gAZdYTmqy3abO6zw;E@S%IetqHV()dkx<^9+*w{xAaI> +zxy)f0MYOC1R6huqvkznyR0gN73Pc)r+AsjSW01#prQQykkKiDT3=h&wX}7r38c8EFUNa|5G><} +zbC9tbiN>ePO{P#Y2~w@5UUc=Buqr+8*}b_{vjeFYYcq>zQZT%D;_mT6-(9Z{(XtZO +zFYHRMjxSGC(??d8rE?t{PE_fIoTL{WhEBvgkx9r7uXg`ytAX6f_7eDxw|jTBKNk?X +zW_JuNdF8r<4TjLxpVVl+FvU)g1&C(!hSRN%15&f}`6fqmdfK`ov`wI!Qdhq!|KtFI +MC()zv$MCGb0Sel;hyVZp + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0005.png b/themes/bgrt/throbber-0005.png +new file mode 100644 +index 0000000000000000000000000000000000000000..3a56beb7482ff40b652972de1a4b8abf25a3cf2f +GIT binary patch +literal 1585 +zcmYL}c~H`67{`B_975!oT4Gw7xJevdk#wgiTViR4Xyrk_RZ@_Eyz;=S%QQQzR8W^u +z+tH1*($osEvID!E${4SHi*|VoXeyRyi|y|0JMZ&+XTG0jzVGwbduk`$4})5Y0ssI* +z^Y;nTtHXRD;rh-`Ntw`#G1s5L2LQCid>H^GA{)KAQQ#XQ*v5(j0b)!%8zdfPvDuMK +zBA>@3MzaJ&Zd@`u{-_{^D2M^sAfL$RvN#-&_n#7?;y})!sI2Ek`Y4MdR*@Q)BkB)7bG$aX!noQJ_okOKmO7+!o-6v%UMC;i6d3xhhE_1t2f2k93C +zdH+92AbHVt&j|F`{AYGDGY;fC1V^&DdIiXCl=MqBt^i=9p!sax9bzoL^!)Gv(DL|& +ztuFPK9DetAse+$#Nr6cy(xu*}ITDrp)B^P;pSwU?=FZI;L(wXVOIG(T+$6%sQb!A0 +zUDZ&Z)A%STFtv<0)5kcbz4ZsW|If*5@w4g%?Ngop^uBoULR5)8P57j!6{oOcMasQ* +z4qK$XW?^%Ao)h>FbDYHPfUB>KJ@!Z~TNy36HM{9I>PLzSr$zX)c@;12d +z{)&^M3|h0=)*~>QKjUaawRlrG3?)aXvgInA9bV%`I(bUSa)H75o;Xt|u-n3Af{bOqeG+`BDNUtS21YcnQk2)Yb +zE=-x<*Hb)wy;6;U=8kB~;%iY4d~1#wU|~J-Yg6A8rD>hXYB80I>wet69a{X}TxBw1 +zC8;YZD9dR@?!Pe$g`NvYFiSO(8CVN_*CUr90y7sEZZWf6GR)!{#udL#9nVEBlbgex +z!{K{nuo3#~T8(j%NvcWpG<}SAL)*!C5(|NlYv|K$@C!qwdq1PrZj%$`CJ>IhOayBc +zzRS$@IL%Le&|na6sKpJgut!`|4u#<&+5-h+b`6V%A-eLLF;?t<+73@@>tWaq-X_m1 +zT8AF_&gAlRMI)&R<**ZuHuumv1#OKmFIu?o$eb5#Fvy#Qm^(9x7r#tj^xo_H*uBK( +z73jh7E3d8>r%)5k%d_*H{A96Fqfw;~zxy{pmcij@YWQ2z@yYLYlw9|+0g=(?P>Iu5 +zd^<<$p)0L?%aLTOalcwW+xJYG>#dD&6u$wO&CUhuI;w|Gu1^Xd?e08L+Us|tZ?Upv +zyGBtI3q9#PCY@@=O;rGoN55W{X5k?>3r$+Q_06mg(j|h7H|<_enV0W-u+`wFfxu|z +z3dQrIOJh0wqvJeLML#aGX)0*FYhGgxGGWG%f)M%0Lg^~4^Hq*0A?E%e +z)yE7JeiP4J(YhEVXsH>!yC3Pvi2u!`^w!~rDb +z_*aATNt}xXolBG%QHze$qq?X6N>>$q@cNP=eZ^Hld>*!f>lWZMc#KN>GruMd9w?x=Pl{A?CNp3EiI4Ry$)Ta0&1x%!*& +zw2vgKw9Bb5zuJ2`)553$rwRL!GjOk-u>)-ncU9ZG +z+%aIbFb#{y%*+u>g_sBn=fqWtHu$&|S=!a4@J#PGh~W;QcXioN6nnTfc!N8)?|2*7 +zXZuoCqI;bt47_2(_ScoMv7w3JQ=F$`;6*yDruzpUBW>Wc}V%q4fT7h8EI7+ +YfW*HhUqW(Np#Sp#nlIf)x+Nm(Z}Py(ga7~l + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0006.png b/themes/bgrt/throbber-0006.png +new file mode 100644 +index 0000000000000000000000000000000000000000..949cb23012469efb42c33953b5c79d5352ff77fc +GIT binary patch +literal 1597 +zcmYL}dsNbQ7{-4F;-%6iW>z@SG`k_7XkkC^|3B%BaVLf@3-#FI@9Z=N8x$ZzXdIqi0j!Hh)(z{u0031H@rOdgO|BOmPl*27 +z@?6O=<2zm3s?H+KE+~T$1fGLE!SOqfq__Apq8+=<77h@ME|u;!_2Rwts~|!1f}tG| +z{t1S8_o}fn>Ydl=vU%mW+H>|}ixYMt=YGO$)2r@>uPEAkw~C94J>_j}nSMz&=TXad +zrRB+)31v&)v`@lMH-1FqPEAfwdeVFtKApZj#aV?tv1bFL!iYnZ=H%aQI*?8q2906H +zwK*Wqa>(SGt-??ab4Oz9=9gv5Z@w5**;SemQq>P6zQxG~M~ovp*Gc1e)ckeHFqBh&P}cZk?B$O+Mu +zqNXp_Hdgka-7sr*!RpV^_nVBII>a015r0TlGTt$Fanh_G4fye|Vt*Wjem3Rin0I*c +zOeO@DIM|m)y19l+gcXoimTr4es>>j2f(KKyGKwKJTcFV1*NuwmI}*kYA?H;-r}A?r +zHqXK4iWe;eBRixx|0zGa`Au=W&= +zqS|+R;Umr3nVPA9Ib6Pz-)pXv({?~--AWNV87%Icam;<@wn3tJh}^>RUHMi0k{uc7 +z9d-K{q@ZC6 +zr}2(&u0$~kow78p=LhzY`V?rd6gl{mSybEm^b%`4vA2ap=R}a@;#*azLOQDYi7NYd +z?VjT4m!y>6U6ZbcXnU}9(q*3H?bf1Dii +z##PrRs=A@^+t{h%B3vF-&0L>o-Z~9`7Zwd)!&~Qk&~2uYa$c+$43+6?_A4 +zDmfLXdm9Z+R+Lw^L(89-4^#?i&b1+m%nR@LZ96kwqjTjw@BHW2c@`ZJkkGm*0S!6@`Y;rCe#liMZXA^ +z@}}q#RQiS=+AjKE2J&B^tKSye*H|_bBzrdxvKZZ;)Gn?%Ue|5qbNjfCBG@|kpIffw +zIillf1?V>i!&taCwu4NIf$8ias*JRVP>U3dGbMi3fQ-7u%ek8!zSOU+?N? +z7Id;xy~$Jw#bSg)P_80hFV?g^%9N=uq_7vJdSY$(YWOtjbbCvE+CtD>)D&g*!4UV@ +qaGdN$13l(?h0pS&lw)0lSOpG74CvlT0}S;4A3*dc;p+~^!k&JeGvtj+xbK?e>XFk4uFX%EIN3E +z$zoAxAdgD}8B9LNNls^_2>6L0KatL&^FSVl$!62J|0#x=OlN;i6+h60qEPEm1PY%H +zxMFc$APxt*y4mA!cz1XFr`}3f1P1E)V7(`b$)W>TEdJl^39FJULrnkuC|t@q^sLrP +zE`U6fb#E7BaVfw*g27^4PYvpKL(ps;?xoS$bbz18O`%fhTzfa{VGi$j +ze8=S=Bl6C;q~U_nw!7genH7S8qc8nEnepl|`O@(0~XmXbfAb#s1x-ka!$jQf55 +z$qIAu#skxFWz%B5ys6p&>t)QUdE$!n<&NT-8*Jm&M*dVBK7)Gfc&)s(xOei{RXe?6 +zv7^dg3Tw=9SG$qzzT92TT6;I`Q(R?aKY`9IL)q%ot3D#@ibPUV8pk>w#!zfgxp+uB +zWi-cOvspunmdQe|t;Z)-W^Z)jbz&4D>WxoA{_36{E>n@Dr!$LMWR6Sw#e?5>%PdMbxz6XUcsu=Chk$YEbuL_jEb6z2m8IIb->4$3pk~BidQc|oTcPeB +zUqbGGxIn7+)%IylOqHDV@N&8qZ9H1s_GZ&Y_GHS-ijEAEhgze;1h}=r^I-Xjb8`U& +zIFM-|Q#RJSSS7i-g$4T&Mr~xr2ND!1k4HyLihpyE>Mot-S34_*4g2?(*9w&aMa}IT +z7scp^&BV99dVN1ghnT|CA6{S-j^c1rR{ZW(yf|`mBc%_?O2{KyOTvctTPWGx(!v?Xr%Dp^XT7QX||=q7FKB +z=zWi+os>nt0%+qo{H`fy%5V2#D9>Ig@Zp{p!dm;*J}GRe@(@raBntMoEeCqG**PRT +zv&qb!iG>;Jt{(0ChhViX$k!#U=S91?7N_Gk)Wwv2#CPnzHaj(V;MX{~_EF&sUP6o# +zZMG6IEWd9pJQIQTvn7$&EYjsCYJUl-OER$1yl^UN@tEHrx`VkayX-`RpCCFnPj)ny +zUal>P26tPSf7UbI!V~)~j5S@lk*C<`8W)c=jok7S&*H1_E44NYxBvZ*&4 +YV^$rUwEBC7p#Kpd5km=$I}eHf27_eUh5!Hn + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0008.png b/themes/bgrt/throbber-0008.png +new file mode 100644 +index 0000000000000000000000000000000000000000..beef391370a4183ec221e131e4d06e60e1792919 +GIT binary patch +literal 1604 +zcmYL}e>~H99LK+y&7`YsLg*4Jq1!KvH2Q&T>4zW5c?v$LDi_C9@oly+wA%FN+-It{>J-2T0;WgBZ^wann#DlF;>bj5Zg +zTWCGlisz}dSXAI2L18esGyMjSwa|D421e5uG=LMwN{Wi2v8)_1u}pSWz|#&bN38Gw +z?SeGc|4*VYc+%k|juykeWv4|a(%4pkR60|u02b$Z^1PV?0DwkFUb_#Ip_%7*$JKbR +zJ++*>)xM3m)%o1C%~fL<%uZA~ap0~&gqK(_FRZyx +zpfHyGRghhPuhFL5ogO{0V=bj<{syj8>UhWTi`&B;qYN?@A`0{*G-s!h$~w^`j%X1)sMwVbzdh +z5A~FhV*Qhlc1p4fv|^27s_qg&aC`6o691B|T*rhq3Vb?qDA38&%zU-mf>FjH>hM`l +zNN%D}eGH$*VX~Xbe!ShgS+YUQ%bYI_ +zx7?W1z+|StKa73iRFGhBPQhv&Wo{h$i?oghNB-!^|dEK=} +z$K+ntES>Tw$SNCICf=|B{bGou&e(Bb#IVd7;@l52jUSvMADGTh0bulCkl2U-E)5Ae +zx(r!-M?p-&V`MdtJ@zeFPfv^j&*d{Vr~1kKP~CkAg$O-tk8PWPaRMy)>-42Q=e`KY +zj_PaOTZ*TSwIVE(?$a>WOQ$I)c%!Hx*e;LQojz_ssg`g%t~Hw$ +zWf`)*s|c$KN>^L*!KsbnmV{_dMw3Vt?1O*UZf~=_>&yEL*e5C1NNy-*Awnf}NlOuM +z^SidLB^9^yNONZIAQ%tus&vEUmm6^6L=10`u(OnRgrPyjC5XBY%6JAUheea$Qj%Iz +zv1&$78V58&#a-Mor^7;3=4`_=1^xb+`wKEpgZi?uHdR~4uIjaQ)t>CR`L(e|7cR+L +zEDvwoS$KTrLdC5d&8M&19thQkl%6LL8M=6>knFQYH^`%KJgAmy`CbNI?B8_R(d)_% +zd-wOya6NU=Ac}jle-uScl1zq8W5hI7aUj$DOG~}AeC-Xqh*vWFAw=(1{&mNhyY5nc +zR$<UC)oDkg*z(qCj|@GY9Ad6@tFT)I(&%$M_?Fdl~WYr>P{F|w*p +z>57|Nqp#pNmyYm~`bB->LIKxy&h2$y$;sRbTi=0s&%K^ct~-oxM^0t#QGr5fBeR{6 +zyU@kRnJy$OSuatC-(9^;YGcm6Tz#FYDzMC>S~o&f+9N`HMQWzgm&vq5r+m +zYjb7&E6l8Ez;M`&dUEP39l600eaT#GA#y75D=)bHF_)C5(2%|YPE{Apf~(W^BAlTP +z^3g|Q%tTK6?k0`}cUwwqhfpO-E{fbAV~34q?!QbUq~Qmj#O*>H7&+_O?$#5&$0Zvy +zNt}fHAGIa6UW$1jW{_(0XMa6v{o|OZ@^N3tDKg6M__GPQo1baNE|QBXqfvNkVvBL3znvVP3FHFMI%a#GD?1@Na>+oFr4FV+ZgI>*hD1yHM>hQpk + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0009.png b/themes/bgrt/throbber-0009.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b366daa8f009ccc64fa2356234e45d09e544486f +GIT binary patch +literal 1605 +zcmYL}eKZq#7{|wEYcVeqdA%0v(B*9NT1KHJhFZ-_WW?5DZ0v4}k`1e?P+}E|=;fA_ +z<2{l)rWfZ*NZO1_BN54xvdVC`?!D*!&hL4?=X^iU`Tm~2emQ$~`@z5#a*Jc7p0ofSI>md7*qfTgZ=lqkDJtdQn58ZS7F7fq5IBupED}Y +zK<({NS*%#VKZ3$wobra&JXXPVY8XtRCQ$*Lcvdo*Ol2XQF^8D!Okz)~iW{mqQMDkI +z_5YJ7j2k{=iKD{spV>z#bSfJW9Lr#;6yWHzg;!)^4*-Bh@i?E5a45H^KCwJ>UDr8% +zoNw;=J$c#s#n#pu#kxs+sqcCN9I4F1Zd@iqjwAW}j4WMU6wx9VYed4~0t@Yk{B=;@ +zYegoBItP@?eW?{K3hvSXkTBOeRer3G-M3XfghH#1rIi(W(@deXK|VA}Xlv(|eOu%S +z3A5BecktKI0ij^QWdd_m?LquD*1OmX;&maz56=trMgU%=9lpc~km@GA?>q(QKB}&RCH(qfk +zkH;hlKl}lNwnHtj9-A-NVmxnji0vC{Ve+@f0!416FD6W@YX>?+E!lRdBpc|dUE}i1 +z{>-S^$8p>olGsvSVrQLoGV>{Hd{`a>Nyi<&J|W!+Cz{QFg-iow%T?hM_gAj1xrL~_ +zR2gdSy|{ZtPv+g+TPt~A77AHfkeunU_&yoz*nctIU^#9Ku=eqUfcbzs^bqNCB#;?N +zR)Ph$Qa%S_xZsx^_~Iwg&It3<+p;Py04tRcq)arNvtizPD`;zQGBiah8KlW4vfeN2 +zgx7yuHCF^;-=X~<}_Nh&>(jOtVBRuik +zm0}b7Zc5Kc1$r&T1mZ +zdDjzP%4GqfR%R%Y;$Yhfj=YY)33rO<8QxWPy>ax>qP9l0(xu>(WgU4e%CK#**=A0> +zDuCxLz}a8izRtAeK0jx-qtR4ftY}VH9ccK>>DRcs+?Rb~R*-{qZStz8Xqzf0#R}w2 +zH}s~aA>9%?LX5!kc-qGPWM4rHdRj5yXZg$?QWHRMSX!x8oUP@}cVCvKRbUs+3T{ue +qMdmaTM6}GRtxJzMVmD#&y;Wc$yR*qQSfc)S0eIitxSH)T{J#My<=QO( + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0010.png b/themes/bgrt/throbber-0010.png +new file mode 100644 +index 0000000000000000000000000000000000000000..0312f62688976e840bdd3cbd28a0dbab0913913f +GIT binary patch +literal 1601 +zcmYL}dpOg39LIlincE?RNnzDAxox8f-B`rZ1-XT=%`ap(n~F@CTP|JK2}z;LoLWw# +zr4BM8_L$MBBT`zq)!A{2J@e(E{T`99yz=lwkI*XMbEKYxAm{Pub4YMW^T0H90s +z@eF_zxm=oXsIyO;n1w`(>2r_`06Hs|3kH;wnnLD|B(Kn9z{D|VAm&IsjYgti +z*enVrHa-c%q^8gqN0Z_(NpT(Fuvex#96{n_PR<{T-kg{pFd!cp3;`v2H&u4x8~FZ45EZ@2jv#5X50Oq;$kV +zp24!W6S7z&;DeTjAii>$2S5vg +ztpA^Mz&aBH6-f{_{GOdcp@MAW0TPV~DS&fyIaz3G3jk_wh@KvSp<3C6-35g~M(wdV +zIMmJ?a0By*VIzC(uv>kEVz1Sk>8J>`wMz9}f?)gg8RdHgCWcivoxf>@RFvBiHC7QK +zQ3TIDfjMUU57)MrDF!E<=2J%h(Bq5^rb-*<72C!J6%9^Xpi?Up;&1k!Z!1b1cr-J+ +zrS2V?J&-b9x=_$9PV8f#-FgjAMM_eJrjzwn4>0WI{Ke7mO63Jz#ku~DMGeuqP?gl? +zHOXodnFi}7){@iAHcmTur2JWW%^Mpb;oq;Gvv$!NRIhJV@lkn1R=t;A)(rZ5yESe# +z;^G|S-a+GDwNOR7=XNbvMc;`6FulS41Se;eD6VB$h=J#vtv)QqUQ9$Tc8a=|;JzZ> +zq(=Tl$zwjUf;nx((Rm6aFwc&>9Dc#qM#hP|)9aeAiq0BU>uqXtHQ_Nb0^3q6a*Nwp +zdYs)>y&v}^z(>xQf%M;gique~-{t^sJ6OIblyR_^@7ACz$!PL+GPCfm6g{I>f7%kZ +z=Zj>&>Si}JyE+2OuQaQP`<{#Q9Zy^X>y+u1GvcI5{p$trVL^Ling+ADzg>pyIQY9g +zcq}tq=J;60xi3aymVJb0v#^p053Q_4f{A_j>TtzTdEFN(fE}cGFWUb6e4hYk% +zHb~5Vh-qo8BH)M=_$GuVF)d6U6n%eo?L*^k{UXmkel03|O%*_FjJt9HQ9Z!Q7Co{$ +zUK;A{QJEiEE>AeJ*Z=$jKBopHYN&adhW>=m4nrP$P3c(2F^_L;Ey~9_Uz~UUfQ{^G +zod6F#$vR3YyBai=@X6@`LoPR^X9ySuvEd5sDe{W0Z6QN;mN)J`*FoR8?3YE!o6qp- +zc?Z+t#pgQF!(K;exbCj&p{rc7Cv=)KFP(TfDeG?YKQlH~)OEbxa!*y3d_788@@mCB +zrNshiCiye|63#`)}lPLQS*h^*lG&;}@!<;aXZ%>6m6a +z)PdX@by=A2=am6j(^A4)*OGl?RtXr}*4*^UC78P^pVNjq;P;Pf&YGZ*uQ8ubhP`n# +zJ+lSo4~BPl%s8gzS>Y(Q+6%#kos*3hUfuh9 +zBf+EaP?NWx4Nth><}vp-KcDyWykDQ^{r&v)J+R)-3uRzx0001rzLv&- +z)MC2edQcZ7B#c6W5UkxK0sy4(bm;(vMJA9*6?<$Hdq#3V0MF)gL3~ssmm3<67YW1h +zJ0rz-0Vkfzj}f!+Vm8PHMR<`QlE(vu|EXOV2juMtlReUfqD-cvXrW>duqO~Hcp?#R +zzrun@baHTTav)s0rG5a-7){RvL~=oZKydnfiNrDWyflcxf2|@6g&>i*L86_4yxG&9 +zJ7ft%f!|_BAlM&L!J8q7o`%eDkOu-{wvZnd1_~`!5F!L3DdRyM#Eqvp16mLi{{N&M +zfkY3O5JPy*uk8464k)rzOth)6!VE;^Wn-k0lR(}c;M +zLwjnu#{TIt)`I?W_+x|Jr_$kmW(TRRlRAb)lqVNt>EUgL2W6PKMJ${1Z1@s1Vok60 +z!aZ2|&X+%m2NM%M%E-|l#~M1iH4*X98PICu=nO-Te33GdIyU|_zPD>)%%v^gPh*pp +z=%r)~e!DtAKIv!uB%rSJj_uP+quy`P*ayY*QD6|KW>a8tX>uj(T4XP|kg_!ZJwZ4X +zQ>bhRA{bf?m|jszcQ)lJzNGb_1?lb~i%4;1Nq;n+Z?Q|_*(gu%MV-68pkUH*cut(b +z^=>qyqxh2gj=QTwmnX|out>rqH;OdrRvNOASIM^KFZOY>3)F7<8PUw0#;rW}6G4_i +z*3~KSZvBa8g`54WGOH_f4qGM6UxgyMTIC~y_!~~-ILC-F$DT^Zm5MG-n7_M!#nn$` +zA8^s%D!6wnKI5Of@?tZ`$_@ZNp;7^mY+Ze~DbT2bC$XOlHs^k&9&i9u?Qf8R+2l##HwEen5 +zYr65pMA4kw8RJ|jxe2Q%33tbh7vH>W6syuZNB>|cZ?&rT9iCOi93m&de-f;{sD +z@was*F)l;0SyEKifaSq?I9_mM4(wtqn3cafP`k1UMfu0S$F#BH=63nLGmG!sW8Ktu +z(ZBnxucooHu`=q+_H576*q13f=I!P^LBosMzpMB4wyp+^Vzf>T^6p^eqLGYCAMk(a +z{L!L^3xi>55umC*|Ds!k0`umI)xbwCc1uA;{_RQmen(!_-ukKW_Q7a@d1l{x&Ru$v +zVE}J1>w&@i^qbuJnhiZ#1ktm4$ldo`x-Z6!AXS +z=Zav|;ey6vM|;1jX?^+k?WNoI;&9v?4b4NQa2_>KNetgaz +z>{hn3c+IsA8Snc(g)e_Qs07t#Upn@p_L$9jcj1$FK{BSRzrmn%ZX?pUvBjahHt{XR +z|1OfADbJ9@-V8kYhA889j;foUcS%*VM@)sQNv~^AyR7byV)#|WsU*z?Yt_0v(I1U% +zUmj@*nW@LoDeZVSBx@d$u27gSQ;owj%Ijypal`QAIXynZM1hUy1uz7N3~3K>HbuJK +zKf@I=7g|c4ZwRAqH+JrnYm0tW>V^uW33n2sZjN|t`9nd65h?SlQoE0%;%r;>kmltX +zTD-Ol@AP;cw$a0J{}wjEhRu!@pE%2OJ}n{T?3=WoOf@Zey~?)&cRbpcWD}EAvewJg +z7#{15+)`;xuJneDIC_`2{_OHhsty_xw_|fyW&)UGGbxw6J}WTMTz=-j5Vyf@ms<16 +zb>?eCPHk;=#8#?LL7Z((4f+c%Lo}*s5n=nAaCT>t=( +zbWh5DNKvb$tqHySq@=fy=x{v)`2c`0S}hoGsn`TET?Nztfk!k81h7mF8^j)qX0yW? +zSU!(|jfxgvxhx@@6DMF|1x%0)^09nwbZjih`%f_uEHE}QLi7h5iZWS^qJ#@TfPll3 +zuy{O{V28rv$wVTVh^v^c~rbF!!>r|6JzN7SiZ +zHtu6oN~HLtv_=dXvnvltnFW_aG@o|0wjY|x_xrIMC3>~yG|oh(?G^NpK#9!XM4_Su +zCZ`gXl2y;&*i8s0Y}X{eIH6ihdDPrf5*PxV0l7T*{Fr+l7}kHRJVb74S^uPJkfMk* +zrJ=%*L%SdQn=Kp8MGFS^l=p36ZVj_eosYaVZi@DpFZSfBHItB!ME)6X^;j7vhBr}_ +zek(uBWSuJ`>-Rp&y;GTi7&fbcqsMzbHdX>bTCM4F`*+{PiOZ6&mqvx`%x_XNYKCDl +z`ZMSoX5q?o^I>L3Oy%T-ZE|3H8{6V`fmBJOVlqSE9CeyXx&n(zFDX%rZ&kDT +zYiv;JHPh!2KdY>e93Kv=(Mn*0F$ +z?Jv2WneiSzZkrnzsR$AeA=K4l^6)Tu+qJc$_TEW`;)i0@mQO?Shn7CXk~q?4oGi1$u^dztbPcoBMhOlW0^7vxdiu#Vr!i8@};cJF*(w!fr9}$mZ8y +zqd4g=+RbKw#L{VR>p{$(MqO{7LBNGsbUEmrmcC|I4zD>=?w_~!{%@rXFta8i$1 +zDwN0BH1KLgLzt?05U@(V&2q{f)3Ud}HQqw9jxN8_vWs>7}-o`tla6&r1J +zQ0LkLERgH^XcfLrqDPmlhMJNt-qUhwZd*&rp4{ph9P<9=tj-fA`selA=Kpjg3;lD* +zFQxfybruO5&Fb&eeqZ+YK8}($d((^4qGRiJ8|auAXVFK;T(WH~PPcsXDrIhOf&v&q +zkJe{-HaS!L#yf30gO}j7J-Kl*($u=mWN&(@tcIkeP_LucPxsx!n%8CB@K*|hzx$>` +z^gPSYxo{!JaiY8pj!?N*iX(w;ujT +zb)4%SX5gGs*Dq_@g`A8f1oU{sX9SvMUwkIio +zLidv?x^naYMYV&Zq4#q9f?@A$P{@>oEYJLK*Q`_#K>W5nQzjf@+k_YlsPzDO~WnZ8H%4UW=u*%X?ty! +z^+yth1BA9Z5eE4Qvd5O4U%~7`7u2r<8V~qkqaJHhxA_9k5VF1 +tk8O410sgeR09(-E(>kyfAxR8e(Re1SE_W!PK7>9&fKK(HRJk1y{R6MZ$w~kK + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0013.png b/themes/bgrt/throbber-0013.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ace8764887795c1dacd9060bbe7d0e1ea932abc5 +GIT binary patch +literal 1612 +zcmV-S2DABzP)>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdH99pgw!+xU0000GbVXQnRB3Hx05C8*FfckWFgh_a8`gHO00008bVXQn +zMsi_oWdJcVzi^q-0000HbVXQnLt$-Ya$x{NVQpn{VJR6m&&cbW>wx +zZe;*;XmW32Vr6n5GcaawbAVFIxc~qF6LdvbbW&w*WMy(xX>DZyFfckWFfK4RK2yu$ +z0000IbVXQnLwRFtWpf}?VQp}1Wpe;AGB|#g7%Kn(1m#IYK~z`?g_c2UomCKqlS>Gp +zgiF;Jq=a%&5G|r0-MFdRg$wCMP;eo*5s>zdxsFN8-!6)oq-9W7~5Q +z+s3sq@pm#^qc0_hV|8zQCVt)l32FJh{?161? +z9sCA1N2AfS&3}M>?-jHO95_c|3qA#ogXh39Sg1f1B2%>Z0elTE)4&b%J&ov7YMnlT +z6pyC3ot^|wfK~7xI0`)63G7zw-WE6noXSt&9Qclj?BzVxJ%QwG0(IOLez|5?><{oX +zxCM@YKfzq0;yn=rHB^S}-t0)GP!&Y_Ol7-3Pnl!R-E8|PHi +z`m|4jGc>lC&RG{(h$95>J`U_$a{mHfzOn->==gsGj{gQwEaFui2TsLDD=CSqoyt4l +zD)qjiR=EmmW8ZxPIPBmh@FZ}o-lGI0BYp*!fWTd;Zp07tsbzXdQeEJ_lZnF_Kf9ijAGJxOJ8C +z6?5VJu$}-%Y;o6W$M-YvckQ8tY>2y7TuX!)ujM0fUO!^@PQvrlZ`4PAkb@&)A%mR2 +z7O-o{Y=G};hh1@eJ?V8d8cFmMAQ_7)PC`5bCdP|09u341W&GZIMlXR|ZO2K*U&Ot3 +zUmNi{E&yvdg@}zF^W7L%{?r|dUI$LW&Q0#Fnnq=AbTuyd~X= +z=dO8OF3KCIuQ(4z5+(_KB@kT-s+Ew4J&Oc;UgeO0DSlsylq;xgEF|j|Cht^&rMnbr +zwf2xu%_--XO8q}~vMd2L*q@P)$KSqVa_=S>OE3l0ZE@GxBX%eg977T|x|N*vaaimK +zxCSKSqjVZ2W>%N%b!4+gk5Tv-^)E9a?fXhPQdj#~ +z5>9~O1UB)l=dkYIDIB?bNtC;#CUb@gSWu2d(ZTr6q_xChxa1^$LH~9vX%^cuDn}e3YVQ>_zffb-{6&wN!8Fg}_*?S$_2D9WZ +zoUefH+Rf`ml%I61b(erqg%JfP +z;up+&$`yFPj>VJ6x|7EDJI=1D8sIr+!KdWgM0ai4y@dqg<4}L1j@;`QYr7vLZjj@( +zeG8O3;2-cI7$h-$HMwq&$p#MyEA0zh?7d`Y5@Bf?KgDVO3PaBKf?}(&AD7sCIFM8JA{d{d+?0kyb +zyv{Z#(%Sm6j!s;3{L%48cT;E`ZEymzpS=h96K7sx^~KJ4(fB4wQa^7o2i|!L>KTqMs8X;j7+TN0D +z^lYa*KcmHq1%3$@k0**X7Oh5TKLtaXAR7dd6L?8+aUjoSC4MJ|FAQn>%gF7fc!=>p +zkoW(SSiA=%w5`{OQ9rX&nJkd+5*iC}j0zBlq^u&Rgoo<1iIq(oi)#Ly1Tol9ZGS%bveCT_1;5qzfeo5 +zC=fMfz*J|u;dNWCHnOaB(}^BzN@;=O16>VX$*{I2oAg!;mVmA +zWul4UE;NrQXdSE8@1SOD{p=~Z+u#_b%%{4R#umEU`~&Ozt%}Oj2(Y_@vde4eF0Hbq +zS%g;IekwRwVxfUYW29m=Lou6C~*?m +z<6c$Ns}-!MXlnnu#Qui%w$-|aFJ<2uG3Y}1&BJrUZIh$VF?_o2z0R!9%RHUtnc4B= +z@Hzf>ZT+6Yt_!Uh3C|ag&tt9r@iYVVrNj&7w%6ls>YPVB%g)=5x1_!G +zJF_~eMb6k)cn7H}M!~S^N&dZBt>Fz9*SH(q* +zH=Uge)8s6ysbaP2p=-x)Yq#Yrd+wML&D-deZbJ9z)IOB1L2TH9fx8XLLS0dB-_TOFv7~L=_Z_Oq(a$|6&!QON{az*lCdQ9lnH)NlFzPi#n}?nF~#j +zhS9QbvjPTeFL)xqD5zV@pY6%5G|k>C=h>=emb_h>0$Nsvq&V;cn|B8r&KGwtiWHYF +z<~n3ftGAGMpS(ZmtbNDXOjMgLfP>cg`(zuPsfMHg+jpKr&{%`op!Dq7gg-XP$$;g5 +z?f)E;hB{y&ZJGU`Na>3~B1rdcwM4_bh1pHSf6V(I$JD2c9yZ%WaILXJp6pa3TP5C^ +zTxjfwH!{oIa8JjopD`dF;19iTk6t3#^r-sgSk4x%^mWFyHEJPft#%qQto?{hWp}Tg +z0sg2Dd_n#@?8imHoXPpp`GH>Y(u#sT%f63GU&4|Ua%p-e7!eVy8rC#;8$OkxYi3{p +z=M(2r#w|atc+!BmxUFn1q0{V=1O44@|6MpkgD#WOC>T@cz?GUFyQ=m5jJWnIB^mx_ +zqFp%yk1GSkGhV)`OjmwD-8z}tYp1DX8k!x+jH)`_t-KG~iSia*5R<%i$D1#|Q=4~G{7 +zx&J@uf_JAx{>_K6`RD8mIs@d{MkFygumS|4XYP*}CjeN{NAdTIj5W?F3qJC7)Y@-L +zF+p1cXs52p!Va5#V^_C+ALkO^wUwjiy0qtzaBZY%+NGlFqQH`H +zyOSx7b*eCbxdrK0UB=P5toF(A;0+zrtem_zIjomj_#917*KQsVkJ-f}EDpVnpOLkF +zjH(%{2+=xv$Ls;OzV~`GTd~(3`B28Ill2W^qwBP5Eo;gswM(0t^#97A)@wq!cLkK+ +z3_{1Zd`GiETo0MMwP@1QwfWZyC4FNt#LmwWqC9neO$N27DeQc;-MOeC@!8$3mVs&8 +zn;^3(jHk)_At)xm5P;FOUF|yO@f{NzQC53A5DY_P+ +zRBQ@b#efb4SVTyk8mhnKRK=Atq~yT|2z>h>dgFyR)|w+bxf64G5=G4P)wjezI&0UW +zM7`1d84z)>HzM6XO%N*dCZ67YYHo7J;_v#`*fpbY`(QzWdR2hkRX(pZxoS6II +zh!+PNA!C)}d6RgZJ4IDhZZy`0sMZS=(V+o3_HJEc*AW@>5Rz$NhF1wLznk3q>g-@B +z6k5NK2m@{h7PNgJ@aqprj@qU$RT`6Q}BglSiPZF8#(a^NZ}- +zy=az<`A9}pBbc$1h~b`=MdT4dRkK-;O^F=&Hl{+JrPWecyQRY!4UvXjikq%#a}N4e +zxJS0h)p1;$fwisI&>zNcVp;nX#O_q8l`0J@7T&j^@-LSlTVx% +z(&7}j^mn-f@gr<@^SYq#_shOz`#fIofVu|r6-l3>8j(BNVnqV(s}5m(<%G)KqOPfX +ze*g57{n(YZZOLNI^)D>50Jp)1p9;I38(K;qUqNNCs=5otiGrK0KK(D#jgSR#t_ga< +zq0Z*b=j&sV&vo|>WfRk|nxT8wo_YPS(lpv{a)-NNJ1uP;HluTm$Hi>p*e6)b8<*ai +z*I`O~k=vzJ+sEZqP6ZEgHW8$uX>EreY)C9%LH2tuGed)P9IN8v@{1^{e%~$YjAP&M +zHA{>(wI-n;UGr=E`lF8T1y`YSkkIA!m7}OX +zeUnQmKE1@>8jmkQ=NrVwte@N~+w7yXF+|#|SU*R;9N0;P6v`LsoJ28Uc&BblY=cfJ +z0n0{Yxs@vWv&s8{^BW&$>UE%USFSG)hzYAkNN2Hm-$fRcqE;0sr^dw^rWPWKyjC%3mmm(i;$`6G( +zMym>YB)m?mJmts=cF6$l>S#j;DKXsgq`11`jIYjk#kx>jm?_e{++bqX=BKlb?W +z*?IAWqYq7|t$wa=-6kK~Hji0YnQho99O&Yy@fhp3i%_yswlqGVBiJ_FI +zQwp8r(xXUj;gCv5W8tJCa$S;~pL))7zR&mbc|Xtl^?5$u_g`Q6ZolowWv0sj06_YX +zhykElEfx$4cF~CwQ=q^Fq(4LefIu(S5+GA)44PZSUV&n7RtN*YGWlEvmd)aFsdTJJ +zNXH&yiLru^<6M52n28lL8C-@4D-y7HJcjT;b)cmzqP?t#*3?nR51f^!r=*6 +zJRa-hY=y_WxwyEw;7V({n!y>p#hE=UE(5^f+ +z6Oeai198o&IA8rwz9sG(ALyOGB>VmG!$|!@=TAqgpC`y<2-SmB$C13<*W&|x53XL% +zh5LVXP8hEr+N7xrZk?Y{5k4P%*K*l;vQ;^$k}RI1;o;%l?TNLDu!0`Ke0}M0R8ReV +z{J2r><4|Tl>hNFm+ +zISUrjp`NX~;^0l@E-gD|FcBS_Yww5J&7lb&4Wt3{qqBsE)^B6>xa-KJuvT2hthn_7 +zX$ZEYGO@>ce-zy812pi?jN4aC7xZxa2@}#6q}8S(qGwq&v1L}jI9gQk?v|z((2WU( +zS`>2{Zobh;)L4{jSN52b6z=)X^w?N1EU9Tc>jm8B<-J@H&j#5RyEAMZief$1M8kYt +z8PV0+re6jx?XfiD7DJRRooX%Ixr$#cWku8~*81VKqEE8>+GbZZc5^sI<7!%vVk5f0 +zFwORoSu;P%R+(9Grt{;O-lE{ZO*Z$e3FK!q$#B<0dT57kdr;`7eXqUaruDxsAL*?* +zoS)PQ$Jd3>C2WJ*JBYo)=EP4^{Lo +zEv-Z9y@s!K)5+@|BQZ7k@1*(*T7qR<`o)%Om*5eWahz^egih~X5;vbN^-8&7ezI|I +zZf)NZOs7PPEx$cPFY^HozN|v +z2zcW9V6}mJq#YwuG7k?7RiWd9U+iyucg3`Us$ThQ2ED%O61OFZTNxl)Cmcn5Uh%#e +zZDtwsJmP7G-H~esdoPkl7dTP`Jt)gSsof_#M@UH`Wy!?oTo)p=?y!gg_ + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0017.png b/themes/bgrt/throbber-0017.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ce792def5cc6aac0b16a4ac9d029aca472c08595 +GIT binary patch +literal 1572 +zcmYL}eK^x=7{`B_%EqXz!<4reDIMFCXoN+XQ>TRTmd5yDY+kl0v|L6B%S$>5qg7H# +zr$XC7VI&=u$ysT#v{s?aTi(LTnYzw(p6j{q?{(du@AZA|zn(15eeQ7BS{MKTa1WxJ +zmr6~RN@InpGm?|1R0547`ZEAP6S-7sKuIY|HFRd~@?-9%P(c6_8A}5(Q4|_2BoxD- +zhhicqOiUa#i58o{jKnY_K^n-wFybgNF(CavwI)-+m@sl$r@AT%wG`zR!UO>uEY2Q- +z!(nW;nBZ`DTU)#>R?sSWs`9K_^7v3_Ab`cHPhQ~2dy`I*qIC6=5sTKt3 +z|37Js-R9x5z*J$xkL;vSD#$SL4xz=V6u{Zorxc>B06@Lb!;RqM2R&cd8C`a8Rr|SB +zzg5cJi4{ak!p^t@{G;!#)jdC@sb~5fZY}+4oaqoh(%NW}d8zK0c^%@j?`l4g!f*2m +z$h>kew50#*Lg$VyE+e+T5I-*69w90%juElres4meB3h8KmlYqYQ;dhMD=dg=~lA90&00gHr+_yJpV&f +zusq=|^wvCDvV0ce;iyiXi@zjQ-yk&lYQ)mEetz~%8|Y+~UpnGqP$~ToEn9P!jtqR~ +zEn9)DXYk9gm8RQI_@)k%*g7rR^%eu(&&tmrg1c*jR_3uoU2H6#8&!Md4Lao~3?3cE +z=NFL&otE>SXT7zZl4sz{bBkN{D*PRCQA4q^lEJdR6i#(Cq9$r&v=&(~d*dPm)BVz{ +zvNWlKuC+e(rHRE|n3dq09#_D3X76#aX*E5>cAwrF#|uMOG?yJm5T7)Xio~qnjiqW@ +zl}Bb)5P#_p?~t@=3U4}g;l(pvXtG?d1t~PMhf2+$oO#59hfUEN6E{*zT0Wbfoe5~M +zm5nsPn%c)KB*V`3xop9&tbWK~>Phn`M~AD_H1UAVothW>i=GAuvPTXoPC`?Je`SJs +z_<~dk`WtS1W|)_z5U#Z!4sy|h_8m$)(4MWvaza#}I4VO}dVG0Se%v9?BHUB+h>VPEs-aE!cHjZq{5If`p83rCCe +zPiIc9C-5xMPePOt@LG2YE~!Ab{tdln=caR)$AU~>>QC(yMLGE|oBC6yKD_oz1eh3*_o++>4oC^yV_01KX%x}oCo0zPMq$8_njmL&fE&a8T_ZA;%@qE*n +z(H~2bnhWE5m>-;q6$!HIy;nBxtG;9s)T0CAT8YL=X#0nCXQF$nM8&=iHNnXS-rd3#Tsuka4)}w6 +z0`VS!nka3MP22xeUt8YW48N_dyVAl?3{ssZ*upBA-Z-Xi`K=cMd=od(AXcq8E!{_| +z?%QQ{@pZ3K#zUbj9d1Fj33Kpcp;=X% +z>y<*2$-+=&9*nDl66COgS<8oozOrNA373?xlu^&cn$E{VgZi(K8fME3l2iN{>2fLV +z#`SiV+|Q8oP0rgsJ=PC +NW7j^n+dG5P{sq3l&Vm2{ + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0018.png b/themes/bgrt/throbber-0018.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6423b95104fd1fb81420f5cc0cb5b1baebc90726 +GIT binary patch +literal 1601 +zcmYL}dpOg39LIm#*j!?6hZW5wXDsX@oRLCDX@%SpQM)kLjoE%2VHr+QlpIDEN-pI* +zY9cA3wo-1V=_W;@nnXgB$&xemoacO>@8|P=p7-nXyuY8nzDIn#Jv7wTr~v?=LEi4} +zr%;oXQh_TvHznn>LR8t?gSh~puDenY;B+ZUVY+}@gTQUkOa_3Dif1wKG0`j*Eey}) +zgyAEjK|GszfEAwzM&ZFI28+SPbJ@{xaSYCXilZ|bapCmL2TF=4)Jl{)4P*ee1R@Df +zB;sv1m=K9h_V!Npgr+;sdlWNTD>DJnECxUzIQ_gtQl3(sg@UR4ScOAVKqASq!ga60 +z(_Zm@S6Cbx@KbOEf^BZU$~^_tTY>&zj5r1WMseclbOy&{10jOV<@@zCE4c0o_fss$ +z;Qaq2j^IEJkb?@W^CSB}7?Z&@@u#ua3I&L^q=UsMD*#X$AiKK-1gQ#&dvgW5Q5})E +z!knN^bIv1jc+Q`}IjU|r@O7YCrpj{mci58p-o_~Hr+2Q|>~(L9F+7=@7i#Heb{FNa +zida2f^A^0=JN9ypH{CqFN`Oooo^$R!aPZvREtzEHFyrHUx6ht`Z+1O4_Tv6Q2XAJ` +z&1aZJT=r4dF;rtlMbFVW5wCxtDGjWTAH|lrRh&Qu@1wY^IW}LvyyIFhbqIMj(`&{e +zS>+ibOI-718F_F_yHQiA)bx{4j~QWH%Q9s9sV$=vIu9O~wVRy_w~p~xH&JyuvW0K{ +zhcf0g;-Uymecbkob+sIJ32)_!6lq_9Ol8E5=Mt0*w@62~)|Ee(x>^O3mO3lf%vw>%+4}E;1qK0ZSg@wkMP=EoMQ`i +zhwu9OFP*ml^tle2zZko4e!fD_1lHBjIX9=1g0PNQ=b=n7s?DcQ?Rw-9(YI_s_3R>d +zo{4-v7A;zLWdYm@_(=p!jNdL*q;xK$M70K-GN=6<=8+=&M>~vjk=g?ex +zqKRJGzFwYInCv`|kSRZzqU1PX+Iq+cIHb2FNys!!Y9;GXo=n}hAh$?j_?z=f*Vzjz +zWp572NNR#^uxV$xTVUco4y($cKp7iZhw^keZZ>c^tR&6QI^1S613K=Ro3~MX)gagq +z3u!Pe +zHS&$sPciX@7f}7rFllLLcsG}{S|O7IX01;r(&4pK=dEQ`q-l&S@iH$#i2P{z&E$s4 +zS^jM?cV^GM_)7+&s!v0i*WK>EwL=z*pq4Il`}4+n^#-L%C1RLKHISPOzXi+wtls^r +zovLA3gJ6knnp#{U(wR}0*`%Zo_w%Q}LP;7D=x`#>ynp8V*)-_4)?GDa{DIE;@++n{ +zG$%3Ucr?s|mA$+zX_@%`)iQ36PK5c#qgj=k)NTEq8(<34HQx<}VyPY4)aPCh#PYCw +zX?}?3J3BA$SzNu4Go9CJ{*$MX^ +zR@eINUptfEjTl)wvekK2%eZ*(vj42#cRe+}o{%A|w=^MtCg1aSkJ~)JA=tE6LQCna!V)P6BwmjP~WQjhU|7f6Slks1M +sHyw}tVF8gt-stkA?cnZ`rS_ghWCxsXXObb9R{Vhgd8@a(a0@l_U;abPJOBUy + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0019.png b/themes/bgrt/throbber-0019.png +new file mode 100644 +index 0000000000000000000000000000000000000000..45e935927623eb5ebd3bbd1f5f6aed9207a55c88 +GIT binary patch +literal 1608 +zcmYL}dsNbA7{`Bj<6^8xBxmzB4OgaI3MER>1u5mFDHf)AK}k(+a%twJK(=M6c-f{| +zG;0;QwW(QI9z@B~)-bWQ2ptP6J1lKpn&vdM{cLAv?|Gl+d(QXsobUVm^&a0H9gak} +zA^-qDG9qZPpn5JB%mM7;{QPN9;KGOmF#tF^Ef)khrE&pHs)Wvx?8xSF09=-U$H5)U +z=JC?fabi(AE;Cz#6LJsp1X4*BPLjppal|;WFq_Zki2l<6HkZTCU>D!B1EXA)qiAUo +z4nV{c$T$K4N8IE|AW%po3JKrVZPJ4?tCnY&**p$_$5Z~jge`Au>o0>0_HGqX8VCtn +zQZ5SnKo7O-Z3it;8t|_K;PJ%LN3b3cqL*P@I)~2zBv~Q>o6Qk$}NLQnw$k$j}a#SZ}No-k-(Ocwm}8g0&n +zc=WL^y*BDw8zYi3SRW%$Q>AqD56(=xL=<=9w58<=ntS!~Rc92<4wcZtLiuyiRG3%9 +zirjL7L%FMOh~e&{R-8%H6buJh&0@o>b|R{#7Ch0>(KSBLcS{mxJFdqy^E`apwEG24 +ziY#L+^k7tmA1&A=;9x40yemzaz8qqp!B_32Ls7#9B>VNENhJMlW+cGz?8W +zy4lrjcIkSh!98puRJU&R=?tV9Vw8`S>WZODsjn!{T46WA7-I@YV +z(vkp7D&Z~AaBj)a)@lA5v#@LO*#d0vP8D13WLD^sTD5_hXE! +zTN_WC1-t9$gV*d$Kb}XnTTA?Pa8~8WXVbYUXTsUs8O#CHo6R#@+LiN#e(%#8er23A +z^&4eyWX7a_3;csCIdd*%TX%=*XECDL3ELQj_p73?CJI9A9WwzS?i{f0nMfF_`khr` +z9>E6RHWVK$lc>)K5f!pKvfN)8y&|?netq(HQuF46@k~!6Ce?=OYxu=S6T0X?*5z78 +z;4=R4#E>bq_qgnmj@DZhnbgy*_1HU2YGyXGFirBiBkdUuCWivDu_!{;2}@_eD2tDw +zRG{MK`15L~eAV&qE`3P+c3U8}MKnV?cw@ht%LmC{jw1HNfAwurYL04F)^pPQtc6hV +z8iF?_Ga(3GoUKzq?uw^>L~bKwU-5IV(~e%S2<-FAETfKPIZYaQPnkAo=;7XhVz=Ko +zn%!9Acgl0+HP5FZ_Z!xos@vHRG=*(+7>@4lE!)~pJ9YpwdU!~EP>Act4Dg;aw@v@MZrgI +z#g(=GRNlGk>%Ye0^n(^Ox_?|T3{Pb@4BJn;wCS)PxdxhhBrK(`5stcZC +zrwp<3tkFF-hr;HJD4&v_=isYe5=W&%H?C0gXT}%PwbMP16W+Wk#h4zK2aM;|-IW=rU5qjZ0{*I%U +z*Dq=1RZc<+yaTad2PN*M_;IR(#uNDugS<6sq_r5Ad}!ZPK%Sz%XehIS!gzy}G7H>0 +z9QY*rNX&zySu;g$ef0&-pR_MBP+D#nIoZyjFzCvA`;6~Dcs*wORtt+&7uq{whk>(&9A0>1Ai_m`)Tyz +ylZqQ_OI6YL)DWxfZQuDH{K$lL(m@=3_Ajb$XmVakmnIzi3IPT^n%4AjYVkkv|H85W + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0020.png b/themes/bgrt/throbber-0020.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b84b04dd859b199729c63df17ebf7cbffe8f3185 +GIT binary patch +literal 1583 +zcmYL}dpOg39LIl#2}dqtTPc>?ncFTRLwGEglq8f((S~8!W^E&ua#z^| +zacx4#I31QHky~=vsZ>TR$3fvZQ_p$M_xXN4@8@~HKF|C6`RjYb!`($mVXp!J07|Y$ +z9X%zA*r{D$NoTUzD-w~XAN6AbfFfk4q=27_;S$rH<>bq9CR0cNIy{m}LSG4D;(UYgEE^eO-k?lt43#l6TQP +ziKn{b9g$cJBJfR67>rr^*seb$P<;n_1(RqbfECV&3<@GK5C<`#bY_C5pjE;lJKR&U +zAc^t+lPHX(otNOX1gm|`jt!=ems(11=f>Q +zuqBknf`!l*C3a=ZfwiZFHn8us*QeiG4a80lSasU$ocm2p7P^Ml%LNbLca*TH8@Ps# +zAK678(%s)6^DZA5^IYAqecKgtDHNa@g>{NFiz>5dC+}C|b6OWjW4QjVm6wXpuJ-xC +z@QOuLi*$;*xf^KI2FVWgiCt5Dj4aiwe^tfP6$15d^f4eP(Lwa~p3tDhK`nh^B-NUH +zLCO^+7yY2FI|NF=N7d@LIw^J85{S_I;M$}Jty8ZXryZ<%_aB2rZDz(w;n;020%=1V +zh!Ff5ckB!sTny?h6z-G#&P1oeq!KFRCr%xkpd{!;|CTwfGs)C}3S}ml7hb-2kBo7> +z5?_^<+%tD(uzKi57;4WXZGYYJKYdNinrU40BG=96(hOcp4xM!1L;zwg^gO@x<}Y4* +zdAza2L}k#EgdrtDRqY8{&LpHQY5=4q+jDWIJS*|6u-dBM=ku!Z-6!L(*FatkKiM|t}fQV7E@ +zVKZN_L+=jzO1aV?g(3)F@MWUI`~$2uJ-XOq@G+EdV6DFC?r7BcYf^^Y-3zN;boqjD +zd~tQd?j+qu3hU2&2tcvrR@xpJS`eqdA<(kLonONq`#CVH<_QYeIt{(B&P{jR5U|RHlM@kVHIW;A*}WI{;F9(7FTY%th+3VBy0p+cf;_ZlwMPU)!zb=EA(T$8QERvz`W%+p>2NZv6X}F7a|Ew`Wc9IeJKNMtOS1;fH$90-1R6P2zRlVYP^wY8WWM^~sv=^_Kh>$_kw)jLp|c-9gC&n%x}{VW7Mn6cfgN}F +z6Mk4Olf!sNFRO?jF(zoJU)c5t@KnTn5(qU2vt^heG_o5}!wYnG5!GAF?YUi-{Hkg4 +z_`0;O+#AE5Q-N)3S4w5=InS4NMJ9CQu7VX#Z(kYjkX_kU-IPIbjDxTg8re0YBNzK{MGz{e#*6bxuWK&3Mf-O=2gesRjyk* +zsMd#45M$=txj5@RWIbbH@C-e?q*~#IXpbI#y<+!io|-nP>315r+b?X%;mi0O>}=Ez +c5cH<~U;AcCT{$u^$&UxPI=MU6;t5Ir0u~;_O#lD@ + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0021.png b/themes/bgrt/throbber-0021.png +new file mode 100644 +index 0000000000000000000000000000000000000000..a64932df50150f1ac1e29b1d181b80430f802459 +GIT binary patch +literal 1602 +zcmYL}eKga19LIm#JZ!|pT*|WumDz)bgtRcTYHq1csCn8Qn{BqX)lAq>Nm8g=vh~QV +zZc28Ft5n!+6BDj(EfOP%+x@9?&pqe+`M%G2zdq;v`F#KR=4}fn8W~s_003Y_ +z3JZw<)nTdNdf?4ZOVfga;D$x<0l*NsR1lz4wj4A!3J8&cPzH+zpy?bo4V}zjv*W2~ +zK97n{VhGS&mWa*SFQB6ZbQ+t+NAtOiloT58KlMmp(Nca+$nMYqqn0m4g~SVJ01kuo +zMPspOoTmd8>*ww5=Z&dR^tFLKCQCg#8EhJW!T5bYIPBm|2p(kcZ>#X)L5Rbq?WouQ +zdZtTWFlh1Of$!ph!Qk?H;YtviFTovDS_%yi(0QDM1RBr56O+j0OCs9tfgHKSBfte| +zy#GgfV0=hBzX(8V_AOgPWzqN!JL1_~PysB?H}lN$wE&>gPYT(zGZIm7wu5Wci3LH4ELpv{^qg6-wjl-eokTLt0Qa@}4JopqG`<0{JH57E(^g}NxhHVobL +zLD+kuTXARs!-})8*twxg+H;UoY8-HGz2|giKvJhj-5*XSlgIy5sZ?cj;&9vj7wij} +z{C>X{_Owbim)|w&d$&KNck?iNSzWI9QmEe8s>*>@XK^~MjZxJfoYNRrDtqYtVZD}B +zozz_%3AHwf-U1t`>l-0<2gX6HK5gUUp303v1USap9DulBfp84r$#Mv1q=)D%5ca;}i4#s9EZ2b_{V{Tef +z`_(4%yfClN#kIyhZ@r&*IhRM$wZ>1b*<$)y(fH +zwMLt*JdC$MTtTJ8D|538d83M=-15&^`#WZg!-m}=LS=3R~^eck{j!*B%owKdnl+{IrTp4rpRt}kSAaANUi2^f> +zh16#!Nv6zGEmDawklRvDtnzl$@7+as#B5sN-SF4mRms#vQK)STf6h65#R9;ZFb^<$ +zeQ5A{^WL=egDWjeR;#>Lf8b6Hclq6)@i$sf_m&7->&oc$dSe}y;Ik7$f|^Q-t7qx| +zxQTk7peB)%1>7~sYP0%s{-Eb{tGx}uT^1@gx@*+4Rm>VGYMQN`Z(#UBn$ZYs>@}|k +zFyGDCnUTjwiniA=0&K=7m;d9e_IHqFPkOYEkx!9L4Y#hjfmW7{5-(Iw7`Ky%o$nD_AuAPnDUA4E}l!=h7S_WRGq{QN21!Ad%pGc4KXFALfl1( +z?6N+mu9{CuiXHSqy_$PARL9B|%-!({1vTOFdzlT>UGh_dP1Obe-CvSpppT3W3mk{8wA$WXMpW9SLmpji +zlzM57#=YSOlH27MVfHZTeWuh;7olw|NQYIek}u9jEmP+XtsSyt?sTt#R%SDYk}lZ* +z#D+SD=G>@I6hboy9lWJMW#RN>=Z`#&;aV)f4j}oD|2QUoDs0S{+*17&FV?q^2yY>5{bq3sgh_8zAh!^)9nYex}R?KS6**2oI?Yip%~Nwrj*Y + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0022.png b/themes/bgrt/throbber-0022.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4b57e234270c5b3810796a93de9e85e008f446ce +GIT binary patch +literal 1595 +zcmYL}e>~H99LK-PHRIB1$}-h-N-nmU!;Hd3BZ)>?UGihiuk43yE>ze?8g~+MlpmG4 +zx+L>+QuL)&Ty>~hcE@H%NAlx{Z5DE0caMAA=ka;JUysM@`F^}U@4r5xfCJ>!hGvEU +z0Ic@$_M||HSuTTBQ0FEm&q4xcdmrHffDv-J^nlAHD9CihN +zjBpx`%c0?-Vt6=qToQwoz>CK5qUj7e7sqACFqw4De~OKWqccxL2wv(#QK;o8&u|_c +zAmHtYI6FHW!5(90M{;l=Ip7=H<bSiGZ8&^!;q>;B13qQ%jjM74NWJ6KPLer8awaT$Eb4rqAFvCv1xP%ewIzTba8$*KcgnxgfC@8Kz&T(P~4q +z;A*kEhh&ecb>H|0-r_r?iUtYdg3>oI94=A6eQ|Fn>OYTOp^& +z#F{=I%qUh2i2PEV6-gc; +zskvU%FsXfeRL>(g_Mnvcvg)4sXxiRVcfp*boBK^Lax5^|=9e65$%swIq4-Vl#R*wc +zNtbV+zsFp8Z`st)c*VymJMw0UEiena$xF@XGM-`Y(VA{ +ziFH?ZF_m(SY0-WvR8J|F^}UziyO_f2KXjKGT2e +zs?P%~wMWhnT&C@tz+y(1bwxjQ&v&GHvRHziw|V#d!>4!ptW`g-;og=%MI1a1E}Bst +zcI(IqLN5FEGgE>2oo|N<2J1i;n1IoRsPx#drZsn`Z~PMAlJ60V&M!I!7bWNU_bJG+ +z4;5gm@$ZFDybk^yU>eb=NLLo~4Yjf=kC3Tu( +zA6)ed`EUWel{<2)h_SXaosyt6MiF6HK`Q8~GkrFo(&mIxyM%QrBI?s{`bkyxD|pB` +z!LOs~RlDG2`dtEhFz2mq_Vk1LdD!fX%0+yMUt!Qlt1-|nwr8Rh@h2vtDCcLypD*;k +z0T;oqKdlJnKh~h-7ZXWj1)0@S%@934B&wd2@tt~cJ?qA#sS>1H=@+{CosZ>XMG4X7 +pj+6Ucx<}|`XAc`QUQ3;qw$zWv#>e*6g3#{=_;?-gy!UmO;BO1~<);7u + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0023.png b/themes/bgrt/throbber-0023.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b3dbeef0ed06455beaffa218655d8070cf2324d7 +GIT binary patch +literal 1603 +zcmYL}doBm|NnwcRZPeW-J?vR*@C$Rb2?0KnL6w_rep#0oNfxIq!z;8Z#dz@#wKX_&Os +z^z;NOhQp>}l2f@D7M+*QyueMta8qdMG!BNtN@Xx;?EmyQg-&B6QUp&BP?XhfRA2&^ +z1~`LQ90rTUIJ?+lv3OTkyeoM3*O6XmX7BDySZX>A073k}*VzT!bf81b;Gb342@rI4 +zDT(PZg*?+;F95RG3BbQ{90Z-O4jU*TXubjEaRI636r`w%zV +z3WlSbpAvzebZ#%mMy{Z +z7Sb=UFwrh30BM&OA}C=^twxy@H$!5N1sEq+H +zT!NGsafT6Sb=rXf<$JbEL`uW$g#$yTaVVc5svG#x!H) +zCp0m3Duz>iTXpMazN^JExK8)lyOBJ^?>5H85jPT19$zs8%%U#r)xz(E_z)BB4b3!4 +zR_mCv&jVhVci5qL-%(;;U@YSBgCLZw>zQoHvLWn;;I%gRLNPbqcwC2HvSa&R$Df)+ +zhnyN&n7L$1N3Fr412*uF#Ld8!GD3H2nlMDE07k6|QP02W=CNQihnCAL=J7v0sYEV1 +z)I~L>32vv2;rF4I)K +zk!&*pDnpU{`FGTpUmtBeXKmiY>^2+-~(ajh9}F`veNqPA7|r1|c^W()JS1G^4 +zEz5q9TXVa~T+aLjR;Bk)=QQ7EJn_-_;fQIAlMd4(I|iz>J&QRm=q0SGvDB{1+g=zu +zdEic2N1z1$d@K>2>H40$zw47fje1DFY-Q^`MdUlKK1Bbpv#S9jamc#Ejr^F97B|tI +z=YHkpbvjQQtILWukz5`5vqr3QY8I}g)mI43mEXw +z?(H3CG+*U675_nPhRY~KNzQndXwo#-f1|uV>zEQq|_nw(S|l#M$1#*3TxEz +z36e+~RV5;~t<Ydlqt;ie?wH8Rqaa5!$ymVbd +w7Va}%9+gQkg;W)49{h64Q@D6+QnPa~JmKc`YyErcp~H99LK*gV~H-4qx^27b?k@6to%%DsmVwy9Hy~h8{7N{$()LWYGLG8bp1G4 +z#nB4+adIbVbr&fMQMwyrjOd(mU)|##_j!EY@7Lq;dcGg;&+D&G&LOh5&iXCu0RYe; +z5j`oOny-}>6zsf|lzC8Kam1rM0MLf7)jFWG%n&qP`TMARFJ>$qKruKhIx3pUVueSb +zc-#n76qApNi#@^OB=8w1K7-Dp^H97vCYw#?{-<`dSUUSSEwc{-t}aRin2s)b%@EKeVjYj91+oL1nco~%52Ox*9aS9la +z&i(&MJG28SV3`kMy)U~@M8wj0=KkTVI8Xr$7N1^ZxDx;%!z54l04gl67{jPItbaym +zSmUMBNVKv1aAPkFdCZu=_tU=?Lp19;>NfpC;tXCr6a${uhp)V~a +zI4`H|^M?Gr%}_!hHuU4&Vx_eI7n$T~%#o70pI_}KXRbD6pWX;h0uKDp3JH8T>}^K0 +zff<@@b9m=^0)n&II%@v{OYJ{<(<*!pr}Q=3nxq*!WHJBTU4e9##;cJ`6>17`9ra>1 +zUS~QnFB&oM;*vzCsh|J8YWghaDmwpt;q1%*By6sLOLp#3MN +z)4ibL;=0?Hev!y2t&>wl{f;lDC#}|EDYB%LN^iui2Di-As)UoTACE)G@`9J5r4WC` +zaLMi;KRXT_T@bcsZQ5=5z;aHH;c9)U8Ut9+|wnpfxw +zP1}^{nK}{Tc7G-IFucrX)D}9DG1F0e9z`hWYZL}I?_c;$r+@*cCfLO#flEKok4P>}FN(yvEXu +z5KfW8uRlA_bd!$hZRo*%JV(3ov^R3dc0OKduEY~ +z5$7Sp>x8*&AyCtG3f-!ppqJ;O=$%NG4AztfatP68N{hB_I1w7Iix#N5DoC@XF_avauVm!Ef22z)- +z{$8sk`&<&uI_8bll;Y3RIjn77+>+VT7iYTAn{PF*=)0o;=}?hRSAGgA(M^~LTRx5X +zT<|uu@Dx$(QGZfIVIqlR=a*Z`Q#C}gBu>=HBGaBqH@!T@ZZ$_iRVPM9+ +z^Hcc+N@FO+wS$v+L=eT{))r@YBpnFGTLoH{gj|rPb#CXAM_djW=iceS%^CjIRR-0quIY_p +zU?5S|lL%qe$0@jqdOnHV27xcaKjDy^<-$FSu;h#SIKj6?8#}ziGy~%Ohvcn?Zof3l +zoh{iB_>DzQnzoCH^+wpdU;lQoLoQt$Je6cBYqAfFG +z_4YNYs&Q((%c$YG&yJjgIHMMwXX-%}jK_*@F{K1A;C3-G6wQ#HhoA4lZjRE+3q#2^>ob +xnW{0GfYu~c=SS4;6s*o!KNBIY>@RcvTcZ%$p7KGe+64ZC0BIlDQ|u9z`433t&fow5 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0025.png b/themes/bgrt/throbber-0025.png +new file mode 100644 +index 0000000000000000000000000000000000000000..3905e00eeb09a3546eab2dec2158fa9bc5f280f4 +GIT binary patch +literal 1604 +zcmYL}dsGs36vsiy0B0%Uqm1bmq`l;kHnoM1K%;zt6bZkrln|nmSLJL?-Hj|I$$3}BFOx}NLPmf`8BIs$)K)NW)~D)tx*E~gJH(?R$$3}7%hOn`vJ-OqTR4)B|7+(ci8SMsz0-Wu@mS +z9(E}B#v7oGQ|&_<@yEfg7Na%uiOSB-iwlumO{ClP_4T+Nc>L9ks&n%Cn!~x>oS0|% +z^0ib3ox44q;a`)gE|{-aEj%MU`A6e?Z^e~}Ja&V@Z+#j2YvRnK+S*+N+BFCGh?H>r +zHS1EhxxBsOO7-VO>e=g8cr@9=hnOEvva5FKEyWiz-{Gtkp5PD1069e|v>cri(#q5;ziiY58p?ksP +zu_V29EJ`-(anf+t+sSS{sG&t6V>-p +zGmBH4ce!bU!a5OPYtehVrrKx94c-)^bLCsLJb5)z@z+N+7if5>XMY<#uI#pc*SWG@ +z0`~~jhcyikE0|glM(K#Z2bbM3jxp!v-`Hk&kZ>#sVW&oos03a5H6to +zp`~-BM-`?bt%z&^YZaxH4BgK}wyum%C60$aSwBb^Qq5j^cr9`?^p$m5RBE%7n@*)v +znp5+Ni!SVf$&oxWd3lJ|*sRUcw!u9hx5(LnaM%B;L2slYXB{iASK=X`ucL1FRoSvcsM^y_=sOM?v#moSz?Av^`%uIs8f=J +zjsm^vhDPnYN?NT&Ef{%= +z@ps<PYq;ZF~D4IVE@+G>%VU|P~h%*?N? +zTaq|ppr$Qzkn;SuOz}0Km#f(htaP=)D^_3r$axYZ2a0BM`t{<+d&F~XQVR*Bk&Am^7d4XaWsbl~oT7)zZjixz?>dejRqAvxsS|r|qQq +ztvL=>_7)aooX>-^7G9L-I&j%Q5|j$SjF +wD~E2)ka~oIzC8+u<0Gd@SoVvtpxGs$Ch&UB0pY0y-8Tpz5q$~O9${(!0^C;FL;wH) + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0026.png b/themes/bgrt/throbber-0026.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4c02eb167941a3611d36f1b0cfab5086d77ad0ac +GIT binary patch +literal 1605 +zcmYL}eKga19LIl{Yh&g4DH6`&dT0-5hIAur6Qib7M%k>WZDt!|=3$~Jc0E-0dRlc{ +zNkTiggeB!6*F}mf<+ySdtHw*leqO*CtPYQuBamUyIprN~2N%ntP7kLb +z*enX-bQA}{q$SX!V>yusP9&91Wh2uywg=Uk{_Mr(5>D2h%6kVw}b*8#mRZ*WGzz~5J4g)5)~`nB_3 +zk;2p7^!6((RygoO;7Fvyr4ewa0_tr-B8AGJ0-Q)zG?`3gnL8p+G1;kydhaQ??j}E^ +zSdhy4|4BF!jSpJoD6r1=>;wvp$~Gs4)0qkdP!5>nt44MJ02;@8c?2DWB>mQYHuSJo +zR{{2xj%RiG`9Mzt%VT=Z=WWyAzAXoxV+UhzxOs49Mz3gSZ-BTA{ZMIIbEG~J!RZzb2ecD19+C%=b=4pH6}Fo6w_zp@pR +zg<&1-c5}k1lUqA;AAMNfB{o&Eo3xSk_`ZTB)!4}L_G^F>j+`65!Wl=uxd6ez3*!y! +z&!q@d-9>&@bw!#l&DCnmMWfVAB92UI@wcp)bh7Vi?QXe0r9aG&U)1X$O8>x28@s^~8W#GJLJZ(7xW9hML0){J)rD +zv@d8PplbIQ(+)?QMP*US*tdb4aY;PH)VP1gJJ0%LRx$O0RN#yTcpn>BA{ +z=ft;=RQC4O#>sl6P}7%clf49VFtfj9)FQ@OAgg6q5FS`IjHxwdj-kV%hCjiMBpS5d +zDa+j6n!g^eGg<&0hWNF+n^#UZfNMLeFoRzLZLZV!ya5%vTJqC2ry$mf=PNz|T)Z4t +z)W0)WsB~#`u3*%ytfCk4e8j`-j&xzRIJ-^HG$o`;(mmca^~p@B_+#Oc@2FR{VUC~b +z3(z=G-|jy2X2Xmr;rjh|!B{?W5iqF(E}^b{6_*%`aM>nfJr0>OYo)?CUS7^ET_}$) +zx;S1jsX`O#O@ZtqGEA$#l$$=ld@v)r%_pHD;$m^wN2s^fscs?3L1TGaNot0Z@q{dV +zb*i=$W^udfYt!}oi4q-O8mc;T50Sx=Tb#K)bSIuUd=lar)MFRpHki_!RQ)y=i_zBL +z<+H12M9hnixUu%p^3n7?1YPigNB-xdkOk>Ti2Jix9Zl9v_jIkf)*C9>Z=mP<#4)X! +z3F?nFEaSJ}WQim<+@ehKz#7i +z%Gb%y#@zNoE~`C|Y(G=CpTd7!A3`!~J~7yKp(1C8Bvin4%JdE_-Qa(PmTeCOx_*BQ +zpZCH25n7y1@WGurC^n&>Qc`!kAA4IUV1HBRM3!al-kJo0D_2Zoc4jfG1*)zV!5Ww4 +zR(G@PCeJ?Z)^wgtR<*Sdjt93Ss*#i{1bA3XLoO*JBVx$l`UYHXyrwMTEl&MB))-tC +z>-S{I)2i-qjky?9|^4S*FA2I)RZ_`h(WEkpwZiqXPtGcQguH21YkZ9q5 +zP1|+%wlRj$jkwq8XVGx?UZqf0=yUe)L!4=>pUZsF^pcygO!yq}ZfOI&;4(oWZPgp% +w_dN>G8A;-dz?^FSl8Pj#tYHI*=?RwN&~aO&a;Y)OHos;umu=0hFsa-Qr5+WzRJxpV +zO3{k-3gQ9)6uHzYK+y#wrRmIbr|>*jQ6PYch+%`6gDf_i#=vkn +z3=EUS!^B1_~RF`o_^vrup*}4owO1#M4-~rqa`0 +z@_tiV92)RT&{!-!r%SU@3H6ttKLd;g0bT?rhE4}LC|m4-SZcCCvU7C{pK05$jL?r~QfU3E7_hh#l)4at-srgS9j`%&nMZGj=zi!HKI8v?x% +z*5(n`c73y3MoPbOC(e4WN|-!vYs(yV;y#Nns;aE4^vTQ5x5`ek6t{e&3|5;`r!B=z +zFVD$}TjfTbk>%XA3yyQSIs0p$;*+B~Os<#G+dpm*iNMW414txw*q9N|wu<|td3Q}@ +zupH~!JRo8dic6XZkZX19flfohyDc}*xMVXoQ$m~bdMmznQoQ=8A)ceeYaQ<^oAeil +z8gv_))2*Au^@+TA0)p%l)$}J)`ZTP)2JRRKzc5;q(cq_Q*%RK{E4NixC!Cd!>(lR} +z#3rJ1HZg3b&y?L^YFG__S8eO%@QNoJ5|H0v7K`QgAi-9ZrL%<@ceV=QgnDD4I=@a` +zxU8CdkT$MAD5){bN;H-=WkSuCeY_HOc)Fw|J_UMtl?*6oy;9wg{OpgegO}R!%hy%x +z5HAFVrHlINOtZ8Hew!P9 +z&z@itHO3&*K>@`aq(sCwEMWHJn4$)m^|8-PPW8%i^|x9vGE+DR~pWP23BcEGPq|-c_u|Z@y@` +z0v-_e*i3LFXGTKsAX4^!iBC5uOe?7o>YVw~^4<_P>7vs_=vKd3NmuNZ@6kSR(Y1ZB +z!=U!f35ZXDP--3ybM6w)`3F5eYGlyR*hLkIy@A +zy~rN(*a6jhkahZA-Ur4uCxQC0lF#cc*XX)a88knue%XP}_Qpo4*j9aIWZcLUc#2^) +z?rXDt(?sZVerF_HO}L}#{Vr=db2X~_Jt$pneB|Zdd6HMRZcC(J;n$_@k1AO@yP5Mg +zaOVIIRs(D>4aQx5d$ +z(Fw>zpD)FJ)vQ)+t##GQ?q>)+joCg@-aGf@XHm3=Ncts&dDH8yDyt#!0;ynN&U?tD +zrf0XeSoeAFJN#gLDDeqXw)>t&|K++L`lgxXBMx76&V|xTRd%X!q0+dWW=^S&SWU}? +z`HW8TC)It6MsZdKg*A&O69myf+obla-gk}MZdGReBbOId?K5jmrb!o9RKsT0FnjuQ +z9RvuPr$G`VL=`QTIO0Tig=ys4>WQa2eTs)x>ZB!BL5KtAQ&rIZOnZ7{Q8)tDuYOlS +z@;K6_lCu%L`A)@H2KmR;6^u=2hrw#^D5TdX)7ZwoTxi*tOP%)_G$H}ek}4b%v=WBJ +z!IYNQ4#AccKKE7hMj{p_>mLtQABE;q%Gwqk4OC5D&PSZORzDr4LunacNpBED$7Td6 +zj^=O8>a64>s1*4L467ryg2yg;XRkBbjSazpYpB%a)C#xoy$N8E#oSWjkwf7!J2- +zu^-yA^O~uEM3&30)*`3Av!_?vLtmxcm>Ek|*>@L`y}fdU-QMuNcOEVyH_PLQA3|2i +zjJtY*-=ufj=claYce$4(D`46_u*_V@;JkD4K+93hd@()=D$m&+Y8&J@4~=&-?v6=lec?z2dlCF^(%e +zRssOvNG3%mfQno$dt312A3XRH6eyRJ!Uq5c#Bx~yCmPm(W_Ug^IsfBqHUmI2^EeE2 +zPBw=_rK9;gIyx&mAI)Wd$;sQF&qU`l85{;5&F5z4<}!HyX#kDQ$jzXMep>-XtyzwW +zrsgvM90rR=W3gylAQFoW4GIbk!fJGrd%+&qa!*n=hXG(Pq5p0izHQ^;BaqquGYXFi +zLL43!9xaOGP(Scgd05| +zM=bLMa6ks{|0e@5Az_I(CO{1TC;Lk}o54pWQaM~u0W1zLJicZV0IaZ(qa%`%p+(0v +zECUhNpXTjDs%$+9ixd;fNzNkoh$9nCZK)KE)LUDTdg0*gr?4l)xY?)iu!Ap?TH5`+ +zx4w*PVb;LPNty)O$c4l1;j*H)MRl)DBc*wng3JQ5s{8F&Z7aA2H5v_RpQqS=?lh~R +zfX+Ipy`%I%9O_={S!VK>{6hTxec>;6;7o2(J#{C|{U@ofLzSq)h(5LGAQvGP%22=FnvrO5$yR5)HqAPZ`lHm%bR&NT +zNZPj)@eQg2h1-Lm?+fX)4OXu|a8`Z;pGDY_j-0=5d%kRSoNhi*dy~Dd*o`-~StG+;E5!ZFqv1cbfv$$hU#+qE9K{yMQxCI=0}=r +z{o#imeXrF=6{U-Pi#v=&HvCVb<A8zxLV9JFa@{xEt2FcDZ4W|!7j%}-jr0ORh}*N9X2||i9^#lG8w+f< +z9rf^@X*;~Ue*C#Cn_x{@UDNnL6|s8?+oP8%nlC0>`v!JetQWlX3y*f6hv(hz=$d|% +zVy^e7P`;sbCJNYvX@5k%+FiVXX2-rlvx~e&FuujS*q-ucv(xQ!24f(d2#ZD*R4%&{A-9}(RuqvB-rJJpJ90~?>3J;y5dvfv@_ +zYBaEcEeyF(4^?P4CS5eeR0qmBr9Kmx4I$z|acyLbug}~F@mpj>(K=ls!yh57wZiP|w`Zr7a)$J)EEG(nL*lo-P^*R@YZIygM<{*v2gw +zCQxe`2+9{)@=YPs5c +zzJzk>UGT7h)t!1K%&(y*BEZ^BdcDH9LT~LBYd7BbsG!8M1bMUex%pb%2HH|JwGfX* +zR!#aP@I%-yLOa*7)OS=Yv?W;SIF&Fw?^jE2HQziShXh>*d=2gVezj?E+WEWiXG`Jj +z9ps5dt=!*~?b>_yl%V-m;GPW+F`C~`_ORfp_D{{R30 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0029.png b/themes/bgrt/throbber-0029.png +new file mode 100644 +index 0000000000000000000000000000000000000000..d9931e1ecbf2708841134a846f9d36d9cdbd20f8 +GIT binary patch +literal 1588 +zcmYL}eKga19LIm!qOFifi;-usn{8y~p-HWVgCuIM(q{c)?8!Dgka_A9NuAQ8sPu5v +zwXhJ$*j(za5*4kaEUARrMC^K4_ovQ1_j|sd&-vP`U&tKoX@Gy!Y(gFzpfMHM| +zIRa9fxmutPbwO(CI3x&OV6*@L7MjkL9#B+_f=qwm2C8r)lLZ3U1TGuICNkM +zW8FP$@OU3jPajXbylrp?G_!baCX&ep0UXZf*LC;qbbHK)*n*#{@aYhA_ZH^b8$+JS +zoVOmb_;lcxxZ!Z_`N{=t5Hy>ETNoe*1cV8EZd@G5xADO3<_R(*9^Hkw=^T%M76keK +zKk0@e1Vv5@A-v>g_I?Hn6xeK`vw4sLcz2@c36 +zd~XgG-|T7q6#YuQcTZFC9(me}p5csJ(hl!2=m_rJyC*owU)fNc_ICQFvaZ9l?``E| +zUX##=QrhdAdM2*d=?Ap6RPs=h +zv#oPc-ubJ8$irvl&sDDVfxSKlY{mlfLTytdE|ZZYDV|R>%2zpR9JQ8#du2*hjcBys +zfEVXo^c~v(bc+iQ-U!nHjD~{#P~3KUU#_>q$ik^>RSmHdjj9LdsQ;J<)!AdTWEQvK +zy~p_VU=K8_b8mGnr~LUQgH4oo!bbSpdDTvo9pfIC;!PRd$^4PnOP07k$)1V=$BN_2 +zx8}UhS5a{J+h?OR`ou2h;M=?rri%CtNklfjC`DNIDZMxP&cYvGX%3GC$}m;w*Jyo< +zNauUA&ArsFM2843NjLluV&76~LP(g-TEjMTtjD6QLnT5Mcf!@CnzB?_K~O--s>4@mU +zm)(jZn8{OrbiGTGB${(ZLDj^}##db@byqSLAE%=-YD0vG?Vp{)a8q_{X?l%eeo@(1 +zYmu3jFhS__o~{>uRmiZiI~%UUC-|%(ySi1ZtNgf(haWifg^ScQdFCExV>+r3K?wTj +zd!s*j(4x;vIw5Lu+av&^bwwByCfkm*;9NpR4yzwZmB5jO-LM +zIEKrO7ex0`K6O1j-=teMKK8&M{V7P|063?CgISmW@_U9++_7-1|5SEO|Rmey;+UOCm~rawU07jqNUQUUNHqj_0AzquXC4W +z_I}RL(;pt2x9@@z>mvXr8fvL3gi0O!cZ&{n_tmg$rdvEe_4oHxMi=2d2gp7ce`D** +znW3Dj+M<@w%hf^2NWZuBlCUq*X-uL~rHs1YWc2xi?vo{L-)wnH6lA3wuR6Ul14c4% +zBAmyVm#_U{R-Gm8ed(FVqBHWb;EA7L6P3k^-(rjU}V}$Z3 +z;z_1J<-oH`G5=n{w&^psOtJrwJ)NnP=o12FH^dJORAM@bZpGDvlB~it^DpWd=YTYO +zb11M*1LHmGkaXEe%wd%zWY}ggyO?cmwd4{fVX4$oN$DJP +zA<127>xn3)q%_V?=Q+>$KHtyh{XFm2=XrlWe|@v};=MH0*Q)~npo#PL +z@CVgwwbWF=&N*`AGbk{YcQ6M4;5w_N1YEkZ4m4f3o~b|>4gWE1sc4>kt>DR`K|#@c>8DY^oqsef)bOCFi8b-c)+2q +z>zvfSGOr`0AM0rJnsJS0v8>>=wceFI`&03$t0wKWm871)i8hVDLxL+brSCgma3=e8 +zg)Wx;4uMBM?Y(TCpc%SxQIn-N068rjl&c5ba~~q#-Zc9qezw^#+r)1!cxK}w{6cHx(+!rX7tyCFc&K(}wK-X_um +zbkfH>)sY2%0q#k-rQBV$>Nc)kCLUCV8x}?tn4e-Qo?Lz7B+HR!|Dogdm(?vlWps?Xb22Zys5>eJ$UBR_x{Ee^9D`$*rsQ4L*DoUo^&N +zl8b~Yd?Qy#b=Qvk_S^ZNT4Z(ex_GabSAvz6+26&J1J0JPc&hmR2R&UfI$x$|rro+E +zH;?4$Kd^#*M$Yn1YGK#n5!_OhkWQzw=;AFHXBkKq33@DZ^oCFJ8i<#SdNlaPHU~tm9;4clFB7nQKE(bBfZS?5;d&MvpbwawC2K +zv1dQx>&G{>+a#i2?IaaCB2(>?hYM^U0b#25&8B@95>rE9hVaZ!C@KGlasl%t0{e7* +zgIker4R0G6sXE-(x2b{Zr+O6lRViI*Q{*}~O09b;$*28< +z<&M2R-Zc|W=NA>bJ`{hMTOszpKa@ +X`%H>)eQ8Yx_}u|GPrOH^dqny_<-gJq + +literal 0 +HcmV?d00001 + +-- +2.20.1 + +From 10fddacd1e9a45c8f7345067d61974ef249a1deb Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 3 Dec 2018 16:20:59 +0100 +Subject: [PATCH 22/74] two-step: Do not rotate bgrt background image for + upside-down panels + +Upside-down LCD panels are fixed up in HW by the GOP, so the bgrt image is +not rotated in this case and we should not rotate it to compensate. + +While at it also fixup the wrong indentation of the +ply_pixel_buffer_set_device_scale() call. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 641eb70..16b8fc8 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -312,8 +312,12 @@ view_set_bgrt_background (view_t *view) + if (ply_renderer_get_panel_properties (ply_pixel_display_get_renderer (view->display), + &panel_width, &panel_height, + &panel_rotation, &panel_scale)) { +- ply_pixel_buffer_set_device_rotation (bgrt_buffer, panel_rotation); +- ply_pixel_buffer_set_device_scale (bgrt_buffer, panel_scale); ++ /* Upside-down panels are fixed up in HW by the GOP, so the ++ * bgrt image is not rotated in this case. ++ */ ++ if (panel_rotation != PLY_PIXEL_BUFFER_ROTATE_UPSIDE_DOWN) ++ ply_pixel_buffer_set_device_rotation (bgrt_buffer, panel_rotation); ++ ply_pixel_buffer_set_device_scale (bgrt_buffer, panel_scale); + } + + width = ply_pixel_buffer_get_width (bgrt_buffer); +-- +2.20.1 + +From 534aa0cfd591c5f9abc70551c4fc736001e51c5e Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 19:21:33 +0100 +Subject: [PATCH 23/74] drm: Drop unused encoder_id + +We cache the encoder-id, but we never use it, so stop caching it. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 34b52d7..9453a87 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -81,7 +81,6 @@ struct _ply_renderer_head + int connector0_mode_index; + + uint32_t controller_id; +- uint32_t encoder_id; + uint32_t console_buffer_id; + uint32_t scan_out_buffer_id; + +@@ -492,7 +491,6 @@ static ply_renderer_head_t * + ply_renderer_head_new (ply_renderer_backend_t *backend, + drmModeConnector *connector, + int connector_mode_index, +- uint32_t encoder_id, + uint32_t controller_id, + uint32_t console_buffer_id, + int gamma_size, +@@ -505,7 +503,6 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + head = calloc (1, sizeof(ply_renderer_head_t)); + + head->backend = backend; +- head->encoder_id = encoder_id; + head->connector_ids = ply_array_new (PLY_ARRAY_ELEMENT_TYPE_UINT32); + head->controller_id = controller_id; + head->console_buffer_id = console_buffer_id; +@@ -1114,7 +1111,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + for (i = 0; i < backend->resources->count_connectors; i++) { + ply_renderer_head_t *head; + drmModeEncoder *encoder; +- uint32_t encoder_id; + drmModeCrtc *controller; + uint32_t controller_id; + uint32_t console_buffer_id; +@@ -1146,7 +1142,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + } + +- encoder_id = encoder->encoder_id; + controller = find_controller_for_encoder (backend, encoder); + drmModeFreeEncoder (encoder); + +@@ -1181,8 +1176,8 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + + if (head == NULL) { + head = ply_renderer_head_new (backend, connector, connector_mode_index, +- encoder_id, controller_id, +- console_buffer_id, gamma_size, rotation); ++ controller_id, console_buffer_id, ++ gamma_size, rotation); + + ply_list_append_data (backend->heads, head); + +-- +2.20.1 + +From 42bbee8c3883507e51c722f75a80f19757ec5406 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 3 Dec 2018 12:25:25 +0100 +Subject: [PATCH 24/74] drm: Directly store the mode instead of the mode_index + +The only way we use mode_index is to get the mode, so its easier to +directly store the mode when we create a head. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 70 +++++++++++++----------------- + 1 file changed, 30 insertions(+), 40 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 9453a87..52f948e 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -78,7 +78,7 @@ struct _ply_renderer_head + + ply_array_t *connector_ids; + drmModeConnector *connector0; +- int connector0_mode_index; ++ drmModeModeInfo *connector0_mode; + + uint32_t controller_id; + uint32_t console_buffer_id; +@@ -465,12 +465,8 @@ ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *back + static bool + ply_renderer_head_add_connector (ply_renderer_head_t *head, + drmModeConnector *connector, +- int connector_mode_index) ++ drmModeModeInfo *mode) + { +- drmModeModeInfo *mode; +- +- mode = &connector->modes[connector_mode_index]; +- + if (mode->hdisplay != head->area.width || mode->vdisplay != head->area.height) { + ply_trace ("Tried to add connector with resolution %dx%d to %dx%d head", + (int) mode->hdisplay, (int) mode->vdisplay, +@@ -490,14 +486,13 @@ ply_renderer_head_add_connector (ply_renderer_head_t *head, + static ply_renderer_head_t * + ply_renderer_head_new (ply_renderer_backend_t *backend, + drmModeConnector *connector, +- int connector_mode_index, ++ drmModeModeInfo *mode, + uint32_t controller_id, + uint32_t console_buffer_id, + int gamma_size, + ply_pixel_buffer_rotation_t rotation) + { + ply_renderer_head_t *head; +- drmModeModeInfo *mode; + int i, step; + + head = calloc (1, sizeof(ply_renderer_head_t)); +@@ -507,11 +502,8 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + head->controller_id = controller_id; + head->console_buffer_id = console_buffer_id; + +- assert (connector_mode_index < connector->count_modes); +- mode = &connector->modes[connector_mode_index]; +- + head->connector0 = connector; +- head->connector0_mode_index = connector_mode_index; ++ head->connector0_mode = mode; + + head->area.x = 0; + head->area.y = 0; +@@ -530,7 +522,7 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + } + } + +- ply_renderer_head_add_connector (head, connector, connector_mode_index); ++ ply_renderer_head_add_connector (head, connector, mode); + assert (ply_array_get_size (head->connector_ids) > 0); + + head->pixel_buffer = ply_pixel_buffer_new_with_device_rotation (head->area.width, head->area.height, rotation); +@@ -652,15 +644,13 @@ ply_renderer_head_set_scan_out_buffer (ply_renderer_backend_t *backend, + ply_renderer_head_t *head, + uint32_t buffer_id) + { +- drmModeModeInfo *mode; ++ drmModeModeInfo *mode = head->connector0_mode; + uint32_t *connector_ids; + int number_of_connectors; + + connector_ids = (uint32_t *) ply_array_get_uint32_elements (head->connector_ids); + number_of_connectors = ply_array_get_size (head->connector_ids); + +- mode = &head->connector0->modes[head->connector0_mode_index]; +- + ply_trace ("Setting scan out buffer of %ldx%ld head to our buffer", + head->area.width, head->area.height); + +@@ -1048,10 +1038,10 @@ modes_are_equal (drmModeModeInfo *a, + a->type == b->type; + } + +-static int +-find_index_of_mode (ply_renderer_backend_t *backend, +- drmModeConnector *connector, +- drmModeModeInfo *mode) ++static drmModeModeInfo * ++find_matching_connector_mode (ply_renderer_backend_t *backend, ++ drmModeConnector *connector, ++ drmModeModeInfo *mode) + { + int i; + +@@ -1060,15 +1050,15 @@ find_index_of_mode (ply_renderer_backend_t *backend, + ply_trace ("Found connector mode index %d for mode %dx%d", + i, mode->hdisplay, mode->vdisplay); + +- return i; ++ return &connector->modes[i]; + } + } + +- return -1; ++ return NULL; + } + +-static int +-get_index_of_preferred_mode (drmModeConnector *connector) ++static drmModeModeInfo * ++get_preferred_mode (drmModeConnector *connector) + { + int i; + +@@ -1077,26 +1067,26 @@ get_index_of_preferred_mode (drmModeConnector *connector) + ply_trace ("Found preferred mode %dx%d at index %d\n", + connector->modes[i].hdisplay, + connector->modes[i].vdisplay, i); +- return i; ++ return &connector->modes[i]; + } + +- return -1; ++ return NULL; + } + +-static int +-get_index_of_active_mode (ply_renderer_backend_t *backend, +- drmModeCrtc *controller, +- drmModeConnector *connector) ++static drmModeModeInfo * ++get_active_mode (ply_renderer_backend_t *backend, ++ drmModeCrtc *controller, ++ drmModeConnector *connector) + { + if (!controller->mode_valid) { + ply_trace ("No valid mode currently active on monitor"); +- return -1; ++ return NULL; + } + + ply_trace ("Looking for connector mode index of active mode %dx%d", + controller->mode.hdisplay, controller->mode.vdisplay); + +- return find_index_of_mode (backend, connector, &controller->mode); ++ return find_matching_connector_mode (backend, connector, &controller->mode); + } + + static bool +@@ -1109,12 +1099,12 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + heads_by_controller_id = ply_hashtable_new (NULL, NULL); + + for (i = 0; i < backend->resources->count_connectors; i++) { ++ drmModeModeInfo *mode = NULL; + ply_renderer_head_t *head; + drmModeEncoder *encoder; + drmModeCrtc *controller; + uint32_t controller_id; + uint32_t console_buffer_id; +- int connector_mode_index = -1; + int gamma_size; + ply_pixel_buffer_rotation_t rotation; + bool tiled; +@@ -1155,16 +1145,16 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); + + if (!tiled && backend->use_preferred_mode) +- connector_mode_index = get_index_of_preferred_mode (connector); ++ mode = get_preferred_mode (connector); + +- if (connector_mode_index < 0) +- connector_mode_index = get_index_of_active_mode (backend, controller, connector); ++ if (!mode) ++ mode = get_active_mode (backend, controller, connector); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +- if (connector_mode_index < 0) { ++ if (!mode) { + ply_trace ("falling back to first available mode"); +- connector_mode_index = 0; ++ mode = &connector->modes[0]; + } + + console_buffer_id = controller->buffer_id; +@@ -1175,7 +1165,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id); + + if (head == NULL) { +- head = ply_renderer_head_new (backend, connector, connector_mode_index, ++ head = ply_renderer_head_new (backend, connector, mode, + controller_id, console_buffer_id, + gamma_size, rotation); + +@@ -1185,7 +1175,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id, + head); + } else { +- if (!ply_renderer_head_add_connector (head, connector, connector_mode_index)) ++ if (!ply_renderer_head_add_connector (head, connector, mode)) + ply_trace ("couldn't connect monitor to existing head"); + + drmModeFreeConnector (connector); +-- +2.20.1 + +From bf8a2e893eb99b373f6e6de72954aa171e766d88 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 19:50:33 +0100 +Subject: [PATCH 25/74] drm: Refactor create_heads_for_active_connectors + +Refactor create_heads_for_active_connectors to prepare it for adding a +step where we assign controllers to connected outputs which do not have +a controller assigned yet. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 99 ++++++++++++++++++++---------- + 1 file changed, 66 insertions(+), 33 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 52f948e..f88d445 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -115,6 +115,13 @@ typedef struct + uint32_t added_fb : 1; + } ply_renderer_buffer_t; + ++typedef struct ++{ ++ drmModeConnector *connector; ++ drmModeModeInfo *mode; ++ drmModeCrtc *controller; ++} ply_output_t; ++ + struct _ply_renderer_backend + { + ply_event_loop_t *loop; +@@ -1092,26 +1099,26 @@ get_active_mode (ply_renderer_backend_t *backend, + static bool + create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { +- int i; +- drmModeConnector *connector; + ply_hashtable_t *heads_by_controller_id; ++ ply_output_t *outputs; ++ int i, found, outputs_len; + + heads_by_controller_id = ply_hashtable_new (NULL, NULL); + ++ outputs = calloc (backend->resources->count_connectors, sizeof(*outputs)); ++ ++ /* Step 1: ++ * Build a list of connected outputs and get pre-configured controllers. ++ */ ++ found = 0; + for (i = 0; i < backend->resources->count_connectors; i++) { +- drmModeModeInfo *mode = NULL; +- ply_renderer_head_t *head; ++ drmModeConnector *connector; + drmModeEncoder *encoder; +- drmModeCrtc *controller; +- uint32_t controller_id; +- uint32_t console_buffer_id; +- int gamma_size; + ply_pixel_buffer_rotation_t rotation; + bool tiled; + + connector = drmModeGetConnector (backend->device_fd, + backend->resources->connectors[i]); +- + if (connector == NULL) + continue; + +@@ -1125,47 +1132,72 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + } + +- encoder = find_encoder_for_connector (backend, connector); ++ outputs[found].connector = connector; + +- if (encoder == NULL) { +- drmModeFreeConnector (connector); +- continue; +- } +- +- controller = find_controller_for_encoder (backend, encoder); +- drmModeFreeEncoder (encoder); +- +- if (controller == NULL) { +- drmModeFreeConnector (connector); +- continue; ++ encoder = find_encoder_for_connector (backend, connector); ++ if (encoder) { ++ outputs[found].controller = ++ find_controller_for_encoder (backend, encoder); ++ drmModeFreeEncoder (encoder); + } + +- controller_id = controller->crtc_id; +- + ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); + + if (!tiled && backend->use_preferred_mode) +- mode = get_preferred_mode (connector); ++ outputs[found].mode = get_preferred_mode (connector); + +- if (!mode) +- mode = get_active_mode (backend, controller, connector); ++ if (!outputs[found].mode && outputs[found].controller) ++ outputs[found].mode = get_active_mode (backend, outputs[found].controller, connector); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +- if (!mode) { ++ if (!outputs[found].mode) { + ply_trace ("falling back to first available mode"); +- mode = &connector->modes[0]; ++ outputs[found].mode = &connector->modes[0]; ++ } ++ ++ found++; ++ } ++ outputs_len = found; /* outputs now contains found valid entries */ ++ ++ /* Step 2: TODO ++ * Drop controllers for clones for which we've picked different modes. ++ */ ++ ++ /* Step 3: TODO ++ * Assign controllers to outputs without a controller ++ */ ++ ++ /* Step 4: ++ * Create heads for all valid outputs ++ */ ++ for (i = 0; i < outputs_len; i++) { ++ drmModeConnector *connector = outputs[i].connector; ++ ply_renderer_head_t *head; ++ uint32_t controller_id; ++ uint32_t console_buffer_id; ++ int gamma_size; ++ ply_pixel_buffer_rotation_t rotation; ++ bool tiled; ++ ++ /* Skip outputs for which we failed to get a controller */ ++ if (!outputs[i].controller) { ++ drmModeFreeConnector (connector); ++ continue; + } + +- console_buffer_id = controller->buffer_id; +- gamma_size = controller->gamma_size; +- drmModeFreeCrtc (controller); ++ ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); ++ ++ controller_id = outputs[i].controller->crtc_id; ++ console_buffer_id = outputs[i].controller->buffer_id; ++ gamma_size = outputs[i].controller->gamma_size; ++ drmModeFreeCrtc (outputs[i].controller); + + head = ply_hashtable_lookup (heads_by_controller_id, + (void *) (intptr_t) controller_id); + + if (head == NULL) { +- head = ply_renderer_head_new (backend, connector, mode, ++ head = ply_renderer_head_new (backend, connector, outputs[i].mode, + controller_id, console_buffer_id, + gamma_size, rotation); + +@@ -1175,7 +1207,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id, + head); + } else { +- if (!ply_renderer_head_add_connector (head, connector, mode)) ++ if (!ply_renderer_head_add_connector (head, connector, outputs[i].mode)) + ply_trace ("couldn't connect monitor to existing head"); + + drmModeFreeConnector (connector); +@@ -1183,6 +1215,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + + ply_hashtable_free (heads_by_controller_id); ++ free (outputs); + + return ply_list_get_length (backend->heads) > 0; + } +-- +2.20.1 + +From 52bf6e3e950729e39b838c119284ced1aecc39a0 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 23:09:27 +0100 +Subject: [PATCH 26/74] drm: Store tiled and rotation in ply_output_t + +This avoids the need to call ply_renderer_connector_get_rotation_and_tiled +twice and thus also the need to call drmModeGetProperty twice for all +properties. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 30 ++++++++++++------------------ + 1 file changed, 12 insertions(+), 18 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index f88d445..b68265b 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -120,6 +120,8 @@ typedef struct + drmModeConnector *connector; + drmModeModeInfo *mode; + drmModeCrtc *controller; ++ ply_pixel_buffer_rotation_t rotation; ++ bool tiled; + } ply_output_t; + + struct _ply_renderer_backend +@@ -442,28 +444,26 @@ connector_orientation_prop_to_rotation (drmModePropertyPtr prop, + + static void + ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *backend, +- drmModeConnector *connector, +- ply_pixel_buffer_rotation_t *rotation, +- bool *tiled) ++ ply_output_t *output) + { + drmModePropertyPtr prop; + int i; + +- *rotation = PLY_PIXEL_BUFFER_ROTATE_UPRIGHT; +- *tiled = false; ++ output->rotation = PLY_PIXEL_BUFFER_ROTATE_UPRIGHT; ++ output->tiled = false; + +- for (i = 0; i < connector->count_props; i++) { +- prop = drmModeGetProperty (backend->device_fd, connector->props[i]); ++ for (i = 0; i < output->connector->count_props; i++) { ++ prop = drmModeGetProperty (backend->device_fd, output->connector->props[i]); + if (!prop) + continue; + + if ((prop->flags & DRM_MODE_PROP_ENUM) && + strcmp (prop->name, "panel orientation") == 0) +- *rotation = connector_orientation_prop_to_rotation (prop, connector->prop_values[i]); ++ output->rotation = connector_orientation_prop_to_rotation (prop, output->connector->prop_values[i]); + + if ((prop->flags & DRM_MODE_PROP_BLOB) && + strcmp (prop->name, "TILE") == 0) +- *tiled = true; ++ output->tiled = true; + + drmModeFreeProperty (prop); + } +@@ -1114,8 +1114,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + for (i = 0; i < backend->resources->count_connectors; i++) { + drmModeConnector *connector; + drmModeEncoder *encoder; +- ply_pixel_buffer_rotation_t rotation; +- bool tiled; + + connector = drmModeGetConnector (backend->device_fd, + backend->resources->connectors[i]); +@@ -1141,9 +1139,9 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + drmModeFreeEncoder (encoder); + } + +- ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); ++ ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); + +- if (!tiled && backend->use_preferred_mode) ++ if (!outputs[found].tiled && backend->use_preferred_mode) + outputs[found].mode = get_preferred_mode (connector); + + if (!outputs[found].mode && outputs[found].controller) +@@ -1177,8 +1175,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + uint32_t controller_id; + uint32_t console_buffer_id; + int gamma_size; +- ply_pixel_buffer_rotation_t rotation; +- bool tiled; + + /* Skip outputs for which we failed to get a controller */ + if (!outputs[i].controller) { +@@ -1186,8 +1182,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + } + +- ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); +- + controller_id = outputs[i].controller->crtc_id; + console_buffer_id = outputs[i].controller->buffer_id; + gamma_size = outputs[i].controller->gamma_size; +@@ -1199,7 +1193,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + if (head == NULL) { + head = ply_renderer_head_new (backend, connector, outputs[i].mode, + controller_id, console_buffer_id, +- gamma_size, rotation); ++ gamma_size, outputs[i].rotation); + + ply_list_append_data (backend->heads, head); + +-- +2.20.1 + +From ef55ed99e74d15ae7b9a53b89450b6a7b4c297ca Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 23:58:26 +0100 +Subject: [PATCH 27/74] drm: More connector enumeration refactoring + +Some further refactoring to prepare for adding code to picking crtcs +for unconfigured connectors. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 94 +++++++++++++----------------- + 1 file changed, 42 insertions(+), 52 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index b68265b..586df62 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -119,7 +119,8 @@ typedef struct + { + drmModeConnector *connector; + drmModeModeInfo *mode; +- drmModeCrtc *controller; ++ uint32_t controller_id; ++ uint32_t possible_controllers; + ply_pixel_buffer_rotation_t rotation; + bool tiled; + } ply_output_t; +@@ -978,51 +979,39 @@ close_device (ply_renderer_backend_t *backend) + unload_backend (backend); + } + +-static drmModeCrtc * +-find_controller_for_encoder (ply_renderer_backend_t *backend, +- drmModeEncoder *encoder) +-{ +- drmModeCrtc *controller; +- +- controller = NULL; +- +- /* Monitor is already lit. We'll use the same controller. +- */ +- if (encoder->crtc_id != 0) { +- controller = drmModeGetCrtc (backend->device_fd, encoder->crtc_id); +- +- if (controller != NULL) { +- ply_trace ("Found already lit monitor"); +- return controller; +- } +- } +- +- return NULL; +-} +- +-static drmModeEncoder * +-find_encoder_for_connector (ply_renderer_backend_t *backend, +- drmModeConnector *connector) ++static void ++find_controller_for_output (ply_renderer_backend_t *backend, ++ ply_output_t *output) + { + int i; + drmModeEncoder *encoder; + + assert (backend != NULL); + +- for (i = 0; i < connector->count_encoders; i++) { ++ output->possible_controllers = 0xffffffff; ++ ++ for (i = 0; i < output->connector->count_encoders; i++) { + encoder = drmModeGetEncoder (backend->device_fd, +- connector->encoders[i]); ++ output->connector->encoders[i]); + + if (encoder == NULL) + continue; + +- if (encoder->encoder_id == connector->encoder_id) +- return encoder; ++ if (encoder->encoder_id == output->connector->encoder_id && encoder->crtc_id) { ++ ply_trace ("Found already lit monitor on connector %u using controller %u", ++ output->connector->connector_id, encoder->crtc_id); ++ output->controller_id = encoder->crtc_id; ++ } + ++ /* Like mutter and xf86-drv-modesetting only select controllers ++ * which are supported by all the connector's encoders. ++ */ ++ output->possible_controllers &= encoder->possible_crtcs; ++ ply_trace ("connector %u encoder %u possible controllers 0x%08x/0x%08x", ++ output->connector->connector_id, encoder->encoder_id, ++ encoder->possible_crtcs, output->possible_controllers); + drmModeFreeEncoder (encoder); + } +- +- return NULL; + } + + static bool +@@ -1082,10 +1071,13 @@ get_preferred_mode (drmModeConnector *connector) + + static drmModeModeInfo * + get_active_mode (ply_renderer_backend_t *backend, +- drmModeCrtc *controller, +- drmModeConnector *connector) ++ ply_output_t *output) + { +- if (!controller->mode_valid) { ++ drmModeCrtc *controller; ++ drmModeModeInfo *mode; ++ ++ controller = drmModeGetCrtc (backend->device_fd, output->controller_id); ++ if (!controller || !controller->mode_valid) { + ply_trace ("No valid mode currently active on monitor"); + return NULL; + } +@@ -1093,7 +1085,11 @@ get_active_mode (ply_renderer_backend_t *backend, + ply_trace ("Looking for connector mode index of active mode %dx%d", + controller->mode.hdisplay, controller->mode.vdisplay); + +- return find_matching_connector_mode (backend, connector, &controller->mode); ++ mode = find_matching_connector_mode (backend, output->connector, &controller->mode); ++ ++ drmModeFreeCrtc (controller); ++ ++ return mode; + } + + static bool +@@ -1113,7 +1109,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + found = 0; + for (i = 0; i < backend->resources->count_connectors; i++) { + drmModeConnector *connector; +- drmModeEncoder *encoder; + + connector = drmModeGetConnector (backend->device_fd, + backend->resources->connectors[i]); +@@ -1132,20 +1127,14 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + + outputs[found].connector = connector; + +- encoder = find_encoder_for_connector (backend, connector); +- if (encoder) { +- outputs[found].controller = +- find_controller_for_encoder (backend, encoder); +- drmModeFreeEncoder (encoder); +- } +- ++ find_controller_for_output (backend, &outputs[found]); + ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); + + if (!outputs[found].tiled && backend->use_preferred_mode) + outputs[found].mode = get_preferred_mode (connector); + +- if (!outputs[found].mode && outputs[found].controller) +- outputs[found].mode = get_active_mode (backend, outputs[found].controller, connector); ++ if (!outputs[found].mode && outputs[found].controller_id) ++ outputs[found].mode = get_active_mode (backend, &outputs[found]); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +@@ -1171,21 +1160,22 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + */ + for (i = 0; i < outputs_len; i++) { + drmModeConnector *connector = outputs[i].connector; ++ drmModeCrtc *controller; + ply_renderer_head_t *head; + uint32_t controller_id; + uint32_t console_buffer_id; + int gamma_size; + +- /* Skip outputs for which we failed to get a controller */ +- if (!outputs[i].controller) { ++ controller = drmModeGetCrtc (backend->device_fd, outputs[i].controller_id); ++ if (!controller) { + drmModeFreeConnector (connector); + continue; + } + +- controller_id = outputs[i].controller->crtc_id; +- console_buffer_id = outputs[i].controller->buffer_id; +- gamma_size = outputs[i].controller->gamma_size; +- drmModeFreeCrtc (outputs[i].controller); ++ controller_id = controller->crtc_id; ++ console_buffer_id = controller->buffer_id; ++ gamma_size = controller->gamma_size; ++ drmModeFreeCrtc (controller); + + head = ply_hashtable_lookup (heads_by_controller_id, + (void *) (intptr_t) controller_id); +-- +2.20.1 + +From 76b37d50720b6c07c976789943fb2b02069b168d Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 22:51:58 +0100 +Subject: [PATCH 28/74] drm: Drop crtcs for clones for which we've picked + different modes + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 586df62..87ecbfd 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -1097,7 +1097,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { + ply_hashtable_t *heads_by_controller_id; + ply_output_t *outputs; +- int i, found, outputs_len; ++ int i, j, found, outputs_len; + + heads_by_controller_id = ply_hashtable_new (NULL, NULL); + +@@ -1147,9 +1147,27 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + outputs_len = found; /* outputs now contains found valid entries */ + +- /* Step 2: TODO ++ /* Step 2: + * Drop controllers for clones for which we've picked different modes. + */ ++ for (i = 0; i < outputs_len; i++) { ++ if (!outputs[i].controller_id) ++ continue; ++ ++ for (j = i + 1; j < outputs_len; j++) { ++ if (!outputs[j].controller_id) ++ continue; ++ ++ if (outputs[i].controller_id == outputs[j].controller_id && ++ (outputs[i].mode->hdisplay != outputs[j].mode->hdisplay || ++ outputs[i].mode->vdisplay != outputs[j].mode->vdisplay)) { ++ ply_trace ("connector %u uses same controller as %u and modes differ, unlinking controller", ++ outputs[j].connector->connector_id, ++ outputs[i].connector->connector_id); ++ outputs[j].controller_id = 0; ++ } ++ } ++ } + + /* Step 3: TODO + * Assign controllers to outputs without a controller +-- +2.20.1 + +From d67e729739f7cc3cb138bcad8182496c818bfd41 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 28 Nov 2018 00:53:46 +0100 +Subject: [PATCH 29/74] drm: Pick a controller for unconfigured connectors + +So far we've been relying on the kernel fbcon code to set up all outputs, +now that distros have started using deferred fbcon takeover for flickerfree +booting, we can no longer rely on this and in some cases we must pick +our own controllers. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 132 ++++++++++++++++++++++++++++- + 1 file changed, 128 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 87ecbfd..20543ea 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -980,7 +980,7 @@ close_device (ply_renderer_backend_t *backend) + } + + static void +-find_controller_for_output (ply_renderer_backend_t *backend, ++output_get_controller_info (ply_renderer_backend_t *backend, + ply_output_t *output) + { + int i; +@@ -1092,12 +1092,119 @@ get_active_mode (ply_renderer_backend_t *backend, + return mode; + } + ++/* Some controllers can only drive some outputs, we want to find a combination ++ * where all (connected) outputs get a controller. To do this setup_outputs ++ * picks which output to assign a controller for first (trying all outputs), so ++ * that that one will get the first (free) controller and then recurses into ++ * itself to assign the remaining outputs. This tries assigning all remainig ++ * unassigned outputs first and returns the best result of all possible ++ * assignment orders for the remaining unassigned outputs. ++ * This repeats until we find an assignment order which results in a controller ++ * for all outputs, or we've tried all possible assignment orders. ++ */ ++ ++static uint32_t ++find_controller_for_output (ply_renderer_backend_t *backend, ++ const ply_output_t *outputs, ++ int outputs_len, ++ int output_idx) ++{ ++ uint32_t possible_controllers = outputs[output_idx].possible_controllers; ++ int i, j; ++ ++ for (i = 0; i < backend->resources->count_crtcs; i++) { ++ uint32_t controller_id = backend->resources->crtcs[i]; ++ ++ if (!(possible_controllers & (1 << i))) ++ continue; /* controller not usable for this connector */ ++ ++ for (j = 0; j < outputs_len; j++) { ++ if (outputs[j].controller_id == controller_id) ++ break; ++ } ++ if (j < outputs_len) ++ continue; /* controller already in use */ ++ ++ return controller_id; ++ } ++ ++ return 0; ++} ++ ++static int ++count_setup_controllers (const ply_output_t *outputs, ++ int outputs_len) ++{ ++ int i, count = 0; ++ ++ for (i = 0; i < outputs_len; i++) { ++ if (outputs[i].controller_id) ++ count++; ++ } ++ ++ return count; ++} ++ ++static ply_output_t * ++setup_outputs (ply_renderer_backend_t *backend, ++ const ply_output_t *outputs, ++ int outputs_len) ++{ ++ const ply_output_t *best_outputs; ++ ply_output_t *new_outputs; ++ int i, count, best_count; ++ uint32_t controller_id; ++ ++ best_count = count_setup_controllers (outputs, outputs_len); ++ best_outputs = outputs; ++ ++ for (i = 0; i < outputs_len && best_count < outputs_len; i++) { ++ /* Already assigned? */ ++ if (outputs[i].controller_id) ++ continue; ++ ++ /* Assign controller for connector i */ ++ controller_id = find_controller_for_output (backend, outputs, outputs_len, i); ++ if (!controller_id) ++ continue; ++ ++ /* Add the new controller to a copy of the passed in connector ++ * template, we want to try all possible permutations of ++ * unassigned outputs without modifying the template. ++ */ ++ new_outputs = calloc (outputs_len, sizeof(*new_outputs)); ++ memcpy (new_outputs, outputs, outputs_len * sizeof(ply_output_t)); ++ new_outputs[i].controller_id = controller_id; ++ ++ /* Recurse into ourselves to assign remaining controllers, ++ * trying all possible assignment orders. ++ */ ++ new_outputs = setup_outputs (backend, new_outputs, outputs_len); ++ ++ count = count_setup_controllers (new_outputs, outputs_len); ++ if (count > best_count) { ++ if (best_outputs != outputs) ++ free ((void *)best_outputs); ++ best_outputs = new_outputs; ++ best_count = count; ++ } else { ++ free (new_outputs); ++ } ++ } ++ ++ if (best_outputs != outputs) ++ free ((void *)outputs); ++ ++ /* Our caller is allowed to modify outputs, cast-away the const */ ++ return (ply_output_t *)best_outputs; ++} ++ + static bool + create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { + ply_hashtable_t *heads_by_controller_id; + ply_output_t *outputs; +- int i, j, found, outputs_len; ++ int i, j, found, number_of_setup_outputs, outputs_len; + + heads_by_controller_id = ply_hashtable_new (NULL, NULL); + +@@ -1127,7 +1234,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + + outputs[found].connector = connector; + +- find_controller_for_output (backend, &outputs[found]); ++ output_get_controller_info (backend, &outputs[found]); + ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); + + if (!outputs[found].tiled && backend->use_preferred_mode) +@@ -1169,9 +1276,26 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + } + +- /* Step 3: TODO ++ /* Step 3: + * Assign controllers to outputs without a controller + */ ++ number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); ++ if (number_of_setup_outputs != outputs_len) { ++ /* First try, try to assign controllers to outputs without one */ ++ ply_trace ("Some outputs don't have controllers, picking controllers"); ++ outputs = setup_outputs (backend, outputs, outputs_len); ++ number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); ++ } ++ if (number_of_setup_outputs != outputs_len) { ++ /* Second try, re-assing controller for all outputs */ ++ ply_trace ("Some outputs still don't have controllers, re-assigning controllers for all outputs"); ++ for (i = 0; i < outputs_len; i++) ++ outputs[i].controller_id = 0; ++ outputs = setup_outputs (backend, outputs, outputs_len); ++ } ++ for (i = 0; i < outputs_len; i++) ++ ply_trace ("Using controller %u for connector %u", ++ outputs[i].controller_id, outputs[i].connector->connector_id); + + /* Step 4: + * Create heads for all valid outputs +-- +2.20.1 + +From b082f42494e8423f08f40addc833d7e9b0192cb6 Mon Sep 17 00:00:00 2001 +From: Mathieu Trudel-Lapierre +Date: Tue, 4 Dec 2018 14:31:13 -0500 +Subject: [PATCH 30/74] keyboard: add helper to get the keyboard's renderer, if + applicable + +Based on an original patch from Gert van de Kraats on Ubuntu's Launchpad: +https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1794292 + +Signed-off-by: Mathieu Trudel-Lapierre +--- + src/libply-splash-core/ply-keyboard.c | 16 ++++++++++++++++ + src/libply-splash-core/ply-keyboard.h | 1 + + 2 files changed, 17 insertions(+) + +diff --git a/src/libply-splash-core/ply-keyboard.c b/src/libply-splash-core/ply-keyboard.c +index 80f7694..e11c093 100644 +--- a/src/libply-splash-core/ply-keyboard.c ++++ b/src/libply-splash-core/ply-keyboard.c +@@ -587,4 +587,20 @@ ply_keyboard_remove_enter_handler (ply_keyboard_t *keyboard, + } + } + ++ply_renderer_t * ++ply_keyboard_get_renderer (ply_keyboard_t *keyboard) ++{ ++ assert (keyboard != NULL); ++ ++ switch (keyboard->provider_type) { ++ case PLY_KEYBOARD_PROVIDER_TYPE_RENDERER: ++ return keyboard->provider.if_renderer->renderer; ++ ++ default: ++ break; ++ } ++ ++ return NULL; ++} ++ + /* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */ +diff --git a/src/libply-splash-core/ply-keyboard.h b/src/libply-splash-core/ply-keyboard.h +index 6147cc7..dd428c0 100644 +--- a/src/libply-splash-core/ply-keyboard.h ++++ b/src/libply-splash-core/ply-keyboard.h +@@ -72,6 +72,7 @@ void ply_keyboard_remove_enter_handler (ply_keyboard_t *keyboard, + bool ply_keyboard_watch_for_input (ply_keyboard_t *keyboard); + void ply_keyboard_stop_watching_for_input (ply_keyboard_t *keyboard); + bool ply_keyboard_is_active (ply_keyboard_t *keyboard); ++ply_renderer_t *ply_keyboard_get_renderer (ply_keyboard_t *keyboard); + + #endif + +-- +2.20.1 + +From c46f446fe44457f599805b685547c2258bb3fa96 Mon Sep 17 00:00:00 2001 +From: Mathieu Trudel-Lapierre +Date: Tue, 4 Dec 2018 14:41:35 -0500 +Subject: [PATCH 31/74] device-manager: free keyboards when deactivating a + renderer + +Based on an original patch by Gert van de Kraats, on Ubuntu Launchpad bug: +https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1794292 + +Signed-off-by: Mathieu Trudel-Lapierre +--- + src/libply-splash-core/ply-device-manager.c | 29 +++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index d70e709..8ceee10 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -136,6 +136,34 @@ free_displays_for_renderer (ply_device_manager_t *manager, + } + } + ++static void ++free_keyboards_for_renderer (ply_device_manager_t *manager, ++ ply_renderer_t *renderer) ++{ ++ ply_list_node_t *node; ++ ++ node = ply_list_get_first_node (manager->keyboards); ++ while (node != NULL) { ++ ply_list_node_t *next_node; ++ ply_keyboard_t *keyboard; ++ ply_renderer_t *keyboard_renderer; ++ ++ keyboard = ply_list_node_get_data (node); ++ next_node = ply_list_get_next_node (manager->keyboards, node); ++ keyboard_renderer = ply_keyboard_get_renderer (keyboard); ++ ++ if (keyboard_renderer == renderer) { ++ ply_keyboard_free (keyboard); ++ ply_list_remove_node (manager->keyboards, node); ++ } ++ ++ node = next_node; ++ } ++ if (ply_list_get_first_node (manager->keyboards) == NULL) { ++ manager->local_console_managed = false; ++ } ++} ++ + static void + free_devices_from_device_path (ply_device_manager_t *manager, + const char *device_path) +@@ -152,6 +180,7 @@ free_devices_from_device_path (ply_device_manager_t *manager, + return; + + free_displays_for_renderer (manager, renderer); ++ free_keyboards_for_renderer (manager, renderer); + + ply_hashtable_remove (manager->renderers, (void *) device_path); + free (key); +-- +2.20.1 + +From bac628cd05783499d5e4dc005fb566c51ace2df8 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Sun, 9 Dec 2018 15:22:48 +0100 +Subject: [PATCH 32/74] ply-keyboard: Fix compiler warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fix: "warning: enumeration value ‘PLY_KEYBOARD_PROVIDER_TYPE_TERMINAL’ +not handled in switch [-Wswitch-enum]" compiler warning. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-keyboard.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/libply-splash-core/ply-keyboard.c b/src/libply-splash-core/ply-keyboard.c +index e11c093..27395e0 100644 +--- a/src/libply-splash-core/ply-keyboard.c ++++ b/src/libply-splash-core/ply-keyboard.c +@@ -596,8 +596,8 @@ ply_keyboard_get_renderer (ply_keyboard_t *keyboard) + case PLY_KEYBOARD_PROVIDER_TYPE_RENDERER: + return keyboard->provider.if_renderer->renderer; + +- default: +- break; ++ case PLY_KEYBOARD_PROVIDER_TYPE_TERMINAL: ++ return NULL; + } + + return NULL; +-- +2.20.1 + +From 2dc81adb0f1a5469b15c62d3dacf53dfbc37c17a Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 10:43:09 +0100 +Subject: [PATCH 33/74] libply: Add ply_strtod helper + +Add a ply_strtod helper which always uses "." as decimal separator +independent of the locale. + +Using this fixes e.g. HorizontalAlignment in the two-step plugin +not working with some locales. + +Signed-off-by: Hans de Goede +--- + src/libply/ply-utils.c | 14 ++++++++++++++ + src/libply/ply-utils.h | 2 ++ + 2 files changed, 16 insertions(+) + +diff --git a/src/libply/ply-utils.c b/src/libply/ply-utils.c +index c17e0c8..4ff7b1b 100644 +--- a/src/libply/ply-utils.c ++++ b/src/libply/ply-utils.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -1109,4 +1110,17 @@ ply_kernel_command_line_override (const char *command_line) + kernel_command_line_is_set = true; + } + ++double ply_strtod(const char *str) ++{ ++ char *old_locale; ++ double ret; ++ ++ /* Ensure strtod uses '.' as decimal separator, as we use this in our cfg files. */ ++ old_locale = setlocale(LC_NUMERIC, "C"); ++ ret = strtod(str, NULL); ++ setlocale(LC_NUMERIC, old_locale); ++ ++ return ret; ++} ++ + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +diff --git a/src/libply/ply-utils.h b/src/libply/ply-utils.h +index ae4776e..4dd9c09 100644 +--- a/src/libply/ply-utils.h ++++ b/src/libply/ply-utils.h +@@ -132,6 +132,8 @@ const char *ply_kernel_command_line_get_string_after_prefix (const char *prefix) + bool ply_kernel_command_line_has_argument (const char *argument); + void ply_kernel_command_line_override (const char *command_line); + ++double ply_strtod(const char *str); ++ + #endif + + #endif /* PLY_UTILS_H */ +-- +2.20.1 + +From fb6d4b4983de70296ee84d0029e5e7b91202d526 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 10:45:51 +0100 +Subject: [PATCH 34/74] two-step: Use plymouth_strtod + +Use the locale agnostic plymouth_strtod helper which always uses a "." +as decimal seperator. This fixes the various Alignment options not working +with some locales. + +While at it also add a ply_trace to log the size and chosen centering for +the watermark image. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 16b8fc8..c1e75a8 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -423,6 +423,10 @@ view_load (view_t *view) + view->watermark_area.height = ply_image_get_height (plugin->watermark_image); + view->watermark_area.x = screen_width * plugin->watermark_horizontal_alignment - ply_image_get_width (plugin->watermark_image) * plugin->watermark_horizontal_alignment; + view->watermark_area.y = screen_height * plugin->watermark_vertical_alignment - ply_image_get_height (plugin->watermark_image) * plugin->watermark_vertical_alignment; ++ ply_trace ("using %ldx%ld watermark centered at %ldx%ld for %ldx%ld screen", ++ view->watermark_area.width, view->watermark_area.height, ++ view->watermark_area.x, view->watermark_area.y, ++ screen_width, screen_height); + } + + ply_trace ("loading entry"); +@@ -746,28 +750,28 @@ create_plugin (ply_key_file_t *key_file) + + alignment = ply_key_file_get_value (key_file, "two-step", "HorizontalAlignment"); + if (alignment != NULL) +- plugin->animation_horizontal_alignment = strtod (alignment, NULL); ++ plugin->animation_horizontal_alignment = ply_strtod (alignment); + else + plugin->animation_horizontal_alignment = .5; + free (alignment); + + alignment = ply_key_file_get_value (key_file, "two-step", "VerticalAlignment"); + if (alignment != NULL) +- plugin->animation_vertical_alignment = strtod (alignment, NULL); ++ plugin->animation_vertical_alignment = ply_strtod (alignment); + else + plugin->animation_vertical_alignment = .5; + free (alignment); + + alignment = ply_key_file_get_value (key_file, "two-step", "WatermarkHorizontalAlignment"); + if (alignment != NULL) +- plugin->watermark_horizontal_alignment = strtod (alignment, NULL); ++ plugin->watermark_horizontal_alignment = ply_strtod (alignment); + else + plugin->watermark_horizontal_alignment = 1.0; + free (alignment); + + alignment = ply_key_file_get_value (key_file, "two-step", "WatermarkVerticalAlignment"); + if (alignment != NULL) +- plugin->watermark_vertical_alignment = strtod (alignment, NULL); ++ plugin->watermark_vertical_alignment = ply_strtod (alignment); + else + plugin->watermark_vertical_alignment = .5; + free (alignment); +@@ -786,7 +790,7 @@ create_plugin (ply_key_file_t *key_file) + + transition_duration = ply_key_file_get_value (key_file, "two-step", "TransitionDuration"); + if (transition_duration != NULL) +- plugin->transition_duration = strtod (transition_duration, NULL); ++ plugin->transition_duration = ply_strtod (transition_duration); + else + plugin->transition_duration = 0.0; + free (transition_duration); +-- +2.20.1 + +From e111ba8bafaa41fced0824e6fbccc20372917a3d Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 9 Jan 2019 11:31:06 +0100 +Subject: [PATCH 35/74] libply: Add ply_key_file_get_bool function + +Add a function to read a boolean value from a ply-key-file. + +This function will return true if the key exists and it has a value of "1", +"y", "yes" or "true" (case-insensitive). In all other cases it returns +false. + +Signed-off-by: Hans de Goede +--- + src/libply/ply-key-file.c | 33 +++++++++++++++++++++++++++++++++ + src/libply/ply-key-file.h | 4 ++++ + 2 files changed, 37 insertions(+) + +diff --git a/src/libply/ply-key-file.c b/src/libply/ply-key-file.c +index 862d6d5..1c05766 100644 +--- a/src/libply/ply-key-file.c ++++ b/src/libply/ply-key-file.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -356,6 +357,38 @@ ply_key_file_get_value (ply_key_file_t *key_file, + return strdup (entry->value); + } + ++bool ++ply_key_file_get_bool (ply_key_file_t *key_file, ++ const char *group_name, ++ const char *key) ++{ ++ ply_key_file_group_t *group; ++ ply_key_file_entry_t *entry; ++ ++ group = ply_key_file_find_group (key_file, group_name); ++ ++ if (group == NULL) { ++ ply_trace ("key file does not have group '%s'", group_name); ++ return false; ++ } ++ ++ entry = ply_key_file_find_entry (key_file, group, key); ++ ++ if (entry == NULL) { ++ ply_trace ("key file does not have entry for key '%s'", key); ++ return false; ++ } ++ ++ /* We treat "1", "y" and "yes" and "true" as true, all else is false */ ++ if (strcasecmp (entry->value, "1") == 0 || ++ strcasecmp (entry->value, "y") == 0 || ++ strcasecmp (entry->value, "yes") == 0 || ++ strcasecmp (entry->value, "true") == 0) ++ return true; ++ ++ return false; ++} ++ + static void + ply_key_file_foreach_entry_entries (void *key, + void *data, +diff --git a/src/libply/ply-key-file.h b/src/libply/ply-key-file.h +index e69d14a..ef7124b 100644 +--- a/src/libply/ply-key-file.h ++++ b/src/libply/ply-key-file.h +@@ -42,6 +42,10 @@ bool ply_key_file_has_key (ply_key_file_t *key_file, + char *ply_key_file_get_value (ply_key_file_t *key_file, + const char *group_name, + const char *key); ++/* Note this returns false for non existing keys */ ++bool ply_key_file_get_bool (ply_key_file_t *key_file, ++ const char *group_name, ++ const char *key); + void ply_key_file_foreach_entry (ply_key_file_t *key_file, + ply_key_file_foreach_func_t func, + void *user_data); +-- +2.20.1 + +From 6cf1bb3e37df6b69d3b0e17eee394ad8c6e57e75 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 20 Dec 2018 12:47:39 +0100 +Subject: [PATCH 36/74] two-step: Rename UseBGRT to UseFirmwareBackground + +Rename the UseBGRT theme configfile option to UseFirmwareBackground, +to make it clear what this does using language which most users will be +able to understand, rather then using the cryptic BGRT ACPI table reference. + +While at it also switch to using the new ply_key_file_get_bool function, so +that users can edit an existing configfile with "UseFirmwareBackground=true" +in there and change it to "=false" and actually have that work as expected. + +The switch to ply_key_file_get_bool also fixes a memleak as +ply_key_file_get_value returns a strdup-ed value which we were not free-ing. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 3 +-- + themes/bgrt/bgrt.plymouth.in | 2 +- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index c1e75a8..8f1ad58 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -813,8 +813,7 @@ create_plugin (ply_key_file_t *key_file) + + free (color); + +- /* Boolean option, true if the key is present */ +- if (ply_key_file_get_value (key_file, "two-step", "UseBGRT")) ++ if (ply_key_file_get_bool (key_file, "two-step", "UseFirmwareBackground")) + plugin->background_bgrt_image = ply_image_new ("/sys/firmware/acpi/bgrt/image"); + + progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction"); +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index b5cc843..dc5eaf5 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -13,4 +13,4 @@ Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 +-UseBGRT=true ++UseFirmwareBackground=true +-- +2.20.1 + +From 410ba63c81f49b08ab674d359239869b23bdd80e Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 11:52:03 +0100 +Subject: [PATCH 37/74] two-step: Make the box image surrounding the unlock + dialog optional + +In some themes we want a simple style text entry without a dialog like +box around it. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 50 ++++++++++++++++++---------- + 1 file changed, 33 insertions(+), 17 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 8f1ad58..c6e9be4 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -91,7 +91,7 @@ typedef struct + ply_throbber_t *throbber; + ply_label_t *label; + ply_label_t *message_label; +- ply_rectangle_t box_area, lock_area, watermark_area; ++ ply_rectangle_t box_area, lock_area, watermark_area, dialog_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; + bool background_is_bgrt; +@@ -648,9 +648,8 @@ view_show_prompt (view_t *view, + const char *prompt) + { + ply_boot_splash_plugin_t *plugin; ++ unsigned long screen_width, screen_height, entry_width, entry_height; + int x, y; +- int entry_width, entry_height; +- unsigned long screen_width, screen_height; + + assert (view != NULL); + +@@ -660,17 +659,25 @@ view_show_prompt (view_t *view, + screen_height = ply_pixel_display_get_height (view->display); + + if (ply_entry_is_hidden (view->entry)) { +- view->box_area.width = ply_image_get_width (plugin->box_image); +- view->box_area.height = ply_image_get_height (plugin->box_image); +- view->box_area.x = screen_width / 2.0 - view->box_area.width / 2.0; +- view->box_area.y = screen_height / 2.0 - view->box_area.height / 2.0; +- + view->lock_area.width = ply_image_get_width (plugin->lock_image); + view->lock_area.height = ply_image_get_height (plugin->lock_image); + + entry_width = ply_entry_get_width (view->entry); + entry_height = ply_entry_get_height (view->entry); + ++ if (plugin->box_image) { ++ view->box_area.width = ply_image_get_width (plugin->box_image); ++ view->box_area.height = ply_image_get_height (plugin->box_image); ++ view->box_area.x = (screen_width - view->box_area.width) * 0.5; ++ view->box_area.y = (screen_height - view->box_area.height) * 0.5; ++ view->dialog_area = view->box_area; ++ } else { ++ view->dialog_area.width = view->lock_area.width + entry_width; ++ view->dialog_area.height = MAX(view->lock_area.height, entry_height); ++ view->dialog_area.x = (screen_width - view->dialog_area.width) * 0.5; ++ view->dialog_area.y = (screen_height - view->dialog_area.height) * 0.5; ++ } ++ + x = screen_width / 2.0 - (view->lock_area.width + entry_width) / 2.0 + view->lock_area.width; + y = screen_height / 2.0 - entry_height / 2.0; + +@@ -689,7 +696,7 @@ view_show_prompt (view_t *view, + ply_label_set_width (view->label, label_width); + + x = (screen_width - label_width) / 2; +- y = view->box_area.y + view->box_area.height; ++ y = view->dialog_area.y + view->dialog_area.height; + + ply_label_show (view->label, view->display, x, y); + } +@@ -881,9 +888,11 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin) + detach_from_event_loop (plugin); + } + +- ply_image_free (plugin->box_image); + ply_image_free (plugin->lock_image); + ++ if (plugin->box_image != NULL) ++ ply_image_free (plugin->box_image); ++ + if (plugin->corner_image != NULL) + ply_image_free (plugin->corner_image); + +@@ -1091,10 +1100,12 @@ on_draw (view_t *view, + plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) { + uint32_t *box_data, *lock_data; + +- box_data = ply_image_get_data (plugin->box_image); +- ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, +- &view->box_area, +- box_data); ++ if (plugin->box_image) { ++ box_data = ply_image_get_data (plugin->box_image); ++ ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, ++ &view->box_area, ++ box_data); ++ } + + ply_entry_draw_area (view->entry, + pixel_buffer, +@@ -1223,9 +1234,14 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + if (!ply_image_load (plugin->lock_image)) + return false; + +- ply_trace ("loading box image"); +- if (!ply_image_load (plugin->box_image)) +- return false; ++ if (plugin->box_image != NULL) { ++ ply_trace ("loading box image"); ++ ++ if (!ply_image_load (plugin->box_image)) { ++ ply_image_free (plugin->box_image); ++ plugin->box_image = NULL; ++ } ++ } + + if (plugin->corner_image != NULL) { + ply_trace ("loading corner image"); +-- +2.20.1 + +From 27e671bff7df6310e32e640b7db91642ab31e84b Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 13:28:28 +0100 +Subject: [PATCH 38/74] two-step: Add support for non center alignment of the + (diskcrypt) dialog + +Add DialogHorizontalAlignment and DialogVerticalAlignment options which +allow placing the (diskcrypt) dialog aligned at another place then the +center of the screen. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 39 ++++++++++++++++++++++------ + 1 file changed, 31 insertions(+), 8 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index c6e9be4..0f79795 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -112,6 +112,9 @@ struct _ply_boot_splash_plugin + + ply_boot_splash_display_type_t state; + ++ double dialog_horizontal_alignment; ++ double dialog_vertical_alignment; ++ + double watermark_horizontal_alignment; + double watermark_vertical_alignment; + +@@ -668,21 +671,27 @@ view_show_prompt (view_t *view, + if (plugin->box_image) { + view->box_area.width = ply_image_get_width (plugin->box_image); + view->box_area.height = ply_image_get_height (plugin->box_image); +- view->box_area.x = (screen_width - view->box_area.width) * 0.5; +- view->box_area.y = (screen_height - view->box_area.height) * 0.5; ++ view->box_area.x = (screen_width - view->box_area.width) * plugin->dialog_horizontal_alignment; ++ view->box_area.y = (screen_height - view->box_area.height) * plugin->dialog_vertical_alignment; + view->dialog_area = view->box_area; + } else { + view->dialog_area.width = view->lock_area.width + entry_width; + view->dialog_area.height = MAX(view->lock_area.height, entry_height); +- view->dialog_area.x = (screen_width - view->dialog_area.width) * 0.5; +- view->dialog_area.y = (screen_height - view->dialog_area.height) * 0.5; ++ view->dialog_area.x = (screen_width - view->dialog_area.width) * plugin->dialog_horizontal_alignment; ++ view->dialog_area.y = (screen_height - view->dialog_area.height) * plugin->dialog_vertical_alignment; + } + +- x = screen_width / 2.0 - (view->lock_area.width + entry_width) / 2.0 + view->lock_area.width; +- y = screen_height / 2.0 - entry_height / 2.0; ++ view->lock_area.x = ++ view->dialog_area.x + ++ (view->dialog_area.width - ++ (view->lock_area.width + entry_width)) / 2.0; ++ view->lock_area.y = ++ view->dialog_area.y + ++ (view->dialog_area.height - view->lock_area.height) / 2.0; + +- view->lock_area.x = screen_width / 2.0 - (view->lock_area.width + entry_width) / 2.0; +- view->lock_area.y = screen_height / 2.0 - view->lock_area.height / 2.0; ++ x = view->lock_area.x + view->lock_area.width; ++ y = view->dialog_area.y + ++ (view->dialog_area.height - entry_height) / 2.0; + + ply_entry_show (view->entry, plugin->loop, view->display, x, y); + } +@@ -783,6 +792,20 @@ create_plugin (ply_key_file_t *key_file) + plugin->watermark_vertical_alignment = .5; + free (alignment); + ++ alignment = ply_key_file_get_value (key_file, "two-step", "DialogHorizontalAlignment"); ++ if (alignment != NULL) ++ plugin->dialog_horizontal_alignment = ply_strtod (alignment); ++ else ++ plugin->dialog_horizontal_alignment = .5; ++ free (alignment); ++ ++ alignment = ply_key_file_get_value (key_file, "two-step", "DialogVerticalAlignment"); ++ if (alignment != NULL) ++ plugin->dialog_vertical_alignment = ply_strtod (alignment); ++ else ++ plugin->dialog_vertical_alignment = .5; ++ free (alignment); ++ + plugin->transition = PLY_PROGRESS_ANIMATION_TRANSITION_NONE; + transition = ply_key_file_get_value (key_file, "two-step", "Transition"); + if (transition != NULL) { +-- +2.20.1 + +From d62be07815fc4830c5630c9b52a5b7ec08c62637 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 13:33:08 +0100 +Subject: [PATCH 39/74] two-step: Make clearing the dialog-background when + using the firmware background optional + +Since the ask-for-password or ask-question dialog and the firmware background +may intersect so far we've been clearing the screen to black when showing a +dialog and using the firmware background. + +This is not always desirable, this commit adds a new +"DialogClearsFirmwareBackground" option to the two-step based theme config +file, which enables this behavior when set. + +The new default is to keep using the initial (firmware) background when +showing a dialog, which matches the non firmware-background paths. + +Also update the bgrt theme to use the "DialogClearsFirmwareBackground" +option, keeping the current behavior for that theme. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 10 +++++++--- + themes/bgrt/bgrt.plymouth.in | 1 + + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 0f79795..53f19ee 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2009 Red Hat, Inc. ++ * Copyright (C) 2009-2019 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -17,7 +17,7 @@ + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * +- * Written by: William Jon McCann ++ * Written by: William Jon McCann, Hans de Goede + * + */ + #include "config.h" +@@ -138,6 +138,7 @@ struct _ply_boot_splash_plugin + uint32_t is_visible : 1; + uint32_t is_animating : 1; + uint32_t is_idle : 1; ++ uint32_t dialog_clears_firmware_background : 1; + }; + + ply_boot_splash_plugin_interface_t *ply_boot_splash_plugin_get_interface (void); +@@ -846,6 +847,9 @@ create_plugin (ply_key_file_t *key_file) + if (ply_key_file_get_bool (key_file, "two-step", "UseFirmwareBackground")) + plugin->background_bgrt_image = ply_image_new ("/sys/firmware/acpi/bgrt/image"); + ++ plugin->dialog_clears_firmware_background = ++ ply_key_file_get_bool (key_file, "two-step", "DialogClearsFirmwareBackground"); ++ + progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction"); + + if (progress_function != NULL) { +@@ -1081,7 +1085,7 @@ draw_background (view_t *view, + */ + if ((plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY || + plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) && +- view->background_is_bgrt) ++ view->background_is_bgrt && plugin->dialog_clears_firmware_background) + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, 0); + else if (view->background_buffer != NULL) + ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index dc5eaf5..86c2622 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -14,3 +14,4 @@ TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 + UseFirmwareBackground=true ++DialogClearsFirmwareBackground=true +-- +2.20.1 + +From 6117fe683ba704041404ee3462faf0f768e2f396 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 9 Jan 2019 14:38:26 +0100 +Subject: [PATCH 40/74] plymouth-populate-initrd: Don't assume the ImageDir is + the theme-dir + +Before this commit plymouth-populate-initrd was only recursively copying the +/usr/share/plymouth/themes/$PLYMOUTH_THEME_NAME to the initrd, assuming +that ImageDir will point there. + +This makes it impossible for 2 themes to share their ImageDir, which is +desirable for example for the spinner and bgrt themes, which use the same +images with slightly different settings. + +This commit also makes plymouth-populate-initrd also copy the ImageDir +if it is different from the theme-dir, making it possible for ImageDir +to point to a different dir. + +Signed-off-by: Hans de Goede +--- + scripts/plymouth-populate-initrd.in | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/scripts/plymouth-populate-initrd.in b/scripts/plymouth-populate-initrd.in +index c2f46c0..109b649 100755 +--- a/scripts/plymouth-populate-initrd.in ++++ b/scripts/plymouth-populate-initrd.in +@@ -412,6 +412,8 @@ if [ $THEME_OVERRIDE ]; then + fi + + PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//') ++PLYMOUTH_THEME_DIR="${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}" ++PLYMOUTH_IMAGE_DIR=$(grep "ImageDir *= *" ${PLYMOUTH_THEME_DIR}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ImageDir *= *//') + + if [ ! -f ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then + echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" >&2 +@@ -423,8 +425,12 @@ inst ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so $INITRDDIR + [ -f "${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so" ] && inst ${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so $INITRDDIR + inst ${PLYMOUTH_PLUGIN_PATH}/renderers/frame-buffer.so $INITRDDIR + +-if [ -d ${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME} ]; then +- inst_recur "${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}" ++if [ -d "${PLYMOUTH_THEME_DIR}" ]; then ++ inst_recur "${PLYMOUTH_THEME_DIR}" ++fi ++ ++if [ "${PLYMOUTH_IMAGE_DIR}" != "${PLYMOUTH_THEME_DIR}" -a -d "${PLYMOUTH_IMAGE_DIR}" ]; then ++ inst_recur "${PLYMOUTH_IMAGE_DIR}" + fi + + if [ -L ${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth ]; then +-- +2.20.1 + +From ee2025824af4aaa119046a9f9a9399d36792b016 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 9 Jan 2019 14:42:53 +0100 +Subject: [PATCH 41/74] themes: bgrt: Remove duplicate images + +The bgrt theme is using the exact same images as the spinner theme, +remove these and point ImageDir to the spinner theme dir instead. + +Signed-off-by: Hans de Goede +--- + themes/bgrt/Makefile.am | 73 -------------------------------- + themes/bgrt/animation-0001.png | Bin 1579 -> 0 bytes + themes/bgrt/animation-0002.png | Bin 1573 -> 0 bytes + themes/bgrt/animation-0003.png | Bin 1591 -> 0 bytes + themes/bgrt/animation-0004.png | Bin 1594 -> 0 bytes + themes/bgrt/animation-0005.png | Bin 1624 -> 0 bytes + themes/bgrt/animation-0006.png | Bin 1646 -> 0 bytes + themes/bgrt/animation-0007.png | Bin 1666 -> 0 bytes + themes/bgrt/animation-0008.png | Bin 1634 -> 0 bytes + themes/bgrt/animation-0009.png | Bin 1640 -> 0 bytes + themes/bgrt/animation-0010.png | Bin 1613 -> 0 bytes + themes/bgrt/animation-0011.png | Bin 1621 -> 0 bytes + themes/bgrt/animation-0012.png | Bin 1619 -> 0 bytes + themes/bgrt/animation-0013.png | Bin 1617 -> 0 bytes + themes/bgrt/animation-0014.png | Bin 1618 -> 0 bytes + themes/bgrt/animation-0015.png | Bin 1615 -> 0 bytes + themes/bgrt/animation-0016.png | Bin 1605 -> 0 bytes + themes/bgrt/animation-0017.png | Bin 1581 -> 0 bytes + themes/bgrt/animation-0018.png | Bin 1582 -> 0 bytes + themes/bgrt/animation-0019.png | Bin 1578 -> 0 bytes + themes/bgrt/animation-0020.png | Bin 1558 -> 0 bytes + themes/bgrt/animation-0021.png | Bin 1545 -> 0 bytes + themes/bgrt/animation-0022.png | Bin 1541 -> 0 bytes + themes/bgrt/animation-0023.png | Bin 1481 -> 0 bytes + themes/bgrt/animation-0024.png | Bin 1492 -> 0 bytes + themes/bgrt/animation-0025.png | Bin 1455 -> 0 bytes + themes/bgrt/animation-0026.png | Bin 1427 -> 0 bytes + themes/bgrt/animation-0027.png | Bin 1407 -> 0 bytes + themes/bgrt/animation-0028.png | Bin 1385 -> 0 bytes + themes/bgrt/animation-0029.png | Bin 1348 -> 0 bytes + themes/bgrt/animation-0030.png | Bin 1316 -> 0 bytes + themes/bgrt/animation-0031.png | Bin 1245 -> 0 bytes + themes/bgrt/animation-0032.png | Bin 1185 -> 0 bytes + themes/bgrt/animation-0033.png | Bin 1111 -> 0 bytes + themes/bgrt/animation-0034.png | Bin 1061 -> 0 bytes + themes/bgrt/animation-0035.png | Bin 981 -> 0 bytes + themes/bgrt/animation-0036.png | Bin 989 -> 0 bytes + themes/bgrt/background-tile.png | Bin 79464 -> 0 bytes + themes/bgrt/bgrt.plymouth.in | 2 +- + themes/bgrt/box.png | Bin 870 -> 0 bytes + themes/bgrt/bullet.png | Bin 131 -> 0 bytes + themes/bgrt/entry.png | Bin 1431 -> 0 bytes + themes/bgrt/lock.png | Bin 329 -> 0 bytes + themes/bgrt/throbber-0001.png | Bin 1578 -> 0 bytes + themes/bgrt/throbber-0002.png | Bin 1568 -> 0 bytes + themes/bgrt/throbber-0003.png | Bin 1561 -> 0 bytes + themes/bgrt/throbber-0004.png | Bin 1570 -> 0 bytes + themes/bgrt/throbber-0005.png | Bin 1585 -> 0 bytes + themes/bgrt/throbber-0006.png | Bin 1597 -> 0 bytes + themes/bgrt/throbber-0007.png | Bin 1629 -> 0 bytes + themes/bgrt/throbber-0008.png | Bin 1604 -> 0 bytes + themes/bgrt/throbber-0009.png | Bin 1605 -> 0 bytes + themes/bgrt/throbber-0010.png | Bin 1601 -> 0 bytes + themes/bgrt/throbber-0011.png | Bin 1595 -> 0 bytes + themes/bgrt/throbber-0012.png | Bin 1602 -> 0 bytes + themes/bgrt/throbber-0013.png | Bin 1612 -> 0 bytes + themes/bgrt/throbber-0014.png | Bin 1601 -> 0 bytes + themes/bgrt/throbber-0015.png | Bin 1588 -> 0 bytes + themes/bgrt/throbber-0016.png | Bin 1577 -> 0 bytes + themes/bgrt/throbber-0017.png | Bin 1572 -> 0 bytes + themes/bgrt/throbber-0018.png | Bin 1601 -> 0 bytes + themes/bgrt/throbber-0019.png | Bin 1608 -> 0 bytes + themes/bgrt/throbber-0020.png | Bin 1583 -> 0 bytes + themes/bgrt/throbber-0021.png | Bin 1602 -> 0 bytes + themes/bgrt/throbber-0022.png | Bin 1595 -> 0 bytes + themes/bgrt/throbber-0023.png | Bin 1603 -> 0 bytes + themes/bgrt/throbber-0024.png | Bin 1605 -> 0 bytes + themes/bgrt/throbber-0025.png | Bin 1604 -> 0 bytes + themes/bgrt/throbber-0026.png | Bin 1605 -> 0 bytes + themes/bgrt/throbber-0027.png | Bin 1615 -> 0 bytes + themes/bgrt/throbber-0028.png | Bin 1614 -> 0 bytes + themes/bgrt/throbber-0029.png | Bin 1588 -> 0 bytes + themes/bgrt/throbber-0030.png | Bin 1580 -> 0 bytes + 73 files changed, 1 insertion(+), 74 deletions(-) + delete mode 100644 themes/bgrt/animation-0001.png + delete mode 100644 themes/bgrt/animation-0002.png + delete mode 100644 themes/bgrt/animation-0003.png + delete mode 100644 themes/bgrt/animation-0004.png + delete mode 100644 themes/bgrt/animation-0005.png + delete mode 100644 themes/bgrt/animation-0006.png + delete mode 100644 themes/bgrt/animation-0007.png + delete mode 100644 themes/bgrt/animation-0008.png + delete mode 100644 themes/bgrt/animation-0009.png + delete mode 100644 themes/bgrt/animation-0010.png + delete mode 100644 themes/bgrt/animation-0011.png + delete mode 100644 themes/bgrt/animation-0012.png + delete mode 100644 themes/bgrt/animation-0013.png + delete mode 100644 themes/bgrt/animation-0014.png + delete mode 100644 themes/bgrt/animation-0015.png + delete mode 100644 themes/bgrt/animation-0016.png + delete mode 100644 themes/bgrt/animation-0017.png + delete mode 100644 themes/bgrt/animation-0018.png + delete mode 100644 themes/bgrt/animation-0019.png + delete mode 100644 themes/bgrt/animation-0020.png + delete mode 100644 themes/bgrt/animation-0021.png + delete mode 100644 themes/bgrt/animation-0022.png + delete mode 100644 themes/bgrt/animation-0023.png + delete mode 100644 themes/bgrt/animation-0024.png + delete mode 100644 themes/bgrt/animation-0025.png + delete mode 100644 themes/bgrt/animation-0026.png + delete mode 100644 themes/bgrt/animation-0027.png + delete mode 100644 themes/bgrt/animation-0028.png + delete mode 100644 themes/bgrt/animation-0029.png + delete mode 100644 themes/bgrt/animation-0030.png + delete mode 100644 themes/bgrt/animation-0031.png + delete mode 100644 themes/bgrt/animation-0032.png + delete mode 100644 themes/bgrt/animation-0033.png + delete mode 100644 themes/bgrt/animation-0034.png + delete mode 100644 themes/bgrt/animation-0035.png + delete mode 100644 themes/bgrt/animation-0036.png + delete mode 100644 themes/bgrt/background-tile.png + delete mode 100644 themes/bgrt/box.png + delete mode 100644 themes/bgrt/bullet.png + delete mode 100644 themes/bgrt/entry.png + delete mode 100644 themes/bgrt/lock.png + delete mode 100644 themes/bgrt/throbber-0001.png + delete mode 100644 themes/bgrt/throbber-0002.png + delete mode 100644 themes/bgrt/throbber-0003.png + delete mode 100644 themes/bgrt/throbber-0004.png + delete mode 100644 themes/bgrt/throbber-0005.png + delete mode 100644 themes/bgrt/throbber-0006.png + delete mode 100644 themes/bgrt/throbber-0007.png + delete mode 100644 themes/bgrt/throbber-0008.png + delete mode 100644 themes/bgrt/throbber-0009.png + delete mode 100644 themes/bgrt/throbber-0010.png + delete mode 100644 themes/bgrt/throbber-0011.png + delete mode 100644 themes/bgrt/throbber-0012.png + delete mode 100644 themes/bgrt/throbber-0013.png + delete mode 100644 themes/bgrt/throbber-0014.png + delete mode 100644 themes/bgrt/throbber-0015.png + delete mode 100644 themes/bgrt/throbber-0016.png + delete mode 100644 themes/bgrt/throbber-0017.png + delete mode 100644 themes/bgrt/throbber-0018.png + delete mode 100644 themes/bgrt/throbber-0019.png + delete mode 100644 themes/bgrt/throbber-0020.png + delete mode 100644 themes/bgrt/throbber-0021.png + delete mode 100644 themes/bgrt/throbber-0022.png + delete mode 100644 themes/bgrt/throbber-0023.png + delete mode 100644 themes/bgrt/throbber-0024.png + delete mode 100644 themes/bgrt/throbber-0025.png + delete mode 100644 themes/bgrt/throbber-0026.png + delete mode 100644 themes/bgrt/throbber-0027.png + delete mode 100644 themes/bgrt/throbber-0028.png + delete mode 100644 themes/bgrt/throbber-0029.png + delete mode 100644 themes/bgrt/throbber-0030.png + +diff --git a/themes/bgrt/Makefile.am b/themes/bgrt/Makefile.am +index 4cb7aba..5fd40dd 100644 +--- a/themes/bgrt/Makefile.am ++++ b/themes/bgrt/Makefile.am +@@ -1,79 +1,6 @@ + themedir = $(datadir)/plymouth/themes/bgrt + nodist_theme_DATA = bgrt.plymouth + +-dist_theme_DATA = \ +- background-tile.png \ +- box.png \ +- bullet.png \ +- entry.png \ +- lock.png \ +- animation-0001.png \ +- animation-0002.png \ +- animation-0003.png \ +- animation-0004.png \ +- animation-0005.png \ +- animation-0006.png \ +- animation-0007.png \ +- animation-0008.png \ +- animation-0009.png \ +- animation-0010.png \ +- animation-0011.png \ +- animation-0012.png \ +- animation-0013.png \ +- animation-0014.png \ +- animation-0015.png \ +- animation-0016.png \ +- animation-0017.png \ +- animation-0018.png \ +- animation-0019.png \ +- animation-0020.png \ +- animation-0021.png \ +- animation-0022.png \ +- animation-0023.png \ +- animation-0024.png \ +- animation-0025.png \ +- animation-0026.png \ +- animation-0027.png \ +- animation-0028.png \ +- animation-0029.png \ +- animation-0030.png \ +- animation-0031.png \ +- animation-0032.png \ +- animation-0033.png \ +- animation-0034.png \ +- animation-0035.png \ +- animation-0036.png \ +- throbber-0001.png \ +- throbber-0002.png \ +- throbber-0003.png \ +- throbber-0004.png \ +- throbber-0005.png \ +- throbber-0006.png \ +- throbber-0007.png \ +- throbber-0008.png \ +- throbber-0009.png \ +- throbber-0010.png \ +- throbber-0011.png \ +- throbber-0012.png \ +- throbber-0013.png \ +- throbber-0014.png \ +- throbber-0015.png \ +- throbber-0016.png \ +- throbber-0017.png \ +- throbber-0018.png \ +- throbber-0019.png \ +- throbber-0020.png \ +- throbber-0021.png \ +- throbber-0022.png \ +- throbber-0023.png \ +- throbber-0024.png \ +- throbber-0025.png \ +- throbber-0026.png \ +- throbber-0027.png \ +- throbber-0028.png \ +- throbber-0029.png \ +- throbber-0030.png +- + MAINTAINERCLEANFILES = Makefile.in bgrt.plymouth + CLEANFILES = bgrt.plymouth + +diff --git a/themes/bgrt/animation-0001.png b/themes/bgrt/animation-0001.png +deleted file mode 100644 +index 6bd823976167325046fb5759916e6883936461a2..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1579 +zcmYL}c~lZu7{$Q^#a&RLMI$t|oMDkPlaj_Tw@eZ%N->2nDL@n=$kM{ea)enV3c{#@jVv}3fJsZ|Ffn^s98L-Y +z!_Q=3_OJvP9$U;w-!DkR2-27wCLhD+vAA4j=6^)f*-Y+ky0p*IT!omgBBcnJ0Dmkl +z2!q36{P9Q}E;wLKFcvqx`-cW|#%Vqi&*CrvSZwgW2luwqyTj~Re_bUrW!}U^Fnin0 +zn)AH2!7OE_0R90Qi^b304WgJ$*Ljn|U~-v&6fTRCB4DL+k$7w>kB@ZJOU(h;d?3!e +zAv5#;H__ODyR`FKvkm=PE@rTqd?Y1>!!r|r^AE~CiSPpeEIT7f-^EiQ`6pxd?b_;8 +zP)82+ZH%haDdJqBR-j2?d2aAI%OPLofn`mD*4Ycj4)8pcaf#Mar9q26uB?WVi*F-V +zk^Htkcv^63W^MK7VePp0u?6X=+S)af+FHJLj>+Y6jXg%A(K(Dz)mqwS%+M|#nDn}? +znUdXkELYdwHA>1(%s5WqR+qm;z}tm2xuf_4SFQFIviA~F@1b711lgYkmrDi+1VYWd +z5pqwU(#vvT_?{$>cZc&6u}cCeqzV;LHv)e3p+EZgl4UWc&!KZ1%iLo+Ks?|f +z2v=fN)RhR1rc{+usNMHImm#-SzYUsB&~Z$>(WMPTt?y5iUvu>?686yFY`P->@y>W> +z!EXTFRDTuKm{vaVCwH6^Ow`Ka;W0Xt$Z8hi04u*OTdZU7{D16qUALhJIr-CP6i1lj +zJQWi3OoaM~NI!y6J=TSr2vj|Yy@j-Ve9?$6^fhH;f~WMsKsIQJ*YIqt%2tK$8=QG+ +z-&%#yR|J%0(CC!DwUHy1(3qEKSdA(Z%FH$8S^n&ONlRw1hu@$gF{gTC?5rn+dm>csxL|Xl`!2A$p(()iK7z}!pYsk?G%N62gt4BRho}h +zQsMzRsAvhvcjDX0mm9>%4s9$TigryF9O%=Q$h-t**T;5+vg>GKd%5?gLPLylRJ#(w +z=aO3Vc-58WzNTiF8>+R7ZRf7JFm;7k>6KOaDf;D*UkB=@eAph=BpsJ@MbYUchh0QQ +zx91M|n)5B2CtS%VvkfP +z2^jgew?K)8Ez|~*NAB%6$;%0j;S+ysFQq&$-63DPvR5m$Rn>=py!g$+(bW~gfy=I! +zY`CGu%42o+19OViw}=rsfmWQ~wycPg1UBB!LQ29!?;j?x4n)ZO#`I6{?%0(M*XX#Y +zrTcP~#F@FqiIU(iJEukOPJ3RT{5?r{tPvJKC}sST1uX3I(aI{;z}qf9`r^0@COUPv +T@C3yC*#RQMHj|n{lcj$H!ojpL + +diff --git a/themes/bgrt/animation-0002.png b/themes/bgrt/animation-0002.png +deleted file mode 100644 +index ef8ff54a5ba88688b91eeb3eba6753e9dc28a169..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1573 +zcmYLJdpOg39R4+z8J28?quXRSrOcfaV{up)l}pn>4NYctX`96un@gs2LAsGVMQG)6 +zN~!bYx;ow5r8OH1549TVDOdokpXdAeywCH#@AG~?e|_@z1qVV6Ee!zxfMSFE +zL$rukY6E@kWU$#^wE&?79b^E25qzna0awZ_v?Q7t5W)P7m_z_j2~;uxl}IF$W8zQ@ +zdK~H~k%^)urIM-1%mfrOfj}lOPz)N8LLt!qLx+XKZZ#FoE@D! +zQBF=MXBUK%lb738FGr`jBR49vo)t@;Fd~@%I68X$`<#)R%1f&G)2`3>B`88SukDoY +z!4I?GfT%|Pu}b}?4rkTNJ66gpS9pSb^wC)Y**XzW>g$YCs(o~ZEq9f_OZ3}jSmO@s +z;+nMW^$mGmo?|3@b=G>dSTgfFfL)$djE8Q|zo(|cGb`O;VidyAQiM=^*5bQqdXfL +zAZnC0HSO{&Nv{hx2^^C5q}&W*tqF47>^p3Z7+t(Sfi=TmZymx4>YpIbO|+;7+VZB3 +zU!_VGJt|s@%8o%<$mx@OH0gBcjD0TNG)hNPVbGfPoXQP=531f{*JL)~yff%~vRUC` +zId1j}c*Wtl9ka$Fpt>!2`L`#wzs%XHS1RQBgm0X$GCQ#Z{=N3VgDc34lEu3+pV_AQ +zN8StDLs`xQtuYH3}@RvuoWXbt +zLItOx1y3`GvVSHEI!Dqpz)2aIe<^LBU~MvcUFqF1?Q@{9 +zOs|M70@qHrn_TYDgl+MA{aHERzX+P#ig#fA%9;tgy4(IErXSsthfwieBgqA} +z?eW%_4S~~~ZQiSC)Z0;Y!4>A+Xid(eBQs;(%Wg-Et-^oF|_au+8)%Lt>T&wrJf=sjvFXJiJp7 +z5_vdWiBQNRX=XK%HG*;1d?70#2IH(?;Ma*B-siLtC3hx1MVd<0?|qQn(n_xb@GZPf +z8B{icNq@^yY%0Xzm1-O}cQQ}Ge%4vI@WpM;>ew9exzU61<88xjL{Y6^0z=3BHG|ZE +z%y~cRCv(&gK`Hu41$qQYOBkqQjy5YTQ{KRW*hcsAedXubuwu)L!(OLii + +diff --git a/themes/bgrt/animation-0003.png b/themes/bgrt/animation-0003.png +deleted file mode 100644 +index 205380b1ca8e000f19adb89243a71cd48bfa579b..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1591 +zcmYLJdpOg39RAH_u~F8#teZP=lx?jtmvdHBqO1!tSu!kEcCpPAVQi%xMMA1Yom4I- +zLz3jOIfhcAa?1%j5prL}=z4xS=RD{8d_SM}dEWPZ-tYU@SF)Gvs*hNS002PWZRfWA +zAR5n)4jkOPsHl%1=yG=Y@&Evdo*xKs +zV>b|t@py+#_6|7wOmNP1&|@&~@nSIP01oHy?AdI}L}$?f8jHcC@fmEEF#&gk!!usgp8y)r^M?IkLpt~W +zH*Im7-Ml{YL3#0y@Do8{be^#%jmZHKz;7VNUc}e{0IbDr+g2}%ZdT@#WH0X}rz@p* +zyp&MY5Y11=t05<$u6k#o{peXOF_CYsr)T!&DGZA@X+@b@ +zBv8XDB<-<%GhY(Da}mze$90h@V`{ZGnW)XUWYW;ce)sFVOtHCb5SzDeIXDYIj*`i%OiWQuTrVUF< +z@Yww15@~K)NQyC;bzbKoQ~<1o6+t7Cd`CFTZDk3bDjQC^d8W$KBR}yeq3qH`U3eFw +z7uu*eth$z{^!QQ(*fh9TJ<8A|9q?ZBstWOowvVFDQWh&OVYA*UZkJ +zpZjIN4jhKCMShCX78KR>+v1aCq5g5?KsK!HK*YFrWQ^gvm$tO>S-mgqs$-PA-^m3`XK6cFdHyI}BZ;6i5GF4bKM1s!hdk!=2XT-p7K8%D28M$9mmWb{b^r +zK8nO_$Bg}Vl$GBcGr*v4(E=;3eb43VO?Na81sxuN?{kG}@ylm1!`L#(!TO$C#N;US +zFh^HBV@45cH}8Gd{d}|^J-xb^7c>q_(Lz4x-SqlbRwNKKyg*D)$ZnB@lThef#%qs+ +zoT*hX_3?uS_5x|i=ukYmOS>aJWRl&m`~J8KTdDjOeYGuJ_ueA4S%3lZxv{9gF{^8xvNFIV +zq_#e4X0y#SdN^HRvR-W3J>JMdWf!_xK)cH%PFmCaqGo66_p;K@EOp$e{L;pbyrtKJ +zw_7H^4zG-bR_SKLM+Bo!lz!tmR~W<M{<`dUMl-l%DyyivK6O{a9{eNClI5iavh~W6OKrTeI_8!hSn}(@s?hSI +zFKC44=(wX=Vc9=zsb-y-IHG!0Ig!|8H)3AXJ*`_WThEnuAbZRU41KeOb%0AWU!#ol +d5A3`Z2SJL6rEpG+2>kc}x9#L@GUtGVzX5+W%Q^r6 + +diff --git a/themes/bgrt/animation-0004.png b/themes/bgrt/animation-0004.png +deleted file mode 100644 +index 6038af8bd429a28118214dd308533e60107d531a..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1594 +zcmYLJdpOg39R6uTVQ%9@7wt)?7Te5a?aZZI3URO!B{nm&7_&_^Mr@TXqM}kW6FNl} +zlHA$qFzFB}HA;(e=|V?thn;q&bIx-<&-e3rpXYtw=ly>E`ke9i+Xc~DqXhr}#A~;E +zpbBBjy;4IpnMp}ADp*C|9l`_vZRm2V0oU_QRHO^bBben$jU@w!=y)0#ahOV@5lILp +zgM^?^SqOS8n--tQibk-a$uu$(!K72;;>e8u&?X|592XhE?E;Y)Ldk7p~|Db?Ac4DkpUzU`|q>MFMZ~#(pLUhg+W{v?J#;yNEK(W +z%(-H_q6dRliN?z!oK7AT?7ktP#q4%VGKu_M8E%$UBepVBw00w+-XovUs8hC8o!S63C +zZ9hN~Iet%N3Y9ajt!i(WExg^%9Q~cmM>BjE;oGtTv +z@B1qQJiV{CK6kdc|2cn;rB9E0OW<5rj`jW*j8<+nK>+K9 +z{x*lZRXz`%MUQ`W=Kc|tIn*_@T9WW}Ge$=zl`6Jxze9j>be&fSFBJniMn}6rLFG9eR*qvwUgi} +zHS{&gg0iDUa>}V1p3IxpS>ob49R_0L7GoDEKWF3SY4Qfe`SBw^^|MZWIaO9y?(cnu +zAk?hjrHDQI&NP)2L+FMawQdl3o_kBel&kd^l5)G#wHHfwoT$h;KM7j^6e}Gx6c5J( +zjulLCNn$Y{DpgxD$>!EdLg)q@jo9J(m(5mA?!`B*N=ysC#ix5_hBd9yy`R7EI7+I; +z3KEaVL*)G4(#e2vj%Wej`=b6yhJZS4;fTXCuKbIrZO6 +zviin@#zs52g=Td_e5LPU57$r|`u`8XSTLX-@B3DLpfRA$yQIU&M(q#&e +zZMc_k0*b+;Rh#X8JYZS<$vww8VQ(_Th4HfYAsd9k?tHHoir;o@i9{C+Xi_0f0XAg&g0u|2eU +zwb+7?wtcIhZf-47KO7G)^y`ymbIeobzWEo4!wR)hUzA1LKdTwiU!PYhlg)jMcFU`Y +z!754elp)ACymEW!{HT>vAISg0*1}^aVa`!Gy11v{chUCuo@!6^n&h!ocH9{g-P>s< +z3rg&6`g2YDMDazy$Px?Mcwv`58`5PNX>RI%-G|Mk-}h?Obm0}SIeVA78na3odcZuL +z`myn=B7ulhksI`6kbLi6cpRm}!hgFjTa5AgEvbHBTj!2KIU#n=)6 + +diff --git a/themes/bgrt/animation-0005.png b/themes/bgrt/animation-0005.png +deleted file mode 100644 +index 7a967678a0fcc44fc8238e53a5de9a88d0ff5336..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1624 +zcmYLJeKgzm9{xq+Cs9GGQPf>RYi>uAkg5dr{(8DuC-v4AN#lo%M2@6fjUwrr4x4Js +z?n>hfwR(x7qLvJyD+_{l?j)@)lPcxbvKB+A8{56-e$MyvdCqyB=RDufU!UtIBg0Up +zcBTLTpd!M9qYQ}MX#{APoC_D04S-~a$8!K+x7AL=fUm1;45S}7B#s-($bbNRS|$_1 +zf68DoX>>d%i;hoaaPjPnTxRBZZW^AO1~DNHp2KFaSWwpg5O*#EVkMswjKU33Hak(l +zG%f_V6WmC6H#fXH5$opWW+civ%>`$s4N=r7vKm4;^sJsVi3_gB83jIAb`eVFlk&yCJRd>q_8lo-xRK{|wKiXFwb*g~ntX5O8xR<$r180swGbL~y{VIAlfT +zN5x-4`vy~Qg9k=UnS0PZlfr-PFT$!LKD^~$_V`MAfF3xqX&NBF;?zi-8k7`ScNbaj +zInsaHhJHD1R;nebiCg(UKilRh-;QX@Ox`8VdHvk2)L%TVT{hHD3WY*=2=ke%{=1mt +zvkNia6D=2_o!`7qAsekX&L=9?LsJ(}*9Krmg{?x~&17Qq-!Z9L8PALf<=V=?mxcN; +z4PNK{;6uw;#5qPeMX86cJbBfeDPMz1ditkx*?`PE5di(>sg}bUa1EA+#AzP(g_dVw +z9*+&t+Q&ZYcU`m0vtS8+*yc;;&zj81eWv#D#8!mUFx*k6_UD0hqCzc|$lk8w-rU{L +z7s0le8-Ukhu5WDsq-T#*4I09DTfI^?lj<-U7J$Mh}14MR) +zp4Ixa*DsCO{==R*qoK1eH=38{3R4}!0ejh#1Ooj;frXE8^JV^7<0QUFj;5aE^*z-j +z=p4gq?v>tO@g?nAnkQC>khPXR#r+P{-6fmm1nFEKMw4E1bU-SvF7`G+h6zm1dh~f*T}nUj2Nsm}Sok +zYlJyZZNz`IF22*PZtDGYzx)g8;YzLl_c}5qCijnunN#u0pnJY(sET`Su(=urDdmCg +zcfm*NHo?7~z7Y+IpC%)QkSn}`@fNQxrxOWlPDRh +zK6W`{WOc8ulcRI(g~eU(D#X9ID*SgjdC`@x&+D=!UayJ{Vj`sBTlE_zq+MVg2eoFm +zH0ZBSh>Z>U(LYh)>*Cntt+_4l+K*1SG~cu|En$pMHOmFN9~-$iv?>z`q7qHmkUlUg +zWX$tn&JVHoa}d3%<8vRS+*>K@xSJ$5dVtE{SLj~n9LqcGr+E`ob>F1qqKNE{%A{RH +z{vKIF{Lwk_ovmi>b&^=k47N-cmHC9eB#{xWy-!|jI1}RjrXS!UH{nq&n`zw(Bew0| +zJdZ$6>tiR{^89vfpL@wo6)giD4c3x@wBz7h7!`Ct#mvaX&4S$p7iinNvuM +z*P2vaC1tJU^0kFej8g+bh!V6N7vK7JvG2~}sW35^+xfKPXuMjJ?lm)&T%Qj*vO`ob +z8L-(j=voIaE4dw(f_81$5U(b=+jL0K&pmI1zJIvld~}T#VO7Fw{2koL6l^B>(^D3N +zc;M!Ecf}10A8BdnnMrY8=P$BYW84aVsL9O!VRhej%~~zADse*VY`ah(?UtDi%+~XZ +zDKAEQcw2%_hh>6Ee8rV-uWn@{Q2jB7&RiS&fRvV>^5**^xp&oOeo_3!Ize(_)U;I* +zK287eRoR?s_{2nI>#=^9%9xg6;q&{Klx?zom$cxcSryOuJ4L@s>oVpbVx#j6Mdo0* +Oj6g(4WUx4pD)z0S%!c_k&E%>d)ZX7B)Dy~A3AfO;9qOosEL()rQMJUW13a9DKA +z5hja8p<#IWG)xYYkKyJOvp51i1H)&~S#%zT$7QnF^!)#!KQ)ieK1>z&LCjI8wWvr6 +zpAO)#0eDP600tN65fBivBRB+$~m%PYRPo2e8`6PSwyah2WWIQ9iXt8EDE2=VS5B(v$;GE__)|? +za9A_!H*ZMK|No!<*ssD4JRLL3_J4&J)AHy%j{_7I*Ni{_4ln!;g$4jitGGx)N;<6W +z(%#(0D92N^L#XgQTkAJwor(7A*vgJXTr1x=!vDP|6>)1KnrQt6WcNFq>kt`FAXezQ +zq6nGlvG~e1@!2FQZIv-NeC-D3VN0=Ih?}it%&Qut!92ZeMHc+rTiR%@;gJ#9ep$@b +zryZ`DJLiYng;ecuThM@0Lw7QsW1EG3!&&^h__ZShwWTI5>Ulf*xTkUCrT`bRF`zFAA^x^&X8U^SUhQfU6^O3 +zcLIk%g{7magd9=EpH2^|2DD@t(KGd3p#A;=Z`F;>Lf25JO{Wzb`m3Mr&kKJztQ4v< +zQ^u^v%P%I##YyX0cwl#k60~P{U`DL)4S6b$h(Q|@z2+{dZ>I=?q&-DjDiP%Iqg+(% +zJ{{0XKM!(vI2fE359h!9)U3tY +zm7#grc0QX%QC6u=u|$Xbe7#=$X2L8DiBf +z2St`ur?B$eL|v@T^A6N>+nd&d$Q8KtADa5%aH@1^GOi2SOY%6>vzNRvG!B{lO9+VQ +z6T5(;k{ZV-^COa?b|OK_zucFTSKsz#g&h0qyhYJ&`zq~Yqo=qpLEL1_+7w6CdOFr@ +zV#{KbHYS%skRp~AKjzV|=Z;){S&^%5gxF4I#Qb#cZ@leguDARM;Th2~)C5!aa{Bi5 +zz;_&Ub>gd2yP(JK*mxwL$PF2a{w=7rspIo&tGQ)m<%`Ud=fCc*AN4x6B2uT7N|%xv +zERTuOnoPiN^439vkFErn?ia_n?+@zs>b}UrY&YqvF-gv!)gj-&;LAkqwL{fc&w2d_ +z3CKLrw7j_wjQ&7MohnYQ_3dbO>m9{YCo;MA$HBf$A`^>2j@#3lfLxTHDX?$tTdj0_ +z&N%kS)^N&uQnS~_g&xsOUMR2Qw$Q@+=v+9qRD=u^u#DTBN*}juE}}kG&c%PG=;ZTP +z1MWOASgn*6POdsXn>L<4dp+%DVi~DB@f{ad+37vmf%q7+k)7R`oK^l7`}0nbD`wkl +zmi^oN$d8jI=)m2@P8quSd4b!ORpdS7557C$CV6@DZjMAD+;vZqbv#??z9T86cY6&u +nBWE^xSySxaK8cekt4@HAzE>A1gVN#VdkMrv?Tc*LO&0$fmG<3V + +diff --git a/themes/bgrt/animation-0007.png b/themes/bgrt/animation-0007.png +deleted file mode 100644 +index d2ccac920882325a265fe11365dcf170461cefb7..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1666 +zcmYLJc~H~m7X1-IkTqCjNnA*wPpVOVSt=nRC`dpML1cHJX(A*L$R-K3p@1Z*C|i+N +zl_Ca$by_V;Ky<1g5*0!AO$1wtkx-FENMwtE(qQ}M&3yMeGv}N+_uhYQc5u)k3sa;i +z000*Lev}YBqBd$1O#cf~Qy27L!uLBa001-VjWPf(U$NJd2ZTORLSGh}0e}fS4g*YN +zaX9o?P>>u8#QiKVhFoD5g2tWa!#pN=R|A#Io*bHvm2}u`JA7#H0MWG8B +z01kt71F={Theu(tq0u41msMap*!8kBh=%n0x^Wu9oNx)*FTp +z{e+C<|Mzsk5cY?5jOpc1K8A~8*$e?Hl+NMn5y0ZyGA`Mp0l*09Pw@(iGC6Z8Fn7eq +z>g=hO!NoK7*}1SUU?x|c+kC<_=QB~MeNu_B7IoDa%rGdRlA&+|_zsE{)ax-Qm+P|R +z=cUNcToS{~vs;Sp%ra$*qQn)#0N#D4QPbqq)UVY=)wAp7FzJK-rKP3+e&&#~XFg+Q +z@j}HPbJl-S6+_u+W8Pl!lUr8u9XrlxdsAA6m(t?;<|gnsLbm7rIN|);zJyy3SMpV^ +zd?3cSTZ*Syq*(-6o_&-*`oVFn+v&B%FyExL!u(X`A>|ty{Em5yX=U@KH8b;ZGmWb* +z6B>k{^`jI&UF(EdO?*#7cx*plX=yM)YPhO}VUC)-vbLo{9gY=N&A2O$oX<5xCCSL9 +zI}E>lK$Pz({>lgp2lJk9Z;CJ6W}pxYbjZo0I24Nx?3rc0VQH*-U)uJT+YCe7t6739 +zvwl(qD7Bl(7j@-~Uax;LvX;TO)7e}X5H)#w6>BakX2jz@V7;L7avRw{yyyqf1!oCV +z`B0`3|4gf!TA$h04wCXs;8y-_Uh@uL_|-MLm_5Ii7|zg!+Fo?4$N&Ho{ +zZ}pI}gm#~>pv5!>6RxwZz9Y}Q=Zr~jT6T^RG`1yw7+X)g_2`P*w+*>)OcS6O&_yF6 +z2klZaaJ_-b3dXw>F5F&uR&}K8WL}}&-Dipp?A1qxm)JqAL50&SxzF>hYJK?%&#otQ4v-KRxszyOumD +zkn)1DZS~kj?qcRvPtrnK$nFB=;hDa>z9BsJ&)szqrf-~+Q*IeYYi7T+$q6))L*81e +z;HrJ?kv*9aRi0O{;MDdz`ZWR&NjO45;6D1axU5&Z>E2JJO*YynE-be+vN`myZ#u2< +zNLOWG)$iUB3Y=b-)WWw(*Wp$0;;1CLs3(^2GL^i7A6u2&6w*V-h@#O}+1 +z4U)>s`J!|VxWzna04^o_l1S!hHt87_50|~1VX?nDivyF&VjwXCH|CSO6aHe7%0%IZ +z4}3}hry#YaFAPiiEP5agg-zmu{zV#yi7t4e?!V!6?KExL0}))sS&E21NOVb;oHW|z +zU3Fm@v&{Q#Yl9eps0o^W)ckt+AkNK@Y6z3%C@+24Xc#0MT@9=K{1`DAEz}`&o1a8~ +zU6v?~GWdNmxVX@LNXw<&Cfl|#M;10CkGAGJmwkt5Eq2D)HPD2#yUSvwB0HYc3-!j2y|4-_p934jVY6ud*F*2w80;^NsE3|oh>?7wW +zqdgaWs3o`GJ9ezZ&0Ngey+ztt_cd0ua4Wa^rsg@QK3)H3{q#(AScLwD0{%Whlt +F$=_zH?q>i1 + +diff --git a/themes/bgrt/animation-0008.png b/themes/bgrt/animation-0008.png +deleted file mode 100644 +index 85849c8f8bf3d6f785f39567b2e58f6af9c03102..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1634 +zcmYLJc~p~k7X88pVG+WjRF)v&w3HT=ENmevBy7skQ~^;cNCG4fvnLXOyJ-EYDl!$nkdEqaisbQg34-OLfbj>&hNc@&b{~C-}~#G+)dr- +z;^gB50Dw!tpq}t$8w7Tn2!{k^X+fI)4SzsyY0*iio}@ +z67k(aUn}Rn#>H7F5gqsoLU6dyH@AuDR?%}!OwVWV7yzBe;?f}&pN9#>F$H3b>xA5D +zSifdSvu?-`{r}GpTtrgFGGvuK{tPe8=P<;WbUIgHMF3AAO6$Eg1Ay&PQamMNzhg!H +zwojY(ZaDGei;`N8aD0us3&kCu%=tL%LT%;+v#Z|0Nws3PHQ{)eypHC5HEjcZ%k_a+ +zoAE&8_wE<(DDe&6K~WPg;m$|=-xvRL-EJDbcJE;MLv;mHXe~OM&8B?enowVn)1nX+ +zw=_*=_B5|AJ@X@4CfN&NA4`nh9f3s`j0FVmlKJzaw~XN(^&+$;{RaYibZ7-2I#1aj +zk@@xpwj=)q7M>i>L$~`k=2Sg0$jb~VMC0JBR|yi0*lc1dUozSq4})No9aWCq1*4zs +zrYt5u)Nugel+$71*n32jb1xZEsoO|u&n+_NQ(&>D1f(9_8!QSxY|yz;w5~@l5APn- +z9V_oc-d^-06Uq|2x0pe)CVYBIdC78k{&oVa-W)8u8 +zn|l|FQAUuT=6L380QRR%bwkjruoBy|GHr3uKw6`sY8A{zWHQfrXsVs30$*InO(J}* +zZFTSf?B|xcTLnQah-{FVXECdhb9xLUbtNL5v!$u;z6f4$zx*`4vf`lvVT&@bY1nob +z(o5eD|EN5=>eh(Zha-$>({e3NDDc3%jUeW`Hn(4DR!YHBA0>?zRa@NKZRWtvk?K1s +zL46M<6*di%h2@g$9^Iip>alx$Kht)qPwzk};1!yqk^@`%O;}p4%dQ}wr415!YvDBs +z&o@iEsYX15TJYN6m#podSvh{~t*!vrr{2O-j);3}Lgcx8s{N$$Q{?38lWIxkRj)4st;)ZN#XEGc-N`nfE(Z`qVOMQ1NzPCW+E+tGu=yGhUz%MTbo&M<%Nm`IVIZWt(+ +z>sLND<5hCwded7bliugp>?#6ukJhoth8S98`$tcg+OCpnJ!({!gg~5KGKREmohH-1 +z5{&uaz{JJzGtZ4m&Lo$V=x?9O%WBj^wMj$f73>J@X0W7q*Vgnik#jnONsk(Hh7*a +zshN{?eT$q(U6AT+xJ#3q4wPyJEt4X}sHk6yX9P)=I;_^szC_hZK +zXMU_O*mMQ`kK~ul>AGeq)U&baYHjm~_RZUuJVqX>Cg6Mlhqgr*9g$O4JN@seN|%XY +Vb9~PAKI@GHk`k!#t+6!ue*vul*6aWP + +diff --git a/themes/bgrt/animation-0009.png b/themes/bgrt/animation-0009.png +deleted file mode 100644 +index 3e79b9bcdd7c337bb0de3db1fa15ea8c05e38917..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1640 +zcmYL}dsNbA9L9eLh=N#J8eUp7yW8R?lp%RfysTy^Y8F_KA+i7ou)JZSmANu=X=aDa +zHBHOXRJxF+P^VNhGrO46)FQJ68q*ZaNyA;v&UwG@=bYzx&hvi%dULji2BDFTNB{uP +zA;AIRCSvEt!rXKVQ&K*gV95{ODFgu2g1LbJ=cO2v=p!OWivrmkCV-1i;4*PPvbkJF +zEKVqh#j)5T9G{cSO-K~Q<3#aHE>nmT^4UBdQ}7?x?d33e`}Sr&hMB4`b5#Kh5fi|J +zZbY1$8xBvvy19`yc#uGR0(acel$k%5iC}Y?00@%)Jsxi{)jE@B@%JhM#+>O9*yNXM +z(ro6m%_d2}0RF)`5G4HBMWmQayE&5*%j7Wu29M2Uh}a1{ECGz;3$gRmnWn&kxj?vS +zL#E*WH`jq1y(#T)O}6dd<;k%erVvYEaQP+zZg^t)S&S)>52=;~5+A8r!vG!3$3s)znr{6Cnr~4w6k4jh7+Bl)eh7N<;1r&*qF7+bBkZ?m5A?>XQe)6mj|zLBaF5Bc#e`mNFt +zMG8kh+PBB6PDlmb%PKEkuD=a`){gN~y;cvwl3>n|LmA8I+c!c!Iz~g6WYiPo7E6{7 +zd&|HKVi7b~V{p*T2U9<~mr}Cd2l7!MCZsn}w;^efwESCYZF_nE%%j?OVcT!r-iQ(e +z2|U-VaMLZ((Z)MgyPs~2wvQRsd-0Li)cdP_LVUXK14LQlO69L~I45J@EN*|+fmdUY +z&it9-M-Ny8x$zMF5cF?(}3}#F=^4|?4c1s{lmZ13&Cj|v9MRaO&X)YzRmg#1!R^B`3-s83f +z{-Pd6lyZiGZ?l^u!-vf7R5tYiWIxm-y_816XC|U@6FllhDBVwLJ#A)V +z-vG#v5%V`kzFN4ex2qp3ziIh^_N$ZqJfe`H&mJyZQ`i`%h@Ve_dPiAH%Y+Be%stn$ +z)MO3pL$T()V#bLxxC?5d%_ZW6MJ +zZ?J}B-*4aB%X#ZNu<6i6f(Y>={=znKWqt9c#8;|G0wQi~;xPQx=4@T1U35WtV7SES +z2@&W$b)!4JJF=x&vQ1EP>;`!Pfru-~rjD4apYJLZuXbo_P)M)zD1#Kq2HQqRlNlLS +zr>>ctW|uV`tGG8KT_bK5GAml-i&!40PiA$hP@@g~XpQWr9i`SW-!1gt&k<9niMt@U +zzLv;N=gt%Ij+9a&p)&n?=9kvA95k+u7SSAsHM{dwllEDAcmO(vR;fJc=dXKpYc7(&P9M#qz^ih?O +zM}}yC<1J(}&}N)PYAdqX+qi{?xAxJUlf_#|vhU5QG$&H%*;&U6mp+ +z#`rL}ZFGx%YQ>^AaZGsHA*bW1Z7&U@H@ryeGtNWr_;J;x#>#lt&bm|L;o*BbhQ|5I +zn<|A?dmFc`uk=jBlf0rqE7k*FsT~*7MRyH#5$=H)&g5qA%yvbE?RG77q0&L`rR*&0 +z_T>F<=&0nd1cD|E{#+%Y?TWZyyw;Oft-nOL`Bd|~*e85VZGB&&RBRQB-a6dda+%iq +cdAHU$Pk2Da5jTWPn|?|lgd7@B?N87A3!Dev#Q*>R + +diff --git a/themes/bgrt/animation-0010.png b/themes/bgrt/animation-0010.png +deleted file mode 100644 +index 1f64875a17c6ac9bea646cbfc133dfe5013ea639..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1613 +zcmYLKdpOg39R9JHJ1fbxTFG?X)n&+S5lbae%w-K*tah^vEeb2QBbQSysR`9_=|VMK +zR%gdlC!;Va*AmH*R90jpIaAMh&gc1lKJW9q@B6&p&wrn+-MhT?bwZaWJ(3vY#$;Q0CbHOTMalXG*yvqJg;EhHX5A@AY)hzD)JzW!H9@Laye1R +zXc`a6rt=xBI9?2r7ei%GxkxUX#$-}C{~;ohPGwRe1+8FJl<8uWX9SN5U{Gir5{*V; +zurM^*$DnhCQkcsht1+ +zM4;>mfpa{Sy!2-{KZ;J}!U7@~Y!w1%4DMKw=|%tmj}SaP0)w^Figsp)dqLBq;TJz! +zT`(Fpky#5e%OjUV!n8kyW!*LWp^=K-4999WkVsbB6G}h;mKHazyl9ytJ1G=Pp70!3vp~YH}he`t4 +zGQeLudDFMaN6aoNxk^Wc`eDdRZTl280{qPp3!z$5<9gwD$SUg**LvF&Trnue)sUnf +zOMk2ce2;40y&rqL&v0!!LZECMy>ms&BX?syAPccUf=XX&@)U+=)O?R=nVxLhQmp55 +zX-zjV89bnIZszQ`-?O}WTfkuR?4iN+3h<1sskFfzbC+^;vJ{Rr9en`9-yShiEHCUi +ziF&Db**lz4^m!dl&p_RGR#PqycOS)9J-F<1zCSn6tAv886GR2Z?Z+tHL-Js1utakl +z-F(>r25euW#2^`PQwtpu_84T?rUpfR*b4s&nK2MPulix$;0V%s`XP>7ma`>*SrQj- +zE>v$wVVry_Hi~}l3gJ=au67mtg;&6p2%Di>o}J(fe?`vtcRwg*4k>MVR|*Q99h6zz +z9vbc7TOx~If4T(kfUGh4sezO85L`)nPl#@kL2 +zqKG60*(|IK^Sct9N6JZT|Hkc>6Uif$Z>4S3_*)G>Y;!b+3<2M|$wPyfnHNWOIqY!P#O<&$6z4y6nJjxPt6Za4`ji&CfFE?AI)h%0Rr3>GrV1Z`=o* +z6Us!58rjRIAikk}r?W_{rEz{dpqDkreBRPJ(ENJvLv(+>uMAS94Zj(9LPA`r);HGN +zLTZtiKRD1cdcZg--PNj_v)@}or@`79#}5r9xD5q7`zLQnS4Oqhu(UT(vjg_hVqPMx +z8%BYgd@5swN1G%In|(IgtuBSYLsPr-VlM6c#(!&OdHhE5vGnNrA?TT+(-+e!z-vr4 +z*RxbSD|FD?OU&JE+#F6R6wl$FI61XENvzAy<`Agl%IN`?0Eus!{YVzybX?(?_Uw5) +zMLT`+v#8nQFp-wrmmq!0$SOobX`0Rt{igBt32ze5&ELCV3tgQS?edE2C|Nbuw5`tV +zR>%1Bdz%zZIsR#t+c?w7U*6Gd?zP;^omVUXU4IBqxH=Cl-Uoo-wac>>PZs>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdIXW;hZ*B4#0000GbVXQnRB3Hx05C8*FfckWFgh_Y_1G7K00008bVXQn +zMsi_oWdJcTQGWRT0000HbVXQnLt$-Ya$x{NVQpn{VJdbW>wx +zZe;*rZfR{{bZKvHATuy#aC0CJiliLMUe=XYJNLD%eqvkgs!jIWp2pcw +zu7<9q=zq9bUIZ@y*ZaV3unXJ;-k%A61SsqrM^NJ|qysiPC%DDbYe_M}{=w%(v7CEo(sGq{ul-2Vi; +zM<;HosAN0a9hJ;%>r3Ey@F4Jz_!pRjL#R{FTDAKoAv|j`lCsIjPk@tjb$2Rf-DoWv +zNr2sF!E3+(I+J?^+rWTM{CVKi{|)TceqgtbfhT~8w&LKD-FOFl3qCWZ@#Jd}TmYRN +z0SWFwEBFf->>~IQ{0e5AopL6D&aih7ybaz0l8J=u(7V`w$GP9!H1@>63Icitq=J8t +zt=fvk7vKzbSHX539C^nk{1P@FfRBI)kICX*HI{LuNfz9X)j!vE=YhR{6Y#z-fOFV- +z1w;Eh8;V2r?AC|iQ{eeZ4(*%$3u{TFeHy9U08Y71ynidd48EZ{hiwS1Tq%XPhppA0 +z0=P=HLpAoj-KCZYTjxS6X$ZU_4rm#vbj@7?$r)z{5n@y}x{57C8o +z{q0ZJufv^o$<~>Sl{j!)38?cPU`Jr=T5@v8*U$v!m+j7+{4_V58<%Yc$i_(*e(zQ< +znM6wj<93$`ta2u4H{fooypv_8UrLy4PFCdJ5W#h02@QFt~9AzIaif__fEaTml=?+ +z>ny=pH_}0pQdjjoK_~ka;MG>r=e3+^PcaKCyp6(yeCz)J8k(&?v38@q0q~`iio!8E +z1df4wkH!4tpRmhw5yw4S*Ct>Gq+E?pv7e`{yb{|~&fY>7To*cy{A5{2yohk!g??Hf +z1@9ShYHgXXpK~DhYL1|@1OB_UW3W=S2`U49Y=C;jEZe7f8a}+JV*~$%GN5x1GN5Z) +zxt~OK5nwoH&?TMmtGWO()QF9K;P1Iw#Nf!xQF!1A@SfE9E*Sh8@VCN;%Cj +zOW+1Nhr5w>;9dezSQ)YhodXBaYf<*Fa9B;`4hd}6pksg0VcRI{@P#YTLPc+(KSEY* +zh2Fo3Bq6^HAE==k)Po0jbx-U2jNzkPf=CK4(ug?e74yi&bsk`-H3nn +zEqb!4ig + +diff --git a/themes/bgrt/animation-0012.png b/themes/bgrt/animation-0012.png +deleted file mode 100644 +index cdefdc78205460aac77e50eed3ac35b2f2c15456..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1619 +zcmYLJdoCghqC)<+b5c0uM^X(cHsG2}MetYtU0XllZuI3l^E3$5ExE~T5K +z%ch%^FG)7jgpbBhs0?4@_F$3m5r|ZXTW}43qxd0`x3j^z5b5$p8xF`Mb~<+WV~@ptkhaDaiy-L}SFMH*g?lxX5h= +zsbm818=O%nm$`Oq2q>B^iXlWYgA5QDR62n}Wik*hs00=pVKA5l8jKeWd%z3H$^Y+k +zM!EZjv<`r>(XVhWkw#`CLI`vgh~Q>ydYQQs06@nAaGUmq>tvS&GD|~Eaz^xmZ(c6N +zX=T~w+l`8_d<_>{hRq@!~^nAwKC=n*M}dA +z^L>3bt@t&`@SGT*_sKiL>7i$Chqo=WDTTG)Gc +zY}XBo68jWiBm5?9h!;tupOQKqo4J~Onzar +z+hlq82QQ*uM-LR+i4EQG!Sy(-E~sjkrqlZRR6l0Hma~Jix@%^7{Ct<#wCDCk_+Rxq +zUsQ2wDdT*s79}&+8{+9YYgRvhUL>#|ys%RVMU@xq@ayO`KO-`IbnZ>Jdt?DZ2f;Ix +zrO0b;hr-3J36SrpqRnwzw0PEsHofByXJF_Ox1{332DQc$Kk}c+TD8hXP%@7=)0Ai1 +z75I$kS^Xmh=^9>1II@-+azP89k=k-~%7KgAF&aIo*Juzqyh4v=1oiRhG0m_HM%^*zkQAhcveAX4zO_|N16-$?2T~ +zUDL^hZZg+zlPzZC^tP^P^~3I)Hmvcvs%C}LwdLd|mNw5A +zdn?+6FPf^K)=Q|u2lBkSUhP*B>HIQlNggr(aS=roWgV#<>z@71MtI7l*HZQIV)}R$ +zX=5>_an_U;UbN{NwB|@#iD``54Yf@EJoC#GwMEguTQYCvWkaDs8suJ=Zr_T%64M>^ +z6lxtA2#5`pt%6mW@~>Oz&QohmYtWFE^)?A22~A)BkP$LJSp9xmn0wgRwYvus +zMn>O#$@{t;=(6bHwY68Q?#s4#&gLzcoljG~eV}W<>TJd>S(5vY>K&L$$&X6G%m_qm +zDX&Jc@_i)(2Qb-01NJ~^c&Ek8vH|Knre4e|XSl=d{M&eV;YCtmu%Z}{MRh{JRv +zN38zLrBKSb+C+uU1s6QY_tQj1NK&x$(d5^)(uR`)^ql3(Oy*;fs`BiyUAKkv{>@Px +zG2848v?BQrL^QQZ1!vu((^UFv?y4N&vRxe)<6CV1{Cn<11wz*8Tw2p!%!*?2=Y-1L +z%6;YgxSA$E2i!W!`8y#pYn#AR{GiS}6kw?pe|Y^{bclU=etoRHVyBV}k~S0+3w)Q>(SlJ>DH +z%JXaL4w}+)YEO17!8cuhBFssDdJA$;2*rEc6_`2boN6C;GV3*U2ut_l35<~m5awl< +zpV}doYYQT*_-DGDXAj2@9A5e;`uUrh+~RwEUWBp1&pP^SkI;%eM!|v&GZH4rgP8-n +zQo?t1F|6;rZS<)r?5W4sqtzG1HO_Mj6!=T?NImR{9z$GD*t_ZC(27ZJo`2h&-D^!M +zrCxcSW7qSgN{W@$oq#(ZFeZByYhIuz>epAQqB*76g~HkejW$xXLG30=5L< +JZu-S#{R<=3;bi~- + +diff --git a/themes/bgrt/animation-0013.png b/themes/bgrt/animation-0013.png +deleted file mode 100644 +index de5aa6ec0cd0e46ab5e254855ce0ae1f01bbe6e8..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1617 +zcmYLJc~sJA6#cQJ;hI^vFPW($C0mP7(uNs{=7dvJYN3!Dn}C?ODHk!%)#j^J@v=%`2zhY^Mr +z3c}Fgks>so9nay#iXzaW2o{GWL<{+mTrNxSA9{qcSzKml+H*Jt|JgJI3DM-HRxHg;0cW6umB8(`14`$HeKQhP+RUiZS228zoUL|Pb&%K{kONDf03$>TcWF-Q19N7I2c&|tn`*aL3J +z68!(C2WCAb@S6yfm;MNk4`Z{0jx+{`40<0Q^!oqnlK(v3lK|!nFjJeh{2J_65GOsv| +z^Nl1vFQvj-CTgFngg}f>Z0ls|E*HMp8r~9ac8Z-H#^-9jTVJ#t_>Um!{ +z5BWT5HmT3A-EtU4G7N#YsG1L#L2Klu)YPg5qx&%JFPhym<=Z+a>)O~*guOo><%KBH +z(@*KNhY%I8=~P6m!o(gb9yFLS(Czf8`TO)2qd(s1;8FF)tDVzzCZ|##s8;X|ZQ-Mo +zgw$ZUjd<9BkGue}dHA`>(WLXK>wMO6&E6OT`W#N~)arf=CYd!H(f=w(iMMUc!6Lq> +z&ncAdbPE3+4%xj5B4xjFhY_PuiAFt9b_esOT&|qNl&Ts{6Sfe?;gwUbd#+3?-KA?b +zo+v7CLda*A$pts7JJpH9_C4?q9;usCS}A&>Ks4m$6!(1Y@dR~wgRw`pQt{Be1e4E# +zp#pm(=4ZYe-s&NXn0LFC)|i>Kr%I`X4oU{!x&boz)=SQ8FL*4|gljB)yOZP``=L|N +zzqnWR@~C7>jZK;wICwv{OPZT%ch7_bIRr&tUhm>Mn|ldzeNXih3bIZ1B}a+0>ATxE +zH3v`ZCayua#&l;#o2wq(Ni=9Hli5n+wjUD@#)h`a@CJDo3U`P#Ci1A9Ps72b%WE`4 +zN8F^P54*^lVJ@_^vht($$$<%1Di>qSF-PCCplZH0R#D+8dubu4=--!N+cK@R6t7_V +zoQ~&Jqv9@)9;I+$mvZv7$U|3){nB?Kx}NsZEPC;)8#mPXa(%ygJxgw_?1NNo&5z?Q +zwO?voh7Lp(qFm*L7f0M$5D}r*4fD)8*hWXbNqe=c`YI5}mKe2gFh=l&`ss89_U@l2 +zwyvA9B24J6R-xilBy%bd@6Z=JCAZ6Imz;moc1l{V%~Ft<^6eTuj8*^bH*OXYA$cQr +znYlSZelLWsTL@#xt8P9ha{9aihf0@BG-fru>lnMbJ*l`aZ)yIs=YMIBa +zj(S|gy+iGW2pgYi(oyrQn~K^hWvFk{KvzLZQKHMNbHefL-zV7p@ONT;YKkVANdm^8 +z^)GVTXE)KGZcsiy%lMeKyZy;rba;Sier&w)_^PyLK{o>1iYDFZi^L2navDn?+i(Ed +zRzVa_AwqHDEpEK*qzKt=_{y^>dtDfS#^M>lirPY~)v8NF +zJDMj@P5ineiN)RRR^tTin&Ojwbyh7go(Z$g|2Vc++KrA((&m>n-`AUOb|R2`!UrA9 +z`pl{)kO#ZdFE_gl*pk>?Q*A#0)KJ0FENS+IU%}0wN7hpEd$~!AEf_61HReQhT +z+u7;s`tLNJA4*U^CAK6ZE~`J4gnZy+LNffU2#KCJ-3|*9Z|u8huI};dvT1F>tzS#e +zb+YX2>&J(hOH6seL(3auj4CfR>JNu$>w0cv+8%rR9nvzA(M#`>n1Lq|pm_U}%eNg) +F`xj=u(4+tW + +diff --git a/themes/bgrt/animation-0014.png b/themes/bgrt/animation-0014.png +deleted file mode 100644 +index a0199041fce991f918eac5776b9baf7a1cf10287..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1618 +zcmYL}doj2cn&PqX`r$89;?c(#WU?3XK*_La~@6 +zR2U^1#h`L%kulNXsOWGqjm$!^7!*34%>0kY5Gt7-8p3-ER#d^)s~m%)$$%9aV~fII +zP*zw327|Y@!=tStY2OSK8Ljn`hfkdORE4{W}3R7?0^dgbzWFVMMp#?`%BIyV$`YeNm(462Y0y^sfPsN60 +z=KpUZ(KZfVuRkhm?SIQTBr2JO@Cv3e6a+9JJRyJX#R(z+@& +z5_!n83qybai3)}v6?Q-Tg~rK_inZ65itaRAPjt-KaI(W(IC2HPlaSE~O-+B3JI9%x +zS$NPR!uWRW^9cwDcv|`E)0?w3L&IZZWA}=UQjs(H3+(AS*=l?J(;3=*R9=UN`NGx8 +zlG&=^BQ`lbQXgT+6Zq7JNx6;m#Fw&3urIlH2FlQ%NfIPT5Q7l*WwjLzWWpZp#vw>^ +z!o_919}q?ZL9!f_6n`j7iE;pa{gOZx%FUAN4Hj1)@Ts(L=cd)<9^@tItU&8~cp^cw +z0NJS@q(7)q)J->EgCXNJg__Z!HotsPo4P98E(^|)I7arc=N4N}%Z%la*oLU8b`9e2 +z+e6x34iE>`k@jI18&~H(3C^TJY_FLQyqb~3n;QBzDs7~jwZ{ZOT;Cw?R;x8D2Z9XM +zGW`cW8oW0uvovWC=7W#NFUK#KFSNiy`|!6*r;_U;{Y>u_&$@n^2$-yCACZwNOZD>l +zf-e|-9<_k6Yr62bBFmr+{wk{0hop|NF_44Zr>_xnl@IVxSj~*_drG=zSB!d#GVOQU +zBnx5BhZZ%619^RQqpN?+=7CX4T)T93`_P>DB5dsA=n3^ojZooVv=)f(6TLe>aq>8> +z^mesR;Q3RsBegCjt^9ch2J{Sg3H!{y&0|t$adAh$9m7$Tq^(Al*IZwu$}WfQ)L)iF +zxi_su(M$$oox+5i!tG5`>tUh}p16CyZA&7-;O-UiNJPQ~(TV3NtbLxh45`OGyDfXsodz)(A{J?T53(mcMVKvT0ZiZ_GmiTaz9i+Qsla$cJ +z!4gh>T{Rf(HyotC?5U_rJ~F~2AYIMhcjd=?c0K4l^1*aMR36S{3IuNDH@Co>&8l;} +zo_)vGW^)RUHI?>&7arF3+}E8}r$U&fXPWu%3g{0lMQZO^QRtX;TgHP~#J@ho8G``@&t^mgFSgn05iF8WBm|+1^p}~iq;to{o~?C^gThXEkmQSx +z!2ZSjPWe(@o3Qb=+c>0Z9C-6q3jV2K51LID2DE}4K!H=Sm03O|)Ap+0${)Be20Z)s +zo29f-n>S95^NtH|>0T@RoZUS^dKieL*ows+Yl9QzZe<|V%&IS(fuWpVrs=df_|(DH +zyUmP+Q+3wW(>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdIXW;hZ*B4#0000GbVXQnRB3Hx05C8*FfckWFgh_c^0m{N00008bVXQn +zMsi_oWdJcXRuequ0000HbVXQnLt$-Ya$x{NVQpn{VJdbW>wx +zZe;*rZfR{{bZKvHATuy#aC0CJUtc+2^RT +zlCSpOYp=a7-(KgOn$PF+*>bs@Db6F&W!;axoqBD1Ke6rYdYkA=r*Ra{dqdYs_Wy5B +zyW`{I`C_qHRimOw&SmWw-Bz!3o?z3tYYyGSa3{D2oC2S>UzF>}+5{5Z5m@1U;7M>l +zxCIzg7WTWf3A(4;0saA(!G~ZMMvmf_^+-r=%s>pO`erO21CIiox|V9Gw_2$;3HMCE +zWKHe>n2b8@J^&ws17a=1hH;d&39u=p20jf8q@-%+p1v3O*l4RbH}KuSB*KLHPr(J4 +zuz-0Y)npCgC9+_&obu55eOA +zeTi$5kP+G120K6oJtLbkC>!V66IO8zRD$v@CT1eMUm5U@z4PyIZbHM|Iq#(}1Y6I2 +z1bziF;gy<<3_lJ|X)h`PCx{tpB;}4)Vo+&4=qt`)^d;`~`_7RoU>A5D25?kl;WP!$ +zwOcgf+Tq7)y)Q@U_eHbs{k9}4P|i4t>|xu_P5ujDVJ4toufy@A*Tp#7>JDpU)f&jm +zbzs(M!V1Q^BuThfmxKYR((i(S^eOBG6Y~ivsVk5URtDENm1~eDbY9gZ;eK>JO{fms +z2rLW65+<=|F;_i+LNS=sn~ZZawV5i(1n8?x;Ot>LNDJVbFn6Cli`?Vv>I&30x@5rM +zcCJ|})j&GarVo^Pn9x|A>!y?P7l30g7WRG44X@&6;bxu$GfW@o#J!D@gfe3I2zVY? +zR4=mX6H+oXAsPA2mIXW2D=?@pArmROl65LYKdoAof6aXEUj=?krt&R{pH%9n?x%C; +zW2gA?uwoMs8~^XQ=Xu2h3GV0kHSn@3(2E6b1B)#CX@gj~Zz~NeFiuC*8zf9%Gt67l +zJ&fvga1K=SGDghuEAUy~0d5QlSVe0_v#XL=kAi!kW6Px#OY?K!EO-g{MVwZSYW4?s +ztBtNph6JptCE*_j_4PkatL$a&s9>L0q;(O$4@2D +zS2mqhp5 +z5^$Y84`e-^uS+;KIpdh1&LgX`S;fh)(HO}(4wKL(eeB$i?Yh7@|1X?Nlva;RVp{+J +N002ovPDHLkV1n9E(TV^7 + +diff --git a/themes/bgrt/animation-0016.png b/themes/bgrt/animation-0016.png +deleted file mode 100644 +index f72a577c023379bf99ea2b7fb77fba843bc9e37c..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1605 +zcmYL}c~FvD7{)(EL=BTPP0Es7D$`iR%mvd*NVBY@92%E_4krKcWw_!5I4Cv>rWemE~fUFO3fZ&RCoq +z28Y8q<54)A$7XjAtTUH0w^ExyEM^WcIUs<=di*{(S5|WxO6wW?yGlGwYvNpcS8~F% +z+OkD$hgOQG0l$I9V)5#yZe*=#zG#voz!(sq#V|QEK9d`R!eb+2c_@>2Y1)9Y%|J;s4Yb6wW5oqM~`h35r6d<5des}5W%mT%Azd|Fg?m=oetf1lpp{N%9I@?C)!e+d` +z5b9BN^MtI4nrI?BFT1YBpALQ^INSuE!cl!vbkb`w3sMb3^T@5tW*%%GL+vsnIusK4 +zaDbio3+fFK2v)6sL3UOITXwKyKD*nal?o$dRn*AXAkFlaw7zgTsnRyUvB)=jjjQTL +ze;DksCi9(@lPK>sWCW6|>{4ad%@g{^)b$yvR;mJUDti=pzQcHQJv;2%T!Ry{(xu-~ +zhPrvSwHa2YFlr%q(abZ7?Kf;H(32KbYE;k6UUf_2B%afKX7^tPe1~EM)8sV)KT07{ +zcUPE;%-X|?TBM&8C-YYLFU9N;C;jN#c;ds==+KCtOR_L#PumU-&ki$QSueRXGkLYF +zJ@`Qg*WQ9GNrw*=M(qtN9ymEIdQsKb0MqAZZ#?LEZy+_OYJ#zfBnVpgT+~9JxHI0< +zTXP2?8RN1;4o!=&IL*(DGnYrv-7gudTL_UC>d}VcRJUH`xPvN`(fMV9k$L0&sjkui +zlW{5QZCQA#^U`f3HVGkr1!REmfCa)Q7>Z%X;E#IMN;{{6cAlh&i%3Ffs94Pe33Kcsz_?HN-C{7Fb0!6aNS&&PAaiQ7M-z;!jza5?;<@SXd{O|@4pYK~y$CG#b1 +z#_069k=;EDw)+;0J-ozwhK`q1-#b1T`Cz}Pi8!lH-=vz}IyS6ZAWNFq&zVfeRNou2 +zw*}6XkG?+Rmt3HyQ}&GxE1^x5|FlVfQoera-v7c;<3;kG+(81?c2y8Nn&j>orfrZ? +z*w=xm!5X#=Da=0Q{47hJbL#VE-KV>V)@D8q<;flP0<&hLKwCO1i`(W%%`uu6I+T82 +zqjUKVax;Mlr>;<2Hza=@nA7==n2VdGmDN)wL +z!Y#O(09n2j(56|yA4Y7k&-VH#ZIw62oLfe$`Ky9{`!+tx3Rb=97e4{*`f=;udt3Te +vvk7-xn%>0@ZOgjY+gP$!e635U2Gu4#kk=Mgf0fpzp2i)U6giQ + +diff --git a/themes/bgrt/animation-0017.png b/themes/bgrt/animation-0017.png +deleted file mode 100644 +index 02926e7137b875d477182dacbf0a3f457bd34ac1..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1581 +zcmYLJc~p{l6#Ya&DKXS6k6T1m<_1VANn>ibW@(1Gz&;09bCi)H*;(sX0V$1AQYwKPHO-;8M731}>G!X44XJ +z{PaXzG84q{SUGHN2AF~aQy6RpAIIl0IUGj%f9OnSF*y6_1yA*$DD$N#3JqicE_eb7 +zMeLtj~|cVZq;(D3DOL{uaZuKM1p&>b!-R3 +z8830$Au62)`~YV>o;cr4+5?GZOX8kH28RLAI7~JTWO6weB0h=7$E+ABfDEQfhA?PD +zM*9DMI^*2}sb4`zHu)Z&lgMK5F?(oi9)tkFg(N&@?f?LK4+1IP)JWt>MaM6DebMl# +zi#la?_SgM*zH+%D%-t_mI=wCP+6K<%-Q~-pXxM;)VO?K;$kh__q+|=s%(rns0>B@MxDx<>XxrTDn7Nt +zKw|M*wJMcI&^lX7V%ws)p=Vxw^g`{Cs6r53`Wcn-dKp)w>dPh@9~hN+!N4y#{WAUA +zCgY)7ZH=VKuz`=(Wv8C%iuN~@#N=*;aiu+iv>~Z+fZ=q;TCK}vZ6SSwe!KO~i#^DX +zHSI#u@K~+t!(BnvV0c={`9b8U?M=(~@A9XDq`6gRlYbh^Hrt7b-euL7bgImt#wkWT +zsayE4u81nY^1^X?oq-RZh!ql|=tk*+U-0xQVKU-+!VMoJuiHMjet$!;scdMp`T4uR +z(?{>(5HKlh`}hf4P#rc!>l`Wu2GiVr_W2C!QZKlsJwJKSvgMLYHZNbR4=NHhftcc) +z>HBs;M~df24(FOvxN-ZP(%9Q8DfX*XsjT*jE3zFK=9e|`dS^m&mOs-8d9kG)?Rlnn +z=&Bvu$0|GDs?YOmi^dzJ%$TbRxs^0h?`3=(wg`9IxN+cKz#%cqZJ%uYn~C)Y{)#Zm +z8L6mia-YNv6*oJ4D0f)(P0Aa5CAK7@;dG2$m^aZTqRv)=NNljaP?KqFc3^#XPvi5` +zs4vGrX3XdX5##tKk2>QctfPjjlhLw>*lm88cZ=fp?#((c-KVnAyC0h# +z3A!RG62=#Om9?{E}#uPl)>_a<5BUorNMdkn#Xf$(`U_{Cx3Ha +z_Yd7Z$Rxm9Sf!0SL1{PZJ(kJubuE9^3TkWy2K3x{T)kTTdu`P~&W&xTCkk<`=rcwX +zIv449u;hLW8_eLyyY#s5T12(SaF7BkIP0T$6KC3=sdSAy?)XT1wJ1+EvvYK|P()s% +z#ky4-b&!0WEr{Q{v&dB>`HYHIw)VHJx??)SX{6$X9(Ro=v6*Y&tB2F7kG^)*@wZD- +z>WyK)zM0EZS;l{gUci~mkEj+Jl!>0hy|X2NuLB!=PT2SQGi%3f0f*F4b`Tg~ +W=68_kkLRFs2L$@=qSW{#6#NVJGszkN + +diff --git a/themes/bgrt/animation-0018.png b/themes/bgrt/animation-0018.png +deleted file mode 100644 +index 667cd7d4ad375878eb731326ad70a12f5536d389..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1582 +zcmYL}dpOg39LIlbOxRpg*~TO#WE)SK>A1DIwH%Qy$o9`x=erKj;@6;_1O#1kxkcMVc% +zdMnxvrNoK=e!>=qvsd&G0+i1iDl3+_P9e#Hb!S8Lm4nw3HU2F +z1X=&TX^V64-twDo_KCr8DBY)n7|jj1GnwZ!+n)WaF81$agphUB +zBm>2XkIi*2kaXP~H1rZ|Tr1}-6uUQ^IHw!gno)F4LrdR{l(f!WA2U@vJ@azi+<-^c +z`L3$*@$r=SL8qF!y1MwoT<)^r`l9krDSy|Xe|abVl}2q8|FIaaefqJ~_~n^$>uzcO +z7GGFR2s*Uv*|9|pDduG0AXjPdu*RsKMLXBI^OiWF6dZyD=hB0lLdB*UQMe(>m^~(`eyqtzD(@==7!bpDJtiQ{u=0@b}@zDI_1ju%*^EhaFRzkH(Kpe +zBd^OVdRv3Zdy1#g%#|7SzTT|Yk$vB9t-p$>4YE_+Zgd+pYNX;aJ8&t6u!g`jM=Pw- +zu+DHw8#qINd3tq1vV*tExUh+3&D#Fv>5V)m-Z5T0h04iQu$b+FR`au}Rhgj21xwy$ +zsOSYul}FGQ4zYRA4bW~(!2pd$<^frBl$@J +zk3{o%=OnY9^n>R*OnE2DR)xY1h1~=vA})||3Tkix@|?*xJ~&Vc*=d~o`N?cS2SYj$ +zn7X-#Otq*;6(pHCR}-z}4?NLefHhjaL`L +z$ZZS!$iL`6bKhaCgL7n<_Svre+KD^ruNDWsOvmyI^qHmY?H$yCCtk;Ozr=jZ3*2(M +zu|-r!Hi7M<+BmuF7>;jnPg}j;L*=Pl7gl@wC?vq7@RqQ%-xl^pBFO0dzzpj{B({N_+2=er +zaVZ>>+~Snk!9SCeD{N(wdnI-Jpf0RD#k%o~Ta-F#FDT@f(9tFE%MkAlLF$w6X=(0w +zpgg#zej=eePju~~^ja*c+jKAE@6Ph4%nsjkoJVnn%4k;8BwNzB3Jisc7C%*TxoK@SuR^j=w_(hg(>Fh$^OJiGGEJFiia58BwCeyeLGszdu+&# +zKN~5c>{@&%c_s1baXQ;j$jwpgl2sz-1zJ@hs?lMUabbudgksI)$tL5aI;P8ZtFK{G +z{*#fI=NnJ%OOQVi%8u>IIf~=JiTg~&&qhim?tawHM3&fxSe3;!FIe6^N&m1QKWL_Ufa_$^-&Mq*U53MYLnO)l6faRa +zs4OCvH}^z0>BL-f>zyIFjJ!W}-t&IW_w#wqd7kGy-_Ktk;b}Mg4rLu>004G46C6B1 +zgm1QzA~?C>;om^m$|juW0>Czn&6WeQaorc +z6ecPo!#Og +z^xf2WyMU3Vz9tdo$2ik*r0MU(EN#t82K$WXwOjYR@Lycdnhq2QjaI(oScVLqS^A#4 +z4p!ah=%}>=;!NLS7sV?4DL3a+cW9OCVz#cP!h}v&OsQ$gLPsRui?(sTy!`t@xQh{C +z*I3$g=pr7EKXqwi3W%~f9aqtqI|LWK@OhXVxUq3V-&)XbAh(p}EzlBB1X|FUVn{sJ +zcK-g5os?3LnN4k2O?8^=Nu$(88@59AY+%Q{x)7HlI+#j5~4hH&&G5sB*1qyQd=v$Q?_=&_SC8;`O3AJ@!Rui3!+15uXjo- +zSde5FB3-j6aSL_YhojfM;)bIgHc@~IL#Ez1x1DBFB1}<9BfPQOu~l*&{F_x_NBCCQ +zllA^-G~M{msrr6R#@Caord{#)8h52gD>W%R(#b~o6yI71r|hkRN8G^agp&=-+3i +zV}^!F9-fU}u|DaJ^py)L>~_5blgpAPLx&>@CYRfLCNisfopW+j{a=M7N8YFl%h#Qs +z{GsEWSZ0DR$VBS|VkE~kCyj5pAWQ~H*u+Tg7uSsSRG!<(Vp05oP%0ieY)CAWgRcOaZFD={QcR}OIBO8sS58n>(6W~a*0rCCUC53Y5y_nL0Bd~YCz@zT) +zUK|a1V9c$ZyoRX8Tbgw!>XfZj*qwu}4umi$gV^!@1yS8D0$mwVK$LnrJ-&i(u8N +z#x6niU=jMZ^QxWUAFFF7KfJrhXWM*w4RK`G=g9lViJ1l!Q?V&BVC4WGlc{fAN%h?p +zDY1gj2Oi5Vx9TXmd5Sb@mOXZ_O-o?f|6;FX%WoRYrT&JzfPRC%;eZ@SP!zA{1XmD&!ljBv!pG4ES)7%7#q`2UO%&QEl&2HKfVDGXRyNf +T*Shb6w+?W2baN;_aZ&IujE2>N + +diff --git a/themes/bgrt/animation-0020.png b/themes/bgrt/animation-0020.png +deleted file mode 100644 +index d228ed84fbddcab44ada03bb79b5c3d842e58a24..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1558 +zcmYL}dpOg39LIl{X(UqEak|X0I%;LNVkvhuE3IiN5+=5pwi%lZF=j<_ugB^Xq032# +zBAvNkN<7K6W2$l7PKPpCGEue1{f^))Fp +z`_J(v>LzYx4*t~##*z|k7p9}To?q(9cZ&e_KoemwZS2Tm$h+#QK1xJJ31VVmtj6oab#V!Vz!J66f!vo(p0YF_hm=T+8YtQ_ +z{1@DY{P_p<{RD6eJbb_O=RSfyfwht9Yi%h4H)~`7%V(4vwd?@i$lRa= +zQ81ve8p}ZB^DDGjLJaAr?!@A`-^*ipifycwvr0#f+2(4ZQI1y9K-Y3hJi6B5^p^aM +zAxp<#kAli)+Dq4Y$&sekkVjmi2&q}3Ri%4tMr!o6OXQhxvfMzB>aKA**{+PkKk7p2 +z+--Xk_;eWl=-Tb#Z4zR@d6)Zrx;HNDG#u-QB|9ZVUOt0Qzl%ee<(~FVU!x>{yI7<< +z+SdN8F|9W4UgX1GVs*cMr%(OY25E;f1BVv{oIoU&i6TgA7sU2>-S>hWvpzb1d6!<_ +z50i?e3eDz8%{eXy>5;IbG=v|K?7G}jfB((kWzO!J+OoK$q!$$4)oA%E=uj#B8%e1w +z4@x~81&1Vl=swnvl1mud;#)i&MH5BA^K8TtqT+lL4q|-0?CRTr(X6~&a-*}D7Qxi4 +zGQuIHIGW=N+YYS458ionBVxB#HTrBcP|^aS<1&J;1UEkg-hAolR>WO +z4g=$G?H_iXqr>0CX14KP--zkyz)}Fc$xyc<(fFRJ%$*ri0X;mqE9ddI{##x-!)vtMIJL^pHHU_#4@B)V +zs$$75yu4#)Ty3Jv3!NUkS8W)c56%wSP9{NcJhXIU%TmIVFNd$7y3WN-R|;Ds3I9CY +zm7OUq2%YvxzaCfGW8iF&`s4sSWMvP*(nF*n+(wS8eF +zzt{AGqa&%Cz2X27?)&^=liTH*^|6$^)}aAVVThquUznPmO|o2v2?o^}M9EEW4Z94F +zX(~*P89$kMR&U=noj&28@hNbww_y}g+qD=8g}iaaqGU;~d#|aB!%RsNBk3Q5LB3!+ +z@Of|vnsc|a%Ti|#A|4jg4LPjWa;`z%uwajebHkNm?a>2P;z@CixGH;oF_j5oWA145 +zllb1mc!@J8^Hr;eF~`V&C@xOxAr4$evLzPz +ySzG6V*gSPVFW)9qI+07?IazBPQu=YcWXU(fB0{)GIKHU**8svnqI0n$CGKAn?7oBm + +diff --git a/themes/bgrt/animation-0021.png b/themes/bgrt/animation-0021.png +deleted file mode 100644 +index e7bd0f5ca29b11e6f3f14f5b14ffbfc53dc2c6f3..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1545 +zcmYLJc{tR09G-+I$6#fm%(Q5Vn#-1PlE +za%@|Ol2T|R_cc4Dk(FZ_=VbS%o_+TFd_Ldz`M&S_yx-4XpQPjNPO4jVw?ZHgRiZP& +z6GX&DD=C6ECp!8I2+AyH3I_t&rnS+VAUE@2AZf#O@ZvfKhXN3E5R(p|LxSmaS^%08 +z7Jxn%%tf<8qv*_VZV;Lq1keEvn!^faFo3ZC5ak~VFarJg9r9olY$J+5;{p&I28%~y +zv1ptr0*kdcXl{Wqg@rs5fF9_Eha5}?AQ+6r_rhUEr3710Q~EYa7!4G0*l1G4VUW|< +z;EsS)7!C3rP#BD<>`y!i6ty=*QUJgJAT&lWoyHAjG7zSivn&omeVh*(v^ET$;DkWf +z|9_$|X4a%PB2d=+79JH43UCl48l43q1dGG-a$qJ9i2N-g!H(>uoY2>icESOwFqg|F +z%csZ-d@~5!9X)g$bx^LdkKT{Fu7S@MF-%)-?*evwMLNv!eH#EXHm|C9Tv6eEVyR)a +zVFWw{B_$=h?5ntyi&mYy$(2s_C(E@C>jF3@-_ovV*T9`=$>}eyvuE*xBSS-a+T5>^ +zeUp-!mClsRJilt-NMNC*mDO;v>cj`XD?yf)=s<#q$Aa0X*J +z{>iU~7EcIbw4(9dGkpjAZK!7nYEb;iwB%BCIiTl-fG_9avAY&lEhD+K}xoB7#R +zC&$3APV;`aigAcY>Uw>fNiM2hyM8;O2}N9*s1lZ?NA{xxYVTi(pqq%TCz~hM3>%f& +zwK1nC7R!u1Pz`65i$6SHH$V2muIQJ;ZF!hv!Pt7ehj5_MM{@w*n<71YeXZTcTD<)a9DP +z_4?wa*xst7C#_E(lEp9Ht9gZ~gfgGM3v1O)FZ9bFRYM_PUD?4@T&m@|lN$m>)e-bu +zQd4R1u~?lQ8T}?vuyIYbj-$Mhz~#Nm`yVu46o$;XvCJaxW*>ivZ`7w!4kZpPn!MJ+ +z1yY|qY!mc-K-vxX|C9O$H=qdajGLzT&H&yzW9o+5&&8JU%P5!)xrH(tlcJF{(nZ-X +zeqEb>176zWRD4n&j;&OHD;7r0*NoJc39kb?@AM7bAd2+PUpk|DUUG~7Hm)j5=$Uz+ +zaQo_-__a@O&DS@=I9pGrpzJLgvk5k-oF~u^iy&36Ei^)yi$5$v_obXOUvJv3YU-yJ-qu7^K7GG#BXV|50 +z*SL+RbQAIEH$FnV6X83ACGKgxFLd-zn^+*3|?C{(agAHk!}{#NDB-)^g=-0l--i!u35hHnA12ciJy46=Ow{9_0(P$WN!jMqUW_m +l#LTP=R?h|}IX$=}Q}60dsL<_peh02H2+_fvP-*YS{}=dUzTN-; + +diff --git a/themes/bgrt/animation-0022.png b/themes/bgrt/animation-0022.png +deleted file mode 100644 +index 4c7728223e991497f28174a8789626155cb762be..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1541 +zcmYLJc~sJA6#c0fC^;5dQU;P*l6C}9%O#f#+?p{=W)ZB2%Qgf?x%2IQ} +zGi94bR#>8^9FOJ{7E>dZCQX=DluNWAq0Y}bbLO4zy?f5R_uTLO^-3cnLM+Tzn*#t~ +z5f)0^1tMm#VN1Z7nw9kt1T%hUOez4ttrpt|I9-nf$p9gVEDUC`=>U$&_U=(sOikK**0|dOA +z7tYNMM{viux%qf{`{3P?$=&6kXW61Bn#G|5c)ZW|M<9e4R_H+u_H7kGA}A6F>R5d- +z$Sq&wwtYKXmlzc(xU?g3Ly&QggJHpD-pCST6y$s{5?2(2D{#F0uus$D9kz-^P|q9~{4kU~ +zRXqn*XIopFUw5m=;7qb|%l=y_4dX4DDG_Ri^|y@XPcwh?$@@E=`V|U=(x45h%RUR) +zKg%RG4D!F6pxN^!M`ft9ZKY;XsxNjj_ra%ehQXv2&!!AeRkhD +ze!6|QvN;*O_5`N0QN9IcrYRosS`~&W51mJD&P+dxI{FgJ?DsbALMlXo?@vfR^<7A- +zdB$+rTgJwP4|{ar(UL>Nw@Wb{(4|GqTEWNQ=yH-cX*oYc1lLg{COm3`s-U5CzxB}J +zJItopd!-5N5pB?h!$p-{=-iZnvVIcTX})|^uBWAyYP^SF9?T%w@%HCuyiVw7RQW5$ +zpFxA6mq6zayq?CAc%=j{yZ7#yJWv;S#N`OAsr0ya= +zE^{}BVI$1Dc{9)3_tWLdiXJ=S@S$@O9O!W_rc;Y`RFY>6S9sx#&IrHbb*JtR-?K8O)FZ1rv+JtAe8G+YHvq}D0b$1ON +zNxtm{i4r&JABi@_buFT{AG!79HW$U0uDew7L2T0Y^Q8fvq`~DT86^J7V +zh(qB?i==0vw245{tJgVvtGcyV<+gJ!(C*{rV(BL!#20juu^YwM7 +zi&+iK7C~`5#?4s0;JkC>_iNk7bg)>cEMz*w;H#kQ%FFJ#>bj=jPK_NcuY_CeE1?;A +z$ECfy#;Nk{(f28`6_g3TIJ?L9LtYT%uI+qjQzMB|>c6Acy*|vQ%zmrx_CEIjXimIL +zXX8k&ORyQ*m={|;6&z62g}QP75(Jx{zVzx%jo1!*exMV1#WMT1R>$KxXGym#1wxZ! +zmSPe2&Ar33y(`xgC?st_I^eHA^p`ja#@j*(79DH(Bm=^d_& +hmU7xtH{H!x)-ud3U=iGbG{oY?s{^Oni3p11%000(b +zl3x&r=*3>T1e^k~coGB{j}$HdfMtlqh5%a +z;M1@SrVz_xiP+p^VFFf|KxfkhSOJg8;n4a2p-U`_&WVf7Y=(kS$i*l>s*n!gajrzH +zt1A{yK)bqne(&LlBOnjeW`iEt%~YLHMpdBUAmt57DX|rU`m;K$$_#t?u1-%Uj2MqI=dkeT@!O(+^1A3Z^0Ze +zLCapd)S3na1caKXqOPP6DL+k^q2l_WwGW>>Cofn3Ir_2yYrMT{V^bBh;djhN +zq6Z9lwK|-=Fb>gJt@UnRnW{0Sd0 +znkW(Is-uz+S})v~yXMxq%9(4;$Ad+~QrG-z(2>2foP4578f%TsP#!=(PwBRVs2F$c +z@}J4lsbqOxkv^)i&oQZ^iRK`T(3}NYwX)*2<_fauG(G~IIIP}s(JvS3SZ>EX)+$i; +zR3CMBjq)~uAxqb%Ii-_rEeEu|ECJ@ix}Hlt^_$7#=SRb*t8ZAXvdy}%({lRx)pha2 +z_73xoskqRwbp5GO5%Th2o+Q5aT#eU6LS*)3lS*}F@(ZQp-3kXZIpKkV2`_gR7v($) +zfbY;5`8+ZUa*&4@PWFFDz1#dLV%x+?xSjZke7JPGMQHNV9qZO(hY&x`8uizojUTS4e +zM$5eOc#OnjYs=i5(K1!sHgj(hyvr%=)(z=(?n6bzstb(P=5iqe>QI?{igBiU;pljiP>-Osa|S*M!zZ^{e#gn=bS*!Ast5TEo-dsSiFKS_E= +zpesOK1XE;M<#CTZu0c#=+G;XvZ0o04DO(3gy;Ez-C6LhpkwZ~;0Y~!=^S~G(PR)e99AEILYMI&l76x +z2{AI{+Ijm82TeP79yA~Zq-)<<3M=Iez!#<22T+{_TS^D+#ZwpFB + +diff --git a/themes/bgrt/animation-0024.png b/themes/bgrt/animation-0024.png +deleted file mode 100644 +index ed52d3d40d594dc4ff4c0f9b796b3d0243a9aa81..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1492 +zcmYL}dpOg39LIlSN7EQKGMPeHa@eg4BbQ7}LO3U#6WQz+W3$CMk6|s<{;* +zHJ2h?i5!=-dJ^VV2?xn7PVIy`Q_p$M^L#(w*YmvJ@8|vf{Ph)id%CKx-?$zC0ClPx +z#YaKIwSlQ9Zhl-`P0vwkW%jQH0LUDpnkPY&2d@eI00_6QiD>@5|V9=AFLKRi$wJHit00Klj!5T*( +z;D{tc0)f24hKwhn!oD?FaG^4!{2Vd|`zzQJGw2+$&!Y?^?{i7+JLk8=5j8l%aI0BSAZqu3DS +z{r{#Fekav$S)j0y-^ycySs>rgm&WEQ2oQ+Y$8*sZ003oCDNcU=swsaAMxdP3Qe(Q8 +zG@JFHNL@>A>ko5ZF^NhDB@^w)Q1jwjOw^ZWwqGTrfTnXXcJ*zIGYb&|_3Xi;H~Y71 +z)^?ER7B8+oAH6gx+qDdCo_0>Vsngz{y_*qVPtCpCQ_IAjr}_oO$Alfrn!0i7oH`z( +zhpdPqTW3qc4|N+l2UeMK+}Z*3*DbH_Cnq#PO12!51=-3dlULvFxU|QFM@^HR(MjKg +zSr@#S!R_@xm>D>tAtQD~%<#***aFc+MvVm`(ZK7Yn@8kr+oUTb35cMsD;KJIVgXat +zB~PfH@dzp4N!*VG`OV!Lm^Se~x@1#OQ#u4@AlxsDZk5ed^-Wj6TOfK_(EE>op7`lz +z*=`u3ywcSCFCdzZyaZo(n1^_p1MN1CEb@No-c=`!Z{+cc2P_sqx~L{*+{8KidRMFP +z?fk6!d;Dd~t=CK9#_k)3yeN2QWUn$(Me>|zum4{+-2XZ +zkGADab=3{5z;p8Il|wJ1-s8p^d0kY*$ugz+cU_MYW9Efn+-VE_RZ~?-YGQ8w1 +z3s<`Vq>1TPuU1$3EZ2NkUnnO3I`z5IN%}i{BnP#cyPB1EGF|;Q-9DoeNHrH|PJ-8p +zyPEam=kH-F{?da{$dLn^qCz?g?oC)WSgJIH2lr)HAP<|*nl*0F7-w)rPBDLreGSyK +zhLUpGEd?N3&$=-;c6f16n^eR~&uT%pCerZpd17HU9GEfNnW?5#Re6==y(fAydYFXS +zmwX^!_#xvkc7kM@=M>;^gtb*W$*DMC2d(hHX^20`I)3n7%K*Q0=tKczh<;U53=pdj +zqL)jKJwwL=)IEqtu|CL>cs>E$ZUQ;5+o31YDz*C7beWn5d;gizH&LIldPAa)3$Fnw +zq+s3I%B+Ll;i#M(p;K%|t?|RqG@=(UZk +zJqLf2-^-7(yjDb?s`gdeT!no*6t^@%Ul{?X8YshF%nQ4q$}4qwy?vA&x8^U&Psuol +zri2AF`7WhYkX+AKF`y}d`kG#i +z`k9G^4C_J>N2G_p+%VpyR3q019A}r)5Q@e~#nns!j_agT{`50&U3R +z{{N>rXzfTHc?HSpU&E6b(JY=WmBxvK5U{}F)6Stx0YKJ`Omy}OM5LbkD~9THL@bj0_q{&Rh;iU}fr-be$aTgzd&1tD{L2vPSb&WD1eyDQo%@{htZRWRzk>^E|qu6=N8@FC*UYxpy +zH8XnHm6X}2yzyzz91$Clhg(F1)E*gG09e8R#+|11eO*mJfKug<$D|6vQQ=lDv6<*EXkYU=d7Fv{4MuD?dVsULl3H54SSP +z>>9_*$5KsJPWSV7%gkD~1<3YJ%!e=?g3U{jEw27f^!Md{v1Mk$sFZ;lP99odQu=}+_ +zH8>S%lPP}6jf(>_Hcz$x`>D%)vSOG-J))tW7N8IhkbLTg_JQPIVa~yDaB` +zJv^+8@H2d~{qGK%V>8l2^2^imYOnWSq@~L~1ecQb4ysHY<4i0g1$__|dJ<-@&ouwh +zl$f)Cwo3C2u{c*S;m0rLymx5}149pmAjH*hb1i92X<=~joaj?XayTrB9VRrEf15J1v7eB7lhAa6 +xe&)U_H6hC)_d#JNHcFv`T(9FOSlo4RF#YNEcwwUpEEGC80GZ@XtaAwy{0oZvaTWjo + +diff --git a/themes/bgrt/animation-0026.png b/themes/bgrt/animation-0026.png +deleted file mode 100644 +index 1bfd5dcaa6cfebe4fa8fbe8a4c53a2650e039182..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1427 +zcmYL}do+}39LL{5WspWLjYWoB*Ja)@%S^}&u{enkkzC%!U^FxA%*$kk7OORu9S3P- +zkw$SUEk#EucZCyMk~PY;5n3W)nnl}=I(zn<=l6Wh`F_9W`~3cTa*p|W?pFCm1pt8E +z-d^qja$>eed8hnlbGd7BAQQbp*#MxbxjhJ=v6#2Bjesj@Ks?;G|SbxcEXz@Mt +zzVsT024%oK)vG%ve=)dJyu~4kDzME8?u$mhnd;VCFSc$H0Qk(DLo!dsEGqIo>&!0g +zvwUA}_2@9ClhY-fZjkk_He!D0BG?WqXK0O;kEpBljpBcuoPN^H;0=U^Qwv=L67P~| +zK&F4ra5DmR8__K&w@4W_dO*tE%03AW)Y|l$<;-s}WEN`i(x+X1@0>rFB&F*~KH>8! +zNa^&#;_7;Bf8No(gYKJPYC>#98_b#vx4IEu5v!G_hf?V91jTXl^~0}@MwvV+Sji=x +z*2tLiYPr|`gd#pWR(J|EhKzQKu|ZvehcVf6T4CW=cZCXp`B{A56+x?(q-G%-D-=}b +z-Yyg#N>%;w-W}ttd+QO#QWU=}>nX2irv!i&l4nqwQLKrdZWN~>!0ILP1=L)_VucTB +zXfPF4Ga;vZmmWWnjXTe+uF~l)>jYBPwbaa6);StFy4^9B%ZeFc;y(%y7(V~R@VdFc_T5G1~Spo-) +zn$nQz>6HC?scLRCXzh-4`p8FTuFKC^t}h;f)wYmIleb1rV0(W+bfMKlOxTe*ndKKSWw9f+O!LZu7`<5p +z*1^rDf~8_wAz{Yknf5U8&xKr*ztKAkO&BKW-csvS{eN^w=^KL``)2!B*7I^Qfc~%* +z9vW5jynT!F*MQl4xGYHQi!`?6z2PU(EXC`+p9&r?ecCAHY65p{P?sC|#&zR-!_Lc{ +zTJ}IB9drza1t-GN4p!A@EY3{j_l}&Cj_$iQJG^?Uzf^<08JVr?)Tbn}My<{3J8`9D +z_C1|Fi!WXm)cGUGT?Uo)A41+v`O7>?NT!+fag%}KkIG!Lj%%}HO$hMJF;!7S&?%kd +z{6Mn~H}g|2?Xpxw^(xF_Y3|!0*cIv(_0BX+_ny!*5IU|YDvuJ`)d&lIX9fONxf3&Y +zN@>02!(Ak7u8(Oar{zB!lhh=9^bGdPv*X4I4Im#;Bc-nYrRv1hkv)dF@2u#8HiuUn +V%1LTM1PC>0whMGv-57~7XZB>`}9B8>!3pwMUp +zBAmq}!oQ`k;S6djEs?_}!`WmKjl_bp7!*34#QcwTaa0ohM4WI?Ras@QS%oFANq{{9 +z=?q6A;r1vP5_!PUfE0D(C0<=CUq#giPRr}23eCP8W1ql*w< +zX(%=F$usI*dY+8jbY~yrK!JZh7d_~5D08rh5$9jf_Y4VEI=|-O0 +ze9T=2XY@Va@b9VOIC(T{#mVWj@{77E4g-zp%%o#4=)X-2PBJ7I`FZzwyENmBxHJ=D +zT2#SEjJuFiwSuAcy;GFyOuKOFSQ)&#yK?BLWx7%QVLVcHcBHOh?C=}lBo{1e7emCp +z+l$8Uf6U;wcJ0Rs`gau^sw~oy7&lu$!UK+%N&cYw={ip4k4eJ)b}G!6hk+D-FN+qa +z-_H++^gHVKR6x6XVC5PfC2JhaSEN)`bme!qZuQvfyyUilOfR>-X&LS?y1Z92ScPnQ +z-^3`7d*!+>(ZKN33t!$&HMcXLELv--1Bs7am$ZFi4W-Vrr!#-0UY%whNxsc=KU;a4 +z7nFSEY1Wqi4BhE5sIBH7$7icf4fk +zC#?l3&~NqL3>45}0pV-DrAccm#t{|JXM7Z7IP3@xW6pUW>4eB*u8IW=OI;69n{-S? +zs)~*k0fa~(bIvyBik+KX&qT0`v)NJBwGp!i?lo2q5+cf)N>~|-u*HN$9OikKn(LV$ +z|L&}XR@05F6mTMWw%dP;YPKm);*d0tOBmNKjN*aBG1r|z!)V=KARAceZO4*9*S(%R +zS13JmN+6iqr`9*UC|G#Erz^_k|2WTUS-Lu)nqg#3qAC$lAA +zryh9P_a^%myhlZjGU9L~Yj(FWnP1SAbFjPalKN8H309_g$%-PVB=_~zro!fVu4%8{ +z!1&w_9h=L;^#bu*yFhV!kF;;Kg#Gd8np)!wSKilPV?|0GU3*?}S1m&vt+Hn^yH8Zz +zjj*j`xz7QayUjgj^tVYk9rdbAeQnS3wZiptYS1Utsgaa`KvwM(U*m?BF7S^$;FG1R +zb#t$1tD8^st0i6uzW8P_Hjj}UrH>)7<5n+sruPr-u8bGPE_-yg^# +z)g{H(R>?;|o!m>eD&&*-C2hi0uvcr5qPie^Xz~hk|H?b$(E3`rs8=YA|(pG1KlMu`+A$PuoQ!-!?ooqj)JPW^iPyT#icU|^zWHt<#g +zX4N(}!qDb8=TD&QHDPLK?&;Kv`OIvCiaj;34i_J&ui +F@L%rzZB+mO + +diff --git a/themes/bgrt/animation-0028.png b/themes/bgrt/animation-0028.png +deleted file mode 100644 +index eda5e3f2f3ab415780c5c7fcfc273bea1920cf57..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1385 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHM!~1;QW&K|mL#79s4^GcdOcKK%$NEd(~a +zGC3!;SRptuw*W{p7#dmBO_R`OU|?bNba4!c;H;h2={GxEz-?pWG`-A_Dc|c4cm%S> +z1|51-lWz0;`;Sv8OA^0*?dvVyefQm~0*e^N4^382J(tT@)uhYSF2DaJFy3lT=mCHC +z6o=paIX^Pn=NEXc&$E|(sH2oS5ub0>TKOVaVDq144J>TZ$}?}z4~lQ +z>KprGUV*Rof6|?QzoGGhg8N7B56>TDf7t)vbY1;Ei{vD2kHbfUI;M%bA;h&F#N5Q>f*i-4FKwd7(|6_nY1~ +z2_I*yXV{gl{W@47yhx(=We)?F@mkMAVhZS(nY7FIGpysHwKp?2hEG%QtXZKkw0X7o7tt|5+@LFeNoOYI1pm&r{oW +za7C>wl$>q +z{JU{-wSuA8vC}OdGFz52b#KHB`D=k2n&a>6zq%$|iN +zSLap5{%N*+z3%C5mDLTAJolD)uw{k&*}PuHmce`>y!KW1irs(P6fGFj_szMtyZ`L< +zM`mJPXZ#OJ8BK}d+mXAwuOR0@{bq|UpN|K1EmjIgMC^Pk@;I57HM6PaQdY~2SLn+$2oZKz6zx1nFAn%uB+IAbCAD^tU|JWzZjAE8T=@WZoJti;kKUST*`~wTS +zgS*WARp-T}H%y$@C$I8PN{RE}=Ejb#qSq`N-6Bn^mW6G5x%`S^JfrE{PfINB9l9S_ +zz|SJ&U{skj>8w*g +z?yLEWe(w_7-gzNeu3z)qZP)VPKi$u!8?w6vG0lO +z%yEg4%{j+qiv;ULiwiz?cP?|8-*(94gInT(MIWBHx3T#*^{wW!y)eJ9uZL{`55pyf +z$)94@ue+^uQPd~$Uk-CcW&@K6vyWumM9GxjXAS;7Oy{foa=_5qCx6iv-P6wL2jyRW +iJ$yXr#glZMKjn=3Qa-N}cgqA86%3xPelF{r5}E+GgkxC% + +diff --git a/themes/bgrt/animation-0029.png b/themes/bgrt/animation-0029.png +deleted file mode 100644 +index 33f2683016b52bf778779348c8c96cdabceed39d..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1348 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH0f49q-3ewP5Hg}{ba +zCg-FUD+DLz7654mLnDj2X%gBD49s^tT^vIqIBTbM2T2?9xOy(QaOwL0`qbsYQEVKZ +z?=Sw6NWHm0a(#;DwY{76&VEz2`|j13CA*w9h}NFl{jT!I$+x9v-d5VW*Z=gm)_7NV +zrt&fSu8HX~yH8JxzrRmCiF?`I=Q>t${l>>7>OP-7;XJ>1Yu&XZ_x<)wf(5(_1pZDc +zoLzXL;*8Z7kyi@qL^12&6&>c{RB)F@m;*d`q*}xr$Q^^&xs#RnX7ewSgqV#p&Xihe6OYH +zf17DqP6rYqHgP=o-J@G@AkKK+Tb}l$>x(;6wS(Gs2^i-6lRJLuG`xXPAmo1$LHPt!&tENW5;xOk_=ETwZqE>sL|AS1F^;gzqXf +z2KA>b4wOCd^<{cgCUm@PpUd-^!LzGgBo}3czvAmTayH*7NnpnN0`?2jBucj&*L&c! +z=L+k*N?F@RqhmAI>{jPH9p24*>Bsq9NAwLgriD*m@>ss8t=P=-(62w)z0=zciM^Nl +z&1Ct?a>doRtL}0ZWLgF1h@~)p6JAiRUBJG6RVB|QS%K=VY%4~)^&AKIo^96@Tk}2E +zt1Y76`uwe|gcp8oOrk`TUW?yOt1dpRDl?s@U|-R` +z{S1{n-`_ROz14W&TyMIr{Y`=8#U`b{^+YZvxlWwG&~si_>ZQvob}k|B7k@IZZ_PN# +zxTpNQ)rJ+mi(46Q&J(HsduSuKhy#m@bCSH!geO<$xIXG$-BQITQ)VmtX!d$jPQ{O9 +zJ2wRLESP`9Ln2Ah`oX>{>{?Rt(LU|>M6W&4pLCJqTd+ag!N4SamMf2aetLepACR6O +zxP9{7L+-9@#YyWDch6M*>dAjjg>~7%QyRxVIe*gUYirfAlVhmtyK%+Ad&&BZcJ*<5 +ze{UG+8$NvFY%HX>Vc(R=wMn;Pz1toMJ=zg>?SVzsy|-x<`>_?#6|MW&%Fa1WGJerx&TJHC;dqtv?BbQ5&;4OBP}10@ +zazQeG`h_D~`R$GNF^9CUFc<9p<|KDF&tc`#FFVUzw@*sRS#$n&_5OEmYszJX1xnP8 +w&iL}?)`A1)tQl)xY`t%3n4QBY?Ea6L{cQB)#qG}?14{u0Pgg&ebxsLQ0Fll~+5i9m + +diff --git a/themes/bgrt/animation-0030.png b/themes/bgrt/animation-0030.png +deleted file mode 100644 +index c5132bd9cc5ff00f5c8bc7c495d215a48cc85dc2..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1316 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHDi8)K2m-n=wFqISo`Jbt@aacDX(6!T +zmB~4&#R|cRxdlL)!O+N}ZkmKP0|WCOPZ!6K2+r1N-9@(?cwCv6`ri8g|BBx)kA{27 +z?<2XBSEPw$e%&>xEVsr&hEM#wX%)2{4%zvuVDD&wlR5PUiYeYBx7>6)j(Q>sIM;>$e)VpWWw9<_(zF&|ebj +z@2L2s{fQW(x&5*e*VoqCu^yf|`^e1qcQvfoew2sx+WukNP`-?Jx=vDe^J4iwE12XK +z{k~f*XnWv2XI0fRW&fDz#rlc5O~)oB)qd*Bb#AqJUcGpE@qyO{y^Y?o5`QhqWlC;+ +zvYKa?^sUH%s>mo|6;xYA!u+?d^%j +z6PfR*o#lP*q$lhk(X!a@l|j+v*WVVIY&gA`G30a8)wI7acXD5tv5Wcfo;4-B(Mz5x +z_TA~)JK5L6WBN@YtFRlnlVwZ#7FkX|C(haFd(ZOI;ztfVS8qt`tJ?2nuu6^Wuu(6V +z!@yAbp-x3*%B|prQ%ol3YeEm~Flew|_fq1a%ci}0x@^(gcguU8(A2y>_t5${m&H+W +zYo9;N{GL;3`BCuG6dNXWA;03k8^vPce!ddg#u?D!A}IE0mQwJCTba{23-tTDm>7~3 +zCv#UmTYAH)NoX2B*SyO7+Wq`K4||mky+5(e@WJGxN2#eU5|nk$#^4Gt#P4xEK#D3YZk-azyJ~)6*Z1m_zmYc$hvfdlaNo +z-dJz{j(Hy2>BXyDRG3?2KKMO*>d~?I!uh%!tJfCsJdd4(Tm;wn`7t{zn6wRRdT!_AUsNARX*kAvy#M#1o!=*x +z7u3}B{|MS$_TfhNfz2~cyk=X?_ETunpJfsb5h8~D`bMo5MGmVs|yCFK++< + +diff --git a/themes/bgrt/animation-0031.png b/themes/bgrt/animation-0031.png +deleted file mode 100644 +index f6ed4b2b3cbe1611c2530eed5d67900ef2ae557a..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1245 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH16H7Al^AwB?(h7Eaj?!Pz>kGf&!($0b`mv+>{m^UpS&K7Mtw +zdX%K9Lih0r&RP2Ldecv@|NZwLw`2I1%;)ng{v>SfyKzL-t^PN|YX^S?v!ojF!{vM9 +zq|^8G{t42Xp(hQ3j;pO?*%tHt_SazI%)^M`Sj9`h8o>jYA +zb!XzY=(XRY=8J5zU`&yH@ys}gS(hG*H}_lr(v#Jl0&n +zu%teF?}ROa9rjs{_b$(zAMDBCHrF=yV=a?J>D|uaH|I|%*6F{QGlk_y(hH%bc3F?J +z81s|Ed%Fz&ep{wvKl#7Hc88zQlWxp2Th&@}ma-Etz^R)f0QeJ3F5%XRapJiS*T~d!D(z&QN5UM){YmipA3&9l!DL +z4BM}dT{Fsfi|4Wks9KgynysI9LumK;Ie7^()ALP>RMP7cXWgA*=B)F0q5q*(ldB#d +z{Mw!2b0L4bg8tT4_sMSkuM2+o?Vs0F&8SdfDNy+%ZS6kJ%!}!B2&p2I_MV4>U=3-&(Ror +rNw8KVhI_{1_}jDI{OE~3|5yIS2B&Hd%}8rt_GIvM^>bP0l+XkK%<~xE + +diff --git a/themes/bgrt/animation-0032.png b/themes/bgrt/animation-0032.png +deleted file mode 100644 +index 097916423d6c42f03f07781a8ca380ebc91a6e36..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1185 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH%kO+W?0AO%4{7p4{=?9?+b^9=c20+bd4 +z8(x{5lUl40oS0hxq!|p2Eb697XfrS{TY9=UhD2~Kop!tIwgC@|^6|I-|K|(sl$hbX +zKI3Mk#<@hsN1M2twp_}+y{-TD+i#5t+Q05BKWFpjiCW*znbR$Q-FDx^_r@osU!q=I +zIsg9m{?kvJDg|C&TKRsKU(U&}*|x5#J)B}&l$8&xlKUp@>k+W8`9*vBjq~9Nlcut2 +zy-fe9Vm@b<+P6q&4M3HmfI-TRA%$*<+t;&@9oCKldZocT#LLzLs& +z_M-S_stGr4XWVl(nQ8ZFL!`g3f`yyk8xy~C(hr|(-@{a-=smwoc!%M}FaIahA7&S0 +z+V&))HdkQ&u^((#UhXVD_Rq`VX7WUJzvBv1XDpax_jWbg-K$J5?%t@^I>(urFsb3- +zs%QN788=?_YlvF%+C)RIaZY%Rnm~Pc;Q7FSk}j2F#>@1-&T&v}I`ZTE692eX{gaAp +z5}r-Q2DMk#Jhqd2K9BQdcI_e%btFnV%zofFOLU+g7 +zGNEj5iw&QumjBIqbFzN3V*{&y?_RSh42kv~$LGJzbJ*bFQ+(RG`9w|UmodSCU$tY}lSMe|I<8^ww$FPL~PJo~U(=;YOj3M(aE +z`Mq?vkdtKj`)F~*=gXQEyEX^w+jXdjv)l4JZLVd_y(91X|Cw?1jVGnT>KpfQ`OE3= +z-#GnG-idfo-u3Z^ZpMnddTe|)f5&W}365T!>S63YvlBY6_hmi$D11oIz-qf;gO0=Q +z{&kB>NX1ryWwJkjhJ>FC%CC#gQ +zRn}MUW}L44?$SiFt0_fGQqYQ953J)5uh``_LZ>G)vH372H; +i1Fy>eOK;rqpJCrO<8F7=?H7PqjKR~@&t;ucLK6VT(*5NC + +diff --git a/themes/bgrt/animation-0033.png b/themes/bgrt/animation-0033.png +deleted file mode 100644 +index c9ec0e5e62b10de61c6d8f00e456d2bc8b2fff1e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1111 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHzT +zS0?AA7ApiN<`w{H216r@x@i*H3=B-~JzX3_A~@GhFxtU1s)%boxL_q%)PyBeeM1I0y(bpUtgKoKL5@UL-Wr@?)5)Ct~Ji>TqF2+e$tb@ +zaqHI~f81Cp`1;by_cQ%+PP)xDb@jcWw%yBjLDSmKxoRp46kP3X?(UOs^b|9S6n1+& +zQRKc)MoZK5!z+$I$z-0ixN_DX-H#pq!uRDmcO+l>d!Wiq{r}}@Hv4^TA8lH9_m#zV +z@2>gJ%h*@EiRSyb$??-aSB2AyFRWvWVYp%aPyR`1U4r+$jq7_YT79>?oH>ilj`Mjm +zOKh>rPl4ZgGoEcp^_JLYxp(9D=nK{<;bG}<+jk!gzZ@C$Q~`TMl%*}?(&u=Ir%VOYcif1_P?%mgS0^F +zzIoacA{PtHSTE;UZc#C%n0=Ap!Q4Z4t|+YW2>ZAB-s7gvPCuY0og>AfbXlneV +z?;Y*S+obw?FWhX1UHI5(U56V}=kzL-?-HvR#Y2)WyL?|;wn!~%Q!Mk>Qx8umZp{{w +zwwPP!`JvQ)r={h$oc1qM%ZfH;s~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkKsgoBtr|c%4zN>-5`mJ&Cc;X2pMhe6ATej4P*EZSgwiuGF#dDFA{Zzs +z3X%*?PR&bYNX*O3O)SaG&r>iqNGm8-;D6i%R3Hpe5Cn8#Y7xRtJp*&Q;M0$Q(n4Uv +zE0c3lixq+sa|?hpgQ1Z{-82bp1_q|Ro-U3d5u8h>H%@w`z~j31@&EcwwR27^%;b6% +zJ#!_e;?D0vUGMU4Z@c@gcE8~V*<*9kXMgUPJiGAB*-Fdf6-PYG8s-bnG>)m??so6< +z&pmhFm*2U(L65!Hwn!j;(<|fUEBY6Qy2X`+x3D~an%w;1%beGOSCSlVHVobCxBuRf^8|xN_y&zP=|*-W`uU7SFlvqt)_l@`mpOZheZIv$pi>8>Nl4 +zJ$GlnZVG$gv+LAa(?V{ZeVdt_)E4f`zLLKGQRMW`??je}FTZx=PW%p@fWJO#>`$LG +zJn-7uKy-ma1M7J)d*;{D>2b+IzWcjkuRN0%ZZO(;;8~XON<;HQF+DFDbj>zKaoz3B +z783X#*z@4oxizNzjZs4Rzh6n6Gw?G!x!P9MSIzgtjy4_r^+~UVn35fmV!y?nUu!mP +zt?Y8MK7~22?-w;sc*M4AZNtjvFDn!G|4b16syf9)zSYn`P_Vc>QC;oPffHMUeb@fm +z;q*h+gYlN+1)Xnt_ACbuK9-O@;S`fo=Jx1QW73li>wI6^>RI^5y9ie7<-UA~`Tt^f +zTYe`I{(VynFxv + +diff --git a/themes/bgrt/animation-0035.png b/themes/bgrt/animation-0035.png +deleted file mode 100644 +index 2bd3b0dcbd17f182023d4d609f1103a8b128c7e3..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 981 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkRtBcQLaqCNavWf%6eR*BjZITj<5GcQf*>(xpiogF1BB8uFfjge!6Fza +zDGHJdPEO5BWk}4+%uOuG%+FIWHb^TdR^Wf!1XLglQV;}mVQLY=PCWy2yWrE0fYL%> +z!z+_>Qi~OW6LSlIG=rg$Mcp(BZ3YIWTu&FrkO%^GtTzm@?3tV +zIb5r{o?pLgJIUbVCY{rdzgF2s{Lm{tmMQEmm-DH^Hzw)KcbNp?ADk*_k@l+_tL^6Z +zm&O*_Pph42@_n*r&Cyl*hTe{HS4zkp-=gnFw6-g<%aijqs@TOWyh +zon3li?enycy(Pb8oR>W7cb|CjjnxNxxxNE6@6@~OrmlC8VgLRjzH6VpWtZoBTBO}? +zvZ@p>U+%YlgW2b#y+O$=v3$4QEK`qg*!tkewOL25TwcGU=jd9i$T>f|nzy^(m#Tdk +zF85pL`Uh{jzgw3d->kgmz)XXtXJ5B|dHnu=dDt_tYTF5(GsNVLrtkYHVya&DO(05o +zn(zb{?~Rjs+nzlUc=q<}zGw0Aj4XVO@f;psmohm1iZ1(;l1tcKx)2pSco~ +znAg=Yu{7zN$+7F1B=h!5kACGZXO7O3GdJv14*FI6+wK( +zpWlMshd=l-;cwduj|V#aZO+Zo?-?iY6}c6->#on?VK8)l^6`$M8vC9ifByq_lUZ-o +zEDw#j?SFtlv8L_7JwuOAPt?BtmOjYnwyAUXiJ9i#*S2miy6ny8_vVLdier(hwZ^;i +zzh<8OE%sa?>hs_44!%((9FGhOrQ4n+*mm5=-W;y&xB8hywh*USLi5(udn|q(nRI!& +b|8IWxb#wQAN#$7xOqL9uu6{1-oD!M~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkRt9FLq_2SVbAX*vln9hGHv6l?e;+6&2oiG!3KbDnW?*0{^>lFziQw#=))=Ja$iw3L_kaAei{;-gwb<51 +zw;Ip%Nh{W9-G2M+x5EAR?JWxWXO(WWE7^1QVsyOitM;}?#yDlu`sLrx-1`}ms%7=wH@#Z) +zIlMA|KNCBL!3~3K+XPd~h`#le=N?v8v*%cCS$(n2S}%rwdgyfd_YAE}&YQ!Sf0tZ+ +zC^P@hntA?y&*oe$PS7u%nKfhGt5CMkSR{dpqwZK+PtP?5FR%M4a%InBo(i?{ +z%wM18E|Wjt?z#1YW5T>TuN<}K%Vobi +zaQvg4#jTH}cLdIwX3dkbTK@29`uCgL#ZFf5xo3Y^s_e&p?-#ERPc(o1)$q+TzV29; +z`BB+_J~QcGwJ+3tP{7XfUg>GYT37vqYn7%O_iknIb#~b4{H=UpmO}9&$wiTCuQTyp +z+~M5*^}6%=s-1Svk0vv6`?MMGY+v4YTyDF?Mh-d7KNwNG^2=^ZeA`@COs_P*Nv;FsE`lROs^ +maxcX1vU~Pr(aE#I{~0q^X>vclIt`S189ZJ6T-G@yGywpOfw1BL + +diff --git a/themes/bgrt/background-tile.png b/themes/bgrt/background-tile.png +deleted file mode 100644 +index 6b70a2d40790fcbec68b2db067f4f6b0d47ec740..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 79464 +zcmXt<1yGdj*TxCykOf{k7b&HrJC_h71eWdw>F$n2S{g~|1r(&aL%Kn_8|eo59{w|* +zj)U$v%IRPT+ +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 +zZQI$~@9<}KU@;kXN@H7w@<Cy6DdV +zBiCzmE^Ki-)VR3ZpQ`w6hMy_q@k0@G%cZ8syQ~NcLH)8Hb^AuTXBp<0!1K;C62vc$ihrwk`I;5DvE02$lYcCzr +z|9-zXogkZrBDj`aod)6}R`8@CA0fPa7d?zkIPP`ue_6!{qk%wwGX!BBTD=0Yp5<=YU3=AE%~aTUZT8 +zkd>XiUI4p3fGu0ZhnG0P)6|qsTVKE8Eac477d?CEAFtn0ReyN?L5B +zI?r7fahoF^$g_CLx)fgD-cJ2eKws1VDfzEC`_o+tY}7&l3PXsXd$wQy_-dV5Xd3F# +zK6VlabS8SgmmlrCp51C}?=V7=W?>;HBLqr*?OWRFZrh;l3iQbTNW6-BP>-w;$DG$Xg6JPw$$Wht +z&-&5kpC_ycRiR8^_NClvO_d%M%@)z;$BQn3<|-IrhqF=It*tUcV)SG~kibL%{4KTR +z2WWn6ZLJq5GT<_wdZd}&f8{p*;G7k+bzwB9;`OD_NsF3K5pZXQKWQV8PgnYO=YT$i +zj)^_{Mo5sr9isHh$z;P8|0r=Hx+NjL?-}!>0p@g=*}v%N_#d%Of9pV>zxfv}TqtxHrP-@Bne*?>7dz +zy6;MV(WKySX$X|y5OnB2`0p6#xbUK6_rAqrck?u44NYcl~?#>a6S_39f=gl +z?Dndv1pW>hIBtTJ3~2DirG6)d{axWKS~NJFs69eNVQZ;E9HLq#848qC;|tLDu6Y(V +zHmZWLJt3bY(W_}S8k3--Bz}t3a% +zUKUtR2c2J9(lg3;u$H46`i1<8|BG4|mikQnn5s|&aCT_C2g~1368LY>otxliCW|U~ +zU&Fq`+PXiS0nOe8Sr-`^gVT-)Trblo_`=rw$;M4jC~vqYjo@$|%#(=CtJUBqEx7H8 +zuP9^!k~K%`;)z~;=7MEjG^iwpRsLr0lV}uv(#^u>pKeS6sjaQ8zQ7Pbh8qzEM`cvX +z+|yPRQh}cIL=s#O?u090euWKux07kjMg7sscGh3@7umG>j>u%zU|D>000DeT@;EXw +zk~ySl)*#RL_DdEIwmye*-;MCOys>r)aDTQOF*G!^U*C3B5n|!%%*li{03%W|XZcD>ql&ndDdjxW?#yS~#jubUdlWy6 +zS?vPa_YllV@rs58wn%x>ynT<$nD`-DAw=ao=lL$@ggQoM-HfwTBEu(MLKw3wjqO{M +zob4J`8}WA~EG!$CA8^9BBu!1BS7I*(cHHQ-Rc-gj%!p2|oqP%b=Yn%=3!<;_l`oEj53&<%>>CN=uAY*k8Kf$ +zo_&lh_!&?#RIcENSg#E{)Gc5F#CkNbs1!!pwwA$vW3PQrowcBgkcKstdM}$xmjIR)r48cf@1RkvnB5O9xoFn +z5~g;z*L_&V$n@bAnbL1YS_psj>Cd_?qNW{n9qae;va{24!O@llKtbEgII|#P^W4je +z2-otB7}yvwVz09edXOQDbOa&%GBPcF+=+x`iu&D0nb9EcUUfI6c$1?akjShz2d2~R +zo8;Q8!rmI8Sb*^tWUk=wb5`|=*R_-kFwrtT+4jeK8@UraQmEGlUggK>`|4!1A#*4I<2@5Lfqei +zx6L>uv{p>Z_HyrePAyZ1b0qSkbNsIVWZR{%gH5)X12{;M>SX*1Soewp>od2%!{L}e +zfzg_Sn%wLS7^En2xcdC>234BDt+$6QS@t6b&AH;+AQT8L=F!F-#o3?ro?dpy8!p}j +z!apc^ZcylZ#C#rc3t}Qy+c9f|!Rza5uu2RiGO1uGv3OYu95uJ6$?X{!vz;cg{lvG; +zlD?xPgFf$NFsd}GL&xx(Zon7>StZQ!hC%3zBaZAxXsXYzJgb~ +zaspmvetTnMBwSr7nWz$-T*EmI0x|I3FN{S@yK>Q<>C6|U03}$Ae+JHPgP?%Q*1 +zQ(owE^(>72v;J(IRJ$1z<;eIoj|V~^;agdRLl*BZMR*sBnUM=5VmC`JSaBlP^YM+K +z1~e#iTQ-hL|GN*~NJo+hmLVcF7eb5a6-J}CRiyY!gd&A3>T){W!px?Y*UcX9O944yFpSQ+XwQv6&Y9tLS= +z`*0iAyYp>9S70XRp^}Kjsm2T`fy+{=iOS2HYhNED^uCJiq$z}x1-td-M39Lr45OeC +z3@xPV!Vk1xZA?ZdE-&j-L<8>BT-$Z6IYlg~9>V)y@$BHzZ9luHulIySeCc);r4z!1 +zqK%X(nYhu#@Y1ldf6osA&kmjIu~EqbDJ2l~`ZvH_cZhuBaqPl2F3pPG5QF}%Q8W8* +z_#A8F)ZigmXb(DzfWXcv5$cz2q2TBj| +zs3L?ww&G1sv0EPMuWaC76SYN}gI+Tfah18%EL3U}6} +zrYSz1smE=f$G9;CS!)g8tYNf1TD4h~!6UkD^ZdNxzEVaj&VfTRc&*#HT%Di4wzLh) +zeegvvKyV*Ecb^EAB%)4$a3h=I4b21(rLzA7?A)fN1+yPW6~*k}^W>kt=A-^AoKA6* +zxE_nRw);u^rfAYPk*AY{36C#BvyUE_TK{`2AXw#$=#BJ_#Q$0$H6$oyq3IUV%20l5 +zxVq~7v$FCRe*$ZJeF=g8(ute-EG*GWYId3_g}*nA(R#VQIg`VdOP0r-%s=B-{UjPV$l28SAiU +zaLF-@H@+KvHC{QDSj^#hTQtxLQ0e4x{qGU@w%Rn_S#AjzFA39m!PyX%K;(oQtgm{a +zFI0pyp(k_g|J))vg%AG@kuHk@vWNKN`=M6vI!BzL`sHhV0p~5bkiDKIJwl<|Fl8Pu +zTfOKu3?FLIH;AbM6TF{arC%xs+$Vna6@(vv#*_1?0^)>4xT5o1h5ZwCl3RVadtTZ5 +z+yG|y9~3Kv?e4Wm#%wLx4402Sf+#Rma~f1FrP&sDj)S$sF8fXll +z|2Mxgh5z{E&JD6DSdp&@+P+9v6S3O(NMmj+Nm@vCD-wF&85i)liL&T``mi)musJ>z +zrc?F#2NrV1?a#uTpey4yDRp%=IPa7A#-V6fpK+KI;Hd6*BA`e(+$Qlo!h3odZ4)~? +zR+&R)HN%kwA29yd$Ow+1*LE`Rhkz@IiLE~Lhf@K~w_CC9#^Tu`wa99+e{q*$Ka-0FtLy2YD@6m^LGJ +zG!7bC@|!~C;(EdJgLS17arzU9cq1lB8CCBwrQg(ibu&u))X>=Yr}zRhIBm|RRuFf! +z9a3YKLu;WIkxidbrRjXW^*b7&PZH`v_l_P{bW?j(JZtt5=!#ZR0|@&>82zWj{H#$# +zpE?t2A_F*kX=(@i)uD)}A0WO_76*jJfRWvMpw*+ATv|j!bB-N9QxIe=flVP#5|!!V +zjoeQ2HGTvE^!X6oHBrkJw9Pf_Ib`9vJ{^#vgJKup0EV|2UakAocb?e*EAqtq>@*nsK>h +z&K8&l#=ueqxJ+ACVw0IXWq4cK-VbCLm@`(r_V1cHG!8uUz(VQbR9bq^eDJR@szJx| +z4{Ao1`Jb=)gU%YU()3@O(vjaJ!{Iw)Ibve2`&od_3EN8MBa2y^Xr_^BfRLN2c`3El +z{7v~~K~>brVAlBZ_WzxBzb4=MaM*2u$+8yyV3A&YFs_1+#LyKk4b2yO+E*UY-lBom +zOha-ncE?^f{)v1|I~hs+xP~@<5cQks#`-m;AdAtegz~7aws!i%{am|$Ag&7Ps3#Pv +z-`v9g(XFt9&BDH~wY{}9E4@yi1}yUVt-N%>=Lyg?jSK%JvQW=Ob*RQZ5|!gzS9YzG +ztz27qqtgdHwm{i}f_pa>RUGLzA$c|24aPI&s!)OUh}@4XV3Rj|>H(^sTVq%-(V5Sk +zhI+Se+Mk~UK*m9-p0n9%>Vx#F^e$;GxFYQeH!O}!?X5n6tyO_z%8C>qn-QAnG@hs> +zJ|KG~_6D+5Z5iw0xkFZbTC;;FrljG@1HgXoSdX8h&5@?MV$hY-Z@Jxw!jbB-oD_Jz +z33#sGR7oKKVbId`*>r=y3IiS(11K9IwMi4 +zxK4gOXa9aW^?IUT9PCL^a_2yV#^#(|27k%S5=+Ybp-@FG!Z5WT?=Dyk?0ILKCQ)Q2uk10dDP;&} +z(f~HKmD(4Olbcj|@_$TCtg0VolYI#E%(rm0HHik~41CXeWuQEL-ROlqP(}D*4z7hq~&&87t^joVI*8L9-Uw~(5K)1OL6Xwz<35`j4NH}yir=t%E +zog!}$!QiL@ueJA{HVIJHTzML{cj!{m{bC+}^?*wGwAu{DPw#Zu9~}2%f)vouRPfFh +zIdwFJJg!cwXK{hf;#1-$Nc0*U^FFv>NWQz9F}DU;ca4kOu7#XFf{c}G+rSG06A5p@ +zCZPCT{;>IprH|!r{nkSC +z?olZW=GNQT$S~K7tS1k>iZ0obLHO0!Ncsd+8@8?MOoVzx;<1p)Pp=j@ux!5eUO^yK +z{X9XwK+1oM +zb^VC^#alQZ#|O;G9bb>pZ7+fp1Vg{1+KRRR&QFy-6@j~oa=Ajl!{=HiFclN*(f5(uOC>SIxbM8~=nzP0J63cWJ)Ij+^2#YD3grm9y7>8Jg5qY#KxW@ClU +z7vaYmVa}o|1Uk@ur+^kOoQmqMt!L3Tg +zE-HVyhpL>M(6%m_-ljX_)$P=>G_6Z|lrrBj_2xGA;j-iPwRJ1IC#ba;2ZZ0sl)y#B +zdHg*~z6~zRw|cVIxb=a*`tAy?3Wx_2gA(M7Dokaqdx;Ymu6S?3VAN6R%`^VoQqBqN +z4K*m|r0 +zk&|)LyXfyz_pDs#0!+kxKmKLvUy5$01qoGr_=wygufErgUV;gll;~MqvE*^n7(CO1 +zP@TL_|2R&iZ;DUSLJQ7%IBBOQ_>#t%b&le~)QzLNnM7BeYUtm%OQOyTPJoK^#JqJX +z%?1pL(SrjUq%0{xVp6D@a7J;*m{8OXg&?zs_@~J6cC{`%RkV;pfrQ^#vmZd#c>F|o +zpisWN_aW%2f@mn~KW~7}$Nq1FxP9-U5^JsutjQ_bw9Ap_E05w_{6;On50LwcDj{BZ +ztY78Sc{VHYQ-eUhL(7u7Av*dRkggE4*Zzok@7VaZ>waUubu)x^ul~EP7lA64;BeKu +z9vVzf1v?)^3oNPE*@&GF(7ik2K?{+v9@9KQ#@S87lx+uQDHZ~DusU@0d{MBS`=fN| +zD^uw=B2F8SxR%B5aE79{_|$;K|pf|R(+KoM%{ +zXbnV3ukBKhZWJp`oWWDbUTXsfTzy7vfE{f_Q1FCKlT&y>w>yj&5(R-Y@xJc(uPIuE +ztV(f50yi6OkupY<_`3k|Pj&^I)tPo)PQ(nxpMUc`l+^x>^!EFE1)a~JnOQDDbk>6u +zB%CX}{OxKjM+((OKZHyFeNSO3yrNG-{IorM-9e80yfm!Rd}}BEH_frIN;5%hd82hJ +zxqDnN93b9x;SCy@#r{(dpTGZGd#ohazgfx8E2%S=Xw~``fKJuws$9a +z7eAcrM{_X3fL_uw{0QsRI1dPiM8o*n+r-g7tJ +z)+=GW($|-i#jJ3LAO#-d|FjPh>s@xfXbF@w*VRG2vJ(J}NC8P!# +z#UcD?&sT=eGg(3TGlw^`x(>-4;VHrAw(^j+fhX;hoX&Z13Z-h8T#(9Lew^qaz$6S# +z6)UrgK3z^xLc@kRK7XBw@CSYv1t(54y6oaE1ck~g$Xx!BgSG-jOr6KyrN-;m0k_>K +zjUrb(sA?aet^L#iEg|Pv!WreEH69$$y;u6}^0wDRfE9{!E^Jr=w~6iE1Yj3nsB3O+YRc$XNVK3O +z@zJ-e({qi3b)_y6cs;!qz0IWuvvPN=i71kbeLrne>Mvhpula)BLO=UCHoNr?fPKh_ +ze_6J{bh+#Ov}8>9&GDO=Mh^_um4HV8#ra{-x=<*SwTC8l+ldE$hk6bEh2FP$20#i+ +zHX@Y+rAjDSs;+N5YVa*S1nrq|sYi_@*so6#gQeAXm%kosYi&<5PHI{pVzKZTo=W;Jb@3+7W7QDfSLCrSR*LpP^ +zSR)jAbr`=(UI8anVM-(Z#Fa%6rvBfQBLo@(ctu4#cqr3WAPOP(@?36{m2x^%Z|>Y+ +zQ#Yp^1vb<-yq0p}J}e4_@Vn?qJ=?*y1T~>{Q)>t1dK>^#NF)Bhs-7upj*^%Z^W{L^ +z_G12Tht1)8w%-6yHO23=(et>oW08{dzW@eCaSo?C=QK_}yPflZjnpxGHA#CwmLcW+JxL7Gm=hcS7tPdu7 +zK90FW_YbeyBCX;}&BG5a>#wS~=-Y7n3^XVdah+Ut4S~b^=*G8Q=qg +zx?G2zMTqYh(~HtFa=_;*ekFrn=(^!9Cy4Ou=MQ{gPEnzAG+yH?u&=~lxA8`K#@^Ii= +zETI~iOfu`PHpy-p;!m5oFWz~j*W&4fJK8~5i?!q1RWe#*vtLy|Ihdu=UGnnc!BPhPGZQSXTeZQYwz0|?TFEjBD2FC@JzN!MpcDc +zS{q%JnYHfMVzvX6jh-pVQkvxBM|eHt6z+$YN7@b{bHL4pf2qEHk?IM=`k@Jvm-~&^=d1CMafZbtCY`pl#x&>1W06N1-6&GSr{YT%> +zaO{|^XgUsGcb;4td +zEOAfXhg|>%P=h}IvCQeMDSQQCR{dp;z*g8<7!;C;#)Z!RgH}3`M4?`B!uDABK6FDi +zsVL~~H@46$2r>o%gDEXteOT&!{wYMMXQAIYzQ4am3dylm&$`3+4LG>O$rV)bi&m6;npc}y8Z@IMV~h#O63}ox +z@L?(w0kW{x&HgxQqmdgQTj#CO0x7z9FNJIV(o&2t@ftf0^o}xA-Y@K@FCP@}A)}~i +zOIwY0({GIh{BwDq{}1QWC@%vgh>q>MFaEPAaGg$XT@k-8FE8^}NK3BM!jY^*%uga< +zsAJVeHX}k-+LWUy2kj*3f^U{?$wgT=1mlEaKQuqh2l%^yLGXg#F#i=C6xbZH} +z)Au^+_ai_9(kau?2jVFdZ9zs=wk+n~6{HhZk1xGiBRqPWD$6ElNu&8#3;+@gYg8)F +z#GWt2>}0w?DC4~z^gVR0sRAMRRr8(o?N7&T32%$GzQ3@6WH@tnG#OyY-02CxN!oHx +z)hvatM=NnY&uALzhjw}&*UqUhl%ZLU54;m?5iMui4P1Tt>+u>Nj5|4`@2qmV0M_~KmZ&L+atS#joFGD}og1?)@$KJWtx?mld_kJ~LO +z(5Kg8kCnzPA$yN^7gF(sd&9Y8(6Ip9TAi$`E4LqlMm4?w$n-Pd>GRNax}~w_n<`3@ +z#*!awpmoL~Rm-C_%lU5t>dq7kf~R3U(MB=(pg>|kLWy8xibh=iOMqRng0UmHdu?Rb +z0eyo&g=v7zGp!2QdZ9)0XKZHPib0`a4An{JGA3=A(gZ5?c26cR82a9rH8Y=qDC6AKC|eeGp$Z$21Yj`j1!C={NH28s_4f-+7|2#n&uyQ& +zXt#+-vq5@IuFQ6|I(AbRWxDyLOS{eDSJCIC!$t@U;#bx+p0=MPezmsZTr&tFd$D-# +z70@Uigp{aZ;#1i*BCsVE#GfEXyUW80;VBFZ-JA2sJ6OKJbS=VPDE(4m0lVrXU5z4A +z&iin-Vr#lo4d=qWmanMuD>^l@Bn_$db;nqy9~wW2>%YhC(Etbw|B=$GBZ2@eU~`K_>3 +zcfDY@>*qJLY1*heO^<-izbQHU$tHhd4}|tz$pMIEeUIj=x~?lyW=wF=_3Icu?}Apr +z^);;EHrbY!p?AQR%Lx<2jN?eo->!;p(PwVV0X7G2J`e+-7n}0GD@FWSUbTlmBd&g+ +z^R9v9Gnez=^+ojN%)^Hf)@&Fd1OFeiM9f#gz^n_HV3igd#!19JI6t!Te_)3bnj+8Y +z5zd$2FP-V3Akytg^wYksYyeu(zR>F3C}Ju}cf=Rxjo@sdO$C|MQfBb`KxyLQ4r!@n +zGIX{nbpcN2*YTvO;T5d9kCPxKb0RYiDVar=j$CGCi4M{Z?Mi_tZ4pE+8TD13zvXcF +z^!1`5Eg}-{OMK$GzT8I|IuPWCG$X8ZG@J*7Q#mDPX3{g2_J%++h<&BZ7 +z!MlZ4+%zq)plN}PZ`{&00w=NS5RQ5JWFnyyrCW-G@jI;MW&5e<;mr4+{h(I>0p<}O +z9k7gSyp+(TQ;OWL9jQV`IvSD{a!Zw%l>l65g3ic@g>Qo +zgbmpap3o;*uLmWd`?W|9r$PVkHBGVC$d6USui}j_gp?ffXpq|;&cH}y#K(c&m +zs)2WDh+Kc3J{tT$$mAC%zyYHL68^x?UB_6f_UeS)U_r?_$7zd;cxTJ0=6I;$kc9|D +zp|9nm{>k@ScN)9uU(=3;SM6sg!N+;>SDZT?eEla&x7N8{pyEcrPZmh1UBsl02Pwjc +zr~m-QJE2H7VmQXp+n{L5dI~4x(Zz%kT3J(~C>18#FtrD;S`h+aj*_iwfR>w-m^4xN +zUCk)zvZRPnY)s78?zAb>^(k1tM%&ka^!?mgWLxonI5q(YWfnw-KB@FHk4wt6-#jMS#w1lRm=gBk&j*^jI-r`bx +z`j4p9f+b_{LC%E`p+%+#M_f%w3ZgU1qCR<95G(Y}gy_o0%S(VhIZqIi18E9T_@}hS +z6s|lpA0R9HsL10)z9!8fAVur{h +zY=cxpz4+Iggl4|ICudDZEP}a=(=k5AM)$0%YV@|ft}}sj5q!j!XZr8-w{8Tk(QJ5e +zT3$AxCbV|IjBJ$eeR-{=fL&_0%Gv9e0@N5XEc>*!PMVqb3-oi&Ymy&iZqI?;YiOXTnH{Nx@)tVPM`) +znnS#j4UH$!zsdIb+bH0(>)w=nAJTOz;lEGP_NpGe)Htp^ +zZq6#5UWW(&AsCz$6N97CTzVk_|0auIn#mapgFUZDQ1iY_^f%PcXVg+vjo5O04f5+n +zuau@gMMQM3SLW`S%Vmo>Gmn1k%b57sW4FSbT;mH~H481A4j+TdHICTXs*=8U_e3O( +z%;u)_b^ta54#O$GOdl{E6pKAszoysZatwo+@eaRgAzY=1QpW6zrZd|~FD6NHO;Cl# +z_`d+VTy+xL8X%C@L22>MZ@GT3bH`hhc+Q_r;mTr9+z&f^?Tuit39;5d;Gkyv{Y)4f +z?)w(MAhY@-_w~F1_ZURbY8&UWSTV@NoDv`sx8N^t=Ga~uz;H+kERQ4K6sj%(o*u9l@XM)+ppHoEGw +zHi8}G*f=uEUK$o(AdnX=Ztq|j&gvp^(r-AVnJW8* +zCs{Aif{Ju&{4M%=G+V2u +z3=b`L$bSM=v8*Wzq?q1m|HFirxyT1>H8uCirjnGkkgbH0}U2&Z&!@i1@4sxt~_|ypP<$6*#Zy2_ACN +z_J_Sr{QZeB*0Vy&rq=U;U+(>049T@3OK)_2&d?w%T({a3(_lbQdKj{73pgy))9Yme7QACKSnCztt{I_zWcwdj*3WL$&fh`ewep3(C +zM8$Z_{nTl<$i#d +zX3TWVaSJCCIqg7x7n_QjP)ZAK3{y~0zu$8lwIYt|<=0pDfD6Thhcp#dbW~jq++dB{ +zj0lNqfgKA6a2R1m1K9vI*d5w+6A3;5lClkeMzAik5tou|INDdL`44~%uCIXAS40Lao>hD9&1eH4Y|0gwfwBgpcOjf#dP$U= +zv<{_as>{k(f2rh;XR{|QW9B&d^Zs+#IK`JAEZm53#P~tI9?lDF`YYa##5JfDzW6lq +zvkfc*$ +z$`$q#`Fn%Gnm-Lh#8Hc>RCQA5$!r8u-qOR#viO}$sIrS^Y?dwg6%*O1kbT7fm>^Gh +zkshJs@p4MJ8V+yb{o%W!&Bu$2Q7EJKAKtq%W0eof>`1e@Q<>Yr)>cA0t`-T1h7TU? +zaQJxg3MUX +zrBr;e{E6{%zKb!j_O1ySPmA%|pt>n(Ol}l*gf?M@MQCay+>G>27c+kvs +zCYhbkKcZhPBZ6vc8p8G?*U_t{-r$p$3=DTqBmU*D$!vB%UdWutDt09RR)#VxmbDk& +z0ZTpXVnEiI9iy|`GQ|bw@|ntpy}`o5@;gGl+yL=p3VU&W`^Z3wy$5u^!XfHNw-Dh$>n6V`2KgS^+%3wHL?1UtlnAq7co +zur)4uU{x~Cgdm}79+nrfDE=_v1NidafOjsP)3_6cKvQpA+bP14d*=gMWx8@#gX^sI +zyU6N%D|X#YwZwhaLMR8?r?gUttl~0?4lZxv6&2yMu?F28K%igHoT!NQVY1sA(?M|* +z-wqQbWD;?3u}?1pi%y7jj#r%rhraIR$Gw3$Lv5avr`Dm_f-BcUDJYZifHS;T66PgUL56fW;1!~T*k!fn2 +z4J=c~%~yWHK+p0AMkw#2Z_-$KSHU&RV9Xfeaf|4XH@C>}YaVkMf+$9CBhJj0@wlDGvHBbw3YL1=KR~w`MbEZG+Y`vn5EvG*RG5vTyy^E;A^R^UE?wz +zEi!?2sCw$8BRa4`+&Lh%KforAs9^+5%4Y?XQLiK;h6#ty@wxiC`w6Lh;ACzF_2~c4 +z0th-UvUW$IDmCOdx!_+%f3NAn3m}n%C|}JBb{p6-JdrUU_*KQ`@#O?b;bTzk7O4Vk*c(lvI(}=coQEg2V?x8E%Z=t9tH( +zfX}jIqEsNh!}-YaifhZ$>)T%EZ&3a=GO<$|gsP2h&Ff_R2@jsWTdL5lM->th5=cIY +z&kn8mG!z~_7u`qN;<@S^@OmX%266|__$L0F0-OVE!tpZfe`gPr`+%3sq|PJcexzk= +z>^X%2qRUP@zw^!aW#hge1r@viS>VXslX`#)4J)irZZ +znU%AKvCc`30GZSx-G3%tc5z;hhBn-Wp#-2H>6G8KY{ywUs{9m +z2G+5aQ-|!_@<@LDA5CW&6?ON1eY(3lhED135@{(3QM$WB5Tu5b?rxAyN$Kts1f)y4 +zB-Hyk^Ly6+4KIYXoLTdo6W8ARvvt-*ZBV;vlXvIE{H!gT7t^Yqmbs0DRq;<~z?RIs +z=1+ZKG2ztV_Ju*H9^$SN&@%le_Hf{|kNb{#ub0F0NG+XL(8U0EuURU(*O$(up49H6 +zw#^2M~PRRn-*f+jHpW2OQU!C~fTY24y%S7rsn2>;R@XB~kxd+eo~}$_d-u +zc3)@u_v|h{KBQR$y%l7>F(%zXd?dW7Tn?P@Pk+lO;bIw(#h2$8_f`|&`Xs;DH>(v% +zF{KtKXbU^fs`~i&=meJ=uy|TX!93yIh6t!R(rV5USGFk8*~Ya}f<*z~;`SdbudlVl +z96sC)_HrX*xmTOMZgE5{z +zZ?ShGP_4JzafUcucBTAVA2PYV{?ZH39Ya$*;ciST<{=b=GmQ9eqnNnGj;RUCP1XGD +zF+i^E%9duakcKGI3ExPabQL(UB3B`4mURp)xRk5(>8H_k4=C)K{6=^ywXf +zF)b?XSij!=O)@GAr&>WEpUENrf<%OxvO~l;IaaWmBidn5Hj=+F#Jl?QXXM+A41tdI +z4zDjHE8U*Q+CKzn#5^}8vu@I%$}{Zl^yCYoSy@C$+O3pkdvC|XxkK(o_7oOuG-l3D +zh*Rwj{`-%HK#jYn9wzgozp-^BTcaNUVo6>DuM_(fuj#LWu0m#?s9HlYM{ +z+&Q|bFj0?pepov)3bS-^sk^wORM4{^B+YE$#@cMZ-gZWoQ(*kx$Q0v_4Yhj7+ZIlF +zlhSAeEYRsPqsy>^=vo#C|HuqNo9$gW(ySH)loK7^7Tdu4*bL|8|i052M{qs +zuxhGe&sUMp8{pmxce(boJS1p;9|HBXL*uAu%|s+yssmODBl9QJ*m1%iFGPWx38W!9 +zopS~2WB1oHy-!v*ku@@PxZn3kG~W$bp)g4x`;GML;x;iJ%ar$G!v3AnoMcp&H#OR% +zy^Z9fK1WNmXmBV$YfoM&MhuV+T#Vc63RbS+2f4VotgJZ;wU9G;mQk<_sqSGZ9M#B +zP)$p!(EkO2>4PFhkFu@9RKBqK4MiVJKBz=5Dlp<{^Gy3)A*<9}i5|!4Tv=r^>NHSe +zWu!qdn)_(2lNeR?6w#{WZrm +zhbRqQ{X|nxc;(z%2M33S7RN|_c3R#2pM_+%v+nTd>T04pg8NDgc70hn3CfUOVuj^<<{| +zK<-~V&|)}|edR>U7yn6N5Vmi~4#=EWK{FGb#YB+#ZAtgz9lIiXsQH_DZ;`jY_689r +zA=im6f)9DFzhBOIFQH%dMihxasoqIGOzaXQ9Rl&$Y8qH!U>qnfS(Ne!2_1-7H-u+Y +zH;Xg5%B=mx4_6rDgu^~M0_Syqp+>C8*yC?e-7n>u@EAOU@LOloen>v?vW@rFW3L7y +zMA`6xY&;CbF!mRtiXtOVDp=olq~nL1hsRCAdZK59ewXThUN3@rTU;S(OZ?~6o<|7P +zOxtXUqfTS)#bzsB`yk>PB|74D4^{H?I+ipc&PvFd774%Ima?cZ +zmP>Md)o2wbm$|UNCkX>zzt>(@OUn|Y-BmE0Ev?VIFXpE1;>h1Sq^hNB4HA1-7X5)y +zlonnXal&v<2&cpkxxNc;%^J`B>&tHK-erQs*jqFPdrvzGwAEH@Y}V?L&_}TOx2L9m +z7#5ob7FtHFFu`r@9b{kr{sUK(8vb4F)PY46tkU<5IkmD%9LNMj +z8?77!j)uh7*P?p*Z(GY;P#a7&<%j7(P&DTKpB=tZyGmX(kLXVryVbv)#x-+UcKhD~ +zjS3b_k${;)RGN$+2%>f0yL^>$@HO=a`Kx&03o@w5@fL75rR%E3Swa~gJMc^_Y8H7Z +z?gQkNa?W2vRJ*Qi;MdEfx5&54;N@LN-Azvhde&(^t>NQ~g0=6jlInY0I1J6ZozMQpu0w@k|yQ=DJiZC^GZ?ZQMp|fAA#>>&` +z@l9CY)(-=8L2z7f)f0)(2&65t$X(?0;7?lH2-;PR#pj7YKX9mgeS=w4-dpLUdBviP +zZ^&61%pp36LqwB5Xlo(TctnXbJQgIx;{L{nTea@(dR5_Y@Z*@7j^DDcRk#s3BrK5x4k +z;321tDe_XnY4b+!-5=dP(EM@w>HdzS0t-!DsVAREk@w}~xZ(cy%y#<71CoYP&oTLH +zPB86XMN|uC~<(~EAZrJ!Cxy~_8%nLe^&(6u%C3|Ec +zHYVtu1%dci*y~QSR`A?&8AIK@Xna}pqQv++Kw@8gtjL}@@6THyIg@?!93h7Y=EWO*UCj)R>VU;V{w49{VLPBd^je?L0a)sw`$ +zp}*G_$2=M8WxB=wapeS!dC`U}ZV}c9Qrv@9{lH5fi-5zh;t%wB`b~V;>xDNEBWBh> +zhfrdYMnN-%O`+$C^IwRrD@v6&YICENlfT|O3)4d?V?)dX{#HUs4hganbP*K4y^O8= +z_B+9agZiD?*<*TIn*M%#7X>Bij7nJ>Y9ASH!8^uaocJ)evnBKtOjfn2Q@LB}nJ~Yr +zDCi_*^eN%!elnf4%!1Br&lsTv-Arzbax$D8FCG`9)ntzf&a-J_DNn^z*+_3G=P%{r +zL0G~$1y9&R<&t6FQPm*?4{xlLS5q%=*7Vh1=*o9ss`AbLf`F5(o%3hY11iQNRQ>wR +zq?W?4RkhbMOy|ZyK|ES{7D(FKFvU(EyjzfQ` +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 +zw3Eunzbv3krp!mq&rfL`M}~_ +zQOjGiLNrRRi|5eRLc*<$;N8gBrL>yQaqUq85b&=gsLoPa&@t`ikEi+h%+!Y`34^H* +z-&SDs<9Bg?8na9~vD0-GU=cl(X9*tvXyunz2NxANo$FCc_IV`LgWDJAL(-}*+AQgD +z?O!7;X7%mF*fJb2FSS^VspHqt?P*p}=!_D5N3a_)tEH3aE@KJQVYw$TPfhJ2+w?ok +z6&0NwLM83P;jwxdPi448l1l#}%>1oMN*IAQZT{G+p3l{_;xs1u0+P&Go8*+%yMvaaVR +z>H%yYjI(G3q@);geDu`eOmEXQ3N;M-ntr*wJFyRNuMv&aFi_l0r%#x!v>*xS>MIO$ +zuzX}E(JNB5?tGamU6y-xM2PyFdm(MP6Lvm)uqnXx#b*TpPw3urEi8@97l<}#_2on>G` +zB!-iViw|OhAjo}&mR!aTS}zCVlx7jhhUU>~!g&k+K+o~W4APH*Z-Bu$Hbl-S^zt$U +zX#nKR3?p0YPf6DH^-==K_^;1(?m} +zfU{FKz}`1MKYvoGQ%+JCZ5}NC;$ta`tuiB+5xxK4w&&^Ze!D-(Sa8kcHm&FChkO~f +zsQN>a?z*|T3|kLHV%~opwG;$Ny>IugbAoZ-rOZ7DyoYZ@{mSqu&UuiM0?)(xv +zB#=@EYg-3FlGQ3AWL^Sz1RDhm-@QApt*O!b_}k~Bu>4A5wDKhwt~^4aqcBdg#nURi +zm=@gQ;&-d@fNS9J%ir(S_=VegK4By^q${K*%5R}##6#dHfqlE#v<)a#-T7f9+)I#> +zWBUYea4GQ^^L^Z`7avcMw06{w +za^$~EL6)Md;WDKj1}(WtnQ|^;bclpzol!n%IjSOVShh}~jC<;adh%xzIMI0;MZlDh +z&nG*h`}Il;)}4t?d%99y*my*E6~y$HbgJ7rs<~l1S+@rEB;FD3)1v7TSA&Exw|>M& +z4KVY1R&m +zgbSCc#!P&g%Jm;@{(rC-!#^ou9wv$+J0_XJTJpW^pDuiqaXPF_?yhyjH=EnAtGKSV +zif=yKa0Xf2m92ov;o+g`23i!9lT9kv6YETBm_<(Xl1-U4H#{&43Vqw{?-ib~839EC +zv_&UM9j({N^R3?epPseed-zKwdemw=T1FQ%H8#$h4d@VRk*`J))Jc00OH9W0gr1(B +zPKFFYzbP6X^d><4i>ihNqa}zpgWuJ?K41j!+)=1Ghy54Sv#8Ju$ +zrSGg>F-SySydoI9#%#{rW&7-D^zy_dj~sPbo(W!89gJX`L9n&qb;(dT{!i2VPdV^n +zjshBr*eX9p3c}6FoTz`@X1|Nn@#P1E6*fbpnzRfWRvisOp##t95Dr=g&4049vUajl +zX1g3)BuV;32_xygbElY? +zJLSA%B#Q?5XIX1$?ur*O>F`Hj*sR?r_EVOQk%qeXlQD>fR@7(mjZ01?sf?4=BsIeD +z>C_CP7@B<VG1Isr%yNHJYUhtJqPmP7%eZ>}Hv +zf!Ur5+zDMXiSTecXV1}XJEBDUA{wPdQtblpkFC`X;_140@WK_1qm)bRJe7XuxVruY +z&*sKL_`)1vgBEAFY)Pyz$A>H1=)`ai0(rXrPE4@f$Sjl3i=*Z&OY_TGRWGr20C>E9C?e +zt7bd)&X*N6!!3R>muYHcLoU3fXmaVu`v{|7h!q=@9o3CDn_(A}oXgzG>lw5&M)v}d +z4}d!7`t-8eQT +z_>G~#8UEPK(SVaT#-O5AwP3%;tyNKOIs@0_4y0Tf3&s*e+os4$#ADcWau?)61I5M& +zRBwjYsNLnrhOX+s^(j$fc}R7HLSC75ub +z)b?sIWAq;p`Mb2}7|TUw>=GrsK~YjFaEl^=HjvXqUGIdH1K^a0zVg8q-Nm*{xD2kHik*?+Nq@i2NA`8&ay +zdAwi^DFnehDL%44l*ZukmjQu7STBgXEKtYJo6J^7|6QkdO=YGlqJ~D?A*N;``WH;b(^VU?}Mq3Rniea9y|ND60Bu +z*rk|;9QyT~=D=Lz$)xXmx5Eg^`m>Ul@e8G6lcXvaT2mn-Y7WPd9MJUi?90&a +zI5ml@i4Jk@Z-{)-fnSh<9~tqta&S}u +zxT+DO1&e8h6`eNAo$r7cC033xzXaHjp!Lc6r~o}-suxFN$zQbCnV-(-s{pIIF;xZ; +zR=A(akFRKt{xpAZ-RtiyIfUqz{z?wOQyg2dLg=640fe2u6X00xGiN?n<5!fHX;fDe +ztbcVYe%W-djQFEj<~0RYjt9J5k77wI!L5Hclex^$R}$A9`U6|ea*8zy*~21*fVq;y +zaA>nGX5IvC3epgm8o&aDSWtwR^k`_Fy%PVI5WG;~@U_H%1RY^nK+G;TXQA;wuu{hm +zM-GY`+3jnZk@_J_rxO-}ukxm^!G-W4MeNXh!&3gFDr}KMBiCcDR5d*d=zo$HFVe_% +z@JXEdQEHWcdNoYY{`W94ObR0JhHELrhJ`b>Jfn78ZpJOD@`f>RKCd3rmp&W3W&!@q +zgu7r~qK@;yOE?JRY%7q{og@TH&#>e;k~Rpfx}^FT;VLVe!s;8ayc1Feffop2aXOzv +zRZ}p3*9-fJtOQE_FlroBm}GTrBNHrn5yNzZ9lu*p<0k@5qm2WCxZLtG +zum?bOSAYD7(VLJKsC+*|x7(ocff!@!4)8Xsz^X;xh(pGS*UP||#138zqGVsUECZKr +zo|41t+aRkh9GiA3(4u6*$LeJNG}y#Q$)!{?((!Bw`Z&^ErxpDhhX%KH({$5A^g1-o +z-$ZuF!uS}QKtX)Qc-P;>uyc-PZ)_#|l!UH-RAQCEUbImI&t_BUG(n9dl>7>Gf^`8V +z`$+fB?-q&CT#rO+%hywj7RhF$f(PVl-0KgE}G+M7fcZcoca=X(hzJt>uRoy~34K{OR{De@G5;_*RXQMwShX +zl{Lm0hWF0F{b&o8v|I}}4I?LC$M`i$yY3__q%ZFuWp@w|9qV~8nMvQUhBH#nCa6eHDunt@0fRa&}o`W)}XQh9yOA!a_U+7;Y&63XvEPCVX6z+6)ulOf-r? +zG!4@BshaT=OE9%G&vr3}YA^F-QaI2E?X-l>It2hJXdeG}?2lhvLVgFkAZ3nBD{-rF +z10$B-1HhF-V-&`yZ$}%&X|Q_i(%@GS78I9c6^Hi9p{DL`6X4AP?_8^o>g@-_4-b(v +z{rQfqZ;}#`UD-b5u +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 +zSOq>}e?g(b%t>d@0olMYo=ACmuQ= +ze(*nS7%|EcJMa!xCJuEhzyUX#G}P3pqgr-X=3A<;b*KgYt3p!-)cXq&yX16aQ~;v~MmJ +zT*LCK6`s2odU5oL)zSD27U>as7S1L4vH~!s3KrDrd?3YkQ>&7r%@rJ2f>+ +z)PqdyP-TBj*vg1kgh%S`&r*?)iR;ttF*5&~{s%eP(zlh8{`q$Ofl)}N1VyZEIUZvz +z4l7x@Ldu;R=Z!V#=(EJH8^if_WF~gV2foX9E;php8ZYUY9F)D6#Fj&M@#doc6R>hB +z`YrI;yQu3wIfZ#(CinF6Y6)-0wN-TI8KURURMXA~VHF}q{AxGaL-Jt~3lgZMb>P&5 +zBJPox>bU?XrrBX1-ce2jtV>J0M!24K<6%P72UFr|QGviC-!Us`^TlFA?HHVKu3>f` +z|M|4(_E=`ZOp7Tyzn`3^mz&)IqDqSUGCsBCEQa9WfZU0rO+v8Ms5gWK%}^L~8{iu! +z&)HeYS7s9elmba8y(92UxkLX{hvel1d3YS?3ZIsK`+>w)W0|h}>y0IK;hL%8flc-+ +zL)#|$P_1G@qynN2jOh25Tl$j<#5f25qq0{U1h2ticGTpA+*V~N4#*EYc?bs&IudJ9hEup>i<@Qp{ +z`ich6SwTMecu0(^A>rS^7Z0Fwi0dDi@CK6H)s{&pXRdDbwaO?cLej|vLT2)yNLpRI +z5!lEHACU0WojT1G7+t&J_P#5k_2OP4XOsaQr{fU>vF<@SKKm2V%%BbA`CNKW5AM}5 +zQTG9eK34wmRt^y-PSmc8>_(4Bd1Ylw?}iSlGhZL+TBylR{Fl>8=*JKd#?&mLL;p$l +zC`Z*xyGbs4$us{?gjUT!~?_glHFWslX4+ +zP{A6$w;cC?LtT9+Ne($92jdG&+Ign~+a4 +zIy_{**9rncB>(7gxPrR}3P>ltEMcQQKAkBog6!$RMrpIJY7)t66Hsz4^ap{%Efbba!XvZXWh@bD%bcn{ +z7C08mpVZ}hn6>=W3KWHsN3E~wAZmm7BK$VWFCxFYjPo@spwjOk^Mn&iZufU2`|@Qf +zyq(V2bf|_mOY~oXU-@8aH+TG2>=41}qm?ytHy=xo?f;|cEWD!n-Y!lK-8~4>-7vra +zA~7J{AR$Og2qK|?(lvB~}}w +zZK2H=@1F!#e2eVji(x9a&tRL^e85E^JWUr7DwNpOHXq7Wft_gOo+}%3ywbT;HAS5v +zm03wZ;q;C~axkTmqg`5t`Nb7OkGIS?7!0HW?%r4az;-1H7jbc1=gV6rb%veu`koJEM`4jq0{ +zLicwfRTY*XBl`p(3AdworLF#kv91m0@ZUw{m`^+OC2Ky1TqTHkTH!k&C| +z4r5z*vEAQ=kC(F9z8s}izs}Xswe#|E>xU0d$)1}L#{1)kV!~)0TUsYDjA8%9yhZrl +zYU(qJeY=H;EAnmR5TsHL#PoA7xtklW1Bnytx+%7=z5?#?s}Ar0{rej5@2k@8vy$$k +z!o}y9?7n|{?U2AC5dyUVn!|H*6WLbRnXBZzD{rxa0 +zg!CP2_fIH`6nDjdy|%6WIFsmIpnR@qT5b7vw8@BrpIFfga2hVfN-HghbhQw>kQ_c= +zLqoqB@>REf=tfR-YR*~@Woj+{cVe?C*G~x?c9cZ_@u(*Xl^bN~e@YmV6)Tjmdk}e1 +zvwAEceAC^!bL9&thtyP_rrijJJ8C4IJu~|c*FVU={z|y-YMEYCx4u9RE~&ydDb#)Q +z8xLVuDvZ^K1x@rLLI2{eqYMfJ2u&0`K{?u&sp2Ou#v+ZKxD!r?o+xv9g|ehbCnB-f +zOidQuvFUowKz*O9HShO*?wL{1sn@4+wyP?0&%Ol8c04&`DTPt&-Duk_{w~+-w&9Lo +z$P3PT*)rLlOIL|`_Y7N=g3J+M%l;8me}{_MiigSXUAvqvhq}YnxP0Kd3d17VwwiH~ +z!w2-MS6_w!EyW+4)GvYXI1Z;F;GT(kkikCuLiRkZhJ*kF=RQ|4@C(FxtUt9^ZVh3!d!D(9tRr=Vh4d0WR)w){YQZQWF?DN^>| +ziQ-2*ZFKpPe4+B?kUYm#VI;kd*+{_t{@@CB*xg&X(26eP1@K#T?f|VPd{6ni`~${F +zqk2iUFXqPjMJMa85%cPm&dfzpOC-`ifoT{dSt4s0#Lq{C43y0C)AonA)_%=@N6LFi +zmZBYM`~Tz<%3tOAJu10N&aaPQfA6?sy7ykqKvb|nuHyFAAezL_QKw4o8>dJ%4WsZ! +z{eOe3@q9XEHo~EPo(9En60Jgseijl?trhI))o7y|XDejgeOB}0y#ceuZJ^wwQYAs`J?f7B +zXZ_fwr>vhbBun!(u*W^{N_gOagYuR?3b^~%{rz3>OFS`AT<7Tyj@4p;1Y0Ys9a|&22ugP +zw0UV0&<1BcWkCJr0`&Z!YCot)`vUX@sFON&0*QVycRHPKLbGuR#zZ{M>xy?t(Sw+m +z$E;0Lo)Q~O!w=s7bQOB+KkPKpj71+#gI2oFXobjp^8i`}c`%K8%0d=mz55K#7{AF0 +z1ZUhw&H-)*U4xz#xIYpy<}4k2@S|9%Y>$#ACvH?#td*>9-&j@fI8C`q>*(}M|A9F- +z1R{Gl^wxW#t+RjX=(;0*CiKY8p0bbw6_@iHHSq870%T8)6&884kzFN$o*ciET!Oc& +zt7`?mH1gs#kvHxn-!+g^Z%r^a3{vvgp?nE=DZ3N-f-O%UzkOIEE{rJ=3m_fhXmk6$ +z7fn>2dX!O%jZy^E4iRXj-Ef>I#;?cOxB8=R5QkLUoca-eUwvs$IJJN-7tLB?PLpoR +zyL^+!wHgR>-f)GGc#yTuY{&~(@_xy%k^4~+<+Pbn_CsOOVJ-;Qnj24)qQL@4N>A_v +zD}Rp8Vg<{lbHZpz8UrUSwU&i5lS=#A3tXYyUNXCsUpS)vVHOX+c=3Xs>ov@qQfwt} +zjj`p~@F-09!}=s4e$6?v4NWx(jjri~T;Nsv@0kZv>b~^xC;iGKH|sGGM^SMQK|Gdm +zxc+hq;&#FWO~8g)(!Qk`mo?r-Y95@Mn~PtWlK4wa?t8)U_H}oHYm^8nfkOA`q_shf}EoV6ob#Tr=A9E61XXH}VLFvBi2 +zi}apLX-pT(Gi3`C#lAx0>)wrV^z +zeL1ccN?)S(Q4T)|S@XZ#Z`Lv$jr_Y7LSky~%?Bt^DDMnAPGLqc`P{~=Up723#ZLf< +zPa>KaBWkkytSHmMx(!pdbe@JRwZokG_aB?%UlJM9yyR@OO+6%1hcW11nJWx7jBExYn6rdhlKfZ2_E`9`p +zTow7QbxLd~T3uJ(g9dc8Y!34=r>pad=kS&|o$I}!hva{`B(^o4=r5R<{zK>Lz*-YY +zB#?=?0Is%uASIjucl86^_Z32z@T(a1-Dg*T&%4B}^v0pFT#7g`5LeSW*k6%2$JIX9 +zgL&jd^c8n+Z7{O(8bje&5HOAYf+X9swCx;?>^X&xGv^e8$$~|@1HV5U{rox5EP(z% +zVzR}t#q?3jF9DaIu`h^|;*ozXwvTOo0ab +z`rh-5#|QcWEG-C*mbKTTDG`rV?nx58iMOD?Y^L|)89jJdMu3_~=Tn+)K>wlHmWwar +zY*LYAtcvOl*T!xq*p@s{Of*Jd6=kv9gmYcLRomeKoRGJUcU^NhI*6=go(|vNPMGxH +zb4dNLR7H}3>|WUQPbq{R>@A!hjrl{z+bEk3(dvJ#bY`Q@HL0sa+FvqSy*}6&tSK_a +z?-6|KfrKwPJjd-0-p(gr&gYi7U)fMI_h^Jbc2XoB?KNE7XENz$6=s*^^=EL?x--ob +zcs$NNWLzA0d%QAsQ4&+3-W)nj8l>D5jQEQ$9Qid^8-0|;b3FCun~rnTW&&(^H^7!O +zbO+A&C3VpU^W1fkkqF#W0TA^uuku;Uw@OciyzVf`&r?&0oAX6Zk{s0J%Aw-ggXOITkeA7jM0 +zwy+-_3(U;Jy$*fRzlE6?2qQ548%r+{Ra#oAfW8-srY-)jS*|*vLZcu8LQGoCf2@Q{ +z|L#BbA$Ib`cA`YTRN7gR`ugdhAUCj_P_o7&9SXd5+R7pD+L3Y}PsO4f<2|E|tU8w5 +z6;b+oyc;R;O~hFY+T`_;%jJhH;?7|@TmW&&UrJQ<`~W7dc~}>OLnNMKq3wE8H!MMV +z+o3+*W+2L0cA`aA;((BBWGNVC-Sa>T!w}f(IC`lVs8>{Oq#zZ|zcBA~r1LpImskTd +z8+SijjTmn`B6xn)OGXvbPib4S?_KhneP`z8V%cNH=_P!(H~#S*t&5%dD4ia|$ntII +zio9Arju6=)za75xOeCsgNy|$I!8YA+%q1c)#hzdJ*_V>dj2y +zDY12dd^Alj`$rD;Bzbd3BLt!xSCK3dB&W%*lyLP!gNQ6LrJ6iS<;mf=xbH9bwIuqpvagfms-5MtKld}P;fOL5 +z3DV6R0+?JFRul{tc%!GX-8kJYkOaw8BFp^tN3=gfX0DU*Jv03e3=N~i%QJq5(zJHG(~t9!_2;<0OT1^nLa0#U@HN~NvVZ2CH +zeYkD}MQQ9M+0Bq+0R%z{8mX(3QqmJd$h4`$J&6kO{ni4z3-q-S-K`JKio&RaAssqB +zZM2qrr3))6WVS-ZE +z|8^fg7ISC@yJe8-dg}<~UtV5*&>a(J!BvS;QTMsRmLaIr +zpDKR4uWG8KYiX$pN``nCa(^XkzV_J*O;DV9o2OV9#4RM>Zct|b^2OSE&|rDF2`l=k +zSP|F^8)#Z}$2l*T-;akluPk_1ZNvP6LpmNp#~^5qWL(=aujJ=!J#b}ZqOEorbcjKY +z|5Sc$H4-uvdPSJX{gr~OXQHr#klWi>~^XMH`v%`u6}M`L+DSN?^7%H3G_=&p8BMn-lMg!LV`e@j-W2BEbZmbuU&krl;S +zVZ@M8IDdV_cps|slJR1xK?sbG9yI}0EYM8P&r0$_q+Yk*l==uh*KtB?8I3%?)IAo9S5}oE=VECM_>Z8kgDT^Ly8ac%u%mqs)484j>3-56vt)vfnKI4E^;@BHik_P?rkLYi?l_y)(U^aBm{4eBA3X{GEMBMFsv`|7uKdC +zX!99WNfLMtq;dGJwe6es@u!3qNl~v2enU5|nJD5)KD=7hqP=CG99nvmXsTAVMT(da +z53=W;hSs>8oM5U~Ob!sVWXMIbFn_CRgU4njGf3^SFzi{*AY&w?zdwa6_ZO{c637PF +z8oXs~dd(s=g`a%+ngN=`CO)VabWJQ$@hzy?C^lGIWjWZM=$+8kN}bfgR^uxg@p>=L +ze24ZR;}2az@J~;ZWlRPp?f-);3VDm%C>W +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 +z+FT*BQcmuF8=Ld~SKeSorD +zdCl}tHk%oKlRK`2^V3O_=Mg*sG5z4b<` +ztg1r)%gQ#(j06$rO190mx!Bna(HBa#-oOXI(MWf||HNQ%3z(=zKx%YKpRk~q%N>Va +zU0eRxO}zq+D|vpAN78T%D$sX9GXU*u111cO<~nBmJC;n*4N$Zv0EWmm+_+vPUATH+ +z!Uvc&25h4$?`})x5BaBmV~5VZ-IjaS-0<<^$NuV`n>D5&k6N9VtZ&8#O7tE8C*5fz +zFIbOYZYVR6wh;MKBUNxkrcstC;M8q{Cb~%InI!9SvTpvVramV+m?Lx)q-K+j7;Q8l +zR&hr;v>X3|@5*p=o5Qg6SC1w@-}baBWS@}*quLV|97ewifW?)U%o0zQ?zYiM$JR$P#U*GaYUkk2H6{W`CacnfV&VJU{&83OPRjb`XHQrRW!ufv~fSA2b-Q%f0 +z(f52@NHdy`5nrs@v>=S4)MHse6_wM-yzSYHmqY|J$<-gtT}=JkxLJQrc<#6VH8GM| +zs>?KrI-H5wu0SH=^1o(PhO&s9vV;E<;@nJG&XdnCOrANmAm!7Kz^&j1~jE%K=JW%wp|`t +zTN&0O@o5EoTF`-PW7ZqxP&$xKpBv^h}U3 +z{q>JTK|RfW!S$4#$fI9SG8LL^`5ZY!=z*lnhb>U%Y|;Bp*Y11H&AO9I_%V2PxxS5c +zIrOviq-yKNnj=Z7F`6Xk#Z1*<$oj=#0HfaoKMDHx)URU{I@M``nDwq(9(p +zH{gwqyRpw{7Wwe?Q^?w+P0TqOw-=vV)Ee@m1#9@$J!z$A^j2sWeT@)dG3= +z6*L0R94dFSQv=AQYR*2a`qS&Hw_$`3?LL#|5idjr;?YE__=4ifOR(H43XW-z*Py8R +zK%<24w7PMuLuFC5ck^WBer@7liD8HISmt4vl)3B5WQH?#?qUYMEa85S$**O983b4E +zPR79o+%B_&HH!HQvrKvc-}W!ISv_7hCFU_m3;Tk33i=2A9wN%cQ@|oCPZ_GSn`XF$ +z9TLBi{0A?zrLDE!Sk|ea#iM&rW}@ZrPln-q6S_$V!cGc9C(M4{N@EPqF3FpQy-AZS +zMJyGN&g~v56Lc!^FQ^RZMapmaP0lO!e2`iNhQqQut%Ch#LkicGa*}-fzgOS(Ae3K_ +z_A2t2`ia7tz2UZD7P@JJKX6|i466G-hN5`mgO=n*MJMXOz +zF4CQnfjEL>xHRmLL6FQ}BfMp7S_nt8t_|&1Wh>X;1g38Yb +zcBV|kmzFKrsvx8M6v?d;MDH{v324qV?jr)Oa9TYN?)S9=oJ4-4YF!P&)A7V#WXy9AMm%NKk>8BeH1oj3A_=WrHjbXIuEW`ZQxb{ +zYsY_JYtLxK!I~FhO-81htH={ipCg=+6oLtXbbZ2$BN;Rn17t6)(*G1g0JiP3@w=HH +zz)9G+n?ukABAgTFwzNv)2`mii+Ay8}9Hnxhm()9F`ugFaU*dS#7`n@joXITTFtfRd +zz>LN;oOezqCj&W)6iS6}{TPn|KQQ1xYUigeBS&T6(@Vt9Y5w~&7}Twlj9Dl$h_UUE +zVt-;=fJn;7w56w~f3)!7Dx8h>)t5YE$w5?#gE(1~N;SbJ)Q>M080q~8sj}eI;=9bv +zLRF?9{qQw#!ISOZZP0vn=(aQ%i9trB%Bd*qv^6ztCOVlv*A)E}LQW}4ujo%rn04R< +z;pzCY(_D~nGiy9=r)6n6?!J|kYgNEwH;&%SThEBf`R$+r6~IBM>H&bJ2NK32$V&ch +z#GmJ?c4|e3mE?&D*s75$jI?nhDYI}AtOXN_da_J6Qu1|n(nO8&>5u7gN~BIHn87g@ +zyw~8{x$HG=_wfCR{0LX6wd*6@f!bQQFSOwjsJ2R80<+nCC(X320@F0@Cq-c9UZ_O(vIO +z650V#ozRqG=mIz?FwN)X=DNsrrgOK4vw1p9R)m{?Ha@qze?EgvVYW<|Vp3k?0|r?w +zhkM^hf6RvER(d0MUpYK2v#i%6zBus~X|i^@l;}E*g*zE4kHZO-!_)+d@b9>k(%>2HrdY}4t +zu7_LMfhgL4tQ$XW#vprvPxt<0Z(9RrD=e<`WOAa9|SWdA@Svg3PU#wzdco<*-hTndm7q +zC2WaQHS2GrfrNu|#i2{DB;nCiW!g)+%%9W@9PrZ49+0RR)-QP=WIg>{1&xv?FPLmg +zM|4E|BQvmYxL`fhd+y&2r|G&}bZ+uBZ-T9H&pjt`nF5~@rGf5tHIZl~Hqh|o#7&B8 +z+UoG3Fs09CsL(@zX*niDrk+et>SO&>T`&nR-AQ>MiUmR3>S2B47zedwtO +zu?I7+#1#jN&d~koc4?DgDJ9Q;cL?l+Zdf*w@F5s$u|aSYazwB<0I4xLl!w!1U(_~a +zyynx+n6P(R)P*hn1wHGvM+z}oV!;%UA +zPmtl9L1RQ9*Mp2q^%J}_Pk@219eg(2zd;;#pMf5Uurv<=+u(R4U!+RNmtOMEN$>)X^Lt34$-8Qe*%Jx?I +zNB_k?caB(gV~&Y5^#?oh6BJfgENp)`h>BuD>?sSm9Fvt8v{XunBEiz(B_vS_(yXGp +zR0Jz>yp8!;=RPdO7~co*q9ko`j{zPwf;Li^HsX4kH$<{H+^NdMUW1;QX}D%`Ek<%T +znCAKWh9&S}%E*4Yjw^E!<8upG=#RBBpLDn6NMV9SzRs_9c8|gNuFIA?(13XjNO@m> +zsldechY98I`11v#69VPBrv!v%i6ERbh;fgXLOu=#l{z%VvtBKB>CxbM0x? +z)q3?8I84)=C%wh(KHi&QU`w8}IpyM7qnF@%UQe@5%>6S+LwnC){=vj#xi4)iwO|U46zgS;+0s1K#fP%IDCewt?Fji*Pfat${+lorHiuP@E3n^p0 +zwQY*A`C-^V**yF|mpX2dh&=a~)>-??hxZSU#JbACt@-gw^1z)Rp$0`+neqJiD!Fz3 +zzyBkd799oDfCwoX?D==L(98^Sr*T3@cC}xbb%ksnMnkQ}qtvTkygDI!_(06%r)Z5? +z8RuUFaT)qj_)&7SN@HVVFa6>RrTf!|_frxDWJ&*i+sP_^VW|=N@2nrb`^JXBybHGz9z(Kh$TDx=<<^;yd{$pBxk@XEyaQ5e!it~!g_e(E^3Y& +zxxkj!6N*!{`3aq^*>SE@Q=>;kd*>M<3qYEO;~qY~3q-1bID?{~#Y2OC_qgwtXgUr> +z1O8nvujbu&?2Kw~h(f;?jfyck}a@h;7 +z!>#;jnb**N=76FL&^5W{%L*L1LiLd%QD-Nb#_DDRaz +z7kIfC&hlq!K1&^2vT=U2M`{=MSJ71oNsWBzdqLD#MFTtam2Qj9`D22-vyDoG81xH7 +zYP~U`N1t{nU9N9*Erj>ki}axsM9Sj?-yH+4)+4%-P{Dbe#a21axCXtFkKJ;JVN@yW +z53uID1iNg={qMA>lJ|CDFR(qd3j6J3Z9%0|Q|N0RKl?elwVN;^U9-HYtAFPc^WbDT +z1vUcFZrcd-PoOL7Y;UUg8z_dUGGg$T@&p_l!YuS=Ndq#7ln;{6)HTNBNPE*0quCjZ +zZ%0iN!ERJP+(-CvT4Dsi&UFUB@@*5;c*U{0n}rOHMEZ(OBG|>w$TdN5_>p0GAwzR;6UYUiD;Ux&Vjoan> +zUpv;ezMldMfkj`{7esL@bZyW7-j%%kxP7?ra;Iq%d_^dXl<0`$ouzW$TnzLt&W9sp +zVE{PQSAUH)8+z+)7?viDI$;YplA}JdZ9N-b91Z9Toe8IpS_#RpgohhoMmo@9X +zPAI_;X)#0ic^~Wly#QvQWf+aYh-$#Mhe)D4 +z<8Azc1HF;X{!cHaPqeYW3iRZSTq|1}^RL-H{CHyqnz1|m=FQ*6RwI>bKNxAdP0C(= +zxA`vxmS~ccsY*efNn%Y^1b^3SST}Dr&>^(8xh$nyFVj=X>7*I)`!%rAs+H?A)JVOL +zB3*$$S(vbI`uNR>XmC15P%TcY$@ACkLy@IG<#ru%MBxt7NUaS~M0lToG+J^ZJxaMK +zP|TX>E6-1L@8fuePA|7$Dx_A*2y+YM|kZdY+R_c*H0SNd%z+f*pBi1?Qgu8cAJ=C0XEX)<)DbvrO&*`Fx +zx{rH#lB5)=Dh)E^u&%&&@k>J#3_~sI6_HM(_mO9tAfaL@>pt*^QB7)@)Ym=y;+;ZK +zH{_#>fO)&Yf#&M!!omS*OFzJo#uIypL4ehTuJEv*b8&8}7Trj*>pV3Uqk>9&HBn&>{G +zcm0!KTBH+e6gc2{x_t4&sJT@^VWb$urWEk@S0nt(tJbX#(9o0y@l3UIRSYG(sdW{r +zpI-d{4o)<<4W7AFLk;fQv(U?F1AbY=4)|nH#UdUJR@CS?eN9oTc~MrNQ9c7DR#_81 +z|H%6OSKF=-B(h?eV1MW695R_*TKwVB>J^TI4IizhJm1aK?A0WE@~x8i-)7uJA7V!T(Fo7*OCi)FC%`~0r_g@;n5U& +zlwmpvufy-m>GYTXQ6N+qx#q)sF8o@y4(*DXp=?DpGM3=|1DeA0)HC(>L@4VYt9D~RP~`*l-k>|v7XL=LYw$NIZ^TOn6eqi&W;W<@OqPK$pr+h +zQLX@cMF=CXbk?NxPQOVwd>FhiKCmqn4{&<~Y5elrYMzmT2UmtpT-sGQN{MHI5yis`uN5dDJ +zKlC|b))R#I6(X=i6S>=L7#B|YtDrX;kEo=v8by>Tp%yA;CdIG-oR8u`JcOhMN){E+ +z^vPfpUXtHs_3qwZPa88N=8Gp247{+(OByeO6uQC^B~-p)p8p8}UXypR +zwCap1{i|)D+pwc7f6O6;AeLUsk|mpktiw}8k|CndyHUf{5fISqt; +zQSh+gWLQTN8~*u|*ip=7v8t*{n3D_iT)Bo^=9{}K=o|UI;b0%R9vV3~aC!yW+Vp!8 +z@0$+hSAjATUsc3qgi9N($xY;^IN5E!79xuZ*((jp9&^PweTAp%&H3T!#yfVr_vX0= +ztUf33&u4g&OIO*GYiw5^U_r|7*4l!S$wvHoe(^aL%?!xLhZqYs8V{OhkqFaP@^CWI +zB&rCG#i{ivp2vusReX$Nia3&E^~Y2d$dg7xs&a-uj!lLuKX$=V=q;gdX9$KU;)}bU +zbk<$AGvUViy#FqDqm&QH=9qdj5aG7bFF{a~r@`@d@Y9B%=lHg%6a+B&l{oI!x&AC2 +z_BF_NU2Q}!ru^_=As_8Aq@_|23ZDLE@QD5H71xYGm#Gc0Y^KHmuqcBY0>#PW82({R +z7pS)2e>yXLI4$uD({a1vZI}hBwISonq%Txg4ZiK(n +zLG4#V%k^-LeC3MMB!MLYy7FepWn{d~QViN~P9CrES|^sCLo(;_f`SU}Kxs?munU37 +zoTJ(1=1wLZ?!Esr!r8cMFVJgBA8@m@`YZ8RZgI`0I}ge{6|@jLMBWed*%IhO#@`bR +zU(gvV(&7{|wI#mdBGq0JOpBJ^3ihOpw +zFYzQM(a*f|^UwW~{r~};Ze<5KE*%{+iM5oF=WCnwA6NAYasFNEFk?$<>;-ZIhET8v +z@n0Md9F8w8mt`~9gJm_?nbr6S@2NtWJ{MxSdVo9*$%XP5l^kYJS@f|MyHmktW!x9t +z-(IIwSu)wAr_NS3HmrsppvQ0JY(x?}yT2#qD(HA2`}c?AHpDFWIP|j?;ptV$dL8H| +zAQb`h^t=82BTg1s_-mj1X7a9ow;ixCMn^}p3ap#e%oQ*f +zicye(WU>E@_?z#0_m6m7kz)%@G8EWK0$cPQ;6Y@TXjpLv!wx +z(4~!n-`{#s#?BRR(JdPNnicPm+?XTnHZJczcGFNmFSGpp`<@N{lw0C8{sr)A@ZUkndexUgCP@vlZ(^A%$v}j?Q +z;$SpW)Me~R#B%axg*WrxGu#KOyI7;x^DuYAdE?aHbc2yM2pPT!I@QZO6y$is9 +zntF<58Ta)Qk_rxzbyQ*^DySS)=>h3ezhwU;TFz5NCeouN7)`# +zIqk*I7?dtqZ+#+6_`$A=3I!GHl_2%E6x0k4tweTXCg^T+G~wqs2!$p9E5SGjzmSu` +zNSTC-=<(&L!osy%_t&Y=9ySd9A5B*o7FE}-X^`&DA*4%MnxR8lB&0hfq!FZsl3d@(2ETgtv +z=ivTE$Tz|pR&s6q&N(bUpKy>rp6l_fj_uYhSe83;)P_yhV~XB!PR<5y{J~rG*@{b) +z+1-jzNh!DKG{6*jmMKM*QCC)>JcQIK_s5>H4XO9|YXbfwEgxSp*nH^r6iFPXE^Z~P +z--+caxOUvKXxlA?ahI2^srfcCK~nWm5@hbwOK?R>kB{bb5MFBb)Qv9zUg}HWyI5bb +zVVQ%NSd8|u?0!{UNk!pxzk4mv2LuYh>`GI|2386Ertm7L(Vrx>wPW;_NLXBOtbGb2 +zaRzu1(`OV0w(;BeAk7;X}>(0{Ogf==t*iPhD&l7+Oc+nOCVFPW%Qt|qS>EmQ3zD=mSIjK +zFEG1ftyhKX3z~wX1$k#_{LWJp(+!c +z{{03X2*5!b^378N=_|r---XZ>-!orEGSLY!u&Wv9zC@eG_dpG6POEQrG2J^o4EUM5L=__h0exwvPvc;N`7jO2)F9eaOiSuS +zM@vBS-7cXr@~))^jVR5XKXc}08ArHTv*Ne09S%1>lGM9`y=bCF`JD|<`YR|?mPYxi +zy2=@HP`}4W2Z*_{$;3@Q66a}Z(s*+rf8QViP{tUi8^eJ=SUDb=0XXtjGSx6#vmo*8 +zQFpF2)z%%K2Sy0t(rsH>feiB354e@(e+jwd%yt_s-CLghzEL0Uwf<+)!-9lgR7GAV +z_}(Ib${Tb(Z4V@pa3$XZpb$DIt%Jt~U+NI4r3ECEhxI=s|22qwI1qogm#9d4Fx~&{ +zi!ul6AUsJwdUNcBi~3F31bJ=P&-^g?M%GpnXvy4?;LJ?vNF#a_V&6n^eTaReA#@nW +z{=njT{^#N%r4P2-=vmR1|4v#ROSUN<|8?oSk`M%y=yB>ut`+IZGAMMr^X0k(amV2b +zl7Uh7s^L}0R}gGy$rI?TNe7Z(f-Nah22b}to|gFgTSAVp +zRw4iwP@HxMG(QuelESH6L8tYI@z<(C1W}hfjEip?)%KQ~44&%9Ed>KB^RPOt2@b9o +zjQOXGO1U635^C-{7q1Nyx0#4#25i8Go3Sv2GU-$cxZpjx^6>EZpGxfPKQ~Op#*X0> +z_Voy*qW`xp!GuCP1b%e_n5>V|aO?)}COb$V)TGDn(SKf0d3es5ihPQPK8prrYHS^= +z)sbWUcd9=MWrGyv-K~}*a>aI>!*Hn)+NeuH-WjT(<9IxT<1(G1Bg85QZ`B_^r$c^S +z*;Jy@XxcP&1QqsDo2D+&!+VnTAA8Q#7rU31fTO}GG@A#F2! +zI-}Nnm*376b5ObMYzh<*mKm*;`irGxsl(_e#Xu6(WQ^8@LA@_gzD;Tx4w(Wj9>ez43`dv7%QPfV|uK|yGrI4 +z=;mom+HBUVOvNjm(DQR2u5;uheScxA(vLh7NMpaz`p;hm-2Bm82%bRW%@z6f^bKaU +zzIUYCB}Va1g`ea8Bk-!${51=!MJGrEi9r(gfOhsU!78+nxOp?9kBX}mHEFZG{HV1w +zwUZdw<5?*18y_pS{=kz`<{UzgCw{XYS_~hC9^o@7iv{LT?%&GtJW71AH!vk=NCH7! +ze%f(2qYO?ACDOFw?fMu{j4%&W^_&*yGx+ZpM&iPhPXBE5$f1@R7TI7#SWx@`3DPvs +z7az8$*2p=0i%X;lf+{!Q96`sbw)m9ApcC``>ZKF$AQ!YoIDpR6JnK3Fx)KXKnTpok +z9w}x-B%}}F*|_zaCm!Px&AgyD6*%h%3G_x#rr9x@k3ah1Z&#h|Q{W3aIWX(KIw2!p +z&bOAbanv|J0}L~_BS-qfxzyA7{3fx$$%P*B4hl6q`kA*gJZ#+KaHet&exVgq2-{Ei +zBJh1(FiZ8l#V$HP>nkL&V@`OJm;xIB@Y+sjtI&6(_>E{MBOM2xrA3#<#IrL5uBpTv|`Dq0ujCrK4>avU0g2 +zoCL%cHnI_-A +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 +zlq~$GGMG +zbnE|L3-B3RfmQ-_L0g^QaPrMNR)4l8!4;^u#v$NM$Q9CclhUKb<&1TKJg>NVYry^QIu8&~(h_@HhnV#p@;SP4r)|MdN`~LX4##kBXg*x28 +z=8-1peT0bk#>b{h3~cnZG)ltuaeeHZHa~D +zWi>mNPpDD1&U9$x($Sf&8l^P(wbWQbLK4)ZYPf+7hDxR2tUL}MU`1hr@=zVZt4;4Q +zYo^H9Nz1cOQ<0+23Ct_MU?u}Sw>3Bc&&tSK?WLo*n)WUvF5%#&vb3gd1Vo#IuZ;d5 +zf-RyAgs`U>H_$%Rc>a#6ccfp(^FzEq>3A7JgZkvjk**W)3n1H(R_;G5sgUR1W9a73 +zLPe;iC|v?bo8uQFndVc-%46lgTRTjeHfN7cG)U5sw_KB_w6L}E`@?5+)Zz+lAi%JS +z-Xgn8b@sDo)G*m7kZuG*qsXJOIQf!p5qpr68;0%Q)IrK&)|Cz#m#tnY +zlRwi#Y%z9CU*VfEe-$9(#81E#=GRakGP4;f2%_V^5UV3d5R6b7@QA}Fl2wm(;TtJWh{j&xh{}LVzBms;c$4D1i|`X +zZV>1G3lFif#*_aq&WT{fqOq0)1zY}HjTjINXia?@9``r@={6tPS@_{2_=9U~41dk; +zqZ?S{W{xiL7MK)bIn&FBtRXp=V)9;l(l7xg9ZYC1gX@Z1?5M>gJYdqJ& +zJQ6jI-OTldB966EaRcQUlZADATZ?0A2onV%DW1JP?UU)*!@U0i?m)KPl-VDbBPjlJ +zj35iji&^!?g0@{FN`)6^V0!indK*IbYL^r>UBr(cg30bU!BNX#fq+hVxs>hUK6^HL +z(;bf0cYD4^riM4iFLokL_x?CXF2$p&m&H`b(wr|?AbWHXI%IFO3)!5OFS!BD*#QZD +z*P>MK(#oQhs{ +z@T$}*uA|xBiU{+(EQw1w8s1&Xn>C%ycI{Z0jLVNvqKbbpL`!X_U_4^B0BSAE5Dcng +z{*#LleQu#{?I*5e@nU(Cy~+T=GLa?{&VUwGBc&_Fq6Lom4XV)ruTD`}a^9*c){7Z; +zis$bXqI<(6{xxaC2AzLt7g=f`%po)8joRd3>#i0&IrB>qcqHhu7zps*##&gmfXiA% +z9}2#<;&RF6fckX2M0^s_*{c4SpBPqerwFs(mCXjo5!%lo2fjS +zgh$TNefo)|(uG4zh9S?iUBPR?@(tsc0|#?1+xLVEB%^_f-$?K57P;I +zwd3W1pco-q-1R*ESB~T{c34da1T^0y4Ihc%O|fUu^6RnaiRa>36GjzG1oH5KgoG1wh4+~=|4piq +zAM=1<>FQlZYCj~2^;hQ3e}XP1G$3kbN)oPo_|irm6W6DL!imLlE+>J&TiedwaAQYb +zuSxpHkF6Y4J=sIy)wO>sYcvVBx^x7I8^1x*)y-6TM`Ib4npsR=VYbuMU?kDAx8&qG +z=aitAv&NpIfet{#5Mnjz;pUkW9 +z?}iZd7R~8fRlp45LoPeD$ZJu>{~}7MJKyga +zS2&|KWA%Xfxm3utrfQ>|t%QEN$`#OOq~K>^iQhbM=X5I($AVAF$$t(_XOYWZ +z%XaLh5|&yAed3HYIE?DCr^d?&D0l^0ikpd{N2I?vvP{YFxl({(6!Xih +z&{r*}pCPw9hp-|(lA&6)>0H9BK{D1mGZr}l7E*+!jPFI{TF-FN0@I{LFK^)>1LJh8 +zA;TZEheh3CG0wkk-ri($rpN7($PhaSHpOx|zX93}eI-nHpnLmDc!C2GDxDVEX`LD)(zVXWfN+fch66I|+eB0fkAD%ra +zp2ar*QyIDh=lK29hC-2b`0}CE}d21;$sQ-jH||ztmprR(mj|J +z40t4miBe#r4PT7hA0r9mYP?Jyw36?$64?*5jyk~q_b-DxG}P{uU0JRPh?g8^;%(Ff +z4iBnIA<25e6HsEhkB|eq%r&pFz>(Z4Q;yxZd!Z_%?b1(;i;`e;wUUaQrPc&3`46ZY +zD*^-ZDKghPI$wlBh60lK*tMNqxxCT1>|=-uE)o8qODLHca{XD8fEjU-CQ@%FOZ_`| +z1s?t&e;Kaoe`=J0C&1!hK%Ty@?d8X_R2sv6}-{=bOOukYCN+Wge%G2L$ +zrY{T7b;)~$f$3G)?DdtzX5fM+@J|$R4m0a%@ws+VilDV-%H~pRdEd&1W(wVISZ+k9 +zeA3WEP9VzbW>YCtFbijrHl)TzV}-$VQXGG8Qt +z)ZPpD03CqyU@9_$&(I0_9Ml=i#Aqn}q!GU8v*=ZVUZe_9(oJL39BgJ2(KmoB%6AY!LtQb575ji?;3WY~&ic7Z9Kx}hLY6Z^#{O6C__ +z#UXsK#)iR1M(AM$xKV0~|EgFf)k}nJ!SXzb%2$@SUwOHX4NinqaodH*lmAJJZ2^Y& +zU=XsO?;mqwAhckP#)8>PajNoLW*vhX-6cr?9vg)yvY1$gv9BfPowgzH>_uk1=NJH{6xXeyk9QE7M?wk9WUS +zC~`&y@sy4d%^u{P2?jW6vOcFjylf1AHdrPeT1uI1k))SH#@`OwH^Hm$rXUdH%)k9Seh)H+wD)78{#9zhfIl5ieQcF`q6f(k)k(yaGzZIq2HSQYBHMG|8*}5ykVo^ +zIfo3{Sy3_$hEA~|M-eJ!rV>@p^M5PXW+3DA!z%U$MAtM}al8?)yQA&Bdld +ze^hBHp8ZJ-Ti*-q4uR_wgBdpk<)-Jv1kd8BMeFN3I#vNI7fqk;Y0zs{8-miiYL7Fk +zR8m~J4HvoW%HvtD*$eAiNw$DY;6jNduQSW1yRT2J(w>$Nv?WZDLnyKGSK!HDUv$qM +zmUDdU+9nSE=nQ$q;DpRrSYnQ7n$8{eOtpOa;9%FFwgqBq=xhV(!wr3yw)tWS@0_94z3i_8*d~fc+;KIka_Ec8VM(@{3Bcm@I43 +zV*p!=`30o-Z@JVz`@XImb!oPVJ>a+U_KKik{mjd-L%AH4PX3a?Sw;!nSTtAT9w*od +z#W`3X6*fOKo+t5NClepnxlF{fN~i*{4<}>;{?bCc9JI(Nk}GZhxRgjI71X9(BRiv+ +z>W-Rr_CPnyPLo-`TVnB^nww8zSvHvA8-vZ|m#o607Ei{E0ZZxKiJwRWGpz0ueEjzc&GaF9;#N8~MI-xDsDh +zYVJaQI7&oF#NBvdeD2PFl6i53gY#XeM4r@9z~|$t_J^MX?CCQtEDZFvVf=VI0?2xX +ze~A^mGAc5aC)|1>8y2t?3Qd9-bT>!Uspm^JK%&^?#|#km3$P +zIhpg{V%TYx-7st^K%IR(_qExQ8LwTUHXnbpx}n}I5^f9p2x--;9>^7)dRQ5@YHIC3 +zp=gJa)WQYR%quk%1kJls8T;pvA7rGF^JLi|$P!8xM6i!iJ?DSax@1k~MfT_sHuZyt +zeb!!le$TJ~1oP`k%n;`lM!xD{QQS^XvA7C!bXIE33vYHvk6a|Kmr^MkfC+LzejE9T +z+{1q$ISai@U;Zx98gh2491^kg_9v3w3PMhNq&TU}AT5ZXE*a4;N@7?~asjl~1fO2% +zi*0H~>9^SMP1(uSwcN}epsNp{x)L2oqU|Tpaf==g4-con+lAw1Pz!HOpo$He8hu0S +zq}&f-gb4J_?@M=6A#v_05jlL-#m^={%WbNsmC2%@a92@~{jB2eo)_pn5&>u@WW>WC +zKo#N7sQ{{Ahbw2h5Yu2vHO+yh!zQu!gzZ{p*EAWEhANauM=AJA} +z6qEc?yP75r7QSxuT(|B8fD&hozh>3K1Wpg1tfK3hn2uGD>NRo!M_Y7fzHl2xc#fP +zPw=uOd;2--k1>xYnl#QurKQY`L|6S)lu*u2a_yvU738l$tdI~fTn0fF*-nhUs-EI5 +zqD)D^4oY&3L7^^XRmCiQtKGn!Ll<7+nIgX*%rStIHGCL6@z9%=l96Gj +zT009H{>3@cj{H{*~fEGNqt=&<5X|EC!XoA5kh(wSz%zRu4e)#&2M +zSMcT|fCVr$!>q{tC$Ej(kLdxo8xzP4-NKJnDqO}OwPujR`xkhYdm3OXKR^;m9%Odi +zrvN1$cuO5nk)r$U%mpYTtvTIq9OcnIa7d&i +z4>IZFs-c||Cv17XaGyBHS(d}An-Q05>&c@HVxVE7UqpmrSEy_$BOgKPTdIb~CNBH4 +zr_nQ{vMreY!oREjc$gO<=lN#BDxf8+0N9(M^BWyR3(FI`{cY +zM_Xi@i~ABGj1_08A+4|c{XS#HYU>d42)7kqTpUbe!4=LlB5r2#Q1a}g%OZ6?liVCDi}eSL)gI +zgoy|{QXwLFQJiST`L(M9h61Pl +zCgoqw^{~Cj`q;R3+FbW$V*1GT3&89sMc?OmgxAkNXOh%%J><0BoWpfyxbG-I9l9gv +z^5nW(QQb3se7rwpB;+JZ+y-``R1+qvZ-kjwCDj-n4nJe-^JQa=2aod~5AsQ~4QUA2 +zCa3oA<7X8(%u}s^p(fZUg*v)D8^<_FeBR?gi5&G++*kl4a*y%-gdiv*PiW#)G_)FYS4b)}na%fCUXuk}r`xD4y*`LJZ1u5lP@K>N1;X1^S|&5j7NA +zpXQ4AwAI$JWGTtwOc6e#^@+Z&sjl9k{%BEEvw`z~ie+K*o|r1iGjWdp^kR_#f4?>P +z2dL!pO|np#xB{2mn?)66C@qTrX4G>uxU=mH1ae|qjelXDLp32O +zpNssK6clUp>k`Hti+s2D+S>GynuD=Hy^Pdj8Z?zvFy&+n7)~*@b^rJW%A&tKhjiPI +zB5c90F~EGbOmCMJJ64pa4F2rY8JaboN*q<#R!)2)1%U+8+?D}lhbU@@!dOclYzA=4 +z29@0Ub@puhyGIp14rb*XSW0RHi7G#>JJN06Fnm4>Rv~nF)@tdXrE^Ckf%ePoo+32n +z7^I*G>)fUT;6>6!$)vZV%@q8be9G(cqs)$FPyVx;?Mh43nF5G&5F{;+m&L8+_p<)9 +zJkO}+4qOFBs{6r1Yq6vmTqHV#7Y9TD5TF>41a|mXM4cd&I?y#CS(aCCcVc}f86x(s6e_#5o4LoTnZ%|2JB;R +zc&Fvc%s6eua_5d|q^tU^U(~_EMnrDtkmw2DSY>}HL{MV_=aGh=0Td_^5c>EqX8C}; +zn$h~>va%r5L3V6y$`!B9Kw?@*;m{wlb@he4SpNswYO~#pn0h+tL1($LNGqt>>L2)2 +zbG(m98+sS(zl*vHs4XtRZ_T(I-7W=VmbkuFuFp*#5ZOo=cS3mVUhcWlHRWM8*`D;U +z&gs&-hq7|tFSsKuLbe#AaA^3rvOQ5{cN`9LVu)ebUC~QmP`j9D)HmWXsM*Tm7HVF3|AP;&;S +zBtV@SW@+aOTeK+%yrrS`ogw+w^#?@{CpDf)AnO0*l$O +zA7x1KE#bm+V5o;#*h`uu$M=mqxKZ7Ximrtf$aq84TeQnb5^q|NJIe(WGZZ-TmkHWzYM^y@@qDM_RnU{Z*-Ix>&0%<{v%!^==fk +zfuDrvpENpZ^*uyP0Lr+>{J^Yy|8b~>m&AF2w=@P?qT9y$1GHcTO{)u6PwF~8ogb-_ +zC3ndeW#=*H!WGZp0i6c>;NIbCmc704u<2t|=EuREV-O)BJ`oDBoQOjZ!{=~cDUi^I +zYCYpbVd0u8TTki$s232)virSU_;o9nn6V6(@qdrYoDC?Y2>MRG9&!6iEbHE(@up<_7W8lN>ykHYxE8< +z*gal%T({FEHi_G8=5TllkP#F+)kJ?}+lBW4@)p%7nM6dAlht3|_r;JYKG(<@*uVNc +z&2ZFy$!hUijH{#db$GzKIkD5j4O0K-i_WP1mB_39KIULiu{S$?{P~7fsz<IraijE#Om9hwIu#7dAi8u8UtX&z3Hxi@vm(dU +zU7$?R=-P+|p;F|nBKs)V{zj^ctE+bkmYM6~%*0Q*J!9pANrRt~mj*P+vK^Y_rhKo +zXygB{1&AcIi|yKK*S5`PJ3xg<92kamv(RUdLxtLX&Me9>e5TgjHlO}08m<$Y@S7#S +zJ-NPo>J#37@}2DWv;!@*vU{`it5!_if1Y!szzQ&qJTCena0=%&2V21S>iy}DHHfVV +z)0WlYiI~-zUz_eq%JEpTp{`LKUYHrNfOkAdjp_omy^HD35C2ltk0ami$V2!GG_}k- +z6XruH`a{_#<#+Tbeq%x_G?Fl +zc4Fn=sjDqrjP+n_BD~2xf_+8!=rq(Z@~7P>Rvf;-BQV4MY$_^%uxIsG`I7B3wFnVc +z5i<`6g+c!zKh}3R<%b>RaCn)ML6SbxwSId3D>}r#WGFVeE$yyhT#|#h)S1YDbSRI? +z-KKN&C};pdk8*%TRMRHV_wgl&tAwNj6Rb504uzR1N{aEll~ZFpOc$=LV83}Ntoj`> +zjyn(Db>JkPUY-DVv8=GJh0PvC+@t${A@U_((HY6({{bul1Zqg_HPSKAKGlz%b#-&> +z3pr(9mDw%_?s21=7&Rqz)!XI=e)~GJ&x}fGxrpJBnc(n-lq0qM)3@{-ZzRK`+ZW^F +zJz7?&d~fR#uh`f{t-pSpNjbbbouXXN7JJScP}|tpsFF?M$n^oh(04$_vwZ_ny^N>S)$mZjtKZ8u +z{hwu4E1x8k54E!7*oZv}7X06-|5j^FWXZbffqt*-Xd~U2;F&juP#&8vN2|JQ&!-bX +z0?Bpty&TK6Kt9~giOKYf6|9qTD!+jl`prD4aVAoEm(2TdcMHT|IHSVxU*UvP2uTAZu^G!A$eU`thFA`4L+PeLEv43O&{y;s-KHKBgixD5C2%-Bw +z5s6as<-Q@tv24}Z=1;>aBd2nNy2OoU;FwQM(*)IsDBtw;E`2- +z*qZ!h+J*Mw`>o7Jj)`mtShH+wWOkSf$w +z_--vtiFL(iCC2CSy>LNuBW_5?T_RfMH|?jN!sa?#_bYx!)##0iwERZLAU~_BG1WdX +zg1)4VaMko0NOwi;s)|HE&VV-}QMD+uv<3kA%QO_NVrGS7#3wOXSvdUKe$615oy$E< +zRzz4Px1c}>lqVpWhcDzm+lx>_AdK3EERFB}`}1S0@JEF+mI+zdr>-I6#mGkg!o7v~6G3K45zP6vl+$o-jM7^;WuO +zN6RLJe)bKzS@Y!YpNOc={nMu0w){%W-*Q|?-TFh +z`eYM>nh8Xl;xLUB4{C5SU-KL-Ocl)_~-q*C-3sA-#N~ +zt){#(w1FU|WI1=So6$_b)>v_)JC0-AYM7vd3(98N`MP=g!=pI#|$4=F+5f`66dE(|PGo%!05OD)1ilH!^-SMQ-6j@<6H{z;Z +z5&P#n!lAz(A?1JOTE1JMETfV`0%-B;|6XmQg)#NQ-RKqPtmRw;iD_3i0ipDX%pgAu +zTraajLzn}EsW22T6TDoHkiUm}Q<_vkcaS8|FVV>Mntod{D`7FXLkGG;?h=fV^0rst +zpfLRa4e_$2I)4E&YS$#P@6P0pn8C(y%7y&hW~{}4By8feTzXuq3N&4yc5@_1nI711 +zK7yRDcav&T9}hf-TpA>`mqp1wf8^axCxz#5&rqUJFG{#v`ejVaQ#gMbvPnb2EMdN +zfoEQrx^@U1SbIw%tsI?nmD+#(`n5#9_i-Hs%QM-Sm@sd4>Ir?VM}@T>muwQe)qh~S +zQ?K2v{<#c6r?vZid~C&{{*B8Yx7}kzFnTvWE^;wvgK4zvEZChr@TJ-lc)h_H_3s-O +zbnKWhK^T6Ii?N}Q*18N&;%FF%G4+#~)TB0MxWx$r%Z(I>2E)9*7SnfhWZsr~$xOE5 +zxj#`DAHP2oA*YCaUaOjnMIMNPVmSEe!^2jM7*a?AktUt#;lunE&Z71_ul~so*Sf-* +zdb-Np%0*Dd(Y3oMm@-%z-^Jg4fOPjVD2{bEF>wNI6}!@_U5j*MeqB9qvBX392e38f +z@7-pNyhM90z>rm3#t|%1B4^D_EpLP(q|-%g-5ZId25rneoGQZ&=SR=l97*jY)$tEG +zB~H3RWGa?q>P5$+HMR*QI8WZto*E~`SI`!C2X4wPZ_u7ivS<7Uj$fDRMSKnR17cB? +zg4iiZW`abyyR~XT0cp;o+~zp}BY6aLhK80rV^w&R=2GpYn}3%A^;?Ig)tm4_=&t&A +zr14BIA?gG>D~&8)P^$qo!hCvpv6hppS3eHI7Uz2S)+Lh+(`8=}Cr7;Tn2{#K{jD(d +zg4^WYI7QF3kJwEvm}W5Ifp>FHIkJOcgAg +z`u2m53!3|7r9h%N(%Nc-XjZWUWAMTUw8M8V49V&S^7z=>U&W5gHq{|>E$xZ9p^o^) +zMO+eZn0&7O@725R<9x`k`4;xcI{W2`))@$7?QX7lS7CE8&7wP1{ORFb5Xs+O&1g7J +z*Ut@EYer=221Ef7nY=}W$;|KCoU5pJ{+_OMGe8exykR!>pFkx8V5O)NnV +zwne(}ZgSKvh5(Alo5$~87gOf41}|$Q37Xjcn8I3qG-;?}{$)TZnZV@O+0zK-9k5It +zLHAlu7zI^d4D%q6{|!R1nXMWLaaLAOR +z5^mr(E0DKUJ@$$kA&C+(!3>-GzN=#XqOvPe)871J_hazGUNFHgalkMRNP43AIKs)id?`{Uh_>cbm01SU*on8lEgwdq9mEMVQS +zzSh!Jldv@@X7;lU%vzyhz`|sy*{O5hFQkO%Lz&x+#6!Dlk(0s71-e>ZTOEx`Avc&K +z*D77U=~H`t;wdIEwuo@9kLna+U*0*AJG>dZ$3lZ`@Usg>%WXiyiS!dWHA@LyE11 +zGJQGn3!_R>;F}99^9oHY`s%kDc)dc~crCzi7J_@YUN7A&w3LzVxqjK?EFv^W}3k$jryH!W|xt5lj2r{VC7sX01mxAjS +zj^k1?ANN3x$*GHz(?t^sE^Ixy(@6X2p8FgqQ?gJURm^-qMQ#_`u5ogE4!(*X}`>6@z!LNC-(32=4VZFQkI2bA7 +zGppVNeFx`f^Z&wLy|z*2`T(XARQx4iku_dW3uyf`JNKWX$jk#iTEDuG1O6;$_L*KJ +zSqd8KSn1uv;p-pWImVvb`>y@)0@GBR2fjB<1c^vk!TI@O-@-VvWY|`=r-Oh`eV(6MzXCr?fDj<2 +zxMi4wi;Ihp=VV$tC*iU%ifQkaR#2*d8PBHh%oJY-b2IDW@|UTUnGnGcb$lc{MxO?> +zgh6Vi7ICGjMgYRSLOgR +zrNZ30F2qS`b5i-SMf6D3j(aq+@Bwal{c+XwwR+NzV}#2ump$4Z&S#SZD(=!tagw~dHIl6Wmn#Xwr9`F|aqcRbbKAII&z +zuD#>hWOGGjUi*?ADtl+|y~nl6C0n@mjzY-Z*<_1khm3DX62If;AAh;`^KkDu=Y8Jq +z*X#M(QASh0gv~aka~L<(%ei6E+5&LU-1(;|k%62q5wnO)fC1j`c3j}Zp^5$bBG-%w +z3y3~AQ-LaP^7eXC9*&prW-xG6MZ&fE@4p)&!7av{PzkGQIAT=gCHFm=e|pqt2;>verZ2H!ZB}7V&KHgpF~?% +zoiPlc9Oo0!vm;Iwyq+~uh8l4t1Ger0D*x|Cke8;I=I3^o%<_wPP7Ig>^fcN2BU#LP +z0qBbmv+O_ZiNOIW4~C82h-SYk8Hv7c7JNDo$<3N{^eoR25*o~Wg_avFq3X7;Zc_ai +zm(*oZ7`#pIyF?xnUx8bLP-d#{r;GdQ3?sH=sN>|?kv8U+y`;zRDF*JPkM<;f9#dD( +zCx=*rYHY{}l6^OIzxyD}P$8Ka1Q0!Nti`w@iEyZY6-C43tynE4*JhT}@a69p1RY7g +zTu+Ht3k0gyW|aB}xR|xsxshFAXsFU+CYvd*D=CMJWw_V#!1+GfB%2?`7~O4PxXBn}h_5f?$bFY4f#k +zfsg%yIGCuxECo;*FQ&fhGUJCwI?P{zOw#}zNg_T`++2*wR}MGbcMWFupYg0e&&lpg +zcHQms2~0^9{~Q=>*pz4~i@yE7ge{yC3y3GJtOOE7w#@lW%z;XYF~>>DPA?PR(%>&? +zoN3}KVz`vS{t}A$Qy2G04N--?wW$l?)EI_QdVW&n+D$EZ$j`s73)eJ^>n&IU1OK~Q +z*`=F<7DJA15*EoFuCXbyUQSuBv!PcAy^RN4a!eq2q2(e%+01q_K>)9MN}4X+wpESn +zy}D9AEzIQp`|=&E-!I-;Uq@gyB!<4meIWsfD`kw#&^fnxR(;3e5c_HQ;cnuX^3j*@ +zEtw-HcLJQp^eRJUKM8Ct6GuS9;b!zt$-#>!ps(^gS4w1CFPj{Xs|SAeNi3K5FfXy@ +zH!J3c)4N0&f8oZ%-T&(}d`K%?wBCAQX60rIn@^N~ajYt^U(X{BJuALP+8}qB$ +zg4X0~nf|qYG1o{LI*u9CCjnBUwuf=M+m?X|=NrKO+)3E?%2~nJ3$pmk!rtcxX2X{n +zo_`e-xZX=ivc}T6 +z6$=^SC!M+*aziN<$E);H-Ynxi$(iwC9_@6R6Zew*++tx=X9fH5oMs9G+7uw`HfWk> +zzGI&`(nkg+92^<^{}JnO>uGIJbBp_jbl8>r@fZWT@~U{OO@@E+bn-Z5R8xL)9L5ke +zHYsv+K& +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 +zVzq4ASV6K^qGVws02HEiE +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 +MD{I5+6fGkE2SYF}a{vGU + +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index 86c2622..3cabbca 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -4,7 +4,7 @@ Description=Jimmac's spinner theme using the ACPI BGRT graphics as background + ModuleName=two-step + + [two-step] +-ImageDir=@PLYMOUTH_THEME_PATH@/bgrt ++ImageDir=@PLYMOUTH_THEME_PATH@/spinner + HorizontalAlignment=.5 + VerticalAlignment=.75 + WatermarkHorizontalAlignment=.5 +diff --git a/themes/bgrt/box.png b/themes/bgrt/box.png +deleted file mode 100644 +index 54876e68097e45b215f6f4c4ab2f1c06c5bd1e4e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 870 +zcmeAS@N?(olHy`uVBq!ia0y~yU{nIK{W#cwWXpePWgsP4;u=vBoS#-wo>-L1;Fyx1 +zl&avFo0y&&l$w}QS$HzlhJk^Z!_&nvq~g|_Tl@W`(W@UmTf#;@V6`wU#Lhm4Z}sF0SlKS+*^aA-R3`>*{yeueW-)S*X4G@YAFJoyCWu +z!{O)Wo_xLQ+`LKbFZ(4ABrTh`(q3?m&E9!O)NP+RvD74Xyi)P_S~F#t;;ilfL3MHE +z1W&=NWnIR?iwip@ariP_*|lfSpSt|~_sjj3f8KO8Ywhm&2b4~2+9S``ULO}9zu(%z +z;>Y5hQ&=)(7Mr-7-7@Rt_uuQw%gS~={Np^M{fA?Nt4VAm@8-(l;>)-1-mMj$9dwNE +zs;kh#k7^}_g&z-p`}S>h!9D(Bb*BT<^;|cq{#~Z~{Q2|yM=gBg{-4?NKQi;#zkmOx +zZ{4~z@lFfFw9H%si9HeV@&8Td*dJTj{p0k@#gWS|-{d(y@i(hYb7IDsusa>g;+xL4 +zYv^}9authLV$_Kgm7aXQU1M*+4*vt;2AAiV*!&CU_z{&>mCVfaPyDrDg8-uwi-HS~ +z;t*7DVQ^yMpuf;Xm%BcZ)8tvXD%2`NL!T}&&+K@Wvg%+$fplN)ckT+d)#c^o^`>h* +zZwD{A9bmkC`SSeNyZ$ZHoL~R;T$Q`K`}^lgA+5SAv%;3@@F(>|6^2dHd{hy_YQT^U|C$4w;ifVF9Iaeb7Owv@}e9~w#FT2z?jTJ8>EaGR@9qdy5ApbKm +dPUG{u`zzfzHqH8W$O>o>gQu&X%Q~loCIIScDqsKr + +diff --git a/themes/bgrt/entry.png b/themes/bgrt/entry.png +deleted file mode 100644 +index 65810dea3ff2a03f620f13cdb9f680aa116c033d..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1431 +zcmV;I1!($-P) +zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3vdk{c@wh2L4lT|!Gj5-f+`s_Y=kzX#0Nu`@F@ +z$pp&XSRe`X3Ft6>{+QuE6cXhS)stnj3nk{5xuB7*Te-dIiu<`s=hH{e@<8KsFhqj4 +z-2U2;Q-NF`3LcNVKFfo*V<#O$bT_<(=EW;(FpWiSJuwOhXr7qr +zj_Y|esldc|-cllNl)A%btkWRTsFE<<9I(dEoe +zgg7SfDVRA+mCRXiglV?yA*Y;kDR5d~xN +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 +z~-Wh$@phq!Q?`IDPU`GePO +zubHp{v}I>%ANgb!D((`4)jX9jw{2|!Gajmal@hX|%*!6P!QvJT +zAL@7{TSlB;s-G$H`yBI8@a}?h)9kPD{4@0kZ$dHsr*v?BpPNctx*6Ga_33BJwFp7Y +U$^7#${bvUX3EV|$3`ofO8=tzejsO4v + +diff --git a/themes/bgrt/throbber-0002.png b/themes/bgrt/throbber-0002.png +deleted file mode 100644 +index 8e9a85d8be80e430f136327c98db0185a36fe7c8..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1568 +zcmYL}e>~H99LK-*Ln368NvEA#)g)L +z000;hg8U-2YON~+eeKEq_SBaGn;RH}=WB{Zj(aGR( +zDxFSD0NJbrFp(na=aoS}Y>)k2qp5xU&j_yIN?jgL@Om3^Kr>u#!k5GRxWtbBxK(j_i|YIa0?X +zwF8n_|6l2daUn!$I9iPOnw^$FBeSjd66s8>0$3bAvto?{0Kg;!KcA?W<>lu?PSixN +z%oCL4?b|b;>?Qbm`hLx3e +z&CbH^uHjSqJ(uI4aSl(1llt2}r0&c;CvJNE95qbi9?z#yq_zX=kDG1FMNe)C&xDSt +zApSRFx=@kOSLXxMO^Jr#%V0%v2bI$#at`@i?+e6#d`RXh_bf#BhsQpsfixETu~q() +z=#uF#_sBUGwxz}y!uPQNp(r~=zJ1b~m8(LEOIP+N&ctounpMF*sxl@`Q^P-3K(E?R +z+eV5RDXU1i_)}|UEK)bjy_v8}d8&kU%;(1I-{j58^(iCWna +z`$oj$3&cYXj-dt>o&9nv^FLC+&tSaU$pIVIh8F%pgra%SP;$&ix;10Q0snGS^5NE7 +z8XFOO*D?kEF(P61VC=~-?B!(AKu7V$1;474tzLse`vm-+1HtplCdHa|&r@c!a+8>e +zvhl=V{+zw$B7;Ek*r=ui4W_v5k7M{w4A6jOSpy$fFyR!#2YRjb}7JbT+n@3&Fhqw(~m4`__ +zv%9ToKY?pqgn%>|aWT92!vPWSsl24g<5|91=JjO5H;e{SM99$QcM}QFeua0Wsm5CD +zIfvMbztD)j?xI<2=iE7y4*QL4a(CiVqkww4)d6GUA2YaCG-^9y&NuytO6}bAAia(= +zzC-q^rxQ`4?7j_I938p`ZBa($-RVtPkQhda%MZhgrkq8v&IXF01zQQLEi@=tFPR;m +zrpd+4tQ(iS!Rp~fe*4k>pEWKbQh|ckn+2a|nEd5E$`h1&;~GZV(6h#e^iI6~bkH(vw!UTS%uF=b^r3JUWEh|u +zMSFw_f@t|mF0s`|=L6&Ql#*TjZiUavtGNzW9xWab$eac*hj0w5fiOT}G3Ak3_Xv>& +zPkz7TE_$$vx#5tJB&{#nRobkM;Nwr2s84I=Y9`|M_hiqTh=AU~qG1Al>OJqve)jG~ +zzIZR+^4(ICGtaj+vtH9JQ^=(i-VdWy8A(2Gzqh<0*>utSg)|YuO~4nnKhf{d^Oyv; +zW<~V);%3X|JXfbD=F48bvDH23jr;PJ=Plhl@eVaoan5TA+EQ86&n~%oN&CeC1piP! +J;qLgHzXAS3zy$yR + +diff --git a/themes/bgrt/throbber-0003.png b/themes/bgrt/throbber-0003.png +deleted file mode 100644 +index 9fe95aa2734b499cd3df6e65de24b90aeadd2716..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1561 +zcmYL}dpOg39LIlVE^|$b7@^DIDD8rnDVny>#bqw-m||vaVm8}kF3q+sCpnQvTG52) +z9!j}YjD|YuQ7PMrX-bL6l%o6j>74VN@ALh9-_P@YeV+IC^L+pK=7t6bm>MCB001xz +z3M7y~b(}9leemREX3l^D;{^W30{~tvRG6a +zipQm)7>RroCpm+~PUACCd?uYm=b?C<#FP{|_di9(C(~0B;wAT?V3hTI6oJa818!&x +z7KOo}+}s^87~GmQI1lfBy)Y!$vtYg_B9TQ0&}iJh+Z}R0;4R1ue~!YX&O`SzN#}|{ +z&tl%&09srs@Q)zTXtzA2VJ8R|&BJgSJ%tYNnOt^!Je}+4j^4@PiAX)oAcxO$5;!28 +z`~Q_lw3lyq&vOtj{F$9WOQ!Q2!>KF|r~t+dD?Dbs3IL#2g9!KtGE64joFt1}bfAc1 +zNb-k8`nz=E4VDOQ<1LoB=onOD!xduetTW%yjG#EBi8&PR?C*?Q$RKU12=zDoMZrv> +z^hFN{p1+@XJKKYc%_p{KCR--1D_K+QQ~XqL4Qn)Uc#>JC)vb5qXSY8?IJZ8j{j3;D +z#&ws+EO}CW$uDJV+ZewEy0v%}{n^@qDnxNnvg<`S)8?ZqcHk4Ni4RXUJfx~Pcq=0) +z?GN?Z?Y^1NRPJ8FgQB`Lt-Sztj&hIG?He-)k;>CGkRajjy&l!}ZoT*7Tg+b5*;H7hP(S$<>ph#50sB&n{qJwP7j +z2V2*9hKlMmF-5o%uR$uCL@!cR8Co4{h+~1vXpQDo`$ +zcDgjTF|#?HuO^;i&$a_fxvktd(jzi%M%?Z|%vlJAZw8v98tCz=KJB9AN>7!gst!72kR$T*X*`l6`s%Kk_W1J^)X1SWK&o8#kWvhd +ziq&CDzR2r)Ee7%5t+I)tbpqp&GU(%|w8_ZyJ@#YaZ4w42v%<$$l+`el;2=fqQEN7E +zUv3IQP-apK)3!GY^?a`gg-*S!sPFa@kMnnh_D46qTXA?wRXhGUuq+EcH+l_sT#_Y! +z=(GQnd~b5UU)C~)Y1;`}Snbh0H{Cb?)%RAUZ?{dHyR~HM*>o)9>(c{@_ajjLYHqP9A2!old$rgS;iqM$AkB2IR=7+|#Shr%;W1>UO +zE;FX|owaMpx&_sXoTskJzBDu`&z!7F<+Uxa*aA1)mC0pT`HfIuV?E{-PW61C&5-&5%SeLCq8>{ +zAWmwieRb-1LYRXEJZr}L{7U$1OGStX@A{w~9^8f8-5#km)^7RmP`PX}I`*5VnAq%; +zp%@rxqL(drH#|ESF!sv4og&vnu|x0ftFfKi78j=Pnd>X=K3g!@W;rte@fk@PEy$iR +zbnSZRwx3P*`jqE*+CBFjD{j5=$?7}hPf4YKP;ch@MRTIBCAzgNTE;T8)^GRO=5XUqnAi#>(N(d +zJ=MN@l(Ky&c=T>qODxl-JNGoa+_DRNaXYN8YsVN_B%|z;8TStQ-}I7-*sUL}0+2R- +zosJGGkvo^hP!7^CV=L>zQPLKeU2~`E!?zOt;FcN1sS`jc!zi@Yw(^FJ;A72~4KMR> +zU!!*^og-)j`+oh3kjnAGmoTgux*;GvB>OtCf5%vC)fI0uODbd<{M&#aVlbh`KTh&D +DSwXl> + +diff --git a/themes/bgrt/throbber-0004.png b/themes/bgrt/throbber-0004.png +deleted file mode 100644 +index 687aa8bba7e7c470034487c5818c825a6a6e2407..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1570 +zcmYL}dpOg39LImdHp`3*5#{oDB4Try5IPRVT$Yff8ymmOVXSTBI&(Q)c$9}sGR@^U +zDB0?`6e=qz>Y$D__jV-9rAQ@0=S=6E=X{^<=ktD^_v`b#zn{Op=L3jds#~^i0RTXi +z;O!A8SHsOxhRHiKCFPS`5OnWQCIG0QHwyw>;pxcD{VdPJEPQk<2wt}% +zz%UsRn5bwLh8~+ti%(!tF)S)b1DO~mJvuH9Wc;UAlvpq>l9Khik~~UhGs=U^0s$MW +zwFAc58e?N?Xl?C;!#UYGzJwmMlFz7b&ICu(Kmdz%`uE!L>RYcPCr}4$;u)V<>zEZMg~3*w2-^vTjlm=$ +zCqist*ZZc5`BsJeAQ~!6G)3mQ_6?In$#m@og(Cj-q3pk)iJcN@5dCMvql<0_8{NBg +zV}JchM{0}aq`r&rmA#+#;xiQbk16DRFy(i-qovXlH;d$DOCh$@qYaCLp!DGe +zfW_+lPiPdc)LmQ_totCcc563kq)dvF6r4_N@P25pa6A%~E2t!d-dJp>Ak(&a8pN}6 +zm%s)q#q3#DYp+m)j%GvC6fgNtA{L#K5G%!(gQ<$-rw)Xw5;&=|+h#>)OsUnJot>&R +zAzPE~!G6&2IB^QehIPQ>IQyhWrRoN=7kZkAgU?tj$U1=hW;@XHF1Phh-`y5xUz_Qd +zK^KupTZi)T8@k1fvJKI|XX7MDlB{JMjvv;}P?~tO?Ap<6gA&g?#0^0uZOx-WgtB|M +z$2XmzM~a`oG!2&8RI{q}3PdqRp8RHKyE}q=CIR{SCSkWVl;5i#*^q_1Xc?9Gys2~` +z4h$`en%_wrU*CP)k5JmL+tYbpK_E33-VmO;&cs{YlCd%E?{~`vA2mMXWIP%ePI<)u +z(Tgs0ZF}ndIk&vjC^g?Ii5E)3j}#W%B2mP>UpSJRB=nw8(~nmz<{UH~QzR8#xmGP3 +z>aIVOu91ig-*5R60_tf^!&Ay+ElhkrtjNyGDB^rrAJ-E>0a$aLv&AmdQUA#N>B+dF_>!M!V9wSKL{gAZdYTmqy3abO6zw;E@S%IetqHV()dkx<^9+*w{xAaI> +zxy)f0MYOC1R6huqvkznyR0gN73Pc)r+AsjSW01#prQQykkKiDT3=h&wX}7r38c8EFUNa|5G><} +zbC9tbiN>ePO{P#Y2~w@5UUc=Buqr+8*}b_{vjeFYYcq>zQZT%D;_mT6-(9Z{(XtZO +zFYHRMjxSGC(??d8rE?t{PE_fIoTL{WhEBvgkx9r7uXg`ytAX6f_7eDxw|jTBKNk?X +zW_JuNdF8r<4TjLxpVVl+FvU)g1&C(!hSRN%15&f}`6fqmdfK`ov`wI!Qdhq!|KtFI +MC()zv$MCGb0Sel;hyVZp + +diff --git a/themes/bgrt/throbber-0005.png b/themes/bgrt/throbber-0005.png +deleted file mode 100644 +index 3a56beb7482ff40b652972de1a4b8abf25a3cf2f..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1585 +zcmYL}c~H`67{`B_975!oT4Gw7xJevdk#wgiTViR4Xyrk_RZ@_Eyz;=S%QQQzR8W^u +z+tH1*($osEvID!E${4SHi*|VoXeyRyi|y|0JMZ&+XTG0jzVGwbduk`$4})5Y0ssI* +z^Y;nTtHXRD;rh-`Ntw`#G1s5L2LQCid>H^GA{)KAQQ#XQ*v5(j0b)!%8zdfPvDuMK +zBA>@3MzaJ&Zd@`u{-_{^D2M^sAfL$RvN#-&_n#7?;y})!sI2Ek`Y4MdR*@Q)BkB)7bG$aX!noQJ_okOKmO7+!o-6v%UMC;i6d3xhhE_1t2f2k93C +zdH+92AbHVt&j|F`{AYGDGY;fC1V^&DdIiXCl=MqBt^i=9p!sax9bzoL^!)Gv(DL|& +ztuFPK9DetAse+$#Nr6cy(xu*}ITDrp)B^P;pSwU?=FZI;L(wXVOIG(T+$6%sQb!A0 +zUDZ&Z)A%STFtv<0)5kcbz4ZsW|If*5@w4g%?Ngop^uBoULR5)8P57j!6{oOcMasQ* +z4qK$XW?^%Ao)h>FbDYHPfUB>KJ@!Z~TNy36HM{9I>PLzSr$zX)c@;12d +z{)&^M3|h0=)*~>QKjUaawRlrG3?)aXvgInA9bV%`I(bUSa)H75o;Xt|u-n3Af{bOqeG+`BDNUtS21YcnQk2)Yb +zE=-x<*Hb)wy;6;U=8kB~;%iY4d~1#wU|~J-Yg6A8rD>hXYB80I>wet69a{X}TxBw1 +zC8;YZD9dR@?!Pe$g`NvYFiSO(8CVN_*CUr90y7sEZZWf6GR)!{#udL#9nVEBlbgex +z!{K{nuo3#~T8(j%NvcWpG<}SAL)*!C5(|NlYv|K$@C!qwdq1PrZj%$`CJ>IhOayBc +zzRS$@IL%Le&|na6sKpJgut!`|4u#<&+5-h+b`6V%A-eLLF;?t<+73@@>tWaq-X_m1 +zT8AF_&gAlRMI)&R<**ZuHuumv1#OKmFIu?o$eb5#Fvy#Qm^(9x7r#tj^xo_H*uBK( +z73jh7E3d8>r%)5k%d_*H{A96Fqfw;~zxy{pmcij@YWQ2z@yYLYlw9|+0g=(?P>Iu5 +zd^<<$p)0L?%aLTOalcwW+xJYG>#dD&6u$wO&CUhuI;w|Gu1^Xd?e08L+Us|tZ?Upv +zyGBtI3q9#PCY@@=O;rGoN55W{X5k?>3r$+Q_06mg(j|h7H|<_enV0W-u+`wFfxu|z +z3dQrIOJh0wqvJeLML#aGX)0*FYhGgxGGWG%f)M%0Lg^~4^Hq*0A?E%e +z)yE7JeiP4J(YhEVXsH>!yC3Pvi2u!`^w!~rDb +z_*aATNt}xXolBG%QHze$qq?X6N>>$q@cNP=eZ^Hld>*!f>lWZMc#KN>GruMd9w?x=Pl{A?CNp3EiI4Ry$)Ta0&1x%!*& +zw2vgKw9Bb5zuJ2`)553$rwRL!GjOk-u>)-ncU9ZG +z+%aIbFb#{y%*+u>g_sBn=fqWtHu$&|S=!a4@J#PGh~W;QcXioN6nnTfc!N8)?|2*7 +zXZuoCqI;bt47_2(_ScoMv7w3JQ=F$`;6*yDruzpUBW>Wc}V%q4fT7h8EI7+ +YfW*HhUqW(Np#Sp#nlIf)x+Nm(Z}Py(ga7~l + +diff --git a/themes/bgrt/throbber-0006.png b/themes/bgrt/throbber-0006.png +deleted file mode 100644 +index 949cb23012469efb42c33953b5c79d5352ff77fc..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1597 +zcmYL}dsNbQ7{-4F;-%6iW>z@SG`k_7XkkC^|3B%BaVLf@3-#FI@9Z=N8x$ZzXdIqi0j!Hh)(z{u0031H@rOdgO|BOmPl*27 +z@?6O=<2zm3s?H+KE+~T$1fGLE!SOqfq__Apq8+=<77h@ME|u;!_2Rwts~|!1f}tG| +z{t1S8_o}fn>Ydl=vU%mW+H>|}ixYMt=YGO$)2r@>uPEAkw~C94J>_j}nSMz&=TXad +zrRB+)31v&)v`@lMH-1FqPEAfwdeVFtKApZj#aV?tv1bFL!iYnZ=H%aQI*?8q2906H +zwK*Wqa>(SGt-??ab4Oz9=9gv5Z@w5**;SemQq>P6zQxG~M~ovp*Gc1e)ckeHFqBh&P}cZk?B$O+Mu +zqNXp_Hdgka-7sr*!RpV^_nVBII>a015r0TlGTt$Fanh_G4fye|Vt*Wjem3Rin0I*c +zOeO@DIM|m)y19l+gcXoimTr4es>>j2f(KKyGKwKJTcFV1*NuwmI}*kYA?H;-r}A?r +zHqXK4iWe;eBRixx|0zGa`Au=W&= +zqS|+R;Umr3nVPA9Ib6Pz-)pXv({?~--AWNV87%Icam;<@wn3tJh}^>RUHMi0k{uc7 +z9d-K{q@ZC6 +zr}2(&u0$~kow78p=LhzY`V?rd6gl{mSybEm^b%`4vA2ap=R}a@;#*azLOQDYi7NYd +z?VjT4m!y>6U6ZbcXnU}9(q*3H?bf1Dii +z##PrRs=A@^+t{h%B3vF-&0L>o-Z~9`7Zwd)!&~Qk&~2uYa$c+$43+6?_A4 +zDmfLXdm9Z+R+Lw^L(89-4^#?i&b1+m%nR@LZ96kwqjTjw@BHW2c@`ZJkkGm*0S!6@`Y;rCe#liMZXA^ +z@}}q#RQiS=+AjKE2J&B^tKSye*H|_bBzrdxvKZZ;)Gn?%Ue|5qbNjfCBG@|kpIffw +zIillf1?V>i!&taCwu4NIf$8ias*JRVP>U3dGbMi3fQ-7u%ek8!zSOU+?N? +z7Id;xy~$Jw#bSg)P_80hFV?g^%9N=uq_7vJdSY$(YWOtjbbCvE+CtD>)D&g*!4UV@ +qaGdN$13l(?h0pS&lw)0lSOpG74CvlT0}S;4A3*dc;p+~^!k&JeGvtj+xbK?e>XFk4uFX%EIN3E +z$zoAxAdgD}8B9LNNls^_2>6L0KatL&^FSVl$!62J|0#x=OlN;i6+h60qEPEm1PY%H +zxMFc$APxt*y4mA!cz1XFr`}3f1P1E)V7(`b$)W>TEdJl^39FJULrnkuC|t@q^sLrP +zE`U6fb#E7BaVfw*g27^4PYvpKL(ps;?xoS$bbz18O`%fhTzfa{VGi$j +ze8=S=Bl6C;q~U_nw!7genH7S8qc8nEnepl|`O@(0~XmXbfAb#s1x-ka!$jQf55 +z$qIAu#skxFWz%B5ys6p&>t)QUdE$!n<&NT-8*Jm&M*dVBK7)Gfc&)s(xOei{RXe?6 +zv7^dg3Tw=9SG$qzzT92TT6;I`Q(R?aKY`9IL)q%ot3D#@ibPUV8pk>w#!zfgxp+uB +zWi-cOvspunmdQe|t;Z)-W^Z)jbz&4D>WxoA{_36{E>n@Dr!$LMWR6Sw#e?5>%PdMbxz6XUcsu=Chk$YEbuL_jEb6z2m8IIb->4$3pk~BidQc|oTcPeB +zUqbGGxIn7+)%IylOqHDV@N&8qZ9H1s_GZ&Y_GHS-ijEAEhgze;1h}=r^I-Xjb8`U& +zIFM-|Q#RJSSS7i-g$4T&Mr~xr2ND!1k4HyLihpyE>Mot-S34_*4g2?(*9w&aMa}IT +z7scp^&BV99dVN1ghnT|CA6{S-j^c1rR{ZW(yf|`mBc%_?O2{KyOTvctTPWGx(!v?Xr%Dp^XT7QX||=q7FKB +z=zWi+os>nt0%+qo{H`fy%5V2#D9>Ig@Zp{p!dm;*J}GRe@(@raBntMoEeCqG**PRT +zv&qb!iG>;Jt{(0ChhViX$k!#U=S91?7N_Gk)Wwv2#CPnzHaj(V;MX{~_EF&sUP6o# +zZMG6IEWd9pJQIQTvn7$&EYjsCYJUl-OER$1yl^UN@tEHrx`VkayX-`RpCCFnPj)ny +zUal>P26tPSf7UbI!V~)~j5S@lk*C<`8W)c=jok7S&*H1_E44NYxBvZ*&4 +YV^$rUwEBC7p#Kpd5km=$I}eHf27_eUh5!Hn + +diff --git a/themes/bgrt/throbber-0008.png b/themes/bgrt/throbber-0008.png +deleted file mode 100644 +index beef391370a4183ec221e131e4d06e60e1792919..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1604 +zcmYL}e>~H99LK+y&7`YsLg*4Jq1!KvH2Q&T>4zW5c?v$LDi_C9@oly+wA%FN+-It{>J-2T0;WgBZ^wann#DlF;>bj5Zg +zTWCGlisz}dSXAI2L18esGyMjSwa|D421e5uG=LMwN{Wi2v8)_1u}pSWz|#&bN38Gw +z?SeGc|4*VYc+%k|juykeWv4|a(%4pkR60|u02b$Z^1PV?0DwkFUb_#Ip_%7*$JKbR +zJ++*>)xM3m)%o1C%~fL<%uZA~ap0~&gqK(_FRZyx +zpfHyGRghhPuhFL5ogO{0V=bj<{syj8>UhWTi`&B;qYN?@A`0{*G-s!h$~w^`j%X1)sMwVbzdh +z5A~FhV*Qhlc1p4fv|^27s_qg&aC`6o691B|T*rhq3Vb?qDA38&%zU-mf>FjH>hM`l +zNN%D}eGH$*VX~Xbe!ShgS+YUQ%bYI_ +zx7?W1z+|StKa73iRFGhBPQhv&Wo{h$i?oghNB-!^|dEK=} +z$K+ntES>Tw$SNCICf=|B{bGou&e(Bb#IVd7;@l52jUSvMADGTh0bulCkl2U-E)5Ae +zx(r!-M?p-&V`MdtJ@zeFPfv^j&*d{Vr~1kKP~CkAg$O-tk8PWPaRMy)>-42Q=e`KY +zj_PaOTZ*TSwIVE(?$a>WOQ$I)c%!Hx*e;LQojz_ssg`g%t~Hw$ +zWf`)*s|c$KN>^L*!KsbnmV{_dMw3Vt?1O*UZf~=_>&yEL*e5C1NNy-*Awnf}NlOuM +z^SidLB^9^yNONZIAQ%tus&vEUmm6^6L=10`u(OnRgrPyjC5XBY%6JAUheea$Qj%Iz +zv1&$78V58&#a-Mor^7;3=4`_=1^xb+`wKEpgZi?uHdR~4uIjaQ)t>CR`L(e|7cR+L +zEDvwoS$KTrLdC5d&8M&19thQkl%6LL8M=6>knFQYH^`%KJgAmy`CbNI?B8_R(d)_% +zd-wOya6NU=Ac}jle-uScl1zq8W5hI7aUj$DOG~}AeC-Xqh*vWFAw=(1{&mNhyY5nc +zR$<UC)oDkg*z(qCj|@GY9Ad6@tFT)I(&%$M_?Fdl~WYr>P{F|w*p +z>57|Nqp#pNmyYm~`bB->LIKxy&h2$y$;sRbTi=0s&%K^ct~-oxM^0t#QGr5fBeR{6 +zyU@kRnJy$OSuatC-(9^;YGcm6Tz#FYDzMC>S~o&f+9N`HMQWzgm&vq5r+m +zYjb7&E6l8Ez;M`&dUEP39l600eaT#GA#y75D=)bHF_)C5(2%|YPE{Apf~(W^BAlTP +z^3g|Q%tTK6?k0`}cUwwqhfpO-E{fbAV~34q?!QbUq~Qmj#O*>H7&+_O?$#5&$0Zvy +zNt}fHAGIa6UW$1jW{_(0XMa6v{o|OZ@^N3tDKg6M__GPQo1baNE|QBXqfvNkVvBL3znvVP3FHFMI%a#GD?1@Na>+oFr4FV+ZgI>*hD1yHM>hQpk + +diff --git a/themes/bgrt/throbber-0009.png b/themes/bgrt/throbber-0009.png +deleted file mode 100644 +index b366daa8f009ccc64fa2356234e45d09e544486f..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1605 +zcmYL}eKZq#7{|wEYcVeqdA%0v(B*9NT1KHJhFZ-_WW?5DZ0v4}k`1e?P+}E|=;fA_ +z<2{l)rWfZ*NZO1_BN54xvdVC`?!D*!&hL4?=X^iU`Tm~2emQ$~`@z5#a*Jc7p0ofSI>md7*qfTgZ=lqkDJtdQn58ZS7F7fq5IBupED}Y +zK<({NS*%#VKZ3$wobra&JXXPVY8XtRCQ$*Lcvdo*Ol2XQF^8D!Okz)~iW{mqQMDkI +z_5YJ7j2k{=iKD{spV>z#bSfJW9Lr#;6yWHzg;!)^4*-Bh@i?E5a45H^KCwJ>UDr8% +zoNw;=J$c#s#n#pu#kxs+sqcCN9I4F1Zd@iqjwAW}j4WMU6wx9VYed4~0t@Yk{B=;@ +zYegoBItP@?eW?{K3hvSXkTBOeRer3G-M3XfghH#1rIi(W(@deXK|VA}Xlv(|eOu%S +z3A5BecktKI0ij^QWdd_m?LquD*1OmX;&maz56=trMgU%=9lpc~km@GA?>q(QKB}&RCH(qfk +zkH;hlKl}lNwnHtj9-A-NVmxnji0vC{Ve+@f0!416FD6W@YX>?+E!lRdBpc|dUE}i1 +z{>-S^$8p>olGsvSVrQLoGV>{Hd{`a>Nyi<&J|W!+Cz{QFg-iow%T?hM_gAj1xrL~_ +zR2gdSy|{ZtPv+g+TPt~A77AHfkeunU_&yoz*nctIU^#9Ku=eqUfcbzs^bqNCB#;?N +zR)Ph$Qa%S_xZsx^_~Iwg&It3<+p;Py04tRcq)arNvtizPD`;zQGBiah8KlW4vfeN2 +zgx7yuHCF^;-=X~<}_Nh&>(jOtVBRuik +zm0}b7Zc5Kc1$r&T1mZ +zdDjzP%4GqfR%R%Y;$Yhfj=YY)33rO<8QxWPy>ax>qP9l0(xu>(WgU4e%CK#**=A0> +zDuCxLz}a8izRtAeK0jx-qtR4ftY}VH9ccK>>DRcs+?Rb~R*-{qZStz8Xqzf0#R}w2 +zH}s~aA>9%?LX5!kc-qGPWM4rHdRj5yXZg$?QWHRMSX!x8oUP@}cVCvKRbUs+3T{ue +qMdmaTM6}GRtxJzMVmD#&y;Wc$yR*qQSfc)S0eIitxSH)T{J#My<=QO( + +diff --git a/themes/bgrt/throbber-0010.png b/themes/bgrt/throbber-0010.png +deleted file mode 100644 +index 0312f62688976e840bdd3cbd28a0dbab0913913f..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1601 +zcmYL}dpOg39LIlincE?RNnzDAxox8f-B`rZ1-XT=%`ap(n~F@CTP|JK2}z;LoLWw# +zr4BM8_L$MBBT`zq)!A{2J@e(E{T`99yz=lwkI*XMbEKYxAm{Pub4YMW^T0H90s +z@eF_zxm=oXsIyO;n1w`(>2r_`06Hs|3kH;wnnLD|B(Kn9z{D|VAm&IsjYgti +z*enVrHa-c%q^8gqN0Z_(NpT(Fuvex#96{n_PR<{T-kg{pFd!cp3;`v2H&u4x8~FZ45EZ@2jv#5X50Oq;$kV +zp24!W6S7z&;DeTjAii>$2S5vg +ztpA^Mz&aBH6-f{_{GOdcp@MAW0TPV~DS&fyIaz3G3jk_wh@KvSp<3C6-35g~M(wdV +zIMmJ?a0By*VIzC(uv>kEVz1Sk>8J>`wMz9}f?)gg8RdHgCWcivoxf>@RFvBiHC7QK +zQ3TIDfjMUU57)MrDF!E<=2J%h(Bq5^rb-*<72C!J6%9^Xpi?Up;&1k!Z!1b1cr-J+ +zrS2V?J&-b9x=_$9PV8f#-FgjAMM_eJrjzwn4>0WI{Ke7mO63Jz#ku~DMGeuqP?gl? +zHOXodnFi}7){@iAHcmTur2JWW%^Mpb;oq;Gvv$!NRIhJV@lkn1R=t;A)(rZ5yESe# +z;^G|S-a+GDwNOR7=XNbvMc;`6FulS41Se;eD6VB$h=J#vtv)QqUQ9$Tc8a=|;JzZ> +zq(=Tl$zwjUf;nx((Rm6aFwc&>9Dc#qM#hP|)9aeAiq0BU>uqXtHQ_Nb0^3q6a*Nwp +zdYs)>y&v}^z(>xQf%M;gique~-{t^sJ6OIblyR_^@7ACz$!PL+GPCfm6g{I>f7%kZ +z=Zj>&>Si}JyE+2OuQaQP`<{#Q9Zy^X>y+u1GvcI5{p$trVL^Ling+ADzg>pyIQY9g +zcq}tq=J;60xi3aymVJb0v#^p053Q_4f{A_j>TtzTdEFN(fE}cGFWUb6e4hYk% +zHb~5Vh-qo8BH)M=_$GuVF)d6U6n%eo?L*^k{UXmkel03|O%*_FjJt9HQ9Z!Q7Co{$ +zUK;A{QJEiEE>AeJ*Z=$jKBopHYN&adhW>=m4nrP$P3c(2F^_L;Ey~9_Uz~UUfQ{^G +zod6F#$vR3YyBai=@X6@`LoPR^X9ySuvEd5sDe{W0Z6QN;mN)J`*FoR8?3YE!o6qp- +zc?Z+t#pgQF!(K;exbCj&p{rc7Cv=)KFP(TfDeG?YKQlH~)OEbxa!*y3d_788@@mCB +zrNshiCiye|63#`)}lPLQS*h^*lG&;}@!<;aXZ%>6m6a +z)PdX@by=A2=am6j(^A4)*OGl?RtXr}*4*^UC78P^pVNjq;P;Pf&YGZ*uQ8ubhP`n# +zJ+lSo4~BPl%s8gzS>Y(Q+6%#kos*3hUfuh9 +zBf+EaP?NWx4Nth><}vp-KcDyWykDQ^{r&v)J+R)-3uRzx0001rzLv&- +z)MC2edQcZ7B#c6W5UkxK0sy4(bm;(vMJA9*6?<$Hdq#3V0MF)gL3~ssmm3<67YW1h +zJ0rz-0Vkfzj}f!+Vm8PHMR<`QlE(vu|EXOV2juMtlReUfqD-cvXrW>duqO~Hcp?#R +zzrun@baHTTav)s0rG5a-7){RvL~=oZKydnfiNrDWyflcxf2|@6g&>i*L86_4yxG&9 +zJ7ft%f!|_BAlM&L!J8q7o`%eDkOu-{wvZnd1_~`!5F!L3DdRyM#Eqvp16mLi{{N&M +zfkY3O5JPy*uk8464k)rzOth)6!VE;^Wn-k0lR(}c;M +zLwjnu#{TIt)`I?W_+x|Jr_$kmW(TRRlRAb)lqVNt>EUgL2W6PKMJ${1Z1@s1Vok60 +z!aZ2|&X+%m2NM%M%E-|l#~M1iH4*X98PICu=nO-Te33GdIyU|_zPD>)%%v^gPh*pp +z=%r)~e!DtAKIv!uB%rSJj_uP+quy`P*ayY*QD6|KW>a8tX>uj(T4XP|kg_!ZJwZ4X +zQ>bhRA{bf?m|jszcQ)lJzNGb_1?lb~i%4;1Nq;n+Z?Q|_*(gu%MV-68pkUH*cut(b +z^=>qyqxh2gj=QTwmnX|out>rqH;OdrRvNOASIM^KFZOY>3)F7<8PUw0#;rW}6G4_i +z*3~KSZvBa8g`54WGOH_f4qGM6UxgyMTIC~y_!~~-ILC-F$DT^Zm5MG-n7_M!#nn$` +zA8^s%D!6wnKI5Of@?tZ`$_@ZNp;7^mY+Ze~DbT2bC$XOlHs^k&9&i9u?Qf8R+2l##HwEen5 +zYr65pMA4kw8RJ|jxe2Q%33tbh7vH>W6syuZNB>|cZ?&rT9iCOi93m&de-f;{sD +z@was*F)l;0SyEKifaSq?I9_mM4(wtqn3cafP`k1UMfu0S$F#BH=63nLGmG!sW8Ktu +z(ZBnxucooHu`=q+_H576*q13f=I!P^LBosMzpMB4wyp+^Vzf>T^6p^eqLGYCAMk(a +z{L!L^3xi>55umC*|Ds!k0`umI)xbwCc1uA;{_RQmen(!_-ukKW_Q7a@d1l{x&Ru$v +zVE}J1>w&@i^qbuJnhiZ#1ktm4$ldo`x-Z6!AXS +z=Zav|;ey6vM|;1jX?^+k?WNoI;&9v?4b4NQa2_>KNetgaz +z>{hn3c+IsA8Snc(g)e_Qs07t#Upn@p_L$9jcj1$FK{BSRzrmn%ZX?pUvBjahHt{XR +z|1OfADbJ9@-V8kYhA889j;foUcS%*VM@)sQNv~^AyR7byV)#|WsU*z?Yt_0v(I1U% +zUmj@*nW@LoDeZVSBx@d$u27gSQ;owj%Ijypal`QAIXynZM1hUy1uz7N3~3K>HbuJK +zKf@I=7g|c4ZwRAqH+JrnYm0tW>V^uW33n2sZjN|t`9nd65h?SlQoE0%;%r;>kmltX +zTD-Ol@AP;cw$a0J{}wjEhRu!@pE%2OJ}n{T?3=WoOf@Zey~?)&cRbpcWD}EAvewJg +z7#{15+)`;xuJneDIC_`2{_OHhsty_xw_|fyW&)UGGbxw6J}WTMTz=-j5Vyf@ms<16 +zb>?eCPHk;=#8#?LL7Z((4f+c%Lo}*s5n=nAaCT>t=( +zbWh5DNKvb$tqHySq@=fy=x{v)`2c`0S}hoGsn`TET?Nztfk!k81h7mF8^j)qX0yW? +zSU!(|jfxgvxhx@@6DMF|1x%0)^09nwbZjih`%f_uEHE}QLi7h5iZWS^qJ#@TfPll3 +zuy{O{V28rv$wVTVh^v^c~rbF!!>r|6JzN7SiZ +zHtu6oN~HLtv_=dXvnvltnFW_aG@o|0wjY|x_xrIMC3>~yG|oh(?G^NpK#9!XM4_Su +zCZ`gXl2y;&*i8s0Y}X{eIH6ihdDPrf5*PxV0l7T*{Fr+l7}kHRJVb74S^uPJkfMk* +zrJ=%*L%SdQn=Kp8MGFS^l=p36ZVj_eosYaVZi@DpFZSfBHItB!ME)6X^;j7vhBr}_ +zek(uBWSuJ`>-Rp&y;GTi7&fbcqsMzbHdX>bTCM4F`*+{PiOZ6&mqvx`%x_XNYKCDl +z`ZMSoX5q?o^I>L3Oy%T-ZE|3H8{6V`fmBJOVlqSE9CeyXx&n(zFDX%rZ&kDT +zYiv;JHPh!2KdY>e93Kv=(Mn*0F$ +z?Jv2WneiSzZkrnzsR$AeA=K4l^6)Tu+qJc$_TEW`;)i0@mQO?Shn7CXk~q?4oGi1$u^dztbPcoBMhOlW0^7vxdiu#Vr!i8@};cJF*(w!fr9}$mZ8y +zqd4g=+RbKw#L{VR>p{$(MqO{7LBNGsbUEmrmcC|I4zD>=?w_~!{%@rXFta8i$1 +zDwN0BH1KLgLzt?05U@(V&2q{f)3Ud}HQqw9jxN8_vWs>7}-o`tla6&r1J +zQ0LkLERgH^XcfLrqDPmlhMJNt-qUhwZd*&rp4{ph9P<9=tj-fA`selA=Kpjg3;lD* +zFQxfybruO5&Fb&eeqZ+YK8}($d((^4qGRiJ8|auAXVFK;T(WH~PPcsXDrIhOf&v&q +zkJe{-HaS!L#yf30gO}j7J-Kl*($u=mWN&(@tcIkeP_LucPxsx!n%8CB@K*|hzx$>` +z^gPSYxo{!JaiY8pj!?N*iX(w;ujT +zb)4%SX5gGs*Dq_@g`A8f1oU{sX9SvMUwkIio +zLidv?x^naYMYV&Zq4#q9f?@A$P{@>oEYJLK*Q`_#K>W5nQzjf@+k_YlsPzDO~WnZ8H%4UW=u*%X?ty! +z^+yth1BA9Z5eE4Qvd5O4U%~7`7u2r<8V~qkqaJHhxA_9k5VF1 +tk8O410sgeR09(-E(>kyfAxR8e(Re1SE_W!PK7>9&fKK(HRJk1y{R6MZ$w~kK + +diff --git a/themes/bgrt/throbber-0013.png b/themes/bgrt/throbber-0013.png +deleted file mode 100644 +index ace8764887795c1dacd9060bbe7d0e1ea932abc5..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1612 +zcmV-S2DABzP)>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdH99pgw!+xU0000GbVXQnRB3Hx05C8*FfckWFgh_a8`gHO00008bVXQn +zMsi_oWdJcVzi^q-0000HbVXQnLt$-Ya$x{NVQpn{VJR6m&&cbW>wx +zZe;*;XmW32Vr6n5GcaawbAVFIxc~qF6LdvbbW&w*WMy(xX>DZyFfckWFfK4RK2yu$ +z0000IbVXQnLwRFtWpf}?VQp}1Wpe;AGB|#g7%Kn(1m#IYK~z`?g_c2UomCKqlS>Gp +zgiF;Jq=a%&5G|r0-MFdRg$wCMP;eo*5s>zdxsFN8-!6)oq-9W7~5Q +z+s3sq@pm#^qc0_hV|8zQCVt)l32FJh{?161? +z9sCA1N2AfS&3}M>?-jHO95_c|3qA#ogXh39Sg1f1B2%>Z0elTE)4&b%J&ov7YMnlT +z6pyC3ot^|wfK~7xI0`)63G7zw-WE6noXSt&9Qclj?BzVxJ%QwG0(IOLez|5?><{oX +zxCM@YKfzq0;yn=rHB^S}-t0)GP!&Y_Ol7-3Pnl!R-E8|PHi +z`m|4jGc>lC&RG{(h$95>J`U_$a{mHfzOn->==gsGj{gQwEaFui2TsLDD=CSqoyt4l +zD)qjiR=EmmW8ZxPIPBmh@FZ}o-lGI0BYp*!fWTd;Zp07tsbzXdQeEJ_lZnF_Kf9ijAGJxOJ8C +z6?5VJu$}-%Y;o6W$M-YvckQ8tY>2y7TuX!)ujM0fUO!^@PQvrlZ`4PAkb@&)A%mR2 +z7O-o{Y=G};hh1@eJ?V8d8cFmMAQ_7)PC`5bCdP|09u341W&GZIMlXR|ZO2K*U&Ot3 +zUmNi{E&yvdg@}zF^W7L%{?r|dUI$LW&Q0#Fnnq=AbTuyd~X= +z=dO8OF3KCIuQ(4z5+(_KB@kT-s+Ew4J&Oc;UgeO0DSlsylq;xgEF|j|Cht^&rMnbr +zwf2xu%_--XO8q}~vMd2L*q@P)$KSqVa_=S>OE3l0ZE@GxBX%eg977T|x|N*vaaimK +zxCSKSqjVZ2W>%N%b!4+gk5Tv-^)E9a?fXhPQdj#~ +z5>9~O1UB)l=dkYIDIB?bNtC;#CUb@gSWu2d(ZTr6q_xChxa1^$LH~9vX%^cuDn}e3YVQ>_zffb-{6&wN!8Fg}_*?S$_2D9WZ +zoUefH+Rf`ml%I61b(erqg%JfP +z;up+&$`yFPj>VJ6x|7EDJI=1D8sIr+!KdWgM0ai4y@dqg<4}L1j@;`QYr7vLZjj@( +zeG8O3;2-cI7$h-$HMwq&$p#MyEA0zh?7d`Y5@Bf?KgDVO3PaBKf?}(&AD7sCIFM8JA{d{d+?0kyb +zyv{Z#(%Sm6j!s;3{L%48cT;E`ZEymzpS=h96K7sx^~KJ4(fB4wQa^7o2i|!L>KTqMs8X;j7+TN0D +z^lYa*KcmHq1%3$@k0**X7Oh5TKLtaXAR7dd6L?8+aUjoSC4MJ|FAQn>%gF7fc!=>p +zkoW(SSiA=%w5`{OQ9rX&nJkd+5*iC}j0zBlq^u&Rgoo<1iIq(oi)#Ly1Tol9ZGS%bveCT_1;5qzfeo5 +zC=fMfz*J|u;dNWCHnOaB(}^BzN@;=O16>VX$*{I2oAg!;mVmA +zWul4UE;NrQXdSE8@1SOD{p=~Z+u#_b%%{4R#umEU`~&Ozt%}Oj2(Y_@vde4eF0Hbq +zS%g;IekwRwVxfUYW29m=Lou6C~*?m +z<6c$Ns}-!MXlnnu#Qui%w$-|aFJ<2uG3Y}1&BJrUZIh$VF?_o2z0R!9%RHUtnc4B= +z@Hzf>ZT+6Yt_!Uh3C|ag&tt9r@iYVVrNj&7w%6ls>YPVB%g)=5x1_!G +zJF_~eMb6k)cn7H}M!~S^N&dZBt>Fz9*SH(q* +zH=Uge)8s6ysbaP2p=-x)Yq#Yrd+wML&D-deZbJ9z)IOB1L2TH9fx8XLLS0dB-_TOFv7~L=_Z_Oq(a$|6&!QON{az*lCdQ9lnH)NlFzPi#n}?nF~#j +zhS9QbvjPTeFL)xqD5zV@pY6%5G|k>C=h>=emb_h>0$Nsvq&V;cn|B8r&KGwtiWHYF +z<~n3ftGAGMpS(ZmtbNDXOjMgLfP>cg`(zuPsfMHg+jpKr&{%`op!Dq7gg-XP$$;g5 +z?f)E;hB{y&ZJGU`Na>3~B1rdcwM4_bh1pHSf6V(I$JD2c9yZ%WaILXJp6pa3TP5C^ +zTxjfwH!{oIa8JjopD`dF;19iTk6t3#^r-sgSk4x%^mWFyHEJPft#%qQto?{hWp}Tg +z0sg2Dd_n#@?8imHoXPpp`GH>Y(u#sT%f63GU&4|Ua%p-e7!eVy8rC#;8$OkxYi3{p +z=M(2r#w|atc+!BmxUFn1q0{V=1O44@|6MpkgD#WOC>T@cz?GUFyQ=m5jJWnIB^mx_ +zqFp%yk1GSkGhV)`OjmwD-8z}tYp1DX8k!x+jH)`_t-KG~iSia*5R<%i$D1#|Q=4~G{7 +zx&J@uf_JAx{>_K6`RD8mIs@d{MkFygumS|4XYP*}CjeN{NAdTIj5W?F3qJC7)Y@-L +zF+p1cXs52p!Va5#V^_C+ALkO^wUwjiy0qtzaBZY%+NGlFqQH`H +zyOSx7b*eCbxdrK0UB=P5toF(A;0+zrtem_zIjomj_#917*KQsVkJ-f}EDpVnpOLkF +zjH(%{2+=xv$Ls;OzV~`GTd~(3`B28Ill2W^qwBP5Eo;gswM(0t^#97A)@wq!cLkK+ +z3_{1Zd`GiETo0MMwP@1QwfWZyC4FNt#LmwWqC9neO$N27DeQc;-MOeC@!8$3mVs&8 +zn;^3(jHk)_At)xm5P;FOUF|yO@f{NzQC53A5DY_P+ +zRBQ@b#efb4SVTyk8mhnKRK=Atq~yT|2z>h>dgFyR)|w+bxf64G5=G4P)wjezI&0UW +zM7`1d84z)>HzM6XO%N*dCZ67YYHo7J;_v#`*fpbY`(QzWdR2hkRX(pZxoS6II +zh!+PNA!C)}d6RgZJ4IDhZZy`0sMZS=(V+o3_HJEc*AW@>5Rz$NhF1wLznk3q>g-@B +z6k5NK2m@{h7PNgJ@aqprj@qU$RT`6Q}BglSiPZF8#(a^NZ}- +zy=az<`A9}pBbc$1h~b`=MdT4dRkK-;O^F=&Hl{+JrPWecyQRY!4UvXjikq%#a}N4e +zxJS0h)p1;$fwisI&>zNcVp;nX#O_q8l`0J@7T&j^@-LSlTVx% +z(&7}j^mn-f@gr<@^SYq#_shOz`#fIofVu|r6-l3>8j(BNVnqV(s}5m(<%G)KqOPfX +ze*g57{n(YZZOLNI^)D>50Jp)1p9;I38(K;qUqNNCs=5otiGrK0KK(D#jgSR#t_ga< +zq0Z*b=j&sV&vo|>WfRk|nxT8wo_YPS(lpv{a)-NNJ1uP;HluTm$Hi>p*e6)b8<*ai +z*I`O~k=vzJ+sEZqP6ZEgHW8$uX>EreY)C9%LH2tuGed)P9IN8v@{1^{e%~$YjAP&M +zHA{>(wI-n;UGr=E`lF8T1y`YSkkIA!m7}OX +zeUnQmKE1@>8jmkQ=NrVwte@N~+w7yXF+|#|SU*R;9N0;P6v`LsoJ28Uc&BblY=cfJ +z0n0{Yxs@vWv&s8{^BW&$>UE%USFSG)hzYAkNN2Hm-$fRcqE;0sr^dw^rWPWKyjC%3mmm(i;$`6G( +zMym>YB)m?mJmts=cF6$l>S#j;DKXsgq`11`jIYjk#kx>jm?_e{++bqX=BKlb?W +z*?IAWqYq7|t$wa=-6kK~Hji0YnQho99O&Yy@fhp3i%_yswlqGVBiJ_FI +zQwp8r(xXUj;gCv5W8tJCa$S;~pL))7zR&mbc|Xtl^?5$u_g`Q6ZolowWv0sj06_YX +zhykElEfx$4cF~CwQ=q^Fq(4LefIu(S5+GA)44PZSUV&n7RtN*YGWlEvmd)aFsdTJJ +zNXH&yiLru^<6M52n28lL8C-@4D-y7HJcjT;b)cmzqP?t#*3?nR51f^!r=*6 +zJRa-hY=y_WxwyEw;7V({n!y>p#hE=UE(5^f+ +z6Oeai198o&IA8rwz9sG(ALyOGB>VmG!$|!@=TAqgpC`y<2-SmB$C13<*W&|x53XL% +zh5LVXP8hEr+N7xrZk?Y{5k4P%*K*l;vQ;^$k}RI1;o;%l?TNLDu!0`Ke0}M0R8ReV +z{J2r><4|Tl>hNFm+ +zISUrjp`NX~;^0l@E-gD|FcBS_Yww5J&7lb&4Wt3{qqBsE)^B6>xa-KJuvT2hthn_7 +zX$ZEYGO@>ce-zy812pi?jN4aC7xZxa2@}#6q}8S(qGwq&v1L}jI9gQk?v|z((2WU( +zS`>2{Zobh;)L4{jSN52b6z=)X^w?N1EU9Tc>jm8B<-J@H&j#5RyEAMZief$1M8kYt +z8PV0+re6jx?XfiD7DJRRooX%Ixr$#cWku8~*81VKqEE8>+GbZZc5^sI<7!%vVk5f0 +zFwORoSu;P%R+(9Grt{;O-lE{ZO*Z$e3FK!q$#B<0dT57kdr;`7eXqUaruDxsAL*?* +zoS)PQ$Jd3>C2WJ*JBYo)=EP4^{Lo +zEv-Z9y@s!K)5+@|BQZ7k@1*(*T7qR<`o)%Om*5eWahz^egih~X5;vbN^-8&7ezI|I +zZf)NZOs7PPEx$cPFY^HozN|v +z2zcW9V6}mJq#YwuG7k?7RiWd9U+iyucg3`Us$ThQ2ED%O61OFZTNxl)Cmcn5Uh%#e +zZDtwsJmP7G-H~esdoPkl7dTP`Jt)gSsof_#M@UH`Wy!?oTo)p=?y!gg_ + +diff --git a/themes/bgrt/throbber-0017.png b/themes/bgrt/throbber-0017.png +deleted file mode 100644 +index ce792def5cc6aac0b16a4ac9d029aca472c08595..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1572 +zcmYL}eK^x=7{`B_%EqXz!<4reDIMFCXoN+XQ>TRTmd5yDY+kl0v|L6B%S$>5qg7H# +zr$XC7VI&=u$ysT#v{s?aTi(LTnYzw(p6j{q?{(du@AZA|zn(15eeQ7BS{MKTa1WxJ +zmr6~RN@InpGm?|1R0547`ZEAP6S-7sKuIY|HFRd~@?-9%P(c6_8A}5(Q4|_2BoxD- +zhhicqOiUa#i58o{jKnY_K^n-wFybgNF(CavwI)-+m@sl$r@AT%wG`zR!UO>uEY2Q- +z!(nW;nBZ`DTU)#>R?sSWs`9K_^7v3_Ab`cHPhQ~2dy`I*qIC6=5sTKt3 +z|37Js-R9x5z*J$xkL;vSD#$SL4xz=V6u{Zorxc>B06@Lb!;RqM2R&cd8C`a8Rr|SB +zzg5cJi4{ak!p^t@{G;!#)jdC@sb~5fZY}+4oaqoh(%NW}d8zK0c^%@j?`l4g!f*2m +z$h>kew50#*Lg$VyE+e+T5I-*69w90%juElres4meB3h8KmlYqYQ;dhMD=dg=~lA90&00gHr+_yJpV&f +zusq=|^wvCDvV0ce;iyiXi@zjQ-yk&lYQ)mEetz~%8|Y+~UpnGqP$~ToEn9P!jtqR~ +zEn9)DXYk9gm8RQI_@)k%*g7rR^%eu(&&tmrg1c*jR_3uoU2H6#8&!Md4Lao~3?3cE +z=NFL&otE>SXT7zZl4sz{bBkN{D*PRCQA4q^lEJdR6i#(Cq9$r&v=&(~d*dPm)BVz{ +zvNWlKuC+e(rHRE|n3dq09#_D3X76#aX*E5>cAwrF#|uMOG?yJm5T7)Xio~qnjiqW@ +zl}Bb)5P#_p?~t@=3U4}g;l(pvXtG?d1t~PMhf2+$oO#59hfUEN6E{*zT0Wbfoe5~M +zm5nsPn%c)KB*V`3xop9&tbWK~>Phn`M~AD_H1UAVothW>i=GAuvPTXoPC`?Je`SJs +z_<~dk`WtS1W|)_z5U#Z!4sy|h_8m$)(4MWvaza#}I4VO}dVG0Se%v9?BHUB+h>VPEs-aE!cHjZq{5If`p83rCCe +zPiIc9C-5xMPePOt@LG2YE~!Ab{tdln=caR)$AU~>>QC(yMLGE|oBC6yKD_oz1eh3*_o++>4oC^yV_01KX%x}oCo0zPMq$8_njmL&fE&a8T_ZA;%@qE*n +z(H~2bnhWE5m>-;q6$!HIy;nBxtG;9s)T0CAT8YL=X#0nCXQF$nM8&=iHNnXS-rd3#Tsuka4)}w6 +z0`VS!nka3MP22xeUt8YW48N_dyVAl?3{ssZ*upBA-Z-Xi`K=cMd=od(AXcq8E!{_| +z?%QQ{@pZ3K#zUbj9d1Fj33Kpcp;=X% +z>y<*2$-+=&9*nDl66COgS<8oozOrNA373?xlu^&cn$E{VgZi(K8fME3l2iN{>2fLV +z#`SiV+|Q8oP0rgsJ=PC +NW7j^n+dG5P{sq3l&Vm2{ + +diff --git a/themes/bgrt/throbber-0018.png b/themes/bgrt/throbber-0018.png +deleted file mode 100644 +index 6423b95104fd1fb81420f5cc0cb5b1baebc90726..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1601 +zcmYL}dpOg39LIm#*j!?6hZW5wXDsX@oRLCDX@%SpQM)kLjoE%2VHr+QlpIDEN-pI* +zY9cA3wo-1V=_W;@nnXgB$&xemoacO>@8|P=p7-nXyuY8nzDIn#Jv7wTr~v?=LEi4} +zr%;oXQh_TvHznn>LR8t?gSh~puDenY;B+ZUVY+}@gTQUkOa_3Dif1wKG0`j*Eey}) +zgyAEjK|GszfEAwzM&ZFI28+SPbJ@{xaSYCXilZ|bapCmL2TF=4)Jl{)4P*ee1R@Df +zB;sv1m=K9h_V!Npgr+;sdlWNTD>DJnECxUzIQ_gtQl3(sg@UR4ScOAVKqASq!ga60 +z(_Zm@S6Cbx@KbOEf^BZU$~^_tTY>&zj5r1WMseclbOy&{10jOV<@@zCE4c0o_fss$ +z;Qaq2j^IEJkb?@W^CSB}7?Z&@@u#ua3I&L^q=UsMD*#X$AiKK-1gQ#&dvgW5Q5})E +z!knN^bIv1jc+Q`}IjU|r@O7YCrpj{mci58p-o_~Hr+2Q|>~(L9F+7=@7i#Heb{FNa +zida2f^A^0=JN9ypH{CqFN`Oooo^$R!aPZvREtzEHFyrHUx6ht`Z+1O4_Tv6Q2XAJ` +z&1aZJT=r4dF;rtlMbFVW5wCxtDGjWTAH|lrRh&Qu@1wY^IW}LvyyIFhbqIMj(`&{e +zS>+ibOI-718F_F_yHQiA)bx{4j~QWH%Q9s9sV$=vIu9O~wVRy_w~p~xH&JyuvW0K{ +zhcf0g;-Uymecbkob+sIJ32)_!6lq_9Ol8E5=Mt0*w@62~)|Ee(x>^O3mO3lf%vw>%+4}E;1qK0ZSg@wkMP=EoMQ`i +zhwu9OFP*ml^tle2zZko4e!fD_1lHBjIX9=1g0PNQ=b=n7s?DcQ?Rw-9(YI_s_3R>d +zo{4-v7A;zLWdYm@_(=p!jNdL*q;xK$M70K-GN=6<=8+=&M>~vjk=g?ex +zqKRJGzFwYInCv`|kSRZzqU1PX+Iq+cIHb2FNys!!Y9;GXo=n}hAh$?j_?z=f*Vzjz +zWp572NNR#^uxV$xTVUco4y($cKp7iZhw^keZZ>c^tR&6QI^1S613K=Ro3~MX)gagq +z3u!Pe +zHS&$sPciX@7f}7rFllLLcsG}{S|O7IX01;r(&4pK=dEQ`q-l&S@iH$#i2P{z&E$s4 +zS^jM?cV^GM_)7+&s!v0i*WK>EwL=z*pq4Il`}4+n^#-L%C1RLKHISPOzXi+wtls^r +zovLA3gJ6knnp#{U(wR}0*`%Zo_w%Q}LP;7D=x`#>ynp8V*)-_4)?GDa{DIE;@++n{ +zG$%3Ucr?s|mA$+zX_@%`)iQ36PK5c#qgj=k)NTEq8(<34HQx<}VyPY4)aPCh#PYCw +zX?}?3J3BA$SzNu4Go9CJ{*$MX^ +zR@eINUptfEjTl)wvekK2%eZ*(vj42#cRe+}o{%A|w=^MtCg1aSkJ~)JA=tE6LQCna!V)P6BwmjP~WQjhU|7f6Slks1M +sHyw}tVF8gt-stkA?cnZ`rS_ghWCxsXXObb9R{Vhgd8@a(a0@l_U;abPJOBUy + +diff --git a/themes/bgrt/throbber-0019.png b/themes/bgrt/throbber-0019.png +deleted file mode 100644 +index 45e935927623eb5ebd3bbd1f5f6aed9207a55c88..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1608 +zcmYL}dsNbA7{`Bj<6^8xBxmzB4OgaI3MER>1u5mFDHf)AK}k(+a%twJK(=M6c-f{| +zG;0;QwW(QI9z@B~)-bWQ2ptP6J1lKpn&vdM{cLAv?|Gl+d(QXsobUVm^&a0H9gak} +zA^-qDG9qZPpn5JB%mM7;{QPN9;KGOmF#tF^Ef)khrE&pHs)Wvx?8xSF09=-U$H5)U +z=JC?fabi(AE;Cz#6LJsp1X4*BPLjppal|;WFq_Zki2l<6HkZTCU>D!B1EXA)qiAUo +z4nV{c$T$K4N8IE|AW%po3JKrVZPJ4?tCnY&**p$_$5Z~jge`Au>o0>0_HGqX8VCtn +zQZ5SnKo7O-Z3it;8t|_K;PJ%LN3b3cqL*P@I)~2zBv~Q>o6Qk$}NLQnw$k$j}a#SZ}No-k-(Ocwm}8g0&n +zc=WL^y*BDw8zYi3SRW%$Q>AqD56(=xL=<=9w58<=ntS!~Rc92<4wcZtLiuyiRG3%9 +zirjL7L%FMOh~e&{R-8%H6buJh&0@o>b|R{#7Ch0>(KSBLcS{mxJFdqy^E`apwEG24 +ziY#L+^k7tmA1&A=;9x40yemzaz8qqp!B_32Ls7#9B>VNENhJMlW+cGz?8W +zy4lrjcIkSh!98puRJU&R=?tV9Vw8`S>WZODsjn!{T46WA7-I@YV +z(vkp7D&Z~AaBj)a)@lA5v#@LO*#d0vP8D13WLD^sTD5_hXE! +zTN_WC1-t9$gV*d$Kb}XnTTA?Pa8~8WXVbYUXTsUs8O#CHo6R#@+LiN#e(%#8er23A +z^&4eyWX7a_3;csCIdd*%TX%=*XECDL3ELQj_p73?CJI9A9WwzS?i{f0nMfF_`khr` +z9>E6RHWVK$lc>)K5f!pKvfN)8y&|?netq(HQuF46@k~!6Ce?=OYxu=S6T0X?*5z78 +z;4=R4#E>bq_qgnmj@DZhnbgy*_1HU2YGyXGFirBiBkdUuCWivDu_!{;2}@_eD2tDw +zRG{MK`15L~eAV&qE`3P+c3U8}MKnV?cw@ht%LmC{jw1HNfAwurYL04F)^pPQtc6hV +z8iF?_Ga(3GoUKzq?uw^>L~bKwU-5IV(~e%S2<-FAETfKPIZYaQPnkAo=;7XhVz=Ko +zn%!9Acgl0+HP5FZ_Z!xos@vHRG=*(+7>@4lE!)~pJ9YpwdU!~EP>Act4Dg;aw@v@MZrgI +z#g(=GRNlGk>%Ye0^n(^Ox_?|T3{Pb@4BJn;wCS)PxdxhhBrK(`5stcZC +zrwp<3tkFF-hr;HJD4&v_=isYe5=W&%H?C0gXT}%PwbMP16W+Wk#h4zK2aM;|-IW=rU5qjZ0{*I%U +z*Dq=1RZc<+yaTad2PN*M_;IR(#uNDugS<6sq_r5Ad}!ZPK%Sz%XehIS!gzy}G7H>0 +z9QY*rNX&zySu;g$ef0&-pR_MBP+D#nIoZyjFzCvA`;6~Dcs*wORtt+&7uq{whk>(&9A0>1Ai_m`)Tyz +ylZqQ_OI6YL)DWxfZQuDH{K$lL(m@=3_Ajb$XmVakmnIzi3IPT^n%4AjYVkkv|H85W + +diff --git a/themes/bgrt/throbber-0020.png b/themes/bgrt/throbber-0020.png +deleted file mode 100644 +index b84b04dd859b199729c63df17ebf7cbffe8f3185..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1583 +zcmYL}dpOg39LIl#2}dqtTPc>?ncFTRLwGEglq8f((S~8!W^E&ua#z^| +zacx4#I31QHky~=vsZ>TR$3fvZQ_p$M_xXN4@8@~HKF|C6`RjYb!`($mVXp!J07|Y$ +z9X%zA*r{D$NoTUzD-w~XAN6AbfFfk4q=27_;S$rH<>bq9CR0cNIy{m}LSG4D;(UYgEE^eO-k?lt43#l6TQP +ziKn{b9g$cJBJfR67>rr^*seb$P<;n_1(RqbfECV&3<@GK5C<`#bY_C5pjE;lJKR&U +zAc^t+lPHX(otNOX1gm|`jt!=ems(11=f>Q +zuqBknf`!l*C3a=ZfwiZFHn8us*QeiG4a80lSasU$ocm2p7P^Ml%LNbLca*TH8@Ps# +zAK678(%s)6^DZA5^IYAqecKgtDHNa@g>{NFiz>5dC+}C|b6OWjW4QjVm6wXpuJ-xC +z@QOuLi*$;*xf^KI2FVWgiCt5Dj4aiwe^tfP6$15d^f4eP(Lwa~p3tDhK`nh^B-NUH +zLCO^+7yY2FI|NF=N7d@LIw^J85{S_I;M$}Jty8ZXryZ<%_aB2rZDz(w;n;020%=1V +zh!Ff5ckB!sTny?h6z-G#&P1oeq!KFRCr%xkpd{!;|CTwfGs)C}3S}ml7hb-2kBo7> +z5?_^<+%tD(uzKi57;4WXZGYYJKYdNinrU40BG=96(hOcp4xM!1L;zwg^gO@x<}Y4* +zdAza2L}k#EgdrtDRqY8{&LpHQY5=4q+jDWIJS*|6u-dBM=ku!Z-6!L(*FatkKiM|t}fQV7E@ +zVKZN_L+=jzO1aV?g(3)F@MWUI`~$2uJ-XOq@G+EdV6DFC?r7BcYf^^Y-3zN;boqjD +zd~tQd?j+qu3hU2&2tcvrR@xpJS`eqdA<(kLonONq`#CVH<_QYeIt{(B&P{jR5U|RHlM@kVHIW;A*}WI{;F9(7FTY%th+3VBy0p+cf;_ZlwMPU)!zb=EA(T$8QERvz`W%+p>2NZv6X}F7a|Ew`Wc9IeJKNMtOS1;fH$90-1R6P2zRlVYP^wY8WWM^~sv=^_Kh>$_kw)jLp|c-9gC&n%x}{VW7Mn6cfgN}F +z6Mk4Olf!sNFRO?jF(zoJU)c5t@KnTn5(qU2vt^heG_o5}!wYnG5!GAF?YUi-{Hkg4 +z_`0;O+#AE5Q-N)3S4w5=InS4NMJ9CQu7VX#Z(kYjkX_kU-IPIbjDxTg8re0YBNzK{MGz{e#*6bxuWK&3Mf-O=2gesRjyk* +zsMd#45M$=txj5@RWIbbH@C-e?q*~#IXpbI#y<+!io|-nP>315r+b?X%;mi0O>}=Ez +c5cH<~U;AcCT{$u^$&UxPI=MU6;t5Ir0u~;_O#lD@ + +diff --git a/themes/bgrt/throbber-0021.png b/themes/bgrt/throbber-0021.png +deleted file mode 100644 +index a64932df50150f1ac1e29b1d181b80430f802459..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1602 +zcmYL}eKga19LIm#JZ!|pT*|WumDz)bgtRcTYHq1csCn8Qn{BqX)lAq>Nm8g=vh~QV +zZc28Ft5n!+6BDj(EfOP%+x@9?&pqe+`M%G2zdq;v`F#KR=4}fn8W~s_003Y_ +z3JZw<)nTdNdf?4ZOVfga;D$x<0l*NsR1lz4wj4A!3J8&cPzH+zpy?bo4V}zjv*W2~ +zK97n{VhGS&mWa*SFQB6ZbQ+t+NAtOiloT58KlMmp(Nca+$nMYqqn0m4g~SVJ01kuo +zMPspOoTmd8>*ww5=Z&dR^tFLKCQCg#8EhJW!T5bYIPBm|2p(kcZ>#X)L5Rbq?WouQ +zdZtTWFlh1Of$!ph!Qk?H;YtviFTovDS_%yi(0QDM1RBr56O+j0OCs9tfgHKSBfte| +zy#GgfV0=hBzX(8V_AOgPWzqN!JL1_~PysB?H}lN$wE&>gPYT(zGZIm7wu5Wci3LH4ELpv{^qg6-wjl-eokTLt0Qa@}4JopqG`<0{JH57E(^g}NxhHVobL +zLD+kuTXARs!-})8*twxg+H;UoY8-HGz2|giKvJhj-5*XSlgIy5sZ?cj;&9vj7wij} +z{C>X{_Owbim)|w&d$&KNck?iNSzWI9QmEe8s>*>@XK^~MjZxJfoYNRrDtqYtVZD}B +zozz_%3AHwf-U1t`>l-0<2gX6HK5gUUp303v1USap9DulBfp84r$#Mv1q=)D%5ca;}i4#s9EZ2b_{V{Tef +z`_(4%yfClN#kIyhZ@r&*IhRM$wZ>1b*<$)y(fH +zwMLt*JdC$MTtTJ8D|538d83M=-15&^`#WZg!-m}=LS=3R~^eck{j!*B%owKdnl+{IrTp4rpRt}kSAaANUi2^f> +zh16#!Nv6zGEmDawklRvDtnzl$@7+as#B5sN-SF4mRms#vQK)STf6h65#R9;ZFb^<$ +zeQ5A{^WL=egDWjeR;#>Lf8b6Hclq6)@i$sf_m&7->&oc$dSe}y;Ik7$f|^Q-t7qx| +zxQTk7peB)%1>7~sYP0%s{-Eb{tGx}uT^1@gx@*+4Rm>VGYMQN`Z(#UBn$ZYs>@}|k +zFyGDCnUTjwiniA=0&K=7m;d9e_IHqFPkOYEkx!9L4Y#hjfmW7{5-(Iw7`Ky%o$nD_AuAPnDUA4E}l!=h7S_WRGq{QN21!Ad%pGc4KXFALfl1( +z?6N+mu9{CuiXHSqy_$PARL9B|%-!({1vTOFdzlT>UGh_dP1Obe-CvSpppT3W3mk{8wA$WXMpW9SLmpji +zlzM57#=YSOlH27MVfHZTeWuh;7olw|NQYIek}u9jEmP+XtsSyt?sTt#R%SDYk}lZ* +z#D+SD=G>@I6hboy9lWJMW#RN>=Z`#&;aV)f4j}oD|2QUoDs0S{+*17&FV?q^2yY>5{bq3sgh_8zAh!^)9nYex}R?KS6**2oI?Yip%~Nwrj*Y + +diff --git a/themes/bgrt/throbber-0022.png b/themes/bgrt/throbber-0022.png +deleted file mode 100644 +index 4b57e234270c5b3810796a93de9e85e008f446ce..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1595 +zcmYL}e>~H99LK-PHRIB1$}-h-N-nmU!;Hd3BZ)>?UGihiuk43yE>ze?8g~+MlpmG4 +zx+L>+QuL)&Ty>~hcE@H%NAlx{Z5DE0caMAA=ka;JUysM@`F^}U@4r5xfCJ>!hGvEU +z0Ic@$_M||HSuTTBQ0FEm&q4xcdmrHffDv-J^nlAHD9CihN +zjBpx`%c0?-Vt6=qToQwoz>CK5qUj7e7sqACFqw4De~OKWqccxL2wv(#QK;o8&u|_c +zAmHtYI6FHW!5(90M{;l=Ip7=H<bSiGZ8&^!;q>;B13qQ%jjM74NWJ6KPLer8awaT$Eb4rqAFvCv1xP%ewIzTba8$*KcgnxgfC@8Kz&T(P~4q +z;A*kEhh&ecb>H|0-r_r?iUtYdg3>oI94=A6eQ|Fn>OYTOp^& +z#F{=I%qUh2i2PEV6-gc; +zskvU%FsXfeRL>(g_Mnvcvg)4sXxiRVcfp*boBK^Lax5^|=9e65$%swIq4-Vl#R*wc +zNtbV+zsFp8Z`st)c*VymJMw0UEiena$xF@XGM-`Y(VA{ +ziFH?ZF_m(SY0-WvR8J|F^}UziyO_f2KXjKGT2e +zs?P%~wMWhnT&C@tz+y(1bwxjQ&v&GHvRHziw|V#d!>4!ptW`g-;og=%MI1a1E}Bst +zcI(IqLN5FEGgE>2oo|N<2J1i;n1IoRsPx#drZsn`Z~PMAlJ60V&M!I!7bWNU_bJG+ +z4;5gm@$ZFDybk^yU>eb=NLLo~4Yjf=kC3Tu( +zA6)ed`EUWel{<2)h_SXaosyt6MiF6HK`Q8~GkrFo(&mIxyM%QrBI?s{`bkyxD|pB` +z!LOs~RlDG2`dtEhFz2mq_Vk1LdD!fX%0+yMUt!Qlt1-|nwr8Rh@h2vtDCcLypD*;k +z0T;oqKdlJnKh~h-7ZXWj1)0@S%@934B&wd2@tt~cJ?qA#sS>1H=@+{CosZ>XMG4X7 +pj+6Ucx<}|`XAc`QUQ3;qw$zWv#>e*6g3#{=_;?-gy!UmO;BO1~<);7u + +diff --git a/themes/bgrt/throbber-0023.png b/themes/bgrt/throbber-0023.png +deleted file mode 100644 +index b3dbeef0ed06455beaffa218655d8070cf2324d7..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1603 +zcmYL}doBm|NnwcRZPeW-J?vR*@C$Rb2?0KnL6w_rep#0oNfxIq!z;8Z#dz@#wKX_&Os +z^z;NOhQp>}l2f@D7M+*QyueMta8qdMG!BNtN@Xx;?EmyQg-&B6QUp&BP?XhfRA2&^ +z1~`LQ90rTUIJ?+lv3OTkyeoM3*O6XmX7BDySZX>A073k}*VzT!bf81b;Gb342@rI4 +zDT(PZg*?+;F95RG3BbQ{90Z-O4jU*TXubjEaRI636r`w%zV +z3WlSbpAvzebZ#%mMy{Z +z7Sb=UFwrh30BM&OA}C=^twxy@H$!5N1sEq+H +zT!NGsafT6Sb=rXf<$JbEL`uW$g#$yTaVVc5svG#x!H) +zCp0m3Duz>iTXpMazN^JExK8)lyOBJ^?>5H85jPT19$zs8%%U#r)xz(E_z)BB4b3!4 +zR_mCv&jVhVci5qL-%(;;U@YSBgCLZw>zQoHvLWn;;I%gRLNPbqcwC2HvSa&R$Df)+ +zhnyN&n7L$1N3Fr412*uF#Ld8!GD3H2nlMDE07k6|QP02W=CNQihnCAL=J7v0sYEV1 +z)I~L>32vv2;rF4I)K +zk!&*pDnpU{`FGTpUmtBeXKmiY>^2+-~(ajh9}F`veNqPA7|r1|c^W()JS1G^4 +zEz5q9TXVa~T+aLjR;Bk)=QQ7EJn_-_;fQIAlMd4(I|iz>J&QRm=q0SGvDB{1+g=zu +zdEic2N1z1$d@K>2>H40$zw47fje1DFY-Q^`MdUlKK1Bbpv#S9jamc#Ejr^F97B|tI +z=YHkpbvjQQtILWukz5`5vqr3QY8I}g)mI43mEXw +z?(H3CG+*U675_nPhRY~KNzQndXwo#-f1|uV>zEQq|_nw(S|l#M$1#*3TxEz +z36e+~RV5;~t<Ydlqt;ie?wH8Rqaa5!$ymVbd +w7Va}%9+gQkg;W)49{h64Q@D6+QnPa~JmKc`YyErcp~H99LK*gV~H-4qx^27b?k@6to%%DsmVwy9Hy~h8{7N{$()LWYGLG8bp1G4 +z#nB4+adIbVbr&fMQMwyrjOd(mU)|##_j!EY@7Lq;dcGg;&+D&G&LOh5&iXCu0RYe; +z5j`oOny-}>6zsf|lzC8Kam1rM0MLf7)jFWG%n&qP`TMARFJ>$qKruKhIx3pUVueSb +zc-#n76qApNi#@^OB=8w1K7-Dp^H97vCYw#?{-<`dSUUSSEwc{-t}aRin2s)b%@EKeVjYj91+oL1nco~%52Ox*9aS9la +z&i(&MJG28SV3`kMy)U~@M8wj0=KkTVI8Xr$7N1^ZxDx;%!z54l04gl67{jPItbaym +zSmUMBNVKv1aAPkFdCZu=_tU=?Lp19;>NfpC;tXCr6a${uhp)V~a +zI4`H|^M?Gr%}_!hHuU4&Vx_eI7n$T~%#o70pI_}KXRbD6pWX;h0uKDp3JH8T>}^K0 +zff<@@b9m=^0)n&II%@v{OYJ{<(<*!pr}Q=3nxq*!WHJBTU4e9##;cJ`6>17`9ra>1 +zUS~QnFB&oM;*vzCsh|J8YWghaDmwpt;q1%*By6sLOLp#3MN +z)4ibL;=0?Hev!y2t&>wl{f;lDC#}|EDYB%LN^iui2Di-As)UoTACE)G@`9J5r4WC` +zaLMi;KRXT_T@bcsZQ5=5z;aHH;c9)U8Ut9+|wnpfxw +zP1}^{nK}{Tc7G-IFucrX)D}9DG1F0e9z`hWYZL}I?_c;$r+@*cCfLO#flEKok4P>}FN(yvEXu +z5KfW8uRlA_bd!$hZRo*%JV(3ov^R3dc0OKduEY~ +z5$7Sp>x8*&AyCtG3f-!ppqJ;O=$%NG4AztfatP68N{hB_I1w7Iix#N5DoC@XF_avauVm!Ef22z)- +z{$8sk`&<&uI_8bll;Y3RIjn77+>+VT7iYTAn{PF*=)0o;=}?hRSAGgA(M^~LTRx5X +zT<|uu@Dx$(QGZfIVIqlR=a*Z`Q#C}gBu>=HBGaBqH@!T@ZZ$_iRVPM9+ +z^Hcc+N@FO+wS$v+L=eT{))r@YBpnFGTLoH{gj|rPb#CXAM_djW=iceS%^CjIRR-0quIY_p +zU?5S|lL%qe$0@jqdOnHV27xcaKjDy^<-$FSu;h#SIKj6?8#}ziGy~%Ohvcn?Zof3l +zoh{iB_>DzQnzoCH^+wpdU;lQoLoQt$Je6cBYqAfFG +z_4YNYs&Q((%c$YG&yJjgIHMMwXX-%}jK_*@F{K1A;C3-G6wQ#HhoA4lZjRE+3q#2^>ob +xnW{0GfYu~c=SS4;6s*o!KNBIY>@RcvTcZ%$p7KGe+64ZC0BIlDQ|u9z`433t&fow5 + +diff --git a/themes/bgrt/throbber-0025.png b/themes/bgrt/throbber-0025.png +deleted file mode 100644 +index 3905e00eeb09a3546eab2dec2158fa9bc5f280f4..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1604 +zcmYL}dsGs36vsiy0B0%Uqm1bmq`l;kHnoM1K%;zt6bZkrln|nmSLJL?-Hj|I$$3}BFOx}NLPmf`8BIs$)K)NW)~D)tx*E~gJH(?R$$3}7%hOn`vJ-OqTR4)B|7+(ci8SMsz0-Wu@mS +z9(E}B#v7oGQ|&_<@yEfg7Na%uiOSB-iwlumO{ClP_4T+Nc>L9ks&n%Cn!~x>oS0|% +z^0ib3ox44q;a`)gE|{-aEj%MU`A6e?Z^e~}Ja&V@Z+#j2YvRnK+S*+N+BFCGh?H>r +zHS1EhxxBsOO7-VO>e=g8cr@9=hnOEvva5FKEyWiz-{Gtkp5PD1069e|v>cri(#q5;ziiY58p?ksP +zu_V29EJ`-(anf+t+sSS{sG&t6V>-p +zGmBH4ce!bU!a5OPYtehVrrKx94c-)^bLCsLJb5)z@z+N+7if5>XMY<#uI#pc*SWG@ +z0`~~jhcyikE0|glM(K#Z2bbM3jxp!v-`Hk&kZ>#sVW&oos03a5H6to +zp`~-BM-`?bt%z&^YZaxH4BgK}wyum%C60$aSwBb^Qq5j^cr9`?^p$m5RBE%7n@*)v +znp5+Ni!SVf$&oxWd3lJ|*sRUcw!u9hx5(LnaM%B;L2slYXB{iASK=X`ucL1FRoSvcsM^y_=sOM?v#moSz?Av^`%uIs8f=J +zjsm^vhDPnYN?NT&Ef{%= +z@ps<PYq;ZF~D4IVE@+G>%VU|P~h%*?N? +zTaq|ppr$Qzkn;SuOz}0Km#f(htaP=)D^_3r$axYZ2a0BM`t{<+d&F~XQVR*Bk&Am^7d4XaWsbl~oT7)zZjixz?>dejRqAvxsS|r|qQq +ztvL=>_7)aooX>-^7G9L-I&j%Q5|j$SjF +wD~E2)ka~oIzC8+u<0Gd@SoVvtpxGs$Ch&UB0pY0y-8Tpz5q$~O9${(!0^C;FL;wH) + +diff --git a/themes/bgrt/throbber-0026.png b/themes/bgrt/throbber-0026.png +deleted file mode 100644 +index 4c02eb167941a3611d36f1b0cfab5086d77ad0ac..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1605 +zcmYL}eKga19LIl{Yh&g4DH6`&dT0-5hIAur6Qib7M%k>WZDt!|=3$~Jc0E-0dRlc{ +zNkTiggeB!6*F}mf<+ySdtHw*leqO*CtPYQuBamUyIprN~2N%ntP7kLb +z*enX-bQA}{q$SX!V>yusP9&91Wh2uywg=Uk{_Mr(5>D2h%6kVw}b*8#mRZ*WGzz~5J4g)5)~`nB_3 +zk;2p7^!6((RygoO;7Fvyr4ewa0_tr-B8AGJ0-Q)zG?`3gnL8p+G1;kydhaQ??j}E^ +zSdhy4|4BF!jSpJoD6r1=>;wvp$~Gs4)0qkdP!5>nt44MJ02;@8c?2DWB>mQYHuSJo +zR{{2xj%RiG`9Mzt%VT=Z=WWyAzAXoxV+UhzxOs49Mz3gSZ-BTA{ZMIIbEG~J!RZzb2ecD19+C%=b=4pH6}Fo6w_zp@pR +zg<&1-c5}k1lUqA;AAMNfB{o&Eo3xSk_`ZTB)!4}L_G^F>j+`65!Wl=uxd6ez3*!y! +z&!q@d-9>&@bw!#l&DCnmMWfVAB92UI@wcp)bh7Vi?QXe0r9aG&U)1X$O8>x28@s^~8W#GJLJZ(7xW9hML0){J)rD +zv@d8PplbIQ(+)?QMP*US*tdb4aY;PH)VP1gJJ0%LRx$O0RN#yTcpn>BA{ +z=ft;=RQC4O#>sl6P}7%clf49VFtfj9)FQ@OAgg6q5FS`IjHxwdj-kV%hCjiMBpS5d +zDa+j6n!g^eGg<&0hWNF+n^#UZfNMLeFoRzLZLZV!ya5%vTJqC2ry$mf=PNz|T)Z4t +z)W0)WsB~#`u3*%ytfCk4e8j`-j&xzRIJ-^HG$o`;(mmca^~p@B_+#Oc@2FR{VUC~b +z3(z=G-|jy2X2Xmr;rjh|!B{?W5iqF(E}^b{6_*%`aM>nfJr0>OYo)?CUS7^ET_}$) +zx;S1jsX`O#O@ZtqGEA$#l$$=ld@v)r%_pHD;$m^wN2s^fscs?3L1TGaNot0Z@q{dV +zb*i=$W^udfYt!}oi4q-O8mc;T50Sx=Tb#K)bSIuUd=lar)MFRpHki_!RQ)y=i_zBL +z<+H12M9hnixUu%p^3n7?1YPigNB-xdkOk>Ti2Jix9Zl9v_jIkf)*C9>Z=mP<#4)X! +z3F?nFEaSJ}WQim<+@ehKz#7i +z%Gb%y#@zNoE~`C|Y(G=CpTd7!A3`!~J~7yKp(1C8Bvin4%JdE_-Qa(PmTeCOx_*BQ +zpZCH25n7y1@WGurC^n&>Qc`!kAA4IUV1HBRM3!al-kJo0D_2Zoc4jfG1*)zV!5Ww4 +zR(G@PCeJ?Z)^wgtR<*Sdjt93Ss*#i{1bA3XLoO*JBVx$l`UYHXyrwMTEl&MB))-tC +z>-S{I)2i-qjky?9|^4S*FA2I)RZ_`h(WEkpwZiqXPtGcQguH21YkZ9q5 +zP1|+%wlRj$jkwq8XVGx?UZqf0=yUe)L!4=>pUZsF^pcygO!yq}ZfOI&;4(oWZPgp% +w_dN>G8A;-dz?^FSl8Pj#tYHI*=?RwN&~aO&a;Y)OHos;umu=0hFsa-Qr5+WzRJxpV +zO3{k-3gQ9)6uHzYK+y#wrRmIbr|>*jQ6PYch+%`6gDf_i#=vkn +z3=EUS!^B1_~RF`o_^vrup*}4owO1#M4-~rqa`0 +z@_tiV92)RT&{!-!r%SU@3H6ttKLd;g0bT?rhE4}LC|m4-SZcCCvU7C{pK05$jL?r~QfU3E7_hh#l)4at-srgS9j`%&nMZGj=zi!HKI8v?x% +z*5(n`c73y3MoPbOC(e4WN|-!vYs(yV;y#Nns;aE4^vTQ5x5`ek6t{e&3|5;`r!B=z +zFVD$}TjfTbk>%XA3yyQSIs0p$;*+B~Os<#G+dpm*iNMW414txw*q9N|wu<|td3Q}@ +zupH~!JRo8dic6XZkZX19flfohyDc}*xMVXoQ$m~bdMmznQoQ=8A)ceeYaQ<^oAeil +z8gv_))2*Au^@+TA0)p%l)$}J)`ZTP)2JRRKzc5;q(cq_Q*%RK{E4NixC!Cd!>(lR} +z#3rJ1HZg3b&y?L^YFG__S8eO%@QNoJ5|H0v7K`QgAi-9ZrL%<@ceV=QgnDD4I=@a` +zxU8CdkT$MAD5){bN;H-=WkSuCeY_HOc)Fw|J_UMtl?*6oy;9wg{OpgegO}R!%hy%x +z5HAFVrHlINOtZ8Hew!P9 +z&z@itHO3&*K>@`aq(sCwEMWHJn4$)m^|8-PPW8%i^|x9vGE+DR~pWP23BcEGPq|-c_u|Z@y@` +z0v-_e*i3LFXGTKsAX4^!iBC5uOe?7o>YVw~^4<_P>7vs_=vKd3NmuNZ@6kSR(Y1ZB +z!=U!f35ZXDP--3ybM6w)`3F5eYGlyR*hLkIy@A +zy~rN(*a6jhkahZA-Ur4uCxQC0lF#cc*XX)a88knue%XP}_Qpo4*j9aIWZcLUc#2^) +z?rXDt(?sZVerF_HO}L}#{Vr=db2X~_Jt$pneB|Zdd6HMRZcC(J;n$_@k1AO@yP5Mg +zaOVIIRs(D>4aQx5d$ +z(Fw>zpD)FJ)vQ)+t##GQ?q>)+joCg@-aGf@XHm3=Ncts&dDH8yDyt#!0;ynN&U?tD +zrf0XeSoeAFJN#gLDDeqXw)>t&|K++L`lgxXBMx76&V|xTRd%X!q0+dWW=^S&SWU}? +z`HW8TC)It6MsZdKg*A&O69myf+obla-gk}MZdGReBbOId?K5jmrb!o9RKsT0FnjuQ +z9RvuPr$G`VL=`QTIO0Tig=ys4>WQa2eTs)x>ZB!BL5KtAQ&rIZOnZ7{Q8)tDuYOlS +z@;K6_lCu%L`A)@H2KmR;6^u=2hrw#^D5TdX)7ZwoTxi*tOP%)_G$H}ek}4b%v=WBJ +z!IYNQ4#AccKKE7hMj{p_>mLtQABE;q%Gwqk4OC5D&PSZORzDr4LunacNpBED$7Td6 +zj^=O8>a64>s1*4L467ryg2yg;XRkBbjSazpYpB%a)C#xoy$N8E#oSWjkwf7!J2- +zu^-yA^O~uEM3&30)*`3Av!_?vLtmxcm>Ek|*>@L`y}fdU-QMuNcOEVyH_PLQA3|2i +zjJtY*-=ufj=claYce$4(D`46_u*_V@;JkD4K+93hd@()=D$m&+Y8&J@4~=&-?v6=lec?z2dlCF^(%e +zRssOvNG3%mfQno$dt312A3XRH6eyRJ!Uq5c#Bx~yCmPm(W_Ug^IsfBqHUmI2^EeE2 +zPBw=_rK9;gIyx&mAI)Wd$;sQF&qU`l85{;5&F5z4<}!HyX#kDQ$jzXMep>-XtyzwW +zrsgvM90rR=W3gylAQFoW4GIbk!fJGrd%+&qa!*n=hXG(Pq5p0izHQ^;BaqquGYXFi +zLL43!9xaOGP(Scgd05| +zM=bLMa6ks{|0e@5Az_I(CO{1TC;Lk}o54pWQaM~u0W1zLJicZV0IaZ(qa%`%p+(0v +zECUhNpXTjDs%$+9ixd;fNzNkoh$9nCZK)KE)LUDTdg0*gr?4l)xY?)iu!Ap?TH5`+ +zx4w*PVb;LPNty)O$c4l1;j*H)MRl)DBc*wng3JQ5s{8F&Z7aA2H5v_RpQqS=?lh~R +zfX+Ipy`%I%9O_={S!VK>{6hTxec>;6;7o2(J#{C|{U@ofLzSq)h(5LGAQvGP%22=FnvrO5$yR5)HqAPZ`lHm%bR&NT +zNZPj)@eQg2h1-Lm?+fX)4OXu|a8`Z;pGDY_j-0=5d%kRSoNhi*dy~Dd*o`-~StG+;E5!ZFqv1cbfv$$hU#+qE9K{yMQxCI=0}=r +z{o#imeXrF=6{U-Pi#v=&HvCVb<A8zxLV9JFa@{xEt2FcDZ4W|!7j%}-jr0ORh}*N9X2||i9^#lG8w+f< +z9rf^@X*;~Ue*C#Cn_x{@UDNnL6|s8?+oP8%nlC0>`v!JetQWlX3y*f6hv(hz=$d|% +zVy^e7P`;sbCJNYvX@5k%+FiVXX2-rlvx~e&FuujS*q-ucv(xQ!24f(d2#ZD*R4%&{A-9}(RuqvB-rJJpJ90~?>3J;y5dvfv@_ +zYBaEcEeyF(4^?P4CS5eeR0qmBr9Kmx4I$z|acyLbug}~F@mpj>(K=ls!yh57wZiP|w`Zr7a)$J)EEG(nL*lo-P^*R@YZIygM<{*v2gw +zCQxe`2+9{)@=YPs5c +zzJzk>UGT7h)t!1K%&(y*BEZ^BdcDH9LT~LBYd7BbsG!8M1bMUex%pb%2HH|JwGfX* +zR!#aP@I%-yLOa*7)OS=Yv?W;SIF&Fw?^jE2HQziShXh>*d=2gVezj?E+WEWiXG`Jj +z9ps5dt=!*~?b>_yl%V-m;GPW+F`C~`_ORfp_D{{R30 + +diff --git a/themes/bgrt/throbber-0029.png b/themes/bgrt/throbber-0029.png +deleted file mode 100644 +index d9931e1ecbf2708841134a846f9d36d9cdbd20f8..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1588 +zcmYL}eKga19LIm!qOFifi;-usn{8y~p-HWVgCuIM(q{c)?8!Dgka_A9NuAQ8sPu5v +zwXhJ$*j(za5*4kaEUARrMC^K4_ovQ1_j|sd&-vP`U&tKoX@Gy!Y(gFzpfMHM| +zIRa9fxmutPbwO(CI3x&OV6*@L7MjkL9#B+_f=qwm2C8r)lLZ3U1TGuICNkM +zW8FP$@OU3jPajXbylrp?G_!baCX&ep0UXZf*LC;qbbHK)*n*#{@aYhA_ZH^b8$+JS +zoVOmb_;lcxxZ!Z_`N{=t5Hy>ETNoe*1cV8EZd@G5xADO3<_R(*9^Hkw=^T%M76keK +zKk0@e1Vv5@A-v>g_I?Hn6xeK`vw4sLcz2@c36 +zd~XgG-|T7q6#YuQcTZFC9(me}p5csJ(hl!2=m_rJyC*owU)fNc_ICQFvaZ9l?``E| +zUX##=QrhdAdM2*d=?Ap6RPs=h +zv#oPc-ubJ8$irvl&sDDVfxSKlY{mlfLTytdE|ZZYDV|R>%2zpR9JQ8#du2*hjcBys +zfEVXo^c~v(bc+iQ-U!nHjD~{#P~3KUU#_>q$ik^>RSmHdjj9LdsQ;J<)!AdTWEQvK +zy~p_VU=K8_b8mGnr~LUQgH4oo!bbSpdDTvo9pfIC;!PRd$^4PnOP07k$)1V=$BN_2 +zx8}UhS5a{J+h?OR`ou2h;M=?rri%CtNklfjC`DNIDZMxP&cYvGX%3GC$}m;w*Jyo< +zNauUA&ArsFM2843NjLluV&76~LP(g-TEjMTtjD6QLnT5Mcf!@CnzB?_K~O--s>4@mU +zm)(jZn8{OrbiGTGB${(ZLDj^}##db@byqSLAE%=-YD0vG?Vp{)a8q_{X?l%eeo@(1 +zYmu3jFhS__o~{>uRmiZiI~%UUC-|%(ySi1ZtNgf(haWifg^ScQdFCExV>+r3K?wTj +zd!s*j(4x;vIw5Lu+av&^bwwByCfkm*;9NpR4yzwZmB5jO-LM +zIEKrO7ex0`K6O1j-=teMKK8&M{V7P|063?CgISmW@_U9++_7-1|5SEO|Rmey;+UOCm~rawU07jqNUQUUNHqj_0AzquXC4W +z_I}RL(;pt2x9@@z>mvXr8fvL3gi0O!cZ&{n_tmg$rdvEe_4oHxMi=2d2gp7ce`D** +znW3Dj+M<@w%hf^2NWZuBlCUq*X-uL~rHs1YWc2xi?vo{L-)wnH6lA3wuR6Ul14c4% +zBAmyVm#_U{R-Gm8ed(FVqBHWb;EA7L6P3k^-(rjU}V}$Z3 +z;z_1J<-oH`G5=n{w&^psOtJrwJ)NnP=o12FH^dJORAM@bZpGDvlB~it^DpWd=YTYO +zb11M*1LHmGkaXEe%wd%zWY}ggyO?cmwd4{fVX4$oN$DJP +zA<127>xn3)q%_V?=Q+>$KHtyh{XFm2=XrlWe|@v};=MH0*Q)~npo#PL +z@CVgwwbWF=&N*`AGbk{YcQ6M4;5w_N1YEkZ4m4f3o~b|>4gWE1sc4>kt>DR`K|#@c>8DY^oqsef)bOCFi8b-c)+2q +z>zvfSGOr`0AM0rJnsJS0v8>>=wceFI`&03$t0wKWm871)i8hVDLxL+brSCgma3=e8 +zg)Wx;4uMBM?Y(TCpc%SxQIn-N068rjl&c5ba~~q#-Zc9qezw^#+r)1!cxK}w{6cHx(+!rX7tyCFc&K(}wK-X_um +zbkfH>)sY2%0q#k-rQBV$>Nc)kCLUCV8x}?tn4e-Qo?Lz7B+HR!|Dogdm(?vlWps?Xb22Zys5>eJ$UBR_x{Ee^9D`$*rsQ4L*DoUo^&N +zl8b~Yd?Qy#b=Qvk_S^ZNT4Z(ex_GabSAvz6+26&J1J0JPc&hmR2R&UfI$x$|rro+E +zH;?4$Kd^#*M$Yn1YGK#n5!_OhkWQzw=;AFHXBkKq33@DZ^oCFJ8i<#SdNlaPHU~tm9;4clFB7nQKE(bBfZS?5;d&MvpbwawC2K +zv1dQx>&G{>+a#i2?IaaCB2(>?hYM^U0b#25&8B@95>rE9hVaZ!C@KGlasl%t0{e7* +zgIker4R0G6sXE-(x2b{Zr+O6lRViI*Q{*}~O09b;$*28< +z<&M2R-Zc|W=NA>bJ`{hMTOszpKa@ +X`%H>)eQ8Yx_}u|GPrOH^dqny_<-gJq + +-- +2.20.1 + +From a7ab82171f3a83cf709b91542d1299362c47474f Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 9 Jan 2019 14:52:33 +0100 +Subject: [PATCH 42/74] themes: spinner: Add watermark alignment settings + +Add watermark alignment settings, so that distros can simply drop +a watermark.png into the theme dir from another package and then have it +show up in the right place. + +Signed-off-by: Hans de Goede +--- + themes/spinner/spinner.plymouth.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/themes/spinner/spinner.plymouth.in b/themes/spinner/spinner.plymouth.in +index bbd42dc..6ba3f42 100644 +--- a/themes/spinner/spinner.plymouth.in ++++ b/themes/spinner/spinner.plymouth.in +@@ -7,6 +7,8 @@ ModuleName=two-step + ImageDir=@PLYMOUTH_THEME_PATH@/spinner + HorizontalAlignment=.5 + VerticalAlignment=.75 ++WatermarkHorizontalAlignment=.5 ++WatermarkVerticalAlignment=.96 + Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 +-- +2.20.1 + +From 203fe586bb698a21a90adc271f8fd2ed17905cf9 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 09:37:16 +0100 +Subject: [PATCH 43/74] themes: Update spinner and bgrt diskcrypt dialog + +Update the spinner and bgrt themses diskcrypt dialog to match the dialog +from the "Disk decrypt" mockup from: + +https://wiki.gnome.org/Design/OS/BootProgress + +Signed-off-by: Hans de Goede +--- + themes/spinner/Makefile.am | 1 - + themes/spinner/box.png | Bin 870 -> 0 bytes + themes/spinner/bullet.png | Bin 131 -> 1016 bytes + themes/spinner/entry.png | Bin 1431 -> 407 bytes + themes/spinner/lock.png | Bin 329 -> 619 bytes + 5 files changed, 1 deletion(-) + delete mode 100644 themes/spinner/box.png + +diff --git a/themes/spinner/Makefile.am b/themes/spinner/Makefile.am +index 2a008cb..6c3807f 100644 +--- a/themes/spinner/Makefile.am ++++ b/themes/spinner/Makefile.am +@@ -3,7 +3,6 @@ nodist_theme_DATA = spinner.plymouth + + dist_theme_DATA = \ + background-tile.png \ +- box.png \ + bullet.png \ + entry.png \ + lock.png \ +diff --git a/themes/spinner/box.png b/themes/spinner/box.png +deleted file mode 100644 +index 54876e68097e45b215f6f4c4ab2f1c06c5bd1e4e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 870 +zcmeAS@N?(olHy`uVBq!ia0y~yU{nIK{W#cwWXpePWgsP4;u=vBoS#-wo>-L1;Fyx1 +zl&avFo0y&&l$w}QS$HzlhJk^Z!_&nvq~g|_Tl@W`(W@UmTf#;@V6`wU#Lhm4Z}sF0SlKS+*^aA-R3`>*{yeueW-)S*X4G@YAFJoyCWu +z!{O)Wo_xLQ+`LKbFZ(4ABrTh`(q3?m&E9!O)NP+RvD74Xyi)P_S~F#t;;ilfL3MHE +z1W&=NWnIR?iwip@ariP_*|lfSpSt|~_sjj3f8KO8Ywhm&2b4~2+9S``ULO}9zu(%z +z;>Y5hQ&=)(7Mr-7-7@Rt_uuQw%gS~={Np^M{fA?Nt4VAm@8-(l;>)-1-mMj$9dwNE +zs;kh#k7^}_g&z-p`}S>h!9D(Bb*BT<^;|cq{#~Z~{Q2|yM=gBg{-4?NKQi;#zkmOx +zZ{4~z@lFfFw9H%si9HeV@&8Td*dJTj{p0k@#gWS|-{d(y@i(hYb7IDsusa>g;+xL4 +zYv^}9authLV$_Kgm7aXQU1M*+4*vt;2AAiV*!&CU_z{&>mCVfaPyDrDg8-uwi-HS~ +z;t*7DVQ^yMpuf;Xm%BcZ)8tvXD%2`NL!T}&&+K@Wvg%+$fplN)ckT+d)#c^o^`>h* +zZwD{A9bmkC`SSeNyZ$ZHoL~R;T$Q`K`}^lgA+5SAv%;3@@F(>|6^2dHd{hy_YaB^>EX>4U6ba`-PAZ2)IW&i+q+TE9Ja^yG& +zhX3mna|8oIpyS9Ns@fau@%NRi*xj9;WIFC2TVqu$8Dqda2zSEv?>{yC!a+Hu5Y;?k +zG2w_gW-eIxv>*FSQ|#wkS-ZZIhvNoAB$#EtOxw^ekn8z?#eX56@8!XkVaJD|56{D( +zG|!C1(DPwPc$d?-4tYFR;!Wt|uP)qg>%8B3ypD!stO|R=fj1$UaQ5a!5P`T9oVlMf +zH_3$c)a4@nJa^$(J|yp0J>+gGLoWBJ2vZsg=^;l$PWn7|Jwvw<(dqf_Mz+Jn=iJrR +zYu)y@D={HcDSwQY`goPTf+Erxr9YN1no-5t`p6iLS6o1B1x`rk2di +zEn9K%=zr?T&E2z?%vsRFG^cDKd(OEOI4v+;@N|JjDKpP9$64nz+w60m%YyP*;-X7h +zZ1E*8W#v^?Z2vW_7FJ*LS~l8HN?Y7?OPg)J<*iiIT9q2B)>N%}&9xlV2Gx6N^g!-w +zYBZ=dVzKMlNeyDN4-?edi8f{+#*skW8UYkEH-Bc6Q;gimHD*(0Yzk#iBW-Y2YQ#V= +zZp2#YV0V)Hl3URD5;y)GxzNzPgIs9n2D#7No={s$|Ds3-)OKOZ=_D164GNnV_R_vd +zKc2%?1OGEabw08Z-Vn@lL)Bl2?92?!>7r +z1B3g2Gemdm4(CTfv8V@mPx#JxN4CR2b8(&M^*vAQS}AC*IFO3hpl< +zCLRK8)L8tIDJQeZGLsDl8ulot=omO(nSQ~FCGa2lSzajfp5LiP2(p^?!a4u|002ov +JPDHLkV1lW|C*J@7 + +diff --git a/themes/spinner/entry.png b/themes/spinner/entry.png +index 65810dea3ff2a03f620f13cdb9f680aa116c033d..e86c21594d0bd49dc0273f37200d7e3b9185d26a 100644 +GIT binary patch +delta 391 +zcmbQvJ)K#xGr-TCmrII^fq{Y7)59eQNM8eDc@8!pIh(~eX!0s%nR?#qKbCYGe8D3oWGWGJ|M`UZqI +z@`(c#{r7Zn45_&F_WDMz!vPX)5C6BMZMwAUs^Sgb!gY@pRFuc{FDQSg#47$aNoJ|< +z!dNZOl2^~Bl~m93uK)4islEE$yZ8UGUGTiTWn=1FF +z{*z7r-8^-j7nh%u2&MiMZGN<716xV$uhdAMcK3~U^OFBr?U$S~e`)A~#oKZhuUfUe +hbZgy;*T0_f|0uQj`b1v+J}@vCJYD@<);T3K0RU@qq@(}< + +delta 1422 +zcmV;91#$Y91D6YbiBL{Q4GJ0x0000DNk~Le0002e0000U2nGNE09ms@jQ{`xeR@<_ +zbW&k=AaHVTW@&6?Aar?fWgumEX=VTbc-pO&U6LCs429oW#a%*6LJ};8->U2&%fAQA +z*s(J+HOU0Z-B=(A^a5Y>}qvkN8Wn7N>Tk*-_0z3Gbkxl8BMN6+#= +z<8&}Yg16lM+L2R%TptP^kGww1gSTTR9Yb_Cyo)T)t9{0$V@UWWr}IDLqgUcD%Q-)8 +z$Lulw`ae2?(G~WD0}mm&@U-PcFat?a@FYB0;214MTaTRIk6pMoUxLT+{n%aQjF9J0 +zgv-tVdx_D1k(0j2dH)l_Cj@#-=G(^h6S=3tycMAh6LMdC# +zP#r%-+jq^V2}^7s)(=EW;(FpWiS +zJuwOhXr7qrj_Y|esldc|-cllNl)A%btkWRTsF +zE<<9I(dEoegg7SfDVRA+=w{=Dp7mu!P?w&k*Ns?mHWXV%XIhD*=aD-{L>>;O| +zb186IV7frNU_>dEtJGMvTJ@T0uB9P;T5Q^^c}p#~(z#2=_V3m`^we`Ng9cJ*#G%86 +zk2LZq6S+2J#;Mb$&ouKacWQ^~Gc|f4_c=9xI@A`ixX1Z}8pQ5zCTML}UCcm?BZ0Ut +z0!V0H%&tT+@*=mGT^WbgI{Yz9U2r-rVjvg?u}-?PdyxB-ThRDN-1sAMVWImMewE`Vx4^=DpJt43CGro;b5AA2#%S5 +zi?o(~)?r2aIw2c8r1~aI_i@=xsp7W#SocXad_(t1HGD(&Ni}>!_enK;L-$EFd_|Xv +zDg^jI@w~o!%%nGDnwZ8(S7TilWOZ(qdW8syB?UJ}s@AE(VcF);XT4-g+w})s;gh~U +z>I#3S_R@t-5^xtwS%T6{xWl5rN@9@=uUoliKY^ok@@KqbGcx&jS +zk)z@(0e9l;_^b>60|^X|qww2t`jH_Ve=Z{c04^f|c%?sf00007bV*G`2jUAC4mu9y +z$&hLQ00EmxL_t(|+U?xUO2a@D#qo0|6R8UYan<*K96|6A)Jjcltsv5me2j~vlh}=! +zbo>7;vkV;W+`};T^!O0w^SN&C?v-V^WCHM?AeH4&t5u=paw&U#c@F++Cg*dRe~}_! +zbe2L;U6rz?lRo9XjNI=3+QtmU|T+iga_j1n3>P8GCU_6uL%qh!rdFwuy +z89@S4!{kgRlh+_b>_|ZBRBAKhr9MPv#*PG}1j$S?^%Kc;K_W@O__pD6iu1B|JjIDb +zkbrSHGU+sX20Ic#0@C)Q!9=n)e@XFpN0NZ?Ts+!Iec8}ec>og1hQ9vRpXLrgLXcu> +zr}kLq2ojJOq*ylCS=m64fboUHu>K}Uzy&)}Z0$slfJ=fD$CHU2378b5L2DNmCvpU& +zl?|uX?)>5^fbn%hf3!16fgK5$D&DmV3SGJg5-=%9rvb%|1We=j1pq+;R0tA4kN`+( +zAByyK_b?}Ny0_y}JiBL{Q4GJ0x0000DNk~Le0000U0000V2nGNE0Pt*m2azEh9u3z3 +z01ejxLMWSf00007bV*G`2jUD92p1aW_9+dKTPJ@3(@8`@R7l6|mQ7C+K^Vt>&uoXq +zq=j~~(zSRa2v@mCgMA?yfdu7ZYWxI#5EH(FAz~zc1mRm?@S?*37ojBy+X%TmN)GJb75vHobi-)^;Ow^{^25D)ln +zVJUwQ5o$+Yh|>~N*(p99R#8gD3)WgQG($urUNC@CD*hV-h{!*7<3BOmwwXw!066n~ +zeBU1}Scy=nJf>JIqSQ}$4i4V4v-5^;{r+gci}^*$U^?!{cU+x@XN7G5&0$U;AL +zI-RCaSR$9Z0l@NdnUl`R`6iYHz~tlv8ygSV-+xD=(ToOMDiv5;UAY+N^LKvnNhMRP +zt*+pC9$Q;4qj_qrb$I=hM5po1>FE$&=e^wXvQY+?g!WNlMF+0e>!FX>Y&J)jPJe9q +zLy{*?E5XMPhYb3IO9DorLbgs51Q=tYNhf0rCc*-8WtHncI6iQ%*Fz_C{NUPA4KJ6C +z9W0h*$^8fSOfs3|^z`h~{EG|>Xkg%8cV9S8=9x%5vVRBjzI?CiB_rbi0000 +Date: Tue, 15 Jan 2019 09:48:30 +0100 +Subject: [PATCH 44/74] ply-array: Add ply_array_contains_uint32_element + function + +Add a new ply_array_contains_uint32_element which checks if the queried +ply-array contains an element with the passed in uint32_t value. + +Signed-off-by: Hans de Goede +--- + src/libply/ply-array.c | 18 ++++++++++++++++++ + src/libply/ply-array.h | 3 +++ + 2 files changed, 21 insertions(+) + +diff --git a/src/libply/ply-array.c b/src/libply/ply-array.c +index 7d23953..26532cf 100644 +--- a/src/libply/ply-array.c ++++ b/src/libply/ply-array.c +@@ -169,4 +169,22 @@ ply_array_steal_uint32_elements (ply_array_t *array) + return data; + } + ++bool ++ply_array_contains_uint32_element (ply_array_t *array, const uint32_t element) ++{ ++ uint32_t const *elements; ++ int i, size; ++ ++ assert (array->element_type == PLY_ARRAY_ELEMENT_TYPE_UINT32); ++ ++ elements = (uint32_t const *) ply_buffer_get_bytes (array->buffer); ++ size = (ply_buffer_get_size (array->buffer) / sizeof(const uint32_t)) - 1; ++ ++ for (i = 0; i < size; i++) ++ if (elements[i] == element) ++ return true; ++ ++ return false; ++} ++ + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +diff --git a/src/libply/ply-array.h b/src/libply/ply-array.h +index 777485c..3d8e9c4 100644 +--- a/src/libply/ply-array.h ++++ b/src/libply/ply-array.h +@@ -23,6 +23,7 @@ + #define PLY_ARRAY_H + + #include ++#include + + typedef struct _ply_array ply_array_t; + typedef enum _ply_array_element_type ply_array_element_type_t; +@@ -46,6 +47,8 @@ uint32_t const *ply_array_get_uint32_elements (ply_array_t *array); + void **ply_array_steal_pointer_elements (ply_array_t *array); + + uint32_t *ply_array_steal_uint32_elements (ply_array_t *array); ++bool ply_array_contains_uint32_element (ply_array_t *array, ++ const uint32_t element); + #endif + + #endif /* PLY_ARRAY_H */ +-- +2.20.1 + +From 88f1b1dc0e7c51d7065403783ab1057b0f3ec31d Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 09:21:59 +0100 +Subject: [PATCH 45/74] ply-renderer: Add ply_renderer_handle_change_event + function + +This function can be called to notify the renderer of udev change-events. + +This is a preparation patch for adding support for hotplugging +monitors while plymouth is running. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-renderer-plugin.h | 1 + + src/libply-splash-core/ply-renderer.c | 9 +++++++++ + src/libply-splash-core/ply-renderer.h | 2 ++ + 3 files changed, 12 insertions(+) + +diff --git a/src/libply-splash-core/ply-renderer-plugin.h b/src/libply-splash-core/ply-renderer-plugin.h +index db18d19..6b6ff25 100644 +--- a/src/libply-splash-core/ply-renderer-plugin.h ++++ b/src/libply-splash-core/ply-renderer-plugin.h +@@ -43,6 +43,7 @@ typedef struct + bool (*open_device)(ply_renderer_backend_t *backend); + void (*close_device)(ply_renderer_backend_t *backend); + bool (*query_device)(ply_renderer_backend_t *backend); ++ bool (*handle_change_event)(ply_renderer_backend_t *backend); + bool (*map_to_device)(ply_renderer_backend_t *backend); + void (*unmap_from_device)(ply_renderer_backend_t *backend); + void (*activate)(ply_renderer_backend_t *backend); +diff --git a/src/libply-splash-core/ply-renderer.c b/src/libply-splash-core/ply-renderer.c +index 5e83627..e0a0784 100644 +--- a/src/libply-splash-core/ply-renderer.c ++++ b/src/libply-splash-core/ply-renderer.c +@@ -297,6 +297,15 @@ ply_renderer_close (ply_renderer_t *renderer) + renderer->is_active = false; + } + ++bool ++ply_renderer_handle_change_event (ply_renderer_t *renderer) ++{ ++ if (renderer->plugin_interface->handle_change_event) ++ return renderer->plugin_interface->handle_change_event (renderer->backend); ++ ++ return false; ++} ++ + void + ply_renderer_activate (ply_renderer_t *renderer) + { +diff --git a/src/libply-splash-core/ply-renderer.h b/src/libply-splash-core/ply-renderer.h +index c0e0ed5..820cdb6 100644 +--- a/src/libply-splash-core/ply-renderer.h ++++ b/src/libply-splash-core/ply-renderer.h +@@ -55,6 +55,8 @@ ply_renderer_t *ply_renderer_new (ply_renderer_type_t renderer_type, + void ply_renderer_free (ply_renderer_t *renderer); + bool ply_renderer_open (ply_renderer_t *renderer); + void ply_renderer_close (ply_renderer_t *renderer); ++/* Returns true when the heads have changed as a result of the change event */ ++bool ply_renderer_handle_change_event (ply_renderer_t *renderer); + void ply_renderer_activate (ply_renderer_t *renderer); + void ply_renderer_deactivate (ply_renderer_t *renderer); + bool ply_renderer_is_active (ply_renderer_t *renderer); +-- +2.20.1 + +From 80acc33ab37b73feb6092d477f5198e4f57dd649 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 14 Jan 2019 17:36:22 +0100 +Subject: [PATCH 46/74] drm: Refactor ply_renderer_head_add_connector and + ply_renderer_head_new + +Both these function take a bunch of info coming from the ply_output_t +struct and with upcoming changes they are going to be using even more +ply_output_t fields. Instead of passing all these fields one by one, +simply directly pass a pointer to ply_output_t. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 56 ++++++++++++++---------------- + 1 file changed, 26 insertions(+), 30 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 20543ea..afc8d65 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -472,33 +472,29 @@ ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *back + + static bool + ply_renderer_head_add_connector (ply_renderer_head_t *head, +- drmModeConnector *connector, +- drmModeModeInfo *mode) ++ ply_output_t *output) + { +- if (mode->hdisplay != head->area.width || mode->vdisplay != head->area.height) { ++ if (output->mode->hdisplay != head->area.width || output->mode->vdisplay != head->area.height) { + ply_trace ("Tried to add connector with resolution %dx%d to %dx%d head", +- (int) mode->hdisplay, (int) mode->vdisplay, ++ (int) output->mode->hdisplay, (int) output->mode->vdisplay, + (int) head->area.width, (int) head->area.height); + return false; + } else { + ply_trace ("Adding connector with id %d to %dx%d head", +- (int) connector->connector_id, ++ (int) output->connector->connector_id, + (int) head->area.width, (int) head->area.height); + } + +- ply_array_add_uint32_element (head->connector_ids, connector->connector_id); ++ ply_array_add_uint32_element (head->connector_ids, output->connector->connector_id); + + return true; + } + + static ply_renderer_head_t * + ply_renderer_head_new (ply_renderer_backend_t *backend, +- drmModeConnector *connector, +- drmModeModeInfo *mode, +- uint32_t controller_id, ++ ply_output_t *output, + uint32_t console_buffer_id, +- int gamma_size, +- ply_pixel_buffer_rotation_t rotation) ++ int gamma_size) + { + ply_renderer_head_t *head; + int i, step; +@@ -507,16 +503,16 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + + head->backend = backend; + head->connector_ids = ply_array_new (PLY_ARRAY_ELEMENT_TYPE_UINT32); +- head->controller_id = controller_id; ++ head->controller_id = output->controller_id; + head->console_buffer_id = console_buffer_id; + +- head->connector0 = connector; +- head->connector0_mode = mode; ++ head->connector0 = output->connector; ++ head->connector0_mode = output->mode; + + head->area.x = 0; + head->area.y = 0; +- head->area.width = mode->hdisplay; +- head->area.height = mode->vdisplay; ++ head->area.width = output->mode->hdisplay; ++ head->area.height = output->mode->vdisplay; + + if (gamma_size) { + head->gamma_size = gamma_size; +@@ -530,26 +526,26 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + } + } + +- ply_renderer_head_add_connector (head, connector, mode); ++ ply_renderer_head_add_connector (head, output); + assert (ply_array_get_size (head->connector_ids) > 0); + +- head->pixel_buffer = ply_pixel_buffer_new_with_device_rotation (head->area.width, head->area.height, rotation); ++ head->pixel_buffer = ply_pixel_buffer_new_with_device_rotation (head->area.width, head->area.height, output->rotation); + ply_pixel_buffer_set_device_scale (head->pixel_buffer, + ply_get_device_scale (head->area.width, + head->area.height, +- connector->mmWidth, +- connector->mmHeight)); ++ output->connector->mmWidth, ++ output->connector->mmHeight)); + + ply_trace ("Creating %ldx%ld renderer head", head->area.width, head->area.height); + ply_pixel_buffer_fill_with_color (head->pixel_buffer, NULL, + 0.0, 0.0, 0.0, 1.0); + +- if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS || +- connector->connector_type == DRM_MODE_CONNECTOR_eDP || +- connector->connector_type == DRM_MODE_CONNECTOR_DSI) { +- backend->panel_width = mode->hdisplay; +- backend->panel_height = mode->vdisplay; +- backend->panel_rotation = rotation; ++ if (output->connector->connector_type == DRM_MODE_CONNECTOR_LVDS || ++ output->connector->connector_type == DRM_MODE_CONNECTOR_eDP || ++ output->connector->connector_type == DRM_MODE_CONNECTOR_DSI) { ++ backend->panel_width = output->mode->hdisplay; ++ backend->panel_height = output->mode->vdisplay; ++ backend->panel_rotation = output->rotation; + backend->panel_scale = ply_pixel_buffer_get_device_scale (head->pixel_buffer); + } + +@@ -1323,9 +1319,9 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id); + + if (head == NULL) { +- head = ply_renderer_head_new (backend, connector, outputs[i].mode, +- controller_id, console_buffer_id, +- gamma_size, outputs[i].rotation); ++ head = ply_renderer_head_new (backend, &outputs[i], ++ console_buffer_id, ++ gamma_size); + + ply_list_append_data (backend->heads, head); + +@@ -1333,7 +1329,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id, + head); + } else { +- if (!ply_renderer_head_add_connector (head, connector, outputs[i].mode)) ++ if (!ply_renderer_head_add_connector (head, &outputs[i])) + ply_trace ("couldn't connect monitor to existing head"); + + drmModeFreeConnector (connector); +-- +2.20.1 + +From 9b5d4df9f92909aa4c53d98f02c9343eb4ce97c7 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 07:31:32 +0100 +Subject: [PATCH 47/74] drm: Stop keeing a drmModeConnector instance around + +Before this commit we were storing a pointer to the drmModeConnector +in struct _ply_renderer_head, solely so that we can free it when +destroying the head. This was necessary because we also stored a pointer +to the mode we picked, which comes from insided the drmModeConnector. + +The drmModeModeInfo struct has no pointers, so we can simply store a copy +of it instead of a pointer, which removes the need to keep the +drmModeConnector around after probing the connectors. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 41 ++++++++++++++---------------- + 1 file changed, 19 insertions(+), 22 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index afc8d65..348f880 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -77,8 +77,7 @@ struct _ply_renderer_head + unsigned long row_stride; + + ply_array_t *connector_ids; +- drmModeConnector *connector0; +- drmModeModeInfo *connector0_mode; ++ drmModeModeInfo connector0_mode; + + uint32_t controller_id; + uint32_t console_buffer_id; +@@ -118,7 +117,7 @@ typedef struct + typedef struct + { + drmModeConnector *connector; +- drmModeModeInfo *mode; ++ drmModeModeInfo mode; + uint32_t controller_id; + uint32_t possible_controllers; + ply_pixel_buffer_rotation_t rotation; +@@ -474,9 +473,9 @@ static bool + ply_renderer_head_add_connector (ply_renderer_head_t *head, + ply_output_t *output) + { +- if (output->mode->hdisplay != head->area.width || output->mode->vdisplay != head->area.height) { ++ if (output->mode.hdisplay != head->area.width || output->mode.vdisplay != head->area.height) { + ply_trace ("Tried to add connector with resolution %dx%d to %dx%d head", +- (int) output->mode->hdisplay, (int) output->mode->vdisplay, ++ (int) output->mode.hdisplay, (int) output->mode.vdisplay, + (int) head->area.width, (int) head->area.height); + return false; + } else { +@@ -505,14 +504,12 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + head->connector_ids = ply_array_new (PLY_ARRAY_ELEMENT_TYPE_UINT32); + head->controller_id = output->controller_id; + head->console_buffer_id = console_buffer_id; +- +- head->connector0 = output->connector; + head->connector0_mode = output->mode; + + head->area.x = 0; + head->area.y = 0; +- head->area.width = output->mode->hdisplay; +- head->area.height = output->mode->vdisplay; ++ head->area.width = output->mode.hdisplay; ++ head->area.height = output->mode.vdisplay; + + if (gamma_size) { + head->gamma_size = gamma_size; +@@ -543,8 +540,8 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + if (output->connector->connector_type == DRM_MODE_CONNECTOR_LVDS || + output->connector->connector_type == DRM_MODE_CONNECTOR_eDP || + output->connector->connector_type == DRM_MODE_CONNECTOR_DSI) { +- backend->panel_width = output->mode->hdisplay; +- backend->panel_height = output->mode->vdisplay; ++ backend->panel_width = output->mode.hdisplay; ++ backend->panel_height = output->mode.vdisplay; + backend->panel_rotation = output->rotation; + backend->panel_scale = ply_pixel_buffer_get_device_scale (head->pixel_buffer); + } +@@ -558,7 +555,6 @@ ply_renderer_head_free (ply_renderer_head_t *head) + ply_trace ("freeing %ldx%ld renderer head", head->area.width, head->area.height); + ply_pixel_buffer_free (head->pixel_buffer); + +- drmModeFreeConnector (head->connector0); + ply_array_free (head->connector_ids); + free (head->gamma); + free (head); +@@ -648,7 +644,7 @@ ply_renderer_head_set_scan_out_buffer (ply_renderer_backend_t *backend, + ply_renderer_head_t *head, + uint32_t buffer_id) + { +- drmModeModeInfo *mode = head->connector0_mode; ++ drmModeModeInfo *mode = &head->connector0_mode; + uint32_t *connector_ids; + int number_of_connectors; + +@@ -1211,6 +1207,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + */ + found = 0; + for (i = 0; i < backend->resources->count_connectors; i++) { ++ drmModeModeInfo *mode = NULL; + drmModeConnector *connector; + + connector = drmModeGetConnector (backend->device_fd, +@@ -1234,17 +1231,18 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); + + if (!outputs[found].tiled && backend->use_preferred_mode) +- outputs[found].mode = get_preferred_mode (connector); ++ mode = get_preferred_mode (connector); + +- if (!outputs[found].mode && outputs[found].controller_id) +- outputs[found].mode = get_active_mode (backend, &outputs[found]); ++ if (!mode && outputs[found].controller_id) ++ mode = get_active_mode (backend, &outputs[found]); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +- if (!outputs[found].mode) { ++ if (!mode) { + ply_trace ("falling back to first available mode"); +- outputs[found].mode = &connector->modes[0]; ++ mode = &connector->modes[0]; + } ++ outputs[found].mode = *mode; + + found++; + } +@@ -1262,8 +1260,8 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + + if (outputs[i].controller_id == outputs[j].controller_id && +- (outputs[i].mode->hdisplay != outputs[j].mode->hdisplay || +- outputs[i].mode->vdisplay != outputs[j].mode->vdisplay)) { ++ (outputs[i].mode.hdisplay != outputs[j].mode.hdisplay || ++ outputs[i].mode.vdisplay != outputs[j].mode.vdisplay)) { + ply_trace ("connector %u uses same controller as %u and modes differ, unlinking controller", + outputs[j].connector->connector_id, + outputs[i].connector->connector_id); +@@ -1331,9 +1329,8 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } else { + if (!ply_renderer_head_add_connector (head, &outputs[i])) + ply_trace ("couldn't connect monitor to existing head"); +- +- drmModeFreeConnector (connector); + } ++ drmModeFreeConnector (connector); + } + + ply_hashtable_free (heads_by_controller_id); +-- +2.20.1 + +From b3f1c7683d70b653ebde1d41342f6b549d5c2f1f Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 08:31:20 +0100 +Subject: [PATCH 48/74] drm: Stop storing a pointer to drmModeConnector in + ply_output_t + +This is a preparation patch for hotplug support, for hotplug support we +want to keep the ply_output_t for connectors around, this change decouples +the lifetime of the drmModeConnector from the ply_output_t lifetime. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 66 +++++++++++++++--------------- + 1 file changed, 32 insertions(+), 34 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 348f880..07de083 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -116,10 +116,12 @@ typedef struct + + typedef struct + { +- drmModeConnector *connector; + drmModeModeInfo mode; ++ uint32_t connector_id; ++ uint32_t connector_type; + uint32_t controller_id; + uint32_t possible_controllers; ++ int device_scale; + ply_pixel_buffer_rotation_t rotation; + bool tiled; + } ply_output_t; +@@ -444,6 +446,7 @@ connector_orientation_prop_to_rotation (drmModePropertyPtr prop, + + static void + ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *backend, ++ drmModeConnector *connector, + ply_output_t *output) + { + drmModePropertyPtr prop; +@@ -452,14 +455,14 @@ ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *back + output->rotation = PLY_PIXEL_BUFFER_ROTATE_UPRIGHT; + output->tiled = false; + +- for (i = 0; i < output->connector->count_props; i++) { +- prop = drmModeGetProperty (backend->device_fd, output->connector->props[i]); ++ for (i = 0; i < connector->count_props; i++) { ++ prop = drmModeGetProperty (backend->device_fd, connector->props[i]); + if (!prop) + continue; + + if ((prop->flags & DRM_MODE_PROP_ENUM) && + strcmp (prop->name, "panel orientation") == 0) +- output->rotation = connector_orientation_prop_to_rotation (prop, output->connector->prop_values[i]); ++ output->rotation = connector_orientation_prop_to_rotation (prop, connector->prop_values[i]); + + if ((prop->flags & DRM_MODE_PROP_BLOB) && + strcmp (prop->name, "TILE") == 0) +@@ -480,11 +483,11 @@ ply_renderer_head_add_connector (ply_renderer_head_t *head, + return false; + } else { + ply_trace ("Adding connector with id %d to %dx%d head", +- (int) output->connector->connector_id, ++ (int) output->connector_id, + (int) head->area.width, (int) head->area.height); + } + +- ply_array_add_uint32_element (head->connector_ids, output->connector->connector_id); ++ ply_array_add_uint32_element (head->connector_ids, output->connector_id); + + return true; + } +@@ -527,23 +530,19 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + assert (ply_array_get_size (head->connector_ids) > 0); + + head->pixel_buffer = ply_pixel_buffer_new_with_device_rotation (head->area.width, head->area.height, output->rotation); +- ply_pixel_buffer_set_device_scale (head->pixel_buffer, +- ply_get_device_scale (head->area.width, +- head->area.height, +- output->connector->mmWidth, +- output->connector->mmHeight)); ++ ply_pixel_buffer_set_device_scale (head->pixel_buffer, output->device_scale); + + ply_trace ("Creating %ldx%ld renderer head", head->area.width, head->area.height); + ply_pixel_buffer_fill_with_color (head->pixel_buffer, NULL, + 0.0, 0.0, 0.0, 1.0); + +- if (output->connector->connector_type == DRM_MODE_CONNECTOR_LVDS || +- output->connector->connector_type == DRM_MODE_CONNECTOR_eDP || +- output->connector->connector_type == DRM_MODE_CONNECTOR_DSI) { ++ if (output->connector_type == DRM_MODE_CONNECTOR_LVDS || ++ output->connector_type == DRM_MODE_CONNECTOR_eDP || ++ output->connector_type == DRM_MODE_CONNECTOR_DSI) { + backend->panel_width = output->mode.hdisplay; + backend->panel_height = output->mode.vdisplay; + backend->panel_rotation = output->rotation; +- backend->panel_scale = ply_pixel_buffer_get_device_scale (head->pixel_buffer); ++ backend->panel_scale = output->device_scale; + } + + return head; +@@ -973,6 +972,7 @@ close_device (ply_renderer_backend_t *backend) + + static void + output_get_controller_info (ply_renderer_backend_t *backend, ++ drmModeConnector *connector, + ply_output_t *output) + { + int i; +@@ -982,16 +982,16 @@ output_get_controller_info (ply_renderer_backend_t *backend, + + output->possible_controllers = 0xffffffff; + +- for (i = 0; i < output->connector->count_encoders; i++) { ++ for (i = 0; i < connector->count_encoders; i++) { + encoder = drmModeGetEncoder (backend->device_fd, +- output->connector->encoders[i]); ++ connector->encoders[i]); + + if (encoder == NULL) + continue; + +- if (encoder->encoder_id == output->connector->encoder_id && encoder->crtc_id) { ++ if (encoder->encoder_id == connector->encoder_id && encoder->crtc_id) { + ply_trace ("Found already lit monitor on connector %u using controller %u", +- output->connector->connector_id, encoder->crtc_id); ++ connector->connector_id, encoder->crtc_id); + output->controller_id = encoder->crtc_id; + } + +@@ -1000,7 +1000,7 @@ output_get_controller_info (ply_renderer_backend_t *backend, + */ + output->possible_controllers &= encoder->possible_crtcs; + ply_trace ("connector %u encoder %u possible controllers 0x%08x/0x%08x", +- output->connector->connector_id, encoder->encoder_id, ++ connector->connector_id, encoder->encoder_id, + encoder->possible_crtcs, output->possible_controllers); + drmModeFreeEncoder (encoder); + } +@@ -1063,6 +1063,7 @@ get_preferred_mode (drmModeConnector *connector) + + static drmModeModeInfo * + get_active_mode (ply_renderer_backend_t *backend, ++ drmModeConnector *connector, + ply_output_t *output) + { + drmModeCrtc *controller; +@@ -1077,7 +1078,7 @@ get_active_mode (ply_renderer_backend_t *backend, + ply_trace ("Looking for connector mode index of active mode %dx%d", + controller->mode.hdisplay, controller->mode.vdisplay); + +- mode = find_matching_connector_mode (backend, output->connector, &controller->mode); ++ mode = find_matching_connector_mode (backend, connector, &controller->mode); + + drmModeFreeCrtc (controller); + +@@ -1225,16 +1226,14 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + } + +- outputs[found].connector = connector; +- +- output_get_controller_info (backend, &outputs[found]); +- ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); ++ output_get_controller_info (backend, connector, &outputs[found]); ++ ply_renderer_connector_get_rotation_and_tiled (backend, connector, &outputs[found]); + + if (!outputs[found].tiled && backend->use_preferred_mode) + mode = get_preferred_mode (connector); + + if (!mode && outputs[found].controller_id) +- mode = get_active_mode (backend, &outputs[found]); ++ mode = get_active_mode (backend, connector, &outputs[found]); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +@@ -1243,6 +1242,10 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + mode = &connector->modes[0]; + } + outputs[found].mode = *mode; ++ outputs[found].device_scale = ply_get_device_scale (mode->hdisplay, mode->vdisplay, ++ connector->mmWidth, connector->mmHeight); ++ outputs[found].connector_type = connector->connector_type; ++ drmModeFreeConnector (connector); + + found++; + } +@@ -1263,8 +1266,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (outputs[i].mode.hdisplay != outputs[j].mode.hdisplay || + outputs[i].mode.vdisplay != outputs[j].mode.vdisplay)) { + ply_trace ("connector %u uses same controller as %u and modes differ, unlinking controller", +- outputs[j].connector->connector_id, +- outputs[i].connector->connector_id); ++ outputs[j].connector_id, outputs[i].connector_id); + outputs[j].controller_id = 0; + } + } +@@ -1289,13 +1291,12 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + for (i = 0; i < outputs_len; i++) + ply_trace ("Using controller %u for connector %u", +- outputs[i].controller_id, outputs[i].connector->connector_id); ++ outputs[i].controller_id, outputs[i].connector_id); + + /* Step 4: + * Create heads for all valid outputs + */ + for (i = 0; i < outputs_len; i++) { +- drmModeConnector *connector = outputs[i].connector; + drmModeCrtc *controller; + ply_renderer_head_t *head; + uint32_t controller_id; +@@ -1303,10 +1304,8 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + int gamma_size; + + controller = drmModeGetCrtc (backend->device_fd, outputs[i].controller_id); +- if (!controller) { +- drmModeFreeConnector (connector); ++ if (!controller) + continue; +- } + + controller_id = controller->crtc_id; + console_buffer_id = controller->buffer_id; +@@ -1330,7 +1329,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + if (!ply_renderer_head_add_connector (head, &outputs[i])) + ply_trace ("couldn't connect monitor to existing head"); + } +- drmModeFreeConnector (connector); + } + + ply_hashtable_free (heads_by_controller_id); +-- +2.20.1 + +From 4ba6d4f4a238b506dc65e4e6516384a504a414af Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 08:34:58 +0100 +Subject: [PATCH 49/74] drm: Add get_output_info helper function + +Add a new get_output_info helper function, which fill a ply_output_t with +all info related to the connecter based on a connector-id. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 86 ++++++++++++++++-------------- + 1 file changed, 46 insertions(+), 40 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 07de083..da56fe4 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -124,6 +124,7 @@ typedef struct + int device_scale; + ply_pixel_buffer_rotation_t rotation; + bool tiled; ++ bool connected; + } ply_output_t; + + struct _ply_renderer_backend +@@ -1085,6 +1086,48 @@ get_active_mode (ply_renderer_backend_t *backend, + return mode; + } + ++static void ++get_output_info (ply_renderer_backend_t *backend, ++ uint32_t connector_id, ++ ply_output_t *output) ++{ ++ drmModeModeInfo *mode = NULL; ++ drmModeConnector *connector; ++ ++ memset (output, 0, sizeof(*output)); ++ output->connector_id = connector_id; ++ ++ connector = drmModeGetConnector (backend->device_fd, connector_id); ++ if (connector == NULL) ++ return; ++ ++ if (connector->connection != DRM_MODE_CONNECTED || ++ connector->count_modes <= 0) ++ goto out; ++ ++ output_get_controller_info (backend, connector, output); ++ ply_renderer_connector_get_rotation_and_tiled (backend, connector, output); ++ ++ if (!output->tiled && backend->use_preferred_mode) ++ mode = get_preferred_mode (connector); ++ ++ if (!mode && output->controller_id) ++ mode = get_active_mode (backend, connector, output); ++ ++ /* If we couldn't find the current active mode, fall back to the first available. */ ++ if (!mode) { ++ ply_trace ("falling back to first available mode"); ++ mode = &connector->modes[0]; ++ } ++ output->mode = *mode; ++ output->device_scale = ply_get_device_scale (mode->hdisplay, mode->vdisplay, ++ connector->mmWidth, connector->mmHeight); ++ output->connector_type = connector->connector_type; ++ output->connected = true; ++out: ++ drmModeFreeConnector (connector); ++} ++ + /* Some controllers can only drive some outputs, we want to find a combination + * where all (connected) outputs get a controller. To do this setup_outputs + * picks which output to assign a controller for first (trying all outputs), so +@@ -1208,46 +1251,9 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + */ + found = 0; + for (i = 0; i < backend->resources->count_connectors; i++) { +- drmModeModeInfo *mode = NULL; +- drmModeConnector *connector; +- +- connector = drmModeGetConnector (backend->device_fd, +- backend->resources->connectors[i]); +- if (connector == NULL) +- continue; +- +- if (connector->connection != DRM_MODE_CONNECTED) { +- drmModeFreeConnector (connector); +- continue; +- } +- +- if (connector->count_modes <= 0) { +- drmModeFreeConnector (connector); +- continue; +- } +- +- output_get_controller_info (backend, connector, &outputs[found]); +- ply_renderer_connector_get_rotation_and_tiled (backend, connector, &outputs[found]); +- +- if (!outputs[found].tiled && backend->use_preferred_mode) +- mode = get_preferred_mode (connector); +- +- if (!mode && outputs[found].controller_id) +- mode = get_active_mode (backend, connector, &outputs[found]); +- +- /* If we couldn't find the current active mode, fall back to the first available. +- */ +- if (!mode) { +- ply_trace ("falling back to first available mode"); +- mode = &connector->modes[0]; +- } +- outputs[found].mode = *mode; +- outputs[found].device_scale = ply_get_device_scale (mode->hdisplay, mode->vdisplay, +- connector->mmWidth, connector->mmHeight); +- outputs[found].connector_type = connector->connector_type; +- drmModeFreeConnector (connector); +- +- found++; ++ get_output_info (backend, backend->resources->connectors[i], &outputs[found]); ++ if (outputs[found].connected) ++ found++; + } + outputs_len = found; /* outputs now contains found valid entries */ + +-- +2.20.1 + +From d68fd78ae17c2574976b78b5f31afd58b965abe5 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 08:58:45 +0100 +Subject: [PATCH 50/74] drm: Store and keep all the outputs in the backend + +Put all outputs in the outputs array instead of just the connected ones +and store the outputs array and the controller_id-to-head hashtable in the +backend object instead of temporarily allocating them during enumeration. + +Also add new heads to the heads list and to the controller_id-to-head +hashtable in ply_renderer_head_new where this really belongs. This +allows nicely balancing these 2 with removing the head from the list +and hash_table in the ply_renderer_head_remove function which is added +in a follow-up commit. + +This is a preparation patch for adding support for hotplugging +monitors while plymouth is running. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 55 ++++++++++++++++-------------- + 1 file changed, 30 insertions(+), 25 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index da56fe4..a66cd67 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -138,10 +138,14 @@ struct _ply_renderer_backend + + ply_renderer_input_source_t input_source; + ply_list_t *heads; +- ply_hashtable_t *heads_by_connector_id; ++ ply_hashtable_t *heads_by_controller_id; + + ply_hashtable_t *output_buffers; + ++ ply_output_t *outputs; ++ int outputs_len; ++ int connected_count; ++ + int32_t dither_red; + int32_t dither_green; + int32_t dither_blue; +@@ -546,6 +550,10 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + backend->panel_scale = output->device_scale; + } + ++ ply_list_append_data (backend->heads, head); ++ ply_hashtable_insert (backend->heads_by_controller_id, ++ (void *) (intptr_t) output->controller_id, ++ head); + return head; + } + +@@ -808,6 +816,7 @@ create_backend (const char *device_name, + backend->requires_explicit_flushing = true; + backend->output_buffers = ply_hashtable_new (ply_hashtable_direct_hash, + ply_hashtable_direct_compare); ++ backend->heads_by_controller_id = ply_hashtable_new (NULL, NULL); + backend->use_preferred_mode = should_use_preferred_mode (); + + return backend; +@@ -827,9 +836,11 @@ destroy_backend (ply_renderer_backend_t *backend) + + free (backend->device_name); + ply_hashtable_free (backend->output_buffers); ++ ply_hashtable_free (backend->heads_by_controller_id); + + drmModeFreeResources (backend->resources); + ++ free (backend->outputs); + free (backend); + } + +@@ -1194,9 +1205,9 @@ setup_outputs (ply_renderer_backend_t *backend, + best_count = count_setup_controllers (outputs, outputs_len); + best_outputs = outputs; + +- for (i = 0; i < outputs_len && best_count < outputs_len; i++) { +- /* Already assigned? */ +- if (outputs[i].controller_id) ++ for (i = 0; i < outputs_len && best_count < backend->connected_count; i++) { ++ /* Not connected or already assigned? */ ++ if (!outputs[i].connected || outputs[i].controller_id) + continue; + + /* Assign controller for connector i */ +@@ -1238,24 +1249,21 @@ setup_outputs (ply_renderer_backend_t *backend, + static bool + create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { +- ply_hashtable_t *heads_by_controller_id; ++ int i, j, number_of_setup_outputs, outputs_len; + ply_output_t *outputs; +- int i, j, found, number_of_setup_outputs, outputs_len; +- +- heads_by_controller_id = ply_hashtable_new (NULL, NULL); + + outputs = calloc (backend->resources->count_connectors, sizeof(*outputs)); ++ outputs_len = backend->resources->count_connectors; + + /* Step 1: + * Build a list of connected outputs and get pre-configured controllers. + */ +- found = 0; +- for (i = 0; i < backend->resources->count_connectors; i++) { +- get_output_info (backend, backend->resources->connectors[i], &outputs[found]); +- if (outputs[found].connected) +- found++; ++ backend->connected_count = 0; ++ for (i = 0; i < outputs_len; i++) { ++ get_output_info (backend, backend->resources->connectors[i], &outputs[i]); ++ if (outputs[i].connected) ++ backend->connected_count++; + } +- outputs_len = found; /* outputs now contains found valid entries */ + + /* Step 2: + * Drop controllers for clones for which we've picked different modes. +@@ -1282,13 +1290,13 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + * Assign controllers to outputs without a controller + */ + number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); +- if (number_of_setup_outputs != outputs_len) { ++ if (number_of_setup_outputs != backend->connected_count) { + /* First try, try to assign controllers to outputs without one */ + ply_trace ("Some outputs don't have controllers, picking controllers"); + outputs = setup_outputs (backend, outputs, outputs_len); + number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); + } +- if (number_of_setup_outputs != outputs_len) { ++ if (number_of_setup_outputs != backend->connected_count) { + /* Second try, re-assing controller for all outputs */ + ply_trace ("Some outputs still don't have controllers, re-assigning controllers for all outputs"); + for (i = 0; i < outputs_len; i++) +@@ -1309,6 +1317,9 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + uint32_t console_buffer_id; + int gamma_size; + ++ if (!outputs[i].controller_id) ++ continue; ++ + controller = drmModeGetCrtc (backend->device_fd, outputs[i].controller_id); + if (!controller) + continue; +@@ -1318,27 +1329,21 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + gamma_size = controller->gamma_size; + drmModeFreeCrtc (controller); + +- head = ply_hashtable_lookup (heads_by_controller_id, ++ head = ply_hashtable_lookup (backend->heads_by_controller_id, + (void *) (intptr_t) controller_id); + + if (head == NULL) { + head = ply_renderer_head_new (backend, &outputs[i], + console_buffer_id, + gamma_size); +- +- ply_list_append_data (backend->heads, head); +- +- ply_hashtable_insert (heads_by_controller_id, +- (void *) (intptr_t) controller_id, +- head); + } else { + if (!ply_renderer_head_add_connector (head, &outputs[i])) + ply_trace ("couldn't connect monitor to existing head"); + } + } + +- ply_hashtable_free (heads_by_controller_id); +- free (outputs); ++ backend->outputs_len = outputs_len; ++ backend->outputs = outputs; + + return ply_list_get_length (backend->heads) > 0; + } +-- +2.20.1 + +From 7cb2eb14892a3468a2e249709e3f09b7b852d36e Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 09:21:05 +0100 +Subject: [PATCH 51/74] drm: Limit backend->resources lifetime to within + query_device + +We do not need / use backend->resources anywhere outside of the query_device +function and with the upcoming hotplug support we need to get a fresh set +of resources on change events, so limit the resources lifetime to +query_device. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index a66cd67..4e3c41a 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -838,8 +838,6 @@ destroy_backend (ply_renderer_backend_t *backend) + ply_hashtable_free (backend->output_buffers); + ply_hashtable_free (backend->heads_by_controller_id); + +- drmModeFreeResources (backend->resources); +- + free (backend->outputs); + free (backend); + } +@@ -1385,6 +1383,8 @@ has_32bpp_support (ply_renderer_backend_t *backend) + static bool + query_device (ply_renderer_backend_t *backend) + { ++ bool ret = true; ++ + assert (backend != NULL); + assert (backend->device_fd >= 0); + +@@ -1397,15 +1397,16 @@ query_device (ply_renderer_backend_t *backend) + + if (!create_heads_for_active_connectors (backend)) { + ply_trace ("Could not initialize heads"); +- return false; +- } +- +- if (!has_32bpp_support (backend)) { ++ ret = false; ++ } else if (!has_32bpp_support (backend)) { + ply_trace ("Device doesn't support 32bpp framebuffer"); +- return false; ++ ret = false; + } + +- return true; ++ drmModeFreeResources (backend->resources); ++ backend->resources = NULL; ++ ++ return ret; + } + + static bool +-- +2.20.1 + +From cd0479675e0c853896a860913917300818b8f69d Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 09:54:09 +0100 +Subject: [PATCH 52/74] drm: Allow calling ply_renderer_head_add_connector with + existing connector_id + +Allow calling ply_renderer_head_add_connector with an existing +connector_id and ignore this call. + +This allows calling create_heads_for_active_connectors multiple times, +only creating/adding heads for new connectors. + +This is a preparation patch for adding support for hotplugging +monitors while plymouth is running. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 4e3c41a..9998459 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -486,12 +486,15 @@ ply_renderer_head_add_connector (ply_renderer_head_t *head, + (int) output->mode.hdisplay, (int) output->mode.vdisplay, + (int) head->area.width, (int) head->area.height); + return false; +- } else { +- ply_trace ("Adding connector with id %d to %dx%d head", +- (int) output->connector_id, +- (int) head->area.width, (int) head->area.height); + } + ++ if (ply_array_contains_uint32_element (head->connector_ids, output->connector_id)) { ++ ply_trace ("Head already contains connector with id %d", output->connector_id); ++ return false; ++ } ++ ++ ply_trace ("Adding connector with id %d to %dx%d head", ++ (int) output->connector_id, (int) head->area.width, (int) head->area.height); + ply_array_add_uint32_element (head->connector_ids, output->connector_id); + + return true; +-- +2.20.1 + +From 7774bd5e5132ace8060f9edd91395eaa42535246 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 10:43:45 +0100 +Subject: [PATCH 53/74] drm: Allow calling create_heads_for_active_connectors + multiple times + +To support hotplugging monitors while plymouth is running, we must +rebuild our outputs list and create and/or remove heads as necessary +on every change event. + +This commit adds support for removing single outputs (rather then +tearing down the whole backend) and adds a new first step to +create_heads_for_active_connectors which goes over our view of the +outputs before the change and removes any changed outputs from the +heads they belong to, destroying the head if the last output/connector +is removed. + +On the first call backend->output_len is 0, so this new first step +is a no-op. + +On subsequent calls we can simply build the list as we do on the first +call, changed outputs will already be removed by the new first step +and for unchanged outputs we end up in ply_renderer_head_add_connector +which will ignore the already added connector. + +Note this drops the "couldn't connect monitor to existing head" message, +this is confusing when create_heads_for_active_connectors is called more +then once and is unnecessary as ply_renderer_head_add_connector already +logs a message on both failure exit paths. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 111 ++++++++++++++++++++++++++--- + 1 file changed, 101 insertions(+), 10 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 9998459..bb6ab77 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -734,6 +734,47 @@ ply_renderer_head_unmap (ply_renderer_backend_t *backend, + head->scan_out_buffer_id = 0; + } + ++static void ++ply_renderer_head_remove (ply_renderer_backend_t *backend, ++ ply_renderer_head_t *head) ++{ ++ if (head->scan_out_buffer_id) ++ ply_renderer_head_unmap (backend, head); ++ ++ ply_hashtable_remove (backend->heads_by_controller_id, ++ (void *) (intptr_t) head->controller_id); ++ ply_list_remove_data (backend->heads, head); ++ ply_renderer_head_free (head); ++} ++ ++static void ++ply_renderer_head_remove_connector (ply_renderer_backend_t *backend, ++ ply_renderer_head_t *head, ++ uint32_t connector_id) ++{ ++ int i, size = ply_array_get_size (head->connector_ids); ++ uint32_t *connector_ids; ++ ++ if (!ply_array_contains_uint32_element (head->connector_ids, connector_id)) { ++ ply_trace ("Head does not contain connector %u, cannot remove", connector_id); ++ return; ++ } ++ ++ if (size == 1) { ++ ply_renderer_head_remove (backend, head); ++ return; ++ } ++ ++ /* Empty the array and re-add all connectors except the one being removed */ ++ connector_ids = ply_array_steal_uint32_elements (head->connector_ids); ++ for (i = 0; i < size; i++) { ++ if (connector_ids[i] != connector_id) ++ ply_array_add_uint32_element (head->connector_ids, ++ connector_ids[i]); ++ } ++ free (connector_ids); ++} ++ + static void + flush_area (const char *src, + unsigned long src_row_stride, +@@ -1247,18 +1288,65 @@ setup_outputs (ply_renderer_backend_t *backend, + return (ply_output_t *)best_outputs; + } + ++static void ++remove_output (ply_renderer_backend_t *backend, ply_output_t *output) ++{ ++ ply_renderer_head_t *head; ++ ++ head = ply_hashtable_lookup (backend->heads_by_controller_id, ++ (void *) (intptr_t) output->controller_id); ++ if (head == NULL) { ++ ply_trace ("Could not find head for connector %u, controller %u, cannot remove", ++ output->connector_id, output->controller_id); ++ return; ++ } ++ ++ ply_renderer_head_remove_connector (backend, head, output->connector_id); ++} ++ ++/* Update our outputs array to match the hardware state and ++ * create and/or remove heads as necessary. ++ * Returns true if any heads were modified. ++ */ + static bool + create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { + int i, j, number_of_setup_outputs, outputs_len; +- ply_output_t *outputs; ++ ply_output_t output, *outputs; ++ bool changed = false; ++ ++ /* Step 1: ++ * Remove existing outputs from heads if they have changed. ++ */ ++ ply_trace ("Checking currently connected outputs for changes"); ++ for (i = 0; i < backend->outputs_len; i++) { ++ if (!backend->outputs[i].controller_id) ++ continue; ++ ++ get_output_info (backend, backend->outputs[i].connector_id, &output); ++ ++ if (memcmp(&backend->outputs[i], &output, sizeof(ply_output_t))) { ++ ply_trace ("Output for connector %u changed, removing", ++ backend->outputs[i].connector_id); ++ remove_output (backend, &backend->outputs[i]); ++ changed = true; ++ } ++ } ++ ++ /* Step 2: ++ * Now that we've removed changed connectors from the heads, we can ++ * simply rebuild the outputs array from scratch. For any unchanged ++ * outputs for which we already have a head, we will end up in ++ * ply_renderer_head_add_connector which will ignore the already ++ * added connector. ++ */ ++ ply_trace ("(Re)enumerating all outputs"); ++ free (backend->outputs); ++ backend->outputs = NULL; + + outputs = calloc (backend->resources->count_connectors, sizeof(*outputs)); + outputs_len = backend->resources->count_connectors; + +- /* Step 1: +- * Build a list of connected outputs and get pre-configured controllers. +- */ + backend->connected_count = 0; + for (i = 0; i < outputs_len; i++) { + get_output_info (backend, backend->resources->connectors[i], &outputs[i]); +@@ -1266,7 +1354,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + backend->connected_count++; + } + +- /* Step 2: ++ /* Step 3: + * Drop controllers for clones for which we've picked different modes. + */ + for (i = 0; i < outputs_len; i++) { +@@ -1287,7 +1375,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + } + +- /* Step 3: ++ /* Step 4: + * Assign controllers to outputs without a controller + */ + number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); +@@ -1308,7 +1396,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + ply_trace ("Using controller %u for connector %u", + outputs[i].controller_id, outputs[i].connector_id); + +- /* Step 4: ++ /* Step 5: + * Create heads for all valid outputs + */ + for (i = 0; i < outputs_len; i++) { +@@ -1337,16 +1425,19 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + head = ply_renderer_head_new (backend, &outputs[i], + console_buffer_id, + gamma_size); ++ changed = true; + } else { +- if (!ply_renderer_head_add_connector (head, &outputs[i])) +- ply_trace ("couldn't connect monitor to existing head"); ++ if (ply_renderer_head_add_connector (head, &outputs[i])) ++ changed = true; + } + } + + backend->outputs_len = outputs_len; + backend->outputs = outputs; + +- return ply_list_get_length (backend->heads) > 0; ++ ply_trace ("outputs %schanged\n", changed ? "" : "un"); ++ ++ return changed; + } + + static bool +-- +2.20.1 + +From 475a51d0576d0a488023f870c92f39eb8b0a21c1 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 14:50:34 +0100 +Subject: [PATCH 54/74] drm: Ensure heads are mapped before flushing them + +The drm plugin's map_to_device function will return true if mapping of +any of the heads has succeeded, potentially leaving some heads unmapped. + +This causes the "assert (buffer != NULL)" in begin_flush to trigger when +flushing the heads as head->scan_out_buffer_id is 0. + +It seems that even though this is a pre-existing problem we sofar have +not hit this, likely because ply_renderer_head_map in pratice never fails. + +However with the new monitor hotplug support, a head may be added after +map_to_device is called, triggering the assert. + +This commit fixes both the theoretical pre-existing problem and the +actual problem triggered by hotplug support by ensuring that the head +is mapped before flushing it. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index bb6ab77..0963a84 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -715,11 +715,6 @@ ply_renderer_head_map (ply_renderer_backend_t *backend, + return false; + } + +- /* FIXME: Maybe we should blit the fbcon contents instead of the (blank) +- * shadow buffer? +- */ +- ply_renderer_head_redraw (backend, head); +- + return true; + } + +@@ -1518,8 +1513,13 @@ map_to_device (ply_renderer_backend_t *backend) + head = (ply_renderer_head_t *) ply_list_node_get_data (node); + next_node = ply_list_get_next_node (backend->heads, node); + +- if (ply_renderer_head_map (backend, head)) ++ if (ply_renderer_head_map (backend, head)) { ++ /* FIXME: Maybe we should blit the fbcon contents instead of the (blank) ++ * shadow buffer? ++ */ ++ ply_renderer_head_redraw (backend, head); + head_mapped = true; ++ } + + node = next_node; + } +@@ -1605,6 +1605,12 @@ flush_head (ply_renderer_backend_t *backend, + updated_region = ply_pixel_buffer_get_updated_areas (pixel_buffer); + areas_to_flush = ply_region_get_sorted_rectangle_list (updated_region); + ++ /* A hotplugged head may not be mapped yet, map it now. */ ++ if (!head->scan_out_buffer_id) { ++ if (!ply_renderer_head_map (backend, head)) ++ return; ++ } ++ + map_address = begin_flush (backend, head->scan_out_buffer_id); + + node = ply_list_get_first_node (areas_to_flush); +-- +2.20.1 + +From 15ebdd6d5b0e98d7511815e2dfbe82d2ec86f493 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 09:41:42 +0100 +Subject: [PATCH 55/74] drm: Implement handle_change_event + +Now that we can call create_heads_for_active_connectors multiple times +we can implement handle_change_event. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 32 ++++++++++++++++++++++++++---- + 1 file changed, 28 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 0963a84..b190737 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -1304,7 +1304,7 @@ remove_output (ply_renderer_backend_t *backend, ply_output_t *output) + * Returns true if any heads were modified. + */ + static bool +-create_heads_for_active_connectors (ply_renderer_backend_t *backend) ++create_heads_for_active_connectors (ply_renderer_backend_t *backend, bool change) + { + int i, j, number_of_setup_outputs, outputs_len; + ply_output_t output, *outputs; +@@ -1380,8 +1380,12 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + outputs = setup_outputs (backend, outputs, outputs_len); + number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); + } +- if (number_of_setup_outputs != backend->connected_count) { +- /* Second try, re-assing controller for all outputs */ ++ /* Try again if necessary, re-assing controllers for all outputs. ++ * Note this is skipped when processing change events, as we don't ++ * want to mess with the controller assignment of already lit monitors ++ * in that case. ++ */ ++ if (!change && number_of_setup_outputs != backend->connected_count) { + ply_trace ("Some outputs still don't have controllers, re-assigning controllers for all outputs"); + for (i = 0; i < outputs_len; i++) + outputs[i].controller_id = 0; +@@ -1484,7 +1488,7 @@ query_device (ply_renderer_backend_t *backend) + return false; + } + +- if (!create_heads_for_active_connectors (backend)) { ++ if (!create_heads_for_active_connectors (backend, false)) { + ply_trace ("Could not initialize heads"); + ret = false; + } else if (!has_32bpp_support (backend)) { +@@ -1498,6 +1502,25 @@ query_device (ply_renderer_backend_t *backend) + return ret; + } + ++static bool ++handle_change_event (ply_renderer_backend_t *backend) ++{ ++ bool ret = true; ++ ++ backend->resources = drmModeGetResources (backend->device_fd); ++ if (backend->resources == NULL) { ++ ply_trace ("Could not get card resources for change event"); ++ return false; ++ } ++ ++ ret = create_heads_for_active_connectors (backend, true); ++ ++ drmModeFreeResources (backend->resources); ++ backend->resources = NULL; ++ ++ return ret; ++} ++ + static bool + map_to_device (ply_renderer_backend_t *backend) + { +@@ -1776,6 +1799,7 @@ ply_renderer_backend_get_interface (void) + .open_device = open_device, + .close_device = close_device, + .query_device = query_device, ++ .handle_change_event = handle_change_event, + .map_to_device = map_to_device, + .unmap_from_device = unmap_from_device, + .activate = activate, +-- +2.20.1 + +From c54870fc6663b010b2a3eb4a44df5dd41dd7011c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 17 Jan 2019 11:41:46 +0100 +Subject: [PATCH 56/74] drm: Reset mode on display-port connected outputs with + a bad link-status + +With Display-Port links, esp. with DP MST links we may need to reset the +mode if the kernel decides to retrain the link. + +If the kernel has retrained the link, the list of available modes may +have changed. If it changed and the mode we picked is no longer available +because of this, we treat this as an unplug + replug. + +Since we may want to set another mode, the kernel does not automatically +restore the previous mode. So in case the mode did not change we need to +do an explicit mode-set. + +This commits adds support for this, by: + +1) Adding a scan_out_buffer_needs_reset member to ply_renderer_head +2) Storing the link-status when going over the connector properties +3) Checking the link-status when adding a connector to a head and setting + the scan_out_buffer_needs_reset flag when the link-status is bad + +This commit also makes ply_renderer_head_map set +scan_out_buffer_needs_reset, avoiding an unnecessary round-trip to the +kernel in the first reset_scan_out_buffer_if_needed call. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index b190737..cb228f6 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -82,6 +82,7 @@ struct _ply_renderer_head + uint32_t controller_id; + uint32_t console_buffer_id; + uint32_t scan_out_buffer_id; ++ bool scan_out_buffer_needs_reset; + + int gamma_size; + uint16_t *gamma; +@@ -122,6 +123,7 @@ typedef struct + uint32_t controller_id; + uint32_t possible_controllers; + int device_scale; ++ int link_status; + ply_pixel_buffer_rotation_t rotation; + bool tiled; + bool connected; +@@ -473,6 +475,12 @@ ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *back + strcmp (prop->name, "TILE") == 0) + output->tiled = true; + ++ if ((prop->flags & DRM_MODE_PROP_ENUM) && ++ strcmp (prop->name, "link-status") == 0) { ++ output->link_status = connector->prop_values[i]; ++ ply_trace ("link-status %d", output->link_status); ++ } ++ + drmModeFreeProperty (prop); + } + } +@@ -481,6 +489,9 @@ static bool + ply_renderer_head_add_connector (ply_renderer_head_t *head, + ply_output_t *output) + { ++ if (output->link_status == DRM_MODE_LINK_STATUS_BAD) ++ head->scan_out_buffer_needs_reset = true; ++ + if (output->mode.hdisplay != head->area.width || output->mode.vdisplay != head->area.height) { + ply_trace ("Tried to add connector with resolution %dx%d to %dx%d head", + (int) output->mode.hdisplay, (int) output->mode.vdisplay, +@@ -715,6 +726,7 @@ ply_renderer_head_map (ply_renderer_backend_t *backend, + return false; + } + ++ head->scan_out_buffer_needs_reset = true; + return true; + } + +@@ -1589,6 +1601,13 @@ reset_scan_out_buffer_if_needed (ply_renderer_backend_t *backend, + if (!ply_terminal_is_active (backend->terminal)) + return false; + ++ if (head->scan_out_buffer_needs_reset) { ++ ply_renderer_head_set_scan_out_buffer (backend, head, ++ head->scan_out_buffer_id); ++ head->scan_out_buffer_needs_reset = false; ++ return true; ++ } ++ + controller = drmModeGetCrtc (backend->device_fd, head->controller_id); + + if (controller == NULL) +-- +2.20.1 + +From ccdb1d1fe1f99523d570b4e37cc14401c3891b9a Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 21 Jan 2019 15:41:37 +0100 +Subject: [PATCH 57/74] drm: Stop limiting preferred-mode picking to UEFI + systems + +When the code to pick the preferred-mode for outputs was first added, it +was limited to UEFI systems, since it was necessary there. + +It was not enabled everywhere right away because there were some worries +it might cause regressions. + +We've been shipping this for a while now and no regressions have been +reported, moreover with the new hotplug support we really want to pick the +preferred-mode rather then falling back to the first mode in the list. + +Therefor this commits removes the check for UEFI systems from +should_use_preferred_mode(). + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 17 ++--------------- + 1 file changed, 2 insertions(+), 15 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index cb228f6..0151f47 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -172,19 +172,9 @@ static bool reset_scan_out_buffer_if_needed (ply_renderer_backend_t *backend, + static void flush_head (ply_renderer_backend_t *backend, + ply_renderer_head_t *head); + +-static bool efi_enabled (void) +-{ +- return ply_directory_exists ("/sys/firmware/efi/efivars"); +-} +- + /* A small helper to determine if we should try to keep the current mode +- * or pick the best mode ourselves, we keep the current mode if: +- * 1. The user specified a specific mode using video= on the commandline +- * 2. The code to pick the best mode was added because with flicker-free boot +- * we can no longer rely on the kernel's fbcon code setting things up. +- * We should be able to do a better job then fbcon regardless, but for +- * now lets only use the new code on flicker-free systems until it is +- * more mature, this means only using it on UEFI systems. ++ * or pick the best mode ourselves, we keep the current mode only if the ++ * user specified a specific mode using video= on the commandline. + */ + static bool + should_use_preferred_mode (void) +@@ -194,9 +184,6 @@ should_use_preferred_mode (void) + if (ply_kernel_command_line_get_string_after_prefix ("video=")) + use_preferred_mode = false; + +- if (!efi_enabled ()) +- use_preferred_mode = false; +- + ply_trace ("should_use_preferred_mode: %d", use_preferred_mode); + + return use_preferred_mode; +-- +2.20.1 + +From f9e376797a91ad5fbc1f8e8e4aea778f4f22397c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 17 Jan 2019 14:52:41 +0100 +Subject: [PATCH 58/74] ply-device-manager: Consume all events in one go + +Drm devices generate a bunch of add and change events when the kms +driver loads, consume these all in one go. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-device-manager.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 8ceee10..028bf4a 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -371,7 +371,7 @@ create_devices_for_subsystem (ply_device_manager_t *manager, + return found_device; + } + +-static void ++static bool + on_udev_event (ply_device_manager_t *manager) + { + struct udev_device *device; +@@ -379,14 +379,14 @@ on_udev_event (ply_device_manager_t *manager) + + device = udev_monitor_receive_device (manager->udev_monitor); + if (device == NULL) +- return; ++ return false; + + action = udev_device_get_action (device); + + ply_trace ("got %s event for device %s", action, udev_device_get_sysname (device)); + + if (action == NULL) +- return; ++ return false; + + if (strcmp (action, "add") == 0) { + const char *subsystem; +@@ -406,6 +406,14 @@ on_udev_event (ply_device_manager_t *manager) + } + + udev_device_unref (device); ++ return true; ++} ++ ++static void ++on_udev_event_loop (ply_device_manager_t *manager) ++{ ++ /* Call on_udev_event until all events are consumed */ ++ while (on_udev_event (manager)) {} + } + + static void +@@ -435,7 +443,7 @@ watch_for_udev_events (ply_device_manager_t *manager) + fd, + PLY_EVENT_LOOP_FD_STATUS_HAS_DATA, + (ply_event_handler_t) +- on_udev_event, ++ on_udev_event_loop, + NULL, + manager); + } +-- +2.20.1 + +From e54f6a47318d82b4e4df024855bd76d888b89675 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 14 Jan 2019 11:47:21 +0100 +Subject: [PATCH 59/74] ply-device-manager: Handle change events for monitor + hotplugging + +Not only handle add but also change events for drm-subsys devices, +change events are generated when the hardware detect a new monitor +has been plugged in. + +This is esp. important with modern DisplayPort MST docking stations where +discovery / enumeration can take so long that the connected displays +are not enumerated by the kernel yet when the drm plugin first calls +drmModeGetResources(). Causing the monitors on these docks to sometimes +not show plymouth during boot (based on various timing parameters). + +Note that if during the add event drm-renderer could not be bound, this +commit tries to re-bind the DRM renderer on change events in case a +monitor got plugged into a GPU which did not have anything connected before. +This often happens with the second GPU in a laptop with a hybrid GPU setup. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1652279 +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-device-manager.c | 40 +++++++++++++++++++-- + 1 file changed, 38 insertions(+), 2 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 028bf4a..e2a9eae 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -51,6 +51,9 @@ static bool create_devices_for_terminal_and_renderer_type (ply_device_manager_t + const char *device_path, + ply_terminal_t *terminal, + ply_renderer_type_t renderer_type); ++static void create_pixel_displays_for_renderer (ply_device_manager_t *manager, ++ ply_renderer_t *renderer); ++ + struct _ply_device_manager + { + ply_device_manager_flags_t flags; +@@ -371,6 +374,39 @@ create_devices_for_subsystem (ply_device_manager_t *manager, + return found_device; + } + ++static void ++on_drm_udev_add_or_change (ply_device_manager_t *manager, ++ const char *action, ++ struct udev_device *device) ++{ ++ const char *device_path = udev_device_get_devnode (device); ++ ply_renderer_t *renderer; ++ bool changed; ++ ++ if (device_path == NULL) ++ return; ++ ++ renderer = ply_hashtable_lookup (manager->renderers, (void *) device_path); ++ if (renderer == NULL) { ++ /* We also try to create the renderer again on change events, ++ * renderer creation fails when no outputs are connected and ++ * this may have changed. ++ */ ++ create_devices_for_udev_device (manager, device); ++ return; ++ } ++ ++ /* Renderer exists, bail if this is not a change event */ ++ if (strcmp (action, "change")) ++ return; ++ ++ changed = ply_renderer_handle_change_event (renderer); ++ if (changed) { ++ free_displays_for_renderer (manager, renderer); ++ create_pixel_displays_for_renderer (manager, renderer); ++ } ++} ++ + static bool + on_udev_event (ply_device_manager_t *manager) + { +@@ -388,7 +424,7 @@ on_udev_event (ply_device_manager_t *manager) + if (action == NULL) + return false; + +- if (strcmp (action, "add") == 0) { ++ if (strcmp (action, "add") == 0 || strcmp (action, "change") == 0) { + const char *subsystem; + + subsystem = udev_device_get_subsystem (device); +@@ -397,7 +433,7 @@ on_udev_event (ply_device_manager_t *manager) + if (manager->local_console_managed && manager->local_console_is_text) + ply_trace ("ignoring since we're already using text splash for local console"); + else +- create_devices_for_udev_device (manager, device); ++ on_drm_udev_add_or_change (manager, action, device); + } else { + ply_trace ("ignoring since we only handle subsystem %s devices after timeout", subsystem); + } +-- +2.20.1 + +From 609781d8857b21a021545677b29af01ddba5df72 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 11:48:55 +0100 +Subject: [PATCH 60/74] ply-label: Make sure get_width_of_control / + get_height_of_control return correct values + +Users of ply_label may want to know the height / width of the text before +calling ply_label_show, so that they can e.g. vertically align it. + +This commit adds a size_needs_update bool to the label plugin and uses this +to check if executing size_control is necessary before returning the +width / height and also modifies the ply-label code to load the plugin +from its get_width / get_height methods. + +As an added advantage this will also skip unnecessary size_control calls +when calling ply_label_show on an already visible label. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-label.c | 6 ++-- + src/plugins/controls/label/plugin.c | 47 +++++++++++++++----------- + 2 files changed, 32 insertions(+), 21 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-label.c b/src/libply-splash-graphics/ply-label.c +index cfc8098..42d9dfb 100644 +--- a/src/libply-splash-graphics/ply-label.c ++++ b/src/libply-splash-graphics/ply-label.c +@@ -299,7 +299,8 @@ long + ply_label_get_width (ply_label_t *label) + { + if (label->plugin_interface == NULL) +- return 0; ++ if (!ply_label_load_plugin (label)) ++ return 0; + + return label->plugin_interface->get_width_of_control (label->control); + } +@@ -308,7 +309,8 @@ long + ply_label_get_height (ply_label_t *label) + { + if (label->plugin_interface == NULL) +- return 0; ++ if (!ply_label_load_plugin (label)) ++ return 0; + + return label->plugin_interface->get_height_of_control (label->control); + } +diff --git a/src/plugins/controls/label/plugin.c b/src/plugins/controls/label/plugin.c +index acba52b..b552981 100644 +--- a/src/plugins/controls/label/plugin.c ++++ b/src/plugins/controls/label/plugin.c +@@ -66,6 +66,7 @@ struct _ply_label_plugin_control + float alpha; + + uint32_t is_hidden : 1; ++ uint32_t needs_size_update : 1; + }; + + ply_label_plugin_interface_t *ply_label_plugin_get_interface (void); +@@ -93,18 +94,6 @@ destroy_control (ply_label_plugin_control_t *label) + free (label); + } + +-static long +-get_width_of_control (ply_label_plugin_control_t *label) +-{ +- return label->area.width; +-} +- +-static long +-get_height_of_control (ply_label_plugin_control_t *label) +-{ +- return label->area.height; +-} +- + static cairo_t * + get_cairo_context_for_pixel_buffer (ply_label_plugin_control_t *label, + ply_pixel_buffer_t *pixel_buffer) +@@ -175,15 +164,20 @@ init_pango_text_layout (cairo_t *cairo_context, + } + + static void +-size_control (ply_label_plugin_control_t *label) ++size_control (ply_label_plugin_control_t *label, bool force) + { + cairo_t *cairo_context; + PangoLayout *pango_layout; + int text_width; + int text_height; + +- if (label->is_hidden) ++ if (force && !label->needs_size_update) ++ return; /* Size already is up to date */ ++ ++ if (!force && label->is_hidden) { ++ label->needs_size_update = true; + return; ++ } + + cairo_context = get_cairo_context_for_sizing (label); + +@@ -195,6 +189,7 @@ size_control (ply_label_plugin_control_t *label) + + g_object_unref (pango_layout); + cairo_destroy (cairo_context); ++ label->needs_size_update = false; + } + + static void +@@ -261,7 +256,7 @@ set_alignment_for_control (ply_label_plugin_control_t *label, + if (label->alignment != pango_alignment) { + dirty_area = label->area; + label->alignment = pango_alignment; +- size_control (label); ++ size_control (label, false); + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, +@@ -278,7 +273,7 @@ set_width_for_control (ply_label_plugin_control_t *label, + if (label->width != width) { + dirty_area = label->area; + label->width = width; +- size_control (label); ++ size_control (label, false); + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, +@@ -296,7 +291,7 @@ set_text_for_control (ply_label_plugin_control_t *label, + dirty_area = label->area; + free (label->text); + label->text = strdup (text); +- size_control (label); ++ size_control (label, false); + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, +@@ -317,7 +312,7 @@ set_font_for_control (ply_label_plugin_control_t *label, + label->fontdesc = strdup (fontdesc); + else + label->fontdesc = NULL; +- size_control (label); ++ size_control (label, false); + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, +@@ -358,7 +353,7 @@ show_control (ply_label_plugin_control_t *label, + + label->is_hidden = false; + +- size_control (label); ++ size_control (label, true); + + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, +@@ -389,6 +384,20 @@ is_control_hidden (ply_label_plugin_control_t *label) + return label->is_hidden; + } + ++static long ++get_width_of_control (ply_label_plugin_control_t *label) ++{ ++ size_control (label, true); ++ return label->area.width; ++} ++ ++static long ++get_height_of_control (ply_label_plugin_control_t *label) ++{ ++ size_control (label, true); ++ return label->area.height; ++} ++ + ply_label_plugin_interface_t * + ply_label_plugin_get_interface (void) + { +-- +2.20.1 + +From d1f51423b520ca88978351104a21ab6935ebec1a Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 8 Feb 2019 18:04:01 +0100 +Subject: [PATCH 61/74] ply-progress-bar: Redraw on percentage update + +All the other plymouth widgets do a (re)draw when one of their +properties get updated. Make ply-progress-bar also do this, this allows +dropping the draw calls directly after the 2 current callers of +ply_progress_bar_set_percent_done. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-progress-bar.c | 1 + + src/plugins/splash/throbgress/plugin.c | 2 -- + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-progress-bar.c b/src/libply-splash-graphics/ply-progress-bar.c +index c0b5f9a..2ba3bf4 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.c ++++ b/src/libply-splash-graphics/ply-progress-bar.c +@@ -199,6 +199,7 @@ ply_progress_bar_set_percent_done (ply_progress_bar_t *progress_bar, + double percent_done) + { + progress_bar->percent_done = percent_done; ++ ply_progress_bar_draw (progress_bar); + } + + double +diff --git a/src/plugins/splash/throbgress/plugin.c b/src/plugins/splash/throbgress/plugin.c +index a1c8a90..4016d96 100644 +--- a/src/plugins/splash/throbgress/plugin.c ++++ b/src/plugins/splash/throbgress/plugin.c +@@ -736,7 +736,6 @@ on_boot_progress (ply_boot_splash_plugin_t *plugin, + next_node = ply_list_get_next_node (plugin->views, node); + + ply_progress_bar_set_percent_done (view->progress_bar, percent_done); +- ply_progress_bar_draw (view->progress_bar); + + node = next_node; + } +@@ -940,7 +939,6 @@ system_update (ply_boot_splash_plugin_t *plugin, + view = ply_list_node_get_data (node); + next_node = ply_list_get_next_node (plugin->views, node); + ply_progress_bar_set_percent_done (view->progress_bar, (double) progress / 100.f); +- ply_progress_bar_draw (view->progress_bar); + node = next_node; + } + } +-- +2.20.1 + +From ecfd84c6749d45f4e95bc99c3285cd7740b8eb36 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 8 Feb 2019 14:06:28 +0100 +Subject: [PATCH 62/74] ply-progress-bar: Allow choosing fore- and back-ground + color + +Allow choosing a fore- and back-ground color instead of hardcoding +the foreground to white and the background to transparent. + +This commit does not change behavior for existing users (tested with the +spinfinity theme). + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-progress-bar.c | 68 +++++++++---------- + src/libply-splash-graphics/ply-progress-bar.h | 4 ++ + 2 files changed, 36 insertions(+), 36 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-progress-bar.c b/src/libply-splash-graphics/ply-progress-bar.c +index 2ba3bf4..e5697b4 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.c ++++ b/src/libply-splash-graphics/ply-progress-bar.c +@@ -1,6 +1,6 @@ + /* progress_bar.c - boot progress_bar + * +- * Copyright (C) 2008 Red Hat, Inc. ++ * Copyright (C) 2008, 2019 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -19,6 +19,7 @@ + * + * Written by: Ray Strode + * Will Woods ++ * Hans de Goede + */ + #include "config.h" + +@@ -50,10 +51,6 @@ + #include "ply-image.h" + #include "ply-utils.h" + +-#ifndef FRAMES_PER_SECOND +-#define FRAMES_PER_SECOND 30 +-#endif +- + #ifndef BAR_HEIGHT + #define BAR_HEIGHT 16 + #endif +@@ -63,6 +60,8 @@ struct _ply_progress_bar + ply_pixel_display_t *display; + ply_rectangle_t area; + ++ uint32_t fg_color; ++ uint32_t bg_color; + double percent_done; + + uint32_t is_hidden : 1; +@@ -76,11 +75,9 @@ ply_progress_bar_new (void) + progress_bar = calloc (1, sizeof(ply_progress_bar_t)); + + progress_bar->is_hidden = true; ++ progress_bar->fg_color = 0xffffffff; /* Solid white */ ++ progress_bar->bg_color = 0x01000000; /* Transparent */ + progress_bar->percent_done = 0.0; +- progress_bar->area.x = 0; +- progress_bar->area.y = 0; +- progress_bar->area.width = 0; +- progress_bar->area.height = BAR_HEIGHT; + + return progress_bar; + } +@@ -93,21 +90,6 @@ ply_progress_bar_free (ply_progress_bar_t *progress_bar) + free (progress_bar); + } + +-static void +-ply_progress_bar_update_area (ply_progress_bar_t *progress_bar, +- long x, +- long y) +-{ +- unsigned long display_width; +- +- progress_bar->area.x = x; +- progress_bar->area.y = y; +- progress_bar->area.height = BAR_HEIGHT; +- +- display_width = ply_pixel_display_get_width (progress_bar->display); +- progress_bar->area.width = (long) (display_width * progress_bar->percent_done); +-} +- + void + ply_progress_bar_draw_area (ply_progress_bar_t *progress_bar, + ply_pixel_buffer_t *buffer, +@@ -116,20 +98,23 @@ ply_progress_bar_draw_area (ply_progress_bar_t *progress_bar, + unsigned long width, + unsigned long height) + { +- ply_rectangle_t paint_area; ++ ply_rectangle_t fill_area; + + if (progress_bar->is_hidden) + return; + +- paint_area.x = x; +- paint_area.y = y; +- paint_area.width = width; +- paint_area.height = height; ++ /* Note we ignore the passed in area / rectangle to update, ++ * since ply_pixel_display_draw_area() already pushes it to ++ * the buffer's clip_area list. ++ */ + +- ply_rectangle_intersect (&progress_bar->area, &paint_area, &paint_area); +- ply_pixel_buffer_fill_with_hex_color (buffer, +- &paint_area, +- 0xffffff); /* white */ ++ fill_area = progress_bar->area; ++ fill_area.width = progress_bar->area.width * progress_bar->percent_done; ++ ply_pixel_buffer_fill_with_hex_color (buffer, &fill_area, progress_bar->fg_color); ++ ++ fill_area.x = fill_area.x + fill_area.width; ++ fill_area.width = progress_bar->area.width - fill_area.width; ++ ply_pixel_buffer_fill_with_hex_color (buffer, &fill_area, progress_bar->bg_color); + } + + void +@@ -138,7 +123,6 @@ ply_progress_bar_draw (ply_progress_bar_t *progress_bar) + if (progress_bar->is_hidden) + return; + +- ply_progress_bar_update_area (progress_bar, progress_bar->area.x, progress_bar->area.y); + ply_pixel_display_draw_area (progress_bar->display, + progress_bar->area.x, + progress_bar->area.y, +@@ -155,8 +139,10 @@ ply_progress_bar_show (ply_progress_bar_t *progress_bar, + assert (progress_bar != NULL); + + progress_bar->display = display; +- +- ply_progress_bar_update_area (progress_bar, x, y); ++ progress_bar->area.x = x; ++ progress_bar->area.y = y; ++ progress_bar->area.height = BAR_HEIGHT; ++ progress_bar->area.width = ply_pixel_display_get_width (display); + + progress_bar->is_hidden = false; + ply_progress_bar_draw (progress_bar); +@@ -208,4 +194,14 @@ ply_progress_bar_get_percent_done (ply_progress_bar_t *progress_bar) + return progress_bar->percent_done; + } + ++void ++ply_progress_bar_set_colors (ply_progress_bar_t *progress_bar, ++ uint32_t fg_color, ++ uint32_t bg_color) ++{ ++ progress_bar->fg_color = fg_color; ++ progress_bar->bg_color = bg_color; ++ ply_progress_bar_draw (progress_bar); ++} ++ + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +diff --git a/src/libply-splash-graphics/ply-progress-bar.h b/src/libply-splash-graphics/ply-progress-bar.h +index 2fd80e0..1eab64c 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.h ++++ b/src/libply-splash-graphics/ply-progress-bar.h +@@ -57,6 +57,10 @@ long ply_progress_bar_get_height (ply_progress_bar_t *bar); + void ply_progress_bar_set_percent_done (ply_progress_bar_t *bar, + double percent_done); + double ply_progress_bar_get_percent_done (ply_progress_bar_t *bar); ++ ++void ply_progress_bar_set_colors (ply_progress_bar_t *bar, ++ uint32_t fg_color, ++ uint32_t bg_color); + #endif + + #endif /* PLY_PROGRESS_BAR_H */ +-- +2.20.1 + +From d89af7a2e2fcd7a6abb6f5b3c52f3d847aa337fb Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 8 Feb 2019 14:38:44 +0100 +Subject: [PATCH 63/74] ply-progress-bar: Allow caller to specify the widgets + width and height + +Before this commit ply_progress_bar_show would take coordinates for where +to show the progress-bar but the width and height were hardcodec. This +commit adds width and height parametes, so that the caller can specify +the width and height too. + +This commit does not change behavior for existing users (tested with the +spinfinity theme). + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-progress-bar.c | 12 +++++------- + src/libply-splash-graphics/ply-progress-bar.h | 4 +++- + src/plugins/splash/throbgress/plugin.c | 5 ++++- + 3 files changed, 12 insertions(+), 9 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-progress-bar.c b/src/libply-splash-graphics/ply-progress-bar.c +index e5697b4..369255a 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.c ++++ b/src/libply-splash-graphics/ply-progress-bar.c +@@ -51,10 +51,6 @@ + #include "ply-image.h" + #include "ply-utils.h" + +-#ifndef BAR_HEIGHT +-#define BAR_HEIGHT 16 +-#endif +- + struct _ply_progress_bar + { + ply_pixel_display_t *display; +@@ -134,15 +130,17 @@ void + ply_progress_bar_show (ply_progress_bar_t *progress_bar, + ply_pixel_display_t *display, + long x, +- long y) ++ long y, ++ unsigned long width, ++ unsigned long height) + { + assert (progress_bar != NULL); + + progress_bar->display = display; + progress_bar->area.x = x; + progress_bar->area.y = y; +- progress_bar->area.height = BAR_HEIGHT; +- progress_bar->area.width = ply_pixel_display_get_width (display); ++ progress_bar->area.height = height; ++ progress_bar->area.width = width; + + progress_bar->is_hidden = false; + ply_progress_bar_draw (progress_bar); +diff --git a/src/libply-splash-graphics/ply-progress-bar.h b/src/libply-splash-graphics/ply-progress-bar.h +index 1eab64c..55f5a48 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.h ++++ b/src/libply-splash-graphics/ply-progress-bar.h +@@ -40,7 +40,9 @@ void ply_progress_bar_free (ply_progress_bar_t *bar); + void ply_progress_bar_show (ply_progress_bar_t *bar, + ply_pixel_display_t *display, + long x, +- long y); ++ long y, ++ unsigned long width, ++ unsigned long height); + void ply_progress_bar_hide (ply_progress_bar_t *bar); + void ply_progress_bar_draw (ply_progress_bar_t *bar); + void ply_progress_bar_draw_area (ply_progress_bar_t *bar, +diff --git a/src/plugins/splash/throbgress/plugin.c b/src/plugins/splash/throbgress/plugin.c +index 4016d96..bbcf1b7 100644 +--- a/src/plugins/splash/throbgress/plugin.c ++++ b/src/plugins/splash/throbgress/plugin.c +@@ -316,7 +316,10 @@ view_start_animation (view_t *view) + view->logo_area.y + view->logo_area.height + height / 2); + ply_progress_bar_show (view->progress_bar, + view->display, +- 0, screen_height - ply_progress_bar_get_height (view->progress_bar)); ++ 0, ++ screen_height - BAR_HEIGHT, ++ screen_width, ++ BAR_HEIGHT); + view_redraw (view); + } + +-- +2.20.1 + +From 2a8df7f2fa2188956f17082d003615ef82e08d06 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 10:08:12 +0100 +Subject: [PATCH 64/74] two-step: Drop background_is_bgrt view_t member + +This is always set to true if plugin->background_bgrt_image is set, so +we can simply check for plugin->background_bgrt_image instead. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 53f19ee..d117d03 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -94,7 +94,6 @@ typedef struct + ply_rectangle_t box_area, lock_area, watermark_area, dialog_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; +- bool background_is_bgrt; + } view_t; + + struct _ply_boot_splash_plugin +@@ -380,7 +379,6 @@ view_set_bgrt_background (view_t *view) + ply_pixel_buffer_fill_with_buffer (view->background_buffer, bgrt_buffer, x_offset, y_offset); + ply_pixel_buffer_free (bgrt_buffer); + } +- view->background_is_bgrt = true; + } + + static bool +@@ -1085,7 +1083,7 @@ draw_background (view_t *view, + */ + if ((plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY || + plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) && +- view->background_is_bgrt && plugin->dialog_clears_firmware_background) ++ plugin->background_bgrt_image && plugin->dialog_clears_firmware_background) + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, 0); + else if (view->background_buffer != NULL) + ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); +-- +2.20.1 + +From 7ed8de39b15af168c4642eabeba925d2283b39af Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 10:34:56 +0100 +Subject: [PATCH 65/74] two-step: Add per mode settings + +We want theme files to be able to specify different settings for +different modes ("boot-up" / "shutdown" / "updates"). Specifically we +want themes to be able to specify a text for (offline) updates mode to +tell the user what is going on, see the mockups at: +https://wiki.gnome.org/Design/OS/BootProgress + +This commit adds support for per mode settings to the two-step plugins +and for starters moves the UseFirmwareBackground setting there, since we +don't want to show the firmware-background when showing the help-text. + +Follow-up commits will add support for specifying the (optional) per mode +text to show, note eventually we will need to make these texts translatable. + +Signed-off-by: Hans de Goede +--- + .../ply-boot-splash-plugin.h | 3 +- + src/plugins/splash/two-step/plugin.c | 45 ++++++++++++++++++- + themes/bgrt/bgrt.plymouth.in | 10 ++++- + 3 files changed, 55 insertions(+), 3 deletions(-) + +diff --git a/src/libply-splash-core/ply-boot-splash-plugin.h b/src/libply-splash-core/ply-boot-splash-plugin.h +index 710047e..de21319 100644 +--- a/src/libply-splash-core/ply-boot-splash-plugin.h ++++ b/src/libply-splash-core/ply-boot-splash-plugin.h +@@ -39,7 +39,8 @@ typedef enum + PLY_BOOT_SPLASH_MODE_BOOT_UP, + PLY_BOOT_SPLASH_MODE_SHUTDOWN, + PLY_BOOT_SPLASH_MODE_UPDATES, +- PLY_BOOT_SPLASH_MODE_INVALID ++ PLY_BOOT_SPLASH_MODE_INVALID, ++ PLY_BOOT_SPLASH_MODE_COUNT = PLY_BOOT_SPLASH_MODE_UPDATES + 1, + } ply_boot_splash_mode_t; + + typedef struct _ply_boot_splash_plugin ply_boot_splash_plugin_t; +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index d117d03..1a531cb 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -96,10 +96,16 @@ typedef struct + ply_pixel_buffer_t *background_buffer; + } view_t; + ++typedef struct ++{ ++ bool use_firmware_background; ++} mode_settings_t; ++ + struct _ply_boot_splash_plugin + { + ply_event_loop_t *loop; + ply_boot_splash_mode_t mode; ++ mode_settings_t mode_settings[PLY_BOOT_SPLASH_MODE_COUNT]; + ply_image_t *lock_image; + ply_image_t *box_image; + ply_image_t *corner_image; +@@ -137,6 +143,7 @@ struct _ply_boot_splash_plugin + uint32_t is_visible : 1; + uint32_t is_animating : 1; + uint32_t is_idle : 1; ++ uint32_t use_firmware_background : 1; + uint32_t dialog_clears_firmware_background : 1; + }; + +@@ -719,6 +726,22 @@ view_hide_prompt (view_t *view) + ply_label_hide (view->label); + } + ++static void ++load_mode_settings (ply_boot_splash_plugin_t *plugin, ++ ply_key_file_t *key_file, ++ const char *group_name, ++ ply_boot_splash_mode_t mode) ++{ ++ mode_settings_t *settings = &plugin->mode_settings[mode]; ++ ++ settings->use_firmware_background = ++ ply_key_file_get_bool (key_file, group_name, "UseFirmwareBackground"); ++ ++ /* If any mode uses the firmware background, then we need to load it */ ++ if (settings->use_firmware_background) ++ plugin->use_firmware_background = true; ++} ++ + static ply_boot_splash_plugin_t * + create_plugin (ply_key_file_t *key_file) + { +@@ -842,7 +865,11 @@ create_plugin (ply_key_file_t *key_file) + + free (color); + +- if (ply_key_file_get_bool (key_file, "two-step", "UseFirmwareBackground")) ++ load_mode_settings (plugin, key_file, "boot-up", PLY_BOOT_SPLASH_MODE_BOOT_UP); ++ load_mode_settings (plugin, key_file, "shutdown", PLY_BOOT_SPLASH_MODE_SHUTDOWN); ++ load_mode_settings (plugin, key_file, "updates", PLY_BOOT_SPLASH_MODE_UPDATES); ++ ++ if (plugin->use_firmware_background) + plugin->background_bgrt_image = ply_image_new ("/sys/firmware/acpi/bgrt/image"); + + plugin->dialog_clears_firmware_background = +@@ -1070,6 +1097,7 @@ draw_background (view_t *view, + { + ply_boot_splash_plugin_t *plugin; + ply_rectangle_t area; ++ bool use_black_background = false; + + plugin = view->plugin; + +@@ -1078,12 +1106,22 @@ draw_background (view_t *view, + area.width = width; + area.height = height; + ++ /* When using the firmware logo as background and we should not use ++ * it for this mode, use solid black as background. ++ */ ++ if (plugin->background_bgrt_image && ++ !plugin->mode_settings[plugin->mode].use_firmware_background) ++ use_black_background = true; ++ + /* When using the firmware logo as background, use solid black as + * background for dialogs. + */ + if ((plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY || + plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) && + plugin->background_bgrt_image && plugin->dialog_clears_firmware_background) ++ use_black_background = true; ++ ++ if (use_black_background) + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, 0); + else if (view->background_buffer != NULL) + ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); +@@ -1250,6 +1288,8 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + ply_buffer_t *boot_buffer, + ply_boot_splash_mode_t mode) + { ++ int i; ++ + assert (plugin != NULL); + + plugin->loop = loop; +@@ -1301,6 +1341,9 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + } else { + ply_image_free (plugin->background_bgrt_image); + plugin->background_bgrt_image = NULL; ++ for (i = 0; i < PLY_BOOT_SPLASH_MODE_COUNT; i++) ++ plugin->mode_settings[i].use_firmware_background = false; ++ plugin->use_firmware_background = false; + } + } + +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index 3cabbca..e93f91c 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -13,5 +13,13 @@ Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 +-UseFirmwareBackground=true + DialogClearsFirmwareBackground=true ++ ++[boot-up] ++UseFirmwareBackground=true ++ ++[shutdown] ++UseFirmwareBackground=true ++ ++[updates] ++UseFirmwareBackground=true +-- +2.20.1 + +From e1d0b852b620a0fd19167bd3f01b26e9cf2dc136 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 16:58:58 +0100 +Subject: [PATCH 66/74] two-step: Add support for specifying a title and + sub-title in the theme file + +The idea behind this is to allow a splash-screen containing something like this: + + Installing updates... + + Do not turn off your computer + + /-----------------------\ + |Animation / progres-bar| + \-----------------------/ + +As can be seen in the mockups here: +https://wiki.gnome.org/Design/OS/BootProgress + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 92 ++++++++++++++++++++++++++++ + 1 file changed, 92 insertions(+) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 1a531cb..2051240 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -91,6 +91,8 @@ typedef struct + ply_throbber_t *throbber; + ply_label_t *label; + ply_label_t *message_label; ++ ply_label_t *title_label; ++ ply_label_t *subtitle_label; + ply_rectangle_t box_area, lock_area, watermark_area, dialog_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; +@@ -99,6 +101,8 @@ typedef struct + typedef struct + { + bool use_firmware_background; ++ char *title; ++ char *subtitle; + } mode_settings_t; + + struct _ply_boot_splash_plugin +@@ -106,6 +110,7 @@ struct _ply_boot_splash_plugin + ply_event_loop_t *loop; + ply_boot_splash_mode_t mode; + mode_settings_t mode_settings[PLY_BOOT_SPLASH_MODE_COUNT]; ++ char *font; + ply_image_t *lock_image; + ply_image_t *box_image; + ply_image_t *corner_image; +@@ -120,6 +125,10 @@ struct _ply_boot_splash_plugin + double dialog_horizontal_alignment; + double dialog_vertical_alignment; + ++ double title_horizontal_alignment; ++ double title_vertical_alignment; ++ char *title_font; ++ + double watermark_horizontal_alignment; + double watermark_vertical_alignment; + +@@ -179,7 +188,16 @@ view_new (ply_boot_splash_plugin_t *plugin, + plugin->transition_duration); + + view->label = ply_label_new (); ++ ply_label_set_font (view->label, plugin->font); ++ + view->message_label = ply_label_new (); ++ ply_label_set_font (view->message_label, plugin->font); ++ ++ view->title_label = ply_label_new (); ++ ply_label_set_font (view->title_label, plugin->title_font); ++ ++ view->subtitle_label = ply_label_new (); ++ ply_label_set_font (view->subtitle_label, plugin->font); + + return view; + } +@@ -193,6 +211,8 @@ view_free (view_t *view) + ply_throbber_free (view->throbber); + ply_label_free (view->label); + ply_label_free (view->message_label); ++ ply_label_free (view->title_label); ++ ply_label_free (view->subtitle_label); + + if (view->background_buffer != NULL) + ply_pixel_buffer_free (view->background_buffer); +@@ -391,6 +411,7 @@ view_set_bgrt_background (view_t *view) + static bool + view_load (view_t *view) + { ++ unsigned long x, y, width, title_height = 0, subtitle_height = 0; + unsigned long screen_width, screen_height, screen_scale; + ply_boot_splash_plugin_t *plugin; + ply_pixel_buffer_t *buffer; +@@ -466,6 +487,42 @@ view_load (view_t *view) + ply_trace ("this theme has no throbber\n"); + } + ++ if (plugin->mode_settings[plugin->mode].title) { ++ ply_label_set_text (view->title_label, ++ plugin->mode_settings[plugin->mode].title); ++ title_height = ply_label_get_height (view->title_label); ++ } else { ++ ply_label_hide (view->title_label); ++ } ++ ++ if (plugin->mode_settings[plugin->mode].subtitle) { ++ ply_label_set_text (view->subtitle_label, ++ plugin->mode_settings[plugin->mode].subtitle); ++ subtitle_height = ply_label_get_height (view->subtitle_label); ++ } else { ++ ply_label_hide (view->subtitle_label); ++ } ++ ++ y = (screen_height - title_height - 2 * subtitle_height) * plugin->title_vertical_alignment; ++ ++ if (plugin->mode_settings[plugin->mode].title) { ++ width = ply_label_get_width (view->title_label); ++ x = (screen_width - width) * plugin->title_horizontal_alignment; ++ ply_trace ("using %ldx%ld title centered at %ldx%ld for %ldx%ld screen", ++ width, title_height, x, y, screen_width, screen_height); ++ ply_label_show (view->title_label, view->display, x, y); ++ /* Use subtitle_height pixels seperation between title and subtitle */ ++ y += title_height + subtitle_height; ++ } ++ ++ if (plugin->mode_settings[plugin->mode].subtitle) { ++ width = ply_label_get_width (view->subtitle_label); ++ x = (screen_width - width) * plugin->title_horizontal_alignment; ++ ply_trace ("using %ldx%ld subtitle centered at %ldx%ld for %ldx%ld screen", ++ width, subtitle_height, x, y, screen_width, screen_height); ++ ply_label_show (view->subtitle_label, view->display, x, y); ++ } ++ + return true; + } + +@@ -740,6 +797,9 @@ load_mode_settings (ply_boot_splash_plugin_t *plugin, + /* If any mode uses the firmware background, then we need to load it */ + if (settings->use_firmware_background) + plugin->use_firmware_background = true; ++ ++ settings->title = ply_key_file_get_value (key_file, group_name, "Title"); ++ settings->subtitle = ply_key_file_get_value (key_file, group_name, "SubTitle"); + } + + static ply_boot_splash_plugin_t * +@@ -786,6 +846,9 @@ create_plugin (ply_key_file_t *key_file) + + plugin->animation_dir = image_dir; + ++ plugin->font = ply_key_file_get_value (key_file, "two-step", "Font"); ++ plugin->title_font = ply_key_file_get_value (key_file, "two-step", "TitleFont"); ++ + alignment = ply_key_file_get_value (key_file, "two-step", "HorizontalAlignment"); + if (alignment != NULL) + plugin->animation_horizontal_alignment = ply_strtod (alignment); +@@ -828,6 +891,20 @@ create_plugin (ply_key_file_t *key_file) + plugin->dialog_vertical_alignment = .5; + free (alignment); + ++ alignment = ply_key_file_get_value (key_file, "two-step", "TitleHorizontalAlignment"); ++ if (alignment != NULL) ++ plugin->title_horizontal_alignment = ply_strtod (alignment); ++ else ++ plugin->title_horizontal_alignment = .5; ++ free (alignment); ++ ++ alignment = ply_key_file_get_value (key_file, "two-step", "TitleVerticalAlignment"); ++ if (alignment != NULL) ++ plugin->title_vertical_alignment = ply_strtod (alignment); ++ else ++ plugin->title_vertical_alignment = .5; ++ free (alignment); ++ + plugin->transition = PLY_PROGRESS_ANIMATION_TRANSITION_NONE; + transition = ply_key_file_get_value (key_file, "two-step", "Transition"); + if (transition != NULL) { +@@ -926,6 +1003,8 @@ free_views (ply_boot_splash_plugin_t *plugin) + static void + destroy_plugin (ply_boot_splash_plugin_t *plugin) + { ++ int i; ++ + if (plugin == NULL) + return; + +@@ -960,6 +1039,13 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin) + if (plugin->watermark_image != NULL) + ply_image_free (plugin->watermark_image); + ++ for (i = 0; i < PLY_BOOT_SPLASH_MODE_COUNT; i++) { ++ free (plugin->mode_settings[i].title); ++ free (plugin->mode_settings[i].subtitle); ++ } ++ ++ free (plugin->font); ++ free (plugin->title_font); + free (plugin->animation_dir); + free_views (plugin); + free (plugin); +@@ -1225,6 +1311,12 @@ on_draw (view_t *view, + + ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, &image_area, ply_image_get_data (plugin->header_image)); + } ++ ply_label_draw_area (view->title_label, ++ pixel_buffer, ++ x, y, width, height); ++ ply_label_draw_area (view->subtitle_label, ++ pixel_buffer, ++ x, y, width, height); + } + ply_label_draw_area (view->message_label, + pixel_buffer, +-- +2.20.1 + +From 91922a0194e7422113d643ad8f11ffbfb0f15040 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 7 Feb 2019 17:44:32 +0100 +Subject: [PATCH 67/74] two-step: Add MessageBelowAnimation option + +So far we've always printed messages coming from "plymouth display-message" +in the top left corner. In some cases the theme may want to instead display +the messages below the animation (where they are more prominently visible). + +My first attempt to support this added MessageHorizontal/VerticalAlignment +options. That did not work since we want a more or less fixed distance +between the animation bottom and the message and with screen-heights varying +from 480 to 1200 that is not possible using alignment options to place both +the animation and the message. + +Note the default is unchanged and still is the top left corner. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 46 ++++++++++++++++++++-------- + 1 file changed, 33 insertions(+), 13 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 2051240..c6f99ed 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -96,6 +96,7 @@ typedef struct + ply_rectangle_t box_area, lock_area, watermark_area, dialog_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; ++ int animation_bottom; + } view_t; + + typedef struct +@@ -154,6 +155,7 @@ struct _ply_boot_splash_plugin + uint32_t is_idle : 1; + uint32_t use_firmware_background : 1; + uint32_t dialog_clears_firmware_background : 1; ++ uint32_t message_below_animation : 1; + }; + + ply_boot_splash_plugin_interface_t *ply_boot_splash_plugin_get_interface (void); +@@ -647,6 +649,7 @@ view_start_end_animation (view_t *view, + ply_animation_start (view->end_animation, + view->display, + trigger, x, y); ++ view->animation_bottom = y + height; + } + + static void +@@ -689,6 +692,7 @@ view_start_progress_animation (view_t *view) + plugin->loop, + view->display, x, y); + ply_pixel_display_draw_area (view->display, x, y, width, height); ++ view->animation_bottom = y + height; + } + + /* We don't really know how long shutdown will so +@@ -706,6 +710,7 @@ view_start_progress_animation (view_t *view) + view->display, x, y); + + ply_pixel_display_draw_area (view->display, x, y, width, height); ++ view->animation_bottom = y + height; + } + } + +@@ -952,6 +957,9 @@ create_plugin (ply_key_file_t *key_file) + plugin->dialog_clears_firmware_background = + ply_key_file_get_bool (key_file, "two-step", "DialogClearsFirmwareBackground"); + ++ plugin->message_below_animation = ++ ply_key_file_get_bool (key_file, "two-step", "MessageBelowAnimation"); ++ + progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction"); + + if (progress_function != NULL) { +@@ -1668,6 +1676,29 @@ hide_prompt (ply_boot_splash_plugin_t *plugin) + } + + ++static void ++view_show_message (view_t *view, ++ const char *message) ++{ ++ ply_boot_splash_plugin_t *plugin = view->plugin; ++ int x, y, width, height; ++ ++ ply_label_set_text (view->message_label, message); ++ width = ply_label_get_width (view->message_label); ++ height = ply_label_get_height (view->message_label); ++ ++ if (plugin->message_below_animation) { ++ x = (ply_pixel_display_get_width (view->display) - width) * 0.5; ++ y = view->animation_bottom + 10; ++ } else { ++ x = 10; ++ y = 10; ++ } ++ ++ ply_label_show (view->message_label, view->display, x, y); ++ ply_pixel_display_draw_area (view->display, x, y, width, height); ++} ++ + static void + show_message (ply_boot_splash_plugin_t *plugin, + const char *message) +@@ -1676,19 +1707,8 @@ show_message (ply_boot_splash_plugin_t *plugin, + ply_list_node_t *node; + node = ply_list_get_first_node (plugin->views); + while (node != NULL) { +- ply_list_node_t *next_node; +- view_t *view; +- +- view = ply_list_node_get_data (node); +- next_node = ply_list_get_next_node (plugin->views, node); +- +- ply_label_set_text (view->message_label, message); +- ply_label_show (view->message_label, view->display, 10, 10); +- +- ply_pixel_display_draw_area (view->display, 10, 10, +- ply_label_get_width (view->message_label), +- ply_label_get_height (view->message_label)); +- node = next_node; ++ view_show_message (ply_list_node_get_data (node), message); ++ node = ply_list_get_next_node (plugin->views, node); + } + } + +-- +2.20.1 + +From cf9f40718510ce49b75b7d34c7db3d341f0b62b1 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 8 Feb 2019 22:41:15 +0100 +Subject: [PATCH 68/74] two-step: Add progress-bar support + +Some themes may want to use a progress-bar instead of the throbber for +some modes. This commit adds a new per mode UseProgressBar setting allowing +this. + +One case where this will be used is the offline updates splash-screen +mockup from: https://wiki.gnome.org/Design/OS/BootProgress + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 66 +++++++++++++++++++++++++++- + 1 file changed, 64 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index c6f99ed..32e4294 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -57,6 +57,7 @@ + #include "ply-animation.h" + #include "ply-progress-animation.h" + #include "ply-throbber.h" ++#include "ply-progress-bar.h" + + #include + +@@ -68,6 +69,9 @@ + #define SHOW_ANIMATION_PERCENT 0.9 + #endif + ++#define PROGRESS_BAR_WIDTH 400 ++#define PROGRESS_BAR_HEIGHT 5 ++ + typedef enum + { + PLY_BOOT_SPLASH_DISPLAY_NORMAL, +@@ -88,6 +92,7 @@ typedef struct + ply_entry_t *entry; + ply_animation_t *end_animation; + ply_progress_animation_t *progress_animation; ++ ply_progress_bar_t *progress_bar; + ply_throbber_t *throbber; + ply_label_t *label; + ply_label_t *message_label; +@@ -101,6 +106,7 @@ typedef struct + + typedef struct + { ++ bool use_progress_bar; + bool use_firmware_background; + char *title; + char *subtitle; +@@ -144,6 +150,9 @@ struct _ply_boot_splash_plugin + uint32_t background_end_color; + int background_bgrt_raw_width; + ++ uint32_t progress_bar_bg_color; ++ uint32_t progress_bar_fg_color; ++ + progress_function_t progress_function; + + ply_trigger_t *idle_trigger; +@@ -156,6 +165,7 @@ struct _ply_boot_splash_plugin + uint32_t use_firmware_background : 1; + uint32_t dialog_clears_firmware_background : 1; + uint32_t message_below_animation : 1; ++ uint32_t progress_bar_show_percent_complete : 1; + }; + + ply_boot_splash_plugin_interface_t *ply_boot_splash_plugin_get_interface (void); +@@ -182,6 +192,10 @@ view_new (ply_boot_splash_plugin_t *plugin, + view->entry = ply_entry_new (plugin->animation_dir); + view->progress_animation = ply_progress_animation_new (plugin->animation_dir, + "progress-"); ++ view->progress_bar = ply_progress_bar_new (); ++ ply_progress_bar_set_colors (view->progress_bar, ++ plugin->progress_bar_fg_color, ++ plugin->progress_bar_bg_color); + + view->throbber = ply_throbber_new (plugin->animation_dir, + "throbber-"); +@@ -210,6 +224,7 @@ view_free (view_t *view) + ply_entry_free (view->entry); + ply_animation_free (view->end_animation); + ply_progress_animation_free (view->progress_animation); ++ ply_progress_bar_free (view->progress_bar); + ply_throbber_free (view->throbber); + ply_label_free (view->label); + ply_label_free (view->message_label); +@@ -683,7 +698,16 @@ view_start_progress_animation (view_t *view) + ply_pixel_display_draw_area (view->display, 0, 0, + screen_width, screen_height); + +- if (view->throbber != NULL) { ++ if (plugin->mode_settings[plugin->mode].use_progress_bar) { ++ width = PROGRESS_BAR_WIDTH; ++ height = PROGRESS_BAR_HEIGHT; ++ x = plugin->animation_horizontal_alignment * screen_width - width / 2.0; ++ y = plugin->animation_vertical_alignment * screen_height - height / 2.0; ++ ply_progress_bar_show (view->progress_bar, view->display, ++ x, y, width, height); ++ ply_pixel_display_draw_area (view->display, x, y, width, height); ++ view->animation_bottom = y + height; ++ } else if (view->throbber != NULL) { + width = ply_throbber_get_width (view->throbber); + height = ply_throbber_get_height (view->throbber); + x = plugin->animation_horizontal_alignment * screen_width - width / 2.0; +@@ -796,6 +820,8 @@ load_mode_settings (ply_boot_splash_plugin_t *plugin, + { + mode_settings_t *settings = &plugin->mode_settings[mode]; + ++ settings->use_progress_bar = ++ ply_key_file_get_bool (key_file, group_name, "UseProgressBar"); + settings->use_firmware_background = + ply_key_file_get_bool (key_file, group_name, "UseFirmwareBackground"); + +@@ -947,6 +973,26 @@ create_plugin (ply_key_file_t *key_file) + + free (color); + ++ color = ply_key_file_get_value (key_file, "two-step", "ProgressBarBackgroundColor"); ++ ++ if (color != NULL) ++ plugin->progress_bar_bg_color = strtol (color, NULL, 0); ++ else ++ plugin->progress_bar_bg_color = 0xffffff; /* white */ ++ ++ free (color); ++ ++ color = ply_key_file_get_value (key_file, "two-step", "ProgressBarForegroundColor"); ++ ++ if (color != NULL) ++ plugin->progress_bar_fg_color = strtol (color, NULL, 0); ++ else ++ plugin->progress_bar_fg_color = 0x000000; /* black */ ++ ++ free (color); ++ ++ plugin->progress_bar_show_percent_complete = ply_key_file_get_bool (key_file, "two-step", "ProgressBarShowPercentComplete"); ++ + load_mode_settings (plugin, key_file, "boot-up", PLY_BOOT_SPLASH_MODE_BOOT_UP); + load_mode_settings (plugin, key_file, "shutdown", PLY_BOOT_SPLASH_MODE_SHUTDOWN); + load_mode_settings (plugin, key_file, "updates", PLY_BOOT_SPLASH_MODE_UPDATES); +@@ -1063,6 +1109,12 @@ static void + start_end_animation (ply_boot_splash_plugin_t *plugin, + ply_trigger_t *trigger) + { ++ if (plugin->mode_settings[plugin->mode].use_progress_bar) { ++ /* Leave the progress-bar at 100% rather then showing the end animation */ ++ ply_trigger_pull (trigger, NULL); ++ return; ++ } ++ + ply_trace ("starting end animation"); + + ply_list_node_t *node; +@@ -1276,7 +1328,10 @@ on_draw (view_t *view, + &view->lock_area, + lock_data); + } else { +- if (view->throbber != NULL && ++ if (plugin->mode_settings[plugin->mode].use_progress_bar) ++ ply_progress_bar_draw_area (view->progress_bar, pixel_buffer, ++ x, y, width, height); ++ else if (view->throbber != NULL && + !ply_throbber_is_stopped (view->throbber)) + ply_throbber_draw_area (view->throbber, pixel_buffer, + x, y, width, height); +@@ -1717,6 +1772,7 @@ system_update (ply_boot_splash_plugin_t *plugin, + int progress) + { + ply_list_node_t *node; ++ char buf[64]; + + if (plugin->mode != PLY_BOOT_SPLASH_MODE_UPDATES) + return; +@@ -1730,6 +1786,12 @@ system_update (ply_boot_splash_plugin_t *plugin, + next_node = ply_list_get_next_node (plugin->views, node); + if (view->progress_animation != NULL) + ply_progress_animation_set_percent_done (view->progress_animation, (double) progress / 100.f); ++ ply_progress_bar_set_percent_done (view->progress_bar, (double) progress / 100.f); ++ if (!ply_progress_bar_is_hidden (view->progress_bar) && ++ plugin->progress_bar_show_percent_complete) { ++ snprintf (buf, sizeof(buf), "%d%% complete", progress); ++ view_show_message (view, buf); ++ } + node = next_node; + } + } +-- +2.20.1 + +From e094733cf7e6bd0cf7e5c06458674be2d65aa52c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 12 Feb 2019 15:15:26 +0100 +Subject: [PATCH 69/74] two-step: Add a per mode setting to suppress messages + +The messages passed to plymouth display-message can be quite verbose, esp. +in the offline-updates case. Combined with some themes now showing their +own prominent title message explaining what is going on this leads to +undesirable repetitive text being shown. + +This commit adds support for a per mode SuppressMessages setting which +allows themes to suppress messages passed to plymouth display-message +on a per mode basis. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 32e4294..9b6abba 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -106,6 +106,7 @@ typedef struct + + typedef struct + { ++ bool suppress_messages; + bool use_progress_bar; + bool use_firmware_background; + char *title; +@@ -820,6 +821,8 @@ load_mode_settings (ply_boot_splash_plugin_t *plugin, + { + mode_settings_t *settings = &plugin->mode_settings[mode]; + ++ settings->suppress_messages = ++ ply_key_file_get_bool (key_file, group_name, "SuppressMessages"); + settings->use_progress_bar = + ply_key_file_get_bool (key_file, group_name, "UseProgressBar"); + settings->use_firmware_background = +@@ -1758,6 +1761,10 @@ static void + show_message (ply_boot_splash_plugin_t *plugin, + const char *message) + { ++ if (plugin->mode_settings[plugin->mode].suppress_messages) { ++ ply_trace ("Suppressing message '%s'", message); ++ return; ++ } + ply_trace ("Showing message '%s'", message); + ply_list_node_t *node; + node = ply_list_get_first_node (plugin->views); +-- +2.20.1 + +From 542b6234a2d07daa21105255b4cb995379bc8a7c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 17:04:04 +0100 +Subject: [PATCH 70/74] themes: Update spinner and bgrt theme offline updates + mode + +Make the spinner and bgrt offline updates mode match the GNOME design +mockups from: https://wiki.gnome.org/Design/OS/BootProgress + +Signed-off-by: Hans de Goede +--- + themes/bgrt/bgrt.plymouth.in | 17 +++++++++++++++-- + themes/spinner/spinner.plymouth.in | 18 +++++++++++++++++- + 2 files changed, 32 insertions(+), 3 deletions(-) + +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index e93f91c..b0899d7 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -4,16 +4,26 @@ Description=Jimmac's spinner theme using the ACPI BGRT graphics as background + ModuleName=two-step + + [two-step] ++Font=Cantarell 12 ++TitleFont=Cantarell Light 30 + ImageDir=@PLYMOUTH_THEME_PATH@/spinner ++DialogHorizontalAlignment=.5 ++DialogVerticalAlignment=.382 ++TitleHorizontalAlignment=.5 ++TitleVerticalAlignment=.382 + HorizontalAlignment=.5 +-VerticalAlignment=.75 ++VerticalAlignment=.7 + WatermarkHorizontalAlignment=.5 + WatermarkVerticalAlignment=.96 + Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 ++ProgressBarBackgroundColor=0x606060 ++ProgressBarForegroundColor=0xffffff ++ProgressBarShowPercentComplete=true + DialogClearsFirmwareBackground=true ++MessageBelowAnimation=true + + [boot-up] + UseFirmwareBackground=true +@@ -22,4 +32,7 @@ UseFirmwareBackground=true + UseFirmwareBackground=true + + [updates] +-UseFirmwareBackground=true ++SuppressMessages=true ++UseProgressBar=true ++Title=Installing Updates... ++SubTitle=Do not turn off your computer +diff --git a/themes/spinner/spinner.plymouth.in b/themes/spinner/spinner.plymouth.in +index 6ba3f42..02e7eb7 100644 +--- a/themes/spinner/spinner.plymouth.in ++++ b/themes/spinner/spinner.plymouth.in +@@ -4,12 +4,28 @@ Description=A theme designed by jimmac that features a simple spinner. + ModuleName=two-step + + [two-step] ++Font=Cantarell 12 ++TitleFont=Cantarell Light 30 + ImageDir=@PLYMOUTH_THEME_PATH@/spinner ++DialogHorizontalAlignment=.5 ++DialogVerticalAlignment=.382 ++TitleHorizontalAlignment=.5 ++TitleVerticalAlignment=.382 + HorizontalAlignment=.5 +-VerticalAlignment=.75 ++VerticalAlignment=.7 + WatermarkHorizontalAlignment=.5 + WatermarkVerticalAlignment=.96 + Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 ++ProgressBarBackgroundColor=0x606060 ++ProgressBarForegroundColor=0xffffff ++ProgressBarShowPercentComplete=true ++MessageBelowAnimation=true ++ ++[updates] ++SuppressMessages=true ++UseProgressBar=true ++Title=Installing Updates... ++SubTitle=Do not turn off your computer +-- +2.20.1 + +From 8711f9dde038dc69b7489246a86ac38462e7d532 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 13 Feb 2019 14:39:42 +0100 +Subject: [PATCH 71/74] logging: Improve logging format + +This commit adds 2 improvemens to the ply_trace logging format: + +1) It prefixes the log messages with timestamps (since system boot) + +2) Previously function-names where right aligned / left padded to 45 +characters. But they were prefixed with a [file:line] prefix which does +not have a fixed width, making the column aligment for the actual messages +fail resulting in hard to read logs. + +This commit fixes 2. by printing " file:line:func" to a +prefix-buffer and then left-aligning / right padding this prefix buffer +to 75 chars. + +The resulting logged lines now look like this: + +00:00:01.741 main.c:1928:check_logging : checking if console messages should be redirected and logged +00:00:01.741 main.c:1937:check_logging : logging will be enabled! + +Signed-off-by: Hans de Goede +--- + src/libply/ply-logger.h | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/src/libply/ply-logger.h b/src/libply/ply-logger.h +index 53d1ad9..0015c0c 100644 +--- a/src/libply/ply-logger.h ++++ b/src/libply/ply-logger.h +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + + typedef struct _ply_logger ply_logger_t; +@@ -88,11 +89,21 @@ bool ply_logger_is_tracing_enabled (ply_logger_t *logger); + _old_errno = errno; \ + if (ply_logger_is_tracing_enabled (logger)) \ + { \ ++ struct timespec timespec = { 0, 0 }; \ ++ char buf[128]; \ ++ clock_gettime (CLOCK_MONOTONIC, ×pec); \ + ply_logger_flush (logger); \ ++ snprintf (buf, sizeof(buf), \ ++ "%02d:%02d:%02d.%03d %s:%d:%s", \ ++ (int)(timespec.tv_sec / 3600), \ ++ (int)((timespec.tv_sec / 60) % 60), \ ++ (int)(timespec.tv_sec % 60), \ ++ (int)(timespec.tv_nsec / 1000000), \ ++ __FILE__, __LINE__, __func__); \ + errno = _old_errno; \ + ply_logger_inject (logger, \ +- "[%s:%d] %45.45s:" format "\n", \ +- __FILE__, __LINE__, __func__, ## args); \ ++ "%-75.75s: " format "\n", \ ++ buf, ## args); \ + ply_logger_flush (logger); \ + errno = _old_errno; \ + } \ +-- +2.20.1 + +From b9ef96aa0ade81a564a3982db5cd9bd47478192c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 12:27:01 +0100 +Subject: [PATCH 72/74] logging: Minor log-message fixes + +This fixes 2 minor issues with our log-messages: +1. ply_trace adds a "\n" itself, so there is no need to pass one extra. +2. Correct spelling of quitting + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-animation.c | 4 ++-- + src/libply/ply-utils.c | 2 +- + src/main.c | 2 +- + src/plugins/renderers/drm/plugin.c | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-animation.c b/src/libply-splash-graphics/ply-animation.c +index 323d9ed..9b6d8ce 100644 +--- a/src/libply-splash-graphics/ply-animation.c ++++ b/src/libply-splash-graphics/ply-animation.c +@@ -261,11 +261,11 @@ ply_animation_add_frames (ply_animation_t *animation) + + number_of_frames = ply_array_get_size (animation->frames); + if (number_of_frames == 0) { +- ply_trace ("%s directory had no files starting with %s\n", ++ ply_trace ("%s directory had no files starting with %s", + animation->image_dir, animation->frames_prefix); + goto out; + } else { +- ply_trace ("animation has %d frames\n", number_of_frames); ++ ply_trace ("animation has %d frames", number_of_frames); + } + + load_finished = true; +diff --git a/src/libply/ply-utils.c b/src/libply/ply-utils.c +index 4ff7b1b..0cadae9 100644 +--- a/src/libply/ply-utils.c ++++ b/src/libply/ply-utils.c +@@ -656,7 +656,7 @@ ply_open_module (const char *module_path) + RTLD_NODELETE | RTLD_NOW | RTLD_LOCAL); + + if (handle == NULL) { +- ply_trace ("Could not load module \"%s\": %s\n", module_path, dlerror ()); ++ ply_trace ("Could not load module \"%s\": %s", module_path, dlerror ()); + if (errno == 0) + errno = ELIBACC; + } +diff --git a/src/main.c b/src/main.c +index ddc1883..9adff3a 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -1123,7 +1123,7 @@ load_devices (state_t *state, + static void + quit_splash (state_t *state) + { +- ply_trace ("quiting splash"); ++ ply_trace ("quitting splash"); + if (state->boot_splash != NULL) { + ply_trace ("freeing splash"); + ply_boot_splash_free (state->boot_splash); +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 0151f47..88c9d97 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -1100,7 +1100,7 @@ get_preferred_mode (drmModeConnector *connector) + + for (i = 0; i < connector->count_modes; i++) + if (connector->modes[i].type & DRM_MODE_TYPE_PREFERRED) { +- ply_trace ("Found preferred mode %dx%d at index %d\n", ++ ply_trace ("Found preferred mode %dx%d at index %d", + connector->modes[i].hdisplay, + connector->modes[i].vdisplay, i); + return &connector->modes[i]; +-- +2.20.1 + +From 243cf30abbe38c0211255d76752ee7fbdd18a8e7 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 12:51:05 +0100 +Subject: [PATCH 73/74] ply-boot-splash: Do not add + ply_boot_splash_update_progress timeout multiple times + +Before this commit when freeing the splash, the following would be logged: + +multiple matching timeouts found for removal +multiple matching timeouts found for removal + +This is caused by us adding the ply_boot_splash_update_progress timeout +handler to the event loop 3 times: 1 on first show, 2 on second show with +a different mode, 3 on becoming idle. + +This commit fixes the 2nd add by stopping the timer when changing modes +and the 3th add by not calling ply_boot_splash_update_progress to update +the progress, as that will re-add itself. Instead this commit directly calls +plugin_interface->on_boot_progress from ply_boot_splash_become_idle. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-boot-splash.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/libply-splash-core/ply-boot-splash.c b/src/libply-splash-core/ply-boot-splash.c +index 54c7696..9549ecc 100644 +--- a/src/libply-splash-core/ply-boot-splash.c ++++ b/src/libply-splash-core/ply-boot-splash.c +@@ -476,6 +476,11 @@ ply_boot_splash_show (ply_boot_splash_t *splash, + } else if (splash->mode != PLY_BOOT_SPLASH_MODE_INVALID) { + splash->plugin_interface->hide_splash_screen (splash->plugin, + splash->loop); ++ if (splash->plugin_interface->on_boot_progress != NULL) { ++ ply_event_loop_stop_watching_for_timeout (splash->loop, ++ (ply_event_loop_timeout_handler_t) ++ ply_boot_splash_update_progress, splash); ++ } + } + + ply_trace ("showing splash screen"); +@@ -671,9 +676,12 @@ ply_boot_splash_become_idle (ply_boot_splash_t *splash, + { + assert (splash->idle_trigger == NULL); + +- if (splash->progress != NULL) { ++ if (splash->plugin_interface->on_boot_progress != NULL && ++ splash->progress != NULL) { + ply_progress_set_percentage (splash->progress, 1.0); +- ply_boot_splash_update_progress (splash); ++ splash->plugin_interface->on_boot_progress (splash->plugin, ++ ply_progress_get_time (splash->progress), ++ 1.0); + } + + ply_trace ("telling splash to become idle"); +-- +2.20.1 + +From cca2feed2ee1f38c971b75a01609bef83404bf92 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 13 Feb 2019 15:10:23 +0100 +Subject: [PATCH 74/74] plymouthd.defaults: Change default ShowDelay to 0 + +ShowDelay was added with as goal to reduce the number of jarring / +flickering visual transitions. + +The idea being that if a system boots within 5 seconds, we would avoid +the transition from a black screen to plymouth, instead directly going +to e.g. gdm. + +In practive most modern systems (with SSD) take about 4-7 seconds to +boot, this causes plymouth to only show briefly (aprox. 1 second). + +IOW on some modern systems it quicky flashes by, this "flash" is the end +result of the ShowDelay=5 default which is intended to *reduce* the number +of jarring / flickering visual transitions. + +On older systems the boot will likely take significantly longer then the +5 seconds, so we will show the splash anyways and we might as well show +it right away, so that the user can see something is happening right away. + +Note this has been discussed in more detail in issue #64, which also +contains an alternative much more involved fix for the issues surrounding +SplashDelay, but simply defaulting it to 0 seems to be best. + +Closes #64 + +Signed-off-by: Hans de Goede +--- + src/plymouthd.defaults | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/plymouthd.defaults b/src/plymouthd.defaults +index 4d3b6d4..9e3a342 100644 +--- a/src/plymouthd.defaults ++++ b/src/plymouthd.defaults +@@ -2,5 +2,5 @@ + # upgrades. + [Daemon] + Theme=spinner +-ShowDelay=5 ++ShowDelay=0 + DeviceTimeout=5 +-- +2.20.1 + diff --git a/plymouth.spec b/plymouth.spec index fe746c8..ef3236b 100644 --- a/plymouth.spec +++ b/plymouth.spec @@ -1,22 +1,7 @@ -%global plymouthdaemon_execdir %{_sbindir} -%global plymouthclient_execdir %{_bindir} -%global plymouth_libdir %{_libdir} -%global plymouth_initrd_file /boot/initrd-plymouth.img - -# Set to 1 if building from snapshots. -%global snapshot_build 0 - -%if %{snapshot_build} -%global snapshot_date 20160620 -%global snapshot_hash 0e65b86c -%global snapshot_rel %{?snapshot_date}git%{?snapshot_hash} -%endif - - Summary: Graphical Boot Animation and Logger Name: plymouth Version: 0.9.4 -Release: 2%{?snapshot_rel}%{?dist} +Release: 3%{?dist} License: GPLv2+ URL: http://www.freedesktop.org/wiki/Software/Plymouth @@ -24,7 +9,9 @@ Source0: http://freedesktop.org/software/plymouth/releases/%{name}-%{version}.ta Source2: charge.plymouth Source3: plymouth-update-initrd -BuildRequires: gcc +Patch1: plymouth-updates.patch + +BuildRequires: gcc libtool git BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libudev) BuildRequires: kernel-headers @@ -34,7 +21,8 @@ BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pango-devel >= 1.21.0 BuildRequires: cairo-devel -Requires(post): plymouth-scripts +Requires: %{name}-core-libs = %{version}-%{release} +Requires: %{name}-scripts = %{version}-%{release} %description Plymouth provides an attractive graphical boot animation in @@ -42,6 +30,7 @@ place of the text messages that normally get shown. Text messages are instead redirected to a log file for viewing after boot. + %package system-theme Summary: Plymouth default theme Requires: plymouth(system-theme) = %{version}-%{release} @@ -49,6 +38,7 @@ Requires: plymouth(system-theme) = %{version}-%{release} %description system-theme This metapackage tracks the current distribution default theme. + %package core-libs Summary: Plymouth core libraries @@ -56,6 +46,7 @@ Summary: Plymouth core libraries This package contains the libply and libply-splash-core libraries used by Plymouth. + %package graphics-libs Summary: Plymouth graphics libraries Requires: %{name}-core-libs = %{version}-%{release} @@ -65,6 +56,7 @@ Requires: system-logos This package contains the libply-splash-graphics library used by graphical Plymouth splashes. + %package devel Summary: Libraries and headers for writing Plymouth splash plugins Requires: %{name} = %{version}-%{release} @@ -74,14 +66,17 @@ Requires: pkgconfig This package contains the libply and libplybootsplash libraries and headers needed to develop 3rd party splash plugins for Plymouth. + %package scripts Summary: Plymouth related scripts -Requires: findutils, coreutils, gzip, cpio, dracut, plymouth +Requires: findutils, coreutils, gzip, cpio, dracut +Requires: %{name} = %{version}-%{release} %description scripts This package contains scripts that help integrate Plymouth with the system. + %package plugin-label Summary: Plymouth label plugin Requires: %{name} = %{version}-%{release} @@ -92,89 +87,6 @@ This package contains the label control plugin for Plymouth. It provides the ability to render text on graphical boot splashes using pango and cairo. -%package plugin-fade-throbber -Summary: Plymouth "Fade-Throbber" plugin -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} - -%description plugin-fade-throbber -This package contains the "Fade-In" boot splash plugin for -Plymouth. It features a centered image that fades in and out -while other images pulsate around during system boot up. - -%package theme-fade-in -Summary: Plymouth "Fade-In" theme -Requires: %{name}-plugin-fade-throbber = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-fade-in -This package contains the "Fade-In" boot splash theme for -Plymouth. It features a centered logo that fades in and out -while stars twinkle around the logo during system boot up. - -%package plugin-throbgress -Summary: Plymouth "Throbgress" plugin -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} -Requires: plymouth-plugin-label - -%description plugin-throbgress -This package contains the "throbgress" boot splash plugin for -Plymouth. It features a centered logo and animated spinner that -spins repeatedly while a progress bar advances at the bottom of -the screen. - -%package theme-spinfinity -Summary: Plymouth "Spinfinity" theme -Requires: %{name}-plugin-throbgress = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-spinfinity -This package contains the "Spinfinity" boot splash theme for -Plymouth. It features a centered logo and animated spinner that -spins in the shape of an infinity sign. - -%package plugin-space-flares -Summary: Plymouth "space-flares" plugin -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} -Requires: plymouth-plugin-label - -%description plugin-space-flares -This package contains the "space-flares" boot splash plugin for -Plymouth. It features a corner image with animated flares. - -%package theme-solar -Summary: Plymouth "Solar" theme -Requires: %{name}-plugin-space-flares = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-solar -This package contains the "Solar" boot splash theme for -Plymouth. It features a blue flamed sun with animated solar flares. - -%package plugin-two-step -Summary: Plymouth "two-step" plugin -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} -Requires: plymouth-plugin-label - -%description plugin-two-step -This package contains the "two-step" boot splash plugin for -Plymouth. It features a two phased boot process that starts with -a progressing animation synced to boot time and finishes with a -short, fast one-shot animation. - -%package theme-charge -Summary: Plymouth "Charge" plugin -Requires: %{name}-plugin-two-step = %{version}-%{release} -Requires(post): plymouth-scripts -Provides: plymouth(system-theme) = %{version}-%{release} - -%description theme-charge -This package contains the "charge" boot splash theme for -Plymouth. It features the shadowy hull of a Fedora logo charge up and -and finally burst into full form. %package plugin-script Summary: Plymouth "script" plugin @@ -187,30 +99,127 @@ Plymouth. It features an extensible, scriptable boot splash language that simplifies the process of designing custom boot splash themes. + +%package plugin-fade-throbber +Summary: Plymouth "Fade-Throbber" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} + +%description plugin-fade-throbber +This package contains the "Fade-In" boot splash plugin for +Plymouth. It features a centered image that fades in and out +while other images pulsate around during system boot up. + + +%package plugin-space-flares +Summary: Plymouth "space-flares" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} +Requires: plymouth-plugin-label = %{version}-%{release} + +%description plugin-space-flares +This package contains the "space-flares" boot splash plugin for +Plymouth. It features a corner image with animated flares. + + +%package plugin-throbgress +Summary: Plymouth "Throbgress" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} +Requires: plymouth-plugin-label = %{version}-%{release} + +%description plugin-throbgress +This package contains the "throbgress" boot splash plugin for +Plymouth. It features a centered logo and animated spinner that +spins repeatedly while a progress bar advances at the bottom of +the screen. + + +%package plugin-two-step +Summary: Plymouth "two-step" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} +Requires: plymouth-plugin-label = %{version}-%{release} + +%description plugin-two-step +This package contains the "two-step" boot splash plugin for +Plymouth. It features a two phased boot process that starts with +a progressing animation synced to boot time and finishes with a +short, fast one-shot animation. + + +%package theme-charge +Summary: Plymouth "Charge" plugin +Requires: %{name}-plugin-two-step = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-charge +This package contains the "charge" boot splash theme for +Plymouth. It features the shadowy hull of a Fedora logo charge up and +and finally burst into full form. + + +%package theme-fade-in +Summary: Plymouth "Fade-In" theme +Requires: %{name}-plugin-fade-throbber = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-fade-in +This package contains the "Fade-In" boot splash theme for +Plymouth. It features a centered logo that fades in and out +while stars twinkle around the logo during system boot up. + + %package theme-script Summary: Plymouth "Script" plugin Requires: %{name}-plugin-script = %{version}-%{release} -Requires(post): %{_sbindir}/plymouth-set-default-theme +Requires(post): plymouth-scripts %description theme-script This package contains the "script" boot splash theme for Plymouth. It it is a simple example theme the uses the "script" plugin. + +%package theme-solar +Summary: Plymouth "Solar" theme +Requires: %{name}-plugin-space-flares = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-solar +This package contains the "Solar" boot splash theme for +Plymouth. It features a blue flamed sun with animated solar flares. + + +%package theme-spinfinity +Summary: Plymouth "Spinfinity" theme +Requires: %{name}-plugin-throbgress = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-spinfinity +This package contains the "Spinfinity" boot splash theme for +Plymouth. It features a centered logo and animated spinner that +spins in the shape of an infinity sign. + + %package theme-spinner Summary: Plymouth "Spinner" theme Requires: %{name}-plugin-two-step = %{version}-%{release} +Requires: font(cantarell) font(cantarelllight) Requires(post): plymouth-scripts +Provides: plymouth(system-theme) = %{version}-%{release} %description theme-spinner This package contains the "spinner" boot splash theme for Plymouth. It features a small spinner on a dark background. -%prep -%autosetup -p1 +%prep +%autosetup -S git +autoreconf -ivf -Wno-portability # Change the default theme -sed -i -e 's/spinner/charge/g' src/plymouthd.defaults +sed -i -e 's/spinner/bgrt/g' src/plymouthd.defaults + %build %configure --enable-tracing --disable-tests \ @@ -224,8 +233,8 @@ sed -i -e 's/spinner/charge/g' src/plymouthd.defaults --without-log-viewer \ --without-rhgb-compat-link \ --disable-libkms +make %{?_smp_mflags} -make %install make install DESTDIR=$RPM_BUILD_ROOT @@ -240,7 +249,7 @@ find $RPM_BUILD_ROOT -name '*.la' -delete mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/plymouth cp -f $RPM_SOURCE_DIR/plymouth-update-initrd $RPM_BUILD_ROOT%{_libexecdir}/plymouth -# Add charge, our new default +# Add charge, our old default mkdir -p $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge cp %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge cp $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow/{box,bullet,entry,lock}.png $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge @@ -248,66 +257,62 @@ cp $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow/{box,bullet,entry,lock}.png $ # Drop glow, it's not very Fedora-y rm -rf $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow -%postun -if [ $1 -eq 0 ]; then - rm -f %{_libdir}/plymouth/default.so - rm -f /boot/initrd-plymouth.img -fi %ldconfig_scriptlets core-libs %ldconfig_scriptlets graphics-libs -%postun theme-spinfinity -export LIB=%{_lib} +%postun theme-charge +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ if [ $1 -eq 0 ]; then - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinfinity" ]; then - %{_sbindir}/plymouth-set-default-theme text + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "charge" ]; then + %{_sbindir}/plymouth-set-default-theme --reset fi fi %postun theme-fade-in -export LIB=%{_lib} +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ if [ $1 -eq 0 ]; then if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "fade-in" ]; then %{_sbindir}/plymouth-set-default-theme --reset fi fi -%postun theme-spinner -export LIB=%{_lib} -if [ $1 -eq 0 ]; then - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinner" ]; then - %{_sbindir}/plymouth-set-default-theme --reset - fi -fi - %postun theme-solar -export LIB=%{_lib} +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ if [ $1 -eq 0 ]; then if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "solar" ]; then %{_sbindir}/plymouth-set-default-theme --reset fi fi -%post theme-charge -export LIB=%{_lib} -if [ $1 -eq 1 ]; then - %{_sbindir}/plymouth-set-default-theme charge -else - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "solar" ]; then - %{_sbindir}/plymouth-set-default-theme charge +%postun theme-spinfinity +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +if [ $1 -eq 0 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinfinity" ]; then + %{_sbindir}/plymouth-set-default-theme --reset fi fi -%postun theme-charge -export LIB=%{_lib} -if [ $1 -eq 0 ]; then +%post theme-spinner +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +# On upgrades replace charge with the new bgrt default +if [ $1 -eq 2 ]; then if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "charge" ]; then + %{_sbindir}/plymouth-set-default-theme bgrt + fi +fi + +%postun theme-spinner +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +if [ $1 -eq 0 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "bgrt" -o \ + "$(%{_sbindir}/plymouth-set-default-theme)" == "spinner" ]; then %{_sbindir}/plymouth-set-default-theme --reset fi fi + %files %license COPYING %doc AUTHORS README @@ -320,8 +325,7 @@ fi %dir %{_libdir}/plymouth/renderers %dir %{_sysconfdir}/plymouth %config(noreplace) %{_sysconfdir}/plymouth/plymouthd.conf -%{plymouthdaemon_execdir}/plymouthd -%{plymouthclient_execdir}/plymouth +%{_sbindir}/plymouthd %{_bindir}/plymouth %{_libdir}/plymouth/details.so %{_libdir}/plymouth/text.so @@ -338,8 +342,8 @@ fi %{_prefix}/lib/systemd/system/ %files devel -%{plymouth_libdir}/libply.so -%{plymouth_libdir}/libply-splash-core.so +%{_libdir}/libply.so +%{_libdir}/libply-splash-core.so %{_libdir}/libply-boot-client.so %{_libdir}/libply-splash-graphics.so %{_libdir}/pkgconfig/ply-splash-core.pc @@ -349,8 +353,8 @@ fi %{_includedir}/plymouth-1 %files core-libs -%{plymouth_libdir}/libply.so.* -%{plymouth_libdir}/libply-splash-core.so.* +%{_libdir}/libply.so.* +%{_libdir}/libply-splash-core.so.* %{_libdir}/libply-boot-client.so.* %dir %{_libdir}/plymouth @@ -368,62 +372,60 @@ fi %files plugin-label %{_libdir}/plymouth/label.so +%files plugin-script +%{_libdir}/plymouth/script.so + %files plugin-fade-throbber %{_libdir}/plymouth/fade-throbber.so -%files theme-fade-in -%dir %{_datadir}/plymouth/themes/fade-in -%{_datadir}/plymouth/themes/fade-in/bullet.png -%{_datadir}/plymouth/themes/fade-in/entry.png -%{_datadir}/plymouth/themes/fade-in/lock.png -%{_datadir}/plymouth/themes/fade-in/star.png -%{_datadir}/plymouth/themes/fade-in/fade-in.plymouth - -%files theme-spinner -%dir %{_datadir}/plymouth/themes/spinner -%{_datadir}/plymouth/themes/spinner/*.png -%{_datadir}/plymouth/themes/spinner/spinner.plymouth - -%files plugin-throbgress -%{_libdir}/plymouth/throbgress.so - -%files theme-spinfinity -%dir %{_datadir}/plymouth/themes/spinfinity -%{_datadir}/plymouth/themes/spinfinity/box.png -%{_datadir}/plymouth/themes/spinfinity/bullet.png -%{_datadir}/plymouth/themes/spinfinity/entry.png -%{_datadir}/plymouth/themes/spinfinity/lock.png -%{_datadir}/plymouth/themes/spinfinity/throbber-[0-3][0-9].png -%{_datadir}/plymouth/themes/spinfinity/spinfinity.plymouth - %files plugin-space-flares %{_libdir}/plymouth/space-flares.so -%files theme-solar -%dir %{_datadir}/plymouth/themes/solar -%{_datadir}/plymouth/themes/solar/*.png -%{_datadir}/plymouth/themes/solar/solar.plymouth +%files plugin-throbgress +%{_libdir}/plymouth/throbgress.so %files plugin-two-step %{_libdir}/plymouth/two-step.so %files theme-charge -%dir %{_datadir}/plymouth/themes/charge -%{_datadir}/plymouth/themes/charge/*.png -%{_datadir}/plymouth/themes/charge/charge.plymouth +%{_datadir}/plymouth/themes/charge -%files plugin-script -%{_libdir}/plymouth/script.so +%files theme-fade-in +%{_datadir}/plymouth/themes/fade-in %files theme-script -%dir %{_datadir}/plymouth/themes/script -%{_datadir}/plymouth/themes/script/*.png -%{_datadir}/plymouth/themes/script/script.script -%{_datadir}/plymouth/themes/script/script.plymouth +%{_datadir}/plymouth/themes/script + +%files theme-solar +%{_datadir}/plymouth/themes/solar + +%files theme-spinfinity +%{_datadir}/plymouth/themes/spinfinity + +%files theme-spinner +# bgrt is a variant of spinner with different settings in its .plymouth file +%{_datadir}/plymouth/themes/bgrt +%{_datadir}/plymouth/themes/spinner %files system-theme + %changelog +* Wed Feb 13 2019 Hans de Goede - 0.9.4-3 +- Add patches from upstream for: + - Monitor hotplug support, this fixes issues with monitors on DP-MST + docs sometimes not lighting up (rhbz#1652279) + - Adding support for using the firmware's bootsplash as theme background + - New bgrt theme which implements the boot-theme design from: + https://wiki.gnome.org/Design/OS/BootProgress + Including the new theming for offline-updates shown there +- Make the bgrt theme the new default and upgrade systems which are using the + charge theme, which is the old default to use the new bgrt theme +- Cleanup the spec-file a bit: + - Remove unused / unnecessary %%global variables + - Sort the sections for the various plugins and themes alphabetically + - Simplify theme filelists + * Sat Feb 02 2019 Fedora Release Engineering - 0.9.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild