Add Handbook.md benchmark tasks
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
FROM handbook_base
|
||||
|
||||
COPY initial_external_services/ /data/
|
||||
COPY initial_external_services/ /initial_data/
|
||||
COPY initial_workspace/ /workdir/
|
||||
|
||||
ENV INPUTDIR=/data OUTPUTDIR=/data WORLDBENCH_TOOL_SETS="syntara_ds_all google_mail_contacts slack_core google_mail_core google_calendar_core jira_core shopify_core"
|
||||
+1443
File diff suppressed because it is too large
Load Diff
+3738
File diff suppressed because it is too large
Load Diff
+2005
File diff suppressed because it is too large
Load Diff
+99
@@ -0,0 +1,99 @@
|
||||
%PDF-1.4
|
||||
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 9 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 9 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260411023848-07'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260411023848-07'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2630
|
||||
>>
|
||||
stream
|
||||
Gatm<>BAN>&q9SYk_E*EGRG2@\G;+DO<oTTCuaPrQ!X`0JB:D%1*[[C[6OY4O!H=Z.h9V]8o2FZqY'U6(E4q'Z-E;t"Rp[<T*@4+%SUJBHOUK4,NqqKI\,6gaef<FD?g^4Z\E>Mh3JKZVsE#Z#9$=?CH8'MB/,up3mb5r\A7!Z_sG]*b?TVU(/c\.`As%-JQr0rZo8maD4!`enP95l]&ml$UZPCbTCaIY(_>P>4<!,M^5UBHo#&O'#@[0Ne@tDu;b=pf"QTt\Cap1(3%u`EqgPm\jdNn:*hcoLpp8MqG+4I,]&ng#[S$sR:;cDEa%<M1XDREAHR2%Y=<M&!],hD)'?iJla@,gY813pDY1;`Xh.CidVh(=E<#`&4KPOI,Y'D.;(;bm6(Cn>bVi&GWL[Rj\'oNDl/o8/Im'QAb%d`bfDSt/[<@D$+YgmEMM<*/ErE2P7_0<$Zk1\@P;?+M#F^\GH<kQuP]L%"J5FZXW&ZG1X(5#lta)\i[fhS<u4Ab^ZUiOXF-k^D.Si2X`B-0>u/.,';m3)tLJg)gsBZT_-"785mJ$'ZqT?m8*=+b'"ME:5hc5In8L+*?KMRf+/QlcUQ,ng<4FQj!l;]bOu82ROn'!]di=$2#t)Nk9]-jstO)Ral[h'ao%k7*e0KSJ.;%/B-DA0TU/QDjp3jpMg0P7\25JjdILTSa/*4<-68bRJU+lhu\[p4JOeak7nkg=,iU0$fKgiRbgkpQZriDC0Cj?a^U&!jUQ%!WBn&qZ0RLkD77'8o`E*\1hdT8oQrJm5@'Xad"/Si@?G(s41c&?lZXpJ0dN<LB=P;;]&9RS!9m08q2#S(.,h"d1hYPp@Gg\e'F84@^['B*:73=`k!pGbte"#m:s>T/hmH8@L+ZY&qLr&;aOtL-lHIAn9Kt<[0AJ-?\gD'$C*0BNG+q&S<Ea+jHQr.+d/".fna`!@ruIKWgHJqjFIK&1Z^_O+;L7dY_4RX$.p7+!k-[a'$2=j2a:<";DWeg<EnUnO'-'RJ(q=\)(,Kj6\\Gt$LnoNXjWC-A\hN*>)Ipbb4Z(>,$8CoRRIkX,"g97id`9h@469WRh_+;L/F>3I:Uck<.Ep[eQ+c_#?h#Hjr?aCFGG->'_ksk-;`j;HCqEpPA<&ZM^d4(cD2+#G(nDNDl-4'f?a\[1=aG28Xc/\B@/jL5ArYLGsV/aZYJMPlN=Z(58ntkINFN(P:*m+h`_J;qUb\8C.e0Qm\t)R_K\R"!o>1*;H8[IfjmAt.0";PA>G$@1Cgo=LDbf!4A<I(1-k9&-SqIc6BAcQ+%*WRRB[&o:aQrk*X>AUgl?c\&=FHC'Jks93CjkoX(%naRYU:oqacE+V_^4]=jFm'Mlm+T#7g67MYrRW'iVrB)[]:<+F!iLUNkYC+TFW,hFO<r,YB<*r&@[]FR_9N!Oa20s%EU%::7CQWA/X%f`c,4i::+lU53Q<m#UbpQ@[">Hrks+E[Kibl`qg;9hsQ7,</#mFccuMCANH4Zf<L#",&X8MklecgogMT]Q<ts)\!$J_jdi#42(O]brlKT79;G5p\rpNe=k]D];[=Y>jgka!^bpK0ka1C<#<NtQZ4.Hk#L0mE_hpH`DkF-1RMaK6Bj?<#6!mVFhCZ/n<r]7o$!rNI$OA$aI]8gWoHJjQ_Zm;qQ$$[d/l5fnJ@GR\u3.(G2&:VP=._h/:SCUNf@AQ8Gc@flpSj[04oaO@(ZcNoN6c7r$,4=lP*bE@qJa,AY&+DHT'o0p[h^K3=iFhQX"#m7N`qYED2!$+gI@/]T+JUUAqI*dOYh@'02VfOSYn_7*OncN$S$4l=d%c`C!,6(&NERRXd3d*&:4po@99PUE!F.<;..GD5<W1XN[>9,oOtq\I&@48[18+[O2Fu_i3VYo\n_Se>m)\r@g*cU2_6mhms:WWlG,Me7`gkaeTD1W11''#gB0RT]nPXqH[sIB7Bo`r\].XaVY6";'1*ERpM)#_s9qB3$A3H7!A95:Q=/,`Al<;;Gnr]AqnP3@j]9Ng$)0fdpGCkoup41kG:kI77=P]lpHHYep_IYap>ORp_)pd(so9lgY6.<N]M1&'^XYB$Q8-fr=1HS2*rZ)%6ndP)KY]Us+5[HBsfRr`n<*TF#87%Zs<O\o^Xlc)`H?>,Q0nGk/WI#0$P;R<Z3h*eGcW3M[9*d]6:Lmo+.Yj(UK4G[lg\pNhuQeXXR(OF3ZIQL-T]Qdun;Z]u@=P.F"b8fukS52q*$7h9$#Wc/u"V]9aJS!pQUN4(_GT0V;a;Df's#R#g0HKjMr(#oSH&9t;R[0!fm>=Y5cNe@l&r[>bE5\m.jmli=$=?MDP3jB[T7/rShp.amPmTMKq!\%meW@@CZ%TXN0_'p+N`[gb88f<ACem\H*`AS&Tib<]!B:9d^o^SpG&pU-'qhtL":b)DjU>I@r[IroF*9dl(p"OVFPnYPMjCoT/a^O\8H=Ml>AE3f,bX:@!k*r.`#g)^-#BB2Q(krh3oT@YkS>_kB@d1"/imtE9V.hf_#JI7+Z!gb/"?d0"C?_$Qh[nE%.9TJ<JbnI0]0m4"JCn6\AoPj^b8Wta^VD?Di?7Zu#$gQs%CjhfZS=8SCq+K?j,hNc@$YM9^:Uf)<N9g9DLNQN\nACiQbOC.jrrI:E280~>endstream
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 969
|
||||
>>
|
||||
stream
|
||||
GasIe_/e6`&A@ZMn'WZP'\+tkR%0<PaNu(R,sM$s(h&Z6/Lnr;q>3c>2BdVc%A8i,hsS57-OS0Nl@+p:p^uQ`P_/aff:W4$5Wm(4mel=r]k-D9fT1ur3@!%KUQC*&UB.2'82(m+5#g5j34+At@(Cj]5s5J=>L;eYG'u07cgE-iR9V<u?4]6S:WBa*ClI''FKrKlMJ%jZ08Q53J$hlG1@$n39'\m*_U60=X/"<V7Q.4.Q:akVYtB9g$BCD4,mpWVAM9EWh9KZcZ'7WGD8m3[o0O+tk+>;j3IBm*9;tsd?s5$*c/'T-%0t4gR=*s#V-%`Y2-sgiRM*2SN$MmW-O-Hp/C>8Qf9RJEBK*7`b"L:'9fZ,tOnhL8KMhb#&Nu2"@6h^Rin\l\`\Na8XX#[1_j7?.kgCdg/`.mW<nhKRfJu;;G!^,_P!i;tL&6,"#M9:KU=rdQl?T!?MMumcAP>+cOu0Rm2Wns/c1R]dQeI%bX<("dFJX[B^6oHj)BJ_DqEmFlD&AFD5KEkKk3D-?M-f%\$Kmdd0_3J<L5/]XZj(o+*XiU=7STP1n4k48=,Ju')/+,dV1"9oC:\g]p>Dm5fCR+u1&";;MWHGgHWrFeq9,5gR4sh)2kHi9\K+Z'Mo)\W?M#44HgE)g]KGZXNb03`2l,o5.)d;-\!2MEhf\X':$8=)#;`Y`l*c\5)7f;>\%d>US0DFQh#uIP\+/-LqS#`Le!Kfo"TFlONiTZ>[-0*PAsm%MAe1lmC7&^k&liA)\#qKfc*QCTdC^cBf%TD^L>cMh'89;:eYmUn$WD$PL0'EEjM@8ajXLk=[;kE<R1eaRQNU6L)+Yu!'@Yk\QuZ)J,:/jXnS"<OVAHXTSNAa<3KK[HXkU1DRE9Jl8q9.NpZVdV3AF^J%=P"\^`1pc'jMtLHfQ3<GR'H/o#QlFp+sYAJ#@$"7&9OTG:cX`L8Nl%U>G8jI^t0X5L&KWCB~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 12
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000450 00000 n
|
||||
0000000644 00000 n
|
||||
0000000838 00000 n
|
||||
0000000906 00000 n
|
||||
0000001186 00000 n
|
||||
0000001251 00000 n
|
||||
0000003973 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<093be3848574f9f8989a8de38c29d2de><093be3848574f9f8989a8de38c29d2de>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 8 0 R
|
||||
/Root 7 0 R
|
||||
/Size 12
|
||||
>>
|
||||
startxref
|
||||
5033
|
||||
%%EOF
|
||||
@@ -0,0 +1,99 @@
|
||||
%PDF-1.4
|
||||
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 9 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 9 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260411023848-07'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260411023848-07'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2745
|
||||
>>
|
||||
stream
|
||||
Gau0E>BAN>&q9SYkdNpf0Th"gZ0,[)`\G(V3*8?s=8?Eh#+.g,&7**Lqs>FrJ-<q'lXO"J4W="dl`50Tn68uo4$LFr)a<0ETGq:b5rT`0fHV6c=$Nn\lt4FoG1XUSGh15!^"_,3@<>4L\"M,(]:&cZi[VaU/H]1F$.nqiEgZlMV(!&P2!:S^0#eJ6$Shp2;;XrYFMRUVl^r))kc2,BGIW1WKAEj=0Y)o:A2K_JDC2!kriZ$pMdZPh[2Zhh@I3S.#!%GNS&l4Di2W:=I,M1j\Y\Kb&^'bU^\>%ubuUTf>.tcoB,Zbie\tm4pHVbb0+-I#Sd_#;iU6E=#:Wm&@4YpIE5e<6?R)hAenq8552S7S3jh&p]Qgu@>NQ;hn;*<Z-Q2ncH-F*3HVOu&"rcj"#o=Y9o-;jW8#LM>/#?>eEOP$*UMF.R2%6UNYrgChe@H+=`(X1WFXc$0D`<mqaQsrD1&%l&n*3A3]%4V6%B`:qCJE:Pr3_:4b-)69F7-tUc/DG6J6iIJ1X,etX3kW%8c#P7EEbf3'!RElg[,Xae6@\.bA`Yt(2An]b<q)P*&;&9&3OpoHe_LD]jEr<d93LPo/tZ&iY`r%"NCr2;8aN"+dTn`-VSac[7S;F7?3DTdGU-_)dk<f"G+E'n5g;h";,H]&jdu^b;bc(.5qJb!PZBT?N_R1H&1fh$rc+;\0h=f?TAKk^rG'K+M4*0[k^<*A5]KGKiClqSifcs^mGVHhUrF)*1Qee-P<)t8l*1bSIR\J)7!d4R.5k9!YHtK#-#:.hO]WZMSWk.8g1j70_YK>__7+U@3R%5.io&^<a/AGXEU$[b=_/(AB%NY4<ai)?kd^N@s\$?0Mfp%,XTRT,S:2!&MI]._jiiH8q]=H4"M.&W0U5keCIRdE!k\/faqAcX;g_!ih9HtM`Jnf@b[&W.n+8Wa+=1Q&^)oR_@SlCk$crJabms^ZnQ`f0HqBu!$e^UGS/jKaqSp]H#c9lGF6DQ(H'sAeZ3h+Imak@qYfYgDZj"=MS8NhoR$>q,71E^Bf+^GeTFe`bIXBYAURVde759O\C#0A(Gr]T,)DkWf'MhhBpJ=l?R47+Uin$\)q9n43NROl/PI)oc1B>ajhYaIJpA2Ss*X!<>t23abN,UqftC`(=aL\P@fB5=P^+`dX$sdR\?:FBE[N]O/DrEg:Utg9JAA`]M'*o]=Jh"o<gB[i^gWQ_8=)XqW6h@=l[6E#Ns/YV59gic@$JI`<9F<@4*>rE.f@5_FO#Ii`54a"Ji9"2cKQAXm@2b>J8X4bs!ND>2<V=Vmu"n)YC>ns8gQ)4r)g$hb2m@-$2A<6DOgZ`W94brR$Fb2BW&\&W(kB(1]\j12:MR5ZOGa`'LO=d<])qSs%iRerMn8BY7?d]VdHWH2VIH^RBNnYrT(eI3mH!.-ecD-o]bn8;uj7'j5<nkSSJ%#.mLE7BC5Vu]g(8.Gedt4B#d?L;CUidQfu@UAEo^!'2c*jq1,@&)g34=gZRPj.ng2]LWT;lDC8R?s"Ng>"f"BPItOc`VeI"bp;#!R.HDfUiHYHbU,iLqpE\PF!P@9dR`rR0JLd\FV2((t\>h=qq3iY325)M\Q+^>,h76@p4q2P^O>E9QGdmpLq_K:&rqX;9Chf4:l`IK+h^:3U34U<ikM_!tc5'[Q@(+".GIAf/3)7H:X$[S2qGabId\1-=i04h2(lQ7o;(f^4),lbIUEifQ<jhssHoe,@l!ua'3_SGBBV!4I9'O`5;APOaCOn%;[5M2)]'4djH.p4:N]E?9<#n)#9[2FsoQc*'26;MMbj(k4&V!fO6PQfDMj=-P#k&#oM5;^2r!=*jA(Oe^@!#33Qr8-6CCSOq9EV-KS0)NGe1%0!noQYq-)5$@-B?:43:mm.b/4_#0$%<,[ssHbLH(4q![LkjE#0Z*g_ICJM"BMgqs^6gkeDoY)6\@hZUV7PBF,gnioj8s,;saf=+Q$g9r4&6V6lY`EJjci`0uRPg>D;AWEb,.U8:sl)n#;"k40NqDEP1ZrH,!LRIhU$*fTKX4e.HckC%[s:'Yl;\[4'Ec&\8j*s9_8=<fhqH(99\HeEs[$-Z\UP*mnS68Ba>DaS@\kM%g'Z\9'%'I-AI`US!a15)hu[&^<D*^fTEF`-)5AuZU`l>]BErjosCUR[QFWX8/3Ap[fT)n&P>C1r[b:s(c.m!*#1GY5"Ukp3VZ;@l">l+(2MT=S;BRa[/Yn3)j6!aX?;=[]5ZD&u<>9M.'()Ne!Y\<Ej05q1ArgZ[E6V't7Nl]p-]M9h]1:gbJPBh,j@d/d8a+D`h/.TYsig*06W.^>\G=B7eG'?I=g*gVXDSk!6%d!g]V'G42FR\ggV3@2o#@`2kkOWllpb!Roi0ep`8mg?K/,ds;/Q3+d$1pWdS1e#I_JF%>9Gli>eEm<OYrfu>4DmnO#ZcWlSZQqiiGJ=MdIlDnlPT^eD(6^c=1)O"'NW'4TQPQt&Ehm%PJB\^b6P<6^;7[`"Z0tUEVC=!&52VWd)@>K!6XOTUb9p:!;Lm?K@[dDl.]R0YhF18ZHm-CEj#B(+6P(gU2*Q3foe)Yf$1/"<*]$+:pC(D\P-3,SjcZF5Q)_.;O_(O)Tsm2c&cK=-s"EZJe`-L"Dq#a#.tM)2<C>I(LpSHDEfR;"^2T6sMLF/f]CG6ap2&Vs.sAB3oZL`45P;?!ZTZ:NV`Nq>(^nUFHonBp!-SiLeP#4hW;+984dbs>WlRC6m5p]fGCsTJEA6Z@Q)d&Qr<)kfT8E~>endstream
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 832
|
||||
>>
|
||||
stream
|
||||
Gat=(9lldX&A@sBm,[5N)N6@X\CF;@l\omUb"OJ%-m5`lO:k.;j+#sO^t<OqG,Eh-M>_\2g3j>0*uAqCU':=V_^m#t!lul7Tbg&0L>.+H3[',em)-[Nckp?.PGrk[DIc/(Vi\@t-?U_f`L),!^+VeDi[6RADAfg'&#p:>85XJ$0k$M6m't_6G/%@8<0/^#f;la!_KW=pTP;U-[A+27p0?+_[clqkWe.qN'[S5P7)=D3X_bF>"+:FM1Z\"5MK)7+\.j`dN=.u/!(AuZdS+Z6C"P,n?l#O9'm-0\C.sPW``J+6KH)OZ_B3$SCRau6qaO1XE^:/GgVEB6$,ei1h1<oK$PubuG;%nB<ZhQH7^:R*Bu<P^Klg>bqK"rVO9V9nF;jgANcF;ao(!L,A=D,;#@>S8=CHCqE1M,2:*VFWH]7h3<Hf+;p`th*GX35\P(4@&.2(V0b=">1(;_oD]n(*g!<!u.<$$`)LVY.\.@D.\r?H[7)2QI]S?X\K+;"+HGF2qB,Z[aX!>hVo]W>8R`R#YcBo=KrNB0&0o!ot1O6YY(1TJ)S[W)6k#i]YOF$a(]LgEoA^KFSMgMt*IrL#a(rgEZ.kOgE7PXXL$Q,&5i>pD#"?Bbo:<#_fM.D8o&B:EX+@IDIFk9RT5_N;EukWB-`jF:sX'S]sZ14p6\0tSm9$uh1>e'MCN2+Ug0G&MgL(g9ijZuP`IUYfcICj6f:^qPdMPgO7`MMsL<9iq5?+H5R".^jko3.H_`kJ*,5n_Z)a9T\7r+52A/pjr*=jI]$AUIhXOoCHGg>JT^>)^H%B?LQ:67\DbuYpi`$T*E8e>;5jV2S"WO~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 12
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000450 00000 n
|
||||
0000000644 00000 n
|
||||
0000000838 00000 n
|
||||
0000000906 00000 n
|
||||
0000001186 00000 n
|
||||
0000001251 00000 n
|
||||
0000004088 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<d88d910f3936ce202ec9c88109ca2a63><d88d910f3936ce202ec9c88109ca2a63>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 8 0 R
|
||||
/Root 7 0 R
|
||||
/Size 12
|
||||
>>
|
||||
startxref
|
||||
5011
|
||||
%%EOF
|
||||
BIN
Binary file not shown.
+118
@@ -0,0 +1,118 @@
|
||||
%PDF-1.4
|
||||
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 5 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 10 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 12 0 R /MediaBox [ 0 0 612 792 ] /Parent 10 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 13 0 R /MediaBox [ 0 0 612 792 ] /Parent 10 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 10 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260411024206-07'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260411024206-07'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Count 3 /Kids [ 4 0 R 6 0 R 7 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2527
|
||||
>>
|
||||
stream
|
||||
Gb!;dgN)%.&q0LUoYX_311bM4??DU5FW<KbP`nZYD<8_i&.(p!GYnIh>&DO)cN/9u,`<PlCh5M"`=)bKVn5_HFG#^6+(kP4;PKM!qY>jXo4Yi`(,u?>Ds;Rsp?dgh1WR`0BKR5D3o2pA%B!-c*7()W+X8@BZ`uS<[5uJbh&hhF0rnR;8I8T"FQQ8oJ^4C<_MK'51VsLoKN2AYP;/E/&DM;6\TW2@B`P^[TQ^[f]X6$>M-0]_CX'L/dlbS^*jKFg`&)SgFGf%&9V]5/Y?kSn^3tK*YHKVJkit+i"jOg/r$T)>cbm15n^C^uT=R8ugTZ<uDLm5C597OrlV-8%j6e/\-dtAr4uUH"bm?IQQof@9^),?)?)O/;h[)TXJj0O`QZTdb,)ZSPa:fHY>4Web<u\X[E?*I>&OZG>+&`W*dB&CBilmeIGZ_s9OiU5CCV^`kjUSsQ;kDC-d!;T7U$3VQdnQtPN$aplccnh[Gb"Ndp(i&XD<TPa6f7g8rSIk<SZmZ0Fa>[21<0o-j3c"foS.#K,1""*D(l:[GIh*578uf;q%YR$0D$d@9!3?UcH1.@0kT3t9u;m@4@s4]A?P,^-nY$aG:`(Kon6V%#BU^,nZ^!rY>;%Hh.rL=/u97U$q4GokgRpjID8tZ?mM7:RLLA7$W2Mf.Nc&QDmGWto<m)TWP"L_Ko*@;@P+P2D=@ZX-C0knJ]i^"&e*iCKH?kb0PH!!Q!DBu(-@>i[o+]<MQFT!U=&aTZr))oi_j3K-%'MU$=1_h<GgsH-2_-;%>6i=AL;OCP_a%YZO!UB\]St.bD[6>Us*;Am$KCa69RjQ2Ichq[2ZjpR97TudlX/kPu%rJl)/5GM`"L"&9$"_]M)dlnuUbHn\h<;+M5)(EU2DB7BQTd)DA5N,U^a`H<M>A;6*m@)&,hJ'@?1`)qKn+hdsgKP2B\i,N'W7cj`c^Z89n$G9W=b?<(TC_T;W%c+D`Rq\K@m_@GA&:=r]'F+J<hFo@`[*&)9TBL&O,MN<8(*j7H!GFFJn4+7WhoZ%E^rpb)6#Y4KV(8<-1k\eIU4OW:VdBVR?\g9P:V(R37!9C[\EYO,`T?P]02OQhQYkp=[?]b<m;jW-[MM/dC&#b:A;m:JJpUGu4B6ce2JC8/7$m!-(/Y^[Lj8FlZDS"e6@`Xb;cTRd+a?F_H>\5l)>Jj"/.7ak)LCG1+K46&LAkjWtV_&3%e)QauE7gE$Yeo&.HdOO5Bj'A&%C+VG$s"NTBo\<V1&!9\h-b%6#prG76I)$0[l^)ZWU9N9$<qog;oI-ZW@8RV0N&DRm&BJ^BS1:#j"`\HA<Bua"!@^Gg&1aA`Z/EBH*S1ElTm(@G*L[7bP7UAjGOBc=p=0r`2-?6*&==kgK3&#_D9QPP^/Oihb'K]jj"8bn/N<(jF-J'3^2.Le20Z)"/e+m!)(62Ei]lk&mA^p/j.cb=.9:L6?(?VXL9K&2_S_PZH;H+M)#D[a<X%X0kdK^j&l#[$d)`iPg`b5R=FK=BnE[@NnB`Cf3P*q?h8-c\nisC!ZsaP@qj'pfOr?n>.dc&Xspgk(5*kX\.tDTEEn-SZn/Q)Q72p=p,e!*e*sP%)X%Vqj2d/01-mhVh$/L7Z-S)OZ\HhdTC:R%Ae2DP7Z`IDKru$4mYjCL0;L)K33hLk@piFIQFWtCaVOeDFG@"(chCt2FK$]p9[b0a,?O+":l-W8;N[7p:LV>MWm@\=")F>6Cd5""E<r`II+M[6jo>:X7:W]6KrRGhU1cX+dY^ns5(fbnchnl^#?C0g8nbb%71X:+L5IQX=-Ze+[HH*Kf7>[JD83R:67XLfpD*WV'=C1SN(6`Qo(ji/3_L`5J?$jKe'I!+'j!+>"&!Z^#OSHnTLO)CCL"K`hM;H<T]T$n:",s+>5^W5jZ>6j@4WU\e3]'T%oq-CYSCqQ5qP@Bb+<`kY;kc-->U*?\jSPQn+-U^1>mM%4m;S7c%SAnpFhtG%V\dTe"(62q9E/ZMEUcC&r5(fWsosi)g^rp7^`ism&SR7]Q*3::j/qa*pi-<6pgFQ<tJ?mbX'M,CMU^=bGRO\cjui<1$.SnetXiKOl,B4([.<GZD^uF*_!)^Cp^el(=]JbA"qYQNEW\^M"^-FoA;+N.b$=O5KW,)D;V*oQ`.jnD$Bj^c0*Zg,?:2\)'l4CiQr_]L9Aj`]7;_$5?bi>QJ#FPd*.[J`mf<hf^SsZfQ?hRp?l76\+Xq8r\i6%i[,Vl_I($hI65rrZS=PaY(=lr6"8OYZONA+I&2(&IQpAZ`'33tjJm/NR_+o_dBN<kk>Pg]&#=JmK@nTCgkl[j\'/Xds/6r)GV%qiRE@R0;563I;ckhZU%jW7Ss9mb_IYc-9!R=Si7<O+j(Gh4f3Dl7g@B`<kFq417,%4^@H1OhOn&!oCXKL&pEOaEg(Ln%J>m>,mq>60A'Zc;hWJG;%F[)/6=co*<NUL:UZ5S):>R(@n':VF_j$Y8e\Hm)rtYL0HiV/sr:f[$O(uf:VBPEmM<Vcj9qe,gMS:/u&CF#,dJX$+>]fZEZTUUW~>endstream
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2860
|
||||
>>
|
||||
stream
|
||||
Gau`U8TWWG(;BZI]\>D/&jqQ1go"#^FLoYul*d/*`>=>`,U=Y/!2LA.qtV9u;N#,0::Y-!9#?\*gR%BB6knW.EdoDrdAM?fGSO**U\botrLcs\f5u:fo&D!q:QE;"9VWXNa'5'P5"'gVkrs<8Y8rla-5*m31T/]WBJcG:9.DfIT_iXeddot(UEQb8r,1iPp!$F(BgYN<kCk=I2;oY!6=oC\R;tTMcBjqk7&b9:"*aA92\u'.r9T=\f&?mH1&n!+XFD#ZnCKXYc[(]@Ui>Mo38S9WN25-FN_g:@KCKdkHbE:+&5gf8cA(;FmqaEp;NGs5Q(lXYc<9,u8nG#iPG"tuc1R]NSdC[s/F.6l4Y\OeO'X[1-#B:,;Hh3n>LH2VZK@N.8%W^/<#M*gfpYqKVEDW'^>(Z\.%<;<r@21#7%UA#d?um:e\PKTmb`VSU@*7cm%46dlhC^,X4"P3&L=2Vg.(hc6J#]3K$&cm=_mL[92iA4fdrf"@P6VqAL8%XbG$7nBdm"Re$Zf.=,Kn!Laf`*!kN?NOiT9h.ca9g?'4HQ-sP7e.VW2<E$VaW8"sYKO8_r&F0:Fs159qdOB*M8=RIE^+qL<c:Gd;NI_IFF6(&FJP($@S;_s,(WesaoRVG73e]mc?7$7>=lM-_17O3mWK#(/]+>4\%ZZSP->HW)L_!Yr#!Dc8jSrh.W5O"SK[24/4XEmb`G4)k:[rNo+63;OA2A&&L47nfpkshe%i[smeo_P>3&C]]L6B_NU.G(OT#@4YbNsO,pjJP<9U7WE2b/G:(N@=[$+kT^+('V]K@<E`j81CegMg$BnbTrMZ("7F9rju!-9MqESG4m11"'25jbq9UjKrb;"`:a7pONBBkpM.n7gH#SIg%1UB#Hu%Ueg=CQ*c7#07RM!f[jk#??+NQ_\gk74l2kP^!=iiil\7\B%G?O2.u9%dgD)T2M6\`\=k6iRZ4V1OZ@FhZF1'@KB;Qrm_Qbs5P)W'aD8$\)+rc]6FO`E0FPK_Y"Jq(u?&Qj:MW5T;6)r]l]?jQDnr$D=16mW2_"H:?TDagbC=ui!K5-mNVJ0,n;ONAalQEWm$U$Yte@\OD;1ci?<6es_>bGg<)/rk-P&j(=;O>I""W97^G7A5P:n)SlP!8iNpIq2CI?K=BG:!5'M:2]"a1b-'?"UA)<QA@hC=@j%7R&A%Y.Bg5Z1d:?+U<?BPl`Dom"MmG@)lO73<&f]_@?An>W=i\)f?Fd*pWjg]0K9.>ssXFRdYm,hd>e8EI/ksm1X;$h,\=EJTLu4$t!GkhQBF1?o[9aCAFr*?j&*)Dl8%-es?;iMk2:Z)Z:T=F8[MtC2PP0pXlk6[Z)!9L=^=urRp7?*CNC+oa;aK8n"_E<r*!2G=u4ETW;&TN0Y+;M^]$J3rFMMl$+c9+fhIKEM&M(5lEVt^\ioqQ,6%pZJ+'t7r5OW2LCR$1^F9piA!R*V#N,^?B'g(r/]Q,Wp"&(Aa/1'J,STfJ#po8Q,YkK5CD[VW;(O9,an"8&@2FA!o0'aKj5W0r\+3KFqP5Zf80/#^A['pEitkjPLn=dNu?d(ppGAbm^rodLRQNoD@\W^#Fi3mk&&ndNC'f-9Z00'7&!P^q;@k0&-!Vc!hjB2:Ys.0iS19.$_:8P!dp2]37Ur-<l1q"FVdTE.6RrerQu^!'bUQ7'>4Mic6#5(FD9,>@k1RGUS8S=W5oP#_JCuN)]ER9_:I`$2V_eQ<%q)*p/J'IF`W#W['es<KHT^B$pnuO>_hLr;bI6*Qud>nl%]#86$BRQY;u*=:Y!*E30MstP0?@8DL-]lAkbfC/Q?fT!I0DlJ+A5YV&N9>LbhO$7GJF2&PrmdX8IWCT<Gt(>Sj(qQ$e&j\;5KMY9joJcjddP/Zo4-23mf!__Q`1c4(iPa=0PY0%P-`jc7_J"5pA5T5O@Fi;@lUiT1Qi^UTBYMpht?NPOL=lLuY^(BMYs>!dZ@'0f]VOsTDJ<6eK@Gf9$WRjj!Z5f@ZXH)kn'+,P^.=o;$P'F!fbLuf:-qVtb&<i"!_28ef+_N!Eob3-X/2<0dNo(a;/.j]ooT2l,9mqqV*hoV78_i"aEic;B60lgT3OGhGibEq5@*8^"rP<!gop_+N`p;UZ&;)6Gcs-nd!.hbUF85,')VEg$<PslmX.1i)a<%WLPfe4/E-uILe]"Fg2VsX,][11TcJlJ$Ndb<"G0S7X<-S&fW;fk/0@pT=LOjLtqQF=)o_3d5^>6hl'H5Vt%bM\PcVEfK><Vf:CQSBT\G(iT;_'KWSBB_5/MS.UaXgo!NT\aEqV,;=+!cAr[WKp[=/MS_9@cqDE^LMm5dU/8Bdm\tAr=pn-M@V:Lj"oiE%>+ouHbXkj?F`.6o`U4ckS&$VHQ'?^2\m]N;<mu+khHot.&aTXlH/bNFVJrp-KA.jYtt('\LK(H,\t_XfB)5N3t"Hc_r,[[3"/Y5GbIuQjAIW94#K;5.KPG%).gTskQAZLH4.[E1:,EZV51,r_SZVfl7mEh+iJl1]RjITE<iq]0+9%JQR_ZacJ2E:+C!rQ]s.H_q[C@,dBp3:PMm(gihUb?/P?o&%_EQ\<i09)DV#!\gp.tZF);;U:7H*QS[s4LIrd?j.C30oQ/5K!gG9U3r_-Qlf?5O[8"\[8b>r:?O36Gc<*:*XbH>>h&.[PO%7YHWWup9T3m\pC^YE,OhG,+U*8*"Vh@?eLprNKMNN@>cCmcr167-):VE6[B".m[O/i[M"apie"e=&$_LP`Gb%`glBSk=[<e'0V3596F$mWL0,Bc@UrVQ4p8E:r)l1^APOaInj`n<.i7iU04*>L'XG^/h6mD*>A7"ILZW]]BNTX!A7hbWP=mVPa\h$d(*@3mI\Rm-b/BjF>W\Y42~>endstream
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1405
|
||||
>>
|
||||
stream
|
||||
Gatm:9m>>M&A7mAm&`mPbm5TfPtUGMG+:\jfiFK00+\F]BLtGn814?0*Io6>AD(_qC-GQ/$".siAd;^#`5VX;/VlS;o_t!c$Ro3jMh@C[3F*mX%k"G!3>i$"gnkpKV\mbV-.n$:_U"eM<G$-2Tteg?#,tY"<#%'_<i<l97Ri2CS*RWsW[&h@S'hqYGl1B0,;NHRo^1t`@W<I9+.1:$P0/cW\_rMM:UJ6>ih\OYMaCs;QQiW4g1p;@P.rF@Pm0^R69\#LVF'FNjJF9J'#k.3&/9>DCTkPD1i*L-fPi[dO!"iYnVC$RZe62GS+U[dB?\p*r\>`7H0dX#KDR?o`)uID+gp;iI8a?&Z_iC#.?*8Ya1.1/20!XIPm"2LUU^O+PX-X5C4tUKTX=1AjT`(+8uuPppSaPMM$9+r_&7eQ=m!RU(=;l#C\/jG[>\6ll>koFC5<Va(Ya".E5gGGGimhDWs/HY8LXoR-kW>\+-%HV4]`Y^.=)_kHT%;=2?+hXWh?FK?@F!id>/opSdUg'6Q*)p*[&MQ&k5T)?._L^p8`>aE/Dh$IN#q\`Au:grsaK/_/h<ZnnP/k76t+NA`RT]1YMm2s'uY:<L)aS25614YqHt[le9S-C.,NG7d=IuNFm)tmc$_cPQdBbSZ"D&"V)PqSJ\!aMg2.!-U*QW#.J*Q9r;jQm@)WtMDCkN>\rN]WuA4DALS"s'J1gcQ*;lBNda-W82PZROWgDe%jZ2CP3KNc&t\:MflmAAE9'qBkFGF6S<6hl5$=KqOX&,P9onX1=#gVM`g0pl4&4Qipes[829IT"e>SSFDZiNK]"FW,]-s$/fCR=KP?]:rD_cZrV-H$u!Jm"0*a"CdCA=2KH!+SS\f'+Tc@hHuja6kAQn8(USUEu:c=R_m#eF0@k^IK?gt]Yk4b\.)%QHO@Ib!,8)d;g&Wt^#VSAKj5BeO;Wm&3OWZNe7$9%_S$LQagG5_QKeUtJchH+1FE)@[,gZegpRnSQV$Sg/c]I3U_]6c7gmDVQ2Lc(P/>S[Te67C>4;Xd5mcFLOE_=Ce&TY*aUaLn]=pUNF7]^BB)N*"&/Pj=;<@0/Y7TT<!8c9j[O%r?V9POkEq!&GK@I';W3!,.fi.4ac2`UsT7=n+cp'&ko0B"Et/APAl1HO=>:nB^t=Tq2#9oQl4pg:1"Ne)X`A!]/*"%\hd(As(MG=;8,9p%KBH)cKT7@iG2K4`gmi=T<ub8_hpVY/-$X9<<ZCM6<IN]<7mu0^'H>1]0kl0-\\mDKGURCUVU6f/&*)bB55mAEY\kc3,[o/m'bI1VH#hP)sth6S1tdIPH\3K=]s/I/P*n_$`@i:[lTji9il#4V:L-[pFEgWXb7L?J(0@R_/.a=nqH+O%Wc3Z'Fr$#TBdm4L=(IQGQ+>#IfK\n>Ij~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 14
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000526 00000 n
|
||||
0000000641 00000 n
|
||||
0000000836 00000 n
|
||||
0000001031 00000 n
|
||||
0000001100 00000 n
|
||||
0000001380 00000 n
|
||||
0000001452 00000 n
|
||||
0000004071 00000 n
|
||||
0000007023 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<754d302606003c384c64b81762002831><754d302606003c384c64b81762002831>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 9 0 R
|
||||
/Root 8 0 R
|
||||
/Size 14
|
||||
>>
|
||||
startxref
|
||||
8520
|
||||
%%EOF
|
||||
@@ -0,0 +1,99 @@
|
||||
%PDF-1.4
|
||||
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 9 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 9 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260411023647-07'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260411023647-07'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Count 2 /Kids [ 5 0 R 6 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2590
|
||||
>>
|
||||
stream
|
||||
Gb"/)?#Sc3&q/*0R(&P:'!4]%+3mO<9q3.UP1[1M>q?P[O<ls=<gHu^:?qiT%]Ku^2HP'R`!)%<fS$+mBkDU7c4%)`FSl^GgReRqEoH%9!CFVn!auuLpD/)CaWDn+*,.143asf:l*;sj4K54BEZ3c%ADp&(^k&;1UsT3e?4R![9q`eD=8.Bs0A9N\/&(N$I*UalP3E3j^OuCsSDJRU,aI9*A*#i+s4)JWi5G`P,g3P9I2+r"=d[--#Fb>oIb*Wn_LOTQ$aCd*A;94X'>M+E_qMu\[CMVdc,48ZHT=7sNJ/>>7JR?E]p-Dg9qK4PV_B^i(3Z&`Zch*pp?%8]=`OGU%)tC=P@[e@:Z<M@)s3d!N^c+L]H((@:2<q"bL>t&(-[Sbg$@04)RCnl^>>A!Ndfi;&]_EO!'W&G%TK?PAH<!gfN("[E;'ZW@[Q>iXrD-qR:\1ZA)q;#pUrD"oRHf0HkKr<dU<W_c9rn/Z0\O&2LG)hOQ,9>4O'*L,e>5(LqiV%ULVD@n[Il_ALi#XD)k8mDnFWL<TpYFn`sumU45CN7pdn)rnr56mJu%3*q\lT[tAV4hF.l[3U%64&be$jIY'Q;3CaYU&k@?VkK!(K6Ttl6JY+s`$*4]r0Im^o$\U*(KPBpmlVbD,WZa''AiZYL?`#R7FoBftoCfi4A.$X+4r_CSir(&B#@7ag\&u'"DC?)PK,tpdc"*^.ERo]Q)\,>TpYO__dT$?gP#o@IXFrSEE!o/!SY)]D#"].C"JPQ,-WugNi7:3dZJY1m*3I.\QnDkdE1@i#o.ZNC3"s,HL9J)pKX&$SZ-d(Lo.9L]PmEiqbelEaEjS<iG("Sh"^K_.hB"2aMHFSQKg.J3s2@-+C]N%[,'pcUe">],e9ft![WkBC7CZ.64c)Vk?dpc_rr)LtFOufV&#\X-UksiJ9#@?^0RrlEl@a%nmi9ga',g57>%,'g#&,AGX!0[(&WMZelfGhSk58]3_8^n>7l,"_Lho(<6"hPFfi/FsF@0nGP,4%U%,F4/I:J&#b24^&Dfa5[ZpUB?D67c:0Xg)o[X66JCdb@=.I;J(%so$'I"Xf^kf)LfEeh(_9ak<;jA<StATG0-*3,?BeZ&u3Z^8:O$lDsJL]19m)B=a2FrhD8MorjK&[l#S<FMSc*lZ1GaTUBQO5:fD<%$DnOt0E9dr6!MKLr:(7uYTQ-=`)j-U<M#qBSK4H2ipO8*tab9oDZ3D=Y^M`CC9g"/RmYKgpg%+"^>7C[HKDYT8`5^bWsYfZPEg@O%F\DC\=9MSuDqL[?U$ic(ZF_i&N+B5\@.q8Y'V+/GE]nT>Hp`C0smKF:P?P>?5&&<TXl**TcYmL+j@D.%HAF$,M5BM`3_A=31/`"?&k4i2k@7Vgru^:a&0":j&aEG0<&I7l<*CLLJ`T@B^%4Ub4_DIcB&Z<AHG6;*As%u<:6X8]le8OZ9.?fE&@?tJ(5M*:[:uF6[O."%'&q;bGiYI%E#1:io3Mjb"`6cWuD1/.#nFB?<2%iqGhLq1);0raLjCo`n@[H\sF#7UF;q<+@I^hMhsLhCDIXB@>`dT:Z<gH+p,#'W+q6&qENphXO#jNjrrhuS(0cS%na)Li%g4NGu7q6o`/$;=B'M&np5u%c0X."LRO[*><a_W#bd\5eCf"O5ufSqJ')hk4kVT!\n4#/DaK)udBYl)*@fbmefd(lDQGAuM]Kc\GI?Ag/8(>r=<@;YF3F**qhTuSoe*&`FP9'm-r:+pNTWgjko`M/r,8-Jfu?e8<EDtNIMC+_ZQt"kilNtM-Bl@lRV=e!c_I03((hU#!p'*n527gS':uq!dQ3CTBq)+hR9FHLlc9Ek&pr6Bl<e^QiOXC#NnZCRFui6rWFN![Dbp(&:qmdE8q2So25j1-QX:a;$RM;6f]U'Sr207'2:JG+0SaCpr?pGI6<hSh9Mf59dOP_\?P=5CK<M6N6;spI5b,IJjnU4f4=!]bNPie>%U&5%:p@cg=ctARgl'I8QI!m1^a!@Vke#&rVOel!@D;TKX_=Gf]^<^\PV.Hu2Du`jDnc&rHf5piIV>hM]\?rbPF\U$Fu2&rp"l@a\oSAd=Fl$4`?Z'4\<;:Z:(RQ=8B0f%m_6.u2T&/>>Ms8Y=<O5Vm85rtN!FCS)$F[ES7.;@@=?qFeDuTLpg:>Vl]anX<u_<bT[Fh-XRFl8_MVu=i&/WZWq02[EY.#JFbrRKjt#A%,2C$`g,KNp&peQ]O3A7FlA;7rq0]`'4QTo>aq@uP_H=6X3UrW8^Opd)H(Ke4/p\-r9dpU=aQ/HY1MfLm'o9frr!1/a"X7!2&r!imZFGklU3LLS??9\%cd`_T]1DK--\-Q0%E[#n_>0NZXE_SW)T@Z94;X4+Q^k6:-8a'#l>FT?,L!/_"ulF!P'+tOmahj1Id5hah/D;?@FuNUP7dRPp]T2UmYg[l[M20K>3Uh!;(^rP*pI=,'XE[/3e\ibi+_^^10t93iM\Gan&_AS0ps3_jN->7D4,IQ1.B6."lfLfU?ID\oUhc`>9N^S*o)h<nW-M%4B`aL=q95<W>=V')c'C2(rD.`_CQ"<[Rk+f^$85U.fs68`W%Lb(GQbsr!f@[Y;H~>endstream
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 590
|
||||
>>
|
||||
stream
|
||||
GauI2bAs(+'Sc?E`P5)&;i8*<Gip>/E@8.79XDb^]1PBA66qc(mm/oB_5kk'.L$GSkOO*mK#+.=R:fh,="1k2ARI.=*LLdB8FI.gf$RqScd9MHpW;*7(g5\!ZQ:]F)Ub!\r)S/;)L"Dd]*aF*GA4?B`_>\tT)DOI+g":pMo^]o4"1u8pc;]^Q?\qY/tUsuGIX4l1"OJ3EH)X>fIUp,oCPNcImX!boWf/1E$gi=@t;?b(e$U':ladpo.Js201b-\7^2K?G@\HYAsa'j`Em/f<I?]6)MEj:*VKq(X`l)+dJ\0ePh]GcJ/?pj?p_"+._%cT]/2%C1$OG[n=1rprVrP&an3=P@mMLA,M3ip:-gj&3sD04$r4jq1BZ\3R#4VpYU0IRF`u^.V,k?mn=n18W$UT:`j4/>k;03oD(0N%#7e/i6LM*q<P]u)[=\B,)WZ$Dnii)JGb[\rSLU:JAC"LlHOcBMKkrVb5fG-QF/WZfD619_BSMIp0j/9q3OV8Bi3uHgo\LqP\6^[YhD>c^KkLs-p.Ca7[n:Y>b?$f=V'rSEIRPthX1Et#X"@D]Yqai<5!+ebfqV8qoc%F2&F0~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 12
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000414 00000 n
|
||||
0000000608 00000 n
|
||||
0000000802 00000 n
|
||||
0000000870 00000 n
|
||||
0000001150 00000 n
|
||||
0000001215 00000 n
|
||||
0000003897 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<a38bb9bd1fa7258c6936ed19b393e077><a38bb9bd1fa7258c6936ed19b393e077>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 8 0 R
|
||||
/Root 7 0 R
|
||||
/Size 12
|
||||
>>
|
||||
startxref
|
||||
4578
|
||||
%%EOF
|
||||
@@ -0,0 +1,80 @@
|
||||
%PDF-1.4
|
||||
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 9 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260411023740-07'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260411023740-07'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2309
|
||||
>>
|
||||
stream
|
||||
Gb"/(gN)%,&:O:Sls&"8bRc%EO^Bl$/D&&><_5k01R[LC,\/&E6%u,)WaFWeGgVMFA_5I"Vpa4n<WKW;m-ZmG,%0E"kl3pWn9tFW0*i*s-;u&:TJ3p._;s\S#q8A*'\oi0N&">TdYF$$R]32f4-NoslPV[De;puK0T"!3D_E[*WnGpkd.q@6%63NlQKBog3@*(G@IajS^Hgt>h']3$U`QT"C&)E8^k'T=/sA_-O$4A@+qog7"K:$mpg0pi#R05Vg9a`m#GA(ha`SOS_fQmrFqR->cdQ,m7DNqk'']gjS435^qCL`IQR7b;j=*cd'J<K=U*X(9pn"BJAX-;fCKRB9D9Pq@/@'Sa7"umm1Z?jT%Eg7+n!HI:lR?nf_AiX6ar4aa::XouoAut=S#7&Vija1pKF\I4_(mUKdXYMUkL4JHmIbg2`-+mMe$Nm2.5b@&G*MoTJ)<l;7_dr<+"%\>>n^[d9WDtS(i*8#g6@u*+iTceo*e,B85*B?UTX9/]Ba4*\sC4j[PeZ80%u#K[k2aI"s52[V@WQn5!6Iq:IZH'PMtoR(ac^G\K&ECqX3YBb@#9i40Y=+_,HBW&^NIrH(_iap]g:,QS;p1*1#g:0J!&E:eimOS1<0Z2`1$^njP$J^;uPj`H=$8&1GHpEH%2!bE/P3Z=Tn<(*<`#f1M@O0d5Z9(Hfkq#SW:k?9Ji:KRuA.,f?J+T37bl?j8=rdJG/Y'dRL\)1/,Qm3T/t]ek*Q?QO#jd:%s^VHlj^/t+m#7Bb/+cup.qh3C3K`WNpE0KcE1*-sR,E7)9=?@@Cj_=d]A#_k8S\"i8\)VM-rm;+k<8qj/@lr<cX)5K-Uh("`h2;8AT1%P1nDck60[L?DF#P3f4\]$au,8t%!N%NB(K2j1"*]8bfD[IiGoFXDrfjNNEmlASGb]@X]:u`PA-qkkMDOInL*d%l%rR:;K8$K3[d1kHSD>M&Dpe*tKMp]I$%8%,<RoiXNf'1[>bPS/8-.Fgmf>jG&NaVSs>f%/7N*)*3KH=kb3iEt!6,B;Wr>o3_g]gR2a['G^#E<u(O"$QT3TNbs??[sQHk:.6W7jKEE;Ssl;Rb*nJF#ur8$4OX6Or-:dL4p3K\^UYYH('@-DD'cFr!ul(fD,;'-RH9BD3!>J<]S;HE+dKld)]5=tOXb3i_&1&i+B*_Y!hE-#WLMM?^s?Lu2Q$=ih9GqBuCdlN"d"qmK%^mJB>a/WT`iWnnqd8E'Gt7:NhBnc9>M'aSIAqs)_3W:)To/p/+VqRE3QR&PBe(P.qu&qt;D'k\KK=M2E_fL-_2YjI(lZt&CK)LNR?]Pkqp(;f]`^j"W(o0rL$0"j55>JtALd1*(D\tjno;edD<Fs?Cf*;$B\QdG2\#&lN4rA6XoA=T*Lp'7A7n7(%"P(QZeD6f%$s1C%";KSg%l,i8s7Q"7h?^CtsfU+:cBPCEl/q0%r#f0+U'!]N9T[uUmedkd2+Ou^NXJd!dB)ZJK=^DqIdU:b]L&T$s^09"ghf9.[FSAiQKNNte24r^$8+?GfYZIn/RFui1"+_cPZH`?IWCuCVh;>)@ToBK"GK]kQ>%V7S[a9'pq<aRd`-`E!4Nl+6]3-?4nsf(e?$`H[^82'MCXM_@%L6?^I+rED#M\d0)WVasf7S.'hCC-.qi``Yo/:0^gGeN(Ccb?_bI1Wri#^H@%-Yqjh#8!B-=s:In_^]M.^#!C.]$,E+QbH;i<CnVL<rJ[T<4Z\Zc0U)H!q!qMUp8q]gND&q7C/Vn<mk!l`m]T^d:_"$HuJ]NhL?O4I+o7Q:$tE,uQ;<;6qO;@s3de'R'S-UY%)O"Ju9S6VMu.(5PNBbBJ=+7P81.;6cGmX5@TiibdL@f![2b00J!iWosCtO1e,.T%XbB<mc$GQ?oZ]cGj@l$@-mF\Z:IO^i[@I`1EK-8:]uk_*,t0:c5cP^m>R`90@1(aAYrfS`DoWhE])X4C;i1aAXFlH'/pSf^8pGotM:_j98;faU;cTl*\P>*"79.7I**4Xq+B0kuFW[aIK.h(W]i??/NJ;$;6BaXk6FN)=LQ!8S,-U,U_BbIlG\XOd,%\0W%]*VDlXT@T]<"22BQcio"c[<<bnD>i-=Qn`%1JT)2-k2KuY-?Ak:J%1-5P<"l&3mP2QSdiLtB*r^K7RsZ1bg)u.FACh/N9]D5%*9Ihmg/pI.Q7p\<mYkThC7"_a[<s!kr0,YWE>gr*amF!5caJ;=p3#,q]$[hW6ephMBh4QBS>ST7oFDf/E)HPOdgL1iR94Y(1UpZE7u0t8M\N/2>%1r$7NTJL@1(t2XoT"58S3@^I"IQs!VuTnmf~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 10
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000414 00000 n
|
||||
0000000607 00000 n
|
||||
0000000675 00000 n
|
||||
0000000955 00000 n
|
||||
0000001014 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<f747503799f76ac5fbd7f05b7413a5f3><f747503799f76ac5fbd7f05b7413a5f3>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 7 0 R
|
||||
/Root 6 0 R
|
||||
/Size 10
|
||||
>>
|
||||
startxref
|
||||
3414
|
||||
%%EOF
|
||||
Binary file not shown.
@@ -0,0 +1,80 @@
|
||||
%PDF-1.4
|
||||
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 9 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260411023740-07'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260411023740-07'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2532
|
||||
>>
|
||||
stream
|
||||
Gb!Sm>BAN>&q9SYkdMjB[]C@+DL&RnS?N1*K?;5TQ)d[%0YkViL.K0fp=F6/86cQii%;jG>#PaFW$V-0lcThnnO)sKr>=Iu#Ns\A#_h+H#W!=ig(<mOI[uR`dUqG4MAZ(]]pFaSk-pcT2S*mlK-,LH&sC3a/K]:Y8Uc+__,kj,T*^MG`k;CSHkN<%b`a%-n.YGC6LT,3[)48Zl<ihaqEDUm,91\/P6$&rdr[m(-!itdA2<%-f"U*UaW;T6Lpnh^P#Wbm<Y^h!1:i5/fQae_J4>a#\JU3QR,aZt=84Z_,;G^FA-B`@@`4K0%'F.K*>+,j9^tUiMeG"]M@eP3SFU***kq.>Pqt`Y_kZ=O2OJ,(h8R$20MfJio'RB3_>B:sB9pT2b>D&_!.RZU%b.<:S--qhLcaee[W@:dYj=0p1p$qBN#<*M)_Cu>s*g8MFhcjqf96?(NX7Gm-<#g.me,Falg9_C,Uk@[\^.MQ",Z:,/*_IIDY]=L<8Zg"[l)^p[Y&UqlIL0M$4gK@W&%MR[o@&$]$nBD0T+q,#!<MCnJ$!$nKa8Rc83NfjP_nMksR,nSla401Z^&MjjVm.Pr\<rW;T9?*erl-^QoqZ$P*mFS1mBE`iWZ!A&u]ZP`&B?"0Pt,6=o-Oq!\jS\\lBKIc;fhN[9KTh`Brg[g]R!S7_[5qI:*H:'"^_JVVQ,[RQ8)';L8Qcunm)L%TB6>[^4d;^HLBm/F/[;QX);*bPD/@deq]YB>0oXj7Q#mb5,\5l_][=3tZh>J5s_"*B.?A^H.^c1Pq_F.m8_RC;I)P:KHcX`oEOqsPZrGH7CDdDDh@@E^s>$+TOGf/%6p.5Y1*<((153A/k#.ScqcasaG#(!B"\ph54]Q+U1,?72=S)>abR]1*q^@;JZ>Fn(i9\EKWpk9!",d\81\_ehFA'ChDa)Dshpb;:'h=)L?mVUf-Hc#R*$<FU6.6@R[sO!+0@o5ul$+mA93AO:6d>'+,VM6Em9kZ`5@hLbX5;rPn=3(2W]:mX]+:t\ra%%j<X\ccqY`%##,.3Ma6rENE=3F!7df%Z0RZ7'tSm_c_mmTLs=$N#9''2=`NC3cI0*qM*Kh!'d*^!-'[mAPdD`)45H1(BHH\AlcVcgVh,e&snSM)Aa@Vd*:`\SE'8$Hr>Seit4_(UXLTAQ],-6Z:0\bYrb&L`nl.nhk^j<20[jd%5S7JeG)_PpVm9b&rsr0Y9.8rE;0QZ<QV]*h=U4*SHJrS=@aW)\JL8f$8k_:Tpfu7'R:_:3mHMS.p*`QflgSfdX.7gY(1+YQ<,#>%#f<*+r@47po5Cct3[$R!['*(2MZCh_3]cl\F'9(C:#pq@_R?+/!o,$bkD>+6nBA0scae>2']k-Fi3*pRbFn;pfp8!5k7dA?'s;HlV8[:+"@^[l%Z3-]5>YjhIZTbA/mX,BQ"[hM3ApYtXbq7-:5i=5"k:+]gNZ6iMt9e.3dq%)N\_i@KU/Y1ffhil=i;10D8;?l9aEK>/NfR@\/hWW9l^$2_8X&\53cA#%@K*m4\9SAJ*`'Hil?-E$s\VK.oUEOJ4Mn'LdT[6YmuZ^)g$O/7fl$5'/&,Y,N24r*0.KR(k0e1p,HHK-VTS3re-=sTK[72T`9,!Jo*K)&O'l*2t*b.Ud?S`_b&q!8]d_W2TF7g%"Sh][c'E0J@WP4;'HpgYP2a]Zgm!^d%cb6rB8_[t]e0!%DZTSr;;#"*l$iFu/)4>t?eMS0eW8?kDNo[$dVP?E@C!_DW3+C:99<WY>D,!j^1V0kW!*UXLCk+Rd]<3`Mo<+.d5;XU[l9'`f1On?O_W!6[$J8R5,;o)b[4S95%KT!Z3.!:9F)"\^FpYNYg.D1Y/Jp9POpGX/6W6+\A)(t_Um&\6TAe;OlrJ?Mn,1[tUe`>)ZjX6lp'Jr)IfHI,Ic-tN*1tO-GBLL,%[`r!CjW-e0T$5TgeH&3aIYA>X#\,ou@;QjfU9pd-W@1IiZ]83m@r:$.Jt=HnJ$aN/QZM3!TR208Etbp=%TO7NQidr&lLC-C:6eeCeH/f@_6#uGYCs"->q!?d,VLp!;$R*m@L-:/5$gQ.VRfGJ$'/&F.u-Kcl3mb`CW^l7nXO*O)p)/kLN%@QA8:u)Qj@&!H0)sB=3UkJ[TF6Z\"tKq>p;'6fA!o1[$[`AK0n<Df9Pr)LDcE"JG;Wk>`iNj4GWB^f]\u/#Q0lrq>1Xj<M]K19U'j(\_](e+n#C/#c)d0<kA/<bl4Md+V#^N<kTJ)23h[X%mKi_<jC?ZeAS?JG[&_K\=9?/RH\rJ6"t]3Y<35UUnYNVThO_g?@b[d-=I$!7F\147U\3<;\.!.'4ed-:5XsFlfZU;h3E=G:SJZ[<Ec6#&9iQ[FGut9SGm0_jKoeHH`cU7F6>Q_moM:5\Q(!30j/7jXsOt&=YVs8Xb'*JJV]6(As1:Q0i4'n-`L!L#'i6]V?MC9@],P/F!d0h1>Qcb1HeQppgD%L+&T([?0`SWgee9LjlmB4Mbt,Le$O9,C,1G;qaS?hBk!Xj9[b]oJ*3f6XdH;D2E:LO3Xg^Q~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 10
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000414 00000 n
|
||||
0000000607 00000 n
|
||||
0000000675 00000 n
|
||||
0000000955 00000 n
|
||||
0000001014 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<070ae850f48759a5f7f05e433425e589><070ae850f48759a5f7f05e433425e589>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 7 0 R
|
||||
/Root 6 0 R
|
||||
/Size 10
|
||||
>>
|
||||
startxref
|
||||
3637
|
||||
%%EOF
|
||||
@@ -0,0 +1,80 @@
|
||||
%PDF-1.4
|
||||
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 9 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260411023740-07'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260411023740-07'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Count 1 /Kids [ 5 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2112
|
||||
>>
|
||||
stream
|
||||
Gb"/(lVH8+&HC$_1#J"lNlCnbM_>fuE)"<P8_U2m8LG0)@9^dL[KFSKof'LfoA#]9dAT)`&S*\h[HB]ffhcYW:!N^S#iMKhLM%;LKDmH!5m6i+U#"W'^.0\K=+D*%Au%GAQ4N`TD3!;h<]56u2ER"_:*7SFk`74e__VLjhHf"Pp-4]]JQ$h9jlK%1-"OL"6iS\/hn]5:FHbhKRsqHlBBYt_TnFhRiE\@eVqe385ntkBCBBCe!T,^'-l#""<Lm`r+p3_&Kq-bW1(sG.[3*;89BN(^<J.6g-c'Yc6Vlho)]-jm^Q.n55Y<Cq;HX^4#t3,Yk;fPB$cPHle*:8Lo0EiH8<.Ru%Y$4q_hC]^)<#GXU6/'>i*8_^ZJKpN)"E4"jq[!2_k'fPT.!4GTBR+&iOP49TAL[Y^kJpZ43ADsO&HA/@8?cKmLe`2(%]tp$/U9G#EIj6R=p0:K!'q)*rirT@Wh^h09:H//j0G/i&X1X''L3:9j4>P1R?/%Kmgls2l'2VY3=1\3tFJAe=RKG_ij8Glif_FDOKcm118D#?>\%sB$gL_Mt:G7OsGB*5UL6EDA!7rFJ!)>;ALt#LGAto_5!7P9T17Na.Q<=Q9qE8jJM9OPbmI^h!<UMonGbs9+u1T%'g,+UOS/Tn9J!S+).I0`bA>LBiM)^.TJOV+W9SnQ?NrSKl0@7ic0g&.)hiY.$+@"eu"TgNaNO\OMJc#&'LSYY)3$DaL#ro!cQ:gm,mAOmY,`5m'U'rcIF4_NhCf?I=Cjch1jt5;s:X$T/s+J7Jl)?h1a/9fi@e+=E?BXbhZh`lT44uXm=d946ZC#e?4C8lHIFb,`e6*S@ah(&D-Y'G-!YSa]BdHcO@-T%H`QuZ#/11*NTjVXg#%oHQ&/Dl?Sn9WgrC=M/$"G-+0&h'/&f052@@:JVKF[F#\iRHl/^F?dhL`Pc!4ZJo7SIA\rDUqT,1AD=]4lS@I3F>i4@gh@#nB[fW--A8Kat7)Yrp@t8<3;rsFGenYW+lWGEWV$>>$)Ut%/EDpkT9_#9Dq6C3_%hb1YROZAYbs/V#?J\Eh&mlpNVc*`*8;H%b<dNFI"LiXMFbOMbW?cAGJMkBhlc=#cbsO%_&<?dcKt*BIB^cAd<!*3`!T=;A6tijIX(U6&9V1<B3k3)%o.a6V;r06q0[;T$3uT#TPBYfaenahO"=pTU;a#Vs(]m"A]Ctc?ruJJ,]5>(G?@D+/,(+(3]D^#XVtDTk&/.==9]`^fB@>7A@o'<gp2hp6rU*0#=:b70<l'f.Z)0HiZ=R-aA18,#W<0?]^e>nSMN^A\%4BWE&iRtq5iQaI%UgVmS6ZaUEuCBcl]3L)5c-9q9iL<Ud!u_E@347VGHQHBC^2A.ZHFB89$NTZ@t^*s)Q$Ygdc2>P=aI,XPX;'7[:lfr,F&u/Yp[M9bX71>Cu`gA-dd(.4eRbEkujB?]mDb)EQb8W4;&.oK8oaE(P^]*;;bGiCX[I2]4%!38*iM4IN9XmN"0qYGs_1bj#BQ,2_"3AK_(08MsD3tXZVWJe_7#cU/[H_365rd/F`eNhdrd1G73RfS;8*U%0@0"9mn$9_e`/Y=0L5?9T0-JZ/NF9pWigV8t]+Mgg$ogitMTBR+ViLX=FQpf4H?>;qufOU^X=3l)l"0Hh'96^;sccW.+6R*da<W4OrS"f@CMDfH-V>!hZ6eHXBUFQ_saos"XtDqW2(BJ!o[lM,UjjIlW(';5t4'a"]VgP*"CAdp,&S<7Qaj:Xt$D&c?Km2'EnS2?;eqJdL8hV6-u_o(uN4<\pXS)EnkfnOj"Ynh$BS@Z[W0$)s0Zq@O'ENO^[p^<pp`q]!^3+BqGT0R[XkBT$gF3t8Jk%N<T4EhGD&[X:b/UX&744g:H>/J5m*8lfCjRt9%TQsl?6W2GAa<0$RiTcV%.#WK^+@:5H3-?:*cK`BBY.9?o7HpFMQK=S%FU$7SE8&gPnW;0rUNMe+X%U9Sf_)i*rT/<dscRs/\LY+2NEI0)>A\k850/1ViobocX[4SBr@lmYsS]9!T)/unWdBZQJP@^bTUt91\i5&01lt7UG>Q%K/EHiBb29da,G,FF9^>_gZ-<&g.ep'>7rLBi`rs8.q`kQhZLV<]fWgPOC~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 10
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000414 00000 n
|
||||
0000000607 00000 n
|
||||
0000000675 00000 n
|
||||
0000000955 00000 n
|
||||
0000001014 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<95a61f997623455a20bfff4200569ea9><95a61f997623455a20bfff4200569ea9>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 7 0 R
|
||||
/Root 6 0 R
|
||||
/Size 10
|
||||
>>
|
||||
startxref
|
||||
3217
|
||||
%%EOF
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"_description": "Ridgeline Gear Co. \u2014 Leave Coordinator email templates. This file is the authoritative source for all LC communications. See SOP Section 26 for usage rules. All [bracketed] tokens must be replaced before sending. The standard signature block (Best regards / Ridgeline Gear Co. \u2014 Leave Coordinator / leaves@ridgelinegear.com) is included in each template body.",
|
||||
"templates": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Intake Information Request",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThanks for reaching out about your leave. To open your case, I need a few additional details. Please reply with the following:\n\n[List each missing field specifically, e.g., \"Requested leave start date,\" \"Continuous or intermittent,\" \"Manager's name\"]\n\nOnce I have this information, I will open your case and confirm next steps. If your situation is urgent, please let me know in your reply.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "FMLA Eligibility Notice (Eligible)",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for submitting your FMLA leave request. I have reviewed your eligibility and confirmed that you ARE eligible for FMLA leave under all three federal eligibility criteria as of your requested leave start date of [Start Date].\n\nAttached is your official Notice of Eligibility and Rights & Responsibilities (DOL Form WH-381), which explains your rights and obligations under FMLA. Please read it carefully.\n\nTo complete your FMLA designation, I also need a medical certification from your healthcare provider. Please find attached the appropriate certification form ([WH-380-E for your own condition / WH-380-F for a family member's condition]). The completed certification is due by [Cert Due Date \u2014 15 calendar days from today].\n\nIf the certification is not returned by the due date, your leave may be denied. If you anticipate any difficulty obtaining the certification by the deadline, please reply to this email so we can discuss.\n\nCase ID: [Case ID]\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "FMLA Ineligibility Notice",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for submitting your FMLA leave request. I have reviewed your eligibility against the federal FMLA criteria and unfortunately must inform you that you are NOT currently eligible for FMLA leave for the following reason:\n\n[Specific failed criterion. Examples: \"Tenure: FMLA requires at least 12 months of employment with Ridgeline. Your current tenure as of [requested start date] is [X months, Y days].\" OR \"Hours: FMLA requires at least 1,250 hours worked in the 12 months immediately preceding the leave start date. Your hours worked in that period are [X], which is below the threshold.\"]\n\nAttached is the official Notice of Eligibility (DOL Form WH-381) reflecting this determination.\n\nEven though you are not eligible for FMLA, you may still be eligible for leave under Colorado FAMLI, which has different eligibility criteria (no tenure requirement, no minimum hours requirement). I will also be reviewing your eligibility under Colorado FAMLI, which has different eligibility criteria. I will follow up separately with any updates regarding your FAMLI case.\n\nIf you believe this FMLA determination is in error, please reply to this email and I will review.\n\nCase ID: [Case ID]\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "FMLA Designation Notice",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nI have reviewed the medical certification you provided for your FMLA leave request. I am writing to confirm that your leave has been DESIGNATED as FMLA-qualifying.\n\nCase ID: [Case ID]\n\nLeave start date: [Start Date]\n\nExpected end date: [Expected End Date]\n\nTotal FMLA time designated: [Hours / Weeks]\n\nLeave format: [Continuous / Intermittent / Reduced Schedule]\n\n[For intermittent only: Certified frequency: as documented on the medical certification]\n\n[If fitness-for-duty required: A fitness-for-duty certification will be required from your healthcare provider before you may return to work. I will send a reminder before your scheduled return date.]\n\nAttached is your official Designation Notice (DOL Form WH-382).\n\nYour remaining FMLA entitlement after this leave will be [Remaining Hours] in your rolling 12-month period, calculated as of [Calculation Date]. This balance is recalculated at each new use.\n\nIf your leave also qualifies under Colorado FAMLI, both programs run concurrently. You will receive a separate confirmation about FAMLI coordination if applicable.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "Medical Certification Incomplete",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for submitting your medical certification for case [Case ID]. The certification I received is INCOMPLETE. The following fields must be filled in by your healthcare provider before I can process your leave designation:\n\n[List each specific missing or unsigned field, e.g., \"Section 4: probable duration of the condition\" / \"Provider signature on page 4\"]\n\nPer FMLA regulations, you have 7 calendar days from receipt of this email to provide the completed certification. The new due date is [Cure Due Date].\n\nIf you need assistance contacting your provider or have questions about the missing information, please reply to this email.\n\nI cannot complete the FMLA designation of your leave until the complete certification is received.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "Medical Certification Reminder",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThis is a friendly reminder that the medical certification for your FMLA case [Case ID] is due by [Due Date], which is [X] calendar days from today.\n\nIf you have not yet contacted your healthcare provider, please do so as soon as possible. The certification form ([WH-380-E or WH-380-F]) was sent to you on [Original Send Date].\n\nIf you anticipate any delay in obtaining the certification, please reply to this email so we can discuss options. Note that if the certification is not received by the due date, your FMLA leave request may be denied.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "Medical Certification Renewal/Extension Request",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nYour FMLA case [Case ID] requires updated medical certification at this time.\n\n[For renewal: Per Ridgeline policy, FMLA cases that have been open for more than 6 months require updated certification to confirm the ongoing need for leave.]\n\n[For extension: You have requested an extension of your current FMLA leave, and updated certification is required to support the extension.]\n\nPlease find attached a blank certification form ([WH-380-E or WH-380-F]). The completed certification is due by [Due Date \u2014 15 calendar days from today].\n\nOnce received, I will update your case file and confirm next steps. If you have questions about completing the certification, please reply to this email.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "Fitness-for-Duty Reminder",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThis is a reminder that a fitness-for-duty certification is required before your return to work from FMLA case [Case ID], which is currently scheduled for [Return Date].\n\nPlease obtain a fitness-for-duty certification from your healthcare provider confirming that you are able to return to work. The certification need only address whether you can perform the essential functions of your job, with or without restrictions.\n\nPlease provide the certification by reply to this email no later than [Return Date minus 1 business day]. Without it, you may not be able to return to work as scheduled.\n\nIf your provider needs more information about your job's essential functions, please reply to this email and I will arrange for that information to be provided.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "Return Confirmation",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nI am writing to confirm your scheduled return to work from leave case [Case ID]:\n\nReturn date: [Return Date]\n\n[If FFD required: Please note that a fitness-for-duty certification is required before your return. If you have not yet provided this, please reply to this email as soon as possible.]\n\n[If work restrictions exist: Your fitness-for-duty certification includes the following restrictions: [Restrictions]. I have notified your manager.]\n\nPlease reply to confirm that the return date works for you, or to let me know if anything has changed.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "Return Follow-Up (No-Show)",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nI am writing because we expected your return to work from leave case [Case ID] today, [Date], and have not yet received notification of your arrival.\n\nI want to make sure you are okay. Please reply to this email or contact your manager as soon as possible to let us know your status. If you need additional time, we may be able to discuss options depending on your circumstances.\n\nIf we do not hear from you by [2 business days from this email date], we will need to escalate your case for further review.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "Manager Leave Notification",
|
||||
"subject": null,
|
||||
"body": "Hi [Manager Name],\n\nI am writing to notify you that one of your team members will be on approved leave. Please use this notification to plan workload coverage.\n\nEmployee: [Employee Name]\n\nLeave type (general category only): [\"approved leave\" / \"FMLA leave\" / \"FAMLI leave\" / \"bereavement leave\" / \"jury duty\" / etc. NEVER include the medical reason.]\n\nStart date: [Start Date]\n\nExpected end date: [End Date or \"to be confirmed\"]\n\nLeave format: [Continuous / Intermittent / Reduced Schedule]\n\n[For intermittent only: General frequency range, e.g., \"approximately 2-3 days per month\" \u2014 NEVER the verbatim certified frequency.]\n\n[If known and applicable: Work restrictions upon return: [General description].]\n\nFor all questions about this leave, please contact me directly at leaves@ridgelinegear.com. Please do NOT contact the employee about work matters during their leave except in genuine operational emergency.\n\n[For intermittent: Please log each intermittent absence in the attendance system and notify me at #leave-intake.]\n\n[For continuous: I will be in touch closer to the return date to coordinate.]\n\nCONFIDENTIALITY REMINDER: medical information about your team members is confidential under federal and Colorado law. Please do not share this notification with other team members or discuss the reason for the leave with anyone.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "Return-to-Work Manager Notification",
|
||||
"subject": null,
|
||||
"body": "Hi [Manager Name],\n\nI am writing to notify you of an upcoming return from leave for one of your team members:\n\nEmployee: [Employee Name]\n\nCase ID: [Case ID]\n\nReturn date: [Return Date]\n\n[If applicable: Work restrictions: [List restrictions, e.g., \"no lifting over 15 pounds for 4 weeks\"]]\n\n[If FFD with restrictions: Please confirm by reply that the listed restrictions can be accommodated in the employee's role. If they cannot be accommodated, contact me immediately and I will route to the HR Director.]\n\n[If no restrictions: No work restrictions apply.]\n\nThe employee will return to their regular role and duties unless we have discussed otherwise. Please confirm in #leave-intake on the day of return that the employee has reported as scheduled.\n\nCONFIDENTIALITY REMINDER: do not share medical information about the leave with the employee's coworkers or discuss the reason for the leave with anyone.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "Manager Information Response",
|
||||
"subject": null,
|
||||
"body": "Hi [Manager Name],\n\nThank you for your question about [Employee Name]'s leave. I can confirm the following:\n\n[Provide ONLY the information the manager is entitled to per Section 10: dates, leave format (continuous/intermittent), general frequency range for intermittent, work restrictions if applicable. NEVER include medical details, diagnosis, treatment, or family member identity.]\n\nIf you have additional questions about scheduling or work coverage, please let me know and I will help. For confidentiality reasons, I am not able to share medical details about the leave or the underlying reason.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "Manager Medical-Information Decline",
|
||||
"subject": null,
|
||||
"body": "Hi [Manager Name],\n\nThank you for reaching out about [Employee Name]. Unfortunately, I am not able to share the specific information you requested. Medical details and the underlying reason for an employee's leave are confidential under federal FMLA, the ADA, GINA, and Colorado law. I am not permitted to disclose them to anyone outside the HR team, including the employee's direct manager.\n\nWhat I CAN share with you is the following: [Provide only what the manager is entitled to per Section 10: dates, leave format, work restrictions if applicable.]\n\nIf you have an operational question about scheduling, work coverage, or returning the employee to duty, I am happy to help. Please contact me at leaves@ridgelinegear.com.\n\nI appreciate your understanding. The confidentiality protections exist to protect every employee, and they apply equally regardless of role or relationship.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "Manager Pattern Response",
|
||||
"subject": null,
|
||||
"body": "Hi [Manager Name],\n\nThank you for letting me know about your observations regarding [Employee Name]'s recent absences. I have reviewed the case and can confirm that the absences you described are within the approved limits of the employee's certified leave.\n\nI am not able to share the specific certified frequency or the medical reason for the leave \u2014 these are confidential. If you have specific operational concerns about scheduling or work coverage, please let me know and I will work with you on a path forward.\n\nPlease do NOT discipline, counsel, or formally document the employee for absences that are part of their approved protected leave. Doing so could constitute interference under the FMLA or FAMLI and create significant legal exposure for Ridgeline. If you have concerns about the employee's work performance unrelated to the protected absences, please document those separately and contact the HR Director directly.\n\nIf you would like to discuss this further, please reply to this email or reach out to the HR Director.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "Payroll Handoff (Employee)",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for your question about [topic \u2014 e.g., \"pay during your leave\" / \"PTO substitution\" / \"health insurance premiums\" / \"FAMLI wage replacement amount\"]. Questions about pay, benefits, deductions, premium billing, and tax matters during leave are handled by our Payroll Lead, Teresa Vang.\n\nI have forwarded your question to Teresa, and she will respond to you directly within [1\u20132 business days]. You can also reach her at teresa.vang@ridgelinegear.com.\n\nIn the meantime, your leave case is moving forward as planned. Please let me know if you have any questions about the leave process itself, as opposed to pay or benefits.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "Manager Payroll Handoff",
|
||||
"subject": null,
|
||||
"body": "Hi [Manager Name],\n\nThank you for your question about how [Employee Name]'s leave affects payroll. Payroll coding, paycheck impacts, PTO accrual during leave, premium billing, and similar questions are handled by our Payroll Lead, Teresa Vang, rather than by my role.\n\nI have forwarded your question to Teresa, and she will respond to you directly. You can also reach her at teresa.vang@ridgelinegear.com.\n\nIf you have other questions about scheduling, return-to-work coordination, or work coverage during the leave, please contact me directly.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "FAMLI Concurrent Designation",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nI am writing to confirm that I have received the notice from CDLE about your Colorado FAMLI claim. I have submitted Ridgeline's Employer Response and confirmed the following:\n\nFAMLI Claim ID: [Claim ID]\n\nCase ID at Ridgeline: [Case ID]\n\nConcurrent FMLA designation: [Yes / No]\n\n[If Yes: Because your leave qualifies under both FMLA and FAMLI, both programs will run concurrently. ]\n\n[If No, FAMLI only: Your leave is being administered under Colorado FAMLI. You do not currently have a concurrent FMLA case open.]\n\nWage replacement under FAMLI is paid by the State of Colorado, NOT by Ridgeline. All questions about your FAMLI wage replacement amount, payment timing, and tax treatment should be directed to CDLE directly at claims@famli.colorado.gov. I cannot answer those questions.\n\nIf you have questions about Ridgeline's role in coordinating your leave, please contact me directly. If you have questions about pay or benefits, please contact our Payroll Lead, Teresa Vang, at teresa.vang@ridgelinegear.com.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "ADA Acknowledgment",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for reaching out about a workplace accommodation. I have received your request and have routed it to our HR Director, Daniel Whitfield, who handles all accommodation requests at Ridgeline.\n\nDaniel will be in contact with you to begin a discussion about your needs. This conversation is called the \"interactive process,\" and it is a collaborative discussion between you and the HR Director to identify potential accommodations that may help you perform the essential functions of your job.\n\nIn the meantime, please feel free to reply to this email with any additional information you would like to provide. You do NOT need to share any specific medical details with me \u2014 those will be discussed directly with Daniel as part of the interactive process, and only to the extent necessary to evaluate your request.\n\nDaniel will contact you to schedule the interactive process discussion. If you have not heard from him within 3 business days, please reply to this email and I will follow up on your behalf.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "HFWA Balance Response",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for your question about your HFWA sick leave balance. As of today, [Date], your balance is:\n\nYTD Accrued: [Hours]\n\nYTD Used: [Hours]\n\nCurrent Available Balance: [Hours]\n\nYou accrue 1 hour of HFWA sick leave for every 30 hours you work, up to a maximum of 48 hours per calendar year. Your balance carries over to the next year, also capped at 48 hours.\n\nIf you would like to use HFWA sick leave for an absence, no advance notice is required for an unforeseeable need (such as illness). For foreseeable needs (such as a scheduled medical appointment), please give your manager and me as much notice as you reasonably can.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "HFWA Documentation Request",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for letting me know about your absence covered by HFWA sick leave. Because the absence has lasted [X] consecutive workdays, Colorado HFWA permits Ridgeline to request documentation of the qualifying reason.\n\nPlease provide one of the following at your earliest convenience:\n\n\u2022 A note from a healthcare provider confirming you (or your family member) sought care during the absence\n\n\u2022 A general statement that the absence was for one of the qualifying HFWA reasons (your or a family member's illness, injury, preventive care, public health emergency, or safe leave)\n\nYou do NOT need to disclose the specific medical condition or diagnosis. A general statement that the absence was for a qualifying reason is sufficient under Colorado law.\n\nPlease reply to this email with the documentation when you have it.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "PTO Substitution Acknowledgment",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for letting me know that you would like to substitute your accrued PTO during the unpaid portion of your leave (case [Case ID]).\n\nI have notified our Payroll Lead, Teresa Vang, of your request. Teresa will handle the actual application of PTO to your leave period and will contact you directly with any questions about your PTO balance, the duration of substitution, or how PTO interacts with FAMLI wage replacement (if FAMLI applies to your case).\n\nIf you have specific questions about how the PTO substitution works in your situation, or about the dollar amount of your paychecks during this time, please reach out to Teresa at teresa.vang@ridgelinegear.com.\n\nYour leave case continues as planned.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "Bereavement Acknowledgment",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nI am very sorry for your loss. I want to confirm that I have received your bereavement leave request and have logged the following:\n\nCase ID: [Case ID]\n\nLeave start date: [Start Date]\n\nLeave end date: [End Date]\n\nTotal bereavement leave: [3 days for immediate family / 1 day for extended family]\n\nYour manager has been notified that you will be out, with no medical or personal details disclosed.\n\nPer Ridgeline policy, please provide documentation (an obituary, death certificate, or funeral program) within 30 calendar days. I have set a reminder for [Date 30 days from loss].\n\nIf you need additional time beyond your bereavement allowance, please let me know and we can discuss options including PTO supplementation or unpaid leave.\n\nPlease take care of yourself during this difficult time.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "Bereavement Reclassification",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nI am writing about your bereavement leave case [Case ID], which began on [Start Date]. Per Ridgeline policy, bereavement leave requires documentation (an obituary, death certificate, or funeral program) within 30 calendar days of the loss. The 30-day window has now passed and I have not received documentation.\n\nPer policy, I am reclassifying the leave as PTO. \n\nIf you are still able to provide documentation, please reply to this email and I will reach back out to discuss whether the reclassification can be reversed.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "Military Leave Acknowledgment",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for letting me know about your upcoming military service. I have received your request and have logged the case in our system.\n\nMilitary leave under USERRA involves specific rights and processes \u2014 including pay continuation considerations, benefits continuation, and reemployment rights upon return \u2014 that are handled by our Benefits Manager, Renata Okafor, rather than by my role. I have routed your request to Renata, and she will be in contact with you directly to discuss next steps.\n\nIf you have orders or other documentation related to your service that you can share now, please reply to this email so I can include them in the case file.\n\nThank you for your service.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "Personal Leave Acknowledgment",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for your personal unpaid leave request. I want to be transparent with you about how this process works.\n\nPersonal unpaid leave under Ridgeline policy (Handbook \u00a74.8) is discretionary and is not guaranteed. It requires approval from BOTH your direct manager AND our HR Director. I have forwarded your request to both for review.\n\nWhile you wait for a decision, please note:\n\n\u2022 Personal leave is unpaid.\n\n\u2022 If approved, your health benefits will continue only if you pay the full premium during the leave (including the portion normally paid by Ridgeline). Our Payroll Lead can provide details if your leave is approved.\n\n\u2022 The maximum personal leave duration under our policy is 30 calendar days.\n\nI will contact you as soon as I have a decision from both approvers \u2014 typically within [3\u20135 business days]. In the meantime, if your situation involves a medical reason for you or a family member, military service, or another protected leave reason, please let me know. You may be eligible for FMLA, FAMLI, or another protected leave that I have not yet evaluated for your case.\n\nCase ID: [Case ID]\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "Personal Leave Routing (to Manager and HR Director)",
|
||||
"subject": null,
|
||||
"body": "Hi [Manager Name] and Daniel,\n\nI am routing a personal unpaid leave request for your review and decision. Both your approvals are required per Section 18 of the Leave Coordinator SOP.\n\nEmployee: [Employee Name]\n\nCase ID: [Case ID]\n\nRequested dates: [Start Date] through [End Date]\n\nTotal: [X] calendar days\n\nStated reason category: [General reason category only \u2014 NOT medical detail]\n\nPlease reply to this email with your decision (approve / deny) at your earliest convenience. I have informed the employee that approval is not guaranteed and that they should expect a response within [3\u20135 business days].\n\nIf you need additional information to make your decision, please let me know and I will request it from the employee.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "Personal Leave Approved",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nI am writing to confirm that your personal unpaid leave request has been approved by both your manager and the HR Director.\n\nCase ID: [Case ID]\n\nApproved leave start date: [Start Date]\n\nApproved leave end date: [End Date]\n\nTotal: [X] calendar days\n\nA few important reminders:\n\n\u2022 Your leave is unpaid for the full duration.\n\n\u2022 Your health benefits will continue during the leave only if you pay the full premium each month, including the portion normally paid by Ridgeline. Our Payroll Lead, Teresa Vang, will contact you separately about premium payment arrangements.\n\n\u2022 If your situation changes and you cannot return on the scheduled date, please contact me as soon as possible. Extensions beyond the approved end date are not guaranteed and require renewed approval from your manager and the HR Director.\n\n\u2022 Your scheduled return date is [Return Date].\n\nPlease reply to confirm receipt and acknowledge the unpaid status and premium payment requirement.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "Personal Leave Denied",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nI am writing to let you know that your personal unpaid leave request has not been approved at this time.\n\nPersonal leave under Ridgeline policy is discretionary and requires approval from both your manager and the HR Director. I am not able to share the specific reasons for the decision.\n\nIf your underlying need involves a medical reason (your own or a family member's), military service, jury duty, bereavement, or another reason that may be covered by federal or Colorado leave law, please let me know. You may be eligible for protected leave under FMLA, FAMLI, USERRA, HFWA, or another statute that I have not yet evaluated for your case. Many leave situations qualify for protected leave even when personal leave is not approved.\n\nIf you have questions about the personal leave decision specifically, you may contact your manager or the HR Director directly.\n\nCase ID: [Case ID]\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "Bereavement Not Covered (Non-Qualifying Relationship)",
|
||||
"subject": null,
|
||||
"body": "Hi [First Name],\n\nThank you for letting me know about your loss, and please accept my sincere condolences.\n\nI want to be transparent with you: Ridgeline's bereavement leave policy (Handbook \u00a74.5) covers only specific family relationships, and based on the relationship you described, this loss falls outside the policy's coverage. The covered relationships are:\n\n\u2022 Immediate family (3 days): spouse, domestic partner, parent, child, sibling\n\n\u2022 Extended family (1 day): grandparent, grandchild, in-laws (parent, child, or sibling of spouse), aunt, uncle, niece, nephew\n\nI am not able to approve bereavement leave for this case. However, I want to help you take the time you need. You may be able to use one of the following alternatives:\n\n\u2022 Accrued PTO: please contact your manager for approval and Payroll Lead Teresa Vang (teresa.vang@ridgelinegear.com) for your current balance.\n\n\u2022 Personal unpaid leave: please reply to this email if you would like to request this. Personal leave is unpaid and discretionary, requiring manager and HR Director approval, but is often granted for circumstances like this.\n\nI am sorry I cannot offer bereavement leave specifically, and I am sorry for your loss. Please reply if you would like to pursue one of the alternatives, and I will help you start that process.\n\nBest regards,\n\nRidgeline Gear Co. \u2014 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "FAMLI-Only Intake Acknowledgment",
|
||||
"subject": "Leave Request Received \u2013 [Case ID]",
|
||||
"body": "Hi [First Name],\n\nThank you for reaching out. I have received your leave request and opened a case at Ridgeline (Case ID: [Case ID]).\n\nBased on your current eligibility, your leave will be administered under Colorado FAMLI. FAMLI claims are filed directly by you with the Colorado Department of Labor and Employment (CDLE) \u2014 Ridgeline does not file on your behalf.\n\nTo file your FAMLI claim, please contact CDLE directly:\n\n claims@famli.colorado.gov\n\nOnce CDLE processes your claim, I will follow up to confirm your leave dates and any next steps on Ridgeline\u2019s side.\n\nPlease note that wage replacement under FAMLI is paid by the State of Colorado, not by Ridgeline. All questions about your benefit amount, payment timing, and tax treatment should go directly to CDLE. I cannot assist with those questions.\n\nIf you have questions about Ridgeline\u2019s coordination of your leave, please contact me directly. If you have questions about your pay or benefits, please contact our Payroll Lead, Teresa Vang, at t.vang@ridgelinegear.com.\n\nBest regards,\n\nRidgeline Gear Co. \u2013 Leave Coordinator\n\nleaves@ridgelinegear.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
Please process the medical leave intake for Portia Nzinga in my mail.
|
||||
@@ -0,0 +1 @@
|
||||
Today's date is, Monday, April, 13, 2026. You are an office assistant with access to the user's filesystem (/workdir), email (google_mail_*), slack (slack_*), calendar (google_calendar_*), jira (jira_*), and shopify (shopify_*) tools. The workspace directory /workdir contains files for the task. Do NOT ask the user for more information — use your tools to discover what you need. Begin by listing /workdir and reading relevant files.
|
||||
@@ -0,0 +1,23 @@
|
||||
schema_version = "1.1"
|
||||
|
||||
[task]
|
||||
name = "sop-tasks/hr_ridgeline_gear_co_6950ff2b"
|
||||
description = "SOP task from CSV row 6950ff2b"
|
||||
|
||||
[agent]
|
||||
timeout_sec = 3600.0
|
||||
|
||||
[verifier]
|
||||
timeout_sec = 3600.0
|
||||
|
||||
[environment]
|
||||
os = "linux"
|
||||
cpus = 2
|
||||
memory_mb = 4096
|
||||
env = { INPUTDIR = "/data", OUTPUTDIR = "/data", WORLDBENCH_TOOL_SETS = "syntara_ds_all google_mail_contacts slack_core google_mail_core google_calendar_core jira_core shopify_core" }
|
||||
|
||||
[[environment.mcp_servers]]
|
||||
name = "mcp-proxy"
|
||||
transport = "streamable-http"
|
||||
url = "http://localhost:8000/mcp"
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,135 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Run bundled SOP Python verifiers inside a Harbor task container."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
import traceback
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
WORKDIR = Path("/workdir")
|
||||
DATA_DIR = Path("/data")
|
||||
INITIAL_DATA_DIR = Path("/initial_data")
|
||||
TESTS_DIR = Path("/tests")
|
||||
VERIFIER_DIR = Path("/logs/verifier")
|
||||
|
||||
SERVICE_COMPAT_FILES: dict[str, tuple[str, tuple[str, ...]]] = {
|
||||
"slack": ("slack.json", ("slack.json", "slack_data.json")),
|
||||
"google_mail": ("inbox.json", ("inbox.json", "mailbox.json")),
|
||||
"google_calendar": ("calendar_data.json", ("calendar_data.json", "calendar.json")),
|
||||
"jira": ("jira_state.json", ("jira_state.json", "jira_data.json")),
|
||||
"shopify": ("shopify_data.json", ("shopify_data.json",)),
|
||||
}
|
||||
|
||||
|
||||
def _state_path(service: str, seed_name: str) -> Path | None:
|
||||
candidates = [
|
||||
DATA_DIR / service / "final.json",
|
||||
DATA_DIR / service / seed_name,
|
||||
INITIAL_DATA_DIR / service / seed_name,
|
||||
]
|
||||
return next((p for p in candidates if p.is_file()), None)
|
||||
|
||||
|
||||
def _build_compat_external_services(dest: Path) -> None:
|
||||
dest.mkdir(parents=True, exist_ok=True)
|
||||
for service, (seed_name, compat_names) in SERVICE_COMPAT_FILES.items():
|
||||
src = _state_path(service, seed_name)
|
||||
if src is not None:
|
||||
for compat_name in compat_names:
|
||||
shutil.copy2(src, dest / compat_name)
|
||||
|
||||
|
||||
def _coerce_result(raw: Any) -> dict[str, Any]:
|
||||
if isinstance(raw, dict):
|
||||
passed = bool(raw.get("pass", raw.get("passed", False)))
|
||||
score = raw.get("score", 1.0 if passed else 0.0)
|
||||
try:
|
||||
score = float(score)
|
||||
except (TypeError, ValueError):
|
||||
score = 1.0 if passed else 0.0
|
||||
return {
|
||||
"pass": passed,
|
||||
"score": max(0.0, min(1.0, score)),
|
||||
"feedback": str(raw.get("feedback", "")),
|
||||
}
|
||||
passed = bool(raw)
|
||||
return {"pass": passed, "score": 1.0 if passed else 0.0, "feedback": str(raw)}
|
||||
|
||||
|
||||
def _run_one(rubric: dict[str, Any], external_services_path: Path) -> dict[str, Any]:
|
||||
rubric_id = str(rubric.get("id") or "rubric")
|
||||
code = rubric.get("verifier_code")
|
||||
if not isinstance(code, str) or not code.strip():
|
||||
return {
|
||||
"id": rubric_id,
|
||||
"pass": False,
|
||||
"score": 0.0,
|
||||
"feedback": "rubric has no verifier_code",
|
||||
}
|
||||
|
||||
namespace: dict[str, Any] = {"__builtins__": __builtins__}
|
||||
try:
|
||||
exec(compile(code, f"<{rubric_id}>", "exec"), namespace)
|
||||
verify = namespace.get("verify")
|
||||
if not callable(verify):
|
||||
raise RuntimeError("verifier_code did not define verify()")
|
||||
result = _coerce_result(verify(str(WORKDIR), str(external_services_path)))
|
||||
return {"id": rubric_id, **result}
|
||||
except Exception:
|
||||
return {
|
||||
"id": rubric_id,
|
||||
"pass": False,
|
||||
"score": 0.0,
|
||||
"feedback": traceback.format_exc(),
|
||||
}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
rubrics_path = TESTS_DIR / "rubrics.json"
|
||||
if not rubrics_path.is_file():
|
||||
print("[sop-verifier] ERROR: rubrics.json not found", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
rubrics = json.loads(rubrics_path.read_text())
|
||||
if not isinstance(rubrics, list):
|
||||
print("[sop-verifier] ERROR: rubrics.json must be a list", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
with tempfile.TemporaryDirectory(prefix="sop-external-services-") as tmp:
|
||||
compat_dir = Path(tmp)
|
||||
_build_compat_external_services(compat_dir)
|
||||
results = [_run_one(r, compat_dir) for r in rubrics]
|
||||
|
||||
total = len(results)
|
||||
passed = sum(1 for r in results if r.get("pass"))
|
||||
average_score = round(
|
||||
sum(float(r.get("score", 0.0)) for r in results) / total,
|
||||
4,
|
||||
) if total else 0.0
|
||||
|
||||
print(f"[sop-verifier] {passed}/{total} rubrics passed; score={average_score:.2f}")
|
||||
for result in results:
|
||||
status = "PASS" if result.get("pass") else "FAIL"
|
||||
feedback = str(result.get("feedback", "")).replace("\n", " ")[:500]
|
||||
print(f" [{status}] {result.get('id')}: {feedback}")
|
||||
|
||||
output = {
|
||||
"passed": passed == total,
|
||||
"rubrics_passed": passed,
|
||||
"rubrics_total": total,
|
||||
"score": average_score,
|
||||
"rubric_results": results,
|
||||
}
|
||||
(TESTS_DIR / "results.json").write_text(json.dumps(output, indent=2) + "\n")
|
||||
|
||||
VERIFIER_DIR.mkdir(parents=True, exist_ok=True)
|
||||
(VERIFIER_DIR / "reward.txt").write_text(str(average_score))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1 @@
|
||||
Today is Monday, April 13, 2026. Please process the medical leave intake for Portia Nzinga in my mail.
|
||||
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
pip install openpyxl pdfplumber python-docx 2>/dev/null
|
||||
python /tests/sop_verifier.py
|
||||
Reference in New Issue
Block a user