diff mbox series

[bug#45838] website: Add a Cuirass page.

Message ID 4WaiS3eePQjKlLOtJ0gBocgRwlSCv6dK5KkD4FOZVSfaQKkN6Yi8uHWij6jO7uC0dh_WYzzgXIM0ZWgaZSdk6Zsj-sLb5iV63grp7yWCgcs=@protonmail.com
State Accepted
Headers show
Series [bug#45838] website: Add a Cuirass page. | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Luis Felipe Jan. 13, 2021, 3 p.m. UTC
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, January 13, 2021 10:54 AM, Mathieu Othacehe <othacehe@gnu.org> wrote:

> Hello,
>
> This patch adds a Cuirass project page to the website. Luis, I used one
> of your logo proposals to have a first overview. We will have to replace
> it with the real logo of course.
>
> There's a screenshot of the result attached.

I see some things that could be improved:

* The description metadata in cuirass-t is the same description of the donations page. I'd probably add something like: "GNU Guix continuous integration software."

* For accessibility, every use of the name "Cuirass" should indicate the language is french (if the word does not exist in English). For example: <span lang="fr">Cuirass</span>. This way capable screen readers use the appropriate pronunciation.

* Also for accessibility, the image alt attribute should say "Cuirass", the lang attribute should be set to French, and the image itself should be wrapped in a H2 element so that the section has a heading.

Other than that, it looks good to me.

Comments

Ludovic Courtès Jan. 13, 2021, 3:06 p.m. UTC | #1
Hi,

Luis Felipe <luis.felipe.la@protonmail.com> skribis:

> * For accessibility, every use of the name "Cuirass" should indicate the language is french (if the word does not exist in English). For example: <span lang="fr">Cuirass</span>. This way capable screen readers use the appropriate pronunciation.

Cuirass is an English word (of French/Latin ascendance I suppose).

That said, it’s almost universally disliked and switching names is one
of the recurring topics at FOSDEM.  :-)  Changing names is hard though,
so perhaps in the meantime the web page could just make the name less
prominent?

Either way, this patch is a nice idea, Mathieu!

Ludo’.
Luis Felipe Jan. 13, 2021, 4:08 p.m. UTC | #2
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, January 13, 2021 3:06 PM, Ludovic Courtès <ludo@gnu.org> wrote:

> Hi,
>
> Luis Felipe luis.felipe.la@protonmail.com skribis:
>
> > -   For accessibility, every use of the name "Cuirass" should indicate the language is french (if the word does not exist in English). For example: <span lang="fr">Cuirass</span>. This way capable screen readers use the appropriate pronunciation.
>
> Cuirass is an English word (of French/Latin ascendance I suppose).

Oh, the Merriam-Webster has this word. I used the Cambridge dictionary, which does not list it. Thanks.


> That said, it’s almost universally disliked and switching names is one
> of the recurring topics at FOSDEM. :-) Changing names is hard though,
> so perhaps in the meantime the web page could just make the name less
> prominent?

If even more people dislike the name, I think it is a good time to consider alternatives before introducing a new image for the project.

Don't worry about the current logo. It can be modified or redone.
Mathieu Othacehe Jan. 13, 2021, 4:39 p.m. UTC | #3
Hey Luis & Ludo,

> If even more people dislike the name, I think it is a good time to consider alternatives before introducing a new image for the project.
>
> Don't worry about the current logo. It can be modified or redone.

Thanks for commenting! As much as I would also like to change the name
of the project, I think now is maybe not the best time.

I will announce soon that NLnet will sponsor some of the work I'm doing
on Cuirass and changing the name right now could be misleading. Maybe in
a few months?

Mathieu
Luis Felipe Jan. 13, 2021, 5:59 p.m. UTC | #4
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, January 13, 2021 4:39 PM, Mathieu Othacehe <othacehe@gnu.org> wrote:

> Thanks for commenting! As much as I would also like to change the name
> of the project, I think now is maybe not the best time.
>
> I will announce soon that NLnet will sponsor some of the work I'm doing
> on Cuirass and changing the name right now could be misleading. Maybe in
> a few months?

Ah, I see. In any case, I'll clean up the SVG file and send a patch to guix-artwork when I'm done.
zimoun Jan. 13, 2021, 7:42 p.m. UTC | #5
Hi,

On Wed, 13 Jan 2021 at 17:39, Mathieu Othacehe <othacehe@gnu.org> wrote:
> Hey Luis & Ludo,
>
>> If even more people dislike the name, I think it is a good time to consider alternatives before introducing a new image for the project.
>>
>> Don't worry about the current logo. It can be modified or redone.
>
> Thanks for commenting! As much as I would also like to change the name
> of the project, I think now is maybe not the best time.
>
> I will announce soon that NLnet will sponsor some of the work I'm doing
> on Cuirass and changing the name right now could be misleading. Maybe in
> a few months?

From my point of view, it is a bad idea to rename, whatever when.  Even
if it is not the greatest name ever, rename would just add confusion and
I do not see any gain (except personal taste).

Why Cuirass for Continuous Integration?  Why not! :-)  Why Jenkins or
Hudson?  Why not.


