From 20e94f3dfa6e668be03b241c0f729cff11541a1e Mon Sep 17 00:00:00 2001 From: Roka Miklos Date: Tue, 30 Jun 2026 16:26:36 +0200 Subject: [PATCH] Added capacitor and inductor components --- circuit/ael/mr/mr_capacitor.ael | 164 ++++++++++++++++++++++++++++ circuit/ael/mr/mr_inductor.ael | 158 +++++++++++++++++++++++++++ de/ael/boot.ael | 2 + mrModels/mr_pas_c/symbol/master.tag | 2 + mrModels/mr_pas_c/symbol/symbol.oa | Bin 0 -> 32484 bytes mrModels/mr_pas_l/symbol/master.tag | 2 + mrModels/mr_pas_l/symbol/symbol.oa | Bin 0 -> 25772 bytes 7 files changed, 328 insertions(+) create mode 100644 circuit/ael/mr/mr_capacitor.ael create mode 100644 circuit/ael/mr/mr_inductor.ael create mode 100644 mrModels/mr_pas_c/symbol/master.tag create mode 100644 mrModels/mr_pas_c/symbol/symbol.oa create mode 100644 mrModels/mr_pas_l/symbol/master.tag create mode 100644 mrModels/mr_pas_l/symbol/symbol.oa diff --git a/circuit/ael/mr/mr_capacitor.ael b/circuit/ael/mr/mr_capacitor.ael new file mode 100644 index 0000000..9d6d315 --- /dev/null +++ b/circuit/ael/mr/mr_capacitor.ael @@ -0,0 +1,164 @@ +// ---------------------------------------------------------------------------- +// Creating item definition for Capacitor +// ---------------------------------------------------------------------------- +create_item( + "mr_pas_c", // name + "Capacitor", // description + "C", // prefix + 0, // attributes + NULL, // priority + NULL, // icon name + standard_dialog, // dialog name + "", // dialog data + ComponentNetlistFmt, // netlist format + "C", // model name + ComponentAnnotFmt, // display format string + NULL, // symbol name (not used since 2011) + NULL, // artwork type (not used since 2011) + NULL, // artwork data (not used since 2011) + ITEM_PRIMITIVE_EX, // extra attributes + + create_parm + ( + "C", // name + "Capacitance", // label + PARM_DOE | // attributes + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + CAPACITANCE_UNIT, // unit + prm("StdForm", "1.0 pF") // default value + ), + + create_parm + ( + "Temp", // name + "Temperature", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + TEMPERATURE_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "Trise", // name + "Temperature rise over ambient", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + TEMPERATURE_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "Tnom", // name + "Nominal temperature", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + TEMPERATURE_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "TC1", // name + "Temperature coefficient; per degree Celsius", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "TC2", // name + "Temperature coefficient; per degree Celsius squared", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "wBV", // name + "Breakdown voltage (warning)", // label + PARM_NO_DISPLAY, // attributes + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "InitCond", // name + "Initial condition for transient analysis", // label + PARM_NO_DISPLAY, // attributes + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "Model", // name + "Model instance name", // label + PARM_NO_DISPLAY, // attributes + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "Width", // name + "Width, refer to the model", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "Length", // name + "Length, refer to the model", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "_M", // name + "Number of devices in parallel, (default: 1)", // label + PARM_NO_DISPLAY, // attributes + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "1") // default value + ) + +); diff --git a/circuit/ael/mr/mr_inductor.ael b/circuit/ael/mr/mr_inductor.ael new file mode 100644 index 0000000..aa76d77 --- /dev/null +++ b/circuit/ael/mr/mr_inductor.ael @@ -0,0 +1,158 @@ +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +create_constant_form( "no", "NO", 0, "no", "no" ); +create_constant_form( "yes", "YES", 0, "yes", "yes"); + +create_form_set("NoiseFormSet", "yes", "no"); + +// ---------------------------------------------------------------------------- +// Creating item definition for Inductor +// ---------------------------------------------------------------------------- +create_item( + "mr_pas_l", // name + "Inductor", // description + "L", // prefix + 0, // attributes + NULL, // priority + NULL, // icon name + standard_dialog, // dialog name + "", // dialog data + ComponentNetlistFmt, // netlist format + "L", // netlist data (not used) + ComponentAnnotFmt, // display format string + NULL, // symbol name (not used since 2011) + NULL, // artwork type (not used since 2011) + NULL, // artwork data (not used since 2011) + ITEM_PRIMITIVE_EX, // extra attributes + + create_parm + ( + "L", // name + "Inductance", // label + PARM_DOE | // attributes + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + INDUCTANCE_UNIT, // unit + prm("StdForm", "1.0 nH") // default value + ), + + create_parm + ( + "R", // name + "Series resistance", // label + PARM_DOE | // attributes + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + RESISTANCE_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "Temp", // name + "Temperature", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + TEMPERATURE_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "Trise", // name + "Temperature rise over ambient", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + TEMPERATURE_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "Tnom", // name + "Nominal temperature", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + TEMPERATURE_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "TC1", // name + "Temperature coefficient; per degree Celsius", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "TC2", // name + "Temperature coefficient; per degree Celsius squared", // label + PARM_NO_DISPLAY | // attributes + PARM_DOE | + PARM_OPTIMIZABLE | + PARM_STATISTICAL, + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "InitCond", // name + "Initial condition for transient analysis", // label + PARM_NO_DISPLAY, // attributes + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "Noise", // name + "Temperature coefficient; per degree Celsius squared", // label + PARM_DISCRETE_VALUE | PARM_NO_DISPLAY, // attributes + "NoiseFormSet", // formSet + UNITLESS_UNIT, // unit + prm("yes") // default value + ), + + create_parm + ( + "Model", // name + "Model instance name", // label + PARM_NO_DISPLAY, // attributes + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ), + + create_parm + ( + "_M", // name + "Number of devices in parallel, (default: 1)", // label + PARM_NO_DISPLAY, // attributes + "StdFileFormSet", // formSet + UNITLESS_UNIT, // unit + prm("StdForm", "") // default value + ) + +); diff --git a/de/ael/boot.ael b/de/ael/boot.ael index 1a8689f..3d9fdda 100644 --- a/de/ael/boot.ael +++ b/de/ael/boot.ael @@ -41,6 +41,8 @@ else // ---------------------------------------------------------------------------- load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mrmodels_include")); +load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_capacitor" )); +load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_inductor" )); load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_resistor" )); load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_bjt" )); load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_jfet" )); diff --git a/mrModels/mr_pas_c/symbol/master.tag b/mrModels/mr_pas_c/symbol/master.tag new file mode 100644 index 0000000..e1024da --- /dev/null +++ b/mrModels/mr_pas_c/symbol/master.tag @@ -0,0 +1,2 @@ +-- Master.tag File, Rev:1.0 +symbol.oa diff --git a/mrModels/mr_pas_c/symbol/symbol.oa b/mrModels/mr_pas_c/symbol/symbol.oa new file mode 100644 index 0000000000000000000000000000000000000000..0b91be66956c5139810340cf004f1713d5146af9 GIT binary patch literal 32484 zcmYdyRc2&B0^JM@37|j(`SC4wRlD0#V2z2B9Uy zA@l>NgFECP{0^uC8}uOj3?m5rz!XBCu!7J(!Xb1+B81j}I_yR|gx`=2p%wBW^oB|Z z{h$s)7eL(w^EWL14It7CFmV{o0~LqGFOKK4(ax?@+ zLtr!nMnhmU1V%$(Gz3ONV8n(13xko7o`H#;fq|hyevv|AQhr$~EHKy@*cein7(gn_ z4D<>Nj4U8BMn-yO26_g@h7c}8cxIk4xVg^4pilx8JF%oc0mSrO3ZXq27#KiJc368F z)(wI6gZM#;85kG@ptK;A7J|~kP#V_07KQSm-3kT?C?D3JVuH52Vf`u=D4!Kdvq5Qg zD9r(-IiWNcl;(!gu=YEyewhGN9jt#Q1mz1uX%Q$b3Z=!Mv^bQOfYOpsS_(=_LunZ( zEeoaPptL-cR)ErqP+AE}!+OCgP`)aZR)f;&P+9{@YeH!)D6I{pb)d8^l-7gN`cT>c zN*h9H^!}*{RNNFwn?Y%FC~X0yEupj(l(vS_Hc;9YN`s;s!~}JNKwTbC{|4060rk^C zT|7{K4b)Wvb%Q{CZ&11er8!V~1En=kIs>IKQ2GL;El|1wr72K)0(DVA=?T>L2X#|H zeQHoY5!3|(byq=seo%i|k%56hiGhJZnSp^pg@J(qG&TV0cdIinFo3$VnhXpKpm7Fm z1_lNl1_lOQ1_lOD_g0^QfdSOt1mz!4zA%@`OM%o!LMKv~U_fq?HfM`(q2hpH(45C5l5k!N+9Yn*-A(e*NgHD6YBn5-Q1?qPOSX_d{ zKxRP00xS*+CYU%#4jMjSIS?Nv2MTu(28n?%)XWA@STZs&9019I%o1eUMhouLT+XbgI|7TaVkS(YB57tN-{%8D#SklnR$+R={czk z0Y(hLsX3|1C7Jno4Ec$nc}1zkB}JLZC8;S40mcjgCJcV5!qfd&A` zK2TnSazV)xtP(vuVEzCnZqPV7Q~?u|W`WYIP#P9~u=W=lRGb}3b3kcMC=GMZ52!=_ zKxvqRSfGC3fzk?4+5k#BK&1~8wAfq@C?FEF2x zkqMSPz zS2|>ddJa83g4%o_t3mBQ5Dm7Qfq?;*@4$620|Nu7y$F&Ag%^m1VUS-yY^d?@d;|(p zkT|H_38E>*Fne&B1Cxiw149i|0OUWAU!YuAwt)o`+`WYIF?#sH;s+KVF#8&y7PUa> z4k+CNrKdn?a7D?$07*a$3=FV*4$HqjpacSH&p~OJzi`p8cmcJiL1Bc>hl#^zm^mR( z_ki?J1B2S%p!Pqg&j2kG;Q0w;6%#WHD;om`Cl@y;R&d&gqKAG7-or9B0jF*pJ zKu}0nL|j5rN?Jx%PF?|I9mpVXUgHl20SFl!451+;lmk);4R%nqz{to12CS^CEMNd( zuz~>t0|Thv4r<$h-Oj+kz{|h^hsbPjE(Yaf!WiNLCD=ht;fm#G=n}XWbF!fMjxcxBouzbo0EpTAdCN@99@*ONbVeMU5JDA+^3)c4qISqu- zoC&Y*q1k`|);Ge)q}A99IQNqxvv1~&JrkH0i|o8bPJT80;Lx~Y1n!+SUGn9Dt-h?g9jNH7#Ik( z8@E6M3`#*llK~p4NHi$?LE#E3FVWK-j1Qv;nTIZa2O2>RP#R>{P{5#Y0r>?K>>vzE zmr!@3x3R!{SbGgw4XoV;@;a0aYJ(x;39$?e44^s*WCsX?)G8||D}efkA3l754S#~i zfk5dUmhR}?{(`l$(A!_2@)G1{Qu~eQ?Jiih0);uqJoNSzxb4ZnzyNNeFfhQ|S)h4F zkb2NuBZ#IHgW>?$3_^Tlwb>_ZO^Sos2*uY#Ee z)dr_v_JQp{8kd9RZ&>)j)R9ZWEu;bi6a+B$f{a71(_!wjfd&jHoe&Q3d4$b zL^%gj01Zf7xaPl|FHZBs|R5HaF}~xz-+;poqyUt^ zp)@QX!_o`Rae0uTAj3cwf%HRZ^!_rX^~mq|e5MFUEkKxtS$M{n=J-3bj%bUrLUf&2D@f0cwkZ(giCdGeGh&q=5y_$8Y}s|Gxm* zRsi+oe*gdfA5`zc#&AFeg5*IoXsr;)Optk?sAOaSL68gtgW?0+Rsksh%!k_1~pJxkzS{wqUVfz**K>4tJi9Jw{On}mFpp{wzw8Pv2$^f8sv!H?;X`BbD z9N{l$;KIrg*!Vb%hONJX>4UAcD}e?WY#sCxQ00ka57gLEYM6!qs9XW%8&GlsVNiJm z%DY|6-ON4Az07^gjG#6H8zUPN8#5aV8#5%ufy+#AkU-jLU?xZ}C^>=FRWLC#gVuQP zg3Jbq$3RuU+G$WOczrgA4VrfWwevtUC<%hpgZLmC#K+a{1L*}}n7J_eF#`j`vj6}8 zgVynb=yoXoG!i}O|Ns9W{;vQ3|AW+n_#hg@?`2?MSor_{|49rC46FbD{}0m-qhaR4 zXwaq((3}&<|Df<=VSvFTh9t-=EMjE{$iYwy3V(3h0i=-%?NRh{9oBB6R{0JqKcK}F z12oM*eM3G4Ef(PhK!XF$huI4oCj-@m;C4JHutBPz8lV&?&4NTR#*tvE}`PU2u>WNhMKY~pBQViaO+;s#Smj0-jdF*a!#iBIBSY!WjP zZ{lENlHVl4D8$O71g7xGJrbWJwjqe|k>)4SNgRxiL_di(aWE#y6$vv6u_h^kDJStD zQLvIAh>{?Pl1oBhC1A=)e3QtAAVw$6BH>9Kj839O!c82Ehh#qqFbc6AQUFtn#4ZVK z2x45MF-dR|2je1~-w?!jNbM5uBo4+yLYH`(I2fIzgSZ)mSe@j+l#+-M?}i{oB{joI9E?gr zhD{udi=>3O7=>6D$%3gS;ZNKff*2EnxIqCX7{m<Hu*06hj4KJEzH*8rLi0PXdLMKi8(N@CZA;F>pu&6C3HCA6Oc zwm*6S)M0C&^b*j(DrkHZN^gMDe?WuMpviXdWB_E$8kB6&$46m&(AY0X9(}y{2UGz} z9?E5aofiY!&kYj?nL!E$nG4bj3TF@ojVD9(gXhv%nAku{z-&gyX#yueYe&;ShYK(; zFl004fI|XAfaWehG#mRUq*n;=@{L>wN^8=iU^E2i5CX7r5p*UZXf6~~R)R1n4T8%{ z&@4Kb0U<#1n&7e=s({+-qG&aL4z0Gp>&hWMp^Su1CxV)9C_K618Y}++F+pbKVbSnYCw8mcEi*YYKNh>zhLGEKn;eS^AZ8&!`6SL zK>3i?1q1xtoC#2ISbGfa4v^!p%tOP%21bMOB}gf3eFRKD>^xAA95pb=nIH@@3mPZj zHRG^y1c?SI0b#H_Xl)T_t{>z+kbaPRK{P1*K{QAq2!q5y@dFEAYLzdb_BY6U==vxI zP&xqd!DSf(0|O|3g7{#&86fAgf%wp7E{F-n$ZiD-P)LCM4>AH4Un)=m(7rs-xu7un zpu!mI8gQjk*uHAmdP`Wj3R`yx>nFhWCBniRwhj|^J_Kz2CCpv0eH%JZ2f@xggYDyh z?c0Lw(~5wqgPnf{YGZ@^OYA=1CD4osTfYelCtNfvKfvM@l%7EL!T7lJ;Sz_f1Bc1O z;sa#nKwyylAPlk_J^z8kK^T+=K{N=1)WP`BIuN`L3DkvyVNeu-!U?1v#D?ktQy_70 z-T+C`V7(l*^Ci0b!JeQp0SXFOdVr;O(7sAgSb^j~*1_BXO}_B<06f1!6~LBrg8G;s zeb6=X46t(sS)uCKpfo#_=77@Z`4;9L*nTQv_f5j`BW(W_Y=0zdKO}7b;}WR78=&+a zC=J_Z4+|GuG9!!#s<|BAT~%X^gM3xxCV$15(lXTt&xMVL443TYq0bRRfiI6AoqbVEPat%50jg} zQ5-`72bMly=XHY47XqCF015+;u`s_=E1z;g4djB-uzZT1e_`PYt8ZcM6M*Uyfzq)3 zk}^;}tR9BdyRiHYt8ZcZp<|%xVf8M0{zlKoJD}=e`56{&xM*ZpMD zQ1x&MI%W*E2c!;^PeGFCc@$YM$R8jKOGiUJe;$E)4wN@RZFDFX-oJ*%1@pkQ{i74x|}WtwU+p zJ~LSTPUu`1^!-wl_EVtFfVWp5uB9FctKWN|MuPftAdGG=dOHc`Aeg=hQ2kS&^b9Bs zY72uf%pP1cR5`fv-p0Vdu$2L_zX_%uw!aFrTmXa#x)0`HP=ScFuZz(BERb747-lan z8kAn(ZibHQ!rTPX4{K|~)WFO^pSOYOfjSfCI4sCa5QeqOVd)W;K4Ip z!tS?%-BSha`!m4i6JX;xFn8jjLG3Y+pFneZAR49)b|4q8hWo3C=9{jr@(*-LGz607|CHE|A0#ZkRfE`drI>+l2eFc z!onN24hLjEc+LSF03Z)QjDdOwmQ69z6)fGr#s}v>v^8vo(np~5O(^{uO2h1ha1kWT zU7+v;iNg91uzUiFTaY+tJ`O~K?z;lfph0604ci|H+h5uN62vk;1+#|`4Lg?!od%^d zkkK&xAT}u&R5pUb3X~Uvp!bu(iW-nPpzuSNgIy{F3R84BkRA{Qg)>YJ)Sm~L39<_m z?&#tmJ}7=+egWwRiNVI*L3@Egc?gswRxvOz@-s>@$}%EYvJ99Iqz9xPgx4^vVGv~m zksyp7|j(`SC4wRlD0#WE82B8DQ zAv6Qjp&oJ&z6I2QFZ3b&3&s%I!yG~z*g)t6cL>el1ED3L4n6_(XhAqsJQ_kXBtYmD zP!AM9-39YEEdC83${1kcFq#J{4vSwXmthK20W2KeK;r@GUAQ@GpyDi0dIK}W1P>_v z0h(YoK;88ODqaDlUqJ0KfF__7P`&_^UJF&X0*!|0gQb7jOU|@i?r(xX?SU-p# zs!sq)3qoljC@l=7VeM;CC?DFbV32_FVf`s4XnPyhuY$F|S)t-=P?{Y|b3kcMD9r_> zxuGcN*h9H^!}*{RNNFw zn?Y%FC~X0yEupj(l(vS_Hc;9YN`s;s#AIS%U;uS}K>Zs~7ZlV_2X&=D{WVb63e^7w zb)7)z4wU9V=?#?DKhpv8%ZdyP3`z_P49W})3@Qu^44|FnLJaZ~$OvfH zx&g$dCkB-nUJMKj-V6*3pzgje0|SE}0|SFU0|Nu7+YcIw`1k++e{$j_MkNW|D$I;R5wL11v5QhHgW>jpB6b=? z5M&J)`!FP?6g%hV<)tQ7!{3tUpuK$^h80#Tis5|E#nS5nN7np&Kn7M5C6oSC2JSDKrY zT7)7LTvC*om(Jkm60BfkU}VTpl%L|8SPTw8uuh-E;*#LRvecB2%-q!AlEmBsaLh2k z$MLQ}`Jglcs$XDH2uc$mDOfs!PEAO0 z0tGV&gX{-|0|NuY2@o4ZgM!G8!Hxmic0K`eG9xH+Fff4GAbF5Fus9=_2Nnm#aTchL z07?%G4B)6TWe{ZmwU?k~Gl0?-sE!1w1&KkDCIbVk{)43tT5Uoc8T51qY7>I& z0ksc7G}vyW{tCFRW?*0dwI@OHuy_TrK^Wvm5DhgRUT%Qeq#$unyA(uIiedKPG6yCP zOGhXx{R2=L39=v5zX0U} zsJY-gz{JeL%ErLK$;HjXz{f8jC?pJ0jmTRd?=v!jR57u!b8vDo@Iq99%mK;q2ZI2F zl!gMB93vPofdMlVfcoX2J_blHC@6UuIN%VO&Cq}bp^gUSM{wE)834++P@2;G2uhbA zE6B}vAise0!_qN`O%8^72SY0?eVl<>1nL8V+Qu;TP+?ec1JC!ce8dQK7_7cS&p)tw zk5E0w1vQ5oO7lQzJ}8Zz4`Jn{FjQU?N{c~hn13!nJ#Ym|-+04vg3||-ffyLT?PpN^1H-U*!9_#0 z!N;3GWgjSVVdCgCE^|QX9$6o{I+!^yaacP9)=pUfODG^i1_1^|9|(h-0t!n|nE_&h zXpmDO)ik93hOuGtXf(KQ#K6D+q9J7(ED#`KAmt!A5C*pyK;splauF28AUA;RV_;y& zXUGSsMZusv1}-;2ipVK%Ko)>Z1X%{s52cCChp_wxi$_>{6V?tTx7-4aNr9XN!)VTg zmmkpN&j4#TK$=wy;C2y6FSxc~U|;}^S%LVVa0StnVrX!aYz#DbG4#R2VM${P)We|q z7wiY9g-{A-y98FxzzSMgm#e%`hr`?p^BBw@uzU|IS77A?*iQ@$@bPGnKS6q7@dF!E zgN>_z#sxw0pz%Nu4XUF-G;F*DH0}rDgU0(nG-#X;M8n4SVD1^LG{~((8H3U#G|7U! z0WC8@Wg1x+7EiEtGN>E@<#CWbAPZo2L6aY%Jb((o+6gfI#J00x_Tr*p=@~|Y+%g<7 zD11Q}jQ29h`drtrw-?-X!u<{V*&H|`= zOQ3WGl&*o&El_$2lwJU(S3qf4Id=fcKLVw}gFy@o420T?Tc81#14_(D<3&(mcshph zVd)H3ZotDXjxlOSVB?I)tQx1i2~r$_X56)3NR?19zeu=W*bUJxV>ni~Yslww#g!OS7V zhpEFw!}0~JUI2v`IIKVs4Ql^FHNxyc4+mKM5-Pu7{XSgf7|edCb?|UT&)2Yg4-02d zx&!GUwY>!MH@#?(8?j+fFvG$YBoEEY==l(X4|6wcejhZ>2o5WlVIYG^h(Fl8Aj~|F zTaYo#KCm4~iP<`J3RR^p0 zJD~g?C_Mp6!`cHgp!_?~f&mt;xM=kB1LMPJT>8irht2iE^n>D-8W@yLKp12eG+n{l zgCKDbhP4fmXpDRe9S4DngMty1r$G8aK?^R6L6$%3ftuI9{{R0EO7GCF z3&=dMJct1re*u{ZG7lQ1AYnKL#Ro_)EZtDrUZym^!W~8>1}r_n`hTGL4^SH!6doWe zU||A_Bba(Z`3`*^1Xf?d>POi48$Z-wSbta$%7@K2z``9?Uc%f-?z{%9Jb;-Go4?S3 z+6$Y%aDnnOpmYzEhVAd#0p;(3((rHr1sazAF?v3SZ(qK^Vpdm0KV_2*boc zY!HU=iB$t~EvW1Ql}{jVK%52=g2?Zm17{cgItX6evlY7F)Uxe z@-=8(FUSw*_CvEX&VB@>%3)xD^&4Q}3oD;s?K{{wF08zP^&4RQYM49F=S2gc4hVtL zu=1w{%AWwGU7#NFfYNh76&(Wu!w%?x2M@T?Vqj1JPwF!;Xn+#~;q?`ux)2oZ==2tl zAX2#&0u4CWdMg+owhkV;W(XdRQ0=4C5Dx)RG6G>x^h1*xq&#F|WMXD!VPJ)}!$9(I zuOf+om##1}GB80J2=MkAY`&}lstMG712JLqXP|j8P+bY4LE-Ir?CQ!D));p#NWfs2NKRONDe*@Kql>)g7 zgh7%pKZ4xJ$i^cG%I6?9CkTM{H!(24j$#2R2V+J?CRRo!5k?_a5Tk*SiJx%-qY~qR z36mHZK=}=%2<9%>d=IF80o5rWvqAE>!UGnsuy8@of3W%rRv)6bn_=x^n7zcVe}JvS zgPq561M1KRQ2Gg!hV}CoKs^YhkZN&|?;vRb!~*3D5RIPxK=~9T4wHwO;{mm&1WLoi zL260CpzsA@kRDhZgV?aN%LFkP+V%p=fXB!{ERfZpCKreX)q^0KiyOR;i9s5&0S?^m zN{6mv0@(w?Aax-9$QV?gfc*}YgytFI*Xe@{1{ny=IJnXSD1CvHQLFs|sv|(=f!q(G zDaBCd!`mG&^Ps^3Pd~7EIZ*uys>k3OpbDWBTo`69BsvlMA3*U2vIAOPHo(jUi6LW{ zK3F;g#}xzSIzrg|D{P$_OdqK<%p7Dl5W@!f8|oJZP~8YJ2j+K>evmvYset&+31&|K)B;$)Hv-Cs z?dwT_@^hdxtUQ|l<-_(zEP*-@?krye25en9Z2S-AF4+D=9jJp0pfqeg5w?B+wq76tDi1oZ1LP0bIsszW2QC2x z4g&)N>>N2*IN_pUcmLFm30KkcYfq?t;dgh(Z1a84dG0 zwel$^)Iiu71+aXIo_}HC3d^@J_rdlPi$KkRt=oakSHbFGSiK9&@38t7wk|IQsvlPG zqUUe)_4U-s$LRSKoQ4<}7;w?B@kf|Gm^xUzQ9ECQ%!kE2wtNSb1LqTHngFwr#i4G4 z=SNUF0_8Jw8l(r5??5ytIzSyj5Fe@zg@TS>f$ajRg_(z*PeEoOYXtcRgkkAvsOQro zP!EFgC}>Ot%EdYE0B`?70}WSw$_R}#SUAD*9c=v$Y&{LkesDy9_Lo2%Z~;og&H;dp z&%w@DhUHJ#`dD1;Uf6uN4AebP3ei4*MlMVomM>s5Y(E~1hKa*ym_FEiHmGk4G7^?p zL2O!LP&9xr$PQTk0tFp3U4qB@>=?kO(1C*(EXTkAp0@+#519Kw`a#%;fuR98ZxB)s z(u1rX+MWX21?mf-=O+fVnLp_seL4JdUEr?A`3=8)jsG*>83WU+^ zg_eo%^a{(EFntrC`lmqY8BiLO7C;zg4=x(29Gp#Ib|dS9%~yct*+3Yk1{N+D?t=+H z6~Ocpn(qMF3BtJC2@?mU7nqwtG{`+53}S=y!^&|GAB180(8p6?dZ5n4+0O@=3Buq2 z0-fmv)d-tEhM5aHcM*2JBCH<^J1-G7KL|U&5Vj8uR*u2kiHio;IY{+7OdagpDA>Aw zke^Axpu7jdAU$AzBAx345(6FH2^tFqc^e#73JjPKq!5Zh?gaOHK^n*yx1%)QLY+Z0 z1q(;mxGTth(AY36pTXiC>K(W+ESbaf!_ot6JRTHopguqJ{IG^jh>IHLL22lGUjxiu zh%kbLnF|U}kSMIafu(=gcrIvs93&5`pJ3|^p!PGs=FU4niiqeh!t6z-VfNsnVd|mQ z5KV!~Jdj&KX)g$RjwLK?L56_B4_yv+OdTjp(d9sTKo}IxFgZ{?2Qm|67bx7(#X)>f z{KE19NIysn6n`KLnpXhHfz;$5y?pl}m;ld{fxF=#@usGmO-*0|A`S`^zI(4PPR literal 0 HcmV?d00001