INDX( (8(DpZE^B =lBE^BE^Bo classGet.phpxbE^B WmB2E^BE^B classYearGet.phpxfD^BpìF7D^BD^B3 courseOfferGet.phpxhD^By.Q?D^BD^B delete(ateSheet.phpxdnfE^BxlB&mE^BffE^BG departmentGet.phpxbD^B!8D^BD^B getDateSheet.phppZD^Bx;6 D^BD^B getStaff.phphTrD^B=yBE^BnD^B5 index.phpp^[E^B(gulBbE^B[E^B programGet.phpxdCE^B{H? $proforma_assign_id, 'proforma_id' => $proforma_id, 'proforma_name' => $proforma_name, 'proforma_heading1' => $proforma_heading1, 'proforma_heading2' => $proforma_heading2, 'proforma_detail' => $proforma_detail, 'course_offer_id' => $course_offer_id, 'teacher_id' => $teacher_id, 'teacher_name' => $teacher_name, 'course_id' => $course_id, 'course_name' => $course_name, 'course_code' => $course_code, 'course_type' => $course_type, ); $qry = "SELECT `question_id`,`proforma_id`, `proforma_title`, `type`, `question_type`, `heading`, `question_title`, `option_a_lbl`,`option_a_value`, `option_b_lbl`, `option_b_value`, `option_c_lbl`, `option_c_value`, `option_d_lbl`, `option_d_value`, `option_e_lbl`, `option_e_value` FROM `edu_proforma_question` WHERE proforma_id='$proforma_id' AND `is_deleted` = 0 AND question_id NOT IN (SELECT `question_id` FROM `edu_evaluation_feedback` where proforma_id='$proforma_id' AND student_id='$personId' AND course_id='$course_id' AND is_deleted=0) ORDER BY question_order"; $result = mysqli_query($con, $qry); if (mysqli_num_rows($result) > 0) { while ($row_act_staff = mysqli_fetch_array($result)) { $question_id = $row_act_staff['question_id']; $type = $row_act_staff['type']; $question_type = $row_act_staff['question_type']; $heading = $row_act_staff['heading']; $question_title = $row_act_staff['question_title']; $option_a_lbl = $row_act_staff['option_a_lbl']; $option_a_value = $row_act_staff['option_a_value']; $option_b_lbl = $row_act_staff['option_b_lbl']; $option_b_value = $row_act_staff['option_b_value']; $option_c_lbl = $row_act_staff['option_c_lbl']; $option_c_value = $row_act_staff['option_c_value']; $option_d_lbl = $row_act_staff['option_d_lbl']; $option_d_value = $row_act_staff['option_d_value']; $option_e_lbl = $row_act_staff['option_e_lbl']; $option_e_value = $row_act_staff['option_e_value']; $questionArray = array( 'question_id' => $question_id, 'type' => $type, 'question_type' => $question_type, 'heading' => $heading, 'question_title' => $question_title, 'option_a_lbl' => $option_a_lbl, 'option_a_value' => $option_a_value, 'option_b_lbl' => $option_b_lbl, 'option_b_value' => $option_b_value, 'option_c_lbl' => $option_c_lbl, 'option_c_value' => $option_c_value, 'option_d_lbl' => $option_d_lbl, 'option_d_value' => $option_d_value, 'option_e_lbl' => $option_e_lbl, 'option_e_value' => $option_e_value ); } $code = array('message' => 'Record found', 'status' => false, 'code' => '200'); } else { $code = array('message' => 'No record found', 'status' => false, 'code' => '420'); } $data = array( 'dataArr' => $DataArray, 'queArr' => $questionArray, 'codeArr' => $code, 'authResCode' => $authResCode, 'userNumber' => $userName, 'authResOTP' => $authResOTP, ); } else { $data = array('message' => $authMsg, 'authResCode' => '401', 'status' => $authStatus); } header('content-type: application/json'); echo json_encode($data); pwstrength/jquery.pwstrength.min.js"> lZj;WfTk5%R }1Vj@`̚u0SSOclJc]/a,0M ٓ$`g u6<G4*ǟNlSs55= B;F3I#Fc0)耷ʣ%^CN};Ho iv5[:r]NY{fjGSh BԾțmQ@$Y'jlzb/G6[|ڣ>Ћ?a+LɭUVi%K^Z߫V)^ېAlDL Pn@M[ɚQam@w"&RA r#AհB2z^>_xyސ@u-J='"d@.⛃,Z+M_m^ @Q1 QeQH&~~L fdc5ψ[7bbY\w} Ho|g ȅ@\ª֥> фܿlJg~tCS }mR})7U2M^|Q !@zlċbdYcJTkD=Kc*J)wN?36ИH3JyncMBa*ّ* F7Beg$L@h`2v*_dp0v h$k?F'?fQ"an f?ň7{=:/aPױy?Zy(]P5c( <#cX\B)h-Tes}7l5M-cl'B~H :&=moYr*Nt &KDeZ̈́,i8&xDqL*Kw/Mkq'У { &z0R~\|T+83Vk*n̹:.>|H MϿhf̗iNHJEȉ~iPrNDRVwOC8m!ؓض[o} 1{]ur|DLOJt v7Ux?t+XN@4҅8 6q~0 0M Bfo\|ʼn-pu4ݮ57]ӞP(E{g%lv7 &=+;>S="#ZdL&I\5^#ю6bXB|v{)5P oGspsx䤫{+xڹq|}rVPyam53؞vY)!U}YIA:cwV 8ytG>6O#L^qE~HXu42')@5\X:xJ@>74\&b)y]%[KmGEmzCXv4u__֬$ ۆ5 FG-`Vxxm2uvR%hS,DKi0 Vo{ um=DZW"e 8,he9fw6alx'4 }E mMyh=y@/ҸkМ%cYD+,*ਃwDdJR"l".Y:|̓VET%nW`-p3ezƻZv#fL};Eʭ.G }/z׵%49guNFݹQS3q$r˛FU**ϓ (鄼tMHCwy0i\v8(!!k\jjSnȴ7XOXI {pUD{Z\Emo]_$?!3숙:t| -4:~hq63qhw$N[cNX^R)^H[bj O& qq!&s@̏ 6ıHԻ[u݅m(z-Ĝ_>nu6Kj/beRg:s |qDS>/ʳ&$rQ,#&kǠV'g7Pb0iͨ`ڔ'o^8qYq7 qmD+Wf)9c80>wfhgޠ*{M'?z"gOyks/ bM9ׅN[bb:lW=nYXY%o3ʿCr~coLJPW䵛6_ƱL[q&;g(>V4U0.ji\ysķXu]K! tUbp o`nԲ=-ρ:ݭ8P9/" w8?-:9>z|ɥE3c"J7D Dܫ 抃k*~FR˄A<%F)7=,1u֣p \#ڷ,«Šr񏑟>xCv$[Vs BR϶XT4\ã z"f=~tu{:Y;\1J29`B. y)`_b3pw`^Tڟ&ԗ&Ml&PmDJdDJpi|ЭFH5&7(i2Qcp@[!U\RRM-Rm*UǏ*[ *v qбTt5>hPK/{H[Z4,Test Attendance Status/saveDateSheet_bkp.phpXmo6 fʱ$w i!dŢcTRwDRv`wd?.nc9YLF`OhF#N%/x)f9@% QBfqHgD?cOs'Q jI/)ƂY3LJ< 4\2zO>my>1Ob^]ëׯsROi?;#P.HJ<;PRB:gmfӴHtŝLHWx7ۑE>`dєDDD6=)JBxANKR0>e$%iµjڔnDB4^, )zQx M6Z:/'Q>ڝ}_(+wᒓ)&TKrX߷:s H*-YUqfF9s~Smk!VX/uU5U·GL dL@0+TQf}Ev•ϗh<ߎ `WWW199v&Cg&fr z$򯂰4φG@m $C0P9B 4BityDOp4ӧ58fq5jtHQ'WmvIRз@Qd*.1@WM}JVg~t֞pyTͳݯo#ƒ.{ΐm˻Qs~,[$)"Ҫ e*){U0e*2bRd=U0.8C{QdLE1c!޸H9UJٍdk('X ^]=#bh˶3xi.@*]6xt8ϧM軁rU;Wndk]ǿ\60~Q7yofܹSeʸoFP3ZxR鷷֪\ 6Є֯K AzA BΖ[׀QAF `?YIOWL@0?$¦Txq^AbNfP Ӌpt חΌ'H0.ոwڷ8iްUKU,?ͺ6\'ӥ/1^yqOζNm;Ug76jA,:;wLu"[1ѵsWYFuHZmaG=ň=D{UZkݭ6q`9͢]]nF{=^qUjPխ!?<}Nu+Nw꯯؞tG> W:q}PB֢_ kK%J_PIa | \.*'%' /pyaz)`Jtw0вUWN͆nwx66d hI`aZW!_-sޤ1dP 9l&v =. '[V Jd/ ^ $ L`,-؆m.8/x4$t/mƣN6`'Q?PKfpI[Ww X%*Test Attendance Status/update_test_att.phpX[s7~g.4ЇiL48i2Yo-@}޵d9߹H˳r]޿ E ZU"3QDċ5' Fq+rr֛mJtL"fh-7Z,=!E7JwN G]𗈭dzxt_N'|: /fߧdr=~] %WC.BKo EZ%ȇ/k>'ͦgAq1[|װ)VE eK b0#2 ]%1J5E$ jqDggeE5'(fN 9UT⋊PDDxx6")kv|M%|kFU{8EZ0b  *z 0) /%ca'9ҴT|h.T(P.C'8~ a?R#i0+Pm^S[Y[ҝjޙ3]uplNͅ&DP KAܱ6eіHg5j e|V',f63ۂ~43>Y׃Tp$!เKS%*x@pð17AmQ$=$~|u/%0_ޣ; N aV=o CpXEE 9iJ0jz2^aCW@ p$^2̓ {W'PK `Q[ Date Sheet/PKOG[$_3 Date Sheet/courseOfferGet.phpVmo6^*ʱ170Zg)A@aBZ=͔%{%(omЈ 5ch7bPlIn3"P"՘rX>8w?.o" ^/W9 $Ruu^ xԹJTt)٩1n@z&D*4O)ՠ&CkۄgQۀIv k'4Y5{=|0+AZSqALdIbT=5ǹKv抗ҍl'F8?Ĝ?m';dFBob ԝ[ 5zit3Vj]jhk%wRMTL=){Pw09 R{/q"̘ ݨXM9-S?G5yMU)o;`[SlKՂ`i} '߾A*_:"*CeBoUaXXћͭͽpK,pIeW[t^v<PK{Q[࿤ Date Sheet/deleteDateSheet.phpVn6w`9v]K oqiN!dEmDn˾ŞnO2v.:!?)6_IXE*|e9L"c(\B.m#EJHR> ;$A>Zq'i>gi>"Gaߦb:9f7<\c-<)G*7iWRH*_Mu,ǩJs_uCL c-=ln~̴A-uG|+⽢A[R?7 )2J9 P>hm9{k[Ly;Pb=sս^#>%ͥoo5GӦ~K5gVb4n-'2QBVV'Tkb8kE%}BOiחD[:;~[-IH2M#"޲6 SmE͕ZbA&S"$ g4?Y?q5>p8w-BVq}~Q4շz"*b)8ɈJt< O ouH|sOЪCx1{:?{^;k{Lz>]Ō,!2Lz[gk{0Ahd%mŗigTeK,k#G9|nUmaBV9) +[r"@]12 BW^$sSSO>Ls]]]n=zy#՚n#Yޖ zo  FoM[\(UK2U\M;pہm~1( ?«_O) KtjxDr;~92}xvu%T_4sg~zm_HVnЪԽ;?PKYH[Date Sheet/getDateSheet.phpWNF)0g}8@+4BA Ebo^]U[$]DZvB;7;3'"m-y}NӄK?:#xu[,fұC&҈|j ~H$/ْ~KbU`$X0K;iKd>4X@$Kvj Q<:(J:cY܇֫k*I(h]gvr9nz9rڹgTHv>1%?C}ӾYy8( c#^^‚ATTAnS86]O3iHr]1uO،F@Brhjjdfg!^M/ѫ:\30O8! l6*1S|{n"ɝvvj Id&lsOBi.xg1XhS8w>5s*f2^>[*R{tP(o`Qj;p:"MbAk b^%M3J Q|N9 `1`f$_! Ʃ٬t _ߍ_[}ݍ@6WÛ3DFm jD8'햵['qX1뮃Pψ$Epx4sgK'OI։'O0(s*OHg;LS:h۳:Pe[Z:UTU?Nbٖ]VMmn%u@=FSf":Z x{Xѕpukv؇s:RHv2+0Q&2T۲=R&X[@0^Phyr#XT-kk 5.oQn0*]kr *d?Ŭa}(rX|cEY] ThT9βZ^ ^m2װt}g>[^%.x>W %$s`a`׭Eڱ5:KÍOnrLqO9p[='NٺJT_?opPp矰bT4`}='Ƭm$pJxy|- g_H}sIMR~4TQNۭPKvF[9;"Date Sheet/getStaff.phpTmO0EHN }ħnUPbPT:1BI.QQWISJI;i{OH!FHXpCtݿw  J`}Cs"44_jj<|J|jeX dA 8 &tn~c +25\rU\]Nr]bόmZUR M l]:+)as\LV`83O֚=ci3&{͊ R$+bځD Pz쥓п&8$:DyCb;rCHF߽}=zͻޒUaJt' rbKA@c֣]c#ͰhJ !*10  O,p<@+0s75\z*̾X02"1[a2\1SrW kzb$ofxiK2ooZHw7lڐ# %/ h̴|g͵.^B ;fVLXt?/uQ "aVfqt)2v[iZZ[dPe]Օj ^!Xo{AtYRDoҲu8\*."onQ,z?5Spd}K~͕gEVϰu%2goR&^)㤼e<ŭÙ*QQEŘ'kN ל_Ztk"柂`]Kǥ{39qjEO)L'UcG:fZQ+К0"wh{LN*a&+9 †;;fjGA I^p\Bv.p2#Z,f^g4c2#ė $8nrFQ)ȐT rY ~1ǚɸZ#+vӻys^A)K<];E)|Ogm&W}7S l/d5#r9 r(Q/6$e]( YdH)Vb_r.%qhv : ‘Mn5g ˰{bi>\߹C| ,B RW5WKg/n ׹zaE"+T=?eMo wbH] ? 5wN)p N`]QWI$J (b& )S$B 2hZHgPMBiWY\fr`ir=窮q<D=;kY![?[ĶIoVߣsjx'㭃d#G ;د>sG|ު2XU!O̵T$}/hY~,^ dކMTm6ȸ g;z豠Gi# Ǥ mGK~if"e,o{B'R~8wѐ"fE]ʒq^>I{.Jϻm3/kU=~ǎ,\r߿qڨ\"3+ض!Xpx,9&-yHVl^ylB- 2D!sxe&O8n";9áEhhd>g8:+]\}y0T$^y-$qh|Gp>?xGH/^)5_a/4WZ|U;gJ/ f ;(F;|{x|=ʄ*ע3NXVf=< [}WK,֯ _8pW<"u+[REY^ܿɯ:DISM7=>^ő7)u1XoY&Ֆ* 8l9;b@5x9H\D! y!R0UӔ!  \e()9;@_h"Ft Á̝F'5DLa%U0mb(LJ@| n0:1^fpq t}}ptx࠙ ,(!ʷ\{#J^)Go4㰤ZHK.46ҍGcSәTlfI}6'I 9;epPh7r!/X~ {Putb[( "OA4?bT X'}h"O lttT=CRiY0生xaq5 Y }zaGG:,+ BDv f5\jaOV  9@ $W4*z.emsю;Wtʐ=2 ^9hrS 4xEj8ZҠuHsbCj ъ9L~([tcw@lwTP[&^G]cv0vG=*xHEܝaQW(|х/W(!pp>q ]0::N"jphb)6MR%T 9㊞jCH]YrPU|FYt]Y%#m"\4.T;ipp7 Ю< 1|=dUK|!@6AƏo=X iՂZI\Ę *r>=rZ!T/]7 17N(v=@M7)b6AF e,˨;i!+R>EsQ"GJ_ؼ@gPv MR6ȸNJdn<(FYj::[Sr)Z\m-Ƅd_,ICV/;NYa+BװQv"kЮ[s1WLJ5iE| (m'ʯVKuXGΚZS9-,]3УG@c?RF'-䀍oϳf([<@LJ/&mN la \$-Mu7': қbCITT('=[@P!$/>5"%tj(tzHd4VVcBT Ywe[Y%[d"h{_`TPjˤ?T~k|okYV l^S7PxAZŋZeY|yuك6d,Lu,e땺)z KzljʂuTT#]7j? v 6rj G8 [MJ -:nٯgem ,vEUgԤjFFqA9 6jt^15Zjr,^eI+p #rI,X1MހUpEH {7c.q3Y 02he feυ5<.vd'[7[*ev7tz:/BgQdp^u(@wK4Ҍ8 p;|(Yɲ"/IXkR0~ɲ>eY(MY֎=i 谬%"krh2BqN+ 4c$B4Z#<8=6KV2,('>\%Vɪ9Mf n/򃴚2 [0iR+͑13 ߩWYSE3ےB<~ }+nxkyI-0,h╴)gc?Ş #fSEjtˌ{ȂwUG#:ՍDHC! m7#;\l7冡#]!$nee; t#)SA_g"7N}+Nsxrc@5f6`/?m+RXLZ('ׂ@1 qp= ct KI,{2):~R/cϏ0.]ugRz?)f*E\~L'-(5S 5ɾ4u?>wӵB<~g# :.շ] LJm åęx$é(o|ܲxB'Q?0jmr|Ӳm-$- O)MW= ?(%'k_h} g?WW kolqW}pwLpZ]}B \Cj<|sz:b֩n[gIi;cMR)nD)2Yꙙ {dˠerɂwkZ}4/&`4ZR=JKKB}+ʙ҇~쮛&n883\:/e`0YwʯՌDg܈W|w l^x #q}(JQ2zd*uuEx(7$uv*O"^6[>&Ĭ(Iȳ;IBHGeĦ b8@[J)abPM:UhpE3})a.Y!7 y|HE s!Ž 뮲(:Q; 1_*<|S'?+βi!݊^;Dr^$4zxOXާf`PٙLf哖a43;8QVO!pUk&qf4cf4A@kTpaQ0f>7Vw(<#P̢G3Wni%mvt7^pJ]i2Pcug_'{!0%} g`eI<9*CVRcќ`1dN̏mY0r&3Ǥuǩn9SL904؁y6M`gw_ǿ_<'ǿ*KcQgUfɩjd [o)~ :f0odt Nx$ _ |%ψNP,,l6%| sW|W^]eM4@T=6*υиb[ԩ*J1 VߎДYuF!/U zs iR]=Q aUGs:wiOQPF!ӼE i.,ͨuiFwi{@N/ v"L(6%ZRb>V^g}aPKsQ[J:LDate Sheet/saveDateSheet.phpXo8]Uҵ ~Poc\7NӔfI8񿟟KҎRc~cgx]o>x`8XF%gݻPhANDdo6Q<)r<|/KI2J\$nȏ J74t_4#, BB od ve*hY ZrI8+4˛)״޽OXl*>pY<~z(Sۏ|$|bPVJ:Nc˼H mu%24>̮dLXJYJIrMDm0ԱD XEld?9SF2XQg\hf_Ii"8a $",Ͷ⚢ |O7d;6e8Ih>YYn\CNP-Ej$*cEV_ȭJF$ !l//WˏߚU%go#15e1Y:P@ODA:xJHrak谥;ɩs]*'n$ n::JBZHdSWq:L8gL Ë Jg21.VvZW|Mv.bn\h:) d炉H3 @1<F ̉C!3+uU!jz^SZÆ8ooKxF~۔V@UDlcU #SǦ޻qq^VHc@|ތi/,ɲꅍF(!K] nMf0ˊ1yV Pr JXUy(S"7):@;pC'L pfM^xMr'ǾdYɂ,HTUv+ ff@<v&1Xch+ gl>{NMCkOolPmErܹj*l >{sI$9j b8 |b=iIo֑ۢ< _8, = oY bC~ ,GH +o\+7kh& ј˰[;.ovMmdaF*ޢea6keUᩓR[5 rǻv[cUXzvlv4AB6O[niK5x'I6c3p$v%ʵ'IS HS%2J^J>(u6}A"H2CHH%)#uԉ:vb9ڃKSU׋w2 iGWƥ~gk nUY=:oCغs=0]ޭ4(p?B{ < N!haAHr# ť-$*e +=:#?$Rۂ#pdJ9 Mcl~oߟzO0"s¡fmq᜙qµA(dn޸i\Ei{si  D[O}=`xM_k ~5g7 @Nvօù&]~E~FώHTbN䌣s}' es}F o{;zŃ,hԦy,g7ٟjjus:S~gwzCV2XT톒 /s Hs L/˵br ZXS^cߜX ;B7-7 X ^PKzQ[ hHlDate Sheet/updateDateSheet.phpY_o8J*v_:ExŵIqvo"1Ҧn[ܧOrHYIC-$?g~$g/m/KJ*rQ  G&$~[,ZU[xǺGSݚȺS]g몷s=K{A;w Խ؅k뒏 6|VՙeIDr:^ZKI:Mq?RQug9~FpY#]WDazx %XUL)`,072$*yeU.uZ@5'rVui /^ť?ڒ\v|N4B7-ͧ^ys6TKaUzYO&{iwaC5f6>ui@w+gym-z `|1,OΦ9>5@Eή}_z;P#[:gJZ˫{OY^m.VnY-HJ d tPT-F@l^ C6Q*%- ^|bSO*:r|z7q`8rnC*j]sV2,dV|5{E(Ll /|b\UA?m fFaca|vH~ _u ihPncRp~'CDo  ~[DgH9t})\?ǵ QNc7LnjݠoyZdw`|)$?m?5NRll@0>K*wmqnn{]J96sǷ:{q/PK `Q[ $0Date Sheet/ O 3?}Q?8Q?PKOG[$_3 $ )Date Sheet/courseOfferGet.php pìF7Q?Q?PK{Q[࿤ $ Date Sheet/deleteDateSheet.php jl/Q?zQ?Q?PKYH[$ 9Date Sheet/getDateSheet.php !8Q?Q?PKvF[9;"$ P Date Sheet/getStaff.php x;6-Q?-Q?PK |Q[9GI%$ JDate Sheet/index.php p<SQ?P;Q?U;Q?PKsQ[J:L$ y,Date Sheet/saveDateSheet.php _F|H?NQ?NQ?PKzQ[ hHl$ 3Date Sheet/updateDateSheet.php  BP?a|Q?\Q?PKVm;%PDF-1.7 %³ 3 0 obj <> endobj 8 0 obj <> endobj 6 0 obj <> /Font <>>> /Type /Page>> endobj 7 0 obj <> stream xъ6¼u-[m& zvP@ }J:h&nV&dzgot1-]OϧoL:vSLcF?1ce5U|-wR-0Q͗ ?cn>kDu7JFqzоZ>Ti;v|,9Sѷ3Ynl;oGos_=7K]fG|@'-z;popOwѝ"w7䔛).G?#}1G@:.P"Nz /4}muϖ{Rkj<ü|]&2w9َ̯":jkjW(7fy$ Ö${a &i=mQ҃xQ$IbG RgEĆ߳ה֝/:7J?rrƱejv=|dXϒkmRΪ݇k#Wy=Yw}niqvȧ2>Fdg/Z 1:˧d5kwVzŧY/#}pyz}y6+wVŶ?]fkiP]fx-sԅ< uIgx(.e;Ş~9Ce+VP-9W h-r,2&@GX؄Q`A5뽒\phe q"a_#US UzBN+l<XxfyoW۫\DJ&^p1~N.2)摎oJDo=m!8X4*/ _#jNPƃ+65|Ԁ\ jiKLIw\j|*eP@ w`PpDPkD,a*V ^jTj`3_U×nz` (+ &8\Ětb)h5-kx&$G6 @}E`c] a +WP5Y[955lj`IXh%&$3H}Ͱalˤ)3 Jf"Vdr&$*l{Hd09Ʉ ,2|Rd` dVH]ǰaJcR~V 1fY\raA I2KWˈ$=XLb4M \ eL @S)hG4-ix#b_!jzoWCkQC&W5cVQy@Mt;EL 5BM<-pr=j-{)pj 439C w V Lj߯2ڴRVpɰr%ya˶WɈ<@L2 '-A0A[#d| ewzúB8;c(5"Im52(!LXBN1l<cxg^xG62|*ǀ \di3e̓;fLc3ށ5ce~jdfn~*63^Aޖ| _rF$4dhZ%l@HǷO iL jY|"NM>B5QɿnA5U52Q'֠`5J زgcߞ596]ո&j ށ]I_* E`] a +WN59潢-NM#`LP2I A T;9&$=gB"e8z4úB`;e؈X&HBfUN2pɰr%'ؼWɰe۫dDB I&d`*q&\d@R1|׭1+cX;R#˜Ԧ_#cJ1ڏ(62^Aߵ 72|jˀ\ fiseL @S)hG4-ix#b_#j,8ʡA W57p|E _F$5dhZ%lPTʠ&A o ^&׈ӻ4Q4ȾUƃ+9f/^U#PV2YA`M4wsLIw\k(2vz\B;kBrD`()̓}ʹfVjl{5Lʃi0A$ ,A4|R%k<P"e8z4úB`;eBlD,k}$#v !^&wp;H/^%#r ('ye MĽp {DHDn5]1 $7 ;c0FwMs ^d?#72|vjˀ\ fiseLqTʀ& o A^︦ 1Mr5}'̠(65^AR0n+j5"IE%5D*q'`˄QS)h5-jx#$Լ;9I) endstream endobj 19 0 obj <> /Font <>>> /Type /Page>> endobj 20 0 obj <> stream xۊF [: rdb;ytWiFowmI,gJUM>:~;0vJ__)] <&7o˧>>k/z(@"EXqژcm8Z"SC,GOm>s?=;|еvS(_cSߦqj1+>"Q>%$R!4___[>xO~}=.wŻ 5ןN4 OS.C믇\yo^::?38-O*O 9GY3n߳}uױ"%W^>C |JwZF/$O9+̓uzjpOrm'_+'DCsBLq#ywv)>f;y5^)t._ċs~.' 2xt?*εJ+vg g/aXޏ=_1VZ>8tNpHiOu+4rGZr 7[:R;c"_v12.}kԝR9-RO'~Bye W=R-nXzckjĕk~q)32ޞLrZ)8MIW?o=Zp. #yS0+],Z슙4.WgtZss"-rErE8Šfrprq) KD.--qHJ3F-p'j[m2 2atqe"]`~n} Rfye=KF^9&5S=\P{|WUO%|WI]ų/lWC̯{ˬ!L_0J\vC|7qso}DVůLg_\̯[5_oOW |-͔?$t:ږJ!kWW3/hw [2]nOfbW̤ uz-uT?VT.m"-rErE8Šfrprq) KD.--qHJ36akci[m2 2apqe"\`~dn} Rfue=r*Mk2L3C{;nl]h+@+W6+AGg /.eWasi^^ _3N]`[WAz]%w._/2-2񻊷'~y(LrJ)\Oy6VZ{9  +]AeGV /,avWfbW̤uԵR'Mt S~ܖ:!rk"W W3L.h&w ![2\nObW qx-p?umn[m2 2atqe"]`~n} Rfye=KF^9&5Som·-|e|eCJ "~W&W3/lWă ̏_\̯'~yh+ӄ\fʟWWxߖJ!kWW3/hw [2]nOfbW̤ uz-uT?O̍.> stream x]u@[^X;. فX؊-"Hwv7">y?ʰޙ9p ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( PNvN=| LOD)_SL6fҌy+6nxˏq2 KK E_>u$p9:twY TΞgߌJ/.f1++X"i AR!fV& =P]D+QE}⹨ ) KCa '|&d2XVEQ[(!ANEy 8mDm @k3d( ,a好0.3CΆ\̜j&KBfQj;dJQ ߡjX*xnIڧ׷O ty};zPȦ@ Vl:u{qe\"Ni{U%)/Qcʺ]'VPϫ*Le(6VήzJd@S5QIEMѭ'oV\SQJ *+A݄"T)M8aƨ.T2Mt"M{+0 B̎8&ǯx ;aI%&7-չ}$eM=#K'3]-L,Uhd"QIJzV.>@sʒnC;ׁklfabgj(-ǦNi:Q x$jGOY1^<x~,.޹lJ_[MJ#e|:Փ[F[+T_ 8:]QuUiAƻV7Q% MX'mF~QY/E"Xfb>G RX$إn\8gjs-~CyC.,` AH<&$~3#R5 JP>{י\T*b'xyW/_2gP{G[{WGg'N]:ڙٶ=aɢx*P"U|Jxk[}U*T]7gA)4N/)@hZxGzwuw6+ITRbK̍Fd fp+&Yr/3,2Es3rv2@c/;e)>死׷9^UWi8osLV_^%6`8jpr.%3Wַ;r] #*%ߦD./eԔƅ.gE[H^񄜂^ZRPZt΋⚚>6] +k8׌'k]3yR)SȂ>f4NmU qikUϲvt0T2kcY BOPRl~eѻ=u1Gy0RqҢ4΃ 9/RX-U 0,x1PiT*'IAjM+@:qW.ut;N Iw(~8Ǥ]Tu3{] F L,ӗkRzNƕ2k2αö8 }vFɷsRi:A?%S~ᕜԄj8n)`Vn>FU*P*dEZW)4=g7w|PGTu|B֏imdM##BWSMKlcr ~h ju3jxqG«w^$-`^[W jJj.b y2k264~h,Y f%"Yu]pJ#j>d"A[+{aatv}>H_&X=Tw+6 ڪy"mCX$*[GiY1W gדiR `6c;8=;ϕ/Y^iӲ`yg11\y sbB$z֦w/D fe슙}wŰaIIP?Sm۲o!jmB`w0R  MÜcci8J8f)u5I@VW&堼E Q18qKpf {rUʸゑC{k% 8yo& Jkԃ n}6$)<5BzJb<[v@7pY#Q۴7Ar9 jWFTJSpԮ5BA-ZVZTk tWuv c$DBmRZ b8 5%/%nMtc+CҔE8;RS{DU5 %`ՋYllGڎ×lX3yZ7TiWٖȆ)} 8j*u=ky'c?ݔbeoxj㌂/>z/WAD/+fM&2I?JeUix+y#g^t; Ȇ2a~ʩ:` ߟݕ-zLٴ俢ٛY'[eEʯuO GX|g)*UIAN^淨 諺'htHLC1pZb( 4>lEhvrcN ^>B}rS1;8phR 9Ba=-r e‰]kx@R6j ^,'y=tÇ7'[y.}|qi2-}gKS!a3E&\X^z<0?Ǡ '\KqWϐ-z(ǗJ^bt'>e]Ew_3|z/JmR״ sVyo-5nMM춾̮,)YvwQm_k*X,Hx~e]G2ʪ'B Vދ NuO՝4i-?4!]l'zHx|R-PR /ԭ ]i3֡_G`a"+TVC>z4KN:aGfINJyJfҮ$R g ᥤIDnR>,ݤOo"Sr{~WccuDDq|j-8PgOWow)֘G)VZKFW<-1Zϗ@4och䠫gvVWλcʫSF >JERQQ(Sy)%//MTף Fm:Ôr"_hfQ7D2{}bp\}ԏSWWYpaWʥEr"C7HN@}c-j0 wh*YFzr`"H:n {bJc{6Mw|XAsAeStH߂pٛ/"9Ψ]>pcy+ncIAOwXE.'JQ{<@j%pa윗@4]S>zl:T@î/<ևnD9 x<5t׫cc,- ;ǔ`F$kKA0]œH=??sM%$z呒~u4piQV!/7@t.kJM݇(aDe3]u&HVL~p?͛-c L,`nyUVTP'IcbCm"Jũڑp*[>!x|S$a7 "-ej03_v.H9ؾm]g)2Z9 S?cjc '`s .ڨڟ-0 qOuOTRSWWSPSVRPfP=Bkuӳr)v$vD)"zSfP<0aloo`:\:`ՓYo&ǽH2cƋ#5j_N^b&7a(q *U*`Tg^-JXt=N߶9lhȉ[3RuKh9(;ꦊ#uROK\XE}j὚cVye E fnvjW~3#bP͍`U! wѯP]=p>.1n"w/gcb$u{ ~]\YU]YQUSSYŐa2K^9N_]-1 FM뿠^!HYRDx%vSk Q.H> ImHVg3+K?k/ vvskLZRt}^-`XʫIT_GN#UX $kOFd0XR }}|;?@i3e2t (Lkg}bxحPc7 l=\NDG5JUծ"HzH] Μ\~cLPuv#w7j5"ʲcфBOA<$ǴwĨt$zJOyRTrv?RʂH2-;kHLdQ uyGJh,ɇx\qy/GYA9N/`IX_$Kv*akPk^Ȏe8K\J9!mo䭄I\ے!ŔrCIwܔ:bYAzڋ1L:;b#^S_tۍ\{6&!%ͺ҆EP{E3 3kz[-YF‚[Ҥ J H ~Տ<胘{\ Htו’34I(fﶓ#oxK+ߝ]=YPu7hޝf=dwy, $ ovGЁ]3׮5& ] Uj/N9!Ҕ&ϬC&9n~yJR7:TG>s^)YRWӑYd9&סi=ck VYol> >kf1=pJk zd< !TqlHy.(^͸aA:]a_]|+jP7Tx CkX(4)[*\d.F% K~*Rw+em%>lXne*!?[?>7d nT\dǩO~#Y7z+JNm< 9.\ʓ _ %c9دDny2*8#xXyme0 oVN"ڞ:̓$3$rSԑ"q#WV%kƤZO~Gc8$p[ uHTpt4[&)f4h\UkaIljzXhA#8~/YL﫛fޔ g&|m[~kxBTκuQsJ1|2_g\Ƀ\j\ucB728ADwXNB`s:0Z@ɓ~$%Xw9%`߃Ďg!E_R+ވzv Yx\DC'V8E*cʅs~)dk5 7K o*c뾏F4<@VۗgB`e[G!A~f.Wb&Uc֚|0wogؚ&rh{c)2!Y O KcG&*2f[9TA[@.k,Mh!y҂96=%:]"P`rS_R]Hrgsn.5 Sj5_OTq,IF##̿Xƈӆ-Y$eu4 h~qbXR]mz qT裡-o;>ʎ-\g]OVqeCKB[U]qx#TqخK JOLXYrub>?^5T'QJʪ42A#o1P(kզd=#ED57jq.RXTY0v ("yy] 9CH^&5\`U~6z{mWgy+q3Pŵ8Yե1g65Ϛ6uƂts2PF8:X\!dmS7_|-B+d "ݱT>x'U;#…F;+L&> #Gݒ{,`0j6@R{>a9:0Tkshzb҂njS_]pk: WsRv]Mm n?~QDDĻ̴܂gp4dc4ĢXIA#n~tU` U+ ݎUp֒I$;2裢֋I8) \}Mx١揪'AxJ֑FN X~x*==0M=8<)v_NeM ,LSW H_\2N&h4k߹62=.K"pncqL._(I@JA!*Kyzi.ѷ-)?D tKAAMRY`]raᝮ `vհ$a?QQVQQd8|YVPI 6UۂRBŏZ4 {p+_m#DYW;F06ql)}jFix: 5A N/'p"X$𹌂˺&Iv5|Xi' ('tCm.O X텔iAŚ!A$r a_][5f` I"qxrhӮ<ѥb*V]GBlD.kWmܼa%,!$+ZI8o/#9 /b >DOJ ;fYB2Fva,&nL&Ӥ̹魩Dį|m-P-'Q-ˉ ֚q>}fiv2 4LSYmHxSqbYF6}`I- oX{yFzj-P#V^cz=QƕHy_GG=]5O'-*EIYUS[wS/9Ŭ¸ [J3jAץh SHTpEFll\֕ lfJ0e TY_N@?&WER3 RfV/}KGf:cb%5~b gdI[x3lY]4wkxSpM/ NmuҢ LW/{t"(/tW*C,Ҷ}l⑎$yN $-;ӨއPkQF k;j6m[7WCnrjDr|x 9ϒ"xaH$N3;`gd vHMuIÓ+W,''L'qe}(;]t22-dFP@IF,iyM^pC8LÕrH[,y_(}HS<} X̹rwCmccS z"+a,8ѥ7[zw0JC64dwi}`#KZg|r@@W#ҌimSxAumor!"=$qaˤ17[TWJx4^Ú "M؎I@$ X-bN## nIv].j+gpF2h8EI·Kғ= "g4p*K0{?]lˤG+ՎDu=zyMpqzdrO{k5spϳ7-Z= ꀇSYݏGF$ &"]*~Eo(D,Z cr#/h!WKD=//<+tro;Cԍ{ݽz4leSGw xې ϧ[6.RZh:*4O\ڧɋ#{ǁPiκS {ϼyİMɈ'-]m;0wcSAl-Iirƈ4VI_k0d2y XQځ?諠90gT1إ9ݯu8[1RǤdO4 F֫%VrRwRN ‘(ʂZ]'-uӧn_9|׊qm̵ (ٌ$%ܟQ7]וRT Y6!+nsfǬka^@r&O(fE~gnHxe˾k#$`uuU)t=IB}}d >K`9r!-5ޚ#@U5 \LKHT)@'j?+݊#i'ZIK|Rp,Tzr6ʴDIaC?)Ӥݾ +0 7Y~׶7ޒ]Ӎ.MJ}ӧq7hy}8)ٓH!q!9Jn7] _)OUqW95DǮ=[Zp}5H*re/έfNi(&8>UzsEB=H/blBVΫ^2@W3ͅw aaᄌߓAXQ"} lg“:蕘ږD;|QI{صEF[~Kw `Xأ^_0?r%r>3nl`*-!_ w֠3ʹR$|(39%++!QEܭ#6H(}fJIJտwIq;_[.I\h< Ot;TrOcS90{1I 62MV|!coV4:%3mRKha[9R|%JSY qO#JzGI냙9¸ӳʣJBz︓#iIr/`ՂiP.aqwF0;Ҟ:ySƵARHԓ8{,/+FO{zkpTK/#i=&qs_Zx{)<26>hwUhd[m V=;tLSVQ+x tDž_JXbtm0? 7nxJRYY=?*aVx ֞fɇj $f& J/ڐ `yðSiNi!Ae܃s~KyL.>ԘϠ216wY۶4wQ dS&6FG~N;ILK~WSHTVBB(w<,,{K5}v,uQ'i**&O,+.0՜g%fǥw*T2ZmѬo OVR5pdtCˢѬ_JݶEG׺> ``tU \r ?)Vʏ9=ʷ$`Bև\WCNߌ|q'p6?VMyup i3=Q>l'ԥɑ _Oj*}npk+-IJ $jt;AΓn?T= R~YQp9H~k7h䯇Jg$K93G&aKxHIfOu$Eȓ+ վMm;tIpD.]Ա>b>h':.v?o/@gT8tV*KjS WAP V^ub"է}a7{VȎSY/f?6D%JsL9ծ~fteWƎt W<JLPy~"`Vڤu? s39ǴALBp> IȘGv3\Tj$jHfڭ9MgNiISf|]@,!l֏Eշ+/ E8"N\i!#liN|^9bDx K-5{TlMLU癪x+BDHS7v"w/\>ah/U_K(ZVZz Qޢw0?Wp}hEpFP:a4t)Z~gA[]K>tNsօZ_VmvM$ù2);j^ˢ~r92sk[Zd=wGScaE(qMmP&JxCK1djoTvy, >^K J 1kzTJ j8}0YyTj%ڂ<ބs!uG  wFL![$OQ[KC1ϡFyΜf3tcN'ܲs}Nۿy^n*XOn?߄䙭Vi.Ig+՚Cϲ` d%O'glc.)w ĸ MP}qo0#3 78 gpq.)|X㠉;SDZ ~Pm'ީPC(?W#Fx>SxڳTT#9D(bg?؅p'aYcfRwGH62rkU{9{}{vnYp|}x;:[teL"Qʍn~ᖬ ۼzq'XG[SUJA/D$kTξZ o{8`Ӊ)sw>P%`$ZtgmlFx)2oC9=O>78wxM{Կ$u )nfEߙ.>ق$|kK>SXjq+s1 W1׊A/ZH/ p,zwo;ݦp)BxwpP# >'@TR10upsg~/Xiރ8v.٣AlZyu˖,>aߘ|ݳgΝ;[haD[5.1!vQr;z[v )\yL+aFӚJʊ>K8(6HnX>\H/.R7W$Uf @ޫYM@wN4KWdUՈ*z̀~0"feC%!b)!}C00<|֠؁P z6KBW\C')T%K0yʴ˖^=>z!'BB ܳkǖ5 agߛlz.=P?daThf>ۺmط7K;zx/h^.m8p9 8 >yx']K@֒yDUCgh1 #`& Nqڒɾc`F@{ #P&[f :X~SH/x Hz8>"^VO$ Moóg_v {4ɽ۷޻~bҲ]\mLKY06sGevF"-`4jloDlbV% {4!;VvŻfp$2eIu6]!)Gﮆ=eөuvfУ7cY3B1Q+`GX__v;2t' ļSfec[M'BD`N nXE5@]PfO;'* 5Uc{w ?}ފGܸq;"K#τ^v1xtԕh[ZOo Ť'joq ?#7}&v`X*ĸlOiM5n͗SSs"L V(4ה^/5YZ#!X_fZ5oh l% `XvۯJ]$lHb~YZo&{av h90Z)Ya/ \D$=D.hPHL$+[8t[+wԎe:S k.Gx <ƚ7;`# HP{1IlQcI:#,!Er`tˢMvKa|}@G!7Ɍz|JTk~/Bk&pg,nκ"I 1O ysUP>"zoM&u8SŻܾ n :u퇑cƪ4i)φq͎I2Lc[F| _DgysFU#z%7GGs[C%hkAѬqu\ K6 ۬.(-+d& 3^&z 65ViU_ ʧ#깧9-Fkh͂0o|z e+>8aOlSX nj K迷?XVc`m؜gEŽ)#6~b=vSb 0OԌ8ṶrӅ9PXqgiJl]dŌk~6#ЛN؜%upT ~Klz%E֚6,Ef!L;"??t^uo.Y第Xmw-v烒a&#\pv ;nKZd#!$ʨ$)]a <tMeu;x1/:a-.kbk4BMTPDT +{+ػbD,4=$Rv‚ ~Bg;sfމYI+_=n,Mdw>Wc%mPzE?߷G"YiffO]aͲUJ\g:G$~M]Q͞SR+{[ sRtKM,ЯR/Dž%Mײ%Oyˏ Wdp 3ԧy9wbjITpᗠ5lgF}R̹߉YcقS܄6Y,.8ӑ/N2 }~R$7ką A!S~u SKĬx}*,x=Gb R GtixS].AvF:Y|e<35F*:06} ^󰿼H9PLWHxZ]Xo'U+7BL=(AEJ?VY)YoVD\“/J|-_JvwtUY:{s臄E :tQcB:.eQ;=n2$k/'cBE)Э>HXc>?uS{FE* ޴(1@OcehI%}3Ev1LiZ>g-,1Fey~HяrG>(.Ə BƋbpAq'RXfȬԈSF͂d50]dGӠjHBhK3QIrvHHݾlfɿVߤ총*pA5縠-F8h|8WDo*$!:s\p/TpX1\{v /Z0 ?9ЩuL7goMNuU&gPY슷y'iRmweJHC!wԬۃ7%_"eCÓMGmjH ؾ֐r9Wk3)%Hڪ6jw8S y4Ӹ6S~x- zH%SkMFeIT+4)"<>S<'SҺ a3mE@zW}=JI ;9w|&ke"QaI_`Zdnnx7bq*.V+ 5KL}o_%eؙ#ԮR}H4-JǷUCt5+퐪 P"{ ew @gv]*Rpp GRH'g:.GKN՚e~xGAZb^{cQVxgݹ7=gQq:r'vr{ߌBRY˟ $Skr i>RzY&|Rӊ: 3O*)#>Oi1Yy:ӠJ֌(aN{?!*JEi#HsT &0Թi4XяJ1сTR^!Gx54Іx5FF@ ݹw>eKb?:seYGq*tVL/]m{pmJ ~MX&"я~%-w]z1=/)ѩ@tߙߩf]2שͶeQY XJ;YŒzjz{r8vL*t~fI& 9۔x&*zٻ;A QZƊF3\r2{AauPӃła]ɔIGQ(hHTDVOJ իS8hP/mNeCf3xC?}EwCHPo1%ʏ'8iK 3cbA*֧JPɻU.9"CKNFL&;`:mbLj:boX&Y]RҒِJ5hԔduv-;LA] aa>gs-u,%څSIԽ1K*eH!ק|4mv zn< C:lԟÉfD]UVxŽ.~\A=I4֡ !zdzG7OS3=^ O;> 1_+j/T-=}#ÇVLdn,¬j 4ɟ"9QXBU'@o6rٺN--t-&5% Y^~=H Ycba MYDȻjwTdzj6Z)ye4ڝlk\; ^ +͕ܓVT# -1%iFN5`u>1Ø@m*an6x9qݓ&+ 5ەfxf':[nߋ\F_qhzc[ X%Gppe ]%JSOcTJu;kɦ5WD('Dkʤ!l룦o3ZW*|c0h ]O8*3.5;Ҍͤy>itUuH:VǓݳ2 zڍZ C$On?I(-V: zg.e}_._a1vr^^G,sno'wӱKm젰ܖx_j" zAX ǃWT8fˍA YEYErX?@"ҝAbjNW/fބa$H_rrxFPfLf5łoF>ĒQ5\?ᩀ82of.dXw&^D?qu!CQ>bM~vH3l;Z\^'D=qT kxM>pU.Y:Jd59Nm>}3bZ$f/Ʉ)a4~Vr_0>{&4=+Ed rbg !/25lw2zeO&7-УvhѾ'e7hkaeRy}Pu`.EƹK-gv:1u,:lR}1Xٙi9e2\>Fĵ fӧ᧌=A ,%i? V1`1 s_/ug'#@bpz!4Z؎/ά_ zmx'+Mriv߸( ]+x9;-_,RN~WRwE}0$Јt yן5 )+NgRߦ*}+N񧶛2A ]CAc^ze\"+p.xKW#cb6'\&(o1ZrhNwH -UUxDc n 5,BKW~DeQ#X[\y?°vKFwjl`jtLrCiҘՕ )hd %IҖ”#_8.~ـ%Š`y m iv>qVSք8$ 횶lոרQwsauyp쀱:&K pAad( 6o3®!^‘P5}~r5?^UNʩb@pR$@؝fv\gmԺ x~η䅅lL'_ߵlȡlMK9T~ȩ|=hUa:A2M}efj"NIE-?lIitM^$-fo2o5Vِ<9^ !vv?ulz=x[lXNP8㬇f>b`OcQ*C/cWC 861 9nlc"`PQ4rkRbX{yz#\8Ud7y9Ya~·q _?Gx GqX+e !s1G}BMa;*)=ΥtEVn=tKXIYn=M*% 'Іھa΢o1laѠw)u1%wZC死O*-f9ݠi+;32$b I,xA^DE0㯸^!1P U)\ɣ1*9QSr{P&xD_x6q/kb]%-|g1Z~K^v1+Y߂nYj/ \~2gMrOQp5Jk\6B?j:kJ B)/4* (N̝ZUYKչXPS!L5Nv9.^i$pڪ4p@bH"1Eg~6FFTگo=h9I^rw3di=IVYXZDFm.(#.;NdGV{f0-ڢVܽ8\ciz@*Ӗ7 g'96cz7P&49䵠̟]Q;VpKmFV9ZِXw,c]F40>#&)Rپ(`X$d|yw9y Ϙ0\nq>Pf=K7XSDJ^Tk#nM;@iHKO'*)68?mH r#4TGo2tI},a h83ݖ~ƛ[.RB(s̭3.4_ɹT-Tt~Pf\Hkw,뜆a-l7XDPr10W?hegoG1gErO(yAOܻzlʹA8Zé&0ҕxZstC 1J&O}RIW ]mݢd~'WpD$$Oa@.@MN˥OT?j_ yqB1MzC.摰QI5eW$E[*QI,z޸7w5hEޤTNl*Z(hNi^8^=bAlIAւ:?ܴP;=c[&r m)Ѩ.|fu&A_ފF0@ Wsz̖L/'W@[z_>?p@ViW:8C3X]djZæN"]ɇ3g_Q jv9VFhC"ehfQ|\ 96 򑼣ίa}FqVڒQxyH|y&]޴|s-csA}؟25@qvKy*'n##Wl_plF2(9XZE!7RuM/KeO1T+ȅ[Eb{מ/Tg, 8zLYD+LԥhmHJm}L1R3QQUW5v[?e֠(q_a4{meZ'B<wc9s(r EMH*`g\ьGt<0bZ hrȜF]H#I8HfAvW@ zL+y␉3[L".ޢp5LI v,}mwV"0Qah]Eo%!U۬5։ŪkXGY8&Hi9\W9|4M=;0@]?ƴDM]czKJʿ#<"D}S!*PyXA o!U*SZkC"mEɎr/>8> L 'm8A`TF dsۄʣ+ wRb`l2يUTBp#μc@j+չ]K }##C}Eb_Iںr쓚]+z;)fҥuW֩ݴݾO,DمP58qr}5!ҋ8i-w~ZyjOStš ?( hGxG(u2FQA(TkV*S.J#<1l3߯/O& +3+Od͑"/\DM} <Mˠ-)<)D5*TX֨wBNdgĎ%DɟeFqs9wlƱkw6mN5wQh mRfhKvhعb c.?{m\xƣ KPl!G|F"kM@* ,v?[9~P|P$޻RD=ӚuyD|Rjf1O$҂k[6\*WX# ɿQqJPt"qZr ;/!4qc| g Z9!E'D {5bSl]uaOKʚMEE%+IƨpB~9 849y*^}z>O01X3AW)!Q)6YF-\|܎IjNm0>?̚N4%RUw>0xQVy3A1[OgTQC,C.CZ_~$-W%QMeî4aoAPvDK~㭀TvgsqeWUwDsNΜX㣤ҷ86AD,,c}RTu|M(66^hG۝ kY`ө[9{Psڛ/c9nMv'_9*΁O%?_ޱB[gX@%-ȋ,l$nvXTG pK|1UByAYx֚ϩaf߫8UN B14[n N&[z)\2zAnfǗϞ>{'J{~ gt)m>bûVG]߽!=f)[kYH11f/<8oK3jZ-uF\tWjӴ{ҭzhaP֏0fu~\9}X=] `z'EVxG@@w\uVd2cCE;OQ޻1k:K?G f83>.}T^j}I`*`0-m^~8W)?MJ&DIX%8dlv@Sۢ}Jp*HGhUi{*W;MFk⻿XNel{ߺqaֆORGhNɹ)].gƌ2"몱N[b LnT tW};FhJ1{j*k\ AzAVi9U??x(dtSUUā.4ږ=U/Yo)6I C6i6d:;\ |_=1dYL$tQ$Pq&AUu {.Ud;-]f q*oެSa3 x^,{^ޯJ7I]f OGVWLƴyaIUmmtsCҭ)1 ab5v2$ʳ? *>um#qZG i|j'TSaFr(-aq)Q=9\`}ZV 0Ë^?tJž$Ks{+AS>ݯ#ǚєb[:VL>^;uO*ńZ14 M,979{k[s&q>7v)M9O6#2pj if# Sw4iV|>ܐ* уo`^6n'@^ 2[ |$$05kAoA((l$(d2/k44ki>αɽU(* r'O]ux{O3\#1Z#ԚġS ~G,]6u?gO<ۥQ#Fzۻk~=q;vmٲ7O;g| :Un)bKj+qUs䡹M4_p?*# .v,F:___QU֔ 9ȁj$Izc­RGĕsW@[MR-gZz+/KTRzs?|YOלJ^^k(fw]D"4Ơ`Y*3 + )o}ST-&+-ab[qqAN;p՘vDEyi((=oy 1V=R-fcQ4inUղrt\"7*J_%XJUre>c_NӰ'VP2OR'O.D7wVe{ٱiν{[$lA1]֧ؼοioMu2lܴu v97odjaER2T)h 4+nm/_9{lƹZ{11?૒`Йd4s4pʼYTҦrc^Ttx+elh°U,{"= Ff A9r"Ҳ] YXw_oۊO]rz3_zHR)` KJsxL1 (-B1]W>O%*j<qE=x[|ަ[;6YkY6֮!ߜR=ë%cô`iS9p' rw>"kO xdq|,Ϋb;L8y7U{P]2n3ΦզHLdeiK)^%YGNWϊ% (!$fᥐ\ G'\ȟXjn!V;Jb 7 "JFTUUA!yOS:F<d|́g9*G}p .-s! @3}MjG ^Ai @AG4G 8+ArJpnrD)}J\Tv4yU{Qzu{؞BJ哮*&*XƏUG ZaS Tŝ3\q~ߑN OR8GS͜2y@׮]=C Es5'$ܣڗz/S@]l>!S^GG5ҁ죧 XdyzKW8 C:74}yqS_5nS|&bsk>=$i&N!y;BR#Qzт5C5an!ClH7t (>ӛNA^%@=?ܪpE6Jqre/| }|}q[7amW~H3֚5 8F£O/j0zvSd*}ɹ[.@ev@ߛX2LQ~^}m(#`rGMJ-rINIBoqU# uw$ (lZlM[ V¢58Zcb ~ҍnLڑ)4m|%ZZz_:m;њճC*& Q3.,VY1gOػ4wn)cM /MuVǎV-DӏNa-F;G x^[_&JnAJxE]xlbd8Қ*F50h=[U'dH5X4b0]=7dH#]w@qi.66[m+= S>F/';vTְ3UJHwk .LAAu6RL'aȮbcϾ0:9fu-ZD,ff:DeqζloˀŚܰ>:LK+Zt٨O LgvNZGV+K5^t5nvI(P%Ǭ\w(ntǍLL_9!lyۺ(a5׏hL9G&\-mEc(9cQ:( ]{qe eRa?ǯ6d";WwSDB%23ŸܬWڱ]w~2IP[G#ݔjhlІ}.\g 1}LNwМLXV5C[72V-nJiuT/tl6'iΌ:J[)YH~o"%'NËG"2D \R,La5&ŧIs8)ڦLy#L45WՔ w?!ؽLOI3 sX|WN_WJF ;\TO(BA*B{UCF6:K7U"'s.mK Ic 4T(y?W+FHd%\L"s2}.MK[~f 'Qj: ި2b .7Xzg}!1&êK,b1(4K  ?jCosr@e7A/IЙ[.))LpbI7oqQBsc1[7H SEs1mk z99H:>  ś-O\ok꓋7LK6f#F >>䣇FfpcL 來_N> FVL>>ܿ,Tf>ױ̚E6޽wǚŋDm…@-m yij{߹m KZnbZ7x36|OR\ՅFu}&SNv6i~ ɍcT{?ZG o\ Id~qP/j-@eL|Kİ/!ܴm 8 %tx[QyG%ԭP;#>W,#-++33sS#}=m BCͼZ⣆+Dwѻ x>^ۧ^?~v1>(7o-@ O|c^h,E~f ه2CA桒({֍ׄldp9#K+a-ic3)g{_`Bv-! Pe23V~ʛ9AY1)]dZbߍ73J'Hea}F G3cPzZ1h.@7TDF /?SDJ*?'+Z]^9xqMSkߎR7_k`7q&Ԕ89E=oG\nC@Aij?0YZ>uYRS-;8a`_9 Y>=QWT۝¯^ eX!;*3ɳxuOۮ(* sgזoN,p,}9 hmpz$M)}AZ 9hǡ1!']*E*f.\k QGb 6SN.e e:FuK Wl«hj7p@^%gK!WCBG{IָxPX1fVKN( +ȾإbjL2*[ʫm|Ys`1FoQYhYG֠aufbK_h̲2T ;4pM6<=\ pBW-n4Prð +oS8ʹk4F~Afuԃ9<3b+ӷT̼e ő4_b7qR-]^H e!UԍOAEW(Z"_DY [^(zQ?Ɖ5+ASWvz!hL" ۵(Y@4Tq:ǂR' Bzf,C~Ѣ4 kn1#H>6Qag nv!?)0Zl} f?5^q JhGboi{)yK )KQPݞe0hDIý p֚81W9 h;ěBWZs3Gu)PIO.fНy_4;FAHg,ぴɵ `P> z%ZMLG;@(bN; ;+$W= W[y^P金O˛(H IO kh'lT;x>^¿ҖJ1#,daznt1 G%aɧSz)]`\DNCx-(7 {ݲ>s8?ŞD,j|J2%3D(1[8aa" Drr{@cnݭD Y2_\YYu&(-}kylͮ^Ir4)E(c.ܔlm"Ce(Oف= oGI/OQjk iK sz^tqr4^'U' -7E@1vpHC܉MsrD?~(t ;+SE4ehU)u#@K1,}g-Ght;_s+좤c0e:E9ǛB)iHfŀW,6 *P&rw6w&,2/EOpPt|EW#z?Q\rkW4;U T`q!Si|ʢ'YvWeDkCE/l\@'T2LCw5\*8ۢvJbI^tf. tcR4ݟKʟmEJ1#|KqޘAeqU5W,ծ";R=e NHfRisǽ^?G&-OL7ݧ1>Ce„G45j׭rgBnJTt"'-׸~ٍzMVh/Vwg#H ^t_ܶ]!"(紲tE2 C2y)MxuE_%d`ĮIet++jw 5NCj?h^RygS|fg* 'z7Z90"pCg4Ҡ@VP@6TI@^,*3^\ާ[]C2 HormN9,?HW(cQBPMټ;>t;0HYKf?=,ǁ&bA5PE˛2~/#l@HcDwӱ*6TdX|8A,%0*+p(71YJh Te6~j#fxEgXL#Q[.IN^Peӵ5f QdEj d>Sizhs$Nnƴda:i(7vg9̧>YEyhIY%z4n|*3Z[Ld1 Lqb6'+Gnlˠ@-6g#A#03)rs 2PYuCK/)4lfiKDyԶy$j[*v-8e_NI˄]%1. G1+H>'2eHSb!mC.Rٻ~FF[PɜٽniEE찄mpƯ28~9f`;=r8W dѪxHYAw ,} [,yG |C ȬnDߋޤp^b]nj5[=MizXr[ !:SD2k~B&y+-2$v\Ƈy{drH9{0t{f2$kksj6I m!'E7j| NwDDgXs0KJC怫@2wԫXu W$ڿ`'W+e7:+@FuA'V|ͺ7쵹)?bv\DMr8R)>RȺI~iHAO-8T݉K]5pPah%6yߤhʲEjv8AǶ`QP|~.g@62z+eu^^g5 /@ - _o5'F*nJqh{*<M)E\T] զlY%a5{_{ v7 ʹ7FS?$X؞wƅE,'~QeM<M0򊆥Kd1"z֣zV"cۯy+ 9vTZg4ފ=F,|أ>+/SQdmrzS)FMHuƈN`nwE&TfF}9U dzf0۬ ŷ)ggF+=:]by O58/6d҆=h^̹?`%:56֛8x|g |e s2PlH"+7h$F^gYb˹ȣl)kIw} L!fw;bh*@ g޸rt;rb,Y'NlSd  H-8lt|'GROBeuGѝ+p`BEu^oI m|At$ ̥;@th\g#V~IQ/~>S~-Fs;hCSQ%F} Pỉdj׻<Pjkӳ<@,p;+lh Qܾةh轟DgŎRDգK&ok?bV9=~T i|#[1nA:\i^R\c )sT{_.*K*d6 WAXq!E-s4N9*򴀙0yvPہXL KCFZ4ߔ,}^QъR8cͯUF36IPDp۱KLw` >tCw(CAv!4yuoDh6;0&@Ki`iʀn(=זFivYdhFu$Ќ:v<1/|{B(Zi bg!ha}("gG?bz\Wsi0YxY WlAx}کOs%pX)I6ؚË~(ZtWUŌHZw ܳɪ'uŦ=E{T*\H/5UzѸ좲7cu똷,ZMOڣK\/ŵ74@ht դC,ƈ1eI[3AYbcX?/z-y{pJaL~#AἫD@g2c9h8h9x:Fű,EJP >ʻXϴ4wѵΐ/1/H*|g:^ RE5,)@UvqPr˯lghZbյqƅQC˼6CY5İ};I})cJ5r'AeG{i;!ʽYnUN^B>B-#gګQhy-)sdNzM둋띿e;b>͵T5;<x=܍xlv"Q?/,I|}9+--{[/,n} В0nY&%[kԠTQJp` }-h8vv5M DG0 J5zȃ9^pŎO ?V{\MўJýQXj5;QB= ppY $'FO u2%Ş{Sgj2mٹt3-tz&3{•0x{gobifC*kd}cSq6V7謞xvʴHp^-wd;.״uwe9JoWH7N ρJ:X]f}^'{4輋i#Do~ MrjKNC*lX sgEt0AoT̋J^¡;뀨O0tw "!`؁kbwwk`"Jt7t}PPww qy99ZZ@َ/ό9sӺ'age8hƪ-ތͨh".Ypi&,U&e4FL^!Pp1 o37!YzPk^.S TВ2uzL9(_ṢVP7w ~,ܘִ2XI]iP:UVloA9=dϜ8s%I҇O(AH/yvhj_BBLXMը$?,KΎ4jZCc' :ns[>l _ZG}d5[ 2D$EbLѺU HZrOEYk.L}` y =u)1QoʫKuPJ4 ܘ)TprϏWW~^dCh6yYv|IS{ϓ-!,XbgLUMB cSׁnq[,$\ d*7+)1kw7@z\੆^Sdm" Ə?/zs_ϫeT2~@Rxe? Z.T)O즧n;ruwI{H0 V_[@r"Dw|T͝9ƃeo$285¢G4 !iRC/|W'y{R.80RjIR;k ^f]($²zH*+>$1UG+RJv0hn+pFJzy1 Nr K'c}:4va8\P:?_I&v^FO ̞\I $ZmBbWoN[Iũ.ڶxD`W_s& Uд7s+[* @!}iUy@ ="E;y@`>AvA͏[;K0?EfESCKkaP]S@е -}B^wʳ)/] n7Ard9~%r0ɡO4y:XUnveVxM3$lڒM/=HL6]Qc\Lt1V2&a3VS%zq^תIx][pF4V)%k;tK.x4HþQIXkwE_4s[^`slvc."WgAmz2g35.ǥ(,*LqdcX[k}yuo=b[UWFdbdzS=qx^Ƿ,{E'":A X2[o6rp{qjf=5ߐ ̚=WVZ&k|nO*-*oCR׳0gץ9Ս3=rzX6b7oC۽ݧdG(Zj+9ݨB94^_ 3>}oʟy`6)=' v1PhTˠk=89Jnŋur ۛP&k >U(0_I[#_J`ENgH]9[/=M+eʳbn5+bTwPGW{!gQ-}5"Z)EXQʽKT%yW|>[#$սͭ&fIeVUi/c\8iq&y骭WֵpxbU@⚔xzr+/K2C ^z9E-WE{-!O9f%s ! };;O0v5ƺҌG' 3֢ ߙ/m<(rzDe&FwȶCV"(Zl y9Q>x"5gK"\jV+K*XH: 3k*^z>?nǸs g>-,u2H.C4-+` N{z'W% lёG,&7 ~Dwif ^yyfHqg;N;'qP1!^Υ3l,>~ٛ:P$Iйw1+13?O v43r)&*~vx^ dC@|2[Qx ܄Fϟ|'9,Y t0" VDo]7ZZXɗvan[5z Nqv#@B7۷P/66q[CAo zu[̸YER"Yѱ&6SF΋>qɣ \P, B^SuQfA&=7=*3oO`xu1RTo.&=`/}eѻ,C::4A`ԭj9At7D4p'9?qҭؗO?e?5V~S6_z]d7u 7Mmٙ~3J3ŎFb؆,f%gϛlosl@|bpWK4(f_v2Z.v'SaIƷ&~o-Mzޝ{/.oHb^C˘#?'!J;jGV:4"]F◉1尼xG[FՏY-Z.7oBSJ \'jE'[6$5s?Cáő6'P4nfyݝc,~Ƀ!捑ޛr;QMt9iEU 0oh;]IF_ƌ-UX+B:Iת'oAڟ*v;f(,;՘=bB#qDA qKEf܍ۣf})4ǥːhnEtTStk_35n]֘hմ)6_Yn,,{af]ڿWƓu<.+`I.3zOo oMw4 :z9L~nryNYu]CUnS{5?Ff6s`ޭ7ZcxJYt)QmBθGZn _(%a韇yYjeQmS"f<݋Ѭ#.HT_7[!BL:/uΔVKVٸjjg#7muL GZQ {OTq!|a|eC]y^>mEmFa>Nk2.E/+Ѩׂ1X8.!&^3`;^[*`;Τ7H*{7אj5_~/5ttԿ6`^k$+7G/3!ТLS#xһ3D0қyW3V~&O2 X(UH8G}L>!3)>2ʙԘ-6]šq> n-Z{|ĪpWTsC#/8ی+`qp}eS} Ds%Z&\ K+nY>>N!Id2J1qkݧo(ZZ4;;{2!qb妍Ǔ7az7ZY4oD}tli)6 B7hec$k:ŀ'HDr?}oBqC坁zɩI$, 43#V2h,_z⻏uDks^)OkhшH·eq!T 1 ,6Vj0cx,)+]@^'wv,A R 3Qٳ稞@qjNXj7glX"qXec'yCieM}PޮIZRoAԪ~SvBo"g"Thcg=ʍ[Q]헼In=_`K\sY Io?e'ݠt27/vf0lr/d"D*}=# ŝ\3TǙ r_gN[e `?Y6E˺{c;:J wBgt'`$jћuNq72ymzl m'װ8sM+J|.F_ sKz1m)"wSc\֗7J/NtX#ǻʗk#Mi&bj>PK4Z=;v1ji3:=K!-aCڙVLu'1܂FL[uԢzHeRķ;gwD͚1W'V8" zOӤDwЂ`(Wk/ 3!k 12Z^vm5{2C.Bjvͫ2|KVsrLU׳v3;Ӝ򪊲Ғ⢏)o޿xYij-@ ]:YrX깫kd*ۗ^Nj~i5`30JEdG9fءrE>} fwX~X$4W0Ͳ D #nasϙ9n@h͎Alvh1Ċ1 AyvVIe4LjHthy{!o01U LG꺿cA 9.TY{_Q$*a*:;{|IT LMxyʗH||,2j+6yGE<]{> Sș:lJ :6O_S MDmh n t&ζSOrv7F)\tG/&&VK(mJ,{nDdf3hbA. (g嗪ueI ;Rr\ey fw‰<jq];KrlU?ӽ|M5*\~ߨ]Ihh)@|!"{·3&^ۭѿ_tR q`M-}R \V4! PA{ؓvr39%j["TMm'9_LBkQ :> tP: 䮻k8e64 +:jZ|}5צ8j[Vv8~DF=Fx sIleuz}R 5ݑQQ11|)ϕ*`E, !8U`=3v6d4hUH$-ɴ/W=8fĖ[.Y*AyٮC5%0{9NgRp/xьF_Ê#}I5B0xog=xөq|t-D_k-vɞbV}T/D#z-OXI^ JQ5'h"zH& FL.{Y7yuǮr9ޏ1X~zkg )! lH ۟'E> O*꾭Td# tt*7u !S9h|4_YhղDH,Op6@9a~%C]* N) C] f[5Sg,G'5 aI'jjOx]ZXe7sMh~[K$w;f?87k+=קp^֮Aj0? G}b%4~ t3AѳW(S(ǥ!f>mJW@G+M8WX~7Z-  Kq b?tk99f KBSLDࣕ Dsb C>^-3;^%#o,T`Gf*@zkTA8doJgY5o%YsV1iA#io>*ҍ|+WhO\giqC;4*FgN0&G^@%2׻bux'HxOi|}vvY聫9!UzuʜgI28ؗA(aN//;c=u"HB KۺUtO˞?1>]wmIH..K Y5W yp|h$.{~-[B85}4Be8yPOFT yUhZTySN"R)x<| HXgy0qRZ{S>b'`~Rm o!s&?uǼ twN, >3tz꯭AMt#:F?)sl\5߀7.*^΋7Pu3pQG=Lٌvh>j;1HB%R6Wόw|C+uvjCn#P\tcٰnA3UeRd-c Z<aK1Yq 0яff*Q0'<]o]8ֻ^a鳀/K%,K WFx'3x|>ͮAfmvH5鼮x$T=_#nBkMTGڔyrLWǠmʚ> BJgG7-F  ap gs13k}*aX,ʁ$},=JJh*M d 5l9N~{G&ٴD_fLӜ^4-IQX? PɠS]z-@GaqEڟAb*= 8bYc}B 1a+;Cy2 /V"{"xEB_ჾ.en% SM\f;B]#cm&_!?kuX-h&$.mQ9>S< i a~_N{In\FvG٭6_ JnP2)fG4F}!{z+l$ȜٮLzA=IxNB$oI_{b+P%gkFhOE e=;H+kO%ph%:iV"b Ԓ~f<.gZkvlwG'zVW"{iݦ]Zrύ?MlT܄Sxe]e"e&q@4iFv8rhԮA"QmHB2|lY/'.^=;!ZZc d$xn>n{VCSZksn/tV`k/o@}1H߼ː-iu"eJj0[cOqibaMcJ8Zx.{y[wD+<X;pEJU&I8)S3drAL&SwB&OVsֽ֣nJ~ ^c:$Xk+̍Fꬰ cLqi7DViCfTj` "σ`omf\ͬ/{gf?~ bt1+QVDj膘|\r9vcl9L6b@=_tlj)$}kt\ fgGvQքd$ i-*k7"H.^2S(n5-! Ņ~D$PuSʗߝŜ*F  .ig[WI>>հV02$xIaATkzwS5t5pϸ1R$ u3qj(7Om,:THPb8G'3z8w>=|ա87EEIϯ7u?~ěyIXi9Rݛhb_" iGtv'+SQt)A:j/*YfʭdK~y{YiubONx+cYH$˼#Gа;^$T?ﮅݨb| GU=@ +Kw:w|v["=[2S# 6]N,P5H)}RwS4> t*@Bua1 򼘏F_ vqu ^tFQ[Tm͸jb_s}mƗk:@FN~W\ʨ㨶Y*HKiN;,Ƥ,Ū t6vzn"m|UT羼/zƺ&CS+U9E"!iY28;5א l)oY9'{ki+m(PaՖx楳ݜm,M͑>>|O+wz?CqUc _$b_Y}y0'm*ah?`%,)b9'9cǠۏ9PҦ{#{tmK/$3EAncuQ/;q8|w&$NU>m΂"vmQ}3$ Osfvca?(Q%տ+2ZLfXV~-'WeAU sx\bTMn&$m.II?3M2k , 3OX ρ'놮zPUZ\Ԕ{Pg#}IzYwֲs͓cp6R c n3/qQk'Y*_=aV_ECUSY;8Xr<#S|f \rKO/RF$jfSv)AyUooaDT^}RTY\7/= Tml=zW^7%P(R\JܺWݵvV_CM5:]CٷOlihb|ܗ_ˮYٕ-Y[vϟx orrcNo?ed]5h̼чX Q۫'k`?>xIMfg=PHxIV̍?ЯG GGgcg.۰9zʹcC\mL -}%5 h_zq.&X }Az?`ĘQCvߦӖ9~Wy5,H )׷`dנ'O?B>23%!yl|B\|R⋸̊ƚr&I?@RaKۛ#{ibCTEdu/Ľ/iwPeҿ )`),'?1Q/.x[yۯ̩` D T+ N _ΎjTlce( endstream endobj 23 0 obj <> stream JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222l" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?((((((((((((((((((((((((((((((((((((((((((((((((((((('F?6qF^GSh((((((((((((((((((((((((((((((((((((( ynlHXSIdT >շ$ci6cecMnr}smqZֶ2 ™Z)"oNH)^ߠn5ixoA_֘v֐Tvh6| ڗsNFޞڊ\VX.CE?XiW>]}*0O8f/ SiKL(M58Sψ48NB=5V| ܝZIJh]GlZ!I$]4on}E*u+ *.]#/ >v̾k{I휬2q]nm'wy[?#y:I%ҧ8(bE{y)?qejZw/V24V2Q@Q@Q@Q@Q@Q@Q@`p^y PhPyjx0; O0!Y'*<} &ZU% ;ȢڛKȪ Y(EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPN7"cU 6P,KcVO#1}`kzT4 V_#C-R~y'\4I{GzIE]{VqhLi|?<ӟPlKKa+56 w=t^{ymdPQ֚4CypZ^*Y$IcZx{th *o @AuA}eI;qSV>|aXnGx*0_px֥$aqg` t.|Q,I!EHY@M2?;9{GWfFdqYZދcd}ѿs]5K(r*գ#Ub:dWJޖ}g5ƥ S{e֕}a&P?WQccrHۇo֤[4\3qXXN׿@7\E3m'"-HoFӡ`km+V77aGz0uS`ˀc*5MQi`nF+i 6FZ9XZqKk\W7uw=Yݝrkz=EoRn/خvB:"k*[%" eZOj %\7$m{Ѯ SuJjP-lvYɫ(/vAƽ5 WO!%t~5w`Cs7@ @& F=7Z N=2D6*N$ 7-8X$RzMQ\5gT/ҳ#]F@I(:R :WSUb#@!O.&+78 [q'#mIǒ1BG"~;^ùkU+h0X)IJ 3ɚ/Υ|f@=vbk{Ӫ8TCVҩ9Y%d|݅`{Ic+M `=W_teeW"4}J:EA=Λu G"EtscH@E^%M#MViU3 Zq%'[ 9P{W3sq%),s[ԛ?9ТIlnbčʱ>Ԗd?һWk8n"CsW=Դ4릉W4DׁmÏj5[]Jԩtn2TdvdVX/5(=:y.7^[q܎.,EmzRZϩ\)0 =C{)SAk=b(ٿ X{<_Zۤ+F[xRw͸b_N:MfvaO͸LUI'&QaQa>#bç]W-E'}":1}(};Bo\^}5INL]+WV|Ӧ3a)$uotж?9whقwO`k^e91,ΉI⺟hՄ>:EΝ!!)JМ2wAcU! +%f%3<!%Vj Ym<2ѵa{oHc!n;ÐVH>U'.Kހ ?ym@Su-LiY?w/SکkZlnm{SPU!.mO'ɔ]9AAlu9+S\ҟL#YuJ./QE QEQEQEQEQEQEQEQEQEQEQEQEVDiݓڳH[aIj@fZzO$ޮ_ `6((((((((((((t]5+cUIEp+RSQiv, b=kм`?j/_gmVHtf*}J%o ȴپ >u|/0SQoT=Rz>4zE ]2/O ޯ(CP3W@Nٿ3Q [FyЏ\jڞ%TU\Vx0ķJعE{jEYc6xt 'VXDJ-z̿.G'_:躂ion-ɺ̑t!8I֍t"H8db;+/%#ۄO}[.Ōd/?hWM1[ıE[ԐUR%b1T h4UJIG܁T+9EـQZZ.~ ݵqiu!NjiIǚ%JjݹR0qڢF) Jw|[r1ri'=eJ0=OP]Zk QEfEPRyBS?Ŏ*}:\]QaaZ@i{4davݎ5cбd?Eٌ(Afu5e5&SCиt׳؛m.3J֜Lhn%èj*ͫ; (@QEQEQEڢ~ka}8Mnk=j23῭u,\@M!FMH?{' }NwK!']ji $@gߊ{yVxCSRҒLQAj~]Z%f]p O Ė,˨ j: P̪CMm&NZǣ[[E#L-Ρ{KWƨ꺬ǜD* j"W[H ;ū5졷_1iC KAm=p cWQa[X@z CҖIɧaVZ=CZN4a,&lsfg$$ԥKH.g݌0v$UG6ÇU-cYUu&>w>'n 1E%*\Z; 3YJG+Z^e0' =*/=w̻dmyBx5,>E8j,V&[p"Q+9'ܹIs8.YkK g k?Y}#Q;CUo;B {+MCԱ"STkl<2n0pE_ѵY4˰&#ïc[Z֟l5 /LZ¤%B6:]L]JӔev2N6{ˆBF7 ]|&{{VN:ܩ*rZ*26v*WNyɬ[2L5hdPuc]2xn\|R}sTgl*};[ ]NEneg(8%̗se9cYԄ ؎C}n#?qU,mUxj? ](^RU8gJgb#]̣'8R96~VwƳ3\\qhC3aH)C :OThtSO#4Ӻ ,Qq٢AEX nK[Z,j*' !Q-ҋ0+S}?:>OEV!~r!PYVd?fO-Nl-]Fpj/pܱ֮E9cҐGQ@YH@yk=+x2<3k:p?]|M#O7/)8~s q8qѤtE?:ƩSqX!}j l~҆a5ZX _il1mc5sW^fJeHӎh ((WB,Rvd ḩtW|~]܋5^tTL} D2}=+6 SvZGRۘ(AR8)ߞ:q4QEb1JFpr h3{%DŽJDi"p*ԢB;j)̙(EPEPEPEP_ uQp>@Bۚû徼 ϽOrNS yNz&ݯ0>N+?5]g?ձa8m ,ѕGZƳ* Zqt%%9VWo[mCWy%c!l''<)E$q U^8e^gI]JѼ?s8eh6kԓp'-Rx\LwM/uzrrri@$:JΚW s7繬)Su&\,aҬ aP{V), : L޲F߹Nz޽TuO_QE ((UA'ڦw,/[R2,VSEm]yxz+)tJ G^ϣ0mndI=Gw 08aXw䡗ix [rnRT 0U ɺ=.^ͽ$?f%B6C+:$P ƹ'Ўc Q<.9)BkKsk#ں/ _NRe{i{Λق9J8# un~ve&n+[÷wx)!ST]v0cI[1 #i<'qmhLZ}'U9zNF꣊aMiXư0*"bH뜻.a]T/ ``snk O{0?ʹ­焹~Tb\L(QEMXw&6ʰFJ/@GabU<6=kWN QEdEP\SIE.4PD$ӊȤƋy|vKq%ySVyq)mqU`\(QGW.m"påd`Emc33Ziw'thJw99*~pi%P> ީQ)Zw]~݁ߍ}kw#7QXUS\B`pGJқ:LfU;OTBVW#z+dze"9)UcB% "4ڽ|΃5F(XA;V eջecW_P*WO.olİQkʐ51[rqnGhԬIJNI4:9&܇֐ĒrM%QEQEQEQETљc `**I@jǚj=׏=8ڛcC®q$4,NudMă?t]P vnE85k=JHXH|Y726lB9|*S֗zXaN;3NKkh>]1$+Q8NRQRp:5nn!|Jًc'5k% @}+ñ.T1Ujw(1$lV4Ƿ1Mo_m(e? keAb梫MȮVr.>n!uXAK$RDpWZSO1AV't K&h2UK )98::٭˲*6ﺎ3݀,P[jhҋ.b\BO %X6?:8OIzwphӶ@ӍҫLwTų 9=`Xt3\F" gw%y( fxWtͣu# J"~PsUd<\[9'uzX$2EIpGaxpIi=e t7z6wde޿< p;lHz0JOt9ǷP@0?XWb|L|cʷp9Y^lkp9ϟ.-F})/+wƖe)pt⹠ps\Wыft^,u ®T+'Ka}lmiVS)5HG$g+[uW2xYH-܌.hCpi{(,sCqY@2D01ٯjR4v,Np1t"}3ҳIm{,_g(0H`w<`WGLE{%6[''\;C]n6뗻O.Ub*+=hS™Jks@'n"km|$q S+MC-gNO+\xFt_lRndWYKjRdWv3ة)TM2 vӯ{(AȮP"@ckG˻cԚ-it%Xp\q Oa$#̈`¸ð=鲿G'7ҹMv`XpgeI`V2Oxx2i(?uoFmup :ҵuWA^*3XEp6=7Ult_H= V>dkg=j1=Z]E/i#be![֭@"pu!T֫Fm0MAjm'Ld Ak?QGnӞꜺuq" gRUJBG}*&s0q@7c4g_IU1*ƞ̖vx&sEI T =Gqx᥊ P@V' 1x'iˠ˨92Gܞ+Ovm=B}AUyxu`q5d\(FFM*gPb>E#5=G1ܛ^X*꾕'ӯyEIX4XZKQ?IE[xkFNk].?`j#Mo|؞(QEXp(>l]c"HGQV9J`[ݡ'"0qVu;*8[B3{͢ӿ眿;~Sgݫ;yBg hܹB;H9?΋yLz ep"&Ԍ {_qQ?P*'O+ƍ"?"M9 ҟT$Db%QrImQE(&}eͷxȩ%tXGcU[mƒkD'EMu;SRp ~'dhP dZZ#yF7>+$(qwC02,vyqT/i_8uWmK^HS .\;}d>gj1lqT1[*CIyK){-Ơ`zl=GiUiy!ȼc 3[@RkoOj3h6*\դОQpL~ O5rH`GZ@Eck]!60uR0]7_A3wIu%{tG]M&I?)VVl>gaxS`_`;#Y6L۴ZݭVpr%9n@[@ͮL17?ǻ|4No=bvq#zs6؞tQEq((*١$e~FUfYJ%[zj)+;QE(((((л;t4P[;UPUn9qֳI:F"jp ((((((((((( W@Y{GEǻZЗ-H0:/.c\n7t7x@Yk?Ŷ]S?wUIvc m2t]"nRϧyOjTA=(dQȢ8)6k M) A"U;\C]:_Jv*o5BR 28G{iq?#Vkx8WVd7.k`U=E,WQu@[m y zSEm'fzUkk^s]Fjlw qJ#:n;eqrc` RnI =aKi;C2uj*v`EEV QEjx}/euW@aIGikkgqmQX)UKU' 8hBĂִhʬЇ4#+ ig&*_Z}s6x=M\/V4ScG8ߙ|1͔Sڬs\+WJKRRsATDBLKd$]G:ܫp2k]5cpjދhn85]G#W1MrP=EQ-^'{6hMEٕ2V,fwcNkEQHrqִ=g=kJH@ƯGCu%Y1'fWеc2t=`*x=J [^gB AmX+4>i2GR$2̈9,@mt{E?1hɷ: kۛ8`kԗ~2\F'NXvBaEW0((( . }j*{bV #6G#_u@P*(((()@ftր-_11TkKPU>jiƉ5ZR0M"Ƴjt^@QEfEPEPEPEPEPEPEPEPEPEPNH:mҖQ[4iL7FdsG5L46HRLtg/ fXʆZV:\1bozͲjI",G=kJ3 i)DU&-;Q?*\(dkJmÊw,ƊbT⶜irJ39vmDS|4~캤WܵcppTfn }!ڹ/kI@qշjCo)Ԟb*t䤀5m1PVp/jV# xT./8Ky~צ(~`\3 kI MR=j !FMOęLOcX9E]Ү혆*[̽caW<(4":)[u*mgs{ 9#i*)$cpziz4e+^a\PA~8cW9 5*Y>^7\a^O۱tï\V-=#+wZAI5 C梵",U>"Ce}Wԭw^ͩ Cܬ-JV+CXD,-[Ike_?Q6Mk\$(2X vllca88?HKmB~n^sv4/6 K5  ⱥUwęKV )j}v-t|ڹu: M1c$zׄb8ٱբ8^GQ9D8jmO{' 娼?y.opMkNi .^)^$ ~X VMw1I ơZ盐QE(((ZM7~ Wvw[L2QUͅsD}(@QEQEQEؤñ@c΃zrɪ0[<O`Twj1$;ִ^/dhrTI(EPEPEPEPEPEPEPEPEPEPEPC;nO*>m!ӵm籮JnRhkaMn>evxa 긎C6{qrrp2zW_[& P0.=2j1;t SZT[:I4jq#cg , vUm%R2s׃Yڗo"ns}ki KKs.%#,3Mjm|O ]!-O8=Re 2;T/id4!o18csnPzY1=QZkOĭ]3[oOU=*x:Ҭ5i`(IϖzM3Tܵt"; A}JBthWE9җĚ}Qqm;RK$~$O 94YTDgovx7'S$ @&AP}Nv֢C3̚cOT1 /n2: 6}~y KHpr*KPb3(cY^z'7bX?t.* &KMrwM^Z~.yؘmGn8/j%p,Wd+øV0φ2Qib0;bX䜓QV.y lBI9iGw'][wxdR0kx5][@ }Aͅ4%" KX-H ~R*X 7 +iHQ+Z%ITz˧`)]>$":a=ۤ>GjVtet#|64yܝvgsn`C֦`v1/zkm3]C$gd䎹JuzZ>qAEl"IJwշ)Wk1x q\Z42[4BYkw:Dzv1U8k_X.t[G&[]A֥2wK󕶈XYò?w#&YXUgM_h5eOọRƵApQim-[X%c3jW28ֺcO>˫վv]Ga~#rMOyrw/+߇Δok:bjvsݹ¸BC2Wik#?0ITnIr2Tt5u躋 [9v1?Zw4a"T5Uѣrau[{S2m5IBRncƅ̣<=֍lq>eʫ]s\G1I;0ȗRINW)Sf=>9d7*},4,j2Iz/{I yUs 6$_SֵWQ/,vYZ֐X|{[Y9cbk|m M['OshC:Ոk~}4{l<([zOC`Hz-2U~W]Rva`_ Ê:]nzW5-ϰ5ބ~ x#kug Ȼ֮/m{ˬn+M hm,cM*Ee%mK7sV&nXؚ.ZO._—ќ4}eӐ v=B=nfqTZzr j޷Y[E=#IcQ/~OXb>hgr2]7$6ז;W>"77;-Нǁ^UXE;䌊'E5,pA2Ó&hVGU-nƺ)hq]4Zco&tg钠nZtT 5wrTv&Š(1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Koq%,MӶ[Kf#}&}"o*cxsڹ8fx$FXwYjV| qzI~#"tdSqo!9n[N Z>>STeEz9DTw)ǭkIoܤjp K6cf]p Щi}]cwU._-F=BK6yWd~dY3MGE2y\zʽ5{V&aV iޟsbPUQ7oP~k[|Xc*FwBc7kĢ,="I~42ZͲA\"l.G֦5'Z=֣[ hSSxU-r#c,/ޜS޷ }yVnTE9 q>ZH.5n[b{nFM P%MzԨ֧x耲|mx?<7 : H\⥻"~T^t Ά{k&meB5q_ZIfV 2FE^ "S`XC0`J&{o` 0XrH}5mtE&}Zhd?TӮRp[0rw*ҥdPxnCXkG:3uRN{\59Yqa[^"Wl)gsjdF(7 -%5[8bM*Ov?'][aA ]2:֓*~.2>ʰ VP26tQU7v3OsMJ,tBQE((((((((((((((((((((((((((((((((85g^Z|՗E\'(;=oNmA#?5[$JrHrGJ)`uc)1\,1.Ectʂ+ f֌>*CǷqIC,~dSY7?Uoةӎۚtiл'+$c6]COgr櫮\czHyA(_@-ѱ1Z%88`ia-t8U3G\JKZrw]]Ĉ6 3YxQ.fIyץ/V:Ozj/>QTQu*!NXTV2ͫGE+Y&b9b{L((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( endstream endobj 21 0 obj <> /Font <> /XObject <>>> /Type /Page>> endobj 22 0 obj <> stream xݝn7@ 9@iކ ߂C[ )>K uٍ+a)^s)rHۍlLvބ4eofҔm|3}km/a›گ;hw \16Ί&8WZ`r/휳?\DI淃.SFSg]ouW[-!:S r>5@DOkvja>{;m?plLW~[|O歵)~-[%)#}?v䧫-F*AުF!a~$ y#qz Ga+JPZLjn>]n,s\H+E~7@o{n =ss: 6d̝*$7|B}HG@>O9(o8t/ s{/{g FFޓ%ϟˎ! y W-G^Z BCapaj6cPpFV(B4E{_q rhCNR;U.x]lׂe'p!ٵ S~bgex=(=KIVp~xbge{==KymJĞ;-6_׃z}[Gv)z~,g _{E>y{OB+bg]We eoOb /G ^}=~ I*/~6_WCj. ^z5l =KGt)ՠɉNP g\Jw={=4_y= >[Gv)G'$~V˲7'~)'/"xr?؈ ~rPA3j|)|6_ }٥W޻jĞ_k#jzz^ !=IgУ.v>Jߓ=ygУ.v>ǡ eoOb /G ^}=~L)K6UPW jQ|b_ ;{RG[5^z=l =IGt!ѦBλuzz!|^}מإ{+׷~xbge{==Ky4|>zϪ슪}ys> /Font <> /XObject <>>> /Type /Page>> endobj 26 0 obj <> stream x͚_o0 ߑ;v&p`bH<ӣl\ɢ.ĩwAz[*苸˛Fsv *g,ŻyGsPվ endstream endobj 9 0 obj <> endobj 10 0 obj <> stream x]n0y C6BJI"5XRb!}('YD~4siĉΝ[H%ߺEiAyΦ_r 'zћow,_12?ԓE\6yת'qЄnB_u$%CCX+wE><ł\> endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj <> stream x|Ev\zHɥABI%HB zE#RD45A>boD`r^Xz/ggvfvvfv;3$"夐Yfn{i6ѼD!'^03`< M1v/v6{'N}5>DR;'N7PE|J Wq(wԅ[.?s´;hSD?VsյDUfxrYFu>C~}o?{,I2A췉$8ٕÿ'lvP)<ӟ2d&IZzH}B/SC]LjgUsɏ|A E; 5N./'P&C @1O1w)}Cj% 1Yʕ< VRɁ !L?e锢ԫ_cd wA,6!oWϹNNJ7T7í=*S>2Ж.P?_T02zHྊ"^iGՔUE#XK] BD=о?)[R :*6 D}T꣚ p pUM &ÿQoqI B 7pȦ{j].JS_Xl{BSԎ4]727`a@]G}П] vQ|"O@ߧl~&~8<7`&*p?0 7iJ,=tw'XN]ގ vrS#6|<8%1E"RMŵedyIجv.ܛ- y+}2i6P-Ty SF4 QoMhh1pCQGUFzO.]U[$YtL; .:1+p~>76.Navy 4u61 Oc5PCafэ5=@w0WNҞ,]Ocu{Aǻ@x,E0ox`QH)ʜܞ".^NS1Wv}2UqO6rP"@% .;p~ P <ǫi*+(I9aGoGYlR0'(dMh-r :v! neǹh7J<=I\뙈$Ϥ6ěn2Q+y4\C1t Sz0t(XbalN7Kd2ÆG8.fR&RSurr@{0$AxPXW#Q>hr0{l4uG0R.z(3=*y8r7%uPt8 M 4މ8/b~ <ς>PF93 Io |!Ƙ(!F,bMVou({\Ao1ky?$Xgu h0`nRӕp+vk6E(H,5g<:jBu7IS Jdoɐ͔ iL?+gxb,(Hgy<J g/aʉ FH XYhhlMm1a_pNOa*E2e6ch1oHjQ3 q?gU+^|sp.lw j?P~QGUZy (snne]_k)a'vy<+fAHs/`^'[<{/5:N/[7c/|xalբmI݄HcxK} )wW '. ]~ ) 㢾ԹಟTl䢽gT7#+lu/{.kͰY?@\A]tƜm/X_o=s#Zn6f.ځ|53_7\"_S$[3{e^7^g}?ko7yeM/} KXESf?5 ;;6A }&ZA-QcfGis4Y'e6|ƫlv\{~Q.³vn%i V~G:jly% 6u4mVޥ~5okyok˗X7w޿V 3䲞82֠cIא c}x6A>Q5`èu˺XlIsNCk?Q~ yk{8?9wC;݌ ꄭѤ.{ljKa;k7ccgoRgalF+M758̔⊽B[ma5Ҿy(c-H/}k<E_`5¹'7\?հWN 3mv΄VOYaېÎkD<* -d[09q TNO/Kx19l );P YE=[hD sħTֺEs*Hso<;\u  Yv9cace!lPc훭G6e3׾G}yҙ}Rc:qJèDK@=(Tێj gZFli:H>eh;1h+cPhC(si)?怕JJ3}'U'hé#ʱ@CV~sHCf|0d|<1^-gҍ}>cO *|p;}>hZɟC?{} {^}>~hP{菏P&O  aPFVۏOҚ|ͳ)HydVLTz5ᙔo;I= oRcx}& ?l˽ؔ!jTvyq&gW<4@GS̞k&Ftpe4rީ~aW 41\ ok̽~.*\| U0nG^GW[Ն@S𴱯zx 7y:'ʜ٢_0pH+dXތL#k(,<~-e{)1˃']k؍qq7m!lfMMQ4~=")4)^Ci>.9dE|AVEAJqT9'B/v5֬7^vu|GNY{U\vv72զPdqN.H_EH֎.һh.cW֬Z6!"]cWc_{pԄ&鰵?˳@?LQ2EL 3|1?cFꌾ3P}MblHjW4d6 Niqyf艹>{OfƸ'dz^jqd3vQi0eiq<î6Q}$:V6[KAr=Sgqtup|xL1Lu9 `xi;^m~`T;YGuSKǚ_)I9`X#w??pwMr|d5rݍ٠[H;)1F[nV D9CYfXj?9f9aYqEv1(ŹW\kŠ5s/3ܯ6??. (t9n?g_{+ 0nfLA{p2M{1 \ o;ߗ_W+AcuUfg4cLA[- 5`p{&~`>yBw`< g;\cmx_´ c.Ͽ~~lg~lrƎ/?lj{}6W;նp' rm ^~~U#{lW` u/vŅwo~@ 0{p8óa_9y/I1wތ:}'1t=8~?SgFK-da{EZ2y/}#|]fb"~Zjj+枝@(ҭF8>CK+̣Sy *ڟ_ Yiڨ u80IceD> { fjװ[~xwѺL?/) 1cklԉJ ZPit=L?yGψu@ٕH.R_syOc^8K')+d6M 3?7 @Z0QT=E;}!0PRuKcr3/[TfpjJ&uюhk[K܄8z?Y4Ӛi|182=_0\h|S[=N\`k&7#Ig0sc e.?e`0g0 t6 05-_Q1py1g 6{?{W|A&86^Oq4aQ_ o//ĩ |{0 b/zwxOr%Kxr@0l4e8<v*+N@KNo)Q^ϰwm`׆ks0Cw0F3;m-akD-#]ʳ\'_Hթllz\rkM==2k`OӸv۳Vb~yg v1/M_T{TT1،{DL[B13Ř~}c4'^GFQ2~6^*6J{S/e!wT,u5[s> @Fa*P^"l4t:e/3 WOC(}RnayCyrY=(}(Ac@]e~<۫ڃB@pe oS+XTs߁eDK AJ@^d\c쫨 d/l3x> NTk6iAArl*f /cV:au7NeԷ@IA@]]5A@7 du4 q{T!_t9zG%8YNfσ.yݰXBzhk1M/a{C8a"{1_ji%k78,or܎&?\o|rnW1O:GF7~fI:-R {A]E4 PרmoKZcԅcԠO>̯6PbGS:7,<1Oe1p~Eb~,]mU_@g9R$S08ݟ=:ӸW~Wv6p̏߯=<e{n_vG~{h'6niW7(Xɠe{gz&ٯ(ZeS{@>ƃ[U`܊+ifUF72KОv1 Z$8t%kCI}_&W܏w202tS `}Ɂ˧JULۥ Rۋ#)MapK+CQ~35pThPnT :`0be:s&8 &TPF^jPr@06u042#\c 7oqs*iqKOA/C٘vRz1F`n6Il-"/bxa"vw88qn C 5mx۸vNcBu]uXojBag`\\7dej3vF|#ɘK554v"/2p~Bz c[S?yB zt-ua_? s9:ۨ}Bտ/,MBEhg\&b|̨cA7 4R\dѕƘG8`w#a1j ,d@Yxy@\Z\uߔQG` '.i8u(3w)., Fs;F#%\p<u6b.k쿌qZ} ZPc`L6H5['&sx+?b gcBAA&5߰Z=zu8 lt+` QG9g ('uq旝x {N i/n4"2M|R. #]խv6ltu58|T& 3"($:?-"R:p}qMV'5ɳ_ȧe#̯`(ڠ$略x{#0悽|F<r2{r s/s7KV˞W<_6m| s8y@ۙ]ll 3  6J`jo0qG37 NڙN_/6k&,NBZ S=)P~*z̹"0U5}~\=J'aP$P 4[;x" 0 :T*co7nIO049mؿ]y)ۙ]˞mZbˆsK0$Π+h&s}Q@ 򕞥3mzkVRnJAJc7waJ5}t7$zTzϯ&&JD@Jǟ yBZtJO;DG2N;G+=:0_%;9ZJ?cJԟbAG::ҥ G(G[%iUtܽYst6}7gAx0ߧ?~ircYi9jc}0/ʡ{ s=޹\;oX 52ތ/>#.oq'oq*w/KΉ؜cOTXQ񷕠y+h ^ {Q}uԓ3 Q#PFEZ)`P]Aر?CHC딍GlEV?Q?4ڍt:o ^Z>-6!-iYHGq$ UE/QAYi2>տEC]ވ8ŴoκAޝ)ߋ9Е8oX:wU&h#~dKHߢ,_.UFPsBR#~![qK{}XJmߑ( cE Go?i CgP1@}T_TyIEHK0-<uQ@9e|i!s.%J SpE'?S\Qnzp Z~JAU4[@ ~oZj7L) 4I~ȢNT#h5R?1Ty'(K"+OWp[~<.8Ї~ާ,p#F\aĂ2hՅHo8Ktg¡jR3I]%~ v'lT8t@yaAd||<S3O+n3ۗkiLewje4"V W& Opjҭ5iV$V2Ro[}ykݷ}F>$3-6; yCq,/kjm4ʅ;DɖVQ#W3O93˝gWZYUVM Y>&u:JK?Q+njtւQnkl86p_L]Ċa@yMufM8V(F5T9ֈUYXW@deP~r"gSU|Ԅ@$._[Y9><2V⫰`diyWpoMB;;7'yĕˑJ-xᗵ{gGuq'ʥHrUQ:p(I=)EQ_/~ KFѐ'qKfMfjW8%Ռ 5Oqa`Y<$ɅdŰ*+VXцlXY-d-0׶J7rq{ E:{rw^q=%VĭF'7mJ5zMI6yXxY3|/Mߌ!H('B*HI4E%WEUģ CkGӠ$Mh|'~QV dRUiwM|{OӚRtDutJ'ؾy\h;h4j&@qTFi {JqNKT` 3P)HI)P>s`#8~zR%čC8CqqdDʿc c!9#gq'QBN ^w"do7B/|!s!  DN 9iGC>GgB>/'\ yGBB ׄ*2qL+B^" Bg#B'EX! &}"=䤐!|({H!}{H=! yG$DboĎ yC"xW򊐗ED/ yAdy!ω=k9*"<#.tDiSBrXBrHc""Z"G<,䀸~!v!ek<$AB #d]`N{p7Bkr=x .{ rC.!ln! rD[lBn7 d:fr "BYm*` \oYi 4 r8BF_aű'O^W>P^Np? w`L6`lz91v- TA7O|Xt"J-Ț!irBf.dB,Nv& \!ec6B'WR+y b)Cêdԁo7kc|wQ-axmA\"{k E,2_r4Wcs|*gV:+gY҉YfT:rPg%fDj36KxF=3Ϙ1cٌ3-vd O>&N)Y+dIdĤ eL(QU6nOU،1e3*Fe(gDe -(/Wd .+3lPƀ{W}3J))Q\kOqYi3PɍB173fyի2zf<3Dhef(yY,bm_6|{C?Pg.g,p"@Z~)F}I>w _ϗoF"?X[LsOOed*${ll-f=uOYH$$⁺9 )OHoj$I7ഒZ>ƣtX&im0ƴʆ+'I7Uk:w_W]MKjە;W,g6?1!HEsgϞ6; 3H ;3$?,l&sysGE8ܛF J%ď!4d֪g6DNg*ݯ .hjw;1z^7'Bt=I#sk(MqЦ{VʱK ݃B >z^ϱQxE<2|OKuY9\斯gNCQzz-ezѫ:lsK7-zޥ#N)o/:B0N"gB!'|~S8'SɃH2#G6{x9xnVC7(PŎ C :˯R{ըQޏ# + vQ59e~iHB;|ӥt>p)s^2 B|0Ygqkv=B-J7&/0w=OO~>طϯ7΢Səzr$I%.rTIL<$O"yK>sWÙx7sΓJ- R!EߌbX)^Jp9p&gRd 1"DKؖRi>~IR&J9R;pgpN4YK^eL;WKD|IGMMlCIS/RSV=+&CڇԤ΍7=.4nĿ;krcO4G#u17OȗD?_w iLcG=v7ʃ)ïcyǤު. /x]R@|'W6M&kB.%97;;.'ٚ+s]Y rt[R?_)OwVҒBc[xx(1>Iq~%}aR4sJnwk ZRS,(h쏚!j/ʻ&xɚǶԘĶQ]J||4Ј(GUIKhRDTK+J$T?>Q%Ӈ[V~/xI}hvc 7$bMjIR+[͋@;%:j5!=0L+м(Q#GdGeI#G^rѣRё#a8p6m*BBD(f_Ś^j*>oSHy1G@']ZFN[ZkvT`:"=**XS<}$޷j meU{)WH#ߨޚ-Q(J;,?O&xJ60?[ RkkƼڰ ND}|KB3DD>7i[+mN`n.nlPvbd֔Yފ?lnuom*-r "-&EzeWwaYz搫cP[CC]J䨘V4k&κj84B&R“H4CғBJDz0j H~{n۫K˯KfsP1'$ ͎=k9(k+r|R~ Q,ǶwSlwvWDҿVjOV+S!y3,azz7S)@BB^fCR&z5q'Zi3oPZiݖyq'^YCKKpgAO,F&}'ͱ U]:>EӱMi-CӯH:5Iw03Vy jatpKbn7c׬AARzܨP/ؠQA]?m^odh|rT6Z?+݂>-Z:{47>l=Z~[<0`ج䔬Dd/9瑸ZR/H%/VαddAPL-Q@dOԌove򫕖$-59PR兀Ąp0/ߤ,yDNk{L^(5>1R)iV({k7JX%TD!yP͓xdfc1xHily5)FJҟ xΦomTDhkס\Fn*4gtG]-g/ˍRsvg؆ucf9ec [y9z%t)}!-R1zK|`j|NQhXG[|Z;sݺVn վVaOc>D{ztf~a9b4)pm0{zOY|uTRzW[}hen)!Ǭ+G_SghW%{{׹{hd;9d5S[v Ζwnŋ:e-/ZJ.VQb3ZZaLi/o7أ2_+%B8=J-u.x Y[6)JrQs QDY*!!RNrJru*+[ja=ߒ!񶑝[gq<б{Pvy+; g-ŷhnMOQ!v2k Լ^zUj&Ǻȶ._J-t[NJ򎬕ow!5'/D:Jm"Bx 1*;G7s@&OƿKu6[ag wSȤ])KfզO6}LӷMK5Y1xy)>͖ٿjbU6ҵL Mh*+>5>Uim0zDoXLo5":5;*>28)':MR*_U' #SqX)Y آ/XYRcQ;Bw>l$u-~}b0`(t8D8fXix&վWNJ5@j30Oy&ghN<PZJ?J9)V#֪V EH% -42AKMՄ5V?a GK}ff݊.ڼiib3bĨDKqe݈+QxGX/e߱&D;!#1R>*,xBQ Jkպe@+zҦtk?OWU4rFITZ*2b}fߞ'ZovIbnVAQ Qɡ֘-V/01;-7bk%^y9 Rsl-|4V>&S[Էm:oRf]}YWZôh1mG 59*L7܈f{HƄSXpϘԾ=څxjJ@rNq֘}sJ:$xz՚k_h|mɁ9+YQ_5c& {'&Z"[_61`Wd!y$Ly"+/%RmxzVaOQkY+-gTbF*)U+UyZ̎ʬ;84w/+(ay!(SYg<#9"nWkm{컳gξv_1%iClcHv)\&ej|b_(ΩDb6u}f CqqC}S;_}Gئ)E'ㅱ^n%->Qa:'~ut򉁾WZk$WeToRA@/C<ȑe\Mܤ-"JBe!L0jH=khbR+E,W.o/(t 9Avv׭Y#AS 46Eԭ \A]Z>aԬ-DѠn#xk:vg(x<;1%-չWMro{ ^LWRU 5VI :C 30ts(@99a *0q\09@oN~0  e,((e]ӿg^t6t/h+]+ǵY݀Y.FCMD)&YT4܀?WF8[ͭN,? ؏G6gaB{ vW +TdzC AnNQH-wBYYbr50sj/wNTpk‘lM󙑞\:]Ig.}w_*~odth xLDW>c tj֗%A zB6e}8nEecT4T U4ρzF ʟDx寧OpoWw6ĨpyH#\?#Nnkk}6#/d=IOm^#(vEɳ]kZY.R_̬Q_2&J)3@b)0#F)] ?UEFdJn)X[Ր׊V[^rHJzv2Jo>)(5N Dz vƧo<{3!# IgC{|:ՓZ<$a>R< D:b+ $Č d /{7{ e>,<34\ymΟ ۚ*+]͙-FcCrܪ1dPgP^yhU;DI-n:qycge,{M~;xyb^/.okdz%X__ g숂@B9T`el0*>ZEV:60/?VKڲ xxߨ vluʦSfWB¡ghK w_ڔMJڬW6ȑ:ZGLSVHuBC O];LneXHHB^Stv v]Z.[e֚(iB, ~P({U_KiES\~NUQ)d65V|0-Ͱm7Ԅ~/쉚~@m|{:ViTo}:_4}Vz1%9noVޠ]% (A\3[yz l#jt$B;[:03jNI6I8_8 7caפ^c"(_^כЯ8ј hL6$inΘ@@ @Cl2-hU<Ŕ0U`5-=eDcBQA H ;GӉ{7b6b}"ZY)Hp> endobj 15 0 obj <> stream x]ˊ@yZ,*J ݚ@saF+ab"o?IQ:Iy}7440s׷S .]F]3/$Z$&9\yPm3^Ԇ/Wy|p ҢPm82_[} *CSE|<ƠFJ36MV4>SBwyNw=IijB(ʴ6J(2r<6BvBҡrhC{9rhqk-h)⌐~2N<7uF_OO endstream endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> stream x|TE}M#B,Iw!J =BD5 (b/(cd;aφ|;3wf33w1"򣕤SgONOQf.ݲQYWFlj`wvZp4O"q@ BdsQU(3^*F %8e51jtORWh!Km}1 ڥD3jØH4c+v%"eMswYc1:cr!C  s ڥu'Һ[6>\}e말c@7U ,$&)H$Y eOB 9K_oU{ְ `2C601Zuf~'mxLk d&;C J(`!v ϣ:C&q,J@{I? g4TvoU*yimc?"\>FIWo,4PLw/ sޖWAZ[䍾 j_}Ƥ)'7Xjw5j6ڕ0~8#}~gokS-GOzc+2dГU\; ^& v ogl i >>!@k*쐷ee rv tZ+ֵѳ1^E] yi^fi/xa vfj{qí"m}l9c{b>uhfX3\sj.j[4I[( k>P5تd?Q)DMq̥k"(IC?ms_+ mhG1 5NOGɡMZX Ÿry3ںFt}G ?ZOC7,ucv;̼6]+??I7Wޢ<}yζYgLX蘂{H&ll{0zU;Nwq9s;U^(&+K?!Fп`GdOcBtAB`a=!d#:4 78/&\4U6g?9J 1v-n3ڊ9m3=p s8סmGޞu2?܌DlVhۙ0Vvez-\0oQ޾ͫi q%ւ%m!+iԇWz=bǘ`%Yv?paYؓٝ6{?TUAkRm>4hXa\M*/i`QJӍ`i2vu&$swyMJ}ϕnaA(/!n3#! a0l1Wߎ֏#⩿-Ɗ?G&qC>w ; 6[жP?p? &80L0Aoz_qpOA>S*F C~z0]d~nG{Eתc QJ}S{F>Qhc)Pȡ4=F NWj nZe Pjum$/5\Ss\jֳeK ^<Pҡcn\?`b^?KAHcm=Y9`o70_4ϾP; ,>g:&b,N4} C8.J[vDMX ļ_^GSD¯jkk95Ǧ &j{UKQP*$XSVU~V}wKKcέi$vG!*2K{ѸܛtnozQhuÕ)p ß]M^ KN2N\{O[.Rڑ֏\^R{&a7qq6bL\fk:nsu{ݍuDtܝIk{:=gw>? \[qsB;R[I Q#)HX ҾTPlJ1ɲџ`~ _CpeY ?Vl`Mr Mta%#@XoU{u_?"^Dli}2l跰2,7_kq9d#ߋ/gM Fc}yj^uD=Z^*;GS7h.-]IcS+ C}8sǏr!l݆FQgIQ ~8I4S 4o=x=ܢ.%5,1WOD^Dz۬6 $X:0665Tq~1֣F{_=o/{k!.)}I|i>"ۛ<5#}kL_s5[r5r>>E9gbbXkZO3qT~/_1ywW5՜_5XPMTdLGݦް}ovk XDcgm^=YډsA74樳>Oh $TwP|`Q3|x5lYik;I1~Y}?ó9>Co%~mf ;zR~c@S: c#x[;x e9y}a G-k>ar9bysyiĚ@+b^WqN8ڋ֛{o6,jwޛjO)=Xas" :c?RhǨ)m1&|>4u@=vվnz}Ӯr=DYKgkIz Mѳ`?b;õ6YNXhC772sDrg=bo5LLgX'3anVqJ\9 khs #EܧӖ~Y4Lَ5GlS9b=+Q+i;yx Eܓn!q/Wm{N#u(m<v&5Y靱gĘvBw}8'KF@#C؏g_:Xmfz1rfH=Ugj/v1⸎6l| 4PRٟ׹_wpӹs?;D3]bl|Osdx,H_^X/D^/-zƏmWv{_s*35uv 9rܹo?71X3L=花cCqmÆh+ur1g>cѿ{?_1omzZ˖&@݁r0ιHz2[iZǴ^,`@+B9t86ycܿc?bDcDM'{(s>l|gX6QOv,KoQ>g7Gة93Y1[co!͗hmFl?r[뙛>:E-`=Pea\i64ɉi>O"k>8Gꥧsᚑ4TZ95&pL ֙{0':S5˩_okL~_)9}'Xu)fj_AH|}#96'gjjOD ?7y`U0Y.EQyHnH2!kRqzn y`ڨa[}!~&cD=.^Nu{d #kUyq="r[17ގ;ZcoNT[i .K {n5Ck!X{+5wc(bOCLش,??zy ki~u?*)c6{C\BϏ0ע\%dxGm֢L>]e=ksЯr.1܎ֳ0:_מSU`П\mfgXjy 6~\40Y==RgCWݭSڻU`VX{7ج`h9_=eBs7z^)+&Ya w_<1De bsgo;st#,~:#h3r8,sYl1]ȟVECl9Fl7M^ ^nN~I?ƺ&)!ZkX`J-UGӅ0lBJwgz9޿.}ߦk]g̺pncUz±Ϲ1RK.e9CT}x)6­es32o{['@i`}Daw 'ay-w{( `qZF S]q]Db&[h>/ gFM8=8~1q^u~pN<R<הϤ8;uޫ>Oޏ̥9K(y΀2wtM9IgEf$2Q)Ca\gvwP0;\:q89 ꓿Xsrʩ)l [̇یT#?{ xH{a8^W1j>Q$[s#6GudT{705wDy5_;r܎r=BXB>)˸y)^3" O.u?|384Qv^L}?Bq^xB|bbe'e9;v ;Bsx{1_s-ȣqvXAVc4KJI,6ғhfZϽ\ϥjn ?aM= QW1~f3s}|ƙ]{((QfC8 A_o c 6"Doe3ҚcN]4_BMF*3G)@_I$.9}NI9;NxIB|sK#'1ӝ`8-͑sP#HJPc~w`|.`aw;-vSص&0HJ+wχ;4ORW̋wߖ>Ɯf^{ŋwTn@ܧ0wMB>P &K~svEPcv ٕF;K̛Y;owܩ~_[9t ́g( )/&!hg}DG%x")Q|z8YlJatgLص ~=ȠnQt4GO̩T6']y0뇰{~#EoƸu}Wa&ʿW(e6AY9q.HN!;Ъ\_2Vk2-Hh]׋H [Z.;rGyQ5Ivc;cFh)ϱ!8 l leT!؈GZX0QMMU̶N[OHXwXhksJgHWa/wg ļC:쯺bCͩSUjD6ڬ3ߧ|m3ų7`v;:aIKZe;FՃz]<&0Xs,h+6YˡcZlp`g0=k$t /aVaU5Vt&q0;oq#tcL`\ #anL;42i1?S3ǘe@밮_Cʆ{v&M7tW ubi~~܅>.}G)uHGpa^gXg>C6Bz:n;kq$.~<]sM5EGij6D1rH,eyQSUeezQ#~msQ^']fqxˉ22lv9EYQN^^G`]I(޻P5nd֡Uc1-6%cHџ^l~L$%NO>I|eu.*"A^$}k"T a;(T,f93(d-G+8~Oihu"މ:_LӔt|+e>'V/꓿ZSnqkX{hMW܁9K>3d|K"~W+;Jށ)y+V;w\U}w|~vwX/{V g/'SwQ߭7K` f.~&Q+:ZGRhcoF {:kwSZyxNp3ڣY{4B<@<:֛i4sܳ3*U_hNV]h}L[Ok\'x5<'i nNЈnh= DS!m?um-rH#1BYg}if4F:Q½K1;~M6Mz Ʀ3āt:Ddo">>π ) n ; شCAq8B uWֱNwJg>e@~Xז}@Ix<ԈqkMh6qx^9 via7`]wEKx_:gI{;5BxWE,xbfg;+v>=;lk~y9iv$$r:1X/aM >pͶe}7zkwqyަ n{ Cp+­FȾs@=ݹ NKnG_wk?l}7o {Dgd6J$UnSÛ_k}W'W"1?E2]3s:#+1[و$={p6BeϸWg7n3t7=1pᠱV8ko+:q6} ئ`EBmAe3Asp38ߠ&zP`YEƕV5q5ĵ? וn ?<&y 6`.FR7KS`Oatz'[a{?x=iaF1CӒ}@%?'-|^|Pa<Ov%=}`/ݝpϭ!Ϩ[mFkAx>܂g_瘌4܊2x22wv/?g3 Ǡ޺;W{j/vߌt5Ugu5+_WRk5OTwCPl[ 9k/Q"8Yꐜsc3J-8f}kf{iLƏavA~:h ȣ ;I̼ qCioZ.=N̝4inׅH) GL.Bȑ_;Z/ %9hxws k;T?,4Kkq&'\h,ǎ[]{[GIR3ت㴓{1z|ALZ;Bk1 nI+hM5tq#ۍA?A9b᷃rpfbF#~7 c 36,ǵ>4UרL3(~Tۍ4z;t8Jon@*?.4Scjc&[g  ;D nHCMF|=q"H&E#NOY( phzDp2r~Hm<6Hr3Z*p(OLVӞB^ôűE>h1Ƌ-go&!;{i# ?^ws?a~ %n'f>P'aL5C篔p7g=iw6%VQ@[j$V}JG1ң+eq Azeݽ'hNeP6q.cM3hMһi - J~[U]iMyʚ.YWB REsKBD*KJ) M)mStQ(>)n$9L qǕJȼ>#1W*/bU5 yCQx*h<+Jw)ԔR_9D++Օx ߅SJWk/~qzR S,XGҴ>P JEb*٥^2<3+J#zR;Vijz>2<-܇IYm|퍇^[44 sR\nL|iZ/ϝ;1?%wHiOpxqG eZ%w&r=?-xeݫ.q 'Rp;תػ˟d)ΓXJ+Uy`dhqxeZA;o.8Kz"z.4$#S+\Dwm(-+׵x̡iۭdx5IJ)C6p*gn2yS)cB1{_W:$%]:>٢yF_p(tDžeVX+ǗN/ݿĝ-Fd~Xa2BR*sC܇C-טֻW^Yc\}&hո/8) %K dF_1H(//_ -c&:d;R%yUKy^{ ʃ>œZA܋1tL\ؿw';#KzǐPa^~Q訔WRӣtTJ殚A»T{Y_*)< |V Nt>UiSdB pc90ttt< Yc1@|tU.f,)\9ʙ1R( kVŔe ĕąܗST-xY9!.w<;(((&B;L$CAB8+ `1荐q` T%˓/L J^LӤ‰x |h݆bJJ%f 0OB~g 'rz'ȮZL}y"E]0J> 5ZV׹CF҄'ua \ܕd@DPv)ec|%REΆf ?qeNJV.³aj4;Tk??1jQ19=sԉbm!uޣ]w mcoA M7 |qH,ާv`8Ы"L >i| z]u/ ]UJR)+rRV(eR.W2,U,V",TWVGJP)(}wr\)(mS[JRTJy]))UR^T J9RU})ޓAޕRS^o$F@-/)ޔ )^A^U/K/ /HqTz>/sR<+)!8,œR<.=Q)a)*dCJqPu{@Q&EHqI_}R-+S#=R%n))vISebTvHq][&Vf"f)6ke*I^Q^R!)bHquyd!ĚWIO #!@Ac j6䱠طbބFPJ5*fľE/@?4-M}6hr}= ia|> Ή},pn죁b 0x2P X{.07QdsB2ʙoVI3r!S;MΙorΤNE9L4>SAθNcr3S~Ψ}9yrsF"Nsr 44gؾ9C:  A2sЩ_N}rvIGAHz Ű^bb>9cPLi=,8:6Zk\RͪEQEiiQMg{~gk2ԍG4OP_*5S^ s;,]4[\'K;oܴ(Sz!h,8 ҂:u4a+H^ZN!ZZ@i-ZeW)c)<;S/7nopSEd0q3_yοx oH[ V+JpX2,",<0G|=HfLT0LگH00ch0 < F G"- CAA` @ A/; t]AtAmA%h 4M@2H1p@,h D uA$  ?.`Oh"?,8N?7+ ~?S=8I?*b߁o7ko|>O'c|wqxo7ux^/ (x<G3i8 OcQxTC! 8rPJ~p^wNpvm`lm`+l&l7 zׁp-X W5Ts%Cg 3?Cg 3?Cgl.00 c00 c00 c00 c00 c00 c00 c00 cCg 3}>Cg }3qOvмy^7y6VSY4JFzާ6IwӽTJO ΥK,1gP~inPaWw gp ߟYuS.V֮,bu0i1T@(MTL3hpĵ8"sfl0Zϳ]^@o1-."s9,`]'s%g5]EkԮtE]Vi%tsnF6=lʹ]l[k,ov~m3|n=G=$rjMֈIg.G W{XߢZ%] U^1CFH|<5jFAJ$]Ez|U}U3ۅk5}/o聻kkw@B*Nᾓv]xMIs7{h^GIy?'\)Q9x!VۿazE ycy{="iznJ1BH/= ׫(\ӛ/zA{g%n~Au'o4jI;Xhr?AZs!Y,Q~GC6|Ϝ:4NG.Q;[ kԉ0K#ե܇GvN Չ ѭ:1!ެGb\R#iH|=^:M6]+|ÇOs4v5R0qJ. yp?QD]5e׹`e|Ç>|Ç>|Ç>|Ç>|Ç>|Ç>|Ç>|Ç>|Ç>|Ç>|Ç>|゘DyfIi Kפ>FAlե.#qp>zFql8it(:P{z=kqsQʏ*_MdXԓ,O?4WC;O[I:T݇zh?ͯG\_DzDjjʫ)H&U<*9wBK}rRmtڷKr'ф_m4]ny6_RV{hk6rZCG%vkЩ;r6+!8==ghȺ \u#:+7ɬsQ|f:Gc}K3FQu?"8< r63<2ANuXaFP%C@w$UX@ P?h% (>ӚD~y؝K`@`TBCkR`HIkn k8,,̡=zu:fLhΡPCۆlڶu+2JSRb!_N'J%TL RK[!X II:29zBccY_M &3+7'7k]X>fO_V7;XW ~A~Y'QPǥˈQu4M|uMAa Oā !?(Pm)OhmET$ּ<.3՗*J6DŨ:b:xHu؃ ƎQs'$mסmXc oXL+6X  uy4qzZBcD}YᨯdZ-nW]_v}nW8Ԩ%:^QHZwC{L=٫Vy6>X,BUY }V(ӃD抈JpF2(l?gHLdxL_ iøWFC{،!/wZ P`Gr em#Lfqizr]Kv-}0v-WhmcЧ&$tN(|ϚwΎ@+K[a13k/P1O@ٿ5=X9;T^:B6#)5Z7vʛﭢQņW5ņ+i{H_zn{ 50Vme[N9b̽'ojbz16a+e'f]~> % \a褆 Qcthw\Tȟġ{Nv ]dC!5Lho> KM5׺՘Lu2ٜr]y񋌯W?>ңf+e)ig/^H;{h:/xXdK^́a~jH>ع]?ۯH(U:62#bW=/YG v7z[kAZKMomWq]h v2Dߨq@Cy=ğ(Oi#iah@TԨ-MɹGӶY5J |Yj۶|4%Rq1-3w!Cˬ-EE:R\Ň4O[= aDdӗal3%U(?dWD&՟xUL> O0Uݬq`t#50R>XFt-νnvkgE9:ml?NLd}`0b[~ I dOUݧM2 /Œ#|I.(_6e.`cDF H9jfSQ,H$mqd# m ]h(d[10DӴw:fu{{Eg:g'eգV %uLeO}I=P ֬u۶)o1R Nce",8omddӴZAfScVv|}SOOZʅôi6ˑ0]Ku>fr0lBĕ9% 7vsW##ؓ<į{ꃧS oߟ#?/ͭ9ᕹK{~򕏞yG&W> Kכ8a*QU{V)#r^4 ϼ8H7*?mZߐek>*T_nOVȄk|фD tۏnRc εurSkm}wΑ0g,YH (ncq6W.3۰PL1c@eԓHeJId$*$=NxS<`ftD^;RF<6hҧΡ(ՅD҉.%hBHZ8DI.>kdžXƘEDY,A5@>X4ɮTEWD "g*d8,{B`ạ eEek&+ץ)|mm+]a6fW./ gfvq&ۻ5K,*fT:^*Wܙ{vfMǶ=lo|]+]{;+OMsu[tbƸ)/dfw유Nhns`PWrU4҂$R d]ʮx]bv[]7@m62#xuDQƅD 9OQb1+!1|zWE6{4~h:ALТA#w ռˏ?.ٶ5gĚq^K,L=(K, #779PĀ\͉\Uig Hf8r3(\(f$<=U.r qϙeNrY:|CϰFWk:E=,S#s)hְ B5 3b9\QI}K?-y!Vn1Ryi?dtGNɁx\^ERD!=6E(G=}$SՒUt 9pK VG2ՌYX{IJ*JRo*RMR]f 0:2(yk& +T3x͔R%5{: u& $Sxjxv*I9e?C&o}|ztucyoKC ޑ'+#/|kA{z=NőZFr+:=ސW-L.;䵴{d1>2;8u ѯT+FNAGSiyw{"|}.yl H"Ă@Z+i(6d*NG<#D&bE8 u(O^ucZl+7X{JX`û XzR#0;>Pt$˓W٩;EI"ѨQ1YL2#˻y̎oIn:g @G:63#AGӎ:sӿ ĝoan kom)_(Ek`ߺ}:Zu`whi)N޹2Q~qg[ߵl~SOVm`bW4eԋ2 1v%_,d|(s~\uپQ ZgK(J#wWXu+ l~bP,SaiI?!`ٙy91𨽧5^0|ˢZ5]g[(L'y)dmD3n_--p\|{=fb-)#JQ'A#_嚮þ$s|v}"<HgV@E[_J8>2TU c#Rr5AC郂€W Yϱq/r2>6@V3V^Y[OD pBŋ E 6c8ƽuuaQ[ۆRjGۖ 4279^xԽn]HNZUH kW?g: htVMVKߎ&d3cg*ѺI:s: >XQYׁu3VaKX+\ 1JT#\!ϱ$4̑w [}\-~,wڙ*UAE&+ab!nc%cS1bfQD".'×"ml;Kk9c&au7V5lp(bM)rOɊi 4_4惞?: x]/{wOv =Svпw<15Wƹ3$6З=/sU(K`+w=ggdF ^l#x=OߥB,7eo %Y«l4RKWm1 2FF%pcb$?$fvӽ ۵,p֡'*X5-E3gz6a^4KV)nI3f(2W8\ְxOc["9ѿzIRl& [BMXuJofDP Sb(h-h3h3bI0tÐZ5\v,n~y0R+8w /}uHcWx%x*fplrf^B r y65>fG]pUi8vY0jT-@k6o,hs3:I=qE^`Q"$Fe++$V_ ~#0BXs0i[7`9j 0 ̹p Zd!^+&&i8zeyo[|·͵1ҖC3 RlCy#tsد?>dWaSF"d&YEh]1(*cD_3 7 (Dr65[(Xm˂Ikqw RP.Mti *Hoo𜢂HאJ 9(u Y;\FvMJ7dѰ ,GZk z>gc5Z=K@&jY7k\ME3ѫZ#z8.0_֋?s'ԃ$Ey# 77ruׅ%RҎSԸRBP8@,IEJafddsD"Q9u Vޮȸ"K#0 ?S a٪b>ẂZ8%jD֬e6ڜFQ )m^l'm]><D 8S>8 !`qYDa+=ϥ7y-rE#R h#F-ZdS4tC"?k`\A3ˬ0r3,oT & iSte$~S2K'j3zqӦM,-49lMyvU4B/_j-[{~a p)r2a0ѓPP(E+pRɪojىvwNӉp-`\PMGev=)ѓ+\uCUd;u$p*/RϘaeuq:iRӡ:Y`\;fV4W9}-95u=-Rgi4H~2[~pUqLu-cEw(m;J/l_>sdL-qKM>=sao]C`=lpdM! 1h:ʙڙ\LvQb9U"X%^FJ$5F)Fr - *>S烎+yY}nrM7MvI}^`RW^S8Nc BxMnzPA0KQ 9@%]U]Ux0ҨLx9WrZ 7ZᚒK& iO> (yGo/ /(;=cc嶠T^2w<{SXd{yxPqGC+[j}ofmk=즕@hl=:ں*tI{񁾠ԶeMak{%DR5GKHBUD VVP G$EQ (|@xxtRhHѮ0픖"rɼF6OifWZ[;QjKI,u >˼{|qGx|I,l_ؾ{U_̩gǶy?{2p˟ߺ˵џT#=ᥛ<ebT a {Q <(Fa@qs@PH;@T\ +"+>JF&9u_#MQņjE$ZUT< U}yRBEE *x Qkju0(PyJCjQHWTZ?T*A80R4՛f\.n Q^p[nQü-k9DWaY:qYԯN $UkQBv;qvl *()Id`KL] SvUjV(TQ&GHa x"I9#/5$ME^E,RrJiWP#Oe4&|fI5 9Ҭpbu7nV9e}py:61h2s8 H۷&=ͱfg%9;79W1^8"=ʹo=tz=PcQv@ iwTNI|6|WJTJ|I*% Hѣj| 遙4]CZ:H,2᪳>rL_\ l8=nؿǤV1Fsv C͉;&cm*QpW)Mwlhi0VɆd}ҽ+vtټ~@KUkԌfqfi]Wb!䱛т-%h߮邎;W@j?sVG=-)Ih GQ8ZPăB$|8QE(bC+ICa%eRާ c6RBʗ_! `S-$A-bʑ j i׀mOG=)b"l"(VN@#P)h=>OEϿs"ȒJÚڢLUHZ vBA柭'j9Zg> Ѷ=zaz FF A%a`j\sv!7=۱w?qLR.͓rHRfv.荏a%`8ٛf\,@4_JTa[CGʼnMҷ|.2my/Hx[dGz Jsϧ?cj$4,^*K$eցyzȱʒʼIьZk[Gw-[o:kuH&-g5/xCG7~or,zD + hpѝ[\ՂZۆ=5?EcbM.*A Q9[%Tk%(eX !SkUQC) l *iSx(y=#;/k0a5Rss'+z'3W`g?a^a8j!řawsDU 5j菍6}|So0*U&RaIf(~ KK-: OƯn(Iy6Rg}{d H$ŷ? 2v[Mj_s>}}6+Nd<|jsuLc_i\^?8(}v{^`6v3Mwo:yҞwP 3c endstream endobj 2 0 obj <> endobj 1 0 obj <> /Outlines 5 0 R /Pages 2 0 R /Type /Catalog>> endobj 4 0 obj <> endobj 5 0 obj <<>> endobj xref 0 28 0000000000 65535 f 0000137533 00000 n 0000137457 00000 n 0000000016 00000 n 0000137620 00000 n 0000137649 00000 n 0000000353 00000 n 0000000516 00000 n 0000000282 00000 n 0000083754 00000 n 0000083898 00000 n 0000084429 00000 n 0000084895 00000 n 0000085214 00000 n 0000107757 00000 n 0000107897 00000 n 0000108410 00000 n 0000108893 00000 n 0000109207 00000 n 0000003389 00000 n 0000003554 00000 n 0000080558 00000 n 0000080749 00000 n 0000060306 00000 n 0000006008 00000 n 0000082566 00000 n 0000082757 00000 n 0000084356 00000 n trailer<<09147cef2f8845cbb2847343a6802f16>]>> startxref 137669 %%EOF dev tun persist-tun persist-key data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC data-ciphers-fallback AES-256-CBC auth SHA256 tls-client client resolv-retry infinite remote 119.159.226.252 1194 udp4 nobind verify-x509-name "OPENVPN_CA" name auth-user-pass remote-cert-tls server explicit-exit-notify -----BEGIN CERTIFICATE----- MIIDMDCCAhigAwIBAgIIZWD6+5oE/dAwDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE AxQKT1BFTlZQTl9DQTAeFw0yNTA5MjAwNTI1MTRaFw0zNTA5MTgwNTI1MTRaMBUx EzARBgNVBAMUCk9QRU5WUE5fQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQCDNUCX4Sw012yz+WUyJ1vO8Vun0oGSi9ENZ+TQubXI03chwtIpWMaAOmCn SHeKQjJpDaqcAYa6TsUDhCJFAMCxRF8h451Ew9dAsEahgzMZAzpHJWkiYdDgbDUN XP2lc7gXqRcT0ocKPm2syiDXpI6LEC++Un3SSHv6mVmIklTLS1lokpdLFkWjXDyq 1VfoQOBgai8p0XTLJm8OHFoJ8AwAqPJCddAv/UJSH3sJhNNaF9hfBZjyhXV0WaGS D3xqpIH9wsAjP8/0YPqpp6mV6EZwn6hyHiGnuE/nf6vclNoI4a+HWZ7ZrAI7GQ45 5hnJ8rXjJzFBIP0Rb2XO4Oi+Es85AgMBAAGjgYMwgYAwHQYDVR0OBBYEFE7Ca6fL lE2VNVcgSP/Bxk34wB2wMEQGA1UdIwQ9MDuAFE7Ca6fLlE2VNVcgSP/Bxk34wB2w oRmkFzAVMRMwEQYDVQQDFApPUEVOVlBOX0NBgghlYPr7mgT90DAMBgNVHRMEBTAD AQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAQU7t0JKUppknf8Rx FIVxtEobtkFEqSHNM7xSZrU77i9Dg5W9T4+BE/RN3JIp1pFE8eqS6/DPIWsUEI7H YzojI7Dc/T+sTlNp89gAZM1AX0f2ezimhItaUN3oUeDg2pfl0jNRTE33xQ6oEUs3 9rZT/3/eTxN5mvxsypgyNfuDZmiR29+O2CjnOJy/8jLpm1mnFsDfmhnO32gHWR2o AeVAwJtfESH3YDH1mdi7IpIVv3aVvsjBK+EyZjhTGsCuqCA5EjIL7JPZ4KewRirc ubl2X6D1cI0X2+D23gV284zQB8WM7c9Z6Xt5b4YV3jS2MrHlUjMmahp/5wdqVUr/ Yd8ZLw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDlDCCAnygAwIBAgIIMqNt8ayL2/wwDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE AxQKT1BFTlZQTl9DQTAeFw0yNTA5MjAwNTM4MzVaFw0zNTA5MTgwNTM4MzVaMBkx FzAVBgNVBAMTDnNtYXJ0LWNpdHktdnBuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEA8k9RDYLBD9okqJQqBOggar5Udki1uAekgHm8z+V8y+L8uc4k6N67 MIDzs7WEqZn0AMEbLFXzgHpr1aYQRT+jqKHZEPwM0lRvLhddTvvdlWzP4tSDDmnQ eYDClBMlCt51px7sCmluxwC9coHg/jnac01in9FNxjFz2XvDWCBWKBlG+XoV9sr0 qJrt6VqM8SrJ47gT3oEmay9t3Iyp+RpG5M3HzgFy2+K1NZxkhRRL2pnmhyOo9DvP byy3mimu7pHP5w6R4Yecw1O0oP+JI25LoZpdFiVb4tztIbJulzwCR/0q78i4WFMC fpW9VaVi1B10hiZlHCM4sE2glwMGFwFQzQIDAQABo4HjMIHgMAkGA1UdEwQCMAAw CwYDVR0PBAQDAgXgMDEGCWCGSAGG+EIBDQQkFiJPcGVuU1NMIEdlbmVyYXRlZCBV c2VyIENlcnRpZmljYXRlMB0GA1UdDgQWBBQzj0VaAFJp5c3FoVI2pcT2fm700DBE BgNVHSMEPTA7gBROwmuny5RNlTVXIEj/wcZN+MAdsKEZpBcwFTETMBEGA1UEAxQK T1BFTlZQTl9DQYIIZWD6+5oE/dAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwGQYDVR0R BBIwEIIOc21hcnQtY2l0eS12cG4wDQYJKoZIhvcNAQELBQADggEBABjSJDftfWmi Dyh+oHsPBAUwFIjyu0U1/VEPSfoPAxHtpWc/OQ4GH028GUWikNROsM3lrmrhk0XM 1YKEzX8f0FkdP3/c/f1E6ecXR6DWCtLCjYpihD7d/xSKwJzCED3DXU81fFvbIok9 pyE5EwFB9I4dAxs+NkCi+djErK+jrlbRzUWGUZUFJQL0vMORJKucx+hMo8BDI3RZ ttLgXl4xVPlbO2XgntJCHtvvWhxqlSaR9ylgK0rRmlTOtL2YBM84GAYhc/pFaZq+ 1cYssAekjmokgAJbcdhmgBBRgLV6Eh3KID+kqrjZFam8Kw+xmF0uClvA7fVCfmlh sPnysVIeuIY= -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDyT1ENgsEP2iSo lCoE6CBqvlR2SLW4B6SAebzP5XzL4vy5ziTo3rswgPOztYSpmfQAwRssVfOAemvV phBFP6OoodkQ/AzSVG8uF11O+92VbM/i1IMOadB5gMKUEyUK3nWnHuwKaW7HAL1y geD+OdpzTWKf0U3GMXPZe8NYIFYoGUb5ehX2yvSomu3pWozxKsnjuBPegSZrL23c jKn5GkbkzcfOAXLb4rU1nGSFFEvameaHI6j0O89vLLeaKa7ukc/nDpHhh5zDU7Sg /4kjbkuhml0WJVvi3O0hsm6XPAJH/SrvyLhYUwJ+lb1VpWLUHXSGJmUcIziwTaCX AwYXAVDNAgMBAAECggEAX7r+ZrwV0lF40jFXOIEM7Z8sd17ajE5Yq3ltIyWjXFnd RvsukeINSmhn38QDGY59XB7uwWFjxoqXN91X6EPwQJtQyukJl79L/YW1k5LmRDat Gwyiins7pgU82ouFwvmIufH5h1OINI8SSb8OSOJKb+tO350tgPPgtTe0QYjlAQnW rJ1j2VQZk7fehCWq59+VVUJZuvPOagdxGN8LrfNts/eLfIbm8ylUyUDh77zq8pvF djj2Ur3tK+YBgbHGtvFPhhkKCXXa/8kwxjQ9SguNwXd3E5O6iUyqxzw9ObRwvNXs iZFjqZ1Rkanb+ZbMM2WJ3tL8Y1PttPXkXfCgmTEt8QKBgQD+dyqZkxvRMAKg3L5d ibSlLzwQ8asO3eDTIP8TCTeDJyE6Mp6QJVRz5xbNdAIN7O66oB9UE8dBoKfw2lDy FpRTbHQoQU1cy7SU9z6Cy5Lq/VriHDQJDr1e9r4RUCxBd9wgArS4rCRqAe4k0Oxq u9Q7lNqPX9cqcIau44HHPJ45swKBgQDzxWKBG77FbPQIRgiE2qSP1atIR/EXI2qS +lr2KTNyodG8CWM/KHQnQgwkuYV1+U8FmXAEjk9MuxGYmUsmCWLxv0tGIDV1vM98 h6cgESKbZrKkMh0pkaZCE6Fi39KMAKs2g5UI25dohjENMXHXrsCbpyxSfUrmBOSN msbn09gLfwKBgCd17VpBcNfgvRebA75Xo3bWO1dZUrCMgdfbzxJxpHUnNUTkIqix 0UXj+SpFKihkrKSuPg14v7aSplh4UoMoMzo4oE65ybhxMoDDUqNP1GmyfkyAGSWq bn1ygAkJSMOiRbWFFedpcoAp6nc1GuR2WjQfIkGHmENRjeFDEJYH9XV3AoGBAKP1 rzuHndjMX5bxA+nX5beYz4veV5poh9Yz7dqD+8aucJM4/TgNzZJaKjDJV6rx9OSf P2jRDyVc7YjmElWTGqnfMJIKN+rpA+WOmCpJXC2J9b3atyKuhFUNPw9x2/uut3oD Jsq+aCg1meh1yUx4jbQjzPvuqeHsiI11/TMQmc+hAoGATcXwIypZOOReGBBayM5m VXs+VhwzeQfKaHcizjgZuihnmDahWDOnoLP5XnlDjdLGaIB2mPN7JfCUhKSFB3T0 GHGeki92Wlz7mj0hj9oEkFKLQHzF2Vh0RZlLEXlNj+o4OpUs2IyC67l1oQuBnIDF LraBAWUlwtivJQRtbI+ubcc= -----END PRIVATE KEY----- key-direction 1 # # 2048 bit OpenVPN static key # -----BEGIN OpenVPN Static key V1----- 68bcdced5d843a866c9b26e917fcb11b c6aa0a73245b93c3f19a33716410443c d785d20237dbcdd545cb557a0206138e beb49af9ba038bb02e51cdf935f2222e 2a81df118aa94850d08a41e16aa8ca13 dd85a20ae569edf039a3feac406e863e 18f2912b44e3a2a88981e58014164e4b 557f3e48aad70708d4a3bc8934ecb798 a2d472bd7bea9da3bdcf60d8c04d1113 290df3bc9e81be1da31a0c375d4a8838 44685b559ad537f5faa4b71b746d510e d12a545b43f79840c9b87331a1304449 599741312c683a69906842308d42c3c5 7343f08374283dad7ff334d81f629e4e e25a22952cfa78a5de2990582363a2e1 1a871540374952102f2f38bf1b51b11e -----END OpenVPN Static key V1----- PK q^T[edu/PK ^T[NKp edu/417.txt34ss,)IKIKNrt9 .ILKS@Qihnlfdnfb`od`dk`k``hjF\PKTR[Tχedu/getSloWithResult.phpX]s8}gdM:eY!e mIɸVcI }%˖eGv3ƺ#~5OD~oML}V[@@jCUp /KD[iP| XcY0tN0/ F(9.ӈy Gr>\̜l\2S2v DPoβ{ѷr/&?%0 2OKotp1)A1o!C% fq(Yoa; 9E2 2 (v Tb] (,` C# 1*qid˛l0f7d<-Fm?o5qq5([t;b)#3+jQIZG2)抑7;g8Wۆ(]OBb8]֔v'&Spg, 0*h ل@>{U%\Lmu6O@3tw#tY@=^ۛrr)/SYW f"|,LQX>(hl ˵`QT¢\7YÕ&2d Ed[/; *3KyWVeV:Jf+o{׾.mVRU*&Y΄\6&DcU/.J>WV<>أ σlQ%Z 3[2N棙V ) T[Q-;CI} )C*_xDk5%:_+mH\ HgW.m?$-;!>;PK q^T[$0edu/ 6ALAHUl9PK ^T[NKp $ "edu/417.txt *AeA)APKTR[Tχ$ edu/getSloWithResult.php j?!9A6APKyPK TJ[Mark Test Attendance/PK2I[=m 'Mark Test Attendance/courseOfferGet.phpVnF}(%Eҩu2l) 4M5H.4%E!P.n 7ke,)6U&s`Gnvy1íό3~PK~I[9;"!Mark Test Attendance/getStaff.phpTmO0EHN }ħnUPbPT:1BI.QQWISJI;i{OH!FHX_HEi.3$Ъ'&76cR&6X:EPhdx"*6 OBpP#zN։ĺ8,Z'd3(GT.yn{Z,Rɻ@kCmu{ޡB~ɡZ'aJJ6KR ^h%.nX:'o{f,; u A mqZQک(*lT}fTS`|d8M. d6}M`X %0 1n*2ch< G*iZ$wHQOwF%[TmCȼ}ܚg͛ $ƁS2(v`gLD>䁄8lL_4/xz:q`4l&%Ai*!yچRa(HLr@/"qȳRԔ&G@r`ޝ?+r)e 6ˬXPxp$ 7z*Oa ~{., %1)M;?qaݱK8axb"RU5-@T6nͷqMa:;?B/0ǧ᷊4JzScq|JEy8{q6'.DG Y-ȎUƌu )oG3Y $g#;}.̡s죈a-Q: q'c췇ds-"20&Sױ8fo>[h= b$ǣ㑱ݍ^$„FYf=BmڑGVk V`480\P&k] h/17NfØĢT" 86#f%r: D+]E,*}yaBX5~3l:Kd{."MtfI-/(ۣX'8 ;U~φre?RslHvncO Qǫ`j`]Je`53š2eU sǏX ?z:7Èh+0]gif.x=C}F~Ph`iVse-mĊ eM~`ŎX)Q dl틑ۉS\88ΰ%<}ލO$9eK}0u5;J jqqFae#4=<) htȹ4&XKzx+΂3QhM7Y0? ]<%nڔ?,q~ɗ"fߌaWpEr 507s6\0I5W  brK#lF('>"v %E-v0`;չi Ml(ؓsXQԥvetLwˊJRl)!JIȽeE" EJ)#l Ӧ鐁;ǡ*MF 91\XAyw3NsC'|c14ݶGh≤GHjvqSCP)u||¸͆fJ}g~ l8v,Pg#F'QB!og o%3Bv0\a˔0iJ<%WN&֊z``s5"Yt:6@ű9d 7I>U- -t 8 !dvgz˃D̢DAfDk;U*SY\~,i[IbSOW. u^lX1L& *ʈ(ipEEėvU(mXҖ{We[Rpѣ.3ھ+89jNb_ 6jƈ4a 蘯gCf_=e'6;gLgKLR4;NGEi_܊S%.1 ۀc3>ϧ1L7KxSUL1̻A*Tά\QH$l!H@ kD7z\n: xy\7G\ZJHΎR7I ,p)+jTCw`E Mұ( P^0.f/V 9:#Yx?}K'2sRO'5ִ -P{n}G^y\\QK+ Ր"?!$2ש ?D(uy<#79xz_ Tl6Amg/c~.%qQk枣&MgګKDx3tl: m0GpUIY, .Hou41);CFl  #~TWQ|7 ADZ%|ǟWP&::{Tdw..l; w.XEH=i 2W>.> a?fŽ"qexjhOy+`zuqxY"™}0Yqz,ٙe#Ǥa71 esi%u,ǯvgF H L? Y2ؔ(>KE0G-sX󺤶}>g]_^%V[WWvfv .Gؾm@{b1$0&zB [%Q"ugXHU@t|;X\%3j+QBwGФ<kڢnnT e ]d6GA7 xܝ%.b8gy&6׿Pg&m |$AHn'/|3i.Nu8:J9_7v7=CVA5)HST|3Od{-OD7MM'nrMvf듰FO8O"~oflTZ$Dܘ-0]K0!كfP3eGL_y\bƇ)WIM˹D)mC]W:,O 5@iUD= |E jUCh|6\(b^uS4i:{4KvZ؀QVvytB<NusrQ.\m(P-= ܸdKH僋}#^D(P 3oj߶od7hSBy҅vNt>Vk7 ,vRڦEfA{6GZ4{ !2qiKfR}ޚT_2ßM׈kݺ8wC/ ղXU8U440R֯zE\x?sMDÔ0 ۞zXePalOi mIy q t Ndve"TC[$P6̨K[HYP),o$&y:x\.WUls[qyҲ{SaYGD_U+Y@2/sa Khmha/gGy3DӠhN%mTh-\q*%ZpE\))x[󾍭l}w5:B3.3Q?.:紐w$N#?ݙbnZ %$ yxҐȓn'eeg|px49\ETS\>YfDCk{rt7޸IVS^?}a^AƧ݌:S~DeKGQ++IJ;o} ^_em-3 K^z^Hdo ٬GT:өxRG%ۈcru!ɿ:CDb~\b 1{ ߹;NVނ#NSO /;\)zȎWU2uԎlFkN*Scu砛,Q (l?Bi4cS|.Ҿmdg)NGyyv{k{ HJqlF76[;J_if` s]V*Fʣ6Րu`uU1H>;H[x{\h0/(UG]U @ҿ}#7-JmT4X!5u2[WJ^ހ }&C]%"̤ʽvDd%=U2?*U`~koG(t oݕ ]͉C~v/(BG3GQB@to> >r/Ŏ k(x!&RindMKY&3gAvThVi.] _ciV`aBKh+[|l^'DezިKț{֤OGvH# 0MT⳽Y|VTo'tD7}VY]x̺dB儧#1NpiLd37Hy-nSWn/ϗrG/s\9<?%uPK2Q[?9f+Mark Test Attendance/markTestAttendance.phpYo8@VJ6mw\{{EʒJRm~$a'.N}3q8$g>Q/U1eA9oI<>??"9恟Vf&VHGxByU`H\iqeReq+]nVm1'D1Y& ɲ8YU0 9 &'$yc3BpJI.n~>9Fp(f\t6F N(=ma"ӳ0j nd,Fm`GjcIO r[\,hfl:a' ĵZy}S]>iUe|L͏WoUNؕzr5AShe.-S4Sݚ͚k\w+Fca 0Gߕ@U8spK]IypE)fU洺qKްn1` , 5d#+.{d {h y1r4$+"56FdɦTȆ@e{29y !g“"&\љz?}zg$>u=LYte2Ȥ,[{剳,s`:h-dbR,Xh9U6UN [*,(͓, h;B7Vx'B)BWKW?r$w/$gA0Vll×#)@%%u?RubUNGi$2 EOma;|Wk1R/b3+E*.-kȻApICj㝋F".1wWI|X_ a]C[dIJd†.Mvm?Qb|'^XPE^O)t̿nuɑT>KSEE,B0N`u 2gho~at#Fct*V4=s` /PYުՍh2iw_)8ЩݵEV0߆{T@M[9Z\B"/e!yLHN^C0B~}U N+1_$Knk~cAoS Zԯ*6;g ?h燭I:OhH VPkx*6ƹ1J|PK TJ[$0Mark Test Attendance/ *9fX?[oW?PK2I[=m '$ 3Mark Test Attendance/courseOfferGet.php xn9.oW?1oW?PK~I[9;"!$ dMark Test Attendance/getStaff.php 9 96oW?9oW?PKI[iEn .$ hMark Test Attendance/getStudentsForTestAtt.php 9~oW?oW?PKTJ[#- q$ q Mark Test Attendance/index.php 92oW?7oW?PK2Q[?9f+$ 8 Mark Test Attendance/markTestAttendance.php W?W?voW?PK( $value) { if($value!="." && $value!="..") { $fileToRead = "$filePath/files/campus/$campusId/slo/$classId/$courseId/".$value; $trimmed = file($fileToRead, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $length = count($trimmed); for($i=0; $i < $length;$i++) { $count++; $line = $trimmed[$i]; $arr = explode('~@~',$line); $sloId = $arr[0]; $classId = $arr[1]; $className = $arr[2]; $courseId = $arr[3]; $courseName = $arr[4]; $sloContect = $arr[5]; $videoUrl = $arr[6]; $sloImgInput = $arr[7]; $getDate = $arr[8]; $total_home_marks = 0; $obt_home_marks = 0; $total_school_marks = 0; $obt_school_marks = 0; $checkStatus = 0; $isDeleted = 0; $checkCurrent = 0; $getSloResult = "SELECT * FROM `slo_test_result` WHERE `student_person_id` = '$std_person_id' AND `slo_id` = '$sloId' AND `section_id` = '$sectionId' AND `is_deleted` = 0"; $runGetSloResult = mysqli_query($con, $getSloResult); if (mysqli_num_rows($runGetSloResult) > 0) { $row = mysqli_fetch_array($runGetSloResult); $total_home_marks = $row['total_home_marks']; $obt_home_marks = $row['obt_home_marks']; $total_school_marks = $row['total_school_marks']; $obt_school_marks = $row['obt_school_marks']; } $checkDiary = "SELECT * FROM `diary` WHERE `campus_id` = '$campusId' AND `class_id` = '$classId' AND `section_id` = '$sectionId' AND `course_id` = '$courseId' AND `slo_id` = '$sloId' ORDER BY `id` DESC LIMIT 0,1"; $runCheckDiry = mysqli_query($con, $checkDiary); if($runCheckDiry){ if(mysqli_num_rows($runCheckDiry)>0){ $row = mysqli_fetch_array($runCheckDiry); $isDeleted = $row['is_deleted']; $created_on_current = date("Y-m-d", $row['created_on']/1000); $created_on = (strtotime($created_on_current)*1000) + (86400000 - 1); $checkStatus = 1; if($currentDate <= $created_on){ $checkCurrent = 1; } } } $sloData[] = array( 'sloId' => $sloId, 'classId' => $classId, 'className' => $className, 'courseId' => $courseId, 'courseName' => $courseName, 'sloContect' => $sloContect, 'videoUrl' => $videoUrl, 'sloImgInput' => $sloImgInput, 'getDate' => $getDate, 'total_home_marks' => $total_home_marks, 'obt_home_marks' => $obt_home_marks, 'total_school_marks' => $total_school_marks, 'obt_school_marks' => $obt_school_marks, 'checkStatus' => $checkStatus, 'isDeleted' => $isDeleted, 'checkCurrent' => $checkCurrent, ); } } } if($count > 0){ $getMaxSlo = "SELECT MAX(slo_id) AS maxSloId FROM `diary` WHERE `campus_id` = '$campusId' AND `class_id` = '$classId' AND `section_id` = '$sectionId' AND `course_id` = '$courseId' AND `is_deleted` = 0"; $runGetMaxSlo = mysqli_query($con, $getMaxSlo); if($runGetMaxSlo){ if(mysqli_num_rows($runGetMaxSlo)>0){ $row = mysqli_fetch_array($runGetMaxSlo); $maxSloId = $row['maxSloId']; $maxSloArr = array( 'maxSloId' =>$maxSloId ); } } } $data = array( 'sloDataArr' => $sloData, 'maxSloArr' => $maxSloArr ); header('content-type: application/json'); echo json_encode($data); ?> [0f/hZ o|Od%ѱO4Zl#q@ ,Cy6Pf'cT}\x*n1dHF8s Nr_]uYR ɯ5kOoQk%F/gDpv$qW c!_Ii'dot: k!~2 *2]P. r^[ۥMz(􆺼>8m7GZ7Vs޶umfr*\^0??Iϙc'Fj)GsinǫjVv}k.0mys 0onw9Z"bMfE2X쩁^*+o&;jF_zΝU'͛e M)sYުaw'Ցz{k2mʔB')Z+ @{W76謲m+~Hwػu{x*!`7߇_~O}['8խ;\\B\y1=jbb\ `DGGGњ07fm>Dj(YM{MRc÷$w' >ZEUtB)t-NlI_췾ډm*3W&2:"/kMe2LC~QOcTdV XmPBfZHQ5&2_ph"$jBO w%﵄~!%-9I0uJ޲]0p  H2\~#E1.67XYnM'is[`W!I,9D5Lx88)3Nw),xYdCȐ/,]m.SwZrNuvX))3v"'Jk%N }$T4RZbWǘv2~vr|j5VbFVE<34dFm;ntK 5l ώGkh ҪOM) Æ-jC< ,!,YHt2JЌߴ @EN_:UKq[OTG8T74AF/Z)m{B"8^+yy>9 0u!`TZok9̸9$Fm^ *5IO%u ,U9(D];2JIDL%\4V1O5oa(ќR$ BwqHdV?[]T=)g읔G(䪻PkХCpz[3NsCV\gW *-& |lfy*|XU_R:bL.b$1xC]) B6XKؿ\ ,b"o/0[H _R4:g )A^;k*u~ 7Jdv^T:#Ty G,5}@EiQ~bf_"J|R'Î!lʤiBi *3F ^qF΍Gڽ;*yXywXy>&ɷ_&&@EG"^{j=$9LPKOsU[Ɖqcet/Create Exam/programGet.php_o0+;xՠdn{ к,j#MS!n70ôhk?l̿R E">%;Wy qQ&U,}BCq;MG1zHҼ~vxv4%IH-V59pN3JcI rE0)e+E#H#epr/$H[PWfi KK3{nϯ5KMvFʂ))1\:u έ>[صFwpJ'TsRaعjnA3; 4JY QRb(:Uv {j..@wiif4p?X`ktIS,[Fo9xztKsp/{K?ZQqsX9tcQrh: 9ᱡwFd63Ɂa]I%d;'|=y $] Ubt^dۺ_j)_nO~ugsDf !6[QGA)! ې|O(+kᑲ9; 3?Q[ 8:̜ڿUt|SpWNSQ „x!.^8W82`*٨^fPKsU[Sj qcet/Date Sheet/classYearGet.php]o0+?xՠdLӾR*ZEm"䂓x0mobH{}|\^g 0E؂_{IVs̍nDz%َM# ncRDXr"$3`C[L3WvUBaHJ1Ѝ[~(wƤy,D4"5HwGNs-(; ?P6/* p pqc -{pmEN|"ZL`z;r3kp7>Myxݍc)>8w?.o" ^/W9 $Ruu^ xԹJTt)٩1n@z&D*4O)ՠ&CkۄgQۀIv k'4Y5{=|0+AZSqALdIbT=5ǹKv抗ҍl'F8?Ĝ?m';dFBob ԝ[ 5zit3Vj]jhk%wRMTL=){Pw09 R{/q"̘ ݨXM9-S?G5yMU)o;`[SlKՂ`i} '߾A*_:"*CeBoUaXXћͭͽpK,pIeW[t^v<PK{Q[࿤ #qcet/Date Sheet/deleteDateSheet.phpVn6w`9v]K oqiN!dEmDn˾ŞnO2v.:!?)6_IXE*|e9L"c(\B.m#EJHR> ;$A>Zq'i>gi>"Gaߦb:9f7<\c-<)G*7iWRH*_Mu,ǩJs_uCL c-=ln~̴A-uG|+⽢A[R?7 )2J9 P>hm9{k[Ly;Pb=sս^#>%ͥoo5GӦ~K5gVb4n-'2QBVV'Tkb8kE%}BOiחD[:;~[-IH2M#"޲6 SmE͕ZbA&S"$ g4?Y?q5>p8w-BVq}~Q4շz"*b)8ɈJt< O ouH|sOЪCx1{:?{^;k{Lz>]Ō,!2Lz[gk{0Ahd%mŗigTeK,k#G9|nUmaBV9) +[r"@]12 BW^$sSSO>Ls]]]n=zy#՚n#Yޖ zo  FoM[\(UK2U\M;pہm~1( ?«_O) KtjxDr;~92}xvu%T_4sg~zm_HVnЪԽ;?PKmsU[T$G!qcet/Date Sheet/departmentGet.php]o0#?xՠdf)nhfQi`,>EgaK E"^lGg,bA\؀e+cM.{ 95zV^ZnZe.CI@4ܖx  L ҹ]e[;yNR3 d'MId$3L%-niQʁ9#Kl6U>o:, ipxdkV=\i[d$I)1һv}j7[ww-}f^Mr鮈xVrdC'ltZ\'yH*&@*&T,Z'2N,Nx;w}V!* oo?'N6G 4h-q* p⽍_PKYH[ qcet/Date Sheet/getDateSheet.phpWNF)0g}8@+4BA Ebo^]U[$]DZvB;7;3'"m-y}NӄK?:#xu[,fұC&҈|j ~H$/ْ~KbU`$X0K;iKd>4X@$Kvj Q<:(J:cY܇֫k*I(h]gvr9nz9rڹgTHv>1%?C}ӾYy8( c#^^‚ATTAnS86]O3iHr]1uO،F@Brhjjdfg!^M/ѫ:\30O8! l6*1S|{n"ɝvvj Id&lsOBi.xg1XhS8w>5s*f2^>[*R{tP(o`Qj;p:"MbAk b^%M3J Q|N9 `1`f$_! Ʃ٬t _ߍ_[}ݍ@6WÛ3DFm jD8'햵['qX1뮃Pψ$Epx4sgK'OI։'O0(s*OHg;LS:h۳:Pe[Z:UTU?Nbٖ]VMmn%u@=FSf":Z x{Xѕpukv؇s:RHv2+0Q&2T۲=R&X[@0^Phyr#XT-kk 5.oQn0*]kr *d?Ŭa}(rX|cEY] ThT9βZ^ ^m2װt}g>[^%.x>W %$s`a`׭Eڱ5:KÍOnrLqO9p[='NٺJT_?opPp矰bT4`}='Ƭm$pJxy|- g_H}sIMR~4TQNۭPKvF[9;"qcet/Date Sheet/getStaff.phpTmO0EHN }ħnUPbPT:1BI.QQWISJI;i{OH!FHX`Б\.,X9*y"Dcoj6T]X02"1[a2\1SrW k/zbWOǓ܌/ {iP k[i=ͪ@PM(.OH6'Gc8=|luN?fWboobaxĦqc*Z~.ڑ#׶ҫ]jI ]x캋Zx~P֊v?3t8gg4$."̒%ʟ'1 V6Ǻ=V% gbՙ߉vXҍYyvHq/L @1;f'x"03=lj53šv2]KO?=gA*Ŕg 3msK,yd{Ɵc)SGsE(=^^ˈ e&`?UbJt!嬷W!&6W5+eإdjM+ ,@d-5W:5_:f&=']ȕA^P}}ҽΜ8Z'Rª1L+j-Q_SF}n)GI&c ~aA&;zj G^r\ ;YU_pr͸XZV6ACz#b_b@ztv7^i#̤xXQ`TЗ:Bu(m:)M'5UEYI9y II1t +?&QsqRvzQJ;w>\NQ5(5\~o$)4URžOk ^>tz9#ВDi޺ ){:d9 O`Xza򷴅_8~'|naQ0J, C ۼ,Ԁ7ytX͂v$>BO8V4OOkCX)y<;R3/ְo>\#YbېS>$@8~ÌԈ63'3-' ͆%-e WԚIsc !K=DPHU9rOB"2PT@.%F*U͆kX.(PQ=U#7(w& &rin)m]Yp{g4 GQπo̿ E^(DeT\ %qi$B 2TQkA" A}ĕׅ, > 1Tr]np`=R<-Y˲ :hl&q%[!yy[ldA;_qoM&>۪2XU!OpǵT$}OYv*XX{by6:xDM8۱ z6RpLqhm;Z+a7%1/by(r8eI1,/R]);VO8Zmc ^X0zQ]6ۏRQrrTy?8tWmNڙlX,8g F[PB r'sIy0N`yq`h|??b4^23g\ ̎dc*K| /޼gg:4O|#d8B#䊯*-a˪1%C3^-Gq=ceBIkQd',+3\t$$4lΎ~!5`8ielbd <^SU$HΣ)KDêdH/Ad<*J{s=evIԯp_x]UJJ_2Ȅ`t\ӽq^$+azL_8*վ:)2[R+G_ x௢>R|S+kєvڤ8x J*~8BbqƬh̗bʰT3ܜuV?_F_Ůq<p,\ Ta)moYaAnD:Ǯq '4F .qbxht,g>Kt竿]@Utnt2BvԲS/a/(!AW8g5IADE鰬0]$SXN rY$=pFXeh3-@bGP6E Q7~G$W*{D.(Y %\K(a[@OҀ9^1!UA"GlӀd}:]xM;*]{f:N)ЎhS szQ$da^W(tօoC%,f`8H'|8\ΙSivC5pX ŭi* pT~ Os B!_PsukҤ.дrsSx:GQDv׳73gC\i= |]5߼|kTDIMue@ޱܰe~廉.sDh$B\JÅʢ9z1j>=@H]Iz',cv F^W4`?[Pހ4ЄN m@i;Qɛq ~RijNti*M[6kn<wQZzVeQ ~:Pk;um?V&Sb}cPL`}Yg3r0+n7Y]>+t0Ym4͓|K z5W3XYa3Q;m{C{Yk-5'3R% Lf[&KrƒvvRof-e+g)sFG^"h+:*ҭaEgGC$-u0|(YIa݃lfdۙ>dVza-oȫ;:BSB𽈳z8{hrxxXbfs 'rXN wm5Q諾-4[3rF m-OJPÅndl'3֨l{[M6 l2"UU⻨Pg7rltj]=VO++ƜiYPkyQ6`5u3/'/JդAYFYX0͚^<|,e}L\p% !==m\E(CMYgKFͲxm}Kﲇբ (E2/c&yY}Pwn gP rVWpgFzkXAnIv}ZP]]O xTj E^J>,%FX-:|' ޹BΚZ;`!)Dl 0%!2И5RF-䀍;8&5m=k, O: Y ㋘r3sHTa %B|. J;SBa%P8 P47VZmһ"(f)2y_ D5~܌ 2ޤFAI7/1&t д uHEieVD恡fC1Lk}PS(j]=d1zu%r&D-za^x#OUk"ؚ! yHm(ݥG܍"nP#UYd څ E\۷_o$: ^Xk`6羚mp͝٢{g{l;ۻlmw~q\/WrIҢZˬs #rI,X,Wgc̟\KRzL_: 0-{%h9fvg)C*e <'r:`~u'mO,_M^*k$7䥌La Q!h#)x4cXAOFp5O1ulQ-$HosXTUԕGſmPuct~z.LM K!$y~nt*1=5Mڰ~A8'5-4cs@zp F :!^ZR(r,sq$׸d}ؾV)}wL|,#;Z ZM :g/+謤z\.Aws*7.&`aSgFEOE;?ha]k?(`ubQ7XfF^W(7(JYR5 ]q`IDpv×dqWJҪE*`Y5G+dZ%;d>a VV(xX7E@>7cqQ=f~ۻ޶m ^߁3`c70m4-6u-yX-|#)Q%dܝHx$G1%?3~!DR/;mw骍#hkYZ'g#c7;qHSY+%8݄Vv9 h-+HȘTp)[M.ե={=SԆҚ$z_hOTW** P5? ,O`֫8OS0ԬWaH~lOcAZzUT^,Fq[E$UD> Ŭ}` 10cX߹3ʎ2g BHIye 'Zxgʘ!ʳֈ́(30"B7h{9:߬])>ԇfuHw Gʩzb_ _+arz,j{9nJ}e-S܆Izu Cׇ `^7]=էy V*\Cj7p{6ǡsl]e+[\A(j֫zo3>p ^Sޭbj\ _sfb嬐`Kנw/8Dx-|i#GM WRԢ`g<̎* }Ey($ ՝ٻ'8 SV1Qjzŵh4Wk`5 Ն  ,HAe<;Cs>v-A= J@Ӥ:Oa;hz]b)~0yx d1" 2{6eZN}Ȫ+`/5Rȃ4(qUПO.OgRsY%or8CCNFCJD? PLB)cQnRSbÎ2;) W<F|6yg\-Yۚp4i2;eR1Q *'nƵeh"L-ŰDm|bn 8\JTrLXꡔ@ +N 2;)CLz} 0C(?dxԄTԺhGLlm#blk >'yFIer.y9Vpx}7\uMiÿ:ÿ:KtWutW*q\MсvYab﷿Ƿ|A ^Vڰnt1m]! =yB+ssdWr fW6ixj^+.Pv^ʇhࡣB?uϥ~F:(@U)Z JVc2-( f`٣zۺ35d:;]%n'bQҮᯝpVQ(QȕBl_^NvߠԀ'S9n]WBVrqA[ȴGO pqF4H**:Yn›/O` PK6sU[Ɖqcet/Date Sheet/programGet.php_o0+;xՠdn{ к,j#MS!n70ôhk?l̿R E">%;Wy qQ&U,}BCq;MG1zHҼ~vxv4%IH-V59pN3JcI rE0)e+E#H#epr/$H[PWfi KK3{nϯ5KMvFʂ))1x`8XF%gݻPhANDdo6Q<)r<|/KI2J\$nȏ J74t_4#, BB od ve*hY ZrI8+4˛)״޽OXl*>pY<~z(Sۏ|$|bPVJ:Nc˼H mu%24>̮dLXJYJIrMDm0ԱD XEld?9SF2XQg\hf_Ii"8a $",Ͷ⚢ |O7d;6e8Ih>YYn\CNP-Ej$*cEV_ȭJF$ !l//WˏߚU%go#15e1Y:P@ODA:xJHrak谥;ɩs]*'n$ n::JBZHdSWq:L8gL Ë Jg21.VvZW|Mv.bn\h:) d炉H3 @1<F ̉C!3+uU!jz^SZÆ8ooKxF~۔V@UDlcU #SǦ޻qq^VHc@|ތi/,ɲꅍF(!K] nMf0ˊ1yV Pr JXUy(S"7):@;pC'L pfM^xMr'ǾdYɂ,HTUv+ ff@<v&1Xch+ gl>{NMCkOolPmErܹj*l >{sI$9j b8 |b=iIo֑ۢ< _8, = oY bC~ ,GH +o\+7kh& ј˰[;.ovMmdaF*ޢea6keUᩓR[5 rǻv[cUXzvlv4AB6O[niK5x'I6c3p$v%ʵ'IS HS%2J^J>(u6}A"H2CHH%)#uԉ:vb9ڃKSU׋w2 iGWƥ~gk nUY=:oCغs=0]ޭ4(p?B{ < N!haAHr# ť-$*e +=:#?$Rۂ#pdJ9 Mcl~oߟzO0"s¡fmq᜙qµA(dn޸i\Ei{si  D[O}=`xM_k ~5g7 @Nvօù&]~E~FώHTbN䌣s}' es}F o{;zŃ,hԦy,g7ٟjjus:S~gwzCV2XT톒 /s Hs L/˵br ZXS^cߜX ;B7-7 X ^PKzQ[ hHl#qcet/Date Sheet/updateDateSheet.phpY_o8J*v_:ExŵIqvo"1Ҧn[ܧOrHYIC-$?g~$g/m/KJ*rQ  G&$~[,ZU[xǺGSݚȺS]g몷s=K{A;w Խ؅k뒏 6|VՙeIDr:^ZKI:Mq?RQug9~FpY#]WDazx %XUL)`,072$*yeU.uZ@5'rVui /^ť?ڒ\v|N4B7-ͧ^ys6TKaUzYO&{iwaC5f6>ui@w+gym-z `|1,OΦ9>5@Eή}_z;P#[:gJZ˫{OY^m.VnY-HJ d tPT-F@l^ C6Q*%- ^|bSO*:r|z7q`8rnC*j]sV2,dV|5{E(Ll /|b\UA?m fFaca|vH~ _u ihPncRp~'CDo  ~[DgH9t})\?ǵ QNc7LnjݠoyZdw`|)$?m?5NRll@0>K*wmqnn{]J96sǷ:{q/PKsU[nqcet/exam_types.sqlU]S@}ϯI$@ǁaHV44 ؗe!+d|4٨w7XK½s{[-Ȗ8JaQƙ4/4jHgrV&TEnXVGk"儲6O MZ>9Y-g|kМ0AD1;gg)ZW:0ا9wu҇sYqȚ&+]r4 Ni&I> pX.խ ®"=H~{(0]gP2N*j*J_Q8Xڧ_ @eэJa#DN0h i{&5!ײta9V"(uG%?g*|adF ~j_spDٰT V" 圕94VŦĘ3ZlF~i,K(B0p\e`Y$$Sx |Ic;ݮW[ݔFo ϣ}EY&sge,t,O9E&'_4!HbfM*{ iݏ]3֔%SA>?÷+fѢf?*pHWCjysm:hh&Ij\X8^ ^vLBD;|^p$ j4wP|!a3mݻE;9WtxEخa^[+4rm~< <80ΪqthPUPK dJ[ qcet/Reports/PK FPYqcet/Reports/attendanceHistory/PKQ[S5qcet/Reports/attendanceHistory/attendance_details.php=s۶ҿ@w$h;KmI~J4I2LĘ"M̀(n+ =FDe],տ-4r{3tѥEN8"IZ&GRͧc;wrw1m;O ׮d]B,xw=wu oBr[<#Mǁ{iۤh 8g[v`yWf SυZi1ql"s};{I2fhN40 หO&ߐa&ؼڬ?۽y^8N\~ SI+;ސ?X]P0Z;#ioGZ/33CS# VMahDi Nl7&!1eлszڱ=gb8X;!U")0 f|/#gLF/s="b иT3q5vIBx3^E)ҿDkЩ̵ӷYd@'p~-R]߷߾ݗSY' oJdJl{;JMǞ8ptxmN[&dw4 Iu >:CϺ9Dׁ㙤@ׅZӅ$27DGt )p=\'KUQ%D[@U]Mꝧ/w|w^wI:0Nh[Io*pX90@{lQgrn(,6cht" h[pfmE1?C|[#b#(WRJ!8f\/N*hYobTZь!w)Dt:n z. jߩGf7  Z&o9L"xzFH? 3=Yh"*TKW/)ˆU)H(@RAT(@ZG5 l`7tgd  hJ mpM9ѻ ryxL< OXE')RjVn0S@ܖ̫~M~4}:'t h@얋F|Kn Hi%7.yD<$Iݓ(EIr&sQ!{pu XAohG(74BibX)jY<U UMCZSm,؉֢ 2w'8c{ $p3nAό@,K|@_H`yd V/cY@7(pMf2bDcmaF/]>:y7̛T@Q(49&m^ŽΦuWY;_VuXk< X Έ\m pQ` \,Q+EZ]xs&ieyˁZ v1"O?_" 3. ꅹVDe$רQ ]ݬkNZT֋-ˏ0]M9+=rNQZIңcޡ???7MCsxzrC)v#%AGJj?X{r_eo蟟OUp7uw $G>fFsR#{ ,ф%ujl|K3_ ug/ qhw :]j}eAۇlLSߡeZLa G;a<GQou_v,2ZY ;˭e~_a]+ 2ٜL; gYyiUYBExZT@?k',nԧG~#}t=.>t`~U(Z-2iElc.e,)ZHbI9G ĶuAW(&]uE q쾶vVhmuNmy.GAfrVC3}9i{?g|Ӎ9Ô>6A1hʯW=oIj>oY)*nW6B(A:Ũ\>9yV(7^ْ⼀tfRt mOQ!5p=)eB{dbȔ{4+s',"2(SԞ~:-8ǬG[7tʇUS@A$~!(p1 zgpu *IW`s:],k)%# &C HR}25|T0,UOWOBR Lǂ$5(J־ / ҹ]}$V,F *UZÙS0u}WMzQ0ۯjr\nzKs٬ R9yH㦉I`k!,l~j^"lQ|be!,8ZNGq{xmIlG]p=ʿ{.U1vJUz܃ JFhZn`oom+,3 lm/xW۬N]5DP]Ecm}ť(R:FBg`KZٞ} ]3o^DBc[ M& Rv5-2 ť4o'? LpIWiTm@exP֗Kl!T}y׆Kڜt&$+5ҵ%6> ڴZ;[2RZ$^').j;k R[-`/_[ot_asx>~T$"Ȅ_ J;Ḋ(nZ(i ȀbcX2qc',Hg^#s)=~+3CW!$1g,un͏Ц־ز-j^cf_97TmcZX8СG)_wV _tL^5S2=x,TCqp)UZ, YbC];gxݎj~T(s/>D>&2Wc> %Jkhu;B""NN }pgv霷#7F27;03`=Za?Ri&zqϕw;]cP|5tCZIP0vIO8 CÈ== ]ˁ#ˇ̳BjjX^G%PNHdױ-(~xh" $-q"NxF +zJ(#doHZIUqGcz𸉊 mchxxxdrtmNaK$ުݼ2yjb$lDכY`HGbQRo߷S~gܫ{̽]vaypFi|.H}ŏ!0׍>Lcwif 8z,?PKX?d1-5qcet/Reports/attendanceHistory/deleteAllAttendace.phpWmo6^0 Hjui[ q6E!3k(ExDҲAQ"{rS>}H QBָD$Ҝ|)(8~oS ǛVHiU {WV7Y5ͩt"߿eEUFi1Al1ŷ$'Ty}PYH 㼬ue4c-}'Zu1OZfKkQ1N懨htge9EZjƞpc-y[0'SƤ0f `|!eV,ޠ6 44&RbL~%C `}8O#].DěH眣VU!r! cG$_wasË玾OQuo}N~4a*UAgE ݻ~w1]:齪\9}k|&VuO8(P^b_RH(+nWYB!n54[o-Y6tq"rE-~%?8ԆZJڪF ̺qʕl3t?׳+///5D;ix5fY;RI ;stjBO'RPYCqOݝu?wh K3pܙ$C6' q e)-;xS DDPKQQ[f$r(qcet/Reports/attendanceHistory/index.php=ks۶+VQ/'9%Ǎs8cL')PJR~|%夙pX, 8+.u]ö:^G* ՚͖oݖ>jZW1{O ץ^uxyryyzCmRg=Շ3R'tF-^'_*jSH}Ws75,ݾmsj15̬5HmRs\[~jWyPӥ GVezs*H+'"%Uf؋SXCpP趆,bD%aUˣ? 鼹LZ7ʶ<@'_hKİ PMT*Al1Իx@Y7I%@M*?t$Csudnvph•G1<#S>˞Z HZMd6mG͞ gx&\z3,%o xB N@ڰX-9c Wt67UڎemυV5M5H>֤A$Ҧsx>@;}6|j[t cyUKCb 0AȨ)+o ϳ-2c-I_$iSz@Q+"H6 F$F8zHr Ei4 H\~JE&(#f-x}e;xJxx[VJ vfDPus'j߼k.@Om@jE@l2S)Ⱦ,а Oa](X+XR3eR,?qL4F4r @#: o}pɳL-T_ν"_N^] uHpc44jC4V6dqP|2vb zM\ ۵nk@46 d(X#gGjgD.9|%%s֐nveC6U ^zv #^ձoI1Pu~/BZ/Q\?BA<@&B>6%"I*% ,VdJP\em[I$oY# L[LPf.h~#sK A’g]0C1Rq,p T]OGHRONqfDB\<(LX B~DI`X `zG( fsܡ/|{$5Yw402t"`zk11LZm =T! %G}P?6YC9]ɱy%JYd} `rك(7kԻ^_A},7Gd{Ta6%.!*J~q{1]F eYLqQ|8__K<}+WC..jgtc3MLtҤطxV^3)X*mZ12Qig,4JqEB^`l΍@oCxu!Mmku"GN,=/?\ r#X3T2u` ;,4JbȲT&۩ў\qF]x6C`! *mWA\0P2sSGZ~E!Sh$ CP,XՉpz9od-Ag3]+p̣:r עc׍Ж$[Pۯ3p#Or]>4c2mziCp,i5ڱm(@.CdC4[x(5 ܈PWx Lyl"rwP Ɲ F]WvmݱHznQx#6ꄻn& x0F,_J2VBp:vS8UXOL6 2vm Sb~#I@A(a5Ѷ~˛nO|W/7ZQ Zn{2P:KA= 4  ( )FbF1JDV)z  /e=f) q[{ɋ;S+|{ޚ,71?-œɷϊ/S&0u JM!QѪq_^p|,kZ i#zV[ލjpmgv=%7&0~  :`3POVsXRI£by:ӟ)OxN0Ufؗ4”Ő;]=UC_ލ12PCx CCwn'ѭ*_1>a:[_2%e}vH.&#WV W]ݯSg-ÀHZNbuԶϐ~(H)VE+j"aL3퉡@SUqu Mٖ TB edY;5VZ: ӂ1[jM))W+MM+=؏ZeuKV J%hd O.uVH\,f|t+dі_%rK[$(t)ZCeprkd1V>!g,Z;N>VB-%MX9qe׫K_-I,/0w`$?9ֈP03??LjuYoߺPg7 ;U]AG0*qcbRQV5Q.d<&yDZv%!:h4E Ј /9ml9Jӓ=Jf:{{]d/w<~T,E/f7O,3_YY'g3>w23BhCpBͧ.?~*O8>y{ruroM H#~iq@Э* ST ےgtpGj2!vvAĄh#N++ʵͧ #TJdC"?~VeoMn4 Ԣw4 GuރQra$޵_zK@ꍔshVc#^MxNOdư͑ >l\PtH;!3w ϲP";Xp0nZ>1X'.3c~͏? l3;W տ!m7X%hBFWG9[t✇?dub]~IHI*ފGE'JR/M:6,ռXs~2z CwO̤>ȼ]27)^MK$y7{sw(<#x`K)8=z9o}:9k?K:ZQ,ؙeVcVŹSQiaL|5{L<ӧLB$wRaV>d}9kYurt Lm`6zdʪ,a0{3ufy]#Nmg)Oďb솅bΎJդ+Dn7f:^d(ٳ˶hv=d(~څR1;_ A OenK,8_>,A _u{HE"CDv1nm!1i/2t NY~<*nK<-/iH{ Cڶ-oK1 Zúr[;+sj:X^Ct)],F ncB).F,Гu 1;_zIZ#2slabP V{=6}o -s%dӼ*kJ^٥YJxqk5>󜰊uy& 5YQ7O&~88['i3P,h5ٶǗKO;4q? 8cM_ 'lQ±һ6g,ؗ SV's]76dD3.77 z1ߟIx\LI[mV~2zwG"ydp(g+CSųv;_|+_׽fg0$bxoI{^Ֆ?%YɶI)CRBse\'WA'UUL7 'F!>A7X܀^us~9QFUpEhwudd#Fu9E|9G2|zHs ıND %h 8VzPk4ٍFY O@\uÚ<lj5)t۽6e&0,um aI/0L:V$aXDn=Ȋ~7"3!)P$T$a(w(EL: Q]^ɯ=b:AD˺l߿QRȾ ,^[L3_ P%e[pռ':yrw`@if vrf ;~F/B-}؋ wqSKJOr[kЇNXXPBtwD++I{, ˩p pK'XD tK ![0wwNUJ(ḲUfܩGYj=Y[GvtqNF_JB5x+|=qHl1>?_]"eg()/2OF=v nKBknO8DžTT >le\6% jh䲕{F4ޤɦ:Ҹe[P0|'#uĹl"O,MA)F".`|N_?W1õ&WyWZD{ۻוWh3uYyLr]"1Ѻgz1|l-bs?vo1G(z <\$Js0")M}sFFCIL5z_%ZmѸ}i /L{7OL/՟\HWQb[PҬ<+QyםIN}S S'ٛgpwUnl,p8bZDN=xHy!VVcp<(cpH$2V6*C lNVlYVIR'2/u| ճn>[ԍwkM8XRD7'scx>'p0%)N]m {_ツZy?'^FuZC kⓨ#& wKwsl3=39ً͆&DYU;AJF5lrv_k>2M}' t!)CK󤘧.d$zFaҨ"/BEPL!7 !?ӿHp%ţD!RdrOh)4/{g5e6|8"#Þ'8ɯdpN.0ߝU$UHo5@ )0ª5@ORKY"Amڠx ӟV]3r3zn5 L ,Vx҄h-.EŁFf0 %tR7OՀ#qa޸g*헔,nA1yL&>P?`*a1dEBwGU-xP1SROp͜[sdEV)oj+޴Y iO%0h rwk4hzWߢ<:s"(QP ~<ݹy:23x2Y-e"hAY5'<5>Nkivudv2''#fPK ~pW/qcet/Reports/Deleted Courses Percentage Report/PKQ[dz|8qcet/Reports/Deleted Courses Percentage Report/index.php=kw6+&v(+992EBkTIʏOH{F$ Ѥ-︊VPM՘j"ՆW4A"%}Xy;q+~}2Lc?VL册ߪUx*M,ڎjsu_&dWPcCw1W[/=xʬUqB"- tGN@P+@sc[I_XsS*hvSjy# 0(ZW܉Dw2]NP,m }PGMgIC(&SYIJ#Y#wJ$R]]1$GU "j098<3|Pweպ#v"dbil tsO͐Te h;ubk+cLU%tGt$2,;]%\2Lׁq 9P#}鲋 XNY'nekN/:++A V7oj0i%u|d(YwJ &#$7&2n--0dAWȲyL11od( CAA4Mc!:qGvwvwĺTIok>S/;ְpluL(w:e ,!n*"Ui0:}rcsNnk ]tON=`YXPpA[`G ;owh=G7hI4tMxG+DAAInM$CсdJ%~Lmﻷ;o?~7bI 2 1PtZ%՜ST%A'Z&X)ٱVX&IO@R滳iQ.(ԯD%8#0 rW( b6Uu ·pD%|T ;ߦjf8g&rp+3=1(**(p.t/^瓏7!FEsq޻Z0Mbf E+dJTLbk3[R}> |FDEu+Ch[ -uN11MwP jo` H,lLeKPjRZ jB5FߴZ5n9YoF6^ÿ^v7*оTL Y<=<9c9>ϼ֝9ڥM8<^BrA؏̞}޻xq*eۺBUG}ŶJZ},РI+~ P$sPȄȤs閖]@qyQeFt65b^>C9.:Cٓg] mei{I$96u?S/k3Webk U+Ih'nXh9yR:fwIuA؋Z~ wv.Бp/w~OdܣYDv^J W*&0KӼ.0]˰D&u{bOƳͼ (@68y/Q+nŰW@kʼn,+5PvȨ*oX҄Z֯b6oV٬KVEݒk^S>ӐP):PAno8DۗKve@ZSOGCϔj՘FXPBTy(U~L"q0WI 7K+:0pWqv J+ejr=J1b*Ž%PY r,-N䘡g~Ygu+^TsE/""҈X-j 3C"^؁=36D1&Č oy oYU/`;WkaIQBqF@m7F?-Ύ#2ܬin$LMY]ïUv9;6ޱB{9 2zʾc`lp/6R)ө]i'%F0p vW W&OH8nGL_l%vXnِmc辽 U%8p~1."fj;?ԓ Dj܃2J"Ljq=72n0c<5WB8t2{yTrBd:?vϮ~:kwKˁ{qxyDDa=>-=sv?hӁe.]m\+ h \U_e.f:SU%{w/&Dz_xSVbvB\V`\̷p>.kz()Ծ4Z?"F嫢ĖT_4?(NlP@=9cIW6LE?֮dGb嚞sy# wߩ)F,TՓ]]5:,y-c.bfǔEQ3ƏOod(% f4Ry1caCH(%ީmU;j&\OjǣPv#P|J1g*Bţr!%șD0ː;Q q/3 Eg,Q>rVf0|rC/Ol*BLě mujt`3Fw |6ZVFQ>fNM&qCSHش+ .9)Qbj.߲x[c6.XV-oP93Mܩms d6OˮO0#YMENSJ_6Ά^jDCq䔵ɚ!_S$)w3o"|R+fQd\YMEf }^n)hϻ]v?xSW}Vv` @بqPaCAЪ)F>7|OS) gRpSnrxnh0o!~+LpcrRd@XAg%X/m.,peToP4mArqxچ j[;})wD\1] \va.T㭧׋[fP\zZ&(r%%B'kuqPߣq<l6MżUm8o8ܱ!>P S_ ,Ai:ҋޣ>>z#7 VV°ԿY6z͐E0L[] 7AdV {aK@T-Zf?^B$=w{nN$DP ޮ 75IRţ9H|) #HK_ϼK9>XrD_T{uΦ-S_x X32Hɱ?l z+9\3 <"55NgԳ׵(_.x݁{V-c:68Leh;Ř܇/^!|ՔGױe#|@UYe9uÚ ~[u| 瓓XF P| &ycwYf@W!+1*aq~{1VD@mZon 2 î4=KxD y:jAgM`[Augٟ<՚kqI$i.zqe'Qݖ/%O`iθ 7q*>Άv tݚ;==>oEr8H]<+Rȼ?a .C,m> v  e{|:jx; DL<̛@%'|C4EQ9}| *e7ˬNK"I؅ZtaE+T콈`}x RPeA+A f*OzOm.6/0+: n)40hO͛ZМ@l%,]5ѬPFfX 4O/bd(-v[ ڎhheY8DZjͼϙʱ7_IxoH6 :!0Ød?_m㟯V0"G)T!A_KW}lSV%@(sK7})"Vb[ 3h{JD6Ա>4%͒Ml,%}}K#bئs[{ZNW kDon.Oطo$cVZLNËz5 +pUةZe?x|: hסĶ |]qe;~=*}yrAqLwM^}̪c撼vz ,qD;;h N@](UFQ0K!~ytS/PZN5C0eC-am-S,0A7PF94E&ёov1~Ulݺ:4U8R5MW޺ܹ0Fai*80=9PK~pW'fdj<qcet/Reports/Deleted Courses Percentage Report/index_bkp.php={8Sht wq%6w ݻ}ୱY[4仿Ll.zZbKh$f${f: 6m4nlXhr3@׆Uخ \9@(7[˜Mo44A.:^nIL`\U\ ^jz. IeM;Hp<0u jLOVTڨ# ST![KXr#+i4ۆhtC,OeT?W* '(6$&d#hMQ1vr`l5Kd:!B>}r\:XОj<t9isB)9_t?/NހK0 IݹI6kmY+]*WoFu*18:ݏtJU]/R :! >l^>7}+`M1&M)Ulx<|sRInZz#*j@AY*,{{|r>]꭫j4QTϰդ"=ZYs^Xbg:#=@h}KB<ie֖:/ 1_UAKc;o>QNBjB$d% YQ+ l 55 ]Gs5wʒLuN Sa$2`4!{&,DYYʕAj'.6 @[s ̒"O)ïn:'_jsy2"o- 6!/)e9wtN*_c.xLϞ-}BӀeHD rߠ@9/$)6",xf = y1 g[G,{˃tQ>Y +lxHGL0II7,tA #m+ RZOUE6b 5jrMHX1v}X9c^ TY؉g]2q̺QĖ ]',ІwosPtow/iQTf Vwsӫn]ӻu'ljo}~l䭐O3kEχ.eyǵ 7i+5{Yd\[B[Q9o-9=?_?\zޞ жEF7)d/GPBUB^T oWӵG120O|7%IJwO;$f~2 pFwo7 0_,}/dU Yl07U2Hw?q5mXq4kla_M { #w{ւ# тA?B4jqY: 7x{2O++9J >P{q:PQ(6+/TigGԝxBU4.c)!L~E !h[,- Ʋs'1j>QM4T2\PrBSRCxMM_g_sa$/zz>>{Sz$WB h(?/]/^"~Gs~hW=q9vmd!  F Sj˜^^-t_P3rd'SY/YܦeV3tY 07zgSN1V64Pj9߄=CLח'Ƒoˤ.'2T!IM}{6 q%v&>E^fX_oj]+Ɛz( gAKXkUqFA#`C i,Z =Yݤb~ZmLf(ј( 7]0h`8;'OAy۽pM'|5nֺn bQK=cEk^"}9i=6㾺<+r ;/8>uuL82r x&Sn}*3NSD$:W8Q]wM eRw(R">Ȥ|ШGbSvNHZ9X 9 r]Oq$<0zK$u/}43n!TTB%`iܓV#"[QlPJoࡧ@[2fc}gPūɏE`A4 ʛBt Qm7=yOB'/2.*ME 7%|իLkLpJR˕q¾c^/[! aM<( ESМi^8_Jsґ2)ey UڞcKU#=/v἖,_{3~drY M%iM xä8]*/D? 79c0 +\ɓ9W,ȝ[~ZgϚ4gu|=rB tp@BF4/м}>史 T]lE*ܑ>R;֧eMr9ox֩ l;ĶxlIdHjlArE,'0)';aiXSU#"7~yh3 aQ,$ksN%titzW)i/DװIdt50ue xs2׆_!B@beM_m؃hϋ[pmCw 9Jb7yԱoSDMw6]؄1_ElMoUTVNG*Û/i)#ͫ,541@%7GI[ d"-nNcTM.GH: = p^-"cR8w =Ω"f5< 7@IYN2V:~2?!2Mt)}+.Ϣ<9K()tUIUH mͻPdih8TI Eri{%%ֆ[!NJiaTkL=M]SOlc˹+'pA˝6~A[:(Hx&kX%{ZLe;-T=tQ̘©u ,"G7hEu~bf}& l'BbgMsu7xn(c^oQGC'2rU8Vmxy>/ [u.lTƾ{mk%}-'.lb|}|'No8̕+Xi_2@z5eF>1-;ۥ[@-K?Q/q?;;OlR!Du\ַGZ\)h3Bɺ{g!N@+-$\$\$>EZ.Aw||$ԙ2mft,o:l)z~w 0T;n;%+{ӕзl^ "6;ga4P9dЃwOsF656tO鎬Kw)y71z!UpJFM,♺K㿾bgb䖒 &! P1cIo/N_)s///IoۻnKUs;pح ` ׏Pk*'끶϶YM**}uRQ;~*?8PK`{H[N5bl%qcet/Reports/index.phpZms6_0RderL.I\>t:\H@!@ٺ iQ%۽3DcD`_}Eg=Ҁ!mbYUs . ۃQ$HD:?ӓO؅|$+i8OhJ@_GA,5A259gi(]AU!xd^cz=bL>2n:Kv`- QC#x48}rf6y#;}b`&RskJeQ=m2#%yeD@b!U? e)IiC²QL?{jڞy7aP> K"pPti_OO)WoJK0!s 1콘BRM <_t[Z '8EЁ[kЂEȷ\(O[ 9/T<״saC*CXsHb;2!Ip$)-;S~ Vw@ïsX884 Lj U!z΂rJ^8dD$)W&?CR#gcٱBv `)N~|K~4$ :bsJbfِSA ɂXP(*CCC"V.eCR2J p t;ܽ,]Z$!򭎎MuߑK^DWZ5 o=}r,E;ZJ CD! sy>q\\GiMz};h< 􌼋0Wx!ue`!q }223u)iPX gSU]ԀXi)T^ym#4m_j:nej5X:YD7/e*gm-j-TYc9z]jFVӉrKs brzl{U(RѲ^"-RN2V9-tBàiRM6G7vV.)$g5"kQ!ﰕw@iK7.oMsN`P&.- iuGA\aR3-6,8T55j(7Yl|0Mm桙ݚ"H]kXK },bکs=L2tMyk-;|.HZS||_^'\w|&iV( #wQ!}5ʃ1O"B}.p7xlG^dP}]VTd|&W,b!m oȓΰ=hbJu2Ef*}8;}Xֿ:h]ʷ 6w9ټDOiH|R)u ; `tȢ~pKZe77Zk\gvnt۽M]duL n"(́~T"'I b)HHZp4T(Пr3ҿ:Xp4w=,M!7ONl<]61F>v++1Ӌ&w=;l-W>XE&PKV)/S >qcet/Reports/index2.html[Qs6~LB*"ܴ$NR$m{t: Ip@@ٺk-RDj;T#HbbX,G12#hvWg1&I=xYBbל.&K**x(wO[hSͱDMr5PL%7pCc5dA#⛛)U3_F%$ɓ|DTM" -2F~nH?YU%{KU. \n G}%p*Y#$!~փUs= {",1<)-zg@H1KdyE,*q$h f qR y" <@ٜd- "3J 3~6h. Kg 2xafyh` (̂)^haDNثwcWz1SD ,4xв: Ѿ\␻)Ù pOD:0rFiDžV \)dZFbFs( h*ɶ;pI:hK &rjϟ"<τt0NO G#c/ܺy$"CkX,72 feP|zNC `6 5o[0F3I 8ʲx[Ͳk?!i6|0KcT$;m2Ey :z5| Ѻ 9t-6T(Nт F0?L |W >B`Cڷ|~Umu=;BvD89#8 Y4V7/0$tQiXVd9tBeAqRy X#wm72VFMoPiBk6f1&|c`l$Gb \3N)XvG%ȑiy1X~ASr(O*Ih3_y[nbDD,S sw9ԫL"D]:T&tՉwqI#5Qu>(蔋X>t2pxfs zz^R鲴I=(YhNcU ֽ,+$2~b&xU0A*aܳN\հltRjQ 10BZ57˚'3!a%H`'2\͹@/y tN#5ؐ.~ f3"s MJtCSŐqأ1ׁˏX[ MsAzb<Y=(LPl:q{EބL5B'e^`1)lԳ4eYyPU+U}2d /Hν!,kJާ\јX܉d8%z'M*b-_D(G.]2Z]٥ `xͣ1BC-ugJL..5C./pLsyrZ?]'6e4/V{ 4)ؤVdiV猢yӳ6EzYC&50j`ڱ֢kKIGm "14eW(J6A!KV`;9 ]UFEo+.mE=ǭGR~⩼9}ͶѼh*ޱV^~f8͛J2)). DHxyK-7**nHqC+}9^;M9 j:kú^f% 8CUL V=YVQDiu⎮,4gl%wv[]cCϙ JI=c3yQ}rҞ0U0OcFػBC`(-l܍|FSȌ]u7l%9Hu o{ ͎w8i'fMԼCMǽi k 6}W +L"]>f9z3 qK.(fEcH -4>۾![pkjn bUƚU̯U ephq~lSh7=(#*{ጨKA{5 i`uaeO`Ͳeγ;r x?<;ȓ~>FpO_p )իo!o$idK3uhW$5;e ̝/iMOmo\#Z1˸_4M0''[]*f9ـѝ:a<%)^PB&WZ9kn=OR 8FF G~K.r+V<& OS%zü8~Yoko yЌӉCGqQKO\jh'9Ǿ}Cid| 6^/5l4ڶo Q5贙hndttMU^T`ŸF<,+:!Rtg \'OvP<{z3df+4Δ8?Sy=zzgWO*)fQV(Tm<)I :֜wo8ad{aa;K.qw>d룰ks8>g\y GIUϤϥ3볣Ϥ*Jb7ni-\y9wX^J &ѳ@*X PK :nWqcet/Reports/percentageReport/PKWQ[fm !'qcet/Reports/percentageReport/index.php=kw۶+{)5d9)_vƎv( Il(R%)?6}g)AJvs^"`0?Mj s{Aha 55jNLmevж-$6vk,o.//O>}R{1L76\c ύ|^3G({ۓ{cw& #m±6AVvk5 b[nR%yrz$ b2CߛNzUƳfkZm35 wk{u %02,4.h쯩}+"9 (`'] m&B` [I4%3]m#b׶4۵Cp4w0ƔtJ0n em`]3c2q66ܰ iL VGG7|;U } I,pͤ)ve= xo^[$P_v)olwWWx!+`+|+H2i8,lBp @( 7۷k !! &&,xn`_D~ GWl@*cT*0@WA"ha{`\ e<ݹ}$6H#r\&!;^,J4 ȟ)ﴧV3PQʳu.1Ĥm;2퍤:qCۍY ԧtwEwA+VgRxpqSR&f;o^[^߳dY?h8a14MY5ؖtAZAIHoi~NA0A{gYpKNs$ eY"sCmc -?G;O_y?c҆J6H( elV^ٞܦѐƃ SCZkϨܠ>DƂʼ{lgJ \@]DuԼiŨF`] 2iVFB3O]aVt{ΙOAW 5J}BI͕"#8}pE*ݹtmVQ1I0M171&y.>_|Rߝ7gj?#ɜDM1[f; I)V#:H1+V%S@sr:q ׆3EB"afed( k H&e˙ gj́4\abaml' a{c¬iW D= & 􃮞?Q3)o;Ӄ3z +mpqt|H؅Ce7[3Dw_ޢnj77# [wL,4G=zBA_^i!RcBFv H($YLAFVY$ܢtC]Uu ~OnyaN 3:&`gZ#0" TQ.}̯9k F0צD+4q&٠OjRjTj)! 21VZdJtEM'4ja~h$K zJ{D6#ġ }cWI5Ƭod3r _R&JcC"f3le~W)2t<9; ^ppyupqBž,9ptF:nr|Ik[ @EQlE-(ҙ2BnR q.?(܊5kW5rr+o0r,li`/>88=ks Y.0uY ^>lQg/,"ϺELqĮ;^"SL \Fc o` X [2@]CkIMn@-K k;WtT?u)aJf:є)ra" V.?kq+$2)B%LrU8~Lg, F0BDÜ(jZ5hԼ`+V^MȌXtL% 5PZ9rP[-S0qf*=]qĶj2ߥe[rVJj6a-{7ZMX%ރ-A#fMgMMB(Z˯hSmOY)^_V y\۹F k/$ |Bv'phjXEc֮~AAʙFk;Jh+֝ꋆ2R2x@!DdZԻ NB/H(T^x(bX&לVZ)YIhp_ϺG*""cz a1ڸk4.I:&@Q03?nۑ'qDNXUpX8 >{F2Dn`Vcd|"^$x́򸧶U~;X'oNϮ=tceGW$>|<в'gX4LJJ>9xrjk {0I\8E*1h&\t쌙+ٮ?ɂIFE,ǢE+ 0 q&`?o 7ȱ`B?} :ۉ2f<OM!~nq&Ԝ z֧Nn[%yȧyȀEpf"pdp/2pM,Tܚ6Z_<_>%ư]kgjSeSv/Pׁ6(W5Zvj-(OІ?ʏ݂CWC14ѳiڃ;͔E}MHrE$Y;$:aS`c:UWxtd_Nm(]ˈ`kkjVWTMțeC/:dǷ&s*ǷҭCpž T/L[J;V2tgVץ0"HÑwa|I/:Kېx d$B++:R77`7FnD鍓A*Xm]LdJYiDDE}*v |ԫOJ/- Zʠ~dz/ҫ^RwƷ0{h4Ư\eJ9^Fd9IuE2$[ 4ZJȱE⒡(J%@ 6{mwd4x<#O 3O^-('yT/ߺGqm*3C, :FoDA`gN1e{em46vy0=hE6ugGwX !#$.E]emڣ,lA$Ѯ#H2vt#$;JZ#tٵu7Xt 6etڃ$ QYvocw F4JS. M'f%AK ćTh/Oл 9MnV/5U\Q:*48X8a+Fc-mW V"؅F҈i9|T(N)OnK 9dq[Oz$<c0Gifn}. Ilt&wЀ 4©+ OGoz?q4J66)><@iJgTŞ_9Nw7)=iv3ۥIeCE8 c}V^E̞BN덖.猑$;J@=0J"uץXnyِʟaF} 6d( =NcY.6X@u%:aLı-&U΋" vMA!d[UX"ʖ-r=j1?Ch2F_,x[7V,uoc=6[]<`8뚎ε5[$׆ΐb顎geR]APɒ eCyZ$#˱̣zƿ:E?ZJ2[u3hїz@"^ 0J_b5TB)]£kaknՕ-ٵһsmB;v8KN:?lJ|WѲ]QPU"v]Fm(@ߋ#1\vцx/1^̭_/ڇWW)h#Dܻycz'*"!DmpKxTR9Љ؜gA{4dP7!#Υr z=:َUȍ Gmd~ ɯrGQyQbC~(λqQpx S3QRFvmN#5iDb1ױ,>{l-A} ]f{0u}tk+꼛%kꂻB|00Eqs7>a$xpQPlgb'P>!pQ9#&Њr/eilNzT W#S-+tcFMx# o792k0s{KՊ|~3.Sݹ o/2J25bRpva1(+!Eks4h92ckϷɶ]eTFq P?'{2L.@2L-7~rZ5dhC(hgaIs#nOⰬOG ѻ?PK nW'fdj+qcet/Reports/percentageReport/index_bkp.php={8Sht wq%6w ݻ}ୱY[4仿Ll.zZbKh$f${f: 6m4nlXhr3@׆Uخ \9@(7[˜Mo44A.:^nIL`\U\ ^jz. IeM;Hp<0u jLOVTڨ# ST![KXr#+i4ۆhtC,OeT?W* '(6$&d#hMQ1vr`l5Kd:!B>}r\:XОj<t9isB)9_t?/NހK0 IݹI6kmY+]*WoFu*18:ݏtJU]/R :! >l^>7}+`M1&M)Ulx<|sRInZz#*j@AY*,{{|r>]꭫j4QTϰդ"=ZYs^Xbg:#=@h}KB<ie֖:/ 1_UAKc;o>QNBjB$d% YQ+ l 55 ]Gs5wʒLuN Sa$2`4!{&,DYYʕAj'.6 @[s ̒"O)ïn:'_jsy2"o- 6!/)e9wtN*_c.xLϞ-}BӀeHD rߠ@9/$)6",xf = y1 g[G,{˃tQ>Y +lxHGL0II7,tA #m+ RZOUE6b 5jrMHX1v}X9c^ TY؉g]2q̺QĖ ]',ІwosPtow/iQTf Vwsӫn]ӻu'ljo}~l䭐O3kEχ.eyǵ 7i+5{Yd\[B[Q9o-9=?_?\zޞ жEF7)d/GPBUB^T oWӵG120O|7%IJwO;$f~2 pFwo7 0_,}/dU Yl07U2Hw?q5mXq4kla_M { #w{ւ# тA?B4jqY: 7x{2O++9J >P{q:PQ(6+/TigGԝxBU4.c)!L~E !h[,- Ʋs'1j>QM4T2\PrBSRCxMM_g_sa$/zz>>{Sz$WB h(?/]/^"~Gs~hW=q9vmd!  F Sj˜^^-t_P3rd'SY/YܦeV3tY 07zgSN1V64Pj9߄=CLח'Ƒoˤ.'2T!IM}{6 q%v&>E^fX_oj]+Ɛz( gAKXkUqFA#`C i,Z =Yݤb~ZmLf(ј( 7]0h`8;'OAy۽pM'|5nֺn bQK=cEk^"}9i=6㾺<+r ;/8>uuL82r x&Sn}*3NSD$:W8Q]wM eRw(R">Ȥ|ШGbSvNHZ9X 9 r]Oq$<0zK$u/}43n!TTB%`iܓV#"[QlPJoࡧ@[2fc}gPūɏE`A4 ʛBt Qm7=yOB'/2.*ME 7%|իLkLpJR˕q¾c^/[! aM<( ESМi^8_Jsґ2)ey UڞcKU#=/v἖,_{3~drY M%iM xä8]*/D? 79c0 +\ɓ9W,ȝ[~ZgϚ4gu|=rB tp@BF4/м}>史 T]lE*ܑ>R;֧eMr9ox֩ l;ĶxlIdHjlArE,'0)';aiXSU#"7~yh3 aQ,$ksN%titzW)i/DװIdt50ue xs2׆_!B@beM_m؃hϋ[pmCw 9Jb7yԱoSDMw6]؄1_ElMoUTVNG*Û/i)#ͫ,541@%7GI[ d"-nNcTM.GH: = p^-"cR8w =Ω"f5< 7@IYN2V:~2?!2Mt)}+.Ϣ<9K()tUIUH mͻPdih8TI Eri{%%ֆ[!NJiaTkL=M]SOlc˹+'pA˝6~A[:(Hx&kX%{ZLe;-T=tQ̘©u ,"G7hEu~bf}& l'BbgMsu7xn(c^oQGC'2rU8Vmxy>/ [u.lTƾ{mk%}-'.lb|}|'No8̕+Xi_2@z5eF>1-;ۥ[@-K?Q/q?;;OlR!Du\ַGZ\)h3Bɺ{g!N@+-$\$\$>EZ.Aw||$ԙ2mft,o:l)z~w 0T;n;%+{ӕзl^ "6;ga4P9dЃwOsF656tO鎬Kw)y71z!UpJFM,♺K㿾bgb䖒 &! P1cIo/N_)s///IoۻnKUs;pح ` ׏Pk*'끶϶YM**}uRQ;~*?8PK O|W*qcet/Reports/percentageReportWholeSession/PKQ[93qcet/Reports/percentageReportWholeSession/index.php=isƒ+ƈ@cԓ%֮%k%٬E  X?Wc%03̞m4 Dzl9-ZSV|:fKT-kjkO0Qm{x68;;x|C Mc:pjxƄNu}CM'J/4gzM;jÐck huEݐ6k5TD'yrn P1IgC*@cU X[75oq o+SVћhѿΥ^s JD6%}W i)yƔʥCf~+u^:&M89R S(Χ:[ )kc'M K?riPNpstPhj##˛ kߴ(0НP,Ҍl&]?Haf? 9KgXF/\ hQ`v)o%Ϗ>#rN3׈hS͕Xa/ЕY\K7Ǜ4 &\2$X 39L`4^\D} WW* SP̛(XW"l9Ikl\"& <۹~,46禭!N yվ7n[vְh s _shϚ;NT5TSʳt.)6b Ci•RZD #b-lmWx6cz:Ś'~g|4xң.57Et7M#oX4 &,8r@IP\k~n$t,nA)~Is, `,v4ffpC0h3AL1a/kj7G,c`芙݊q=(\65alU2a |7=Xris !]?Ma#GQAdJ_\!v2/ ; &Yta6ᄌJPk>dBx?8/2'ɤY!=գjh~q¡}~$M> Nɛ?vپ,{C޻M Ym,ƕ Bm;PI$ژF=4%Dݕs4_U?7)cUP-*NdA}jй+T])"DX^i~e3#ނkୁֈ;YхdR "qؕ 58tky''}bgPcRo+%DN&# ](Tit67b$~qu<։^0 gD0uI`L=ܳ¤ ב@Q9D]Y U%h o>5 ӟPghRwFNde yIl*rrȁ(hIJJ'DASVT.pDf&"qC)Yf4D"]1Fĸ9 z} 2,񌅐5`Qc@MSj0z&CzwQ(Ɣ2$7/\C"Da @Nv++||T+dOC6s(,*(Tb‘ 1Y⚦h" YL:X"ӆ%2_XZꮶ 0ā8)Ck]!Tm˱V^+@n\jS}bhjKF1 Z%S~qW5%e\"Q"!]#{,&.wd3C$.ɏ267Y>iP^@( >K{-:͂^S؈).<+.=_6T^~*$qzX42ELK 9?m=nj9~k'#W}þcQJ,%#*[L#mܓ+ W~XYxAI:i\h',n/Ѻ{ܵ1XAb1.H-B|kӘ2!N9VEc흝;>}WizVdPħO{FZswoc_cO?6CS_i=pIe#QAbnR|ȭ/]JB#ve;*4i~RA*y|m  zgLr/L91Wz=s}\ SFv3~At<5(Ӵ.:;<{&ygyȐEp"pp/3pw{5ֿuw{ϐDiyA1؝;TuŔ]s>p*~QÕpU⊝h;dIG:O1 5n<&֊5gOGhI04,usܯ%Nt󛮰J+}ū4Ȧukmһ5)#Qkބdk%GtpmR2\ӌ_s0Uk2R6 vr^O+MQ; 1 i0o B(m?g;K^wퟻJm6i^!MSZ"f5.v<}n 4/6:20]yY:1ɯ8"[9+>DF)M]]$1xFFOrYyjS)qP?:c}4I-z껮ɱ߼8Jz{"Cj9yϔ4[ʯ%ۓT`*Oٶ"+7F]2VjiYIvB謉/Bkʼ$4],'N&K`y\?JS/MÚp+_:vSNCp_5@esz 1;}dWx6#͗Ak m ({;3AD#!_Owi/qKvGӆmᦱxj (I2 R|yEAٕ?EuF@Fti*FlϜ`Y+]mFt&u,*aw###9ɝE|B(e[MϑYy2ʶ-yԶ0?9C2ozͲ,1a-6WH4]]5h "Cd;d=7 ,hNhtA. rz$EDYFs_9Ib96eTǴ6Q+_SAffMBMM?߄)N J1d ׿H1KTJ))=&3$kۮ)?%՛´;G4PpЪY8Mh DS6xCޣWdODjYo;o̥99骦JcSVbŒGTC $ +Wm=SB&3;)|g%N"@PIohp0[*~n3}wEȟ!9ήHNx8gێk8r=[PY!?n׹ٞl쮅XF#"uW=jrR "Ϲ30 Iya׌Fx!ss B$XNK0 }J/LQ?j{OK]~5dpyFؕ0KML#۸.v2d"0Mo|*VG|kkrejM}jOպT%SD hԴy([X@U,]EGW}P%OwG|OpTJZ#ɏivR`L'"f<ǏӅ.-G8}⢎5 2WQ]6\%hїVKtg/ 'ZF#81 dB]AdS,L4j`KL=n:_pl" KY#Vs㕢-qc+)zTɐKDvZ6&uϲM>%Z¿OT4gʽgYrΒ71j+[@:t5B8 .|Jx%n&?Z5h !-R iƽK//h&M"SyPKO|W'fdj7qcet/Reports/percentageReportWholeSession/index_bkp.php={8Sht wq%6w ݻ}ୱY[4仿Ll.zZbKh$f${f: 6m4nlXhr3@׆Uخ \9@(7[˜Mo44A.:^nIL`\U\ ^jz. IeM;Hp<0u jLOVTڨ# ST![KXr#+i4ۆhtC,OeT?W* '(6$&d#hMQ1vr`l5Kd:!B>}r\:XОj<t9isB)9_t?/NހK0 IݹI6kmY+]*WoFu*18:ݏtJU]/R :! >l^>7}+`M1&M)Ulx<|sRInZz#*j@AY*,{{|r>]꭫j4QTϰդ"=ZYs^Xbg:#=@h}KB<ie֖:/ 1_UAKc;o>QNBjB$d% YQ+ l 55 ]Gs5wʒLuN Sa$2`4!{&,DYYʕAj'.6 @[s ̒"O)ïn:'_jsy2"o- 6!/)e9wtN*_c.xLϞ-}BӀeHD rߠ@9/$)6",xf = y1 g[G,{˃tQ>Y +lxHGL0II7,tA #m+ RZOUE6b 5jrMHX1v}X9c^ TY؉g]2q̺QĖ ]',ІwosPtow/iQTf Vwsӫn]ӻu'ljo}~l䭐O3kEχ.eyǵ 7i+5{Yd\[B[Q9o-9=?_?\zޞ жEF7)d/GPBUB^T oWӵG120O|7%IJwO;$f~2 pFwo7 0_,}/dU Yl07U2Hw?q5mXq4kla_M { #w{ւ# тA?B4jqY: 7x{2O++9J >P{q:PQ(6+/TigGԝxBU4.c)!L~E !h[,- Ʋs'1j>QM4T2\PrBSRCxMM_g_sa$/zz>>{Sz$WB h(?/]/^"~Gs~hW=q9vmd!  F Sj˜^^-t_P3rd'SY/YܦeV3tY 07zgSN1V64Pj9߄=CLח'Ƒoˤ.'2T!IM}{6 q%v&>E^fX_oj]+Ɛz( gAKXkUqFA#`C i,Z =Yݤb~ZmLf(ј( 7]0h`8;'OAy۽pM'|5nֺn bQK=cEk^"}9i=6㾺<+r ;/8>uuL82r x&Sn}*3NSD$:W8Q]wM eRw(R">Ȥ|ШGbSvNHZ9X 9 r]Oq$<0zK$u/}43n!TTB%`iܓV#"[QlPJoࡧ@[2fc}gPūɏE`A4 ʛBt Qm7=yOB'/2.*ME 7%|իLkLpJR˕q¾c^/[! aM<( ESМi^8_Jsґ2)ey UڞcKU#=/v἖,_{3~drY M%iM xä8]*/D? 79c0 +\ɓ9W,ȝ[~ZgϚ4gu|=rB tp@BF4/м}>史 T]lE*ܑ>R;֧eMr9ox֩ l;ĶxlIdHjlArE,'0)';aiXSU#"7~yh3 aQ,$ksN%titzW)i/DװIdt50ue xs2׆_!B@beM_m؃hϋ[pmCw 9Jb7yԱoSDMw6]؄1_ElMoUTVNG*Û/i)#ͫ,541@%7GI[ d"-nNcTM.GH: = p^-"cR8w =Ω"f5< 7@IYN2V:~2?!2Mt)}+.Ϣ<9K()tUIUH mͻPdih8TI Eri{%%ֆ[!NJiaTkL=M]SOlc˹+'pA˝6~A[:(Hx&kX%{ZLe;-T=tQ̘©u ,"G7hEu~bf}& l'BbgMsu7xn(c^oQGC'2rU8Vmxy>/ [u.lTƾ{mk%}-'.lb|}|'No8̕+Xi_2@z5eF>1-;ۥ[@-K?Q/q?;;OlR!Du\ַGZ\)h3Bɺ{g!N@+-$\$\$>EZ.Aw||$ԙ2mft,o:l)z~w 0T;n;%+{ӕзl^ "6;ga4P9dЃwOsF656tO鎬Kw)y71z!UpJFM,♺K㿾bgb䖒 &! P1cIo/N_)s///IoۻnKUs;pح ` ׏Pk*'끶϶YM**}uRQ;~*?8PK 0Z%qcet/Reports/Section Wise Attendance/PKkkR[NWe.qcet/Reports/Section Wise Attendance/index.php=kw6+ֻjQnIܓ׵|owOLĘ"Ycw/IɵvDZI`f03 Nj4pfNY>iAz#+:K:4|zGI_^zw:w;u;d %R+pn=]Ѥ'j/ԆubgBt{t0lS'iทv8a\(2if $ۍ(09`,1u3p%9I,xar# K?ɫo[&98p2Z%/e,vf2uK?w wAH&w;+CE9"sIhGa_\^BE04|e@Å%u/Y$t64"yo\!.Ith|wtݑ,Z q7o6w c x4q7?hrk=vRcBSuf{l+&41.w#w"#ȶ}MMW9m6nح}=<>fr{1Rs%rg,ZFtWZdtw! ɿ=>Ȼ\Ax4 <॒#p-<;摝'dr!$ šA9L>Lˌ ]n:`rKp15B1{|IK03f:˱m,{BÃF#ev<'h9K' ˮ #*`(Gπ]vB2]ЫP*;Ze`5$ 9mM3-sl~r3 "?U4p) Lqc;  46L>=i*Hn'NY,ܿyi~Dxȇ3^di,o$z *!4aKy3 ^(D:*1'&rAO+8B/)</89W%..ϯ^ <ɆL~GM{Nt{@LE*Igվ<}Vp r ]'YΣ9Μd%M,t>g`Mޟ>qqgP܁S}:>1E&pM N=WxPk/'PI$ڌfb$skDb+ WN$Z87s̏]o=R+ETW4ɦ[>x䨒uMY,+&6, 2@lwu:c(ݚD*vФTOQab|xSt5]ܓ1.8Ad,$Ox? "sA7 ѡ4u?g\|n1V5g=jɐЛ8,ѐgKY,` ѽ`+!ע%fVdp1EB,NJ5hih^TW`@/`5#VZYdl)N%f V+,-VA YG8ͨ4@ ^U(VJ֡ 2RT+`sWyQ\yPJx8*ѨCH$[@g! t20+4!ESBz@;az$e⣲P1Z.Q,gigzC8Ɖ+U[[bʤZN#a{qba9F9JWKTPyNe(t߽ys>`6FFe\d۫o]BF&@9M <ōKdދ\y8BE[rcho%JQcrqf)|PۇG"ӇBCb"P tfSO<-k_>FՓÃ?Zk/a4-2LWhlٳ2 ظM2Up9fztkUCZ1EO=XhԴxZ4GFW1#㸮&7K5IMW-^˛ ૽ ⫽a9.ws;05nl-FMGv2MD?hyNfsOe6Z<fw[gڜI UQZ+y3Xlt7Wc#{1~u M +twqq?PpvIy|#MG yFN}\&U5_NMX] 4-2N`܍pkӣpbH A ˾}Ӣ`4ĤE_7iyK`±sh;MogUwJ{)Wq"YFZ RbͮAvgc/+ RcUB,9TU<2<0- WЊc+8BWEtOWɽ:^x2pOZؙWxDc}a+U0Q `4㘺w%(y|FD&u}"c']uR- *,@{h'fK~fhz}p0 py{u"{oCkq'fb=F  ۛM I^UTp˕)3>uq%Н5`p?8g{q꨾[-4ٞ"vy̞EnMZUTK3bUxH s׿H5HFg5G*Ώʪf ўe| 4^H^g=}η]? iŽVx'hkn\}(@THS$=? r?W-0- Ox8g\uC%<&Hm5@ }πu26K}Y6 UKdaY%Zzz/  !P!V: z^ Z\GWsK=t:rӢ93ɢ #e)%:e䃚@~ڝܹKfeQK#[؃>Cg~vٽ Cu*e%96dY gF KWz5"? G,q4bQ{A>zUv_x@G0( :0g D`]Tb5 3kZ澻7I}D Ѩ s'j@1Qv:{}*9H*qPR~WXmVyZr@ Ȣ^d,m^RૉOdW70/ (Qiʧ0o2z?K \8$c9\Μi#8p:[8P>Cz1fy|`df2^,,K7f7XxH|@iNvҶ}Ͳ>;M\+gS{y+hj%C)|s|/9S=4 PKz1X 9F8qcet/Reports/Section Wise Attendance/printAttendance.php\{s6_aJjErz$Σ"t2"! 1I0hYM/ ERRӹ8aw.Ep8%ԉi= ~V?Q2SդͺA=hy"td2yջfB`7{]b` W(# Xv4МϛaOA}gDH* FKX4Ehf.eS\6{]S8q1n4PùҁP&؇5@iFiQSRh(`1GbTw&f$ʦƀ3H:C+0;6NDORR'ɓO.Mp~p*K8!"vB)3H$z²Ba,&qN,EZ٢RZ℥vRt] =DKN3%-,%"-M u1i ʂY H#x١S}GOL=2}Pj<}%Ѷvd0jf9uXt$l5䣩X['!:9Chg *!uS'uKo ' (Q tj`4#r Dk2dmj XVQ66btU]jJ>% 3n14h&p j lJp9&1æMt0xM1BZ81΅"\R7"ȰYTd@UadYsص .o17|i^zØ7@B|2B23s*DG)Q+d"^l>˲S|f2%JYIӌ=^BO.K7Y=ctb׽ /?bYmmEaؓ`'Ugjlf>﩮UgD[ ^5:t@9J:Ta@&8?lBLqt.ckc|c rgC2|F`%Y{MAT-Ml-E <E1B?3sː#RoV[Ǐf9g{]AO-NOOXel9ܱ6NYeg#'+|frlUqY/P$}.#}SZ-C-x>s'%>)٪$6}7o G^}md f率wY.ծ[|*aW̵5ݮ E-dwhSB&V-Gሶ<`{fXYw_z\=\eV/F`tT; \.}'Itp =x}edSmJT1:u^I {!I2~mp`)-DQ6Z_=X?`zg Lߊh1Bj&Hcp~\k|TjKٶA-ϵBiCܻf:%`lXV{+V0EV?6~wwucwWk5+ Ŗg/eJy ~}' 5 |B˶_'NLu>Sz|,g_OF*ܣ˹vn^;|H/m sCTL&u d7Yt`yfwf֙{N.j͙<3Hm&jܴ]O3Lֻ 駚#@˙cֿ/CWr& 'sHޑؕz[^1nw v `?e=j5m oW~qz-؄2=V<6nJ-)>S+$Cş~Ni vQC|*[VڔpZ.Bbū6i%E9\Ū*^0םzjL}!yʻ6j. I!;jtr;V[Bψ?שWj!>[sCN$ˌWy[ƁT݌,y)s1ކ&ʴ^k٩]WBOolVh4U {͏*uZr+@Uɔ+^$@h*i΢H~G7y@͜Ly%h˻$~)5W*ͤIpu0^!~-nr*ՠ5]odݟ,S}:lS-έFf{P͏m'Gޤ祺ܿ;˴E=Tq}3Q⫸_Sa7v7n͓Px-3Gs*`^,[rH>i(( S&F5~>n1.K,rN}~$Y> O|ѷGnEacG&%E+@_^(sȻtzwi a_)(? 1 ܘuȌwؓ{ơ#!PK sX-qcet/Reports/Section Wise Attendance History/PK,nR[E:aY6qcet/Reports/Section Wise Attendance History/index.php?ԟ'0? |tArMRs^u";3MmgГVuӢ ù)58!U? kH@i2,Y0AU+X7Q5x$>FPQkHųEc `Asԥ/Ëu9sO"xZ9{HOA }dވ*(ނ^Iaχ} 0e~,d\U@Qva> iDE2 %P^M"SkʶGΗ̝x<^L"?w̋YZϡ\?a|S?D~ !s$q=QB8‰ "Ahk+BN"wN/,`NI3P)K/h!/>YLCDXp :$'1!pO쐌4YxA Ga| }ֽ4YdЪ" Ի@]R6~9cJ4 a'%ͮ.t'fth})ͷgQݍr Ejz7)?VW6?CwwtTjc-Y,'z_ 9r =1$^Q4 J"[LQ2K"xQ !Qβ< ;ٔH #3 *IBufkï949 \y S&i TgabcW <<<~xyN}:(cc]AAG4seP6K6BsȟӋ P+7Y5$yimC- |~|9s *?ʐ!.W Z&o zfs{ :E3ZRe:)4{0Mx2>pj_?a0'@^i,7n|rEKZ.é](`ZYݢp^YNMk}oZW%$.Y+b^ $dXgnwԬ9,tT"sC׮Ey>&SD r CkFsCpTr(<&Hy%9f"/烞S6~y B*ni[]`> 2؎0ӧWiQ4`A Ԗ"T**~!gyɓ\P =RzULTso4V=XnoZ?YfLI,_t]F0ϱkH=$R/ 4ȗJW8N4:Om0#bmB6(̖ipf z"oRE.\@ Fŝ'`:b8< 𫁽N\+ "2p KaK7(+ `jPD u kAJe'YE8ltU Oj*BVwN KVJ2RwF[tv Y؛V8uA18 ) S<.Uy QKgD  g=zo;DDVZB-\QSpWΗptU922FxQ8pNUfOKkW.reZL`' ra5/V5bKߧɄȰ,~0!8^ŃXf;ֈ?l+[Uoa kFu@OGWp$!Mb|NTKv·?(U=\s*c%ZC5gaJ6;Fi}=;S_hev$~;b%LFqUIglﰎ*W8ICedBwq1+L%dDA_,y]z$;z0֣F5eTZ6xVGVh5#밉:7k jo$S] Dỿw3\x sW\hü|w_HZ.wvoed:{NzyyX7IԬK>S|~2>2[/u)]X·aV ik)i=&h۵H6`!c=ti[Q]c+w[Ν5Mzgߡk=Mִ4plcd( D)[Ӑk!aWT9QEaM\#du"[k@m-',%됽q9+xfSl$ē1F s441chwıMHy15 ^l T:$NF2kꉗNE搼MU]G-a;+>2o(;~ q OY)56" Z(3'1L׎ڦ)mm#撬]Hs!Mۯ ŏڴ|ᗌҸOG5"h iv Wn@{a>*$bѺL^va+H$Zr#ܜU6}an`s4 tJ׸0h[24;tԪ.u)%c4/Ef!i6O. +a⦜M#Px*_Uk[S?6_}~5AY I<LtГ/j( (Ϯ0tSWsb$\qP'Vth9 cciT V'#rT.~c:d^HYXޛQrR?>eq nuӺ͟Sn|30U߀'0|`7t1ec ?{w0  ~M=_?} F.x[X~.QQF;2j$4 HqDEy@h }h+ornIQhۓT)NbB) &jWh*촃_[݌zu{yvC8%: !:|. pͥ]Z 9K[PڏB[3CqazDm<"=~t8,ϰUIf >KDm`7a=fTf"WD.~v!aSY<%Yi_{ǕgbL7B4*B̩`V G r"\P/0ksT5h1$XVn. 7Gwuy{>aŞNe =B,[_!O?Iݞ>a$Ooz JPM?-#.8`TiwשYד |w.nom`$igh%>7^gmhJvVz͑ Z1ms${^5oTD1B`iB2#t\ ´J/cVZ4]ro'cN VT$):WAt27oJaػSc]3i}j;slr(&PDݦͭa7yD-*Ed'297^$|J3' t'LL `Te곢 I\3U@GL]3) *Em_&Y.Yy~I4C(ϸHYAqҶ~ų>ԛe>ug/"y(>xd+ nt3AOl) wGPKz1X 9F@qcet/Reports/Section Wise Attendance History/printAttendance.php\{s6_aJjErz$Σ"t2"! 1I0hYM/ ERRӹ8aw.Ep8%ԉi= ~V?Q2SդͺA=hy"td2yջfB`7{]b` W(# Xv4МϛaOA}gDH* FKX4Ehf.eS\6{]S8q1n4PùҁP&؇5@iFiQSRh(`1GbTw&f$ʦƀ3H:C+0;6NDORR'ɓO.Mp~p*K8!"vB)3H$z²Ba,&qN,EZ٢RZ℥vRt] =DKN3%-,%"-M u1i ʂY H#x١S}GOL=2}Pj<}%Ѷvd0jf9uXt$l5䣩X['!:9Chg *!uS'uKo ' (Q tj`4#r Dk2dmj XVQ66btU]jJ>% 3n14h&p j lJp9&1æMt0xM1BZ81΅"\R7"ȰYTd@UadYsص .o17|i^zØ7@B|2B23s*DG)Q+d"^l>˲S|f2%JYIӌ=^BO.K7Y=ctb׽ /?bYmmEaؓ`'Ugjlf>﩮UgD[ ^5:t@9J:Ta@&8?lBLqt.ckc|c rgC2|F`%Y{MAT-Ml-E <E1B?3sː#RoV[Ǐf9g{]AO-NOOXel9ܱ6NYeg#'+|frlUqY/P$}.#}SZ-C-x>s'%>)٪$6}7o G^}md f率wY.ծ[|*aW̵5ݮ E-dwhSB&V-Gሶ<`{fXYw_z\=\eV/F`tT; \.}'Itp =x}edSmJT1:u^I {!I2~mp`)-DQ6Z_=X?`zg Lߊh1Bj&Hcp~\k|TjKٶA-ϵBiCܻf:%`lXV{+V0EV?6~wwucwWk5+ Ŗg/eJy ~}' 5 |B˶_'NLu>Sz|,g_OF*ܣ˹vn^;|H/m sCTL&u d7Yt`yfwf֙{N.j͙<3Hm&jܴ]O3Lֻ 駚#@˙cֿ/CWr& 'sHޑؕz[^1nw v `?e=j5m oW~qz-؄2=V<6nJ-)>S+$Cş~Ni vQC|*[VڔpZ.Bbū6i%E9\Ū*^0םzjL}!yʻ6j. I!;jtr;V[Bψ?שWj!>[sCN$ˌWy[ƁT݌,y)s1ކ&ʴ^k٩]WBOolVh4U {͏*uZr+@Uɔ+^$@h*i΢H~G7y@͜Ly%h˻$~)5W*ͤIpu0^!~-nr*ՠ5]odݟ,S}:lS-έFf{P͏m'Gޤ祺ܿ;˴E=Tq}3Q⫸_Sa7v7n͓Px-3Gs*`^,[rH>i(( S&F5~>n1.K,rN}~$Y> O|ѷGnEacG&%E+@_^(sȻtzwi a_)(? 1 ܘuȌwؓ{ơ#!PK ){Y%qcet/Reports/Subject Wise Attendance/PKiyYb jF8qcet/Reports/Subject Wise Attendance/attendance copy.php\qo۶@Mղta/IvX׾$P,іYT%ʎߖ$SZLkQ;)r'g< L怡 #OO=\D#\q?ۤ-oTG#{:D>t$[ǀ䧫ۏݴI4qIWsA*J٘rHc5*eۈ>" aDȏIkyҪ!N|! 1( KƢ4߁:)4. $2#m1 $9Bb k64Bxդ N?;Ʀ[x<ӟS.މCL߸&' Ll|ݥ]Pa-r {6̎rLT1?j0ʱhhK2ʵcdZD?.sMO,#x ,Y  .IX.tT2sjIT>b&#}j1zu#/H+aDݢ oē0y<,1 ݀۫룰/N(dx&#eBݑv*C)P`+\>,dK8:@P9l38ڀ$J{5ׂ//9\'$kFh]G3s MD塶$ǖrtN<ǿ;r߇W oc ;BN\( !qv'[uJx:xԴ1z lKpmC< (vPˣsozX::$w4y)OپITs$%'qx\Bp <;wX X$,W'ͤ?KSq#P^Ō,0Ѓ5ohIf "YꋮHCGҕ>݉(%.J>2swrDU,M/&WH& ]4>4F0ƮL #&3OB+1d 'vhI!Lڜ`FÅ>i!ɩhQs~(uWJH6O#$jR, x+3rΦ2zԺosۆ K{KD'#ENY0Sxjt;v`cńյCskU)JU~x QlY$TݥE>9C@fxWfDDÈhr>ˡpCt@&y*G hH1JZA/uءh- rx!\$'%9a_8* gAk5&b4k h6A~# $3#x’ j1]C07-ϝ|I\@U^ЏL@ׇS8ß3F +JX72qRm pˉZFW=mXv|!<'{ulv.MٜHƧH&`M7WW-EjWt+~~LחWjESNh)H(Ӄ^Q:_'^tmIAcgS6^/%c#=kq4>88מҧ%\+~FG6`jib3M4ui{ִKq+;ߐq"Uނ Na7iU4'O T6LV?J!wږ2YU<6 +_*V@>O>#/(UeA?O66ʾsAtehjo ebayB"e$EtA8 J|ʾ&QZm|ME޳Zm"<V-̫܂Q@~hA?RA~J$l@p`h_;؟"gqѧCqzOOKddsRlcrkHB6MkũHglA^&&Ґ[)_"l(7\Y:-䁐g9}ѐ!ٞo(oBuJAl*'WWQ5GW<`*|-ZDS uһ9ea}]3'`>sy2P3vJ=>a IR9xGG]xUW{y{̍hz)n_No.%hof;n%>xq܄T < 2@>6a[ Yls<_VMaN_' x /Y҈[6dA^a,a )G0myosg|za˼lJzG(侰tCj{"99;:W$H,hÜ9Uu廞V3;nH-Lw:E<g`3AK(Z3y5ZMd {Hy|0@B:b۫`;= B.Y$gwjX )|pftd4rA&xۆgsNצ>r^^ha|=mH$/pA3{p<\s/H eC ϝ)zG|K}~e&ƓwvCwfh7ڤn"$4~(6"":=Z?%b_LŽÝbb؂ߪm4Y!Ȼ;1ǍC~R?d" \z_"ފ;-&b\ӧpIa=^ܳ"Őt~"#v0CQ\C~=rWХ?%m{~E&7J:h9aWᯯo7OB~9WaoݺaϟHpt~5^ʫ_ҝ8"+\7!;ΡmiSo9YM*Lcp0u]bkGL :4S+o$oU4rY+iDG 0am[g"u /׳{OJKj%=]YyQ2NeQX^VHlQ!s̛Fp<&Db`Kj朳 %8(0O3G;+D\.7kPjgΊیqYf!YрahJ%ű+dI2r,9,M]py\u랈G e.9p{_8q%ǩPA&tR@Rӷe>L}35$4SZHS0r7Y;.IX6n-㡨:ØK6F89Noh B&4HZ1HeKR N1X*TB(̡B%/'xI,]:(dUw<>Me3dV<\%T LoJ؟M]:ODDkԷn,wZ+E1!;-th8s G`$xí-&e1;A lPӊmYW!UIZ 0=<_\H7H b1YhmЯ r|Ri-r)-d`;HGEzb8no*0eEQ:8g/2R .jRT+0+6V-`*'ٝF;u>>Ǚcb(ez[Ӓ<6];2NZs`1z[ πy3/t{ KGEj =Dcl"Ljt٥i`On}VkIUFw:曯.l e%8F8FSh\RS,S_#:z|uo(8/S4s2CĀ!m{۟\QN!0puz$}*`>զFi՚Vwoc n N-?lͨlVI)Y^}6ZjԐ; |(tBsy itTO%'7V&Dkz r0ڒ ݤ]3lh0us0d]U7Fl~=FXvs1rxNvkzhHg-S~2տr;?PKC{Yv:*-r?qcet/Reports/Subject Wise Attendance/attendanceHistory copy.php^_7Nr"9wDbWl۶z)ȖqŃ[}^,7G=ö.afaҞDOus7žֶYeLt\$5~Җv- 0^?"Wsq|-5ppԧ(VBV?Vwᓣ |- r Hdž$n_mv8F[ h r(4ƇM1pY\/G!;s{-PnOitOӰ|׍@ {>1_ܱhhP0XQL0-2o=!!.\L~a"KX>iwGo)K|7өP!K(YZ{odϜitKrn^FPsNl(gdԞ <>z&;j `5"@-( g]1pC0z$Q%z#ys-y&t0닼|wQ:Q1r3HYL;0h BINxt5ʟQTJfW( ˟"]L/Y$t=wi_{3 t9N/Mpp8V0h5]؈/῭D^{a i2@ ׊&awwAG_Rk6\l+i(]xFJƒd~Ovʻ&?qz[{RcF;0Qemy#r̶I6VncBk$@qPT Gvnw2LF#X6G??I$2̂7WNv ˢ<v 0.<0`|^gMN7Dm,{IA|?Tpb =wh9FE!充W !vbVFe[=sFX[<咼p.)b ^Ncn;5*eGQ$H$Npו)%Ŭg>o'3e8\-tܑT"{IA 0D!Q/]ъ7ƈ]l8.Ks>В[fUYtO ȫ[3139!APȅ( Vggy}; rO'9:JY{UnciWaU]4XEL_񈐹2A D/L;'L0mXx499\{@:" [lB{ WK m*+NLTsb+<\o9?TACQR0=AҼaE!?ܔp͂ɂ )TnUUj XSb=7Z #Vy4/0u&Qj1P8.rlH7uY:uF4?tlX.NcSou*-(ɺ&q `%4C^ZoYsr]\̦b`C=CXlۥ)/}_J<*U ).Zu.~`W D JiIZZnq,wc>6M=9r+,y|c1!6cbdKU/~{냘G@gQE_){"(hOăȓ ӡӣ6>ӾdPy~3EJ y?ua{L HfeDsI}">P9&h폾0]~c 2\Pﰄ4$QR,|c<ݞ"Nv&`ej #G69 [ssWtWw!01)%n8Pqv%G*>SF Q:"befĺm\ՅkP,604EAᴱ"1QO$ְɚCF!rIQdi67C&5琤~w"3nK}-grh N߁׀ygVJn4pړ܆VNr3GJ=d+jL *`ظ%,nO6 <\G+/8_6?6ftz>گ *]( a -Ѿ n .k7ۉVQ"FKʀOn $@ j'QO&Zpz Ϡؤ[m2,-.dM[mH57f~kr#We5ZE)Y9cC'DUTy"]0V]&#~'&LGGJ,-7ئuVV3XjXO ‚R\J= j)'aYU6G3~͹z6߬PbAq&?u\lfT!1&lB*}‚FdgNEgtXHO̓T_:m Z*)\i!Qo Vhf ?95P}\XALȫafׂ 8K%Jh护,S.FP2YztIPѱyB,ԟWdz2p EIDzI"A4׵D0DZSOщzzZ p!/0!I K_QFA(nN%ep*8?_GÚC_E gߕ+-iqxAF F?(BI.qJ<2b%NX弦O)T sdcrت.0 -@.-t@!6 RЍn؀ؼWղH5ў40/lWW_QSZ;_ N3 ّIqR6A^&V{W=\qf^oV|*#tRO& hK9Y!Y0>xvD"$ߣzf;qSsV~IwP\RE5RWn݄gqb]`޿/r X@wNV0lGRCTVlO1XKp7&s+- btupM׮!"d]GAܖړ8n*tpjy"'ڎm@u_:AC=f:AL"G ɎO_Rfl6xwŭɌD%efB )fpiMx@ 瘽7փCP]{H}OEx#v [$Խ@2޷ɑ}nb¹cCۮSz7c<ˋe(1D.Gg6: )N3띝< 1X&2~4%Mv!qg\4| jZ־B b4!O?ow}+P 5;h4? i )-b+&QӢ0Q&Rt) SW9 *^W׈-T8mTZu;~ƹڢfqZf aSv#,c ˞?M]F~x`o_qu@Y4^]/e]h(&g, +6u!{7&љA<&J,p±"zCO 0(><90*7O[=Eeϔfz(p]%7GSyh˗CwCɰ&IH  ߉c':(:!B+Hh+ZukwV6/ 6bc]r0+ZC2ܲOw+O9` N ^#8`u4f?Yc66 Hِ0^&3YYzN,隆!<}BSw$u?fzѦ4lzAPb%YJEsҗD'ۧOhRscqBgL\ZFjiI:7?ṭln_v}o:y$wA(KR*;uЏΚ6bfqW41+`) NVu XL3auL^ T;9(>ui: &0oouI*sDY|OG)] i@\75@Go}>Y4Rj\(<(e5P_ Q4(-U r"eW:Pq 1¬cE_6 k`0}d> &%O/c6b l^8deoN9/HzOIHXuTxLJ``逜$B'6vH_:+2*.eCH4nŗUayUbH8e  ًGʲ$T"8k[R&m?rSⴔ1 y :D m[#-uâG}Eq}׶Q#0~@//p 0i_WWQ{=Q6{z a`yER3z,mkcw:yX^Kޝ8ӗdz>_~# y"Jx0">9GaG@!E?$o#$[[]` rAO7>h {4 W9<,\) FF^ݾawY}^~Xcw^XppZy  s[0wm`EIQS]Uo$z~gBiǮדONyC(؀$pآ[ 0_;F!,y̾|b̈+3_YȄΚ[n(aj[ߥ6%~3 u:>5ܙ 9e{ᳱҤ:й 6i,K}5fABU"VtMm7 DCe?,)8d)/MRgw~<\u+rC7Q:Q q.@0KNx.L;rWDh0I ؉:].Ytt8 SJ @k0|G5l q*qCqppn@tl==Z(Œ,ܕ = "6?|TGk_Ma>ڻNLsJWsӴQzd})Iq-P1 OǼ\ %TѾk 0 .$L{TyxGD$;fx&=$CE,*?,$GN|Î"QB,AʽyzI{@Կmug|> g5w G%,+!{]64ON&_Dw׳ EUo3TQ5'Z'n:>^Th`MfFK(KvDkv#!]V9jW4F:T:a%=H<'DCP]'yx#y8`p 8BZӠJM9%o=Ѽm;_].̾aY{7&n\[M.yB|u>PM)Iҟ)Zy+@Us V7þ>u~בɅ{^dTA&|ʯEwGYs4g^!KO5k䥛: )]DY|Gcr %SX5V5ÈH@<)ڟb,p# bQ CZͰ_#2'k0CB<S&1`XGQ =? iH=]¶vNS=B?'xj2ƶ$)$B_:ޗzDaOvK":dB#’PCҐ7K!ZBF/iV[JQsaЙQ1ʢr8b]Xմ1ەxmAS4r8@j|ǥ||tA&ЪPeM3ZUH7Ri0)epEk+jwk8*7CM H\ ]\.y!n5IPf;#v mb;=ٽX+w N`@(['ik箭iScb~viu, qx[RGX&!V~1:Y&(_p{=1n+TB(\V{N3ץizo99 aku+Jo3?؄aqGc! %$@5ۘ:%ɶҺF6$-w tH M09^ԕWꐱP9 :LU:̢Og (^r,enQ>7g-뼧)?jU%U=037GR#:6И /U֨\ !'MZ7N4zCzѾ4b]IFtF^|6#KK!;)>VQ:O?`ݍR9XiU.)gq;%Ψ1z_=K({sgMeS9^`h"~#$1ElRLκ~R/ o 2 },%b<o4`9 N!㉮9zTQZeYɧ4S_ 0 .YbJb*'mvkff12Fi}@JO>\чi0:)sUY]~SRqAW ?^^i MuOND$*SF;8"TVvrEq8mH\uHtݽQT8Kf$!aB)D{%Hbb' ͛ĶSH%IRG%E9>TсJ WFt9+G*n]:0 L'j;0mܒ`BcDAT"`t3i ,hZ2[(I ae=Bga`yp܉1/7x0M:ğt'zI35٠|@{ޯ{sx $v֠8~0_ڽ6@;bQxn{c%$> Wp2? %lC)bWI;7|Z?znr&|ݜ#KzzQ>d2v!fP3/lf@o.Y.|8h41 ~@,LarBaEKz;Ylz){x<hXA"׍ X[|:S.۔0@-Q%V0 ebhbraJAYyF6@ Ľc+ٚU+hqbJMCX V b_A x]3 RVg%3՟QYdC?&G!~ryd˄ DU!kit c4 [E_C(8`TA=^68Z(R/y=C~ttq8 =W4},%љM!Dx1vUú@W\UĪiIÞ/0do$nhf{)Sf}FA,'!,dYOa@1`paa=,lիڳRZ0l_&,d~WaY'7jxIswj8/&#lZٝrDTƮG^ȒF9Eȑ")pɛJ :l]$jb=Qw9!%>n(W=ΏJva\־0K£z{LUfe>JEf$xя* 8ٚIDexm*uDH&vTlx=zy!O`U̔ qvFa 9[iMӥ5&*KUv!CGC{C-6F"& !|>C2y-{H26.B.ƪ`.|Ȑ?VhNpȸ!?̐4&nZ[wSArXo.Sg:7X߫+g032Mx`hhIW,#b]V2Y+fm?e k kMnn T0K.eo}N*\}/1!*LsG Օ2^{ ^ŗ߿"uЗb| OI^K\>P۷*x4εk^w]WW˿j>Þ_ l.?ޟ_o |CL+RnOrޢK&l|jzpUV9$JuLKl[7P^k84uveTgW%0޾yuT9fhl9`τ&lx&DH{\RI)Ve]KIF[减hrq d7^5߾geM1{Y媟gBK{ juqjMc=ljN5dAs+SC"[ݻowgꂛ'X(dC5(jN)Fe\!1r1[tX!hגzLs;#D6͍gm)pD]OPO\.伟 珼S9_3x J,Z%snjoK# Z,?h ~nh8襳P'{r3:,5S#?tcC€=MVje%G\,X yd' RwscvqVDDQ0qYˤn>\'{]}0m 1rP^F9/r;eU ;ƛ('#m=#q;Mp|2a!ᅩu92m+VtA Əٷ=ug%@N8E=[ AfASqk;7|Q> GIW0b4fO|^gTH,Bٷ{:%y2p2 P|Xj>XfZe\-a"P`t&8Li#7F^" 9Lr)=FhV*&~8Uyl7b#MX~QPK,{YYVI %Eqcet/Reports/Subject Wise Attendance/attendance_percentage_report.phpZmo8@va{cqv۹6Iݶ8,$bCZr;ߐdŎ~4F$3pCwzF食XFhxMs`Q4食h<$^77F*D =c}@lN^f9DDK@~"/}.hS/iR)KFF= cmіVoUh7yx_N DÙ8!ͺ wS.Laczck*E 4AM32`t+I8yrr+*&D4Yl(fUmuMNbITDZ#DYгᆰ8>v]4],F#o`'6e]KU2Iĩ1]} F>_ ߔIK6`ZQ-!}J1 ќ1Ku{X,4 *vOƿj.fZd8I/#!TV`ڰ"9S <1+Z/t# f9~>Egs*'g&l@"$9(S'50pvEWj/os)1!(;st{G (1Y[/*gq4)µnx͐PϨ6RR mO6Y7Ʈg̙Ƥo~!g5%uٱGͼ,y:AGYYRݩT'&57(g}lfAipvp" 3N~ޠxT_mzSFmrTgNGS>MK;m.L9EWWI>?a{`"c'ZӠޮU_u̓$) ȔjtZƕ{}38ff0zV ~ގeH&Cer\g=&̯}BHvBw5T9DvZQ77<"(·j%y+Aza`?%vET"e4$şދǂ4Ij4"lV8C1N:!>.ng&! cv %W^K@T;IzRAoSv#]$۟w~;M6c0SOКlCyMId*uP^NvHOEyAPZSp #AU_2MK6W1(7pV"_rWЮ:{i7WBJmlhqA`Ą_9[`;Vl4X.'oB=l]pݶp_p_=<=6<;O3#q*-ŔD ÿBk fuߚ,u 3ܴjіQԈR՗O3°5WMIh]t6 M kT2UUzReMߔ)23"y!&Z k\ }ࢠn@+udvE7C! ЖlA9*^G+ZNE.u Rryt ZȥP)Z 4lAӮjJ3,u]N*/s0~zR 껉Բ8V?NV,=钻^F7ZGzCؽI)BqbYۈV~BJsPKpR[!ۄa=qcet/Reports/Subject Wise Attendance/caluculateAttendance.phpXmo6 fر<4 6a(@-&vkI^fm(H0#=ɻGRG~,7GUX2׫E7?X{4lh;wFd<00b$:Ѧ)NpArN5CdWN%QsF7ܝ敄/gp 6."g 't8k0He-)N%wp{kv7[0A>?_'@^n)%<9+.8<:7H9%ȳyC';'Pf(L70Eq*"A95WKtI\=1H}' X0߉ol5.ᖺ]=dtHx J^(ި*r(aӧZ8TLu8(/9S蝺P3S Pe|0K!Y>!icq|Є }Q3w#!AV}J#Z~JYNBV1SL {yRű9)Z2"& fZACeٛC3Df0PKpR[v19Dqcet/Reports/Subject Wise Attendance/caluculateAttendanceHistory.phpYmo6^t/Q{šmm^`(Ð%Dw西fH^dq‘ Ç3$~ݮG0Ev@6:Nw$0lwUDȘ|"g@./h$ETАYzi(2`@"iTHFD~Oq8  Ilol> ^nv.S /7Ñ!lEokKk7r:G4+'=>,7F/-%k8cγ]uThHd?&cr5?6^Q"~wm!*]aK_D+`Tɖ(MOTtbsr5saCQ;Ej,(?:}oӋ`]S1N<՞bS juİXAҁAϾ2sc +,cxV&fyPt 1&%>M7Ӊ3tu3 Wwn~/ #턦O b(;e?Ucwx<;&gȎON&$Nݥх/kr$ud_ dd!Ûl*1i&@XX4u/.2hc^o&QkFZj ytI^JL^ NP^Q^IIIH3rx\͒]^;)/ Rf}ifWwNʵHgveCvn9bޮrZДf& *$|?fOws+h}qrjgOy )XtC FsP= L)_K[,(hM#QY̻W>i^JW. epg<@ѾP>T8'+ )ߡ~D 9^*e"L'Hh7A22ؠ77Caz=#:~bI];p(uzD&`ϳ/EGvχ2/RlM?R}X^))Po>Z]8rβo6;nǹ qYR%as|b &EɎEaO`![}cx aJwRlX'5xIurE-XtDkhǕxpQWu(P[õ@*`-lSJL>$ԶFUb-ʲb QBJ>ٝL$,cAo־YSZAJsI x&!JqFYA9=)r+oC~6VjJ*yRlPKDqR[s$[`]Gqcet/Reports/Subject Wise Attendance/caluculateAttendancePercentage.phpYyo6?@Ûa@V&r1l\H[zI A0Sk%xIQn.!ewbqV'x迫"Kテ]$T'BmM! WS!xgR"FU]"5)!PZUZ亐"iR"U kb<$E_q sIIr! ѫpn)yUA7#"mzbp畋Sʞ/5}+{5H5]mp<{;{~e'i-X<}8:h'uDKF1&4 [xM9n8i%8ya (GK ?bx 7¤vҫC-oʫ,jLnFtK~jr2"u90miHq݈ۥ.q/"i݈{{,W&O=tmAh}tp}6'溽]7[]3.ՍM(Kϰ.PkQ0hd vC,Ԙ<þ.8tS JPQ0:q6Dq֜ZElWuKr;i5ȄW>³?A2|Mj烶qYgؙ*F7s#43W~oz W3#:ex//p eEa^g+ jq<jhXm/yi{qVr}K^ݚ(FtzFWu7q 6 ؍*齊 9W e- ~zqVSjkZ坬 g%$H3 ʗu+>}Ȁnv6ip`/t=Z;_+†<lM?N)]k9W5ɹpKOY(v[kn8<׈fkTfv)2s7Δ2S)~E9cH5*| &-n[`eh5k#ƭSƩgPk04!J8S{l 1LGjQ$ 2Q&w5P"E5k-LmݎoZǿ5{{6ed=i"u mWaCJ6W[ÐkD%aP 5Et/%F,8ڮ->*0S;șu lS2&ÎVJ^ ԨT/|v<{1<n8|v4< TX 鯇 n/`<3lB8QvڷXvw6! 6"XnV {[#lhl\da;'Lz_4 7 -2`ۦ֝eXaL i D/w8[t-FilKp.)>!/75!I 4_p_RORlU; LFtќzTݬoV,{r8,r / `w"#nqNPK#yYX?)Z1qcet/Reports/Subject Wise Attendance/classGet.php]o0#?xՠdMFiw*6HE'aopv3~sǣlG_qaZYЮ=ZMG%Y@n 6 \7L3 ʩjxImA0[ l#)]ĈRBv#5 (iBD#mnbiI ^ì6iQe1{^Kl Cp5K4O[2(?]5KV9I,R|o%x'xwW1bW5L}Љ;sNecst2dg] [ɻzCy)3S7<xS$j t$bswA[-2B^qoUP~{pHQhqx7 qФ6&U=\vxQ~0pn0be?lPKi{pҊ?PK#yY"/l5qcet/Reports/Subject Wise Attendance/classYearGet.php]o0#?xA }Q*ZEm"䂓x0L8H=p| ><:4MK%SH|ZfVdr4Ҧ(Jr6ͻuWkXÍ$BT|-+dKB@uLj12DVvd+9|D2e!qN3^q%b@بUފ&nr32G4h@#[eneREXu ߹vWnpR4_zԍv]灋u6{kę@#ಶc0 wl<;BB0yta(M9&a,F3^>z$SXO;C'iKQQ1 p,4+ ~ *oZRϿo&p !3c³ޱLFY٬4PaIw(C q:规`s'=u`Q>ck`al-6Q*8AY{grt౫g;}9KjRs3SO3:c|$<1n}c1@(bbX_PK#yY:6qcet/Reports/Subject Wise Attendance/departmentGet.php]o0#?!TAu3JVuYF(B.870jѶ٘Pf x>cG.@\>",{gv5 2!N=#W h];<8i-Pz*׆d.h%HU|ks9M"ƌQ#H+I9^_Ϳx\s~+ϋ71ab'5L}賡SwNN&汳4hVm2qbOU]t=dy.\gr<|x@Ӓ5mwU[YW+к[?&1z}PL 94I*) "q Bւ>BGEBr'n4lW>:*'?IgVE}Zɏg0J)j_jr%y%}I,˲PHݝdp\&WH|"ʪ+,ݾ`ٲv)X>D;Mup^VjE-Ì]։'#jO-~nb}A_~ 0"e(muB릤0ׂ tU|mVڞ0 8dT Xq[Ct;݉H+k2LQ1I3SuA71a9Ⱥkk6I8QM6.5Yp]q <4%pXђ{\u;sMYsh Y5mXGPُ2ȁquuYG-.Vx*hVGh~RE B%^oˑS-CkIJM5fe-jV{'ㄫ홒ex8`ݶz[_k%n\j_5,{*%[CsUaS+h1zu<}?A^^Ov7A. g=/N ²<9h #crq@Rwac`>u/9sВ>u/9kG1+_OcJm2Yf=[ZMѭ>F5ن/[7Sr(y․ŒYc2Swr" ݅ ,݅ !hEPj>bv'ՙԗu`^ T,P=y#\ S2HQA$B(""^pr|PKipR[*4qcet/Reports/Subject Wise Attendance/getStudents.phpTj0KBղtudcW͑I&w$;%VL~xW `0ϳdrDvUY0Sr ]Q u" ~:+Zh-j |?>nYEVT!T)S;a.PKR*yYnK5qcet/Reports/Subject Wise Attendance/getTimeTable.php]o0+<MB]5MIkNa 65fUT66Es|a[9jPFc[5mgd e~ ˪?g@}O>vˉ"ICkѤ,uh)+)׈.Ȣ(.mHps9Osv&V֡[pL!ιS'ws<~K/QSŋcr%% n`ȥO9M~V{:# x_nn/2IL=m)|gͭnN$ffO ;jށ`&q[?wsj8_+ `ZI!IWi[$GǪڨebBgoKR wa+^Raptdm ?G1l!P`i% %PY+mv5*Q8=Am%8UWeޡ;2;8C0Un‡G+[9%dH 4jpfXCkÊվa){U- ^arbӬˆ7ßޱ;1?g$ے;%״;9xfcƢYccgm=M&lτt~q彾?m^^r3DC80C 9|`U?Pl@%BiN0$㐡bPKxzY*7L].qcet/Reports/Subject Wise Attendance/index.php\o6}VŲvI[mmm]2 a((J&QN|[((Y-m ?|(_<AK~r"%(@#WH|.±#̺b!'!o O@9r8N|neIET2VE,暀;#+[ތ )طdv:Bi}K\"E>P8 .Zd c&cqr|쾶yO]A Bvb r\~(ǜޔči) 5P=A6ݐ 1'&^Doc<-F>#5 #4DWG; Pd!YsVg$CrbD,LhiZ3 aqDB˘gxaxZ&]kGj+ݶW >1 SŽbnt:O2Y/),D TLua,-T3$X@YEZ]k;fv$f3/Yt,9%\cAC1%Dg_D%bHu3;inz5: GICPnUzK%S,r?dLfS OVhz"=Q6Z&.Tw^,SXh hc9М幏Z,觘-b\LdMRȦb#5)Z"F7$Y^ pȗ4#Kvo`RƐ`Ua)" Y {,ח׶/&YB/Q>D5ʮ>hTf(BwBCMmOm++N S/b 3mchn.ي)b4r+w{cqX{4M';7qآ&Y-$pODYa#%#bDs!?ܐsQqj>#ycID%-Bdc#C P&Qox& =-r 'Sh@bI%F 8, 1ӎJȇRs.1<_):rl4 p^#:-7j~o7<ϵ2n?vZV*{s;aC{=sY,lxv]>-v(m}URĉyVSH3[@t [Ͳ}rRLFɮ2ztW=h>tviT*pp@,xTci=~ڳc=X+;8f1zktgO2&$ѵ£]g'N?창bbću}۷_Wr۹, |)k_'x,0 m8)ϯ.G;uLv?5`h%O4L&I䋌Idp/Ɏ蟺]:IbE#bڷ:%o'{ <08N=RgŢ;n$\𥢌K[V*0թ,̫-iv":3rAڭ8+ATlLu4ܠ#{խ\Hj5+mhwދVaf1|=c]zφ@1p83  jqcNlT#`h >cQ˙USe P;^x4&AC]W='1 X!Xs GCfY1zbE걕z[A0 i> puti8~?TVʺr@6U*~N@$tOqJ2B?󼞸S zJ}#nGw`o?ep_#lFYM:kQ@B/Zz8yHȓ'!j)k7DJ?`0[@j%:,@W(*phr`ָ w `b_p& tN9|vv_&([YKwYgյQfn 6u+T[ xSCį&P*]uSe&Y\O]s6aa۶ nQP^Ŝa<@ԑ/#4=991 4Mc?!&o7!GL-`|aj5f^wt`L49jmP65^'m ]$5vڇBOH@Nnڇ7𫵔I*-͔M֯V)no7!KKEVW]܌c Ig. ZIӸc^.$vp$ΗΗbsV>fxh :` uT/o;sq*ޗKx)?3;^xq1W>Ϯ!, y+wY˒]B4\3uTSrQ,/K,P_ zâ%y z~y<.poW4X_=yv\q|,R}2;~GyWEd×6YG;>HëgiGv.&YL_t /y]D+(0B6ph12@6Th86i@nL$$su U7aMqe"0EI4t-9㛭2v}P隶ڣ>yƩR}eZnk/oWX}tٴiC"QpVJ9٬$n MII܏ TerE0vyE^YXPHAԢ}{Oyѯ^ Go B1lś֍~!܎P,Zd}!aC@W;rCxC$Kl)vbB~PKc#yYGj3qcet/Reports/Subject Wise Attendance/programGet.php_o0#;xՠdn{ к,j#MS!n70ôhk?le |;*0"0e3inG`Q2=$i^q?r[op3ۆ$"m\VJu9pN3JcIw. hag*Vca@)#‘ȽDOT`"V:^3 -}uv $o/nkj zMS=G/_n`} nw'xWon`2uFiȉd ]42GĄ49#S er4}7:ݎ`:) A<~y4n,PwIǾ9FP4Q6}\61vLMJ 2r\6NNd:xt2N^ҩKP6spe 3qcet/Reports/Subject Wise Attendance/sectionGet.phpVkO0'jה=KIP5!@ E&1[DqVmWuM*>sq:OwwE8xͿIeE7H-҂M"NW3Xd,1uUHQ>>ַ$*Wy 3Fz#J qSɭCXa;ujk|KшdNeX70)hMx(*;^(.ۦ֞{{[77Q3b4jq09~l2__ 89Ɵί*f17I)7##l-,wZ5[*_< ϟwe@`Wx-C=8fHʡͮ1zZ5rRZ&2 ja (MJQnr-j@jKpHyuD۽h–L՜j?Us`hۄ3lۄja[R9T2 #_ gUO><npg 4_-@i K!yD`*ztb7PKzYPAJ1qcet/Reports/Subject Wise Attendance/students.php\{o۶@}kَvIeXb 0 EPm3DM_>%JdM4;RTO' d 0q7ɼ8,@N-b0aI0J2z뚀Ǘ߿x1gFTyJ\IRԀ46I_fe5bEB3JK*Ra)) ST`h5u)T!gC*5GtTbnpOq3t`&]"IqP#'bCY?2|3q^q|4qeC m&0,neBRf1X-&>rC3 C0D>xIEV- OnPZL0D \& f݁$Q׃)]y!]˜ϋlIHRH^9,DSkdJOq"|\Y۟[p$NkZ!D(oKKk`9_e4>>H$FsA0}}"d<5 'E+0Xh0y`Fq4`04щ?;T2 W{FgkxH벤Bl+>CI2wrh=Ha~낐uE@GZpM-9q ̻_bZ\T6T (UMR x(EYQ) T#8Wu!9#1|\:@tȡwh6s&Hj$4 Mr24F!e'~!u]co`!e3K g=%R`-l,KЬ^Y@1Gׄ?`HRn7d HO\ S Y /v("+eDtɖ(,5gЫE۔=RJ6EfSqʷ$!x)UUeD~D oev$ %_@8R",e*7%E1Yd ےG49/g2$UPuNFb]Ҩό4p5+Hd~ y(=(ó1ɑ.nb/E8ɘ^7.p3|) K^KT?gTqGq$@ޟxmFȂ{nFzvQ"~[p.Į_~0JemX 8 M`& T*@ѹ( ʵB 8B8qrrJ^xOJGԴJJS }RgBVcܧ/_2Ḷ'{1zfbhMCI.%K cVkAzIۅMO~CJ%; LMYc]84"rX I^Zޅ<:7"#<>'CѨ- i)]K6UL'5@$(h'!7Q%"Ww)ı]Sscv(Q!J^'b or1%] EG9+{e#J?RPa~cqsUjZ*М8mh^aUց4gXjhZzךA_,;ÕIZ8ǕPg2 p^↯l<n$,8Րx?+xۭ ^!l"dQcGiE*@d{é&!zn"]X$"IF!>+S"=hG& 4&깉4빑 OI`w5 QizMN#4e^t "z J|9l%IwM iZWΡ < -x7F-Q\wzŻrtʽv ے8&CWbv#{Ai_)8Q*Tښ0kENf9c0}y@.M-{_\bjtq9 琷}ٞe*':Vj{^&ccferu2e8tMBȳ|WW:uj,f\v؞>qQƛ8r˧SrgZ=̙6)cV z(4VxNX %bVךEAp'4@[,GTBW۪<}s]:#y`KN X%8$~zQCŠFMc⮽z$6'xVo.34(MIj-h]AD pCoTz3Ǭu޿7ZV t+݈v4Y^1u ?|gRF?vŋ jGGY}7 _i!iF~wJZ$) WYh}5GkS͂i/j͓v6öwqcet/Reports/Subject Wise Attendance/studentWiseAttendance.phpZmo8 UعZ{r͵,š E@Kń"$~CŔ,9JbNm`3p8)M ډ k ?Ngzx{FK}5r89Y8l=4sT\.ڹk$~U1%# Nr3kV`:N"!9Wѯ&'[c,>]RAyԈrPaiDyY $iD94YDeb=gd+kG4$~uڽHxjC{9wYe/y bPoΪ&+ocʫ$ a5Kb8ͬMsO&|i#2ՠ~µHd}U@H 2o)] $}'גF: jCgʹBN*֒' \,Gl0@4bf 3P-a P s*]/IlcF(\ c<2qus Kd/p.%k44(s 9/B g<H%1\htZSP !^' 2oY;D g `e偵)/P)zt*agǃӚu8!'Ep'Ɍ\3Fc$ȶ VF($0)^3Y^&3tujtO V QI aprla DBrT]PXcd^i:]~8)G6Ghk)z|>a+dvE8_۳Nh[`t.;rC6iYJ2'^TҲ9x[(Y_X6[0 EHCĶ1Ϋ J3`S=e?!4)v8jr+ 3:R9$zPf^m]jIF569-*Җxv{t` 3'B?P6Z9:e9e$l"NoV7挡O'{C*UDW`MD5,&R-^:D`iA|Kz2BkjuHܷU?r3 e|5})rn'7e[(jP[E[6XvSHp/ ].RĻa!D EHK,kz¸ [HR=siEJ32>Se*$.YFq*b7>L.Q5 I6ΩPA+/0R7O rLE}:~Рnx^BG ͎d-9+,D)>B(S2}%K])cBٌٙ ^SI~/<#\7nUG,qq ͰJ#`7ٻ샀-UXhvŁPWy8{<:G(@ޅDFT%?@ [څVZ9]yGyL`\{! PB68O]wWzǴޞ0uoCɥ(89]qtf6k+XyпbU]54)4`e1*oWJՃlo=7_? I~=vBTGSӄ0A}Ĩlխ+.gN8DhhNh-?j%ḡDkwTGUbP`ʧ.]EBG!FQ}&&Hy/!Gv Vm`+:@FQ!&գ:,ƝUϞ  g"09;Rc$=/_O8?׿kH{q7q?ԪԞIAQiqb]t\)Y-nk x`Q Ik<Ź~*햫tlU݊w G5V{wkj^5+etӧb}\aрҟp72z{5 v$I WNbњ3Ⱦ߯bږfyLPK eJ[$qcet/Reports/Test Attendance Status/PK/{H[$_3 :qcet/Reports/Test Attendance Status/courseOfferGet_bkp.phpVmo6^*ʱ170Zg)A@aBZ=͔%{%(omЈ 5ch7bPlIn3"P"՘rX>8w?.o" ^/W9 $Ruu^ xԹJTt)٩1n@z&D*4O)ՠ&CkۄgQۀIv k'4Y5{=|0+AZSqALdIbT=5ǹKv抗ҍl'F8?Ĝ?m';dFBob ԝ[ 5zit3Vj]jhk%wRMTL=){Pw09 R{/q"̘ ݨXM9-S?G5yMU)o;`[SlKՂ`i} '߾A*_:"*CeBoUaXXћͭͽpK,pIeW[t^v<PK/{H[~;qcet/Reports/Test Attendance Status/deleteDateSheet_bkp.phpSN@}GV$;)) MUѤĔVY=mfw~]{q҄Z̜3s웓vw@?9Q8#5S |%U%%G"HVPsI"Ra.b4#2~9%8X9-~aA8$Ɵd9W\XcoUhA&'f_KonTZ30J3-_ƺFU+5D_? axB@0r,6),Z4C@T&pݴ7Bpa29z !wF܍m۽gT?Z =ϧz 6}-Uv&RֆLmg 1.P\[r_NrmMv3PU,5qeV035C -X昷[.Fq.&~27~j0*S3cٞMϗ6mom EߴD/x)/uem[>_dd?v[ħDoD$]fEOwwPKtI[e7qcet/Reports/Test Attendance Status/delete_test_att.phpTQo0~p*9TOl[iTTUMp8hk8@P |ww|Z@*\2Ub>#uh4^1WH.s\uuE*9ك;A]/ M݉`Kp *OCl4>9y,x*=ݽ¤{ʃvuBR' cUg8-tIoVkүݲ2 sͰ`)FKTQlKbEH%J4B&_Ԍ$K!1b HM h)]Unf\b4M+Mk5-rz"ݏL%,J4e*<=Ay4!5UnC^w71'p+LO]Z3" 64&!ә3\fZ]M31j]Fۍ05րmִ'n~kf.vqƲQ"N3!^ۄI3/zZC(ǀIeTh89zR[8𒳇AJv?Wg1 %dp>V%- y-7V"ږM6Ԙ݂|g(Zl-SU:Ղ5m E%BK 1s|fU Жz+ټ`VV/Boغil=J|S㣽 !zcQ'PKeJ[W F;qcet/Reports/Test Attendance Status/getAttendanceStatus.phpWn67w83J*rn;puE`Dl%Qۓ$Rlsw#Y2/#)Mn7;?w{4'¶Bȿ$\x sg"Ob^ dWE8?wIf[',$]JiD_P?rX`!22 gQnˌd ^c!«}=tʽ\^˷uVQu| $b %\W۠M(mFcoYa>?Z}ǀّoiD"0mKORC qAd9)1Q.Ȥ4#!l)B.+jA?NsPE'dpߪy~(aH/+\blT} sOϻtF+w/pܱYixX ˗? .:K?х@?.4Džf5laƵk"&!TK{=_~S. 3[]Ex1_RX4JªzFZW ufq`oYJkTP)KH|3獒;:HCJ꿻KCep:|{f]]=mjqr;#'.Di8#꩛># ŵ<-Rp22E6TA!c/cxj) i6ū9gA2FcY xwoO(^pvEOL}eYJ͔l7wKi*9^]ZHI;PLZM.T?:%u8y<B$` ւ 4ы57?xݠ^\a-5G>sְLBle!vɮCo$yrK .oKRa2E!( \ovmH0 }څ~ ~p78 g`^\,U2 BnJ> M.zL` i"u BBF,{Mb^@blT+]EJ4d/@4SP G6}h\jN:Vy0^rgfֆic I=$l0o&қOܹfRq&ԊYԛWSd7r2 `ڵy*{{Goj=iP}#sqR Mmf^Û``$T(+redJĄf1])@ֺ`stй]Ot51)E9O+Z< CWԾ8$))YoHű96сL"NQw:nz/)1n7ΥnIy&q()ҙk) ^FȊU$Zn.à*R#:TDq3%k6]M&t8k`~g왳>U]VteW n=5/gMw<3>ӕJe֋r|&]z65xH>xHo48٫܂?}ѬnKw}# q滝lN,` D3-g[Jܖi7lCKD !kxd3X[k=d\tDP+8&ڭwPKcJ[C-qcet/Reports/Test Attendance Status/index.php=ks8Sp<+i"3ݑ,Oe["3"9$0uƝ{" =dV/ bjF7Lg3h [8LSݳSޒ$H+r?΍"u-gma!q4߀=e|6:`c(sW%ȜDZAFMh=QZԷɩe;q"5%$;pC蛉Й`tTi.cDW̧9$?U59y=H$z>9t t[%R|( h|,Jmv7&_‡VmآJR!;=S18v$lw"IoS%r@pN;elW׌muk{A8uF6at˦ޚmY.c֛ܗ6"]g. Lzf7Tv7oAهɨt錹(0 +.wa bfΝhiQl]eoRҷHf :ĈCk]g._Ȑw#y(b]"WaRU !. :J`f# BɔځMS4,QmX 2q"FqXw"ko&CYt9S "a-$n3 \+?<{ *Iv<7&_:i4 "4û!,fF6CgFćfK5sP`x,nX—tФDJ7~t\< jǏZt)O< \@\?xU%b[E`T"mW.A &ЍZ=Q3Yu0Oάduh|tC Lg05M#=#o@ G`,FPl1Yԙe~%vvf~#j%NP}Rf!b-ʊXU<2HtPyqj'C͕c}5ZClu%QlŮܙұM@ O*(/WMY=/cHD3k I⦙|EoKॢ> 4Xxf~ܖؿb߬&7K.81iLZM"6_s ٶSrPYfCJ;HE{4@.Ff >EY ='ᐲ,"WHo iv5[:r]NY{fjGSh BԾțmQ@$Y'jlzb/G6[|ڣ>Ћ?a+LɭUVi%K^Z߫V)^ېAlDL Pn@M[ɚQam@w"&RA r#AհB2z^>_xyސ@u-J='"d@.⛃,Z+M_m^ @Q1 QeQH&~~L fdc5ψ[7bbY\w} Ho|g ȅ@\ª֥> фܿlJg~tCS }mR})7U2M^|Q !@zlċbdYcJTkD=Kc*J)wN?36ИH3JyncMBa*ّ* F7Beg$L@h`2v*_dp0v h$k?F'?fQ"an f?ň7{=:/aPױy?Zy(]P5c( <#cX\B)h-Tes}7l5M-cl'B~H :&=moYr*Nt &KDeZ̈́,i8&xDqL*Kw/Mkq'У { &z0R~\|T+83Vk*n̹:.>|H MϿhf̗iNHJEȉ~iPrNDRVwOC8m!ؓض[o} 1{]ur|DLOJt v7Ux?t+XN@4҅8 6q~0 0M Bfo\|ʼn-pu4ݮ57]ӞP(E{g%lv7 &=+;>S="#ZdL&I\5^#ю6bXB|v{)5P oGspsx䤫{+xڹq|}rVPyam53؞vY)!U}YIA:cwV 8ytG>6O#L^qE~HXu42')@5\X:xJ@>74\&b)y]%[KmGEmzCXv4u__֬$ ۆ5 FG-`Vxxm2uvR%hS,DKi0 Vo{ um=DZW"e 8,he9fw6alx'4 }E mMyh=y@/ҸkМ%cYD+,*ਃwDdJR"l".Y:|̓VET%nW`-p3ezƻZv#fL};Eʭ.G }/z׵%49guNFݹQS3q$r˛FU**ϓ (鄼tMHCwy0i\v8(!!k\jjSnȴ7XOXI {pUD{Z\Emo]_$?!3숙:t| -4:~hq63qhw$N[cNX^R)^H[bj O& qq!&s@̏ 6ıHԻ[u݅m(z-Ĝ_>nu6Kj/beRg:s |qDS>/ʳ&$rQ,#&kǠV'g7Pb0iͨ`ڔ'o^8qYq7 qmD+Wf)9c80>wfhgޠ*{M'?z"gOyks/ bM9ׅN[bb:lW=nYXY%o3ʿCr~coLJPW䵛6_ƱL[q&;g(>V4U0.ji\ysķXu]K! tUbp o`nԲ=-ρ:ݭ8P9/" w8?-:9>z|ɥE3c"J7D Dܫ 抃k*~FR˄A<%F)7=,1u֣p \#ڷ,«Šr񏑟>xCv$[Vs BR϶XT4\ã z"f=~tu{:Y;\1J29`B. y)`_b3pw`^Tڟ&ԗ&Ml&PmDJdDJpi|ЭFH5&7(i2Qcp@[!U\RRM-Rm*UǏ*[ *v qбTt5>hPK/{H[Z49qcet/Reports/Test Attendance Status/saveDateSheet_bkp.phpXmo6 fʱ$w i!dŢcTRwDRv`wd?.nc9YLF`OhF#N%/x)f9@% QBfqHgD?cOs'Q jI/)ƂY3LJ< 4\2zO>my>1Ob^]ëׯsROi?;#P.HJ<;PRB:gmfӴHtŝLHWx7ۑE>`dєDDD6=)JBxANKR0>e$%iµjڔnDB4^, )zQx M6Z:/'Q>ڝ}_(+wᒓ)&TKrX߷:s H*-YUqfF9s~Smk!VX/uU5U·GL dL@0+TQf}Ev•ϗh<ߎ `WWW199v&Cg&fr z$򯂰4φG@m $C0P9B 4BityDOp4ӧ58fq5jtHQ'WmvIRз@Qd*.1@WM}JVg~t֞pyTͳݯo#ƒ.{ΐm˻Qs~,[$)"Ҫ e*){U0e*2bRd=U0.8C{QdLE1c!޸H9UJٍdk('X ^]=#bh˶3xi.@*]6xt8ϧM軁rU;Wndk]ǿ\60~Q7yofܹSeʸoFP3ZxR鷷֪\ 6Є֯K AzA BΖ[׀QAF `?YIOWL@0?$¦Txq^AbNfP Ӌpt חΌ'H0.ոwڷ8iްUKU,?ͺ6\'ӥ/1^yqOζNm;Ug76jA,:;wLu"[1ѵsWYFuHZmaG=ň=D{UZkݭ6q`9͢]]nF{=^qUjPխ!?<}Nu+Nw꯯؞tG> W:q}PB֢_ kK%J_PIa | \.*'%' /pyaz)`Jtw0вUWN͆nwx66d hI`aZW!_-sޤ1dP 9l&v =. '[V Jd/ ^ $ L`,-؆m.8/x4$t/mƣN6`'Q?PKfpI[Ww X%7qcet/Reports/Test Attendance Status/update_test_att.phpX[s7~g.4ЇiL48i2Yo-@}޵d9߹H˳r]޿ E ZU"3QDċ5' Fq+rr֛mJtL"fh-7Z,=!E7JwN G]𗈭dzxt_N'|: /fߧdr=~] %WC.BKo EZ%ȇ/k>'ͦgAq1[|װ)VE eK b0#2 ]%1J5E$ jqDggeE5'(fN 9UT⋊PDDxx6")kv|M%|kFU{8EZ0b  *z 0) /%ca'9ҴT|h.T(P.C'8~ a?R#i0+Pm^S[Y[ҝjޙ3]uplNͅ&DP KAܱ6eіHg5j e|V',f63ۂ~43>Y׃Tp$!เKS%*x@pð17AmQ$=$~|u/%0_ޣ; N aV=o CpXEE 9iJ0jz2^aCW@ p$^2̓ {W'RL302-"0uBr vMfF0o/ci(&&3eh$|Hߨh虩 UYRɁ<PWKff Y6'a&-mD$@,s:>6%ykon&ͮ<{2'[sBhqS-[x-)R.ʾ[ȉVV9(I PH;tkE^i:),(/+ vVk)Ҭ u@sQåh )ђux;Z32q#]FnNVrQDdkY"넅H5[>baAt|9ٹZeS4%sj-mYBVgT˂7ս%i:%&3x']wrmu4䃢ѻZo̐PTjT~XqiGL6rc ]Sdb8Y"(7Mm(x YME9Wh+b6{_}) -#n !l:Fu<ctQ;2,6zn,9NsⷻG eA2Զ'ܒPpAUa[y'a,תhތE&pb%kI])C܍eo w9K䧣W鍊!Ym(?CEahN&0n:avZ3JYQM߭=$[Uw;!ɡ:d(z=Z!rPF+EZPFݿ厖!YP_A8u =T^$A<+'A%IJ L+t#R{ >>2Sڲ(̶mf$cߛ[ySPK ]J[(qcet/Reports/Test Attendance Status_bkp/PK/{H[$_3 >qcet/Reports/Test Attendance Status_bkp/courseOfferGet_bkp.phpVmo6^*ʱ170Zg)A@aBZ=͔%{%(omЈ 5ch7bPlIn3"P"՘rX>8w?.o" ^/W9 $Ruu^ xԹJTt)٩1n@z&D*4O)ՠ&CkۄgQۀIv k'4Y5{=|0+AZSqALdIbT=5ǹKv抗ҍl'F8?Ĝ?m';dFBob ԝ[ 5zit3Vj]jhk%wRMTL=){Pw09 R{/q"̘ ݨXM9-S?G5yMU)o;`[SlKՂ`i} '߾A*_:"*CeBoUaXXћͭͽpK,pIeW[t^v<PK/{H[~?qcet/Reports/Test Attendance Status_bkp/deleteDateSheet_bkp.phpSN@}GV$;)) MUѤĔVY=mfw~]{q҄Z̜3s웓vw@?9Q8#5S |%U%%G"HVPsI"Ra.b4#2~9%8X9-~aA8$Ɵd9W\XcoUhA&'f_KonTZ30J3-_ƺFU+5D_? axB@0r,6),Z4C@T&pݴ7Bpa29z !wF܍m۽gT?Z =ϧz 6}-Uv&RֆLmg 1.P\[r_NrmMv3PU,5qeV035C -X昷[.Fq.&~27~j0*S3cٞMϗ6mom EߴD/x)/uem[>_dd?v[ħDoD$]fEOwwPKtI[e;qcet/Reports/Test Attendance Status_bkp/delete_test_att.phpTQo0~p*9TOl[iTTUMp8hk8@P |ww|Z@*\2Ub>#uh4^1WH.s\uuE*9ك;A]/ M݉`Kp *OCl4>9y,x*=ݽ¤{ʃvuBR' cUg8-tIoVkүݲ2 sͰ`)FKTQlKbEH%J4B&_Ԍ$K!1b HM h)]Unf\b4M+Mk5-rz"ݏL%,J4e*<=Ay4!5UnC^w71'p+LO]Z3" 64&!ә3\fZ]M31j]Fۍ05րmִ'n~kf.vqƲQ"N3!^ۄI3/zZC(ǀIeTh89zR[8𒳇AJv?Wg1 %dp>V%- y-7V"ږM6Ԙ݂|g(Zl-SU:Ղ5m E%BK 1s|fU Жz+ټ`VV/Boغil=J|S㣽 !zcQ'PKMJ[\'9?qcet/Reports/Test Attendance Status_bkp/getAttendanceStatus.phpWn67w83R*r^;puEDl%Q%ۓ?EQraN燇ϋma( .($ %itj&G<ꄹ( %a7QP 9hsĢxKQ^\\ wBT)#Ah>i,`ǘR0giJoKFnH>{Xli§j^g/t .~5(myuŸKN`{R)'gm`E8-hlH&AEG:R!)oc35OBQ  X|<~RL04~5rTW(!IdesX*{Zβ Dڊ8y|!pV;OueksU(J ](pJ'e2эs7L4jŵZ"v_{tvҌcH.|E#;ӆ dI £daev+BkY0R(1 (MAVV4Y.Ta2gw.5H$&&(œvaqtKqytӒq$ag5hB8fc[sTmEB~#`v .Ǚ̝3p;pY ,bh”܀'幪|X@b1_w4 -'/pܑ,K4[ԪjWC< <3YP[-y5V.v }p-QTrH5jpS, 9kV;|Q!U,̘ެUevR7ռri1%PvB[i&PNxz9_9#h{͏<<ʻzҍ:tˆsU@u8QEB5ATfdtPtét7s3%0"m[Vt+K-_lqo`.>ֆ4k3<t. ZPp,1 Pv[L yK@Mb<ޯK}@W(tH**5R*`KZuϽ ;l-si&[-&xXm 쮦 T`KUU [V&̓vdͣ_ׯ~ᄃYYKfqQ6A.4DDo$yrK .oKRa2E!( \ovmH0 }څ~ ~p78 g`^\,U2 BnJ> M.zL` i"u BBF,{Mb^@blT+]EJ4d/@4SP G6}h\jN:Vy0^rgfֆic I=$l0o&қOܹfRq&ԊYԛWSd7r2 `ڵy*{{Goj=iP}#sqR Mmf^Û``$T(+redJĄf1])@ֺ`stй]Ot51)E9O+Z< CWԾ8$))YoHű96сL"NQw:nz/)1n7ΥnIy&q()ҙk) ^FȊU$Zn.à*R#:TDq3%k6]M&t8k`~g왳>U]VteW n=5/gMw<3>ӕJe֋r|&]z65xH>xHo48٫܂?}ѬnKw}# q滝lN,` D3-g[Jܖi7lCKD !kxd3X[k=d\tDP+8&ڭwPK]J[<`1qcet/Reports/Test Attendance Status_bkp/index.php=r6j8+)#'HS3;{\<{W["!3ZUϻ'G84 R$'nbD7@@Ξ8M7Ak{_`57H`(#aO|B1L#%uoePP-b [ Jf^8!tҥ[Y%TܸqmTAp:t=wȍkŞ#1YJ+dͥKvxCb=81{ܔ-NN&lL'%Pԉ여 ȴ $(OE8 JGlzj9nBECB6w b׶7I]DļoQJ J_͇ROL3_ TոgbəFeGA`sy ظ2b< &4 5Xﯦ8nd?Aΐ"A2ى\:H^0}fheV%={\Fh/u:sC|0Ϙ @z*4 )=IucvD͚f}YǏOֈt vy2ix~1=wYU0,Kw,yᓜ5GuJiU5SU(1`a{(&71+Z1U6laDT!;b:-X5קb nqLڥdƆq.S|yt73ߒ JI&[9qN;gêGI oٕ&tNބ徴Q c\a!Sݼe>*F-@XsC(I\;rfz0s:Mq:bzr[˅{);*ZGpg7sJz>aaV;ɶ._/Li-mQ]S]5aWԟ/r>}q}hGf̦P$ SὦSt䮼͐;_o;amMS4,Qm+2? ,X9…PB$w|$lsbz^hO3(fLJ"TWzff\)Pb=fbPbbs]%b.+BT<6fKbr@^=4޺Tjw]Ut]_xeƄD@Mpէ'_̢C#Fk&UxϦ!Pbx?C施5$ythy]#3k:3 6[[Q+~eC *TXwdˈLз**0'dPbs|n'̡]l]!qZ5Ħb/\!ń|^q)m@ n׹WP'l)e T8f&$%/^TuorOBRP )L}.m%0<7Ƴѝ+_v ujG'LF Eߓ3K|އ~QtNʨXa4ˊǏo.5o4u2VQEM(𠥗&k5 YVܖ ;R7X%D'^~[#ZVa+/Sv@Iˈ9o]9r$qW>{ζ:t,ͫ ctp}|*]??0/B&q׏}d(_y+I#fZy䂦O^ 2qbLfq,=ѱВ[c8j;/6Ij$I?E/6үo<_q?p鹋"[o";śt-ݚa&mh;!"I=g0/pBHz)`bFIrCL];N<=z&jKfFHkY2)Jس" $X WV6Ũo U9k^wfjܒ_R NIL@1E iɺX!=Źaz*]ѽ 3}0z!{H/z9u'x6YrA `0NO҂Q!5؊L ~( B&_wTP#+ hYv2 fpTMwhX1C`A?&jX' # zaIc4fkY9*d x7/aM 1?64]A_j3bla;9 #V$puns>vf375 &Lc2g]n*G 5$Sd1Nc}y00o<m]2'Zr`>O%S0-"@?p 5~!KzlYllAexD4!EM+d! ^\{Zո$k@MUսS3}gf,s=3:R}7V=/̗(_*G;Ѩ z)n\  b{dwH1a_W*|:cT0|- 9wmȒKq'7R 1w ^L=fAvNN;(: *i_hNwcp˹=Hgp~a7i~Eip!x˪FPk912H|CbidW Oa@/^s"Uՙ+αiQ.6YTJ9O)~%.Cz2Y=d"OGMbdʳbf>Cm㏹4{rq77yn$9K}[ܫZ,'_+iB8c|\o rd6C!u7.>TC\x+lxmҴga/ > n+wϛ*dh Njh)*bZpp+j3ML~WT ] D֌B=O;}<#aBOIWVе{&mrVx(ü͌]G#Gjeiz^IA}.j<Bn5u2`jP\0'r,ULHJ|&ud+򽼹)<K*1/(E]n;ĵ>*b~`ջ~pL2e_:,Zݶ\6lzqF`ko_xp]WY5%Guq+mܗxk؆!=a黖(Jvulkʃ݉8*zPAs>'J$Z/"q`:&(wY"[JMd8KҞ!yUӊ(.ۜ$*nrbFuds9|.Y8kENrs3KtQBߋt-/C2i#YQ7.ƅs1V"jj&B0yR_) 9KWɉzG6`aeWAAR~Ư2:NC PmpʍqK7 Pu";+w5Zeƞv[7r3 OЂ0L@- 2a\-kA7NpWƸ>Ss`n%|DN81Huȋ<; &Z’IC\&Lj pǑHpԻM BQ JU[ {ޟ>nuK /f}ݲ2K2]ع\>v89_;Jٍ ] ycPsZzlQz|ѼYg' M ڜ&'&k^8r׵2! qk򗛣H+f)CQlYj_wlhW֠{M?꽐3:k3/Cb19rt u ԝu)#EfuYV}/~Kަe΂Zlk7y=hmZ9>΍SM0׌ӌ{w"PX}h aZo"nU g֊ k0T =iySnz YbGGdKAFoH 3x"Nߙl*A}p@*j}?:{d^g'k_iPq,wf.PK/{H[Z4=qcet/Reports/Test Attendance Status_bkp/saveDateSheet_bkp.phpXmo6 fʱ$w i!dŢcTRwDRv`wd?.nc9YLF`OhF#N%/x)f9@% QBfqHgD?cOs'Q jI/)ƂY3LJ< 4\2zO>my>1Ob^]ëׯsROi?;#P.HJ<;PRB:gmfӴHtŝLHWx7ۑE>`dєDDD6=)JBxANKR0>e$%iµjڔnDB4^, )zQx M6Z:/'Q>ڝ}_(+wᒓ)&TKrX߷:s H*-YUqfF9s~Smk!VX/uU5U·GL dL@0+TQf}Ev•ϗh<ߎ `WWW199v&Cg&fr z$򯂰4φG@m $C0P9B 4BityDOp4ӧ58fq5jtHQ'WmvIRз@Qd*.1@WM}JVg~t֞pyTͳݯo#ƒ.{ΐm˻Qs~,[$)"Ҫ e*){U0e*2bRd=U0.8C{QdLE1c!޸H9UJٍdk('X ^]=#bh˶3xi.@*]6xt8ϧM軁rU;Wndk]ǿ\60~Q7yofܹSeʸoFP3ZxR鷷֪\ 6Є֯K AzA BΖ[׀QAF `?YIOWL@0?$¦Txq^AbNfP Ӌpt חΌ'H0.ոwڷ8iްUKU,?ͺ6\'ӥ/1^yqOζNm;Ug76jA,:;wLu"[1ѵsWYFuHZmaG=ň=D{UZkݭ6q`9͢]]nF{=^qUjPխ!?<}Nu+Nw꯯؞tG> W:q}PB֢_ kK%J_PIa | \.*'%' /pyaz)`Jtw0вUWN͆nwx66d hI`aZW!_-sޤ1dP 9l&v =. '[V Jd/ ^ $ L`,-؆m.8/x4$t/mƣN6`'Q?PKfpI[Ww X%;qcet/Reports/Test Attendance Status_bkp/update_test_att.phpX[s7~g.4ЇiL48i2Yo-@}޵d9߹H˳r]޿ E ZU"3QDċ5' Fq+rr֛mJtL"fh-7Z,=!E7JwN G]𗈭dzxt_N'|: /fߧdr=~] %WC.BKo EZ%ȇ/k>'ͦgAq1[|װ)VE eK b0#2 ]%1J5E$ jqDggeE5'(fN 9UT⋊PDDxx6")kv|M%|kFU{8EZ0b  *z 0) /%ca'9ҴT|h.T(P.C'8~ a?R#i0+Pm^S[Y[ҝjޙ3]uplNͅ&DP KAܱ6eіHg5j e|V',f63ۂ~43>Y׃Tp$!เKS%*x@pð17AmQ$=$~|u/%0_ޣ; N aV=o CpXEE 9iJ0jz2^aCW@ p$^2̓ {W'RL302-"0uBr vMfF0o/ci(&&3eh$|Hߨh虩 UYRɁ<PWKff Y6'a&-mD$@,s:>6%ykon&ͮ<{2'[sBhqS-[x-)R.ʾ[ȉVV9(I PH;tkE^i:),(/+ vVk)Ҭ u@sQåh )ђux;Z32q#]FnNVrQDdkY"넅H5[>baAt|9ٹZeS4%sj-mYBVgT˂7ս%i:%&3x']wrmu4䃢ѻZo̐PTjT~XqiGL6rc ]Sdb8Y"(7Mm(x YME9Wh+b6{_}) -#n !l:Fu<ctQ;2,6zn,9NsⷻG eA2Զ'ܒPpAUa[y'a,תhތE&pb%kI])C܍eo w9K䧣W鍊!Ym(?CEahN&0n:avZ3JYQM߭=$[Uw;!ɡ:d(z=Z!rPF+EZPFݿ厖!YP_A8u =T^$A<+'A%IJ L+t#R{ >>2Sڲ(̶mf$cߛ[ySPK BXqcet/Reports/todayLectures/PKy|X H$qcet/Reports/todayLectures/index.php\ms6_JjEV|%Nžd2 DB"`/H4q"bbX"aFs?c[^d^w84A4\ˈaχ;eŻnH8*ؙ=[a/ɊG_:~r(& ݀Oo\ߦ7C_Er;tPwƈ'F̭;1($lW~0iži3yfSK(Aig">_T:Y:צvL}phR%Sh,o3  y$]&!߸6wL\ea\.tfa{*ZHHM^Wt @-๗oa!Hy93I!Y@1ݤ[ԣaN]s{dze[ Hu5A4T>aic>cO t߮_s-tEV9'rwCCG)g`n>@sr-\`xҡMR+  k35mW0z_j Ԫji,J0S{>}>(4]Ȥ{¿:-cUK @>爄wh7q6ȴiʦg!c“5Z5맦xOlоlTXC3-e ;CedN8(I(۽Fmj{J@?H ]R=A$eP0TŊ М맼eH fnr Ηz t]:\hՐ !|/^BܕHؤ2G uA;@npAw\Gi<7Gfp\s$:rdc^FC\җ`vAKOI :hN#QF@JئHM5prDW"㼘^Qߡ5VE+PvLV@e 5fЪ7VmZ@X)E1XȇR& L\^iqPƫ4A6[i? y])!4ED_0sm-<}+BA*.gfFx$dF$w9 h=UTg|rd9Dߜx{$yB8D> =4&&<[j'7MӐS>HGz>oPi*(t2| !ׯLgbҚҺ+e|jU5;קWa 4 "E1كŨ/ 8D2 ꤸ~q1s򻵙p(A ς=JJx]<!]x"mK۽vz](62"% _ ykLqL^o[e~^f-.NsDhܓy~;}{* vtvzY ʼovEvjsS ~M.#0L[u4zUr9a;XݱϞ;p0ѕt _:8@7% -gߕJ/T C9DeT0]7#Vg5.6 Whw'CZCr_Z#Lϵq}m½Ҧ7`"Jm<{i4g͝L5 cuTJNY(B8lE /qS,G߲[!IH!f,\AuHwځ6T=(<2KMecԆjC 6S15zAB_S{rL,P' ȍHҵjz=)>jÂCy2޸azޢ66=3d'h BOԖDa:A,٤D$nAĆy Frn\b%vۗ} u;Zqr_;4; v;[g w< ~:vrGEσNl&|\}n4|~h}QѱcWM_'mv~h.5v-cO5M?~q{]梭J73P˸ó雳tkZگ "hmar&KT4!*%orS .n%_>}Fr(Җ6n7Ϙ:5HG|XO6KqI' Al13J37WI_߾S,mG*]oԏV3HgArj*3E}ՆP אc{\5AvCb+mjap : hV~SIܱ0s^yHTG*cmACqb|T6UX3(*mﴛ&F!~\F(A~)'rNWQ8"8K%*)4{`Oz!lqyYp@ Y;;~Nﰁ._Ny\PHU+FnK;ݯG푺˪EYQ[(k+ZP[$C+6?03Rh Rª\ȌB`o25]u*NTwY'Muy)j}{AԊፗ0ru 3Pq?tw&_񨅽KNC` R~&ve3D!R.lbd"ьLE=Cۤ1NϦV$9CXcwEN[: ԫ xoVG'ޚePx+eO܌; +T,.,2+ڒ@Йj7]f?PK "Wqcet/Reports/Update Attendance/PKɆ"WVׁ` 3qcet/Reports/Update Attendance/deleteAttendance.phpV]o0}G0դ$cknO+4m&` KnYd ;v@"s{Ϲv8gH\!E}NRp{tv93T "'+nc*v,~rf[*v`> QmյU/Bfi3h4d+>Ƿ+jJw `r86^Ǯ+^ Tz:IiBZP.0^R\Op~c΁L Ĭ!<22.y!6enuL2m иjsnEB]\"̠3E Q}LR M鮒Q`5QWIX A>}xB.#q}ɩk/eY/P^A(>x8V9RdowTSsmSԷZ%#8.>2$8Q)0Udjz`%Agr# Xi\SuFk>xq6>q#o3gWjHl^7Y Z7TR. C608tDIH%`fS+gՊh?b3۝!ifL6OcwI|:h֎" Mq5,شz}*yQߞy!?|ғS\=]KNܶ<h U"1Chqύ4ҟ0N9&\ұvҫU kئE %Ʈezt<%,`^$fcc+a%jQc\uEg$2gZm] N"cfz3LyIZg@Vx=||NN&>O-a)] 7ܒ/޿#Y ]<\}7WAhGje ..2=]23o蒹 ,pѐX thf0 eL$*#f\dxc͵mFZ0JD}wKDc0;ӃZo8H,@k5M~< śDW[Bi7F$HE֙EVLZQg =xZw%C0R#0&%5K|C`B3g";%s/ Vo;M)YtXIKEw5诼d +N(0SZ4Ͻck4 Ev^`4$fĵO\[$^~^,A1/Wp(+|],K>BG@, ЛElaB0 AGoxA2Go>~qś7䑻D7lPTDy0CvHZ@S4:y ;fS6}NCt) !/'VWI>Y0$)FĠQ,6!Feof8v(^w΋QZrJC (9c{Pq3epҌ>@>}I-^WgPcs% 9"Ĵ0ڐ̈́-t>?7gl/М~<f̂kj+]UeVc1Kַwnk9z℁WЉQB(riz #6=9X`6sH.y›y}|AFREs"°kQϛSwٰhA!/N_~~}|/l`6a@wo\O| >/n93׌]rt~ sU k~)d{ .v'q@, )d 6L04oN6rm&C܃TB{1˒yTdȶBV% Y4:e[+[+"&DI[VfH!9(k5VQ2[ TJ#, O ϼ޼] -gUjDRmG}`y[#L)RѤEFk2ִQ9I p cH¸Bd\AՈgU,Bsh;Lq83Hz D$e!mހE Y P ɒ0/2 #Ɍ`p 'K%GTV;'c0nS1"9 TV*=Y\$(, v> ^2]ʨot~9ᱲ )ST'vtT%n!+}_NNr|eJ) ˉxISD/ջ&GgH2eUcPe9 &*3"BfhW)20,) dSRfuiRka)c}hSrf!!1pf ~X]+1!\ " ǟΎ޿pRSxٶ'C@+Iڄ B$#3%iN4 ΕbXt6 1 !E'fLگҰnOz1~g )݈}J[wpQ9DŽst'/LDgP-Y%#jJyB ?ϐKF1j (,EdO˳R:YW-9id++KIe9ߝtu&|ˇM-5sjl/!XH[>l0ǒ˜盧@Mק16q_e>-Zʷ먺Up.փu E%haqʱXr^P|fڄ0wPloQWFd쬜RK9d=1LXD^OG8Y4t3IAY@8SV˷!ȷ(Nk]qB6ys<6RZ2']Mԛ5ͺ@[S{,LX 2&"ys;]c0wxY=V`ƛΆoym%+PJ{bnRxeO'2@:M~(e;SDecB-f`T/~{uTVqIc 꽏/aч6K>gmdcx!h}l!fm^G+X;q46=ʌ\ ғ_Vxs 1ܴ)ag( ñf 4E_EQ7E$@`%KZBR :_hW'~E^tST ";iYSZEtDDx5bw~#EMkmP;rI 4888 >b[ZY1KI) xN&z冖? Cݷےl՞|VOd{61 /n!@t҈Y:TG3h fӳ-ug4'*d6` wn9eWHWAw]~Rw/%p1R/3dH'Ɓ_&G*P7|%ZnAsYN eF"bsk⃋,ue V&ˏT0'K W^B O{ _~+:l'u=N<$A"G*sTnB}X|eRm*ϝz{=0 D*kܐh ֭<צvB<3#Z AkvVQr:'Yh4b-f▿ܹka7ٞ͗l=@N^uZ7KB;`@ktV|i~߁՟H!/{mqżY6klHl嫛v;77Ցk :cpdSpsۊSޔnC I "b@GY) vɯP(Rv2 @Vf#& ͕C8L(Or/wV/v@Hm:d<@s!T'y?-ĠamqCG.0R(DT4e:sxHi}&uuHxzڄjM6ɘ|"בvgX̭5+*b6hj0lfR*5qU ΊSKm=)+K.J"'(YҐ#ռnuȠ?(hbz'f13 :znʥDz5ř#PaM(4ܭ(vzkvl":g_d-$:wYP҂T;=$HqZ'ZbM=wR#$iDx\:Mm"fzԄƽ^pEV\p-H&#O(6 5O"^?<O 䄕UduNz 6wi*%|ZQ!`k'Ɣzɕ'Ku;ӤSW`Q.ww+a;?6f`0DZLF)Mx mmO3w'ȧ,Xpď_)c[mrZ QZ0৻>2ԦňO?T+lby۳9n)_MW~WkN̉/NXDZ:mulZ> TU+]}i-f[&6-Ş*%.$! (. #DDR2Qm{՝ԫ/(),V_PK dK[ qcet/student/PK ZM! ! qcet/student/banksGet.php顎dBqdp+dkH/v&[O{t#gY3O4WD>Pu'ڀ[ ;Xz%&Z{cKinƬR`x("j|!P 1”Ql|!HZ6V]9 ť;-]H`6dP+|a(VpN4{Wc~~ V>O,4IvΦzc)ʞ(^hr{1TIv& Jҷލe??P< So@,0 F2Εo/l-ݖٮ[@Cp1KOwt.Z3A_8RA0r%[<;Q|]B汊gj!qʤW;~`m-i;nlE ţ9՝)@f*Hv&֚OJ77VLD5Wa(PqƤR}axNybI6Ք_/x"٦ApWd>P| !Z'3Z/\B1in,_]9ᭈ}ssL%Bqdzc?i.Y\VE3, G 2գ9֍K>Pv&[{Mu&ʚ+Hh6|nPM5 ^8j-ɴV~ƠR=x}⡉fſ0 C(1ޔXoz#=њkJ7֏KFr"YC ńS}kN4Ap^8{R}u.C)XSz1fj/ )^Ҹ]5"j E³w  Bqybi Iّk E3%H vfɿSC}HcvW>e+O4 G.u>ʐW,>i.NZ{M5-iLGu3!_ 2U9 E9g%+DsH%Bq$o[l;mmw>z# Ś+I6._I6–Ѯ|YCTGr%2U:8 ҅)E+5W>g,*)O&KBbiMG7rPX<:,]dBq$`h nlb齎D{sceDT3U?gL*7$Jw+fj/i\M!m= wE {rU2,IFՅ#(ފg?'P 1TR}!wJ:͑o=e/\9RA~ SX=,aYs ekM54^xnyfj_x ⅉ&Lkug *#ʊ'k&Z;@]9M:ғɽ|SqAdt+g_j/2>_L85җfOt E'5ڗ.\gy9M5;Hmr%%[+{_cx)ɨVpP$<Q|Wa@~ t'J+6V>ΐTl?m-ɾ^8SR`wh&k@L05N4fj |QƼRApy"Yz y Mu'1ڔ[/{\#& NIvɬVP`<(ތXe?A0\9R=Q<~lH-Bq$ekoKl7m֭Apt$'KZ{3cUP|HP6TS}!f? ,~ M5+.\h9m 4Q|^xBre"Y: ƅ-ݦٺCqΤT{c`)ΈTfj/IF2՚+J7& OE3U¿ tC 4R}xqIvf Fͅ/9͚ի?H6WO~ wX&+C1ʔW/~ i.ڜ[)^xQIFrҥ)^Gw8& E34OwF!˜Q1Hv&ZN\GyŹ2Ս%>Pg|*8X%7V~`J7>n,M* a(l}|BDre7V>PI6^8YҺݳPKUZrI)qcet/student/error_log.txt=hAav1`a %X:3;?J*Ӽzwv׻j`aXX$B2ADFxw]eh^޼@^𫲶>v~6m߇Yw`yBQHAL`' bD1lR~}ٹgg#xl9Nu4dU&r1q)㚺}A'WFdk6M5\u/ih(WYneK9wQbXh.4A}b\qV~Ug;^>.~Inl.y_4 PK KUZ qcet/student/examLog.phpSJ1bi.KJƷ9Rq{ cGiżS1Aph$.\kyb)L 7K1TFr%#KYzƣ͂ա8he4OWt>Pz#1X{#J*Ɵ c;inY !XR1wf* ahyy Lnw 慊/ چ"Yzci.\]ᑈlvs@#p Gr{;cSiPe+@X0:/M5*ޟh KL7u֧C&[{Bqrek*\|9]E E3/\re)^8KR}v¦ѺsNdwkfj/Y: Ŗ.Y SEc)_Es9IvJ7֊J'6.\T9R= }mƭq$rek?oP,<ɜVTP?|!Uʿ0oCl1Mu'>k,/]9ݏ GrK87RDqdEse+_M5!|j8Lͷ6Nt^xz9݅*k /X:&ٛKwD&ZBDx3bApQcL)R1s/e+J7.\J2ƕ-ɻNS,ʉ&kO 4CtV~C81Ҕ]y"لZ{ FŞ(]޹rꥏ;$[Mug!O*_7HFre(^8x5w!@j/4Iζvf*ڟ( ^xbE3#U Lv&KNtvf? \Pi.PY:]9 MG=򑅬c=юdYzc)^8_R=w=摊g ꅏ#$Jwfjo =‘l}ፈe:S= l ŬS=с`i.ΜTin,P R=|MG&?B1}a(o^8}ҡiG1Es<%[IvfO G;6PKK2Z72t,qcet/student/getAssignedAssetsForStudent.phpWn6} 9q[mbob ̵6ToEJEҼD9sfxfHS?m㣈)#X,}OyAiFB =mUIנVې M%FY>൷U/zvyBtXv╈ȕEaH7eHRPUuUi2Mę 9Sx'JoJFTD]ggeGdiIZ(PZr3Uavn7\nq;os/:w/d}/q?3jAb}}K=%L3X¿xrS4E+kZ5>zسYu0_<[YaR}߇tA ,jS*_E5XS;{K]ѫI||ԾKb{"6wF"/zWm@Hmۗa\3,( .oShxZS:9\ejlSYu=$>b@|xL~# * ֚,'髗?aM$ɔ=PK QZ$''#qcet/student/getAssignmentMarks.phpSJ1bi.KJƷ9Rq{ cGiżS1Aph$.\kyb(L 7K1TFr%#KYzƣ͂ա8he4OWt>Pz#1Z{#J*ƿ c;inY !XR1wf* ahyy Lnw 慊' چ"Yzci.\]ᑈlf{@#p Gr{;cSiPe+@X0:/M5*ޟh KL7u֧C&[{Bqrek.\|9]E E3/\re)^8KR}v¦ѺsNdwkfj/Y: Ŗ.Y SEc)_Es9IvJ7֊J'6.\T9R= }mƭq$rek?oP,<ɜVTP?|!Uʿ0oCl1Mu'>k,/]9ݏ GrK87RDqdEse+_M5!|j8Lͷ6Nt^xz9݅*k /X:&ٛKwD&ZBDx3bApQcL)R1s/e+J7.\J2INDX( T(815ۮ9p9p9,MG?  New Text Document.txtp9,MG?  New Text Document.txtp9p9,MG?  New Text Document.txt,MG?  New Text Document.txt1,MG?  New Text Document.txt,MG?  New Text Document.txt,MG?  New Text Document.txt,MG?  New Text Document.txt,MG?  New Text Document.txtM'C: 1 New Text Document.txt111111JFIF  ""$$6*&&*6>424>LDDL_Z_||  ""$$6*&&*6>424>LDDL_Z_||?"2 OٗYAI5LHdãΔ,}cN^\zrYoS{<_syB>^p˗MZsn@9.MnOnoKsaУQ:\Osjڇ.6suw[45jn7t^N^3κ\[siN~n_\DozLyor[ی=@@J/,VlS,FF N}3&XLttv=gWoSg:̵:umζř5N1vuMN]756s=ld7w =bʫ͞q^u}kמ7l.kȲZ{6J[3iS=@֣٩7LkWs^Ʃ5}%mSƌJ]1[+!teמ56vjY+5qչmu9gWJ2TMGkV9Ni׷.髷iKHvRKN/gUJk##Y7 o }utjkN5Xu6SUx`ZY]{ mRB4lܬ lzyos{wSk;|NCю<ǦG18M@c8#e (2P@ NP@18M@c8#er<:kRu+: @OHŔԁg+l|j| M)7nָ|PbppG8Op4uƜwV7nі447BʹiSVՠ5q+&brBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBW9e@ "I"$"H"$"H"$"H"$"H"$"H"$"H"$"H"$"H"$"H"$"H"$"H"$"H(@<3L3;jyәLc[.q*shNG\3M^0솶_tk5qr\α˿_pho/9xk2 20# 20# B^0 MtC mN_P)h4E:=A膎-ΘvƮ9/ts6FTkȆ,`P$2 PrCf OpL(Bi|s1OXP Fu$) E2J( 0L(B8J.65#KƒGF:[z9fhy@} /T^qp:cmN^ld @Pmh MJrz =.vm~:$ t7?/ZͶMe|%|}ވht9gB?`Mpk# jFے:H9#䎳:H9#䎳:H56c8&!l}nEOXy .F柟sNzP;sˈpo{u{CZeTZB .2/5M&V,+,X@+7[#}MfC|8ڛzo c׺/#3a@"4^>[B97g` wHYL͐6Mhq9ֆu_=r*:K/l>K/l>K/l>K/l>K/l>K/l>K/l>K/l>K/l>K/l>K/l>K/l>K/l>K/l" 3ff'``Y)9?Azw3ƀYͶ`9y.$vgJC !   `       !  "C       RSz  s`3„\Oj       W #a                                             B `         ';  J0C3K       @h'b ?IMkЂ      0B!0Cs (CB                                 }}}}}}}}}}}}}}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<4<<<<<<<<<<<<<5}}}}}}}}}}}}<,}}}}}}}}}}}}<<_}}}}}}}}}}}}|<}}D}}}|K}}}t}}<}o}}}}}}H_}}<}}o|}}<<_}}}}}}}}}}}}|<}}}}}}}}}}}}m<(qqqqqqqqqqquS<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<44M4M4M4M4M4M4M4M4M4M4M4MwO<8}}}}}}}}}}}}|uǟ}u}}}}ւ  /}<Bq}Fei_}}}}@S ( =|Xf;}}՞(}}O<<}l.3}}l:}}~=}<<}}}}}}}}}}}}T<}}}}}}}}}}}}i<8g}}}}}}}}}}}y<< 0 0 0 0 0 0 0 0 0 0 0 3<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4M4M4M4M4M4M4M4M4M4M4M4MO<8}}}}}}}}}}}}|<}}8=yӏ}}}}}}}m<_}}0r6<<}}}}}}}O<}}L-=]w}}}}}}}<}}}}}}}}y}}}TTI}}}}}}}}}}O<}}\1}}}}}}}}}}< }}}}}}}}}}}}|E4K7ƈ}β,,}O<}޹}}}}}=}}<^_}}_q}}yuTO}<}}K}}}}}m}}}TV;6f^r¶d:܉d.Rv\m W)-VSKŮ"ɖ[Ȼ"HI '>魕=7WlO2ZHz蛒G쓞S}|*Whx~A@N g2h3($lWi{5Cdv۞ s{ }|Ά*|GAs{ojPJ0 P+9"K>ȺCv:kV=]$1c'${1Ӿ5cm<~w|e;"Kc[6wyWrmi*vVT[BWBjDD LQ 3A\N8N$ndFLu;Mu.0EQLaj)XEWĶwзkYrRz v?9\`o'uKwmM@vtDȣH:wsձbݞz:lm p<*mitT5<^lfv>:oq̵iQı1d _6$eHન$p"-Vmus[J(#cw82d~ʻ6+XKm$w{u[2Ht6 z7/"?Xj߫0c=xm83 6Gת[OwL +,`4g+8fzݸٝx@_FVW3wZ.;+dVNm;Fa9|D6$Ϸ$Hѳ%Td6b@('`]Y-F'+H >29vKTEP(We|]sO m;+HNU=tQ2  Ln5 8T7n&3-&%+PBԖ6 ¤AmaAS\e1u "@RY')nڎ˔.TP t*kI\7mEmLaIv .Qw_?r+]\JuW(ҹE|.Qw_?r+]\JuW(ҹE|.Qw_?r+]\JuW(ҹE|.Qw_?r+]\JuW(ҹE|.Qw_?r+]\JuW(ҹE|.Qw_?r+]\JuW(ҹE|.Qw_?r+]\JuW(ҹE|.'uDf;LHǀNDPPULYp*;nQDTzmi`>f'El >ѱ7 °|A[KH(5$xE[xH 0@"-q%QAhbyHujE[\q]i*6sVJq$p?Mo?M_5Y,~87@3Y;:>g:<]g>>࿺u~ 0=Z֦5MjnZ֦5MjnZ֦5atr=܈Offǟuz=3,pB/X=TN*}y} dXM㙁8ysvV>&HPגK337K@cjKUe9ƠE%1#`&Ns%΋tGp\napsݕ3 6Z c}]hJw71D4Qjc~,[ XPVZUjUVZUjUVZUjUVZUjUVZUjUVZUjUVZUjU̇G !01AQdq"4@RSa 2BPr#35pbsT`?d52W@'}!,n˞lŻL$E6h7]Tֱ͡#mC01@nK}z'MqG%0(hCc(ow =#P#)V$C h |Ua( bdUMiH@3}ǣΥiv΃ţ_~SdL7fHFE*H!3ùjx`[ @ ͞ifHٚh%w1U $0 GNqϑR%su3%H\M[F_:$ pAHYwMN2;RL~$kDc5w2J ~JUvL@G FFkUU@T*c%ISNZB%ño5oO tZ/69M-\!߿ dg8- A0I\0t2DSŤYqIwF[QꩦyH-!2(1*٭&U +-H ᶚp5΁ !ѬcRǐ1KauhQA6-|%>-8a3=LHę{;=e:a^sw;ʫXӉU8?kebAΨ _™KE_ylU+ đ$),[` \)'`Ti#SI& H5o0l&إ&&^pNjH9N Z{rՌx>0 :5-o!֨9;k X U.R5ˑF 9" WTil\8<\¦6xV[saffvj^sWxjwˌ&3D&D|Ff٘g㋾mV'C@ 2!*:zmrB85|6aR}gߝ{8>9PHQ?5=0jٯUe>ǩh 1=ƶ2F:=N1jfq33~,+u9=ơ+]^,9\$ۘXBV [%oOm>BV ['UP?BX($5m>zZ֟=+Z|iҷJ֟=+Z|iҷJ߶=?+=#yU=DI(,Uä,v@48vI'$դW8ymrNUd#C&'Tƺ2_?Ug`2O0lzV)qW&I@#'}*uq1/0s_߶M?OEA⤚X#k0Mdd&cϨ8N)bG&pb\j#iw&3'D%4P>ZM*S2az6CY~! .&a^5 I kG&H#$Eܶķ^x!`ذ9$ڋ=dіRڌN1ַS31%$F{m;)C4jXZ5Z[5Z[5Z[5Z[5[2EM""F\%e#\%e#\%e#\%e#\%e#\%e#\%e#\%e#\%e#\%e#I"Hc#A稧_ Vf{L'dTϪrRUIkyt5}'3Vw~fwЈNIk*+7@ADiQFI8#ѳWi&8N+zZHwyzA꫻9 LkV:nwiP8g l IM3T &XIˀxOBd9%*dsf4Ep$p#I>Vx+yh1' >,#ʘ،5o.%aJ/I5i*(߶?O@$A$DrII5NI>VHC$XV/MoyK[5/MoyK[5/Mo{Ͱxv`AiQA}o8l69q dG@X'2`u{30'9ɞoAN(c=Ok VPB791*\7WXڟWߥlqܼ殊#&58dЁx6a\|K[&{q)p[7&khEc$ {ggӟw!HOl*Zn3ZmtOtИg;K|&X9N^BE\I IB',Ӛyh&-ylPrc#yIZeRu^ ~u iB6u ggў_oz:fkq4EzIHI"UAд},tq34RQ*AYȥC {}s:z޷@*Ԏ.2c%PNW$dbݖh=XtVm5۹N9FIRU@C0TIr t. X=UVZUjUVZUjUVZUjUVZUjUVZUjUVZUjUVZUj_CN Q!1023Aq "4@BRTar5P`#S$CbcsD%pEU?؈鱳ڶ-"z|\[DV[[KOvǬ|;ssdteP7{0P!Nɤh#4 >a$8'i&C>kJvVܩ$' q%Mlj境_;Xxv%F0:>P:Xxtl1_7z:ӵrhlǑ(pèaw k]8Dmv! xJgzJj=L=߳'% [ÁU4陸 GFҁLKY{aPRbfWa+hwYKMH0kav&1LUU(shMK7Wwh~X⪌l./m}U ^&a EpU9-l2bjx>!_szMTQ6 >=gvըeӪoF$5 ax-صx#[R"vH=DeWHw]S|q'ިc?@b`XԲK%OJ*tt .WرHB 0oi?o(o~DZ)_ L;jUШ. o g֗84q%NJx#k݊}$ KHvkG괜wQ붾Zo2TT~3Qt3`ƴTo5z]^NJWCiv#b;0~8֗84q*JZ3c,BK;J)OkuTcfq8B )0FKўEi&gsNys@;HSUNN?KJZCR)[ uDPIf4<{Nv96캌"A.Vm}Dݒc 4'G.0vz^U2VŭݚO,sHCn8^tu\ -dpi6Xk5s[ĭly8p<I 7bm5惚85Tt>j2BkcϒV6 $ayu惚Z@#I+ǚSz#<4o[v,,3WulAD :t-(@Лkbɭr:l4ֆ܆| 2Ʒsf, k3Mc[=œ[D\Y20SiBB+g>6l4ai]_#7f-pp#{y‡̍ ?27(p7TlW>Y&>[|~uI ڡ =xHJls2oo8P52(3N|$tㅤBa;APMwVNZ=ϚK\U?_u=gy>^dp\ƼYaؙo#&D߿(UCHH*`oeT*~?MU]XTg̛8yΛ{ Zù )}7d8=÷NOyWV;/Y&e'A3JkY|+-uS'S^yUՎK|ɽCIqL鷿ASS3vhTE$>j68~doo8PC?lG^E/EizkE{c{c3D Zޱ+CT$q|GcTK!kY|sFG#^Γ@k \Uh#wLh;HUT8bQpot~}C?M3Nw؈̼x ʪӜ6ܱSjj]ÎdzV!0jr3 !?4ν}0pIeIFo,Tnp4p:lGrXdkDZVy4%<:݃x#/qDa~$]F.-~!($ Ҵ{(67jUѷַnx:iQ4>JUd&᚝̳ `spk*6rmr= x9.quI5nKrzGrⴷZ;ȩ.NP-!JQ;qou6/gp* -7"+D1 ޚ,֏r{H|Jrs7Kwbe4![ʆ}K!SSآq|Sh.=t_j< {R߲?WU5q&ÉZ_Tb] SG(y&[r.8;=oKw2#~]=) e{"ඍ1mf'5# NvφHaLdvQԿT.nTi:rlwico17{ Rig,~̎?/H$r1wn(,,x ާDzVة(f MK`\Ӹ~gpsN&-c3ZfkYֳ5fkZֵk3ZfkYֳ5fkZֵk3ZfkKw3~skF=qTpT:㻙P:c;? Z8XW9j5s\sW9j5s\sW9'fTU/iޘ~c̝=ʐCS0i dTH#p:y2`ڋL9'xu©hxv䩴Up)41Taľۄɇ5{ ࢒)X YZQ-#e.cn$pT0vq y2 n@YSWQ4tGK?_oD=.i<7w%l [/Sjfolnڨq\wQKI? ӫo)O\pvJlRJ1mwֵ'F4ŁJu$@oE~wQFkZ *KUpZLk =p[%i ƴnzNpc+YXX#wD-M񪧾3|_qZ6 E#i~kA nr۩0c6GTVVEH}C>ʫɦ ~EeANt)4QUV ;zzh5o<,.'Yz\ӸxU߹IDly)imMV?#~ h)6`X,bղظNhp PZ֋`I#w7`~4懴*"#mKft9TχZe, 5;xCDlM`r+rv9*G0'%w2Gü֗n6PoO{Z\p(|B}ip!e3cŰ˄Zmش|@-{UDxx4g1sNW{)d*'說qy)珿9FشWulmhm+Jڞ*wqRui:c‘ T Ώ- {O*V(s)\#;O%L앐=F" I[,y5kKyKw2+Ey/:u_}OQZq$1G##q Ӳ,QqrJ,.գXK+ڟ LUd>5ݼ,U꩞{NtcUtQ&(B])hXWy]Y|*`% TI|C݁hNsO7*9[M[P%]U΀GUY |; *b|y&d5ܫPbHq* K/s;TXxfɹ7iUR6HxUNRWKEic* jfw7[[ V¶l+a[ V¶l+a[ Vp1ϥ;qMc,ր=ɬco_\m9wI ph6,i o}[oָY΋clMb.<07V܀ 1 lq8nkoN"i/@ !sg4kZދ@Nk\,ޚ3; 18{ psŅql2q $*sDq$uI\2'\ӸyOMT@ ʮ|wۃG *w3S:N?̪|oҴ&s&:,-) xc&QwzJ;=sOhcoo$6x8{X,bǂ6it옓.it~e&ɼۂ !wtX'd;%,NbvKX'd;%,NbvKX'd;%,NbvKX'd;%,NbvKX'd;%,NbvKX'd;%,NbvKX'd;%,NbvKX'd;%,NbvKX'd;%,NbvKX'd;%,NbvKX'd;%,NbvKX'd;%,NbvK(3,W0qǚw3r4wIxww$NFG,r ܒTNVd.ǃڈHh6 t621e55pi3UdGF uYPL"JbD"lżFk:jqt'xfZUZF:[ySGDCVYXlg̟WjFtxxYujvܫgM=A{vqZ;ȩ>TQ:s4TK?p784N}%XoDR|֞x5Ak\`C{cc@Fr*\:S:z5luߒ|~D]}G?E#doGy?ɦARy,?VwO=.iIݳiJ=LQB #p{ϦHoK?U^B~ <~7sNR%7tٿPĦߨQF"٣O)gv2 ]U551fxl:7gdå%7BcnFQDʧN9gva gNh AE57v3x2DlrPbdm-1jMأ``psNLn n[rۖܶ-mn[rۖܶ-mn[rۂv?p#j-Rc*sՉC3[lvnfZTLbDS.KϚM.64ÞteAmL.tOrT(@}E'Z[r_KmE4Yy8v*#{ ^W$m+L*j?m5hTWzffjZ>i_]Z< +Q43`.㽣:J18v=x#[,nduHSiX= 3u'x{?>?џpju~+zIsɿ,OqGZx2Fg/hp4!PKurL_m-Fh9D4 T|Vw-'-0WA>U[#迫Нeg?<ޓ=.i<)vHI'8#M1jM埧TR1إu%}YA#s IJҔs: `c,襒FT@j#l; ǟbeCb>QjX7nZEunh9q4Z:)Y]ZF w'-ca&VT՗F p|uuhU9FIǂWU|}g Zὖs>~0ganH<Np~j:'{ 7H*XK+uʧ6>6}df7M&&,\g1hGSBqn<(h&3>Y:-Mm=@pc0 Xt3ω<&ۊn26Tfx4g1sNV6v iQJʆaw*X,<;}<(jďCk97qꩻݳ<3uO|#igLQ\op*chU;=.i<".vv KM’G뻖[.x*>7biN%ēǑI hq&7iOyda]dskv,d6MFs|f6(=؁ޤI-i:c|mpRQHގR6gz Fǽφㅤ<WQVX!۲2* ku,o+5†( T~-_R&2;FoEi6v7G#$`s TVTkt\UAdtpi|/ZX0Dzx-'}~aPy #UL^.ǓIy$΋{6i]ܪ d9w-!}5**&bSPcmgJmt5wh\*w8ɭf-$3<9#CkS1ωi#A Y :hvZOyދZZ,\_RR1NqUhO+YoD{4e7U'V_+Ft56*$jRѹުv-Z$bHi q7S%t8V-]zJTE=%6w%l0HصZVSQ#Q`hcooxI59k1cVhI!/|.IHE(oɤOgEܒRMI:-!P0I6vEbcXltH\כاSVx$;8*M hɮwǁmNsp; mN/ziE=5UN*"{aٟ~j)87#r?fo/ǘ+V̖-S2ZdLj3%fKT̖-S2ZdLj3%fKT̖-S2Zdnglі:9 ,?psNnsZ.Ap\DZp#e^rKw3inVy |.nc~mB-\sv:[7?਀4կAc ;W$"c'7T̏Kw2ULq;3M.]GmnK.F9TcOkJdk !4Kw4Sx~foo2 9cEj֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭j֭jiߙyp3d崴KzJ)a D&'ҏ|e,Kv*}'mL؜I;Ri\vjR;U6M#汥6҆$Z@'W- C3&0*zz~@=ݪJTyI\}3KCSK9-lBYYn{̀CIK 2[-y,v -=o Ik ;T`|f";4=Og&: r[KC½.i<ʢ#,2FlBTtšZhJʹŔs- &XETDjiU,F;Θ;+GBhmn5=sO'U;=WS]cQ i>呍c+HWwS B#]F5O5~&R+zl}YÿU?}S_+⤕6p 'oSWUKP)<^Ihi㰪)-,Oy#zT2=x%^s]>>HZi &%DWR"8͸M~6O;U,G3TAi/!Z#"=|i*ǛEGѹm?*KN_Z:˟8ֿ{tҳ_fFYX߽SE-2̂>M T߲?lk"%F!iwS+E3 ]Gt$Cdq+Q}/>W]c*U gM/JšiO U|hK70|+B5¤X? F}_W;M&'.cL,sۃR [SOsUt?ioS S\ K>Wq(i U'G2h<A]iO U|~F|/˱WVSJ9o ӫ֛/ `>Ήlqi֜7-SX-mz^׭mz^׭mz^׭mz^׭mzQU5ϥ;i. nhcU q\Eޖ\Bǥ;1%DQwm mlGp +gǥ;UUoL olUoIs4C uҪ1CʆKڠi71vwf|.ted^4*hu:A&z6T41_lVG-&Ґ(,oSS ڪdo*7#khZDelAs6wH1ɤu|(`DaHIYn!UԚp|N$RM lc]`RUmmQ<Hp־[xRMDq9- mI/r-cH[^H3QLl7*rwHabUQk)pSHcڰM*xÄb߹Ӈ6X0ln]36hj1f+p ͒ ;YR*1 SʌQ:6mGu-ULGwIs4SqBגH0?RI3,ѿ'97'/ nOV*5 'Yz\Ӹxu0qVcMg4shcq4rTGzA}+A'r `7 Ã7|Ful߸ ehuW-ʦMn 7ob|x'M$tOpۏ,WԸ؍i iL.N)в{)Z $x䪧ax=|c ()}}F:-WSxlޓM׸`wx- {H8ԭ2,aTIPؚbB9W7N>,k#H׆|l3ko7r|uXT9jUsn xֻ!{Įy .%kvB;'9Kw b>-U6SCNȸq&jˋ[~oGs4+cz(yKw8ARw-LITITITITITITITITITꨩ ;Z9Kw3./SZ6Ba1Iya1;kY/d~_a,-anK rX[ܖ䰷%,-anK rX[ܖ䰷%,-anK˚p8kfoՍiCF_w" )[n=ʺ|-IOp*ٵ4wou9H7*/sw*yu9͊1&ckU.i SG~Op'54N+0-`,kA$s4KA48~fy+hȺjE&1̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̬.̭Z $rQ{Ь"#>pHVO}AU8$#RǍswuO~{k#l~Uo굱P{:e\qH#m M{Ѧ*Jw0y7ugebJiZ܍qc6q ha}q7TZnq12πw&4r$.y'nP榛|K>0&ۿQS:-j|L`Yo勪g7X Vw7U_?m6*%$ګjchycU%[ݛOtO}v|^ӟ+:-jjj«:(H|#CqCbB[ ^Ygl}(#t;[%sx 跻ͫqO7r| h@ÖtѴؕ%fW܁@~GWBIK,q7͂nQ$_*ц),wg`Ku-LtG4rOdx R:~GS1](i6n5i21w8YLf.֗``ࣚ9ESdbp2Cf/VQt. 4H}o3qsOPgr^.[f|4 lم>-[ۆMol6Q?pz>-QɊǝ^V݊?w0p"3"V756[G$`a6)ˎ=^Ղ)Nl-<#$q`BY^.ƏL`Xku`Xvĵ [#7fXbjxU#ܼW4v5[ZX KM$#T4t2rxvwnpU,lF|l![ֹ?nCMkA.JdlJYvV|lgH|F'h.vtlymP0 ~mM%* q*:0%$3ѽK?* KS- oOr O\ܵ1Xc!qFYmcE gF\];[rYzR5qZ{F3OQNFtB\*r#TGi;TK;? ~"P3:r68=ORVgܤl=Fc]>OӛUKԾHSu-PuJ\8k<#kd'&5so nc۷$IT2%rvl b bedU-y/ܴ;8|u;ʎvӃ)r9%śH>_&GᙱRVDȄr.f]$;QD쫪2?H7Y>Rf# )icحɌ mlav> 1&FpXɭkEF$Oc4k΋@Nch=kEX;ŚsZgB`,?%f,XEEpB8cmܰl-kZf`f,XF,QM6X9 QsI.1-XǏ>6?L7}`cMOc^,o=O! 1`-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡۨ-ڡ8A!÷{Z4\}M len? Uu)ʪ sG6(,z`gziH#kwZ}$CP1| >TZ7gxtPߋJ)"k7&iw #ixwJu XMK+Ώ0ӖI w4Y\~/O],;M wFN;n|-7G^ӴbS97ISѥѥѥ#k3҇.!1AQa@q0 P`p?!"[%8#Éq'1F9Pq࡜VpG=[ߐ~0| u;fi짃EeK݆D)} !5.0 46?P2 d$lBWQT^6wQ<7VJ %c|MBǀeKZi74j:_| iĸ?Quhn`qAS#k# w)Z*"A5W ėxm%۬ǙĄ]dsؿژp'r(93D gZCC (Q[tlڔJKQJjºw.BU2]VkE D] _/@Z 1"$TAn xl!IA.,@Zk0pyM̉K*|Ƀ'Fb>347p5xeѳ[ ouɨbM"e-*vޫ"q&GqMպT !AKaAvk+%biaMaJI7ѣ"7U'1⫾[ f)I`)W gdj!jfVL pL˓ɴDJ'e"&'jbwD0ƂQ[C r]~dS#˴_ PVW_[!vBiywT!l`1T}vᲡ 2;{ i%9EbsXy ]LKp7 D1"dg"d*oM&O=ؔ"g?[\`x(C+0s#6X\xm,I:T$iGV2 j;tC؞ .]ٺJ:e|ƚ4$Ԏrls%Ȓp$5X_hMCHi 1_m9p>ωM̶|v\ᶚ8bTRUhG*) 뼊UEE,p9oalGl(U.&Qlkyȿ[*W$O-|K(NiSAVX4.',Q`irQAP102%EE-'Vr)fnB'wV);T-(-7?"r'"tm Jj;l{*}-2+|JqYvl;D.>um$lu[)`xՄXU]5=JqYv&3ۑm}-4Jq|-]BjYh<9BhRY/-!d2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2 Csd'n?Oֻ+v,g^qzK]Yͥq"*۞bW"(!hoJYq:nWqznU>;FbbXEWjwcudK*#oht,+K7)Bfb/}4#WJgFIUkprWqznwj; \bqT4Ffo{^ڲ9StGg'/|nUrWqznwj;US…S[6ܫ|ܮ,-'IrԳZ/RkK?,%U E"CLYdʉJ';'Nȝ䑹vFʍ3(+^臹woA4Ԣ)"iC &ɬD2nM=H%'B1p0U;(̗ &"i~^Xۨv&^2 '9/ =oeRM#(1uWLtʒq@FQ1 L@4?rGA7m#4$DJ䅃1g 1t.14U4I&ƦII,)?uA#ӋTQQZFzhOXOWJILzĕ8t|I5R(gFJ!)x$+F; U(' 9IIBWS$)ؤӌj/P '%~Ln$,)QU x!)9aJr/SkY-wg^ظp8i=ąꤍ:ſw t?2ԋdvcxǞ<< 9n.lB(;Ot1-{1#ֽ~ߡѸHFۢ4>I˝^rAl3Ozw8_S\Cq4Y.z$׿vRxǧtn"Aiݐje fcr?&M2w][[oZ~FUtCYJk5C-av!Ku|H .SPAiSQR(F~s;^6ʆD''Q9 fXL Qqd_{g"Ô_pr:Թ'“HZBb=`UYJm"#Ɓ-Ǜ #HDcJK ɫUALi3=?Cp 8f~p8S^A;c[6TWDhB 1+,2PMPFZ2$g˟a{P3"J߼YqܤoZ"* U U4|ģVM5(|Ha.\rGd[7vM5%1] orBv:08 -e7WA"31gã8:Cr8I6Vy+աgȑ(Pqn Rs>Fv`;UBoN59S|KLRja*9Ԧy*h Ц245(|#lB 8WuNǖ;ݲ+Gp'M0Qy+K˸%$RPzS\TDC|VE0ZP(R&Mc)4:H 6A]x)ERRHjHE uzB%VXY- t^y3-%H -X9@Z +tQj:8 NTOѲZ$FS{Oc!!!!!!!!!!!!!!!!!!'قz=F!B7ityf8 @;m{|v3᪮' &MIʬ_[-r||YMJg \YJ(oz6lIHMp5KbDL 4b_?IHBzlj`]6"W1$%A;R\(I"_6kE6$~|55HAzmJ5CCD)B *Z,IBkFQeA %z#Ȯ~ь^3YKEKg(}1M _2h:6FjwX<jVJhHJG47-=9:wA$1/Qc4ӚsNi94ӚsNi94ӚsNi94ӚsNi94ӚsNi94ӚsNi94ӚsNi94ӚsNi94ӚsNi94ӚsNi94ӚsNi94ӚsNi9'HbQA @ @ @ @ @ @ @ @ @ @ @ @Y,K%dY,K%dY,K%dY,K%dY,K%dY,K%dY,K%dY,K%dY,K%dY,K%dY,K%dY,K%dI[S/3Ooo؂S;ɈN]Tm|IlHmgf-X76RF3]&S,8bReBĨNl|0*.X՘I{+-6ӹT~HOmQEJY>s"9 ![ %'t}*лNSB?-}%xS9/ 145ۈMzn#}!ٟWgyC#K RvNI-9XMiF6m 3d\$:o$`&+D+JBy!lEBHo ! VҎ0ʳKV5o2wvBgio2 /to+FYVn 'p̻FnB +wdv7A6ޔȒiѶˀR!BKb J~ ]sݱLNokz~;b!!!!!!!!!!!!!!!!!!b,'d;[ RT/uHeHiѹK%CV7;=t8槁[%Wƣ[e"FWtV'V4ͤajmh`laON&B)Tz8h5M?H뇡Ѹ04ٽSF\W)CGa 0/ioHEd߽9;=NI>;vyv;vo~ߡѸJؖܽm8'Ndh`n! Q!ħ6b/Jz~F!jdk]l5fJk_j*Y2J DX&К2B۹KRǤL'Loǧtn3=D2 Ǒa˝*UlK؁\•|t\D*..h*jEjrMzS+bcKbh9 ZBa49f=J.duJUFG1ԛʸJ4_'6hL*W.g1&bӭ6mHQ %cef"DF]NDiY J16snKV#S{2 SkI.2J"['J.ػbdf^o1qvGU6e<D4I|mijD! "̺Q(hjR;S AWaL?FY~M:R(u*6;o+PQu"k}~i݊(o*Tȕ.ao`%z7ٲ#pf=sӑ l7NI7 ğ8lMlD`XYu~ bRކJ{"[5C_bpMN$kvduCۭRTΦ$Vqjx,nF =Xڃ/ڲ-3 XSLҎ"ASQW;CY:ZJZVi1B_=־h?j,{Rzd$gASb)wH96sU-*>r(6M$Iih#&LmD &<,VVϖ?TV3D]dk~WеaEfHz;QJ%55]AETm4PY(G-O\!D`# &#l N? ]y`/Yu?v,rߥQ)eE)#J '\q  ;L,Z>Y2PzFǢT91W5rY#eGд𙠈b[u5h5 k e$ %#ZQЉBXЪ!jE:YIqE%lBiM ) ]BIƘ^R(ɷl:% 2Dˉ! N t6Q+auQ4U j:QM%C,6 H#BVt}|dvSp0mnP0L DJpuK ]td9f8O?M)9ߢN(Z7~}~ڷv־F66ӳ8 FPj A5Pj A5 G$z4ظw;. .ҚSJiM)4ҚSJiM)4ҚSEtoj2HP{*+D,LmѾP3{)(/L򋈅K =sէC}7d쁺3o6Ϯl MQNWϓrNI,JpI;ieαCD6K"%EVi*wݻL.%[8hZsՏfg$&DKG}mo"!#+׀jSfV(xx@gՊ) WJo$;mNM\;;v#DD:ҧY,<^t߂rM_| q3c [QnF@OC+ B,]ƌ}%J$-;#suNnwyB ($KS<yP )6mL<;As͈ICI볾w &mSgm!L@ ؘouA SF+DQDR; ABF̡X|d"[>2* k&=g0Y2zVJYa =jaJMeD5Klۨ\d1:fHbP؞hwGGHJC*3r{0dBlY1!Y؞()I}G6'E T \h> !!(veE5Q' V)6CEK+"FIjD_O!MĨ8Q/DnFU(˖f$Yeɋ c!>vs$uMfO V9OZDa6B@4 v3i7!e.y= f‡Nn?Ub$ⴇh1[SP_g-]v+Q{]U櫉~lSs([ J|1I!%-)[$.7?VR!+ B1Teg&,6h]-6J1I -hCJ PdK$hXmxͩN^U$-e(o#b4b_A˼&I@Ѫ]MJE$ͣ( &TI ҬQA-Ud޽xZ-F$/I/l?rPu(Gj³ćg1OLp6*&+J`vBP;V%m?w ?TS=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=NwSz|;=ʋ]u"=HCRQo0+AXC7<|bMZ^سHB#=g&y؃fسG3aⷔwf*jN,,Ȓb<$ &P.!1QaAq0@ `Pp?&NZ%=./.y:duU&gquHbdD2H%%BX𠔼y$]<#|c^+@ִb;#P&*&L֌z8Z8Wbռ_vO)*cH1"DZÍF kx*OTa8'c_5 :7qgQ>_Ycl2{"oep)0]Q nMfj3,1#$-d6KݘF)侱o{EC`qUTA|s,v,:9H'Msey[ŮpGB/(RJsmdL[0d.+6:4kZc[ajd皵3A$Oeq.;'e,E|wP/I}`XI` ڙ`q*p]:(eV}?^k-hC3 EGf$_J-b@짔#|jb f9U:Ah1ep:2x AYLjru%fRPՂ5a&I=j!:a0͕Âl%,9|3X_RNlu@ʽgǂ e+zD'icvsXj܍!;zvК*d&_i_;aCxZFBUpce\iaOF'p7BwDOCn Zدě mF"Y|g`" 7q%1XG+h$Id!L+_"pb^Zϼjhnh*`vYlz2%={?}WjsZs4>`Bnnb<=}MMGĘ CDx8)ub3n=={T܍X6C`Њ]e(v4Zqf5O|=渣I|Ȕ2|n&cʩK ܁Ogg)nz1lIQ2:-Z@XK6ޢ3\BWX)bƟBQu&'\FCULNs}''3i"PSg NH>#aU}eWD(giŘnd,-Yf Ro?k x;A,f7( l(B7#Kbx6I9ӴS@Xjp!8%fCE`ضfްT,^҅21l %wn!'|J#*#I@ `BX'(L H/hc%@φ$<ɰܶf܃l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͆l3a f6͇ .\r˗.\r˗.\r˗.\r˗.\r˗.\r˗.\r˗.\r˗.\r˗.\r˗.\r˗.\$NpԛV]~Ǔ):3EFN`Bk \eȌ4W QUIMNd|T @XXq(RTc%${2>D + Xb]xdAS p)уcF9МoSZ h 3MOׅ33 ~H(PY$nh|߰u?e3&d>qA6ۭ qC  y/p3&WWOp3&WWOp3&WWOp3&WWǨ1n%43eU,3`Mؠ\(k@[sd%r2jj# UZ0_ L\Aě0UFA$fGiaS$u,apbʜ (&$\7U.JZC< ̙]_DF^r c (jd"AU50UN ʭtD*& `f}f@@)E(Fve(8vF,i۸Yt=it#B7ےb҈@bRࡰC7v(<^xM5T 9E0?&d&d&dɍ{Cj:{HF2ԆP&'q dR9^8"r8?Fw$Iܓ'rN;w$Iܓ'rN;w$Iܓ'rN;w$Iܓ'rN;w$Iܓ'rN;w$Iܓ'rN;w$Iܓ'rN;w$Iܓ'rN;w$Iܓ'rN;w$Iܓ'rN;w$Iܓ'rN;w$Iܓ%7xNDQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ+uj,[bbEgBN:_Cagy ͥ[NPv@Z֥N")̝1SZ_1Y(0WBPK˞%+ aM8kh &/@k V'Q;rtxYI/+*o6"ָ33>I019mfG8iÜd`L V^B K+-HXPJI :'G6TecqVgwp[,C3&Qw6# loڐr|^0GQi݊]LRˈOq"W7"G=0It].cN(4?𳼒*j>'G䲘bi<҄X`lU?- bwwwwwwwwwwwwwwwwww+`vRr^hܗXw#a1ʰbb@6njg h}u5ldm] s+$CjvFp>(tA`N6b*cHhI7⦰h9:<,̣Zb'㶗 J E6HA{mwx6E ) C Q7 ,TpU_ B}(UuHڧ]5Шgoa'GtS& L\>POeywJ1סœ3hkPЏqpXZq"jPE] >_@~"y+UOD 'f<!2.a C,Df{..KQC5Z`ܙ@ {OaId_]Z6[ ;:}2 QvTH/7l`O ? >_TVC M$ܹYP`~Y@mP<P:i1u I]М D>Oxw䗜FO:t&RRݗ<0ħ'SFn=~;k(x] d_ .z G}]p!=h`GD:?Gg~N^h:1,$ q>_`kn21:x h0zӈƺY[7X y6=kfrV0OԄT00{~a )/1?//xw|ٕ2Ƭ |IB㳢!>+%c2ؔ⹿ BH7 ?AkK x;ޘIPq>22/1@@ZcKzxa+VZ 3M m @`OX^a,*XE60il+xl27`Zo>ac˺B?gy/% Hڔ *@@A3ƸfHnɌx.&ӌ摍UcX@'( J~N++[%cxzx_7w'8P^pՀ=8 yqS}lI毈P#/Z>c 9@z&L`MX*U9:<,%?:lqڰ e_@A 1h__\v-!}`K-,`+#YTbJBZxj(OĿGԖ1V&<ۑ9֗d"DIaAOjQi2nRɜGd\n֐ކΣV၉;;;;+txYHLm-{ i)ŧr'2fʗN\-3D @4Sz;3CD`4ak 8 ,bxuN\1PƗ4,0YdB[Jgupdl(3@2 4 ۊ͋nN @Pg~g~gy,7IFm5 t =J O𳼗jw"⚥V 5 ݹJOwMQsT zp@jvAqc\?SIXw ࠲c,P'2hCZ !M~RΘxV),e |X0ɀ/fNpdJ .Q~ݛNPڮ1GlM6&؛blM6&؛blM6&؛blM6&؛blM6&؛blM6&؛blM6&؛blM6&؛blM6&؛blM6&؛blM6&؛blM6&؛b/옴kD/dXCeE:^M>1c:xQ FhlzY{ElSg1u[( S6msPYb)k|wBcPkU0%"S`מJVJ5&ehy;Ryx<FzG cNЈJFH.\ rEЊ Z5ӻ P _FuPDz1A'PY)b!RbڴrAOIpi#,xR*An.6Qe{m஝ݶcNMiF]+ 52<S%gee56EkeF;5F$#!jpkwL fߠk4HENփS@JecU'G?'G?'GH͇.;,쳲;,쳲;,쳲;,쳲;,yy:<,$&ti*Ŵ3. GVR9xwlӕ|8 U@Ky2&ȷaKuZ` K9VV]\2 ?ڒ^G0f"@ZPy -ǩLp߰wFv1WEn9y{rtxYߘ 41yi|r %5b;GB5վԃ!0SwY:aQK_3:MqFgO@<N ;rPՌduxޥf?HgX*!n D]! \m cղ& S:`/ëK>lgĈ`Z )f:btR DlYcjm XE*~}2-F?o!3| -B̽#>_LP)v6H΅X<kXG&smzfTYb_!eƖߋ9:<,ʕ[1a7 hpa>_O`#V|^ l}+°w&<GO1WX'@s#1e?Gg~AyMF˯5źPW9=!C6$ idZu?$4PUԡgp\09M9:<,&Zbc7 A63p5R_@Z:NgePAQޔQ+]@&O>=UnQH"Ax?0,qp`J>(_.Q`#c ՉZe<[UsVzvk C3<WtcX8h\Ł/\*DKxJ 5]+V7 xX*sD &S/5R/fʿ )m/2HZ !݈$70Hs\4Ք$pQBW2%>W*)2`K79EDa$HaΒ%^,X! cB 4'o|p45G39}~ċiXŴS*)a#=1pXH Jjue,?Je+C9ۧj^u~kXG Í$CPo8͗/'G䆠uDJVe;nk 1Tn/LS8n6SDzc;ns&yk>`dq4qO)䀮0@DHGNkPi"2LX;VnB(Q# d(+hݞan.`ӷxڋD%G8zB!B!8= w 3P;B:t_  C8pC2IgIJV ~]Sp,͑IUW5]JqioPt//xwGrLZ@B%Xc? e)-ňQ=#Е~` 3XҨ60[dĐ=P#A:H[E؈͡e8<[*2U͋Q 5Ro<d(u82T08ViYqdUa%h=p`^`k {B:W+<N ;`b,̋f`PN@}f]Az}nc:"S2 `ؒը$QUrGNEik(sAI2 1n0upE\p(iPخp4WEÁ{>_׀VB0NX!% =r|`s`Ȣ9fڠU1,( 2eVKzBZ8WbB!yT VO|"92Q#h1#lQҡ8"/w4r5wNV- 3C.6 '# vmY|!2Faea @ua:@}nS }T$rh$+uځJ>Z5%}c1 Ba63< XGpSV3OʜC~1ؐN2~WVefq6>LH˫~OvYRAOVԿ|"@ko8Ku5Wpn.f5 j>RÙK~DKW@ؙKU6Ї䷁5T(kƦHXORhigeO!H**٘nis8ZY)G)7`FkCuӂJfxy170O"XS|?eJwr!d!%T R= kb3#Qiڤl28^25CȐj qHjִt( |By9zoQ2H`!<2FU_OX*D!XW: Շ]I^;bСdz?Gg~fqE>([tba4 =c;e>>HF㟗t:r9:<,&5`"#T̓ F$"t_.0\$|d!`>'GˠG "F^{jJ; 3; 3; 3; 3; /O𳼙:T_r6 .#]]iN ;`^8B*[@fS}Dw_!y:<,y捁7рLRS̓S!0:cb gMXkr<<+FxBfT$^dȷhrY+71QYޓ'zN;wIޓ'zN;wIޓ'zN;wIޓ'zN;wIޓ'zN;wIޓ'zN;wIޓ'zN;wIޓ'zN;wIޓ'zN;wIޓ'zN;wIޓ'zN;wIޓ'zN;wEmWzJ%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ(J%DQ"E?aXk~',h?3822ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsnm͹6ۛsn.e)&3By]$Z1u3Y(8bx5UOOؐ31_g˨ &QM@ihcE G>;soLs} /uQu3 $K@^.B' rmq`Rb(4\O,7`A"#bL/yZ~aɿSHXF"e[%FBfL|~|o:Oe.ո>0#ceWH#4X <@0O1oy"]g[!ږu2n&#Ї)Շ A%hW4MR8}>.*FDz6?4C<$,O/MECG1&jq :ѫ،a}_-*>p$g,Nk}~[/WϿ{?}O?L_9/&OX"(?1Plyvx yoy324gA$!f<gggc-@܅щ#MBl 0.gm3Lš#tF1^+x,YmP6?Wϻ*;TA9Nd 7wT^I%f.mr3 2HPD̿dCn.Wk_ AB>r&GT+[H;bum*(}љHuCRrU)6FZBY)-H ĩ,.6)i:vQͨU  bMuA!kU9T `/z> 9zT n.>@p]cՌy\NVi}w\y~)Дh'-oaĆ.aE$ X6V)!tii+6>fsEzŰ4 5 [qyC @K6BEAdPqv ob3|;C$ ĖIφ `-asP<,ЁWK̈́&#΄7EK%XXkD["3b4&#ZʜA=9[O6j1~P:q W0f<#Dk_;aCJl6NM4t3|[+@j" Q3Ębаr~._tKT3菒F>ip fHє'SqhxĂuVW (-}2|pP#Y "{>jє oD8~i~,j (c}H`X E X$$_gćQ26OϊA/XL{GJY 1HD&ꁵwpQwAGXª1 S~S!Υg~kꈚhƞTɊJHaYxcD]V\,gV(p+]BO}n*el>y9vG mW\XflrGfQ?*5ybc͌e-n2j+[im;++Sp͂GC)R08ƴr[/U:k8HXUUD]V4YQv y|j G5Z72!CXD/[ԌG!`jB%bm _f-B1)m {40 pR~]A\=i\ҥJ/@)97pE8 AYgBN.TS \ZK*Qpt}:Q@@+ H2fD ]FdfԂ*чek5֠ 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0`=/Q2ZL|?9@<̂ݶN.FU' :-Bt;&vL @Vy50&ˏYZyB&G#Tz,/iWU2>cY>є%.bu,js1+`#d<ɦ+aq W 09gJ~J/Y?2I2e,cYqsuPCJFIF  ""$$6*&&*6>424>LDDL_Z_||  ""$$6*&&*6>424>LDDL_Z_||?"2 >fZh/V 2aJkӗz\׋{yy}glԷ̳J7g:q=g"OמYrV.k9÷ r[Lu#5=8=$nzKpu VӀ=^p~E~՘lcwߡUsfoyݳj9~I1Sy]{~u}y7I7=z<ï7]];\y;qudk$յYoԃY+Xβ5+ϝdk 4T752z`;OigkYn;Wמ.7&kX:W6e}NRN].TfY6 ۸SlIyS[mf;ޤ1,pmN͛G&i\MT[w3vZo?}ROeK`7;Vz;6*X+K m,[6LVo.fk^xn=ݏ5$J\[h:sĻΦ]mU6;ܧhrZּM]Ź-99r}L\7WSEJ'"e(*K5k=+V73ppݏ*[͊3\9[k\^9Ӽ[bOev#xH9\c;Um֎SZ͍ c87 @c87 :&H0)]Lɮ 7cIQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQP  1 ɩk$2F2R"V2 g@5 5uA%ˎJ󾏃[:Vo-^v;=go}=wr&?yݻ>z͝PΡ@pnPpnPpnPpnPCKCf>a֧Naĺ^ru;TGj sө]#{\>)\KW ֭Ϝkt˧v)(( Hi iHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSvX`eX`eX`eX`eX`eX`eX`eX`eX`eX`eX`eX`eX gP \@@5 g@5qq]5cյjzI8n8=2d}y+Ƕ\]\iFm~Eyn唙γI_GSYͧޥC@ €j<נi9\Y/OG<7P;']Rƻ{oC'$izbFݾwB-X+Yt@s)x tȴ#φ=#γ2_6I͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%a͇_6I|}%` @ gVL4ɭ>Ymw=f [Gy仇G@{,z@en{πu9#̮p=hzWNX !   `          "C       _z  s`3„\Oj       $l#a                                             B `         ';  J0C3K       @h'b ?IMkЂ      0B!0Cs (CB                                 }}}}}}}}}}}}}}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4M4M4M4M4M4M4M4M4M4M4M4M7Oq}|-dj{+p+lrx"wFbxd9"vGR8v5V#>ƥ-qRI7>VrFgQUϩ4?q.vtA<ΑW<1ۡX'4wIM4:0NcIrةfG!䑎mkӭnaM4: omaiuIzAoXՍ0rG(.ٗ0ufAkH4KP_C,jy8N*kL--# w5 |S^vbY!`5Ж m/պf4QGFMl˛8ZIg'$83W|$q3N}a)&; Jqv.5B/Owִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִ}kOwִs\1k\'Z>b5Or|Ůk-s\1k\'Z>b5Or|Ůk-s\1k\'Z>b5Or|Ůk-s\1k\'Z>b5Or|Ůk-s\1k\'Z>b5Or|Ůk-s\1k\'ZgH#rZkOA|̱&\A##ȬNqFoa1lѺn\ı7EWtWyXDlp5,gh"pFNzzqȝ*'4%ѕNs^C.YULܟk!fq(ݨ#Nޣ,]Ld8\9bȤG id"y9bNGsnG('GBZO#zOX\=DO5Usic?J( Rٺl3*8ne| , H-d^pcH[NlHu+ѥYcϑM pA4-'ʾKgy`h[̂]%H ԖMXm@u}]5%8סuS4u(b *j\p%1*A$ J:zX ₱qDbBUf8U& ui8 HTf*O416ʶCPaV[3h2ћtD}]&w-0(HsPs]#ɡa-վFFNvIen%ގ.DžUߧMs\m Ҽ )6,"IDj$$3jg4&.#\ ^_эkp^Qr7UqE3$rc PB!B涚,l3$XvCꮌ{`VXg\ўYL]`8Y^4+!YwnﭶPB4RlԮqe&THɇE6+VѹH͜Q8f [Fa`Z"Ku3KI4IѸ.jm,1ߚ΀m,SGϱJ 1YM|TL[SVklnV>^3)V8 x'i:['u<KG 1ߐ*(3aభmq6XM5:7Plc,VlVؖ&ч$iqii}u/״^_]{Ki}u/״^_]{Ki}u/״^_]{Ki}u/״^_]{Ki}u/״^_]{Ki}u/״TׯNw׭CJo42G*u}A}z᥺e4P3 ѹIɗ>321TpHu8@$ |piY`<&>SX露ՙ_rGWPr 5ؑƍ& AP}l\`&;yn5dwԴH?hÁcRZ'r[I1#Q Xv(L[y+rJ85 q畦R.!xDhE\(Ӆu_FH=RUP*di`ԐfuyLC#E`p5q.rG*R@&Il @p`YIFw-.p3 [[$.Q>gɮ3V65zDfvkvL*~uOa:]2I%sͻMoA+КeZ]eNWD<:Gd߈]YFj g2`x%h KƢ}ok4k<}cZAA>2 r{8^zc5pOs-HT.R#cqj|PSjְ̜2S"xeZ s(Q#ZlXiiNOimvyVe ^V6"՟A5bAY1?z VT)IlKQg!~!Fԧ.s;8oTT27m)&Rq3$I5223"D%4'h=ldk?> 4իkhϠfhy>~:Aд&Fq :en&M<6e桻J3(\NS[kug~i$diXnS]̡d{QRgxjYeh_^ N12ч!/@;55 efkn>O}83PJF\=+N3P¥c{w;cğ-r3|4p&X x~i/dv{,UT5@qQE ~az,Q/NO=D3MX.͉j9N8_05h5X4NJҤ{(]``6wWm2A=ն/V$`NasY? Cr,b55O=.G/w=HyAɇS[I(bH(CmpL2\'4,BWq5bۛoq@#1 P2c:ucqr 8921BA..0LH79f?aWwyrre;f0N23{wwWNHYIRXQ^Ab`0T7wc$U$ZUjUVZUjUVZUjUVZUjUVZUjUVZUjUVZUjUV2H  !1Ad"%0QRSacq 2#3BP4@$5`prsTb?h 2kg?)Q1qHeDe6G2$,p[E,jX济m mt1jR)oWD鷷E\g W h4!(D /aWQGH @t\lD0\ 1AFCfVu6ٞXgGJ": )@q䱳d1WsD qV5Ƣ1%i?%Sks9`UuUd b RC4%)\;𡎞Te96KjWFrc#9x⣸,dA0I\0]Y#|p O7I#-ͨ*iR c crLrG dd_]5ʳ!%xݩppy<6Nƹ2 5(a>{0g'-JYG9?۸Y4ӎ[p)#g$bLtggYNW~ByUc+pEa QH9S)qnW[%<$w q$jI zjK(6 IW0ZE4PS)^Jfͼ@'lR44sRFpjjw<5C_%6캲MrXPU'ʹMGeD"ѓ앁-ķ2ʑBs~tDWUlo,A0(_]&lbEָfvfcNID 6)I=5/4i۶?ngV瞥bIXe#0eb"3p椚ThC{EKyu2RGZ΄,mo5H YH Mq4*TifmR9cnM 3g͚Y%rcQ^\ºc'E XHn{5zsƷYx==g[yEP$II)y>D%DPv@tBUTv϶-e-.(F[:9C/Ҽ", M&G{yM2 'BH/9m{ -񭳠RR ַF]a>Uo}(p=Gл@c9甀eK1 Q $s 2`+N0A ?ƞdfF}@3!Z%sU$ Z83fU`?K$r΃櫙NPu9 5v (rYeX *nP$zlas}0 K!fCpMUcSjDmVkyH%d(#RI$|1"P3V(H6 ޒ2VW cyY".z[V@([vE@c685ݼQ$[f d {TfVN.`4.`1mDG]LjGY]NA|M"F(9ij;ͱ cj & %6O~TRF?^j(I݀X0W]K(j!pJj+K6+p<պ^1_wmF7)ՅU愊;VX5,`YtaSOðǰUP Om8 ~VU]~ݱ~Bp*#Uտ$ps!8A%RFĨB*As+:4Ùissώ? kM5 6m  4k"~R%1/1U )aZ<:1M5:hgj9.my#bi C&\`~ .m`NȮB'k0 #֜PǬ=O<Ռѥ|? S;zPunlW!~o5Ed `X5L!MNtmy+k/F 3)VtAasY9gf.ME:ĪPٚ2>PSIuswX1]@g#'5ĒJ! l8\Zs(lY,:S4#ʾ6d]z?ecͱ>T&̮?h9ՄfԞ-0FD zes^?[6]UR*IHܴsWNrd10YVdK%[姥::[iXW-!(pUy9L-nS edvpxkUTOspz h&/ݶ܃?qkK7u%<5nI>`\'Huf4˪x *O<޴LlR%3}ϗFy_>lijLv[jsY;R~1tRASR1ғF.hx!4ñ95EA.Lxۊ}D1ŏkTϚHX۰Թ KlKVbփ~);#"́{wZXO*n?5Ťvvr7y1PV6Vjwu9:؎qA縹:B*f]}Gk&;I o~u9maުw+]fqkvqQX i(xCp5 @:W__qnOTM\=\cmtnEncd`P{]ʟ~38(݉͏kB@Vt|VQTd͏%Fmh(Hø5ۏ%쳣qaBF`VQG<4m[ev҆,,8>6/*S[N!u;HUG!rCf8F[b!L#bd"r щ7bo!ܩG'AʟqR`܄,R7-7/)-b=R~( JH[@nQ]Ա.N3v $x9Lv&׽vf3nؚp%aY R&Gɣ'hLn#k\W>Ϭ-ESۈYDWy"Tt?Uv+zMLx~Q#,"ߐT#䗠U?D%_>(~E77ұ2PQT>L'T7'ToO$Mʟ~)hڭQ;`ĝ}ʞJE7>w$l<]p9j(:ɄG-E6Jx**9絽i/w(?O~ah ]co3Îވ&JqYnٶ*a?FH 6 ٟ'2LH=M n p͵coR];qTg-&S<8&GsvߔB~GB҄ ,-#k84l05jV%5noZ, k8ܞbɭ".,b|aiдG!)Z-+20sի(ـG?_vvvv Ӽ7.wd;BN?pc> GO{/삥eG\'ic~d{=I6W=O$QumXߟrc4*8N19}'\ASUGPn~3xn𴷗gȨv7r4zX86ow4ݱlfdªjߴ_k栨vors_k#oNȗUU.`6c.q<c }"T G<duT&lkam,rHr ?$ϔ*=oΫ_=9~ HykܠՀKDn:*Gк $ksM촯g̴O寭xUK $(ڴEѱ;Ul8,$<ͽA 0@.v12ozv :9lL>4CǒzX W1_9Cp zhbr(n )agL]@9SG<˜,8%buu4bX֩N\ZoKA9Is oSG!?EBN8(( }ꦙ q"ǩSS$YtlRH痻j&].&Ar~!AC &iTcsZ&]}wjFSI=3p!brm-ϥ❻?❻?❻?❻?❻?❻?❻–=,dv\цf ZiLǿbmp.$k[Lxkҋ`;;*K x%4@x10EQֽ نQV'}slܒe?.T,ζ> +*EUST-ٻTn;WThLo/ngAY؛6pSVTP)Z.ޓu]}#٬|n6"BDo#R˥ckhO4u@k-MpsC7#O-M[]{Fj4>wPRCx{ ϕ #55U5N;ԙ1MძjxHM+!yw f{t繍Ii3I${N,N ,o#'V ޴lA {RǢ(r'gAO+O&wU ٩$b2ZJHdznfGP%j H6 z3TN@'meNK\)q{*+;cvL;ц:8]-7hjH^ )II90C+k (I<gSTAitKyn_ c/Z/ u#!iݥ*#oKk6It\MX|TM,6T2K,z6\]+9m D~ѧl5 x/ZOgUc}{casQFQ,4rRޞдƬ#{ŔMSxpѲyGrX}ʚf߼H() Yxzk:@ <3fF,p}Tu8-nG4௲ d* kiz֨oXņU06'F@<[" 7TYITI M &Ѽl*JFA$@^M5.mˏwh▢981e !TRI>Wl1gK(qW#>yqwiBe,Ym$o%M;ja18c[YTSlchFs%b7R,{nn͗}(,FS!1Zl`%;J}#UE&[O gl Bdso}K'$o%]+jsCD4 OB ~,]s7td$%p\oz^)ۿ3^)ۿ3^)ۿ3^)ۼNdxcn/V/z^)ۼ6VMI+ɕT; %iXf78TII0٩&;cxZ.@ܫf҂&^I(v:Jp$rm!v;/RILXqTIL0_|@Q9*$m  yq/*hT#켑kqPOKc'S}1#_{qZJSb`cٷf%FcgLƨF| c3=,[i]LǷ3 }ɕRM-[1$YMQCD;m6-21>^yڥѴztz]kEZm j]Z LHzX*0f6N]7_ /%?]| ``7wTCd=ÊiFނ<շnփHٳr_RAƐ &FIBiPSN] O NV7],n/ [=-sQi-~ IVgGfQ٘ ;EŎLm ]i$̺ȥ kj4~dq{}uR|h_11T86Zj`Øb˦EG㴒/xok}Ku!U5T xaa%C>%Q:BHۻe֕ad8q5 b4noe NqBSxL7eVYՠ/{cGEK2Ǒ>`mZրր,-#*Zx|AH"n1IIM+.⤂p`641L26~:F:I޾ˠNf4QR|(&cCGIIM+ ]_gbŐ@"آ8[6XYlυxnxnxnxnb޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳b޳bބozW \x^v˴Y wx>v &ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽ&ͽE+`xnxnxnvy>Hة3x58a`*}z``QhU&OQkGSK&h=ޡLG&֛+\4ux^vj Րa;nq9VN{<-G3ۆK_эA 1lઢɿ~m(%Iqs%<i> %lrhypiڦcI,&^ʎG>#},q3;^2\]Wyvzy%ʧTl nZy)H =]ma!Sg_.dh+O~mS1AR,s99.,lm}~❻ځz! Zq+,Xv'AF~f>I]YRP4mS-KCv> ]rTj~EFm 23*.ߔ* LI@U hsIMt/U mz.(E]G 6{Ԣ+En(6 H Ҽm"@psÚM[J2Lm'xnut7喞978ZoT6[\8)i+$>(.SSR.NF1\MNmrv"YP؁S&B".,d$֢6"y$LY (ANfMo$6Qb8#ph(.䰵 ❻?❻?❻?ngaԀd-ܱp&Xܚx (, (, (, (, (, (, (, (, (, (, (, (, (, (, (, (, (, (, (, (, (, (, (, (,G8N;wK;wK;w^pEDۜ(mQJ[gt7a{BkydH|={LЃFASxZ[˳Z2w^WEy&6Hr\q^ѽÒ\qA;Ew-/ыV R>A<ǒiG&tM aO4x}:Z:/>@؋ueM#pUjijװ m/ĘZJY#`6Z-ό9ϱ=J)$Ng}/C J;7 (筐h&s\6uuAI$9 O7s\ș#۬%]O)~ Jy>NOm<-v!lPNZ*Δ$O.G/wRŭT#K;w>EMecw:XXZ+OVQ-Bv{fRTQT7v-9~JvZ2{7SeS#IxoWwδ*!?Z_ĭ+K[="e*Hj%ŕ.;HNLEࣕ#s-?<.UUKѾzm;?w\/K/hϐ{?ܴHJ2PTIY){=i 'A(Lm7벜jnل@ǥ❻qJ[7*6F4`lRr]3*38oH&M_ r]Z_&dۼURJ'~EX*8޽VR  }-mPi#hVc0wRѬ{!psHu# cqFC>PA0i1>iH{bvD+6=VL _k#OYK% Hsl@Y)K\q;Z:Y=αˤ5u(El&XҞ'ӷ4m#j}5U,!9n{<"#Wo.cC[TWf =|_Df糥2m!rT3K&97S~gS~gS~gS~gS~gS~gSxOt1* jDOm){[k VY>]Zlg 9#Zul.qr2ViS1(t c̸Wtv *Y^Gkig6PO z?k&6`O 5k$J# >@ 䚢5AWM? Na&6*5X;gz 0Hk[} _#GRVS-{w#5AOl/862KY{ܩ+YSa-{zM*'&s'7qxTy  XBᵪvKpNҒFFu#*SJC6⠘ :FPR*jiqዝZfYK2yg|`I,o{Җ;l:'Fcz%KTb%;ɤah2;~ TSme`5LZRs& K@l5pܣv8#y)Z(Iw0yZZZ״X{* q-j$`Ň{dkK;t#YQNn;¨##Ṇ|n9l; ~&G2KyT͝,oiU:E [{Ic{cDb8bX J28r\C.J,E *i(ܓ&y)cmM}\- JB|pN:CJlZz`žyJΏR_Ѷ߂ HQq2QT~,/QGE`$NIW84 c5ío?Do_AFyZkOB/&YC$Q cqSRTs,KyvOWo>Ț1V_Zg$ꩼ/~7+FHIn.t}]A@-V9nU0=@ M{ͽAUJUEԬopU]#hnUB54\h%}7G{)L4o}W2 _IC h?6x_Xjj< $ym,β,ƎSxtH9ax[|mԥc)ۆiy&fSZv RbnKWS,7yLxC/V79㊒M.e` :sUF$b ҂?7ߧ>;Aһ:+Tqd]OO]!}gnV%h>5?Z),+❻Ž_$ֵɪ#`syZ W>vI>zHUډ#n54rӘw6"7-ިh`b{T3J M;dTJ֛gZy)K-}ʐ]BѴSkܣIY\a ec;HݐHGՋQQ:>Y_W?F*G=jkՁWQ+6Mad1ִ}<7CW$9d;nhUֹe83"p*|]nRحPN.?ϸ/ߙ/ߙ/ߙ/ߙ/7~n Z5kpjկ_V7~n Z5kpjկ_V7~n Z5kpjկ_V7~n Z5kpjկ_V7~n Z5kpjկ_V7~n Z5kpjկ_V7~n Z5kpjկ_V7~n Z5kpjկ_V7~n Z5kpjկ_V7~n Z5kpjկ_V7~n Z5kpjկ_V7*" K;wK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5jZV/ըK5AK$n$-^)ۿ3^)ۿ3^)ۿ}D,v;jt"v==Ausw&O̓lb;O"Td}'Y2F?o^)ۿ'AٶT8ޫ]MV.TusU鵁5T|[k*yn6O٭n*${U@{[ e;qE+df Z1Yġl TYRN͊9 :mM*jE+̲PPM܏^FlڙhY]zp/*V_k4)ږ9e,eOؤqn❻ګ[71ֻa?AKOYQ:LS6R ૺ*v4D̓r)ͩ08TjZGWQkl:#iTjBr_d!cWyf ]E ϽjuˍQ}V©Zp䞞A.djZ36mܩgVɆ<=eRǂ!DJC݀tZ4?+S~;4o5`\m|&8ud0ZǸ2%E6|cfeSNㅸQ,JX9ZN7od6ګai;Ԁ[nIkQ{⥮sNuW3Hi;H&$g%{HA48 2\6*wfGcw7_eNe,I#[1rO47w!Ijn<6(S2OZA'+Ln4p❻?❻?❻?❹ ߙK6~e&ɣŸ ?ˀB۫8n+,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? ,O? PglPG?_vvvv I v)4͂}horc#Cn=TPa})+۸NictxF¨ӱ7>&2:NܵʗH\ ;$rҎhYxugrUZHFH<5ST2vbUU껸/m H6cNiYIuANkp֑.UUlv/fŕ-[*z7YP16n}S86mڪO{/fߖ,jP6l#xZ_c/mI  HIN+DZV[ާ.H6&nk0_P>?ܕSTJEYڤ\">b.-wb,^奘-*9~p>{&U)xX)#B8F\^{>^)ۼ-%N ͥVVL²cZʚ.~Vdpf*fUgao@5I- ee<\ښg ;ԛi.]c ݣ?xnѴ7oGob$G+p {r(n6hc^Z> Xc{nʧ(&clE$Uﳂ~pnaAE iy%ܣѴ76øz8$xG~-Kn/_eSqzkCZSPSV Z>7b']7CA /n+aV{nʧ byRO]D cqb?JJ,Yme4V|lnHݛG sN&6^؇!p͖q{_j{EhS+ZXkOeP׉a5U/tTP33ıcSxz;"I:ةts'MR\nOV/.RT쩤(ޙ }(PRMlxF\`biGO~JMj &mU;1A%%A͏ #*. -[H":潧1xT1G6iPQRSXGp ;J4 9ꊚb6XꝐkoY=G-#q;E1sήI"[c`uN`Z.;Ōg"ʞ 7%`#q]_TZ8/s#88=$tܪ%eMka1툪vsqkqLѴRx%T`ܰ-]欨mvT2Cqcߥ)&=F ;=ot⬣72԰9M褣c꣟ޮI"Kc`uDw-&JS{{"Ōz:GnaoN:CID( ߽h䤊k@?sNݥimʪG6gxiK&<􋊠0>UeJ'%}T7rlHˇ?pc+Ky?h0֌#ט*wv ] 9Czm""77h߅\.wI$dL/y _.|"Mߒ{p۽iFacS/o2|hhb}%Iw΋/)=i;6_{u.GHK}ZOZNm6<K;wK;wK;wK;wDe1c/z^)ۼ"l.Q.+Ot?NF3G_G+`O# ]ۦhsH#5CWO?-D1N4M~;n(sw])Q1HTÇ1ḷrTKzSк!<>; W%$avJsK4 vK4PǘYU&f>l?؉\4 v.N LQqd" TyqǼ^v J͕H:O%#>\6Z:|H6dG6<\^JRC`kwgMѪ9s`l25!֨iE;_\Lq}*CU<7&`Ee&|lpw;en'7ʖW{2Z#@$*3_捄)`l9۹4OQy???J䯆#ntsU:1=a Z,PGnG169i\HzD> lZ% ?m1B1×BSxU,ImھšB5Jmjt 1+'c{lV67r״uD@͂Z:XT6hf:rBq OԴ/JO #*h5WaEE\43H䬈M,cynC e;b Nف2<5}E۱i~$^ r4%-,K4tBJ8iH`ko Y֢> 0Z**cп_/|&\50^cֲc]DXxXnؚrhnaa?g0d1ЍmVdLX'.tL}0n+yia`-ItzI!`Z8&ባX,րO 6 U,_#k06X.J5qz)1vCz6%6Vxسcރw8kvZ?lϨ-bgO3 Df?z6ʹmE$F۔-CԛKM T©w޵aSOm $7}Kn$A (\] n=my'9i~12π|Z ]੉1 Iە(sSM?vGJK.np#ܺN(N4s-7C6OHovw&Q }l?ʵ+|~*ȳս6q>KATTTbw >?rҭkgeť|ٟ8m>ۻj5 8ʶ>U~וqFlT2JIkۻV;poM 3Xby*\ݴZ;#pϑi_6g?~GSy?oc`|'pT8!(*EYǂ7J}޷߇ {H c(|Oa31!u-^QjWM}ZfhVUS7+Uo e R3-KgZFަ ЯҾJ+膃Ζ} $׵c;mױܣxsEC Aq:hlJafW؁ \^l{}_!TKSSEi yK١\ZK\0YEU,n'4ljjqR*I;n9˦C oOQNS#c:!S-[z۱UGYܟ*"ς/U?Qܣ{2O_/Q6|9p^^e'(lu۱9^'E۱:oq~._괄oP&lv݅h꘣"Џmk\ɡwi `ˇ\Z>''9ng:(Z:h,8_b5ys9 JunhsH=i8r20۬!64i>5&Zc'@ܙX6V>.Mhh z$mmẺSt+# .#=biR&01 ֟o#k7'@ܙYľ071 nw#lh գ.\=H&41i&S"k Zu,EMkZ,Nc,Ɋm |c]Jq4yޚִY!F ~6Nk]h?΋ìAn-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡר-zڡ8A!ï{Z4\}M lel`I=G;S)OvUTͭxh=F`3 =P3 JD\$kT0E4PoQeNu}?(ψtoG5\ rq GG>gx:S7Va7cEO"cvPa<NY$ll.qes_JyߋKΓx!]NmZplTzUszvJzg<}St1I _X/i}cܾѥrf.!1AQaq @P`0တp?!N&ưsGhzܞ(e/ĝqD d%zX]uEaz5T +Cls!"Ƙ'^[k14~p-uhn`qASw[lKZ@^g!>E+ky\/ܫFLv֭ gK0->Ja];ЗTMb!*.+qբ\̇DW+0y9GKP'`fjȉ:yP[˅\RPK#598)=\g+}6)W>* #N.|f9:hnO1k~zp s.1:HGQY mDD*Z.U/_Y`C74j?;bnЌ"I [ |+JIXk@dXsRz hƆDnOcW{@Q^>R"S[vK>1|X _bjZWVL pL˓yhQe)OX1?`&8U_kHJ._dS#˴_ PiՕ$#nM/<.*5al*T!0CǃQM$(_'8*jf> [1R$m-.V'4> `Ds i7vOlJSpk0ecFRd}F>9qP'PD(*R_ޢ1`C@A=ό9pJF P1(|GhҀR:6J1$ dIUM j_hMCHi 1D6"gCYshWQPIK Wy Rי<"-<>}P&…YR|6|E g~7#çb+yM '˾eRE *ph JƓ8\L J( "±cwF[d?-SO!tT!ZVȦRIX4܅6FVyP[_{qqPQ3.hN qVer(hLt& . O6*eh(~ , B݊dmPtr RhPN KT(8a(MnOp@~cVd:@&wP'k ɢqi'x2F)D I1noi/ϣ/R*r9Řs9fb{  zxREE!}ľXwD8{d|_O&Q=_U d(m=$S>O׏Vj+ G6.A?S(ZoSvZRwRxܣ\a&eЗUEmg&[ |+K%yB\,QUW^6_һ1g+`z ]IBĥHSIn H)H.a+mwdMR(I-xF'V ,OܯIax4&/Bs d&=&D/Щ|.*=v.%Kp(0*9Y~8kUЮL}gjQȎүrf1UT*5SAmj"^mI?I舼CqDe&FHVNl%%hFT+)DNBr*6m-KqM [s6". }|3. =WsE2/ QXX}1WETu"Zds,j9Vsq8YXcȘꖛ>mʅ,G>CTC AEpZNOAio&AnķSJ }D.m?*RdɈ1压t4YyYNpBix&ܣW7G^M dȼ|nCniBCA2N H)Ԟ fv~ؖ #5˲-h.> 6$I*!ڻq(e ^/"TҸ%#Q ׵x_ˉb~\#prǂ-9͉$V)es쾞9f2N`U+nMiTs)TT&U1Mq~j! @q hB!7|_eornW"RhXb͑: YcRB0*M.K-gf/rs+V9i,bAQÂ9ިbbxj(ڸۀnYXJi„X""U(ppXxWG7G7G7GU.._t}Ib:3 䒶Ƙ=>mfµ@г ܡ6(x YC?:ytUĒd2vK!n %-Q+%,dR4E`%YY& FB|Q+yMNKI JP`NhM( lLwrG>k/W 1K+dj.Qg+\X e; gp:sH[7 267afYINdejI毹 Pn:TQM Z& p՞&ea )h=MbmQuIS>IMJoC&b^|'_GJ-n,6(Ca[ ؋"hXfۧ3Fa<1@Xqy!D~uZYqQ%(fha-wLHrCXAR06m#iHF6m#iHF6m#iHF6m#iHF6m#iHF6m#iHF6m#iHF6m#iHF6m#iHF6m#iHF6m#iHi <F5?OGOG[X6mckX6mckX6mckX6mckX6mckX6mckX6mckX6mckX6mckX6mckX6maHh#AD%~t~J]͔6(X\AM Tw*2o!hM EE~fBɤz*)HVߗ IhMfj# GÞN"WJh= Q\%G]IrEc7""A3g_Nd"[LւYa깓2Ţ6J(TR Nm ۮZ{IB!+h"T"aф̘#Ćz ES3tB$;:'8eh'5^#ܘX N#O+A?3Y6q~g$fq#'JGo36Zr h1f?2U]pRyR$/Ԧ dS+LjiMC竦Һ ʬXch Ze,$ɚIaD=F-6_t9b_u 2t NF%xkCM%UY<䑕yME4vD 5-Q ,D3i]\.sWWVX"ip1w*j4-r] d<)G/6:?q?q?q?q?q?q>ˆ[?x$ˀ.ņ~mmۃi)nzKBVlN??'-z AUfؓNKi&ۄOCvG(S_Tj*N Mߡ*,S65j,"D4[a<2NwUȬm#e&:8՞bDk"N}^@88#Q/q?_(9L+Q18ur)vՔMmyQFiٮ5#c)B_blv3P>Rq€y8Ȕ0+d=D a_gs@&S+ &7 @K[. VC88PY']a)Y?oQ^춫,U4ڵ\M_-p#w0Qn`V>4G!_;)0Kti,+ 8 GO|'?Rs>T; DE Kb]E3 kjF)Q]@ƂT57UjL*k~'o =Y4oj]2Z$֦40NqN; n)K_լ bɯsb!1GJ\6"]̵n6CU'hh d 5tQ53=l8$'|Bi'1"M&ԹJՠ-3$`i->Dpi2xX %xIUeH*%;mMy P҉l!\ؚljGY8K6ytS47t~t~t~t~t}%WFcz]Ow"[I6N[rMIb^;|,}R=)t}FJLBޭ=LqȲY,x1!z$z{JHS.F)p!W^́duLTrPOѫGΡ/-b;\)V^A7TVL6zT0IlcjY}ac%wd 5FBwuy|z4|#&9S_Cy _kňBEn5;\ 1ZŬyR1!4 *(>Sn5kcr&D "Zd?MINZV\RWݩzYj9=`aeWW-2шAd;7T<$K9)/dWcT 3E"ZxUZ>nnnn7sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67sc}͍67ܤrPz>_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_cu}7W_aȲrPz?q?q?G&&_J jZ)Oc5!)](τ+4nBGicUQԣv=\c')imoY;< 3$KjS& Y@,D̉T΅q= "sXFJT!DjI[8):!!` ڱW$fR =Qu0QnZ?Ga=ؙnܐK [CANWULOIP\ID?\MD)HIV#1hq°LkAh9ЀIW*ѤVC%%znf2cRY5WޤbW@5BaSk,=̋R-NuR#IiGqQ8PTCSFk)>0EAJcUDK)BѪS LE>qter#MKҁ5[4qu2 А f e@! h\cC5bd}=47%?eR9w%194CHi !4CHi !4CHi !4CHi !4CHi !4CHi !4CHi !4CHi !4CHi !4CHi !4CHi !4CHi !8c(xD @ @ @ @ @ @ @ @ @ @ @ @?W dzfW~t~t~t}d!)z^.fC,L;#$0V 4lYb`d$ƹ%5)»8OF-jĪ;%}B<GRdWT4<nNhdA"N(ioE[ Hܵ1`^ZGbJ*ļ MU &2[$V#R5h9$3dz)W}8B$NLF-u͉P`RfuG˂C0ĪJecLM\"zHUfb'] .fr'iG!)Iv\/sL\vWlPc$QX&!/c;<1M=-B$n+%gjm%-xfS8I)#HԟQz.)$DKÂjNwpy7e&nP VOGS ^P!!8ĻymK-\/'upc$=QayVV]bǛ.RT&Mh;&uVLT&zxB(ii!$K|*l.r Kp֊XK)nr v5\fhhj 'Zt½S9̝(*ɍ՛WƬЙIK:> FAXy!K'](iBY(z>5 jQQȠA(de3+X*%%©A ,?vb~>I %6:T“J]fM-V.b? WYvs=XA>Ë9HD0*pV~p$B$7}9 p-qςij%t>9BwMϬ,2K^sr<"bDK/i n\Z:KT]"6{9=.΢E-@;=UnHI>m \&Kh\Top"!^yPmF,xq_q0V4*X2Çy=w2A9̉ن+1ިRl)bA,Lm2qDf0}"Ss|/Pjrb2F-&U W2uZsgp?U<.DVg)&~tCm)nTsOWڃ>|ƥIT r,&q*_G0d2 ZCrI.R&hq-dG!BJ!${ˢrq4ԧsH*BY^6C!')Id2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2 C!d2Ρ-\#!x]D89%46U*桪dhz ^,C!d20lO m%-p^ꐋy >.i)lDI&HrJX까X L_IfH>(OT9 g4 <LQz> Y}T3q_P jvp?ܺ|%f*~ڦơ|o-6¨X?u"!YI*/ύ+ΘdrOZo>J0Y(Şk1qݑpM5)vlۂV(xy@yt++߭}VY3Ё;;݈t5n%NXNy4E Zw z XS$B}F@OC+gЋq-IRD!Ju pՙyn< EQyn< - D TJ$AsǸuEw/&b4F0+?rVpʈjb!!P2bueq2؞hwGnttd; B1J''8Dq"f4ɏ p@LMJOFB?(:(nxl|RS$HcSkixKK)V345XBUjRjaj$r&;i‚5#O*3*RZbadPgQ)aFH1XR&T3CP+\ZL![ʕ`ce*1_R1Kq8IX'ge­j궁 BxI+HyAUŵ _F]JAsUA_EN wx`Bl"PɍDzL?9XHjc䱊pFȤEMOWࡎB\KQ-[3 oj.OUD! -4EL.<.k1iQ~txUOQo"Zjb[% 'ѭHk >I#ʸ䫐Hi-l[I RUXh R!+ B1Teg&,6h]-8J1I -hCJ PdK$hXmxeV- 3,%tW/Q9u h%ZPf6Лh!Ĕq3xN%$;/3I!vZS.SIB#'B>_FO 6r!#Оpօ"xAIV/;$=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜<=O9ySzs󞧜gȎgÑ};ȳBV5'VHi`_p9[ T߆$ &P.!1AQaq 0P`@рp?AQ^Pm-Pfkb BQId{ yNkE .˹[7: kcؖ赃~}@Tmʦ 'da tB@YeшXSF -Ȅ81k`Ԏ^xxLRȏRv ou~UTP:5S7[!VAqt Gr?Tü8h>ljy ABJJZsy 34 oSzpx.v2(OEf3"C&KCm {$d,PXPJ^<.zXcH+y[_/3L(5bdhʹe˧|-o{HbELu$Hqqh/tETC'kb;'1\ǿ,1[R{"&V] U 'LNrX{ul[' y|B?{-Uw6\DG2wbét֬~YzfГ[žpGB., h 1l??讄Ҽ Z@Y/.G&KmLwuLX&"|O\IRM^u^XdīLlw^K@_1=R bFYgb(f Ĝ<9D$z1*nto\\9Wx *q "#Ҵ ,fO_ZӘH1K8 ap"A-ff)(nXpIOG0 Ҥ'q:z0188tP-$|v,=oR읙%џ=?Dޫ=l&k2& H)&#֧֟&-E33zcinm;ZdL\OTOQ#h,!lE/32;q\}oIHdJ?]I\Of<a){RC-*"`[G@\ y Hx@(Lu56mnS~]Eܘs?$ U1;L!\OTOQ+ )gtD0!~x,#aU}Wd(gm՘n~d,-Y}: Rnry"XnQ:P7G^TDX-}| & @"XGObAOGAaЄ⒤FC,2.ų6b,ƾё`DX-ph u>jj@HJ9GgobhUBAx"QCXl}^=nf&Jj~jt/^ Uԡ*?1ftvyYsg}ϣGg>+;}VwÔ8+ Zu ^$7U@I1ir_F6>(_\I Y)uL6\:kFt%cxYzm_wʇ{h;V;bD22߾0Y-@K"i:k'&\rkon8Ziı~%o<P/hzrv!u1-rؔĻ Yn/8Υ9p׺ -ь'y II x=w," FCtk-2\FW"fO] ;AZʻO5D7/~JZ#-`r "`F3Cn&\1?S #m$dulORC-nfMEs* ГLB"Tܻu!La͛aµG~&N;c#fEjyc ݰ+k(H W[s~ b*Ut2|ſN((֌ni7pK]p`)b 6:+@D3h2PPXUh}#ܷmv=dI'6O50 QTͻ.㐕|[!(pǴmѓJ` 90am  :7VwxdD`%X@\Hˢ~# %VǢ=FD0)E-z>ܬ<}"FPJO4`#b@ S2rTF*_LliP/05{[VPX5_GGJfe:5Z)ЖG44\?J .)S~Qy &;\ =oRK܀;UQfCOuy!)g}ϣGg>+;ɭyo+;v K(^j.8# iBX䅣ƤIt;Ō*ʭJ:l 0gmSi"S\UGq\>GC֊u`#M Q4( U%­X1VcP쳡aRxvyY+ێAWUn)?(e` eo9I-ZS.dڈXEr'6d4s)]`6qs6]]=*rEeu\ wҮk^VTh䱻MF%whAu.>ŗsdhkbs7:POY3IuXJ>=ZzRw,8͗^äCZ[ǎäiм7K%g%]tJN+;}Vw۹eYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYevgO%>J+;xs-Vw۹eYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYe,gO>:+;}Vwآdh򳾻FKI+.D*˹Qit ,t肥 W/q,"8ID"fZ;<ﮬt.9"ûpѸ1p1!G"eZWq*`̽5t:,T%jչ Meo0D j(YJBC\?vęw$N%[XUA2`"q n;8 ],ΌRؾwfvkwQ*8mbQM4IpSaiþ:lvyY]qUaQ)mTpv?$2k=* ·Lj*+*" 6/[t=.,liȤ̙{N^ٲ`ݒKc%eH@ưVWjeR[~9@J%sY&bj6M?v3򳾺DƱ1~=S&qIK}6) QFKUWQrD>̀"2IP\=C+T틏"Z.RB :v(*V@̡} V҂Z֢ LUi@,Vw;_|iO->Z|iO->Z|iO->Z|iO->Z|iO->Z|iO->Z|iO->Z|iO->Z|iO->Z|iO->Z|iO->Z|iO%3+ E [I8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'qMeܾ(S!<wGJs w+;}Vw;<e"~a|T-J漻e~<촫Օ/Րb/.kViA.=f0" Vwѿ5+*.+F(M5ŐݐtaxCqMSgb( {A[3%TY_k*,DF8' O9zUv%Z`8fzO%.B-,.U{Tf!Ֆi&+ݠ(0jؽtvyY/F1S\7!cғ/ŐJԎQl z$P6Z *|߽+AG!{ Qgh{X<տ+{Lݷ KX &`ҦġeЛ JװO1@VU`퇀nue-bJ>-Vw5V3fmZlT4 QO<^|@P`zs1e԰(d9ae?DD[C^̺,FaEL,EV2l)@T\zqnH" ^F+=1RǤx2_|W6fkH&0+XxohƈV"wf&c5(Ԥ8b ` /x/l 5,8]4[ 8JH8͆'4xN:;<ݣIZ OM!Ї3JQ ue}S5GjeչZVV-Oط音mStͬ.Af:Cfv (GS9 z%H0 ncZ10w:j"%-vy(q@1pK1- goOo]P3.)gs:;<L3YїG7+;ϱ*@ >( 8UZc"jq=^ڽ#(gYǣcgCz4eV˃BDҌITIh<*-`?!+6v@q TJtUr,)rAhF'ɭ/ǚMFU3]plQiL[&*UXnUX4܂%eB;"X.0CXzV܈HB#J$.9fTpJ&h򳾺*a j[GZZ86TD+QjJ0?xL[Amrvd Qw.b^C07߲-ChqIӰ;FG|YL·(PTA͈(,G2( g @OFlN=GNP4)4(@b gb+;4Be&1jkq+,2o0JFDWܨXUr!AJCq21'7[F`DmYT8TYr(YY6E|BMXʽ0 D ! *l UF#) U0#)\1?Bb/tOT ajMȀO~MyV*Ɓ†$!ãGg>+;yFԸq2UnCn 9]+32aY4~:GAyi9q%Z۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۳۽`!"upN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'pN 8'K-[ynw-[ynw-[ynw-[ynw-[ynw-[ynw-[ynw-[ynw-[ynw-[ynw-[ynw-[ynwͯ[kD?rq^UN t^Vw;E("C]1-[&<2XD(\!Ma(} ``]n[g Eg=i΅+7[yJnv+;pYVc(Ј|` jMUي@S\{q}DhYwjYa?Vj\0`;6ecrLeΗi[]F֙Q. ݃}:1OZADT#) X'&>ӈc-̈S"ԑguF^ m_gx@Dc&JF6]?"_wgsM[CI*QR3I+=m->(KDV{^֝5_ZT"S (y(q,t:mVW,jTtm݃%G` 0VCw.NW)~Gg>+;}Vw;Vw!IJ'v|˝5Ӽ;V-ȡ{Z`i _3Y$?+1.mM8*TiAV1[h"zW|8 vcT5E$T;G-& .˹aLpBLW݀m-/Nd"E!5 i;Q駾G׷\gKO\d’ #N@D*|!܋W6!&v<:;<ɞmfpj "I6[qj&陊\jxIwэDy] 'o!xISXd;'K9Dv U<2`,Ww{;f2 Ne s IR5]Ҙm!u4!/0#cO5?dQؔYԪ)шxtvyY5ay |$Fo-twYFjWbP7pR 8Dcaj(c~E돰!{مN[bȫ-) (oה&h84v(qS΂D# qT;p4~|xe bO+NK)b:KZ4\%wدf"L%cvZgP ;h c^g,Gꑿ`t7A<a)"Љ + 9~9aU: xQ;Vw;dwL_ƻip ̑)N U Fg8H'uepM}7h?7C,OG){zFR)Huo}﹁D,j (c}H`BlMuKoxSYOaؘ"حU͠l@9&՚tLdIݗ,) X%os39נwƍNBIaf4l \]m9n!I^%Tz[vѨ=q+ZX*Uh\9+U٘=)R#-ZՂk o@^ttuņi$xeKm:J]f*:LQ km-|Ewjpn`"uw1IJ16zxU:k8HX'굱^%0!o2ݏ(Fd8)K`X)BDٖ;e )mjhDSaK]%Ec-i5;ecF qA(jhve,hSmd~茴CSBm#@^n'( "d !%veS>8z'؟N ,9t?0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` &_VS)I aP*H.[d4a_NvZ+>>>6+A.=秵mBغmDuDjݟ|kJd|ƳmH.bw=?`.&=ae~6Oj&YIԁ\+!M`ߓJ~J/Yycj ۲sk1n1bT2PPK dJ[qcet/PK}I[[Ttqcet/404_14.txt34ss,)IKIKNrtHobQBHjqjC3s#ss#-,-LM`|##c]C]xCs+C+cC.PK`{H[N5bl%qcet/index.phpZms6_0RderL.I\>t:\H@!@ٺ iQ%۽3DcD`_}Eg=Ҁ!mbYUs . ۃQ$HD:?ӓO؅|$+i8OhJ@_GA,5A259gi(]AU!xd^cz=bL>2n:Kv`- QC#x48}rf6y#;}b`&RskJeQ=m2#%yeD@b!U? e)IiC²QL?{jڞy7aP> K"pPti_OO)WoJK0!s 1콘BRM <_t[Z '8EЁ[kЂEȷ\(O[ 9/T<״saC*CXsHb;2!Ip$)-;S~ Vw@ïsX884 Lj U!z΂rJ^8dD$)W&?CR#gcٱBv `)N~|K~4$ :bsJbfِSA ɂXP(*CCC"V.eCR2J p t;ܽ,]Z$!򭎎MuߑK^DWZ5 o=}r,E;ZJ CD! sy>q\\GiMz};h< 􌼋0Wx!ue`!q }223u)iPX gSU]ԀXi)T^ym#4m_j:nej5X:YD7/e*gm-j-TYc9z]jFVӉrKs brzl{U(RѲ^"-RN2V9-tBàiRM6G7vV.)$g5"kQ!ﰕw@iK7.oMsN`P&.- iuGA\aR3-6,8T55j(7Yl|0Mm桙ݚ"H]kXK },bکs=L2tMyk-;|.HZS||_^'\w|&iV( #wQ!}5ʃ1O"B}.p7xlG^dP}]VTd|&W,b!m oȓΰ=hbJu2Ef*}8;}Xֿ:h]ʷ 6w9ټDOiH|R)u ; `tȢ~pKZe77Zk\gvnt۽M]duL n"(́~T"'I b)HHZp4T(Пr3ҿ:Xp4w=,M!7ONl<]61F>v++1Ӌ&w=;l-W>XE&PK fI[qcet/Mark Test Attendance/PK2I[=m ,qcet/Mark Test Attendance/courseOfferGet.phpVnF}(%Eҩu2l) 4M5H.4%E!P.n 7ke,)6U&s`Gnvy1íό3~PK~I[9;"&qcet/Mark Test Attendance/getStaff.phpTmO0EHN }ħnUPbPT:1BI.QQWISJI;i{OH!FHX_HEi.3$Ъ'&76cR&6X:EPhdx"*6 OBpP#zN։ĺ8,Z'd3(GT.yn{Z,Rɻ@kCmu{ޡB~ɡZ'aJJ6KR ^h%.nX:'o{f,; u A mqZQک(*lT}fTS`|d8M. d6}M`X %0 1n*2ch< G*iZ$wHQOwF%[TmCȼ}ܚg͛ $ƁS2(v`gLD>䁄8lL_4/xz:q`4l&%Ai*!yچRa(HLr@/"qȳRԔ&G@r`ޝ?+r)e 6ˬXPxp$ 7z*Oa ~{., %1)M;?qaݱK8axb"RU5-@T6nͷqMa:;?B/0ǧ᷊4JzScq|JEy8d#;Ň(\>CcsUE$?vn"xoX;1 z*~{xN?7""a2ukc} vxtw<2ɈAb-Lh58ax7-GݱlJH # 5τD+?cl o͵.^Bx엘 o3AL\bvb*ο)=rAM*HX7$UEǎ&TUSif]\^"ܓ-uxl3Koq~4GǺ?Mıdl݉36(9 ?76^-r!*Rx#uvLscްKS[i LfYX.S[αR [gSVOf1x4%YlYc9g/8W +[ i>\X l HxU:vVϰn |?E˅Cɘ [Q8Lb^RطSQCQ*O=fPc58h4 ,AMӳͣv\+ yo7Mz,%^ y$!w.kSlMd5O@mCO6b|25/RL0q:b(p\B >&͜.LpR͕g?'hb3w~O9w7X r31^ĆpmmZu3ʳ_ٜ*j>IA>6v+;(3#(!ސ3SǷ dl;EZe0eJE`%+o'kE@=tb,:؜ƌs2\$ԪGa23A"fQ 3J5 ՝*ɩ,.Ce`ʹ$1٩m+nG:G~GMc}N{aa/LM7s(Վ{"RRҶ",(PKK[FӒeQʭW)ˌv@')vC 1F&lťڝ ' hg]H"#jrGϖwB"ǟoѬ ^JgkL+%OO}>s+nN@2/hl.~MIT1 1'u5l|H EX@bנo :t4ͣqqm,S'p!OR7T[),) =rЩ.\A4c).ـQbf 4o8>A#q @9Agr `G \p@<pjV(j[~*@yf`Ď$x>qiq{<yS~F>ȡ;pAKqv2v(R2&jh9n2y6zXؽA<30ޏrs\_D~}l&PGSC0d2PϠ>hJpUwðadZNd|\wy4)oC"{XGptao>؏Hp} (z$c\XCpj@Atļ 7vX=,Ëo&P~E{M_i{d3ݜvѥ'œ-6dlU8dǂCBzS"84,ۏͩtuױ<rlہK#$n>.fN)iOu  uImTJ\˿+-p\p% ٝT;} łS&oaC6xX}#I{Gp?Jƣ`EtF8ځ&hvJ.?'%^ՠW$HI y|9ִE-ݘݴ@dtp9*6KC,-p=t0Aصѿ>3i[X# Bw;|IpvQ٪YYOiOo\ǫ;Ź`Lr̎w@Ct)*gj=w–lMeGM'nrMvf듰GO;O"~flU>cJ))Dq!e _LdujU67B0>cl=8W(TpsYEmgyΡ~K5+ǵb]п _k{j]q-vu5gt`C:vuh-A{Y4x=|DF(?H)=dx~ȼ+2]%ޗp;Am۲?șw2  b+`x0HEZEAoLT%W̒9apWhJXJrcҬ8z =Օװхd+)p8,H1["`K0!IAURTI# < BM\1aCITĔ+o$ߵM˹D)mC]W:,&]Ny*"ZMSˀ* ᗂ!4^uή{QN֙Eҫy]:ݷך5l"/N'nN. 6{;n'!l|r{ă"HQA~&}\ آpfwyJB\(eISڛT"ӌh&՗IupqFŹK|iXUƪ ǩ ׏?6cpWbCzQxεG@N )we=A{C <*<?[nѰ mIy q t NdvuPUn@ 27.m!fB尼+dwwE\U6妷sJuI}Q= )y! D__+_(!FA5l'!QBr熩M:-Qpʼn~hKpm6B^A|dcGtO=OH F~3dZ %$ 19n'eeg.hrzJ|я@'0z&[9LyMj1v|uCxK;v3.{LU-Ed)%,^ kfIZP+fLU)V/޼bYĻ#|CçS@J6#!.)"1G.d1^X=y'{Mt/ө'ߌqgW \dGAhKMYuԎlFkN*Scu砛,I (l?Bi4tn]}*R!L<5gN;،n.mvӸ.dA*!T⃕G1Ώl!Zŏc7vz}.H_`^(QUG]U @?}0#7-JOmoX4X!5uvn1գ>A)%#[r!r, &,@oc.6߉"G72I$eR+>Y>+4k䫚> ,l Z +NT?D&R}V42eTۨ^{gidiOqwpp }o)ےMlً>[yt{)I]/@y3 PKړI[k}0qcet/Mark Test Attendance/markTestAttendance.phpYms6 evڻuM6sd\/PYH(j;/}s1/$v], ËrY>~)-hLqYЊi<>??"9?%̒u,̏^U CJ )^$uVY_KcoH2gBxIiXΫt]CeFIE|߂{36V,+ .(%!z=W"eit|]\N.&4|3}WR#TcVt RV^(UEyV8wwoY j7|E(ab|-A\pNuy( R2鸔y*k:7*AZ]aU|^4y@<2+{C/j Fnx|q\d} ]6n| ls-eA; [6ŜTB#+i1@ݐ,UQ$B3䆉.HXL|Ʊn"nvH޽Eo#mwR܈U* w!zFl^Sʃa'e~>VnH+^K9 #l( †',LdzTZ(B&7>KJ+Y}+GT* 6BRp)qX4*CvjZ@]]~ (xKԹZdmQwτqf.`ˣ^]n}ިɩBr Uk A l o 'Q(S{©X%Kpe̱5uvP%a%tz-!.,RΑcIw'Aw ˼%ΙEr\7 7̋Z&k5>܉=8Ukph"sYK",B3uևr"8at>׸5f]FKGyy$f.װT[F vxӔMuͷ+sHҰeT e&I%7Bu<&@V7e+7 Bwс+gDlE.WLA̢Fq_7(9?|G~ >ʍ֝7&!bY P%YvoG2?E8\"s4vɴL"'9?((n43QN[&,(͓, g;B׶΃: 죘 ]M.]qܽXCZ:CXDW2r6t~j5P/FB,VN~L*q(Bo#/E)"7/׎c$ôggV\*G[>8w?.o" ^/W9 $Ruu^ xԹJTt)٩1n@z&D*4O)ՠ&CkۄgQۀIv k'4Y5{=|0+AZSqALdIbT=5ǹKv抗ҍl'F8?Ĝ?m';dFBob ԝ[ 5zit3Vj]jhk%wRMTL=){Pw09 R{/q"̘ ݨXM9-S?G5yMU)o;`[SlKՂ`i} '߾A*_:"*CeBoUaXXћͭͽpK,pIeW[t^v<PK/{H[~3qcet/Test Attendance Status/deleteDateSheet_bkp.phpSN@}GV$;)) MUѤĔVY=mfw~]{q҄Z̜3s웓vw@?9Q8#5S |%U%%G"HVPsI"Ra.b4#2~9%8X9-~aA8$Ɵd9W\XcoUhA&'f_KonTZ30J3-_ƺFU+5D_? axB@0r,6),Z4C@T&pݴ7Bpa29z !wF܍m۽gT?Z =ϧz 6}-Uv&RֆLmg 1.P\[r_NrmMv3PU,5qeV035C -X昷[.Fq.&~27~j0*S3cٞMϗ6mom EߴD/x)/uem[>_dd?v[ħDoD$]fEOwwPKtI[e/qcet/Test Attendance Status/delete_test_att.phpTQo0~p*9TOl[iTTUMp8hk8@P |ww|Z@*\2Ub>#uh4^1WH.s\uuE*9ك;A]/ M݉`Kp *OCl4>9y,x*=ݽ¤{ʃvuBR' cUg8-tIoVkүݲ2 sͰ`)FKTQlKbEH%J4B&_Ԍ$K!1b HM h)]Unf\b4M+Mk5-rz"ݏL%,J4e*<=Ay4!5UnC^w71'p+LO]Z3" 64&!ә3\fZ]M31j]Fۍ05րmִ'n~kf.vqƲQ"N3!^ۄI3/zZC(ǀIeTh89zR[8𒳇AJv?Wg1 %dp>V%- y-7V"ږM6Ԙ݂|g(Zl-SU:Ղ5m E%BK 1s|fU Жz+ټ`VV/Boغil=J|S㣽 !zcQ'PKbJ[^c}43qcet/Test Attendance Status/getAttendanceStatus.phpWn67w83I*-z.-i%vTJJRKӡ#l/'iYԏlswۼ#3p3.iv΂ߣ S']%NXȐ"o{q(IMX$24%_XF4u040JoI:/X&I&L F,},s,4Cdp In Noh6{E/ܲXLl忞M_b~_.V:^kP0v}e$ "$o`GjɥP9c|,JUF;XjC:b? `vT# 2(Hi x>H^C?ÄvWSNbPB/WN2uDa"k|@vu5LYl D8M#mЃ=Ps1k=m d: " Sptq:~Ci<7TmwxcBAX{O,>Si3-q.ͤc҉I:ڐ!#\e[I %Ãffoڃp<#ܔJ Av;+U00c)j$([u I ~2w5;XAXدbFg, 2A&j}#nF8b$` ; 7+A" -z_(!^ALrq@tG*8 o~G0t W[B$,糥 qyWXn5N:6"M/5T5<.4?gsH7\Qu1Q Jr u7$DLa> ߟyKܴlN%}诖7JQ!^/,<{m,*K֎OoQrGiBIw X'X-5:FX;&Be(=R#eL9cm /5dEpv+Jȃ0 [5!VF7xU,ڳj#Fy1RwwtXTWޫP|n {m]嵆ݫPS+[}$ɪi:F@n"ކ3p.@b&̙Ϛ3v1\漧ԫpx3RsīN[ƭM{gM.}_ S-=8Mf lQaǹZAbآ6465G'[-ֱ*%]ƺt*nB< l,tvhͣTwۯ~/CI op<[6ZΖ@Aʋ_. AFYe, X?b^_rK@M b-x{ϞPK/{H[9;",qcet/Test Attendance Status/getStaff_bkp.phpTmO0EHN }ħnUPbPT:1BI.QQWISJI;i{OH!FHXo$yrK .oKRa2E!( \ovmH0 }څ~ ~p78 g`^\,U2 BnJ> M.zL` i"u BBF,{Mb^@blT+]EJ4d/@4SP G6}h\jN:Vy0^rgfֆic I=$l0o&қOܹfRq&ԊYԛWSd7r2 `ڵy*{{Goj=iP}#sqR Mmf^Û``$T(+redJĄf1])@ֺ`stй]Ot51)E9O+Z< CWԾ8$))YoHű96сL"NQw:nz/)1n7ΥnIy&q()ҙk) ^FȊU$Zn.à*R#:TDq3%k6]M&t8k`~g왳>U]VteW n=5/gMw<3>ӕJe֋r|&]z65xH>xHo48٫܂?}ѬnKw}# q滝lN,` D3-g[Jܖi7lCKD !kxd3X[k=d\tDP+8&ڭwPKcJ[C%qcet/Test Attendance Status/index.php=ks8Sp<+i"3ݑ,Oe["3"9$0uƝ{" =dV/ bjF7Lg3h [8LSݳSޒ$H+r?΍"u-gma!q4߀=e|6:`c(sW%ȜDZAFMh=QZԷɩe;q"5%$;pC蛉Й`tTi.cDW̧9$?U59y=H$z>9t t[%R|( h|,Jmv7&_‡VmآJR!;=S18v$lw"IoS%r@pN;elW׌muk{A8uF6at˦ޚmY.c֛ܗ6"]g. Lzf7Tv7oAهɨt錹(0 +.wa bfΝhiQl]eoRҷHf :ĈCk]g._Ȑw#y(b]"WaRU !. :J`f# BɔځMS4,QmX 2q"FqXw"ko&CYt9S "a-$n3 \+?<{ *Iv<7&_:i4 "4û!,fF6CgFćfK5sP`x,nX—tФDJ7~t\< jǏZt)O< \@\?xU%b[E`T"mW.A &ЍZ=Q3Yu0Oάduh|tC Lg05M#=#o@ G`,FPl1Yԙe~%vvf~#j%NP}Rf!b-ʊXU<2HtPyqj'C͕c}5ZClu%QlŮܙұM@ O*(/WMY=/cHD3k I⦙|EoKॢ> 4Xxf~ܖؿb߬&7K.81iLZM"6_s ٶSrPYfCJ;HE{4@.Ff >EY ='ᐲ,"WHo iv5[:r]NY{fjGSh BԾțmQ@$Y'jlzb/G6[|ڣ>Ћ?a+LɭUVi%K^Z߫V)^ېAlDL Pn@M[ɚQam@w"&RA r#AհB2z^>_xyސ@u-J='"d@.⛃,Z+M_m^ @Q1 QeQH&~~L fdc5ψ[7bbY\w} Ho|g ȅ@\ª֥> фܿlJg~tCS }mR})7U2M^|Q !@zlċbdYcJTkD=Kc*J)wN?36ИH3JyncMBa*ّ* F7Beg$L@h`2v*_dp0v h$k?F'?fQ"an f?ň7{=:/aPױy?Zy(]P5c( <#cX\B)h-Tes}7l5M-cl'B~H :&=moYr*Nt &KDeZ̈́,i8&xDqL*Kw/Mkq'У { &z0R~\|T+83Vk*n̹:.>|H MϿhf̗iNHJEȉ~iPrNDRVwOC8m!ؓض[o} 1{]ur|DLOJt v7Ux?t+XN@4҅8 6q~0 0M Bfo\|ʼn-pu4ݮ57]ӞP(E{g%lv7 &=+;>S="#ZdL&I\5^#ю6bXB|v{)5P oGspsx䤫{+xڹq|}rVPyam53؞vY)!U}YIA:cwV 8ytG>6O#L^qE~HXu42')@5\X:xJ@>74\&b)y]%[KmGEmzCXv4u__֬$ ۆ5 FG-`Vxxm2uvR%hS,DKi0 Vo{ um=DZW"e 8,he9fw6alx'4 }E mMyh=y@/ҸkМ%cYD+,*ਃwDdJR"l".Y:|̓VET%nW`-p3ezƻZv#fL};Eʭ.G }/z׵%49guNFݹQS3q$r˛FU**ϓ (鄼tMHCwy0i\v8(!!k\jjSnȴ7XOXI {pUD{Z\Emo]_$?!3숙:t| -4:~hq63qhw$N[cNX^R)^H[bj O& qq!&s@̏ 6ıHԻ[u݅m(z-Ĝ_>nu6Kj/beRg:s |qDS>/ʳ&$rQ,#&kǠV'g7Pb0iͨ`ڔ'o^8qYq7 qmD+Wf)9c80>wfhgޠ*{M'?z"gOyks/ bM9ׅN[bb:lW=nYXY%o3ʿCr~coLJPW䵛6_ƱL[q&;g(>V4U0.ji\ysķXu]K! tUbp o`nԲ=-ρ:ݭ8P9/" w8?-:9>z|ɥE3c"J7D Dܫ 抃k*~FR˄A<%F)7=,1u֣p \#ڷ,«Šr񏑟>xCv$[Vs BR϶XT4\ã z"f=~tu{:Y;\1J29`B. y)`_b3pw`^Tڟ&ԗ&Ml&PmDJdDJpi|ЭFH5&7(i2Qcp@[!U\RRM-Rm*UǏ*[ *v qбTt5>hPK/{H[Z41qcet/Test Attendance Status/saveDateSheet_bkp.phpXmo6 fʱ$w i!dŢcTRwDRv`wd?.nc9YLF`OhF#N%/x)f9@% QBfqHgD?cOs'Q jI/)ƂY3LJ< 4\2zO>my>1Ob^]ëׯsROi?;#P.HJ<;PRB:gmfӴHtŝLHWx7ۑE>`dєDDD6=)JBxANKR0>e$%iµjڔnDB4^, )zQx M6Z:/'Q>ڝ}_(+wᒓ)&TKrX߷:s H*-YUqfF9s~Smk!VX/uU5U·GL dL@0+TQf}Ev•ϗh<ߎ `WWW199v&Cg&fr z$򯂰4φG@m $C0P9B 4BityDOp4ӧ58fq5jtHQ'WmvIRз@Qd*.1@WM}JVg~t֞pyTͳݯo#ƒ.{ΐm˻Qs~,[$)"Ҫ e*){U0e*2bRd=U0.8C{QdLE1c!޸H9UJٍdk('X ^]=#bh˶3xi.@*]6xt8ϧM軁rU;Wndk]ǿ\60~Q7yofܹSeʸoFP3ZxR鷷֪\ 6Є֯K AzA BΖ[׀QAF `?YIOWL@0?$¦Txq^AbNfP Ӌpt חΌ'H0.ոwڷ8iްUKU,?ͺ6\'ӥ/1^yqOζNm;Ug76jA,:;wLu"[1ѵsWYFuHZmaG=ň=D{UZkݭ6q`9͢]]nF{=^qUjPխ!?<}Nu+Nw꯯؞tG> W:q}PB֢_ kK%J_PIa | \.*'%' /pyaz)`Jtw0вUWN͆nwx66d hI`aZW!_-sޤ1dP 9l&v =. '[V Jd/ ^ $ L`,-؆m.8/x4$t/mƣN6`'Q?PKfpI[Ww X%/qcet/Test Attendance Status/update_test_att.phpX[s7~g.4ЇiL48i2Yo-@}޵d9߹H˳r]޿ E ZU"3QDċ5' Fq+rr֛mJtL"fh-7Z,=!E7JwN G]𗈭dzxt_N'|: /fߧdr=~] %WC.BKo EZ%ȇ/k>'ͦgAq1[|װ)VE eK b0#2 ]%1J5E$ jqDggeE5'(fN 9UT⋊PDDxx6")kv|M%|kFU{8EZ0b  *z 0) /%ca'9ҴT|h.T(P.C'8~ a?R#i0+Pm^S[Y[ҝjޙ3]uplNͅ&DP KAܱ6eіHg5j e|V',f63ۂ~43>Y׃Tp$!เKS%*x@pð17AmQ$=$~|u/%0_ޣ; N aV=o CpXEE 9iJ0jz2^aCW@ p$^2̓ {W'RL302-"0uBr vMfF0o/ci(&&3eh$|Hߨh虩 UYRɁ<PWKff Y6'a&-mD$@,s:>6%ykon&ͮ<{2'[sBhqS-[x-)R.ʾ[ȉVV9(I PH;tkE^i:),(/+ vVk)Ҭ u@sQåh )ђux;Z32q#]FnNVrQDdkY"넅H5[>baAt|9ٹZeS4%sj-mYBVgT˂7ս%i:%&3x']wrmu4䃢ѻZo̐PTjT~XqiGL6rc ]Sdb8Y"(7Mm(x YME9Wh+b6{_}) -#n !l:Fu<ctQ;2,6zn,9NsⷻG eA2Զ'ܒPpAUa[y'a,תhތE&pb%kI])C܍eo w9K䧣W鍊!Ym(?CEahN&0n:avZ3JYQM߭=$[Uw;!ɡ:d(z=Z!rPF+EZPFݿ厖!YP_A8u =T^$A<+'A%IJ L+t#R{ >>2Sڲ(̶mf$cߛ[ySPK dJ[$0qcet/ P9?:C93p7PK}I[[Tt$ #qcet/404_14.txt + 9Z;F9];F9PK`{H[N5bl%$ qcet/index.php d>8jj'o9oj'o9PK fI[$02qcet/Mark Test Attendance/ d9T ͋9) 9PK2I[=m ,$ jqcet/Mark Test Attendance/courseOfferGet.php v"n9 9 9PK~I[9;"&$ qcet/Mark Test Attendance/getStaff.php  : 9 9" 9PKI[iEn 3$ qcet/Mark Test Attendance/getStudentsForTestAtt.php 0y9"2 9"2 9PK&I[ <do#$ qcet/Mark Test Attendance/index.php bMB!9r 9{ 9PKړI[k}0$ 'qcet/Mark Test Attendance/markTestAttendance.php ,F 9 9 9PK QJ[$00qcet/Test Attendance Status/ Cɤ939zP9PK/{H[$_3 2$ 1qcet/Test Attendance Status/courseOfferGet_bkp.php qZ=8–9–9PK/{H[~3$ 4qcet/Test Attendance Status/deleteDateSheet_bkp.php Z=899PKtI[e/$ 7qcet/Test Attendance Status/delete_test_att.php d/899PKbJ[^c}43$ ;qcet/Test Attendance Status/getAttendanceStatus.php fk999PK/{H[9;",$ @qcet/Test Attendance Status/getStaff_bkp.php Z=8~99PK]cI[ s% .$ Dqcet/Test Attendance Status/get_att_detail.php 899PKcJ[C%$ ZHqcet/Test Attendance Status/index.php "9t9x9PK/{H[Z41$ ?aqcet/Test Attendance Status/saveDateSheet_bkp.php Z=8Ǘ9Ǘ9PK/{H[x*e3$ /hqcet/Test Attendance Status/updateDateSheet_bkp.php Z=8ؗ9ؗ9PKfpI[Ww X%/$ mqcet/Test Attendance Status/update_test_att.php  8w9w9PKq u9467%2FClasslikes%2F-1793262594" anchor-label="NativeComponentModelPlugin" id="-1226449467%2FClasslikes%2F-1793262594" data-filterable-set=":docs/java_api">
Link copied to clipboard
A plugin that sets up the infrastructure for defining native binaries.
Link copied to clipboard
A plugin that creates tasks used for constructing native binaries.
NativeComponentModelPlugin

NativeComponentModelPlugin

@Inject
constructor(instantiator: Instantiator, collectionCallbackActionDecorator: CollectionCallbackActionDecorator)(source)
apply

apply

open fun apply(project: Project)(source)
NativeComponentModelPlugin

NativeComponentModelPlugin

A plugin that sets up the infrastructure for defining native binaries.

Constructors

Link copied to clipboard
@Inject
constructor(instantiator: Instantiator, collectionCallbackActionDecorator: CollectionCallbackActionDecorator)

Functions

Link copied to clipboard
open fun apply(project: Project)
NativeComponentPlugin

NativeComponentPlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
NativeComponentPlugin

NativeComponentPlugin

A plugin that creates tasks used for constructing native binaries.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
org.gradle.nativeplatform.tasks

Package-level declarations

Tasks for building native component projects.

Types

Link copied to clipboard
@DisableCachingByDefault(because = "Abstract super-class, not to be instantiated directly")
abstract class AbstractLinkTask : DefaultTask, ObjectFilesToBinary
Base task for linking a native binary from object files and libraries.
Link copied to clipboard
@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class CreateStaticLibrary : DefaultTask, ObjectFilesToBinary
Assembles a static library from object files.
Link copied to clipboard
@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class ExtractSymbols : DefaultTask
Extracts the debug symbols from a binary and stores them in a separate file.
Link copied to clipboard
@DisableCachingByDefault(because = "Not worth caching")
abstract class InstallExecutable : DefaultTask
Installs an executable with it's dependent libraries so it can be easily executed.
Link copied to clipboard
@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class LinkExecutable : AbstractLinkTask
Links a binary executable from object files and libraries.
Link copied to clipboard
@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class LinkMachOBundle : AbstractLinkTask
Links a binary bundle from object files and imported libraries.
Link copied to clipboard
@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class LinkSharedLibrary : AbstractLinkTask
Links a binary shared library from object files and imported libraries.
Link copied to clipboard
A task that combines a set of object files into a single binary.
Link copied to clipboard
@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class PrefixHeaderFileGenerateTask : DefaultTask
Generates a prefix header file from a list of headers to be precompiled.
Link copied to clipboard
@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class StripSymbols : DefaultTask
Strips the debug symbols from a binary
AbstractLinkTask

AbstractLinkTask

constructor()(source)
debuggable

debuggable

destinationDirectory

destinationDirectory

AbstractLinkTask

AbstractLinkTask

@DisableCachingByDefault(because = "Abstract super-class, not to be instantiated directly")
abstract class AbstractLinkTask : DefaultTask, ObjectFilesToBinary(source)

Base task for linking a native binary from object files and libraries.

Inheritors

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
Create a debuggable binary?
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun lib(libs: Any)
Adds a set of library files to be linked.
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setLibs(libs: FileCollection)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setSource(source: FileCollection)
Link copied to clipboard
Link copied to clipboard
open fun source(source: Any)
Adds a set of object files to be linked.
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
isDebuggable

isDebuggable

Create a debuggable binary?

lib

lib

open fun lib(libs: Any)(source)

Adds a set of library files to be linked. The provided libs object is evaluated as per files.

INDX( <(r'r'h-YY- { -abstract-link-task.html'p`'-YY- " debuggable.html'v'-YY-  destination-directory.html'hV'-YYX-@C7 index.html'xf'U-ZZU- u is-debuggable.html'hR'L-ZZ-  lib.html'hT'-@Z@Z- / libs.html'xb'$"-@Z@Z9"-  linked-file.html'xb's$-@Z@Zs$- B linker-args.html'p\' &-gZgZG&-  set-libs.html'p`''-gZgZ'-  set-source.html'hX'D)-gZgZk)-  source.html'j'B*-;Z;ZK+- x taget-platform.html'p`'ݵ,-;Z;Zݵ,- 7 tool-chain.html libs linkedFile linkerArgs

linkerArgs

setLibs

setLibs

open fun setLibs(libs: FileCollection)(source)
setSource

setSource

open fun setSource(source: FileCollection)(source)
source

source

open fun source(source: Any)(source)

Adds a set of object files to be linked. The provided source object is evaluated as per files.


targetPlatform

targetPlatform

toolChain CreateStaticLibrary

CreateStaticLibrary

constructor()(source)
getBinaryFile

getBinaryFile

The file where the linked binary will be located.

getOperationLoggerFactory

getOperationLoggerFactory

@Inject
open fun getOperationLoggerFactory(): BuildOperationLoggerFactory(source)
getSource

getSource

The source object files to be passed to the archiver.

CreateStaticLibrary

CreateStaticLibrary

@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class CreateStaticLibrary : DefaultTask, ObjectFilesToBinary(source)

Assembles a static library from object files.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
The file where the linked binary will be located.
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
@Inject
open fun getOperationLoggerFactory(): BuildOperationLoggerFactory
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
The source object files to be passed to the archiver.
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
open fun source(source: Any)
Adds a set of object files to be linked.
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
outputFile INDX( j<(-'x'* /-aZaZ//-  -create-static-library.html'j'b0-aZaZb0-  get-binary-file.html''_1-hZhZ_1-  !get-operation-logger-factory.html'p`'^2-hZhZ^2-  get-source.html'hV'3-{[{[L^5-] index.html'xb'J6-{[{[6-  output-file.html'hX'7-~?[~?[7- N source.html'j'[9-~?[~?[[9- v static-libargs.html'j'[:-~?[~?[[:-  target-platform.html'p`';-f[f[;- @ tool-chain.html source

source

open fun source(source: Any)(source)

Adds a set of object files to be linked.

The provided source object is evaluated as per files.

staticLibArgs

staticLibArgs

targetPlatform

targetPlatform

toolChain ExtractSymbols

ExtractSymbols

constructor()(source)
binaryFile ExtractSymbols

ExtractSymbols

@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class ExtractSymbols : DefaultTask(source)

Extracts the debug symbols from a binary and stores them in a separate file.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
symbolFile

symbolFile

targetPlatform

targetPlatform

toolChain

toolChain

INDX( <(-'l'">-[[">- U -extract-symbols.html'xb'G?-[[G?- R binary-file.html'hV'@-[[.A- index.html'xb'cB-[[cB-  symbolfile.html'j'C-[[C- r target-platform.html'p`'$E-\\ۃE- 1 tool-chain.html InstallExecutable

InstallExecutable

@Inject
constructor(workerLeaseService: WorkerLeaseService)(source)

Injects a WorkerLeaseService instance.

getExecutableFile

getExecutableFile

@Internal(value = "Covered by inputFileIfExists")
open fun getExecutableFile(): RegularFileProperty(source)

The executable file to install.

getLibs

getLibs

The library files that should be installed.

getRunScriptFile

getRunScriptFile

@Internal(value = "covered by getInstallDirectory")
open fun getRunScriptFile(): Provider<RegularFile>(source)

Returns the script file that can be used to run the install image.

InstallExecutable

InstallExecutable

@DisableCachingByDefault(because = "Not worth caching")
abstract class InstallExecutable : DefaultTask(source)

Installs an executable with it's dependent libraries so it can be easily executed.

Constructors

Link copied to clipboard
@Inject
constructor(workerLeaseService: WorkerLeaseService)
Injects a WorkerLeaseService instance.

Properties

Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
@Internal(value = "Covered by inputFileIfExists")
open fun getExecutableFile(): RegularFileProperty
The executable file to install.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
The library files that should be installed.
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
@Internal(value = "covered by getInstallDirectory")
open fun getRunScriptFile(): Provider<RegularFile>
Returns the script file that can be used to run the install image.
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun lib(libs: Any)
Adds a set of library files to be installed.
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setLibs(libs: FileCollection)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
installDirectory

installDirectory

INDX( /<(x'r'G-\\G-  -install-executable.html'r'w6I-)\)\w6I-  get-executable-file.html'p\'1J-)\)\1J-  get-libs.html'r'K-P\P\K- u get-run-script-file.html'hV'DL-h\h\*N-  index.html'n'$O-\\yO-  install-directory.html't'0P-\\0P-  installed-executable.html'hR'2@R-\\2@R-  lib.html'p\'nS-\\ S-  set-libs.html'j'T-\\T- { target-platform.html'p`' U-\\U- : tool-chain.html installedExecutable

installedExecutable

lib

lib

open fun lib(libs: Any)(source)

Adds a set of library files to be installed. The provided libs object is evaluated as per files.

setLibs

setLibs

open fun setLibs(libs: FileCollection)(source)
targetPlatform

targetPlatform

toolChain INDX( J<(l'xh'Ѳ-ݵ,-ݵ,-B*--abstract-link-task'n'%.-;-;-[:--create-static-libraryG'xb'=-ۃE-ۃE-C--extract-symbols'xh'KF- U- U-T--install-executable'xb'W-Y-Y-ؤX--link-executable'xh'\-^-^-XB]--link-mach-o-bundle'j'T`-]f-]f-c--link-shared-library'p'Gg-j-j-h LinkExecutable

LinkExecutable

constructor()
LinkExecutable

LinkExecutable

@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class LinkExecutable : AbstractLinkTask(source)

Links a binary executable from object files and libraries.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isDebuggable(): Boolean
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun lib(libs: Any)
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setLibs(libs: FileCollection)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setSource(source: FileCollection)
Link copied to clipboard
Link copied to clipboard
open fun source(source: Any)
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
LinkMachOBundle

LinkMachOBundle

constructor()
LinkMachOBundle

LinkMachOBundle

@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class LinkMachOBundle : AbstractLinkTask(source)

Links a binary bundle from object files and imported libraries.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isDebuggable(): Boolean
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun lib(libs: Any)
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setLibs(libs: FileCollection)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setSource(source: FileCollection)
Link copied to clipboard
Link copied to clipboard
open fun source(source: Any)
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
LinkSharedLibrary

LinkSharedLibrary

constructor()(source)
importLibrary

importLibrary

LinkSharedLibrary

LinkSharedLibrary

@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class LinkSharedLibrary : AbstractLinkTask(source)

Links a binary shared library from object files and imported libraries.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isDebuggable(): Boolean
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun lib(libs: Any)
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setLibs(libs: FileCollection)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setSource(source: FileCollection)
Link copied to clipboard
Link copied to clipboard
open fun source(source: Any)
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
installName

installName

ObjectFilesToBinary

ObjectFilesToBinary

A task that combines a set of object files into a single binary.

Inheritors

Properties

Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"

Functions

Link copied to clipboard
abstract fun compareTo(p: T): Int
Link copied to clipboard
abstract fun configure(configureClosure: Closure): Task
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
abstract fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
abstract fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
abstract fun doLast(action: Action<out Any>): Task
Link copied to clipboard
abstract fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
abstract fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
abstract fun getActions(): List<Action<out Any>>
Link copied to clipboard
abstract fun getAnt(): AntBuilder
Link copied to clipboard
abstract fun getConvention(): Convention
Link copied to clipboard
abstract fun getDependsOn(): Set<Any>
Link copied to clipboard
abstract fun getDescription(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getDidWork(): Boolean
Link copied to clipboard
abstract fun getEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getGroup(): String
Link copied to clipboard
abstract fun getInputs(): TaskInputs
Link copied to clipboard
Link copied to clipboard
abstract fun getLogger(): Logger
Link copied to clipboard
abstract fun getLogging(): LoggingManager
Link copied to clipboard
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
abstract fun getPath(): String
Link copied to clipboard
abstract fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
Link copied to clipboard
abstract fun getTemporaryDir(): File
Link copied to clipboard
abstract fun getTimeout(): Property<Duration>
Link copied to clipboard
abstract fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
abstract fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
abstract fun onlyIf(onlyIfClosure: Closure)
Link copied to clipboard
abstract fun property(propertyName: String): Any
Link copied to clipboard
abstract fun setActions(actions: List<Action<out Any>>)
Link copied to clipboard
abstract fun setDependsOn(dependsOnTasks: Iterable<out Any>)
Link copied to clipboard
abstract fun setDescription(description: String)
Link copied to clipboard
abstract fun setDidWork(didWork: Boolean)
Link copied to clipboard
abstract fun setEnabled(enabled: Boolean)
Link copied to clipboard
abstract fun setFinalizedBy(finalizedBy: Iterable<out Any>)
Link copied to clipboard
abstract fun setGroup(group: String)
Link copied to clipboard
abstract fun setMustRunAfter(mustRunAfter: Iterable<out Any>)
Link copied to clipboard
abstract fun setOnlyIf(onlyIfClosure: Closure)
Link copied to clipboard
abstract fun setProperty(name: String, value: Any)
Link copied to clipboard
abstract fun setShouldRunAfter(shouldRunAfter: Iterable<out Any>)
Link copied to clipboard
abstract fun shouldRunAfter(paths: Array<Any>): TaskDependency
Link copied to clipboard
abstract fun source(source: Any)
Adds a set of object files to be combined into the file binary.
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
abstract fun usesService(service: Provider<out BuildService<out Any>>)
source

source

abstract fun source(source: Any)(source)

Adds a set of object files to be combined into the file binary. The provided source object is evaluated as per files.

PrefixHeaderFileGenerateTask

PrefixHeaderFileGenerateTask

@Inject
constructor(workerExecutor: WorkerExecutor)(source)

Injects a WorkerExecutor instance.

header

header

@get:Input
open var header: String(source)
PrefixHeaderFileGenerateTask

PrefixHeaderFileGenerateTask

@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class PrefixHeaderFileGenerateTask : DefaultTask(source)

Generates a prefix header file from a list of headers to be precompiled.

Constructors

Link copied to clipboard
@Inject
constructor(workerExecutor: WorkerExecutor)
Injects a WorkerExecutor instance.

Properties

Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
@get:Input
open var header: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
prefixHeaderFile

prefixHeaderFile

StripSymbols

StripSymbols

constructor()(source)
binaryFile StripSymbols

StripSymbols

@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class StripSymbols : DefaultTask(source)

Strips the debug symbols from a binary

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
outputFile

outputFile

targetPlatform

targetPlatform

toolChain

toolChain

INDX( #T<(e'xh'r-'d^'d^r- G -strip-symbols.html'xb's"t-'d^'d^s"t- L binary-file.html'hV'Eu-1^1^Fv- index.html'xb'`Pw-9^9^ww-  output-fil.html'j'x-9^9^x- l target-platform.html'p`'Ry-9^9^Kz- + tool-chain.html org.gradle.nativeplatform.test

Package-level declarations

API classes for testing native binaries.

Types

Link copied to clipboard
An executable which runs a suite of tests.
Link copied to clipboard
A component representing a suite of tests that will be executed together.
Link copied to clipboard
Represents a component that can run tests.
Link copied to clipboard
Represents a component that defines a test suite.
getComponent

getComponent

getExecutableFile

getExecutableFile

abstract fun getExecutableFile(): File(source)

The executable file.

getExecutable

getExecutable

getInstallation

getInstallation

getTasks getTestSuite

getTestSuite

INDX( e<(x-'xd'xX-֍-֍-$--tasks-collectionl'xf'w~-T_T_w~- p get-component.html'r'x0-T_T_W-  get-executable-file.html'xh'-Z'_Z'_B-  get-executable.html'l'O-Z'_Z'_w-  get-installation.html'p^'-eN_eN_Ԩ- e get-tasks.html'xh'~-eN_eN_DŽ-  get-test-suite.html'n'*-eN_eN_LJ-  get-testedbinary.html'hV'p-ru_ru_J-@1 index.html getTestedBinary

getTestedBinary

The tested binary.

NativeTestSuiteBinarySpec

NativeTestSuiteBinarySpec

Types

Link copied to clipboard
Provides access to key tasks used for building the binary.

Functions

Link copied to clipboard
abstract fun builtBy(tasks: Array<Any>)
Link copied to clipboard
abstract fun checkedBy(tasks: Array<Any>)
Link copied to clipboard
abstract fun getAssembler(): Tool
Link copied to clipboard
Link copied to clipboard
abstract fun getBuildTask(): Task
Link copied to clipboard
abstract fun getBuildType(): BuildType
Link copied to clipboard
Link copied to clipboard
abstract fun getCheckTask(): Task
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getExecutableFile(): File
The executable file.
Link copied to clipboard
abstract fun getFlavor(): Flavor
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getLinker(): Tool
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getStaticLibArchiver(): Tool
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
The tested binary.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun isBuildable(): Boolean
Link copied to clipboard
abstract fun lib(library: Any)
Link copied to clipboard
abstract fun setBuildTask(buildTask: Task)
Link copied to clipboard
abstract fun setCheckTask(checkTask: Task)
getInstall

getInstall

abstract fun getInstall(): Task(source)

The install task.

getLink

getLink

abstract fun getLink(): Task(source)

The link task.

TasksCollection

TasksCollection

Provides access to key tasks used for building the binary.

Functions

Link copied to clipboard
abstract fun add(p: E): Boolean
Link copied to clipboard
abstract fun addAll(p: Collection<out E>): Boolean
Link copied to clipboard
abstract fun addAllLater(provider: Provider<out Iterable<T>>)
Link copied to clipboard
abstract fun addLater(provider: Provider<out T>)
Link copied to clipboard
abstract fun all(action: Action<out Any>)
Link copied to clipboard
abstract fun clear()
Link copied to clipboard
abstract fun configureEach(action: Action<out Any>)
Link copied to clipboard
abstract fun contains(p: Any): Boolean
Link copied to clipboard
abstract fun containsAll(p: Collection<out Any>): Boolean
Link copied to clipboard
open fun <E> copyOf(coll: Collection<out E>): Set<E>
Link copied to clipboard
abstract fun <T : Task?> create(name: String, type: Class<T>, config: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <T : Task> BinaryTasksCollection.create(name: String, type: KClass<T>, config: Action<in T>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.platform.base.BinaryTasksCollection.create.

Link copied to clipboard
abstract fun equals(p: Any): Boolean
Link copied to clipboard
abstract fun findAll(spec: Closure): Collection<T>
abstract fun findAll(spec: Closure): Set<T>
Link copied to clipboard
open fun forEach(action: Consumer<out Any>)
Link copied to clipboard
abstract fun getBuild(): Task
Link copied to clipboard
abstract fun getCheck(): Task
Link copied to clipboard
abstract fun getInstall(): Task
The install task.
Link copied to clipboard
abstract fun getLink(): Task
The link task.
Link copied to clipboard
abstract fun getRun(): Task
Link copied to clipboard
abstract fun hashCode(): Int
Link copied to clipboard
abstract fun isEmpty(): Boolean
Link copied to clipboard
abstract fun iterator(): Iterator<T>
abstract fun iterator(): Iterator<E>
Link copied to clipboard
abstract fun matching(spec: Spec<out Any>): DomainObjectCollection<T>
abstract fun matching(spec: Spec<out Any>): DomainObjectSet<T>
Link copied to clipboard
open fun <E> of(): Set<E>
Link copied to clipboard
open fun parallelStream(): Stream<E>
Link copied to clipboard
abstract fun remove(p: Any): Boolean
Link copied to clipboard
abstract fun removeAll(p: Collection<out Any>): Boolean
Link copied to clipboard
open fun removeIf(filter: Predicate<out Any>): Boolean
Link copied to clipboard
abstract fun retainAll(p: Collection<out Any>): Boolean
Link copied to clipboard
abstract fun size(): Int
Link copied to clipboard
Link copied to clipboard
open fun stream(): Stream<E>
Link copied to clipboard
abstract fun taskName(verb: String): String
Link copied to clipboard
abstract fun toArray(): Array<Any>
abstract fun <T> toArray(p: Array<T>): Array<T>
Link copied to clipboard
abstract fun whenObjectAdded(action: Closure)
abstract fun whenObjectAdded(action: Action<out Any>): Action<out Any>
Link copied to clipboard
abstract fun whenObjectRemoved(action: Closure)
abstract fun whenObjectRemoved(action: Action<out Any>): Action<out Any>
Link copied to clipboard
abstract fun <S : T?> withType(type: Class<S>): DomainObjectCollection<S>
abstract fun <S : T?> withType(type: Class<S>): DomainObjectSet<S>
Link copied to clipboard

Returns a collection containing the objects in this collection of the given type. The returned collection is live, so that when matching objects are later added to this collection, they are also visible in the filtered collection.

inline fun <S : Any> DomainObjectCollection<in S>.withType(noinline configuration: S.() -> Unit): DomainObjectCollection<S>

Returns a collection containing the objects in this collection of the given type. Equivalent to calling withType(type).all(configureAction).

inline fun <S : T, T : Any> DomainObjectCollection<T>.withType(type: KClass<S>, configureAction: Action<in S>): DomainObjectCollection<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.DomainObjectCollection.withType.

inline fun <S : T, T : Any> DomainObjectSet<T>.withType(type: KClass<S>): DomainObjectSet<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.DomainObjectSet.withType.

getTestedComponent

getTestedComponent

NativeTestSuiteSpec

NativeTestSuiteSpec

A component representing a suite of tests that will be executed together.

Inheritors

Functions

Link copied to clipboard
abstract fun getBaseName(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getVariants(): Iterable<out Binary>
Link copied to clipboard
abstract fun setBaseName(baseName: String)
Link copied to clipboard
Link copied to clipboard
abstract fun testing(p: ComponentSpec)
getRunTask

getRunTask

abstract fun getRunTask(): Provider<out Task>(source)

Returns the task that runs the tests for this component.

TestComponent

TestComponent

Represents a component that can run tests.

Inheritors

Functions

Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getRunTask(): Provider<out Task>
Returns the task that runs the tests for this component.
getTestBinary

getTestBinary

Returns the binary to use as the default to run this test suite.

TestSuiteComponent

TestSuiteComponent

Represents a component that defines a test suite.

Inheritors

Functions

Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getTestBinary(): Provider<out TestComponent>
Returns the binary to use as the default to run this test suite.
org.gradle.nativeplatform.test.cpp

Package-level declarations

API classes for C++ test integration.

Types

Link copied to clipboard
A test executable with tests implemented in C++.
Link copied to clipboard
A C++ test suite.
getRunTask

getRunTask

CppTestExecutable

CppTestExecutable

A test executable with tests implemented in C++.

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
abstract fun getBaseName(): Provider<String>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getLinkTask(): Provider<out LinkExecutable>
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getObjects(): FileCollection
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun isDebuggable(): Boolean
Link copied to clipboard
abstract fun isOptimized(): Boolean
getTestBinary

getTestBinary

CppTestSuite

CppTestSuite

A C++ test suite.

Functions

Link copied to clipboard
abstract fun getBaseName(): Property<String>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getHeaderFiles(): FileTree
Link copied to clipboard
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun privateHeaders(action: Action<out Any>)
Link copied to clipboard
abstract fun source(action: Action<out Any>)
org.gradle.nativeplatform.test.cpp.plugins

Package-level declarations

Plugins for C++ test integration.

Types

Link copied to clipboard
abstract class CppUnitTestPlugin : Plugin<T>
A plugin that sets up the infrastructure for testing C++ binaries using a simple test executable.
CppUnitTestPlugin

CppUnitTestPlugin

@Inject
constructor(componentFactory: NativeComponentFactory, toolChainSelector: ToolChainSelector, objectFactory: ObjectFactory, attributesFactory: ImmutableAttributesFactory, targetMachineFactory: TargetMachineFactory)(source)
apply

apply

open fun apply(project: Project)(source)
CppUnitTestPlugin

CppUnitTestPlugin

abstract class CppUnitTestPlugin : Plugin<T> (source)

A plugin that sets up the infrastructure for testing C++ binaries using a simple test executable. Gradle will create a RunTestExecutable task that relies on the exit code of the binary.

Constructors

Link copied to clipboard
@Inject
constructor(componentFactory: NativeComponentFactory, toolChainSelector: ToolChainSelector, objectFactory: ObjectFactory, attributesFactory: ImmutableAttributesFactory, targetMachineFactory: TargetMachineFactory)

Functions

Link copied to clipboard
open fun apply(project: Project)
org.gradle.nativeplatform.test.cunit

Package-level declarations

API classes for cunit integration.

Types

Link copied to clipboard
An executable which run a CUnit test suite.
Link copied to clipboard
Test suite of CUnit tests.
getComponent

getComponent

getTestSuite

getTestSuite

CUnitTestSuiteBinarySpec

CUnitTestSuiteBinarySpec

An executable which run a CUnit test suite.

Functions

Link copied to clipboard
abstract fun builtBy(tasks: Array<Any>)
Link copied to clipboard
abstract fun checkedBy(tasks: Array<Any>)
Link copied to clipboard
abstract fun getAssembler(): Tool
Link copied to clipboard
Link copied to clipboard
abstract fun getBuildTask(): Task
Link copied to clipboard
abstract fun getBuildType(): BuildType
Link copied to clipboard
Link copied to clipboard
abstract fun getCheckTask(): Task
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getExecutableFile(): File
Link copied to clipboard
abstract fun getFlavor(): Flavor
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getLinker(): Tool
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getStaticLibArchiver(): Tool
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun isBuildable(): Boolean
Link copied to clipboard
abstract fun lib(library: Any)
Link copied to clipboard
abstract fun setBuildTask(buildTask: Task)
Link copied to clipboard
abstract fun setCheckTask(checkTask: Task)
CUnitTestSuiteSpec

CUnitTestSuiteSpec

Test suite of CUnit tests.

Functions

Link copied to clipboard
abstract fun getBaseName(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getVariants(): Iterable<out Binary>
Link copied to clipboard
abstract fun setBaseName(baseName: String)
Link copied to clipboard
Link copied to clipboard
abstract fun testing(p: ComponentSpec)
org.gradle.nativeplatform.test.cunit.plugins

Package-level declarations

Plugins for cunit testing.

Types

Link copied to clipboard
A plugin that applies the CUnitPlugin and adds conventions on top of it.
Link copied to clipboard
abstract class CUnitPlugin : Plugin<T>
A plugin that sets up the infrastructure for testing native binaries with CUnit.
CUnitConventionPlugin

CUnitConventionPlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
CUnitConventionPlugin

CUnitConventionPlugin

A plugin that applies the CUnitPlugin and adds conventions on top of it.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
CUnitPlugin

CUnitPlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
CUnitPlugin

CUnitPlugin

abstract class CUnitPlugin : Plugin<T> (source)

A plugin that sets up the infrastructure for testing native binaries with CUnit.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
org.gradle.nativeplatform.test.cunit.tasks

Package-level declarations

Tasks for cunit integration.

Types

Link copied to clipboard
@DisableCachingByDefault(because = "Not worth caching")
abstract class GenerateCUnitLauncher : DefaultTask
Generated the Gradle CUnit launcher: main method and header.
GenerateCUnitLauncher

GenerateCUnitLauncher

constructor()
generate

generate

open fun generate()(source)
headerDir GenerateCUnitLauncher

GenerateCUnitLauncher

@DisableCachingByDefault(because = "Not worth caching")
abstract class GenerateCUnitLauncher : DefaultTask(source)

Generated the Gradle CUnit launcher: main method and header.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun generate()
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
sourceDir org.gradle.nativeplatform.test.googletest

Package-level declarations

API classes for Google Test integration.

Types

Link copied to clipboard
An executable which run a Google Test test suite.
Link copied to clipboard
Test suite of Google Test tests.
getComponent getTestSuite GoogleTestTestSuiteBinarySpec

GoogleTestTestSuiteBinarySpec

An executable which run a Google Test test suite.

Functions

Link copied to clipboard
abstract fun builtBy(tasks: Array<Any>)
Link copied to clipboard
abstract fun checkedBy(tasks: Array<Any>)
Link copied to clipboard
abstract fun getAssembler(): Tool
Link copied to clipboard
Link copied to clipboard
abstract fun getBuildTask(): Task
Link copied to clipboard
abstract fun getBuildType(): BuildType
Link copied to clipboard
Link copied to clipboard
abstract fun getCheckTask(): Task
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getExecutableFile(): File
Link copied to clipboard
abstract fun getFlavor(): Flavor
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getLinker(): Tool
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getStaticLibArchiver(): Tool
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun isBuildable(): Boolean
Link copied to clipboard
abstract fun lib(library: Any)
Link copied to clipboard
abstract fun setBuildTask(buildTask: Task)
Link copied to clipboard
abstract fun setCheckTask(checkTask: Task)
GoogleTestTestSuiteSpec

GoogleTestTestSuiteSpec

Test suite of Google Test tests.

Functions

Link copied to clipboard
abstract fun getBaseName(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getVariants(): Iterable<out Binary>
Link copied to clipboard
abstract fun setBaseName(baseName: String)
Link copied to clipboard
Link copied to clipboard
abstract fun testing(p: ComponentSpec)
org.gradle.nativeplatform.test.googletest.plugins

Package-level declarations

Plugins for Google Test testing.

Types

Link copied to clipboard
A plugin that applies the GoogleTestPlugin and adds conventions on top of it.
Link copied to clipboard
abstract class GoogleTestPlugin : Plugin<T>
A plugin that sets up the infrastructure for testing native binaries with GoogleTest.
GoogleTestConventionPlugin

GoogleTestConventionPlugin

constructor()
apply GoogleTestConventionPlugin

GoogleTestConventionPlugin

A plugin that applies the GoogleTestPlugin and adds conventions on top of it.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
GoogleTestPlugin

GoogleTestPlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
GoogleTestPlugin

GoogleTestPlugin

A plugin that sets up the infrastructure for testing native binaries with GoogleTest.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
org.gradle.nativeplatform.test.plugins

Package-level declarations

Plugin classes for generic support for testing native binaries.

Types

Link copied to clipboard
A plugin that sets up the infrastructure for testing native binaries.
Link copied to clipboard
Common base plugin for all native testing plugins.
NativeBinariesTestPlugin

NativeBinariesTestPlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
NativeBinariesTestPlugin

NativeBinariesTestPlugin

A plugin that sets up the infrastructure for testing native binaries.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
NativeTestingBasePlugin

NativeTestingBasePlugin

@Inject
constructor(targetMachineFactory: TargetMachineFactory)(source)
apply

apply

open fun apply(project: Project)(source)
NativeTestingBasePlugin

NativeTestingBasePlugin

Common base plugin for all native testing plugins.

Expects plugins to register the native test suites in the getComponents container, and defines a number of rules that act on these components to configure them.

  • Adds a "test" task.
  • Configures the "test" task to run the tests of the test component, if present. Expects the test component to be of type TestSuiteComponent.

Constructors

Link copied to clipboard
@Inject
constructor(targetMachineFactory: TargetMachineFactory)

Functions

Link copied to clipboard
open fun apply(project: Project)
org.gradle.nativeplatform.test.tasks

Package-level declarations

Tasks for test execution.

Types

Link copied to clipboard
@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class RunTestExecutable : AbstractExecTask<T> , VerificationTask
Runs a compiled and installed test executable.
RunTestExecutable

RunTestExecutable

constructor()(source)
ignoreFailures

ignoreFailures

Should the build continue if a test fails, or should the build break?

RunTestExecutable

RunTestExecutable

@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class RunTestExecutable : AbstractExecTask<T> , VerificationTask(source)

Runs a compiled and installed test executable.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
open val conventionMapping: ConventionMapping
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Should the build continue if a test fails, or should the build break?
Link copied to clipboard
Link copied to clipboard
The directory where the results should be generated.
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun args(args: Array<Any>): T
abstract fun args(p: Array<Any>): ExecSpec
Link copied to clipboard
open fun commandLine(arguments: Array<Any>): T
abstract fun commandLine(p: Array<Any>): ExecSpec
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun conventionMapping(property: String, mapping: Callable<out Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun environment(name: String, value: Any): T
abstract fun environment(p: Map<String, out Any>): ProcessForkOptions
Link copied to clipboard
inline fun <T : AbstractExecTask<*>> AbstractExecTask<T>.environment(vararg environmentVariables: Pair<String, Any?>): T

Kotlin extension function for org.gradle.api.tasks.AbstractExecTask.environment.

inline fun ProcessForkOptions.environment(vararg environmentVariables: Pair<String, Any?>): ProcessForkOptions

Kotlin extension function for org.gradle.process.ProcessForkOptions.environment.

Link copied to clipboard
open fun executable(executable: Any): T
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getArgs(): List<String>
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getExecutable(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
abstract fun getIgnoreFailures(): Boolean
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun getWorkingDir(): File
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setArgs(arguments: List<String>): T
abstract fun setArgs(p: List<String>): ExecSpec
Link copied to clipboard
open fun setCommandLine(args: List<String>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setEnvironment(environmentVariables: Map<String, out Any>)
Link copied to clipboard
inline fun ProcessForkOptions.setEnvironment(vararg environmentVariables: Pair<String, Any?>)

Kotlin extension function for org.gradle.process.ProcessForkOptions.setEnvironment.

Link copied to clipboard
open fun setErrorOutput(outputStream: OutputStream): T
Link copied to clipboard
open fun setExecutable(executable: String)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setIgnoreExitValue(ignoreExitValue: Boolean): T
Link copied to clipboard
abstract fun setIgnoreFailures(ignoreFailures: Boolean)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setStandardInput(inputStream: InputStream): T
Link copied to clipboard
Link copied to clipboard
open fun setWorkingDir(dir: File)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
Link copied to clipboard
open fun workingDir(dir: Any): T
isIgnoreFailures

isIgnoreFailures

outputDir

outputDir

The directory where the results should be generated.

org.gradle.nativeplatform.test.xctest

Package-level declarations

Model classes for the XCTest plugins.

Types

Link copied to clipboard
An test binary built from Swift source.
Link copied to clipboard
An XCTest executable for tests implemented in Swift.
Link copied to clipboard
An XCTest executable for tests implemented in Swift.
Link copied to clipboard
A XCTest suite, implemented in Swift.
getExecutableFile

getExecutableFile

Returns the executable test file for this binary.

getInstallDirectory

getInstallDirectory

Returns the installation directory for this binary.

getLinkTask

getLinkTask

Returns the link task for this binary.

getRunScriptFile

getRunScriptFile

Returns the script for running this binary.

getRunTask

getRunTask

abstract fun getRunTask(): Provider<out XCTest>(source)
SwiftXCTestBinary

SwiftXCTestBinary

An test binary built from Swift source.

Inheritors

Functions

Link copied to clipboard
abstract fun getBaseName(): Provider<String>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Returns the executable test file for this binary.
Link copied to clipboard
Returns the installation directory for this binary.
Link copied to clipboard
Link copied to clipboard
Returns the link task for this binary.
Link copied to clipboard
abstract fun getModule(): Provider<String>
Link copied to clipboard
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getObjects(): FileCollection
Link copied to clipboard
Returns the script for running this binary.
Link copied to clipboard
abstract fun getRunTask(): Provider<out XCTest>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun isDebuggable(): Boolean
Link copied to clipboard
abstract fun isOptimized(): Boolean
Link copied to clipboard
abstract fun isTestable(): Boolean
INDX( ><((0(r/(V_-&&V_-  get-executable-file.html1(v/(`-&&a-  get-install-directory.html2(xf/(] b-QQ] b-  get-link-task.html3(r/(,b-QQ,b-  get-run-script-file.html4(xd/(}d-﬋﬋}d- N get-run-task.html5(hV/(6e-Q{e-o index.html getLinkTask

getLinkTask

Returns the link task for this bundle.

SwiftXCTestBundle

SwiftXCTestBundle

An XCTest executable for tests implemented in Swift.

Functions

Link copied to clipboard
abstract fun getBaseName(): Provider<String>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getLinkTask(): Provider<out LinkMachOBundle>
Returns the link task for this bundle.
Link copied to clipboard
abstract fun getModule(): Provider<String>
Link copied to clipboard
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getObjects(): FileCollection
Link copied to clipboard
Link copied to clipboard
abstract fun getRunTask(): Provider<out Task>
abstract fun getRunTask(): Provider<out XCTest>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun isDebuggable(): Boolean
Link copied to clipboard
abstract fun isOptimized(): Boolean
Link copied to clipboard
abstract fun isTestable(): Boolean
SwiftXCTestExecutable

SwiftXCTestExecutable

An XCTest executable for tests implemented in Swift.

Functions

Link copied to clipboard
abstract fun getBaseName(): Provider<String>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getLinkTask(): Provider<out LinkExecutable>
Link copied to clipboard
abstract fun getModule(): Provider<String>
Link copied to clipboard
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getObjects(): FileCollection
Link copied to clipboard
Link copied to clipboard
abstract fun getRunTask(): Provider<out Task>
abstract fun getRunTask(): Provider<out XCTest>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun isDebuggable(): Boolean
Link copied to clipboard
abstract fun isOptimized(): Boolean
Link copied to clipboard
abstract fun isTestable(): Boolean
INDX( <(/(n-(^-Q{e-Q{e-}d--swift-x-c-test-binaryG6(n-(f-h-h-g--swift-x-c-test-bundleG9(v-(i-j-j-i--swift-x-c-test-executable;(l-(iPl-p-p-2n--swift-x-c-test-suite.(hV-(]-]-0+/ index.html getBinaries

getBinaries

Returns the binaries for this library.

getTestBinary

getTestBinary

SwiftXCTestSuite

SwiftXCTestSuite

A XCTest suite, implemented in Swift.

Functions

Link copied to clipboard

Returns the binaries for this library.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getModule(): Property<String>
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun source(action: Action<out Any>)
org.gradle.nativeplatform.test.xctest.plugins

Package-level declarations

Plugins for XCTest testing.

Types

Link copied to clipboard
abstract class XCTestConventionPlugin : Plugin<T>
A plugin that sets up the infrastructure for testing native binaries with XCTest test framework.
XCTestConventionPlugin

XCTestConventionPlugin

@Inject
constructor(sdkPlatformPathLocator: MacOSSdkPlatformPathLocator, toolChainSelector: ToolChainSelector, componentFactory: NativeComponentFactory, objectFactory: ObjectFactory, attributesFactory: ImmutableAttributesFactory, targetMachineFactory: TargetMachineFactory)(source)
apply

apply

open fun apply(project: Project)(source)
XCTestConventionPlugin

XCTestConventionPlugin

A plugin that sets up the infrastructure for testing native binaries with XCTest test framework. It also adds conventions on top of it.

Constructors

Link copied to clipboard
@Inject
constructor(sdkPlatformPathLocator: MacOSSdkPlatformPathLocator, toolChainSelector: ToolChainSelector, componentFactory: NativeComponentFactory, objectFactory: ObjectFactory, attributesFactory: ImmutableAttributesFactory, targetMachineFactory: TargetMachineFactory)

Functions

Link copied to clipboard
open fun apply(project: Project)
org.gradle.nativeplatform.test.xctest.tasks

Package-level declarations

Tasks for XCTest execution.

Types

Link copied to clipboard
@DisableCachingByDefault(because = "Not worth caching")
abstract class InstallXCTestBundle : DefaultTask
Creates a XCTest bundle with a run script so it can be easily executed.
Link copied to clipboard
@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class XCTest : AbstractTestTask
Executes XCTest tests.
InstallXCTestBundle

InstallXCTestBundle

constructor()(source)
bundleBinaryFile

bundleBinaryFile

@get:Internal(value = "covered by getBundleBinary()")
val bundleBinaryFile: RegularFileProperty(source)
getRunScriptFile

getRunScriptFile

Returns the script file that can be used to run the install image.

InstallXCTestBundle

InstallXCTestBundle

@DisableCachingByDefault(because = "Not worth caching")
abstract class InstallXCTestBundle : DefaultTask(source)

Creates a XCTest bundle with a run script so it can be easily executed.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
@get:Internal(value = "covered by getBundleBinary()")
val bundleBinaryFile: RegularFileProperty
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
Returns the script file that can be used to run the install image.
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
installDirectory XCTest

XCTest

constructor()(source)
XCTest

XCTest

@DisableCachingByDefault(because = "Not made cacheable, yet")
abstract class XCTest : AbstractTestTask(source)

Executes XCTest tests. Test are always run in a single execution.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
open val conventionMapping: ConventionMapping
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
@get:Internal(value = "Covered by getRunScript")
val runScriptFile: RegularFileProperty
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun addTestListener(listener: TestListener)
Link copied to clipboard
Link copied to clipboard
open fun afterSuite(closure: Closure)
Link copied to clipboard
open fun afterTest(closure: Closure)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun beforeSuite(closure: Closure)
Link copied to clipboard
open fun beforeTest(closure: Closure)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun conventionMapping(property: String, mapping: Callable<out Any>): Task
Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun executeTests()
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun getFilter(): TestFilter
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
abstract fun getReports(): T
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun onOutput(closure: Closure)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun removeTestListener(listener: TestListener)
Link copied to clipboard
Link copied to clipboard
abstract fun reports(closure: Closure): T
open fun reports(closure: Closure): TestTaskReports
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setTestNameIncludePatterns(testNamePattern: List<String>): XCTest
Link copied to clipboard
Link copied to clipboard
open fun testLogging(closure: Closure)
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
runScriptFile

runScriptFile

@get:Internal(value = "Covered by getRunScript")
val runScriptFile: RegularFileProperty(source)
setTestNameIncludePatterns

setTestNameIncludePatterns

open fun setTestNameIncludePatterns(testNamePattern: List<String>): XCTest(source)
testInstallDirectory

testInstallDirectory

workingDirectory

workingDirectory

INDX( =(0aN(p^M(-MM- ( -x-c-test.htmlO(hVM(qR-SSۡ-č index.htmlP(jM(|P-^^|P-  run-script-file.htmlQ(M(o-^^o-  #set-test-nme-include-patterns.htmlR(xM(-^^-  test-install-directory.htmlS(nM(o-g.g.ӊ-  working-directory.html org.gradle.nativeplatform.toolchain

Package-level declarations

Classes that allow C++ tool chains to be configured.

Types

Link copied to clipboard
The Clang tool chain.
Link copied to clipboard
An executable tool that forms part of a tool chain.
Link copied to clipboard
The GNU GCC tool chain.
Link copied to clipboard
An executable tool used for GCC that allows customizing the executable.
Link copied to clipboard
A ToolChain that can handle additional platforms simply by configuring the NativeBinary.
Link copied to clipboard
GCC specific settings for the tools used to build for a particular platform.
Link copied to clipboard
A platform specific configurable tool chain.
Link copied to clipboard
A set of compilers and linkers that are used together to construct a native binary.
Link copied to clipboard
The Swift Compiler tool chain.
Link copied to clipboard
Swiftc specific settings for the tools used to build for a particular platform.
Link copied to clipboard
The Visual C++ tool chain.
Link copied to clipboard
Visual C++ specific settings for the tools used to build for a particular platform.
Clang

Clang

The Clang tool chain.

Functions

Link copied to clipboard
abstract fun eachPlatform(action: Action<out Any>)
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getPath(): List<File>
Link copied to clipboard
abstract fun path(pathEntries: Array<Any>)
Link copied to clipboard
abstract fun setTargets(platformNames: Array<String>)
Link copied to clipboard
abstract fun target(platformName: String)
CommandLineToolConfiguration

CommandLineToolConfiguration

An executable tool that forms part of a tool chain.

Inheritors

Functions

Link copied to clipboard
abstract fun withArguments(arguments: Action<out Any>)
Adds an action that will be applied to the command-line arguments prior to execution.
withArguments

withArguments

abstract fun withArguments(arguments: Action<out Any>)(source)

Adds an action that will be applied to the command-line arguments prior to execution.

Gcc

Gcc

The GNU GCC tool chain.

Functions

Link copied to clipboard
abstract fun eachPlatform(action: Action<out Any>)
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getPath(): List<File>
Link copied to clipboard
abstract fun path(pathEntries: Array<Any>)
Link copied to clipboard
abstract fun setTargets(platformNames: Array<String>)
Link copied to clipboard
abstract fun target(platformName: String)
getExecutable

getExecutable

abstract fun getExecutable(): String(source)

The name of the executable file for this tool.

GccCommandLineToolConfiguration

GccCommandLineToolConfiguration

An executable tool used for GCC that allows customizing the executable.

Functions

Link copied to clipboard
abstract fun getExecutable(): String
The name of the executable file for this tool.
Link copied to clipboard
abstract fun setExecutable(file: String)
Set the name of the executable file for this tool.
Link copied to clipboard
abstract fun withArguments(arguments: Action<out Any>)
setExecutable

setExecutable

abstract fun setExecutable(file: String)(source)

Set the name of the executable file for this tool. The executable will be located in the tool chain path.

INDX( c=(nV(`NT(~-7-7-~--clanghX(T( ---- -command-line-tool-configuration[(`JT(<---<--gccx.h](T(=-p-p-\ݘ-$-gcc-commad-line-tool-configurationa(vT(A-Ȣ-Ȣ-@--gcc-compatible-tool-chainh(rT(-묧-묧-碫--gcc-platform-tool-chainq(xT(%-Q-Q---native-platform-tool-chaint(xfT(/k-.-.-/k--native-tool-chainv(xT(8-W-W-8--native-tool-chain-registryx(`PT(&--- 縧--swiftc|(xT(---B--swiftc-platform-tool-chain(hXT(§-;ɧ-;ɧ- ǧ- -visual-cpp(T(bʧ-$ӧ-$ӧ-Uѧ--visual-cpp-platform-tool-chainU(hVT(卧-g.g.k -x index.html eachPlatform

eachPlatform

abstract fun eachPlatform(action: Action<out Any>)(source)

Adds an action that can fine-tune the tool configuration for each platform supported by this tool chain.

getPath

getPath

abstract fun getPath(): List<File>(source)

The paths setting required for executing the tool chain. These are used to locate tools for this tool chain, and are prepended to the system PATH when executing these tools.

GccCompatibleToolChain

GccCompatibleToolChain

A ToolChain that can handle additional platforms simply by configuring the NativeBinary.

Inheritors

Functions

Link copied to clipboard
abstract fun eachPlatform(action: Action<out Any>)
Adds an action that can fine-tune the tool configuration for each platform supported by this tool chain.
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getPath(): List<File>
The paths setting required for executing the tool chain.
Link copied to clipboard
abstract fun path(pathEntries: Array<Any>)
Append an entry or entries to the tool chain path.
Link copied to clipboard
abstract fun setTargets(platformNames: Array<String>)
Override the current platform configuration with target platforms specified by name
Link copied to clipboard
abstract fun target(platformName: String)
Add support for target platform specified by name.
abstract fun target(platformName: String, action: Action<out Any>)
Add configuration for a target platform specified by name with additional configuration action.
path

path

abstract fun path(pathEntries: Array<Any>)(source)

Append an entry or entries to the tool chain path.

Parameters

pathEntries

The path values to append. These are evaluated as per files

setTargets

setTargets

abstract fun setTargets(platformNames: Array<String>)(source)

Override the current platform configuration with target platforms specified by name

target

target

abstract fun target(platformName: String)(source)

Add support for target platform specified by name.


abstract fun target(platformName: String, action: Action<out Any>)(source)

Add configuration for a target platform specified by name with additional configuration action.

INDX( 1=(b(xfa(y-񏭚񏭚y- ] each-platform.htmlc(p\a(--  get-path.htmld(hVa(--`T index.htmle(hTa(1-??;"-  path.htmlf(xba(@-??g-  set-targets.htmlg(hXa(p-??Ȣ-  target.html getAssembler

getAssembler

Returns the settings to use for the assembler.

getCppCompiler

getCppCompiler

Returns the settings to use for the C++ compiler.

getLinker

getLinker

Returns the settings to use for the linker.

getObjcCompiler

getObjcCompiler

Returns the settings to use for the Objective-C compiler.

getObjcppCompiler

getObjcppCompiler

Returns the settings to use for the Objective-C++ compiler.

getStaticLibArchiver

getStaticLibArchiver

Returns the settings to use for the archiver.

INDX( L?=(ti(xfh(5-ff椧-  get-assembler.htmlj(lh(-΍΍-  get-cpp-compiler.htmlk(p`h(-΍΍5-  get-linker.htmll(nh(-ѴѴ-  ge-objc-compiler.htmlm(rh(j-ѴѴj-  get-objcpp-compiler.htmln(zh(=-ѴѴM- 2 get-static-lib-archiver.htmlo(xfh(碫-ېې碫-  getc-compiler.htmlp(hVh(묧-ېې묧-` getcCompiler

getcCompiler

Returns the settings to use for the C compiler.

GccPlatformToolChain

GccPlatformToolChain

GCC specific settings for the tools used to build for a particular platform.

Functions

Link copied to clipboard
Returns the settings to use for the assembler.
Link copied to clipboard
Returns the settings to use for the C compiler.
Link copied to clipboard
Returns the settings to use for the C++ compiler.
Link copied to clipboard
Returns the settings to use for the linker.
Link copied to clipboard
Returns the settings to use for the Objective-C compiler.
Link copied to clipboard
Returns the settings to use for the Objective-C++ compiler.
Link copied to clipboard
abstract fun getPlatform(): NativePlatform
Link copied to clipboard
Returns the settings to use for the archiver.
getPlatform

getPlatform

Returns the platform which this tool chain builds for.

NativePlatformToolChain

NativePlatformToolChain

Functions

Link copied to clipboard
abstract fun getPlatform(): NativePlatform
Returns the platform which this tool chain builds for.
NativeToolChain

NativeToolChain

A set of compilers and linkers that are used together to construct a native binary.

Inheritors

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
NativeToolChainRegistry

Properties

Link copied to clipboard

Provides a property delegate that creates elements of the default collection type.

Functions

Link copied to clipboard
abstract fun add(e: T): Boolean
Link copied to clipboard
abstract fun addAll(c: Collection<out T>): Boolean
Link copied to clipboard
abstract fun addAllLater(provider: Provider<out Iterable<T>>)
Link copied to clipboard
abstract fun addLater(provider: Provider<out T>)
Link copied to clipboard
abstract fun addRule(rule: Rule): Rule
Link copied to clipboard
abstract fun all(action: Action<out Any>)
Link copied to clipboard
abstract fun clear()
Link copied to clipboard
abstract fun configure(configureClosure: Closure): NamedDomainObjectContainer<T>
abstract fun configure(cl: Closure): T
Link copied to clipboard
abstract fun configureEach(action: Action<out Any>)
Link copied to clipboard
Link copied to clipboard

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.PolymorphicDomainObjectContainer.containerWithType.

Link copied to clipboard
abstract fun contains(p: Any): Boolean
Link copied to clipboard
abstract fun containsAll(p: Collection<out Any>): Boolean
Link copied to clipboard
open fun <E> copyOf(coll: Collection<out E>): Set<E>
Link copied to clipboard
abstract fun create(name: String): T
abstract fun <U : T?> create(name: String, type: Class<U>): U
Link copied to clipboard

Creates a domain object with the specified name and type, and adds it to the container.

inline fun <U : Any> PolymorphicDomainObjectContainer<in U>.create(name: String, noinline configuration: U.() -> Unit): U

Creates a domain object with the specified name and type, adds it to the container, and configures it with the specified action.

inline fun <U : T, T : Any> PolymorphicDomainObjectContainer<T>.create(name: String, type: KClass<U>): U
inline fun <U : T, T : Any> PolymorphicDomainObjectContainer<T>.create(name: String, type: KClass<U>, configuration: Action<in U>): U

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.PolymorphicDomainObjectContainer.create.

Link copied to clipboard

Provides a property delegate that creates elements of the default collection type with the given configuration.

Provides a property delegate that creates elements of the given type.

Provides a property delegate that creates elements of the given type expressed as a java.lang.Class with the given configuration.

Provides a property delegate that creates elements of the given type with the given configuration.

Link copied to clipboard
abstract fun equals(p: Any): Boolean
Link copied to clipboard
abstract fun findAll(spec: Closure): Collection<T>
abstract fun findAll(spec: Closure): Set<T>
Link copied to clipboard
abstract fun findByName(name: String): T
Link copied to clipboard
open fun forEach(action: Consumer<out Any>)
Link copied to clipboard
operator fun <T : Any> NamedDomainObjectCollection<T>.get(name: String): T

Locates an object by name, failing if there is no such object.

Link copied to clipboard
abstract fun getAsMap(): SortedMap<String, T>
Link copied to clipboard
abstract fun getAt(name: String): T
Link copied to clipboard
abstract fun getByName(name: String): T
Link copied to clipboard
inline fun <T : Any> NamedDomainObjectCollection<out Any>.getByName(name: String): T

Locates an object by name and casts it to the expected type T.

inline fun <T : Any> NamedDomainObjectCollection<out Any>.getByName(name: String, configure: T.() -> Unit): T

Locates an object by name and casts it to the expected type T then configures it.

Locates an object by name and casts it to the expected type.

fun <T : Any> NamedDomainObjectCollection<out Any>.getByName(name: String, type: KClass<T>, configure: T.() -> Unit): T

Locates an object by name and casts it to the expected type then configures it.

Link copied to clipboard
Link copied to clipboard
abstract fun getForPlatform(targetPlatform: P): T
Link copied to clipboard
abstract fun getNamer(): Namer<T>
Link copied to clipboard
abstract fun getNames(): SortedSet<String>
Link copied to clipboard
abstract fun getRules(): List<Rule>
Link copied to clipboard

Provides a property delegate that gets elements of the given type.

Provides a property delegate that gets elements of the given type and applies the given configuration.

Link copied to clipboard
abstract fun hashCode(): Int
Link copied to clipboard
abstract fun isEmpty(): Boolean
Link copied to clipboard
abstract fun iterator(): Iterator<T>
abstract fun iterator(): Iterator<E>
Link copied to clipboard
abstract fun matching(spec: Spec<out Any>): DomainObjectCollection<T>
abstract fun matching(spec: Spec<out Any>): DomainObjectSet<T>
abstract fun matching(spec: Spec<out Any>): NamedDomainObjectCollection<T>
abstract fun matching(spec: Spec<out Any>): NamedDomainObjectSet<T>
Link copied to clipboard
abstract fun maybeCreate(name: String): T
abstract fun <U : T?> maybeCreate(name: String, type: Class<U>): U
Link copied to clipboard

Creates a domain object with the specified name and type if it does not exists, and adds it to the container.

inline fun <U : T, T : Any> PolymorphicDomainObjectContainer<T>.maybeCreate(name: String, type: KClass<U>): U

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.PolymorphicDomainObjectContainer.maybeCreate.

Link copied to clipboard
abstract fun named(name: String): NamedDomainObjectProvider<T>
abstract fun <S : T?> named(name: String, type: Class<S>): NamedDomainObjectProvider<S>
Link copied to clipboard

Locates an object by name and type, without triggering its creation or configuration, failing if there is no such object.

inline fun <S : T, T : Any> NamedDomainObjectCollection<T>.named(name: String, type: KClass<S>, configurationAction: Action<in S>): NamedDomainObjectProvider<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.NamedDomainObjectCollection.named.

inline fun <T : Any> NamedDomainObjectCollection<out Any>.named(name: String, noinline configuration: T.() -> Unit): NamedDomainObjectProvider<T>
fun <T : Any> NamedDomainObjectCollection<out Any>.named(name: String, type: KClass<T>, configuration: T.() -> Unit): NamedDomainObjectProvider<T>

Configures an object by name and type, without triggering its creation or configuration, failing if there is no such object.

Link copied to clipboard
open fun <E> of(): Set<E>
Link copied to clipboard
open fun parallelStream(): Stream<E>
Link copied to clipboard

Allows a NamedDomainObjectCollection to be used as a property delegate.

Link copied to clipboard
abstract fun register(name: String, configurationAction: Action<out Any>): NamedDomainObjectProvider<T>
abstract fun <U : T?> register(name: String, type: Class<U>, configurationAction: Action<out Any>): NamedDomainObjectProvider<U>
Link copied to clipboard

Defines a new object, which will be created when it is required.

inline fun <T : Any> PolymorphicDomainObjectContainer<in T>.register(name: String, noinline configuration: T.() -> Unit): NamedDomainObjectProvider<T>

Defines and configure a new object, which will be created when it is required.

inline fun <U : T, T : Any> PolymorphicDomainObjectContainer<T>.register(name: String, type: KClass<U>, configurationAction: Action<in U>): NamedDomainObjectProvider<U>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.PolymorphicDomainObjectContainer.register.

Link copied to clipboard
abstract fun <U : T?> registerBinding(type: Class<U>, implementationType: Class<out U>)
Link copied to clipboard
inline fun <U : T, T : Any> ExtensiblePolymorphicDomainObjectContainer<T>.registerBinding(type: KClass<U>, implementationType: KClass<out U>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.ExtensiblePolymorphicDomainObjectContainer.registerBinding.

Link copied to clipboard
abstract fun <U : T?> registerFactory(type: Class<U>, factory: NamedDomainObjectFactory<out U>)
Link copied to clipboard
abstract fun remove(p: Any): Boolean
Link copied to clipboard
abstract fun removeAll(p: Collection<out Any>): Boolean
Link copied to clipboard
open fun removeIf(filter: Predicate<out Any>): Boolean
Link copied to clipboard
abstract fun retainAll(p: Collection<out Any>): Boolean
Link copied to clipboard
abstract fun size(): Int
Link copied to clipboard
Link copied to clipboard
open fun stream(): Stream<E>
Link copied to clipboard
abstract fun toArray(): Array<Any>
abstract fun <T> toArray(p: Array<T>): Array<T>
Link copied to clipboard
abstract fun whenObjectAdded(action: Closure)
abstract fun whenObjectAdded(action: Action<out Any>): Action<out Any>
Link copied to clipboard
abstract fun whenObjectRemoved(action: Closure)
abstract fun whenObjectRemoved(action: Action<out Any>): Action<out Any>
Link copied to clipboard
abstract fun <S : T?> withType(type: Class<S>): DomainObjectCollection<S>
abstract fun <S : T?> withType(type: Class<S>): DomainObjectSet<S>
abstract fun <S : T?> withType(type: Class<S>): NamedDomainObjectCollection<S>
abstract fun <S : T?> withType(type: Class<S>): NamedDomainObjectSet<S>
Link copied to clipboard

Returns a collection containing the objects in this collection of the given type. The returned collection is live, so that when matching objects are later added to this collection, they are also visible in the filtered collection.

inline fun <S : Any> DomainObjectCollection<in S>.withType(noinline configuration: S.() -> Unit): DomainObjectCollection<S>

Returns a collection containing the objects in this collection of the given type. Equivalent to calling withType(type).all(configureAction).

inline fun <S : T, T : Any> DomainObjectCollection<T>.withType(type: KClass<S>, configureAction: Action<in S>): DomainObjectCollection<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.DomainObjectCollection.withType.

inline fun <S : T, T : Any> DomainObjectSet<T>.withType(type: KClass<S>): DomainObjectSet<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.DomainObjectSet.withType.

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.NamedDomainObjectCollection.withType.

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.NamedDomainObjectSet.withType.

getPath

getPath

abstract fun getPath(): List<File>(source)

The paths setting required for executing the tool chain. These are used to locate tools for this tool chain, and are prepended to the system PATH when executing these tools.

Swiftc

Swiftc

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getPath(): List<File>
The paths setting required for executing the tool chain.
Link copied to clipboard
abstract fun path(pathEntries: Array<Any>)
Append an entry or entries to the tool chain path.
path

path

abstract fun path(pathEntries: Array<Any>)(source)

Append an entry or entries to the tool chain path.

Parameters

pathEntries

The path values to append. These are evaluated as per files

getLinker

getLinker

Returns the linker tool.

getStaticLibArchiver

getStaticLibArchiver

Returns the settings to use for the archiver.

getStripper

getStripper

Returns the tool for stripping symbols.

getSwiftCompiler

getSwiftCompiler

Returns the compiler tool.

getSymbolExtractor

getSymbolExtractor

Returns the tool for extracting symbols.

SwiftcPlatformToolChain

SwiftcPlatformToolChain

Swiftc specific settings for the tools used to build for a particular platform.

Functions

Link copied to clipboard
Returns the linker tool.
Link copied to clipboard
abstract fun getPlatform(): NativePlatform
Link copied to clipboard
Returns the settings to use for the archiver.
Link copied to clipboard
Returns the tool for stripping symbols.
Link copied to clipboard
Returns the compiler tool.
Link copied to clipboard
Returns the tool for extracting symbols.
INDX( W=( }(p`|(ӻ--  get-linker.html~(z|(H-H- 4 get-static-lib-archiver.html(xd|(gὧ-葭葭gὧ-  get-stripper.html(p|(-!-  get-swift-compiler.html(t|(B-B-  get-symbol-extractor.html(hV|(KT-66-PuC index.html eachPlatform

eachPlatform

abstract fun eachPlatform(action: Action<out Any>)(source)

Adds an action that can fine-tune the tool configuration for each platform supported by this tool chain.

getInstallDir

getInstallDir

abstract fun getInstallDir(): File(source)

The directory where Visual Studio or Visual C++ is installed.

getWindowsSdkDir

getWindowsSdkDir

abstract fun getWindowsSdkDir(): File(source)

The directory where Windows SDK is installed.

VisualCpp

VisualCpp

The Visual C++ tool chain.

Functions

Link copied to clipboard
abstract fun eachPlatform(action: Action<out Any>)
Adds an action that can fine-tune the tool configuration for each platform supported by this tool chain.
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getInstallDir(): File
The directory where Visual Studio or Visual C++ is installed.
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getWindowsSdkDir(): File
The directory where Windows SDK is installed.
Link copied to clipboard
abstract fun setInstallDir(installDir: Any)
The directory where Visual Studio or Visual C++ is installed.
Link copied to clipboard
abstract fun setWindowsSdkDir(installDir: Any)
The directory where Windows SDK is installed.
setInstallDir

setInstallDir

abstract fun setInstallDir(installDir: Any)(source)

The directory where Visual Studio or Visual C++ is installed.

setWindowsSdkDir

setWindowsSdkDir

abstract fun setWindowsSdkDir(installDir: Any)(source)

The directory where Windows SDK is installed.

INDX( Wb=(((xf(Xç-]]ç- < each-platform.html(j(ħ-]]ħ-  get-install-dir.html(r( ŧ- ŧ-  get-windows-sdk-dir.html(hV( Ƨ-ӫӫƧ-PL index.html(j( ǧ-ӫӫ ǧ- . set-install-dir.html(r(ȧ-ҒҒ;ɧ- I set-windows-sdk-dir.html getAssembler

getAssembler

Returns the settings to use for the assembler.

getCppCompiler

getCppCompiler

Returns the settings to use for the C++ compiler.

getLinker

getLinker

Returns the settings to use for the linker.

getRcCompiler

getRcCompiler

Returns the settings to use for the Windows resources compiler.

getStaticLibArchiver

getStaticLibArchiver

Returns the settings to use for the archiver.

getcCompiler

getcCompiler

Returns the settings to use for the C compiler.

INDX( n=(t(xf(˧-ҒҒ˧-  get-assembler.html(l(_̧-_̧-  get-cpp-compiler.html(p`(Vͧ-ͧ-  get-linker.html(j(FΧ-  FΧ-  ge-rc-compiler.html(z(Ч-  DЧ- = get-static-lib-archiver.html(xf(ѧ-GGUѧ-  getc-compiler.html(hV($ӧ-GG$ӧ-PcK index.html VisualCppPlatformToolChain

VisualCppPlatformToolChain

Visual C++ specific settings for the tools used to build for a particular platform.

Functions

Link copied to clipboard
Returns the settings to use for the assembler.
Link copied to clipboard
Returns the settings to use for the C compiler.
Link copied to clipboard
Returns the settings to use for the C++ compiler.
Link copied to clipboard
Returns the settings to use for the linker.
Link copied to clipboard
abstract fun getPlatform(): NativePlatform
Link copied to clipboard
Returns the settings to use for the Windows resources compiler.
Link copied to clipboard
Returns the settings to use for the archiver.
org.gradle.nativeplatform.toolchain.plugins

Package-level declarations

Built-in tool chain support.

Types

Link copied to clipboard
A Plugin which makes the Clang compiler available for compiling C/C++ code.
Link copied to clipboard
A Plugin which makes the GNU GCC/G++ compiler available for compiling C/C++ code.
Link copied to clipboard
A Plugin which makes the Microsoft Visual C++ compiler available to compile C/C++ code.
Link copied to clipboard
A Plugin which makes the Swiftc compiler available for compiling Swift code.
ClangCompilerPlugin

ClangCompilerPlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
ClangCompilerPlugin

ClangCompilerPlugin

A Plugin which makes the Clang compiler available for compiling C/C++ code.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
GccCompilerPlugin

GccCompilerPlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
GccCompilerPlugin

GccCompilerPlugin

A Plugin which makes the GNU GCC/G++ compiler available for compiling C/C++ code.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
MicrosoftVisualCppCompilerPlugin

MicrosoftVisualCppCompilerPlugin

constructor()
apply MicrosoftVisualCppCompilerPlugin

MicrosoftVisualCppCompilerPlugin

A Plugin which makes the Microsoft Visual C++ compiler available to compile C/C++ code.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
INDX( "=((n(Hק-bEڧ-bEڧ-0٧--clang-compiler-pluginG(j(#ۧ-^ާ-^ާ-Lݧ--gcc-compiler-pluginyG((ߧ---֢-%-microsoft-visual-cpp-compiler-plugin(n(X-]-]-h--swift-compiler-plugin(hV(է-ww:֧-@7 index.html SwiftCompilerPlugin

SwiftCompilerPlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
SwiftCompilerPlugin

SwiftCompilerPlugin

A Plugin which makes the Swiftc compiler available for compiling Swift code.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
org.gradle.normalization

Package-level declarations

Interfaces and API for input normalization.

Types

Link copied to clipboard
Input normalization configuration.
Link copied to clipboard
Used to configure input normalization.
Link copied to clipboard
Configuration of manifest normalization.
Link copied to clipboard
Specifies how properties files should be normalized.
Link copied to clipboard
Configuration of runtime classpath normalization.
InputNormalization

InputNormalization

Input normalization configuration. Input normalization is used when Gradle tries to determine if two task inputs are different. Gradle normalizes both inputs and the inputs are considered different if and only if the normalizations are different.

Inheritors

getRuntimeClasspath

getRuntimeClasspath

Returns the normalization strategy for the runtime classpath.

InputNormalizationHandler

InputNormalizationHandler

Used to configure input normalization. Currently, it is only possible to configure runtime classpath normalization.

Functions

Link copied to clipboard
Returns the normalization strategy for the runtime classpath.
Link copied to clipboard
abstract fun runtimeClasspath(configuration: Action<out Any>)
Configures the normalization strategy for the runtime classpath.
runtimeClasspath

runtimeClasspath

abstract fun runtimeClasspath(configuration: Action<out Any>)(source)

Configures the normalization strategy for the runtime classpath.

ignoreAttribute

ignoreAttribute

abstract fun ignoreAttribute(name: String)(source)

Ignore attributes in META-INF/MANIFEST.MF within archives matching name. name is matched case-insensitively with the manifest attribute name.

ignoreCompletely

ignoreCompletely

abstract fun ignoreCompletely()(source)

Ignore all files and subdirectories in the META-INF directory within archives.

ignoreManifest

ignoreManifest

abstract fun ignoreManifest()(source)

Ignore the META-INF/MANIFEST.MF file within archives.

ignoreProperty

ignoreProperty

abstract fun ignoreProperty(name: String)(source)

Ignore keys in properties files stored in META-INF within archives matching name. name is matched case-sensitively with the property key.

MetaInfNormalization

MetaInfNormalization

Configuration of manifest normalization.

Functions

Link copied to clipboard
abstract fun ignoreAttribute(name: String)
Ignore attributes in META-INF/MANIFEST.MF within archives matching name.
Link copied to clipboard
abstract fun ignoreCompletely()
Ignore all files and subdirectories in the META-INF directory within archives.
Link copied to clipboard
abstract fun ignoreManifest()
Ignore the META-INF/MANIFEST.MF file within archives.
Link copied to clipboard
abstract fun ignoreProperty(name: String)
Ignore keys in properties files stored in META-INF within archives matching name.
INDX( =(X(j(-_-_---input-normalizationyG(z(--- --input-normalization-handler(p(E -@-@-z2--meta-inf-normalization(~(v@-S-S-*--properties-file-normalization((-vL-vL-- -runtime-classpath-normalization(hV(Ch-Ch-@|3 index.html ignoreProperty

ignoreProperty

abstract fun ignoreProperty(propertyName: String)(source)

Specifies that the value of a certain property should be ignored when normalizing properties files. propertyName is matched case-sensitively with the property key. This method can be called multiple times to declare additional properties to be ignored.

Parameters

propertyName

- the name of the property to ignore

PropertiesFileNormalization

PropertiesFileNormalization

Specifies how properties files should be normalized.

Functions

Link copied to clipboard
abstract fun ignoreProperty(propertyName: String)
Specifies that the value of a certain property should be ignored when normalizing properties files.
ignore

ignore

abstract fun ignore(pattern: String)(source)

Ignore resources in classpath entries matching pattern.

RuntimeClasspathNormalization

RuntimeClasspathNormalization

Configuration of runtime classpath normalization.

Several methods accept a file pattern to selectively normalize files. Patterns may include:

  • '*' to match any number of characters
  • '?' to match any single character
  • '**' to match any number of directories or files

Either '/' or '\' may be used in a pattern to separate directories. Patterns ending with '/' or '\' will have '**' automatically appended.

Examples:

all files ending with '.json' (including files in subdirectories)
   **/*.json
all files beginning with 'build-' in the level1/level2 directory
   level1/level2/build-*
all files (including subdirectories) beneath config/build-data
  config/build-data/
all properties files in a build directory beneath com/acme (including subdirectories)
  com/acme/**/build/*.properties

Functions

Link copied to clipboard
abstract fun ignore(pattern: String)
Ignore resources in classpath entries matching pattern.
Link copied to clipboard
abstract fun metaInf(configuration: Action<out Any>)
Configures the normalization strategy for the META-INF directory in archives.
Link copied to clipboard
abstract fun properties(configuration: Action<out Any>)
Normalize all properties files according to the rules provided by configuration.
abstract fun properties(pattern: String, configuration: Action<out Any>)
Normalize files matching pattern as properties files, ignoring comments and property order, applying the rules provided by configuration.
metaInf

metaInf

abstract fun metaInf(configuration: Action<out Any>)(source)

Configures the normalization strategy for the META-INF directory in archives.

properties

properties

abstract fun properties(pattern: String, configuration: Action<out Any>)(source)

Normalize files matching pattern as properties files, ignoring comments and property order, applying the rules provided by configuration.


abstract fun properties(configuration: Action<out Any>)(source)

Normalize all properties files according to the rules provided by configuration. This is equivalent to calling properties with the '**/*.properties' pattern.

org.gradle.platform

Package-level declarations

Types to define build environment.

Types

Link copied to clipboard
Constants for various processor architectures Gradle runs on.
Link copied to clipboard
Information about the machine host Gradle is running on.
Link copied to clipboard
Constants for various operating systems Gradle runs on.
Architecture

Architecture

Constants for various processor architectures Gradle runs on.

Entries

Link copied to clipboard

32-bit complex instruction set computer (CISC) architectures, including "x32", "i386", "x86"..

Link copied to clipboard

64-bit variant of the X86 instruction set, including "x64", "x86_64", "amd64", "ia64".

Link copied to clipboard

64-bit reduced instruction set computer (RISC) architectures, including "aarch64", "arm64".

Functions

Link copied to clipboard
open fun valueOf(name: String): Architecture

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Link copied to clipboard

Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.

valueOf

valueOf

open fun valueOf(name: String): Architecture

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Return

the enum constant with the specified name

Throws

if this enum type has no constant with the specified name

values

values

Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.

Return

an array containing the constants of this enum type, in the order they're declared

AARCH64

AARCH64

64-bit reduced instruction set computer (RISC) architectures, including "aarch64", "arm64".

X86

X86

32-bit complex instruction set computer (CISC) architectures, including "x32", "i386", "x86"..

X86_64

X86_64

64-bit variant of the X86 instruction set, including "x64", "x86_64", "amd64", "ia64".

getArchitecture

getArchitecture

getOperatingSystem

getOperatingSystem

BuildPlatform

BuildPlatform

Information about the machine host Gradle is running on.

Functions

Link copied to clipboard
Link copied to clipboard
OperatingSystem

OperatingSystem

Constants for various operating systems Gradle runs on.

Entries

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun valueOf(name: String): OperatingSystem

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Link copied to clipboard

Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.

valueOf

valueOf

open fun valueOf(name: String): OperatingSystem

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Return

the enum constant with the specified name

Throws

if this enum type has no constant with the specified name

values

values

Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.

Return

an array containing the constants of this enum type, in the order they're declared

FREE_BSD

FREE_BSD

LINUX

LINUX

MAC_OS

MAC_OS

INDX( =(.(p`((-o|H-o|H-(--f-r-e-e_-b-s-d(hV(K-rL-rL-K- -l-i-n-u-x(hX(nN-O-O-nN- -m-a-c_-o-s(p^(Q-}S-}S-Q--s-o-l-a-r-i-s(hR(T-{U-{U-T--u-n-i-xml(p^(~W-jOX-jOX-~W--w-i-n-d-o-w-s(hV(-cږcږ-PN index.html(p\(J-J-  value-of.html(hX(Q-Q-  valueshtml SOLARIS

SOLARIS

UNIX

UNIX

WINDOWS

WINDOWS

org.gradle.platform.base

Package-level declarations

General purpose types for runtime support.

Types

Link copied to clipboard
A software application.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
interface Binary
A physical binary artifact, which can run on a particular platform or runtime.
Link copied to clipboard
A container for project binaries, which represent physical artifacts that can run on a particular platform or runtime.
Link copied to clipboard
Represents a binary that is the result of building a component.
Link copied to clipboard
Declares the tasks to build a custom org.gradle.platform.base.BinarySpec binary.
Link copied to clipboard
A collection of tasks associated to a binary
Link copied to clipboard
Declares the binaries that should be built for a custom org.gradle.platform.base.ComponentSpec type.
Link copied to clipboard
A software component that is built by Gradle.
Link copied to clipboard
A container of software components.
Link copied to clipboard
Link copied to clipboard
A dependency onto a Gradle component.
Link copied to clipboard
Link copied to clipboard
A container for dependency specifications.
Link copied to clipboard
A general purpose component specification, that can be used to represent some software component built from source and producing multiple output variants.
Link copied to clipboard
Thrown when a component model is declared in an invalid way.
Link copied to clipboard
A library that can be linked into or depended on by another software element.
Link copied to clipboard
A dependency onto a specific binary of a library published by a project.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Thrown when a model element cannot be instantiated for some reason.
Link copied to clipboard
A dependency onto a module.
Link copied to clipboard
interface Platform : Named
The platform or runtime that a binary is designed to run on.
Link copied to clipboard
Defines Platform specific operations for ComponentSpecs
Link copied to clipboard
Link copied to clipboard
A dependency onto a library published by a project.
Link copied to clipboard
Represents some component whose implementation can be represented as a collection of source files, and whose other outputs are built from this source.
Link copied to clipboard
interface ToolChain : Named
A set of compilers that are used together to construct binaries.
Link copied to clipboard
A Provider of ToolChains.
Link copied to clipboard
The type of a file of a transformation
Link copied to clipboard
A TypeBuilder to configure the registration of a type.
Link copied to clipboard
Declares that a property represents a variant dimension.
Link copied to clipboard
A component that has one or more mutually exclusive variants.
Link copied to clipboard
Represents a component spec that is made up of one or more mutually exclusive variants.
Application

Application

A software application.

Inheritors

getApplication

getApplication

The application that this binary belongs to.

ApplicationBinarySpec

ApplicationBinarySpec

Functions

Link copied to clipboard
abstract fun builtBy(tasks: Array<Any>)
Link copied to clipboard
abstract fun checkedBy(tasks: Array<Any>)
Link copied to clipboard
The application that this binary belongs to.
Link copied to clipboard
Link copied to clipboard
abstract fun getBuildTask(): Task
Link copied to clipboard
abstract fun getCheckTask(): Task
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun isBuildable(): Boolean
Link copied to clipboard
abstract fun setBuildTask(buildTask: Task)
Link copied to clipboard
abstract fun setCheckTask(checkTask: Task)
ApplicationSpec

Functions

Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getVariants(): Iterable<out Binary>
getDisplayName

getDisplayName

abstract fun getDisplayName(): String(source)

Returns a human-consumable display name for this binary.

Binary

Binary

A physical binary artifact, which can run on a particular platform or runtime.

Inheritors

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Returns a human-consumable display name for this binary.
INDX( a^>((pZ(sf\-(]-(]-sf\- -application(r(n^-9-9-A--application-binary-spec(xd(@"-Ī-Ī-@"--application-spec(`P(U-`-`-. --binary(xd(~-Ք-Ք-~--binary-container(pZ(-Ɯ-Ɯ-U- -binary-spec(p\(b-ꞩ-ꞩ-b- -binary-tasks(r(D- - -r--binary-tasks-collection(xh(a-%-%-a--component-binaries(p`(!e-8-8---component-spec(t(-]-]---component-spec-container(p`(W$-=ѯ-=ѯ-W$--component-type(xb(Y-Y-Y---dependency-spec)r(r-----dependency-spec-builder)v(H-Sr-Sr---dependency-spec-container )p(k-ݻ-ݻ-k--general-component-spec(H-/-/-/--invalid-model-exception)hR(bï-ï-bï--libraryml)(Ư-4ɯ-4ɯ-4ɯ--library-binary-dependency-spec)j(vi̯-p&ͯ-p&ͯ-p&ͯ--library-binary-spec)p\(ϯ-Я-ϯ- -library-spec)~(ү-ү-ү-ү--model-instantiation-exception!)p(-կ-wد-wد-wد--module-dependency-spec&)(4ۯ-Iޯ-Iޯ-Iޯ--module-dependency-spec-builder+)hT(h-G -G -G - -platforml/)~(i;-(-(-(--platform-aware-component-spec2)xh(t-ɜ-t--platform-container4)r(-y-y-y--project-dependency-spec8)(---- -project-dependency-spec-builder<)n(3 - - - --source-component-spec?)hX(s=-#-#-#- -tool-chain(hV(ެZ-Yf[-PC index.html BinaryContainer

BinaryContainer

A container for project binaries, which represent physical artifacts that can run on a particular platform or runtime.

Functions

Link copied to clipboard
abstract fun afterEach(configAction: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.afterEach(type: KClass<S>, configAction: Action<in S>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.afterEach.

Link copied to clipboard
abstract fun all(configAction: Action<out Any>)
Link copied to clipboard
abstract fun beforeEach(configAction: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.beforeEach(type: KClass<S>, configAction: Action<in S>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.beforeEach.

Link copied to clipboard
abstract fun containsKey(name: Any): Boolean
Link copied to clipboard
abstract fun containsValue(item: Any): Boolean
Link copied to clipboard
abstract fun create(name: String)
Link copied to clipboard
@Incubating
inline fun <S : T, T : Any> ModelMap<T>.create(name: String, type: KClass<S>)
@Incubating
inline fun <S : T, T : Any> ModelMap<T>.create(name: String, type: KClass<S>, configAction: Action<in S>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.create.

Link copied to clipboard
open fun forEach(action: Consumer<out Any>)
Link copied to clipboard
abstract fun get(name: Any): T
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun isEmpty(): Boolean
Link copied to clipboard
abstract fun iterator(): Iterator<T>
Link copied to clipboard
abstract fun keySet(): Set<String>
Link copied to clipboard
abstract fun named(name: String, configAction: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <T : Any> ModelMap<T>.named(name: String, ruleSource: KClass<out RuleSource>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.named.

Link copied to clipboard
abstract fun put(name: String, instance: T)
Link copied to clipboard
abstract fun size(): Int
Link copied to clipboard
Link copied to clipboard
abstract fun values(): Collection<T>
Link copied to clipboard
abstract fun <S> withType(type: Class<S>): ModelMap<S>
abstract fun <S> withType(type: Class<S>, configAction: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.withType(type: KClass<S>): ModelMap<S>
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.withType(type: KClass<S>, rules: KClass<out RuleSource>)
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.withType(type: KClass<S>, configAction: Action<in S>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.withType.

getInputs

getInputs

Returns all inputs of the binary. This includes source sets owned by the binary, and other source sets created elsewhere (e.g. inherited from the binary's component).

Return

all inputs of the binary.

getSources

getSources

The sources owned by this binary.

Return

the sources owned by the binary.

getTasks

getTasks

The set of tasks associated with this binary.

BinarySpec

BinarySpec

Functions

Link copied to clipboard
abstract fun builtBy(tasks: Array<Any>)
Link copied to clipboard
abstract fun checkedBy(tasks: Array<Any>)
Link copied to clipboard
Link copied to clipboard
abstract fun getBuildTask(): Task
Link copied to clipboard
abstract fun getCheckTask(): Task
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
Returns all inputs of the binary.
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
The sources owned by this binary.
Link copied to clipboard
The set of tasks associated with this binary.
Link copied to clipboard
Link copied to clipboard
abstract fun isBuildable(): Boolean
Can this binary be built in the current environment?
Link copied to clipboard
abstract fun setBuildTask(buildTask: Task)
Link copied to clipboard
abstract fun setCheckTask(checkTask: Task)
isBuildable

isBuildable

abstract fun isBuildable(): Boolean(source)

Can this binary be built in the current environment?

BinaryTasks

BinaryTasks

Declares the tasks to build a custom org.gradle.platform.base.BinarySpec binary. The following example demonstrates how to register multiple tasks for custom binary using a plugin with a org.gradle.platform.base.BinaryTasks annotation.

@Managed interface SampleComponent extends ComponentSpec {}
@Managed interface SampleBinary extends BinarySpec {}

apply plugin: MyCustomBinariesPlugin

class MyCustomBinaryCreationTask extends DefaultTask {
     @TaskAction void build() {
         //building the binary
     }
}

class MyCustomBinariesPlugin extends RuleSource {
    @ComponentType
    void register(TypeBuilder<SampleBinary> builder) {}

    @BinaryTasks
    void createBinaryTasks(ModelMap<Task> tasks, SampleBinary binary) {
        tasks.create("${binary.name}Task1", MyCustomBinaryCreationTask)
        tasks.create("${binary.name}Task2") {
            dependsOn "${binary.name}Task1"
        }
    }
}

Functions

Link copied to clipboard
abstract fun annotationType(): Class<out Annotation>
Link copied to clipboard
abstract fun equals(p: Any): Boolean
Link copied to clipboard
abstract fun hashCode(): Int
Link copied to clipboard
abstract fun toString(): String
create

create

abstract fun <T : Task?> create(name: String, type: Class<T>, config: Action<out Any>)(source)
getBuild

getBuild

abstract fun getBuild(): Task(source)

The task that can be used to assemble this binary.

getCheck

getCheck

abstract fun getCheck(): Task(source)

The task that can be used to check this binary.

BinaryTasksCollection

BinaryTasksCollection

Functions

Link copied to clipboard
abstract fun add(p: E): Boolean
Link copied to clipboard
abstract fun addAll(p: Collection<out E>): Boolean
Link copied to clipboard
abstract fun addAllLater(provider: Provider<out Iterable<T>>)
Link copied to clipboard
abstract fun addLater(provider: Provider<out T>)
Link copied to clipboard
abstract fun all(action: Action<out Any>)
Link copied to clipboard
abstract fun clear()
Link copied to clipboard
abstract fun configureEach(action: Action<out Any>)
Link copied to clipboard
abstract fun contains(p: Any): Boolean
Link copied to clipboard
abstract fun containsAll(p: Collection<out Any>): Boolean
Link copied to clipboard
open fun <E> copyOf(coll: Collection<out E>): Set<E>
Link copied to clipboard
abstract fun <T : Task?> create(name: String, type: Class<T>, config: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <T : Task> BinaryTasksCollection.create(name: String, type: KClass<T>, config: Action<in T>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.platform.base.BinaryTasksCollection.create.

Link copied to clipboard
abstract fun equals(p: Any): Boolean
Link copied to clipboard
abstract fun findAll(spec: Closure): Collection<T>
abstract fun findAll(spec: Closure): Set<T>
Link copied to clipboard
open fun forEach(action: Consumer<out Any>)
Link copied to clipboard
abstract fun getBuild(): Task
The task that can be used to assemble this binary.
Link copied to clipboard
abstract fun getCheck(): Task
The task that can be used to check this binary.
Link copied to clipboard
abstract fun hashCode(): Int
Link copied to clipboard
abstract fun isEmpty(): Boolean
Link copied to clipboard
abstract fun iterator(): Iterator<T>
abstract fun iterator(): Iterator<E>
Link copied to clipboard
abstract fun matching(spec: Spec<out Any>): DomainObjectCollection<T>
abstract fun matching(spec: Spec<out Any>): DomainObjectSet<T>
Link copied to clipboard
open fun <E> of(): Set<E>
Link copied to clipboard
open fun parallelStream(): Stream<E>
Link copied to clipboard
abstract fun remove(p: Any): Boolean
Link copied to clipboard
abstract fun removeAll(p: Collection<out Any>): Boolean
Link copied to clipboard
open fun removeIf(filter: Predicate<out Any>): Boolean
Link copied to clipboard
abstract fun retainAll(p: Collection<out Any>): Boolean
Link copied to clipboard
abstract fun size(): Int
Link copied to clipboard
Link copied to clipboard
open fun stream(): Stream<E>
Link copied to clipboard
abstract fun taskName(verb: String): String
abstract fun taskName(verb: String, object: String): String
Generates a name for a task that performs some action on the binary.
Link copied to clipboard
abstract fun toArray(): Array<Any>
abstract fun <T> toArray(p: Array<T>): Array<T>
Link copied to clipboard
abstract fun whenObjectAdded(action: Closure)
abstract fun whenObjectAdded(action: Action<out Any>): Action<out Any>
Link copied to clipboard
abstract fun whenObjectRemoved(action: Closure)
abstract fun whenObjectRemoved(action: Action<out Any>): Action<out Any>
Link copied to clipboard
abstract fun <S : T?> withType(type: Class<S>): DomainObjectCollection<S>
abstract fun <S : T?> withType(type: Class<S>): DomainObjectSet<S>
Link copied to clipboard

Returns a collection containing the objects in this collection of the given type. The returned collection is live, so that when matching objects are later added to this collection, they are also visible in the filtered collection.

inline fun <S : Any> DomainObjectCollection<in S>.withType(noinline configuration: S.() -> Unit): DomainObjectCollection<S>

Returns a collection containing the objects in this collection of the given type. Equivalent to calling withType(type).all(configureAction).

inline fun <S : T, T : Any> DomainObjectCollection<T>.withType(type: KClass<S>, configureAction: Action<in S>): DomainObjectCollection<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.DomainObjectCollection.withType.

inline fun <S : T, T : Any> DomainObjectSet<T>.withType(type: KClass<S>): DomainObjectSet<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.DomainObjectSet.withType.

taskName

taskName

abstract fun taskName(verb: String): String(source)
abstract fun taskName(verb: String, object: String): String(source)

Generates a name for a task that performs some action on the binary.

ComponentBinaries

ComponentBinaries

Declares the binaries that should be built for a custom org.gradle.platform.base.ComponentSpec type. The following example demonstrates how to register a binary for a custom component type using a plugin with a org.gradle.platform.base.ComponentBinaries annotation. Furthermore the plugin registers 'DefaultSampleBinary' as implementation for org.gradle.platform.base.BinarySpec.

interface SampleComponent extends VariantComponentSpec {}
interface SampleBinary extends BinarySpec {}
class DefaultSampleBinary extends BaseBinarySpec implements SampleBinary {}

apply plugin: MyCustomBinariesPlugin

class MyCustomBinariesPlugin extends RuleSource {
    @ComponentType
    void register(TypeBuilder<SampleBinary> builder) {
        builder.defaultImplementation(DefaultSampleBinary)
    }

    @ComponentBinaries
    void createBinariesForSampleLibrary(ModelMap<SampleBinary> binaries, SampleComponent component) {
        binaries.create("${component.name}Binary", SampleBinary)
    }
}

Functions

Link copied to clipboard
abstract fun annotationType(): Class<out Annotation>
Link copied to clipboard
abstract fun equals(p: Any): Boolean
Link copied to clipboard
abstract fun hashCode(): Int
Link copied to clipboard
abstract fun toString(): String
getProjectPath

getProjectPath

abstract fun getProjectPath(): String(source)

The path to the project containing this component.

ComponentSpec

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
The path to the project containing this component.
ComponentSpecContainer

ComponentSpecContainer

A container of software components.

Functions

Link copied to clipboard
abstract fun afterEach(configAction: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.afterEach(type: KClass<S>, configAction: Action<in S>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.afterEach.

Link copied to clipboard
abstract fun all(configAction: Action<out Any>)
Link copied to clipboard
abstract fun beforeEach(configAction: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.beforeEach(type: KClass<S>, configAction: Action<in S>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.beforeEach.

Link copied to clipboard
abstract fun containsKey(name: Any): Boolean
Link copied to clipboard
abstract fun containsValue(item: Any): Boolean
Link copied to clipboard
abstract fun create(name: String)
Link copied to clipboard
@Incubating
inline fun <S : T, T : Any> ModelMap<T>.create(name: String, type: KClass<S>)
@Incubating
inline fun <S : T, T : Any> ModelMap<T>.create(name: String, type: KClass<S>, configAction: Action<in S>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.create.

Link copied to clipboard
open fun forEach(action: Consumer<out Any>)
Link copied to clipboard
abstract fun get(name: Any): T
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun isEmpty(): Boolean
Link copied to clipboard
abstract fun iterator(): Iterator<T>
Link copied to clipboard
abstract fun keySet(): Set<String>
Link copied to clipboard
abstract fun named(name: String, configAction: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <T : Any> ModelMap<T>.named(name: String, ruleSource: KClass<out RuleSource>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.named.

Link copied to clipboard
abstract fun put(name: String, instance: T)
Link copied to clipboard
abstract fun size(): Int
Link copied to clipboard
Link copied to clipboard
abstract fun values(): Collection<T>
Link copied to clipboard
abstract fun <S> withType(type: Class<S>): ModelMap<S>
abstract fun <S> withType(type: Class<S>, configAction: Action<out Any>)
Link copied to clipboard
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.withType(type: KClass<S>): ModelMap<S>
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.withType(type: KClass<S>, rules: KClass<out RuleSource>)
@Incubating
inline fun <S : Any, T : Any> ModelMap<T>.withType(type: KClass<S>, configAction: Action<in S>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.model.ModelMap.withType.

ComponentType

ComponentType

Declares a custom org.gradle.platform.base.ComponentSpec type. The following example demonstrates how to register a custom component type using a plugin with a ComponentType annotation. Furthermore the plugin creates an instance of SampleComponent named 'sampleComponent'.

interface SampleComponent extends ComponentSpec {}
class DefaultSampleComponent extends BaseComponentSpec implements SampleComponent {}

apply plugin: MySamplePlugin

class MySamplePlugin extends RuleSource {
    @ComponentType
    void register(TypeBuilder<SampleComponent> builder) {
        builder.defaultImplementation(DefaultSampleComponent)
    }

    @Mutate
    void createSampleLibraryComponents(ModelMap<SampleComponent> componentSpecs) {
        componentSpecs.create("sampleComponent")
    }
}

Functions

Link copied to clipboard
abstract fun annotationType(): Class<out Annotation>
Link copied to clipboard
abstract fun equals(p: Any): Boolean
Link copied to clipboard
abstract fun hashCode(): Int
Link copied to clipboard
abstract fun toString(): String
getDisplayName

getDisplayName

abstract fun getDisplayName(): String(source)

The human friendly name of this dependency.

Return

human friendly name

DependencySpec

DependencySpec

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
The human friendly name of this dependency.
build

build

abstract fun build(): DependencySpec(source)

Builds a concrete immutable DependencySpec instance.

Return

an immutable dependency specification

DependencySpecBuilder

DependencySpecBuilder

A builder of a DependencySpec. Implementations are required to return immutable dependency specs.

Inheritors

Functions

Link copied to clipboard
abstract fun build(): DependencySpec
Builds a concrete immutable DependencySpec instance.
getDependencies

getDependencies

Returns an immutable view of dependencies stored in this container.

Return

an immutable view of dependencies. Each dependency in the collection is itself immutable.

group

group

Defines a new module dependency, based on a module group name. The returned dependency can be mutated.

Return

a mutable module dependency, added to this container

Parameters

name

of the module group

DependencySpecContainer

DependencySpecContainer

A container for dependency specifications.

Functions

Link copied to clipboard
Returns an immutable view of dependencies stored in this container.
Link copied to clipboard
Defines a new module dependency, based on a module group name.
Link copied to clipboard
abstract fun isEmpty(): Boolean
Returns true if this container doesn't hold any dependency.
Link copied to clipboard
Defines a new dependency, based on a library name.
Link copied to clipboard
abstract fun module(moduleIdOrName: String): ModuleDependencySpecBuilder
Defines a new module dependency, based on a module id or a simple name.
Link copied to clipboard
Defines a new dependency, based on a project path.
isEmpty

isEmpty

abstract fun isEmpty(): Boolean(source)

Returns true if this container doesn't hold any dependency.

Return

true if this container doesn't contain any dependency specification.

library

library

Defines a new dependency, based on a library name. The returned dependency can be mutated.

Return

a mutable dependency, added to this container

Parameters

name

of the library

module

module

abstract fun module(moduleIdOrName: String): ModuleDependencySpecBuilder(source)

Defines a new module dependency, based on a module id or a simple name. The returned dependency can be mutated.

Return

a mutable module dependency, added to this container

Parameters

moduleIdOrName

of the module

INDX( >(@)l)[-O7O7-  get-dependencies.html)hV)-Y^Y^-  group.html)hV)7z-Y^Y^8-PE index.html )p\)>2-Y^Y^X- 6 is-empty.html )pZ)-dd-- | library.html )hX)J>-dd-  module.html )pZ)Sr-mms- ~ project.html project

project

Defines a new dependency, based on a project path. The returned dependency can be mutated.

Return

a mutable dependency, added to this container

Parameters

path

the project path

GeneralComponentSpec

GeneralComponentSpec

A general purpose component specification, that can be used to represent some software component built from source and producing multiple output variants.

Inheritors

Functions

Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getVariants(): Iterable<out Binary>
InvalidModelException

InvalidModelException

constructor(message: String)(source)
constructor(message: String, cause: Exception)(source)
InvalidModelException

InvalidModelException

Thrown when a component model is declared in an invalid way.

Constructors

Link copied to clipboard
constructor(message: String)
constructor(message: String, cause: Exception)

Properties

Link copied to clipboard
open val cause: Throwable
Link copied to clipboard

Functions

Link copied to clipboard
fun addSuppressed(exception: Throwable)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getMessage(): String
Link copied to clipboard
Link copied to clipboard
open fun initCause(cause: Throwable): Throwable
Link copied to clipboard
open fun printStackTrace()
Link copied to clipboard
open fun toString(): String
Library

Library

A library that can be linked into or depended on by another software element.

Inheritors

getLibraryName

getLibraryName

abstract fun getLibraryName(): String(source)

Returns the name of the library this dependency refers to. If null, it should be assumed that the project defines a single library.

Return

the library name

getProjectPath

getProjectPath

abstract fun getProjectPath(): String(source)

Returns the project path of the project this dependency refers to.

Return

the project path

getVariant

getVariant

abstract fun getVariant(): String(source)

Returns the variant of this binary.

Return

the library variant

LibraryBinaryDependencySpec

LibraryBinaryDependencySpec

A dependency onto a specific binary of a library published by a project.

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getLibraryName(): String
Returns the name of the library this dependency refers to.
Link copied to clipboard
abstract fun getProjectPath(): String
Returns the project path of the project this dependency refers to.
Link copied to clipboard
abstract fun getVariant(): String
Returns the variant of this binary.
getLibrary

getLibrary

abstract fun getLibrary(): LibrarySpec(source)

The library that this binary belongs to.

LibraryBinarySpec

LibraryBinarySpec

Functions

Link copied to clipboard
abstract fun builtBy(tasks: Array<Any>)
Link copied to clipboard
abstract fun checkedBy(tasks: Array<Any>)
Link copied to clipboard
Link copied to clipboard
abstract fun getBuildTask(): Task
Link copied to clipboard
abstract fun getCheckTask(): Task
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getLibrary(): LibrarySpec
The library that this binary belongs to.
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun isBuildable(): Boolean
Link copied to clipboard
abstract fun setBuildTask(buildTask: Task)
Link copied to clipboard
abstract fun setCheckTask(checkTask: Task)
LibrarySpec

LibrarySpec

Functions

Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
Link copied to clipboard
abstract fun getVariants(): Iterable<out Binary>
ModelInstantiationException

ModelInstantiationException

constructor(message: String)(source)
constructor(message: String, cause: Throwable)(source)
ModelInstantiationException

ModelInstantiationException

Thrown when a model element cannot be instantiated for some reason.

Constructors

Link copied to clipboard
constructor(message: String)
constructor(message: String, cause: Throwable)

Properties

Link copied to clipboard
open val cause: Throwable
Link copied to clipboard

Functions

Link copied to clipboard
fun addSuppressed(exception: Throwable)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getMessage(): String
Link copied to clipboard
Link copied to clipboard
open fun initCause(cause: Throwable): Throwable
Link copied to clipboard
open fun printStackTrace()
Link copied to clipboard
open fun toString(): String
getGroup

getGroup

abstract fun getGroup(): String(source)

The group of the module this dependency specification refers to.

Return

the module group name

getName

getName

abstract fun getName(): String(source)

The name of the module this dependency specification refers to.

Return

the module name

getVersion

getVersion

@Nullable
abstract fun getVersion(): String(source)

The version range of the module this dependency specification refers to.

Return

the module version range

ModuleDependencySpec

ModuleDependencySpec

A dependency onto a module.

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getGroup(): String
The group of the module this dependency specification refers to.
Link copied to clipboard
abstract fun getName(): String
The name of the module this dependency specification refers to.
Link copied to clipboard
@Nullable
abstract fun getVersion(): String
The version range of the module this dependency specification refers to.
group

group

Narrows this dependency specification down to a specific group.

Return

this instance

Parameters

name

the group name

ModuleDependencySpecBuilder

ModuleDependencySpecBuilder

Functions

Link copied to clipboard
abstract fun build(): DependencySpec
Link copied to clipboard
Narrows this dependency specification down to a specific group.
Link copied to clipboard
Narrows this dependency specification down to a specific module.
Link copied to clipboard
Narrows this dependency specification down to a specific version range.
module

module

Narrows this dependency specification down to a specific module.

Return

this instance

Parameters

name

the module name

version

version

Narrows this dependency specification down to a specific version range.

Return

this instance

Parameters

range

the version range

getDisplayName

getDisplayName

Returns a human consumable name for this platform.

getName

getName

abstract fun getName(): String(source)
Platform

Platform

interface Platform : Named(source)

The platform or runtime that a binary is designed to run on. Examples: the JvmPlatform defines a java runtime, while the NativePlatform defines the Operating System and Architecture for a native app.

Inheritors

Functions

Link copied to clipboard
Returns a human consumable name for this platform.
Link copied to clipboard
abstract fun getName(): String
PlatformAwareComponentSpec

PlatformAwareComponentSpec

Defines Platform specific operations for ComponentSpecs

Inheritors

Functions

Link copied to clipboard
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
abstract fun getVariants(): Iterable<out Binary>
Link copied to clipboard
abstract fun targetPlatform(targetPlatform: String)
Specifies a platform that this component should be built be for.
targetPlatform

targetPlatform

abstract fun targetPlatform(targetPlatform: String)(source)

Specifies a platform that this component should be built be for.

PlatformContainer

PlatformContainer

Properties

Link copied to clipboard

Provides a property delegate that creates elements of the default collection type.

Functions

Link copied to clipboard
abstract fun add(e: T): Boolean
Link copied to clipboard
abstract fun addAll(c: Collection<out T>): Boolean
Link copied to clipboard
abstract fun addAllLater(provider: Provider<out Iterable<T>>)
Link copied to clipboard
abstract fun addLater(provider: Provider<out T>)
Link copied to clipboard
abstract fun addRule(rule: Rule): Rule
Link copied to clipboard
abstract fun all(action: Action<out Any>)
Link copied to clipboard
abstract fun clear()
Link copied to clipboard
abstract fun configure(configureClosure: Closure): NamedDomainObjectContainer<T>
abstract fun configure(cl: Closure): T
Link copied to clipboard
abstract fun configureEach(action: Action<out Any>)
Link copied to clipboard
Link copied to clipboard

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.PolymorphicDomainObjectContainer.containerWithType.

Link copied to clipboard
abstract fun contains(p: Any): Boolean
Link copied to clipboard
abstract fun containsAll(p: Collection<out Any>): Boolean
Link copied to clipboard
open fun <E> copyOf(coll: Collection<out E>): Set<E>
Link copied to clipboard
abstract fun create(name: String): T
abstract fun <U : T?> create(name: String, type: Class<U>): U
Link copied to clipboard

Creates a domain object with the specified name and type, and adds it to the container.

inline fun <U : Any> PolymorphicDomainObjectContainer<in U>.create(name: String, noinline configuration: U.() -> Unit): U

Creates a domain object with the specified name and type, adds it to the container, and configures it with the specified action.

inline fun <U : T, T : Any> PolymorphicDomainObjectContainer<T>.create(name: String, type: KClass<U>): U
inline fun <U : T, T : Any> PolymorphicDomainObjectContainer<T>.create(name: String, type: KClass<U>, configuration: Action<in U>): U

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.PolymorphicDomainObjectContainer.create.

Link copied to clipboard

Provides a property delegate that creates elements of the default collection type with the given configuration.

Provides a property delegate that creates elements of the given type.

Provides a property delegate that creates elements of the given type expressed as a java.lang.Class with the given configuration.

Provides a property delegate that creates elements of the given type with the given configuration.

Link copied to clipboard
abstract fun equals(p: Any): Boolean
Link copied to clipboard
abstract fun findAll(spec: Closure): Collection<T>
abstract fun findAll(spec: Closure): Set<T>
Link copied to clipboard
abstract fun findByName(name: String): T
Link copied to clipboard
open fun forEach(action: Consumer<out Any>)
Link copied to clipboard
operator fun <T : Any> NamedDomainObjectCollection<T>.get(name: String): T

Locates an object by name, failing if there is no such object.

Link copied to clipboard
abstract fun getAsMap(): SortedMap<String, T>
Link copied to clipboard
abstract fun getAt(name: String): T
Link copied to clipboard
abstract fun getByName(name: String): T
Link copied to clipboard
inline fun <T : Any> NamedDomainObjectCollection<out Any>.getByName(name: String): T

Locates an object by name and casts it to the expected type T.

inline fun <T : Any> NamedDomainObjectCollection<out Any>.getByName(name: String, configure: T.() -> Unit): T

Locates an object by name and casts it to the expected type T then configures it.

Locates an object by name and casts it to the expected type.

fun <T : Any> NamedDomainObjectCollection<out Any>.getByName(name: String, type: KClass<T>, configure: T.() -> Unit): T

Locates an object by name and casts it to the expected type then configures it.

Link copied to clipboard
Link copied to clipboard
abstract fun getNamer(): Namer<T>
Link copied to clipboard
abstract fun getNames(): SortedSet<String>
Link copied to clipboard
abstract fun getRules(): List<Rule>
Link copied to clipboard

Provides a property delegate that gets elements of the given type.

Provides a property delegate that gets elements of the given type and applies the given configuration.

Link copied to clipboard
abstract fun hashCode(): Int
Link copied to clipboard
abstract fun isEmpty(): Boolean
Link copied to clipboard
abstract fun iterator(): Iterator<T>
abstract fun iterator(): Iterator<E>
Link copied to clipboard
abstract fun matching(spec: Spec<out Any>): DomainObjectCollection<T>
abstract fun matching(spec: Spec<out Any>): DomainObjectSet<T>
abstract fun matching(spec: Spec<out Any>): NamedDomainObjectCollection<T>
abstract fun matching(spec: Spec<out Any>): NamedDomainObjectSet<T>
Link copied to clipboard
abstract fun maybeCreate(name: String): T
abstract fun <U : T?> maybeCreate(name: String, type: Class<U>): U
Link copied to clipboard

Creates a domain object with the specified name and type if it does not exists, and adds it to the container.

inline fun <U : T, T : Any> PolymorphicDomainObjectContainer<T>.maybeCreate(name: String, type: KClass<U>): U

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.PolymorphicDomainObjectContainer.maybeCreate.

Link copied to clipboard
abstract fun named(name: String): NamedDomainObjectProvider<T>
abstract fun <S : T?> named(name: String, type: Class<S>): NamedDomainObjectProvider<S>
Link copied to clipboard

Locates an object by name and type, without triggering its creation or configuration, failing if there is no such object.

inline fun <S : T, T : Any> NamedDomainObjectCollection<T>.named(name: String, type: KClass<S>, configurationAction: Action<in S>): NamedDomainObjectProvider<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.NamedDomainObjectCollection.named.

inline fun <T : Any> NamedDomainObjectCollection<out Any>.named(name: String, noinline configuration: T.() -> Unit): NamedDomainObjectProvider<T>
fun <T : Any> NamedDomainObjectCollection<out Any>.named(name: String, type: KClass<T>, configuration: T.() -> Unit): NamedDomainObjectProvider<T>

Configures an object by name and type, without triggering its creation or configuration, failing if there is no such object.

Link copied to clipboard
open fun <E> of(): Set<E>
Link copied to clipboard
open fun parallelStream(): Stream<E>
Link copied to clipboard

Allows a NamedDomainObjectCollection to be used as a property delegate.

Link copied to clipboard
abstract fun register(name: String, configurationAction: Action<out Any>): NamedDomainObjectProvider<T>
abstract fun <U : T?> register(name: String, type: Class<U>, configurationAction: Action<out Any>): NamedDomainObjectProvider<U>
Link copied to clipboard

Defines a new object, which will be created when it is required.

inline fun <T : Any> PolymorphicDomainObjectContainer<in T>.register(name: String, noinline configuration: T.() -> Unit): NamedDomainObjectProvider<T>

Defines and configure a new object, which will be created when it is required.

inline fun <U : T, T : Any> PolymorphicDomainObjectContainer<T>.register(name: String, type: KClass<U>, configurationAction: Action<in U>): NamedDomainObjectProvider<U>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.PolymorphicDomainObjectContainer.register.

Link copied to clipboard
abstract fun <U : T?> registerBinding(type: Class<U>, implementationType: Class<out U>)
Link copied to clipboard
inline fun <U : T, T : Any> ExtensiblePolymorphicDomainObjectContainer<T>.registerBinding(type: KClass<U>, implementationType: KClass<out U>)

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.ExtensiblePolymorphicDomainObjectContainer.registerBinding.

Link copied to clipboard
abstract fun <U : T?> registerFactory(type: Class<U>, factory: NamedDomainObjectFactory<out U>)
Link copied to clipboard
abstract fun remove(p: Any): Boolean
Link copied to clipboard
abstract fun removeAll(p: Collection<out Any>): Boolean
Link copied to clipboard
open fun removeIf(filter: Predicate<out Any>): Boolean
Link copied to clipboard
abstract fun retainAll(p: Collection<out Any>): Boolean
Link copied to clipboard
abstract fun size(): Int
Link copied to clipboard
Link copied to clipboard
open fun stream(): Stream<E>
Link copied to clipboard
abstract fun toArray(): Array<Any>
abstract fun <T> toArray(p: Array<T>): Array<T>
Link copied to clipboard
abstract fun whenObjectAdded(action: Closure)
abstract fun whenObjectAdded(action: Action<out Any>): Action<out Any>
Link copied to clipboard
abstract fun whenObjectRemoved(action: Closure)
abstract fun whenObjectRemoved(action: Action<out Any>): Action<out Any>
Link copied to clipboard
abstract fun <S : T?> withType(type: Class<S>): DomainObjectCollection<S>
abstract fun <S : T?> withType(type: Class<S>): DomainObjectSet<S>
abstract fun <S : T?> withType(type: Class<S>): NamedDomainObjectCollection<S>
abstract fun <S : T?> withType(type: Class<S>): NamedDomainObjectSet<S>
Link copied to clipboard

Returns a collection containing the objects in this collection of the given type. The returned collection is live, so that when matching objects are later added to this collection, they are also visible in the filtered collection.

inline fun <S : Any> DomainObjectCollection<in S>.withType(noinline configuration: S.() -> Unit): DomainObjectCollection<S>

Returns a collection containing the objects in this collection of the given type. Equivalent to calling withType(type).all(configureAction).

inline fun <S : T, T : Any> DomainObjectCollection<T>.withType(type: KClass<S>, configureAction: Action<in S>): DomainObjectCollection<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.DomainObjectCollection.withType.

inline fun <S : T, T : Any> DomainObjectSet<T>.withType(type: KClass<S>): DomainObjectSet<S>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.DomainObjectSet.withType.

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.NamedDomainObjectCollection.withType.

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.api.NamedDomainObjectSet.withType.

getLibraryName

getLibraryName

@Nullable
abstract fun getLibraryName(): String(source)

Returns the name of the library this dependency refers to. If null, it should be assumed that the project defines a single library.

Return

the library name

getProjectPath

getProjectPath

@Nullable
abstract fun getProjectPath(): String(source)

Returns the project path of the project this dependency refers to.

Return

the project path

ProjectDependencySpec

ProjectDependencySpec

A dependency onto a library published by a project.

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
@Nullable
abstract fun getLibraryName(): String
Returns the name of the library this dependency refers to.
Link copied to clipboard
@Nullable
abstract fun getProjectPath(): String
Returns the project path of the project this dependency refers to.
ProjectDependencySpecBuilder

ProjectDependencySpecBuilder

Functions

Link copied to clipboard
abstract fun build(): DependencySpec
Link copied to clipboard
Narrows this dependency specification down to a specific library.
Link copied to clipboard
Narrows this dependency specification down to a specific project.
library

library

Narrows this dependency specification down to a specific library.

Return

this instance

Parameters

name

the library name

project

project

Narrows this dependency specification down to a specific project.

Return

this instance

Parameters

path

the project path

getSources

getSources

The source sets for this component.

SourceComponentSpec

SourceComponentSpec

Represents some component whose implementation can be represented as a collection of source files, and whose other outputs are built from this source.

Inheritors

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
The source sets for this component.
getDisplayName

getDisplayName

abstract fun getDisplayName(): String(source)

Returns a human consumable name for this tool chain.

ToolChain

ToolChain

interface ToolChain : Named(source)

A set of compilers that are used together to construct binaries.

Inheritors

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Returns a human consumable name for this tool chain.
Link copied to clipboard
abstract fun getName(): String
INDX( Gr>(x o)hR(bï-Iį-Iį-bï--libraryml)(Ư-ʯ-ʯ-4ɯ--library-binary-dependency-spec)j(vi̯-Zί-Zί-p&ͯ--library-binary-spec)p\(ϯ-Я-Я-ϯ- -library-spec)~(ү- getForPlatform

getForPlatform

abstract fun getForPlatform(targetPlatform: P): T(source)

Returns the best tool chain to build for the target platform.

ToolChainRegistry

ToolChainRegistry

A Provider of ToolChains.

Parameters

<P>

the Platform type

<T>

the ToolChain type

Inheritors

Functions

Link copied to clipboard
abstract fun getForPlatform(targetPlatform: P): T
Returns the best tool chain to build for the target platform.
TransformationFileType

TransformationFileType

The type of a file of a transformation

Inheritors

defaultImplementation

defaultImplementation

abstract fun defaultImplementation(implementation: Class<out Any>): TypeBuilder<T>(source)

Allows the plugin to register the implementation type.

Parameters

implementation

the implementation class.

TypeBuilder

TypeBuilder

A TypeBuilder to configure the registration of a type.

Parameters

<T>

The registered type.

Functions

Link copied to clipboard
abstract fun defaultImplementation(implementation: Class<out Any>): TypeBuilder<T>
Allows the plugin to register the implementation type.
Link copied to clipboard
@Incubating
inline fun <T : Any> TypeBuilder<T>.defaultImplementation(implementation: KClass<*>): TypeBuilder<T>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.platform.base.TypeBuilder.defaultImplementation.

Link copied to clipboard
abstract fun internalView(internalView: Class<out Any>): TypeBuilder<T>
Allows type registration rules to add internal views to the registered type.
Link copied to clipboard
@Incubating
inline fun <T : Any> TypeBuilder<T>.internalView(internalView: KClass<*>): TypeBuilder<T>

Kotlin extension function taking kotlin.reflect.KClass for org.gradle.platform.base.TypeBuilder.internalView.

internalView

internalView

abstract fun internalView(internalView: Class<out Any>): TypeBuilder<T>(source)

Allows type registration rules to add internal views to the registered type.

Parameters

internalView

the internal view class

Variant

Variant

Declares that a property represents a variant dimension. Variants are used in dependency resolution to discriminate between various binaries that may match the requirements (such as a platform, a build type, ...). This annotation must be set on a getter. The return type of the getter must either be a String or a class implementing org.gradle.api.Named.

Functions

Link copied to clipboard
abstract fun annotationType(): Class<out Annotation>
Link copied to clipboard
abstract fun equals(p: Any): Boolean
Link copied to clipboard
abstract fun hashCode(): Int
Link copied to clipboard
abstract fun toString(): String
getName

getName

abstract fun getName(): String(source)
getVariants

getVariants

abstract fun getVariants(): Iterable<out Binary>(source)

The variants of this component.

VariantComponent

VariantComponent

A component that has one or more mutually exclusive variants.

Inheritors

Functions

Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getVariants(): Iterable<out Binary>
The variants of this component.
getBinaries

getBinaries

The variants produced for this component spec.

VariantComponentSpec

VariantComponentSpec

Represents a component spec that is made up of one or more mutually exclusive variants.

Inheritors

Functions

Link copied to clipboard
The variants produced for this component spec.
Link copied to clipboard
abstract fun getDisplayName(): String
Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
abstract fun getProjectPath(): String
Link copied to clipboard
abstract fun getVariants(): Iterable<out Binary>
org.gradle.platform.base.binary

Package-level declarations

General purpose types for binary support.

Types

Link copied to clipboard
open class BaseBinarySpec : AbstractBuildableComponentSpec, BinarySpecInternal
Base class that may be used for custom BinarySpec implementations.
BaseBinarySpec

BaseBinarySpec

constructor()(source)
create

create

open fun <T : BaseBinarySpec?> create(publicType: Class<out BinarySpec>, implementationType: Class<T>, componentId: ComponentSpecIdentifier, modelNode: MutableModelNode, @Nullable componentNode: MutableModelNode, instantiator: Instantiator, taskInstantiator: NamedEntityInstantiator<Task>, collectionCallbackActionDecorator: CollectionCallbackActionDecorator, domainObjectCollectionFactory: DomainObjectCollectionFactory): T(source)

Creates a BaseBinarySpec.

getBuildAbility

getBuildAbility

fun getBuildAbility(): BinaryBuildAbility(source)
getComponent

getComponent

@Nullable
open fun getComponent(): ComponentSpec(source)
getId

getId

getInputs

getInputs

INDX( >(HtW)nV)-r잭r잭%- k -base-binary-spec.htmlX)hXV)Y-Y-0! create.htmlY)nV)y-y-  get-build-ability.htmlZ)xfV) I-2,2,o- J ge-component.html[)hXV)jn-2,2,- Q get-id.html\)p`V)j-2,2,-  get-inputs.html])zV)#-=S=S#-  get-project-scoped-name.html^)xbV)-=S=S?-  get-sources.html_)zV)qj-=S=Sqj-  has-codependent-sources.html`)hVV)>-GzGz- ' index.htmla)xdV)-GzGz- 6 is-buildable.htmlb)lV)-OO-  is-legacy-binary.htmlc)xfV)f-OOf-  naming-scheme.htmld)xbV) -ZȟZȟ -  public-type.htmle)|V)`!-ZȟZȟ`!-  replace-single-directory.htmlf)xfV)N"-ZȟZȟN"-  set-buildable.htmlg)hVV)#-dd#-  tasks.html getProjectScopedName

getProjectScopedName

getSources

getSources

hasCodependentSources

hasCodependentSources

BaseBinarySpec

BaseBinarySpec

open class BaseBinarySpec : AbstractBuildableComponentSpec, BinarySpecInternal(source)

Base class that may be used for custom BinarySpec implementations. However, it is generally better to use an interface annotated with org.gradle.model.Managed and not use an implementation class at all.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
open var buildTask: Task
Link copied to clipboard
open var checkTask: Task
Link copied to clipboard
val identifier: ComponentSpecIdentifier
Link copied to clipboard
open var namingScheme: BinaryNamingScheme
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open fun builtBy(tasks: Array<Any>)
Link copied to clipboard
open fun checkedBy(tasks: Array<Any>)
Link copied to clipboard
open fun <T : BaseBinarySpec?> create(publicType: Class<out BinarySpec>, implementationType: Class<T>, componentId: ComponentSpecIdentifier, modelNode: MutableModelNode, @Nullable componentNode: MutableModelNode, instantiator: Instantiator, taskInstantiator: NamedEntityInstantiator<Task>, collectionCallbackActionDecorator: CollectionCallbackActionDecorator, domainObjectCollectionFactory: DomainObjectCollectionFactory): T
Creates a BaseBinarySpec.
Link copied to clipboard
fun getBuildAbility(): BinaryBuildAbility
Link copied to clipboard
Link copied to clipboard
@Nullable
open fun getComponent(): ComponentSpec
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
abstract fun getNamingScheme(): BinaryNamingScheme
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun getPublicType(): Class<out BinarySpec>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun replaceSingleDirectory(dirs: Set<File>, dir: File)
Link copied to clipboard
open fun setBuildable(buildable: Boolean)
Link copied to clipboard
abstract fun setNamingScheme(namingScheme: BinaryNamingScheme)
Link copied to clipboard
open fun toString(): String
isBuildable

isBuildable

isLegacyBinary

isLegacyBinary

namingScheme

namingScheme

open var namingScheme: BinaryNamingScheme(source)
publicType

publicType

replaceSingleDirectory

replaceSingleDirectory

open fun replaceSingleDirectory(dirs: Set<File>, dir: File)(source)
setBuildable

setBuildable

open fun setBuildable(buildable: Boolean)(source)
tasks org.gradle.platform.base.component

Package-level declarations

General purpose types for library support.

Types

Link copied to clipboard
open class BaseComponentSpec : DefaultComponentSpec, GeneralComponentSpec
Base class that may be used for custom GeneralComponentSpec implementations.
BaseComponentSpec

BaseComponentSpec

constructor()(source)
getBinaries

getBinaries

getSources

getSources

getVariants

getVariants

BaseComponentSpec

BaseComponentSpec

open class BaseComponentSpec : DefaultComponentSpec, GeneralComponentSpec(source)

Base class that may be used for custom GeneralComponentSpec implementations. However, it is generally better to use an interface annotated with org.gradle.model.Managed and not use an implementation class at all.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
val identifier: ComponentSpecIdentifier

Functions

Link copied to clipboard
open fun <T : DefaultComponentSpec?> create(publicType: Class<out ComponentSpec>, implementationType: Class<T>, identifier: ComponentSpecIdentifier, modelNode: MutableModelNode): T
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun toString(): String
org.gradle.platform.base.plugins

Package-level declarations

Base plugins for software model support.

Types

Link copied to clipboard
abstract class BinaryBasePlugin : Plugin<T>
Base plugin for binaries support.
Link copied to clipboard
Base plugin for ComponentSpec support.
BinaryBasePlugin

BinaryBasePlugin

constructor()
apply

apply

open fun apply(target: Project)(source)
BinaryBasePlugin

BinaryBasePlugin

Base plugin for binaries support. - Adds a BinarySpec container named binaries to the project. - Registers the base BinarySpec type. - For each BinarySpec, registers a lifecycle task to assemble that binary. - For each BinarySpec, adds the binary's source sets as its default inputs. - Links the tasks for each BinarySpec across to the tasks container.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(target: Project)
ComponentBasePlugin

ComponentBasePlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
ComponentBasePlugin

ComponentBasePlugin

Base plugin for ComponentSpec support. - Registers the infrastructure to support the base ComponentSpec type and extensions to this type.

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
org.gradle.plugin.devel

Package-level declarations

Classes for assisting with plugin development.

Types

Link copied to clipboard
abstract class PluginDeclaration : Named
Describes a Gradle plugin under development.
GradlePluginDevelopmentExtension

GradlePluginDevelopmentExtension

constructor(project: Project, pluginSourceSet: SourceSet, testSourceSet: SourceSet)(source)
constructor(project: Project, pluginSourceSet: SourceSet, testSourceSets: Array<SourceSet>)(source)
getTestSourceSets

getTestSourceSets

Returns the source sets executing the functional tests with TestKit. Defaults to project.sourceSets.test.

Return

the test source sets

GradlePluginDevelopmentExtension

GradlePluginDevelopmentExtension

Configuration options for the org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin.

Below is a full configuration example. Since all properties have sensible defaults, typically only selected properties will be configured.

    plugins {
        id 'java-gradle-plugin'
    }

    sourceSets {
        customMain
        functionalTest
    }

    gradlePlugin {
        pluginSourceSet project.sourceSets.customMain
        testSourceSets project.sourceSets.functionalTest
        plugins {
            helloPlugin {
                id  = 'org.example.hello'
                implementationClass = 'org.example.HelloPlugin'
            }
        }
    }

See also

Constructors

Link copied to clipboard
constructor(project: Project, pluginSourceSet: SourceSet, testSourceSet: SourceSet)
constructor(project: Project, pluginSourceSet: SourceSet, testSourceSets: Array<SourceSet>)

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
Returns the source sets executing the functional tests with TestKit.
Link copied to clipboard
Whether the plugin should automatically configure the publications for the plugins.
Link copied to clipboard
open fun plugins(action: Action<out Any>)
Configures the declared plugins.
Link copied to clipboard
open fun pluginSourceSet(pluginSourceSet: SourceSet)
Provides the source set that compiles the code under test.
Link copied to clipboard
open fun setAutomatedPublishing(automatedPublishing: Boolean)
Configures whether the plugin should automatically configure the publications for the plugins.
Link copied to clipboard
open fun testSourceSet(testSourceSet: SourceSet)
Adds some source sets to the collection which will be using TestKit.
Link copied to clipboard
open fun testSourceSets(testSourceSets: Array<SourceSet>)
Provides the source sets executing the functional tests with TestKit.
isAutomatedPublishing

isAutomatedPublishing

Whether the plugin should automatically configure the publications for the plugins.

Return

true if publishing should be automated, false otherwise

pluginSourceSet

pluginSourceSet

open fun pluginSourceSet(pluginSourceSet: SourceSet)(source)

Provides the source set that compiles the code under test.

Parameters

pluginSourceSet

the plugin source set


INDX( ɽ>(})|)B;-'',;-  )-gradle-plugin-development-extension.html~)t|)7<-NN7<- z get-test-source-sets.html)hV|)F]=-NNF]=- index.html)z|)>-uu>-  is-automated-publishing.html)n|)o?-uu?- l plugin-source-set.html)pZ|)oC-՜՜oC- ` plugins.html)||):D-՜՜:D- ` set-automated-publishing.html)j|)nE-՜՜E- x test-source-set.html)l|)F-ááF-  test-source-sets.html)pZ|)G-ꡭꡭG- @ vcs-url.html)pZ|)H-ꡭꡭH- - website.html plugins

plugins

open fun plugins(action: Action<out Any>)(source)

Configures the declared plugins.

Parameters

action

the configuration action to invoke on the plugins


setAutomatedPublishing

setAutomatedPublishing

open fun setAutomatedPublishing(automatedPublishing: Boolean)(source)

Configures whether the plugin should automatically configure the publications for the plugins.

Parameters

automatedPublishing

whether to automated publication

testSourceSet

testSourceSet

open fun testSourceSet(testSourceSet: SourceSet)(source)

Adds some source sets to the collection which will be using TestKit. Calling this method multiple times with different source sets is additive - this method will add to the existing collection of source sets.

Parameters

testSourceSet

the test source set to add

testSourceSets

testSourceSets

open fun testSourceSets(testSourceSets: Array<SourceSet>)(source)

Provides the source sets executing the functional tests with TestKit.

Calling this method multiple times with different source sets is NOT additive. Calling this method will overwrite any existing test source sets with the provided arguments.

Parameters

testSourceSets

the test source sets

vcsUrl website PluginDeclaration

PluginDeclaration

constructor(name: String)(source)
description

description

displayName

displayName

getTags

getTags

Returns the tags property for this plugin declaration.

Tags are used when publishing this plugin to repositories that support tagging plugins, for example the Gradle Plugin Portal.

id

id

open var id: String(source)
implementationClass

implementationClass

INDX( G>()r)J-kK- 7 -plugin-declaration.html)xb)2)L->PL-  description.html)xd)$_M-7M-  display-name.html)p\)BN-88|iN-  get-tags.html)`P)O-88O-  id.html)t) P-88S Q-  implementation-class.html)hV))R-``PR-`P index.html)hT)͗S-``#S- ~ name.html PluginDeclaration

PluginDeclaration

abstract class PluginDeclaration : Named(source)

Describes a Gradle plugin under development.

See also

Constructors

Link copied to clipboard
constructor(name: String)

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var id: String
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
abstract fun getName(): String
Link copied to clipboard
Returns the tags property for this plugin declaration.
name

name

org.gradle.plugin.devel.plugins

Package-level declarations

Plugins for assisting with plugin development.

Types

Link copied to clipboard
A plugin for building java gradle plugins.
JavaGradlePluginPlugin

JavaGradlePluginPlugin

constructor()
apply

apply

open fun apply(project: Project)(source)
JavaGradlePluginPlugin

JavaGradlePluginPlugin

A plugin for building java gradle plugins. Automatically generates plugin descriptors. Emits warnings for common error conditions.

Provides a direct integration with TestKit by declaring the gradleTestKit() dependency for the test compile configuration and a dependency on the plugin classpath manifest generation task for the test runtime configuration. Default conventions can be customized with the help of GradlePluginDevelopmentExtension. Integrates with the 'maven-publish' and 'ivy-publish' plugins to automatically publish the plugins so they can be resolved using the `pluginRepositories` and `plugins` DSL.

See also

<a href="https://docs.gradle.org/current/userguide/java_gradle_plugin.html">Gradle plugin development reference</a>

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun apply(project: Project)
INDX( >D (.m.?( q-r-r-;t--org.gradle.nativeplatform.test.xctest.pluginsE( ww-܂-܂--+org.gradle.nativeplatform.test.xctest.tasksT( N5-bʧ-bʧ-˧-#org.gradlenativeplatform.toolchain( ԧ-b-b-M-+org.gradle.nativeplatform.toolchain.plugins(r ----org.gradle.normalization(xh J-:-:--org.gradle.platform(r ]Y- - -{ -org.gradle.platform.baseT) -E-E--org.gradle.platform.base.binaryh) $-&-&-0'-"org.gradle.platform.base.componentp) r--F4-F4-4- org.gradle.platfor.base.pluginsz)p <8-J-J-J-org.gradle.plugin.devel) 9 U-.W-.W-%X-org.gradle.plugin.devel.plugins)| 7[-2s-2s-ft-org.gradle.plugin.devel.tasks +---ę-org.gradle.plugin.management)l 9I- s- s-5-org.gradle.plugin.use)n ½-$Ѱ-$Ѱ-Ұ-org.gradle.plugins.ear) -D-D--E-!org.gradle.plugins.ear.descriptor-*n ]I-J-J-_Cp-org.gradle.plugins.ide2*v t---Q!-org.gradle.plugins.ide.apiS*~ ؞-t{ϲ-t{ϲ-kв-org.gradle.plugins.ide.eclipse{* &}ֲ-_9-_9-"x:-$org.gradle.plugins.ideeclipse.model+x cC-GXb-GXb-POc-org.gradle.plugins.ide.idea+ i-'R-'R-(-!org.gradle.plugins.ide.idea.model,v )-y^Z-y^Z-/[-org.gradle.plugins.signing- R^-JUl-JUl-Fm-$org.gradle.plugins.signing.signatory%- :q-֑-֑-}-(org.gradle.plugins.signing.signatory.pgp pZ zB-ojoj*-` 7Q package-listINDX( G (.gan)l 9I- s- s-5-org.gradle.plugin.use)n ½-$Ѱ-$Ѱ-Ұ-org.gradle.plugins.ear) -D-D--E-!org.gradle.plugins.ear.descriptor-*n ]I-J-J-_Cp-org.gradle.plugins.ide2*v t---Q!-org.gradle.plugins.ide.apiS*~ ؞-t{ϲ-t{ϲ-kв-org.gradle.plugins.ide.eclipse{* &}ֲ-_9-_9-"x:-$org.gradle.plugins.ide.eclipsemodel+x cC-GXb-GXb-POc-org.gradle.plugins.ide.idea+ i-'R-'R-(-!org.gradle.plugins.ide.idea.model,v )-y^Z-y^Z-/[-org.gradle.plugins.signing- R^-JUl-JUl-Fm-$org.gradle.plugins.signing.signatory%- :q-֑-֑-}-(org.gradle.plugins.signing.signatory.pgpC-  -.-.-P-org.gradle.plugins.signing.type -û-û-'Ż-#org.gradle.pluins.signing.type.pgpl-xf  ʻ-j-j-j-org.gradle.process-xf  x-E}-E}-dF~-org.gradle.swiftpm-v 0-Q-Q-ܛ-org.gradle.swiftpm.plugins-r ^R-"4-"4-g<-org.grdle.swiftpm.tasks-p ב---/ϔ-org.gradle.testfixtures-p EϾ-.-.--org.gradle.testing.base . p -----ү.-org.gradle.testing.base.plugins. &2-Q-Q- R-!org.gradle.testing.jacoco.pluginsY.  x-0-0--org.gradle.testing.jacoco.tasksz. -Vÿ-Vÿ-KĿ-%org.gradle.testing.jacoco.tasks.rules.t 1˿-05L-05L-}M-org.gradle.testkit.runer.xf P-p-p-rq-org.gradle.tooling/t s---ǯ-org.gradle.tooling.events pZ zB-ojoj*-` 7Q package-listINDX( ƁJ(..el-xf  ʻ-j-j-j-org.gradle.process-xf  x-E}-E}-dF~-org.gradle.swiftpm-v 0-Q-Q-ܛ-org.gradle.swiftpm.plugins-r ^R-"4-"4-g<-org.gradle.swiftpm.tasks-p ב---/ϔ-org.gradle.testfixtures-p EϾ-.-.--org.gradle.testing.base . p -----ү.-org.gradle.testing.base.plugins. &2-Q-Q- R-!org.gradle.testing.jacoco.pluginsY.  x-0-0--org.gradle.testing.jacoco.tasksz. -Vÿ-Vÿ-KĿ-%org.gradle.testing.jacoco.tasks.rules.t 1˿-05L-05L-}M-org.gradletestkit.runner.xf P-p-p-rq-org.gradle.tooling/t s---ǯ-org.gradle.tooling.events/ :;---q--'org.gradle.tooling.events.configuration /----"org.gradle.tooling.events.download/ 8-fo-fo- -#org.gradle.tooling.events.lifecycle 0 ^+----"org.gradle.tooling.events.problems0~ l{---H-org.gradle.toolingevents.task/0 ---Y-#org.gradle.tooling.events.task.javaC0~ j-n-n--n-n-Hn-#org.gradle.tooling.model.kotlin.dsl@2 n4s----!org.gradle.tooling.provider.modelQ2p` ---hS-org.gradle.utilD3p^ NO----org.gradle.vcs`3xf ,-e-e--org.gradle.vcs.gitf3p` ->->-z-org.gradle.work3xf K-0-0-E1-org.gradle.workers pZ zB-ojoj*-` 7Q package-list org.gradle.plugin.devel.tasks

Package-level declarations

Tasks for assisting with plugin development.

Types

Link copied to clipboard
@DisableCachingByDefault(because = "Not worth caching")
abstract class GeneratePluginDescriptors : DefaultTask
Generates plugin descriptors from plugin declarations.
Link copied to clipboard
@DisableCachingByDefault(because = "Not worth caching")
abstract class PluginUnderTestMetadata : DefaultTask
Custom task for generating the metadata for a plugin user test.
Link copied to clipboard
Validates plugins by checking property annotations on work items like tasks and artifact transforms.
GeneratePluginDescriptors

GeneratePluginDescriptors

constructor()(source)
declarations

declarations

@get:Internal(value = "Changes for the declarations are tracked via implementationClassById")
val declarations: ListProperty<PluginDeclaration>(source)
generatePluginDescriptors

generatePluginDescriptors

GeneratePluginDescriptors

GeneratePluginDescriptors

@DisableCachingByDefault(because = "Not worth caching")
abstract class GeneratePluginDescriptors : DefaultTask(source)

Generates plugin descriptors from plugin declarations.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
@get:Internal(value = "Changes for the declarations are tracked via implementationClassById")
val declarations: ListProperty<PluginDeclaration>
Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
outputDirectory INDX( Y>())Q=_-33c_-  !-generate-plugin-descriptors.html)xd)`-33`- r declarations.html))Ia-;#;#Tb- g generate-plugin-descriptors.html)hV)Ic-EJEJCd- index.html)l)$e-EJEJe-  output-directory.html IMPLEMENTATION_CLASSPATH_PROP_KEY

IMPLEMENTATION_CLASSPATH_PROP_KEY

val IMPLEMENTATION_CLASSPATH_PROP_KEY: String = "implementation-classpath"(source)
METADATA_FILE_NAME

METADATA_FILE_NAME

val METADATA_FILE_NAME: String = "plugin-under-test-metadata.properties"(source)
PluginUnderTestMetadata

PluginUnderTestMetadata

constructor()
generate

generate

open fun generate()(source)
INDX( >(())Bh-Qqh-h-  D-i-m-p-l-e-m-e-n-t-a-t-i-o-n_-c-l-a-s-s-p-a-t-h_-p-r-o-p_-k-e-y.html)))uj-QqQqj-  '-m-e-t-a-d-a-t-a_-f-i-l-e_-n-a-m-e.html))ʯk-ZZTk-  -plugin-under-test-metadata.html)p\)5 m-ZZ5om-  generate.html)hV)n-cco-M index.html)l)Op-ccD q-  output-directory.html)l)+Cr-n棭n棭jr-  plugin-classpath.html PluginUnderTestMetadata

PluginUnderTestMetadata

@DisableCachingByDefault(because = "Not worth caching")
abstract class PluginUnderTestMetadata : DefaultTask(source)

Custom task for generating the metadata for a plugin user test.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
val IMPLEMENTATION_CLASSPATH_PROP_KEY: String = "implementation-classpath"
Link copied to clipboard
Link copied to clipboard
val METADATA_FILE_NAME: String = "plugin-under-test-metadata.properties"
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun generate()
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
outputDirectory

outputDirectory

pluginClasspath ValidatePlugins

ValidatePlugins

constructor()(source)
getClasses getClasspath

getClasspath

The classpath used to load the classes under validation.

getEnableStricterValidation

getEnableStricterValidation

Enable the stricter validation for cacheable tasks for all tasks.

getFailOnWarning

getFailOnWarning

Returns whether the build should break when the verifications performed by this task detects a warning.

getIgnoreFailures

getIgnoreFailures

Specifies whether the build should break when plugin verifications fails.

INDX( m>(8)n)ft-n棭n棭Jt- Y -validate-plugins.html)xb)u-x x v-  get-classes.html)xf)Һv-x x v-  get-classpath.html))$x-44EJx-  #get-enable-stricter-validation.html)r)6Vy-446Vy-  get-fail-on-warning.html)r)`Vz-44wz- w get-ignore-failures.html)xd)6 |-[[fI|-  get-launcher.html)j)}-[[}-  get-output-file.html)hV)v~-.- X index.html)v)׀-׀- % validate-task-classes.html getLauncher

getLauncher

The toolchain launcher used to execute workers when forking.

getOutputFile

getOutputFile

Returns the output file to store the report in.

ValidatePlugins

ValidatePlugins

Validates plugins by checking property annotations on work items like tasks and artifact transforms. This task should be used in Gradle plugin projects for doing static analysis on the plugin classes. The java-gradle-plugin adds a validatePlugins task, though if you cannot use this plugin then you need to register the task yourself. See the user guide for more information on incremental build and caching task outputs.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard
val TASK_NAME: String = "name"
Link copied to clipboard
val TASK_OVERWRITE: String = "overwrite"
Link copied to clipboard
val TASK_TYPE: String = "type"
Link copied to clipboard

Functions

Link copied to clipboard
open fun acceptServiceReferences(serviceReferences: Set<ServiceReferenceSpec>)
Link copied to clipboard
open fun appendParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun compareTo(otherTask: Task): Int
Link copied to clipboard
open fun configure(closure: Closure): Task
abstract fun configure(cl: Closure): T
Link copied to clipboard
inline fun <T : Any> ExtensionAware.configure(noinline configuration: T.() -> Unit)

Executes the given configuration block against the extension of the specified type.

Link copied to clipboard
open fun dependsOn(paths: Array<Any>): Task
Link copied to clipboard
open fun doFirst(action: Action<out Any>): Task
Link copied to clipboard
open fun doLast(action: Action<out Any>): Task
Link copied to clipboard
open fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open fun finalizedBy(paths: Array<Any>): Task
Link copied to clipboard
open fun getActions(): List<Action<out Any>>
Link copied to clipboard
open fun getAnt(): AntBuilder
Link copied to clipboard
open fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
Link copied to clipboard
The classpath used to load the classes under validation.
Link copied to clipboard
Link copied to clipboard
open fun getDependsOn(): Set<Any>
Link copied to clipboard
Link copied to clipboard
open fun getDidWork(): Boolean
Link copied to clipboard
Enable the stricter validation for cacheable tasks for all tasks.
Link copied to clipboard
Link copied to clipboard
Returns whether the build should break when the verifications performed by this task detects a warning.
Link copied to clipboard
Link copied to clipboard
open fun getIdentityPath(): Path
Link copied to clipboard
Specifies whether the build should break when plugin verifications fails.
Link copied to clipboard
open fun getInputs(): TaskInputsInternal
abstract fun getInputs(): TaskInputs
Link copied to clipboard
The toolchain launcher used to execute workers when forking.
Link copied to clipboard
open fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
Link copied to clipboard
open fun getLogger(): Logger
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getName(): String
Link copied to clipboard
open fun getOnlyIf(): Spec<out Any>
Link copied to clipboard
Returns the output file to store the report in.
Link copied to clipboard
open fun getOutputs(): TaskOutputsInternal
abstract fun getOutputs(): TaskOutputs
Link copied to clipboard
open fun getPath(): String
Link copied to clipboard
open fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
open fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open fun getSharedResources(): List<ResourceLock>
abstract fun getSharedResources(): List<out ResourceLock>
Link copied to clipboard
Link copied to clipboard
open fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
abstract fun getState(): TaskState
Link copied to clipboard
open fun getTaskActions(): List<InputChangesAwareTaskAction>
Link copied to clipboard
open fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open fun getTaskIdentity(): TaskIdentity<out Any>
Link copied to clipboard
open fun getTemporaryDir(): File
Link copied to clipboard
open fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun <T : Task?> injectIntoNewInstance(project: ProjectInternal, identity: TaskIdentity<T>, factory: Callable<T>): T
Link copied to clipboard
open fun isEnabled(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun mustRunAfter(paths: Array<Any>): Task
Link copied to clipboard
Link copied to clipboard
open fun onlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun prependParallelSafeAction(action: Action<out Any>)
Link copied to clipboard
open fun property(propertyName: String): Any
Link copied to clipboard
open fun setActions(replacements: List<Action<out Any>>)
Link copied to clipboard
open fun setDependsOn(dependsOn: Iterable<out Any>)
Link copied to clipboard
open fun setDidWork(didWork: Boolean)
Link copied to clipboard
open fun setFinalizedBy(finalizedByTasks: Iterable<out Any>)
Link copied to clipboard
open fun setMustRunAfter(mustRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
open fun setOnlyIf(spec: Spec<out Any>)
Link copied to clipboard
open fun setProperty(name: String, value: Any)
Link copied to clipboard
open fun setShouldRunAfter(shouldRunAfterTasks: Iterable<out Any>)
Link copied to clipboard
Link copied to clipboard
inline fun <T : Any> ExtensionAware.the(): T

Returns the extension of the specified type.

fun <T : Any> ExtensionAware.the(extensionType: KClass<T>): T

Returns the extension of the specified extensionType.

Link copied to clipboard
open fun usesService(service: Provider<out BuildService<out Any>>)
Link copied to clipboard
validateTaskClasses

validateTaskClasses

org.gradle.plugin.management

Package-level declarations

APIs to influence how plugins are resolved.

Types

Link copied to clipboard
Configures how plugins are resolved.
Link copied to clipboard
interface PluginRequest
Contains information about a plugin that has been requested for resolution.
Link copied to clipboard
Allows modification of PluginRequests before they are resolved.
Link copied to clipboard
Allows plugin resolution rules to inspect a requested plugin and modify which target plugin will be used.
getPlugins

getPlugins

The Plugin dependencies, permitting default plugin versions to be configured.

getRepositories

getRepositories

The plugin repositories to use.

getResolutionStrategy

getResolutionStrategy

The plugin resolution strategy.

includeBuild

includeBuild

abstract fun includeBuild(rootProject: String)(source)

Includes a plugin build at the specified path to the composite build. Included plugin builds can contribute settings and project plugins.

Parameters

rootProject

The path to the root project directory for the build.


abstract fun includeBuild(rootProject: String, configuration: Action<ConfigurableIncludedPluginBuild>)(source)

Includes a plugin build at the specified path to the composite build, with the supplied configuration. Included plugin builds can contribute settings and project plugins.

Parameters

rootProject

The path to the root project directory for the build.

configuration

An action to configure the included build.

PluginManagementSpec

PluginManagementSpec

Configures how plugins are resolved.

Functions

Link copied to clipboard
The Plugin dependencies, permitting default plugin versions to be configured.
Link copied to clipboard
The plugin repositories to use.
Link copied to clipboard
The plugin resolution strategy.
Link copied to clipboard
abstract fun includeBuild(rootProject: String)
Includes a plugin build at the specified path to the composite build.
abstract fun includeBuild(rootProject: String, configuration: Action<ConfigurableIncludedPluginBuild>)
Includes a plugin build at the specified path to the composite build, with the supplied configuration.
Link copied to clipboard
abstract fun plugins(action: Action<out Any>)
Configure the default plugin versions.
Link copied to clipboard
abstract fun repositories(repositoriesAction: Action<out Any>)
Defines the plugin repositories to use.
Link copied to clipboard
abstract fun resolutionStrategy(action: Action<out Any>)
Configure the plugin resolution strategy.
plugins

plugins

abstract fun plugins(action: Action<out Any>)(source)

Configure the default plugin versions.

INDX( ?(a)xb)`*-ФФ`*-  get-plugins.html)l)-ФФ-  get-repositories.html)z)-‡--‡-  get-resolution-strategy.html)xf)->-  include-build.html)hV)`-9'-`P index.html)pZ)-EE‹-  plugins.html)xd)O-EE!-  repositories.html)r)\-ll-  resolution-strtegy.html repositories

repositories

abstract fun repositories(repositoriesAction: Action<out Any>)(source)

Defines the plugin repositories to use.

resolutionStrategy

resolutionStrategy

abstract fun resolutionStrategy(action: Action<out Any>)(source)

Configure the plugin resolution strategy.

getId

getId

abstract fun getId(): PluginId(source)

The ID of the plugin requested. Never null.

getModule

getModule

@Nullable
abstract fun getModule(): ModuleVersionSelector(source)

The implementation module of the plugin if one was explicitly specified, otherwise null.

getVersion

getVersion

@Nullable
abstract fun getVersion(): String(source)

The version of the plugin if one was specified, otherwise null.

PluginRequest

PluginRequest

Contains information about a plugin that has been requested for resolution.

Functions

Link copied to clipboard
abstract fun getId(): PluginId
The ID of the plugin requested.
Link copied to clipboard
@Nullable
abstract fun getModule(): ModuleVersionSelector
The implementation module of the plugin if one was explicitly specified, otherwise null.
Link copied to clipboard
@Nullable
abstract fun getVersion(): String
The version of the plugin if one was specified, otherwise null.
eachPlugin

eachPlugin

abstract fun eachPlugin(rule: Action<out Any>)(source)

Adds an action that is executed for each plugin that is resolved. The PluginResolveDetails parameter contains information about the plugin that was requested and allows the rule to modify which plugin will actually be resolved.

PluginResolutionStrategy

PluginResolutionStrategy

Allows modification of PluginRequests before they are resolved.

Functions

Link copied to clipboard
abstract fun eachPlugin(rule: Action<out Any>)
Adds an action that is executed for each plugin that is resolved.
getRequested

getRequested

Get the plugin that was requested.

getTarget

getTarget

abstract fun getTarget(): PluginRequest(source)

The target plugin request to use.

PluginResolveDetails

PluginResolveDetails

Allows plugin resolution rules to inspect a requested plugin and modify which target plugin will be used.

Functions

Link copied to clipboard
abstract fun getRequested(): PluginRequest
Get the plugin that was requested.
Link copied to clipboard
abstract fun getTarget(): PluginRequest
The target plugin request to use.
Link copied to clipboard
abstract fun useModule(notation: Any)
Sets the implementation module to use for this plugin.
Link copied to clipboard
abstract fun useVersion(@Nullable version: String)
Sets the version of the plugin to use.
useModule

useModule

abstract fun useModule(notation: Any)(source)

Sets the implementation module to use for this plugin.

Parameters

notation

the module to use, supports the same notations as org.gradle.api.artifacts.dsl.DependencyHandler

useVersion

useVersion

abstract fun useVersion(@Nullable version: String)(source)

Sets the version of the plugin to use.

Parameters

version

version to use

org.gradle.plugin.use

Package-level declarations

Classes for managing plugin resolution and use.

Types

Link copied to clipboard
The DSL for declaring plugins to use in a script.
Link copied to clipboard
A plugin dependency.
Link copied to clipboard
A mutable specification of a dependency on a plugin.
Link copied to clipboard
interface PluginId
A description of a plugin.
alias

alias

Adds a plugin dependency using a notation coming from a version catalog. The resulting dependency spec can be refined with a version overriding what the version catalog provides.

Return

a mutable plugin dependency specification that can be used to further refine the dependency

Parameters

notation

the plugin reference

id

id

abstract fun id(id: String): PluginDependencySpec(source)

Add a dependency on the plugin with the given id.

plugins {
    id "org.company.myplugin"
}
Further constraints (e.g. version number) can be specified by the methods of the return value.
plugins {
    id "org.company.myplugin" version "1.3"
}
Plugins are automatically applied to the current script by default. This can be disabled using the apply false option:
plugins {
    id "org.company.myplugin" version "1.3" apply false
}
This is useful to reuse task classes from a plugin or to apply it to some other target than the current script.

Return

a mutable plugin dependency specification that can be used to further refine the dependency

Parameters

id

the id of the plugin to depend on

PluginDependenciesSpec

PluginDependenciesSpec

The DSL for declaring plugins to use in a script.

In a build script, the plugins {} script block API is of this type. That is, you can use this API in the body of the plugins script block to declare plugins to be used for the script.

Relationship with the apply() method

The plugins {} block serves a similar purpose to the apply method that can be used to apply a plugin directly to a Project object or similar. A key difference is that plugins applied via the plugins {} block are conceptually applied to the script, and by extension the script target. At this time there is no observable practical difference between the two approaches with regard to the end result.

Strict Syntax

When used in a build script, the plugins {} block only allows a strict subset of the full build script programming language. Only the API of this type can be used, and values must be literal (e.g. constant strings, not variables). Interpolated strings are permitted for version, however replacement values must be sourced from Gradle properties. Moreover, the plugins {} block must be the first code of a build script. There is one exception to this, in that the buildscript {} block (used for declaring script dependencies) must precede it.

This implies the following constraints:

  • Only id, alias, and alias method calls may be top level statements
  • id calls may only be followed by a version and/or apply method call on the returned object
  • id, version and apply methods must be called with a literal argument (i.e. not a variable)
  • The plugins {} script block must follow any buildscript {} script block, but must precede all other logic in the script

Available Plugins

Core Plugins

Core Gradle plugins are able to be applied using the plugins {} block. Core plugins must be specified without a version number, and can have a qualified or unqualified id. That is, the java plugin can be used via:

plugins {
  id 'java'
}

Or via:

plugins {
  id 'org.gradle.java'
}

Core Gradle plugins use the org.gradle namespace.

For the list of available core plugins for a particular Gradle version, please consult the user manual.

Community Plugins

Non-core plugins are available from the Gradle Plugin Portal. These plugins are contributed by users of Gradle to extend Gradle's functionality. Visit plugins.gradle.org to browse the available plugins and versions.

To use a community plugin, the fully qualified id must be specified along with a version.

Settings Script Usage

When used in a settings script, this API sets the default version of a plugin, allowing build scripts to reference a plugin id without an associated version.

Within a settings script, the "Strict Syntax" rules outlined above do not apply. The `plugins` block may contain arbitrary code, and version Strings may contain property replacements. It is an error to call the `apply` method with a value other than `false` (the default).

Properties

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.antlr.AntlrPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.ApplicationPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.assembler.plugins.AssemblerPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.assembler.plugins.AssemblerLangPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.BasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.platform.base.plugins.BinaryBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.reporting.plugins.BuildDashboardPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.buildinit.plugins.BuildInitPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.c.plugins.CPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.c.plugins.CLangPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.quality.CheckstylePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.toolchain.plugins.ClangCompilerPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.quality.CodeNarcPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.platform.base.plugins.ComponentBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.base.plugins.ComponentModelBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.cpp.plugins.CppPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.cpp.plugins.CppApplicationPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.cpp.plugins.CppLangPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.cpp.plugins.CppLibraryPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.test.cpp.plugins.CppUnitTestPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.test.cunit.plugins.CUnitConventionPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.test.cunit.plugins.CUnitPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.distribution.plugins.DistributionPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.plugins.ear.EarPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.plugins.ide.eclipse.EclipsePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.plugins.ide.eclipse.EclipseWtpPlugin.

Link copied to clipboard
Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.toolchain.plugins.GccCompilerPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.test.googletest.plugins.GoogleTestConventionPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.test.googletest.plugins.GoogleTestPlugin.

Link copied to clipboard
Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.GroovyPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.GroovyBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.plugin.devel.internal.precompiled.PrecompiledGroovyPluginsPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.HelpTasksPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.plugins.ide.idea.IdeaPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.publish.ivy.plugins.IvyPublishPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.testing.jacoco.plugins.JacocoPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.testing.jacoco.plugins.JacocoReportAggregationPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JavaPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JavaBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JavaLibraryPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JavaLibraryDistributionPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JavaPlatformPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JavaTestFixturesPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JdkToolchainsPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JvmEcosystemPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JvmTestSuitePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JvmToolchainManagementPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.JvmToolchainsPlugin.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

The kotlin-dsl.precompiled-script-plugins plugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.base.plugins.LanguageBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.base.plugins.LifecycleBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.publish.maven.plugins.MavenPublishPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.toolchain.plugins.MicrosoftVisualCppCompilerPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.plugins.NativeComponentPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.plugins.NativeComponentModelPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.objectivec.plugins.ObjectiveCPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.objectivec.plugins.ObjectiveCLangPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.objectivecpp.plugins.ObjectiveCppPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.objectivecpp.plugins.ObjectiveCppLangPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.quality.PmdPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.ProjectReportsPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.ProjectReportsPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.publish.plugins.PublishingPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.ReportingBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.scala.ScalaPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.scala.ScalaBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.plugins.signing.SigningPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.toolchain.internal.plugins.StandardToolChainsPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.swift.plugins.SwiftApplicationPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.swift.plugins.SwiftLibraryPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.swiftpm.plugins.SwiftPackageManagerExportPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.TestReportAggregationPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.testing.base.plugins.TestSuiteBasePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.catalog.VersionCatalogPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.ide.visualstudio.plugins.VisualStudioPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.api.plugins.WarPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.rc.plugins.WindowsResourceScriptPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.language.rc.plugins.WindowsResourcesPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.buildinit.plugins.WrapperPlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.ide.xcode.plugins.XcodePlugin.

Link copied to clipboard

The builtin Gradle plugin implemented by org.gradle.nativeplatform.test.xctest.plugins.XCTestConventionPlugin.

Functions

Link copied to clipboard
Adds a plugin dependency using a notation coming from a version catalog.
Link copied to clipboard

Applies the given Kotlin plugin module at the embedded version (currently 1.9.10).

Link copied to clipboard
abstract fun id(id: String): PluginDependencySpec
Add a dependency on the plugin with the given id.
Link copied to clipboard

Applies the given Kotlin plugin module.

getPluginId

getPluginId

abstract fun getPluginId(): String(source)
getVersion

getVersion

PluginDependency

PluginDependency

A plugin dependency.

Functions

Link copied to clipboard
abstract fun getPluginId(): String
Link copied to clipboard
apply

apply

abstract fun apply(apply: Boolean): PluginDependencySpec(source)

Specifies whether the plugin should be applied to the current project. Otherwise it is only put on the project's classpath.

This is useful when reusing classes from a plugin or to apply a plugin to sub-projects:

plugins {
    id "org.company.myplugin" version "1.0" apply false
}

subprojects {
    if (someCondition) {
        apply plugin: "org.company.myplugin"
    }
}

Return

this

Parameters

apply

whether to apply the plugin to the current project or not. Defaults to true

PluginDependencySpec

PluginDependencySpec

A mutable specification of a dependency on a plugin.

Can be used to specify the version of the plugin to use.

See PluginDependenciesSpec for more information about declaring plugin dependencies.

Functions

Link copied to clipboard
abstract fun apply(apply: Boolean): PluginDependencySpec
Specifies whether the plugin should be applied to the current project.
Link copied to clipboard

Specifies whether the plugin should be applied to the current project. Otherwise it is only put on the project's classpath.

Link copied to clipboard
abstract fun version(@Nullable version: String): PluginDependencySpec
Specify the version of the plugin to depend on.
Link copied to clipboard

Specify the version of the plugin to depend on.

version

version

abstract fun version(@Nullable version: String): PluginDependencySpec(source)

Specify the version of the plugin to depend on.

plugins {
    id "org.company.myplugin" version "1.0"
}

By default, dependencies have no (i.e. null) version.

Core plugins must not include a version number specification. Community plugins must include a version number specification.

Return

this

Parameters

version

the version string (null for no specified version, which is the default)


Specify the version of the plugin to depend on.

plugins {
    id "org.company.myplugin" version libs.versions.myplugin
}

Return

this

Parameters

version

the version provider, for example as found in a version catalog

getId

getId

abstract fun getId(): String(source)

The fully qualified plugin ID.

getName

getName

abstract fun getName(): String(source)

The plugin name without the namespace.

getNamespace

getNamespace

@Nullable
abstract fun getNamespace(): String(source)

The namespace of the plugin or null if the ID contains no ..

PluginId

PluginId

interface PluginId(source)

A description of a plugin.

Functions

Link copied to clipboard
abstract fun getId(): String
The fully qualified plugin ID.
Link copied to clipboard
abstract fun getName(): String
The plugin name without the namespace.
Link copied to clipboard
@Nullable
abstract fun getNamespace(): String
The namespace of the plugin or null if the ID contains no ..
Link copied to clipboard
abstract fun withNamespace(namespace: String): PluginId
Takes this unqualified plugin ID and adds a namespace.
withNamespace

withNamespace

abstract fun withNamespace(namespace: String): PluginId(source)

Takes this unqualified plugin ID and adds a namespace.

Return

the plugin ID qualified with the given namespace

Parameters

namespace

the namespace to add.

Throws

if the ID already had a namespace

org.gradle.plugins.ear

Package-level declarations

Support for generating EAR archives in a Gradle build

Types

Link copied to clipboard
@DisableCachingByDefault(because = "Not worth caching")
abstract class Ear : Jar
Assembles an EAR archive.
Link copied to clipboard
abstract class EarPlugin : Plugin<T>
A Plugin with tasks which assemble a web application into a EAR file.
Link copied to clipboard
abstract class EarPluginConvention
Ear Plugin Convention.
EAR_EXTENSION

EAR_EXTENSION

Ear

Ear

constructor()(source)
deploymentDescriptor

deploymentDescriptor

open fun deploymentDescriptor(@DelegatesTo(value = DeploymentDescriptor::class, strategy = Closure.DELEGATE_FIRST) configureClosure: Closure): Ear(source)

Configures the deployment descriptor for this EAR archive.

The given closure is executed to configure the deployment descriptor. The DeploymentDescriptor is passed to the closure as its delegate.

Return

This.

Parameters

configureClosure

The closure.


open fun deploymentDescriptor(configureAction: Action<out Any>): Ear(source)

Configures the deployment descriptor for this EAR archive.

The given action is executed to configure the deployment descriptor.

Return

This.

Parameters

configureAction

The action.


generateDeploymentDescriptor

generateDeploymentDescriptor

getAppDirectory

getAppDirectory

The application directory. Added to the produced archive by default.

The ear plugin sets the default value for all Ear tasks to src/main/application.

Note, that if the ear plugin is not applied then this property is ignored.

Ear

Ear

@DisableCachingByDefault(because = "Not worth caching")
abstract class Ear : Jar(source)

Assembles an EAR archive.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val conventionMapping: ConventionMapping
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val EAR_EXTENSION: String = "ear"
Link copied to clipboard
open var enabled: Boolean
Link copied to clipboard
Link copied to clipboard

The extra properties extension in this object's extension container.

Link copied to clipboard
open var group: String
Link copied to clipboard
Link copied to clipboard
open val lib: CopySpec
Link copied to clipboard
@get:Nullable
@get:Input
open var libDirName: String
Link copied to clipboard
open var manifest: Manifest
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val rootSpec: CopySpecInternal
Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
val TASK_ACTION: String = "action"
Link copied to clipboard
val TASK_CONSTRUCTOR_ARGS: String = "constructorArgs"
Link copied to clipboard
val TASK_DEPENDS_ON: String = "dependsOn"
Link copied to clipboard
val TASK_DESCRIPTION: String = "description"
Link copied to clipboard
val TASK_GROUP: String = "group"
Link copied to clipboard