The logos are really nice!  Thanks Luis.


Cheers,
simon
Ludovic Courtès Jan. 14, 2021, 11:43 a.m. UTC | #6
Hi,

Mathieu Othacehe <othacehe@gnu.org> skribis:

>> If even more people dislike the name, I think it is a good time to consider alternatives before introducing a new image for the project.
>>
>> Don't worry about the current logo. It can be modified or redone.
>
> Thanks for commenting! As much as I would also like to change the name
> of the project, I think now is maybe not the best time.
>
> I will announce soon that NLnet will sponsor some of the work I'm doing
> on Cuirass and changing the name right now could be misleading. Maybe in
> a few months?

Ah sure, makes sense!  (And congrats!!)

My other suggestion is to reduce the number of occurrences of the name
“Cuirass” on this web page, using phrases such as “the continuous
integration tool”, “You-Know-What”, etc., so that the name is not too
entrenched.

But really: that’s a detail.

Thanks!

Ludo’.
diff mbox series

Patch

From b7c3b92b3f2b890163be65e77084144589f4f72e Mon Sep 17 00:00:00 2001
From: Mathieu Othacehe <othacehe@gnu.org>
Date: Wed, 13 Jan 2021 11:46:10 +0100
Subject: [PATCH] website: Add a Cuirass page.

* website/apps/base/templates/cuirass.scm: New file.
* website/po/POTFILES: Add it.
* website/static/base/img/cuirass.png: New file.
* website/apps/base/builder.scm (cuirass-builder): New procedure,
(builder): add it.
* website/apps/base/templates/contribute.scm (contribute-t): Add a link to
Cuirass page.
---
 website/apps/base/builder.scm              |  24 ++++---
 website/apps/base/templates/contribute.scm |   6 +-
 website/apps/base/templates/cuirass.scm    |  70 +++++++++++++++++++++
 website/po/POTFILES                        |   1 +
 website/static/base/img/cuirass.png        | Bin 0 -> 10875 bytes
 5 files changed, 89 insertions(+), 12 deletions(-)
 create mode 100644 website/apps/base/templates/cuirass.scm
 create mode 100644 website/static/base/img/cuirass.png

diff --git a/website/apps/base/builder.scm b/website/apps/base/builder.scm
index 4882dc5..d0b7094 100644
--- a/website/apps/base/builder.scm
+++ b/website/apps/base/builder.scm
@@ -6,6 +6,7 @@ 
   #:use-module (apps base data)
   #:use-module (apps base templates about)
   #:use-module (apps base templates contact)
+  #:use-module (apps base templates cuirass)
   #:use-module (apps base templates irc)
   #:use-module (apps base templates contribute)
   #:use-module (apps base templates donate)
@@ -47,15 +48,16 @@ 
      application. See Haunt <page> objects for more information."
   (flatten
    (list (menu-builder)
-	 (home-builder site posts)
-	 (help-builder)
-	 (donate-builder)
-	 (about-builder)
-	 (contact-builder)
-	 (irc-builder)
-	 (contribute-builder)
-	 (security-builder)
-	 (graphics-builder))))
+         (home-builder site posts)
+         (help-builder)
+         (cuirass-builder)
+         (donate-builder)
+         (about-builder)
+         (contact-builder)
+         (irc-builder)
+         (contribute-builder)
+         (security-builder)
+         (graphics-builder))))
 
 
 
@@ -83,12 +85,14 @@ 
   "Return a Haunt page representing the Contribute page of the website."
   (make-page "contribute/index.html" (contribute-t) sxml->html))
 
+(define (cuirass-builder)
+  "Return a Haunt page representing the Cuirass page of the website."
+  (make-page "cuirass/index.html" (cuirass-t) sxml->html))
 
 (define (donate-builder)
   "Return a Haunt page representing the Donate page of the website."
   (make-page "donate/index.html" (donate-t) sxml->html))
 
-
 (define (graphics-builder)
   "Return a Haunt page representing the Graphics page of the website."
   (make-page "graphics/index.html" (graphics-t) sxml->html))
diff --git a/website/apps/base/templates/contribute.scm b/website/apps/base/templates/contribute.scm
index b91b9d4..a126b3b 100644
--- a/website/apps/base/templates/contribute.scm
+++ b/website/apps/base/templates/contribute.scm
@@ -217,11 +217,13 @@  Translation|I18N|L10N|Artwork") #\|)
             us keep the system up and running smoothly. "))
         ,(G_
           `(p
-            "You can also "
+            "You can contribute to our continous integration software: "
+            (a (@ (href ,(guix-url "cuirass/"))) "Cuirass")
+            ". You can also "
             ,(G_ `(a (@ (href ,(guix-url "donate/")))
                      "donate hardware or hosting"))
             " for our "
