From 0275955bce86d73e513fd14c94228d5d93fe115b Mon Sep 17 00:00:00 2001 From: Alex <-> Date: Mon, 8 Dec 2025 09:58:22 +0300 Subject: [PATCH] report9 --- TEMA9/Screen1.png | Bin 0 -> 32954 bytes TEMA9/report.md | 323 ++++++++++++++++++++++++++++++++++++++++++++++ TEMA9/task.md | 63 +++++++++ 3 files changed, 386 insertions(+) create mode 100644 TEMA9/Screen1.png create mode 100644 TEMA9/report.md create mode 100644 TEMA9/task.md diff --git a/TEMA9/Screen1.png b/TEMA9/Screen1.png new file mode 100644 index 0000000000000000000000000000000000000000..f526cf80531eb99aa4d3a4392892932eeddcfa72 GIT binary patch literal 32954 zcmbTedpy%`_&+`*MN(19sdG9xbZ{uAQjy9jrF-_r7WE z2Z8K6&immrxO;3G0>Ky?T)%1_V9%s)4|cK&S=>lPSeG1QGo~(lJRa9nU3~0{uCOCK zZWsO;$MKZA`>FVS+YqM|1ckpE4-HtQCP+vf68se#eeCHj-9x($ZSPrp$O*wUlAM{b z8;j^;tpPHkEnB?7$LAN@ z2EoUb-Mee~z|f8y!3cm~Z(N56fsa=&AUnZ_#BM$r@Nx18zdHCZx&A*d{(_wh3W>jS z!fEf`y`KEwiOUn;tjyfpT=%iIlI?>l`zIdJR#sM8#^$X3{ry9EEqOmU9%s<(QcCIS zy2#vRuga(S_Gb5MS&gaN4lA)DLtRfm=l4&X)IJlebg!sZn^PRq^Y=%j!me%q#^mgJ zwoKnU>(Z{Z_^FDC@bWw3)S9Tm^4J2JRe#$x`Czyqdf&_IQ=>^<$coa;%o93`Ve=o`${@7--Xi}#tv%f@$fb0#25}7ZPL-09% zKRIIG6=H8fPiVwCNI@WXB>7}MWJ#p${qj7{o$>M*!q}lj6?J23g1&~VktDK%kTvwB zaZfe+%0D?0w?crEXDGyc%dFzGq=fd43(h0x^(=q8@a>Gq6Nqk+v79>;J-uz?pxrNZ z8YT%p-kyJVtLK@h^i)Z+VksP3(SWU9fr)GlU#@^O++BM8^$)({!UJiJSkKB@IDWnM zGm{nFb6?Xr_n%_dBP;U&S4MxBFd=R7G`v8h`)`93v}^yoXE;k$jeO6q+l$ZP9a;eb z895;pO~X;`;Z%pPD!NajEdId{;XEw1tzGLfzq+#6$(wl-KiAhkFejsf4)-RlJixc3 zHFw<(e5`>8?`OV|tjuVNA_wr1=px;>ldf4>So>rr*v9qCGnlIU)we`~n#oIfeFaIg zi*R@_Wq&R{!MiqTm2#Isr>qo^Ndr@Kujx^4?h@Zlh_c%5+PQ6mS6-{SNBj#_GFjXy zUqBUUrPpuQP>(Nadt450EXeUw_N4b$CQjahZ?h!XFzUKSBiMoqD)`T74Y{XJpH296 zFYMw-CZE!mGue!R7st-4PDL!<{5w7Tl#mbmWw%Xi#cr3*BgTmu?&4(SGLA1bqRN1f zAukvx7zTmd+RdjK19`oC6Iw{KmH(3{5n8&>Fw?HK|MvwCDCrrZ`P<>%eyu6N=`SK< zk0(!Cp$i5JT#n>U*!SYWB`+REA|`XiIW5DvJuaD+DNf&3@ZrMdH%uMbspP zz19j_=ZDmK9L0?7u040~Yvo`S>W~Zc@=;d$&*~xic3HE(LVco6oS<#7<6F@AB64Fk`^l`E@)E+sFv9w3H6I$u#xPEpYT?Eon21Wm&r_ml#i?CV_)bZ3 z@5kHH2zp(RWW%-4)TFGO+>+Q6XCN5y*Z+0i^Ji~yY9YJKORKz|yoZsl7jY|ssbb$@ zKP(77#w|;uh>0*OE_B-ntXaznz5BPE0iwyDKfS0RQ!Tu>O#0>AC8akyrLML1-D=~B zxhHMM>X7du1S-Venn|jbs}2i~!tm*lMttCu_-~ox3WSbgN4agT98#he*&~&d|GVv8 z-{4A@r|?K(Vs-*a`yNw}HCr&@|5#JwZ(^1N(X8ud5=@|`R34^5e2&m(7u^uASZ^lV z+e#*kZWR`$&5pi7#qL24Rg$47o2?Mcuumo5r?<+OJ?T;d0^vT~k!OnB#_=H+^)1<{`bp~;D==($UgOy-yZ zj!@xW(%m1-c|iIO)rURHkP=KT>zfPCS{r<+g`68k_c58qEWi4R4J15Ozsne zU>+RB2preNRZa^2BS3>HYs;xBIFo25oQmspc2y|zOHd__9(VqP%etQGVCb<=O^~@a z56ZNY%r6RCsxo87dD*zKYuvt84b2N8Y3V_z$C*S&^Uik%wWchQP8C7&q^5*b*j)CD6C z&l&zDodI0GcIey%PR>DXuK~1MmKHvPN`Cd;AWsu=WjmO0=^Y>AA#QcF9o7YD<<&)l z32-KH2;`5RNIOF%W*tqZ5HilW>q@gq2~4OTsAN(5CvsHq-tx4ID8D~@LR zD80y&Owdj8iSQ9^5`)w}+Ex45`uu+53S{F((4t;%-`?VtL>PKGcON&8nldH$^$EL-^use7cys+P+mo1!DBw$ z=e?<=UaKyoH5WgE?Eat8dcu%ebDyU|ukuai3S8s~S`}2$(`I%Sj*$!mgy-jyIBa$LQ>))$BpNfxI;FQEA+9{p3s(SQsZQ@7XltBMHSIHVSrr=ew^0__e zhyjRHpS1=f6!yjC^klzD2)1UdZiIssNgyGIYtRk4 zq=$$kkzoZ~DC3|JG4r&VCb7ACtydQ85sFsOznx5PXA&H|E{`kzHP>O;UGs?yeEcc% zGz7yBeC9eVx2Q&EG*M~Qclau5_h?DN8~F2lIgN4Vmq+6=H?OUxmVE9HWw+eGx_8w4 zOUha8`H|OmqePgYQhk~clL<080c7(qiJ8i#-KX}gmW8am9%DkqSVcmrsNVkd>>pLT zuyPg>-<$qIlxud^K0fj?>%9F<20@8l`a5MnXPm$PQnM7(tKa*TNFXdO>QAPF{N+gj z&M%dU^#&dE4|mSH4L|G}Gl|mE+wSmJ@w0{1i>5miyuVnlmeM2I`>+bKc4+ejWVG7E zgSLY@r30$SokaWy1hf3|sJ3#wc~4IN`L6JWWMekrIbo5g9Ez2!R=F9Kc=6)1T)U)) z@pxU5&%)8_bQO;*CC?%eOB{^>EXmNat9?nxzUmh?sOc`r+ai+j*W@T7H+f?%iNus| zmn}+?>qSrpYU-=klMu-Iqa>zP(oWiF+hKx?$}mJ(2N>>wFIV2(aix2Y!{$QR&x|5Z zbRvEA3m8c&f6OGycT17i_xr{0R}d9#DKfs2-mt+hiwA6saWWdt^ZCQwb0WbaE+yFM5Q}w8rBR$OrD+A z`}MGI#Qe0gw5mr@vm&VlTQMp{TA9pK*uP_RjKB06B6RPU>iN!SPA$cgalnXZs;IL} zV%Xk?&#*F9-Li7+@;F%799?BUD#KH|B5%M@xJRpgJHa+$eJnYQ9B{Sz(iEy{FdMO) zi?>0M(p4TVT&-DFHxR(Y?vB=D(%^+SfJypU<-eG$8z$kw`?9gVh%W!3Y)^8eh$NT4c4jlh zH5D#XS=cE*wIYNkDUKr_=@+DB(zI7;WaLZ}Lh;ycjI!K2*)`wTq)Kjo*q@$!lINAj zwyoxP*{E`sC@P@y@wcZ*g|qQVzLF8S0c5nZQLDKno=p2iDFQuH_Ni^PLtJ*=1$iy@ z-%=Lg&OFe84!9F^DyYcCAGU~pz&d^FlNj0p%=<+1UfJ833b8-Cy^k<64}0C6i^rxt zmEHe>WMFu2zBv-B(ov`^OoQpjak%-aCL=+;ISWq$(RQ`_E_QY6stM9VRNQ|D>)jW` zWv0f!LWRF-X4KBTNN6)L#qO~?6lB!ci%rO&(3|==;sGvPt3_M(^5&H^92~i>Oe$vBy0!tHkq*kzjz~q^qq&i9esK+0YZC!X0CBF`;d2 zT0$ObpWVNlbwSOZ zPRZA{Oa5Abx4ve*KqZknN~ve+FH8KR#g6sHjn$WubS4AejhP&hq>zu^j+Fdm5w0EN zt5p_2h_LZb#6vo*Ubqr}hiLhl4TXB*Q93C4i9OOBqaPk!s^ zX!_c-*dIaLi_CaDb1g}3zk1o$BZRHP;ZlG~4v@+I7ItzQW{yAHkmgtR`wa(CbgckN%B0LIwAEDiyI_tQNST zGf%6lytY_npwss+g*x1~)`ym@__VmOy4E+4gjQUEpMP6@%+!5doIg}Q#XAGB$! zVojG+G_H8D0#S_2`Z>Ri1Kdw?BT=DtSBJDlI<(kEL+j&XujkX{Un?)$#t>>v-(TA5 zDX!DTw3X*7IrRKJVMo2YW6QKAzxt~Jxbl!5p>lX4gfp1nsaDjMM=9%hH+HtS?fpW|I(qgq8g?%s*p!}q~dJ){zXs$QNL@Bc+hwZ*6Tl${aP{9 z;RZ|BB!YEiAx)X3D7)C9&(o?D_TPx@QebgQr(1xC(`#3_|C#uydMugi*jTP>X+&G@T?G=F)BYw@Y_M;tZ zzni1hH5#Fw^P22Hb_1QtOl!Y@q)&9l*mGVi1T6V@uD@-U4ayIE-Y>sVNr+k>PEgcr z(|U(C9J;!$S4gg^UmSa85E-}a%iii7a}*oU9p=`fw#{8>aG6`N5SP>!BwZDic~p+^?^Ke*3Diah5!pOy zgnb=ss2T>xiZquIOt3k3S%Gw=I~fiaf-344tD4YW>en{uXRrJOBa$<&0g!Mzt$|bUKnK`+GV$R-^0Ks=5;V^s{W|N zI_qVn8zo!*1bX1*h`oOo)u^a8z&K{HPyI&y$MIz!Lmx+#=jaU74$By)W@z2AtLwha zc>lmubf}ZWonkC{5%f{>HWtob?Sg&t>=t63k*pFurKrxSEh7d(BC_Wtsw>YT)zwG6 z7Rq-)_EK;K*^&vxj&_T7_pC}Ky*}DT2VyCjAKR)Nt}2!XZuk*`G)F@nKfYu!!dMli zi*toqa*cD7^{FgxjMn@oRF=1c{IQIK%|jzGpT<1rHZINEt{V*%r|j2aPp|c9Ee`x{ zA3G=$G{yQi;M6sj;a(NB{=;$V2C>57*dt$yCI4$w>43#5$o)YolwVq$^~^qmV^80}kiFmda{Zzo z`(2nZ+i$ENHNV=24p{6v-%sz0PnEaffPp0U%~p&x_M_$&yhaa3+cmVd>nQH`S8J>q z{n6*Qe4qlAT6?TC)1$KP!t1^VPW$AtrY6v*SN~Y%Gq9VCfJC@%{RQ+2lO)D0lSeI* zqSyPJ4LNP^6-zrM)yhTMApt@+*&VShc+NVnZd03DrBshiTY)UuF8$5oe1ED(V?1? z)r*xJ4I+DOfPVVnWa!Xxar0P;#_GLhSsO}{?^O_4YNp=KEqo%}8LEc5OgU9ixCFhb zHf|V;!flCYj8JBPjf-%ejS*{|TOVe{l->dTf4nv~%kZCK^qr3ge4f%7(xfA|KQT~V(^8Yl^XtYt(otWhijzY)abuibkjA65u2w$0QObZ#ql_lJ z5!QS%2W4Z;<5F(L2)AYk%%^cPQZ;D9t80(eL#t2yxXu@RTK|WWj`!<;8F@()2Z{Kq zjqy;$uGfiblQX;LDm9+N0>remSG6-zl{6^~k+_sIefwx_B&uWzDyFeQXCS8VKPq95!g7OZ5k7F`@HE(W4(- zZBZC;!EsQC(Lk{tH4g-iC3Er|)_%!_E;*7m*12|)ia}ykHAEzzOWZAQUNr)B!vl)? zF6t1{KYIeuh)Gah;CM03Qdi=Wku-NCmr3YV zAoM*D5D*aGI^EW0#O-Mh9fj4v;c#Zg!L@8VFi1|5ap)f!jW)$1vGHD^b4kd-+Q+MB zFg>|JCAS!9k56D2(5lBj_3!*(m3-2|cjb3hc z@RUz}6sw}5V(sLVQD9$1Gt5;9W>t*YUWlJ@dwPf*oF^NgDTitn;-CCgP^U#?im_Ji%fjHb3$kAW@~FJl49*@ZD*GZXRHBR>H>>4(A^%k?kCxomzz5k zdt1@xTj+UV*5$(;HD(_k&5T~(P*j!`ri*zp@gZyH@@6b}uq3&-{M#ffco`HnA+PE2 z{N?w&g`@LzT5q z0l*wP{Zbhe9!flsZZn->svb6(lVz)PQh4~_#!@45V4XS87x5|gs#VNswf=w%S|H$(e<-GaEi1D*$$f9k(pvAKU9u;hqInG!>xBMEn0?P>;;tbgC(g#q~% zFsV8m4aQvywW`mjjTX0R2_uN%-v*yL+P0c?OvYA8LXWe zvcVldReimq$8598zvt-s$)_Q0V!qQDCFwKiwdFPWHOmnVL)C~Lzl+a4=LRTsT5RSU ztIRnOu#PfWr>K}S_Za-QRIdJx_~3-TY|8Z(WKbxUR0(HI?jjq7sD7^ibs0+ys}^aU z6m(|NaMi}3o*&C}DC5SC5s+8RN?x9{s+rt6{(DmBx4 z(AvrZr&d6$yVF=FB)j63eU`oPJ_Vb9x{Hg|i&|V7wc2H1jfJw?Z^a}AT{nFr^y&s~ zp#Ei;+B#ao_&JUq2)NV;1xV9O~3J8R8*AH?G#fX{V;ZcobkmR9naqp zA7Rf6J5vD(_#; zyb#MR3v;k~V|mjO?MXI=!`$6{90|LsZ)jy^8@$x3lA)h@Rfn@L3?ycowHnUL1=(h6 zfi*~{Bd9XKa_4%7i% zT@}*K+=f7u{QwB3;)8~`AGHMb8M@@-R0oN&nmH<;Qi1Py{{>}6uZf_iV;s@$VGVAJ z6(EYSp2cJ)&ho1fPuk$JjZbDSRuSJv(V9w3m65r1ubW-^9_xl5QAk_e1HA7-IOKKU zsgG^ML^eX`IsHchoCat96ZEIZWHNxHL%9_6kGeQ*bnzpetA^@r>(9nf1*bs$z*gFO zAX^R%nsDKF7nn0T_7-VqtSYy^3=`jk(H)eL#o-5QG6J%$h#L8)`I1L!RV-Df}n5T2Vd;}R=rSka) z2{)aY6(QlC)3Uh5&>jN?e2L1PUT}7pm>&~s5t;CyaOQ6yh96(mP~JsoxQ~;pO+xrM zDc1mn#T6gWzS8%*2hiT|7*JCuO0oAU9Hy?5z9x*ygQ1mg8$5}Y3UED{fOkM#cH{AC zAi5P=Qyu+P=DDI^dZ0pGLOp2M^Gx6xe&PQ2Jrhw1h@CXSJe#xs3V$hq{V~x56;LhQ zGB`wI0Fws%3l$Ou7hdA&8$N@7Pr{ELJ&Mmmb+dZAoqs=UFoJdsuB>q^EcOqxz#Mz7 zK=iH6lEBfpyO(;f^mJiaYIS+P$j|~%9Y7#IK$X)P?YQw-s|Hp3r|0c8L*xHU?gYR3 zuh^~qfc^&J20j#@ONWEABotFv6v8GL0 z`lkw|edle}9eDMPU3@W6oY0TTl?S3q%>lFd8WY7oeW5U@DO zc2%ZUT-n>s2*+z3My%}8udR-AJ~QA1KFN1%PyD-wm*Kr)dVN3Nzcg=Xv-xx1H6SiA zrDF+fUp%NO{Cc&uuczyPkJjgG#y5a#x|^7|&9y1zZOysAhV3lbq6ML?^tF-J!x|MC z6u<_SFN3xFiUH3*KSrJJ$=50_ZKtpgmJl)R_NCZ*P!rEjf6~A+08kY&-S;4;46JVl z9w|oBu7xsIJ^wXxf}SM<*Zvv-+ECta-0P)!u&gS?G*8sL=ak4K!WmkCO5HSI_rn;c zw&sWW`D(F64j$trfU#77?<74&NmQS44+ZDctsQ(ae)a^(YU;uLzTxa_>AJlIhe`LH zBbP%Ycs3k#^W=v)B(8-3Ib{JEq!hR@4xJnO%;AH04S z#Pb4PV7v4%yg1(f;uc$KxB_l{GxmIa33+`f$4lK^2c6b=`S~8612dT*sxgaYL$I>tibPGY!3h@y4+^CSlECw4FAELhGhDm>e9Xs@x7vzJtgQ1|-3wav+PKn(mzBZ4dL;}c z+cWspB|*N0sdxo>9ZM+Gae<2I*~Z0@g$EbDtpa%+rs6qxpz_zSzNsvaZ(z)@B)5P9 zif$}z5QJ>6L-d=Z4jd>Ju%EV+o(?$eWO%qn!Ckn*R2f+3=xKiSTb3s@9wccTrKrRg zy%}%?>JrcKWk?3E$4gPi!ehTes(}uSxOLc4a=NGIwp2ca1XO?@nnC0-kP4PhK2Y3h zcMa)%(sAKxYI4Pw-*r5ZpK>FZVeH+H`5+*B0Fjue&cLquUgC{~eZuA=??G(%zzc5% z!gT1)on!hn`9%pfH3h&i3{`l7xfTQnTE_(0u8SP##gD}iqE~^*;BP6txUkCGQU>o; zMGX5u(Fgtjr)b7T(ll_DUwmNYe=#{rNHd_WWIlP?FMX@jDJ(im>!Ot z5(fR%Ows|_C1`7W@_(C5=L-;48MN5D7Zd}Naa8iZF%WNBcp*2w{nw zKPWi8a)sydwSC|`X)|7*YNAg=@trAU-CywTwum;duTMm~vj1gRYR=%{@P zkiv`>4e)EfIt9Y@!DG_#QIA}{^OAB_+EbM+dCd7AqWg9#&jWyZQVDb%Wv&XB7TaNi zIwo1$e($c=RUO`n#!G^Y);*u>pW(m)qB)ZzO#UVJNU5{to7%$>5M*O_&FC(2SdNUC zuPtn#{7F3v+h(J}tl_P~VfyD|^Ecu+tNnZ+5K``Rw7(6X3)~I^StDllI;1gQIw~vQPnnf@ zy70OpEWh}N;ij+>Gph@pX$%Uo=^>_SdoqJ`tnWEEDLCr!)@B5RI_oT~kjj>-!jd|Q zVsbXWHpf8g<)%O(gFp_%uMq1CDg2t3q1y^LlW+s zn7f_vDe%U(g`g6Gjtf`luce)T`Bt#HpKSptk=5xg`NoUHROP-8TbAS|)htVM88z#0 z?v$$z9MvC~#q6u-Ea~wGotSYxe}FMHRfc9&G_DWptk;owiUp#1ss zfJ`PYTYdg?yeh7Efh$zts_yQuq7Ch_gh$&iVJ)qA2JZ~BF>tMaCdwJlh@rjOdxnSi zi*GAcb%ljA}kd{nS5`5xg$evvovf`92cqMSVcZ=K6VsSF_yh|#&_sV4c{GEfdlIlO78+v} zF`$^8!c$BC>W>!)IJT!aK-2TxyLUk7JfChe>88+1Om9z`F{)=!qUrd+q@k zAuMxgOlKny4Ojyve)Y@zsyr zXm~jpj&1;rzxp&hPo(=#<{QR#5X(P*GCYMjV{+yY{4Ro!_&Q4VGhpku4H41hW zo;VGdh-V^gg`o?1O#ec3GLO#Mw__{wxz1`@UQf z>8MnOm~DMK+&d+8^`AW6XIPKAI=nj9u2wU^9)&+@5t0k2wF^EaD=W)+WmQ>+6SrCn zC+;`X$~ak>7v@dR)$tbehm|x_s~?v$CnBvc$H6zMK36wPhF8G1f!==6%W^-GsRSA< zFVjZr?dnpa4)Ul|f531wRuxJYPYGR_z{)Opg>j*3mow{v4rB7R+VMdV<$Lj7HET$< zV^w-T%&Z<6X7HfDt|j#Vnp*Oo7Vd5si4cv!;HYe*A0 zMy7He3kdDR2~cmmnUpeN68sN;$qsx4`{nQRW$T1#sl;!cED_a3X73n3k$BuZxR~{rPkc382ciPl>RaPrGYA+WV>?W zkIR$r+1ntUipRTMg#G{M4&l*^=zrR@vam%f_R-t#6>&Vy7(0M4IlhpWg~#R1P3Xd&Rn0 z#}ja+m^_*p0SSO$UWlbZAwZ?~Qx0P?PVNli3kIm@wzHmxwcpQ#An_g^Y|sZsdHK}O z7qT+9$`!YDe#}?!YTBd)mtR0$AIQ3jB344G^OQ#A^0o&196id*Q4 zYn?y;AUX{O1r-s)q56yrUP30%Ycg4@9xEiVup9zXH5KaC7Au3_V0q@mPi?zk6cU!V zwX(s=IZGjzkhu%T!#?W(_BBKWn1SS20}T{KwIYKc;}*4t6t;osL6pS+c5=G7;tafa zXMowUw|JA!zl^N!xr$!p-F5j;17OFwnTHL$M6KHGk8WtH0z%l@ubWNd-Bf9@I(E3_ zgWG8*9&~=}_Dhhh!o*<@2ybTH%TZu9;)V~WE(uQG`(*y}C$-HULk7q?DJ^T3GA>R95Y( z9;7i!9o#NZ5IUOhE9xG+U?4iw+F>|jjYkzMf-&y~dO`p+|0Sm9yNUMx&HQY!s~TAL zwn6n7Jw3gAAaM|!e&JlnRm7-0+XT3yYW(U(>Y~JqZ>Y;cf3X;l#rLE)B=+3_CKUJ@ z@>(40r|c+HIStr{{OU}a$iP*q7+4_C;s-teWISplYgNYEnq>Vce|Jv8mwu@yz zf_@wxq-WtXWn{8>FTmk+-hTP=o<0)?mOk)#q4BPznVq}r0-qWrh6T3c(DR2+#a+}t z;$1mAx=l2lLGa?q*2&ekwhn^H?+59z_z57C?L@CsK~nG>pi~3&qQ$$XfIh(d1}z^3 z6o=^dSbXTl8&P?QS^<1!1|>Ip4d6L-em)ubr?4uOB_q@^$DZA#9HJDo#|HjxbIeC~ z)%xhV%{LbaJy#h1>Lsd?N?I!U^^b!g$Vh;>t zIJ2W*R9@;y=y&eGFMN@L2Tu$L%=RL``fKQsF9oj#4h|CtwQy7=b+VHlmiFY_VCWQI_J9 zX}qB_2(5%*BbDp9Cz5!9&CJ(ef5{&2k-{aE?$@UNsr3wJ@u%)^At6bCpZGQmt zY2#UN!H8;7$3YKiB;G`S>vhdi@F=o@@#s|`mu)-;^pre)CFJ)P3-0NHjOqrSa19E! z6%rNm<*Ab@Ab^03fp-%LYFBFn6HOWr8Q7sC2K?|Gm~hV<$=cMO3-{|^M&+&9(=D4j z=6EZ36*O$%s-LfuSO(}RJF|E};X$T7WRZu@F)w%5`rJ7(6VC`Tk-VQvL0`QV4R}RU z0g#A!OKkC$iEI1zlsWzyTv~b1I)vdB=eTn`LPvQw=&))1@ds(X()9E?OTu$IQJy`& z2Da{0QmEqzwS%ZZ>6T-Pbv!)x8-xjkqx}-Mooz+Sb<2q|wq&^z7+`aE0DaJzo;Icd zoJMrX`#gfrA%cg1;R>63ocRRu+P&$azHMh*_}ixuYZjX)+?KpnD+5!o&mV;Eif8_4 z9^erOLBQa&p@h%KKkWJJKIk0m$JuAFryp)(S0x)!|SktG->fC=Nr z`R|BUcgh+N8w-Xo3fc0TO9*bGnf+0bAXI_kVt#fJAjWZBD+QT}d;wrwphW)q)P&TX zZf(ih)&!O3`8^_o^E^IK8Q}9fFJZNIki|Vqvk682n>T#e33e9tJ;_#d=}Mo_&U_-WdCa&sGX-VV~L+HM)1f3NF&%K1LxACNKj*`syAR)TZa_UE>FVp zRR^1S3>RhsFlcw(l`!ndXq&K$&g+x6pj{?TqG>QdKV9BzKqA7x860S(=x&iggFKNX z4}X1GUg-oPBgC(M;$52y0^MG;5XfiSYGg?u^P)K9wE&+?+^w(r9?xO5PN(t;W_l8l zN|?@7u=Rr<-hNR|dvpT+HsBZU>R#f{dm)B6Pz8lz{##2B1)lPR1+p)!LA4>nUUf?d zzWkiq`sr7qU{i{Z7&z*J$ceb5?(y;w1zdo@7aex9c=v9{Rp4vhGGHM(z=b;~=}3Y( zq)-f;EQfeh-=I3!%(S$7iXcU_4QHQ)fnWqCH+T>H`LN2>o*-o_fqtx%H}7Pu^#Mne zEhvY9(p1Iaaeck~Dr^H_j5n#1%{Q>Dn}03~iSy1Ury`mSY|Ti0|v)C&hdKV$PoXS74yDQk{(HMB(~_{;>lVn3Mg*s^X~Cl9B7Cb7Vs06TBNF=V>ww&*my_GtFU8VA0J1OV{MFLZQvB`!@N6e`P42(}pEx7o1|xNC13_;q zffW3TloEzOO&rjNfb&A#H1kt_7uVqIzS7*>(*QnROl^Ok8fOND!U0%Uyl*V=RE3?B zl~Te}+TeXhZjt`JIy38+see^lE(Us0O6%g@b#2|H;?6g7Gv*DT+JI0_C?QIv7QjSE z_(3po^>dl=`Fd2(ed0^ zaM*A@xH>2#W*D~oKFob%wS8j>HsRv|oEr$Xd+%$G(1Pxl~Vrp1UyimD3nq*h=mxN^c z5+==TnJx09H)bk>FdeKE`*&PQ=K#hj!^Vpo+Gu8-mzRUb(=d60RPXu!W@3xW;m{Mm zkVxDceAa0;-^z1xCQJ}ZZc>l*NhxHhh@12fi~ zc?$JBlB>1xQ(ybRz*2+SPD80(<2=R+S624#echv+u{Z>MH|p@{lNAg|dtRf@gV|x6 z)BqHBk)H&&&}#N3>@62Dm#+3_SW z9%WHI`>wDYBMVe7g~8|66ms3E=OYZ{g}&YQ?wgLuF@;!3KAjY)%t&k47X(Uf5TpE4 zSr+7{xq08rj4u6PRV~`1r@sjy05j$}e_OP!6u@-JlD#Qp+Yufe)oRf7?>eqWxaD@j zSs%OouT#2WmP(wP^Km#bee#mv+Kg`Stj>&$mt!?u=#E3et) z>ksF@bYN-l2xKeOiJmoa&FA>t0}NRs+WO;ihN$yn$y&)>ypzPJ97Geci9^uDSB`wx ztUMk>Bsv4JA{ z&VDE|cv-g$u(_=XwM1&~+`V!3-MIZY`I^y0_!NNKNR`PCiCM_SUWFKTvGhSYq8X}- zY-Lbr3}fhE@}Ut)&>1GUm1mM%k5e8KsTkFeuGb4bgMSc>L*Z@%E}t;6n; zwdD1r%~AN>w3+*$SQ~Zx0uLS8y_n$TI9bb}quM)%G3`#Em<*z^8pQZWTyevjfdt&s zY(5a$K3qLk5a@9z0S`EL>W<_0?3_UkhkGVqive#chl8nsJLVIKsb5O1p(YMavi;@; zJeku6Q!w^?rNk0hEqh3NRCnF8&mx0ha38F}-_KeJ$l)GQLb^ZML zVnGzmSLxb)UU<-c$=>AP&&`vaH$F3|plXfSGEhkiezzC9Y;ap)(*-hj*N)}1rIpJ@ z9qU`8*wlb@ZQra_MI*1POQ0*5S6BF5PvJFY%_Ki)cOpbwOr(1(!>=iu>_}| ziVWt_;04v0mvz8&As1dkw2hh4FRZC1ef$>h@FfKlo*s=y9epqW4W7_A{{X~jP_mLX zwE0XE87y#A!kF=ZfeBFh2kM1{@^0!kCOv4%kI2pQ2)z9h_TO4Ux4j@jbH^8<4)B(r`FA!DcKLNS}U)wSE7BCaY1wDm0 z+_fPMK)KHX7Jw%R8QZ;oy_w=kh=cK(h@AvkG9U=SKKiR{ zg6^Ix5G6n03;sIUR|5c@CcQlSg;EqD@E_7OxwB>Z{QH~E2v_4S;9YY7j(%0VuYlv5 zvzj6E;=Bpz}u^5!?5(rNV zN@98CNo7!oc2=Ae^b(wQ<5k~EM&G>Ufq54(zRD=)lB4@xX7Lg-l^Z@PgNm3qUUYU5 z0grO1;tQdFF6~D-+VTban7!HbrAW|LzI<#M@L1^?)|p@eW$Rg)=>y9k7r)QhRoi^8 z-Mda?@SOC_o~85#DG+hYcwz!&P_uQ;hpG%#nWDlB%zlFOo>wFOZwMeASH#2wY(W1= zl;OcQVSu0kzJuX?4!{!hdV^lIH}EGV@tYVT7OdYj;&_QhthdS_D9qQbpN1ET+zTnX zOaP5RTtxXQWdgSc1Gijw@;5KPOi)yXBEi{=d07d~kX6^mHXMf#Amh(I;par}Vb?p=w|Htc>hlz4iF_~vCoPWTpY4z_J<>zrz zd#*y1E&##+F&T9a=qpCw3`AqB?JU0S;-xUhpFr$gz~LrY3%>0G*EPzo&VxBTtxEG9 z?AG9)4?qO~15_rPEB@b~yT}+cpXR$fJ_njinJ_yHv~m*I<@xjuy2dA<4|)3aytNWW z2-NvEy$k@u_irD&{n@$Wy8=tlCpx&thCz5{qQcw4&rd-=Kfk4Y0jzxm@R~_D@S3o_ z4&YmOuADlY{O)b|+v|!L^hW28_y1Gmgv1MjMVDI&*UI|8C0Vn>63 zqM(9+B1NP_LN6j95C|X;Kp<4H94RUyMd<`cAPHy!(h&>CD4iq{s)ZUNDkPK;xNGx& z-*?;(_kOtJesDO3+r4*oS!>Pt%-?+W{%c=Gn#(JMneQ{}|AJx_K+m`yJG-d~)e6|T z;qT7d&O=jbK|eTt>%aF`*3F%2Wm@?~#uX$2<-OTuKiGzs&o%G_w|X{hYHm=SsXwrQ zw6zDqFG#zSR+~4NljG1!UI0W`MVZ#bH8?;N{0igJ{)T{pYdfJ`jXsC*CPX3tCI@gb zWqX$l2(*i{))P_{trrUM?g~g=4)j=$a#l3b zIUc+mmjC=U7BU2+p>yE|C-Z2pe>Ihy@W}{`1-Z55OR&lL2uVl>s1lXbaZzYtzXm3y zRJlJQOV2v*`$>#A$^;$04*qXJC^$Qnv^TGB3^027%zq^2?f0OF$Jzt!;}nADNcIOw?~Q#9^j0C+=|7`yo? zM~|_O=k%Xt>nT{a_Jx&i9x@sGL?hI)DFXiD zAfVAbS_GUx&Kq$Biei3r@AiG?um6s?*wVjrqdE&>+4Ex8ZbvQj7!CVz_giRlpK=CX zwRg1l;9ddX=ghbI16#$TYhEh*r(AA9_KAY0b?M{tup8{@>1wT?uixsd^rW$zM*i%M z0+_hJ!cwdFY`gASHK?VIXUc+lI)AoiFyNI1;P`o@@TN~qJem@jvLklsZCIb#xq+X< z4f7^9)TWbVT6b)9NRw%mOP~WMiOmu#8)K1=B{e+4os0WV24`i;)|a@Qb8+E7rf zEy_)76#>tP75mUjFe^P%gSQdB=+1Q&(gmRKf7G6kHj2p7hZH%N^uJq112^h4e?F;( zr=!~FXAR7Z`x`xrgoYW63D?CHX3I#-Vt6cbWTEt2o$=h?TQ?80rMrFqQLDZq(@bCR z1c1*Ce6l(yfS`?X=?F<^x}Qh@WoJ4naNy;8u^%QXb?;POkBK-ngb|63R2u2^H(0ov z`VeZ6cuFU4{8Q$j*2wSe4O2xAhyH-pg3vy;>!POJL!FBk{k6ho&!e3FET4RGbr1j@ za`$o0&*y6DzhG>J4EOZis5NF)?#gdY<0JZ-9qZT*I?RQ4~g1`LSIyS+kSp1B^71u}Y0 z=vi6J!8#o7J)xpvJ|r0S#z9#7dB;S)wx+sWkJyXB8uTlJhr0)$iaM1F5W??$A1@tx z92DC%Wvo6aN!3-A5%iQ0fr&s)5s;8r|2zxYu>Jz~1xOx_VqSEAr8sdBVLP^Vj!4}E z{#X>@puM|`nXObSowTY>zMY~BtiOiyKTmW#=Ri`6AGwLwy#NG;_W__h9{#sa9SvZD zOo_3Xgj0`c^+KeLDeF|YDX4ziSA;ngI(>D#9PR(FEs^4LK{@s;!7BD^l8kfL34k7i zcR2PxYux!mv6%G-;x7{Vzw=-p}oc`Q)?6FTB^PCv5aj> zWcO+HlE!*P#J0MeC*^xTu5j6$c=7!~R~Sm64^f>8v8%V3v-)41Ty`}7P6?!>rf!${ zhWQ(ZVx%$dI>$cLYhKF*Lc;TF9KJKPOf^Sh48-D~(nV#MkJtj4NC@W**bnmy<5F64 zjq}d0*WRnfd_}#K{y<-=Z)g~_CA)Ga*oSCQb4|?V<&HoW09wXbQ4dick@LhF7U+?I zx>f3OLX*P9B8LeTZy&7uolg$cERr|{oCuuxb2Bs;;H3SOsqsT#mKVx817;K?pZHj5 zeZgYAU&H^)^?d%&e$NHR zsI=4lqcy0Pbjb$^6jxW^t$=FJJn0Zzz9Z1Z6E8IK<;&Cx&o-sjwQK^8QqpmC`-*ZS z-8_+#%8*&IN7WalC;ab@5H9Ii!375=6-EcVH+)HckYcpFF6Rn9IdxGo(C!r{zaIku zz7X!}ZTsQt6^c5T%|+Kx>i6;pKnk@+b_zSc?HpZQ0uC|{v;&TO296a2ZmXTL=XQZP zL+BrNgy<3_r{H=RKy?PIV!I>nr9-T#jSOh$R(F#J(~7hHKT5X-Kpr5}RoZ!w{SZWN zA;Lp;&BMyz{yse;67k^SkzNx2GCk%w(%$b&pps+TPdyNd34PWsdA+MlW7Mhs&`-V3 zcdt{Geafp#gVaTTK^sAuxr=%31!Ws3;b{GOpK{rWwGYmIa~Eu*$qP5W!%u$%Xt+uo zpiEe5s?hRy{pX>$%&I#w^*aoA)d1@ykYPxS5ujAJb;v+S)qRHhqxI6z@aE`@nkp#0 z`A;D!^Y2!ZFMuWhsd_f~W$*5DcPpDzt{-es)s+FK0<>r2ofC0$(|{2Ww{Woc>u`_# z&+G&T7bd&+G?N!)5!=6t1dynu1*8}r7X?53shmKKv(YqA?>@;4>vyo(Fh)GZ1Shiu z)@W@Y19JZu`T=B#x&6DtM1O-*T@L_pYXKlNRc94Ki?3_kT?M%gqb(*MskU+yT*C_^ zA=S%URO85_nSdw_i{T__N+9fHAsG4kPq6DAm*~A*z+tq^rX3|-_z@1uTZ&Nr`59YM zzbpOYO*CNbm0hlANLe_AoWEXnvNA-w5IXJ8!}N@-W*=HjxDoJ`bNtuMi^Gip71Fc~ zHpMGm$n{3#UCA1}(hU&w1LOh1(G%!MTdT_(mn#k~7Zhk%rJ`4!b*6p+`Hk}LV{PDt zyR-~q-K;za1&9>Bm`=sP#sKXHMK(`GMIyHJ7-Z%qZdl&^J@;D;&_e$eT1kR!7eGIO zV5EdMIulb>TzIz!s;SVnf+sOMwHInBV@@st_1ABUcx4X6BnZ)9)1*7I3nELds&Pz& z-2lL}D^KflpdV3pFfLPwy4dMynY+&i$vx6AUs5;T{OEIOik! z`zfILsiUBD?6C?4Mckh&U}LrChrCg(>wqJs0=^h+B;S+|UHu8`k&_^XM=ds0pZT`= zn=gLbmyZ%N08HRQKllQOA76s({k|$P-ZCxTw8^O@kwyD0_VS5y)TD(z5|IlXGT73c;{w;ju!e> zB0yc|K{L;P{RaS+X=AN`i;T;hqS;pzQ}o)u65qhqSfe7 z5iiW1Ye^%6si9!#@zTxsdiiKzI=Ah8AH!CmiY`wjZH$kny5RcnAL&zxGuq|rMb4!E0V8uuzU zIPbXIV9?t=hh0P(&e^)9+lrp*@% zrpr^YV4Kf7lVO7JXjsq}z{uALjqLoqp_N60{JSVZlP$88x0Z!OAils<>amE*;R2-(btK z%KjQNI3@Lo9=AhLEnqAc`9H<|<$FRpZ~IqELXQ8eSNMF>2$Xbz5!Qy@GNCB4w3WTz z98C3D2I+e%Dt_0={$e=lZfGZYV9ZsCir#{3FImy5fm`ZigWQf*fPs9y`OucmDgk&m zoSz4}MB|}B7`OaTNGA~>CxE)A%Y~?q)h|8SkY|7~mN!s3>v~i%zr8>O9vFi%HyLcy z^-sluZC5{-jG_3$pmGflRIa6qZM+p~s~5rK-e@S4e{d!^$i(~I_U%U-yIs)UCj+Wj zviZnUBH(8IXFGT)K(Sp#HLikxS?t#-i2M+qnhc;HC zthv9&&K!6Q`qKh2m(R~`9>arWo4%oF3W+S4?g1V7NrFUR{YkulK$|>IAnk7a=RZ6m zbj;&%x}f#x2GBv6%rBr^E+=@h3f^9@=T^&g$O4K2I3|fEq2`yMp$-hOxaCx#m;|6` zF+kH6Flyax5h>hw&_{7YT6kn6r2D3y{SgGo02zS9wc>-t zC4N9Ni4gero1X8SYZGOojXEq5qRoctW6*dOO4bw7y{rc0q+dV(l!A43+Z&Wq@4i0) zf(_IKT-cU$P#v|Ie1tK2vU`E=UnkS-)D|PLWd9!Qd_FleBBA8fVOOCvdobWpEf!8g zV`9Gv8yLlbd*ISbdhhwQ%Ar6}|6jn2ZJcr61ECm^5;cc&tBot`455nv0C1|UN`>S! zp~inHqD$ay0sh7h4U09-p8Zh@>e7qO8qYga)$2kv(be{!4?Vsg)fDjk_iHb;?A2W% zpMnl~fIfx*DN|xT5UxO7z;_)yk~o>{Fuhs8U2mk{e;%iOfzofN5IHNVuoMUEid`53 z1KFVKA2ySw&C3ELB|nx!s35&O2O@Od&+wK(0F!GDR=Hn^!Pnt{k%0_vo8!gYYRGW5 z@~96TnPL0!FX(yf@o*G&7UqL!zY1!dCo!S`e;)Q>ulH-&*}=e;;h44g{Dz!cbdfY8 z@&Ls*9Sa(#!`!33wk3tV5tFe8oVfPVSYp_G$GL{sD+jSE(`ltp50XjAODG}(1||?$ zC6w&vC>;Iinev8BfJVTO57fTgwAeI91%I%-9A@JOjldCqD0zq2diB$L(@kF_hh&*@VPCka=K-xkBG`;`&njmaluxMeQ2r<}@oxn{{Qw}HF1?d7N+*v4=Tj7QV z5Iqmr3;Y`y8Tp5tRsR4r?41LEQf8vlj_porxl~Y#b?Vu*fieiCo(1(vi6cAqU-SX} z*I}I(Chf6UY)tCnv5brw6df*c?=4i$-{RLQzIn4hpT~h}%66hUtS3iJ{GkGTj3APk z?4=eN>q5aFQ%*7__ax=M-~LT}^S7EZ)d^IaTw)BnoLpUMxzTAR6jZXov~%r?elauNLI#3ptv7x$vD31FLIPwZx2lY;rV-YKW9%_e_ z->WA5uTtYq%>jcf*jx_TOPXOc&lmi>K)5( z+Rc}?$ZUyGZ)G%vSAW<7$`aywO6i*$5sfoQ^2^xO_Sn$jgS$(e0-NX?EflQ5!Fdzu z_Ifccuk_6BFTh;zMrI}YRZ_~v_%rptChV*}NZ@YYoJb0DkZ}QwwkwH%E9z@Rh;Znwt7?5Y5E}pCJm7E{B|r z>r_~MqwobV9D(aAJDVsTqRq z#c4#cX}|B{zTycbV5=B(c`e6}R9!)C&dCV{n_mRUGAE!KIPpUNtYhx|Wclwm)j|ir zh5p|R?KcAD|0gGWWIpf5T$k^FKLdyv9RBEfGt^fB%>!9olb@hCPsltOO#W#)E9KhD zKhk-S+l8#091+kbz@Hv&cyXB@;s})7|MsYl{VfygK6kq->g0wmB-mfk@T@GAO={?D zp3j~8A|F2Fu4G$TH8V4_I#jIm9O{XhU7pOZ1sWC+nq0I53w`*FBpEo-|0>ImVF8Y3 z_L&oCg|D!4GBY!a`Pq|UCY09x9ZXEN{LkJx-*bu(w!6u<8**BvMq`1)i$9p)Ydk+b z@fB=6J?g2p7wBgBU}5;wsmVSmk)&rJXr9=G&U19rtlPRt1d?fMNpLv)kID7QHqAbs zJz!}nY>79bUg#GtkA!q-Pu8>pH~yOTE#>~cSoBEaz^(^(Ab%H!GWtDaSi}G=p z+n=Y}!Pnk3{5`k^-D=(QgfYj-A8)4R#iqo8+*1Fa^U4|0K& zbPJu^j=F=N6TqmkrCH^#*UTd(9d8t&*nYw8rT%n zV`R050XuH`z92TFJykwzJj1R&@k{>ta(;vS)(>U5zqm{{$T4UAW-VxzCAu`!lq;Hs zJkXd0fk*g_TA!Xn{BJTX|Gr@#4?RT6{R6dKFr_%J@&%O=V=pMl7A+&g*u~+Whl&OR z8ahG$yS2IfHas9A z4nRvv9p?$G=>gvVgvsi!d%B_NA`#W_g{K!J($_ks_j}N0j+1tf50pt4o;iRXd;dcJ zjZfokQzP>vAw2)pZl4TBr2 zwZ1y@EYd%^ zkQ-6*na&`uZQuLqtp}aW$Wg;=XR?HUT6$lztBgU*>bPpS*F(;&V7P~)_sqfBqpG*J z@T-h{T=4Qst*voQ(E0}S{dC1+gMe$DC zuS@o=^cuLm&b-=u6`i15}m5L3G zInLUMx)a=}|M`l?|9R3=JubNi^zuNRchJf;SQk=;>+@ym{scuD6jSC^ed6=v6*0G# zm?i-bOR12Q+~j6slb#D&BuR7j+-c|SE)rg^92WQH-=5ez*oDJRcJa@B zG?=EVvj8Et@Xkz7E`uNF98y5D=v{a0H-*?vrl1%@>Piw#(d0z(6Uk`}UvB^S=ZT)uHmlo4`ACJW#Hbj_X@gm3v?DibaMNhj`6sjpm-E0`vLNP zx+Pq@FZ(zAl1ScVPbwB1(U}%H%O!*Nrbp>Ivnhem#ZkIV7N@&+ES;yMTluVkh4Q-| z4tBRW0`1Il_iM+i`WC&}1eOlYXv=6o<8Q;-!#$l&pYV@P#GTmb0so28^hPzAhVmS=dOf*Hi9pm@Vwj=nA8Ds6HSdptI|vSdf?!+B0N0Pdf@U z_wutP5@Gtq;iqPHxa8X;UN8%d>oIp7H&%p0nTghMRC@`x@+Hprjmeu!Cs`nBz5n(^>`T8b>A z&fOV1&`ypK8cM+uEl()?lK;tVtrt6>DQEZZ-ay5Il&k9LZp$>gA;aJNmUaF{gr-c+t%5y9 z^+>BtMw;Qm4!{yv##5$zP}&YvN3oWuhwB8q!C`ND{57qP2R^xk-4O%9uXXclr^0*Q&P%f%X3)Zz{>pjRRt7V(= z7yjDihW3g>j+v2ZwTyZ!>;XQR&=h^eZJ3 z&E1VqV=&vUeX~GLvw2G2Dc0tMRW|&^(-|$gj>+J|gjzV#P&`Opl{+lMyOLx)Zo#(q zVnfmh-{9uU@1?Xd9vaSs%732glk2PbSLSfCp`62tQ3C&79xk~cmZo=#R3h3*)=sDKC=_AuXu^@wY zEfyt5-;!>=8_9P~ZaiI^dfuQ&)li+eqK14Vq2-O<3F7X0ElInn{&?&~_$AmcR=kg5 z#bS5oH8;wL%~wj$#5tz#J;E``Se|$6gvOEF_?d#z{NS~*9c!(eMvS2ry^FBTNDGtu zLh2ZLr_C}xoYd{zA1TMbAT5%%+c~t9#0rs*Mm&RX0=vT{!KL|f$cfM}a;{Td_jY@> z;dnt6DOAXIXK(y9FLSNW_@{s84kf!zCN0A0LTC48NYnKR7vd7C%tt;*9Mv?oH6zE= z(=WRXmb#V|l%VbS8Xb1_-8{{`f@`>RFEQ(;G}ns7RZz?JVBRsJI<8QQ5Yr_H@wxEE z@A4`KW<0$b=Um0zI9)nGP^s_2r#m7K`7DDpjFt3J&n(wmD9un&eI>v!(|y=(rxHEx z2rLD5Id;J)_J_F!%q;X+Q5PO_ju(QGdrq6|uSTk;!}J~JWL!cY4>n^?T3xW&R)-pp z?!1~+O}pbv^zOxeDlfUBlCHSuerFJx=9{w`V>{f z(egi63vVFF^r)C0hZSxOm@Zq)AptLXI&^nMiqkG#J?mVIMI5n{+-Z1IL zMa}!u68)Wo?tPcE+&Fin%(;0Mx&n%X4R{Q1ly**qpx~8fh+TSPFJMF)`nR>=Q9S|os;;*(MZKys4D}jx`ZQyBe4^4Z* zU2}C|*yiyf%NSVt_CGLfO=Cv9(IB2S*n_I#%4QtRsDSVpl7_YJ^9qLfcqpl7l0M0Z zw;jKw8?(4Dyvf5jtZlZklnq=^iZ)^%KDh z{biG-iu7P+udV%NWass*nNk@rE7k`vh>5PMtW@q$1X;m^jU43YuD;cM{bv!>_Im>A z#&<6^mDe;OP9SFZ$one$+K&~poCGU;yakq~13({Ei(s&&j%A4UFw(N>S?RB~8MpMZ zZl|@KHt;gbut&)jc(8lSrMweq@w9YW1}!s3#*AXo`?7e^w+N;!b`|YL(9WOb7M~~} z?6zk+@~ObQa{gz|-XuGD)oU3whtY0H9Lv#H$FP%*imXYWbrJ^m9VhZyEj?$x+G&l zN!|w$6dI<{v)#b0V4@<(xBYZZbC95fl!!PHxUc<+T&hlsxi#gx%D#8UishT0A-5%H zz|sD!zZTN#!p2Z5#au@p(TjG|ukfXo-alCbKH7Lj@vm1|I%HY_<7-4{6~hmq((Zb; zT(l(Y0Lu21gL12LS#UwV1oai&xH@JeH#uwq9*Zg}Ggyiard4T^cn`mPc6zkC{-hD>7&S(!1Zf-k zM=j$~Nn9bOSk{c*h@YMQVKr`^u}#xG@1bIxhwnPEtK6f67N?V$lRR~1M&FLV@POx6 z^s@LRfr%O|T~z9>woBtS*0^y*X%Ak;pUj&cdxPZs;$s}M~Klafrj405QWGM(LqeI90TOGnZ^ zU!wwzC$Nl_?5pZj4-5Sdy@n;0D@I_ZA=OG!Q`P{3Gu0V@^jikO=37pLBJ8h_q=Zz) z1D#1X(1z16EtrdK(K7B?Splt56Jfg~Gq!Q|A;Ks&@cwtwKHf$0FB$9lEuBwAi3;kO zmgwg(H5VPbV5||TJ&>|6*sjAnUE9eGDMoc-o|NYt9yUktwV2a!C4!voYTxNMcBAqs zI*OWGdYaAo7c-PNlE_peaf@MQ2t0p$cPdQkNoX8XtXy;R)H{p8u^y4v@Zf&WNyz24 zLVE2}%c_apTYS!W0jyZ|d$7GXtE*x;Nv9080t!U0j&lzcyQyJJvu3l(unmkvz4}z~ z@A6vIW{kgbtw$Me8g-}?`-taDxG(!$`$MtYrvBt_~|%C?$gA_{Zbd3AgVs>KIh>1xkorgI7{8rypZ> z50w`8d+ME@jLnRvnffi5cKyT+I3-0XsKTs@Rzb^Cd9en>huOA<5xbU&&lpy$pF%0x zG~b4Q3yh)3{xwrGlWTRid;P72m|}4&+)HLBrFKgH1=gl;xE-t3SD}peS#toOLOPQp zCNe5BImr*;5+)B+q*{K~vz@m!>!kBK##4oW)>IVw0r#ss|MCaMUw94UBnR(nlJw}Q zIMTAFguIhSMZ2b`jZb&*xW4!?svn~(h47|3=?pB}NaAYI87o13!2uF;CaPPre{WEs ze3M4^gBaHwC79P0cFC^`m}4Zz9rRwpEZ&%=uYRN0Pqtmdy*In1bBMaXoe}&@f+!>Z z4rAFP?1mOLV%|tLVwPiw#h*vV~#6&rgT%F<_Gf4uRD>=5}g^yDoIVfr3P<@uGv>5EXjn$VA5?&T;EA>pm zX@E(m=NcPOU`X^fd&vPP8n?6wuN?>Xh*u9L?X@4A!Nl7f)C7Zab#g;N|m_ z76cVdHK~Dc$$E1S_*W;ydfWa&c~{Cb>DDzWiSDk@}^uS+SNR z*#J(|LiUHBZw)h39t0x`?>c!Ik(q0#Sshcpx^fxU9$J7G3@T2sZNkSDkJ67UXqKbv+N*7UVZ)buAK8%#@ui;A+WJqwZY zU!al?BMuP)lpcQyHr0vf|h$3}G{By5^o~88Ob{hvHy-;uG^nVCj9;bh({7l zGFpNQ1Wo2kn3rYO#OT%)wssvSrGiq!TWpUjqXLol^#ISh1b_B0!NnXZ#^(xuJ+EHu}X-R!93K4a68M{@X6s1EK&V+q!C0-(Rm#A7H>=!~FsnqnuU;E^9rCX-blDy5_ zyKa2flZ654X2@N*J~5+S--fBjdVI~jNyYty{0>qHC;Bu;(x-XCw`qn8k8-@1w13MrdIZ}P zd_GgTxCO5^oI6sF+>0FO+hTPv;u#!kF6c;V zaf9U-SCL?Bzu8Gd9T>wgW_%TSISEQ7BQby*nW5BS_ZR(^^|-YcVh)E!wwq~}EfoAN?0Dj{}GWr}2oVr|XfZg4qxEL<)LZOp#nK&;Y+51z1B z8k`=rwY7SmI3b-XwvuGBem7>X^5)Io_TFp0DxVd4w7S_8dk}U}cHbqm0cK~fkT6JC z&J;ZiUU=`@UYSswm=Q*hExhJdT5k9Z-sAor04+QKwSAAgpTwLE zoT6Ork9YQc-e1De8}<7-M~@~dpr04Dqxi%>1!yBCEZL4v;Fgh;sKjY5thmVaRp`m? z79xg(eL<^WSyzZyHQ}dZ`VN^ z8K*n?ysZa7EI&x#Ma@V$^G^{EkBf^%5+yll6jyExydC}=?g0;X4A*p>3be90fM&0# z{PVcuud(mlcZ+f#Zb#)T^xfaCvhs~P|40Rf5b6$QMIgqwN8t-T_X=|(3WKJ`$gD$6 zu1WfGc^YcekX|*oeMq*(?i6#J{41S`{eEwmS8X*NdP-6Z*tno$r1afM$I)A79@?-S z4NO_Pa%&8*G3ZQq8Z4jiw_U{X{=a;k z=o%!!jlv1@biFd*>D@z4#MSSo22eVsVlX15AVs(&9*w=3JB!Ml4nYZg-#K7w^p5qlo*p+Ev1-34<=Lu zYQWal$R!=f{p<_OcBVqglYQK9++xAAXLNRG!a>RiudmAlFU%bm9ww;37^kf$G04qS zZ8jF+n$Z#3R$^tFF-M6$O#^*H`&N3nxal}tijkH`E*8%rHhW@?bIMe$+zMc68ZfF; zuOCtf=Ixx6fZL|mb;4QN@WV-ZVt;7)W_>LutGJ$cP%G2=*;bNYqAuMziz(=1FT6;= zp}t5Rr{+=r_Hmikrd;W}Y$|u>nAq>Sn6@HEc}_CbHS`gPMnKO^BjG~-1H-RdUD;Q} zH93{kywK~tlg#*Q<2K_)b3iHFehm$JNkcBIzEpcgOQ79FsY^xnn^##nY30HYJ0=C=Fa!)a=WK=|I*o7;zS?*p^Z3$KgI#&w<*R&IjvXbxXQg+N5p!+)a=ay5 zKi_IFhmoEmetc>A0MS(&L4tj~Ixlq`Q(#x1vT1WuEd!rWmypH4HH#`2_pHM%6A;r; zOwB$Wlds?vXB!q?Wn0WsJ1K$I_RKXGuPfkS#_sv0#(ZU$>*eEA@O5T_>{<2ko|WT3 z;ug3Rf=rarQiv@yx9{&uY`cPABb0Sj9w^DN&5*;^Ix4JmQpt8nPil;?H^p+=!b*WS zRDmgA$0I(GUuvvmm5t%N5FZeRnAv{5@9-4AJJNb@U(~d|W6Q4cZv;e|sAefX_>$s& z%{Oq*&72Bq8gs?Q!Rofs**@#NV9B2B(9&)X9-n2_xG&*N{tD(Jg;bgdYjOhyAPq(y0}A!;s9PJ qWB@)d3jX?M10?_d01{FL)_0tUS@UWBMuxaHA!7q`eUjewg#QIx${{8I literal 0 HcmV?d00001 diff --git a/TEMA9/report.md b/TEMA9/report.md new file mode 100644 index 0000000..ed8fad1 --- /dev/null +++ b/TEMA9/report.md @@ -0,0 +1,323 @@ +# Протокол по Теме 9 + +Криштул Александр, А-03-23 + +## 1. Начало работы + +Запуск IDLE, установление рабочего каталога + +## 2. Создание классов и их наследников + +### 2.1. Создание автономного класса + +```py + +class Class1: #Объявление класса + def zad_zn(self,znach): #Метод 1 класса1 – задание значения data + self.data=znach # self - ссылка на экземпляр класса + def otobrazh(self): # Метод 2 класса1 + print(self.data)#Отображение данных экземпляра класса + + +z1=Class1() #Создаём 1-й экземпляр класса +z1 +<__main__.Class1 object at 0x000001F6FDDA5550> +z2=Class1() #Создаём 2-й экземпляр класса +z1.zad_zn('экз.класса 1') #Обращение к методу класса у 1-го экз. +z2.zad_zn(-632.453) #Обращение к методу класса у 2-го экз. +z1.otobrazh() # Обращение ко второму методу класса +экз.класса 1 +z2.otobrazh() +-632.453 +z1.data='Новое значение атрибута у экз.1' +z1.otobrazh() +Новое значение атрибута у экз.1 + + +``` + +### 2.2. Создание класса-наследника + +```py + +class Class2(Class1): #Class2 - наследник класса Class1 + def otobrazh(self): # Метод класса Class2 – переопределяет метод родителя + print('значение=',self.data)#Отображение данных экземпляра + +z3=Class2() +dir(z3) +['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn'] +z3.zad_zn('Совсем новое') +z3.otobrazh() +значение= Совсем новое + +``` + +При выводе сработал метод Class2 + +```py + +z1.otobrazh() +Новое значение атрибута у экз.1 + +``` + +Нет, не изменилось, т.к. z1 принадлежит к Class1 + +```py + +del z1,z2,z3 + +``` + +## 3. Использование классов, содержащихся в модулях + +```py + +#Mod3.py + +class Class1: #Объявление класса Class1 в модуле + def zad_zn(self,znach): # 1 Метод класса + self.data=znach # self - ссылка на экземпляр класса Class1 + def otobrazh(self): # 2 Метод класса + print(self.data)#Отображение данных экземпляра +class Class2(Class1): #Class2 - наследник класса Class1 + def otobrazh(self): # Метод класса Class2 + print('значение=',self.data)#Отображение данных экземпляра +def otobrazh(objekt): #Объявление самостоятельной функции + print('значение объекта=',objekt) + + +``` + +```py + +import os,sys +import importlib as imp +os.chdir('C:\\Users\\user\\Desktop\\python-labs\\TEMA9\\') +os.getcwd() + +'C:\\Users\\user\\Desktop\\python-labs\\TEMA9' +from Mod3 import Class1 #Частичный импорт содержимого модуля +z4=Class1() +z4.otobrazh() +Traceback (most recent call last): + File "", line 1, in + z4.otobrazh() + File "C:\Users\user\Desktop\python-labs\TEMA9\Mod3.py", line 5, in otobrazh + print(self.data)#Отображение данных экземпляра +AttributeError: 'Class1' object has no attribute 'data' + +``` + +Ошибка возникла т.к. z4 не имеет никакого значения + + +```py + +from Mod3 import Class1 +z4=Class1() +z4.data='значение данного data у экз.4' +z4.otobrazh() +значение данного data у экз.4 + +``` + +```py + +del z4 +import Mod3 #Полный импорт содержимого модуля +z4=Mod3.Class2() +z4.zad_zn('Класс из модуля') +z4.otobrazh() +значение= Класс из модуля +Mod3.otobrazh('Объект') +значение объекта= Объект + +``` + +Это вызвало самостоятельную функцию otobrazh() из модуля,которая принимает любой объект и печатает его с префиксом "значение объекта =" + + +## 4. Использование специальных методов + +```py + +class Class3(Class2): #Наследник класса Class2, а через него – и класса Class1 + def __init__(self,znach): #Конструктор-вызывается при создании нового экземпляра класса + self.data=znach + def __add__(self,drug_zn): #Вызывается, когда экземпляр участвует в операции «+» + return Class3(self.data+drug_zn) + def zad_dr_zn(self,povtor): #А это - обычный метод + self.data*=povtor + +z5=Class3('abc') #При создании экземпляра срабатывает конструктор +z5.otobrazh() +значение= abc +z6=z5+'def' +z6.otobrazh() +значение= abcdef +z6.zad_dr_zn(3) +z6.otobrazh() +значение= abcdefabcdefabcde + +``` + +## 5. Присоединение атрибутов к классу. + +```py + +dir(Class3) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +Class3.fio='Иванов И.И.' +z7=Class3(123) +dir(z7)==dir(Class3) +False +dir(z7.fio) +['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] +dir(z7.fio)==dir(Class3.fio) +True +z7.rozden='1987' +dir(z7) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn'] +dir(Class3) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn'] + +``` + +## 6. Выявление родительских классов + +```py + +Class3.__bases__ +(,) +Class2.__bases__ +(,) +Class1.__bases__ +(,) +Class3.__mro__ +(, , , ) +ZeroDivisionError.__mro__ +(, , , , ) + + +``` + +## 7. Создание свойства класса. + +```py + +class Class4: + def __init__(sam,znach): + sam.__prm=znach + def chten(sam): + return sam.__prm + def zapis(sam,znch): + sam.__prm=znch + def stiran(sam): + del sam.__prm + svojstvo=property(chten,zapis,stiran) + +exempl=Class4(12) +exempl.svojstvo +12 +exempl.svojstvo=45 +print(exempl.svojstvo) +45 +del exempl.svojstvo +exempl.svojstvo +Traceback (most recent call last): + File "", line 1, in + exempl.svojstvo + File "", line 5, in chten + return sam.__prm +AttributeError: 'Class4' object has no attribute '_Class4__prm' + +``` + +Потому что атрибут __prm больше не существует + +## 8. Рассмотрите пример представления в виде класса модели системы автоматического регулирования (САР), состоящей из последовательного соединения усилителя и двух инерционных звеньев, охваченных отрицательной обратной связью с усилителем. + +```py + +# SAU.py + +class SAU: + def __init__(self,zn_param): + self.param=zn_param + self.ypr=[0,0] + + def zdn_zn(self,upr): + self.x=upr + + def model(self): + def inerz(x,T,yy): + return (x+T*yy)/(T+1) + + y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2 + y1=self.param[0]*y0 #Усилитель1 + y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1 + y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2 + self.ypr[0]=y2 + self.ypr[1]=y3 + + def otobraz(self): + print('y=',self.ypr[1]) + + +#testSau.py + +prm=[2.5,4,1.3,0.8] +from SAU import * +xx=[0]+[1]*20 +SAUe=SAU(prm) +yt=[] +for xt in xx: + SAUe.zdn_zn(xt) + SAUe.model() + SAUe.otobraz() + yt.append(SAUe.ypr[1]) +import pylab +pylab.plot(yt) +pylab.show() + + + + +y= 0.0 +y= 0.2173913043478261 +y= 0.4763705103969754 +y= 0.686594887811293 +y= 0.8199324616478645 +y= 0.8837201137353929 +y= 0.8994188484874774 +y= 0.8892777072047301 +y= 0.870097963179993 +y= 0.8518346102696789 +y= 0.8387499784485772 +y= 0.8314204114211459 +y= 0.8286051955249649 +y= 0.8285656555914835 +y= 0.8297915186846528 +y= 0.8312697736438287 +y= 0.8324765218921963 +y= 0.8332456979978418 +y= 0.8336163607592184 +y= 0.8337101315489143 +y= 0.833654237067147 + +``` + +**Результат:** + + + + + + + + + + + diff --git a/TEMA9/task.md b/TEMA9/task.md new file mode 100644 index 0000000..4a84703 --- /dev/null +++ b/TEMA9/task.md @@ -0,0 +1,63 @@ +# Общее контрольное задание по теме 9 + +Криштул Александр, А-03-23 + +## Задание + +```py +#task.py + +class Employee: + def __init__(self, fio, otdel, dolzhnost, oklad): + self.fio = fio + self.otdel = otdel + self.dolzhnost = dolzhnost + self.oklad = oklad + self._pooshrenia = [] + + def salary_raise(self, summa): + self.oklad += summa + print(f"Оклад сотрудника {self.fio} увеличен на {summa}. Новый оклад: {self.oklad}") + + def change_department(self, new_department): + print(f"Сотрудник {self.fio} переведен из отдела {self.otdel} в отдел {new_department}.") + self.otdel = new_department + + def change_position(self, new_position): + print(f"Должность сотрудника {self.fio} изменена с {self.dolzhnost} на {new_position}.") + self.dolzhnost = new_position + + @property + def pooshrenia(self): + return self._pooshrenia + + def add_encouragement(self, tekst): + self._pooshrenia.append(tekst) + print(f"Сотрудник {self.fio} теперь имеет поощрение: {tekst}") + +import os, sys +os.chdir('C:\\Users\\user\\Desktop\\python-labs\\TEMA9\\') +os.getcwd() + +'C:\\Users\\user\\Desktop\\python-labs\\TEMA9' +from task import * +emp1 = Employee('Челышев Эдуард Артурович', 'ВМСС', 'Ассистент', 76000) +emp2 = Employee('Бобряков Александр Владимирович', 'УИТ', 'Заведующий кафедрой', 760000) +emp1.change_department('УИТ') +Сотрудник Челышев Эдуард Артурович переведен из отдела ВМСС в отдел УИТ. +emp1.otdel +'УИТ' +emp1.change_position('Старший преподаватель') +Должность сотрудника Челышев Эдуард Артурович изменена с Ассистент на Старший преподаватель. +emp1.dolzhnost +'Старший преподаватель' +emp2.salary_raise(-100000) +Оклад сотрудника Бобряков Александр Владимирович увеличен на -100000. Новый оклад: 660000 +emp2.oklad +660000 +emp2.add_encouragement('За победу в конкурсе "лучшая кафедра"') +Сотрудник Бобряков Александр Владимирович теперь имеет поощрение: За победу в конкурсе "лучшая кафедра" +emp2.pooshrenia +['За победу в конкурсе "лучшая кафедра"'] + +```