From c3f942b89198c72ebe70428497eab2e79a009513 Mon Sep 17 00:00:00 2001
From: "paul.albuquer" <paul.albuquerque@hesge.ch>
Date: Sun, 14 Nov 2021 14:01:03 +0100
Subject: [PATCH] added source codes and handout for queues

---
 lessons/contenu_cours_struct_pile.md          |   2 +-
 lessons/contenu_cours_struct_queue.md         | 114 ++++++++++++++++++
 lessons/figures/fig_empty_queue_insert.png    | Bin 0 -> 20230 bytes
 .../figures/fig_non_empty_queue_insert.png    | Bin 0 -> 30022 bytes
 lessons/figures/fig_queue_extract.png         | Bin 0 -> 24244 bytes
 lessons/figures/fig_queue_representation.png  | Bin 0 -> 7251 bytes
 source_codes/queues/queue_array_int.c         |  72 +++++++++++
 source_codes/queues/queue_array_int.h         |  35 ++++++
 source_codes/queues/queue_array_int_partiel.c |  66 ++++++++++
 source_codes/queues/queue_ptr_int.c           | 112 +++++++++++++++++
 source_codes/queues/queue_ptr_int.h           |  37 ++++++
 source_codes/queues/queue_ptr_int_partiel.c   |  68 +++++++++++
 12 files changed, 505 insertions(+), 1 deletion(-)
 create mode 100644 lessons/contenu_cours_struct_queue.md
 create mode 100644 lessons/figures/fig_empty_queue_insert.png
 create mode 100644 lessons/figures/fig_non_empty_queue_insert.png
 create mode 100644 lessons/figures/fig_queue_extract.png
 create mode 100644 lessons/figures/fig_queue_representation.png
 create mode 100644 source_codes/queues/queue_array_int.c
 create mode 100644 source_codes/queues/queue_array_int.h
 create mode 100644 source_codes/queues/queue_array_int_partiel.c
 create mode 100644 source_codes/queues/queue_ptr_int.c
 create mode 100644 source_codes/queues/queue_ptr_int.h
 create mode 100644 source_codes/queues/queue_ptr_int_partiel.c

diff --git a/lessons/contenu_cours_struct_pile.md b/lessons/contenu_cours_struct_pile.md
index 95633cf..6400221 100644
--- a/lessons/contenu_cours_struct_pile.md
+++ b/lessons/contenu_cours_struct_pile.md
@@ -1,6 +1,6 @@
 # Algorithmes et structures de données
 
-# Structure de piles
+# Structure de pile
 
 *****
 