-            ,(G_ `(a (@ (href "https://ci.guix.gnu.org")) "build farm")) ".  "))
+            ,(G_ `(a (@ (href "https://ci.guix.gnu.org")) "build farm"))))
 	(p
 	 ,(link-more
            #:label (G_ "Contribute")
diff --git a/website/apps/base/templates/cuirass.scm b/website/apps/base/templates/cuirass.scm
new file mode 100644
index 0000000..63ecf5d
--- /dev/null
+++ b/website/apps/base/templates/cuirass.scm
@@ -0,0 +1,70 @@ 
+;;; GNU Guix web site
+;;; Initially written by sirgazil who waives all
+;;; copyright interest on this file.
+
+(define-module (apps base templates cuirass)
+  #:use-module (apps base templates components)
+  #:use-module (apps base templates theme)
+  #:use-module (apps base types)
+  #:use-module (apps base utils)
+  #:use-module (apps i18n)
+  #:export (cuirass-t))
+
+(define (cuirass-t)
+  "Return the Cuirass page in SHTML."
+  (theme
+   #:title (C_ "webpage title" '("Cuirass"))
+   #:description
+   (G_ "We are looking for donations of hardware and optionally
+   hosting for machines (they should be usable with exclusively
+   free software).")
+   #:keywords
+   (string-split ;TRANSLATORS: |-separated list of webpage keywords
+    (G_ "GNU|Linux|Unix|Free software|Libre software|Operating \
+system|GNU Guix package manager|Cuirass|CI") #\|)
+   #:css (list
+          (guix-url "static/base/css/page.css"))
+   #:content
+   `(main
+     (section
+      (@ (class "page centered-block limit-width"))
+      (img (@ (src ,(guix-url "static/base/img/cuirass.png"))
+              (alt "")))
+      ,(G_ `(p "Cuirass is the GNU Guix continuous
+integration software. It's a general purpose build automation server written
+in GNU Guile that checks out sources from VCS repositories, execute build jobs
+and store build results in a database. Cuirass also provides a web interface
+to monitor the build results."))
+
+      ,(G_ `(p "Cuirass is running on GNU Guix build farm at "
+               `(a (@ (href "https://ci.guix.gnu.org"))
+                   "https://ci.guix.gnu.org")
+               "."))
+      ,(G_ `(h3 "Features"))
+      (ul
+       (li
+        ,(G_ "Poll sources from multiple Git repositories."))
+       (li
+        ,(G_ "Execute builds on local or remote Guix daemons."))
+       (li
+        ,(G_ "Store build products or artifacts."))
+       (li
+        ,(G_ "Collect build logs and metrics."))
+       (li
+        ,(G_ "Provides a REST API."))
+       (li
+        ,(G_ `"High level of concurrency using ")
+        (a (@ (href "https://github.com/wingo/fibers"))
+           "Guile-Fibers")
+        ,(G_ " asynchronous library.")))
+      ,(G_ `(h3 "Documentation"))
+      ,(G_ `(p "Cuirass documentation is accessible "
+               ,(G_ `(a (@ (href ,(manual-url "Continuous-Integration.html")))
+                        "here"))
+               "."))
+      ,(G_ `(h3 "Project repository"))
+      ,(G_ `(p "Cuirass source code is hosted at "
+               ,(G_ `(a (@ (href "//git.savannah.gnu.org/cgit/guix/guix-cuirass.git"))
+                        "git://git.sv.gnu.org/guix/guix-cuirass.git"))
+               "."))
+      ))))
diff --git a/website/po/POTFILES b/website/po/POTFILES
index 6f9f349..51f1c1f 100644
--- a/website/po/POTFILES
+++ b/website/po/POTFILES
@@ -9,6 +9,7 @@  apps/base/templates/help.scm
 # other files
 apps/base/templates/contact.scm
 apps/base/templates/contribute.scm
+apps/base/templates/cuirass.scm
 apps/base/templates/donate.scm
 apps/base/templates/graphics.scm
 apps/base/templates/irc.scm
