From 249e7872d0a9227786e786926f48628605ebb809 Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Tue, 23 Jun 2020 18:27:33 +0200 Subject: [PATCH] Add tangled matlab scripts --- matlab/figs-inkscape | 2 +- matlab/figs/mod_iff_damping_wi.pdf | Bin 27845 -> 27845 bytes matlab/figs/root_locus_wi_modified_iff.pdf | Bin 75690 -> 72776 bytes matlab/figs/root_locus_wi_modified_iff.png | Bin 72630 -> 71876 bytes matlab/index.org | 50 ++- matlab/matlab/s1_system_description.m | 219 ++++++++++++ matlab/matlab/s2_iff_pure_int.m | 193 ++++++++++ matlab/matlab/s3_iff_hpf.m | 251 +++++++++++++ matlab/matlab/s4_iff_kp.m | 389 +++++++++++++++++++++ matlab/matlab/s5_dvf.m | 159 +++++++++ matlab/matlab/s6_act_damp_comparison.m | 364 +++++++++++++++++++ 11 files changed, 1609 insertions(+), 18 deletions(-) create mode 100644 matlab/matlab/s1_system_description.m create mode 100644 matlab/matlab/s2_iff_pure_int.m create mode 100644 matlab/matlab/s3_iff_hpf.m create mode 100644 matlab/matlab/s4_iff_kp.m create mode 100644 matlab/matlab/s5_dvf.m create mode 100644 matlab/matlab/s6_act_damp_comparison.m diff --git a/matlab/figs-inkscape b/matlab/figs-inkscape index 4ac36b0..bb6c3d7 120000 --- a/matlab/figs-inkscape +++ b/matlab/figs-inkscape @@ -1 +1 @@ -../inkscape/figs \ No newline at end of file +../inkscape \ No newline at end of file diff --git a/matlab/figs/mod_iff_damping_wi.pdf b/matlab/figs/mod_iff_damping_wi.pdf index ad1abae3265ee39759ab4bac6124bcd17edec208..c50dc331ddea9361ec5bcfa2da862af5142d77ce 100644 GIT binary patch delta 93 zcmX?llkw$@5K=OEUXD5d{z@42 diff --git a/matlab/figs/root_locus_wi_modified_iff.pdf b/matlab/figs/root_locus_wi_modified_iff.pdf index 9cc1dadb6fcde20f7e01c3003d7e6f7879024c18..b864d14532ed9e4e2ed5608ebe0a7f0d7948637a 100644 GIT binary patch delta 24007 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 F{{p~jUL delta 26235 zcma&OWn5KV_XSFKNH<6$-5pAbfQWQ=cSv}EEe)a|AR#G|64D2xyF*HW1BV7d;sAO8 zLAV=zectE&-}~Wy&>zCybImp87-P=058J^ejIs%gSN_;Sl0xEQf`T<6@yS5jNP?Ss zTCPM@34-eWdb1_Uy=PoW7&uP1s~sa%$?q$EWxP-O^+yBmLrR&tXfLd-5 zS(f0I0jh78$jUbNtY6y-m!7~`$JOofkGMR$_wDN|0pKk#(UE1VnlzD@$$B-d&2(JLl9Fq9F%+Y4ag`@~rVX5} ze(CrYW2vw~tRVAA_M$}leCPDnmT&0UeED^My5taZ%kJwdDyb#Jdr8;>kUpT zv?}3;nC+u2;kvDokGe{5%6YxZ*c!DzuZ<@7V=v4-uFe0lz2Wmo&v z2ZA)BPC4TApdvvk3iQMGUI=^MUa_zdcGu&3g&$GRu&f@NyL>RYRc{-POd+!UUQr&U z(shbu>F1R$L*VBXaQ-f$Wy$(&M9T;j!(tRiM2rOoNuMG9fcvELs};K7pyxr1cID3w z-#^R9e3E9jv$GbQ+WW|z905>tvbEW?Yon6{7meMe3rH7OXc}?HT4-tsp6p+`E!$(_ zKQZ94?lx`r=rz|Fd_~4Rn^2Q~2^)R&Bn0c{%~b>D9wMIx%&}g`ANb^j$sh1re)mql zAo%VL=9Jj7H(xP88hIym;3Lc1Z)1UNFS4ZZD5_2f0^F)nOeSZdM_0PBjWeNDn9`z?$ftfVZ}9`4^f2)QVXJ!Y zbQnSXO(ri}79CQ!vu*+7jWqKkN~WXj&63Y?9C1CW%qQ7lPt~Vj=q?#pu*{~Be?X$yaIz<`!Mm>iAl@+E?|?3G_K<8~ zq~T8UWS=>hNS}FMJpX}5N*F(wh@W?33xOY)2=FexWzqg^Jcx<;;yypR`J#FI*ERln z8fyrpy>Y14`$92mA=)tUbu0@cyR`*nlL2v5V4?u|+VCw-S5;9~k1L$b1+@o4uMvcu zntCICZ_8Gcduv{G#^Geg2GR&_ujT5v@9j;uE#6=9;y=T)WPF*S8bqonSakd#4}^r9 z+yaE-A550)-@a@ipiU9Uq5$$Is?CInr%IecxQ(P*aWI2XJ-sTl8Y4hz{sZgqEyHrP znZVvXRtQ{7sPWxEQ&&KhEqmlq321yq)JsgtSykyfB5&@T`h+BeYoX z`5hO(f)xUR0V|XRro(Sp@7?$(8vrcPk^`8|2$lN{Fz$=?olfiHr!=G*(WV&*SOJ9l zw27Tt%Mxc;+wXRSr^txB3nuO|fi?Nr#ABOXRq=NC9v2HwNH`0*#N0BQGS#SHo5xHUh)6&zv_V0eoX+&*>}_`iBQ5C${FdhxGJ zzqEi{N=GetDYN9Tr_Rx;CYI#94lOhm|7!7;t~Kk$i{$QxjsJ>hN2s{+k$r(PkFvct z?HeqDHLMkW^9Sgjj#gieN&t%Pw@0GTE`sju3y?Ar zJO9HN4v;bSogiZZXuhr;9IH?Tv<%&)3ZM~eZd#9IbyiuhQ#|$au2CE_qPrk8TWPsy z%CwCl7dPyf{A&)WLLUq#GCtE@kz}EZj&+eXegV;v(gMumcl@591n2(+l@7NnJ|fc$ z>6}MV*rq`pEPyDQ(l`DPxrF86_jm1&BjDQU0?kb@Ev)9Ik!K+DLD>30y!me=$PX6S z&wIOtpdmkU2Ff_|E+m{NRX=eQxLdjJl@`2R1n z63CFnMXT>8k+c0{`CE5001qEjPaLiEuC$k~LlT*P{cFnZ>^aT0>M)y)n4^~!!zF$o z%q2)ujO^iKiygsFUEofM4pbxZd1^}?US;7ytFRMP5Qm7Ow_*cRuN9Tez6yTo1nG`- z;1Lmqbz_ZQ0Wt)lUWP~S!de!s-iCo}CtTdeLML1V%-fw-#sjD`%byB9-!w!oAzk~> zRCI;5ywp__gF`31LC1$>a^ue3<~u@eW4`9%GVkw|m1PWv#(0(s)H(?FD-Y9|gH-@8 z>0A0L?8IL4`gy2>ooS)gooMG!LzEOP+=<)U`k!u$d*SA){+nj<$1eS|!hk<&{I6gB z#~a)iy}Q$}S>5N}?SGwYJ2FBxec{$sNDsK-U6o)oG1i zj3%w1O>SbIPS=&j(N=tdqEkzx_lbImBC|(5jng`)AG&~okwNyZ*P{T_fthoe4WW8V zR{(93*s8`o%ucFikOp9_;#wB}wy}LiFgEB+Yy1*4PB#K13;6iAHLO2Nb&tC>EBMQ0 z4XgCqGpyy4;0RaGA4}8I)`YNsYSR_AyoHb5j*=0~-T-r2aNG-U9&02i05sZBn=+|> zy!OQyKcU|f9(=dxlQ7&I{w@ncgxeFvfyE;AgYG2tCjWPuuQ!P^1$_LgRM`K=bdUv3 z2f|k0y%8&o=iL#jU7jaV*vp^l&4l2ct=gAP0{Hr)t{vfx!k_)9c{8Sb^`-#sa9AUz zM%9b&i*nc~dDx3$S`4NEkZt6)Z0*63Eb|EoZxAGd+n0|kVHH?6Q z5{)wjbSocT+}}EudRD}Jmb(p;R-%W|55MYswQ_oPvo8>zfA-Ze`g>oQ0&LWzm*ST9 z5tyB|N9@~3izT{eBSfppn9C?;5OjnU53|`rc@F2cjHvQ@1@eovUj+V(?~URPuvXGg z>8A(9nk7@{%h@HP3wOBr#QDytPo}EPdrMd7o^1=Vk~^mo;mc!Y`03amHhh(b#FN^O zJmCEifa#^nmvFS=qA3-YVp+f;y&%ZP)IH2ZX3FTx+jUiHh~hZyLgKTJwW6DrrqLAd zV0Tff$yze)BPx#Cf!6et_M?>1%ljyTqGwVm0+lRMsMW_mkp#7gI|PAR%qrFObk9Uw zy@|)V`)LMH4&TV8G_&RB>8zx}ZT4?!Mo~$g+V%?{MJXaLC7_%Ikl-DQW>N9`JW!FI z^{t%>D|q5$3^AKY|C|RoKtGmV2mQFA#+Pn5t1O5HHn-XK2fQrt};|a}w*>1zOAEkEZ+N zf!#K&58@)ou_n}}MZ=~?QfO#ImyDK@g7jzZ?Os-rh>_scPOp_l)Sj@_PJxps^q&7n zYtD({&WP79P3elauZ~2)K~qA@U~{7egMOdfYO?4vL*~(BwrzuMGApwO3ge5DB6@YQ z(dcKG9RpO91o$AId8sKcMJ&T1LKV$%6ra*-sjeat_ z!QEz5Nqx#92fX|VNe5@4#MmBA{|39D7;0qj$L_}BXRa?4@f!UV!V(--J_TH9#GJ z?v+##x4g>pX(b}UEK~9%HbNV-(dfO{K|%|vWJ&mv$P4__3B{BrM)%Uh)Giry3zJ8uy<|*j zFJO^Ind=W8;$omAyifgowa5@frw|1% zcfqYWQ*7GH+u-eNV$EgJ(<*8au3G1r&+oE$pp1{QtBYDjD$~c~Sf(^PObXMQL8?d{ zA1p=$qI>P(LHBUF&FgRMM4C|JWHwn^?dwFa&t~U-WRW>)_M|V$k=u8gZ5EqeP3cy1 zg?64MJ9)K?CqBRPW*U%v$?z}f@ELA-8GKH3Uy$GAK_zTQl~hXO5u#CwNK{egW1YXA z83@4CJs1n^Iz?Na!^}3&oh0b2UfDkD4!6EBBg~!~lf{q51Z#Lh%FN%S6t^@&5UPK( z-~FI2M%h|5w;gPBquZakzBV-TO*Q~83s$v}(a?PaKwd2gRBB$Id%zz*=*B+cmwawsjXWWi$E z*vNymj|feMg(FON26_x-q7DfeQO;ynGSK`t*9dr1u>P;)HU2*}kILIO#(q_^F*|>O ziUJa$ctm}RCt+l0fcGVpebjO9heN#F>PG>ZF-@qF{+QZQbhP$Pi1?J1A~q3*=WZrF zGs5ZH1OYF8AgWLv=ES}=@D)apcXaNVHBlXv4N$I5tjnMHb0_YEV}9378Knq2#kc5M zC31cl4ROyy3d9e9kEoJQh;G@LN69oL7-v?r5vqUudOxy)K8nlxJByt3LXDO~@`LbX~#pW9;VhedH zu}mR5A;GK+9#d<0BnxIAqf*me(x-Tou>rHR1%y9oMtM}E&As9m2|H7Ic-nI2yyF+| zY4CjB^{&&_#Edbmwi@b?c~%lW5X)09SP3eI(b5U*8}99&teg8K7Tf`4CjU*+$7$FQ5?b22$ zdrhCUa5t0VPj%gxDyR_9RR60GdC;wao!DnL`r-JkAHt^e5@#VT43VnyNWCs*4}?~& z*iL6EA-+79vnrf?-5#Qfu?@d3b=%nx3;AK16w^aB{!43Bi7CmD4a*Kr7PWZW2V^bW3$<1rai z69K2ln^?T4M9l5XBYvd(dz4^QFTcujO#>0OwYNo4{cqi`&aliF?}gFHdZHx6;p|Yy zSP}dtg(!o@h>hV`oK?O`T5)~`8R(bw0$FQx3vYMbjc$H78!@5&p?43T!$%5tET-Zm@4xMmKvA2YBHi?I zLa1w$R}xCSTtpGi<$qYcIs*0@l6xc-SoqN?m8G15ddjBfM%5KAEEK5Vd{6hB5) zL%pP<4uf1|zEB=T?d6E13jw8A!`eN)gcp&LRK*3j5xYtynz;wPBJl|Q*d37DYGS7< zX;!1a<80E9egO+Me?RrAlj^L09NW3FpRnF*1^fKJ{+$ONBL4C3%zylwK@FcWd5{)6 zp>L6wl6oDqmA#^T-Psqhl6RbUgwnQ{mY+dLSujtuJWy~za?xUs``e{FtmOa(rlx`z zXOyeAj%R}8tsj7{l0-&QFT#R)R#>Fvde2ObR`!`#rB}c z!_ZRI6h{9$zKRS?J#~TlSn5En=Z}g=Zj@3ea3_&e8KI+*wXKSmh;{LplFV9D8uWC3 z<&EANOcbS?sY3$PrumEo8HE(>sD?;METJukd=fNclv@nt>}`>dkTxO#i`a_2K$#UB zxc6ec@}2Huh@RcM8JWR@ds7@zP=c2C!l*EgpdC%pCp)9Jo~9**zP`RtD7KF16bYuj3r~EoK;TVs@p+tZu0j%@2AnVUVm}d7_2phk#&uDf2O@`F7_Lsqyjklsa<ZeMqL zuTDB|Nh-T+mzF>m4=Nj>zsZ(DiV{3N)#~W?ZD!KSQcIm1wNnCRAR*RIq=(x%1)9q) z&aSTE>d%0m+iDg6m;@XjJ7MAaa$E7Q>Qj=%(alss)TloNvx{4M08?H-{Wq7HihM1P#pK2fqp@IW%bcjg3r=}#;n@;hZoBh#b z$V5TmR(3(w367L8f18DPI&Y;&*-jP~F^uMv{Fx^ToYu{L)Fy)*yf1cZHMZxo6=x&w z=+7BQTDNam z(vD{D#0eeXfkr`+w)g@s8k{NF00HC7bBj;q9io!%^xfVOlN6mK=th-s;8!{t@d;LN z87^Y0Jk@c+-n>HAE#&^Cha>CUmuka1IO9RPk(ANj-vefw)~@~is?8;A&5!gvLE(q zRU+@CXTsta(BZ+W86SN8ST|Wt|cVd{C&2!u0*Uin`k>$JG;yC-UHIT{lcBrZ~h&?>0B0 z#n5UGPp@ndQdNMa6E=8PZ{>P|`xZ?s-la@E3(yhZgN7N4cA1NLHd6PX6#VHD-sL?c zR$d|7`wP8yW3OcM(%)5ONuCXm&g8y(wa_QQgxePy@J8X>3HZST1a|>HJdKAHY+T{% z+u&!Btr6xU9l!X^Tt9A6cU?g`+nPTHUUBc8BC4*f;aDNRyiNoxjZgHiE_)P0uGX*b z0?L;Pp;xC93YQlOms!BsI?q6i?JPZVgXiROiJUM_TcF_iuZUk;GSzenE#m^inTkNy zv(1vjl{x&U6;>C`zYewYVO4iK5UgsIgM*iwiJHeDZ%YKmGOK>kU=3JQ7mvSq9D4rr zXGlhX0B5S@dC~PT;aqBmb8A5M*Uy&c)Dg>&uEP}YJ4Ef;;n#4PvmA^sJf8rW zt`4%3!{n8Y3yJ-}@avuON$%yNN?4d$P>Ho-EECaDLMoX7yYaGAFR-23p&JWakIOWX zt#zD)FW&*b#SmO_>pCX@0b?Eqlwz;P@k8^#e@h@j6faM&igSpM6oSM|_}s~skJe{a z7`9@M>V!UQ#%D=xH6lZ7FHbGbFM7`o+ah>`t{?(uGD4x%b=PeHh!C60Q+QWu-JOop z@MZRX;E*slo%(vI!+F3KxYV{JZ1lez1OL3KLv#qWWu(*Y*L)w?=>ud5ueBAV#I7ew zzFi060eOYjzA2H{-Q{RH5G?Nls_gEcKM_nFA%h}Tzt+Ee=?M8Q!FpzReW0)bDo{b! zEoGsjx2q$3J#Trb@zlC}Tif`GeY)`a68661cz>pSfA8D=ULugtk#ohf{IKQn%pa*X zusq({Z+RMeWs3Q0nu+J@cbPR{Qik+r%`>E$8a(Dw10FMe-O-l#YclCH|2p}US(kSi zK5+HbGn5HPb~|>w=DucgYG2m4uAr=%*|r>8g{hsO%|m{)9S*E-3n2r7@D&n2bc~pu zP1pZyX^peIGX{9(?S?E*&bJ&^Vos0aQTG#V7nfJtE`@onOhYf%mM&`! zGdZkY>#TJX&VyRfh~di6>Oh(J7`=F(>JUR2Nh1rM?*qwvFA=9TIP4A zE-p8h&sr|yEqyxH3jHrXE^jieLr<4t0rkakR}b^8r3Ju9>r^JgQtU(k_*h%`R3MQR zio`g@JqHxpaj(lm_c|`cUVdi#4F7PFUPY5`p^F^LI`LhoYIU%9ss(plkKE_J>T~^^ z^X2=w`}pC>mqBEXVK$Xd5zBd~)wbtM>BDR8FV{Pyh9)P%LgSYs>6c%CouMJR%Gu?j zmKF%!M%5}}T|M!q@C=RokJ0(Wjy1l^qu>E;csGzl#su`4o~^%6$ZL%{3>shOEXmta zy4pq_L$0_(eGYcEJ=Y*t!l6EEH(%ue4A#z_AAN@!x!S$=M&N*}ls(inK#%-cbW$B%Vr8OPdF2_-&N9C3gV0M7xrd^vu z`GR*Fb?%)9lTCcH+_1RlXn$(QY~@1xIZCcqnEQM^pB4gRW?$D$r%`R5W5P*1@25fI z1tS9`I_$*FRgrm-4E%{ejS8^DXm3jHUbs9?g)O8)@hMl$v`-aN>+ZaK6s0}nwY!Mn z{WB`lJlj;V=30EWfsSS=%s)3SG1`s9>x~YbnJzumlNk?RvVxtww+TesMe;#QVFhkd z#%6%5?)n2Z8cAK>F!z=WG21&{e-kQu9Cs`M{p_wp3m7u+SMNXe5g#qPwyWmr>N|R_9#^wL9OFsXJ!bSW5Hl5g?cu z?m>PJLhCSmY<~1s9Id;#zIjed1~|n2t>Nc1+?X$4a;9pY%A5C>!oUkYI@M$BQa-u3 z1umfjZRe5_8EoH$_LJ0Be?SC58x(n)y;7;3T#$l4wuZ9XslKy((jxKc(LgTS_Wb7u z3{T$n>s$PRO>MqkR_#UWdAWz}Pb~MYk2lNbk+W*40UU4tQpm8-_tuEvk_o2-_z_2^ z{~^%qxnL=75tQYwZbEbR zJc`gSPq1OrZV+{xD6tRHf1{@vN~Q;!8cI@9i~-d=i$Tz~7fs34S~O)rPKFcUwjOMIm=#>oCn#BHpu@T}bB^zmKymyn6Xx_yc?<8^$i z_~wupzFj02%xp-V;anfOv!K_s=tb{d_4=4=Px@I|2sU3Cl5L@|Xo$D)s?v>J1*2Ri z+fnApH~yBTo5}(IDV?x??)8_(<{WQLw7PHObvd~eSvfdzG`mRV-`UyD=61RL7$cJo zykgs$qIZOiM2Te!repo7jXG4N{IR0OH<+F`CA=~5*}gNhO;WuQcf0E^^S)_d^Xmdx zEpv44N@NKIm7B&naaligpu|AF%6zUJETW2~thW8LbHb~tk7HJlTz6dctW{p>UF02b z`3N^#T;~m-{m*AuiWc>%;$7bXV0)MiLaEq|}csM5B@flig-)f4x=khe0@8n(S zy%*+MI=`8pYY!WdDkd2T`4DaBZ4lT+_OQ-AC-+M@?lv{>=L$yqk&lC#uQ%4sHR=j! zO1g*&mY76n(rt;I_4aw3bQ&Bdp9@Su+deP6uKWNU=N|njIVK*NULM?nf(j<62I^y? zR^NP=&o}aC;H*V%w+MYmk2REeonS}HsE_CmO2*KBNSRt3zV_0AJ%1K^buz*k+5*IC z=vCr_@|mbsS<1ElRv$S#?{ArQ(HdAp%74VDdZFJ_;SA}Jt5%tB5Bn`5zD=i`t<`mF zSNXhIqxa{cFfR)>GQ6;cOr6HV-!bUgO(dHh%O5~X%ZEto_K50Ut`rsJqG2m7wfBG~ zk>)UxVbt%a@e1b zx6@$hRuL>X7lheabX(XY_{NvQ9Dk$bZgFqFSf2@SrPaPqiB~N*D&A-Cu^fAx@2?pd z7*1a~Mhn2`91ER^tg7Wk#2boZlW?S)!u@h`TQ{`XBSL z_AMxs%sU`66S*i{4f6kEi2ivv=~Cgn1Ip=fuj%qxWk$tKDT4+??Y|B_`du(ahZYU7 zMcp5^n&qjAJvZ(=Zhh6njQc_I?VlWn{hK5EX!gjN;9mk#g{!%)oNE^^etOW681yM5 zIn8~oksxfs);8(I9$l2q7dXa+d{amj=zUn-o7-{|J4-P`YA!*q zactEur=8yL7}ViDS))A+(=5%c(R91Im>e#$95KWcUFBWKy#JQNev#>AJt+PuFw$+4 z!u|RCUgnw8u{$0^NT0KXxTOu^6#IvkeM-P2uA4SSw`fyKn^sDqgXWxph{PPDgN$=^ z=}b>GBlQ%Lr1rjP;eLu+64X(I**&PG>0$XwebZ=N^)rNX{phNO^a#6G=9V(Y*UZHG z4eJFESlD@I&G8R!sD0a_U7n>foW;}fUVN(xTz-f$2qI2yVpv-89I#n4a4v(s!T}tI zgj)oj9IVDCoGP;r$a9Y;TxwRe#J2HvAw^-w7L+8mcsJ|Q*(HHUaL%*1C)O@C$`@0S zWrf--U?sVAxo!2>y>VYyIv0QAiL%%sM=DIE8=G;W#`ih+Yn+^oc0pySSR8C)4wcCH z0`Cu|^}jK#sd_mi4@g}NEu5tFvM1rhObUPFw@Gy}8<9%JZBBM#@mCdKfI2g*MVrzS z)m7py>)mnelOr008Gd5%Ols7wRe|RcViv@OvE}Mzz^&O&+jq!I$cPH;(@bbu4131; z)r7;+zGCnu0m!x~lgE{F6vv{l%tvoM1o~tJH}*xGk{SnL0JtU3iRkbN--W@~-=?9m zvSSoUUex;=e3e@`tYFg~jHH(MWWc;R1Z%T;+Y-2HHf9ZNXxvzWD2DS+At~zr7Kf9S z+06vg`Xx1EZ+U|vuCGf%o&D#{V*4bgKyBr4e(#4G(}~9%<_2LusI=?$aWVP!&jt9? zm;o=a^>?bQv=35-fyJ5nENfU<5@1!PfA3BTg%u=&Z#p+=LOrVZRGBNV%FR&cN8)3C zasOqq!%nd0-u;oGEfU_7d$KplOBv7lel1mshrEm87QtS>;RU+(O^>#-tAB`j4a1F==-0NOOjwx*7LI+`vzi}o0jcZg|+}!s)1n~&{ zh$N3!-=3(6i>V#?tkLQEeU7gzRkw!E2CExBkBX8XSVP+!g+H??+IsSB?92QHl?uc( zvG&K(R$0SN`;HzGY{=Wg-d%g5re!A5Z*J>0Kf7p*3ID;pdu$GrKfZ8qCZ)`NBsm6U zH+VkE>8*$w22LCp{Ai~tP@Kh{{8t)mQA!&<+`hc=qL^T3f4}9Lqhf;-MV5byN7kSG z4C4cT4*Uy+gl3)tj0|tamsczsPiY18+OYV}kR(2|Q#USzg{4t)_+{OfJ}Bvj{?^NN zw>z#RNe6ugD8T7muCI8sKK8ydZ6=|5!j!GDZ#`hh6xGej@y?Z7;fw$tkY`X-LxAl zkRsm8_A&JulBPb^w0A$=jigacGT3GV!Lj? zkM^{CY$v7ZcA40e22x{CPV&g?rkdNg&`z15IA$0JV2~z9rF+gK-Up`V^5}ttn|f-t z{@Hwe7FV`EMM=y8B}wqwjoKECPhXbCr<8b6IJy$u5NWfGC(%Rg{sFpoC&UspD`(sD>LscOjEmrpG` zuh~;(JCn^RnN4MAY%R=y98&wltsOFRDuFdhvM|p+c@851h z922g^rDuG=uK#>H%yI8WO&5~abn3lLoK<}*C(Atps6Sg@ZzUg)G((hM}Y8)=pI2pHs8M78Q^Cr)$_=og)Gq7sqm{T zZT+1)AB+euL}9s_bEetPg>Pv72aJ0l7(H*Q1IBP@b5DF9dp!QKCt^ei+BTh zb3naKCOi(7InG>ys=AP?Dw8CG?Q75@eW1o-?d7672UmBTQ|HZ@FZbOC{l+&>y#%PSQV#79M`6MSkE6UAic%Duk|z zQlp(R{A12BO3X2pngW#KVXh-$AFGex-t}zt3uYP&+hh;z(5h&LlVi6hU)Yb1l|_9x z1q4B+eR|ZBBRvR9|J{E<;le?Vn4}e6H5_VO2va0eezz}~Kj>sHS>54U6v@B)SX{@7 ztf^jEkGm%Mt20zC|2F(_WRx;V6Zn+jzi70vDYcYwdfBQg$5Nr4ikhwk^~w))o@atQ z)iB<6hCH0BUJA$u45YS%K~Du6r$Jd9O#RlsA*I6;d-*}K5AKyHL-j_4ssJK6me!Q! z{D4hy6=U&$!r?WGe3&Uusb*v+QV_<_Bu0*_VF6a-zYRu~{BbEK(HW1Ii1CY0KNuY~ zWWC;e#NBo!it4_dS_m&8_W@>&(AXE?({9_hL^8C_%9z11=6{OX>ep;0FhAX0{H;Ow zOXptZv|GSRGHo61_?K*)sF3LB;DC0^FrLCqbt0(aJW}>mg&nui|CB>*{$Srv@-a`L zJY>4*^KJ3#&vF&Vga&;fS4!rc7l6cS?QQ^@^)9m9U;pFRfgcMfr(D2dZsHxE zWK=($X6-JO9r)XCmN2@IS$j2IcQNS372gHs^~A5qX@6;cT9w}t{{@D8r-g_He>@whv@Xk5c6txo8(pBSe9}+- zwq%h(DTjUYw6*8JwJz+T;nd-baJKwzMUFRhH|AfEIq_|zWo>J*0cZA2M%o`$__@7 ze&;i`0K(}oCe{fP8rZ`}yyZz}FQ|W)_+9+~^bXuCcft7in%qMP$uIB?pJft^=F+8f zu#{Dw_;NTYw2%5(7DjHbBRlZ}BOu0DuC^Z(%D`RUfPH$PU+?%b5Vn?y)q^<;Vf4fi za4zahX63peS)jnDhQdMeytP!Z3_yhd9fsM;3~5$~$1hgMe+nYA+ZHClR-m-LKFg!` zn$~Y(n(zqq0X?qg-TihIss>1yhjGcrp&5?~-XA-HcTXjkUYShJ>b7>quZ6^erIfX> zkbM~$`I-Dslzf#fH3J&Jc!)F4@-S=Ndg@NusnGBI2FSRbbJyobOo5U>p^yzU_$TLi zRr)fDS&+j7Actiwj86oJ3(VWvxuW@sRdQowu1)%fIgB3TH-Pn-IS6WPE-jNRjz@e= z-JyxPDZ8NMg^5sVKC|i%`I{0jR#noBWTx7c8K#$DuCiDIQi+5_1J3uF9o^>3|bkL-DLl$5bLN5TL&Fz9Z7S|p8km`U^V8GV{eMJ>rh{PKR zz$_ZUWE0mZOxJoT`j}wb0rh;<_xlN3rzz|^Pq8#6p318#<%>KF$x9nU0u4Xd=& zUf5eaYO4Z0f^on#%PH+s@MOKg^mlT%rdL6Xo({YM<6eE|!hb*;I4Tw}5L(huc!T5~ z4gvVczHpDPj|B-*u9h_!g#Fo#s6~MZ%d~3XH$V3p<*05eA}WN#_uOh*Srx*65MeOB z@4>u#m9Z@h7daEG%_+&Uh_`7LUp#z11@iF0so-L%{_bZL-R3(Z_qEs`wQL_1?__#p zj8Z>{{=+dzII>R%V79qPxNSnJ+d{{Q$nDQsgPa4_WGgCvSVUXp%U6}}1i|Dgw%!*R zwT^p-AD9w+C+3M&7~dZ!7&zLsNF9uj`nE1Tu!bb>j{6S&GM}5yV7+_X`;tFQ1Cck9 zLx)`^DjYx@_g{Xg*6a^zC9xcN`%seW02omIvlPAOFl|Ol)vKys<|A>Hc)qM4K__D$ z=?tk#zJ1CBic&72G1$8?))#1Xod6&0T;E184$x&oJlIHVbv*wjbKs6}!4jFw*k$-E zE~m=qjv}N(=xn#t<%PXT6LrY z)m>!KKv{VH<^fN$5$h5;kjyVMIJw0X+fGJK!e9MZOzTU=d>ar()*uy!njQx;db$X(JgkhC`iqKT(4D%? z?-WcY79?v!M*Qn&a6ijFTap7D>_2?lJ{tCU!)XY>b|1_}-aVCFs>=D`_CNwdj?U%u zPBT!tbmI3!fMmd&oGHa5sV)6Qgjn`~ObCMeagohm8lYFvN~P}(%%$1yhY?+^p{G>i$r4k!C7>wKx z&k20*BEdE{AHNquEl_(JC>^^W^>sdOS62)tWch9^IOn7r`#7r@(`K$It*%_Or>?#S z;ZV_nN1sCmb__P3FLK@{cXeeB0`b^TIhNO;8iL5vJuTYEO)bbvQ1K|5oBDyZq`uNN zWTmQ&5dj>&ajRB=#2*)*eO;-%$1v*@JF#Ag^en%}Za{k%DX;pkOiC-OU0luucWNJM zJ7;@KY6o2H3H-Q3Z;h$77H}WT8Iqsm(J*&jL!AWs{j`N-+e?NUKwkU{kgv?r<|c^9 z9(Y%O968|;VG{(nE~?iPb&E+3!_E>c3HDoYdHz&}LzS@vMn<69aberbZ*wZt6l>ml zkm5(uGLX{c7g9+g#k9vxXb2%UT^H}d55!*aIr7UMlA<757 z4}?rH`(ZV8YxUwRZzEWON!kzBRL*j>V}?wH;{4C6zp?=K`du@%bb%#drdy+0;n1^3 z(la)Bt8N0m(n<>th+X>Dw5bqK0t;NezWuxZ4#KF7&GdBfLDGru{Yo|oo&NoBD#YWy zVa<0o+5VERiInsn_$DBdhE-Pg!b9BnSN7FoLO5%v^PiHmgKg@JC3v|n9wC=U1T+=OaC=+p-f@#*(Xp`Co;f^~jkcpU{Tg@s_yqRD%R~c50b9UH1LKZ679U40dibR4jNZN6h z1CCgNCrTm&bgfAaahKZ|a-AozJ0Xk$K~-yOi>8j@hjD&yEnaJ;>0C^*xZAKUnglZf zp4!qG@1xkts8%m%Eh52Am0xa?^0AD4Gpz^D+(-!heI ztfYo)cW#wSagq(5iWdPI6);MjI2m!hTPuXPZZ4h+7N1y~ zAE!>V@dt;F07np4-#RTT;_y=hf?@vm8=8;7J2` zmM)s^YABe-CY4Gg84p1TuTVgl z3ANrdm^zT~+dcVdbQ1s)&@5fke~>c`zHAcITG*Tts49^?Bb81h%+%tbeYX2r;2S;K z$WHbENDmlmviG|9zv;0(ou5whc(-lJdgs`Nf+YJ<$Fua;hGh689PgRdU~S>DqCt%B zd50a`_d=eaf<&J?i%?yyAo@2Vz`zkDA6$ds=gQ_WyKYNbwE7Il(}z@4n^VuHi3X;^ z?)Oz7F(phKJ}X8|6WwSI-Ff_kZuc1iJnMIZqT#oQJbdXl_l-?kus71PVrK9>Vj3Km zlV>u$`DlG-w4;>xrZY-nL+rjjL~JQzF06r|c6UXL%vcc(f`>uirteRzsUUNSV}5;S zGdv!Go9qo~IX(AWVILZM{Nh%7$rSS!y>Aw!7M#Jp^DkWA55iCUTDI=(kM+@0i6q?& z{YVx_UQzs>921f7T;ZMeajEYMJPxrU2#Zb)()iddx|*!>kA8y5w6?KBa3h((ZPzAR zKhOxJzZyl<0&oAvk=v4pR-skZ;KMwFgQ)f9>eCg>RyL?`#i;k^RXyomm(4Ct3a0uf+Y}a3@dF(gsWN&RJT`i1>WdeY+v^R4iUy|C!ay4BAS0Ew3ek(zSRl)P== z(jz$`=3KaBXGBF26TZU@$()d&+Aj;VfN9_FZM=aPb5-a?B0`A%sj71;CB(c(a~bj` zrZOXU?g3B;n-VuGaM#_^q6xm<41N>Bou;Tu7pVijwxEK!eA}$m=#KHP9+r{*(0Fz5 zJw{8~sM{qzq$sMW;EO}x{~zLYI#pp)eCD;aw)IN*=Diqo*P(WRyyPXRDsBf3HG6Pw zb)A6v0p1c%0Wy=7MyenZ{N-!cg3QTCWh|6}@MZKDcL{JGyLAtx8QKSR}DWz)>NkM*#?|tv{)8F~)p1Ct; z;>8O!tAM)SZ4o-fPO8 zxtpb{Xf|eiVH8q4w|sSzEdVboP>I+Su+dRj=+}Ha#EOk7l^FFU0+<4fQOp^gIgu6i zd2^(|tRNS_7V?x>Yx@RQ7U#$Mmcz3uA2ErTFIN~pMH+x{XOm}L&-=RWedZ)0C2-Er zE*)6}d=0=*2n*8FH3Dk|W2PS=+dQlla8UttZIl7Lk8db4o;iM~T~irW;HhavFIOem z3Ufb}Kfzw@X4%1)NqOPCj$(fpPR2b4ZDBdCwjJm;=O+wRmDj@nyaDN-qX092>F|kb z{Jn<~<7IX_?VrC;HxEg;=!sAPqXGB=YXV=O>*|}r8H+oob+f1g{t%FJsLPwwVQqR2 zGBYB40SH|yd%!O4er)IdF5A;~PM(N4>edWzVQk(c=(}A6US-}O766(fV~XI3OxNQb9hw`Fq7bixwECONc;cn)Rp z%7!X*d=I&B+u~?(^~f^M!8D^^&Tk9DK^^UJc%9bb*~d5;_SQ>ui=o)m28>i+p;@ly@` z53U3_HFJgR6JHLv1CqV?Hjo75iZB13H^UsdwYuWMcsH_hO0S*h4Sr#L&WXX+wk6da z`U*qM6Te@ldvfv1br}w9E7GOXJc7Cz8A(Sb8N~gw!T@GlAsf?DTbBi z0SE$WoR7GoLHPb;8EOzOB5(bjl7rt5;- zF8-Z$*_Q43&<7c_Njq{al=pWRC|{>s5HO-)VH*8fIA>jbCFjkSFV#T?7sBajbxis# zuGe+3Ov9h?Mhtt;EYMZQ!+I#)2!T+Ypv+i(<>}m?M19ZgycquI1@Yd8%lDsowNLic zffgTd2?s5yo%--&EdlrRtyn&GI|7Qo=`sv(Jo3MW!51XDLO>@NGmLKs-QDtD-i4>n zQ>L&q)K=cOm>_#GW=71(X$JS2dglFZOpjo)W@L4_`J*X-aaKelQ$exaI1RB(I15Es z5Em&Gu?wa>+^8&necRh&KLw3RC~HqTLNTzY^#$=<)eFJWDaLncEz*=4P^u410FC_x zCeS*Ar{**~@UW zW`*~@aAPlP^VzsJOtqWOJtqK^Z>7Z-W^&IBp2j9rt0sp(4p=WGHH4GI7XobhvUd5I z=uVz-xnpsO+1{s~hxHoIQ|vNp32I4QU$`>Uw6wNq5rhTL&%FY6;N2h(ZXe1vxtVGA zs$GyZaZ@co;BkYe%Lpg!k9Txe`cq!4s3dRUG{xE`1DRT-W5_Ppi%u*3)s7z_gnRxK zP`;f#W+jU^w0@V*&=>4Z%bhd@RCiJiUPAJnU{iS)JR8=gk;ZNh3&WfPQecy$DTyrSD9nVVpXhV5V(IpB zc%M{VD_3s6tITT1$5_@@qfFPXFdErFhB;JhJ@*5IDF*LJ_oGV3oZ`_RQtoIh8PmuY z0&)i=dn>Xa_NS7{hm8$P_LpROuT)IOLFzS&09$S$l>^Ec2O@GAa#s4VknrF3<X?V9W3skBPb@`J+6jP7vio>k7)Rdz+lLg$d^!|3kOJwRACcx>> zWF8FsZ92RvcpYLPeE8L%g7@WwX6x)-(U?^wEb*3u^~B22Fx|T@zlP|3K=l{DhklZm&kZ0IDDtR*>{kuC=@#!EObHmK z>Alle>d2EYoL4J;RU}W`bk?jFGMzNzF{b*|Fz8KbYBfQvGToZF7zKV8{Chui`neyT zM3lulJPzJ|f0c8^?sGF?GB!n1s4CmCVOd_8mcgj@t>jgOALAAz0W5$6Ogk*7sBDVx zJURJi3b!#9HE4EVXA0#M`e3 zCn!}L9>n#9l32dYg)l70hjFOJRan65b2jf0njI8?KZOZQt*pG;M1$iX>Pb+*XH*{%S{<@vKRyl^RuzW@k_bmv~2I3Q`L8Jy$n+qHlE8Q?8u3 z8kAeyKb&X6;+1&IOaE-;%4UXiC52GJv9dtbkk$UDsE7M&)r1FWvj?fWr|-7!A4pLV z0s7|DTIE)HvGUFPeHoE{fM%AaaNDQMp`jeFIKdAX0x&kq35H$!y2Lx_xFc(rhkLd6 zvd6^04}yT+Z2D^_=BI-KkRJsr8`m;APT0boq`Eqa^}Kf!Ch?CPHZKfS+qlDf6m?m# zEKc`sNI)-O!;*khc0rI=Rt(!x9Q8rf0VlIB1{Yb-*mPpa0G-baODy!e;T{&8P8yaB zIBf!EUn;(25s=Uq^sM4i)P}H0E;=I76?e~;2#s+!ANJznGM-|SS_WmbWO6U8-229HjPj5B5u29tYSry- z?5$cEcWleNnEQxh;AzBZfPYj|cX4^T?VV@VUELe}2R-`3@@wXV`X@AAjlhx)e_!go z=}<`=eIwaAj2_ujOa6T)`Gh@{pJKXtVC4KeAYNsIV>FaowS z2J8}J62%uIv<%EU%F>%9N+!uOn5}tuln|vJc`Ulr3ocNR@&>=jIG(rnDxX& zgyrswGTwR?QD0gZSRm#Nc?~SqVO7Zw>w2IVT9((JKa5LD)_vGbqo|mE_;5tPd2V7$ z%hmw9kp3|N)#uNC#yoxSaI0K@)Ke|Z!0qE-5X$F0i4PK~FR!llREqc=6DKk)dbPjD zUB5|H5;5`8J##}_t*VaaMV3ra7^CcX5vME9hnH98^hhnCiIK4Dv^tsv(SilmMKry< z-(K;=FVjo}I5+cTMR>6j7cqw*!%X5769vBlu>2wjI(_*OsFPH0u!gx2>*BHOSKmv6 z{=FlwJ{nz`5Z0NF0^WZ&$N7weq(uhecFeeCN9a3Fc6fK3db+NqvSjDmc+Mz zq08K-Y;&$jtt%hh{Ml|c_stB=Fm0@H*E?}r$m?3aRC8IRYcXqDebO~tl`?7W;V-f0 z+wNWQ&Id<1W^Cy6@L|4@2F<$%kQL^fZfP;>s)O$3qaD|&=54;Wi6{95l3>PNPdNn|55pex00HsjL3@PAPq4(KY3GV6m?GQ%29${)c(g z(H>k&`03VVLF$eAY7pa-hwmjX_Vi{zcd@S<4@!K0tZkv={cEb%-%1h-O7z{aAty=L#C%~NHJ*4-{AGo=3%l74 zy#Q`+q>$w&tEmguE;*PpBk`eJDQKkX)Z?v>5?H%YHdoj97EW9u#n!J-ADP@X2D|Y_ zWTFSIIAEUc!U83R`&C5veZxjbliMn+r*Y<(6L|A5LJ67OUq%?(fy;Q7N(UEta!Z5r z6bG`-3~0kZ1D`*Y0_;`fD41mfur}YS%{IIJr>KEA@Kf2gDPHP}Z#w2W4+QVRSf6$0 z5s9oe6Rr&1jh3cumyq#xmoBhOrBP);BvJEjWfxNcTT+)4b30vX{PN3_m za`rQqiqjGixwJ5Y!Zs9AEh{mZgVEvC^TzxM$%g97OH%DB7D91xRv<8Cf1Wdim(`B= zqxz}$b%pA0tt#wgES%g`8*jlUoPci?zWOT3mP)7UG-$}hxh8k>G)BOLz%p9`q@cuM?Sh_pOwz9QHgGd zt(AXp6V-{TI|*_sMvT!dX6p1#lPBG_xHmZ7@Ckq=y|K<9odl%-GEhl?Az&8^2MQ<# z39C7y2QC3A;Rpm6hDL!=Fjx(a5y%Lnx+-m}$Kc?rM4eI3lSIo51QDnXB#AKt1(V{L zflLXTd)!$0%T7KPrj}0bPzVJWEUx6@>?tSb;tMtsMZm$LFbEPXfkA-L2#Cqg+m7b8 z9$+~9{94}JRmIxg*3J|BlTy~h(%RYc9P|99g7x3s^AXPbs-EVK_Lj2FwvN_+qw9KF zJKX?75@Ppxt|3r(Wv>4mQ&mCN+7paG{{&pUN@4A6b*|-4jPnaAsdF@SYiCM+Wy1lvVlWW(yIkVOz7*s{9bbYBR1%=L)qERQ_U zQ5tR%(Ki06$)kCDrqlPrjJgaBbX^_Q#VY zAEWRr)vX`eq!ZBRvkD9i)i(?tloHUU@it$wS&1tcG{%srz$V2X$GvoIwq)38dL#bu zlCsZIx-EMI7w=4>3iYjKGD@vmhJ1Ue9ktOO+1N;5KNT%DnIh*xz6S(z;bFR~L(jT( z)YS}b9naHQ9*$$vSV$ut)3z|u)M|%>;^h0Cdva}?c?Rw0ODpA{o2AdwH+PRi+^CeH zfd)JD`}5>{Wzvo)&n(ZasDn|nw>UfeH zn%_$9F4>(ue0;)@_J!S-*mNLw@?v$kbX$BO$UtyGG4cp2s(6~>?Zs^CN+AFVJ%Bzu z*bs@CgWSeHn&TW?u?vw#$*x$x)9nmesF9D3U`s6C2V4*?O)taUKMc}(J0*9 z^V1Nz?~`uu_*>Ds{_Dho83*g<7T?c4HEZ4%Vi*%HZpbkIZQKddFp_VjO+- z%gHU|_Vzmbk|HmQ`p^Qu0ixn%xgK?oQ(2Fjpm&vZ?cVo6s?aiEM3S>tNIU` z#FRzbNO_~afYQDv7QzjPDGnjVq+3Yk9x!vK=e}XEM%b9IPefrNN7)`XD`}gnmU=l%Z5* z;S4l}E$Y^|#_~ckyf$7BoFZe;{v$#ov939>p3!bE1<(EI6-Ub}4r3JrJStlB!-A z56?|@pR>+YFY4P!MSsW_bzMe>SCB@o^Z2+tW0O4MDDcZJ4k>b(xp^DXSKZRIyti6b zW_mkHL*w+lsdjUj#P?#fccADYs{DI@cSTEjOnT1)ckZQ5(cp*J($gEO6SDh)v7aDn zoxIqIKIu{EuQ^5rCte}o&!vdCDhKap8WVf{N2#eSi3YpqLHi?)D3j{L&vxsQ=#_z? z4gTdztL0-Otsa+Gg*FE{x#N76RtDJLsiCE3SUsz$hW)MxsCAUZX?}XDE8{&!Bgdt~ zlFXqvD(+l38$E)y{8DxdT5>HPlMpczn|g-r;F$#VnUjZZIMPU}{D2$6ppR>H_k}6p zzR4*aAjOSl5Hq+U4aD4Q<3gjBJUG*5PTJe@SMu>VWUq|w4PDO6m1|Wd*M_YXg6%R* zr3pfiE2HZRDzsY)OwtW1@uiYxR3xx!M`BfxsI3<>!zf!?q@Yq*8eMrI_iR=5pe8ob z#V>wH(@wCay|3@9m02vGn~|k;SznA*tWwUH{;0HWM}yMB&_rG%qEVd&g&ZTb($MN= zaJNmI&Jpm=u~f>vb~{d`=hIWeTU)5%E|snby)mLY$R_w$PXA^;_w^9nhapf5n-(?k z7k#BJl{_|L6${eTb(=n3)gw|N4?e69l_RHm3=#P)$tVlS#jFJ8PfDKmDk3EwG|5cledKqP6yBhis|vO^!l+gI6#I-P5z9 zvRTl*fsN|sw`Z<(%o3MF%1=6rB`g%NIvE~DvMsx^_C>?odk5bs*-Krn*-chJ-*2BW z_;0^)JP#fop6=G>PXC4x%zvUL5{~>Ah)x1B0U3Z23G?y%kUM5p001x)5cL00{~L3m z|Di=flD0^IQp7)_Xp%T7P=o*pO)?<`USveV&SRJf#eahs5|$K63grI>xr!7REsH?@ z40PfO2KcBbZU8pIca6|U2pA26fla{wLk;~$b}6a<1VAtnel9cCM7!Ui147&Q{qlY? zXOQDE8&zk{ocxrw02f&8va+_Cg(%m_LE?w5P_Y$g1H7X&b93g3EpG(7-rj2>Ygr>EpEotntppY557t3$YbiUflQ-{@OEUa*|J5MKK6IpDpRhSVDdD?m zc3dI*{5QMrSySTN*ps;sF}Yr8&*!E?4|;Gy0z_?Bmo)|AAFWIDp0OSv!K2XyqQPI; zmcdN%p1jQCFnz-D1NeGR{+LoE98CUqCIo{clQfxu3Is?*(i3K&DfB!uP=dnn=?nbl zT>Phx0wd0C`7_}-zmEjt4SwFQp=ALQ0tt}F8YWg?G7yWFK!73V4eSi2_<4bpz<)2} zHy8?rLgVTG2M-UE!1MSGhKB!6i$*{p@Za#za0wLNPazQOFN{$z3HTpO;7|-+vHxX) zhGOu^)9*0U?~GAs80L4zC^Q`M>v(wn5C{s5M*Rx>8-_ssl<-#pF;L_mj4@F3pD@H9 zil8BI3H;hRZ~s~v55uB=XM%U41+bBn1V#>tLMkF5P=t~k3?U1X zkVQcBp(rQ{ql7{!NJv}-|Nl6@qWt`Yplg5E8jM7qZ+jk|=I)-p?$$OGXaoX=qPTQP JQA>&9{{R3UHnRW# diff --git a/matlab/figs/root_locus_wi_modified_iff.png b/matlab/figs/root_locus_wi_modified_iff.png index 32899a2c9f7d4c629a4b10e365d5f9d504370873..6d95f725d72189c35a7cc5c757f078284a0b01fc 100644 GIT binary patch literal 71876 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%0AfF7aJV2KY9G(c11yY+(YB9Ix> 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 } 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 b-`QD90PPzy(rF`3=xAcBZ>IN7$36K!VmEDI literal 72630 zcmZ_0b8ww+`0g90L1VMg3L4vJ>@;j_+i7guw%IgpY$uIv+tz;jJ?D4+ID7BTWID|x zv)22p`?+y_uDf9ha^j!i@!-M0z&=Y#h$w=ALE?acfjfSJ0lw2dRWl3x1@5RQ{tbL- znAQjQ2b`URx+54EHtN4G@Db3B02tU8Fi8<1Ww+(ite>7T3onBkbwq}wUA{6&D@Va72YZhRBI~VHU3bkXqGi3FF#G?mo|LDv$P_K80wfHuUp+9?v)Ws z7K;$cd^nj?bG+a?SY?^no4g^wh42&ng7OIpqMJ|Txi-x(UH8}=SMdv)IW-60 z3fM6h7+kPA>krD6=k6r%I(9r+j-r zxcmCm^~zv`2@)yG(wf8CZkp|gwdc&^-Gc5)``i7BdyyhFw-vO}^X-vTi`IMil$jP4 z)BqhXFK^>`DpSEpEQv6U)*2}pnfYonli@%lYWoAK$?j2pp@GQ6- zHU!_le>a|}^ZD@3_I^H+#>K^L5JgC?=t|w+-My7lRZad@FV??v(fLuV*<{n#-_IBO zB1*YGZT75BKJ2MAIT%-W(NLaB%)V|F#eY=3x7aYM=c)U$otGqW z?{ci>(}5Zd7Gc3|eP!x(peTF}tj|}WJ7;IItuALG!n~PL355fKPk+|KTL z5BMni0gC!;NapCf7LH!`ew=uoKT{8|#0yvwYl7-8R#?7swm>i^u7exBHwLDH3$3O; z&GWT}@Sm0LU8E*7P!H8FjiQ&}#<0MqG5CObBI5;@{)n@yA5~6QL%u5tLJ|CWfh=-UcK0ZGDAFnsCE&{|+ z;WLIB*TeT;1E0CCzaQWwTk;rA|8%V4${swzZz;6+d`d81xVkJxh$2A=x=4feYX`T2a-c02dCq_+!I{yT_^i2 zyXX+bXI&>Pu1rS=jOKMrg?$N(#+N=BM%<4IoO)$OHynpIK`)BNqLq68QlyvB?oeE% zZs)qg>E>qF-#p|*1`RE3ZCo}B3`iKn&Fj5U_60*j!!$;H ze=}acP1HP1K4ey!6Ly*y=oTtH8U=O z=4?%p6T=^EZnaU(pAZmwS5{VDr{|6q+dZ1hWPtPO?)^Tz(0;;L?&a%z?KK!KD(9ze zMa!4nS5YzHK*RL#E`vB1-Td$qec0%PIPT`aoiXhsHo>aBY1oYP-pC+qk1JRfvPJzz z{gH!j59r4n{!>^8!+$sAlTGKNGYopc{NP{XbGTQ5m6)|uflGphI9vYrz-1N>W^XSw z8SayH5knpxCR1fhBX;Iq86bEwIBbiZPv(;yUDM^@p!~%nE}mzFs5xS=t1T#$a;kev z@0buZT+*LH(BU$?A2%Wp6Og>NRb{wpDM0q-A6j{2xYS>Z9gdPfdd!>O$N%`{_Q=Ua zVa=XlNg;r$FybFE!ReoKY8uM zO}l|*gSW};JI+j_S@QOBvMkx%9gG_?o?((|l*^0}c<1yT-_J0B6!Y7hDwfukcPObp zkcm$Qsf>H0ewEjF;9-$uJelP5K2>`-uMZ-L7$b}!!MzrQLCPcEQaC9hJt}YGf{e-T zZDwbONZ=<1GgQS>Z}rw+EElqR_oV!Zt3kSM9V4ZE?W9Ju&Cvrg@+ishW&@y$lN=3ITigk2bAu&2w zX|nfWVPb>ndfj3E{P~kWz~-~Odb_*x6$)_31WAfEsMuiL>vF3@zn|%xO3$Pwp-UDW z*r6K~Cw>pX+}bF(LvgS5bD7wKfAKrtJ~e=b@hx{}WEM9a8f(gwemBPBkFMsud73eP z#dJ93O)rq=lSvrNUu-I1lh{{543P7bK!w;rCFkME=`Wxd$ z%z}ehSXA^@@p^uKj@9bb?Q>8<7S>jK&kHRECxDF!*Q8Sp)9%;6!C$1)&9;jZhrQEm z&GPHdu>F~dcu0n20|}swS5QWnWWo%E9fyXywKM4;3Vt;C1v=PjbOZB4lnLKYxiw~!Cgtu}H`E(g0tIU8w-&*7HCNDi7L?8LCQ31>rtsW!h z&Ko26EqGceu_wjPsnBiEef&fCu1C{BpYhp4vq?+sJg@q($;rt>gPRd#K#w*bY=~lR z2UlR(Z%?dD!zSRr&b06>TKcvNsac0Qdt`%P**;%^6@?<;QY9^_!1dJXu$)>F^d#D9 z-&v{B#imc#XiaqJah1fc%rNJEJ}YJgv9TpZ6Y~6aJdhi8juPvgEmP|6Mf(KxG1LX> z0B$du+RRwT=bFaq0R-vEFW?6WH)c0)O!OTeKfdQpTMTP&jPmCaJ=L1h4N_Zn2zk6g zs0@yM47R}^=-m`5*$4*rS&Q2ybW0rfBl`RI)nP#FbZ;ShLMg)@gLQX#Y{vmv$Vd9H zUN}>pond%#nK*`AvUF-n-~gHa>)X*FwZ_p{tA(XaSVVsMw_ss2{KV>WH{>_Oq7a7X zz_VR~58`6a3ZJ0vLZiFa_uJ2ZuV;!bB&X6kS+P>D)t&E6RU6(~B&KMR!YQPaQ3wcV ziIN4sJc{o+G+zr@B59A4|Lyg&K2WrFf$q#M+ZhbFvf@b@*fiLk8&T-I3aow_TShl2x3ASWtB!9h-B)x(Pgi-af+9i%|{G!i}xrQ|vo zuco&fFd>vG^P>;CYmSvp*Qt6W0ReW)in+#MNUPmiXM&lBhrFFAc8l$jFERU_liey{ zx)-mN?_yT`&>*Fo&_wR55039J`Jm8IpLD~9f#a&hgh^&SQxc7gf&z+kGHssqO5^qx zaCoixDzQs3`L2+*!BzYr@AHLg;)avI*bcxKQL@I$yFVW;JnDucwh+V|3@(2{95&mW zjzzI}wQE-PL2Ln`r1iiJr$!7grJT~5jy9aW)aQfwK4gJ*S%d#e;y2Uca`Q{)C78W^O;zb1T* zi_~MKwwl;ziv58r6JA-6LSh0AV*Lnank z$|!dVN(gIlJaBk>cCOc;8_(b{-R$x+9`QI|<-(%V2+YbN1e!*U4bQqhlzeP@t<91g zZ-Wtx+D+B!o&}@dz?g!s4&6t7P+O!;G>7dIh!`fMzQRP_W}YCwbt=^mqn6;M2PqfB z7sUOgJ`hPo@Htvl0{Tew!@9Kma^?Axl@*xLgZXWu#5Q>BJTgpr&`k#7U4b9zOK!s@-u=S1`2H8TNW|KzqRKqv`)KAkDc<3p6su7l+vw~1AH3Q-s>Gc5no7LhasF4CHCt8t%wRA&g8qH z6jlXS?QSN4c4e~y^k=;_^L)Qv{Ns%jw@x$-QlG}d z`4U0ax0IIetaq+k5ha#uDlHvk9c1SP*{RpI)|r%&tC=76We~!7vwB@^LVEf(IujVk zyQKH~uc(s0|)o5eAtjvb!6hT|Ms8n@!kT_bZSC9qx=e z0RqJn(>NBdZish;3lX6R+RV7EIeoG2v-@o_HZhJ7OGA+S+uK5#_WBq5T`cH-LScd2 zMf6H8kA(2Nu=CnHnEIM{CLT@D9=9=3!s6^o>xC`4q0(}k{`r!S{Vn>6DWrK)mx?LI zOMx7Wzk}mq$P@)x3J4jn`5Ikh!3xzXDVdpCLvgVADowTXJMCHn=qNn4p59&y^o@FR zC04x8fKo!sw9y}d&E;~6L&)v)i)$lK7#8^L7}bh~PgwHu^0g(BT=vxcE(OKHYIR_r zFA_EpBVG>)+$tT=CPkLW$uNGs&W6NjaHTFML{k|YEpphWqcqXH2LvKRdb)n}J zX#B*}X)|`-G^Xk{r1w}ZaTN;%A=EO{k<6o%Q!bj@nr>0u=wWEZo%L;Q^8Th%mm#r* z_rS&L7cyckknRmQpy5)&Cv#aZB@|lg(xg6tohHM?Zd+#r*}Y~zO}vm4VX7av`mDAz=63t zMrLEhjULh!7WxdL3RQv>zm??(`DPv60k>^_EFdxx@tQuTZrE~Y9ME+jL$FIW?M}2* zvyrYxE*(a>La2|SBa{lDL-78-syX;Z)-4Q4PSm!n=9=;;;J#ns9yxLU{{36(6u*hf z=e^BXAEg>ZC3RCP_%JdN@&xnJLEpr^uR#m>)&ptSBMzPP0 zD(h_CW>p?7=F}aH#|_KW-!4U4$v`z=Wqzw}B%DkHVjNVW5ykn=zud*met<$?;A# zf7;=qFTn&u`M#1?^ft!NXe+QUOU8jtU%~&SD>m|EsT+s)CEscTd1;*E*~IAg!?7AJ}EeECK>~EK#yv` zoEAu&CHSS;GP`td!vCGbv+066MbT*&-!k5tAYfxCpC@qCh$d2OMPGV4q9qyVF>oy!o}VjfIy8KSVo5$|I_v5j zgBU&1{(Mcon;Nb!J@1(qxd14nZ;=h{R21crAn%;r>|KydMu`NNOsM#cZixMuw)O7Xk3=QUVHDQezE3fg?TJI}cAe61YyQerB%zFUTf*}- zoo|GzW2$?>Je0Rxj?B!d)w&0y3<*Jgalax z52UU4JFmKTPZ*`_pA^zCxe6q%rO}3|XHv6mLX91~_jn!_jin$MMn6G?tu&PH2{0me!x;&N>@C!Ew))rC*WsbR z08JK+&>FvCXS+WF3-xM0!}j{T^#TnIttW)oduS+*jQGfJM7m&mhn~&;m(pgr>TfgO zvv-VWk|56tBZtft0T20e%V`kSJe^s(XPD*SMqEYZS1GuXgdxe=dsJNJ^&eOMZmmEZ zg#>#?c^&T7&p2pJGWpF{n}l3ARe|rNuC+B(yTM*Iv41YwNRhvC3c(?IsDp7~G9pj- z)5DI@mSqV^z!n7QnA(X)p)G-ioEQH+PK`0sm(G{LZlzJ5!48iTtnH49H`f&Zh0)lQ z7Eb+%vmB#sx!j^jVzt*xzYphqy9E`$T4 zl+W&4S-}THU&T=Y=VJ_f4jWoWuUQMW0`VC7D|ZQrPbu`6Q5JETnOetE!`2^h(kb*y zfjjMI9`+?WZegTXBbb1CXFWm4=brff_OgdGryRpeBnPs6PdplWz>1Y$LoNXsvA!Gc+8Ph z=TGvtG`(^&A*boY`zRv{o+aDW)ec|n##hqWrd!MJn`knOt2cFBx~D7B2=j1OyK+JO z1ci+4z(cj`kzUypZ77z|Hzu&t9Gf{f2`PLvwV3|Gen^0rW$I|Z`JqqqE8V)d>ILgT zr-saxb+F*q%}@W=uL5Ls5(qaI_4I0i<(R-E8HeEHHcPC4X^L4g*tmPyK#TXxwRK^j zd+w~!;mM`1uaAhs=nIX2h0#KUjXjtv6hLd9!D`+ER24f{*AmNx>P&9u^4aUR*H@{} zejb!XPmW-`ce6^7xGXSPav>U3jWW+O)6<8`4HdHOEG#T#x*KhE=0Hbxb#=7`%*nUs zYb#;|fq{W2C@2cW&p-jq&##=~p2!iHJf5qdd#8>kzq%SEM#sYo7c1C0U8=*nsaye6 z8Q}F*%b*87vSbS$KHF4an|!JRd1f{S8mz7UMknNViCCpFJ+a_(nK70icfh@WBk@m_LCF#s-|wkZ{)E^K**`8MDWV+% zuTnxH9J~n-6jfEMva&KacXx<=Dh@!q2hK8hc2+sU(E$)@`1$$GSkrxI0iiU5GRN~e zd#*vZ)4T2C{iRZ)A-p>P7V?+TFxv4#jV&1gDJf~Q+Z8E?&1%=$8exmpL}&~M{W zw~x1n?=(q({#&Qt3u7`)gGVS_F$bUs5kU02i%idm>dp@Pr-odb9bP2iVP z4LN76?d4D6h+9|pe=rvoz-?$*Ef+>K#`R%1a5*nSVP&vWPy|gCh}QvcTc$W)A9rna z^${3raJU=_7nMZ60CnZGLLk8F&J^qtOs+9lXms+|?c(PQC-ou(bFW%N}xdHyHz z+S*zIK6eaQSlEaemee;)0z$%nOhBz#tM(D&_INHrGy+Q<^oWc`OiVmqtvw3xl&9yD znlyH6JdgWRV4(ZV{yj_Q=N_hx=aneFW3jxzTOv@uZdM&9Yu&C4V2}ug{^eQ(h9B0a zvLN(H{uf%{M_A#5{DI(}0S3G0`!i`pMYQVbYMC7VEJ7ZaUzQ8>03xJRt=0RwnzIADRetuRx_MR)~Xd1U4_02aCV{ULZ77s@B=+t<4uZVEf zTro_E7pBWuwm7N$(Q19QO$q`9UtZc_G3aPjHiOmee3X7K0BWLct$VXyd7AZMY5mDje(hIW188Bp1rZSu z6japjr)&U8lO`|h!HE(B&PZBWIk7)vM<^m6ol*|qEWTm|`lpMvqSKLhY~@2-4I1OX z35dwaA(@+-BjT}sYFTy3O&Z+;goEPQ7i41oOkkp0$>ed^m8dlj@b~{!S4YOhg$oor zpm`V`9;U97obQz~Qqrw1Ir-th8g~hXz5l>~r`ovOEV}x5PA3D+%?leTdhT$cdN1=c zY&R1xVysXc^N}}r*NaN~IM1BFZt+$vrr+MhG;(iIuF7bWqdmNEbZl(*s3fQHR2N*K zKw>y0Z_Q(kJxA?7-TCp40nAU5zp*Hv{g`lU{sKE>*rk15DF zBDmTp6cfk-TYwf27##fX5?WYTw9E>D623QB%#k837z-6l{mYIbTC2zy@X-H)s6wp< zX3WFv7MPr6_KlHwc6gv2_S;oy-T5($nXJzgI@#E~d8Mjy^6evK|Am~qa438Z zS>RP69}E*H^RTjz0+iLBe}nHERwJ~e$3{w?O<@;t4Yh+x@3+E9i?cbfJuR}`mRs@^ z7j3FjGSV3E)PaF^^Sn&0hDf{Bg#rZH&wf@@RxOs#kuxwL9Zja&0UrAGvKKjK%$5W5 zP~z2vb3x!x@;rN{wJcWcyz>St`x44K)>nM;>0_TE z-tiX7z4XaLh7(U^iiGOCVEvFjtw6G09#7)$1FXUm%=*U2aMI8zZ!G-un7`1Lua?qp zA8|PiqLq%v9aVCSUyk(!Gn&@_YV{rlVJkxkfWiicg(<`h$T;;&{N*GmHu0g>zCDDC7CEm2_I??HRk~2Np6URD4tX0}=Ve5f#=#M~;Njs>nu3lJJ7#dB6@`;8Zs+`;2 z@Eg9?tY}Fb0y5>_O=-tRn+Ma4j-7Im`{XRn(u>e=sx*-TRp$T5soR&`-Ie846N{++ zVkPLnSf49ZBeXPv64kW}-69!iqqDOhk{1XE4_z&y4PPzmXcOm63y=U&IAwk`r6W>* z?S~ZTUW!Yj{YmsO`&(H1)a%^%I&~JLeXkwI-j}btk+n^Ki&f;j;d$N5?KYM%etq_+ zh@}QbB1oDf_!cdjFxI3ThSPXx2%-MI(eI+ieS>8W{iyUs8mp+_4yf8&az~RkDzek*nD1d^vY<_yWy}VS3fDa42+%A zBx)4pe^~U@b$Q;2!o$HMT4xl*+l8C-8wx?TD4gcw<+)?w;AW#*f#n@h8$tAsGkHc} zr6>Q(S$P!PEIuy28<)q|ctowp7TQT%>lPEnvgS0kB%0`jh}8mFCAM%fJys#Bc)uTj z7|=SBa0}t6+~DsI0f;PBXLF5o0BZa1O~X%4=<9nf9x-4v@y9k>-0|8o#bq_Ted1Kk zab$*;5F1@zBU(4lpQ7RFffWW?1IAe?E^Es_$+Yz6=uE>uSznJCz0u!|j;nwCc7oww z_fCpoxEEze>#R#9$Ia0>Lhudjdo482Y-bNGJz=R zPgnR-vL|PHFG3>rqcz{+^@308*cU7~LWNWh$)bBEsPJ0jNmLo3KHvhnyVl!10C|Wv zo*b2cK<4HCtUpCfs3ngj^>I%GE$WpuP{kQ0cXSn9tG&UtznLzjRJR{aGQPR+uIN68 zZSC;-9}tuu*>j>?sf>p9;_98XPG;6|Xp@E^=;JFODI zVy7BW#YXF~J4;+{of`XKl7W75ovB~*N00-$ZukXL1l&x#FM-zG%xT7y?O(5>wT9}? zMJ|?42>r$CSsoy@(b8ITM5Z;*B2<>sZ_C%y8fv8(*BqSMl0DKWun&F}_GglIl2B2F zvRTfDUe+5QXm7IRLdQZYgUdk}`sR$reqiR3ZNl-wRbt7~p!iY?JVm2J7Zums{rEym zh%2e;fEB`mD3fE!6HV_Nrl(NMMYDM%&29321v|Ci5?hp%>hWEy4l*v1h%X%^n;trV z4IzA4dJVLrb#`0d^7He}7JudKc^Vm!%cisDsn?l^h>Nqhp0C1x-#EzjKoSrTFqy~< zn=&gDk0BBf6}{R^(M?Xb-5W`=+UUpvgty<$C#vk$%TDs6J{VKloMPAVIbgZ+;d{@f zlc4mb;d|T9ToVO0(}Yz%apPCle5w1=-nTK^V5tW5uaPk^F^5#f1>B5qI6tMez*fQb zAvVBHd{2F-4Do*vNq{@$OG5i=qKi!0VaTyD?d!mFbv(0tq>9tSa_C}{dTw26j+=4a zH1F+<9oWS2X0;`y+!xuKRIP(_A?$3Hm;tp;?8grr9+%Uu(NSq$C=y1f7_^lpThsNn zpCV#n%b^h~tY&|GhlV5ou~|Ha-wPmXnl1DHgDCp?M7r9JHu}QQ;gFFJ`muG%Sy}7* z+SdL!7s%)E1IB`1fFkXo<89on$2|2kh)xhQTAY`|(ur*8{|8DSVpZwID*8@x;r!XV zGyBhQoq#x*B%?(yG*a7KWHNX)l*h_5PjlJ0@G65gTjt6KT6iWafu@T%kLXfU1WCr}h?LY(M&$ z;2`dELz!FLbh__w)qG^M;gtclrQp+3D^D*k;2}yp9?ox17UU5bT?fIsh?*UD;y3(| z{dBsfeW=KESPKLdc&oEq6k{F0TH3Kkc)pFkqi^|DXX4HIi?Kwf${Y2~cx%Ex1y8@x z0TKEM5s@6wZ2$~H`1KWTOobpZ;)6VC?yXj9h^$ z2Z*LqW~`N3Ex&KO=jJd0?fOO4+jz_8#Nctq07jjg?4`!&^0?fQqUi|zZ7iq7X6x_a zRcpt_LFeH5J5{ixzkH)EbgpkzCxpECvv@Zx8 z_Womi;yxmJEV@5rzs`6Rt6Hn&o0JrMiF}R;!0hVHXT%WcUF9{qz_i+TUW+t8u%l>D zUd5GlsxCCNR*UsjJ|7G;LL{Ije{Mp>hQ|&3vvk#5!v}~iR7vx;>wpUeU{~=#nY;q~ zr?1kGQ)bA@uCA>~%j^IjP(mXwm-j2DN`-0z7iGe5sbUd4fJ%Jy_9#K1cz~rCaGlIo z86HezAsgp#rWn1n(vu$~r>Y*QC*?Bu47O<7wvh=G9;ZI_7q@2T72J&#K>66m?hVFU zRYNydSVy0@as7DDR@#FybrjfS=pY&EZ$q>ls$WB0iPa)5^1zpYp%`FQ<9)G)X+aD5 zLuYry2)0YXa88f&C%n&b7-RSN$>T(Q+r`uKB-~k6#O7cmETWDP*Xm)w?CBd$G(8Pd z=qir|WWRIciplpm5p+1HJ!x%S@#ob?-0P|i^SiY(&gGdD=d8BWh4}zOpEprJngGme zb%n!2Lz}>eg8un2mQUlLcuR$FuaMK)~m*TRpmPnqLaiZyE6-n3%BJ@L!ip5FDNtyjprNM#F*&4KzHNirw>@P#&L*tl zD$61vc^b&>VO?R^8j8r}s9N9@g6uEuJ(X=yUEV zE5|=KV{U10&4Vp8R&YJmR(-@}Ny#-ao%Mq`*xEA)>Fr|tp$B{sY1StTKi-pDp06#% zp_>FoQg@|dM}eyWC>V)&Y!-HR$0}W?uq|d&q*K1%^gf-#9%XowA6&A}I`>@SaU!K< zd9}=&0=@27DpP>rV02Qd3BZvTmzJ)sM;WkDk>km?Ha8Uv)&af-6qFw3g~6$*xQmXL z>P5?V@;D%#PTvR!2qdJWp5?8-&tLzuasv5Jp-k%C9grnhf#PDGMY6Yxf{rc>kV-p8 z$BMsR^?>axACMJO&?RrJccsY$NfBQ4L8g{^TE!c|vS$E4@V|4a32NNF6ZXA<_$t{8hR^2WAvrIWB zs*>%U-ne9-#i%eu&dQK^BDzoC+j_$t$2!*FSo6c6{IB-_2k4>Gyic)WpPTzrGb78B z=I>oOD&2IkwQonjln*pv`!P%aMI_*~^92%mL@)+~upPs2)UxRHHr)R3ObZ!RCf}u- ziOBySXGAm72899qJXnWBH zmyB;qh>urp5^&(;;kf~@ML4CB(BG50-TnRetSmabg3QHM*Ba;PGUearZymgKrx4l| zlX^dz8G6el00mOBXL;j(kP&Ch+ZveYso8TQH{WZ47%tR|j@GDBrIw73K*33}wrfN6 z7`#e?|6T*=ACW+Z^~-P&$^G_F-|?(z!&|sanc053kMs$PUhA>zVc_!q9>md9iYW@{ zOxfAl5ACmQZEd8aR)7-)=!#Y{TivemMMc`4_A_X;|0KHK9bavQ5KjXt59txHi4zR^ zoWP2_R5ekW%)l*C1I`?O7ic`kmi=JoETtvA*jVvFqq(%IcPg;10ZDGJUn(TE_5xP0Jd%b9IJ743?NtD9>%+Z zeTIYEnl6$SH3bb1KNuD5=8SYY?7;&PC;LJ)5uX&0bgU$pASu}PAfF#kE*H*<4tL4eV+WnObfk>C4v%e`S6@kkGi6qGlr0OttK8|m zuBR!DtnK;EJ!#N?J)ubs8`IX7h&&oNd&Ch7@VBh3g7djYmoDGvT(L!mSkN()A3eYe z1G0l1ni=e)AySb~#!6o2#M%Y?kkRi^=i}Kao5f$<>b%k6)QmEqghkC_0!9oRh4Msp zRLVPdK8>p6t}emR$4*L6kO0=?zI_^>G&8r-UT>B}P$h&$qZM`b2IRg=y#ko6?ZxZZ z*jVfP4>Bk*Xz`;h>CGmOzgax~UV2ngHP<sVISMD&(lg`#3sTIXf;%IuF{s3OjO}eH zr<>?SwvL0OJv0;0Yu+#H4Ci^i_{kW@n10k6Uobd}=ko|aN<#2_*bK3;jU>u@c!LHq zr8&(Vh9{gl*jfTN!Ii9ZN;wRy$W()z%E@4UzYKyleFO`5pa#wqST)ZjHXuS_`VJKQ zHu>X-a)yy1ljC!=eFG}e^(%A)^Az-0(`D6k0Xf~}Y}uHQtkWYMRO|`1F0CsT&^r%C z04%Xoe&VmZQJaFoBo0dWDmPA(9B>G1;{3bvU%y8D<0NI@O-w-lM{e?Q>UeZ^HVznr zeoh`Q*XRnY`+Rt*R%!Hab_am}_-zCSGzlfH7wgGRsHmt~ZEkS@FT{ZB_Tb4EwX&j( zCtsr7cvpG?0s%-B2DY{_85#HhFr?t*Oce@%nF92Dmy7kNVWZ!HrQ;J5jbX6f9d0>+O5u9`&jN}_07Ke2viG2ZaGe@cU_rwQxR0Rn znXff%J%EGKdMwTRX%9P@R{a~0*8%O@^zL}hYUy_n;0|Ik=nG{|s!=RU<@e%NDwgRU z9gWEGehwRm!vDuvfVv=2qtl+s`}23deDBOmU1+-}DNXV7jSx2KTEw%b0sz?M@_CgWZtkgL9yEUFiu*tiVhzAuqrX}}At%bNky86*3t?n-5PV^{xsNl`-B&4MN zp`oD$HBT=unxrI{17@th0jT#cGw>52YhYw?+WQ9vLIGwn!$B;zGF-OuQeitFKSw-D zy=GhkeaOV+Rxbd*|B<-g{{K6SA^Gwpx98z=z_3UaH7r+gom@Rd0MS`d0)YI!?>n59 z&-W1oOa3W>Cb-b2aQv&I9oI-{ zH2T-xy<`qs9Om}1v;c?kT)+o{&DTbdVG{yH>N`uR7e*(;z^Ud3Kw=dKCwL>8!5H@_ z4X2B~sI8n+&+Zh+y)x?Ix>pe;6@-@v9EN7(AdIFkl=ytSV;yWYH*=bJzFA*A#1H4L zxUDZ{i|y`!SS@P9NdVJDwR=E3PsBKj>oec)9g2 z;DDv3R1-xAGh;5dXp$6&x%oa0e&`Ls zsD_yUTT};;Q>YmCdaN0&!@Dk`ebBz9xje)~uf*!ZT+MEp8=7y=cfGy60XpsOnD{@h z*rTOz-?;fFw*Q#iC_cnI7rDoX}Y@}bkmI}(dG*%0$= zcXxJgM7*wQrEasPn>U}&GMnjv81npJqMP`7QUORqW74lh$8o0!i)tPN+{!ekM*{7{ z)g2R5iSXqd_a$$Pj%zY71y2<#bZroQplM*$#bImu*c2ljk1EsO&Z438wtihyARH*n zVU?A%{J`7$=a_2GLTo`iJu`xOq{7AB0?hd;I0poVgdtIAQJv4ytnarS-r~{ zi5=aO$>fX!d@5*7ZTzk5u7XHThqd?~lG4vLPriX@=)s!Au5uJ6H#>QpI<_jZyn!K5 zwf?|bjg;{jb;XAtc{egFnw0EDQ8nd1-$qSShSFq{+XkGld;Fasa~_}LqhCA09Gi|v z@$47Z%HZNXf3%r>Y>hQWlff@d4-hTsmfzv}PCMbza6W??y^Pn3=6_JRCqfy4!m;$l?Kicr<-@Jtt_2@fj7YvLa1uu6a{CXKe{>w^8p~3$oV-#f={u4#W zq#j=7W*(}ejor?W(a(X@Z=6{?w^i)LrgH%vOxel}zML7ix9SF+tM9`p&lQeF~npX!^ z)@;Do?zgFbP&9Wy#h4EJZ`;XdJKv8@Dt}95*k{`<9CsPv{Uu~fX|&> z5M+WN8ywzuvpvh-uS19?cc5mIXU+Y8UL7QFThBEyon!^68S9yazws86NRiNGR36(Y zp3@w)szj_e#_4xH&FfGAf2M9QM0RkgAhU$cSS%XX(rH_3Z1rkIDT%GfxQj2z>x$ko zW(4~={cTyIAQXAi+}+$=iVtb>w=FCC8cjLv|G-2ol_%%;G(3uQ{)%u*|Vq_LKacaViBRicEv6z?T+W+A3U6{G_9b;%bio~ zgiTl_RQ1U*3o$jtO!Cj*MPH8!SHKH@IVzyeYKd?I?k4|M(VUt_E_RcmUsrpu^w(qAWPFQ44=rvNET8AL8=08A%i85}Wy9g{_`3k(qk63}T&>~{tb@!2B* z!{L{&^$dbP0Xu0bk1IW3b`Y+X_NTGEO){_Lsbm@y0I}N zL|MxqRpR_{Kcc`nPt_PnBp&tSf4l&c>u!;vHB~~)l7I{#BR2fpdILW+I=yw6j|CYd z_{GggvNL-)e?c`NAzeJ`5{$I-;w|RqwKI~d9Q)sFzMhtco-+O`FvUFSh-eDNqq6kJ zmQoQz1V55e+P3%S6I!k2*wRueJa#KHE@E6<$pnz>KLh;K)YMoOPt&*Ahn9ov-pR?B zG!|0>R=lIB0$5xP^ZP!qAu&lLof-pfU!rmQOOB2e!vt_jJFz5Ky`+?oy)L%Om`e#C;H8Bon3G>@R zKzCV+_>WxtyxB*^#Wg3Rx0%Tmf&_SC8nA!j^?aKLY|`&(Yyb-;b>=f5G<5WFblv}U z2hfO!{`sIJ%*@Qno&?@*l~z|*0b_42(8vQa;M&af*Kxh=E%Bu904c%z|7u>eC*sDn_-RUXltI@xgt+E0C1p;g?AoNlcA1zL`)pP^O(nx#9SJleg??AWU z_T$0UY`LBqFDf|ctJ=HaJAiQ*0RxSW$5{jE_O?!f zVoW~Y2VHTSn?p<#xura^15%sd{`tg5D#wo4l*IRV@><7v5+(`YMoP(dkMpq)4n!)k z4_1Y+HoR6TQ@g#+T^c|Q5E_>1_}%PiTTfz|F=3|mk95b4x6E9+_dVb2Vy5;%q5_EO zS3;)M`qI+cTKjHTab2D4^7ZcH)ehj@zl#=<6-%N~;q-oWOB-Rtiy{YsfH3`VegYbl z-Mu6N4O;-505-FmykmsmN(>wN*Tat`o{LMW@@l`2MkCh*D|fP6q&yCDDb%>!(C|=S zWdsKJYjr`<|3%qbMRnCh{lavYARSWD-AE%15`rMz-QC?SEnOlYDc#-Ool;77$G3Ri z_uPDAoQvZP!hkXM+W)oJoby-v5cMsju97Z&4mnO*K;9ILhzBAult0E4!oNYPWz#kx z92a&VX2GIRY~j1nAO-R@-_F$Y^Pc4>L1#6k0tB_C8C=$^8J}?Rx?dV^%-a(yyHW>M>ua zBm+C75KK&R>0D(iN9{l`435T%nG3m8w%`y{LWgDRdhL2s*YU2v(&$mDp8m+%mw&?P zQtQ4e$wu^)&u2CRswp3xIbzV(8#V(53>aa2fxo62U^LRni~2#VoXd?V3oob^lErm12Wct?Cf_yrpDm- zU^!Q+51avioeCtIzYBPBz4N)vZMI@dLL7y zD=farC+Kk>{Dz%;JT!jC1UH(l4va)t&wEuQ^!D9*K0`hWW?z&~?@DGYBO)RUh7xHR zzE(n%%z`mmO{aQw3{7mltC z9!5;q38Hr+`qA;(ete&tXm+(-^EhC9zQ}$_Y{92Wr9#V^y znF4witx;iCH~rBYp1=~2@WQk)e;^3<%`yWi?~2l|rrDc(Wo_SUYIm9tkzQRmP3%#qWiw69A zwl`y=C90M+0GsA3!;lo7h=>T~`}d70VcKO+;CBop7Qjr!>mZg&P0qwLW-a#WL;yq* zCNS{HGPm{spy{q+=Tt8H{&s&R;yg*}<M^H=jc_Vn_SvDKWjD zX!hIMT0ES6n)DtY9wjC+L(dM*CxtBXAHuGCA6WtpV8UW#L8`{k6uRzi;AW*|r+H`l ziCr*!1HWAOaj!O+ zqpC;mYqeb``@r-n0vzU!sc=}Vq%5)5m{K}GDY}F+iZtDAwOf~X^hEvgw+4PG^kT~& z`Plj_)nu;Mge^xr48z8lFjf@i%Oj-wJbC3hT$HvD1^7}!rcM8p*7k7B2O$xKCn6&w z^ZQ9!S{l%Y5=uAYLN8+Rl%TD2o4ux>p!f&WJ*h8Of9;Kh0stszf4(iUgr)JvlgcGPCJW^O^r7j+6wrT zKTms(4f=gQl)l%fbs%x?s=|7GZde1AP!<0LOw1A}7L)^djy>2JfDn`fC@UFR`DDP# zik5?;qxEOtS6Cd^7-X0bSNz9~Ki^VeFvM*28U(&P>D)qa+1M>uEvy6cr7=l5k z?R|4At?A=zzOn=a*#NWOGs#4fbY+75NDc!Y;C#c9>(WTD&2RI zRqBcdHY+1DV=WZDb<%TIGksOWww&tNJ1dF&ljg4qOZ-zVx)k&hqi-2Z(A_U}Z{B8| z2YI-fV51LVnoY13OIibErHd_Jis8;41^&u1l?uXFJiLH?F;I6>fshI03;|NakjwKY z3o;VY>Dih7iH@3BuB>dzapN8dxV+tGhzcp-;Cuz{lndqGv$JD0ua4>ZKK1_kQu0r``ed88 z=j-~x$pyN7PhcYcxvW4zNhwA)E$a{+7S?cFMOPzz`!|t7hP%ohQqSy?C3#vGviuR7 zK$~Xi8yZZyoypw|<&C-KWble^}`-CsPOGVUevTqDj8JBNYY zxgtAuj32pbPVyJ1WiffIa=tK?c$^%Yc>R9hH+kr-tYwqab(F!wn;q#egL8s*@Nf6G zBI`<%1OhWKmb^bM(QdBe!~Cq2Ax{n3S5hjfzN2oXNr_2t@Bklkry0jN(9UC*TwG2o z;4b3;8!)hfe+1OOd|`qbNCtUVD+C;hK>qY&p$?oXn9CNR_W=<;KMD)6aBxCqEqaaE zl-hls4ydw`sR+wVPROe}VzPC**9vWavBvSt2s$GWRbpAL6c$BAvvM$GD-1HCuZwlH z8Ohs3!jrz|3aoyJH(O}5`E*1clm)6Y>0D2CWgoMsp;d@&sCv#Ene=I=c4Q@XlY>T& zHQ%tZC5g+sEy5o&>=v9-@$_A}Or<1dtsVBXGWl|AyT-kb&rTYgu}+cO`RxMw{R%(R z7v1R6m(#)_vt_2s3ao6Q9=}dKKyO1pc06>jkco<@^Vt7^0eS{Fnw} zC^N;_&Ct5VjpfTkhoZf^h9>TwpRT{H|5=CB>ypeCtKLJyqiqAT&-_gL9|>b1=KJyU zXBDt}06MV~cvu{~lc0y>*JuYh<#+3%j=o49!I^Ju zq>-}aQiGGLypBX#<%Wau<{*|KKhO}`w%t+X zOGFz0p6&MTPJ8~soBszaB;0(2v~6bE_(|+9rE{)+A3yVc8YAg{Qq1Yoj zse=M8jx7c=9I-*mo1ig1Au&Zu+(j1zc@S`Tt6ToqDdvLC0v3gXp3q%YRG@I1*; zmFTQ@RJxwD#Pv{uYa^w(GX&8keaE``yjS>39doxeKAo)<_Vf30I)Xoqx_cyf5r0h% z48%`sqy6QMA2Gh*mk6w_6qB@t2vq&l|3Shf<4WxO;ZEuUnzU#MjygWwaK{3an63)k zmcMj^=&u@vodzd8w9}s$xx$LIgIZj;!;4!%EA03mFJja+NLNd9YDzn_`F1P+id;8bT|J=_(|?{g9dz_489S;T`Sb;hv94})%{W| zyb~_;1GQvp$;BN17p1;n8{tV^ed5Aeg#A&`O&?bV?!lf$hF2wLc(M0>B)p0=9Go8( z4+KA~6+8*VF)leK!Y}5*6G6GoEFlP*g(rB_y_aC7s&I@E<6D;}lf?qe zr0rKmV-hg({Lvm`Cq!KAp7kiE`Ntv1UkNdh%d`e14ExU;gkRjrhJ5_6>f|Tm1)?r1ZyhqzntNnL~9ed)Wdtk6^ph~=X!|S^`V1VTzN{aDFzl3fPOs^A! zoS%(Yn^KV%!?j{eq@~fD_WSmTzV5EK5~nEQ$NX1s{)B|C#pWSAJhoG|oc~#O)6&o) z(z<*-Vs0Yj$JPgtoqr_GZ@eqMwjXsQuiS|WiPyaKQ}$h-(8ml0M8nM<&l>oQ6jeW4xU4BcC6CFGCEi`j|HLE4>(*NFjsPq^5USRD*v?`aT2 zyE}oRGAue;JlQyn+g2V3hEC7VF}sSPX55`=_x3*ZxCmx-h+v(@?9&A~z&gCNp_{6r zn4#R(coUn>`6wP#7L<3^{e%TW_Nn=UM|i)DW)1FOaa0)Q)M*Hs8vX0-zg3&DEYv#Q zHe?V}r6q0;loXWQl)dq2dye2 z8Q@JW00YMk8eTB3N6vz1msjT(uC7;{X_kA)t7yvNu>*`aS--!BT)a@Rcx1TQSNL76 zIHcG^Zq(?7XU5tVx-Z20ir1xo%j9A>Ti+Onr9Zn3I1DgYmbVrhT}QrIDI)*hPa5U< zo*emyu){CK;>1n~E5xCmin*C;HS3%H-`3bW)x0=U=VE_PBYxE2N3nPGceKzG5yCM* z!XdEE@dL;3z-#(QczCY0<~X`L;98yjPWS^2h~xIao7eb5nf5s#CDif0`ohM>w$S8E z4~XxPG|m#a{^PaQbYMt4o!9l91c?)MHmfrAHmk3u6fh4v%zJM5!-qvhZFi#!_55>U zb34^DFfecf-CWP`=TG05(vu|}jJZ6&THVs&6*2=g@25K*3Reyp@r|hpjoBk9t^(fFmWN5`ROsqO}ot$N&?H zSW{l0)W`JHc)Ek)N=X~dy0IS;sTwU`(zV;L(1aB4P$o7rAr+n^V$P2DVBgD<4RxFR zxsa7KO9j;kM5w$bK}8Yqe%9C0%KMbg^(v-jZo3TtB9zvtiuv{RY|v#Sfuy4eKw~=) z^MPiA#OqWfjmz0v@f!F6!JVTw5%GDtQhQ~hb$nNAoh0%nPl4}+4J4R=3@9p{?-l{B z`M--$YnkXMu-BB7A>TH#%-lniA_^HaR~9dvQS74qyz<*E;-Kqw$;QYg{9^Rq31{#X z%a`0#8~yx7j>^&+o>KP1x_=4fQQ z_sh!IXU%p-gz#D-Rkah+E)$qkHn;BtRu2Ba4tPWdO3t-?r<5z?oRGum<23pXWQ%5tI4& z3lLA51wA&g} z!s|j}({Ejf?Rcn#RFxLKG<% z#u#{lP4Qc!?9~S9_w;asTay2|xadm>&cn@#tF7#(PX(2gmx}HHC&mI=kWv?iq2)*D zGprBa9_OUwqiv&AzN?k3+m`9dDju+8KciUY4GYh~)%K>kiYkq}$eZ&oF~k@wc4#*# zn)Js%aT}cepiQm?{^JzffBsyBI>O7Fj^&vmAdq5fzM8MiWd6sK(%`lI>MSZaT# z<1;du?f?G>;>ZpOY`97mTlWdTigqn)v|$H z1LUS{*De22qgfm|*=vx@F_MMEm)*k`J_@&y3g>IrCc+w(DM)GiU`J_5m6lWI#{D96 z&l%dcdXV6?%@0B(0u^!~{pO(4e(y&+^OTn3N5G9@3U3826`}lQ!hMV1;IK5P^&#ck zn{l1951_5?UJ95Y!>HIq=!nb20z z^iLdbDyNTI1;sN5_(DGXz(wL1dz#V%fJ9J_{=`X=(3-;liTfDx~u_2k?k=Rdr9Zq0+ z6$uG3c=SwvAEENi7wGRbMOgnctzPYe75?l+{H=6@2Byr^PN9m<^o96mX_fc3PICGH znd~3PFIE0=a{uB)j$v)uig?yA$y?eo7M){s*Bltr!LXkA0;lHDW#6^vAWTnN8My6@fk%0rvQ}ZMW%IhZVY$s+w4;i2RHi;aO(K9J{$~8Yz=-O`J4R*;AwMHyrmWO4 zuT08{pEL8A-mY_1J#4~;qN@hYvqgg9biwg|@&O8=*N11xbY?4^)?Hh=r+uHwqp#FoK>lQEBEfVln zY9UNOtI>1~heI7h{6u2a>3_Fg_G#hq9~zP)qge|_O*{RssR~-)F9)@c&GXtSnOS!X zV29WbDU6zZz)6CDhPDf$=s?#2=?CJDF>!Dtz=2z_@SOWG^eagBTokfHg#+M-%jn5P z{L297tgtuTnD4&Sm`!$RpIrX?lPW$vJ^gR7ni}x5FfcS*E+-)P1$e~i>j1SE`>G*L zPag)~n}abE0=R4511@)ad)r`aJK!L&ZPM*Bx(`}U;W;TFkR4DH(Ofy$f=4>tN^Ur& zeI!PM0V?0+o{z(CS1(!Ld^-8DnnQ#3a_oR`GiCWZRl8bK9g)}S&H%TS+NpW6=ly@( zrsP*Su0!!WJ|Hv|E;#>lerD?_QI)5a%u<`evd{4Yn^qDoY+y0TTJI8G72>(zupTNF z@r{lyl*JvZd+*n=V_9-Gx`1!@N$ofh($g3OM2Pv)6u2XI2+0CfXuJXB#IHU~zTJ@88_o+qtHTcp5Y z14tog7LeAE<$bNrfP)MdIBd@-D3}FQGytaz1Dq07AJ$I}F0N$b;pE0AWzYgAsp;eb zkO_GBW8MiJ>tyX5lSWH`ZigBr3JIWsRt(fa_Rem5K0WO><7UuHf7YJ}&$-Zh;&2bj zEn{BLDhBw%eVVu>pToo*WL{^tGtUGY4(N}65kcBuEN{IKqWU=l_2@7+IUiD`v6VQk zPl>1J-+_PMuWexlIkAZN4~yBd4F~_KuJHQ`jYYDP@{RAZ78ic=Hpa*E>2U2h>7dKO zFBg;HvvX&vgR$5enxJbK!~5uMj1mTjt)LPf*=bMVyMCcm6o6D9H!efSH!CNH z6okZ}3tYYiMd|}206fqjfIz+00{flsiD|3?ep^>9?rVY`+A{*J|H00WS;L6p+R7`4E6U{*Vn{Zk^p z)8Kd5yN|Gjd^gpFq_STXe5328iRRf6kMmeqG5|uu&zim!3P;K->q6OrkrGbnui^bM zO!B{bTw%6QD`*kDv}y_$+|V^=@uW$+&x?Gq0*b-$JKe2$L%YZ2lx)($p_hzdIGP6pb6^UH1mZxzt*y$BZ=9?BhiI;~ zLL3*!-mEyH16!7(ub&zv$Y<$*M*jxNqC|c!(4e8_k7d-^5)HE1d!(GVI_vs23VBVsI z)4Bgoh-a%)Wn^r_-2t3;rr$CLGBS z#LK#;u^}(qtqOX?9D7mx&%LzU5lOr7HHds6_#|bjQu}Tzl65^UGg0_V)&h(T>dViTky4*wc>trfPgQ}&|HwAaa#z6t?@Q6CGn>Waj>N6st~2{z_vhm zIW5*{hz4=S{{3r~m!B`YqSowU?Mg}6`!{fUFan!CEIi!)!A@mCGEZX^goIaUoPfTZ zscuw{r4pDSKvXZF4_-5MoDsXnL7Tb<&Qw4K=y4FZ19bWA!>gO=hjhZ*WgtM-J`a=c z4smmLkITxE2N1Gq33kHZwod%}BA&-)ABnYc$!~Inld~j2YGrMt>cZ9#Gq)~jft=2$ zJejzRNZ1lSh6{(2r9RHYT-C&PRfnFislnV4ZvS;01%C!s!p(2;%iCDJk=t7>$tl)q zf80G5qo}t3j*I!Iq0PYrp+dBy6B*E63&&B0XZ+z(ePQBf0pQPc;M*Ug~#~BJ0 z#1?X9COIRqRW#&jfgU?RlU_oX@yD(Ut)3~dE&Et`{s^r6%5?@?wjv@(_e zd~}6SgyDbDvDqeVrDK7SAekeASVeP{mFI0nvAU=nn>~#ph$M}lHy!Ot2i=pi`z43U z+&-aBtPY7$a((F4!_JKHr9^-2Wym+zu71|s25g-+*ltK$zaI+QVits3dsL7hbg3 z95!C=K3Q5Lax@vNoe{5Qerm%{V);jb$rnYKa02P$biWpU2V~h&=W4#1PK|^j9xg<) zFTY)Wn8g2F`n|*!LdzBUYyV!0^TI-rd2Aicy1=Q3edEfH7DdDb(`U!9jff`1Z_9O;&t}s%#Lod140dFE{`O9u!CoVO7FwQTk^LE zHde{+8WevdB;T#C4|0A+>m$*{@|w3t`9!4`^AHvA-E`nNzhrsf)clH{u8dmY(_v>G zePH7B#kDAW9l12A%;_#sUI0042g|MlFQ-9jT$ z^Px+5>_w-nX^pmz3U1;O`KXG!#RJQ?0uFKfc(4y#$p`#fO>5I@9K`k=VTNv1uHaAhnz|B4%MQFZ<|BB!0N}W0Ic=A1>ho1gfVcAxV`(Q( zraYx|*YNPcJL2_b*OLRE=uHV?zU-Fk@XbT>y%pbKRrXzFR=4_w;vpe+!xV+Vb&!{F zu4D;K%X3Rq*E5D^dk>?ywfcy7Xr2y{S{g;#@E5~J9Rn*KJ+neyz4aC39gIek4EV+g{rSa!>;CxOyrDzJ% zRDX$%yKUVwTPtDBJh2Rv*}?Z?z5T8&D?2-c{?gK(oY21d9)0<)+UTXt@0-5zu-CJ2 zAWo}l^z7#O<(%bgS3|>Ck$FShlYQNf>!}u_jJh-(8hm&F;AT_o<3J&t)^y zSEwXj6cR&+Qfn&(^p^Nex|;xJ&`!dN1;f6nRh5StM&fW zSYc?DBBh2~8qll(8<|oAg%ULoDU(m>15bd+3j7+D(M)-eS8F<-0vid>Y*wq6wA;aa zrXT`a#RzZts8$~H1vf$=eO|HTJ(OsbK=yVDbHazu){iW&od*-eUVU(eMO>ZH3%G8&9bxnX}7=e4nLFW-n@*dCep-G&}T9-hH*TWldak8jb_Xqli3<-w!XVS zU|dQ1(}aSrN;E`Tq9_*Mv<4Sa(6Ho~5My~%21s(14~v#M~(8h+4Q}* zaSL{GF3TSi66xHWXYFsSDnB?t|5$L_%I3LTL;^>2qb zY{@NwD%*xaMm^OqXjx(9Hpl@dK2hJm)j-$A3XxG{^}fu(%LqsgJSix@v|a@X^0f9m z_1U;Kyv)H#ZY;~24}2XXAv?~U%kau!+WWZDFBx4PdEW1*Q(c-klwo zfN&I6e6wBply)gzVGy$_yBq5`_?4|>szRD@s&%1?+Vi}(*s~VRFn#{7_ns<;P5})Y z{%16`NcC69B_NNvbu{nxYf4-kQc~wkSAVNa_lpg=(;@x*(FgMEyC{zeru@0>m#N!n z@7_F#4Br<-uqVG!GT6fpKK{!`N=b4}2xa9U3S4T&5jaLSIUTN_s*!{aX%YBl;+>d~ zZIJ|16=XE5yw?9nJ+OYo7xRd6URNr{wv%{bsD^q|i|(58z=@hCpCi&TFu&MwTgWO$ z4jE^u4L(1FJ3ikpiOAQsMVRvisA}@7ve#ON#qE$AUtW9yD2QM}6U$Lv?hQoaNp{1#0o_L+rhX0ZEP=kCer1oQ1eZfO} z=+h%F&+x0yYxuEuJxorh8cKV;?~6bhTH;XiKi>}ZFis!Vct+%6mheY`gtLQt{MX(K zixWG&%&C8Pd!IFs>@q0Fga9{~O8%uVVR=3`XZ&dFe)&) z`8peqk1x>b5=YjQPGV;Rvhkw<8YLw)-xrA`YA9Vkk?WHcnt85U-_|j;WyoP+#2E1& zFcE4bGCSR0S2w<0;NP@U(4u+E>ASQUBZg1=n9gTK^qo6N) zk8h=ZY(3Y5?FNY3wn-k36~XVdLf7>6nQ^^FC1|knrQ6HZ6@ zet9Of`Ml_SJTqU1KUmzlt=oswFgBZ;X~Y^_KSM532}1GyB_?@(Abp=IH`m%kte(sp znN^d381h4g0}~0CTR0;&YkKT|0IYPSr^7^h1E)gh>x42qlFeLmm}yo)sw^5 zlce+<4ZrwCy>3^cd#WRQUX4aUxmifE*^`gsLT{~`b$aXg*b=n+f=ejK9e3cdZS;tq zpC}#P>>bqnkSZO_#${(2^L^x~+g1j8ITXg`#0P%3vb1}Dk1-R?Nz2(suH3-?mShJJ zXlHE7h@R=^E*b>Z&@vhzyM}a4qa-F%OHYwXVog{{oN7KavX!Gtz#b-w4 zk73^)vdNEpm06E8W837}Eylk_EuD@-k>9zbp%M_!Im(K-kgHFz9%V^wWP+Z?4M{ys zdH;7mch6+Ldy=Z#>$>332p28eB?vVL+ie0*ZS1i+KW34-u5uSW1r#fb@+|I0IH`-# z&hEUSr}Im$=Q24+Xn(+|N1m)O}_xG|fy!z-5?@Ny8c7Db33povZS+6=v zs-Zu2=hye_r5<0Se6?($DUROJp!$h*(2CJuAe8rAKBIoE;e&17{!B4`Sq=h`wpOoA z_QzNK%r6|gnpbnbOQ=bwFe(C`;?A0^(borESlBi8=>xqEwov+2qx};h6 z(0+btU;UF@DWZ5L`gWfcFIx=>9Teoo?gt$ZuDQkaF*E}g0A zkis_oJ~Q5Dnxc}e!hef!Z5ozmgJ-)J8ijs(6N29mUv?^SCr$aJptOGhD_%+}v* z)D$CH6Lm2vIFnr$YQw*xBOCkmi z+hbh4RO$sy)pWR;6eZcmY|5*x!ne+c;r5j6oKwU;Z2I?^w=RdFJKH2tt0#1vIIUeH zrRf4Jx;^~$^)3f9(KljPt6OtCwDjRzejs@XDf^((q==I1 z0cGQkSAk*dip68cuP*e2E_v;)QiOod+q$ynW2t8d&K%Kr;~6?^pd57wR1JE4c~wMA z^4m1KAJn;)6Q2>b2rzACSZfuY*yeq2`>`07GNC&9m*b_}?o7y^oL_Dq+qlK24+r@DFPvrzHHW0$Whd7))^{6{*1G8rm+T{;N!!j6nOzuXF|&gR}}@rrLb zBC!U1*}@Bf<9XNUj5o#azIrWWnpHSz3&GVOykUO4@~H>{LNN5#j>bmIaZLWGKefME zRc21vKQbwlso|wgmM!~Oif)lKaYMxe-xOlTqW)D)xRiD8IFH3*N93HPE7sHFs`QWl z!1oKm4qg=F8RhkeO4ZBPo?@j>JnXpwu<%^kE@+HtIcPRJ|E5az&d>uTGG(%ZrFp$X z_?`T7Fe@|oB%arW@=+s5t!A8N1bxh)yNfSY@(Ab?S{R34d96*(@1v|7-Y6;)o*OtS zbZYBGv-A%OGd)rarb&&w@&8(n@S3*rxNcTKi$t)=Fm85RhOXN?Pou05qRsLqq z=Ysn)Z9rG&NFR5IJCDYPG@!Xo$h>vXk&3y@S9MRh3h#=Eu0vWR%+}@|S(^O<-x18L zn=`q`3WJ*Zc?%F-i=Xa(8 zt%y(%|CKLSfcW6{jm_ns-e=UtR`oO5BWl&Gu450gK7tI*<bJa@G!GLdoC0ZopT6dkra4t8tnW2Vkq(K*K0k!{u%H>vk4F;ad>NxFnf*IN-9|L)gY-!5nk{d|D;r1dI9?{4Gm z>Pt|sLAWtK@?F}porpKJ->_A5iSrRS>8sdVCFLE^srGx+Zg1YI#%0GF%Oo|ejqu|` z&2hkgJNC$<^1j)fg73>8e}AYK>rM#45~QV$~Dc1B^g^wR@-+%{qx?5;*6)54V~ z#@Pburw6pcIjobHtvY!d-ce?S=EsFPrj>5({Fl7x#0td&EeSsrGjiAIo4@;Yq>r2P z6XIO7H@xSJSyGGfDE(u&6RrAwZr_0I1*iez&2j(9u8j!tP$C`~M_Nd_l=dE20#7!U z=S;Ve<14vdy*e0aIac|YGu-K6D$3;Qu;8w$xU3)RK2 zO5VD?^%w9=h9(+9M7Uazf|yy0G6@w5Idk|!&c7r&;l{L_&e5)~@+`gewN!rkZ^8ya z>;;Db=|s}WfXwNFr?v3MefWKKM}~xO0do8a@`Wqb%`I`0T>8P!Ih~OSsY3`Vo><70 zAG9Q-Jp7~A-kp3**6%D=$-29v40Z{(xq8B1EXHB%_G&1wSKjBZ$Dj;PbnVk$YFC=n z>C}Pm(;-?r7mPg4i<({+u1CSE5%!vcysaCbFqpy z$CUA~9E$ZI%AIvE@0V9jv?)=L?;Cf5F@=2ib|K>tKV>wip#R_1nPAj3_cVCP$H*gl zTmWMBKC^QgGSUuF*!@8bm8sJ7h6J>)Hqs ziZ-IrAChA%m3wj~>@OFO8CDX8w95j{rY#%q^1Z)XWBPcY-l^_kFVk1bX2{f^{y8ah zKf9T}bu<4vd4{|Tci8E9ci`S+1cHoj}d7jJD z;(^q|sq~L7{w@-a)~|JE^qaPd`KpbNOb{G&*bdst#;9h0?;tX_K0+m zPlN6e4jOIR2;z35X84=khs|jd&Gs0ez9{jOFsIsHQ`wrl`*~$8Z0#$+NYSE{)QR3a zacs0T$nfFNT(lofH{KSZ&uhVdd+;J?OppHTYv`iVsu(pGN|(OXo73(pKS1KEJLJt- z6bTsGH_l%o%lvIVXOr?Ura4o%q%?i1FPOUkSUAB6sYabp%zmDI?#1+3`-9L0C zM(+4@_(Bp^Vk|I;Q5Q*3t!t&YzVL_6Zl8WkUe=LSA z%?g7<$_AinNPX3K?AqN4aCgPeVhxXU3$E9pXrhSS9hyfkMT-k`EM zDaA`2k_OJeF8+6I*-dFb0*k-;Yg@J;oDs^_@2Lh*zIo{x9pIWDh`QTQC1`0c9+|(m z?sIdY+Sc)!nBbU6muwb~fd2xE5_KV-2-lH~`!Wkf0%-!#4!I8HE*ceZ@TozmzcI!0 zd@;rdxarhNi*XU?B3$Cyj$828qk@Pc1MBDdFNP;k{!B4S6_jFnQ2yb~`fyIc%&8M8 zQ${`>*SSZ%=dhNcReJmy5yYYo#oTfV1tP>OzTkvTU{iWIq%9O9oW~*6C;^M}j(irC6*C1B) z$wb#M2FxP#OISfTG{|fS;vgDWY<;5^FHZ`6Ereev{&0+raNHCw9_Sg4w#H{ga~x<4 z?zFSMfguTLxINeTIL{ZO74HdfZHz5y&zCGKCIPst1sgO&wpt%ermZcx(y4! ztO;r$>=Njk?VN?Hm~-5&vi*?juO-;yn0iy?RCp7Wa4HplM0jeul z3IHLWjGYP*PmO-ev72}g6-d=*M(BcV%CCv1thsc zK>AU#fAspub4j`5M^wo$#5Vn$@is>Uz+rdAd@INIdQc}ftz@@iOdqB^KMQEMelnSv zL7izggtO3Qu>fPKP&3l3_1KS1Ms*VDdh33Pbh~ZV#BuB`jG%8jay7^z42sF6c^!9T^}k6$h*NwPgLe5*!|M zo33Q9B||MU=OBT{5R4H{s_o~(A+33W_U{7g6#W zFgyKlO%Rr=_PBTw*!<=))!M3V2i?cvuBER9F%aqmG9e+N`>Of%&bJ4@TwQ~iT*VuD z>%=&ss!a#Ern77F#v|eSABQ|@#W)yr29}$;4EeW7wg%2C7AkA7XiXn^?k(BaJ=?}N z3)Z2_&2-OVYpCy{H+uwT;EF4)n6yC2Gv{-~O(PGF?uypoK)-l{o*#jaw2G5W(m>_)x~+UT8Bk>2pB-cVt+TaT-uco`;yIH4?Z|~8 zneOfrPzL8%`2OwdCB^k{pwIdIhILb$?E66!`yN!pN;+EXcx2n!YK@tuS3w{{iPS>% zyQKOGgJw11#YgJT7m0ECOY_&=lGK>GDxA<;DCL~B_iS|+Sb7j}kX??yLh`2Qv^`Wl zc-J-qD#E~F&V|Bt%bMq0K`Vjl;)dVfY8a{zc6ia&ZkvS3mGGxPEWoI~9o>C5+@nbS zGpv_*Na<>*>%e{4=d#Is7NE)o3kwU#8Sf|#OI%F@f%a3aD0VI^{9>)HxXeuLSsQ79 zM9#jf_8vFNDY%nWm1+C7Xx@maJ$&A#!hU`V@f75D&UNy#f^-#(k4_mg3^J=lBdGhL zd{7*#^Z=Xtx%kXxE-r^mO^5v6d&IqF+@{Ou>Q?7(tp&+Hy5!C;R0X{5@EZ{@dGKiv zyKFV@-%7lXH?%*UvNb*BHgh-B`&g4S;V;2|CWxqP+iyN3j)ft*-Lp6=6Y^P~4K`G_ z(ac6-LRpM)Aem2E%IH!X?}Keb~q z`FZNLSz!l5C|)R+{J8#vIuREGpWnktjU4@lOla)4!x_JAWz|NWh#v0`-etv-C;j@~ zsRWDRA*y(V8il$}JJi%P8l*@U7IIN=T_cW@RbjG%x27?7mF`LZ0jG+3#p_lF5gE574{opGGWwp2k`X zWx6|(9X~D2&Nt&)cEy&Xi)*vo4~Xp8bkpa(yPl~nk5R|<1O%ypKupL1ZtN<968vb@u1&>fRTZ{U zh0H!{-7HsIWYn_waWSwdlKN9~FJUju7r!7BKmm?SS;@tyAdd?!XReW`VpfBbm`Xqj zWaBIG9#OVFu+#y zyne?AvM%57%af~f|7|ExOzqfKwFYfxYqJGdiND9Z+U+_#jy;L)?B^eebT+*e%>^c@ zYC7j7-rUvs!oQ@aY%XsK1i&3a)z+<81GOZrkG4>M^A!rv`nPxxT0mQ5H)Z7smVO6S zTJVuzU@VeL3UZgCI>HPJ8TR2h_VI|q&gcZIeb#r-`(`z?zMgu#7wetYM!=EQZx1$> zlaqvRDZ6W2Al~bjn=HV1e>M0deIt?~KA3j*`zHH7?({J;<4(c!4~dn;E}MetRgd?c zv_PE1zAv>h-UW3`DTl*6GucDRc=^H_%1>P%wUwq?ka~$yiTghelb01 z*~%}fgMZFk95t!_7mb17KOrLQkwh;3Mv0coizcF#-@DFK#J8?6tW_{OqKL)?_HBWb zQUu4p)*u|w59ZD3W$f)jREH*0Qlw)#COkse>CAQHNpM2E%Li{Kdz-oypN5?CCiMaG*d z)p&j=(t%3X6|t+R9}h28=`FMLryY|+u-5Dji3>lKo%^$JLjos@43%J0+KA5B#NGFI z&D0cvlUQ7sb4U_JH^h5=Ime^Y$*b~Fv;ebNTB6-id+k?=B2sPTujASIH}?NN7%8Jf zaN@^OKr4?3D+Q`107H|%B#Ao=M2hClQ|8GOSt+tW-UAj6M(1YNQ|a)10#to_0x7T= z0}D{A;F`Sm6qczhr5*bO6r)goYzNm_AD30cb?N^{(=|rN!FB7{wynl)Y&LG#IE}5w zb{b7=+qP}nwr$+$yYBaUX02Isu+PQ=hP9nJIWf%AIMW(Kj>-KB0ZQ-NA(tBHqPvwj zd)IcT#F{Ai41|078i3c6J6Tn8-FS_&>2mW~NJswRNk*$+MB-5bcP>>5?B-JeA^>CkZH;wh&jF9Z>2u zcPXb2u{SGq3HUffbmEeoy(o)F%5mXNY2y+p#6^D&a$caB(~L|MPPHwUE|%|Di!}k! zY!9aXJnv`qogf^-`nw!l053#Z9FbUy3VS;IzH04hsa(AgD*6nfih3zKz*0?RX6P4PF{-efrM2XedHnjOK%PYY5Is;;DU1$1C?f6A}|Es#Vjv*b%2#1+yRCT41*1flr?u?{R? zuW7GiTm$eK8@rND1*t1yvHeTH^M$-j6H5xl&#`}ByM7SnzCAV+>G|Ng6oN^KMRruI z8$NhDl8f7T-L?zmjW6)`-){!%>-U2w`&w;l+_sLnSlIrb%;LXAcU`A>tkF^jxWBz`XZ(4=v8NV*qgaK1;hvPbOUzek!^ zclx_i%Gdz3b1wbNQ)}m(6rZDh?oEQR;>R3F`Q|=pSqlbZEz@s&;4(i-D(wo7jM0@1 z1(u4?*LeY(rCz(_9MLYwBssE$D5bHw5mGZEw7;G2P-K{4yU&y&x>!!F#P_-)dL_|o zSV2E7_*=5#9E1v9`;G@F=~PnHq(OWyCU-4Zf1;a(!9)y|32g#41`@+vpM!_9rhf8} zWQ8J9LOy=sVQ|6%_Lg`+G8TwP==bLGk=$-{4V2i}z_{R(ejXl4UOQW}bor_VOnom% zVqvVjnh8`NY^3a`h!_H{SvrI>$i__i^JpHlVjAenm9Wh2z2wL%XmSWA#TSfX3w9;< zeDm5VAp7~PQ@fl|A&4o*Ye|L+$qQ^4!s!`X_`;IO!$u!~%7xCm&E1GB9UIzt83Q-Q zqwIZ;iw#nV4iBVb9-RkCx5G}&D1gF*o;%5tBjbv$Exy;&2nPisXG-oYO7^6PD-QXP zrx|wZ`=dFga_ot`v0p%M27q7rLktcR;fU~}dG^HVBXD0Cx!m`law$KmG=UN;vb;!$O? zj_8WJuC`JbtYW8bl~_Rl5{{dIfLYXoHSZIrG+6vw4g=BqH*0Bz{Vyy+gPzOs+75yq zP*46}VnS9@P=iX_bw7ZWq_DmlgYFuokemIeb6$`*0nEGF3F^9Yff0_>uh~NM1U>W> zdx|M~#tOyyCq)0%Ew5F$lkUhZO2{*;1SM&0hkb?w-@9(!4Tmk{Ku zUw0VW{MGju5+m8|H| zvSE^{g?4(bXmd=}S4#hrV;Lb=xVS zvTI{VerqE6g(*^EDKDqQ7R>yRphTb6;=hi7?bYkk-(2ZCkE?9{xl9kjTEV!fmK%)^lBTZDMm0Lp^p*~(?X8j`Wm^tYoI-S?EZuEWnP+mcQ2P+Gyp zkEtmpa;GG$LRRanG)$SR{n#2k639UG*(Ucn|ECHb+1u8<)ScaX=C2^i1x{wQ$<^() zDV;82gL!iDP%gQl`$M-ju1>ZMmrb{+&&j;8%i?O_9Fn2iU?IJ6(Yq!^cdrd)jYm`6 zWGJ_zJiP(bx4mAZ)B75`(35MX$!lr%!}DpmY9LsG^)b$wF||~VRa{(>o0~-&<8a@%-<$ch80h3s) z5ke0`^`95yK`Lwxo)_2JpLP`LyZG8aWJxRI2IzXU&-;Ee)4I+SI!OKO=-g;sMCa%! zS(FxrY?YvpGwUu6>y(d;2~<3V{l!)k({`-Plc}kcE;-+5kJ|P`eYa{to%NLw_0vzz zb;IFF0`^_2}02pL<~2*TEPWsu>=+*@F<#E@XO5+Gdv0`^ki+f9NIsHn;lD)F!hF z88^)MycDAQPHBw$RlRkSM2Y2@k2G{~!O7h^1jwM<(o*$2JLJ9HEm$B^)XG;@%bwn}%AW7`9=NPicO2~|P_y3EJe#pp zl{gZNqm?ir1C*eoMUa^F*@q#LBa_ELAt3N!qmW41Ig!iocfZQ}#)Ghm6J zapW|Xw!-KfDOV+x{AzM&UCSlEX{ZzA$iy=DBayWOEmm?x_&v9_Yn{Tsg)Y`PlcY7E z46o>Qie0`xDXCy`)LBWHLk`1CmwtB?3dm6QWW4WhndaCr>syBN4>tQ9KP#+D8tXWo z%b((T>w@*I1*u&(s5%>DR|L$}{p352uZRnUWEfA3zJO5vH~46r$4|A|h=cDpt?Y=0 z9k3U;t5iQ>n*8u_fUw@|_RdrJZsUf0F8LsQyTrPS`PS=H0rO>FZdW*DGMQjnaS4m> zT(B!7d9EBA=u3@<>E%qFWrA5-FX*MEWYVj*DYFl?^5xI^3@t+q!S~f`Z>n!NAC+Cv z4|>+(kgK}!Vn%m!;ay)3{2II-Y`~SKfR)(PYjJd5nju{7)JLX8K|_~)BefolKXIH0 zvdU<}Z&iz&@YXn*0*g7BowyvG63E1 zuzqJJl)lx^@x$n1hsbbX%9EWBDGADtrFyW8H+ zte?Lt=Lq}vZUSxA8YA_577E9KYF;t%fAIQxmbKrs{=6DF{RCORT@h1zcOf*e&x!DS zCJPHIP28W{vCF1`0|h-Wi-l(p7SV#JXt zZdo0|dz|`2Xm6mlDN5QN&ZfQcnR*}j_j&s-8mjP;*$>7v&iG10-smhfp(2^py+4Tz z_z4(;a%|MsPfxsNE999r>dv!-bw^Iv(OF8}p9vw-$D0wTl$j&TU-*-@OqJbd_p@iG zjLC+w2pvttZApav#xA7zMiTFqAo!gt^0#=_`4rt&VhP54&Ph|u!WC|m4_P_H*T=DG z_>vXBZDfSHS|DhM)`vQUxj(tX_QYUYGG5EFDzlrdOdq0_)M;Cb{Hd1=-CHfWtx1@| z{h>*u(UO|xe4cP|anDx^THt|B%+P=#<)s?Gv!4p{*gEKmX=#>x1*Sl@8IYbLsYvVr zGB5FKXub_F>ih}{RPpEQ&v--5&71{Cd(YsF@M)R_fQ?DjM{?BNPBI3jL~c8g5gA5OqBk6X5=v@0G{lv-S60?ylQ(q!JY7#@zl@ z+)Gh`)v{H?a*KzeqfCmIdX?@3&|U`4cfzFa?f0f z+Wld7+t;r~@&l)l6HDX1@Qu7|l%I#MF zN*@CzP3&DHQ9kXwNGq;~eg41$yFUe3LS3W?{QHF)$zASFn6+rddzbY_s2&r}0zjs& zv|iY3Andv@emL*?Yk}JHj4ffvs?KMY=tL88_4$D>9)uLU!R@<=K8no$G%~Rj+sc-a zeN9q0*&2MD__;IR9s#zA{~g~Y20uW_8QfC1`RXdKujICC1(%AgKk|oXthNSvA7Tgxd=No$g!Jpmf1mvN zIXOfj23b?pEf|KsNfCFLN$@lB^KoF-h)xE1#nny<41j1Ut(`0l^Gr|;^dH;$0t&}P z0ckpWy0#CV$+Q+VjgnbC_aK^&RzE7rCeqKlK&?kv{9Ch)!*q1!sPFe}^7Icd_p1o1 zCWr+QB{>OAw?;*?{g*BbdSp1TBX5>Y#<;2vVZJfDWaW}i%I zd=3l*S`OMQi1)gdyn8-XL%43A>;+QUkLr=uK+HYZo()z-{(bN534FYBFXYFVkNX<3 z5z%-dbKj`{QBrJ@(xSQdLJ>Y!;{${)z@KAi&;>w0ZLPGw-<<3 zU-^`s4hH3;IUNY&kvGc8jN;9)Ws!Vbys-oh7g*Et!SSVi;DU&5ZfR%PRtOybtur>L zkz1;nf7M`zz7`Zy&O_z!G)5IaO+WTu3L#e>(P)4$v^qQf#ze|^3Ly~?l01wMjO)F- zgbpA}iYm!2ZGSO^o5<9gP*`IN^2LWqpj-_X3kR>volv%pJgin{?e?%PjQT`v2Dgs7 z%0+{kQ8kl}t}S&yX@UbVNlC=+v;Z?0RW7(}#pXjz74bA1t!9gN^E^&&Yxgdp0WC*V zT2|!!<3zSc<6XX6%HZfloU)XW*X`B5&XzwQ)XJq>d**^C3in6$9@1M$;&t$}Q;Y3S zfWB4|B3x)kS_ZxNE1H?fpWHS4aiL1DsG0BV9m-ZpexJAy5GO@H@ntAf5fBjXvqb%y zA7`{(jU}BK9-bTo+)5yE zWTAeq4JyWKiPcTk6o-lZIg`poCx<~oCaV=U3PM^3Qe2xiE}^viXcmpm+jPOWVbouL zE6OOmliL_{jM66K#pICY8rYZ+nm_JZH@w6xl91B^WVL?)XII_B7xsQxy- zP=i-yeXHsqKH!GahpUW2j>~HiSV!%ghJj3=o#OEJ&8Wk|;bLS;oM#q6e62;eZbS^F z(@ANw(r)gGFNl;LrBlry490OQ44u3;atr z?3!%0^w%nJ`TQzAh3%S3LlUppa~Z;QU%(5V4I{5G)Gy9z`XLPIkTxvXam`jqAM4-# zw3UPV0GV1xYiqf{S;v8vHqKRAFNQu+_Q$lE@hC!DnV{C;Rqx)tFGSzv;?uj{XTM#P zm23{ln1rGk$(~;GeA7kYm;CnIkWZhvqr=SxIBYl~DLrSPrK$Ghmf$5xi7lC^&78=p zb5|}KwesyTODDWU-gq)KlY~<7pRlDDk(nNVV)!g`Q%k_R;NWp*nnPP@*w>FjX4xBc zU`t|8-zq&UX9c}(#Yc{fp}1tt0IOQq zeHiJc*d}A|ifG?GE1kvprEKwphqAg1{vAEzSU|G3`qh#h-QBhOsiwG zxTEc#7f_loz{|^vk7PR_@Wl_7n~LVLg+EN?m3Q_W#qLbMsSsil5^BeH znMk7SVp_fX(G~h5)aX7>wDe-ifZrUbis>_C+`x7pb|5BhjJkec9ud<)yKyzVHS~+y z5xmAaujM``rwDPN)%nrncJ>a}eF%ge^+EtU7u!d(a)Ez-nt^Q?KaA5kdyk@a7P$tbe?J69>TwbwpG?L^>mT1IvY(@tXY zuEdU(U0(%~O2>DHRE-6{oY+`Ej9`iIH^Y(!>#=&v#eqVX7r>|xux|6T2+TY{G_xZK z(o>1&2wY(q+-6zz@qh~E9YC{C3xl5dD+v#b3r_Gz)+pRQS{uoh+Hb2j1X6wwE*@AB zqz%s2DI;ye9=kvFu#NS@qv}2DJO$wuCZXUKwU54v$L0Pu8(C)zv)fAhU`P&rlL;vv zYvfqnJigoLwj+8$TZ=Lken3N+15EpE+1(~JzOG}%_B7GsipE5cN+lKsK7OLC5O{0~ zs1MzA5O_SJT_+M#GOp#=ZMAAQ?#Bzh8gfc;L2bZxRFzyoNdzpRn}#zppE8A99tRy6 zrB-%Ye0hbT$P(`SkfAyoJHa70{M)(9s!P!3tUfjQKP&*zz{S;dq-Exa&em3lmAS6T zR-7~PM3z=$Ui?=Ph2K%a4&rx!3OOgU{C8cAR~cDIJQekQQHHvg8WL2BzksR=KJx^t zFw*9wwxj*lbzZfzL&4_RSUPX1884QmR#ekbWT`?skymdOn-;ktcvwXC=}xR8O4=y2 z0LfBl^-VR|g?m`;ygN<6&*lSfyI(bbyaRoo$NJUvl!N z1onC|I*8OC@$$Q+R3sa#e8}>je7^BK3;YzqA>G&#;~awV13L_is{eY#c?ma(yW6mI zwRS7kWs*YU&G1{V-p7%586Yhs)WuZ$L_S&Gx_%ve^=?DdRe-^x_WP@I4;6gfTg-;h zmXL?68=*;%s@K2-b!DWJGG4DC-|ogO&g;NJ?UXYR-eouH5L%1F{dzB?tLYx!r2bMy zpc>RYq-JM$S)jZgMoP37$(;0njtM! zeG}IF5A(2yk^9Xah&6Wj|Y0k*1A+k(h`f?WaX-d!H;`-DJb;9;>;s4T}aEy zp0qZ?stc4L{3~&L($hAdk`yz(k*QLm2R&~|#2u$o8@J;n{mS1Qe^Rrxksz|3ceipbW=u%NeK4jUr{g$Q_WC|pDj1@!5o zI&f?TFS90O4xE!tbHQHbAzM(D^mZ51S*?BjYa}nqao3-f0tj$$_Paaj&=>X!kGrvI zyXN0gIbm6D7Mq>57sLg5E|pXSHthTvN`geD5y!iurzLoPeBFbt!l7p7Y?J@~`~GA_ zp8<`+X+*|Q_~kG-#1n07`oZE8+f~&#uZzR}UkNm{3G z$)nb}*Jag3f%>Uwa-Z=uh|WVUzkrYEqmoVb?b`t)F0z(G0-U}5pm_zyya==Q zZz|_frf(&{egw{?vzbOQQn~R1>Eps3T1j<6G1xVqHHzfz6IIF*VugHZg zcI^Q|;c3H#HjHOAP(Q};oJa>o4#z_J`g1mqWs0c_xEFgo3Nh( zZ6161Mb_`)oV@x(w(~-4?*7$gOwe8?>Kg4`m{!AiM25!z@#Gm0?Ohiw8aoN3(Hc+| zHjVf}u;c!`lZfEJ9Rj|J{Nlxxam$?RI-*1TvYTNu`wS<5yXzyR%p2t(W0YH;M zR#u=da)xb-Ej4_T^E34!$Vbx_WiIa)BH#hn1;k~;N!_c10f<|Az%o?Pwx{?eD88l+ z-!nf@2NRz2vR4OdwemN+GC(T*ldiUaJL!FEPd3#N5t-gIp7ZLlvifr}F`}AkzZbZK7nC04>mAV2 zUu(WzZ+IfFkrIt6M3lE1Hy14~`d}TK>!BT7@fD?|o*f(+M~s*;1*c_xGuRAY{ox7c zYf#T(q1E2ki_MSi9F;asZkJPERhE--e*1kdpBo>(4& zMt8nZfm8F8oXLC$1ax3J{yu`6nqip~c{AB%w(wcXXUy`t z(-Z66){O?dzaI#Qv(33gm6IOI>kz2}_9PgI&p;DJXJ`ITazmg`Ny|YR|9d?-dXi+p zaK-hGUWx26S|250?m%C09hU0LJ0t?eE~*N&BlZU!`n;D0_&Zqy1eLBl9V< z*|;=KT|C`~={V7CqfRuvrVhrrlDVF`IuXy^E>ZTHWq zrRf@T2;eZd%zY>D z@vBpKayzYhf2Qbs3=TTOP4dQ<;+VR%M?sw|OI7(o-Ocp#^NhzjD`HtE{N8{Z%OW$@ z16(r6E&mcXt=!7?@Z-Nv@Hy!}9i+eiK6&*qJ(xmS{>>+RafSUC5uXNVi*f&wHWVd~xERxc`U5`uy(DOBS>DaCcKD=pheNmlax|!khH~FEBSn)S{lE$rap39oVZtBQArk@P&)UdbMr`l@i z?=~QGz7ryyTZQyt1yYo0-&XY?w3i@*Ob~sgqqErzI_;tuh*F{P*jXh^zDzzpMqFWy z6@OXxloc;;=n{P~q0t0Q zlz{#G!dF!HDdcd#Kqfv<>w!e&KSt*do%Xehg@0o8xNIZfJ_VRz0gV@UuiBM~ZU0eJ z14yo0&6^*~`?T^S@mduq;+mcv$rv$Vk1QMfa5vHmpSsjDAB5MJyIk|1SZ^=nzOe_! zpj`CC)gc-F@iCHtft~sQ@uj<9&h)p6Fi^!GAWX&h+hhbHj#+C(WS~D!4!%cW2Vw1P zE&fX;7!&}H3J28F&Z-B)e)_BjK(^J|)46}YTpQ#tRj*9xayB1%#85Smyrgp8x1oK~ zsHLw1su4vDx|a|DamwrnvL*;KH?DxUBFa@xdMqdj#Gmzsh$U5ke>CUbfbb=tXo4@AT9$#~Tdhfg-lEnA{Y`+{40631ka)p`R7HRZ-1J>jk z_KM-OnEKJrM}W7N%R)vC*;-e{qv){w45)F2&$HrfQ$jn%P(>1y^eci%C%dsFkH4vn zVJ1@*CYMp=tb;)jy)q1k*JCnrxNbWqpe27w9-VwyEjRnfke}OpcVPM9heUj(m-4r>`;%jz#cGI z+?3Pmjor3++zvBa3oTrzzBnmxq6=)163ucK=GxR4ZRgCLr-dA@Q=_D#U%uKCZ&^)d zn-~Apv%Qi?Gut_*FUG$mAllSQ=q=m}qF+r5@7t@WZ^wmRyKo^-YY@orfYz1BWeD5) z=|eFW6P5e=1PBY;O|`7t>3G^Kt0Kn+;-l~gSibW`oidU=B>_O~2$n@o*_LL1zk-pb z;|bXxZ&a2A+6932Le1LG&O$35i1=|a#iwGVrjf|Y*JQfep(RT%J0nom?1 zi-Z^6x|i!Jl?v*<9fR}ni*vW~E|iGuMSC}lPpL^@wu16~d}U%Yf($N$h%ZdD;KQTs zk%jsKvbX9w1Z#3Ml#;X=(xu)DFaK8&~h{^MrCTa z1v8q*UEM-!W*anz>0{xa`CW@v9V?WuT)7;ybS>~aOgk_;OeQVg;<}N@mVkgd` zQ&D#ljMgAUh=xH&nW*Y_eMWT`%ig#yqW;rcGEfW5rzBq~8IUb^0rHz=GNbSa(sAN& zK{iTx^-YR2<`h}|@}<@Pt|HZ+>4bgHH@qUvjKabSrE<4nQdAKxQ|Wsr02cG#F|#o0*` z&ZOSc!)`2~>F4ov?XEtfj;_v-%?yj1JYvL1H+DDKcJ1y%68M&?fe$L7n4NsHiy|0X zB5~izOs}Zy$%YDyxT0airz?IL^1%!hRj40B-^-S!b-k5w?Uu{SpTVFJk~to#&=RlR zX8sYmNjCLe2BZ*Np8imy>Ctat5lhOS+xD(19T|`R*cCm7VYZ^-rd`xWK<>!Z3;t0I zA%()lk2)WpA9l7e(eOV1r{0D)8_pi(e*9S=A2AZO8RP(Z10_;5EWjHn=ELzKJ^#X4rp^jG)YI zH^mP#A6~;ad$-b>9F>zC;$%T75M|4&{^_Vs)4;UqlMEh1DAwDmsJ0t<-Lx|^ms;t# za{V#2jVEJ}X>_{qw|J>Z-W}SN)e%yx&LB%0P|x{%K`f7dW%VAF<&kGbPj)2)X}Q~C zy4+BzvDNWAJJywD;8i=(Ml~Uq_;o91ipVV0+sritHMrJ|q;L6cpa!j&9@CMGSu0f0 zjxjRAl+m0Lg0vV-(vc9s)f639jXEP0qVAuuyRC&QCm7nk@l4SKB4JaN^}On+t2 zzwk^~+Ij=ufEzwT5^`d#8$hW7QxLZ7T=@X3BclSe${KutF&g&rk*rDf?XU6OYfP;m zhDYXNNnR=1nHmB~$yb#Cc;0zm*(>|cU%@Ni|Lk58BP$-;8Aem+YC6YLOV(o`-)eiB z4y0P+Ml1jRu-T3RhQMIEb)ZF>)3{by6pQnr^Wnw#V#U```bIt`mlDQug3Vrx9@4JT zy>f<%>cLJpI*XKd-fjck+Rb$}*8LBdy$O43Zgy*s&86VDhj)FO^SSsF!`0^qcy&!y zN#d?_(Wb}l$ER9WAlptTVpD&m(_Ww3B_~1pbR)Mj>=*DM&C3~)`wID%11`lHe2pUl z6-n+f`G*g3MTDz}v|5!qAMK$41I-(1sM)WXMbNHK5-@8L-C09SU_x1)BIxKczkn=s z^CIFN**l->)iB9XBB`vc%M=EO1n5=nqKq?l`U~xbRBTpm#&u24jLM}ejQhPB^%;5^ zO9QDKjSQ3hk3**qq57zIF13KhL5_y-#`Q7NNc&?5=f=qr{|bF`1Adarq6Eb);j0h` zt{OHldkd_Tdp4J(0#VmRndna3A@H^U(X*c1o<(B$V@u?@dUwc>DfjrDO|jyoxb&w% zOXyf`3|M)q)1o$cwu=65b{ZfxfnC;!ykb)`=U2Dwmgu6XrpRkMB=OAa9z*X*Tdjnl z27>)lr~IRO6{Xbv~P(x?{3yJ z##t-sYov5lHqAlP0OBANwxH6#3~H#cCksX1o_9p=h9O3M{Tl>$HqCP5r?8MGTH!Or z)@ilD5<2JkYpQu*YJ~R7-~a_De4o=hHCS$I{K6R1W}x*NF-WqO3+YV)AawKJB{7Fb_A5oR;dIzd39nARkGuwD=#!d!G~MgSjoZrlEn7rWn@QZe zO70e6MjX^42L2guV9%rd>svmb0G6#VXDkcK!bNd&H3j;7BfkApdr*nE2e8{RAN=Um zVS_f-1t(TQLak@!DJAM5_Af)=3l7zYkI3sh$VTc2QUt+39%*{&Ppgu{4^O=Y0cHV$Ks(-?noIIjn5HWkJ1#GtIuieyd?TE%Q zH+4cTCZ^*Ra64z^if@@9UZDP~2CmtCPU+;wn{jQukx=uB^ldyy-NFT_NlL%g}C<7e4}Mn9d6*Ksmqs1q%AUG-_j58mokk@NBgMi-OZ&Jp+qj+y@+0VFZEED&`0 zk>bZ7K&ey>6(t=^pF$R{r5P-}=#=xPQpa8{?O>Kuo}z`VcxzbJ-o?5x#HsV5WA)0zy`M$0Z!X`8p5si@RBkjc`qLT%5gG zzfH;ZxA?FHAG_{;z7V~Pb%Cm=3>YOBkxCq(p^f6-GJf4(*yV) zq3op6XcqP%s@cL=gW`mEI3IpVz6w9ewUGAn5M7wW#&%PcEV>MZph?w)Ma7ZAa|hVA z;DzVGJG)xw33%czLLG9+$2P5G7}5tN z!`sC8m+D7`?4$&vi?H6&DD%KU{IA9gZi8G_OaQSkM9daSG7Q^ zPMfZcf>08*dNyseE8R#V0~_IsfG1*pr>C< zBNQ%OM*o<`C|p3hX>VG7cB_+E(Vl2UZnSP``u0Gt%;^$XEne;hdf-Q4IvhQ{z3lU# zQr0peM96g$u$y-D4V(Lwf?HzK|~q025W zRPU&NVnhi#azu%)v2fVR_0|c#NZ^GbSuq+&`#w}<{cU|TfLk12$`z4Dn?e7QUcQ#* zLb~Y2!8>rIKse!Txf9xG}>nn*{e7&D$3bb{X{j<<>5GdR<<^SFR!Ws3i@Z++t z1KWT$0)o~G-mngk=ujL-e7Qn_C7R0xdn3S9^Ym$Txu#%I!CW6m1S8U7!(-V5M*dp8 zH?g?MfvxEAv~{9Q*0k{6@XMnU%_O%GcYu`MlU{uHZ9q#W>AnXPCpwb{gYruAyQtZu z$BGcoHNte8hLSJm*CVPvc&g|Yl|GblNFO9vkK3fE=)+2_?OB%H;LuNP%#bjr0>VXx zHa2C?ukRk`%Ds{bq{UuLyTtFI*+^dXKbR@}LuHDdBf{ARI<4_a9cTrE#q{HP0`RNi9W^ zdBP7+gI3jl!SLOb@lf6i=91h0P{C98;!b;kGFZOmQ$BN|MD505iFNQtV@dbefFR|! zixWo%JGUEm)HQA3ZMGH~f~>px>+RXh85wgy)|@Z;=K(R?KaRj#A7-;RZdf>nqO(>i z=^d8jFcq4+@d8;9Lx{|xx9bNDV@mT{;nFI9;!Oq2Y@zzM#lG>cY)E<27XfOCJiqB> zeFsM!#G4r)`_*h7f^*J=Z#XeHAz#j(Tgu~2VEvm1Y?muq%-$7)J)4APXM5aP;=-sOpIB>Rc7m{Q+7lY&^fv21BUG>5ydIheqI0&!;-lPu1==-bE1}Fgq3n=TDOI0R8_Cd25Zx$jeOqmci9jX-tqN)8 z)h)@aTI43P9#ql8IxpvD`u)SKZ0yRwVkIW<$fvySEY29`U6JY0v(C?M&P3B$N}{1i zs97M-<#Kn*^UI^c4TJt8Hk74F^@VQ-E5K$&ALYuqLU4_3*_85HVD)`X9jFBi*3%+% z)9f@>`tviM+|bIAY-r0vJ^~)(ZL)}C4{V|tCiFzEpYp8ROt^+Lf(4ao6-q6dj{1u50QSE%HNHddkwl z-$v42@$r+?!`5^>e}5e&CeXGuoGV50{MyRF`1BIYPAbSz(YW?4T)5Mc31fG3TB0H` zpBcI$PN&g5*F5|~{trkzDgg?5451yI*a8e3Fc#_~TLKy6yy|%vzhY!fb}wBEGPP4W zvm{i(J-^nR`G>a3JfiK}cL|6@FY!Xd+DHZQfOq3aFC=8lPji-d{H!M~Eto|!D|<37 zPSZq3ZkMYz?*99w#J5^h$BjN?G#{uZJn7Hbs<0%AUdc_@OJidNa@&`IY_1xt;M)mm z7k%CnDtg9v?>I)Wo7bZxlgv=ag@9dJAx`n<#Ua6WRBDrT|KCg`M%^0z9!OP>PW1e) zXe!paN4#_Z7DHM57`v({gov1KfRKiGFpFK%zpg14b%Lr2fpyn1;K&GXu=u&Piv*D2 zzkq(NflMwfp|TKQgh0A4GBG7uL$x=l(X-=)E^|>Vo(#qeF`UdG5f+A5?gtbw+-?`+ zOko*h?~AJl+TsixI!1t1Up0v0=R+G%4J0rly@@miHZL-Nfp4US5TGetHqIYa4QXY| z5z2jCE79|ZoShCex9RrHw-Y{Yoc(RRjpBi=)2cUZW%@pSC+5_q$WK&$h7DXzbjLDA)ubFSH}Ov;+az^kpTvwPd#oFv z!2viq#xooP`k7~abU;t{>hFnVRI}is_gtg@VF9qffx471ld|@!@QMVD7Ptrxz0DwS zO?(kW`dL#(Fjn>)J^b%=epYLl5G0+(Jk(K%=RNn5b73}^8_~pBz{$Z~s@hdK)!SK8 z3?EVM*G;~S*5Z&tc5}Vmdf1%&VhCX7{i|~(VdQgH+yUDsxCc$-z3+3_xlX)Skhzj{(Utkq7#!PzTgdWcJW2|0OHbKEf9WjPzSbfMH2e~S!cn_@eHSMztR zu2oS*MZ7(mH3_q?TKUaib(tdHfYGglk@^?0fPDA~e5nn}C<-x_l%}7_abPk+Z*#FV zdAt9EItVf761ZMo5VowaOcXnIGE#d0mN&4c3sWk$NUdOhT^L2snuiU{fvtQ8l}dGI zc;%lzU5qPxGwS^A_w2277s?3cMDm{c84+JlfiaV-3ty3nO|Fnn=DgxdnDY$3th7hN zf?KHRoU1V{?ruxcY56*Re7iqFYm`9nu5U;wtUk~#tWRPv1d#a6(B^6imNX>*w$o0d zBQEa1-yBC|6$DMRYBktuJ~dM!&Tr4VPsT21esR(uTKr@Mw#o6aiJMb_n;rp;_R|&i{p>p zgWabyID3XYSN9eaq5>F&+s6*2QS`bc#Iy2ASWt zYT@DD#uwD|q3}MQQBVjc&xmd;b<(swkm@TpLfae@`UW$%bg#8hK!Xj^cOV-J|JD+C zZ-o?<_GoD{IkPT60cGnFK4xDmM!|u54HnAjBG6F`%7r5tOom@e?!XqkgCdN*OVUgF!2J1W|MZP9GDEs)43rIGYI4amy z@JP)1eEwc9TKnr|;uQJt+OPeU%*mqWUrmb6JkV%{atovb-7?YGL|@}#yPk6?cP@RZ zMwEZlWmOgD#Iss16p4%aaQu@nmfuRPwDX#k)G}jz5M=kUK$5%isnRAdxH#`vox*+t z>Myhl%#}M5STo6su@2)z>N2*tQ<8RULj1}SV|qIJ%E7=oQ^j=XtkAu;%%h*{DiFjP z&;d_f&^ArU_DoT)_D0sc2WY(atzCgA`%zMk^3wuUE1x67pH0=@$W+&7n{ewY&z85Z z&I$@7y_7xR2#9ol*++b7FTR!o@VP&Az0_8q{0VRZmXy;`)%<;jFFUPYENz9Hj6kYS zrgWEYKODU~h`h9)E)DTKv3>zx6#u#s8CesuL0Nt;ZW)cdMA5-ZE0rpLY;eg(&Vq@< z5Ec$xSc$F}R20;*HOW#5EL-2MsQtRf&@EE$o=t*JI^CXCuP(Y3XXI!YZI$+OF?eY% z{Ac`R(Dr|Fn`WLJ+@jb}S7!_-k-MF}U=JTC4CG)_V@G8gaWyv0h=#7}2szf#vZ%>x zn*l7Xw)UXVoBkc%L1v|{`PAJ;*?ZR#Gc`>ARPebBW0!~um__e;6#aCxc=Bi&wO7g> z+|Bj{nJJw>jrM&(c8Oi9G>=vs+7+A94beZb8zxSuK#Jluga(}NU*z_kMkL(xPb7&+1(JeY^{2b1g|`x-F23&*lZJS?jB zaF;YkT|!}CH1&=UZ|1zreUy13D!+36V=>!(TTQ7v!J;FQCB(-`K!xLj;-l;bE|{cuEfH}3rx|di~ThZiInYswguPJ1Ks;mlL$4DSZ z^;$E|X)U9qE4LZmb1bDq?&U6t)Vraixb=3a-Sg#zjOX7z-(dm*){O&{GFC`%YwlA< z+STEtRuUzCZeeNjf3WVZO3YcAK4f$XpEhBSOEN@Z82K!xq(h_S$a`<{W5Y=4V(Ajsj zY9rTwS7HpDl4AyA`71(2fmAw-76X-pg(rTWaAE*S&YGee?6KRKeL(&ois`ARRT?pv zsxT`Qs(=G!ZAt%h>#nf(>pe?U_G*`Qawr|6zsrW6{FU@8M^>IutSBb+){NVqB75tBU+R35KstCA0~;b_H97(dNabE2q`PWLX|4lU zCWP%$?!^_EZJ7Q^s1#M&F1q;DdGKt9{{8-+2MRFH>oL0-Cx&RpjBf#P)dN0-#oTCx zUedt2!L?QaMZko1SOU1B`DRmR0ux26%x zmGPQ5LraVCmG4{Q#JYj`=Nw8a!HLS^fJuWCJs}3VV;xm%c_PrNvlz4Jg|4KUkn9{| zbTtO4(u%kojDZ4GE8r8lR0#kpXx&ilj6fW^b$Usgz0=uUNe>^=i`ju4uMjf_A%OBm z0jl3xBuw*2@$bvyJblzV#irMi*n^kSY|M^j9H2*5 z)He}}{^UZ`0K2gVb1pV`5$7&jBsnh*GfLR}U9^1m<+gGUE^3B=(dKu3Im z06JkpA`td2g!NY<4nr|@=3tbqZ&BOFBosoi6gs%dc6mRo{@c{LUh@TjSaFz|Dc;1y zpEF0F7Z~lRT@n4Yme$cD*W)AbRw3^!g;N>`y%4BD0}>bpgP-F4;9sb~1%QY|hBO`3 z=6l=|(`}6@rb9v#xHlCVjBESbzV)`(K=i1dFDwU~7x57#h5R3D@BE$T_q2h=wyid{ zZ98df+ji2%PSdclZQC{*Ta9gD%u#t1}O5hOA1e);=1f0zZU6l&+4Dfw)QbX<3Jv(%t^*F`?O& zDe@fxq^M;l`0jO}d9v%(P3gTp5CL@qmY7Au#;KYodRVLPI8Urv%l6dLSVxkxN%H?3 zfwRg@Z8o2poz&M$MPtt$7K~HneUt#I)sb=gzAm%h4&1)`1vJ@T)@{EI9}-jJZgObD zbj2b@d-bI5euk+j9V!By@VDP6P7{hp^tj-^zhQ3udV2W57wl~-Tr4Ah& z(j{}(0jpV~xdZ{-lGVXXL#~l%fr8MgY~p2{GXyPg^l(z`&i?k8y8xvYa_WE0SOWJ9 zFX*tGWUK^6j?N=3FepBcBPpIQj^ZFH*+gFohc?wt*3=yfR$JM*{I$VU1quJ?+KZE-87NVs#) zW<*vQJiAh~ICeiIzhB0EYes1i5u<{M!Pha?>43x(7!qyE+I&Tjd+-e8l^be&wZlkA z`boqHw!MDG*gdTUi5QbpgpIO#t0uaEY@Z%Ay~m!V^y8-#uQDtuV&$<}779czo*A!x zuI;dm|KK)wA9O&}{6^sK<^XYJ1z0_ahNE4{X~-O^a)`-tbt)urRLcYC-qY_g<%17R z8&~^gkWh;wE;bfq2bFbcd=+|$Y)X2Qg_0wRk{-gIY|cNT#DW87TC85KB!gWq;>da8 zQ)Ma9Hb3u(u>w^tD7+W2@+7K;lS?j*{!FOJWzY?g&S{;MRp~y##v$8<%QM~vlfW!e zDW>B;RaxO3_-tDI(KB#yRAi{yb^gexkFOLwrNxKlFvXKAAc$4k5F4|*o6~5sY9%FH zxLG!DSwrS|wpJO03*E3j>@4S%0napsG~sUJx4Tk483Nskgn`VBM8PvE2BB@FsO};rWr7Z2 zgCWj~@Yoy!MJZk)D8VN#B88JHAjzp&7=+F^TMD*wkF9Pv?og4^J2jHgPre7 zX>+d=c)_$Q97z)2 )?7QmW3@Ng-i63hGyBi+^?4E|jR?NU}ZzGmHwg1SW#Ci9yT zLbyai?6R3!%ME?=7yt4v36zBsyr~XL*l|JqAgEM&^Qo=}I*__1^ZZi0u*c3MjIi9c zTkzR#F9QfRm#9K)v1*BHrC#!X=eVM`Rx zx&Y>uB(Yq{I{Z=QI_Z{&}{s= zscr`*`q!^6hN2XHL$1gjuA>_c(b7BaTJLQVAwT4gPasRGWK7D9p%RWunzwJt=+<;h zM||FIFs#zOa}4*vX|9Nr9D`Z(ekh^lk}No=Hp4q8@HCm9i{VI;maLE`o_i+sYlm`c zBY(4tJqfHf4ALL59ZusaIE0;4)~9FW6G$xACst+U2`$XE-?8+tV1ZKLL$}H)Jq7@_l%Dk5vC8$VFO_ z-acD1$}7l;H)*2la4&o0&vnJ6_Q`z zJ>`IFgECvqO5C@RS@LmYNA36B;*|E{`12F@%w3G#W}q$HVJCebA6)XXfLO*m^I2ueF2MhB?RJCS$`HqJ$S39QgvrM)QIax0FJZa-(@u#r@Px)jA^ljD0ChQY{_J$H|+{A5BLn5G|T z%>OndOIos#DOq_*M^&D@bQ@X4cA7Y&B=+^6=1^u#$ghMpjN>BU7?dOxJFpi7wIlMK zaARLiaTYjSZmCY>D}Z8=z;S^uyJfifL_9&{UM#x?7&H;PqM=*oN~cz;yNUQ997JoC zl69CUHNDbSR*cUZA`TKHf19lKQIlBbOx+lN#I=oJV0Uxy0wbD>stZAOaa5e2lt$s@m?YE2eaPq>|>f};`3k9-u}&HBrkt@CjE@D* zs%ntv)xF^dEl~{;MbjUT+|G~7&LJNASAOAcS1VwfqW;DNQt=@ujDkn%P(8A3|2cGh z@CxVTty&agy=Lhjpn1tjtP4l5QJ9IHBiU?og5uTTW zjd>JMM3I=p^WV9&*dPMfQ}@V*ybib^#Op7RJ{rVApi^yiv?;2q=~!DFe;kQ)l(;Eu zLXP+!yW~UnC}d|)FL&B2TMMvT5xg{{9XnO345K9jc-{DP!4S|<;rfoJGZ4AepiVj@ z3Jp_5ensGY@RE;L4J90HHCJfXaPYe$z^kdv(p2h$oawe@>*u#~{@;QopUNO`?~iL~ z;aDP<+qFH?azSmn*KL)USjx_NmHa4FEBn9`O@f?27dC6BQ5|-AFTWx7eoGHtN&Pnd z9@#gl%tX*b8IWsVD@PDG!-TUzpJm{#W*d#aNZO=4M(W#Ro1v3Ed^ADQ(2pV4lxl*U zhlQTY+?%K#xl6cF(c3DP_)kl|psinUj6M1XYi9-JrNUg~`P4K)sa>0D4vMQv1?y?R zCHC)?MjBTwo9s-oq$z3TS?kAZ{?hJA4nh*$G}AM^-&Li>aRKazU|Zv#9eu2CcH^26 z5ocHN4nPu`cv_34OWeN_mR}BJzN1r_i?k_H7R>iIR-L++C-TyeO-iuG7!Gub;-!U~ z0^!EaNUE(^%oF%xEwqYMy^zpcO$&;*{z_7#fxU#X;c~%8s5PV(x$3=aIaS**<>I-R z8y0@7xPcSkeYzh{H-JMoERR@X6ck-Oz@WuJ{v2#0@0lkP5w^sU!=1}hW}r+VenRv3 zgX}GGyQ9mAtJ8-f*Hogt7+`TG*KvRe7uvoMQ@Znik})~OHCmLnVf1?A3(`tNH6cMr zkQT4~OWU(43SEMCJ&L8basTMx1E-l_6|LrKRLtch?^E^~7%l_|Rr%>wjwOpo_PS3I z@66#2Q)5egn_gGr^kr~mC}MK&T6!22aKMlkX!#~Qg9Ul1Zk%V&1|P#uJ$M9A$tMh} zml^HzImOEp6aoZm(!sQFp(HT(@qw3{2QzD*1+IH&bz9!w`z|fmMz*XR{Gyyf^qEbf zPJw@K_u5#diXFQ7M}sGh1V)73G07_$xiB)+c(zlDySa*qpq{<_V%A|c3#^HVj(uNm zhB+A}oo_QT5U`KT>ygJ&Ha~0JcYU3H(&1TAJTCvw)t?N{@8x*oNp{+yyf)LvyfC3( zQN1>u>1H=-haM+uzxbNVX@$9@IF(#CeIKiP)WnLn?BpB`|L}3OGeUbRLgcIq9i@>+&h8E z%Y;i=(u&W~3W4Vd&4WCi*wkxWraQ}Z@>zlJ<**?vneoh0F!B?Dij;HZ>2$^&rk4*b z1_ELX`Q|FloZ=puPT_^#0aM&eZo4P;S zBw&b&3L~;-c%20%>TMvrqC7qv>jyHaCvn_17@XzCP^+D-y^#Imz<14bdg_vwoEry}C5&()qL`?I)r95RwK=xKx zrk=@DeOw38M26w&j3b3sNV|C8&2iL6a7s2~=l($#n?w(m=pzJAGpgDTev8x=5x&o2?gh4rw3Ggr!;81y{ZfzNi-nlt!|wT~@|I{=?v zz?J|Tn7&KTbkPlS%1U$P_bNZH!${F_}-&`I7GM8rhflZmZE!jm*^7O_b9LMVSc*W=C3(&jv7XgUHFM^tXyfi4^x+qrj{jdMRX< zHi8amzqIrV#^G94a}_rXz3tme&%pxUxw1TX9zs~;qL@l!iv!1J0oCMop`UF3I^$O0 zL>!_`9@$JkBD$&JppIKX`(VI#b#Cum?kQwTOx)*1Jv&EoZx@S+3IsHH%bZ?RuSFT6 zCzBf^nfC$rujXodU(F&eWcF(eBJjEbbN0vMwBFBbyj2ILl|aNnA^Udw3%|esB7nWP zLrHyS=)^?tC5-X8zhRAxzU@zo#v3x)lL?+YEcA_HekvvZ7NDi}_wHtHm#v=}^67l4 zzJOWmpGxF@1Jr)~nD;Ii3UaGMP0(TCH1Dd|e?MR?EAWzMhkn(R>umjr>-lyq{!};U%uA6(FZN~6C1^-&TmKF<;ha>XO2Tx;$Wg*Sa-(q?-NIJVr z{nz%`s;PTva&Q&~Dtf3hWd-zDoMp}HKe3s2c|cYLyYtEpFyfFML`8z-@$!ktD82=f z5MZi>taU99l{FYwakIvUP1|XiaJy(0kXEKv-rqcOH7kg_nVlx2S0fy?1)w=iA-_1d znQyOhsxbb&-C2M7Doj75#ycE0&1gRSOBFSdV$$788HXET5MC~{;o)|Zla^8u3E=Y~p( zargBIdp4lM>DJizmFt)*kOW4u_rOtYJPL*y)^`abgc#lg@H}@y4yalGZSg|x*_<+L zi#VxOjp)UHdP~6KVeM1QrM>4U-*Z$~w>16q0@_P2@iIMv)8Sw?3e%xF^)DZ}=j|V` zn#VY{1(_;Lc$UaxKC+OU8aPFY0N*B5$u5;W~Ka64IYWMJe87eF)7LiioMvb zB2^;dpF&wF)(mpVi7m%<{_s-FN(dUf_=0_fvw`vgcRErqa#~<0%n0}&h3h&eE=~de z{oYwLtfwj}xFRXPeB-r`N~Yg5(ZMF~_SPFyaLANtMNW>Av94Kd{cs47LtuWN3Lel? zSWa+#qr=AaGmT5;7@v--z@*ZNqzrqx*!FQH0fC9JZbn(u-hXQm5#7$W;XyZR&ZGK? zMm+HuW9_qW6SS!*+J2<|>uKR~o!deu#*A#boAhcUc_D44K6G)^fm)CWdQwB1njg?f z;Kknn!6sA!Kdh`PvW$N_&e6khu-G!L)0QDwLZ3A5TLui$ej_-c2HR4|F;%EwrP+4<+Xf@R-?+aa8K5K zNFd_N0dC(K{r9@a#hv>mR>Yrp_!YHv4%>_zuMM!08E9cOeZ&}&{ zgdw*r#g+_bOCvJf!3ER~cw_9X$JBWYU62O$P`!k4SACjl)cP;vha;LmM#fLtJxJgm zN?N&07RSdW;ZE-Smoc%bHT@>~8RW^mYqZQEPm@np<6C6C?8sV*7ey*j^1JKz|6tE*f_<)3fUM^&tNT68Dj>gIaRd5KK6>g z;NWup4F4b|e&jAv%$};B7Lb*ejv)O!;6|}lX{q;!&r$yr&4iqLY%0btEl<@;PNlPIk4JGOcG1(B zHu2Y7V|PZ455n;S!YsBux%CqqUA$hb)@GV(E-4|dO@>ms$Na`a)A4-Z@_wYWk{WxL z=M(fX24#xuTeeNve)VmD{#P=zVD$R|%YKvsFvx^K{mNwrhw9yS;?%6)f`<|j$slJ zwnyIOGSQDZdLIt<4sb=iS_7Ve(L&bkyH7QW<~b+ewww84;u!X-B&Uv%5VHM{(4*>S zyV*7H*UE9NkH6#nVXZ<}Yp0bFXgjS{Z?2ryl`hDjU^spd(Xl`oY3M>O{>27=UdJB0 zHoItq=-=hZC2#MU)>8f%aY8eQmY{V0^g{$Yv#7f7$m6l?YvWI?J=!ctdS=*x*w&Ol zFNZ+(@PdeHypwXEK80~Tkk`MZo4Yz;E=DoOD+=cL2BPTazKJ@lH8YaK z4pzr=z|GMwfqm0~d{Af(bG$J(yv?je0|(fG%n$~5`i*hiAZ^)VE^an(8JiJ70$gTw zv9Bl@6mp=_9PQQNxu)_m-N~r7XC-f5~WXX;ciNxxKo%Rn8p<)F;-)@0Th-FjSx?>eb3#-YMQ28b@;X!R+QKhG( z3~zS&h?f+T*8MYpOx6awuZn6i&9MRk=u{pr3Zkp6J04_EdRpaeWvrcKJG8?(HAJ$u z*(S)zwVg1Rw^-)$P`*hwlh5@t{23<=eC6CBzjbI6bLqoI)(pgK$EB>E&=pru51Dz} zV)XQESCO1sb&K@c-H+b~j7hnJ4rnRZ?ra+!ZT7^r?yTtdQQIgZmehbx`_9FxhMK2n)6 zLHy5Wyqim{Sr)}wkEf5bSQ23lbflL#?7n)tFf2{229B4rR7rvn>&;U;(lvYzVoU`< zgFuFq#B)N#nklps4Zj#LLx#+p{lJCrV1H522sEAks6BBZ%ri63N4qM*?HFR}t zIe*Jdeqa1A%f0m4Ur*+9wjcjO)V(ub`GZrNxO&ulx5xa>F1H$tt@T6tjGlLUy&4o?$H|+Tvmu9TPy;#KG&?58i zMM~c=sw~P502c&3{`0aX`0IRwC>W3hfxEdgtc8v53=x?pgbLOcfLr8AZdcjT95~>7 zQ+zFPo(wjK<{9<(*;ucWt{ z&4Y{-ENGrT20DX6oZS7L4Z@<=4ktPN3G~tHd3<_$s>{pE^ApIvY?&gZ=_G*(z^^WI zzR)?1@O6a^+R_YKEB`omX)DY4l0SoEL3SS<<<Upc~d>+8a zsXoVc_;#yvOf@`>{kI%b?GvdUWdozEEWPgGV_Fd4njEcx(NU^}xk~-5fBF4KGy00& zIcu2R_;|OxR+T<#hlxbzX)5r62}~lWyH?@<0>3xAix+F`?u)VFDQz1_oxz)XIglwRlt3&)^>S&mTVs zp1ObmLHa)DjY4f|z=!PvB?2$(11LWvWYkX`CXu?tC*}LKA`~MLfJuc6tcOWxirZ}X@ow- z(oWIfLQB(OmUiZ!^5HI4Y&i!V=+ z@ZrF?w>*gr)jfVUKE{v`hl&9;Rf$<)=&9vWh$P}Zot70PhV@&4cqdMkRD8S7dz>rvBDcW; z**ia+%g=amufk4zp#EqV5Q7w8}evc$L%-me+Qx?p>O>NB5RY`z|kcSk3^Z>|a~eLkSMLF|BW* z(@$GboM3Qxc=$IOw=b0{)Kr{9@4%yS1Ol#~Df-?K`kmg=VLSpIJ@t)LK&4Y9>8Ipp zHVKT{l_^6{s~wMKKaAk%R%%}?qorkYih3>iT6dn`hoA2GTgV19j8wieG21r3Yd~%@7$6I4uu-z<}G!v() z{i5qFNZxcFk*uxv#kuP5E8{8e<<@ev2TyR$Ni5!Qmt~ro@u7+fRC}C1z4HutU?~(Qo7GdpRHrHdk=&HnR z&rEVhH%(A56aKBktcfm03jW5a-H0+y$1Xd@Vwm*3aXoZ>i5DuW&wa^S+Gup1`oi^# z28ScY?BXNBs~qQ!dJxlZ)t5&7kmf60IwREJta}GJ($U28H^rQb!lh}G8ANw?EDeY) z6%6!B^wqf{Sy}hX&B-pm*Sk~C&VL3~p;r6VLAVKc+=h**zQd1n|K zE57xBr2f4342IL&{)1=F2&7GNP4gq$-19pz_Ml@;K{%0K212J#c5385v^wz0qX7Xv zmw#H2x;V>US*OUr^iJDbZ(0m^((6MXfz&itt@c$w4P5TcU<^BhxcvuW>>oM?0>wJU zFvfl;X3kS5IqmyFpY|1DT}PvWS#V5{3)GP7pF&NR-^U{)4w+Z7A^Uf0;S1c zhj{%dL@I0Wr)Vl`L>X>FoJUro2Y!NE7LvEfdi)G9gkB~+tRvC?=xDRi4r@;3beH>b zTgE1^^4TQZ3PMFoyBC73zrCnokTir2v9n-Uhw65LHr6B%XB{>Ju=v5Zt*Cdn3@W2#lQE^ zO%eOaUDC_+FE!1V*Z#U&43kPlK2HK5#v&EA&5gTRPtqND{At3Y)i*MCi+s2)=+B2R z6BLSt+IXnK>|A)xy?LKJBO{9eVT*Yvwxw6$YWob^K^vc?ShWvK2L8{5u6RIZb1s_4 zpEXmj{}rH?40&#NkAYO|qd^nVO9#z$7zewdVYXl$$ARigW!Vyyd@%h#I;HQL^?IDJ zqmeAAa-~pCuO%*kQNFxZ_j<1N3~xR#Q=@siryo1B;T5)C>+kFu4qETrowESm((fQe z#2go6Dhf#Bz{(a(UI%gAzT%z!ze{i3zH^m?VSA@q7>wc<%Xrnb?JXi+e>VieR~`|* zETHL|tNI{1Wg?RY+Gy6oYf6~B+ydNIvdAWM~le_RVnyNVy;Kq~sE>i#IuicTu zo5|o*Aud%fE}*KAi6slPHT(yP!?^X$bq<9cTs9vtdnrX(A2@FY5KI<#-!rZ?CjUCv zLfQQMmEf${G+-2bpB-WGX-g*`I?MX(?41Wj!6B%$Gia)&jXKRJlkewCm0is{LYj?S z{~405QGc`7%lrn=$ZL^Dvy%xjiOn$RN@t~>wAktp;86C5bq+%}qg5V=k4Ee(smvx& zPEJm#aulj+9*sJhno_EX1K#Kmx&Ak+bFLHtowPL{H6(>vLI$Z$ZqQYB78GuO>_rJx zS|BZ)TK;1HcS*hZRh?w@B%i^}m*D$QE@~>M#1LgSI4?GpmFN$vX=R$j3eN23YmxHdU z9TfOuB;xKa{XUD*OSN|BxD)f9@1S(LElfGOApi0(o>+iT`xP*;K33tjvUnp;Mb}yn z4ZbQ?|2S1&PUzs=AH!9Ya;mQEKPaL+kR$P*ZFcu`PdSMDriM5)?>qZd7e#Z|ABG*Z z1n~9cJ`#b-_y2iAAPd#kqkPopdX-0715LU7jNXn#HmY0f@Sf@LQRy=lb=*G|*bMq& z>&schZ{##ovd8Pul<)WY0Afpj!(#44s!cw8X+9XJIIjT=LS#MO>JHe}T&mK8g@ug= zz*v#azMTh_?Z!si31?MaEMxZg7pVX=GTWB9rfq>lbIlBg9x^ zf&?axb?R%U!&GVZs9gJudNn#S!G&vN! z4~U{PTTNqYj$E3Jmc(C$2FLcL3foFJ3(j&RX0m+Pjb|X9nUWRpO&t9w!DUqK1w+pB zMe^`eWMRj%`Ox(i(-agGp_sJlD0tQct7#l|V+GO)1+2h=9G<>Zh9_Flj(VsEJOcp_ zMS;L7ar&05!RV#I9{m`5BCPcvET8e%r!nN+TPWOENJ)r@@8Z2B^FFd5P~e}C$)KZi zrU0W(?dlcbWlMdYr4#YqD^9nnqEsn&*l;@H>5ZUOtzddN;7@t?lDkoi%I-{vdh`}e zX+b_HTTSvARs~c&mDT!=%`~Ob9|~#DvdwX-HA@l+_;Mlh-~A+Ycz?MM4h=;^MHQBj zfh#P;WabDA3`}LUKr%8inxh7YVeII4Pk28Ay&!F~LJi@afIXh;!FxS~=M@LJD)(4( z#b-SS9~oso^B{}W860M4OvwBTOHeuJP!M&~?r;(|OQI)pY)G><9gVm$=IbcJ#WAiw zA9zm}quk$Zj@r<9Nmlcyws^rOj{>%rR5Nt4%4=<hNff<@;!J#o5)_^f5 zpY$gfH>xQZSah^r#v*Ux9+nK+u~g38-xspke@*xl+#;64_L zQ;sh$&7jnO0qh*oJu2co?s2%hOjB-g%de$_raIY`%)D=UePye~S-I)hW3G5B_>hLY zU~h#j!280W8#N(h#0Vag>ZuFfbHnmG+`t-mpVX!F%a4+pG|547?g zzn)n4*H$cD3e&oLFWOme3)~&7SDctEAc~-pT{P@mtGu@9Et(4 z!-nrmJCUi1_$Q@d4n4B(uf6>8z2zrfQWQPB`^^~S<@I5uV1iB-%815y^Eh8ys?+hc z?`3IBFOVAHa%ja^|BIWMZRTW0oK*SFsugHU^Pq8nn;Gs#VZ<$Hb=_2|owYmP^B6O+ z*bj9CKBA6w|DkK>_1&3OznTV-61bX=gmRbj%*f=TA2T#Gv`O<)oWj}dGgyGgp7@LKxh1-ts4|VdcgX4l)bGLA zERiW_#qUsuKo2U3jo|5{{HxQ?Zw=d`bWRap*FTApNA`3=k*xy+|0FN%>AFyM^+hJZ zFHJ2miD$=9i^VO@TG%3EbvKS(soVca^m^OdO39e<-*#^YXRwQkjGSSU*GGd5yh`ET zcXYXz)LAyz21CQWJ5u>!qW4Q=#Wi3n|IhSBdYt;GN9Azwa6MC4aJ=jAo%I2`1=NLe zzO1%5Xo7esi!ze}LH>_%>k;CBJceyYt~P}ix9viem* zL0TGCzZ$!Ep1O|pz1Z`ujRR+8UES!VQ-14KuiHarv#~^>Ra*|uge-uOyWV{$Yk2L(B%q>N z%D$qF$1&Plcc1NWQ5!bNDz-WjtH9zUs_tq-wVOBi%i(tgUZZMot>njWgQR}_VSxq& z`O)*y;o;%;jNNZHBd68fz#v{7Pfsq6boq`UHs{F5$SY62fx*EDrr2K5%AH*J@}tka zd%+c*zmR>Y$~Y2Z`sm0=Hqx7EUN{JaaL99QZZ@jLL38&}uonx>5BeqAiv8D;NLd+X zmIBx>SmKbcxyTXnwxUW=P7S`L?23{b%JA)nsw|8b{W*8V4GYwYr`N`>g zUMvZer=S(d^g2U813=fDni?gZFrfO?{JD#)Ycr#q7TZwMtMNCc`sPMd@@!-M1J%|I zZ%U(QLd-LGZMvRoq`vf1&p6D5E`M^|2|ZLtA_lJBnsyLSMgX}ta1-*W2(Z+Q32L@L zf7tUJdl3w7TLiD{ZV3OB2qO!`{><8RzegnSY-|klNusy!Gx|r1Cp<=eoBav*;6S6{{m@Vv)Dn1Xt)|PUMBZ{cQ>G#4h)7IU5_Wg6lU!iCaJBc}E zHTQ_st4xCbzK;9}sZDNyMG>-3*$tvHd2~gv zun~ZbjVs@OuG~8(h4}NOf+OvRun-ug4?6|;7T9r*x0Qe}%Ej4M#*fPUXEzU`y=l3x z3=^RmYFah?$aJuLcs{gG+p!|p56fR=XcyVV#p1okf0rn1(5ek^Ys7mll}mQ&Yi@n+ z&}&Lw&(YGbuq$OAV|=ir&c^Zeo>A7(5bws+65j%Yu?7}2fhtimAd?9CtVe2ABpj8V=l-~Na5wL(xxVJ_xWNyAr;!h40?Rd+3H)NKW8uCal`9yN8QFhK#4iw@hR{BjJotlX!JTT9X&<+KHOovPjpW|@JdpsYZ*bft z)Jf8wzN7ImplA>cg81j?v)AL;<;seExOKV9k2irreis;$d$1QLNWsRYil>AUyk{N_lSTm${n|Q%M?J0xIZvQCwDR$J_;jC~w<^o@4bqYL4UV z-|BWqwg{dOXfn&CeZkIo3w~y2PyeaZ0k5*_emS8XioqWSb`>MdVf(M#PC&;aycqkU z&?-2_i60GNcwHc=?r4gebcy=;-3F=io}>+%|1&DB2FF-ZQ2^**bpgjFZ*c6Egu7>g zVZl{^`oB2Tue7a9S?Ta#6teV1tdxol3FvoZK98$b7kDpx?!{@r180qB@l7~nPQJUp zXp8#o!4D%UWIHxKIO7;buB%^S+Wf{N3}GxJk19H{BQnKY@e2)eFc8+)nheMGTtD9) z-Cnd`{-aN=n1F(au`E8yJ%N?zqTWAe-;nl`=4pnex_q%g62iVNX)3y%4L5#%sbJ=> zrHCn8Y^?j_g`Cu@?VcbY5}$wFDpk`{aSYitVSc^xr2n`^LE{~i68#UQn{j+vdanGt z$QPaMap>aHeW?3>ZO&oFesKSnR{485TK0a`E~At25!ew;e`F{s;^b*>D>e2KQh3Kq zD7WrT_iZHgBQB?}P1=y8&nD2aXnk!wz^IlzR@ZTdP=%|f~QAfv3 zT;;cp{2b>Dz6Z=!NB#h$s0WN03W}DY?_OoMAR$qqKZe8gW>u{;T~%!NbCKkKF51@cw!)Ncp&X z;ngn1NL6f5?nv|sN-?m7+#|Q-SjC_x=c0(zIp)!WnuxfF2x-s?E5m#{>1;vL9l;+V z%CO;AS@xV-yM_}@!^VaYHypHfPVwbS5Rk(%8TNo!kqD!JyaNlVMq_;F$g68Xc{39UvN|3-pLD76@CI1I{%giD zLeUP9Od!((%C-rwynR|rf(JjTv)nsCuH@!4CwwI{KIv+`fKiEV^O1S z_Szg4i@R;Flh}{F(O30b)wLM_vaeOW2`P~O*gkSwWwLm7|Ms-&U?~tYbyV!Qcq_R%3_OZbCiDSa zzO&HiUv;?dMYFQ}pYS=2IN<$s#Ohp)6-7TP*fX`V*%QOukLoFb-W3(WvhY}WS2Bhy z8&_2cj~)v7x|J8Ve(Nnx6Tex*06YltW_RykGK+-G{DavBzJBSr_RGbyH>ETxhXDRo zNUlRwe$R2PM-&VZ!Jiw(Ox}Xq{9srAyAm@bK6mP_ymg^fprg$~NVB2Cd`R|CSLn&2 zL7uHvO;B(119`6AB%Ns@0#iJ#lju*6{IS?yU*xXr_AO{La#4^-Cb{{nf_Tl|Meol<+w9TUDTE;jc=LjvYThv%PyjlOd1daDz@$-y!VI&uQ9x=HCq*0M`CFn z@_coHwT}rsj}zcSTQxoh{#I{Lkrn?qlZ>wyZKn(XZ^{nfZs1lM2|G;x|tefO%}~G*FRn z<9j|7t6GrX_q&z>3;>C|;!$dMNDwL+&ZF*Vi!=2H=VNX~Nyc(=yd-}ycL)Dw9z95d zZMuY!zUua}R*Gvf63IW1I?$010E%v&kFs4ZT93ZzS2;}3F)|kWJYEb84SoCeEpYsx ztSC{}eZ`E7PuTM7*%W&$XyFAMH0mc$w_4_Al+84hsP?UwbjRyG-gv0k3T#9j@m@4d zmS{J`w^H6U$Szv*5OqK8pPA{@nK_{URo22##)E=G)fo1I^%vQxsR6hJGZl7Z-qnmK z^7To1b>s|0?hofb#j<#_U=ku5YIYnD6rF3e&NICX{s7XsF0ksm!t; z6pV4d&|sP7m#G;TC>R+PA!fq?hI)VB)cf&5emIt}cI`YdDJecPlfI9eAJ(~jgC*sU z3LgK(?Hb^;EctGL|g}ov2E~2IeSrZxPly(JF zfH2wop+gn>V)3U!YnNHd@cv|R-S>8qEPNhCe!lHuqkW0tS4sBSN_`k$`b#VK{_Dxp z8u%_(Wq9HYjGw8k?2dE;=46-0!WF3t34s>SE_T(yDm3Y$#C*NE&7aah^L2zmcp= zTxH`l5e%#Rw~ao!gBRj&s7`26H8mGt_ni%P?(G|Zup>6yz6>9`?z*=Z60jk) zwU24+(DW|)B+nZaU5QvHS+^ZT#IzRGMm?Dpph`+gLP|tGN&Ivg((eZ`w5{Mt*A^J<~ zY@#yyb8FvwO)*)Wh_!Qe{HDVGzt8>e)BpecUBHbD-%gx|#{mxpN&hkZgAY|U|3D-M zN0TPck}U%~`X*otb^=0|EZJL<%@O=30@wG}p3uFLErJ$QOQ-@+m+yLHf4t`f!eF5< zpo$`;6nUt7*!_PKg9(5jMQSSWJ{N<4|G*`id+A5-nHRFywlxI(iL6VKXQiqOCI{*d z!M5#=DxHr9{sDmof__C+gBp%GyFiOX3(5I9U->@PYd3toyDgei9ncW~dG)fU!*zc? z57qK#i(%zMaA%)oo$*LNX%70wCRy6N$cM%2XSaY@04ax#n05dcvS*P@)}$a+@(Z+F zu9IWuC+NPeG7}!A9|-Xa+>jB*C(cz?c(Fb+v8FEhrFIU1rB8I5{P*fNI8!r$yU%U| zhF$)`bMP5LoJ)-le+&n=Ew0Qk5IA5T6KMB9rZ^ ztO}^1LhkLm1a(igsg8EfWD9;1bJZU0mVoU4>MUT^GHWN%u0E>x7{Gyz3M&$H=xZp8 z_^k7TB&R#PWU~RCy&(yl3k0EjP}AZ6Y3)kko^2rgKRE$q@q^9MVxsNbMjvRC4D2$NXTnU@)>-GB^e(yivd0wyQ^}L?v zc|FhbdcSQDw3oC7ZbkCLf4(LtGQSS10tv(L(I#`pU%(BM5C0VxSe~$XM zHn8l!?**2JQ;;fFC*>1j{8+hV)mV@8qrWc4sEzX6eOhQO5h*I{f4=&QTh>Wg57+ZBj2kbsV(sMWcy$ckdZewTm;b6n^4j_EX`QxPvN4WYu$;(&LQ2m-%JKUBzj>+zw0yp}%8)XH zt^Y;!paKHXKcNnQ=CM0R`eG~&1ST{uanW)HWe2O#;plz7lR#U^!yi`rY34LN>A_ z*VbXxS#yqmY!LmXj+V~US;SyE7*o=Krt|YQZft)W&EI&#{o2w+$&(Wcem!$ltZ{s zV!=GfeD(lqwScfwtBK}PkpCy7NaQ3p@Gtt3`3EI_RRDM(u8@i6)Qko&4d}w%7c8lG zyQ~GeQreA`8x;uv5*NkAAe{xycq_rJ8+3E%t1y6#@RNXS{zHYlE$OM^$Hi3unN&aS z^(i%EVs^HzPwK+i7h39|ZGm2a2Y*Jib7W70dbjz*pb!1<)ae$w*VGMUfB=v23GWhZ zc9moDrrumf94`2Ig&+fgbOxF_6DRsSmghE&d=#qyGq`&=H#|6}6xaUvhzu*Vsqk2_ zCuoShH$F8#xG%kKPSM6@Ft9^%iqFn7|F9Ql;9)V;NWW%I zAe+<1pV?kluObdv?AgK8uqV?aD(K2c(XmJYhw_GKd)NhHC~3D=RK1(Jwf6)6O8B8x z*pm42+o2fciEn>!()cZ0mrylRHDY|{oXT6rpzLH!Qf4b z&{3C_$kCJsez?ZQG*r!wy6%FIo#_4^JJ*EEAo6MT&8eycH7{ilUo*ZG-xIpdz|SiL{KkFUA~U;phTD@t4}TmZ#;47lfD76k|dA695yJso)cF zpr87DZ=NnXb7Z<`fYt=M1)LO>K0WKeY!jQZ)^zSTMN9hoY{`l;0%*oc{pB0*QIf6; zKYDm`xxEw@(%t<0Uq5g}%|*qopbLj;zFt<#g*aiH<8FBnwdH}Tk*iAfz=rytBZC_F zWn3=YX;)?{5YGRyog2@F~TsYp~zf}Ul=BKz*Tb(t;v#B(m8;1k7irOs&08wF13_X4rn0u5HyDRhAyTK&9UFiq;vx-1A{48 zt#-_}cAGTMnJy8A1#pIDYwB#Z6CO{|`R$>$QLnH|`_Q4-S_HO+l4XuAKDaR|(`yCq zrl+OzbECM?Iz_DUm{3-h&sq7w7Z%v}sn?>rh4H~Ooznc> z&+n0+Cu(n6S`vTU(Nx$c(G<5_QuZn)AIez&nB2sVYX8{o$;*Q$jXO;R)5qYf%_RA` zaDVwlr0Le*!!0_(i3s^bf>cN7lTY_7MUF0BuSDU;q+9j02T&$~ZBI#MviOO&83}}I zMSsBbLR*XX>1Hv%F`VJEHTj?ME+oIVhM@`Z@gcQYd{@(G8o60xc2B$})S8$FC2}Yd z%5=rh*K|>Y9$DK_)4Oi%Bq3EEEiqh%wMz>nMp#^VFY0MKU6*Sm@yp8M*0zMDVx>}O!B8L}FU<9~ao(Imm0`eD2#UW^ChCO*zWNc?x7x_qG z1ZnZYwGWg2VDzsu(1D07A}BVuJx6Qi96Hv!CkzYpM8Tema^o}pThsVF#l zDI4~pWX+ViGZZ7K%m2f~sY-puV?Xys<_R+bWGrx&s~j-`8zm2h>`f2 z(^rijIVi~fmmZR|2-p$A>RS=d{xI9Q>US? z_A!X0LN}o&3Ua=oN0&uTCvtwBxTNl*O_7H_Hr;wOg*EqvpD=1SGa_ynVI4>GU*Q^; zUrMC-rYDQIVEBX=9B$RrjP%!5y=%_TFR2#9d3L;yD55K_l_>}lvtsAun6`&JF36VT z|7bKCDryXTNU-&ckm|h(VtK3(T`q#A6ySY6T2*|F>(*C<x9RJ#uM1xz~62C zvhaXTd05qUm~#vPGWm;r0q3_~t$C}?ZTEa4o&jd&#@jj?4tKGN%uUM#>MR;hmj>i9 z8ksO?lHTcGx6n;)z83dk@gJ&0B$70LZ}Ql1>YgSOTSRJ+!z)G9hw4iOlC;`KP&!X* zG+Qt%#Gg=493rwl^{n%)<5IH+=hq>c^=m;?m@A6$yjCz#z@&Y-2iTCU5Uur1=SNZN z0CSR{c6zLjh)PksocxefO#Uv+yWlu@vCR35)T}9kI%iXVQux}A(##^bGcA2}_{HK_ zIR90@MCqj#JYs)-OlR4QNbu~ru^?e&JPyoWDnpHOfAsZ+j6R( zk5P8Ooj`caae #+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :tangle matlab/comp_filters_design.m #+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :exports both #+PROPERTY: header-args:matlab+ :results none @@ -35,6 +34,9 @@ - Section [[sec:notations]] * System Description and Analysis +:PROPERTIES: +:header-args:matlab+: :tangle matlab/s1_system_description.m +:END: <> ** Introduction :ignore: @@ -47,7 +49,7 @@ <> #+end_src -#+begin_src matlab +#+begin_src matlab :tangle no addpath('./matlab/'); addpath('./src/'); #+end_src @@ -75,13 +77,11 @@ Based on the Figure [[fig:rotating_xy_platform]], the equations of motions are: Where $\bm{G}_d$ is a $2 \times 2$ transfer function matrix. \begin{equation} -\begin{bmatrix} d_u \\ d_v \end{bmatrix} = -\frac{1}{k} \frac{1}{G_{dp}} +\bm{G}_d = \frac{1}{k} \frac{1}{G_{dp}} \begin{bmatrix} G_{dz} & G_{dc} \\ -G_{dc} & G_{dz} \end{bmatrix} -\begin{bmatrix} F_u \\ F_v \end{bmatrix} \end{equation} With: \begin{align} @@ -391,6 +391,9 @@ They are compared in Figure [[fig:plant_compare_rotating_speed]]. #+end_src * Problem with pure Integral Force Feedback +:PROPERTIES: +:header-args:matlab+: :tangle matlab/s2_iff_pure_int.m +:END: <> ** Introduction :ignore: @@ -406,7 +409,7 @@ They are compared in Figure [[fig:plant_compare_rotating_speed]]. <> #+end_src -#+begin_src matlab +#+begin_src matlab :tangle no addpath('./matlab/'); addpath('./src/'); #+end_src @@ -714,6 +717,9 @@ It is shown that for non-null rotating speed, one pole is bound to the right-hal #+end_src * Integral Force Feedback with an High Pass Filter +:PROPERTIES: +:header-args:matlab+: :tangle matlab/s3_iff_hpf.m +:END: <> ** Introduction :ignore: @@ -728,7 +734,7 @@ It is shown that for non-null rotating speed, one pole is bound to the right-hal <> #+end_src -#+begin_src matlab +#+begin_src matlab :tangle no addpath('./matlab/'); addpath('./src/'); #+end_src @@ -983,7 +989,7 @@ In order to visualize the effect of $\omega_i$ on the attainable damping, the Ro for wi_i = 1:length(wis) set(gca,'ColorOrderIndex',wi_i); wi = wis(wi_i); - L(wi_i) = plot(nan, nan, '.', 'DisplayName', sprintf('$\\Omega_i = %.2f \\omega_0$', wi./w0)); + L(wi_i) = plot(nan, nan, '.', 'DisplayName', sprintf('$\\omega_i = %.2f \\omega_0$', wi./w0)); for g = gains clpoles = pole(feedback(Giff, (g/(wi+s))*eye(2))); set(gca,'ColorOrderIndex',wi_i); @@ -1030,8 +1036,8 @@ In order to visualize the effect of $\omega_i$ on the attainable damping, the Ro #+RESULTS: [[file:figs/root_locus_wi_modified_iff.png]] -#+begin_src matlab :exports none - gains = logspace(-2, 4, 100); +#+begin_src matlab :exports none :tangle no + gains = logspace(-2, 4, 500); poles_iff_hpf = rootLocusPolesSorted(Giff, 1/(s + wi)*eye(2), gains, 'd_max', 1e-4); @@ -1043,7 +1049,7 @@ In order to visualize the effect of $\omega_i$ on the attainable damping, the Ro wi = wis(wi_i); set(gca,'ColorOrderIndex',wi_i); - L(wi_i) = plot(nan, nan, '.', 'DisplayName', sprintf('$\\Omega_i = %.2f \\omega_0$', wi./w0)); + L(wi_i) = plot(nan, nan, '.', 'DisplayName', sprintf('$\\omega_i = %.2f \\omega_0$', wi./w0)); poles = rootLocusPolesSorted(Giff, 1/(s + wi)*eye(2), gains, 'd_max', 1e-4); for p_i = 1:size(poles, 2) @@ -1159,10 +1165,13 @@ To find the optimum, the gain that maximize the simultaneous damping of the mode [[file:figs/mod_iff_damping_wi.png]] #+begin_src matlab :tangle no :exports none :results none - exportFig('figs-inkscape/root_locus_wi_modified_iff.pdf', 'width', 'wide', 'height', 'normal', 'png', false, 'pdf', false, 'svg', true); + exportFig('figs-inkscape/mod_iff_damping_wi.pdf', 'width', 'wide', 'height', 'normal', 'png', false, 'pdf', false, 'svg', true); #+end_src * IFF with a stiffness in parallel with the force sensor +:PROPERTIES: +:header-args:matlab+: :tangle matlab/s4_iff_kp.m +:END: <> ** Introduction :ignore: @@ -1175,7 +1184,7 @@ To find the optimum, the gain that maximize the simultaneous damping of the mode <> #+end_src -#+begin_src matlab +#+begin_src matlab :tangle no addpath('./matlab/'); addpath('./src/'); #+end_src @@ -1873,6 +1882,10 @@ Let's take $k_p = 5 m \Omega^2$ and find the optimal IFF control gain $g$ such t #+end_src * Direct Velocity Feedback +:PROPERTIES: +:header-args:matlab+: :tangle matlab/s5_dvf.m +:header-args:matlab+: :comments org :mkdirp yes +:END: <> ** Introduction :ignore: @@ -1885,7 +1898,7 @@ Let's take $k_p = 5 m \Omega^2$ and find the optimal IFF control gain $g$ such t <> #+end_src -#+begin_src matlab +#+begin_src matlab :tangle no addpath('./matlab/'); addpath('./src/'); #+end_src @@ -2097,7 +2110,7 @@ It is shown that for rotating speed $\Omega < \omega_0$, the closed loop system #+RESULTS: [[file:figs/root_locus_dvf.png]] -#+begin_src matlab :exports none +#+begin_src matlab :exports none :tangle no gains = logspace(-2, 1, 1000); figure; @@ -2137,6 +2150,9 @@ It is shown that for rotating speed $\Omega < \omega_0$, the closed loop system #+end_src * Comparison +:PROPERTIES: +:header-args:matlab+: :tangle matlab/s6_act_damp_comparison.m +:END: <> ** Introduction :ignore: @@ -2150,7 +2166,7 @@ It is shown that for rotating speed $\Omega < \omega_0$, the closed loop system <> #+end_src -#+begin_src matlab +#+begin_src matlab :tangle no addpath('./matlab/'); addpath('./src/'); #+end_src @@ -2658,7 +2674,7 @@ The obtained damping ratio and control are shown below. figure; hold on; plot(freqs, abs(squeeze(freqresp(Ciff(1,1), freqs))), ... - 'DisplayName', 'IFF + LPF') + 'DisplayName', 'IFF + HPF') plot(freqs, abs(squeeze(freqresp(Ciff_kp(1,1), freqs))), ... 'DisplayName', 'IFF + $k_p$') plot(freqs, abs(squeeze(freqresp(Cdvf(1,1), freqs))), ... diff --git a/matlab/matlab/s1_system_description.m b/matlab/matlab/s1_system_description.m new file mode 100644 index 0000000..44fc678 --- /dev/null +++ b/matlab/matlab/s1_system_description.m @@ -0,0 +1,219 @@ +%% Clear Workspace and Close figures +clear; close all; clc; + +%% Intialize Laplace variable +s = zpk('s'); + +% Numerical Values +% Let's define initial values for the model. + +k = 1; % Actuator Stiffness [N/m] +c = 0.05; % Actuator Damping [N/(m/s)] +m = 1; % Payload mass [kg] + +xi = c/(2*sqrt(k*m)); +w0 = sqrt(k/m); % [rad/s] + +% Campbell Diagram +% The Campbell Diagram displays the evolution of the real and imaginary parts of the system as a function of the rotating speed. + +% It is shown in Figure [[fig:campbell_diagram]], and one can see that the system becomes unstable for $\Omega > \omega_0$ (the real part of one of the poles becomes positive). + + +Ws = linspace(0, 2, 51); % Vector of considered rotation speed [rad/s] + +p_ws = zeros(4, length(Ws)); + +for W_i = 1:length(Ws) + W = Ws(W_i); + + pole_G = pole(1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2)); + [~, i_sort] = sort(imag(pole_G)); + p_ws(:, W_i) = pole_G(i_sort); +end + +clear pole_G; + +figure; + +ax1 = subplot(1,2,1); +hold on; +for p_i = 1:size(p_ws, 1) + plot(Ws, real(p_ws(p_i, :)), 'k-') +end +plot(Ws, zeros(size(Ws)), 'k--') +hold off; +xlabel('Rotation Frequency [rad/s]'); ylabel('Real Part'); + +ax2 = subplot(1,2,2); +hold on; +for p_i = 1:size(p_ws, 1) + plot(Ws, imag(p_ws(p_i, :)), 'k-') + plot(Ws, -imag(p_ws(p_i, :)), 'k-') +end +hold off; +xlabel('Rotation Frequency [rad/s]'); ylabel('Imaginary Part'); + +% Simscape Model +% Define the rotating speed for the Simscape Model. + +W = 0.1; % Rotation Speed [rad/s] + +Kiff = tf(zeros(2)); +Kdvf = tf(zeros(2)); + +kp = 0; % Parallel Stiffness [N/m] +cp = 0; % Parallel Damping [N/(m/s)] + +open('rotating_frame.slx'); + + + +% The transfer function from $[F_u, F_v]$ to $[d_u, d_v]$ is identified from the Simscape model. + + +%% Name of the Simulink File +mdl = 'rotating_frame'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/K'], 1, 'openinput'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/G'], 3, 'openoutput'); io_i = io_i + 1; + +G = linearize(mdl, io, 0); + +%% Input/Output definition +G.InputName = {'Fu', 'Fv'}; +G.OutputName = {'du', 'dv'}; + + + +% The same transfer function from $[F_u, F_v]$ to $[d_u, d_v]$ is written down from the analytical model. + +Gth = (1/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... + [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2), 2*W*s/(w0^2) ; ... + -2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)]; + + + +% Both transfer functions are compared in Figure [[fig:plant_simscape_analytical]] and are found to perfectly match. + + +freqs = logspace(-1, 1, 1000); + +figure; +ax1 = subplot(2, 2, 1); +hold on; +plot(freqs, abs(squeeze(freqresp(G(1,1), freqs))), '-') +plot(freqs, abs(squeeze(freqresp(Gth(1,1), freqs))), '--') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [m/N]'); +title('$d_u/F_u$, $d_v/F_v$'); + +ax3 = subplot(2, 2, 3); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(G(1,1), freqs))), '-') +plot(freqs, 180/pi*angle(squeeze(freqresp(Gth(1,1), freqs))), '--') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; + +ax2 = subplot(2, 2, 2); +hold on; +plot(freqs, abs(squeeze(freqresp(G(1,2), freqs))), '-') +plot(freqs, abs(squeeze(freqresp(Gth(1,2), freqs))), '--') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [m/N]'); +title('$d_u/F_v$, $d_v/F_u$'); + +ax4 = subplot(2, 2, 4); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(G(1,2), freqs))), '-', ... + 'DisplayName', 'Simscape') +plot(freqs, 180/pi*angle(squeeze(freqresp(Gth(1,2), freqs))), '--', ... + 'DisplayName', 'Analytical') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; +legend('location', 'southwest'); + +linkaxes([ax1,ax2,ax3,ax4],'x'); +xlim([freqs(1), freqs(end)]); +linkaxes([ax1,ax2],'y'); + +% Effect of the rotation speed +% The transfer functions from $[F_u, F_v]$ to $[d_u, d_v]$ are identified for the following rotating speeds. + +Ws = [0, 0.2, 0.7, 1.1]*w0; % Rotating Speeds [rad/s] + +Gs = {zeros(2, 2, length(Ws))}; + +for W_i = 1:length(Ws) + W = Ws(W_i); + + Gs(:, :, W_i) = {(1/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... + [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2), 2*W*s/(w0^2) ; ... + -2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)]}; +end + + + +% They are compared in Figure [[fig:plant_compare_rotating_speed]]. + + +freqs = logspace(-2, 1, 1000); + +figure; +ax1 = subplot(2, 2, 1); +hold on; +for W_i = 1:length(Ws) + plot(freqs, abs(squeeze(freqresp(Gs{W_i}(1,1), freqs))), ... + 'DisplayName', sprintf('$\\Omega = %.1f \\omega_0 $', Ws(W_i)/w0)) +end +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [m/N]'); +legend('location', 'southwest'); +title('$d_u/F_u$, $d_v/F_v$'); + +ax3 = subplot(2, 2, 3); +hold on; +for W_i = 1:length(Ws) + plot(freqs, 180/pi*angle(squeeze(freqresp(Gs{W_i}(1,1), freqs)))) +end +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; + +ax2 = subplot(2, 2, 2); +hold on; +for W_i = 1:length(Ws) + plot(freqs, abs(squeeze(freqresp(Gs{W_i}(2,1), freqs)))) +end +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [m/N]'); +title('$d_u/F_v$, $d_v/F_u$'); + +ax4 = subplot(2, 2, 4); +hold on; +for W_i = 1:length(Ws) + plot(freqs, 180/pi*angle(squeeze(freqresp(Gs{W_i}(1,1), freqs)))) +end +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; + +linkaxes([ax1,ax2,ax3,ax4],'x'); +xlim([freqs(1), freqs(end)]); +linkaxes([ax1,ax2],'y'); diff --git a/matlab/matlab/s2_iff_pure_int.m b/matlab/matlab/s2_iff_pure_int.m new file mode 100644 index 0000000..5498130 --- /dev/null +++ b/matlab/matlab/s2_iff_pure_int.m @@ -0,0 +1,193 @@ +%% Clear Workspace and Close figures +clear; close all; clc; + +%% Intialize Laplace variable +s = zpk('s'); + +% Plant Parameters +% Let's define initial values for the model. + +k = 1; % Actuator Stiffness [N/m] +c = 0.05; % Actuator Damping [N/(m/s)] +m = 1; % Payload mass [kg] + +xi = c/(2*sqrt(k*m)); +w0 = sqrt(k/m); % [rad/s] + +kp = 0; % [N/m] +cp = 0; % [N/(m/s)] + +% Simscape Model +% The rotation speed is set to $\Omega = 0.1 \omega_0$. + +W = 0.1*w0; % [rad/s] + +Kiff = tf(zeros(2)); +Kdvf = tf(zeros(2)); + +open('rotating_frame.slx'); + + + +% And the transfer function from $[F_u, F_v]$ to $[f_u, f_v]$ is identified using the Simscape model. + +%% Name of the Simulink File +mdl = 'rotating_frame'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/K'], 1, 'openinput'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/G'], 2, 'openoutput'); io_i = io_i + 1; + +Giff = linearize(mdl, io, 0); + +%% Input/Output definition +Giff.InputName = {'Fu', 'Fv'}; +Giff.OutputName = {'fu', 'fv'}; + +% Comparison of the Analytical Model and the Simscape Model +% The same transfer function from $[F_u, F_v]$ to $[f_u, f_v]$ is written down from the analytical model. + +Giff_th = 1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... + [(s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)) + (2*W*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*W*s/(w0^2) ; ... + (2*xi*s/w0 + 1)*2*W*s/(w0^2), (s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))+ (2*W*s/(w0^2))^2]; + + + +% The two are compared in Figure [[fig:plant_iff_comp_simscape_analytical]] and found to perfectly match. + + +freqs = logspace(-1, 1, 1000); + +figure; +ax1 = subplot(2, 2, 1); +hold on; +plot(freqs, abs(squeeze(freqresp(Giff(1,1), freqs))), '-') +plot(freqs, abs(squeeze(freqresp(Giff_th(1,1), freqs))), '--') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [N/N]'); +title('$f_u/F_u$, $f_v/F_v$'); + +ax3 = subplot(2, 2, 3); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff(1,1), freqs))), '-') +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff_th(1,1), freqs))), '--') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; + +ax2 = subplot(2, 2, 2); +hold on; +plot(freqs, abs(squeeze(freqresp(Giff(1,2), freqs))), '-') +plot(freqs, abs(squeeze(freqresp(Giff_th(1,2), freqs))), '--') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [N/N]'); +title('$f_u/F_v$, $f_v/F_u$'); + +ax4 = subplot(2, 2, 4); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff(1,2), freqs))), '-', ... + 'DisplayName', 'Simscape') +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff_th(1,2), freqs))), '--', ... + 'DisplayName', 'Analytical') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; +legend('location', 'northeast'); + +linkaxes([ax1,ax2,ax3,ax4],'x'); +xlim([freqs(1), freqs(end)]); +linkaxes([ax1,ax2],'y'); + +% Effect of the rotation speed +% The transfer functions from $[F_u, F_v]$ to $[f_u, f_v]$ are identified for the following rotating speeds. + +Ws = [0, 0.2, 0.7, 1.1]*w0; % Rotating Speeds [rad/s] + +Gsiff = {zeros(2, 2, length(Ws))}; + +for W_i = 1:length(Ws) + W = Ws(W_i); + + Gsiff(:, :, W_i) = {1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... + [(s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)) + (2*W*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*W*s/(w0^2) ; ... + (2*xi*s/w0 + 1)*2*W*s/(w0^2), (s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))+ (2*W*s/(w0^2))^2]}; +end + + + +% The obtained transfer functions are shown in Figure [[fig:plant_iff_compare_rotating_speed]]. + +freqs = logspace(-2, 1, 1000); + +figure; + +ax1 = subplot(2, 1, 1); +hold on; +for W_i = 1:length(Ws) + plot(freqs, abs(squeeze(freqresp(Gsiff{W_i}(1,1), freqs))), ... + 'DisplayName', sprintf('$\\Omega = %.1f \\omega_0 $', Ws(W_i)/w0)) +end +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [N/N]'); +legend('location', 'southeast'); + +ax2 = subplot(2, 1, 2); +hold on; +for W_i = 1:length(Ws) + plot(freqs, 180/pi*angle(squeeze(freqresp(Gsiff{W_i}(1,1), freqs)))) +end +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; + +linkaxes([ax1,ax2],'x'); +xlim([freqs(1), freqs(end)]); + +% Decentralized Integral Force Feedback +% The decentralized IFF controller consists of pure integrators: +% \begin{equation} +% \bm{K}_{\text{IFF}}(s) = \frac{g}{s} \begin{bmatrix} +% 1 & 0 \\ +% 0 & 1 +% \end{bmatrix} +% \end{equation} + +% The Root Locus (evolution of the poles of the closed loop system in the complex plane as a function of $g$) is shown in Figure [[fig:root_locus_pure_iff]]. +% It is shown that for non-null rotating speed, one pole is bound to the right-half plane, and thus the closed loop system is unstable. + + +figure; + +gains = logspace(-2, 4, 100); + +hold on; +for W_i = 1:length(Ws) + set(gca,'ColorOrderIndex',W_i); + plot(real(pole(Gsiff{W_i})), imag(pole(Gsiff{W_i})), 'x', ... + 'DisplayName', sprintf('$\\Omega = %.1f \\omega_0 $', Ws(W_i)/w0)); + set(gca,'ColorOrderIndex',W_i); + plot(real(tzero(Gsiff{W_i})), imag(tzero(Gsiff{W_i})), 'o', ... + 'HandleVisibility', 'off'); + for g = gains + set(gca,'ColorOrderIndex',W_i); + cl_poles = pole(feedback(Gsiff{W_i}, g/s*eye(2))); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); + end +end +hold off; +axis square; +xlim([-2, 0.5]); ylim([0, 2.5]); + +xlabel('Real Part'); ylabel('Imaginary Part'); +legend('location', 'northwest'); diff --git a/matlab/matlab/s3_iff_hpf.m b/matlab/matlab/s3_iff_hpf.m new file mode 100644 index 0000000..ddb77ce --- /dev/null +++ b/matlab/matlab/s3_iff_hpf.m @@ -0,0 +1,251 @@ +%% Clear Workspace and Close figures +clear; close all; clc; + +%% Intialize Laplace variable +s = zpk('s'); + +% Plant Parameters +% Let's define initial values for the model. + +k = 1; % Actuator Stiffness [N/m] +c = 0.05; % Actuator Damping [N/(m/s)] +m = 1; % Payload mass [kg] + +xi = c/(2*sqrt(k*m)); +w0 = sqrt(k/m); % [rad/s] + +kp = 0; % [N/m] +cp = 0; % [N/(m/s)] + +% Modified Integral Force Feedback Controller +% Let's modify the initial Integral Force Feedback Controller ; instead of using pure integrators, pseudo integrators (i.e. low pass filters) are used: +% \begin{equation} +% K_{\text{IFF}}(s) = g\frac{1}{\omega_i + s} \begin{bmatrix} +% 1 & 0 \\ +% 0 & 1 +% \end{bmatrix} +% \end{equation} +% where $\omega_i$ characterize down to which frequency the signal is integrated. + +% Let's arbitrary choose the following control parameters: + +g = 2; +wi = 0.1*w0; + +Kiff = (g/(wi+s))*eye(2); + + + +% And the following rotating speed. + +W = 0.1*w0; + +Giff = 1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... + [(s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)) + (2*W*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*W*s/(w0^2) ; ... + (2*xi*s/w0 + 1)*2*W*s/(w0^2), (s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))+ (2*W*s/(w0^2))^2]; + + + +% The obtained Loop Gain is shown in Figure [[fig:loop_gain_modified_iff]]. + +freqs = logspace(-2, 1, 1000); + +figure; + +ax1 = subplot(2, 1, 1); +hold on; +plot(freqs, abs(squeeze(freqresp(Giff(1,1)*(g/s), freqs)))) +plot(freqs, abs(squeeze(freqresp(Giff(1,1)*Kiff(1,1), freqs)))) +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Loop Gain'); + +ax2 = subplot(2, 1, 2); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff(1,1)*(g/s), freqs))), ... + 'DisplayName', 'IFF') +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff(1,1)*Kiff(1,1), freqs))), ... + 'DisplayName', 'IFF + HPF') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +legend('location', 'southwest'); +hold off; + +linkaxes([ax1,ax2],'x'); +xlim([freqs(1), freqs(end)]); + +% Root Locus +% As shown in the Root Locus plot (Figure [[fig:root_locus_modified_iff]]), for some value of the gain, the system remains stable. + + +figure; + +gains = logspace(-2, 4, 100); + +ax1 = subplot(1, 2, 1); +hold on; +% Pure Integrator +set(gca,'ColorOrderIndex',1); +plot(real(pole(Giff)), imag(pole(Giff)), 'x', 'DisplayName', 'IFF'); +set(gca,'ColorOrderIndex',1); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'o', 'HandleVisibility', 'off'); +for g = gains + clpoles = pole(feedback(Giff, (g/s)*eye(2))); + set(gca,'ColorOrderIndex',1); + plot(real(clpoles), imag(clpoles), '.', 'HandleVisibility', 'off'); +end +% Modified IFF +set(gca,'ColorOrderIndex',2); +plot(real(pole(Giff)), imag(pole(Giff)), 'x', 'DisplayName', 'IFF + HPF'); +set(gca,'ColorOrderIndex',2); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'o', 'HandleVisibility', 'off'); +for g = gains + clpoles = pole(feedback(Giff, (g/(wi+s))*eye(2))); + set(gca,'ColorOrderIndex',2); + plot(real(clpoles), imag(clpoles), '.', 'HandleVisibility', 'off'); +end +hold off; +axis square; +xlim([-2, 0.5]); ylim([-1.25, 1.25]); +legend('location', 'northwest'); +xlabel('Real Part'); ylabel('Imaginary Part'); + +ax2 = subplot(1, 2, 2); +hold on; +% Pure Integrator +set(gca,'ColorOrderIndex',1); +plot(real(pole(Giff)), imag(pole(Giff)), 'x'); +set(gca,'ColorOrderIndex',1); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'o'); +for g = gains + clpoles = pole(feedback(Giff, (g/s)*eye(2))); + set(gca,'ColorOrderIndex',1); + plot(real(clpoles), imag(clpoles), '.'); +end +% Modified IFF +set(gca,'ColorOrderIndex',2); +plot(real(pole(Giff)), imag(pole(Giff)), 'x'); +set(gca,'ColorOrderIndex',2); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'o'); +for g = gains + clpoles = pole(feedback(Giff, (g/(wi+s))*eye(2))); + set(gca,'ColorOrderIndex',2); + plot(real(clpoles), imag(clpoles), '.'); +end +hold off; +axis square; +xlim([-0.2, 0.1]); ylim([-0.15, 0.15]); +xlabel('Real Part'); ylabel('Imaginary Part'); + +% What is the optimal $\omega_i$ and $g$? +% In order to visualize the effect of $\omega_i$ on the attainable damping, the Root Locus is displayed in Figure [[fig:root_locus_wi_modified_iff]] for the following $\omega_i$: + +wis = [0.01, 0.1, 0.5, 1]*w0; % [rad/s] + +figure; + +gains = logspace(-2, 4, 100); + +ax1 = subplot(1, 2, 1); +hold on; +for wi_i = 1:length(wis) + set(gca,'ColorOrderIndex',wi_i); + wi = wis(wi_i); + L(wi_i) = plot(nan, nan, '.', 'DisplayName', sprintf('$\\omega_i = %.2f \\omega_0$', wi./w0)); + for g = gains + clpoles = pole(feedback(Giff, (g/(wi+s))*eye(2))); + set(gca,'ColorOrderIndex',wi_i); + plot(real(clpoles), imag(clpoles), '.'); + end +end +plot(real(pole(Giff)), imag(pole(Giff)), 'kx'); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'ko'); +hold off; +axis square; +xlim([-2.3, 0.1]); ylim([-1.2, 1.2]); +xticks([-2:1:2]); yticks([-2:1:2]); +legend(L, 'location', 'northwest'); +xlabel('Real Part'); ylabel('Imaginary Part'); + +clear L + +ax2 = subplot(1, 2, 2); +hold on; +for wi_i = 1:length(wis) + set(gca,'ColorOrderIndex', wi_i); + wi = wis(wi_i); + for g = gains + clpoles = pole(feedback(Giff, (g/(wi+s))*eye(2))); + set(gca,'ColorOrderIndex', wi_i); + plot(real(clpoles), imag(clpoles), '.'); + end +end +plot(real(pole(Giff)), imag(pole(Giff)), 'kx'); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'ko'); +hold off; +axis square; +xlim([-0.2, 0.1]); ylim([-0.15, 0.15]); +xticks([-0.2:0.1:0.1]); yticks([-0.2:0.1:0.2]); +xlabel('Real Part'); ylabel('Imaginary Part'); + + + +% For the controller +% \begin{equation} +% K_{\text{IFF}}(s) = g\frac{1}{\omega_i + s} \begin{bmatrix} +% 1 & 0 \\ +% 0 & 1 +% \end{bmatrix} +% \end{equation} +% The gain at which the system becomes unstable is +% \begin{equation} +% g_\text{max} = \omega_i \left( \frac{{\omega_0}^2}{\Omega^2} - 1 \right) \label{eq:iff_gmax} +% \end{equation} + +% While it seems that small $\omega_i$ do allow more damping to be added to the system (Figure [[fig:root_locus_wi_modified_iff]]), the control gains may be limited to small values due to eqref:eq:iff_gmax thus reducing the attainable damping. + + +% There must be an optimum for $\omega_i$. +% To find the optimum, the gain that maximize the simultaneous damping of the mode is identified for a wide range of $\omega_i$ (Figure [[fig:mod_iff_damping_wi]]). + +wis = logspace(-2, 1, 31)*w0; % [rad/s] + +opt_zeta = zeros(1, length(wis)); % Optimal simultaneous damping +opt_gain = zeros(1, length(wis)); % Corresponding optimal gain + +for wi_i = 1:length(wis) + wi = wis(wi_i); + gains = linspace(0, (w0^2/W^2 - 1)*wi, 100); + + for g = gains + Kiff = (g/(wi+s))*eye(2); + + [w, zeta] = damp(minreal(feedback(Giff, Kiff))); + + if min(zeta) > opt_zeta(wi_i) && all(zeta > 0) + opt_zeta(wi_i) = min(zeta); + opt_gain(wi_i) = g; + end + end +end + +figure; +yyaxis left +plot(wis, opt_zeta, '-o', 'DisplayName', '$\xi_{cl}$'); +set(gca, 'YScale', 'lin'); +ylim([0,1]); +ylabel('Attainable Damping Ratio $\xi$'); + +yyaxis right +hold on; +plot(wis, opt_gain, '-x', 'DisplayName', '$g_{opt}$'); +plot(wis, wis*((w0/W)^2 - 1), '--', 'DisplayName', '$g_{max}$'); +set(gca, 'YScale', 'lin'); +ylim([0,10]); +ylabel('Controller gain $g$'); + +xlabel('$\omega_i/\omega_0$'); +set(gca, 'XScale', 'log'); +legend('location', 'northeast'); diff --git a/matlab/matlab/s4_iff_kp.m b/matlab/matlab/s4_iff_kp.m new file mode 100644 index 0000000..0f48a51 --- /dev/null +++ b/matlab/matlab/s4_iff_kp.m @@ -0,0 +1,389 @@ +%% Clear Workspace and Close figures +clear; close all; clc; + +%% Intialize Laplace variable +s = zpk('s'); + +% Plant Parameters +% Let's define initial values for the model. + +k = 1; % Actuator Stiffness [N/m] +c = 0.05; % Actuator Damping [N/(m/s)] +m = 1; % Payload mass [kg] + +xi = c/(2*sqrt(k*m)); +w0 = sqrt(k/m); % [rad/s] + +kp = 0; % [N/m] +cp = 0; % [N/(m/s)] + +% Comparison of the Analytical Model and the Simscape Model +% The same transfer function from $[F_u, F_v]$ to $[f_u, f_v]$ is written down from the analytical model. + +W = 0.1*w0; % [rad/s] + +kp = 1.5*m*W^2; +cp = 0; + +Kiff = tf(zeros(2)); +Kdvf = tf(zeros(2)); + +open('rotating_frame.slx'); + +%% Name of the Simulink File +mdl = 'rotating_frame'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/K'], 1, 'openinput'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/G'], 2, 'openoutput'); io_i = io_i + 1; + +Giff = linearize(mdl, io, 0); + +%% Input/Output definition +Giff.InputName = {'Fu', 'Fv'}; +Giff.OutputName = {'fu', 'fv'}; + +w0p = sqrt((k + kp)/m); +xip = c/(2*sqrt((k+kp)*m)); + +Giff_th = 1/( (s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2)^2 + (2*(s/w0p)*(W/w0p))^2 ) * [ ... + (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2, -(2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)); + (2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)), (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2 ]; +Giff_th.InputName = {'Fu', 'Fv'}; +Giff_th.OutputName = {'fu', 'fv'}; + +freqs = logspace(-1, 1, 1000); + +figure; +ax1 = subplot(2, 2, 1); +hold on; +plot(freqs, abs(squeeze(freqresp(Giff(1,1), freqs))), '-') +plot(freqs, abs(squeeze(freqresp(Giff_th(1,1), freqs))), '--') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [N/N]'); +title('$f_u/F_u$, $f_v/F_v$'); + +ax3 = subplot(2, 2, 3); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff(1,1), freqs))), '-') +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff_th(1,1), freqs))), '--') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; + +ax2 = subplot(2, 2, 2); +hold on; +plot(freqs, abs(squeeze(freqresp(Giff(1,2), freqs))), '-') +plot(freqs, abs(squeeze(freqresp(Giff_th(1,2), freqs))), '--') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [N/N]'); +title('$f_u/F_v$, $f_v/F_u$'); + +ax4 = subplot(2, 2, 4); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff(1,2), freqs))), '-', ... + 'DisplayName', 'Simscape') +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff_th(1,2), freqs))), '--', ... + 'DisplayName', 'Analytical') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; +legend('location', 'northeast'); + +linkaxes([ax1,ax2,ax3,ax4],'x'); +xlim([freqs(1), freqs(end)]); +linkaxes([ax1,ax2],'y'); + +% Effect of the parallel stiffness on the IFF plant +% The rotation speed is set to $\Omega = 0.1 \omega_0$. + +W = 0.1*w0; % [rad/s] + + + +% And the IFF plant (transfer function from $[F_u, F_v]$ to $[f_u, f_v]$) is identified in three different cases: +% - without parallel stiffness +% - with a small parallel stiffness $k_p < m \Omega^2$ +% - with a large parallel stiffness $k_p > m \Omega^2$ + +% The results are shown in Figure [[fig:plant_iff_kp]]. + +% One can see that for $k_p > m \Omega^2$, the systems shows alternating complex conjugate poles and zeros. + + +kp = 0; +cp = 0; + +w0p = sqrt((k + kp)/m); +xip = c/(2*sqrt((k+kp)*m)); + +Giff = 1/( (s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2)^2 + (2*(s/w0p)*(W/w0p))^2 ) * [ ... + (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2, -(2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)); + (2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)), (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2]; + +kp = 0.5*m*W^2; +cp = 0; + +w0p = sqrt((k + kp)/m); +xip = c/(2*sqrt((k+kp)*m)); + +Giff_s = 1/( (s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2)^2 + (2*(s/w0p)*(W/w0p))^2 ) * [ ... + (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2, -(2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)); + (2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)), (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2]; + +kp = 1.5*m*W^2; +cp = 0; + +w0p = sqrt((k + kp)/m); +xip = c/(2*sqrt((k+kp)*m)); + +Giff_l = 1/( (s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2)^2 + (2*(s/w0p)*(W/w0p))^2 ) * [ ... + (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2, -(2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)); + (2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)), (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2]; + +freqs = logspace(-2, 1, 1000); + +figure; + +ax1 = subplot(2, 1, 1); +hold on; +plot(freqs, abs(squeeze(freqresp(Giff(1,1), freqs))), 'k-') +plot(freqs, abs(squeeze(freqresp(Giff_s(1,1), freqs))), 'k--') +plot(freqs, abs(squeeze(freqresp(Giff_l(1,1), freqs))), 'k:') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [N/N]'); + +ax2 = subplot(2, 1, 2); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff(1,1), freqs))), 'k-', ... + 'DisplayName', '$k_p = 0$') +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff_s(1,1), freqs))), 'k--', ... + 'DisplayName', '$k_p < m\Omega^2$') +plot(freqs, 180/pi*angle(squeeze(freqresp(Giff_l(1,1), freqs))), 'k:', ... + 'DisplayName', '$k_p > m\Omega^2$') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; +legend('location', 'southwest'); + +linkaxes([ax1,ax2],'x'); +xlim([freqs(1), freqs(end)]); + +% IFF when adding a spring in parallel +% In Figure [[fig:root_locus_iff_kp]] is displayed the Root Locus in the three considered cases with +% \begin{equation} +% K_{\text{IFF}} = \frac{g}{s} \begin{bmatrix} +% 1 & 0 \\ +% 0 & 1 +% \end{bmatrix} +% \end{equation} + +% One can see that for $k_p > m \Omega^2$, the root locus stays in the left half of the complex plane and thus the control system is unconditionally stable. + +% Thus, decentralized IFF controller with pure integrators can be used if: +% \begin{equation} +% k_{p} > m \Omega^2 +% \end{equation} + + +figure; + +gains = logspace(-2, 2, 100); + +subplot(1,2,1); +hold on; +set(gca,'ColorOrderIndex',1); +plot(real(pole(Giff)), imag(pole(Giff)), 'x', ... + 'DisplayName', '$k_p = 0$'); +set(gca,'ColorOrderIndex',1); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'o', ... + 'HandleVisibility', 'off'); +for g = gains + cl_poles = pole(feedback(Giff, (g/s)*eye(2))); + set(gca,'ColorOrderIndex',1); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); +end + +set(gca,'ColorOrderIndex',2); +plot(real(pole(Giff_s)), imag(pole(Giff_s)), 'x', ... + 'DisplayName', '$k_p < m\Omega^2$'); +set(gca,'ColorOrderIndex',2); +plot(real(tzero(Giff_s)), imag(tzero(Giff_s)), 'o', ... + 'HandleVisibility', 'off'); +for g = gains + cl_poles = pole(feedback(Giff_s, (g/s)*eye(2))); + set(gca,'ColorOrderIndex',2); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); +end + +set(gca,'ColorOrderIndex',3); +plot(real(pole(Giff_l)), imag(pole(Giff_l)), 'x', ... + 'DisplayName', '$k_p > m\Omega^2$'); +set(gca,'ColorOrderIndex',3); +plot(real(tzero(Giff_l)), imag(tzero(Giff_l)), 'o', ... + 'HandleVisibility', 'off'); +for g = gains + set(gca,'ColorOrderIndex',3); + cl_poles = pole(feedback(Giff_l, (g/s)*eye(2))); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); +end +hold off; +axis square; +xlim([-1, 0.2]); ylim([0, 1.2]); + +xlabel('Real Part'); ylabel('Imaginary Part'); +legend('location', 'northwest'); + +subplot(1,2,2); +hold on; +set(gca,'ColorOrderIndex',1); +plot(real(pole(Giff)), imag(pole(Giff)), 'x'); +set(gca,'ColorOrderIndex',1); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'o'); +for g = gains + cl_poles = pole(feedback(Giff, (g/s)*eye(2))); + set(gca,'ColorOrderIndex',1); + plot(real(cl_poles), imag(cl_poles), '.'); +end + +set(gca,'ColorOrderIndex',2); +plot(real(pole(Giff_s)), imag(pole(Giff_s)), 'x'); +set(gca,'ColorOrderIndex',2); +plot(real(tzero(Giff_s)), imag(tzero(Giff_s)), 'o'); +for g = gains + cl_poles = pole(feedback(Giff_s, (g/s)*eye(2))); + set(gca,'ColorOrderIndex',2); + plot(real(cl_poles), imag(cl_poles), '.'); +end + +set(gca,'ColorOrderIndex',3); +plot(real(pole(Giff_l)), imag(pole(Giff_l)), 'x'); +set(gca,'ColorOrderIndex',3); +plot(real(tzero(Giff_l)), imag(tzero(Giff_l)), 'o'); +for g = gains + set(gca,'ColorOrderIndex',3); + cl_poles = pole(feedback(Giff_l, (g/s)*eye(2))); + plot(real(cl_poles), imag(cl_poles), '.'); +end +hold off; +axis square; +xlim([-0.04, 0.06]); ylim([0, 0.1]); + +xlabel('Real Part'); ylabel('Imaginary Part'); + +% Effect of $k_p$ on the attainable damping +% However, having large values of $k_p$ may: +% - decrease the actuator force authority +% - decrease the attainable damping + +% To study the second point, Root Locus plots for the following values of $k_p$ are shown in Figure [[fig:root_locus_iff_kps]]. + +kps = [2, 20, 40]*m*W^2; + + + +% It is shown that large values of $k_p$ decreases the attainable damping. + + +figure; + +gains = logspace(-2, 4, 500); + +hold on; +for kp_i = 1:length(kps) + kp = kps(kp_i); + + w0p = sqrt((k + kp)/m); + xip = c/(2*sqrt((k+kp)*m)); + + Giff = 1/( (s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2)^2 + (2*(s/w0p)*(W/w0p))^2 ) * [ ... + (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2, -(2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)); + (2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)), (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2 ]; + + set(gca,'ColorOrderIndex',kp_i); + plot(real(pole(Giff)), imag(pole(Giff)), 'x', ... + 'DisplayName', sprintf('$k_p = %.1f m \\Omega^2$', kp/(m*W^2))); + set(gca,'ColorOrderIndex',kp_i); + plot(real(tzero(Giff)), imag(tzero(Giff)), 'o', ... + 'HandleVisibility', 'off'); + for g = gains + Kiffa = (g/s)*eye(2); + cl_poles = pole(feedback(Giff, Kiffa)); + set(gca,'ColorOrderIndex',kp_i); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); + end +end +hold off; +axis square; +xlim([-1.2, 0.2]); ylim([0, 1.4]); + +xlabel('Real Part'); ylabel('Imaginary Part'); +legend('location', 'northwest'); + +% Optimal Gain +% Let's take $k_p = 5 m \Omega^2$ and find the optimal IFF control gain $g$ such that maximum damping are added to the poles of the closed loop system. + + +kp = 5*m*W^2; +cp = 0.01; + +w0p = sqrt((k + kp)/m); +xip = c/(2*sqrt((k+kp)*m)); + +Giff = 1/( (s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2)^2 + (2*(s/w0p)*(W/w0p))^2 ) * [ ... + (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2, -(2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)); + (2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)), (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2 ]; + +opt_zeta = 0; +opt_gain = 0; + +gains = logspace(-2, 4, 1000); + +for g = gains + Kiff = (g/s)*eye(2); + + [w, zeta] = damp(minreal(feedback(Giff, Kiff))); + + if min(zeta) > opt_zeta && all(zeta > 0) + opt_zeta = min(zeta); + opt_gain = min(g); + end +end + +figure; + +gains = logspace(-2, 4, 1000); + +hold on; +plot(real(pole(Giff)), imag(pole(Giff)), 'kx'); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'ko'); +for g = gains + clpoles = pole(minreal(feedback(Giff, (g/s)*eye(2)))); + plot(real(clpoles), imag(clpoles), 'k.'); +end +% Optimal Gain +clpoles = pole(minreal(feedback(Giff, (opt_gain/s)*eye(2)))); +set(gca,'ColorOrderIndex',1); +plot(real(clpoles), imag(clpoles), 'x'); +for clpole = clpoles' + set(gca,'ColorOrderIndex',1); + plot([0, real(clpole)], [0, imag(clpole)], '-', 'LineWidth', 1); +end +hold off; +axis square; +xlim([-1.2, 0.2]); ylim([0, 1.4]); +xlabel('Real Part'); ylabel('Imaginary Part'); diff --git a/matlab/matlab/s5_dvf.m b/matlab/matlab/s5_dvf.m new file mode 100644 index 0000000..0bf9d94 --- /dev/null +++ b/matlab/matlab/s5_dvf.m @@ -0,0 +1,159 @@ +%% Clear Workspace and Close figures +clear; close all; clc; + +%% Intialize Laplace variable +s = zpk('s'); + +% Plant Parameters +% Let's define initial values for the model. + +k = 1; % Actuator Stiffness [N/m] +c = 0.05; % Actuator Damping [N/(m/s)] +m = 1; % Payload mass [kg] + +xi = c/(2*sqrt(k*m)); +w0 = sqrt(k/m); % [rad/s] + +kp = 0; % [N/m] +cp = 0; % [N/(m/s)] + +% Comparison of the Analytical Model and the Simscape Model +% The rotating speed is set to $\Omega = 0.1 \omega_0$. + +W = 0.1*w0; + +Kiff = tf(zeros(2)); +Kdvf = tf(zeros(2)); + +open('rotating_frame.slx'); + + + +% And the transfer function from $[F_u, F_v]$ to $[v_u, v_v]$ is identified using the Simscape model. + +%% Name of the Simulink File +mdl = 'rotating_frame'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/K'], 1, 'openinput'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/G'], 1, 'openoutput'); io_i = io_i + 1; + +Gdvf = linearize(mdl, io, 0); + +%% Input/Output definition +Gdvf.InputName = {'Fu', 'Fv'}; +Gdvf.OutputName = {'Vu', 'Vv'}; + + + +% The same transfer function from $[F_u, F_v]$ to $[v_u, v_v]$ is written down from the analytical model. + +Gdvf_th = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... + [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2), 2*W*s/(w0^2) ; ... + -2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)]; + +Gdvf_th.InputName = {'Fu', 'Fv'}; +Gdvf_th.OutputName = {'vu', 'vv'}; + + + +% The two are compared in Figure [[fig:plant_iff_comp_simscape_analytical]] and found to perfectly match. + + +freqs = logspace(-1, 1, 1000); + +figure; +ax1 = subplot(2, 2, 1); +hold on; +plot(freqs, abs(squeeze(freqresp(Gdvf(1,1), freqs))), '-') +plot(freqs, abs(squeeze(freqresp(Gdvf_th(1,1), freqs))), '--') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [$\frac{m/s}{N}$]'); +title('$v_u/F_u$, $v_v/F_v$'); + +ax3 = subplot(2, 2, 3); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(Gdvf(1,1), freqs))), '-') +plot(freqs, 180/pi*angle(squeeze(freqresp(Gdvf_th(1,1), freqs))), '--') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; + +ax2 = subplot(2, 2, 2); +hold on; +plot(freqs, abs(squeeze(freqresp(Gdvf(1,2), freqs))), '-') +plot(freqs, abs(squeeze(freqresp(Gdvf_th(1,2), freqs))), '--') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +set(gca, 'XTickLabel',[]); ylabel('Magnitude [$\frac{m/s}{N}$]'); +title('$v_u/F_v$, $v_v/F_u$'); + +ax4 = subplot(2, 2, 4); +hold on; +plot(freqs, 180/pi*angle(squeeze(freqresp(Gdvf(1,2), freqs))), '-') +plot(freqs, 180/pi*angle(squeeze(freqresp(Gdvf_th(1,2), freqs))), '--') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); +yticks(-180:90:180); +ylim([-180 180]); +hold off; + +linkaxes([ax1,ax2,ax3,ax4],'x'); +xlim([freqs(1), freqs(end)]); + +linkaxes([ax1,ax2],'y'); + +% Root Locus +% The Decentralized Direct Velocity Feedback controller consist of a pure gain on the diagonal: +% \begin{equation} +% K_{\text{DVF}}(s) = g \begin{bmatrix} +% 1 & 0 \\ +% 0 & 1 +% \end{bmatrix} +% \end{equation} + +% The corresponding Root Locus plots for the following rotating speeds are shown in Figure [[fig:root_locus_dvf]]. + +Ws = [0, 0.2, 0.7, 1.1]*w0; % Rotating Speeds [rad/s] + + + +% It is shown that for rotating speed $\Omega < \omega_0$, the closed loop system is unconditionally stable and arbitrary damping can be added to the poles. + +gains = logspace(-2, 1, 100); + +figure; +hold on; +for W_i = 1:length(Ws) + W = Ws(W_i); + + Gdvf = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... + [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2), 2*W*s/(w0^2) ; ... + -2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)]; + + set(gca,'ColorOrderIndex',W_i); + plot(real(pole(Gdvf)), imag(pole(Gdvf)), 'x', ... + 'DisplayName', sprintf('$\\Omega = %.2f \\omega_0 $', W/w0)); + + set(gca,'ColorOrderIndex',W_i); + plot(real(tzero(Gdvf)), imag(tzero(Gdvf)), 'o', ... + 'HandleVisibility', 'off'); + + for g = gains + set(gca,'ColorOrderIndex',W_i); + cl_poles = pole(feedback(Gdvf, g*eye(2))); + + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); + end +end +hold off; +axis square; +xlim([-2, 0.5]); ylim([0, 2.5]); + +xlabel('Real Part'); ylabel('Imaginary Part'); +legend('location', 'northwest'); diff --git a/matlab/matlab/s6_act_damp_comparison.m b/matlab/matlab/s6_act_damp_comparison.m new file mode 100644 index 0000000..637b977 --- /dev/null +++ b/matlab/matlab/s6_act_damp_comparison.m @@ -0,0 +1,364 @@ +%% Clear Workspace and Close figures +clear; close all; clc; + +%% Intialize Laplace variable +s = zpk('s'); + +% Plant Parameters +% Let's define initial values for the model. + +k = 1; % Actuator Stiffness [N/m] +c = 0.05; % Actuator Damping [N/(m/s)] +m = 1; % Payload mass [kg] + +xi = c/(2*sqrt(k*m)); +w0 = sqrt(k/m); % [rad/s] + +kp = 0; % [N/m] +cp = 0; % [N/(m/s)] + + + +% The rotating speed is set to $\Omega = 0.1 \omega_0$. + +W = 0.1*w0; + +% Root Locus +% IFF with High Pass Filter + +wi = 0.1*w0; % [rad/s] + +Giff = 1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... + [(s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)) + (2*W*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*W*s/(w0^2) ; ... + (2*xi*s/w0 + 1)*2*W*s/(w0^2), (s^2/w0^2 - W^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))+ (2*W*s/(w0^2))^2]; + + + +% IFF With parallel Stiffness + +kp = 5*m*W^2; +k = k - kp; + +w0p = sqrt((k + kp)/m); +xip = c/(2*sqrt((k+kp)*m)); + +Giff_kp = 1/( (s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2)^2 + (2*(s/w0p)*(W/w0p))^2 ) * [ ... + (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2, -(2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)); + (2*xip*s/w0p + k/(k + kp))*(2*(s/w0p)*(W/w0p)), (s^2/w0p^2 + kp/(k + kp) - W^2/w0p^2)*(s^2/w0p^2 + 2*xip*s/w0p + 1 - W^2/w0p^2) + (2*(s/w0p)*(W/w0p))^2 ]; + +k = k + kp; + + + +% DVF + +Gdvf = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... + [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2), 2*W*s/(w0^2) ; ... + -2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)]; + +figure; + +gains = logspace(-2, 2, 100); + +hold on; +set(gca,'ColorOrderIndex',1); +plot(real(pole(Giff)), imag(pole(Giff)), 'x', ... + 'DisplayName', 'IFF + LFP'); +set(gca,'ColorOrderIndex',1); +plot(real(tzero(Giff)), imag(tzero(Giff)), 'o', ... + 'HandleVisibility', 'off'); +for g = gains + Kiff = (g/(wi + s))*eye(2); + cl_poles = pole(feedback(Giff, Kiff)); + set(gca,'ColorOrderIndex',1); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); +end + +set(gca,'ColorOrderIndex',2); +plot(real(pole(Giff_kp)), imag(pole(Giff_kp)), 'x', ... + 'DisplayName', 'IFF + $k_p$'); +set(gca,'ColorOrderIndex',2); +plot(real(tzero(Giff_kp)), imag(tzero(Giff_kp)), 'o', ... + 'HandleVisibility', 'off'); +for g = gains + Kiffa = (g/s)*eye(2); + cl_poles = pole(feedback(Giff_kp, Kiffa)); + set(gca,'ColorOrderIndex',2); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); +end + +set(gca,'ColorOrderIndex',3); +plot(real(pole(Gdvf)), imag(pole(Gdvf)), 'x', ... + 'DisplayName', 'DVF'); +set(gca,'ColorOrderIndex',3); +plot(real(tzero(Gdvf)), imag(tzero(Gdvf)), 'o', ... + 'HandleVisibility', 'off'); +for g = gains + Kdvf = g*eye(2); + cl_poles = pole(feedback(Gdvf, Kdvf)); + set(gca,'ColorOrderIndex',3); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); +end +hold off; +axis square; +xlim([-1.2, 0.05]); ylim([0, 1.25]); + +xlabel('Real Part'); ylabel('Imaginary Part'); +legend('location', 'northwest'); + +% Controllers - Optimal Gains +% In order to compare to three considered Active Damping techniques, gains that yield maximum damping of all the modes are computed for each case. + + +%% IFF with pseudo integrators +gains = linspace(0, (w0^2/W^2 - 1)*wi, 100); +opt_zeta_iff = 0; +opt_gain_iff = 0; + +for g = gains + Kiff = (g/(wi+s))*eye(2); + + [w, zeta] = damp(minreal(feedback(Giff, Kiff))); + + if min(zeta) > opt_zeta_iff && all(zeta > 0) + opt_zeta_iff = min(zeta); + opt_gain_iff = g; + end +end + +%% IFF with Parallel Stiffness +gains = logspace(-2, 4, 100); +opt_zeta_kp = 0; +opt_gain_kp = 0; + +for g = gains + Kiff = g/s*eye(2); + + [w, zeta] = damp(minreal(feedback(Giff_kp, Kiff))); + + if min(zeta) > opt_zeta_kp && all(zeta > 0) + opt_zeta_kp = min(zeta); + opt_gain_kp = g; + end +end + +%% Direct Velocity Feedback +gains = logspace(0, 2, 100); +opt_zeta_dvf = 0; +opt_gain_dvf = 0; + +for g = gains + Kdvf = g*eye(2); + + [w, zeta] = damp(minreal(feedback(Gdvf, Kdvf))); + + if min(zeta) > opt_zeta_dvf && all(zeta > 0) && min(zeta) < 0.85 + opt_zeta_dvf = min(zeta); + opt_gain_dvf = g; + end +end + +% Transmissibility +% <> + + +open('rotating_frame.slx'); + +% Open Loop :ignore: + +Kdvf = tf(zeros(2)); +Kiff = tf(zeros(2)); + +kp = 0; +cp = 0; + +%% Name of the Simulink File +mdl = 'rotating_frame'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/dw'], 1, 'input'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/Meas'], 1, 'output'); io_i = io_i + 1; + +Tol = linearize(mdl, io, 0); + +%% Input/Output definition +Tol.InputName = {'Dwx', 'Dwy'}; +Tol.OutputName = {'Dx', 'Dy'}; + +% Pseudo Integrator IFF :ignore: + +kp = 0; +cp = 0; + +Kdvf = tf(zeros(2)); + +Kiff = opt_gain_iff/(wi + s)*tf(eye(2)); + +%% Name of the Simulink File +mdl = 'rotating_frame'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/dw'], 1, 'input'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/Meas'], 1, 'output'); io_i = io_i + 1; + +Tiff = linearize(mdl, io, 0); + +%% Input/Output definition +Tiff.InputName = {'Dwx', 'Dwy'}; +Tiff.OutputName = {'Dx', 'Dy'}; + +% IFF With parallel Stiffness :ignore: + +kp = 5*m*W^2; +cp = 0.01; + +Kiff = opt_gain_kp/s*tf(eye(2)); + +Kdvf = tf(zeros(2)); + +%% Name of the Simulink File +mdl = 'rotating_frame'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/dw'], 1, 'input'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/Meas'], 1, 'output'); io_i = io_i + 1; + +Tiff_kp = linearize(mdl, io, 0); + +%% Input/Output definition +Tiff_kp.InputName = {'Dwx', 'Dwy'}; +Tiff_kp.OutputName = {'Dx', 'Dy'}; + +% DVF :ignore: + +kp = 0; +cp = 0; + +Kiff = tf(zeros(2)); + +Kdvf = opt_gain_kp*tf(eye(2)); + +%% Name of the Simulink File +mdl = 'rotating_frame'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/dw'], 1, 'input'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/Meas'], 1, 'output'); io_i = io_i + 1; + +Tdvf = linearize(mdl, io, 0); + +%% Input/Output definition +Tdvf.InputName = {'Dwx', 'Dwy'}; +Tdvf.OutputName = {'Dx', 'Dy'}; + +% Transmissibility :ignore: + +freqs = logspace(-2, 1, 1000); + +figure; +hold on; +plot(freqs, abs(squeeze(freqresp(Tiff(1,1), freqs))), ... + 'DisplayName', 'IFF + HPF') +plot(freqs, abs(squeeze(freqresp(Tiff_kp(1,1), freqs))), ... + 'DisplayName', 'IFF + $k_p$') +plot(freqs, abs(squeeze(freqresp(Tdvf(1,1), freqs))), ... + 'DisplayName', 'DVF') +plot(freqs, abs(squeeze(freqresp(Tol(1,1), freqs))), 'k-', ... + 'DisplayName', 'Open-Loop') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [rad/s]'); ylabel('Transmissibility [m/m]'); +legend('location', 'southwest'); + +% Open Loop :ignore: + +Kdvf = tf(zeros(2)); +Kiff = tf(zeros(2)); + +kp = 0; +cp = 0; + +%% Name of the Simulink File +mdl = 'rotating_frame'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/fd'], 1, 'input'); io_i = io_i + 1; +io(io_i) = linio([mdl, '/Meas'], 1, 'output'); io_i = io_i + 1; + +Col = linearize(mdl, io, 0); + +%% Input/Output definition +Col.InputName = {'Fdx', 'Fdy'}; +Col.OutputName = {'Dx', 'Dy'}; + +% Pseudo Integrator IFF :ignore: + +kp = 0; +cp = 0; + +Kdvf = tf(zeros(2)); + +Kiff = opt_gain_iff/(wi + s)*tf(eye(2)); + +Ciff = linearize(mdl, io, 0); + +%% Input/Output definition +Ciff.InputName = {'Fdx', 'Fdy'}; +Ciff.OutputName = {'Dx', 'Dy'}; + +% IFF With parallel Stiffness :ignore: + +kp = 5*m*W^2; +cp = 0.01; + +Kiff = opt_gain_kp/s*tf(eye(2)); + +Kdvf = tf(zeros(2)); + +Ciff_kp = linearize(mdl, io, 0); + +%% Input/Output definition +Ciff_kp.InputName = {'Fdx', 'Fdy'}; +Ciff_kp.OutputName = {'Dx', 'Dy'}; + +% DVF :ignore: + +kp = 0; +cp = 0; + +Kiff = tf(zeros(2)); + +Kdvf = opt_gain_kp*tf(eye(2)); + +Cdvf = linearize(mdl, io, 0); + +%% Input/Output definition +Cdvf.InputName = {'Fdx', 'Fdy'}; +Cdvf.OutputName = {'Dx', 'Dy'}; + +% Compliance :ignore: + +freqs = logspace(-2, 1, 1000); + +figure; +hold on; +plot(freqs, abs(squeeze(freqresp(Ciff(1,1), freqs))), ... + 'DisplayName', 'IFF + HPF') +plot(freqs, abs(squeeze(freqresp(Ciff_kp(1,1), freqs))), ... + 'DisplayName', 'IFF + $k_p$') +plot(freqs, abs(squeeze(freqresp(Cdvf(1,1), freqs))), ... + 'DisplayName', 'DVF') +plot(freqs, abs(squeeze(freqresp(Col(1,1), freqs))), 'k-', ... + 'DisplayName', 'Open-Loop') +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [rad/s]'); ylabel('Compliance [m/N]'); +legend('location', 'southwest');