diff --git a/lessons/contenu_cours_struct_queue.md b/lessons/contenu_cours_struct_queue.md
new file mode 100644
index 0000000..6c456fa
--- /dev/null
+++ b/lessons/contenu_cours_struct_queue.md
@@ -0,0 +1,114 @@
+# Algorithmes et structures de données
+
+# Structure de file d'attente
+
+*****
+
+## 1. Définition
+
+Une file d'attente ou queue est une structure de données dans laquelle la première information entrée est la première à ressortir (en anglais : FIFO, First In First Out)
+
+On considère ici une implémentation de queue dynamique et donc à capacité « infinie » (dépend en réalité de la mémoire disponible).
+
+## 2. Spécification de la structure
+
+Si le  type des éléments qu'on insère, n'est pas précisé, on parle de spécification générique.
+
+Les opérations possibles sur une file d'attente (ou queue) en définissent l'interface :
+
+* Opérations de manipulation
+    * Créer une liste vide
+    * Détruire une liste
+    * Insérer un nouvel élément en queue de la file d'attente
+    * Extraire un élément en tête de la file d'attente (i.e. le premier élément introduit)
+    * 
+* Fonctions de consultation
+    * Lire l'élément en tête de la file d'attente 
+    * Lire l'élément en queue de la file d'attente 
+    * Tester si la file d'attente est vide 
+
+L'interface de la file d'attente est l'ensemble des fonctionnalités offertes à l'utilisateur pour interagir 
+avec celle-ci.
+
+## 3. Structure de file d'attente
+
+On considère une liste chaînée d'articles avec deux pointeurs de tête et de queue. Chaque article comportera un champ pour stocker les valeurs dans cette liste et un champ contenant une variable de type accès pour assurer le chaînage. On considère à titre d'exemple le cas de valeurs entières.
+
+Schématiquement:
+
+![Illustration d'une file d'attente](./figures/fig_queue_representation.png)
+
+L'accès à la file d'attente se fera par les pointeurs de tête et de queue.
+
+Une telle file d'attente basée sur une liste chaînée sera déclarée par exemple sous la forme suivante:
+
+```C
+    struct _element {  // Elément de liste
+       int data;
+       struct _element* next;
+    } element;
+
+    struct _queue {    // File d'attente:
+       element* tete;  //    tête de file d'attente
+       element* debut; //    queue de file d'attente
+    }
+```
+
+## 4. Implémentation des fonctionnalité d'une file d'attente
+
+### a) Consultations
+
+On considère la fonction queue_est_vide qui teste si la file d'attente est vide et les fonctions `queue_tete` et `queue_debut` qui retournent l'élément en tête, respectivement en queue, de la file d'attente.
+
+```C
+    bool queue_est_vide(queue fa) {
+       return (NULL == fa.tete && NULL == fa.debut);
+    }
+
+    int queue_tete(queue fa) {
+       assert(!queue_est_vide(fa));
+       return fa.tete­>data;
+    }
+
+    int queue_debut(queue fa) {
+       assert(!queue_est_vide(fa));
+       return fa.debut­>data;
+    }
+```
+
+### b) Manipulations
+
+#### Insertion en queue de file d'attente
+
+Voici l'entête de la fonction: `void queue_inserer(queue* fa,int val);`
+
+Il faut considérer plusieurs cas:
+
+* La file d'attente est vide
+
+![Insertion dans une file d'attente vide](./figures/fig_empty_queue_insert.png)
+
+* L'insertion se fait en queue d'une file d'attente non vide
+
+![Insertion dans une file d'attente non-vide](./figures/fig_non_empty_queue_insert.png)
+
+#### Extraction en tête de file d'attente
+
+Voici l'entête de la procédure:
+`int queue_extraire(queue* fa);`
+
+On commence par récupérer, la valeur en tête de file d'attente via l'appel `queue_tete(*fa);`
+
+Puis on met un pointeur temporaire sur l'élément en tête, avant de déplacer le pointeur de tête sur  l'élément suivant.    
+Finalement, on désalloue la mémoire
+
+![Extraction d'une file d'attente](./figures/fig_queue_extract.png)
+
+Si la file d'attente n'avait qu'un seul élément, alors il faudrait mettre le pointeur `fa-­>debut` à `NULL`.   
+Dans ce cas, à la suite du point (3), le pointeur `fa-­>tete` se retrouve à `NULL`. On doit donc ajouter l'instruction :
+
+```C
+    if (NULL == fa­>tete) {
+       fa­>debut = NULL;
+    }
+```
diff --git a/lessons/figures/fig_empty_queue_insert.png b/lessons/figures/fig_empty_queue_insert.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d7aad80007c8a2d0f1a3ae0a3d9561479737a23
GIT binary patch
literal 20230
zcmeAS@N?(olHy`uVBq!ia0y~yV0zEMz_5^miGhLPht4r$1_lP^VkgfK4i1jn5B(o7
zFeos1x;TbZ%z3l7dcxytl`npJPGiy7ZDx3Ct*XvRrIN=pJhD`i^4_S<iBOxm#O2n?
z9fnmi0%T^-Si9-ul51*DRPt{0d6$HQKRMFhHpzZgk(}?!IkzP=%Zg>fO^<Drb_$H)
zjVzOrx?Aepm(6*S-^o)aDQ08Et!eGQ*>B{S#ruA1{%f`0e%CAu{+j0uEOzrg+pf#n
z8r5(x!9aqCtvF@puLZ0J!0hImq7k#9!dnjB;$dq(m|!qtG4HiBkjmzRGPxVfKtd8c
z&oY{~N<!q_rPrK==(fC-kPFr#apvN)S<PY$%?D)|niOJo6g*t8^gx2ajExnaXW#!b
z^L&k)Kue<Nhg&>s#X>s^9v(V#=8U6v<G}=j+n=AA@821>zJFcwR!N>`Elr|QJZ!~3
zK8DVm|L2MN;?;?{X+Acmx9nNC^n{sjdDo=`gKDO*3<HTXiD^EeY;Bpw;j->!c5~+i
ziY(dW9{BeBiHqHyX6vlxN~yH=<OE&Y=+<nRmC(x8d{D;kSa@nei|B_tcVvziR;yoi
zOp3h5%x|;d@Uat99!IXvm^N92L1Fo%^V4Ooo5d}d6ub4sjztrV<fku)6>PRNirG=H
z@M@Oq77+;^w#}{I_kG`c|L?nUYx(+bo9FkgunC#{&_YkH|NX)Uci|MRpw3Bid3jrx
zJo>rGK}x9h;=7ezpMKh$_Slq{Tni4a8JbOR)7+X$w!Zl=$)UV2K*Vy3+0-eIJc6|=
z_H%;5dxmDy)|nG$>?)l3ETZc7ECvRLBAd;5AwFByJ0*f+<|SLU@!}6Mzf%{?D4Z(E
z(6ub_?#8))g~6I7eE1_~OSV3*WKglJ$zLfxNrm%6%pOQQp80a%)|qWR>reYcNrEhr
zI3w4vb!K3I2<wA|AE!r6XusCDXrmuQ=F5%KYbKxAs&kup*5jMWj~4nE<_KtQ<37-H
z{Xl7~LPXh_TLsVOmcI+w#QbRM^|;^vzVEO9eAYa^_^jaR@Tj$6-}jvV|NZ~(i}&^Z
zpU;jnf2DqK_4<8PZ?|5LtA4vx`PH76;_Lr9JPN=6q0Riw)&@|*47zc;T*%XK$;>Cd
zM^|$kPbqB@f7Ix%dzy7$F6Wz>Pba0_+V-$9eA;Hd(??WY6K-Ffm}}({)7NiZb=ct2
zOOwL}zZHJ%dr*1L{{LtD^JmTkT$vacA$z>?&Bo*37C&!&`v2#$|8Ku;|9kzv(V9c)
zcAsZf*!<hJeQ&Od`uyK_p8xw;|JVNC`rkil1q7NcTNKV03Y>kUnsesfrsexLcy`Tu
zz*m|(JB9zJ7T?S%OABIF@3^^U{kecWOFjrOOkuzBt>mnNtM8l?pGhjR3pHB%9@~66
zp}a{)UXk~VK~L?aw7BoPR_Fg-|NrUsy0_CBm!_Yab8^{b<xkg{57d6Y`@Mcy(DQxU
z_Q^kzl{vB5_wE;qz=Y*rj(ze84f}h7V@iNd=a~|}>Vh4+7EO_5VL0HCW$5W2P<0@p
z^4}Lr^{r1bFaNvvde+lTX%T(x9<#(nT@%V~FJ64IOFq8m$>vou_IK8Aetb^vZQ6wF
ztW~R~mF~X2jb-P$*Hs)7vS%-QTEEfexRLMe?>|0j6>WR-=G~ji4f@kk{ikXlHulSF
zI8$>^=yaCQ|0f6LSQe|<wrNfFTKaD9_j@Znw;sQd8mRNN<;b^^nTuBj?=O1(H@%zr
z@-)R*Kdocm;+LOP@SK$@(Z;xY(aXJoyS5+KQfpoO!Q@uUl89-E61R-cXaD_dv#TWE
zVVai5Ek3L7Hv9}~8{F<l@98?R_wSqI@|AD)tc$n!pRq5Z@YgB{ub^w{f;~$j`w}Hi
znVRIfggsjMICRO593J`3SfQhzF1$ba;*zsZwg5xG+Awyp(%|?xoJXI9Nq=1$Vqq4a
zy*27<tAyd^D>+-EzD~W#A?SDZ+_R#YE*1hkscFSKWAtQs*@U>i-YU|Q;&2Jxc_=9N
z_T@KH_tTP|zm>jv$VX{&NH*X4p!Mg@sT7_5deTa+cpg9h)+k<vtgW{kxs4ci@BMZ7
z=Z!!1fA8O~+4%p*Oyl%@f1c|1=T*Po``zy6lga=7=l^{m{ylETTZ!kE23^ly<+OB&
zT&wCgzZMpj-FwxkrQ_UHHq#uPrA-HC9_8GxmAq*VAIqiF!sgMl6q#PWy4St=y@|N6
zi^ld{i!a4qT#@F~c;k=Xx}?q9Hf;%!{c3WTf0nl~3xi8qc>CNP`z(ZcmQ0hfezC_)
zT()etJWqD(hm6K+T!KnAyNy!x+@||Y{{3$E`rn3Mj|ltstk^SquG;cNuhzso)94b7
zTp3Zg>C>}KEN6>MB0QIB1Tt7H5_Jm_6+5uZ^4^9Sn@$8<tz2;`&?Cq5=v1!s*?Lm1
z8hdSmbY9EEr60Ld`~B|w`v1Sr&#^RKbZ%n&RK|i+o3cKucD~hJ5HXKg;^W~yp_IV7
z-IL5)F5O^Dvs<@v>S@u-9~+V$Cxr<eyRp2iWNXR}ljD<@EwkPd5hAg8#Vfw4AzhL4
zm>3*RI5RZZ@GHhI*y!w|cwYL$@98QlbFCc8Ty<w3_@Hy?bldT??#N9+A*ItNcDZic
zYug^<texHVau-L2-w7?D{o(u)Pb8u|FXxI+G?^{3IcbjK_Gww7hf4&GerP(Od^v5i
z&~;mt-73@fE>ZiMo47MAQupPyZjH957Pky@_GLdlZ+v=b*IP!0rx)*B`?$kx<r?d|
zucbw_Q+B`V5xccn>)%<!1y_oFP8-cBWoTLybJ^fTUASn<ld0TGwkUl$YgqJU(=9uF
zb&pLF^7rQ@6-1xcnr<Q;F|Sa27U!NAkv&Bla}>;?b;`EwZ<}}hV(8g|lNDi0c(#UY
z6r6lU>t@CCD1|4LatuxxKV;8(71_)WJr${Z+ChG?H>1t*ErN$-tu8NbwBqa8nzmsQ
zx8TE>H$fo8L_&8>>H4!<q`EnkHa^har9Cqs<=TJI@Y&sLL8sSV^U@QUcXxU`@837~
z*ME*Rx@RM=^x>9|`QL2g$?H!2kU6+@=2j;OtN8bgPo1x)MXkN|Do29JxO?&+uDo?(
zNsJsWK|2rqsZpHHA?%{D^+tKqzO6H_w)*I>FdWR#vK8iJaAa}nEU^-63CLS|H7oRT
z<G=Q#9rY(OPbje41)Iw?D!Xkqn%>98s379KTv)M5p~Im<ZEhFKg3WhA=l2UX2Ix%H
z7U7!d(xIT#`tSKuziVl)yk8nH9?Z}R*AOXMnIX_oP?ecHb!p&PR}KZIi!)2q=61Dl
zFf`0_FWo$g(@A0P9qUuaimX@|Tr_6Q@O1gJ?C$i%d+nGQF3kIv7ioUl>_t{|w9n7K
zf{hLb{-+1OIOe5zt5|aP`@Sr-8}*%H+qv#X%;NlV@`-;~hl10_GjHzvxszih)#9+F
z{$kRHTW2n8`}*{dj|ziB%irjU3QPw*w2Xz-I*vHi-u}E!Hzi4tiRoa1#;j8*mo^G8
zK8)GD!A$(^er0CncPEZL;<;Fzcw8%2XK51yL(6{o&HH_}m~EEMO)E8%@yLz6di2&A
zmmc%;?Hp^)mRw$Z7L=Lde_fjHX8tlfHOf73_R6!a3~p;v`md!$T`dt{TDfog!-BB%
z!vY>UIb}Ciq&YF0EONB=J^j)_VJoPNTfI}@NB;M%PAwh3eyf~yTfA?A0@KQ+Rg2Hw
zC^D7)%Gh&t-^LjVPBW*bt-c!L$9`+_&PkkQd(&sf{#|pnjs5Lw-*snytbhCE)3YO{
zt7i5U-Hh>LSG3rC;U;_5x-)LS;<B}O3J7%8<z5MwZkoC3{;s&W-l~^k#n)cVTC+Ap
z-1wp6tuvQ+7#n9EjoQ0y*90y`hk|8``>#A(%;KP6w*6Md)~K~<xtg+U4E6CVBG0xk
zFf?`U%vyVK#d_UTB^HK~yaUf}U5Zhh&cVna=y_I*t957V)U}7qrw2DO{)$X4RAYD;
zQ@Xh**G}w3{b~M7X>Qxso^`!_ee=c{3V+N~i#1(YE?+G?7wyZwTQ4bBkLjRKX|hhQ
z+um8+!WR!^)n4I^o!`&o!nM^gb+MPVSB=5t<$vB<2H(z1dMu;)TFvWId(K|Y=9y;S
z?-ZZ^eee6e-S78RyUb1AaPZ18vs@02<l~{QnjcD3oY^Mh@$GF0uigB0`yDRKi4MHl
z>&$Vn@pM~W(~LX&Y&`>27$%swZm?ly5OHPtWWylk(X~iZ$YatXbsp;mnbQVy|E*Q)
z@>M&2t2FPuN1%vkLd3D@!Z}agXDCO9e_oY#OHWC&jV)hx=kD#su5OY0WkNrn^!>S_
zBCgL?E1OM-HF)(NnZT}~^yzI+x~Fm_8{WNsa`Rj9MzI<D6pdt@51iJwuTl@?+^lnW
z)5j%~?mvom+gLNlg#9e9WVlzcl6pX&)~V<5JSxw4a~H2%Jbiv7d(*->MRE6DXfhN;
zu8&Y?2&)uq=ny?!G>47BOJnM$U$^BeKT58Bbi#;PMf-%;93#1%Ka@^-x~3lBeH`&E
zHDRZmxJ^pPm(z}NXEtT!$`osI%`@U*w^+7)vghqziFz7cN}02kGBhY@@>eF$GZzpy
z*Hb!N#JIk=c!G%QWfO*gFDI;LrQKl2nAX}L`GHA3?$oJUN-Nrqd!JI|*4`+c+vc-s
z=?;yLg>9)3aUq-5#9ovw(3*9!d&)}d2QNg8HG{&Aev8?ZWMT9=gh$+R*Sixsk5?U4
z(p6C{wECvjmN>_*)=EHP!={=g4jjIdthhG+pQ96+rd)qh&xtQkgf*f6f6=!X{)R6(
zr(ao};F5H_(|GspyxQ`Z#VbVEBRB#*t=9Qv2w#c5ebpsy)1#kBkxw&(c7}OQ`!cut
z7Gq_`+yyJwe$x~26?{Ffy~bLh>t56;mFgaKoAb;IUi>?KK1F+%y0+@ws*kPD<LVyn
zT&_2--ekR)PqxfwkFMz{=Yl4m?6+sW*c3QX<N8O5HYSEA6$~5RSx)Oc;rG?0DTS47
z!qZ9yhfA?c7kPL;JYtdjJmEE?!QOI{PkTxkp4__o&MU-bZujx+Un}RY$UV<oyJlO;
zbzA3mFP1IS;JRj;-(mUUL(nAAsgrgz3%@hp-EHp7t-AO&`_yw;e%t=;4|rFRtKQuf
z{^ft_ldj9x)|GZ|x9yrc>*X5xitpE=^KEN?eR+9#dHvh#b#K4Cylk@fZEj`9hc%mY
zPWoLl+vM)~=JDCR-|zjd-v7N?-F<4~xx?kp?Y40&?7XydlZ-b*$I+twH(%a!U~<aX
zG4+3f#L6V^-^%<(CbBJE%eFkW-Js%qC@#ZT<aFCL)4L9j(o{H8UOlVwNYPY?oY%T2
zuOeu=p-z#{>?b?deb?}0;@MPR_H|K~`sr=Qnx0!tn>YR3y!wwjH>GLcvB)kci}bMj
zAj0*$B=%v<)ZL*A#baU@H9XwOu%}?=qwc9e>B<MTYN<VvRA@|p_@{V!@1}REwHx1d
zr7=1*Jf3N|{OEr1>b=J_r|~wPJ*`^$>1}&+)^5g^^(WmL1(=dvY%g%p+*EqDr19C&
zCtH}jdXF+b%T$u=d(5`B@U8H4z1XThACI4(WBIu9-km#lcHjT|&V1j;-u#-!(x6^p
z{in(E|NP$n|M&a4@4MI9RW~`a9_{o@d!gIaGwGR6;H=uiTGP)qPfPT%`+f8Lz54%u
zzuzf7-(hv!XDTDZq{NI5GU*p?aeaz8UMM5Z`02l7$jPm;3Nt>IuhMW7d)d8d#S7_)
zt9^V0E8Fz*bgunK-x|w*pg4EAE)#>o^{)(-@7gw;xclQ^-<`f3p2IO_r$moC&r1%y
zk~8VKyX)&4%oAQKImEe3oPRCE&FFdgO6uk{k?WpYg)P-knVNoW;&Urm*`(wH90!X3
zd@Oq@e%QOxa=t^qr_;sxUQZ-eDcE)iRnBB*2s^d>#OI)(YdXiB=VgaZQ8|6=saJW7
zWLF~71FOH>@@1~OKir74o2UD7TDQmlP!EG#*AthYs+|A4XF(LhgDj!rpKD^W*v&rn
z<a~N_bb8~0%<Vefi$XRf?)~ee)>>odb%4A7*v=(OM7q7go@74zGSj%|C}YBsBrBE=
zpMDza=%;O-bl?-e&1OCqllk8df3}P=J9qrE8bi#w6Ef#Ne|$5Ik@13zb3?MVE%T$z
zMOSn^Z*F?3#Ne=Q>FS#*r#qxS9=}!o``O!lm52LtUhmXnI)8J=oQ&f6CqBn)xm!8$
zwNi^!yu*`S9E?S~&1^H<7^Agk>V1m2eL=+V9Ou$`7c192W<1MN$=a{+Rclkhw>LKz
zHS$f?V&1U3!q~mFv220<z8{ZTxy9}NzVx4OS^Vr;bpF@$$6wdi|CKGj^YI~n{g3?r
z-}1x5!>?bz{ylVq?3vG(&P>qY?|oWgVKq<x*twZaq6NjNW<u}2>)x>ZozD8Fdj22z
zr>CyFUzg1IcKdL&{g0!kr|Z9;8<T8!t~f#C?9&p4rk7d!OCP?<saTzTO5uF_uNoc&
zqsW@RXSb5nq~3h-Wm#;zvrjiYSMSzy0p=rTf;R7*ll5MQJ;?j)FQ*;`j%BNT@9Qsq
z?06|FgnMJ}xy}F+)7?9EP2QpWI4Is@i@(^JklFhpQ!C20hDLj^9N6B!PCr$tk+)H3
zv$ywVL8gWb>85q(+J4V}D(igV;?lLxUOC;G@5RKRAmOWD!kT!~>Y|Irw8$58yN@L$
zEjWDIOOM4tVD|JT4mabu9Z6e%M*P>a-}o_BKIE3{-=!O^=D*wZ&!Hu0=h3aa8?#Su
z?kretE7-H_xp`}xu1nQBJ|(N`pO>sT>&kw6tNE(dnd_ph1pJmfpLW~r(%Gja^S6uS
zR4wJr-EAg*bIt9TlPruKFKX86uE>|S{j(?b`<F98o3BRsmD`m`rd<~cp3BMEBK&e^
z*8Awivm{fy?DuThIft*LzWm$Nl|M~nC686kubh`I(Y9*UB$Yy$^1G$i84r|Rk3C*^
z=jP`0|Bv+lJ$ku({=bj?^?RB(Pe1*%wY9a;HTit;UaRS+&z?PhHZ4i<(Dk%e-aAXu
z^7c*WI-0h+_t+~ZD<KZGqSn@|y;o!A`Y%s^{=BF&BP&r~bWY*cnN_8Fvb;;5O@Dr=
z)5Aa_Gy3`U)t`%ti#NZFC`qf^dNXT{ZrUP7r8z6jq^|myOp9J;dTm<K#sq~~nrC$L
z%O@GmtoyQu@9_$w@As<TU;Lc;>92>?Ic?#f`Tc^{CGT^tWoKt+Kd$8Uy;r$7?)LI^
z<!+k;*I#}0TP0v~V03h}^sU;>anf-&B4$ZGxOq9tG;8ZIx5t9D?`7g&B-(EG-@Vv7
zVt&7%bY9+HlULc<+17h3`BvqwzM6F{`>Ue(!ktF1q-|D}sERXvxcl*&{F<|0HZ_00
z`RmuN{l;G}_Sbzeum5bGzvCer!;V+0R^R*c%=~`&{aSweKOa7Q`n3P=?ft!%L)9iT
zGI&mktNnU)-Xg>2JI&;8N0hESf4nAlnVCHI^RVdIdhgd}sqOf<dciEdpZ_MGUU^_%
z+X|Wb++}9sib^}DRz)A0xioF{z6s}k?y8&qKQC8NkRyHCG_K9kjZ?0tDKkH^do!o`
zQrfYQ)Oj_ZPAacByCv#tt4qS68HTx_e(@G(SB_$j2yK^+xmlarCqMJjbMev5I^lRZ
z!i$yJxjwK*YwcOrWx`p@u4egObpCBoe7E%a-Ll)c+wYd${(b*{-TxEb`g>DyKZMtR
z4gXjDciHSbtGh=J#Pm!{WpvmX^Y7aBeP6GxulqVJnoV6(rY|-~H|*=#7cYAE%=5Xn
zA$E0;p7pZp>F-4Kt@k8nq#iHXzMb{9yvHP^n->1f?-L$W${A_3oy|@aXUN#O=Et|>
zo)EpvIT2b`zY2|V<c^0e3x0m*`oFxarniz?LV`^9EwOy`pkU!)hqkDuHD)W%^FJ#%
zs1>zQC|vvK4;RleenXY`E1TL@Nd5fualg5&uc^gVnNL?`BfUP}bn2YWw%sOTgPF13
z_B%zVb+_O7H1GSK<NqsuetOzh^qK$v2ma^h=Kg-^U+)zta=dW4|NL+N|D9U@=hW5k
z_`iQXpa1PUum0c9%gg=iKX%90T;F}q^yEz2^Uk&NismVHr>+Z`R1p$ZHCOh{q!kuL
zJ2ft*-MjIz<9pY(-wIAAlp_-lM=x5Os+dser!D4NC@%J=y{j{1=1R}4&kZK!so(X~
zmpu8@cd}iM;zdK@!>8I*7bPz`#lXODa`m#8a#okG{cR94v9>;Nysjsx>%81H3u9@S
z1^$;WstIr$N!l2rw|&Eg2e-MSr!8Hjb-eKYuWQ@w{ygNrU-$bhXb>`Y``vG^R<AFM
z+WYC0_WsY-`#+!bulw}e{{PP#%abM-28D-mGd8r_JW*tcTN?4{hlR7!^^Xh_p6{Ms
z#c<;DnV^dcCdshQd!1)u!Le=L)JK+4(^JnnGMvzxUc%2XAylg|X5|zM-zm3ePStea
z__^_HpMtu})Q=0x7EF7yg!h@jCe<USKR%G)%T!o=yfP#`@x`q($^Ew9t_1u022c5W
zxNwf<995xC7o~|MR(CB|rbfp9c_hC7@7w(H@a(Nope%HK|G!e-%g0{N5b~-DoW$by
zoVC%(B=e=3mzPtZpPH^`lBCz=Q(-|~$M&w#Fj_iErK?Bbm}{Vy(VFxrJmGJb7|rIJ
z7kcsS>1}Zv9~T;wyxzpSOZCatMN{|u57Uxf@^eqz!ik|ms<A6l8r4|k?&^2-goRbu
z`K^v@)SNoyM@Z{EX1^&~pkd<n_SI3%N^6ch{<zY6(|d_F!@raNU6lWO5fqG#uIBe^
zK7Zf;|8LgTs+P3dg>$0w_ihba&AUZFiu;L`o~QAZD|Pdw+X|o0E$7>FzWij)%a^<F
ziTzp|pDpe5Hezb!?e>4~ZtCyJKYvvEY-o7w)xU-I&)Ay}CX^knzW@84`uv(rpFei0
z&wH_v`(4_HTW1>g{ODH&#d1|&i_^jsqnSQx^}n~*{|42-jUJ^FCVc4=U3i!$ZYpS!
zgPA3o@x5~Rx|qsuH`5s#R8B_dJkvJRv5s40d*&kJY9r8q^oE4oH2I(3>;HfEQJd_e
zcK_$O@<%QckBhE3CBtMBJT+99ks-io;}+HY&kqmirGMVVuA)EvN%EuJ=9=r)X{6f!
zu~S}o^hqJt$p%Z7g!#*ARU~-o{(YXm|Mj}v8?=gJe%^U**B(04nZfgt&S3+d8=}7Q
z6RuTBuSp8hu&&k*6IVHFv}AF%Xmt+zVNDOyP>-%u$+m^IpZ6@=ef#?H1U05?V~H~X
zda=7yx*l=s?=jf$<@f#n|Ke5}+5h|4U#_Rh=HVC8bu=mPQQ4Q>2Mu`-7pUbv4Q1&{
zV%?e3_c1GNQc<9wT2$YSnIY}sUDN+`ANi(!^-w|?@4d`J32jABPfh*&{Jj0oCzHS5
zEx*6q{_o3z3U9Ohv-9`;d^S5@?qbauUkwY@Jr8;FZ%B9c8>5Wq-FUk=$zoTOQOvBz
zp23%8qja=-0z*pMy|j+%_%kvnJW*tDnAd)5;^kv8-b-1|uAB0?QuUn1oE1+#-%N==
zmH1@FuEbk<7xr9OetO5UWtqEP?vT5X6BM-R<5{WOo~EnbX8Z}5vv<Okvb?qv>!#Ek
z?M*tm=Ey|Qc%U2u!&&dhMpecM*%_&44PwO^&vHh(K2q<AX_7hpDWmVOW2eF7rt4`2
zGjcza&WitgHC}e3-{tc^zL``jJ}zXBJZka#+nQ$=_b7bW5-ViscV$lQ?aFnzS<mHm
z*hiOn7M%KC?6WCj@|5tO%!c_)4T^!+<Lh7j<9<E;{CvyOTIp>T&(cIak8f5zT-u}b
ze$}D1CfXXau6F+F&@nxCN9w$oY3%h+Os6}e%3VA{P99Ue>LMcFZ#-||os;Rk+h%QC
z8=`zGuX$#wA8*r1soPsz<|V&cTKxP}+uJGzh7+YS&er9A#=8F*cBC3=PR}{=;iJXd
zteX{kGI~|79@Fg6seb)(`}{PE)J0_yJO}=zJU-mRDYNy>yvONtZEW7Cy?*lQRo40M
zPhYKG@3%B)TkdwZw7D|&Pg7Q3wVD*EzWg+3kgu~f>bb+>S)7jb*G@kzQJ4_-&VE`{
z*0!j%S7SJwc3us$e!p_Q!Ooi*SHy)}6t;%sZ@C$%cl6k+M{j&)Fepu#5&w0wgp-2d
z{%h~nZk*IDz_78^cjD}`XN|8uPj)c~ek+ozezjxU?URx6M=D-AU*}5XSTfDr?{17A
z`}VjNy_Hefn-i0i1@pE)>E=ANpX=`;U6nt+E55NFo>NkA&GU@s!l0EuJZ;?{xHp}9
z{@MD){nBb(rCs0W#hw4B=dfbG=(nO<**UTGjSDQdFIpwtF0hDsI`3T;!=1IiznO7)
z2D6+tW^f2xGT*wHZPKEQE|y74GFIh>A2IfJU3)%ndf#cU{F2-!x27dVowIV>EaS{P
zBlYdkf^CyhZ%3<%#Orj;dXQsQ*b@||JA2yei6Xv}-|ccQKW7rOD)&|&%gt$-J8Mfl
zXL%pHnOj~S;pzEgbJkJsE|G@SqS{NAaLY1IT)Vn5)HqjsqKI?z_P#rwLQ?{QRz6xO
z+Ab){_}(N@jV0T7hH_8t?c2}pf3V?aD4VwIF=+BiJ+~=zX6=DuTZT)Uw`Z(dGeOWL
z@6$Q8O5duqmv@xUf0a|clQP|`S!VB)^Wvu57J=8iBJa;(pSh0R<aCLta^@_i^u_71
zUEEfabyvC0Q=FKcU0E2DzUJ<htzY*9NhNIc@$OleV?TS#iVm+JUF$_>BC;-~Of5Qo
z{|?$fN0soSJod>`t{Pqm=2<4c=B!L*%;F`lI-XkY`}>$nGSV!vjIrUQ)U`rSA6o&}
zKoM8T*yHDO9=tdA?MjVY?mz#XUD4O8;pI9_>E8a|uN+@>=HG!L9YzJQ)0gayYA7-)
zw)`@cb=x-U=D*gSZMJ%wv@2aTV+&rkgqUb4-A~=+Wu(KbdiTSUbC+7zzSdupU$bFL
zmvp#p=qLUSTkih1l~ucHk=uUoWSee(>~49ZbtiPfwIYM|M0{&mcfsz&g%Sa+S(Cmj
zP4t}B;<;7wiG=83M-g?7I}^{;bXZz!5dAQbEix-eBk<-T9Zu=jNBWj+PCdOz=eAkb
z@yMw&jrJWqvwi>HT;I!8b7t3U(Au0I(4=!oJT>s*-v`<AlC!!_7}p#>aiv)Hcwx?U
z<_|Hq3uTUf+#WpPbyb7S_00Db3gyYOS$EEj6=-Xgxi<y279dei`f1l=#q%4rvdm6?
z{?rz#d((fns8Pt(MVoHT%6`4-$oGne1(B9*=e#{5jdPE0ED7~^HlNuc*HdFwocY#G
zFDvFHzf{$nw|58Myw@c^rFo}j^=$jip?$J&`x=j*T&kM0cl$V8GAX^OlRfSA&c0Ah
zF3+bkORwl&JLc-dFz<2vV!4SECyKwbuMS(e<Hy0)nKM?-{G9Ns@opre`LxRm1D5SN
z8nZ6)tjnU8haP#=Za>8PC?$%qJo;bR<y=;qi8u54Z*W!c%*yVbnXy55MGJ>pdJ(sF
z?(fUDVz$_~aDwL6^p-RITkepxGBUnHkl|p-)|(Mttc)E;oPK9tS|OGsJy&>PMpjv2
zsm<ma6R)h^yzzqD`iC=j?hFxN=(ypu_iC2us?8e{(hX)FeY#VEk>T#OJ<dy|7Qd~#
zv?k5z?&j-~?}OBYZU~qg?%rY|t;o>v;Z4@+r_n{<FDifX(qmzmxYO=(;+c~vO4<(&
z{}-`7_r?!2X5LYdR#=!<wrxW|u6;z7cdL(<ARmL^Ii0sV-HI=5nfZKPb>0HG$Codr
zl`THCWrLY9<Jqd*+}ySMoYyaYYn6W``}c*?&2iDId0%deTz~b|;`0_Es|;_wlRkUv
z)Tvtzwd-%*XpPvqQ^P@F>lXG|D$gPsYG?Vet&7{JX?FV9QkB(Qg?{?CXE_))1qq3K
z&<XYMy164*@Z-DB=XU=6cH7ifI+i`(z*lfm+KpQ8_s&5ko8|9bI&;Bgb8^ZQd9ACC
zX^Yh*=g9{-T|DC_Z#i#aw7|68+t(Y+*m$ta*j?=W=LTOc8Q-8ebHo<}T{Hi_K-2G9
z*Pf-b*)<+`GCa>bl<<vf(&SH{mm1ovHkiTqVCzg}?z0zEoc1v}8_76JMe{z-n3ftl
zXIYti=JU*1Kfel=9y@=zWwLaFpM{EgQYhQz<PW#bOl<W!<+=UQ^F^-fcs(`!n$l-a
zllM7vSzE#L$IT7>ZzAWZF|0Y2U?6cO??AS(ySP^5rJTq>g>w~V%crq$9k}!~<z8~D
z%K4*97j;Ze<LmqQHuGF<Zf#ajqJhMjjV#&5?vh>8Pe=EDw76MPE-cNx+1w{Zs^(pG
zy}9W@0|}mI5l!W@3})D}Ra=5IOaZM+**rZV6tr|=8UM93gBiBWkoK8E!fr{PwEP3B
z&K!I=bJdzz91IOYU9l?#3?<HRGJ={%at)y~nOjvdrzP4Hl!RVh+PPJ7^^7x@mv)&X
zZe~vXWu&}Y=XoiAgO}E-BNMl&J=d<Y;m}%X<B-XE)}PCZyD~Io&8C<ue|csXTAq)r
zyn5rrC(e)<y|kZxC*o74J$blP;!Ff+0nAO^h^dwt9)2Mff)3^0zxZZZFG~#I^I0KT
zA=)_c&5k7+T}S+FB@UfSxyL&%P;Y*HmMp`$+dTQ6X*)~)Es~FED5!h9-*D;ibMfEo
zE1lw&oaw#AVD?=uu=>lN;@P#4J$II_w{XjJ(PT3gyOGBRTCy{Brr5fbqMH{@@Znmt
zCM+law-`g;I<2lnSyLzJa5b&Dxh`^&tK*4jXL`SJRB|v(c)rjq`IIx~tk{W}-kruK
z`YU&BUb--SYIj%A6`kwrL^dx{@aRhWUSgZ$GH<D<sB7Sqq?=zDY&PHdw<0p5+~{{N
zn}Hj9Ntk(2o!pz}T}6^hx^|n1GdBddUAO<UaFeM#Ged{inl6vrYkbS5^FF=X6&W9W
zs)a#eN?g?H=%erMguXd(DbMD(Np5-5#Uww0VDGlhm(LgI|Km)u*SmlG+5eZZ-|JJ%
zZ*HzF;CuTv6LX?5;`Q2Xb3k+AvFu^uMjHhfSQfAR;-kXABFLe7>1Bj~)6S`3t3!R+
zf8|drNX%7w_)435r%OkJLq%Fy;nukfyY|I+xH37gG#@NbntSq$3zL9{PRXZR{ZfIo
zJ12CpFfvU%Q?&Q$D&41x92J~4hAg~wW9b>~nGX)=dl&@EF8&&&xap$8l$B=DXOFTl
z3e1bm-5T|lUtsq7{FQJ0OIBaaT6?Z-Vesz$i%Zvrt-cB>^cXsB)a0%?nAB%w(f)1X
z!l<=!TR1-4%3go=+&M9>*4OKH=iNTFe$S^<&iuAtR{GbzYLm{pan|$yNBRFBZ>G=x
z`@-EGv_|ILviZ%a{GUw{-IAXk?T`M`v~;_9*rrIu(|2c1ZGB?q`N(qR5{X%@UTta<
zrk$Cyjzcu|>6=AILv_S|RNTy65$Bqc;<eek(Eh5Vr|-7Yj-My3@~-sOe)joNW~k>1
zQQOn1qE}bWneJ%lGn17;rDIFLx*b8&?&Z0Z1YLaO6x4HiSzdMFt*x;}OJ~k<U}kvZ
zm9{VC`e){AW*$|4_HK%>dTaA7B2x3@uMqPaF}Ld^84~Vpi(yEcwfvY2;|8<h2}d4(
zY!+j*`*D!}-|78-PM2PfHD6{>e!uqnJO5V}=Rp2GrM=$f=ab2x(S~={HUi&N{4d*n
zzr(zL2YYbUnvJD@S(~2S=~|U1<J7?yV^$)3<jJ?Uo?S|e4NEkeo=P$-&=8vNobiG~
zkcjU@he;xL*9%mnt-P__o~0xvj3w>0A)+;Rx$>m&9E~mIz8=%k7e1L^(jz!=O^Bgm
z2X{`ZisjXe)ke~fCG|dMOvs%X_CJi*v-qTiH(%C8e#!HzJ?x9^)@S@YdG20&dbHeG
zLua;&!LZ3GF8dvf&s3VX&J_0D81d)z{(spF2EN6!R!!Z1{(o<N&EqdGFUSA;G(CCa
zjVpe8+xI-I-|6?e{>^&Z-;WMldOokZ@8A94bLVH?yma|+RmIDt)7SmK`n$<q_OotL
z(npl(D95O)o@%#^y`RffuKTX>P;K`X$tN$C*6dpmd7yJs*eR|z)5?uKzx_9V*D+(q
zfr;XJ6@rcTv}Z>|pVwC1{@+5^@YoN|HJS@&^oRa?;IvQT%{jws)?0J4=PWdSH`Vps
z8cn_Gr;b{g^_nNUygX&XJ<f14XB(?eSD#-4n!Z@_e}Cqz%QmIQvp!A@kNdgy{;##|
z@^wG_|2^?vx9ioa%u^expH%;!{qyaw4VQM`6Ju(~UcdKOy8UjWHRt&A_B>lQJ8#$5
zUgkFn2C*B!lR}%e_*+Y>{Ft_7@B3I-qc5)MjaOWtmw1eoqG)f|iOb2^UXOcDTs*R)
z>C@`$5JSxm9>!iL-<>*~BFC#P{Vgt~D0$PWHS_GgA37b&bWwzJLteBQ(=3(`Ik#CE
zs&1U(W^lS^wIEUK1hdz~wb{$KP4v}{$9f!^BeN{+T(f1!nsw{q>i>S7d;5WS{YUZo
zf1l_3zkSo{wD7qdXvFI4WBLCTSxgCi*NPWxoWtj+V75CZdt21nu*KUpS<LQgThz)s
z`J&t2u+>+uiKQ_$&TQQp1<LQULBtyUGb~Iik47!N8l~;haU*8!&8(}>7rR)5=SsiX
z2AZh%(Y+>h)-AU*Q*UyITk+LrWlpBkjW@bf<yGc-oIUm`r={b}x*ttH<PXnW^}p~-
z$E@D1M@u?5(x*v-Oplq}&)QK?wQ^hKs<|ikNYB!4jp$%#aL|~g5hC6DbW48Vp2VHE
zBW7_jfQm&QJ!4_c95J(L#hn=z9t;eEJnoC^CJHb*oYCpkdpj%e{<(@NOAVey7)})Z
zkXYZ9_^o+*T-8h8{HoydzjJbPjokb0et6K#|4sYa{y(Sp*Sx&6bmhr{LzYpud{$qL
zi9X}fe57rUi-FbT=!neK%3F78FzyvF_CEWpXw}|#q8_@YuelAG6lSb5t9>uA=yB2&
zc*F0qY3A`YXI*c}wsEh%tCY8=yS;zK&OHyey0|>Q7Pa=+BcI>J+n-;wJ7F`c%AKd-
zz?r1I#VMEPui7`KvrN}SXyK7NS(~qBZO!_;F_C-1L7&o+Om~L*xDLJJ24@V@m2#i0
z68k1>muNEkZ2bSP@!PlM++b$V(b4gkWFjjm;%Zs`F6RHo*X#HH`*>XbxST`qg7o<J
z9X9L}UR%g5%4l2mt!^=6<+^T<D*Ih>g_rL3zHmsnr_}JeN@eTQKl74r>M>19iYWWD
zce|lM>a(}~4rxdAK32?rneyS@_kG__s?UE@Q}d`(z3R*Cyn-)#CLf)u9e(L$$$l;7
z%cgTB#on&InR5>`;%)QcfPek3%PTpXEv+V)9NzTCZtw1swU;Kj%`Yiewi1}Rox|b#
z${>-$A8pPTSFb+BV6p6@l3=jNno|jEO<QM9KB{i_u`@4p`|QID&i+`js_M9G`JOMA
zyn`pRHy@NK)3A%ySm~}cQ!H&(Lhdt`k54B1^WC}svGU)~=k;F}%lo=d`ug?jMbVn)
zxwp41SLSDHwtN#%6E@Lek3q8})3r1|uK54Iu3vunrGpDP7`9y5XY);&*oW(OzuQ&t
zkm)p^_w^>w8sRf)5wk4?Yu;Diw=RBmW}DTKD`vCZ-kAJ-_x|6z&FAf^KR!BIzUQ&*
zWkFCw&A?rD&Dl8|{~p`_d;I3+=8G96C0m!ztID$a#B(|A-?RLG&$Q!zo{GNz>)OkX
z#)An4GafTuOY>t{?myqI{N0?)S@u6q`s>B*`SG#8{?Dvzww6XS-_NI}E^N&HJ|Qpn
zS?T)fSohk>N1f`+3d%sMl4XoHm=$mO(Hj4wb@#hnubJh49LQe3myO|J!4Kj2KaS-8
zIhOx}bBmzUbiLSFO%nUeKJU7|_ub$3_5b((d%gePW&6LER|YR<c#s|c`<D6spJz2W
zK#QekJZ3p}xkTvYjpHhlPyYXR|GzbZLQ7a!*u1J&E2qcTRi<3t`|#9MZTUYB*g<1%
z_p4s7{Wr0{=85wBe_xhIuf3LT|2xw6@-hYHwD})$4jbs+Uc6(+geTv$q93uHxOVz!
z*UO5IB^8?b$G>Y9U+z45Rdnea1qKGUpl(l_{WFxA;$~ZRO0+%vfBEEW-$_sAmfxFs
z{<(1H5fPRjx32H|)~a8#aPcVy2fgW^KfBew^p5{^u6&;{tE9p1qk7#*nXCEtu1=5q
z70$9WCt{b@N1k|-YMmt$^wdQU-+rjMR_Q#a>t$t4E}P?9<^&dYf8$y`L*&%CFSq4*
zRE}=qIecMWW!z<UmD_T>Mo)Hx+<f`;XhPZHl1;h^e4+~jI2hLL`}Iox?+bT!-P3A2
zW6teYH=cRM@pRFjn{SI3?6i_rRBD}fC+_r12aT;){1yk#?iX|^S+{MgSF)xk&pDlU
z8duL{>AAF|e>a*Rk({X}z;XVGSXdkP787TdOIPQ9-9LL9yH~NHV@r{6dik33$2sPR
z2yG7cnX;U7{n<GdGRG@F9u;SNu<dr<?uTvCd{J|J?Y?d7|GDjCzx}@-{PjN$H;b_w
zb1m0dZKm&S%h)(c_4u`xZ_ikS{Wrbd_B3a$6Xzz6xPVW`Qci2l%Y7kw_uDnk^OtJZ
zyqn5={YprrP-{xigeQ{>-z{QN%_wtSrmK4H!k#6sYP)S=&1hTEm|*QRSH+nkE|F_*
z+>_fX%lnDV@LP}4bq(!E!<YVH{}-@t+o<j8syR(d)Kr^e(IV@<g=wuz6tcg$RX?fZ
zV3e{;U|@I>vFxc|av*Q<p&7F#wOXp^=;{5M{!c)!vE<S3v**sqZP7VC=dLaLHLgSj
zA@0S+X4l1qSOn*;|0=rXT$`f7W(&__&wnLp$#AhUGq@;7aJ4!u45&!k{QB7?9><nN
zD}5FQoH*;kBycKZws6V)tgGQ-MV$hSjUUdW8NJG?a>#mqw&&v7XIYA34Gt<(wa=Uv
zFX}XKYzgY#8oT{&+f<)|2Z#4q-~Un|bv33%q3Pn6H+TNTC<=26x>#(!Q*HR`TG}k_
z;+Gi$3{D$MtOS)fnmAh0FRk=oP-3;e_`SjA*~Xu1v*XTYsj)CLh!+?<Hn@0;=USSd
z%v|2Nt*x!i)0R#bkE=L%{%y^xD=Wj}DxWSmYI*LB7pT9^@ax-zs#iMaSUMHGTuo(L
z9I`5nY8PM4T6?zb_r3nyS!d7Qd-d5cX^(lee(%+zH)k3!x@Z{gzm>H$3VD&+vr15n
z>!EYSY<9TuLSNfl^W5!|H`{d-&N5p)Q-Q^LcjMZy)%&J!Ic@mv#Ct0<OGm9EAZ_W*
zEYs<i8^7^xn8Yb$+<o?2#r0>4Tr|RE4IY$<b92T&=Ug&PZQq|6!pB{1@qEj)imI6Q
z(%_GQyWnw?#>X=+&h+`^+rZDCUwJzE-sgGWL0bhbX4w3CvAAnd&uyWbZN5i$Ch|!n
zpXEu5$+_ItaKOk}dxxl|=FB-+D?U0FpDW<8NsH!F`L0#knmpxG*3B(3{Yx@tm0Y*2
zO4dJY?0xj?*$KQacC6vBWp-GXE4l3H8ex;uh9(RQo`EK=OrAj|SAVbF3~Mr%RXLPA
z*tBrAf?E0YGL;i@JHnkW#TcE-EAEeudis>X`Bv2R&PKJkYuaW<cINu=FsQgrVsHoy
zX-Jf0P|)PcX<_h~v?#-cPqIMTODoi7>m!3jN)Pgt)BF$KI&<-$ao40*X`!MAbksJ_
zayK^Vj5)se(WWSoNFj|&r?^xdbvqBw%LMgoKA*SeXIL1}kvJo>%U-Q(QOu44MuvZ%
z^#5;q{K7=)yjH5HcR(n^hAT@#iZt669w@c3TDiitvC%M%&Dd_<^Pl+}4_eHUn9dVs
zs&!Lwvu~hC!`pXLUw1F}E_6)a<hu2Qu}V>{u72LHs7lCa=r%=+(a=WO!<+Abhfj4^
zzgEyrVJWO$n_!-M@Y-ju%!X6}UBk9bzSZZQ88TjXditFy*t_cPw>NKQA5lpywJzmt
zzR4Id+fqp(xG#P0qDa3Wh6hm|t7aH6Gdu`&`Q~$HX^yUEVWjWZA4@uVx{mO?dM17U
zN1OcH?*e*fetfWz?>-8u9pwLgXz#cE7GXA9Hda1zmBNcjE4xh?8nPRgME^UpBWjZE
z<d)FgCvxqLXM9xj6k<qN(78NT=+UOL(|LTQ)>$b1-~J~~bK119!pEzYdhO#nbg8WT
zd{2()=D*yMZ#OINo)kXi66<t757)&?pGx+JsQh4CYpberT!<lQqfT$f$xXAj9e$8<
zc$#|tH9JFQtJ%6!C;wh_ZSs>7IynptGK-TeIv%kko^KXR^fS4!{G~^OkE>Q-k>SmM
zzlw_jQ*Nb(1oa5(zmEF7T})ei^0Ya+{AI6R969^AvMyfr9`9V<Wjl9T+NXUicr$59
zMda4cehEv@#@{K4dGLVsa*qGe7c&p`@Sij=spz}BecPj~q(A&TULl)$vZdPM0w3jE
zd-47NXfczZbtv<PnB!$OEc23Y_dT{a_v{j%>*d$W!pvmP7wha*Il5W=`oZG4eUtfb
z`tN3uT$L3VnR|9?X{gkaQw#<?#Wyv=W%w)mLIXE@&YRBrq&oegcxqs#HEU(xN=>En
zA6&EjZ@uI0S#svU&owJ%{R^9#F0C5*U`EQx%<CUwju*<@c4e4%d0r+9Lqm)><EJ~l
zwtDAp|KKm}o5<t5cg6J5<DX-WUkTAXd2~Aur)1^Bf1A^%c6Ez;8djgVa;DP2dil;N
zTml<g6$K4JEALs1wdXQl^%3}`)cE5_lHvbd>(|M}O>fc;UsqyeuB)flw`$iUPG0G(
z)u7J7wkYYo88aszTQ`pxvUVqq`~I__Rp<NFr$oQZj+@`l=;9_V_&s2D|JSNBENRos
z&csPyy%}-)Y&(aWarfzBL#AV2Ki-_@wpD<8o4<d{qLseOmqS+ic({R9`m|0xCb#vj
zy432=D^EOYRdU*>w=yjK@ZbE-gk`r@<==SkWDuOYPE?5jG>maoOo;KtrkCsV(-%q4
zWk0krBr$XCZ?njgtqclA?fYA17#^_mJ>Hk4X7OR|gUwdbZ3(+hJ1*HcfkEQIuZuZm
zf902&-zhkJzW(3mzmv-JU+kE;|LfZPy+uz?ZOF>r44U6zpJsYZEO?<qN#54ikybfr
zehRxUrPa9KwzHpMxbpmQ4kfb##nt5|ueV0k{{NFQtG8<Hz2}QJ7e3p%b*p0Q?%dt+
zCa<?{-I^HmcGu@b=5=RX8JSit)zrwHk<8FHulx>V=hH#yH}lqI-Rp^ZbBk?xMi;~J
zvZ~dymc7i+ykB@+Haxy|h5ldAO2uj0_pmbT`*}7$Zcjy_hi-~BUqH$Gch*K-p7S0*
z+I04Lcl4RM_Om=`PA4kt<~z*VHCf_Y+0K+pL3QWPPWPCV$o5X;ZQys2vlp%$_~$t*
zF|y3#VczX`;woo1yfIi=cK7E5#_F~_M~l@QH<H*kKbLtGE_Lj9xuRr-@yo2pqbI{m
z3cFW1Pg-(6LtA$7Oy_K-I}c}Nud95}$o}Vl_t8faqE39i#_q!-8D4U^D8{|}wUTuB
z?jTOynUZIYTnO@fdUnz?pBsFVS)7}0C7jPaW7z&=$)B1`>;2k1Y3d2N&sG>bc=$eK
zQ;_P)mt6P5Ek1-6wrr7P@K}D?{9c7JgU#0~!LldSn^HCx3C#=izT5lJyJUTWO09AC
z!5b4|?wMTuXDwDNq+l6%^4P~iJZbg^Zk-WqSfs&_zxuZFrqh#>x^FqyN3=}1zoJ_^
ze4WkTFP9k{COvt({r<l7Oz%0b$JhUDxBrv)|G(mCV-;7y=)aD#vD?|N-buJ{CZUYS
z)qmgC&6CYQ+vRv8W?M1^@JO><zxPGQEi7;XPu!z}Mz>~MOM7K;zEq$2uwk^-&XSjx
zwAb%pVz`*`WrFnCk`pOL%l+muHLS0BstuZU|8>f9TJnL?-HR6O+7)&03wx<{s%)$4
z%Evu+1>miU#a9kq{M^U1M}XfZD^l;nzg_zlXN%9TeD`R#-0M}s^J2Gl|Et@QddtP7
zGyg8L#TicCw!&9eR`S=raDIMnE@VYT!Ooa>D-Rr-ys-4{7RQYDM=r~xdeqEWrYWR&
z-FeL-=}*t}{vMbK?gvdwkD3=YBX;8?=~;Q}r>B_;bDh!ocFlKb&_B`jVXLe4@9+EA
zEdS?#e_p{^)9awl!3*v6XI(oBl~3@@oH?1ZjxWJrhBM!{3wCWEj&6Fh^3ylIjVHoH
zo3*DNx%ZX*{)A~NClAZ8?wBu~zvm;f{0|0(J>PC+*Z+H7e=q#piKj}TlTM%8X3IMl
zyc<)dbc0#3i^9)EfsallZF|Jy-}GqaDi!NZ>%Q*WC<|#UD+qPIiLIKW`4O}tYgYC;
z#s>YGhupnxi?`31`n798`qHBKSx@xZ&hez3ckEj@waayDh~eG0+5UHSubn<+jY`*|
zDWSbD(^hUc9T_O%>S^k(s`TljPpFXV#tfPD1q|!fc`WK*^jJo5#$lFgX?=VlF)K5S
zY?YSIX5X`Fy2~>E*q0J#W!APz&fmW0sqXhX#rzB=v(LKARW8}jbTW0T*F0C{d(zJ7
zY@3VUY|@xk6?5WE(4559J!w&Hn!n51f~)R7^O!!lmi_oKtxt0TOl&7DI#9gJ_x^H5
z&&@n9Uqq!&d9){R`jX7^Ych6Uc(EoaNFw=S;i?HDr;T`=tDjZo7Ui-@7RB81JmSie
z#<Of2W1FSJrI%akcTS%+jW252+z)RypN}iO8p==rYK_L%eqC_XlJCto%L_4cdwDiQ
ztXi+5w|?v4YuEqqu-TS*^)3xD*x~$o>D8DHj`QzQyXGIe<f9-k@1*XU9?c6;iatlg
zj&YrdpWok`d)c&Osie|`b?<ikth*HBBe3w!k(KveeKu6Gsje_SlE^15eDiF={AI$8
z`6k6*uZHjcJomj#Mr7F`P;VI2dwq1YyVvdUMR)nBsXrH}TD`PLjokWk(vfd6%PS3c
zezZSaXd<yUyK{;{_ov%a_b5(L>tug(vn_M>w(WjZ)7DutFqlk#VkO<aZe`}IJgar=
zCbOqZc~dbjd&+{FQ;Y1@ACYVoo?2r!`%Ux#=f0KF%ic1b<^Fq-DK=Ppy7scij7N_h
zU8AzW_F<3B@e8Gw9ZgOjpS<V3^(O75n>r&DwLgj|cn6!FX6~9Uve0%hq*tW)gxlnw
znBk{AjNR@krfFi#Po!q8dO7VeXvbCR%6hL~w{M7U&0#vc*+XAiZnkdPNw2`Gv2I#<
zDdLXv+65L|bav`Xtu#6QaDmH=&Y7V8kVf5?#qvKH)08Hja6G-Kc-7Ta^~dj3Jnpss
zee*nD)EwpW@8&UQw;Bj^26~H}{dFovNkU>qOi`&BPvgv^o<{uF#DgCOXh<+9FdYog
z5aDV)WIVgpe0my(l8A3ASF2N=noz@qC6b1(;nM`h3rkjCjhWlc+Q`wicw>Z#h=S8Z
zkAmXdWjmufSQP|3pK^Wv+!~|gBe3wwqqdN*KP3cvT%27LM0$@dddT2lV7UKQ&eo{j
zsXI$dINp|axow@`r>fL=&MD0F?(}XM1)FC^=e^V{J_OpwxqWmq6<6#?FtN2Zw+}yY
z#EC`loX+>SRr|KiTxPG(5TG;HuZ5#Yf$8DQ5-p(*ldqYJrB@X%VE&?e$8_~f0S1P+
z0|$RRkhwKOS4UU(=XNKx$(9+BWv(VtU)eWp*idj`lT2mV(z92dDKT8!d27R`)c?6M
zb7sa%uLusg?8vcXn!4ZpJ!aM>0gjt@-i)rbbL;v3?%mRjyDY4Q)fzZdpM^)SedeXd
z(&&;d(mOS#h2h49G}NxtT041Wg+-gSW$&izi8U1D9bLbB!i`Ut;<R0M9lMre@`{^N
zX+qR0^IJXk(Y?PEjs?oizUm{;v~uZL&2{=qoBrOs#QxUAR7}`KWAmk)t+P(Qbol)(
z;v`Gw%%f@5F4@I_N>f(z$p$4WK74J{c;(WS$z92OiWSRWZV>1{KELYK%I0ZFlilTO
zzg%>ex6RP}*04GK{5;$0vOmB0?S3TK&A)G6=qI-=)7c?mX5!P6lY%Gf?$tQC$Klql
zE4ytELwi`&<*UlN(7RZhkHS}ibX_oJK+GM$SAyI<A?Nh*=%N*zeg98h`zp>ct5|#0
zt(T18Ek91x`+GUOj@sP6SEXbbd3Ks#_N<k8***TysR`RmCBBsCWlz85npWuv>oPF#
zEd!kkFwtas55GtACRXp&dt?$kqF+l1T{v>O>S)^!iJeNGT`G(Xi&iikHu`6Az>T9p
zMYGH8$qU6m^o1k8y{+a>Q+b(?`s1+upTk?XnlePh#4LGPXgeh}^547i{lBlSuPe28
zo!t|*daB>@{onV#XFLF!d+96RlRPKv#)-7^A1CkXuR1+R<nYnWPbWF<U%kX~(wQ9H
zWg1)u%D$i4dGzwq9Se+aE{b|0DYSFjG;#CVwKkhe-c5X7bz2~BllN@LzPMA*yJxY^
z(a2u9CjU>9&voXi?n`c$Oj!MPCtqh)u)V!$m(~U+Hv#kezfCqDWoSv$DEOXpr+Fi2
z5z2!+7w?{pvEQ=5ov;ZWerF2ycHRH>#z#7F(xzE=_DQi_=D(KqO}s6U&ulV-(~7Xw
zj1C$iLav2>+C*Gqi_e<2>+&9&|M%wnpR0}H|Go<U|Hc1*$s9F{lTYSdHoGTt*m_pW
z+DOOS3jeSFiu?O#8+7T&dK2&4cWsR~T|M(nKXl9aK9uQ)@=SS^!$tv@c>RUU-YG_3
zkB`W&Pq3WEAkh7E-`3@PughG^r}Wu9c_k_xG4U&F#_CqP6Q#dQ1cWBo2PdC7s5U3(
zhIQzJ$UeroXQ!PySsN*(*nWq9w!-lh5`2p+93Oo6E@mufaqo=baTDMF9}91MnKbt!
zXp4wBxSjU-jPYCrs~MWkMm)Up9)DSDXpyR^DXKlKo55zclD1S=htvPON!iv828YX6
zu|3?`_qKw==J+<*<Arn1s`7O$yY9O-$7<g5h$_#nbp3VB&#h$7%Waxp#)-1J<Pw(E
zCF>qHzMtzFKgHGc`{8>P(B9K&@f*$?{`E`}3B9`|*IVDy^QY3xQ{Frb3@0~zIX!hz
z)~<QaXFbi?_UDt;r(M@`CE9l8OwsOZw>iFQ#Z8s-r;q((yOF4p%62Z@_3D@Ht88v-
zoMbw#;_bJ)?YULo;~RQRALe{3bpWku6I56~nfcmhvwzNWlT{7}=)X$6`_bmQp=qdB
z(Z{6kr^Jjt9r~MoUQ1Lw-y~5jE$W($`osvGZx5RJ<<{`<+x=Kjzwr6<=jvG!-A9=k
z57>Ebm45c@*&jhwq0Yir@@=aNIBs4oUa)fxpM$~O=Vn)8X8X6A-z{XCSaST}^4Z{R
z5_dW(7`Fb5SnuzXkd}FP!`8sLy<24~I}%Jb@30Y9PKeQ;cM-HyCE)iJmx{DJJy8}0
zrELNETcg&ZcDdT@-Iy4fRvyY(6x+yg)Tlc)?c&#`J}MXT#7~P{5@b-=HTQtjRi~WA
z#Y!T+rPk4JrF*ab3`zMcCA2W&dS!U};lJ-E;Ow6LK<=J(&;0>e?Xs6gv&HgI!u(~2
z4<%OgA4@X)Zx<0e_ssK;7qX1k@B8%%Jd(X?^}4EWH`BMTt(RDLNHHb+R?mB{+s|KK
zS{4``8yOiX{mLcy`{Gwu)oh+`GrF3+^_N}cAyAL&R>1m2X?wSA+ZHDOuJlUImG-G-
z+drFSnZ4R782erryhLXIIqMP+=+c+}R?^Qh8aDeS-HO>+^mJzWJjMp;yd4j}-Ojhq
zDE!t2ns!l^|H;9yC2H;Yx^J7=b<dq_>3RN{bID5P#aDuPj(@iC=HFPo;k4@HX}5ms
zR%;5MHTW%B+`B|_nxs@s-xA4bsV^TMeCg387v^>8%ZAQZTT<Oh_WFaSP=1%*OLYFk
zbGNA=OmM?do;3D^+-DZWFE6Ry&v@2n{q6(v3t9f6op-)okLPCqZKvJ$dG33eEf(rR
zQCchaL|&T1d0Ww0*D)+uy_31eQgXtaDf9JnpO?2D<azdE&qIU1C2vyt+c^u`gO~f&
zzHpXjYPcR({r2<x|9>32i=7fx?q2(){5PNZ<Wt|^ryKQ}Up7B+QI$T<Z9HRc<JOsv
z&x8c0S8t08yE@6xV&l8G-AOfXlI3?lo0ZM*;Nx-m{}1`=cO2iFe5`qq`u$rsJ*9cr
zns2hLIV+PsukKgo|M{62#v-$y1X`}YS*v>D+Ea_8E6>TzdwWbezvlk$d+ZF?<Eqzg
zRjrW(O|tmOSXA9hWU$=kz4@@v)m__sH|_1LJpSm?Qt#<{u~{ZkyC>ycpO6!j;F-K;
z*W%?#-1C23S$^-!GV{M5<^LBd7$~^QgH7R!m~F|jBPz@-)z+JtLE-wEjAh;%Jq=Gz
zVu*7+H>)e~i|^x@)j@_b36CCGEHujB^>W$lyj_{~t?cnnx?U=L@ZrBzCUWB9)~>e~
z=O`Shy?caTzI%b}jx)tRw^?UBmE^LV_EcfgQ;S=#=XK@&SQ`IpX}eriMtxfgXx3*j
z%e_pij0tNsT@POpi8Qq-Fr65FXNO8qs$yi(fs3DA?;3R#ZG6<Q{Qv*Acl|Ri=g6>s
zxW6pgc&0?amIn*?Pvl4xvk9KPp~`+RrbVXggzJfe&U#LQEpaJ#Q`!72J^NVoL-lRb
z#MjQ-6}@%#G5huqiIz@*8F?$6zsdcwdTo}yyVTcu|NP6-Y-&HLSiiZgeqKKI8uy}g
z+^n&F<)?3pUJqN+qo1Ye9A5uz<&J4Ox0k%iN;nm@&TP`Lav$gGp`HREyG4Y~2m6H^
zyDB|;v?qI|+qzG;7c($0WC&gIxnkiM?An*PZ0e*+{d~)&h21qV7h8hN-W$43{;^}u
zwo6*vGS=r`Yj!?Q4gK_a=erJL*V83aOT4;@WzPS%-?w?n*4UdDB+iFS72UKo<B)cy
z_3YxVzK6?sZY$fJtNW%`*z?gvWOcoW;9WijhA#?xGP7>ZHqVzxKHev5-LR|ny1IV)
zGH;i8=P$nhz4_-n@n3yYzgd2Y?K`sW#XgRh^XXi_|1Nm{^T|`AmrSjB8~&Qj&^c=C
zIz8k0H(Le<hU!L>%bTpr-<>&se!gwB+0V%e94AwZCVG7N`t|MlyuQa47Y%${J5H!5
zEqb(mvW<JwG{e%m*C}7h?ut%-Y!PSV6Rf0kSxHIj%G})7-%c_xFnAcR6?QGGtE;O7
zfuA=wr$--eZ)<aNci(=<*J$RSkB{AhP5=EmuXjRedQsQHO}Aeq`Am5vxm@7I-7O!?
z)wP<Ym+vY0+jgQ!hb`=&YUcKL;@cy5mTvJ7DH8eR=nztF&0)#FaKUQH%xRsE-f8Er
zU%&o(n#=XNxwB@i3R~@a^@Pi_G-EN%u7y$C*1Vi_hDFUI%4+G6nFnf4n>=2%D0}9b
zbxTuDrZG*v5)$>ct=zO}qAB+-rDv>xDT>G2k0vQ(PYb;edQp(&Sc-D8M`2{2b(+;t
z)_t!}TSh<a^zhUS^O~}0lgekuIbN+n3Ri8r@^)A=FuY)`oo!uq`EGw}E9+&G?Cvdc
zb3Q*mfBwuF9zH&~7opoCV`FQ-z6#wLQ}^>zs^0YMfFOYuc7C}#I|`krrAAIOo_Qu-
zn}5$F@nfus*F%Gx*FRy~qhPj`!~6D$O)*+in-*MNTr6eRwKwD6`Vam$zlD97@V1tb
zq5Z(8PoLWP<+s(<etL3pTkO`?TP@4(?63cSXJ_%`$&=r%Et|c&{QbQ>mB9jhA5Q=N
z{{DXKb=~QwpB7aX7H*8utN-=o<@)(nwZFc+dGls%^!BK;#Wug4+xZ0rufKS*@bZU1
zhu@x)p6q&eO-+J<;qK#CS66d$b8nr`&c-G+C8v0nq=dwbIdkUBo0pfr_4b|J<?G*;
z*8TahF-A{cS9fpS-(4|!yWgE-{ngn~F>n5i85O_3y?uUu{_B2zKE8YVYOB-Ip8fdv
zI5%JV0OLy6ndiPAU}P{!PE1^AcfsUCf8Xqnwe_nnrxq3#W@cvQ=H{kvT<qSjHu+?y
zm9nz3%aY7nkB|3fr~dl&%fxr~?AggZrJuwYzHtV!G3<(;+^Dw7L|Ei)PwWS#v=rZ`
z3zomA`TcF}wa1&LChV*Exheakar(I{>C-oE+!*Wrykk*>w{dWA@U+y}eKkK5@);J~
z6-Z@R5PpTp_p#B%C6edEwmPkvBD|?hIAHeWGslh{`~Cg>>&@NID|hpi^&L%0PEL-#
z=_+zGc)6cxF{h)zwzgl}w!USMO^Uqs>sQs4wG0dyVUG`Pnz%$#f4=T9(~0WSHhs6A
zR9;-XIcVjT^y%gA@8#y?yostvNl8gcdi3aM_tqbieAN17EH|}x$L%ij4ZZr;R7Sz8
z{_i4Yh6~P0p2quLzs;VzC2Q-i7Z(>#ojUc_j=SsQ_y1e@WU6-fvE#?HZ$7=W)LY$e
z&W+!puX*_Sw=b1rU|_hhzi+wZ{)AK`zW`pH*pr`|5~H*3oL|m!TXo)Yg_K>HSx%2v
zY~Hrb%-nqY=L)5XD_EyTy+8fpMMi!7k=t4ODn2Ham6_c#d*iz_Xl2-H+gm@Xrh2Kq
zQe$8^aPU>dtj^P#){mb}4bplov8L>dKHH|ZOC(zR&V@Kn;C9;+D7!JDr=zXCT|Z_=
zfPDO}+_EhiT}y*r{`~wr&^$#yY2%HPlhv!YeEcfZ$+B!VBZEv{tf6!CnHx&(E=M?(
z7B{^XH1#o-Id0ik{P)+_zAbt0bxwEf;$&c8XpawHGSfig>F3r-ui5J^uAcN|`=`Hu
z|8}}864qsAU}#t;{&9nll9K-FuB^V`OUqJcOLe>61%<^6&5Pg9vK)<3obq{B#f9t_
zj0_A17K+r~=Q&;|@@t;IiwIj?MDH#~1_p);!B+Fr_Uy?NcmA|#=9Z^B6bm;k+??bk
zqT+dNvz<71*UcQx*K3&>7#xbN{x9oX`Et&zb=C(ow@J^abEui~yu*N(gMon|O7QOv
zNhPI6KPnDe-eh24V5k@PyF-$JfuZ5A!z@MyhK74>Cd>>B410Mq*%%lYs-!RRFfcHD
z*=BY=b5+=C|M_;YQBhg{l%1WOU%!5>8=G2My7g!o*v(hB@7#Iw*sHLxFgd%L8<*U_
zO-MU-{P^<a%cFmRES3q&^#h$!#~|BQ2%<0Co{+}Cz_4Ju;#md;28VoS6x-k0hsIjZ
Taea7C6XZruS3j3^P6<r_UGYil

literal 0
HcmV?d00001

diff --git a/lessons/figures/fig_non_empty_queue_insert.png b/lessons/figures/fig_non_empty_queue_insert.png
new file mode 100644
index 0000000000000000000000000000000000000000..8093d290f00bd6f8c320f138374dc28b6a343385
GIT binary patch
literal 30022
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

literal 0
HcmV?d00001

diff --git a/lessons/figures/fig_queue_extract.png b/lessons/figures/fig_queue_extract.png
new file mode 100644
index 0000000000000000000000000000000000000000..b103ee95bb0cd145678ece54c2ef5cb6b89d337e
GIT binary patch
literal 24244
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
M>FVdQ&MBb@0M%G7IRF3v

literal 0
HcmV?d00001

diff --git a/lessons/figures/fig_queue_representation.png b/lessons/figures/fig_queue_representation.png
new file mode 100644
index 0000000000000000000000000000000000000000..262d9a7ee941a10e3d50a19ac87a287d6f42ce71
GIT binary patch
literal 7251
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
Kb6Mw<&;$VDzVn&@

literal 0
HcmV?d00001

diff --git a/source_codes/queues/queue_array_int.c b/source_codes/queues/queue_array_int.c
new file mode 100644
index 0000000..752ef9c
--- /dev/null
+++ b/source_codes/queues/queue_array_int.c
@@ -0,0 +1,72 @@
+#include <stdlib.h>
+#include <stdbool.h>
+#include <assert.h>
+#include <limits.h>
+#include"queue_array_int.h"
+
+bool queue_est_valide(queue fa) {
+   return (fa.capacite > 0 && fa.debut >= -1);
+}
+
+bool queue_est_vide(queue fa) {
+   assert(queue_est_valide(fa));
+   return (-1 == fa.debut);
+}
+
+bool queue_est_pleine(queue fa) {
+   assert(queue_est_valide(fa));
+   return (fa.capacite-1 == fa.debut);
+}
+
+int queue_count(queue fa) {
+   assert(queue_est_valide(fa));
+   return fa.debut+1;
+}
+
+int queue_tete(queue fa) {
+   assert(!queue_est_vide(fa));
+   return fa.data[0]; 
+}
+
+int queue_debut(queue fa) {
+   assert(!queue_est_vide(fa));
+   return fa.data[fa.debut]; 
+}
+
+queue queue_creer() {
+   queue fa;
+   fa.capacite = INCR;
+   fa.debut = -1;
+   fa.data = malloc(INCR*sizeof(int));
+   return fa;
+}
+
+void queue_resize(queue* fa,int max) {
+   assert(queue_est_valide(*fa));
+   if (max > fa->capacite) {
+      fa->capacite = max;
+      fa->data = realloc(fa->data,max*sizeof(int));
+   }
+}
+
+void queue_detruire(queue* fa) {
+   fa->capacite = -1;
+   fa->debut = INT_MIN;
+   free(fa->data);
+}
+
+void queue_inserer(queue* fa,int val) {
+   if (queue_est_pleine(*fa)) {
+      queue_resize(fa,fa->capacite+INCR);
+   }
+   fa->debut++;
+   fa->data[fa->debut] = val;
+}
+
+int queue_extraire(queue* fa) {
+   int val = queue_tete(*fa);
+   fa->debut--;
+   fa->data = memmove(fa->data,fa->data+1,queue_count(*fa)*sizeof(int)); 
+   return val; 
+}
+
diff --git a/source_codes/queues/queue_array_int.h b/source_codes/queues/queue_array_int.h
new file mode 100644
index 0000000..9c9c53e
--- /dev/null
+++ b/source_codes/queues/queue_array_int.h
@@ -0,0 +1,35 @@
+#ifndef QUEUE_ARRAY_INT_H
+#define QUEUE_ARRAY_INT_H
+
+#include <stdbool.h>
+const int INCR = 100;
+
+typedef struct _queue {
+   int* data;
+   int debut; //tete à l'index 0
+   int capacite;
+} queue;
+
+//Créer une nouvelle queue vide
+queue queue_creer();
+//Libérer le tableau, mettre la capacité à < -1
+void queue_detruire(queue* fa);
+//Inserer un élement en début de queue
+void queue_inserer(queue* fa,int val);
+//Extraire un élément en tête de queue
+int queue_extraire(queue* fa);
+//Consulter l'élément en tête de queue
+int queue_tete(queue fa);
+//Consulter l'élément au début de queue
+int queue_debut(queue fa);
+//Tester si la queue est vide
+bool queue_est_vide(queue fa);
+//Compter du nombre d'éléments de la queue:
+int queue_count(queue fa);
+
+#endif
+
+
+
+
+
diff --git a/source_codes/queues/queue_array_int_partiel.c b/source_codes/queues/queue_array_int_partiel.c
new file mode 100644
index 0000000..e964c98
--- /dev/null
+++ b/source_codes/queues/queue_array_int_partiel.c
@@ -0,0 +1,66 @@
+#include <stdlib.h>
+#include <stdbool.h>
+#include <assert.h>
+#include"queue_array_int.h"
+
+bool queue_est_valide(queue fa) {
+   return (fa.capacite > 0 && fa.debut >= -1);
+}
+
+bool queue_est_vide(queue fa) {
+   assert(queue_est_valide(fa));
+   return (-1 == fa.debut);
+}
+
+bool queue_est_pleine(queue fa) {
+   // à compléter
+}
+
+int queue_count(queue fa) {
+   // à compléter
+}
+
+int queue_tete(queue fa) {
+   assert(!queue_est_vide(fa));
+   return fa.data[0]; 
+}
+
+int queue_debut(queue fa) {
+   assert(!queue_est_vide(fa));
+   return fa.data[fa.debut]; 
+}
+
+queue queue_creer() {
+   queue fa;
+   fa.capacite = INCR;
+   fa.debut = -1;
+   fa.data = malloc(INCR*sizeof(int));
+   return fa;
+}
+
+void queue_resize(queue* fa,int max) {
+   assert(queue_est_valide(*fa));
+   if (max > fa->capacite) {
+      fa->capacite = max;
+      fa->data = realloc(fa->data,max*sizeof(int));
+   }
+}
+
+void queue_detruire(queue* fa) {
+   // à compléter
+}
+
+void queue_inserer(queue* fa,int val) {
+   if (queue_est_pleine(*fa)) {
+      queue_resize(fa,fa->capacite+INCR);
+   }
+   fa->debut++;
+   fa->data[fa->debut] = val;
+}
+
+int queue_extraire(queue* fa) {
+   int val = queue_tete(*fa);
+   // à compléter
+   return val; 
+}
+
diff --git a/source_codes/queues/queue_ptr_int.c b/source_codes/queues/queue_ptr_int.c
new file mode 100644
index 0000000..4da1908
--- /dev/null
+++ b/source_codes/queues/queue_ptr_int.c
@@ -0,0 +1,112 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include <assert.h>
+#include "queue_ptr_int.h"
+
+
+//Creer une nouvelle queue vide
+queue queue_creer() {
+   queue fa;
+   fa.tete = fa.debut = NULL;
+   return fa;
+}
+
+//Inserer un élement en début de queue
+void queue_inserer(queue* fa,int val) {
+   element* elmt = malloc(sizeof(element));
+   elmt->data = val;
+   elmt->next = NULL;
+   if (queue_est_vide(*fa)) {
+      fa->tete = elmt;
+   } else {
+      fa->debut->next = elmt; 
+   }
+   fa->debut = elmt;   
+}
+
+//Extraire un élément en tête de queue
+int queue_extraire(queue* fa) {
+   int val = queue_tete(*fa);
+   element* elmt = fa->tete;
+   fa->tete = fa->tete->next;
+   free(elmt);
+   if (NULL == fa->tete) {
+      fa->debut = NULL;
+   } 
+   return val;
+}
+
+//Désallouer complètement la queue
+void queue_detruire(queue* fa) {
+   while (!queue_est_vide(*fa)) {      
+      int val = queue_extraire(fa);
+   }   
+}
+
+//Tester si la queue est vide
+bool queue_est_vide(queue fa) {
+   return (NULL == fa.tete && NULL == fa.debut);
+}
+
+//Consulter l'élément en tête de queue
+int queue_tete(queue fa) {
+   assert(!queue_est_vide(fa));
+   return fa.tete->data;
+}
+
+//Consulter l'élément en début de queue
+int queue_debut(queue fa) {
+   assert(!queue_est_vide(fa));
+   return fa.debut->data;
+}
+
+//Compter le nombre d'éléments de la queue:
+int queue_count(queue fa) {
+   int cnt = 0;
+   while (NULL != fa.tete->next) {      
+      fa.tete = fa.tete->next;
+      cnt++;
+   }
+   return cnt;
+}
+
+/////////////////////////////////////////////////////////
+/*
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include "fa.h"
+
+void print(void* a) {
+   int* b = (int*)a;
+   printf("%d ",*b);
+}
+int cmp(void* a,void* b) {
+   int* aa = (int*)a;
+   int* bb = (int*)b;
+   if (*aa == *bb) return 0;
+   else if (*aa < *bb) return -1;
+   else return 1;
+}
+   
+int main() {
+
+   fa_Elmt* queue = fa_create();
+   int a = 3;
+   queue = fa_push(queue,&a);
+   int b = 6;
+   queue = fa_push(queue,&b);
+   int c = 7;
+   queue = fa_push(queue,&c);
+   fa_process(queue,print); printf("\n");
+   int d = 6;
+   fa_Elmt* elmt = fa_pop(queue,&d,cmp);
+   int* tutu = (int*)(elmt->data);
+   printf("%d\n",*tutu);
+   fa_process(queue,print); printf("\n");
+   return 0;   
+}*/
+
+
+
diff --git a/source_codes/queues/queue_ptr_int.h b/source_codes/queues/queue_ptr_int.h
new file mode 100644
index 0000000..4dd3a6c
--- /dev/null
+++ b/source_codes/queues/queue_ptr_int.h
@@ -0,0 +1,37 @@
+/* pour éviter que le précompilateur inclue plusieurs fois le fichier .h */
+#ifndef QUEUE_PTR_INT_H  
+#define QUEUE_PTR_INT_H
+#include <stdbool.h>
+
+/* Utilité du typedef : Element a; <=> struct Element a; */
+typedef struct _element {
+   int data;
+   struct _element* next;
+} element;
+
+typedef struct _queue {
+   element* tete;
+   element* debut;
+} queue;
+
+//Créer d'une nouvelle queue vide
+queue queue_creer();
+//Désallouer complètement la queue
+void queue_detruire(queue* fa);
+//Insérer un élement en début de queue
+void queue_inserer(queue* fa,int val);
+//Extraire un élément de la queue
+int queue_extraire(queue* fa);
+//Consulter l'élément en tête de queue
+int queue_tete(queue fa);
+//Consulter l'élément en début de queue
+int queue_debut(queue fa);
+//Tester si la queue est vide
+bool queue_est_vide(queue fa);
+//Compter le nombre d'éléments de la queue:
+int queue_count(queue fa);
+#endif
+
+
+
+
diff --git a/source_codes/queues/queue_ptr_int_partiel.c b/source_codes/queues/queue_ptr_int_partiel.c
new file mode 100644
index 0000000..41f2916
--- /dev/null
+++ b/source_codes/queues/queue_ptr_int_partiel.c
@@ -0,0 +1,68 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include <assert.h>
+#include "queue_ptr_int.h"
+
+//Creer une nouvelle queue vide
+queue queue_creer() {
+   queue fa;
+   fa.tete = fa.debut = NULL;
+   return fa;
+}
+
+//Inserer un élement en début de queue
+void queue_inserer(queue* fa,int val) {
+   element* elmt = malloc(sizeof(element));
+   elmt->data = val;
+   elmt->next = NULL;
+   if (queue_est_vide(*fa)) {
+      fa->tete = elmt;
+   } else {
+      fa->debut->next = elmt; 
+   }
+   fa->debut = elmt;   
+}
+
+//Extraire un élément en tête de queue
+int queue_extraire(queue* fa) {
+   int val = queue_tete(*fa);
+   element* elmt = fa->tete;
+   fa->tete = fa->tete->next;
+   free(elmt);
+   if (NULL == fa->tete) {
+      fa->debut = NULL;
+   } 
+   return val;
+}
+
+//Désallouer complètement la queue
+void queue_detruire(queue* fa) {
+   // à compléter  
+}
+
+//Tester si la queue est vide
+bool queue_est_vide(queue fa) {
+   return (NULL == fa.tete && NULL == fa.debut);
+}
+
+//Consulter l'élément en tête de queue
+int queue_tete(queue fa) {
+   assert(!queue_est_vide(fa));
+   return fa.tete->data;
+}
+
+//Consulter l'élément en début de queue
+int queue_debut(queue fa) {
+   assert(!queue_est_vide(fa));
+   return fa.debut->data;
+}
+
+//Compter le nombre d'éléments de la queue:
+int queue_count(queue fa) {
+   int cnt = 0;
+   // à compléter
+   return cnt;
+}
+
+
-- 
GitLab