diff --git a/website/static/base/img/cuirass.png b/website/static/base/img/cuirass.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1932180a8943b78d912fe71eb007ce1c00f6209
GIT binary patch
literal 10875
zcmeHrXHZnj7VZ!vi3G_(l7Ju#6NodCl_(hmlsL=`FoYQ-M?nDri7E(^5s@f4OID&}
zBuG>w3W$<Hz_;<78&17juj*F4`|s=@Q?t8QukQZ(TWfv2BlL9CE>N*kfk2=O8tOL;
zKp>*~z<)amV&E62k23{<C=-2+Ox+DoUOX<Y1Y4XFmdD-41<Ql=#@T{E-jfMQx64KH
zX;gl(wQ~^j+_#nq7kpu>_ck!Ha-gm$7aw3`JJHYlVZBj+b8jv%?Yly?XyZBXm_vzV
zIc_|ioE+R#-Q9VJkze!3-#n<wnaJ3*I}dK89odvFXyhI+r@y!8fn4&7KSpPk1WU+V
zZN_`wv)bn#@ANy~OaJ7Txv%94K5{`dkv}=EPv7xqYC67HeA@kDGDYRY1HIO%7+a{~
zSYcq&hj_FAjviRc@+5aC39jSz`=$knyq8+|_|dIeq31-!N@nE?<Cu#iRvHiA?RyRE
z=iMzbNZ;&Cy<!EMCH24UYc(LvBR8}5d98yXV)^xt?Q^z?S2!|SPfi=XSGi$F5AQeN
zk4ea^QkugK!<Xf#=2(wvhrVXO7PcMB=L`caXg7lcr@cEM3dQfqm*k7a_PADvW@0(!
zGS@PG9E2~2kz0S;xN~}<3i+|$RcV#sW_-=AxlN*y_|efL{iFU?w|BuI+ugpcOaY#s
z4?K+08{tD3Q@_nCzC7pU`s3#{o}Zk~Y8z;avo$BHULC0F*y#9Zqc9-W?b@I0Hpwdj
zaT5DRFdO!>^s}Aqot|G}!$P%x4)`6^aQyNJBttGgqQ=u}vHAp-u5q=miPF{1$*L$1
z`>GkH^LIn`el=NyO_J!gmT_&bdHmSX?7r|z<Zz209YC{V^IZO|(UMeDYdyd8aD*Q7
z%I)wbB|YM~PYz7<!Q)lN?_YsKi!ayJiut5ia<{#t<vPKQKumtfHM+bcsGT0qe^IR$
zOJKQJN|&9A8uRXXyVl1!EE2CzW724EYu!09eY1}-X=v|5*=z0Fua{SM!)XW}F%ne?
zMQ{98g+T|Q5w4!(HO9~O#J@k)O^~}t?$KSm`%>nLP-PJo=C#|=h}V!zThCf(1LwDU
z-~VEWD1+~rO3?_u8WkD#b(JeSTrYIwdOy-X&pflcGwn$GJ>kvN`BUn?;=47zG)Q4n
zxi#VR<K7Kt+8MlQgOl0aT8We^a<3^E&ZU;zI_Z~WmiXQ<$=)Zm)E*i~c!6XVZy9!C
z2+1q{ASzj6GW&S)o+~Y!8MjlR!)DrQZd?xg`LTF^nauf?G$dHhJq4_dsOW2i%1Uw8
z4$)ToGY(Nk2*g~kLK>9}ZM{35j9s$N=2B?-Pz_g(ovoMlzf;wVtSZI|Pz<15v?qNm
zFe+0Kc9iy)F%%|Jm*rqp4%t@ZrM0O|A>z|e`FH%iDB~;iObaUP!h3c8SA=m+`6mU7
zvOY0MH**K^C6thvlC-LlFUCjtBBI-`pRyjRPlYJ)>Ta9gv3%%QxH*=?MVu@JS`FX_
zYnEQ>rBR17YMHz=R#Z(4h|f=4$olYcnPdBY^J{O~5mScTsqU|@*4|xTZSo->Y^n)O
z4=2=c?Qb=CmbmRHv-+ysmc+{0mmGkTt0P!R7{*)?;sLJ(*+S*w#+34(4K;3#L^5Dn
z5p6st!z8T1EORIB?AMg*Y^Tjwwb0;YV%DD)W^p6FN2JtuHINK)pL7bNm7pew;*bG5
zof$P9o$!JQjW5b|<1enMb37vxOb}nDD;eQ(7fTaokXL9-7WOCoRrR#UgC87pt%p4a
zdYxk<?sU3H+Ns1>$a`j9kzMujyne6RTz%n&Il;uJyR9uldCbjmh3b1!6bTQn|2mn^
zp2@=&ze;&CvG!NzZC}M)y|htWN@ifZMatX#2-fv^b`o{KRgv|kVxTroYPL9KT5{!q
zq2!y`*XK6)4y~vA`H>9Pt(8MpqGrE|81ZBKlx|(hv<6zV@Zmy|3EkmT`8=R|P7E#a
zDu*#1JJc3g<^;xxQjeA=_eR@-rt4A}prOPs#r<MK=-i)WbEWLbso}!K5=e2k-zLd*
zJ6#?;a7>@#OO7;UoKS|muBg&n<(iPGc~Uz$)&X&Xy53>T3QFDPWvTbga}4S)ZpKI?
zc*c6OKFGc{+hM7!Y&PX#sHO#_7*krD=Wx!iG^QeV)eDIbvciSFIq6^~-jGmNO>g%k
zaU+hsHUrB<;6{mL2UQ4_?umJ|-FHaC=wA;*<=-oD(lxtjsYzUobk4QTGgK6mc=2rO
z>Z}3GmEJdj__?N`ItR;<mAZ_UwnOkE{Pi*Y`TMSkj`z58-=FJu9#WT%XJxuYo`V_J
zzt5;?MN%l9V@6*2B8hm8m@<#`O}oJ2)v@H65WY#$_N>h(+Jc<V!IM8^aY5$7RtfYU
z$fvDvmuifCLViA1S{gRybwe$FUT|-@MbtbaRvOMmn#!IRWUtU0QnA-1`6TS!TVb&a
z?%6#rTotng7akj#f75YKg119G{S-5Z=0DINaMaJ=!@>)A-ZvV2ihv|^>NY7$z`xZ!
zozxPrQ5h8WSWvpZxPIR-`LXt5?(wQct!Z({tM}$%RzZDFJS?K&W6IN<h-zHIE1@w_
zh70`K0z4Vi*JC4UL0psP-l{mZ_<ZTkW27x&D_DF$>Z_lJevWZ!*S^zmvF8KH8p0^N
zJlTH{qm$^h#BM*b9??VPy#l2ZiQ)}3kKmU#CNj!{@7_!*A0J%(B^+o?!Az6v)5EQ&
znw%fl6>3XLFZ-m;_5I@|1Dt~Wxz7v~vA3x>#}xN`l1C#w9Hs1(T}MIJ^oZm>VU@&t
zqGFZotn9s{YDu7jTxA0ygbwE{J-z}#QT=&0)2pnCs<&(}Nxu%IxgG@K6jheL*|^v|
zOvbAa-#H)WEP&Qd!OISFCGJPqV(69UNvp}AdpAVfcZ>AyQJVEQ3iL=l`P7oWYeNbH
z+tA~hEtva0PsR%+E9NXD>#5z~6>uJ%U<%*^OTb#Zh%{WxS2KrnUNc-hcc7Ke@rhdj
zH1pLx{^ya2F;;*qQaDl5iN%r2y_|;5sEhBqo<{g>J_QlI9UL@qW@QKlMM}NA%s(k4
z>J>mb9_o7&L^l#_G}Khs8{GGS{*t@hPrhr<l*y_1&WEV`v3!sCo*-qfu}A!Imboma
zD8}~}B4|4TW82uMEXcw7tPNKwE8#)j$}~(JiqAop1;u-I*NmN?QO&J+i46!+ZKg_#
zV<>fUcMJAqi1#2%&T~eoDt%gwUR{W?9lfm2^F1gl$(^jazIgX7>DD04B$K3#YtCNg
z$c1wgjMSb1MjOwH&za!s7!_kbiP;32vkPAq9t<u1R%}{OvX&D%{)^~cwB^&!_9{W+
z7C+-A@0#7KUw-TjA>r&fRXLpfdDS5cRX9MzuDTo><DYgi)osx>-3&gZwc+k-`{Zvn
z07y4-93at5wY89Fg0mP3L$JY$c{{rR5)K5CRq%E}p&haAJT_Q69A1uZ^G!1!4-O;8
zXCkQ$)pog#wa2OZx?&A|b&Sxyj%WmiPeGna)*A^paK^f$c)XpR@NP(NIlkY1k--16
zW(Xh8ZxeS%IX+WuJ)Y|XS1gZ&n1mP<tm2LHg!9Q$@yNPjY>@^xRR44Vyvgy|ySuv}
zArLPwFEKB1F@mcd1cpE$AW%324hI7kU^gGUJIWi3ce{M%;twA;ux@BqoQpe-faf{$
ziLxPhxXbbJ0sTCGI#<)s*87WhJDju2Z~wqPApdTOLI2av#lzL<w+#jj!8&1`v3Pek
z2uuw27khV{?Z4KIcl#4w0BFcr4`2@ci#ageKmGs3+8gEapNzG&|KH}$&VO<5=C0xi
zZ2eCd|KkL1Mu0wt7+~E99<FGtiYKtE%fA6Q!w9LQry<7&7lZz*Mb8Q4ZcA`=mgCdH
z;XS<n)nSBl#u~b#&Nc*-f<fWpk_ZW?w6p{aF7YoTW2~zia4u&)VNfwR{C5uqjZ_6Z
zqJWj+oKbdIhzs8CcgGoINL^PPuqM>maRQ!yw*#mlue)MV?gUpO0>Md+?`*9+XD<KI
zt*wo`K|p()osq^3Ili;wMPdkO90vLOFARm1l#oCmzz7)(7A#>aDFsF$;3%-T1keG8
zic29R#Q)8e2Hwpbg-2u0Tmf^7;Q&7vn6!+fl!OErDuqUYC7@UsSOz004#rB@Kw&nv
z5|U7u<iEK9b^*i_%IV)%b><2KxRQ~EBH$9@a4-~xMt~(SHfS&k4U-0=r7&=WgcKA8
z#r}>EfZxCnU~B3)H(={NXN>=o^M=^Ff4uz>0#3N!T|7L$34lbQ|3J?T<%z}oUKB9y
zk1n)53U7x6;`>kD{G%QBAGVA_NQp}V00HZ?g@GjyQYf&D4FIBqq$E@VCN7DEOC$d3
z-Hl-D?uBy2D%k-C0UQ%>48M<wN9Z?sg#T*oWse1p7z~v}LZN(+KX(T?3*mokPZsij
z0U-O^;NM~%823jTkV}Bn1o>xf`V*it%>IYZpTPeQX8>IPJ;{HC@859!4cC8#z<*`@
zH@p6Z>%T(azcT)tUH{+UqWahE28#zIj~8%vxt(aV2Hbl{+>|wpC@3hVKI?u0ffxcb
zZYUXfr*6#nnKRz{MgHB*6LlLeV$YsQ%j2pKd#^>(+hD*)MVYK=si~oDP?~7_NGvlb
zj-Mhl<Uuly&5@7dssPHC+1}>R&uHr*k1(GlsBYt%&*{WmY#4W`U1A!_u4VIQyTUa$
z&;HwY6?&f|+-Rz+t5rdu7J8!b3&1sOgeMpTGJil#4054_Q-E3ox_CgK#Q$w$chDNy
zabiwRj$+F_!Lbh?09jYnz!-63X=!OPkwAi;e&a>xnd0E!aCCH>itl7C6qy?w9Bh(Z
zJV5##e9tn-H>zPlJK=B|I6J%1(NREP>rtumU%Y<(dUb&#9)E9ZfifqktgI{|g3@f1
zH>9AjkdhbKd<otAJ@5@MSW>ZTJyDg;;Oi;Ev?Y=HPL;#xaL&yO)Dwh(<&41exVXVB
zxX{@XZXgdkd-P{4$;rdMbjBJs6*iyjO*Qyz-?6N(t;N{d8Z<dIA8);H3q5aUNy8}v
zg+OA5Wz(1#8AWfGzkJKe7xJ#NQ#VB_x}Ewe7<_@68W?ID=67;(l4FpcpD%27w)l4)
z9p9#EO5QdGlU<msbIX1G8f-R7uN=dPD7WonpRvgc{B<fUEKHrqBIoj{rP_H)i*zNV
zd0IX1=iLQT0Vc}ky4J~(rV8)JO1!+ht*xzmkMl%mW|vC&9*3Xq$IVjTSG2aVQ9dkw
z)IKk@*lq(`Omg<jkI}^i^*1y$7#JFokdRC{nOseXh=>rk>&NW#yLZL$zVX_$th67B
z=8&FT-`d`eeDvsvI=`r~osA7&f+oH42D)o#2nGiCb$3U!f2C7)Tkcn(cx~BOUqRr6
zTDN?gd1GN=!6wzx)<(?B-_kW175+RR_H9QGCH&x7HtYPU@8BaQ5oKlNdZ8f2^HF7q
ziQ|b@_deSC`TNVR5xtyWUr$X>pMB-Hy0*q~=~5pal%JHGteG?XvBIuq*51)EB|W|0
z7sML^?QmP_jfjrk_>dnL9eqKB=$)82Jr%b|hFn~V7~4LZ1b$kEg6E`#HI`knppTiB
zHny08hv~|d+}2?7nprruC;sf+&~Sv3L9lWb?z*6^rq(G|pu<B~`{s=ZBh|*-lP6Ew
zYCr}shOF@M#S&9jJxR!sjUpk*Ty-PnV9zHb@bpm1Y{B)gJ(8u05{^cHVX^eia-0mM
zQ(ofxFp!iPcJ%GB5*bkoTb+3m08(Fyw4>p~+?;~2aDHLR%fRXVc96G}$JHQTs0=M}
z5JwGu#^I78K($R5`-yC|SOEGe1*b;Nnb$eHxltG564+wv^Wv01F4?<P1-C0~+dDd{
z*(S0K3=CcbkjXi#K5k}x`AeH)1&a!AN`JwMd+pg$kgjA!4T?d?$b>w6=*g;>C!RP;
zsZ?fnp{f4i1?a_sU-^%-gV1eH9Qw%ws$2KBd6dJSd0qG*41w5{$)y$+6adW4VRX5B
z7bY%_F0Ak9=(w3ErcX67G2!meK(Me#lWG^UsQ&=G-+S};@lYx1ZDmPuQ<G)Bkpri{
z%g?=ypZl9Nb1^Va4-ZK=e7H&Vk_-Z|yEd*{voCdZXtp`zA#n&DAL*s~`}E2oaUN@9
zRoqNDdO`s3r$=ig$aD2(k!gP0FVs5rsSSh}0g9WHSdJc2h{^}HkP8S1oSvS3-RoK0
zYHL$w7SAg#{uV7gn@RmiQ&)G>h)m$hmFB~xlz^k1ES5KZ``;d%J3pC0td%Nr_t)vk
zq>0!3yNL5FVo{t319bP{_OgQiL1~|A)ZM#x%le73$ooj0<;SH^cD+gTjEww@p5IBs
zs;VU4&@Mv9<&JEUh>EBB<>dlRJ%9NSrfYwUnpol1t)e)j@k_nWi~L(wR_vp%SOM7<
zXj!-X6?lVhh)%MosK|)u1_jRH_p_>zl$7+{xtDQnAXssr!g)$cS6A0Jv1f45Ww9p#
z_yD!LyGvbo&2P`i({nEs;kMH5@9$4@3AwXY(hM)sAuRQ!j32G8(4@%+AbEH)v$A-B
z5{5)3w=-avJz}?c2A>KsKB}#iIqK!2;02fsfLmseZFChZB9fg5la#cm!C#u|rxzkM
zDu7?nO*gul!1q{P@aasWU*Z&5Aqg9)Ok84OZXcrn0Z4n_Kfir$Vq#{N^5n^jAN?KS
z^p{t*>w}6xY^1fk37V3p*k|heSy@>{Ml}G?6?Ox|?<q(hw6wG|1^g^GK$|!^I24#<
zFFt!wQ?oyqb=|_;oEc&{-5eN*=P07V(0x+HVzIuyNUVbz6A-3jZVfQ{OP91W9O-#6
zSS%AgeXFL2h4Wlf03>f{i(WOBD`0132;CVI8Wsi=3b!e151?k*0i+Q#uT_LxW~5R$
z_(WoCYc47#*5B1NXzJ7xFPxs9-dnil5E7T`U}S9Ev*>yYR%R;79BKA#MB(0X5<&Xs
zrzX}<)EzQ{g0`EpjXU|5ot>R8^YOVSm6bMv&8nlg748jYD#gQX%Di{KjvgK!YN>X7
zjW!M1Ys#miq*GSc(9>)Bjwk8q>zgUZMpjg~rL<9n+5jOCrxYZt`AY>o{*ch0ig=ok
zkn^LXuB3#Zs@k#H{HwpTK36wGP*AX=y?rQmgj>pKqTp8H{QNxKW@jzCwZyPye)9VS
zx}EB5o*x%gDK;j`g15vtU|$LSiPwVSlxBKAwFc{^%jV-Dyf05gZ_Bc<u_0`GlLAlH
ztm5IXUcCZNMP6P$5n>hd=+TS#2G>QZ#`>rzYAdU`2!<;LJ=ReyV&+0myYVyiOx)bM
ztCaHI-!tES?n-T8Js0~-B%(DYaKv?_hayM!F>QGWH8FB^=8YE%`1EbU*RNmW<Kwkc
zq=uS%AwV50$G!(LQPaWv`G=AZ!@^=&VQs@tr0(J}<O5zBtiDi*+*|*6U4gwsCq61<
zCEH{%((<LG2LBCan<i4a2adx*v_OA$S%v@|#cbfO0AqZr)f-P|AX3@GF6$&qbdQfG
z`gr&XUVL%yRmj%cLXa{5D=h`DzP`Ssq~wmx*x1<T&!3Avure@YmyO%n+f#@%tq=j!
z3I$@k3j>dC2kM=mcJjLhWRAh%N4pGt<`1`kSVyh-&}W`eFtV$wYwtW?byoe|{vO{3
zApR7NzXx~N0A$8j$kJQ0oY@>59ld<{@>#3LS88r~Ss9rm9}m_q;o;#uJ(|9-^XDT=
zOH1)PqK-8rY&%Y$N3~P;ngGQxlB+xN9>7`D)Y{Ijv!Q-#Ypc<3-=Q}VhVCFGC54vI
zxKqGa*pw*{ZcEhTuQOX&!@|O9G6qVcf#}i9F);4ezR17;v20L>pslS-ZQ7}3<q4xR
zN@Q{(6ui%$KNm4B`c%)$etfb&H|M_{EhXI_;P0PglB*{qf3jm3{gmzF)Kpk#D6B+>
zmO|N8U_-6D0xuAyzizwW>a+F+!HPbbTL#qE(voe+AixRtBu;X)lbxL!o7}`l{kDq{
zAx*RXKzwRx^}dT>ST%W|!Z)PG9T5NY>GeR__QAn8d6x!&XPKFwR)(?x4e_#OdSF0T
z@M+pLuNccHGt#WfCZTiYuVS7`sc>`(rHg;Q$*4r;As!kU3Y0`=ADpwZg`Qp}{x)mK
zAW%?OmzTrn3<UJ;Zr{0+4tQuUR0l*Dp>dZvrv-=$8ZKE@Ztjfu_#50QU)I+-+1WL%
zaz9K>T|*$A8=NiR<}=ZcmAIz>f`BB*dHMYL$D`dfKyvx`1tjyt``ltZu26h?J$PT=
zqY>I_IMkWM!c7X#`-w{vlqSrIiikKiKe`#I6in8==qhN%;R!)I`c$s3I|1R6Z<sqw
zE9v!Zdb8<gOn14+)myi20W!`YKfZ}-5SW<-I3dSzv4^8&>N<ltKPS|~>6A4eR5P9s
zKy`24)MRjF0-8@;ydpn;HP`PT@Y|PhXWn2CS~=@`Pl8B1HK4G7I8}?`9I`7kE%Vu4
z($7{M;_e3+6{nfA*|1Hs{S}aFxjJb`-yM5Rw)={u?yJMSy}dw*UXm<-p%mdCd%AB{
zMCI+}wO?5&0g!QT@rqVbsnbWe<qTJ-<M0euz$1hEics5L)<(&PDu4o?oR;Cf=2_H{
zuTaUz#B|Hd>?UNSIq(-C`^pV2nYk2lGXZ6ThJ=E5VST-~rink5+`|u803fNedm%9Q
z6}^D!FqNqq!v4;V|BrSSVJtN@wfyn-w*X#X6PFyJt5<t^dq31#_gCUZ&I;G|fP#2Y
z3@?GOS%&WPtSwwTvi9*gyiY<Nuek_hF@Uua#nSI7yE5^clU0sPOic0LCR*;3wA++*
zOby7s)Dx-(vJ?PukBZk$;96CQRdc#eGzx_(Y1~V0Y?RB1Dl7W|4Af0SwmZjmOiteU
zLRGW6x(di=3f`z6Knc6V$+<IJ+5Z_W_CSZ8Ds(5ZoSB)qNOrk9;`sP@dfGg?{rKdh
z>h|F6Y#`7V7BJBjwM{$2Hv!pkRyx4kA#`n12r1rRU*e;$nXF#`-MI1^R&@US`Jceu
zVFlaU*Z0x4B><>X>}pTZQFDHqav~xk#t!R99UYwzI_2<+ii&!X8>zufrn*3FWdX=r
z$1j2Dq62WWpyiUCsB>F>c!6UjQG9xO8Yqyd&z^OZBBSnNFc?);)e_4_p>}}GHMo&i
z0ym#Qi*)RKe0-J%GB#Zj)6&wu64e0tBZ?LFfNr>kFt?oUr_+4l12aZXR}aXMmX_b<
z=U)^D0fwQW?SQu2`FNEX5J-MLKGE!wj|@~jzL*O>l>-VP$|F(C0tpm>4*wrJJ3Cuj
zNY8cFw_n}efJz4BJ{qrcq@;Q9E}*uLj#ll8aqV>-q$?5M=aG>yt${UNt*fh>6cw4C
z2LzF}y1HJ?IFKMr&?0w$QlSUW^V*!n<MExb+?(qtpmIk>Mhc%Jqh@XSMw|{%+r!I?
z(A-#1pqXzptQ!inm)iCvU*M3kw@M2Rz8=<$kGiX^9bH$4SZoCFP*PF?k~HTm0p22H
z&kCcX3!&rnUT(e{&3Q@Q-y5j-B;+(shNfA1FJHad+W2NF-Id8EZVN>ytEi~t!t+vM
zUI~kerUK$Ar)8o0sYh34eLa#uAoPec;BdHgTe`Qq=dMkCVMV$NJuN$bG2#Xq?%=*T
zD;MpP8)F(|+`wn@dLx^E<ybD*aNi{$;N<vldn#kgI_j2oI|bYJQsF?!4N~OK)1RAb
zYiq*i%q=VqrDQJTF|x3PJ$&e39(Lz4k*e7hA<NZhI%QTg>RJKlB2VS$b;NKoBn>_r
z!fU-Wl&uEDXuMtD#`?PN?$`EX1>_1<L0#oFS@H(A<(R$BGT0SiLeEXEK`|Cqju(%|
zG>HhsLW*R&bRlttCM5>&JU}Z0mx+O%o?*K}P-s=vZqe-uI2>*S!NQ+QRUA2Du&PD9
z^&^y!op#@t7cclU3Fpzrfb3qYkPGVX?RDB->SJF9fBo@EHg8$R|G>rGUI?pMfqMIp
zUirYsYV#xiV|BjEm*r$-CHfa)>0UsnrvjA7b~%At`OZz{y}dn~vf8pT{fyVdud4zb
zbom~a?oKOQcYToFgE;v4F2G9b%M*k3`g<q7iSmv4%dsQu9S2*B@8gMWZEcHsTYKM)
z7MfHYrj&4mD&IXh+8s0N>FKF=$Jhd-&&Btu-M9hh$L6)kZ1K>G8%;vT8gG@=EFS!%
zK3aIHTV7ti<2hw2_|$o(zDmR<obE|NLi<K}D*N(9S2wp2Gc+<jF0RyZytp`=H&pq@
z?zmNFdwbQa_v!IrmE*XlJ~fbgz*bEShHUW}8Qd2ywq*zp8Zl~CF6*Lh&`a<4)NV!!
zC-f}7PrMxRN;ji8<0jKJ&vl*<|KlH>J8ZnjP`W2+X^sAeTQuYk^=G@jsh$4l<X&~7
ztYWJxDI=mz8UH*52unKU`}gk`i6$1jpvt8A1;W_bT@JB9qdx}NSCp21pYfU-<(;{A
zw3?eBVj{@T4{c}~+0yc_xJbzswX1)zaub5`rnk$zZ2E<f|A?240!Uy{QBkG}Tik)i
zLnvD8)<X9V6ALm2NQr>p-WXWY($)qNtWczGd_qDR(xYGz=qhud^7Z&OU1xY!fFZn?
zjwrTxYTvDeh_BZ^+8phy#)pcrv$JF1YyuIova*v341@J@oiUfzTpFQ3q%dF4s;)k}
z8N?f2l$Ng9+ZI`iqI;5(@_u2bXLdIIGkPD$L&bS{EfkHz<Q{nEr@u<{BTl`;Wg2u_
z6M=6|vMIIAT%;iHXTTL1R7=W63i@;rLk9}F30!eOV*lI5;XqI&`+-*=+3I)TyBtVE
MMdwDbvh{=i19L6v_5c6?

literal 0
HcmV?d00001

-- 
2.29.2