diff --git a/docs/20260602_REVERSE_SSH_proposals_summary.md b/docs/20260602_REVERSE_SSH_proposals_summary.md index 3c2e173..02cbe71 100644 --- a/docs/20260602_REVERSE_SSH_proposals_summary.md +++ b/docs/20260602_REVERSE_SSH_proposals_summary.md @@ -10,6 +10,8 @@ _Date: 2026-06-02 — **merged document**: initial proposal (rev. 1) + infra rev --- +--- + ## Table of contents diff --git a/docs/20260602_REVERSE_SSH_proposals_summary.pdf b/docs/20260602_REVERSE_SSH_proposals_summary.pdf index b8f4e24..3f0400d 100644 --- a/docs/20260602_REVERSE_SSH_proposals_summary.pdf +++ b/docs/20260602_REVERSE_SSH_proposals_summary.pdf @@ -453,7 +453,7 @@ endobj endobj 78 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Android Cast \204 On-Demand Remote Access \(Reverse Tunnel\) Proposals) /Trapped /False >> endobj @@ -766,10 +766,10 @@ Gatm>=`<=[&q9:V;,7R4B;4V^OdANI-f(0HR2hgCMh-D@.#VktFAl-Os8+C2[c=0q]sO+3O9Ca5qWe'[ endobj 138 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 4151 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4159 >> stream -Gatm>gN)%.&q/)-TPCO9S;BZ(VH`\sALGc7/+GU-B!MrMg4Djd@a*R,P\'76mqLWHOePQq>YZhK!#je[7ec-O%&W(*8:N]%@i'2Epgc(rAFh*'Cs?S`DsVNDk-$^5hUsi4\RK1nGp;*$;`@3p*WJfVB:('qG`/or7M'8S?a>BB%An!OuP1Yr3O!>eW?dY=<^]Cj]S/(N,K$\.V:2SGJRuiAm2HDig9Z%jT^0s;BD###\dSJ920IhKe4n#/B!c;!?J>DM/:2+g#W0:2U.eRTF#c(:K94uKN&Oar42R\W^)KSLa9X?mGca)F`^P@5="?^eJYm@<39/^3,I.lK<[`7CM6L^enfo.pg&9Ct:cd+atHi'Y[&he?QCsG1N3SYFa6IqPq*,W^H]7on4_GfULT)J;Wpq5S6A^Mi-6lW5r>r`I*#Ig>ff5/9'i^I9m%?)gGoV>)]loFfD4)A_TZF\PNF$K@b_(I?Cb`d11M-tmBp@IkUqC$LHKoF&lO85@l6KNp%*rE0m1Cg&j?a0.fYKZOIoTl(fBB:NjQ4WG\$EKX_@@)]!le9'7WsuS)dGp6?Hr94?O-!ud6t59&Z/<4E3nXl:h&+D&O^nbb$O^$BprF'NBg5egT!C'AA.,`8\$/Uo%s3S.I8GS>BLKRKQn(S[GJ+7O]T&?"9MBrY`%E.BPJG$>YSMHdE\Ii6J%Rh7dn4Xs$YQ1H.I.&QE87FMJ0WJE^DBE`\B$,rU%$6=df]QdOH[,c!kRn9)Mel>>_Nl.u#;V4^lL+$o^&AuNJ%a5Vk1C`,!7j>P5/.,0gm2b"fZ.fSo\"*8UfSN-K+Za+KWkU<1WXK?;jHd:ucMZoN[2JuBX=\kGIBa_l"\SnDs5T1V]13LoOhp/uD"6;#m^16[omP!T#IshQYi#aTP(mK2`3Fh6G.jH`>!g``:k!9cBrK9QkeI6]h%8(fE6#(6K*T40"doJG7A@lp)QV4tHZ)^K#hnZ-Jm!H)^AjroZY5co.TX'E>>d.qpo5D*$,19rDID;,4Sq;s@'QjHUU"n,Z/dZ*1mf-NuYqLTUn'O84BQGRFahh%(/>%>>'NjXI)>S7M.V3iQ,ma-XU3hBJTCkMp!_20q#KHZPRKkiG>("VRLo.-j*gC1&Z4";90>7N*j5"PW]k&4,npbn?C&hcK,5K,W3+W9a;)j].;D7;\d(@O5nr3;!BS_HF4sqCZn8?FE$A/iI)L2[@0i`jQAU^IL*W^/[RmXY8MT%c^8T?O[Cr71r63`&G^SY?#+1S:*ofe.FeD9WGnQlF^i(#NngS/.gum"cAYD\X4MRr#VGcE9Bkj(`jd]2qJ;c?lMZ?H'5=bjFbJo-[.;,[(#?g?TXoW7QY!MCQKtOkXJ[Q+%>pP#jX-4-Q6QUm+58'(&"fcX#Ae%%n8q(gu%[nl3!#1YHM%N'TieRc4.qM*5P5#hrQQp.6*5E$`)TiL`o21VSm6]A(;gS?!R*0EsigUWN1FmU0oOIc"[][/#4TK#4YH=S%#S'QPAMT6Q_:FXL"#(iWB,umThSa!Hl4[7KKNYYT>hF3r5Zin[dYO)*khnf-![T<+%)1;bJIn"F4;MRZRXoEQ86a[^mFlpqY#`K=$.%:QlA^GcVnf&+RNJol[&ONbK__0`pS;`NHf-TkBjRjY0KUXta\38rdef;/SMAL?W4UMY[D8M5S\le&XaEJ$^]rXQ.L`Up?[%bTiH/r\=Zl`-XRJX#4+a()$d-FcAjE\.&Q`;=]f+E@id3N6I$LH(a0H*[f%O+tfeR6j)L=3&3EOf4[b0C\8eO!$76C>47MTq'LjmR0>fVi\2JH7G!>lC@!IkS*P&hs?i0Aeltoe2_Bb-^)$NuV*+ee[OnXib&eV*de%W14"a7\1nV?Hc0brEoLs>A13U6\C%tgPN%puIm:oW_+10&:^FN]s/**cjC_:'PF1-I6l.TEPo\fA@:V/)MNb,>N(jU)+Rc"K7gPtHM/?]dipOUA[NYU3*g9OVE0hRlk]^rXC_]Ak]3]P$A.V*<6$s:(e%/j_h,S4WFoaiuYaO4_en!DMO3.q[-H"ADkJ&oAASf&9:YACi2'\HTS.pHiTKTklURh`s`Pn:>7B<_lh(I7qe)rC8kbC`le*M7_Al?=Ie%@P*?*LEZjo4Z%3;V^cF5_VU@U?TYEjF1:\_^PEn#tcA0)Tlea0n*0>9Rbq[fc21>"_gmJB2)T\@_EHFd)FA1pWp8u>Z4hQudi:^9gh]cGVa?bcJ0A8jX:lfYcdl9@X\-6Hio6P^&JE5^B\o=_F`>>p2B5STSaKt;Z\*gZAm,?.Q+:q__]$-4($@lHCnjKED8HCo-tCJe\O,:C&Q=Sq+]&'UY:MKQ^4*g#mF`L+p?)C(ckY(~>endstream +Gatm>gN)%.&q/)-TPCO9S;BZ(U20D*ALGc7/+GU(B!MrMg4Djd@S@CSJ?l`><^.GkKZ=/+5J<)<9u&*4!\.C5e\9&ED,rJQ=5C0h,sk109D"H,g[Brenf.[51Q*m^#t5sbA>WKpJ(Rlfr]*efP@qjM=I?Wr)kGt>'S8TmPYbVP.0T%ce^EAne7W#/64Nl)LpP6.<08[lh32_K@Z=I$t&ehJT9!LOgbdX0)"\u<8?IlHJ`Z93Vq#G@q#oqoZf$/Ch#L\XX?/sL?XYOm2[Me_`#d('-2g^1EJb8`Pd@;XAOeZ2X"*d`mO=CIJh)&_64qB'+e(G]2N9kp$"hk^a_0:FRGXdR-UJl"jEZF,JgK/"&coW=3SRs4A1;b$9Ki/)cFmAdMr>3^c^e;npMA,[)9*ZIq;YtGh;!DCZ,D^Y*aPNo-!`O_(I?Cb`bb^M/\;bpZ(96qC$LH7uYK.Ns36J,4.nd*dbAM1Cg+A5d9kGcccj.nlNQpk2e!;no;^:JZ/7sLX7g`O]ZmMlkb/b8KJ$5DN&0XWE=c!_P4F[4gG2f4HSmb;\iu;CgkW\(=l(@JaW$-pR2WrccA$So7VqsSprDb[k[cIM4%/-f]=?%'3NleecLmt%RpQfpK-Mc>"O`kiCn?f":lH%mp/@5'm?p:;=/[Pqe/nee#lY(5UIQ4JA\uma=OgdgXjL*h<3LOm7AEC^X1<1AI[Qs6A6dbn8NKT<16MB&GkDLSSoV+^Dm5]qYh."i#,J0&Z-7-kS]$u\5cCKb)[M4:?0\DGG^c0A)m$Qt><^Ke[B:>6U4e,VAp0Ec:Jo>]c$=2@_ed8KQ-^lW$15_:+3GJ2kfs-L+Zbh3#Z6Fb/)[R"aX@a^8ICLd";:rhP'2kpT@9AQT+gk`=nUZUP=ZeO.j;R7FTkChj^]PaTaG?TZ5q3p%*3>VXVM4Far8o&Fb):lS4.t8%Yj,']'S0-@B9nb4?ofl2-5+@e](Bj@4:rM/5!4-$q1[;3Yq4NLaIg1OJLu6.WuA[4'5$kL?'0"leS!2:N?b:C]CQ]'lpXk?kCnEY`ZPY]piU=)j&2^4JcBpD3f<9"VU'Zh)7:&knI=j[$>#OCi";,dOSA!K[1Fa_hPYXY$7L*5gI>'oj*`mR$Ho$Em.iWfm*8n>Qlo.[S)TkdB1<5<^&d2R/DQ2@Y$'jebO9>!29skiJV$Ao1K0Za`EM_Up`=G<+)<9kS!C>jc4^\)*%BdF)+ol=sVF4lDpnKGZ:-#VF`d\<&>_-NAi$a'+PM8^uhr-TO,d/lLI6,qRLB,>-MehH@"2sOR#]o\RYQtF+]bI`8-N]FVWLn,UL#7$OroElU+d(,s'F%B5INM[9d;1WkE/rSU#-21sCRW^=.M'n`TQ[$\]pj6,gB#=dpWq8c-+^Afq7inTKbr]*pEi.)_?p"(J?YUq2K-IWhpr""AB#O$j\@Q/&N$n@;0e;"<*3U'jZ4Q(::5a/&9Ucq[Bdg-T;X_j+H'I)ie*]>4b@Z3i\L8L^ikBiM=E#03Xj,;ld`%.Nk8X0l*_709A@fE6S/d$6VnUA?#0aJY*<5<5]-Mu13I#t3tlENJP-oc)6I)F:R"LOg8.=o4CCiH5PL,(`o/O:.\P8H_kC2,4([P1RsfIiW%B"rMA>UuFoI9'Y/Hf0YPNtn5/Z6SarU234ZX@2:g`Z?`uA2O`N.^&_(`h!5.a;iZdLOS0&Pt,7ZXE'pq89MBCAN_W8*j8;g@5MVOf`L3WLrfn_!DEDKL+qUOhI!U#+Pf-S,(Pqt[0D&<6p`O7T7P6aQOM3?75.iC3/[j1(5qLJ,JILU:t/og"<2O!6/%YkmsE,oI/#TTk!VdoidaO)\>qb5*J^gkh#EttKD5dkk3upUPQP3hQl4;/9H]c:2JAo-Kq<$qAJ&rC'V?LmajHusT[SX/C<=Z&X*CB$YjWq&hngmr6@\.=oXcX(V1moib-?@>pM*MmTX`cAp$h,gOk;b+641M5*ntsS%d0itSB,$*i76nN'DEc6Th)?E7e?IPMI19#r=m9V++_9Q+hY,YS'%IhT0Z=J@VXX0?$#kC*T5mbA2=aRPH7Z@9aN*gn"Ftr#c9>5D&V&K!/ulYB\%W]@SNAu_hlKSp"9)DXj@qi0B,q(dW?#A,:9>,?X%3)DV+)"6)Kr_pA'LU[=C[@AI;HOM`L:N6`_Q-V%!BCl:7(jeDr[56;pU0td>E52U<1MT^ZBc['u%GCF1Uk1%3=3o83[A[S"M7lkrUo3dA_oWh`BQ73F1o_>m]VWdOg"iATIfs*kU[HFaLP;TO0s1rM2Mrf7SKt;*(mP-1+kW)-N:"gMVR>`=>Fi7&&N5>K:kg%fMTkkE?Qg1YK=/MP!m>moeBTi?Krj+Q\n\p2g%E9`mIM(<)So602E"$J:tS"Zo;`Mn<=uLp;qXIE0o[.WL4gVK&Ofi4F1/q?mBjDi-Qb[j@3ka4WopBKefWM.o/EisJR9F&':RJ?*0oEggc;Bo3-';$pfV_B*fHo[_*tpn0>!uY0!=;r;Vn#$;.?a.&"qc!>l~>endstream endobj 139 0 obj << @@ -982,20 +982,20 @@ xref 0000021515 00000 n 0000021658 00000 n 0000024158 00000 n -0000028402 00000 n -0000031619 00000 n -0000035557 00000 n -0000040235 00000 n -0000044658 00000 n -0000048322 00000 n -0000052050 00000 n -0000056202 00000 n -0000060894 00000 n -0000065139 00000 n +0000028410 00000 n +0000031627 00000 n +0000035565 00000 n +0000040243 00000 n +0000044666 00000 n +0000048330 00000 n +0000052058 00000 n +0000056210 00000 n +0000060902 00000 n +0000065147 00000 n trailer << /ID -[] +[] % ReportLab generated PDF document -- digest (opensource) /Info 78 0 R @@ -1003,5 +1003,5 @@ trailer /Size 149 >> startxref -68226 +68234 %%EOF diff --git a/docs/20260607-2FA-email-mobile-auth-flow.md b/docs/20260607-2FA-email-mobile-auth-flow.md index d5ab508..7368128 100644 --- a/docs/20260607-2FA-email-mobile-auth-flow.md +++ b/docs/20260607-2FA-email-mobile-auth-flow.md @@ -10,6 +10,8 @@ _Date: 2026-06-07 — FR §9 (email) + FR §10 (registration, 2FA, mobile) — * --- +--- + ## Table of contents diff --git a/docs/20260607-2FA-email-mobile-auth-flow.pdf b/docs/20260607-2FA-email-mobile-auth-flow.pdf index 87272a1..738d0ce 100644 --- a/docs/20260607-2FA-email-mobile-auth-flow.pdf +++ b/docs/20260607-2FA-email-mobile-auth-flow.pdf @@ -215,7 +215,7 @@ endobj endobj 37 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Android Cast \204 Email agent config & 2FA / mobile auth flow) /Trapped /False >> endobj @@ -345,10 +345,10 @@ Gau0ChfIL2&:Vr4Ytm=N)B6jaiLZJpE-!i&V/=;t4n'Y3fr3Ph,KU)fqcha<6CKf)#DO*5/6Vl;\%CP# endobj 62 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3629 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3641 >> stream -GatU6lYkN;'*"Q$Tr8@4VI6d#P$;E`oKGClJ,-4?S>(&]GX,GjOpdhCKOtkEs%@OPjUoTdchn_!oLiZn&UncH@@@@/o!ZZc[1R)u!>6[:e)t))6",Z7]Ur\F5,K#!X=t>Je4tbcsAm/k2Ta0S'lUu>b]u2\=%I)/tifM)2o<4;IEINlWCu]gU-rUVBB_;n;5Skr<&22ZLF@`/$AksI^3kG0?Dt,pe1i?6Y9Na1I2HpG$BkGMtK0Y`5)$k=OC[X6V/_c,q!a]K_'1I&_2^EJXf>C*]cI.RJJa3AF#=WN'&l[\`9_'u'R8J]5Br/EgU00!T:bZ70!jYiQYUb#ai[$#A0UKC;=W:fLq0rgFq]G4@!Of_KL$E!A&9AZ!G_mMD#6a]r`Arn2L*Q[%:AfHc9:&6qfl0@6#=:F($eItt24R4D$B$9j)@U!tm27BXB7#rn>s\+!&#P5Mqoa.=KS@0?O`s8TWkAro']Q2&>J@*q874IH^ee-/4G`(=hA0"9UldGh3(s$&.4k+rR*fNe2n]dN\2:ZOpN>EOAZu`Y#%N'ju[6LCiFdCNNuZ+>g"CR&ug:q'@.=];I@`gU'gL9Om>iN=>'V)g"Cqq'G9)s;7+'%d$OR[)s2K#@&6_Z*#M-Mnq*Ug"l@XZ)fSuHJ2_@'[CV11/LuS0*]je\a9b=jL>-?U-a='VO-7D3%#>?H@;3$=fRT5iDfEM-ZlqJ$.74QpruSqDQ(s?d2_hH<-4n!9^-L<>dI9tdYrUAQY5HUr9X+FB4a!QX)S$'0\>@M$>[=N2P+^A^hMrVSiBINLQ:MPg,K.!nF,^.q$@i*Y3SKo3OjMk"$+$qI50\n>ci))$(:+\0<\<]@RHYqIa4k9D=^(W3PO/)%;,(n6j,k_Vm;2BCVYc[b:8E.-6M?tgP5#3aKPg@"@J27be\.)4Y0A-YhNf\;ld_;d?Vfie*N=Z,7WH^uE<('<6pO&00ZGE,*D%jcjNWs5RK4@puP!`r64P,(=ckO0KGg?k575cG0L%$GGdnFH]:,@4M;fM^)YE4;V!2=R,%HF]kqr6>Z#8]'ZDPP0o+4;a2KplQ?5(gaCn!5'RpH0SlT&'ISWse7mc[1c(-7#9XUUQ%AEd7p.ckt\,$>g,3#.$fm6C''HZ5H1a+S#GRnLMR^-Lg-4NA6Bq,!6p*8b/!D+>VjTo?mH_>T7e@@'LXZXHs1h&f_Vli'<8WER^!A:nuSVl'3[j=8KT3WHhj-$)3@\\a0;Rm`d1u"26GP6Y;6\FOFho-"g5G;+UnKTPVV-F+dbtYUg"+s;2VOMb]@ImVB9>+m6"BGcdm5Sm+-Z^@6_^nrB&Wm^?B:\\"4T4hj54&=[POpiRJeQOnh\8.^&T^GaXH(c1Y.b+$mD#&.&tkQT,p5qV@`M!JVPV-WXdS/VuD;nW.7FI^*K@Zl50,Qg.Wf"$Z4`mOj&aUJ2HG42BG88Q$ftPisn`"'sIq&.Gd,)7#s`n<3[#+"-0Z.s.4YjdtG\TT?[CVPt\eEL[VmDj`5lbs1".n"k[.3Xc<3UQ"["E>XGS$!T)oM%O-[dKhts#Z@cI82VJC/%j)8Eijq<[0!8+'pu#dB4B0HW`q3UWafaTWU1-KnkCcV]cH*8HLbEH>XqeBoC?'K[IBkN0p:BapNH-r5qj8P^k'SRO[%QMq2:3e@h3RA]/L.:PSi'rA.2Z-*pEiK;RQ_q?DF;pR?Kom;-1m%%A3'C/8MA$nNhC,?fu$bdT%tn9'Sn!q!6PSMfgYPBn(m$<==XVQAJ@6IIF6Q,R+#!"B5ZL_=FF,BDh)!c0S=J-rW.:8NCG$J-ljIk1Vb;"$IB/?TB,kO!.X$oZ38qS_"rEe9o+P:5?P%KI8gXrXg(D.B@[HIfg(ObEK<2>0dNR47lZ1]g1$DffA):W'kbUtYeg>&VZ%V64)\?k/$1,1?-etg*\J(*_D:C'PIp\u4rPr^GiNLROnG@+;G`Ot9RmX^DeDot"Ph-Zt`GNbZH^4=H9:W+SGaRc2E*8s`X4"2T5tn?2n#4Jai"YEXRP-]1rj8"XEs\=q4@mM]?J2;0K9_Rbehl-"_@jZZKm1f=!V-Q`JVb]a\FSdG&;@PS\UdY[:1P;pE%g-?]&AG\W_%:/p/Lb$BZ5GUgBsgQ9iWb,6gi(=mU@;/^g!%oe[#:@@(\lTV(;8a,4%o\FANcGWn*RT0h.$[?uF[]/71_^tqNeq^bE:))/Ys5LO\\bQ~>endstream +GatU6>Ar7W&q801+L&Yu3D!aY=0$aP[nV4\VeK)a7F)#>$D1W,W!L;ZW;%o0n,"%)HWB_i;cXJ")Z@851sl3k1/?2VFP7nQLBN0u;6aILL#?*uNQ#L1U-kIabc8#la/1B7:S*.aP7P]RdI#!VhlGA-Pu`:OL:AAu'@iLbtXMIN<@$i&7G$`tfK5[85UM6=.N=GF:.h76B&P1X@F2,ZW`YL.o<>`Sqtb2Eu8rdbsN@KmM*"abh28JL(KaWjMa=+B]cIYU_Z13L^'23T]"Kg:c4VMmSBA4]gEXe!6a,t4,4*<_h,)FhaY-3da`]q%ErEe9ac0]orE'VQs%IGUj'Z;:t9P6:JfZj/n'n>0,q`XJ.>6PpRkN?u\&7FbB`WKn]s1F/C"@VK*1(Huri1mk'b.9J=O%9?=sdIn)YaZi9.'phJLTgk36XiJl7]q!$.6&&;Ki6Om(:jE&,iFC5h85NJ20ls=a.=KS@0-C^s8Q=p1W@jcn9_S#`MX+5PY]te3#)&r:EE]:%^7n;FXnUC:$hG9CG+aW"859-0-\+rd/#/_9m]43Y4B4M-f\"m%lLk95=^GJ_Lq2U5iUQGfs"3p$p?;M?J^cQj]"&@#PnA_T-Fs:C$dM/`FFr76J'9!>/\'NQ!@MdT;-&2R?&/ubMQNlc4%9T%k"pYQ1)kqtL1=T/!pXj7^N]NWa`4-GI5Ql`7!aS0kiLpTgF0%0(KuAFRQ+Nb?Os(cWEW3n4GBQs%Z8Qkg!VC:*hWnOpb\44^iVG-7Y/f31epW@hql%D<9qnM1rPkH0Q]kI=N,C!V]QH],6n(H(Qj,jtQlb*:HI(Gcr@"Lj\mk`=)q..FXtSEFldO50H)i5[4Qa[i>%"Q@Ji5'E=W5+a)LEOUC=D**WDj5>U9e^Fa,Y[U=72_L_t5Ypg1gl66Z?&/!J,RiT"U7#^s-95)dB@&OB,KEi)@C_8n7^`V$l?[!#t3t>u+MY[i>k,A-Uei/gQ5#!-taI&>:P!&+Q53d#)X31()u7]Vh1G&F=$$[&;jYiNJ>o*WVpV8Ia^b;Z#J-e-?dD5]3@9Fs#-am"Lm=mQQ9@8+2`ci-QLVHV\Po8ZiHerm,qQeKuQ89;AtP4E>]Q):05Y5mhH93sN#]91"pnHEnDZ/0OK^Fmtf/L(_5^O+RFS6.h-hbD\FC-o\tPehjG#pK7O/>@B[fKMhn7M$?DRKEh6'nqV#sXb^2f+@S&)H`]T?$qXHXG"AbR>#$aa%_b`UO;A7u(b@kQblhj2fo$/:*LB7^_h:-&l+r%=d6uCf$.W@rVL/RneG:o$Wh2$'f0W2I2V.3<6V@2cu:sEG-Huqk+=%F]UpK"L':c^AUAPRpnpt&3cj'?1"'Cd-saoaD+n(WhQ)]ldj^bs%(%VML#&"Y027@e#4o_3U4@41[)-!L,?cJ1DD&)R4)'?o=oOT\b)$+`d"N>2>/c`[>d%ET861B!NW)j^9>Z:Vf5ZOp@M8uYJV.uOEMpfhs/5c2pUMWGjdC\K)'&fi:p9FcVDHRqc,P-s:J"O"(,E"kC(qcB("HoMDnqZcUI3s;U8$kS^?JSh%r)S[%pR%'q<\N[k#Am(3&Top/u*,1LgM-7K]$(3Mf81tGOp1Gi4KOe!lcYK4*Va"+`kL9$s@$B(o>^`:H=#+.gT%t)pAXBZPZrJ+C;1cWG2U6Wqr-No/Q&:bc,?C,jQHc7TD5i:hDd;"7A[5(/?ZlsO\J+;%3raCu+"p"]=RIJK`V3%K_gRW&dV?fJ>r6q2FX60RVoK>r_QQM-Q%8^=cZ=C'>n\(:T5KGn:Tk88=Mou;SV7u>)Q-k75q6BGuL7m&#'[iC=ZLZfMbBJd*$e3'sg3Ee:488$g=bup*_M&V[#"40;h:H'MFj4;tT&7&nM7#@rXOk\;*cC@DGa=K%2bjc&O`KAsoeQro+&o8/OXW8<5kW2sr*0k$qj#'ispn9)Y%iY$9!I=99nEId6:+\1Tn9+*U(]YXr0J-cU=k'Dr!$6ifO4!+9g0g*)C,2Fa^?B?)qfOq8_/`nm[F1ZdJS7UW:464I^4),J/`E27gX41*k!jYD]R]e5O9C&JI[]%Y@%e]5GikdrhS)A(ZDF"J@,J?V4dJ=l`1.t5BrZ7F=O^l9Wk\!Ob^l4VkuJM3$Nk1,A&*6o'VSLlq2Xu#$S(!)r%<%OeN\bQ%?/ako1UCVj&^4Ymdq;OR.ph^N"Jl@`BB2Mu>Qk\.(6gdt2HRs0F*oUP-l[[.sNF%m!I19Xh]m`IgIK??;a3o@_@IV`P#0eH12S/D'$O7&SZNF`_cA2RP@6$WpSA[#_095!5pfZZSUPc@HD:A-kJ1*.agRP*-UV:5b@s#7RmFU)8VA6dmp-j7h*tJ#18T2B(g8:d[^VNk'/9ITf5?7+qPe^5^4kbXTAl:fU11am"-P?$[2gdt-.H]\4*k1Pnb*7QChG2taG%jAaSa0tf=rG8cU6WCVbLHZ=p"aK*;.#IGFDJYUl=O5N%B2j(d]HA!&Pi/XL03g&od$9NjU6Xjo^!2Mm!5t3i]9_9-O.m%qsm\L3iNndI^)P`C[Tq>`]Z_eSb*['pe%]dS^33PY3WC\nh4+IXm32X%(]Oa>(qOh~>endstream endobj 63 0 obj << @@ -443,14 +443,14 @@ xref 0000008965 00000 n 0000009061 00000 n 0000010448 00000 n -0000014169 00000 n -0000017855 00000 n -0000021716 00000 n -0000025995 00000 n +0000014181 00000 n +0000017867 00000 n +0000021728 00000 n +0000026007 00000 n trailer << /ID -[<44fbf3911fde2d664205bc0ddd188bd1><44fbf3911fde2d664205bc0ddd188bd1>] +[] % ReportLab generated PDF document -- digest (opensource) /Info 37 0 R @@ -458,5 +458,5 @@ trailer /Size 67 >> startxref -29694 +29706 %%EOF diff --git a/docs/20260608_ALPHA_PRIORITIES.md b/docs/20260608_ALPHA_PRIORITIES.md index 8d74183..581fd9f 100644 --- a/docs/20260608_ALPHA_PRIORITIES.md +++ b/docs/20260608_ALPHA_PRIORITIES.md @@ -10,6 +10,8 @@ _Owner-agreed task order, dependencies, and implementation prep. Supersedes info --- +--- + ## Table of contents diff --git a/docs/20260608_ALPHA_PRIORITIES.pdf b/docs/20260608_ALPHA_PRIORITIES.pdf index 1d3a16c..c4de8ec 100644 --- a/docs/20260608_ALPHA_PRIORITIES.pdf +++ b/docs/20260608_ALPHA_PRIORITIES.pdf @@ -168,7 +168,7 @@ endobj endobj 29 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Android Cast \204 alpha priorities \(2026-06-08 renumber\)) /Trapped /False >> endobj @@ -267,31 +267,31 @@ Gatm:gMWKG&:Ml+bZ!V&$JA]e/q%dnDB_*CC\)3g>/S?V"%sGdS%nCl[M-8jMBddc,Oa`aR5o>^5k(Jl endobj 48 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3699 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3697 >> stream -Gatm>D/\/g')p`p61hC3ZV>+iH>btedO&\>86Trk@]t:_K9g1T>J4#i8UQ<*hgRr8OsO=q-1(64c4LL*jSG"ZHkrM7Fi+2J0oI`3as%TKb[CfuK4Pnse3cOa03IQF.sQb7&(mR8UlJ4qPe-Q!Q6uA8:&dW1?hkUiLS)S/C=nVIK>R&6R<4?$Y]2PM_K.uH-D-*sp!arpsIbBXJmFTG$AEZ(9&PCHtJ-RMOPAAV$iMq3!r^@,:&cqR?;Xub4AFB0q63S,c2F9CAFNb"1+#sn$X&hi:7AI]1qC=hcRpdPh(_OgfT"MJOBG=l:8bTgZ*3HON9%&^>1\T([n`)Rhb%?`N,7%/^?4*ArOKdP@JrBA!rr:/pme'1hM23fh%egs)9EHoe$gdNtn_pE1+Vuir=W:m)>8UIC2Z\GM5E)VQ;^`Gf@7o9KD_$a>II>JTgcZjO4%nU-FprAcj4]j7o\03g#Q8o72:rR^O6.;/sY8i3O4C6"Vn^n4q%p!u%kIY>aCrL&MCHF3SRbUWa2Kj4V;UpP;ncOr*a#.!R5301QUpdJJh%Ckp1On@jFf09ElE_5_!\-qI2>V_.TNBdLpMj(ft+@'BCaKb.ghpkLPc'ZO1Ro?W5if@QV/7uQ#29@tU`g5u#+58o$,57\:VfCLlkU3Xt3B&Fd@gTK>9,=m:AFj,%Qm*c[=kT;E#cpOBeW"nSPreQ]Yrjk>1AdK!D%bPP=24m\fn:[5u:lVBoV],p>^(1i9DTqIsgN8:X;q,A5L(nV>&-`g[3OA[+JH33R-)2mlJl9EI1,,/5p1IT\0JRodn\GDFalV"7l2:8SlQ9LsGbG1TOrMpC)uT[+%5s':C&h9.IQr8_1lG[4[,CCf=oRWY-UEoq"KD)uWXPs;Bjns-7[4+;,mb\_Pm!-o$'7Q?"HOj#WXCEGjoUcDTtjSm!$kAa^f*OLqS,@IVh+n[I>%Ys3Iq_lG*raPq;S2p3?^ALh%J)o46?d%^+A1&ou.[V:--lGh4DFWA+eIK7LdSY=,RQGH3?i!h`A>,tQ)1=NC8XdgVl:9A!*Dk_$JUPBNL]Wp[j6-DZT-O/mRd>G:?B8fc3e;lQ3H=K1Ak;L.$@Ck0S9Iri.JOY*:9Ek:g>E8ZgfN(SW[QB!23m^&ea.L';#SX.U8JXOFPY>aL:#=`A8X/WEnhMF\CPbsp@7Y2D"D$i)nk8:*aZA8Qjs[#QV%T@W.RB)UD\A:01kj.kUr9a#k9=(Y>*NoKK8rcLuaRoa;:A`t^\+p\iX/r#D]ZP6YmTlJ]fO-++kKHSjYd]\Zb>BL!0#6J(H])qk&Vhi^&+?u&?9_c4#k[Oqfn@-\.EX+l;0$4s@KDIWp^!AILZn5LUm)W'"88Pj/h>1m>!;?QB`K&,b>]g2"kXQH+mQW$*7QI>o;9=gjt\Ks8LHmn3\cl5G_e`o,!<\+ngn.b.53<.i7AoMQOS9\bXYU=jF3-;FW>"da)oQ+);Ck&`X2*rcUP\\L,48mi@n#WIEkK8ToF$%'\?0=os_-=kee"OW%@p=+3nQd=k28VA`Ep-f?=>hLj9ZqjJJ,!\7gV6f[1Tee^TLsXYbX6QJ)1$UBY^-m$O!'M6W1,Ci)MYU-dUGV+87Q0FrhnA_$\G%1X#0sY46Wne95-dK2UB8FNZli-5QB[')5boj[gTCB&.-0i10\^j/M@58`(m.Fh-0V'mqUPZdV6uV`Df`3^!)DAnmQ`p_*E'F>a8eq>XV=qKe'<):i^NkrmkGsW2@i2sW,?j-Hi"l+k;@9$pZAU\Upk^MpU2t:%R%f:nQMC#HSj]VF!'['4p:41h^+fh:l)>1XDCY\3K$4N4nfWb7&l7*1N\ZhD?=aWCPCBSlO*^rGtajtg>"AI!+N)7@S2!C2$OG[tQK)okmRoVK)QQrsns28E`.UC@DF"d@"a1O]O4)q(lR_A:N1EpNBFLalEOT0Z6F$Kendstream +Gatm>lYkN;'*$h'K'6WoA=LpYoklr5dO&[S8D7n>@]t:_K9g1TX^9O&M=5ulgM]VcZ=N:ch$.^g%5f-N$tn_COc1R\Oi>)DO3iY2RbYtT->9tYZAMX=]gLE#2o"4jgR5'rF]4K'A=+^p'MF/SJ;c?W[WEDSs,L0!J>ZX)UL4O*I96UhLc$IWi!u<*I0j#':00/[%SCI+'8<^/i\TZ"L]n7rCmQG\L^"?0rQ&J4$W72S1!&W7=bYQVMQ15pYHTciqC/9ZX\4@5_Hlqe["a/9MA?2H!B'7>\75LB%H^;iIrVfA=I2C-i2qeVZcY\?XK`rl]AMPdgX0FUW#am>Cf@R\m1Q7ui'L9.dY:on]SYI[;9R9P=UDMH7B&`]^\8mji)nf^]UcpsZH0Jkkb.o8?c1QNigdfJ/I)XP.>[pWAUJ.t0j,I?MG*uGiX$(F#EYTrh82;N>(pT7?WB"k^NW>-S\A.h=0&6:>f1/*?1NEE3"eUYDHE:GMRA>5i?=[=1Hnos$6Iu67T=d]AlbNE9L:dt8rMmjD6T/0?)i@N)FDq-fdee*iuUK:o)4b>?2l]P>&+gR(=j<+XU8CjV4O37E8bJ=h:oE[)(l7#+E=I8ZT(gl"P$hmb)?g!I*Z'@GYN*5[#[$(Mp;9[V?DWQY%/(a3j?[;/0P&3\=[UKB_]T7K[dQ"/MQiWsHX:cJf%C*Nl,Ma4rVF^unJcL[1WZs9KIC4]L!V3/dG7fQP"c"\eY+"!oYJ4^D&+C5^ellKdH^NCJYek.0u4]&]^=,\47j>N=<5%LI;f.)]fS>5='#m-`r9V73@E(18L8W6e^k!u\o*h)%J9p<"SDhR>VN/]'d!N">HbS>O>@]7u3oA\C1!mi*"5:bt%S`u"=A=8&ENif6"lht!>=E<(MVN%\i\U0B*YUWjh\f^s:`0KLR%E!lPB[2_CDs98NeW-"ATZX8c]D2%/FD=F;+GuX#;:`Y$g7T-6rFk+WNJH1RU4lurZ!M!QS%0d,\]X"9DrPp*WFjO?X:q.b_tUA&-N!]>"G\9cO?-dQ6e$KOJ\Vq6&j\CH,+i`qnG>C?i4(MJ;fC,2b"beM`>hdo76h\d5ig/_dffe`LR*mr&-tl3o>n^\ZIrT%"iA4ERDfC9=@0G$/dF^.FEa^X(D+R6Vi:Z<=)RjYuI,nRF8s.UQ$`0L*[-K7?n"nOp"=M8qLJCP3PA,]n2P(MOGS4h!QT.&qhua\n1-T-o/C8@J%QO%-hFk\C&^6;C[sFIHYMmofl;2.hDf&29R?V78&9[oF5@!Do`0&u9#SU1:mo1ujr"&p=s)qWM.=`LR`bENCA'_NW;^BVi_Ceol+5op):F+!g)*Gs0a;X"ksc]QiT&VR_.7`[Nd!n(E5OCN+I4XF'P:03K8N,Sn;FGE$]rc&#S1[b"U8tKWCe+=JKrf>'2:f#VjETcO*:ncG5rJlO'$+JnZ)EAM8"i5jN\@i>#OZ?@^J^8DI(+1`3B#h\fQF&Y$U+q*MC"13/&4QU!e/*[1WKqJ$*;JVGqPU$@*HBAT\]mQ^Y.i_O-,\c;tR-L;b4S((&TNIOGa;u5._:4KisM,+=[lm)%%VFkQJZW^qOVEgL*46U*]PTPcj%#"$NMs#0>F,*B$La*Vo%)pq_'l>7hA*"?>SWoG?3eQV6id9!SEih&#g)6r>J(n%"30)Xjcmf4EJOWhEc]1k-]Hj82nBL`#$aHcd,k-&\X1acNSKf\V8&g.Mao_QkX18+=3$*r&.I02[bDFOEVpc#=(QY(fP+%:WQmN?G<62K*8NT]e^FNK(\VS*$C8=#R-tDt!.eT'!]U1s_4+rf8#KZ(:*VfO9k>2rG/*]oIur;MorLgU:+a,FXGHr:b@@\]Qud8IC^n@U/q.K>+!cR;;ihfD#sFa!VqTBl'tu-0*BIR&($nXpcMF*s$1OR+#FE[f*-Vh@ti9@Gku,F:6-'\)Z&7d-`$r2=4/Vd-Jis45CtT.E/`@$G)pF!pOY=dqHuj<*F8]Sq[e4BmH-O\8Pi[RGS,KLEi&7DHS>N.H`S+P6r8B"qYnTkbaiN.CijjE[V.R8d\Pm_DhT6'SA!J'c1iQ.;9eC2aV&VBi_\r'd%pg]dii`G*\dV=G0KSLk%%j#Sh?R5REtbODJ*s(r&5P9RIkNVTa;c.+'B-rA+Mg!i#!Z/q"##&Smb6.3%d1LZ:)(Jq1=*-/Q(uEXL0Cd$B*:S@'AaOKB7cK)GOaM@`_6C/'3O+NU;D5,5*,umY:d?WPa4ke6WZ+,LmJ@W+4URjsQhLO8`@4aaham4;?&6^>T[lm<^+Ne]<$sS%B/lhX5[IgY1.:oGF4=X(`@endstream endobj 49 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3615 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3531 >> stream -Gb!#_>Ar99&q9SY(`55_e(QYI'U+lYfLhU,:0^A)q]J.+P:MPKa^quH0.m%XcR^MO7#h2ojC+mWMb[NoXsNpBI>FW8dEMZ]+fe@d._3K_eTnbiblQEE>7h1I2XVJODMA\+9U:LZot.4.j`h.3f&97.Z7-gP>so'rh7W+B\PrqYU)m##34F'ME-/n-%F/eEqp-%4YA!NN,=1BJd#>JL^UD'GAbH+_$).B'b)diX@+F/`+.rfis`P3C9cEcoc7`-#Z?rWLBN3UtMV]NBjcXe^bJ?Rh1pS@ahc].]NdkM?YeheTXP^r7Oim7u*s4.6/F65IZP-UU!Ej&(*gDD621s8d-^[NOnjABjf#ad`l?m'!P7;#L5KD3Z6e6q&H@9XhFL_3D+W,P-c>1t7SDi#_U[2RlSJu@CH'(gT2Oc0US1=jGk>7`+T9%?g^f2kBj>G_^kY&B/G)0S4n+F?I%IA[VrTIca(*THb0TYDF&L78?)&k]Lq\K25VppKFW(&qa!cI[`X.KfI1%4HssktuCL*XYX\7d!aJ@^p[8%f]d45S;I>*U+\aCCL':L*:t,Tl)qpXNs7]&bAWt\u(O-Nu75#@5an)CiFq$/4*:\nP*mk=q*DA<5[Ks>n#gf[VUZ.ZIjj>LOkqAe-]FXDH89tHU58HOc>tahRipqj!XU#TU5'n:9ho&oQjh1@?Z#;RX#;-a"K4a9>Q3eesK!fK2QK]rp%dlP)T"cZ(!g1dje&hAsH2[EuG'Q5rs7N-$\39P>(g\q6XjIuEO]>*MG/t&lC;+KR>huh44i9dK->O)$$TW"='fkD4'Wo6S"7oZ9-g!4d,;>amG@Ea`gGYlIo@ZLie#2LQ?uIaL3T1K3^trJ1?_5-J=O8/Vl/kfk9"/bc&`!aU>MF9,?f*SiDJ#TB(.9FF/]bO8g2MN$qc:S,BnOAKoaje,EXmKON=aQ/'S2<0rBu$Y,SWO%P3;-'*Ju2cX+t33*ROOOoVh0+?jBQE9B%?J]9i,NG_s`@@GG+;E'SE_EdI\,'K=V#^At'Qqb\g<&(,Y3s)aXqo,HS'#R@`)(sqn9CH:ElL5]t&k&'T`k&$r[#F7Y%HRb23,?]@26`,qRMKk.)pQG@N6\TM\)b%,O.k9$@_"".;"W"^U9GleY`s]1F90XP^8HT=Pq=3l&j!Bb&c"J<4@%*+(KhEL*&l!qZ5_DP.K!UnIMfPW06!hra',ZZi&=-?o1P\WA&<[!56$T6chWHC,I\$Rd0Lp8EI8#b+F+\?2*kZE+GD0B^8S5dfnm99d^_EQs$\g2In\0p^)F!fd:;b&t;#n[KSeLOAnMY_#<\/WL)r*K6hpl#@_nq[_01G2.?a&i:8!BNkTV>ou>ZMq:A<\S,"b2qi5p_"fW&J+.GZsn=$&8TNIQP;fFBKZ-CNB3tHYTkD?"2'!=?`\YKe;d^e]'/8f^2s5GoWupC?m#Ba$U)4Y'Sm%6P4V($,57<(:WQg7*PYS95GZK]LLG1Q]2(,q!p`k:.?U'#0BnEm^\UninSj&Z8k>cOeKMVH74@U7alUl_kOrkj'a'F![Dkhki#>9Wc`A\"K]Na+O]9lV$pomh&*:eojC3I@F-LDnB0d076uJ@[MVq&GDe:9;=Cum*t']C&:u"/q%!;af1]9$=DG*B3LnEfV_E]kI:E<`Bc4)/iaql6(9[RUJlm"&O_>JlVWaC8![\TH?06i22l"]^k*gQ"NKZn_;"?lgPW-;Wg):]7FKEj^sZ2s't43M63Ee[XQJG?NCg?NFULcCc/!R)mPMHuRmXedeE6-M'[))4FI7>W>X8eYTB93>N-jnVPrn'U]`U.0-T$c"$LE-/ff]NoB2*d$LY3ZWb"]tNX2UaJ3/sK'P)d(%3'JWT,,,7@3Q;e<:i-$ZEmWcHH7/&:XEG)M(&gCoWf0ENQ@].td#FIV_UXAgBX;c#LPe[_Q[Yo6\J]0^OiP8oM)j^mI'7>Fp4lihhgPVJYQkNjM7k=rmpHfT8Xd?`ZjN2Y?jLP"@-BAPX0#*Saq\NH4^=.ZiGTR4)I8N#CW1sX/kJR"1rU^qjqMF6+#<6WfFgY^jY4_mEDA62,7]E7]pO9(Uie?)]f:&3007,\Hru@]U6>B=7tD^g1=>r3$]D@UjQ=X5Z5d4W9kL`nVjlG5ctP)g1s<;j'9U`gW;ZQ\m*5tGdlcWAikNhfOsU*WGFurqWr;c^L=:QVT8:m`fH&tLpM#Fs_$<]Vo)$NM>XT+3oYP1T>l#4FcI[F9N]Y*V#dN>F0"N/TKjaQ0/GB(9mdbqCls9DT[:*B8lVk`O(4`'[S[[hPkp+<"\628heOD:+=[hO$6klkL=-L&aeV/b'8N9YuMlpii6RBcVl,5FG=-qCX09bX:ZG`0S-tX(O`90e-#m(aSZk`aMfslV^,.kJe><>sZ[`\:o3`r]_^\;G9Btt?BFr\[#%=TDI']lj*LK)QhqUA(E%d+D/3gF'HYhGfKs4>M)mj-e6]kt`+Dd0KYWXBZMWpRjhhqcOd[s,12Pme[.rWCQ]endstream +Gb!#_lYkNI'*%C7@US*oVmU5Z8W%'LjV1ooF/TaR;Qfs@5ZippM`"l#;LZ":s*h;Mp^kEBI)R+X`$T\OAp7iHo:+Em!]'aPP(-OS^rJH?hC,$.R'/g',Rrm#_dn5erC#=9C:Z5WF]ef6;'];P1n8d\O1U4MK?0g-bj7D0d1\M`Nuh&XUQQ!>'hO1kLGErgM-nkB$41>FJ"=?,q-q9oYRH0GC$u!`i0ccC`1W&:huLDb8#obLAF)T3=_7qcoRmB>HWR[+60;F0QlcmaVot/7e0).QcW^&4H:9OUkh39=-G+'9Q?L#&9!jX.a**Gp6*kSBo."?"Y7aU-"h5ap^_boI2_ZN+P?SuVf>+Q*X5KYF_cc1kAV>/6-NB7'DUSKQ`jaCVsmd50`MTAq+IhMAQ(>m`=V15,oBd^7!8^j)sg3Qo+GJ5oH7;L5l6!G#4\'&;mAU?"Ml=<`>ND7>eGEu\$iU3Obk]fTWb:`8[]n67+G;!<,3`u-:ikd/56_WnT!8R/D?8C6:PpfW":[cs*uZ>T,ic#er`K03t82SGEZ">1l7;T^AU-)ogFRq(a(>>thfi(HNOgl"LYNQ?,(q6dZ=T\r4[U.UgkfsnleJ4(q1%)Xt2"2ml.^5=h,;`8#j#PnQ8C$/Joc6.bZt3B*Zm-$B7*OMB_!f$,N1shhV'K\)"JiYgArcm>>uB4eVlN<:hg?I_$SA_8s+nq.o#3$[q+]P"3DZTf`E4N,EglF7(6bn92V5+RXNQe1,4n!;RhO5E,mT&"$bMPQ1^[F#k6_o`;"f0s+7Z;lhGo!0"p"[6?Qfl1$s4qCh97>CV[=YEA4^jLmlM>;8R#gB2\SX9rF[ZPZA5&2QoqL%*$lj`)4`d]K$G9_T1Gc?F-J2tm?l0XDn?J<37%"aT9')_Q(,d)m2)Fg,&F*fA'):u)?[7lTJ@RhsEAm26EPS(E0cf^s+P"Y0^elu,HZX_%F>fdM=A+ri:0/`B"Ck#]%liAS'mYAu+\p@U^@Y<@,1k8@^@+4fLS!FRmBJ0hQ;]@@4-.V%]h/FSkdq'_+Z8-/g`L94@D+Dt+N2\#!CF4Fc6f>l&$%e#\%:7FrGd'Y.,QUs/5[CHBi8+oDO"BRIBf+;%o[0TT88>_u'+Deh"L5k_6blWN`0;O<;T=N'IfsAmo=NtfaN\u)V!5qi<@=XeQDL-h.aSS4.@,,ckI3>@'X^_TAPXF_6Sl:@jk>HWeWspQ^WbQPm;MJ=bjK@V*CPuWScnI]1@LOl7EcVYful[d.)3Dc61duJcd"S@$T25dtk*8P1o:q^"Cp02`!sM@Ze!?<_6f$gH*6]0u,if2^=diJ9`;56>2;RL\DJor-#-U(Yem<5OkGTj5S,'i=[k5ke:A"?L#&pq+?D1B7M!lAeeetdj2c`TNcuTk=t?;nEVu-4ZGaalR;8,`+Y0_IZUN'0Z94s+8SI)iG.Ri!+\.:)#$7>S%X.6^jh&B>WRd,<($@/nCPs<'Q2cT]XG9i@Q],g``5`+%@a`IZA38/YuaCG*K9GN"8@C;#(..G@E^sOep$,LHK@^70ZHC#2AF!SAa3>YT,*tJX;6/9,\:LW,Ks,H+\>Q(S7#_qdP)q@Z&">uKA#Uhe@If/6ki4lQe8Fc.@+jn`SafF@\:)#hi$q5Nbmj8Rq"HB/E[hs8cA=G5``+JC0gIc`S#?RqfP)*Nj#T4Ze=p@mG6)*Zki,!opXbIerhVH?=tb\QU(95#1m2WkW#5[lQqYOV/)\r+N(b`]*'mZn(TIG%);2&rCsaA5#)Tl+GR(rj"J*]B($o&HumZY\>MI*#@#KJr/*k@bDW&SLn$\s]mO@o#H.A&G:YDE<>+gd!PiK_X8Dp=7md*"mRRW4pmC"Nc=,/eH<$MEi":MQc(\pP\:'P!W.ZiRl,ds,q=eD\Rk0\B)+Hn/E9d!?hg-?'?<[g92r:)jKTMeK^SsnD/FCl#1k/A0N)o.XMVA*U?&;f]rEY99E*E:XaaXendstream endobj 50 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2696 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2765 >> stream -Gau0F>BAQ-&q9SYf^VXIjMn#eJ61(h6&mU8a%[7PBDN24!?r\F0hj-njNC2GqcT")7EQ05.'Ah;L3C+0Hja>s"_<.D0-gMa56@?N@!H756!uGQ_phAIgq`%4kf8gjdBm1RVhPA88am8:`5cntGbt.)0e-<9R$OW^K@oZD+cp`3s)Oo\[dLXPm(RBZU6b/>L0]G_<3T5ukdb3%ZLQbm>pjP1a+s'!g%l@O"TUaVL^$CY^_>$)&:bF]I##fs_U_e9D=&4,Xm(l6!Hm,?)Fe/eW7r?36(3JC)'nOu/6U!ogtho=IMD?t"k,aOcE_7P?s%S95kX5tZPOX$ZhH`jqJ@9&@>G9=0aRm@>D.G@"?Untl;30#oIdi?EL[kkPr5sI775B[*Y:gjVhMrE7G2.;-.Kc>#>-MnqNkC+EpCP\@LC+6%._=nciIVPBQjB-(FtMoG$j(@3NK7(\E^Qa$3>gXqe+/D&SEDTV\^>a!:u!3#X2JRn(V6+"SX@!=$A0)F%_(j"7Ahkf]YCIu-uEo+4Y89>`"?=k/Gi6DU2_B*)A4&P'PO-WoYfIa3#?e#H;;\W9[rXm2ioctdI_0sKKi6qf[;mc?.2E9@kR?=oZ00j,6Eq'.FhXRZ'ApnI]P7SCFu?>(dWI=#A94h.O7R,^:30ip^A?#LJE2Vqc[ja^Qhd5hOHLtI,QU!;0[3DZt[=>6i#(@6TjVtb\_QAaRp-&J#c;1Gd*WFMf@"tY#k-IMfl!G-%iG9@CJAS:=UaAsa&O2,3?]jgBa"7#mjBiRiU"'s&&qA3drOOl!%hMC>!RVpm:hU9Y*Fj8Vgm%"I%NC\25;-o4r[JJS=->WtR1hU`.\!q0]ubb/Q!2>0U89?qnht'[P,bm=O]S-Qp[?Dn*^_TUbmIr:0,Npl/6Vi+#Mrc[@Cf0Sap6edo3as[2mg>E8^)j'R/(Me.7&4UL_Aa"6D(>/W^^#O%%UhSohtf.@UgF)1Ns=&?@+,JX[WtSsS>^q-/`*J$*0pQa'q&*&n4>fTkq*fO7Ep<=mUbLC67!&5;rqT8&C$\^QOVa.ad1OR-BR\D0s!!L@SZH%P/bLeFD8m5C'ad`!%Hjo+`q^G7e9kghcK5@FP0QP8&tN0EpX`q,PG9cFfa52-8YkA"kM*9:XlLMV*)dDmOtrNh[pp(u9KA+tj7$*Mh)IS^2QLc"0QDjjl/g^;0]<-LQd8Pa&Rpp\92"AGaGW?Kq\tkORR5CQ6Es%cI6\XBYuP+_Zq\5rNFT95R$R',e+j?)U]1Ge-ulp~>endstream +Gau0F>B?Q!(4OT530gMHEi(W0"QGTEIBYf"RAk9U*IDuOgA<"F*7Ma^!M%?Vrq8JVK>GBS4IN_6M6+UWoGpNdq]osMi_.JOh%d_M$H$Wg1]l,0BSL!3oG4U,-\%\#>>*FG<*c8,&Jb=b%"'V,'sIE&,X`m#!J/+D&cseC`@iTrA#bi3_#Efi6e#jsW9.0Z8,1X,b!T:P+&]GmTZMAm<]4:TDR;Hb2]lK$$*?T)T3.chOumX$o)hA-cX?S_VS3SaKp/PqHckrd[Q*[$p0#!NLsAqRmk-cqOeY\8E7k3G$?1&US/GF/to^;cMG1\_C12j!ZcZki^?O:jo%;VDR//q$knYK55t]Ia#G#C_gO'2Pg#bQp)l;`=XqU,)Sb3.tB8+m0p@)Hunr?[[7IH7JFOA!HlYUn\-l3rF`sXt3/H@fUf`p.Ii9j1E^Ai[-jQYHV44ugl\C7(>,8*89U^Xq6QfOB3X4q$N.U_ciKAD)3d^A?!oILiX1r%&eCJff.]Q3bWe7$Y'E]&-'#uEbM/>+)NB/jNRS5aZN2^qU,Nf?IB\V(pB(AoiAE8TSO=*[^XoEk']uS6AS[.=UHQ/1CHhS0D(m9%"mq6)9JuQr%8enHIUr)MGDhn,Lh/iefP(b%i0R9o_obYhH`T#e^%oiL\S'<_t62\\_Qk!-X&L?0O/^/3?fjDfZ\P%`KjdC3Dl1R[[E1"%n-\\E$<'D\:0kCnpl#?KP;j6RbCdYa3CT(C"H%D.rLHO<&q3\.!OI'G*cWlHfU[IUnA)4lB6C"+>T7BOCE\n04V,O,A`e"TNHb$9Gb'3/G17YF+It]CneK"Yc(+t_cIEm\83&Bn27F=MQg(Il?HKP+3?"#=!f94FkAfHRZ!mo,-%3F:B+c4hbN/$BOQgOjp[t"MC#$p)fi.Gkr`K:D8KfKqL[hJc',At^iJ\U.2Ri?>-HXVS*cZ_1:PFRt3-0?gTd5KNP`h:r9jC=;/1XoiL5LOJ)Z%Y7U0_TNk-\tWg'B[WFN`"j,(N>*+lUFO]X^5[4]7#0l^,rj*SttC/">Nu*pHu,'bVn)LCt<6!7nucY3BL5Pf2S$;mj)3;>%H5Edd]p5QB&]Ad#<@lABM#&m!;B^P=Jg+Q\A_YNY3k#=XNNn6;`5/gDT3H2,38,F>GaXTj*/%1EjLF.;phrX-$Yf?YlpeL9QLjp3-D=]e>iarhk15Sb9MU0Joe33]S`WF^$L.,Sd2/$M,#l3Bqm*2q?:`:XYQq]kc'7(m[lg,4iUfc"bO6m_L*-'otYZh-f!(1hQ1)7Anqk8D,4a<1E<"OWb"#0L)=/s-nDX'Bdp,b8pYACL'*j(gLG;(]=OguN_Y]_qKkcURR(Es8n9@nk[<.?o##7%rTE\&.ES(s'aif/@:7D&3[/D-b\2T56N+,n@()Hol.P>,?d\]$.qE^dIi*ZLu]lH09$UF6D##bXJ[EC!+,9(:-AL8Tfp?8MM_nd0Db&;%(UpmLg<;9ZNtR!W5MIo;k;uYPpMp=2>PDqXhN[)t>^][3);5&St%I[ooj-b]&)$\\UEppB8D\:bJ"qrnPlE-,F1!2KS\2dTB432%c8V"o"oa'4%!hnB>BlnHOH0IBu\OYACDKf`>8D@j=R]$+V*7e;A%6+/e+(Wd![u?3bHtg#UWWEGAm>0urf3*8Xo-43,D1NUkgS9\^dJZneKq-Al6CRl1^l9So\pftDK;]e8UA5ns28D_s;(Tok,iJ73"SflD\.rr^Z2^ps~>endstream endobj 51 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2026 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2061 >> stream -Gb!;dD0)19&H8h>Z/_6qjKq6m]Euok1NFbq8X38;jCUGMLI#mbLj9B$f`(X$6\#aM$(PNe[;;UJp\*_:p=TZRi:/$;s%OtBI"$Mee@E!.BB\3KlR*#>/TnZ!uRR9Tm8?;pI;FD.M6`0;MQrRcpChlG7hR>q]qf!9^CN4Y5corMu"hi"qD]?ggA0\&@X9f8I&=ghD'aaPS8TQ-#%C^qiAS)L9OX4t`a:VK'>a`ZaY!'RLZ4,\F2?pPnUbSh'-U234gH560$BC[4.G?6N0bV"[SP:r9.[&9P=P9:C+c(oGVKi4Xa.1^Aum3$Jn;H@cDGL%Qt'a?HS\W)]g9M)bmbf5qYjT!F8uO/XC$6pOJ.L`G=a:)8!jej.IiAl8_7!\tiVe-!Tt-+bG8>e?(c,b2_%06(tN=@PtWQAa30][l76"q;OZ7>Ho:MP:Q25$4L#XJc`jfD1WBp:VhuB@m\':Zn.V4nPW=cDSE-]Om!^HSb>MOE*F]nY54It,0!L06U6]S>A`.84c].e;?D.fkKOrniX_66EmWSOu0&#Lb84Y<;Z0oI7JdY$_7Wc&O]1%3#j^YOE]%84;1n;;U&ImiB3$81?\h\7''_hHtTi4:#e$6Gs;ee&no(4Y+64N_J!A(N$f_uL[+)^+5ZXblHc'-BbAD(rNC=MZl^$9cB0N6_$IrHK'6`BI+!oYD2:hlVF,[TMAm"DbRU8m>_/Y@beoIG(^J;1;%%O63Ka#EId"hk4;rq=EIJ+g%$*+/*(ls<9i4M1"_)!q,A]?$fFU\AhO9fN.[T7X,K4MSrJfO/p=2V;?1*_)DZY/,aM5S?uD%kXH8L)W*/\nDYY9^5[E+C:`UDuWGbh8rWXU<:W-XLT`0Si#\LliqmT'0I!,5\J9BL\/b*b;5p[Kli[;l0.El!24-Z"P1.pU=%O`Up+u!Ya)n(.]54JW"DnXqJkJ($MjCPY[T8f-l@0XMh-2o$?l]+d'pG1HYWakBkX\e1O4ZWli\TG0/(Y^"u2$NR%sERObbHL:P&.9o9A9]>rQ"^(2>S/pKFn;";g[-m:[d[AqOU'G'>S4&l=*3Mat=$7rE?pgOf(dM4`WFH;-)41f3d2@m4hAd>K3S-#.(AoqV;ke.qT4<%WG]-RXbjQ9kOncG)Qrqgho&t9jpTZM7u^VeY#ikW$YF-Vnpa)He(AF"/Kk6YMj2XokkkfGE=Fc~>endstream +Gb!;dqer6!&H:L8`@+V7k?;@t*]B-a$.hpm='s6c4$?U,$=U9$\aVYqH2RE-`BZ*])fg/&l9+PkZh)i*q;qb[Gl/05s!n=^0Sf(m!!7`I)?bn\?p9=m]_/ZY,asn?.=IVN5aGE1(KCe)[=4PIFR96l&Ok3>(kL)oA+ec_KbfBd#n]U$L:Mq3A5Lq12>!;p2W,t<0(/kZhnVYZHo@,'n9l-h2m=F##:=jYqr\s]?XWkFVp7Jp,()RQ2uu5BtJOi^%rXYjBIYA@CB,V^SO!\Z;QbB$=!A>XuFDb\CWgUJa^;:eL^ftE`*Bj\6_tpZ')(_&33`Q+t#],s12Q?K##M9G6Wu)HV*5e)U^*gp=NPG2l%Vp$kWrD&69a]]!ndqg']t14_5Gu*`IoXNBf-$2KAe53*FmF=Fj^=e4L.J0kPjf:_sP(Q0a+lEofV#O`1Z2]Z.pmD]03>=O']TBO./Bl.9l&j;lt*1(6)E\mP`6^SF>L?Y@^1g2inF]j]SN31X^Ip<];?4.l)hjid1!H-XiYWQB!$a,V0NEOC:Mj@1o*4hlG-*U4;T3r`D+^\qYa1E4Rua/k4m"?aX4f3oEue8W4Y3^,+KXp6S-`#dup@'.9&io,2r4;a"Jdu2W/2sYZXOs*Qe9kUeJ(lTSB"dU6a2>45Q#;g=r!+U>U&eFI#mn8T)PFdHC?+`q9>1bkX;[@AL.N(`7b[LUF^X)B)k$Rb$)WbQBIrYT1V#hXu"SeGn&57*G*:3l^W4V/#T!CZAl!n.=1C0<]O])ro/7O!a[\DL%j@'@p6(LbuP@I%+INOr?.On8:W/eV(27]a3ep3jcU_N6CZGIQdsV0i];)Y][;QaFlh+43mhg2-C#lcR"c'AVmXL/&'*=16)%RmN<)OJbkd&o,5F(grIH_=lK2]!dSVoo`$df2";!ODU=*/<,p4pglJb&pLTI2iT1&(gY+V7=.38*aO`Em3:.eCH&$2eI[V=_9QdhEf6@Rg^_`tVne0&,*U2l*>f9,3F&Gu7#+59pEfIeif"FOZr;]4p"LKRGcnU8W)gORoZGooc:he2rPf,G_1^&n*=f#omhMI@X4i84dYT24W.R4*$A4W"lEQ$9[qcWU?&bc!k-PO<5nJV2DmhD>!FWe6m:;K&XMc((^8r[\e.cj=Q7VV+*cpk`SMNL!tD?>[>J<7!BU>Pm`UN0Y"m1bLQHaG)`%Yl$CO5uC7';$?q$3o]D!0>anGgh=*'s.0N>]+MFj+tfFpsLJ,H$,kqscV_pV&T6D&(3G4,0,d;XO)>)P3*[Jd1]BCk@YH`mruhbWn'BQ/<@m-22$8`+U1EroIF:*$FW?.joqX^93&0_-Kg?ADd#*QkCnj*45?VB*[U3c!JsXHhTl4EFJ_oC=ep`-6L/!8ZlnQ~>endstream endobj xref 0 52 @@ -344,13 +344,13 @@ xref 0000006519 00000 n 0000006608 00000 n 0000007648 00000 n -0000011439 00000 n -0000015146 00000 n -0000017934 00000 n +0000011437 00000 n +0000015060 00000 n +0000017917 00000 n trailer << /ID -[<6b48f88cd14830c5c0a6d8e767dbabe7><6b48f88cd14830c5c0a6d8e767dbabe7>] +[] % ReportLab generated PDF document -- digest (opensource) /Info 29 0 R @@ -358,5 +358,5 @@ trailer /Size 52 >> startxref -20052 +20070 %%EOF diff --git a/docs/20260608_BE_SERVICES_and_infra.md b/docs/20260608_BE_SERVICES_and_infra.md index 0db6f21..5e0a460 100644 --- a/docs/20260608_BE_SERVICES_and_infra.md +++ b/docs/20260608_BE_SERVICES_and_infra.md @@ -10,6 +10,8 @@ _Last validated: 2026-06-08. Companion to [INFRA.md](INFRA.md), [REMOTE_ACCESS_I --- +--- + ## Table of contents diff --git a/docs/20260608_BE_SERVICES_and_infra.pdf b/docs/20260608_BE_SERVICES_and_infra.pdf index ccc981a..3c17490 100644 --- a/docs/20260608_BE_SERVICES_and_infra.pdf +++ b/docs/20260608_BE_SERVICES_and_infra.pdf @@ -143,7 +143,7 @@ endobj endobj 25 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (BE services & infrastructure \204 validation map) /Trapped /False >> endobj @@ -227,24 +227,24 @@ Gatm9>u03/'Rf.Ggo%,f_R5qQhHJLu6\quo@kX)sPIPI!@V<,J`4qq.'Xf2&!C`+`[D)>p553iZ$"3Xl endobj 41 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3209 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3115 >> stream -Gb!#^HZRq"'*$j]!i&M'e2F0(^6Q8&7^?UGXWNFre2LmpGUO04(fR5&;Kd*0%t=sbHq>Re0[AHFM+)B7?"!EIh$(:k@JH#\mp_!tE/&[O";)Nr*YD6q(!SAYBQj%"&_ZkW2+]_aX1rAkA9;rM)a+U):.E^s_o:1$&oL?,U"O'8qjG_*,CD"SY"8gu%6!gH%^KU`Qo&p#&lpis^4Tib1<*pS#ImAfr)Hc0+\Y8/bgb'&PN2@H9Z+31u=]Yd,HLn(7uKUQf7k\u]EhdZDa,+-@FFkgB'1(J?97d,cO2tNr_=te9W(X^$n;2NFZ=#\%/:40NpVO+i>gY4g,d(lsihm&4RErth/XpZ-R+:dAB$&5okFr%DDGehI:C_\!fsCWE1U:p[sZ3o6@9>3IXR)D?6lH]M1M(gl*A`ZN4@E)Anb"e].(JRb5\;%HAc?9/\#k]V<%f6Me]TIZmrM@S,"LV$:u/o)pa8Tcn'<5-0O;u5?-Tqe@mC)'kP^\l6c:&U*5e8)'&bb2J#8VGM&q-NQL)6N@c47=;Tqm)]>*)dRW4FmWYW0rHfj;qr@/"_I,fH%DaU52(MjgsaGF)8S94A*X0&>Jj*6b^NHL5Bo%WS9mDS2CLc2q8.oWXKVme]]T8Slrjc?X(Uq<2Z8g5>@56WmehD?Q94hnN%#ilaKq*aF\&_+Ki105GlZL<4l5%J:B#W\->b,]k).G064[fen(FpY?iY'1J/ljC>bhFL'ZuG&Vm0dp^cKS0$@S*co"V'8_@dmK$3Y%="NX+@"DFV782LYVBI*eU.1$!AUo]\Q6,@kV.Rq]%>OohG9r:Ms8_4pT_CE@><,heZ>;=@'KA^'\8qRrqNq^D<9CN\/s2prq/k*ONfP,E/D)gRnR5=*:8Y(^cS3+c>Zo6#i;)m\h(Zu4=AM28?je2YP2F8QLWFIA3h`b5OcV>RR)-,8K2S?M%pnnE\eS+=TofEOjlHDo.&TX03JPA\Q>4s_]*_eQb2Z->`pX1TX0sIIXUVo&+Lob9rbF3p%"=NjM5[7OnrLW'E-7!&bQXoK57`g9^0F#SH,$EaD`0g3GaKb3D@B1>f+>tY@2XA+[h\V48UR"ngY=-Rm.h^9A.[F@@s''V9tP103g9>E[HdR?@$^:d.Vhg86LIZ*4C"u`Y6MM).][=IoW\Abi[mthSA9bn0(MBF0o)^^1D@&>\i+4-95@q`N?Ps.gtZ8lXdu=\pH3P+GcA*1'FZHZM/>!_/he-BB=M^!]9kqb?$o8=FS!=QUS.G[a]HbPb#XOY4S2oaLiY0"dU$XoZ#,1h_@?\fnSIZg"896]=;VCg#f-U)$orP\sD4]6FHm64BqE?EGKG3SXkH=!Q23A>s@I@>#8"AQP;N%#sd,q*JkgRLZPD]fn"-]3:kK,$6c^_s1NTrH0\YTc.gVV0!?QAq=/*QF^%l4ZH1B_[!W=8pI)./'UL8$*#(=-7?&TJD$J,u5(]Y"+@OKSM;,&=H6BYo<'XYGmr77$uP1F,B\iIL\3%p\F9K*QD9\*(Hc*WMSgoKo)J)h:3d4u&H6#:ITu=&.:;s"4qofH175gfb[U4-um(Af#+(hRBh%bOl[trhdMejgGs@nclOhL#`2@r!/[/*7o(QgRK4TMuUN]@f[R3T8S+:K8VN\MXi;W;%AZ#Kk7oJ]np^t^R5PX@VL*/Xl!pUp;SZtJ/@#4,HJ9ge:Xkqr_Ck;dc[k*V;_t'd`$4@Drjm\c9'C77M,dsY^&u(P.3@*@_6#K<_E"R?M+4Ak1U9r(>B7HFm6*#L%"lSq]G0YXNN=U/R=L/t9qlGHc]8WR7+pgHf&L>p=Rh''PY>2I[<\pQGnu!=pNAS+2qQL:kh&9op:C2EHNqL>J-TKCM^2^?pc;SP@-=qr[?&it?nS4ef2(Rpq3)82GH1N)anS"req5O)S.TVWG+_j5=FPko-),@cbWH_`=gf1l)=$0F`afQ6'o8OL;aL:Y1f)QOoV!Jj[Z3'B/FXlfrm))X3/rJWqVlhmI/)RLZBi>;.hZlp6B3fMf)WWQ3LONZ3DQXXBo\1jh=9VBl^5+Yi78N`MlDgc<&J`hpXFdM2<,)RXZk2fM>EkPF:-fNK1=>M8.Wg3^C2)CCm._oNaB9ac/%Uk94>&6Z)_!qL/ji//"W:G[:]~>endstream +Gb!#^HZ.Y0%f\bcK(._!mqsArkcNif%sHs.g!.FBhdq]dq:]=,aA>fbemU%8tO.m$5tO6k4WaZ*=tb=_1i%A:L,A<_n4;aPi:HP$10\X@29'NOV@/%Fo4\ZhOiF[f\k!A4&=q\(F_TsKLn[n@cR(7rq*qriI$;r:fILt/L'IhGi-%K!g@`;$N):^"*foMK,Gkr1'MD<:Tr.kp]oZUW_u4!(ilRpIVph=c'7^i?2k:ccAN?*%]mS+b?'gO%$8G9#^pXYq@4W_js6M<>EdPE*TTPNWQkVGWGWWLS,:Lph<5Qfe<%ugBK(+ug?/S%_;tR&)`opp5$m)i?CqPXMHQZc^h!$(^(WrY"jAZ@Z.N#ceiEmUeD^&l\%aumVUNoqk+NeISZ%kl-0d'&[)C1nj3D#U@23[9C%gUo5P$>i:]-B()l2B<#g)9*T^kXV"EX:W9CV9c$;@[l4uUX"I_;b3Ef:b67/8Cdp^;HdS!APmjPot\%b4#l>p>TF(JT#cK.PPo`)Fs9;#G/9>\,7p1%qm*;U.^GY/KO@*nlM?^4AC$V&c6]m>l1mY5!+bDYlB19X%El4NNsteM-C2fPjq):j#VEdaZrfm#3a8Yn,J)*kFFfVMZj#/D,'$l?%7Ba8YJD:[P#t78>^4%)Qmk"50'#"oS(nuoN2jM**XIX&csNVP=db_`g'$CZS&$2'iD+PE\"H'bmC?Y%$J)YpI.L\B%&PQjPjdgfB7T=]WFD=>@11JDaUUie.Uf>lTMsQLHCos&Cao4U6GXYgX0?ZP$5=Qi]\=.R=eSpUA\1ZDEi+.$V&?eCA`f)Ek)/[2SAXA.12Qi(QkI5=W^gqFYZM-T]=T2G?]+%K..CB5+/T(8)L4;V8G:0cl/ZYIo&#oB\:!mb-j]h&MXHj16?;T:C2^CW?\3A1L*pQ+q9*A<,'pF8aE^6c^og+ti!r-g(77$agrt_S"P[AkA.m>GL'Rd82=8)G`M&KmgNmPpK$4]Pu!>W^SYiHJ'oQ]C395d&I*!i:+07j0?M=)&A^b@!1*[L!PH!Hj?:Ej=$YirUJXc^Ht6YMEMb=BAZZ)g8/8+E5S!fUC.dFk?-[jR/<90u=hc6a6X6O-s0-:oGh55dIM,bj4:Q#?47SmM$aBdf&\U.O^hu/R6a<2X.`4'ohBr?q"0]033PG`#>mIc,T<$F6$)M)+EnR,f2Si6GTD;*P!7HBfZ^Xa#Sl67IO`"Hb@3g-)\o`==I!b!9$_Gd7>S0^jrLb#d_oWIm>qZk0_?/c7/?hL%4N/]/+E#o,_8ZG1]&X.:IGab4`pPs@%p'`'(DcK\>d![7>?4umFm#Bfq!d:Dn?gbk`71AjrqYP7YJ6h14r7q16#_haXuRMT!--"[;7(`6MkNp`'fLo/d-eif$*.pc8?lK:X<9MJ>olX&uSocV:sO\T=&S3H:!\4_e"HLCol`O'!mqFm&5!eT>-pO+_:->2*j:psjG7mE>Yc#iGVu0pd#CTdBuqe#StohmQJ@U7jXehO\*1?LAfpDV=_#hstiI;f^Tq&pCZZ2S]i4^dT[+REe=8//p5pJT_`4=17Q]iKCX)TrK->>V[cmRL[Vo.Ge:`nZimr_YcE5fa'Y/$1Vnmr?$Y%CsROThoP5d)_\[e'!f72-,rb+c0WMsgk:Gm)X$dR$M_nPqjH8ki7O+fp>*4^$Bt%/P:k/sMD-aPf'Hk#c*>A;cC5Jh4GITsHg8M[8eeL>E#-b04ENMZNfn:k+(!_+Y2'`M^R)h*,F!(mY\*P89$pRe#A*XdR_(-;5"#-8#rZjf?Fbd,RQ1[3/X*DAgeb8U=&c8Q6n7q:=>M2,b6B7*CZZn;Ep&-6F-9Rl'l2qW\RIYObXo/kMj@n9W[q&hdOQ#;DS)'AdI$8B<6Q;88#WC4033+'BD]B8b(c4r)iU:G$G)rN.E7Pj4]s#)VcS3&jF?U%O2C~>endstream endobj 42 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3190 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3154 >> stream -Gb!SnD0+Gi')q<+Z.#2fW/XL`i4JHH)*4;6)oXu'5M,D$O32KIP@?ehSYl*1l.o6@/;fUIoT2B`1JVkcdZ3`=qit:@?89Hr`5T)?lDZNW@de`7kGL#kGDsXEX'G2:E"p"f@FcilD>5oaW+XAobA0Um?.m.Kuo4g3aVf+f3_3_E/ZS^d%&JM5hVS-GUlE%4Jdcj-0Z;I9`&[/?+Fm84"(LVpMPVF]`N,GE!?s*0$4/%`A9Ph"A\S+FQlW\R=0?^WkTJH&LHEZbf$JrXZ%Pj^B:\;o%EMRVc;U$4@9-H-F4$-Mm9:@JOkt@?SJ=KZ)Ln,=]T^rE5D!5m8qbPDDH#\XD1Rca#^Y2@QcLn8)TUu:$!l9j=`b.="`qU>i/_]FKNo#Y'42'#`B%,=Rg@B5Ld,R)H-Z=OUR"B*N%(BBtQcRU]4@XGR:8)K)S]@Vi'#SO14=LIeeBT*bCE2\2U\2SQWm!koFejbpCoT.eX$n\oF-OlQZ^4]67,V"k)rf:*NL^GOO^#1[PGIL0Ma;u98/IkGIZZS:2Kd_1N[otL+EqeV9?:`fO>ihno(W=SSO#T%cPDHFBXfFDK>_7C"jVlt[o-6SqTPWe#gNqMc'7`/.q"5MiaIL(`K*C7l6QG$kE=A-j(X6'-Ii_<`:nCCl(M3.iAkDOb^%K/cKh:Y?:mo%9P4]rbZGJtbAd_oK'V/uR9i.Ac,7>Pcf:)R)OD'tCHVAnc?(0BVI7AAaFF*/O2G(is't"dS(^(Ao<4':f,)2O"B3p1dH9,UHFQ`$i:"D&?R!!In,S[M5^Fp`@b'5L$8H.O<<9ft9rgML&;L\8-NW(_-/7jS'OQI!uea9_7RRM%1BF!`OPu4$/-l^a+;bk<[0$l@^][j.qf^XGFo:L1LCMc1"3^CINXL(=mINZ-7*]]2Wm>Tc`^pP,=uNFS>S(pcS"bR93e[B\)1aX;.7_DN&\hkE+H5GKGY`P,%7[dEckO4,gA*n`;\a`i=ejpAjO&Ji0QfkDV'cP$P;=0L2T!;31(!DHUCF;m5=f/$/d0Ju'-Zfr6JKH0s=59k2kFmc`L8357sSfpin%4A&<,]R]I,$]3OJ'K8YRYcE]cP@*cO!1.";.7h0X8odfntOk(T9,tOVC"(6l,@UIS<8mf3mYcmr%(_Eg2.$p5\$B]Ck@eaJ7E$Fa7A'W9bg/4P#:nQ9eg_'mI?DlULuUh6bq,lkG_5V6M_j=?)d/QQY$JlPo>)L9&;i/!/F.`kD@Gi3JP'Rn0m5g)G>ajBFl[.u:d3Nu\)3N:tP[S=t87#,IfX_,2i"M.GBoRqU;h)Y\hF_L/m&jgAC>4T#c[,t5`hBT/Z[.sZ<<'#3k7V05-ieU)F;La2YULQ6AeLAn'Wo+oedb]l\+EW))ntehGm`h_%Kq^XpqC_,lFMF;WD-XDo=f"hZL"ao#e8$??mt0]mhX?RmEfJu9LSA-#l1%&[S5eS1JcO1_&'1uM@SS=lug#S(`u3t!;E"P%gklrHL(\LU$+ErWLN.*hNO.)4Fj0kpqslGhXk%Y4l#*@;OY0L4qUY6Bd$?rK2;Rg5T(`%7"jm47![d3pjh0:`m_NZ9i0DBLr:D[+mcoi)K$?::1I"!Jhbkoi3?"`kfk_8Tg(O%2p7m^<&RV'GjSCZAeW;r1mGJ))13r#;9ZetN>t`e>#4_)!BtQ'XZZ4OR-;G_?l>P,$*;*(b!e5i6Q=^E((L./g&QY6-aaF(`#h6I,CIH%Y>:0,`Nk*&7mG!-4RNEo.u0(K#N=3YS?UG15VhXA5O7u+;=/FRVX/A?h/i5rr>s.VQ0~>endstream +Gb!;fD/\/g')nJ01"aAFhJFHpe9c.9+DI;3(2_Z=]6dld(pqN*g<,RFa\D^%D^\bqlq!H'[KgVI-`/kliG_7BcO<6-`ugKEp/_7G;]+@(+;C^I5YTFUkm)Gp4aT:9>>!Z#FG!]R=;HAU9Y;sLPs=9e/4(Q0"Olou8uN18P_.h4s6H*8ft-44E;4X('@PFdUutX?Gb]NK\=,i,]>+9[*MlLU?c18Kr/`"rf?L4o.JQOO7.:Pdha/0U)3:4f,OO(2DoS!_4.*?2$fYd<40SGi:1N^^AsiD]0%3CihHS1?AB?kn:%&f*r^aP,=Y'Ps\(u=YN.tE/hnbAKM#/&8C_Og);6uM]q"ae\F/`YQ":kHlIll+1GfjNb%]^cnL+pFO._a$jC7qHsrTh&+N"ksW(a^aH3%?7;ZLpB&:CYg%`&2QgOgF.n2+\ghYb7Ld"#XrJ:14,_XTmPE57ai,>*?@4@]lAmit+`7XId6"1s\-::RlJ)Z0hpm['2:0a7iEA"Uo9&[%f4ZA_Q?I8rE!R%8tQRV&83X@Q\q0.d%8\"%[^+@ShTe_2#'e+N*.2Th52BiHN%Y=Ft%K9DEcXpjF\o/Bdft_usjpG->#;$mKl"WdL(a$',j,^uq37E;F/LQR8D\"gE,sA"WOV=se^bmHaj(J2-eDn.jUkCfEC*#uELl^6*Gn8JBX("eR,##Q!"d9/RZ4^!Z8V9f94&BRJH*rJ=c2U'"\-^f>lAAHEG@EK,g(!P"I=c&u:!lX1(;XiTqp%T=G>(!gi+V!iF;VAi-0=2Rt;_=F@4*:[W.2];GIF?5l_^[:`3s*N*FUN[sE70)XA#$WZ^-F!I3$^NF(rT'#8's],u,+EY>.E_4DHNiH1$K6VFa`:GD=qXH."Ff(iR_#YI3jBW0drK7nd+^_'Hkg96R.'(8ABN"^*'t:DW&_?T,g0T+Q/'nk0Rb)7Pp?jWr`7g``n_cl,lCQEh/g>(lFhJ$I"u=Q%W2#+/VB!T5^*\T:8?LnV!!Qke)`\],[V.3I=bZe4eS9T0EdN4n!+q=ihudW8f/]l(m%>-T;fb'^2A6Y%#^U++^K;=\0dO/%1R>.),Yca/2-MYM)k"m"X$Q]8ZW("9-ZNDB,gCg[G[h*kpSmqoGSY)hT/PfsKbBt=`M`aYAX5$oqL\ds`I^Yf]$GN,t\qr39N$02Lh=Ib'kE#lBKP1'++Du9(/LrE"br&-2(g1sep-]QSEV.jR"Q3DOT4Jk57V1Cq6,KJD/0)MbeGe0gg9sY!DHcP7b`9Fo&_E)K>%.3IuW@r_#mC%JFlkJ`2\$6-">(8Wrs2]GtMkGcaS4N+!S57W\n]=/3"D#)]W;M9N[1fo[#t"Ger@u_J_u$h-3nmn5O^+EnJg2.[jU(_YPldPn=(papa=<3C99u-!?`p&s"@/3*p)t!+hM0On_rihnFeE*2QbL2ptu)3m>rH%sggBkWW=cIQbEhHX*FZQo],#&Mbj?Vkb7VhYm`0E;ILVcocb"+7IlVP%0+Pj;o=jn\s3.7k4mMUV_GKZ%RUK;?VNhR1,#m@,%^$lWaEH$]F0_!2p6EY7"F]6%ealB(l>1ERW!@8p*u5Mt]difJAd:/:_1mrsP-5Mi!E1hSnX>K8g9[BJ2XO5Y$m?nijd3RXV(HUV_H'WS!j$6P&jqq>DrO%]]Cjr0+G*!u*^FQGt9rYeij#RIINo>^P$7>rgRQ##Wg[9gJ?bUr84o=Ghqq2fJe=\>jC2rIS$o:N]U^$gnh];r8sf-9"#O'6+2r_9m;0hqluii!N.ZkX&TK-W`(+:L4Brs/74D^jl&q^5q%f?28E^"Y+d95l=aBYehV^(SorZ075673'KQbraM.cNP_b0Hu=TC7eq?Eh6oie%RZf0`pH5LAf:A2$6?+<.Yc@bl-NGO7s_%(CqgioH%W%a1b-*B=\^Bk1@bKO\NYG,_H=rIXuB'/4gc.6p7%>j%'_U=j[p/.$cJ(-5$_][T&*=Q-Zq]1/PC^=d!oL.Og1/a%nsas%V+$$7`@#rj'"`B4nh-7c>n@HacRUEi+rouP/SRY\"A+;GoEs#Z+nk:4A@e%]f-LoP.f>a6\!CTKi2bu8SjULXVuFhE$P6Btl0*HgqdM<$rH:'peo&Bihb,j^oh=";*cAjN&nMq/Sig.aO4?gEP@>)Ok6=VX"Q>HeG-qWsJ18bH$QZJ:JV#5,-S$V0Z$Z1/+qCY+%cS'7W-.foO@_06AW#OQ,%N!eE\*AfGl4h3+Q#_5%3d=qWLNNi?`h93*das3g>O\j("C:!=l\GA7X%RE_;i%Vg[*O=Cco[h_3ml2jf!=eeCq*p\!q0@aR]dbHh]AT$Cl3Rj&&(Z7(aM3f17?,#/7f*,SZ:I)m@;)C@_oXX\t@OLL8HNXa^_do$M3NOlYLStSM.^:c;Hmf%cH_S]4ZGJ1(NQ@OAbLB9#;"?-_H-OnRr1c^h>HoN^j$dPm"[JgVMJ@OJtI^^[F[E.3#96U%7[:jUi21O'1kS4Wn2to[#.\'(ZcGiF=UO0Xmj4&?e7f;_UnCTYSXn^aPb(Z6D4.UNF@$YV?W.6,AYPJ5J?.76tem7[[Kb*`C-JdZig7E),*ETTB5_=mR_(T+06E?VA,X8j<"tBVJt$9>54nC+@ng\ha=QmLOjd@r@E1b]"'+D;\A[Y""2.7lUq5#JrYi:4OODAK;#gM`)uXM"!7I5@B.!\5NU\Zf1_,KH2GCNC-=IaE(G$I^UErQ@u^oi8jKW+-OFW2XJ,,b7!pO9`R6cL&VI)MMU_O81m7>[H"V6-RZE]I6/\dfdB\MKPm^>9W3r2S:O'of.EiUJuY4jW(a\+SA_fTNscM1:&G8O4*6+R^7\*AF"#%LN*=AF956&%@8m1M>1_JdkfUn1>7k/o.4EQ./,KB"FT67?D2Q$Mj4Kp1hNSaXcpdmjPUF'sTJ(&EmWGdPoW9tl+F"nlYDX]00G6RZ2IQ[AZn'abPuL_#l+&_I#MU1+=0EQ+"8;OQ6gWKen5E8"cikp6eKU^!H:4lrap*:+*5oP6+=&J`?#LXs-rR\L9aV4rKLLf\Z-jpt;FPTaX>0mlj17`"LgqQ0?/]W!(m6+M:K4h?.[-?g:PO(W6jSK#hJ2Hei6$`1S7MGis>XM@I/c&\ir:'*8g:f8Fh5gX?[Qs.4B-6sjLXj7`Sab^gYM\V&RI8T@jTU:TAW\Ff@-:?mQ`ZZXfk1.MOdbWH:jZO+^#@#^7=B#')1i/aIg+@?iOlW>NbijY>MK\j`r:FSbCj//md\W8k\dRl(m(eKQN=1iWgd$,r#;j>*H_-[iY^IWbIl>bfFAok.+0M'<(.Nb:m7h:?.67E,dbJCd.t!]9q1Z#iYh%gD\3fhM*!d=2#*BU4P(La9;&IBALoU:VG6"rIoHu(u(/hcFH/ZW4gqPiCtD_o>TA_011c8Ykg"7rmSL8K`H7mTQ)Y$]CnFX'&7sD?d/:.eUqYSVqVq=57(c+1K^\8hN^V1NPlSF@36&G*ZcT/>M4^B"hQV=C^IeWlruVgL:#+gi9tIj^k<]/7Ohfk.g7?jHo'RL0_!r9Od,E/,Q#YQR'.lhq/oeq#iNTP`':g@Y(9.SfCi:?s+O!QqW3(=rWQBFBS&adO+@C:2E0s^+2=XW#>YYOgHu0H=M]dgeagF!XA=8%S?VpHFnlendstream +Gau0FHW/Zi'*"S"d7*?#a9H1g+5,IL))-^X!O$>uFU)!NYr&nSaHBRKo@Vb-Im&r@91$'4Fq95M\7bXuO'hWP!YJd;nntW2:++E#O?et;1'^Ac<1$q.?ukbWJ[F[@C4^>LjM=SoAh!=Pk9*q:8:W]'[0qrB\`ebDS"`S<-H)Fefi6n8nje/=F**+UZM4&")!e7DlhSc:e78mS4??LVJY8JK)'1m<=jpg\Z(Z#_tP]J=[on)HL0;1m/S=W@T0kf7n59b]?I[KA1=5/'r(()M?U0*cPmea`*qGH;Ff8$/RW4P'dEVV5Ito0-OXFJ3(\O?T`_HSj]\FV&q1OBf2ell.pJD(-_;4pk2`Vh/9itZLDq)Nd*0&"2dEpQmd6`hr\#8fqiFW/VjcKB8]IeO@IG]k_(L7:o-_In`,q5?/S-UL7r]1Gi(7uj&l0p@ohGQRS-f'$;aomZL6JsIJ;/V/!<;&5G&W)-rb>6,r)4)]skB)[4j!6PIoIMS`\j[j3Jo!s^?So_3\g`GmUk*:F3W5!@5r<.A;a=/1>r54d$r+00M(^BO&!LScC^IBmlYn$s^mE);aHOBE5,)'/7n=Js;#T1.ZLgW+VXar*L=jRK1C@F7^fGgtX_ptg&[hJt?'5:U:3TN`.TB.F"XHZ3K2TIjam#t:iF!rfH0A.qmbC>Z9c$2"_t+)X@lskECaX!eZiit>=nDpLVs0VtK=OJf'a[;]r&i["/^%rR="DEV_]@nknE94+^i_LT%BfU.Sdn8Chld7ARXLRFHS*7[:1g8K16:Jgm+'3L4LR=Z\Q?B^=+;LI$3=(@0L`%2@]+)OQXP?kVtOZp.7IM`A5+`O9>@Yk"*G?W:M(YjRf2-BoKVU?9\<\OQY\`(luBNYG7>o+>oq/QOqKESk)S?bThJ(*%ui!_)4sp"jLB#U:i\e.19A0]1omY\S!1L"_0E[8nO7DR8?(9^RFq46HqrY&6Qa,S[MtAD,V40q1`OJ<-,Bb'gF13DXP*bY]*H-NHZ#n@1lref9=dBC02JF`T;&UR%pr@JHF5aD+f-2b>PaE**NW&8ds/NQt"WZPEdmh57\H"MZ3eO'"q,nV^a:qWm)eWR5@5Cl0[+55LLmS>R7ajRg+Op>F'UdDKcQmC2'.j(sV^p'.8'\+iAEkPhWBiG1.-CU^S`-DURbG^)<=9YV$3ZT&XGi8%CSA3-c3&I![DQL\uo;5Sh+r7moN%/Q=n%&Oi9_;IP1MF%jB>PS%:EqL7HqgKZTZCu"G<'Nm>#FK0fjgi9DMhlZ-K5j3jMZg+.jo?mAR06(j-`]3II9Y^4`4[(t9--V<\W;u'`'"-b*0sYGa?!Wo*!#*T4TC"1`pc[dNDB@`a$:Ulac3&<=FoY\WVp;dlC1XWR_Y?;p\Tc$*jK_O_g@uB-Y3?!\Pd^3.[W:bK8n"8$Qu&1o?b%'F2J1kdjKb8Mrn%dOf%>#8K&`:qPQ+Ek8F8Ug8R#$gPdJm)TXrh$I)ISh$g=&Ccf5>>et:MhASgdCRo!7+W1YRZcmg8jS<;>[&"Xi;7^SDc?"m*[fq%),47r"^TX8_KiYO_VeFSdQT>8NNTh3,;*:-dHbmDVi4*+Y"b>"QHdFW&g`g&RsD/rnKIUhi6gl108P%jN.J\;0mVWB)RRm4m\Z-b$Z%AU^QAQp[1Q-9HH?1sH8AJih*k:W'I^aQ-ul6[g0@`m\E`7T*ffjQBU>0/01Of4?A5=*LEp#JPC;c(`Xc7!?UML()2Q48a4^J6JUV>5)bqH%HrO3uEFT/JG#;dUC*]Tj4H[m+O[;$bRaC;F/3tlO:$90UYAFUe'kQ8Eia?T!,0.Ja_J"2HFJcEHSuW\!7B<7&ReNl^77l38Rr*cM*^o]I-#/g:Og`eIY^-;W#>NijC5eIkqcpg>Ja3T70!d\XiA^6dU^5V.@,M"++c5YiXE8[PHTX.fkcma^\Q&r')IMpK^9&1so7P7h;eDPkt-%s^@[@^=q&-GO23Sd%YidBZlAOfS1M$9M*NTm_]!Nq(h&)IH3ho;hk%o*jhh`Ot&[+L[B:WM'1SDTHfhmEL_B.R4P5VN@E2M`p1l/38d=?Ua.8Yr-qES;/=:Yh/eE(@&\6&H*_KYkFW9Kebb!h\*$&d<0N3>-T^!l77#4or:0jm''g"l%7P@Y:dh&OiR^=&R^qQa2QlVGW=>S`6W$cB37=XNtS/Krs-JkRhY[COY/*T\[[/D8`9>0c,"0FH+.+l$iZ5k&%3#+e?7O9Q"X#E=,C/D%,6e(.a\DhAgqLLc0""?!l>!>>><(H8PSA@;EW5C>93!MKIpJ,eML#mEB.fFoUSR,A=8$X=n9iX5r)/#hK7uZo\p%hIX-$,]$K;H@L#()[T>4VV&EWc[%L*m4pP6H%5q!Io'<\XQ)f\p=tbRCr/CE]b+URT$Og9i*YI$=cM468+(.F+<1K.Br\b.k>'YjTrrIei[aG~>endstream endobj xref 0 44 @@ -290,12 +290,12 @@ xref 0000005413 00000 n 0000005495 00000 n 0000006408 00000 n -0000009709 00000 n -0000012991 00000 n +0000009615 00000 n +0000012861 00000 n trailer << /ID -[<31dd9cd626d11867251ac11c3609bcd6><31dd9cd626d11867251ac11c3609bcd6>] +[<3bf65467cdad44e7028521395fdf87a2><3bf65467cdad44e7028521395fdf87a2>] % ReportLab generated PDF document -- digest (opensource) /Info 25 0 R @@ -303,5 +303,5 @@ trailer /Size 44 >> startxref -16200 +16183 %%EOF diff --git a/docs/20260608_STREAM_DUMP_DEBUG.md b/docs/20260608_STREAM_DUMP_DEBUG.md index 73ba49e..29bcc76 100644 --- a/docs/20260608_STREAM_DUMP_DEBUG.md +++ b/docs/20260608_STREAM_DUMP_DEBUG.md @@ -10,6 +10,8 @@ _Emergency debug — not an alpha release blocker. Enables 6.5 (audio lag) and 6 --- +--- + ## Table of contents diff --git a/docs/20260608_STREAM_DUMP_DEBUG.pdf b/docs/20260608_STREAM_DUMP_DEBUG.pdf index c977f53..5aa54c8 100644 --- a/docs/20260608_STREAM_DUMP_DEBUG.pdf +++ b/docs/20260608_STREAM_DUMP_DEBUG.pdf @@ -2,7 +2,7 @@ % ReportLab Generated PDF document (opensource) 1 0 obj << -/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 14 0 R /F5 15 0 R +/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 14 0 R /F5 16 0 R >> endobj 2 0 obj @@ -17,32 +17,32 @@ endobj endobj 4 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 716.2874 66.58104 727.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 716.2874 66.58104 727.2874 ] /Subtype /Link /Type /Annot >> endobj 5 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 705.2874 119.949 716.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 705.2874 119.949 716.2874 ] /Subtype /Link /Type /Annot >> endobj 6 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 694.2874 97.25304 705.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 694.2874 97.25304 705.2874 ] /Subtype /Link /Type /Annot >> endobj 7 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 683.2874 110.597 694.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 683.2874 110.597 694.2874 ] /Subtype /Link /Type /Annot >> endobj 8 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 672.2874 146.581 683.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 672.2874 146.581 683.2874 ] /Subtype /Link /Type /Annot >> endobj 9 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 661.2874 147.061 672.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 661.2874 147.061 672.2874 ] /Subtype /Link /Type /Annot >> endobj 10 0 obj @@ -77,11 +77,6 @@ endobj endobj 15 0 obj << -/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font ->> -endobj -16 0 obj -<< /Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -90,6 +85,11 @@ endobj /Type /Page >> endobj +16 0 obj +<< +/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font +>> +endobj 17 0 obj << /Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources << @@ -107,7 +107,7 @@ endobj endobj 19 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Stream dump \204 developer debug recording \(FR 0.1\)) /Trapped /False >> endobj @@ -118,32 +118,32 @@ endobj endobj 21 0 obj << -/Dest [ 16 0 R /Fit ] /Next 22 0 R /Parent 20 0 R /Title (Goals) +/Dest [ 15 0 R /Fit ] /Next 22 0 R /Parent 20 0 R /Title (Goals) >> endobj 22 0 obj << -/Dest [ 16 0 R /Fit ] /Next 23 0 R /Parent 20 0 R /Prev 21 0 R /Title (Modes 0.1.1 vs 0.1.2) +/Dest [ 15 0 R /Fit ] /Next 23 0 R /Parent 20 0 R /Prev 21 0 R /Title (Modes 0.1.1 vs 0.1.2) >> endobj 23 0 obj << -/Dest [ 16 0 R /Fit ] /Next 24 0 R /Parent 20 0 R /Prev 22 0 R /Title (Archive format) +/Dest [ 15 0 R /Fit ] /Next 24 0 R /Parent 20 0 R /Prev 22 0 R /Title (Archive format) >> endobj 24 0 obj << -/Dest [ 16 0 R /Fit ] /Next 25 0 R /Parent 20 0 R /Prev 23 0 R /Title (meta.json schema) +/Dest [ 15 0 R /Fit ] /Next 25 0 R /Parent 20 0 R /Prev 23 0 R /Title (meta.json schema) >> endobj 25 0 obj << -/Dest [ 16 0 R /Fit ] /Next 26 0 R /Parent 20 0 R /Prev 24 0 R /Title (Wire frame format \(raw files\)) +/Dest [ 15 0 R /Fit ] /Next 26 0 R /Parent 20 0 R /Prev 24 0 R /Title (Wire frame format \(raw files\)) >> endobj 26 0 obj << -/Dest [ 16 0 R /Fit ] /Next 27 0 R /Parent 20 0 R /Prev 25 0 R /Title (Android implementation plan) +/Dest [ 15 0 R /Fit ] /Next 27 0 R /Parent 20 0 R /Prev 25 0 R /Title (Android implementation plan) >> endobj 27 0 obj @@ -158,7 +158,7 @@ endobj endobj 29 0 obj << -/Count 3 /Kids [ 13 0 R 16 0 R 17 0 R ] /Type /Pages +/Count 3 /Kids [ 13 0 R 15 0 R 17 0 R ] /Type /Pages >> endobj 30 0 obj @@ -170,17 +170,17 @@ Gatn$>Aoub'Z],&.F)EaBs)774pQV>JSH0M6p'n'6;j%Zt0uX";\`LJ*..@MM!e4 endobj 31 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3281 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3186 >> stream -Gb"/)l]9dY'*"Q<@_Nhdl0W4S]kfPc*&cJEP?o#IGMObZFWo*ED(F#7Pe7t0d/UdHac^4<&'>4HE59F`*1'st"[9>Nq1M[R,hr"oLH?G+4#4T*aHD]7t?5?2%,r$0G#&Yf2ZT/L[9;amh,3EiaiXLVU$oihm&@dRq0iG5rj;9kp&gO'd1^O5eX1f^k]9:\+&+(jtZSCtgW+!0:bhqpRHTn`[f'3-22.l.o72'udD*<_h*:K5b:@+f3Ce*%sZP_lD8]*WSS,%tYF&>:(<.odgclalmEVEl[TV5BuO/Mj%QSeuu7%Bpt=#s9n#jrWlkYW'u6H;048TmYHK%shIH0b;]k1E*.KD7LajF,+fms+u;"dgT-?VLBMYLSZQm(l+C&e*Ig\UW\aT6_%[H:':.%N:Fk[).un8RQ=(rg81qf>]#a2fGTa`XipDjSmAJ.O37oSYh\4SmKtl_':Sa,6f?YD2O,7r7^Ef73"CVGM[T/C7@.2cA_UR,U0I>5'h?+.(%1W-h$.$2>4H@X0[hOS`[DJRan*tW\6u28'q@gKqpuC#0Hp'5an8kqDHYfm`3P>Z@&0.HUF2l\F@kDiplF":,"in5_ur``C\'"?<7=P^']$4IaV9trWS'aiKLYa*3PgED!Jk@(("(G/@.au7'V@OF@FRheXTaQEZSS9M]mg@Q>$e6(jq0o6+4f.;37,LG]"Jrk(G<@5@-@M>FOd?0670hh[;uQ0pU?\u2-j/M-pD:ODrN1_o:qMWDG1a3`P=4"ohT:#&+t.c(?ef2Y)f.@1#lIsgN)Ec.pn/qWH6BkIou_S>C\:`QX(XPPN/e<5bIS2MqI3nf5M0X\+@Y@1u%DY[;s7pm^ntZ0JNnM(Epu#nhH-!@H3=`GfJEoERZ>:n.]&IRVYmW4@qe^h9u[-8"*/.s4c+K57LgkMYW+Z]$I@.eb]%VenZsgU`lkrA]:W&G'4Hde6W:WIA+?e>`ln2oUH-5BN_seKnIO'm@2ZIu^;mu1?RSii@[Ms])rD1`+k25/njEruB.#kHnB+jqO=#:7p9SSpZU,dGu3ZPoid.]*ISgWhn?k/(,C1b1SZYi5qlkc_B8/&fb\u'o%KcK,Gm.3Ken-O$gk#:C,(K%,Fr24iP/CYt4UQ1GB+d#tB5BAKFCu%1DDCDUnDoD6"6o>0/gZ/d_.)Z[(b<1E\W=AFKm5+NpkV/f@]pE7@jV)*a"YO`4!SRud9M85;%mGd?I$\q&&3At)`'B)=KCLNd?1-kfi+udr<1,kaW)$W646MIjoQ94RPt=\i"Fg9_%&VJ*pn`1%IN<5B9RX!u!XLj$K\o=?5LKSPNtN`1WaYh:GPLA#hXd7]n%pdG6*DtBa7AA4d$$&Jg5t<@Q8V@\V[W;+S'ap^ME4lT"cM:EMa`\1XN>.`1gjRlG,3c_V4EdU]QOk#3%[!Z)(h8rkRE5e+RF/_k--+S2bm.`*@RNlYQZ';E`-@3M$,a64gM'SU,Ud.hAS0iTa^YpH00T-c]l<',LXf9KKYpsf16+d_u7pm])capboeE!l([6Edmh/'%o_*Pa_d]tbEL)7LrS%T@aM0+B&QepntN]T/F[le^SD^+7?,r\;O"NEFSI?4HCu$XXk[_EIJ7:Y!K5O^`^r-oq4IE;\pB5VDT8K2_3+ulF,s#TZ1X!L_AkMkp/DD0Xjkas]!hrBU!OC.-4Q/h3Lj]_WMJjW$bIA*6gV@?EbKWU8&N#Jo`0L'-%#@!I;cGfV@E.K)[T/sLU-k=8VLI3"`dO;FZ/UXYan[Q<.sEn-/4*q@4$TNB]Y/10=d%"QX9qY]5_1Bm&UIS@-@P>J8B-ZQJuuf7#bSHTimr]:a;:#g#SrZ:_Aeg;%\b'J,JX@OM^UDFag3_DfGPXFK\pIUH,ep/!K\;LRUkZeD9J(pS6k_W-Va)DGiF%Xf[@Xl]LT6OcJS]0*WtO),&r]*>EMXf3]0%$Y&B9"2>?=iX#C:WTi6I-&/P#H\1e$\G]V1#'iGC==[+8ML:&Uo*dG#fSr\\Es9(q:P6>(QEdn42bI-hj$e""GcAJprcmW:UTHr=$jH+n4V0SuRRX(h.Xa`mq9EPlQSlF]]Oi\D7,>a?l>\GMV6HhU>!EW0p$F77o`F?bsSNUejGgijYG73D-t_sK?UIcc+1des`M4kh*AGEpSk".CJdnh'qR-%rHERd^,X;#'XKQ;We)e`?h+Hoh'UN^'olZB)Nl)/>io5G!qTF_a*9Bb2hpq^I6^%?"U/co(H$d2NVg$u,2Z0CTK"_>2L?N(&HIr5j.YEf`,9PO^$+^:o;5>0"S#mg(p-[eRW#aX[42b]QC#aP$q1$Y3H>cji_goIU(;^P+E:.k;_h]_E/3AqZ*~>endstream +Gb"/)l]9f?&c_:6@_NO9#Br9_hi(DHkM/(@l9gguV*U4OL_[I`B_.K8F_A,Gs5$nm6rA?SBn68l@*@%PB6PCYo:)-o+QJ7,pd!GT`*+oYE1*1QVf%LQ6@lTJsiecM]Y."`EgR[L.1MO4LWs\i(6d>LuJhV">iZX'K?I;9c:$af_s%("EtG`"Y9fZ8N^;*S`e$)d*:$TI)j-3%K**>54qk=2(Uu.nf,EfO8.sKa0[,&B'3jR9!RPoX4QeSYf,D[r51I4Z(RUUfsgc,6@Sb""XpZcaG+Lk2]ik)Dk+eaLVH!"=FRc,PX5lue4a!h;g,$2MQE4TB0?nB8Mt)-5JaR$n[K\(WP%>I49;nYXck7ED6@+Mea\FrWL%g!hK62\^Laf.d,,$;l/7n([\+F,W9E6(2d__\Ba(pS1H#O`';G1N7&s6-@X*O!?KtPXQYRYkE@2]g7!f),B0&-Q.rn!0&dEr9Nhh)`J6?Re_2]i5O$N2'6O%ZP9])%Ks+6(MKV-3bd3#D1&ICDV=V]*!Q3ukQ]U[(M%B"`TqY>9lFDS,>4s_cVHdcL7,E2E$6+eha5OQLX;)/mN:8K9(ZF?8)EM;1TgQr/L^iH9*3GYJ!Ae1)8[3K157>=ersW;;0K_G2KWjVeDUasdU)7i<<4"klItK#cVjsJqN@DBh@Z$D6e"HYF^4c)=?E38P+[[]l\T/<9<7$SQ.n8fX$'te]gjXsYH=]Ij%p16N1[':tmA6h]MM/_?SDAW17iD/a?IGic8t(^$ANo@Nd^C-amtr@:06U?d]@pc7GAakLbSqAt,jM0s4ZE=Zq(#__\2[`:jZ(KEU\-lZd*"lEbLKh,L7?rZj&MQ89=Is(GenfP><*A!+E8"!N(T_j3#YlTI"iH-XVjWC_A^,7L=9\&io*H1]'j!$YW>^"K)OSM^AE1\CQjRHBW^/f*OI^m\'SH>n08CiO8'QJ/qnfK6]@'m*L@'.i1GHrlV3$]?A>>%?,bfCL!AfR*Cb+)!?Irp(?6L4gVYoflhl9_5J<42`RJu4\ukFVmh#rF9BD;RKC?aV!$:_4\bWjboWrq4f9jr[#2OQ7!2$7lo[8^"Hn#=+,5U()"Msr.-E&>9ThR7H5LdTNVA57/_t?AWr*s)-eSRrW%(.0\lBWlejb,AHI=`?n`i,mX-3`(g[?3d*/<"Un/!*q&dE"3na?`(N[Su*E8p%p"#W2UUa=D!^\+Wt_+Xm!7Gg%P.$f05V>I"&[[&tqPKUM&`VIU?'9h>.Kd:"J5e4]a333)niN-Uf4d(Ua"=*RZe;_HjUQ(OOqji@/IkPr7K:8d.>_BcgtdiX2+MkW04?oj!`VQ&`:fJs+HM:7fo3R>F[]&r&dki?*7&Bsf[7/0h-jb2;f\_%&d4SuL&=k$YAJn&Z(_XNY)0nf`p7hW&gEJXDa)'O9kU"N2_?SUH(<5n&cB,W+JeV'@ADXhj!`t=g?#rJs/!75:au2840JY@Pf?hj:X"0reY'_;mt#G]\Fn5$%se_'%,(!c6.MX;O@9+"?7?f'7!1kTJ`&fNh,dcG^?rAQcLL*EE>C0RctD@8IC(pV"U3p\19B]RM#Xkl?#59:eeGa2($L>Y/EZjI@4UVRFVHBY,_AB,F-94Le\i0FNi>N"!*1Al=M;>9iOBU2_R^C;$["bU4h-Ubg#K[1=SI*r7nj=2/`b$\)C9.$ARiD_giP=@B#[rHn"5?Q3V17DT0EsZKL7VNM,lk0pPB=J4:qb%K;(q8fN:Tq`n/>H&U&W`-U0o(VAjd7A%R41e[u5E14&?OKR=blu#6&ESr1dU"M:F%1e'@"8n_8fo,',S@k#((K-E#JqFa0L5tnt$i7G5GSB+&,bO3uPL1uhHnts?"]*4\`qRY#o:_)6ZX)%-+[\2OG-?u!Uf_'HoI5DktdN*;Rl_Bb.:YF/,22!1R!.CZ]s(GfumUpq8\,+#.S?gn!Qgtr"cH!EPgh:t*$5M\!,[S1qa_h>Wpo>0$g?;%faKuqZrcT4*)!e=ofSE*tPFNo=_$&cGh5S&KD'LX1Z][;BsIq8fQLg>-Y.[lqG^5q=#?2jC,pV&m1[(/\.='V7bhaiB-7GZ9=]PL^Rl[WlGZ[Y!q:/rB&.5+IGKendstream endobj 32 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 1025 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1090 >> stream -GatU2=\n'3&:X)OR)]84'AGNm=D8AjC=+)SL>A1g-q^%n.Mo?oNaKPbUM2D2'NUo%m5aP/B"f-2)#2JS4%oZMI5jEg5T0>/:m7:)s+%.<.$nO"e^mR,F\Q&06dig&\4\B/oPrm)8uF=Q?`+5eDB;6+XJu.eBof!<*W/_og@Q5$MZY1L_`k2M2b,egSi_'_;diu59)(+L5'??eAL#&tb_[1)nmPITl1.7BGeb]TGbJ:7,h.-N*^N.E64_0,$f)k*/O>VPg*brqS`"?5WlX5lgaWipe"jFugMV4e?]L4JWWAl%Lf$%b3A7o3?+u"hp?\slV)n?_,V,_o%D5+)^rUBg)EYTki'8DidE!urEK^ZS#L/t`qD9jG]bIGNBE6gE^(PlQUcg5nr]cit1UEW;7<(QE%"TA9KIlkD&J(\W8Fn[!tl]]T>o4/@A^YA4"0b9Mq4R_0`0HUCN?(L"5=`;K&S+N\A'%9!DJWa(YbY)a]?!0'3Ml!X+KAoo5[MC%:gMsuR%B%2hC=K&(eAIl;rR8++_1/k0jC#1Kip)O&gpHlPDn+'dgu,1[^qUC;qUXWN7W3XD;#K&##&V[/S=B4i"j?9IhUs<*,f/oCgR_eniXVN0e9s&fW'5$0e8]Ro9^Ct'_rCGq`_)KpL5ikYKQGt#6t?[J4"3c6`=Gch9BHnAL%_Je8n"Q8173-endstream +Gau0B>Ar4L'Ro4HS4C.#j%F:^@FDTee#H]\P&;pD<>6FA.QCRIkdk-9'*gipTnQbd6"6IErLJ?!Eu7`dR/N*/!,k1@?8,b,_??5n*!edG]$^6kVpL9Ii4(#K)*SIrJ5S`)U.7Zoo`GH1pJhe$m0KG0Ru#:8h)74);4R*%`S6jma1V?pKsb@m!2kO=G;h-27dPXLA*:MMlK,U?ERZAPV=!%C?)&9V!:iiEjs5O6,*QPH>:Q'7/8#MH5d9K#.09jla;R.qkAqBTrP9`e$e`:_1'`f>ABlO,nIVeuK`-PN=FJDPZU\RW\i1tV]_OgD;2s6Bg^X@2i_3Ws;kS`?^otU%OXoGL[s$l3R$24e?(SEg7,I(;S4l7VR38T)hHs/TO.?ku6_1'gL&rCsbBt:LsdOjl;TUdPuml+7G^g[~>endstream endobj xref 0 33 @@ -200,7 +200,7 @@ xref 0000001651 00000 n 0000001919 00000 n 0000002025 00000 n -0000002103 00000 n +0000002231 00000 n 0000002309 00000 n 0000002515 00000 n 0000002602 00000 n @@ -216,11 +216,11 @@ xref 0000003877 00000 n 0000003952 00000 n 0000004705 00000 n -0000008078 00000 n +0000007983 00000 n trailer << /ID -[] +[] % ReportLab generated PDF document -- digest (opensource) /Info 19 0 R @@ -228,5 +228,5 @@ trailer /Size 33 >> startxref -9195 +9165 %%EOF diff --git a/docs/20260610_SERVICES.md b/docs/20260610_SERVICES.md index acbafad..88b55ea 100644 --- a/docs/20260610_SERVICES.md +++ b/docs/20260610_SERVICES.md @@ -10,6 +10,8 @@ _Validated: 2026-06-10 after FE `apps.conf` consolidation + BE sync. Public base --- +--- + ## Table of contents @@ -39,6 +41,7 @@ _Validated: 2026-06-10 after FE `apps.conf` consolidation + BE sync. Public base - [Publish (operator)](#publish-operator) - [Heartbeat (device)](#heartbeat-device) - [Auth & account security](#auth-account-security) +- [URL shortener (preview — not deployed)](#url-shortener-preview-not-deployed) - [Non-HTTP services](#non-http-services) - [Validation scripts](#validation-scripts) @@ -327,6 +330,27 @@ Flow doc: [20260607-2FA-email-mobile-auth-flow.md](20260607-2FA-email-mobile-aut --- +## URL shortener (preview — not deployed) + +**Web:** [https://s.f0xx.org](https://s.f0xx.org) (dedicated vhost; FE TLS live) + +| Kind | Path | Notes | +|------|------|--------| +| Health | `GET /api/v1/health` | Stub until PHP handlers deployed | +| Shorten | `POST /api/v1/shorten` | Bearer token; see SPEC | +| QR | `GET /api/v1/qr/{slug}.png` | PNG | +| Redirect | `GET /{slug}` | `302` → original URL | + +Spec: [specs/20100611_3_url_shortener.md](specs/20100611_3_url_shortener.md) · scaffold: [backend/url-shortener/](../backend/url-shortener/) + +```bash +export BASE=https://s.f0xx.org +curl -sS "$BASE/api/v1/health" +# Full cookbook: backend/url-shortener/scripts/demo_curl.sh (needs BEARER when live) +``` + +--- + ## Non-HTTP services | Service | Access | Used by | diff --git a/docs/20260610_SERVICES.pdf b/docs/20260610_SERVICES.pdf index 4db02ff..f5c9e7f 100644 --- a/docs/20260610_SERVICES.pdf +++ b/docs/20260610_SERVICES.pdf @@ -2,8 +2,8 @@ % ReportLab Generated PDF document (opensource) 1 0 obj << -/F1 2 0 R /F2 3 0 R /F3 32 0 R /F4 34 0 R /F5 35 0 R /F6 36 0 R - /F7 37 0 R +/F1 2 0 R /F2 3 0 R /F3 33 0 R /F4 35 0 R /F5 36 0 R /F6 37 0 R + /F7 38 0 R >> endobj 2 0 obj @@ -18,154 +18,159 @@ endobj endobj 4 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 716.2874 115.501 727.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 716.2874 115.501 727.2874 ] /Subtype /Link /Type /Annot >> endobj 5 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 705.2874 88.37304 716.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 705.2874 88.37304 716.2874 ] /Subtype /Link /Type /Annot >> endobj 6 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 694.2874 97.26104 705.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 694.2874 97.26104 705.2874 ] /Subtype /Link /Type /Annot >> endobj 7 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 683.2874 123.037 694.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 683.2874 123.037 694.2874 ] /Subtype /Link /Type /Annot >> endobj 8 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 672.8499 120.135 682.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 672.8499 120.135 682.8499 ] /Subtype /Link /Type /Annot >> endobj 9 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 662.8499 109.2825 672.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 662.8499 109.2825 672.8499 ] /Subtype /Link /Type /Annot >> endobj 10 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 652.8499 133.4625 662.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 652.8499 133.4625 662.8499 ] /Subtype /Link /Type /Annot >> endobj 11 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 642.2874 71.02104 653.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 642.2874 71.02104 653.2874 ] /Subtype /Link /Type /Annot >> endobj 12 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 631.8499 120.135 641.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 631.8499 120.135 641.8499 ] /Subtype /Link /Type /Annot >> endobj 13 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 621.8499 103.4475 631.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 621.8499 103.4475 631.8499 ] /Subtype /Link /Type /Annot >> endobj 14 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 611.8499 164.295 621.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 611.8499 164.295 621.8499 ] /Subtype /Link /Type /Annot >> endobj 15 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 601.2874 71.91704 612.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 601.2874 71.91704 612.2874 ] /Subtype /Link /Type /Annot >> endobj 16 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 590.8499 120.135 600.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 590.8499 120.135 600.8499 ] /Subtype /Link /Type /Annot >> endobj 17 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 580.8499 155.9775 590.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 580.8499 155.9775 590.8499 ] /Subtype /Link /Type /Annot >> endobj 18 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 570.2874 100.813 581.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 570.2874 100.813 581.2874 ] /Subtype /Link /Type /Annot >> endobj 19 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 559.8499 120.135 569.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 559.8499 120.135 569.8499 ] /Subtype /Link /Type /Annot >> endobj 20 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 549.2874 125.709 560.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 549.2874 125.709 560.2874 ] /Subtype /Link /Type /Annot >> endobj 21 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 538.8499 120.135 548.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 538.8499 120.135 548.8499 ] /Subtype /Link /Type /Annot >> endobj 22 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 528.2874 87.92504 539.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 528.2874 87.92504 539.2874 ] /Subtype /Link /Type /Annot >> endobj 23 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 517.8499 120.135 527.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 517.8499 120.135 527.8499 ] /Subtype /Link /Type /Annot >> endobj 24 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 507.2874 82.58104 518.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 507.2874 82.58104 518.2874 ] /Subtype /Link /Type /Annot >> endobj 25 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 496.2874 92.82104 507.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 496.2874 92.82104 507.2874 ] /Subtype /Link /Type /Annot >> endobj 26 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 485.8499 82.20004 495.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 485.8499 82.20004 495.8499 ] /Subtype /Link /Type /Annot >> endobj 27 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 475.8499 119.2875 485.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 475.8499 119.2875 485.8499 ] /Subtype /Link /Type /Annot >> endobj 28 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 465.2874 111.485 476.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 465.2874 111.485 476.2874 ] /Subtype /Link /Type /Annot >> endobj 29 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 453.6874 129.725 463.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 453.6874 129.725 463.2874 ] /Subtype /Link /Type /Annot >> endobj 30 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 443.2874 115.469 454.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 443.2874 191.069 454.2874 ] /Subtype /Link /Type /Annot >> endobj 31 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 432.2874 106.149 443.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 432.2874 115.469 443.2874 ] /Subtype /Link /Type /Annot >> endobj 32 0 obj << -/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 421.2874 106.149 432.2874 ] /Subtype /Link /Type /Annot >> endobj 33 0 obj << +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +34 0 obj +<< /Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R - 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R ] /Contents 74 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << + 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R ] /Contents 76 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -173,39 +178,29 @@ endobj >> /Type /Page >> endobj -34 0 obj +35 0 obj << /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font >> endobj -35 0 obj +36 0 obj << /BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font >> endobj -36 0 obj +37 0 obj << /BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font >> endobj -37 0 obj +38 0 obj << /BaseFont /Symbol /Name /F7 /Subtype /Type1 /Type /Font >> endobj -38 0 obj -<< -/Contents 75 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj 39 0 obj << -/Contents 76 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << +/Contents 77 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -215,7 +210,7 @@ endobj endobj 40 0 obj << -/Contents 77 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << +/Contents 78 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -225,7 +220,7 @@ endobj endobj 41 0 obj << -/Contents 78 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << +/Contents 79 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -235,209 +230,224 @@ endobj endobj 42 0 obj << -/Outlines 44 0 R /PageMode /UseNone /Pages 73 0 R /Type /Catalog +/Contents 80 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page >> endobj 43 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) - /Subject (\(unspecified\)) /Title (Android Cast \204 exposed services catalog) /Trapped /False +/Outlines 45 0 R /PageMode /UseNone /Pages 75 0 R /Type /Catalog >> endobj 44 0 obj << -/Count 35 /First 45 0 R /Last 72 0 R /Type /Outlines +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (Android Cast \204 exposed services catalog) /Trapped /False >> endobj 45 0 obj << -/Dest [ 38 0 R /Fit ] /Next 46 0 R /Parent 44 0 R /Title (Validation snapshot) +/Count 36 /First 46 0 R /Last 74 0 R /Type /Outlines >> endobj 46 0 obj << -/Dest [ 38 0 R /Fit ] /Next 47 0 R /Parent 44 0 R /Prev 45 0 R /Title (Hub landing) +/Dest [ 39 0 R /Fit ] /Next 47 0 R /Parent 45 0 R /Title (Validation snapshot) >> endobj 47 0 obj << -/Dest [ 38 0 R /Fit ] /Next 48 0 R /Parent 44 0 R /Prev 46 0 R /Title (Console home) +/Dest [ 39 0 R /Fit ] /Next 48 0 R /Parent 45 0 R /Prev 46 0 R /Title (Hub landing) >> endobj 48 0 obj << -/Count 3 /Dest [ 38 0 R /Fit ] /First 49 0 R /Last 51 0 R /Next 52 0 R /Parent 44 0 R - /Prev 47 0 R /Title (Issues \(crash reports\)) +/Dest [ 39 0 R /Fit ] /Next 49 0 R /Parent 45 0 R /Prev 47 0 R /Title (Console home) >> endobj 49 0 obj << -/Dest [ 38 0 R /Fit ] /Next 50 0 R /Parent 48 0 R /Title (Related endpoints) +/Count 3 /Dest [ 39 0 R /Fit ] /First 50 0 R /Last 52 0 R /Next 53 0 R /Parent 45 0 R + /Prev 48 0 R /Title (Issues \(crash reports\)) >> endobj 50 0 obj << -/Dest [ 38 0 R /Fit ] /Next 51 0 R /Parent 48 0 R /Prev 49 0 R /Title (Upload via curl) +/Dest [ 39 0 R /Fit ] /Next 51 0 R /Parent 49 0 R /Title (Related endpoints) >> endobj 51 0 obj << -/Dest [ 39 0 R /Fit ] /Parent 48 0 R /Prev 50 0 R /Title (Bulk / synthetic issues) +/Dest [ 39 0 R /Fit ] /Next 52 0 R /Parent 49 0 R /Prev 50 0 R /Title (Upload via curl) >> endobj 52 0 obj << -/Count 3 /Dest [ 39 0 R /Fit ] /First 53 0 R /Last 55 0 R /Next 56 0 R /Parent 44 0 R - /Prev 48 0 R /Title (Tickets) +/Dest [ 40 0 R /Fit ] /Parent 49 0 R /Prev 51 0 R /Title (Bulk / synthetic issues) >> endobj 53 0 obj << -/Dest [ 39 0 R /Fit ] /Next 54 0 R /Parent 52 0 R /Title (Related endpoints) +/Count 3 /Dest [ 40 0 R /Fit ] /First 54 0 R /Last 56 0 R /Next 57 0 R /Parent 45 0 R + /Prev 49 0 R /Title (Tickets) >> endobj 54 0 obj << -/Dest [ 39 0 R /Fit ] /Next 55 0 R /Parent 52 0 R /Prev 53 0 R /Title (Create via UI) +/Dest [ 40 0 R /Fit ] /Next 55 0 R /Parent 53 0 R /Title (Related endpoints) >> endobj 55 0 obj << -/Dest [ 39 0 R /Fit ] /Parent 52 0 R /Prev 54 0 R /Title (Create via curl \(session cookie\)) +/Dest [ 40 0 R /Fit ] /Next 56 0 R /Parent 53 0 R /Prev 54 0 R /Title (Create via UI) >> endobj 56 0 obj << -/Count 2 /Dest [ 39 0 R /Fit ] /First 57 0 R /Last 58 0 R /Next 59 0 R /Parent 44 0 R - /Prev 52 0 R /Title (Graphs) +/Dest [ 40 0 R /Fit ] /Parent 53 0 R /Prev 55 0 R /Title (Create via curl \(session cookie\)) >> endobj 57 0 obj << -/Dest [ 39 0 R /Fit ] /Next 58 0 R /Parent 56 0 R /Title (Related endpoints) +/Count 2 /Dest [ 40 0 R /Fit ] /First 58 0 R /Last 59 0 R /Next 60 0 R /Parent 45 0 R + /Prev 53 0 R /Title (Graphs) >> endobj 58 0 obj << -/Dest [ 39 0 R /Fit ] /Parent 56 0 R /Prev 57 0 R /Title (Fake session data \(dev / BE\)) +/Dest [ 40 0 R /Fit ] /Next 59 0 R /Parent 57 0 R /Title (Related endpoints) >> endobj 59 0 obj << -/Count 1 /Dest [ 40 0 R /Fit ] /First 60 0 R /Last 60 0 R /Next 61 0 R /Parent 44 0 R - /Prev 56 0 R /Title (Remote access) +/Dest [ 40 0 R /Fit ] /Parent 57 0 R /Prev 58 0 R /Title (Fake session data \(dev / BE\)) >> endobj 60 0 obj << -/Dest [ 40 0 R /Fit ] /Parent 59 0 R /Title (Related endpoints) +/Count 1 /Dest [ 41 0 R /Fit ] /First 61 0 R /Last 61 0 R /Next 62 0 R /Parent 45 0 R + /Prev 57 0 R /Title (Remote access) >> endobj 61 0 obj << -/Count 1 /Dest [ 40 0 R /Fit ] /First 62 0 R /Last 62 0 R /Next 63 0 R /Parent 44 0 R - /Prev 59 0 R /Title (RBAC / access control) +/Dest [ 41 0 R /Fit ] /Parent 60 0 R /Title (Related endpoints) >> endobj 62 0 obj << -/Dest [ 40 0 R /Fit ] /Parent 61 0 R /Title (Related endpoints) +/Count 1 /Dest [ 41 0 R /Fit ] /First 63 0 R /Last 63 0 R /Next 64 0 R /Parent 45 0 R + /Prev 60 0 R /Title (RBAC / access control) >> endobj 63 0 obj << -/Count 1 /Dest [ 40 0 R /Fit ] /First 64 0 R /Last 64 0 R /Next 65 0 R /Parent 44 0 R - /Prev 61 0 R /Title (APK builder) +/Dest [ 41 0 R /Fit ] /Parent 62 0 R /Title (Related endpoints) >> endobj 64 0 obj << -/Dest [ 40 0 R /Fit ] /Parent 63 0 R /Title (Related endpoints) +/Count 1 /Dest [ 41 0 R /Fit ] /First 65 0 R /Last 65 0 R /Next 66 0 R /Parent 45 0 R + /Prev 62 0 R /Title (APK builder) >> endobj 65 0 obj << -/Dest [ 40 0 R /Fit ] /Next 66 0 R /Parent 44 0 R /Prev 63 0 R /Title (Git \(Gitea\)) +/Dest [ 41 0 R /Fit ] /Parent 64 0 R /Title (Related endpoints) >> endobj 66 0 obj << -/Count 2 /Dest [ 40 0 R /Fit ] /First 67 0 R /Last 68 0 R /Next 69 0 R /Parent 44 0 R - /Prev 65 0 R /Title (OTA updates) +/Dest [ 41 0 R /Fit ] /Next 67 0 R /Parent 45 0 R /Prev 64 0 R /Title (Git \(Gitea\)) >> endobj 67 0 obj << -/Dest [ 40 0 R /Fit ] /Next 68 0 R /Parent 66 0 R /Title (Layout) +/Count 2 /Dest [ 41 0 R /Fit ] /First 68 0 R /Last 69 0 R /Next 70 0 R /Parent 45 0 R + /Prev 66 0 R /Title (OTA updates) >> endobj 68 0 obj << -/Dest [ 40 0 R /Fit ] /Parent 66 0 R /Prev 67 0 R /Title (Publish \(operator\)) +/Dest [ 41 0 R /Fit ] /Next 69 0 R /Parent 67 0 R /Title (Layout) >> endobj 69 0 obj << -/Dest [ 41 0 R /Fit ] /Next 70 0 R /Parent 44 0 R /Prev 66 0 R /Title (Heartbeat \(device\)) +/Dest [ 41 0 R /Fit ] /Parent 67 0 R /Prev 68 0 R /Title (Publish \(operator\)) >> endobj 70 0 obj << -/Dest [ 41 0 R /Fit ] /Next 71 0 R /Parent 44 0 R /Prev 69 0 R /Title (Auth & account security) +/Dest [ 42 0 R /Fit ] /Next 71 0 R /Parent 45 0 R /Prev 67 0 R /Title (Heartbeat \(device\)) >> endobj 71 0 obj << -/Dest [ 41 0 R /Fit ] /Next 72 0 R /Parent 44 0 R /Prev 70 0 R /Title (Non-HTTP services) +/Dest [ 42 0 R /Fit ] /Next 72 0 R /Parent 45 0 R /Prev 70 0 R /Title (Auth & account security) >> endobj 72 0 obj << -/Dest [ 41 0 R /Fit ] /Parent 44 0 R /Prev 71 0 R /Title (Validation scripts) +/Dest [ 42 0 R /Fit ] /Next 73 0 R /Parent 45 0 R /Prev 71 0 R /Title (URL shortener \(preview \204 not deployed\)) >> endobj 73 0 obj << -/Count 5 /Kids [ 33 0 R 38 0 R 39 0 R 40 0 R 41 0 R ] /Type /Pages +/Dest [ 42 0 R /Fit ] /Next 74 0 R /Parent 45 0 R /Prev 72 0 R /Title (Non-HTTP services) >> endobj 74 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 1024 +/Dest [ 42 0 R /Fit ] /Parent 45 0 R /Prev 73 0 R /Title (Validation scripts) >> -stream -Gau1.>u03/'Sc)P($B<]dg32l-gC%k=#MnBFV)&LRbYhXYA'N[:)X(\-RfbLJ@Wa"Uf<4W^Q6]rI1Cf>+4@o^-,;eVqhG:[L&;QS*5mp\_^+.8\O17I`[jY9(<2H5Bb3bO)#oB/6($&U71_l),YU!";FZEr!I_A.CQaZN$Mb;\-kOs$:tc5;O9Q:+,95$&(l[`X.p9`V)[dIHVBC=Fb(p[hcmr6)!sQ0H;HLJls+(#!m/=Hr!e8,N.HlEfllMULA=*pQr;.YkrAJK?5oSC[/6iA+L1"dj'7DGU6"#V5i-W1o/6"Qlu1[*aXA/BgB#3LOOP96oG_6>sZ>e0Bg)&#!&;U!n8M1Wj\Y1`W6VqAUFC>cDF`_;pq_=hqQ9&]J4J=*V@7jQiOb5dlDt733@9+:T9Qq8^Dt';SNKmHm.Fnpims%oL130R%"CD^3WIQOu^9cS0-G<=8,d9=EIF^%IJ44+\`d!8UjuQaD[+hC?pVq$>[Y;r?^5NO/"p?S_I4^JV+#jVt+HFf4W.P#qop$reH.[n8_b4n2U'$a/k*Do)*lMbTHM!..h(s/iS5I&$?s+m)sDkO>?1E)^%G]E7RHQM/=L+nes#Io5mqV`^ShqFV"c=4C[h/Qe]Xj-&peNIumpjOk;+`YO]l:3]4f*Be/M:K=G'n\/q:6`e/=T2&/,O2dC4?s0WOCiipsKhBo("4p-u5h7XfE/<&0\/*eKSR[nP[cn\O*4%u`]E2CUF/;V#B[endstream endobj 75 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3462 +/Count 5 /Kids [ 34 0 R 39 0 R 40 0 R 41 0 R 42 0 R ] /Type /Pages >> -stream -Gb!#_=``=W&q9SYka/F!A8I.tiDaPBak6,qSAZ'i].^=0;%t91VFV1_q:LK$mG$PFP2ZKjREUt,9-D#>j6K10]?sJ@`ZHN(lYQ[Zb[GgsJ>0o."c=qs0Y`@#q8j^+8hj4&,h"Y^*A#s2%*d2i4m^0)Q&:kS))0s",.#U2Uo8j`#YKiQ32U`cRB0if:H.d0DG$5XTZX9[-C\Y*%.5Sk$!^fPcS5BVK_1e]`/S7VGu;($Sei&6!2%XeUZ=ogquUdhJ3Ja["?3q]i-V\I.60&\)9#gL1l^bqFIH'4a\P]1PcS)RV5uh0_9hrtIl\/r,YQ]?L.KVj!""[)CA_HJnJD\KM/ZC-*'8igP,#P]?.dNAc&n&5sd#I9:8ibJ(aggKYq:)hg-t"uHr4EE`gQEjYmPYO\SU-,c2g5RbUBG^I\o>?0&h^*39DgcGdt^7smM=lDP2sIR#aOVNQXeK6A/,1TbH<$kl1-RmRZ7M&7[]Lb[>C,Z_<20r7h/JA#mDc=q[i;D'+?IoNk[p\ec*^;D&+#g@k"j*aUf?!4H8FZc-od1$jR%\HpUr&T(oAQ_Z?$H90;!4h60]e4d_@:ifo_B)Fj'u8UY?u"-c,NG!+;hO0rn3EokLtoJ;]>g?Dkt?q:#k?8`VNfQ_ntH&q)'43p".PGSS\#ZT`S8=L?(7iG(Qk_3;!\D?E*[:P/ATAO_j0in,Iq=E;[6_"(NkNSGGIL[Ft"5:+Cq-aED7&cXUmIH2_.4f$m+(qD<[2hSp!l&r_I_7D=%\4il)#Ff31m;jt:UJ4O$]1a)B&7\_IFb?]RpFMFr4qq]83!6Cn4E#9q5X>e0pi-']<)BQ1[cg^2.Qf'3i^N."%U'*ifP5DqZ+%0ENBsbuuI7jHWIJ`Vdgpha$_c%1kE=f\(EP[q4&'5SPl7F-J-_q^YdsNVohSedb^:TbnbAri"0i89K;Eg3k4IJgT(!UX6d(_H3^n$N[=``[[UORQu;J"B=Z-(afo5f\`trQX2Z2(9f@'HA,TE&m/OaP!GPZ5Uha.`:=V$-aXIGdWc=W1A33"K;3j5cam4I&\CYY!'bPS\+XCS)X!e7Ja0T%[Z($(<.E=RZRU5O:[Ta!Inq/Km,44bqf#@R6o4ip=O37BD6IK-Pde4W&O"GkPP,60bIY,#0SV$NX8H%GTcSiHIi^2@8o:_KuK0XcLr[_VFmI"FeJ!O/MK8Cnm5FlZp!9:8(4E8MJo/\2gSFj$hA/:CbX/leU[sCM[At4$;%'/6X-;gnq'`J(&5A#3j-"ij^D>%j>N*I8_DN(:t@[@>cXrY/YU>d5<[mmVIFXU-"Ekr#\!//=$B`^&9-oe*YNq']jIT1,5:mQLqh1o0/=-nCdQ)a2adJ=ekWg?3503h=#b]$l5M9J`>YDPY>$?p\Jl6Df@[)]+'1.43`OHs!Z)anP-WRbYfIl-*fRlYm*XPqg-=G1?7t*Dt:$Lk'q.qNfTq0n?Ok)";lRY:?EV5mm$9lWnK!&OAL(N0<`h-PEVXWB=2]VW(,i(ijTnd)K2N%,DdMIVKoFb4_0gaOcJ%D0+_\YNF>I'V8"ApsFGb^+:HVnR2?!J90/P:(ERNH&9rBL+8@)QM[L2.$'TV/Lfq:T(iXg,Eb,NGcO2M_C$G._+j?Ya7)V;Q\PDD24Q5;18_,`r"cX>&ZOLWCNXr613#jTj/kGE,.XT^Y>G]&:@*(Qfad'KU]2*4oZL8!EHSCld5`AaZP:_68.-THYn/q&Zr-uOOjiuWGBd_@!X@>(;#m(d#b5("XDF."]brLo_[''(:Oo_JQW'IWJhcJUb]?3OklNA4i4.X.X3(?aPHar^Xd`c6HfHGjO+KE(XH'CEo@nOJqWlhRX.qEWPt@LZrbuq,nZ)%B\C'Y_E@pq8I;f])J)TI<<0pl?~>endstream endobj 76 0 obj << +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1071 +>> +stream +Gau0D_/A!e&A@6Wk#AjK7MR@LP'_8_c8O<_lR#5"!=E">A$0B@92\@QpH+NV-V]ej%Tj!u!Kkr[I.N)_&V1cP1>Jo^^ekDVNsQ@)jVK%RPX9X&Mt5f@"7g;@b+btFE=-u_7r^:YnUEM<`Qk8p^ONdjUo0K&^DOPF8G1Q8QmsF`9od%cV9)Xf0&CF"JnNU#M(kqW]r&s$HMd*.Inl,lA7XVatGG@eZ[$9Vr\Ya1m[,-P7;3PFauG'DE#4@Bt-4f?!gJm*rb#g%#:7f=[5'G>bJ]N5d\9N&)`.[t^N:ApHe&Hm&C[KS8\=pkOI>]3*GW=A2?$C'<`R:hf$EEn5jc3bN#Tf]HlE2!hWTLTlD_5Q/Qlq7^Ul/HhlBJ7(tklOog&n9G&5mBjbs.)X];IKW86.]o8:h@4>HgNTN*'9+Fs7)@lm#/:jS!ft^gr\&th,P82.^47"H*M6O#FMbJR4;jr4>Fio>U.0c%1,`nW[[GXWc+6:Kj,Cc.Z5='/l*.)GUI%NUKb&%;8.fc3F&(I+-07XOLF/D6X]BG"nn8qbmgDch.fWJ0lX-2Z_W?@'hID*\e=JGq12:YMYo@$Tr2EX#g-WUFp+VT&PE584![hs/L^nkJ_[\BAd?81Xir-b:%I4)MW0cbe5iJfD29;fLN1Z)R:<^`F9N5GF)ihdJ[o&9FspCO"BJ34`#uNrV:uV7ZEYO9Vc-Z#Kp5HjmGj_OqIB5paIofJtGKTGCY.hMU#[Rho%^Ji,b`D&:hA0>PKbmP#-pj7%.>h,B:+096@)+76DB9-DA]JGkP55o^h52l.=#>%^VH(_=_^)HS-iTUZVe<,CaKm,S<,1:/e/Cq=.;hj)p![Pd]a.3#]Ql:FdWDABDF%&a:.*9"$#r4Tf4dedT6=J7V

_+qg<-W9baht1Oe!\k=s@Q8$\,%b,0&Mf]G)h;&H'k9GbX\UVUungt7Mt2SIEOl?5I3)3+)JQSOD73]T*8KO-CKY`&q,P&.1fTn0""VJOp.=bc5*>\-\4rgKP?;B8>/<"mOk%:T[F(J'bi'OrttD2a\le=l\@]S1tC.HBG5.*M0(A_T7tYbbE-68`MOgCDg8h0/^2FPFVM!hpFCP&>"BeP,9CotV,RBHM:A.294ahH[Ta$4\F;H+TdBOH=]]]6C(u3tfuMNgX9nPoJeb,krGK!DKm)AlYk;?LAR1E!aqBX)tnST9gDNaGkC'Pm-Xr]aAcW1g)EU$`hRI@CEo3LMJR,K,b2XK`$6lU(%c$>);eodd*.3#gf>lrsOCdSZt/hfm3R[`kt%LOZp^/_b*[('GggQT6Z?35rsDaiFa_AHdiK)<6JmtYd!Bf*qJ4iY-BIIhN@gk:'E_c%1kOWTbJYi,0)@&="$h>jj16B]EZAlD:K->G1&rPa.dQ@g.cM/n7pj[2Vf`s>rs#1oJ[F8.Hdr2Ea;7lYo2eRLn%JE8595=63U@^`&N1!%:W'Sk'hNa>;9G99aj7X/DWoLB65GA+K;d]^.+g`;#`r4(S1^G3`#A,[%2EMFBY3'G=XQGpR/L1f4Us8SMaK-CRfLhO$2K)un/"!\4X"n;VC^R[p(C?^HSc-J'3:F$#`aun!nT.Stq+(f5R>j[VgO6+O"b)d*"4ASrD_IhJTm:mI:QB:Li2G2l_akOs^M`?,A)`rUAc^(I:G%[l`]]B0fHg*h.?=+IR\?,upbS>tV`=+*q72OR,i,!0:j"MZ_OXU[#*q:L(^c(^SJ8lWRk1oJ)S`G6T"E21cji(HLD1bR?@gNU[QCH?>#Wilmqj[*Ds$FP@o>13?PVc)_4cK8.0IKu*G]?/olkp?S2oTPs,-6[a=E4ea(H*:jSe[R$?s'_4Y@6K_bi?#e&91Wdm`KaaDj57H*kJ(I1\NAV/,i4k$a7t;O2l-&u1.!1//&iQY)*c@7b*]CBaUaGn*#E,-9"`=pY<8Pmq3\W/i4^1VqQ\jl[hma1_ob'RcRM!*4UJSQ,0LEh*0uDaV_\5HLC0_+cjmPTl#+Fc5:mO(uLAfeV]G5l-9ArR7\AdKO;me$AHH5IqOlF$DcDPhcS)UH!N/]<1Eha_NVCs?S@&$mK*pKDV,+EZN-(:@)[C-R)bfNGqo[c&g(LG:Vr;uYV]FH?XbcdA]82fq^O([r-N03LJ"4tePCZ6fG%0mXC*A+jQ>MdTLu"J_SU=AiJhJo:=OZ@r+p\;qaB_aM;ndkD=k9r0pLehBcL#)mZtEj#X)@B9Aa-W2KeBqOTZG^IC>qtn&s+'rrQdCUdicJp)J`sr30APZWN^Bder4^'(!H'Odk$n(']4"oF&:\4ZMrk7=]nRkGI.(m<]J6][0H_1n&"Xn/Z6o`e;l^HX9^M54ZJ<>_NXT\/f6&)IgMi$Ak)O@2,:\s+:,3N0\CYc'W2,XhEZ,^>T&qn*M2V^%.5i\i)Q`uLf>st%.`R@uLTo*m);"P&s"%L$B-0"Zd;P9'_Y"(bDWiC56e]n3($[<]kTN8'_I9sSn(c4aV(\Bsk3;QB2Rq7Ekg8V1hBoR/CecN2Z=5Omui3SpukSi#[#gj])r7P(cMTC3lc&r#sP>0[CHD%[S;5D6o^<"j$PIRWlOsukjn]`jDh*-s=8\49P`t5uA`DO^F#FTgQUWB5!rqUDoJ-nR1KZ=k1u;d9f8PLl"Eit[,mj+ZouIRt5.;afN[)tAkZP7JRNF(?6f7;KS_+Me`A>t3.#91('8"#\/q&[<.&=KCE=_tLd_@!X6&;2Gr4q7"loM]u,f)0I9qPYBTj%-3$;7V-UE%o`fMNg1j-!T&`kJIiWDuqXql1"(<`NSqX"'&H^P6lYIS8'E[7^$p7:XZQW]HOtnG]_un(2YEP@pendstream +endobj +78 0 obj +<< /Filter [ /ASCII85Decode /FlateDecode ] /Length 2900 >> stream Gb!;&CNGt9o"0B?QSs1kp**mh9%e7P3Jf]\<&S`*D;A3_Y#JmJ8_=:SKAq-"oA?_V&4.506*]lUY!`]Ie*lPcmX]nCIjFpK>lqYUKDIA)U;M3[`)KDI^P0#adAJ3e5an!J%kZ$/a*&0A(n%o%kkg9kc(\`?e!,+o1ndEC#+j&"&0iW\ka#\oG_n7NYf5W2L4Vblj8#a>hNEUD)@W32qAr?Kr:PD#H.mTPj(fM3!<)4Z0Gr/I%Z0X?mg6/\_6K0-3(hUJ^,gfm3-1$WQ`%T)]KPSsT.l[tb5pBu'#9$)_VcMTnc!QfO=s?^cVth[l7*8fl7)6ImVOTY)#OHU0;C44@6,7_`U#V33"C>&VLB5Zf/sD$OYPpa%^,_k-?nsg_&<>hmR+>K9Z;"-,BVNG@$umY!.:g20NTFF`:)I)>XP4+[Dnp?qKG/Y>U&+LkQY28(_U"r"DFEUU!#E'>]g_&(XlWG/5`ULHc&0Gj_j(u.9BHfe*.k"9a_-p`Kk2^]Gk#nn&'bO@EuCnUYH/6]Y@PP2kU5e$e#8PI2@:V=,]dK-$H99/ZS$Xqc,NtNW\`[@8\"/9^aauc$U:Or1Ot$>pRK-t%S,2bT^i3H*92P]XJl1>2hbD/8J5g7BNWLp$(0/LSP@OmfgpUJICJf??t\8;.ZAVp@Q=4\;K<2QR\-m.Z?tk^H/CUM#$8Kp;-IrZg2faiuAmDF'X&-N0C(F2%)<#/@Xj79$=?/Qk[n:M$&IO;=P`#M>(g^r+\)%.eHaG$6CVH\giHZ,"kE)et6ge.'S$`>I9s1Bb\%oT;_`8KWgi6Oh]g.6>jn(_?c^#.#B_V>+94fM3*=Os)ZUrjuKJR?^e9c:sZ8]a89mAtn\34<,DmfXCP62&h8'K3)uUZG`6oE-gqc7),)()/+OtDTnCl/^McN%&5@j3UZbd;YOm@b)fU@4"hl!N^4_$3?7klmF?k5MMYtF#3ZPr8sHEj`!fYFd=8=EPAYKt3$#3_(kU2*dI?:?VS"P<4;g2.NQJtu$.'$jWQZm>"d*VWd1Vm,W35d!hVX-uGu+JF;&gk@^PN9(I%FV@6f;C#h:p5kI(5^RUnr=W\W=tZ.4h&LbnB$n^FR0>P.6^_L#HO#p,9!SQDdN/(#EE6Q3"cb'QR2oX3ebIl$B+lJ'Fr;8XRW>i3%UuK2D)5.L%Te(#"RtcXO/O33*K+F>9'"L#4sMDqO0MiB'u+>LN9V]=4]sQhh_)KYaIFD1H3%80*gh=%rJEk;n!Lr*Z;)>5uZ6*JBlE6,'t->c/6h@pSEi-80L^7jBJkO=h>bDPHX>b(Z!%/4*D!kNO**\jPr*(h"$cE%9cNWqf.mY$T%Wprn%q=HKMMM6IC7HBG;B1YhAdlHK'3%SQQ(p=@>g5BUIr-k5fnhFNNJ5ik/,3buD8f`%iEF4(O\7PCR`<*Z4/4?-YeQ@rq_'C%1Jn1QNXr&.0[I!E<SeK%[NW/b[^"UcdS':rA>lo,\3-q.BGTh&1UKb=(23[f2>TD!E2H:&I`AWq@o3SLLE]Xkj'&Vg/i@_a"B]=kA,-a)FV09)3j%gZA<:"qh0"M=\4T,l)K['f/_u51;kb>5iC1>@G]c4$t9GjIM0XtCBnQ_-5R?5liKiCp9pbY8\1?t62[tt&$[n=T=P1t&[A2W3\rV(5.G*hLOEfncjZhusYGMI5j.,FEBlRg9Z=N+X#)A10a7hN[h.]qO)GPm,]s(B=Ml$T),H+(?:__&0ic1Q98h-,7@b>Ru[88lbV#\%f]JF4NMAY'8G^Ka#:XY>B]FFato"Vb*eh=U7&$F=3l%mBW_WQ)UF]h88]c$Y_sD1JIs6m9.m-Jn`tiFdJS@%H22/-YjeWW5tn(M>M"PiH;]8XE>t0Nq'te/$,S(--"N9/%PbB.1TABBQ:UXO^K@i57.?:t+UYf9pp)dKq^J*F;BN@$\jAm]R#;);rs&(:ds:~>endstream endobj -77 0 obj +79 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Length 2787 >> stream Gb!#^lYkfA'*"Q<@_NhD('u9a0.T;lE-ARK2V3(](W?CU%,#6/D.H57kWJ9Ps8*6O=dEX@VX/2I#SMpTBP'4Wre?X<3rTuLhrtd3Ad$gX!t5O37kcK'_<;AH7q[=A)$QjJ';oL/(:^M?FORSc3Ln(oNKTW:^h=%=b(mBc1`JYkZT@S9SDUYa//\02.8/,3@.Xmt5>!B>i_Pa`LD%4%&l(tpL+Y]3@D-M\^U)$^-:4jcRlcCZ&4q2EBmu5@jACDT,r)%8Olf.i*XB$NT8IX*j)8``Zmkau"\Z7IcN/C'k*bYt>^(EP^VB$J^OecRlC(;s+r\YfC+;@DTWi7%0n,e,?.KfV$+*=`=:75e;j&\pGQ(QL;I7O:%XUi_NCHp5@@m+H*Ced6^6baDZ,BA2Q_gU]JpEcsW7OaHON)!'P7$\\ZOQR9m5Bg+Ep^*eCEuhnqgB[HoDhuIT8O$I"\Hi:=/_\VQ%4R]eY#'lODjk'kR5NEbI>q"sH;oVcQY#1Pm+5FpaSo"PI;$b'U6EbjADgea+kUI:kCiJ^=9]0SIJNH20!_<'>JS6M@'$7?tPRK#6E_"::E_oN#QBh>7:7$TBqU`13fl:if\qV_`fM#]-KGF]GOHi[5VN[K*\V9Q:4sn]^_)Z$X1WI+K,>gBQ#^(.a1bi,O!D+ksucD\Vt*F@'YVCk2H:15Jp+);E_HFT3DaK!"c*dLL@+VK]7CO>VKRj?TVnFSkhSlkF.%HZ]\O3NI?2h0H&D$JkNLg*pDHFi9-/DF^-6!ZqM^'OH?.(Stm0XdP<=uW;:1-Yq9]0S+e1MUs6g\p*)/9u:X\dd'*F_""fa8HF&-"-c3eO,<1tW8SiO?tNc13:IRJG6(1P)X8tF+_J'N^B3n8H>3e%RWcXi/IC'Q<;Q]3+6MPZ0399@0V@D*R9V;$WSl!-@We4$i9R&:VuThY)GC79"ItIMnMr9SVu%7-_emSQW`%UF?R:6\NBZV_t+[7ogQp*%J@h)oC_Y[*$JE]%6Cb3T4ju^[@t9Fgg")a8(q&N],$;2mf(Mk)OUJhqHMI\j:.K=^.@\l5;uC#eILP$_LpAJ^l$%i$ApB.*bb!kGAe0f=]!qf<5Q^?_ei!A.3@)qf;F>r8Dg>`i2sRC]P:o`^Z$-%L+`Ne45P!j2XrMk6K7&tD8p)b]6m(eZ[7=K=h"eLU(Qf^8\O6U-otR\p2kT*Got+:t23iZldt@Fq^P@\2Nsf\&4+;2SSF0)R,,Tjmp`lWPieXa!B0Kg,k]q3LI%T/N^l""Qf?gMXT$-:AEiGCg3f+qm1PitW*j/&C5rG%t*_9/e@\m:O!SX#f">;]ZdQdq7(H7n\(*>J+]8=kF"RVK.X_DDJ^X?ps%0YiE*Z+o[[0iW;>`6^h@QeFh]`b;2dU$6C'3qrqE5W-%SeY:HG,d7mZh%%[:aT`3f%Jo%'s%_b[pa^+57P^R.LnF5EN4o@YN(BrY:4V[g_.mF`.42endstream endobj -78 0 obj +80 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2621 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3145 >> stream -Gb!l!lYkNI'*%C7@UPiFV[6_RLE=Fni4*sY,#&bU\_[Rb!_'4:-5;dm=*EAnpUB$2?Qj,]>h[fhJ:lk6b8JT@G@uB2.g'nk)!V(W*oPQgZmu4e!qQj486/R6RsIQ]E+:L;Z)W/tc;ubk$_J!To\D`mrMs%;eA-C:g(&5l\gmIsXfAd1MJ6NrhRsUhlh"our<7(QtMMhN,>jep0IebpE\>pB`iM:k::[>sO.abA\R$`%$b:FO"1M;N3,G^\c0s4:,)i>--W6>2VkI3[n_HYVBE7p5+*#o3sZ3d0/^J[O\)R7_;4.-%.$Z?DHc5O#QOb_2>A`iQgVuVB_o`9o%Co=?XXm-](s1$1@$<-,aoO3)s50_rhT9+M_]+aQ3(-SO2[$6nY(G"Nila"n%>odbetT1#9'YmrD1T1H0JQ$J-1(H^$rcR,Nic2aT)C"7Hd+THlIhr!Uqe;r5:()OZK'4IO\SbSXr<"\357cRVe:c^W&d6-="Y6SGr%K6dhU3@Tqf)W0Z,-*urMkN_ZZn#0SG5"t#H'""pmo!A4q,#XqA)q"t!'F4)(+A.0Dna/Z(;oeA1<'3'&4kbBl2,F_@X6d0k4YMg/e"\d@(0lsh2F'=AkE&sN0aSgA^[NW*UY/gk(?J(Qs2P[;>/]1K@n&B=_$_lD;((?4<_5T5FMSH#m5N+He2gr4&Rd"ga+qr%BW.t*g;ZuAoYlIfj5XUsI1gEi$'4*.OiX;WHJND'qWo<2f^"B:io5pD0#Yim4M9F\G8jD*[^ep$38BhKMDShg\@X3""Rj-0WnBHL8!:Q*8'P/d=s:Kn,qMJ7YB?^emD5jBj(gW$(#s6GS'S!Af"TJ>8&gaA\!r\`43jW8V;&pfm@7U(>F:_dr4jNH@R%_9YL1D<0CD"2E%.SU!nT`V@U'/lb4RHtYI3`),4@26`PNLRjI09,0MD.$f1XN?2,AJ"!d4fak"X;L-6;]I6E\V?d\H0^aq(^H7=17.1916>N)DB#=0W7(S^FmMBdsr(p-e@OW4\O.]^rIgUph;KE'&JJes"51>FeqEDf9H<\sE%jV^AmdM"Jc:C0?\9o!JUKPJt4"AI]N)St:W-kJcDC5:1I]X!VSFY:PYE$&ji\=pVr+?%:S_G0t,;aZ]N#(b9O-#M$Z7R5ajG&l,.lYn)rjCG>T69`"I3R[Bbk6N;HsBT5*)?-%%336#j"MYiMF.(:iadQl%iAHk.Fq5%*fi/cWtG`m-d;-tk1-g-Ob+g.o*:cdIJir0`a1nY_)"'B`f5=^eO6K1riWW];7L_a)<8:H.dp=\k-sb[/L]Cnm`,#;[6lWq<^6_T0LVAn(B>DEkl'Oo,05ndO=l%.ho4,&ppJ>kCs!r/!EjZ/0(SJ1aoF=nE/pq^emVq9Dc(LUA7X,`m[sPjB5O>-c)+q_0,2A_D,$Ria3mOiZQ\r^j)gq0+"Y=3+?+'OUrm(Eh3KECT6MUW&YRNHWFlNI30^UpSX!H(?F8oN&I"Zt*"&o[&6WL3K%/B5'kjhlg:W_qiW$2"2(n^*rE;T6eQ+im5d?Utp8`U[dXIU1Y[)6iYC",hYa.rWpRuYeEBu4k<8Wh1sR&G:UFSL'-`,oIpVK94./nkM>J]X1f%;R)pYP_16]`Oob*QdMQg9?goXRqSB?R9WM)r,s);biaaX;W,@&%~>endstream +Gb"/*lZ8Od'*%C7U<@\'EAeD\i?=oEes5Xqj*%bc@O\e\6$4X[,DcOX"@dRIWSHB[4WlFF+@*BEY3NIVf.]o`k0a.nT!8>PI['W*]`L/46haIZKtqpCMC*$kIL?tPUG#-[L/QJHUT_iZoQkpW<_X%\_esj!a`o6aN)u[nOtL)0?4uH0IWG>m(N;.h(10QsA7BXkUSGn_QSACQMiK5^i:6q-O&/aPW-^%=)7R1Gb"]L7ZrU:,ErM/pN]NcuAOg-A;"6=O0)g>(RK0GAc(rJlcna6[*u4V#(POru*[3s,]%aA%'?^k/4t6!u9rjl!$+r+7N2i0tKb`XX>HmS3U"/K&Y!'@cdqfk=r>T'6d0uTGb-sRdJI+f;=au%5]8WWE1^6LcO/#*B6HL.b^TYW8ZLkY5f\Elhi>%*3Z`Z1(+((5NW[m?*5=[42TjNln.DQ1mj&F(^OInUHB&_=3dus^WR_!a5gO>h7&qZ]N/XF+"$'ZI,5W>;!b#kO\5XGtQetk>\flZaU4[>s3K]K[-`X>$Umd%nl\!^9M5_q5epVoTT4keb&VV(K_-dsTR/_[f`FhPIk[c#;bYEfMn'+KdWTC1L#Ok193kkB2+%[H]8[?/HZ4jTFSC;$0b'+(^[`4&Q)/kJ-[@if66<&Qc@3!/Yj3?<[g\e\#+&lI$r0g,#<3=jOOL[oWo3S^Ni&%:-IUVd[:(mK`Q&gIQRbuLD\nA5`X'kp+j,DgA&fcXfoYTCb+^YA\$Y%Qo:>)#4/`i3t`t_.Ra9,Zd7/$Ysd[!q#0GJlB@g:.o?.lF*3/Pq_%R4Ws>PY/ItR,_S*U(Ud*S[ilD^NIWZBbG_Q.lMH3bY_60c5[.eT,\bom%-74l5Q1Ca`4j4LXfSVV">fTNGCb=aG?et[n@M,2kjV;IQIVW^"la%8gBI5p2`jW7&'6OD(?6a-Y>5==*^gS`O@r8f'n*(=DX4[C^$25>e`R$CsR<=nR]C,DpS.uj"reV*4AXfY,UOMYp:9^7\$qSime3I.mi3s,&/h/Uh&N9?N1UEcN$lDK^-J@+Y55&nRrbNIc3k>[o).A)W6AtXESVT2I'+=S-R-^g4V7sL$2+g*9.JTDA5RXMt8=@$:!<.&IPXF:1(m+\&_c,^.X$lGTp8$A]!rmePi?.2]*/oC0)YD_guG_/BM9V7[Ue]bp;Li3'RO/<@1kmlP7^0[a8s\5UlFI=QhABhst0aZIKGU<[O>`d:l'ON_]W$]X8aCAh'#Ih+`)>cp^nVBuY$oq`rN[0a+D"D+gfe$7Nd0#_,M[Y![,r@5:6,#f_fE,%57NB:^o0']^HD-_p"Y__]gs1L6KA?'l?s(\Fangi.Et](g7]V.Jfsfa5^h?NfV:\2pcS/5V=tA=._l%+W_#^-P:IJP%\LQH8hAo/kQ6bX=@eHpuDdM_#1OhZmS>,0NJ#b>C%_cN,Xoj"nR8J%(>@@UJhB$0]QF(cW37'APQb.%26+Q*=K*QCJ$_%f7c^M\-3RnM1+i<"QXdd`%)BEK:8ik9!1Ns't;nLh&;OqP32/h\1,&maQBThH\9<2s?g6W>rEMVO[l+?).ZP*-`7I9X9VdXds4tN"C#+C-mZ[dp>KB#EZ6[S8pl*][SW?XL#e;';.L.p)dHj44"HR]G=/cI!61&1FZGRX&]VaV.V3FRJ@U=R%GT#3k]l3lblYXS@u+Q@WliC?jMT;@Rj/_shYR1rfM8ZT[$MMNa)#=G3qfc&\68hK)oM]F[&s5-YE,4Ej2b$\Pg;Au'9[qGZl__4r*lWA(h*C-MY3_f2M.B5#EA_&^O[9Z*2[leLu;Nqpn/1r7>V&P8tLC#+LK#kD&bRaO+Ou0]flo&DFs%@tJVO7/?@`["a-]=TJkCt.X^E#@0fa)]9-Yli[TpcQ+MR;HIZE&1:"lut\be?\OE4o!g>>$(3JG)AbGjYK/prr@^jPM9UCqocQJL2P!tpU"e+9#bBFk%T`M7,"=RcJ9^VK[Ijk"2'^AJpcc`KY-e^GR9ho*RBJ5YY:^U;rnc?Zn.5nL>6cD`[o*?o.3]jNLmrE8K@7mU8YC[qH;RuP5M"(=3Ybqg!:.,Ta'ZjX-7Xp80F8*)%ps1-lUWMPla=HQTT1Po"dH;,TOf\boVHKW/^jlX<-JC>6&.Sa4*=,:5Pc=q=t>5WG4I6"c4@Zq:#q1^LieJNEDa6/#mmH'AVkp;4OZ88DL=OBl;^Upo3keF?Uh!+~>endstream endobj xref -0 79 +0 81 0000000000 65535 f 0000000061 00000 n 0000000160 00000 n @@ -471,62 +481,64 @@ xref 0000004234 00000 n 0000004382 00000 n 0000004530 00000 n -0000004646 00000 n -0000005060 00000 n -0000005166 00000 n -0000005286 00000 n -0000005370 00000 n -0000005448 00000 n -0000005654 00000 n -0000005860 00000 n -0000006066 00000 n -0000006272 00000 n -0000006359 00000 n -0000006676 00000 n -0000006751 00000 n -0000006852 00000 n -0000006958 00000 n -0000007065 00000 n -0000007223 00000 n -0000007322 00000 n -0000007432 00000 n -0000007537 00000 n -0000007678 00000 n -0000007777 00000 n -0000007885 00000 n -0000008001 00000 n -0000008141 00000 n -0000008240 00000 n -0000008352 00000 n -0000008499 00000 n -0000008585 00000 n +0000004678 00000 n +0000004794 00000 n +0000005215 00000 n +0000005321 00000 n +0000005441 00000 n +0000005525 00000 n +0000005603 00000 n +0000005809 00000 n +0000006015 00000 n +0000006221 00000 n +0000006427 00000 n +0000006514 00000 n +0000006831 00000 n +0000006906 00000 n +0000007007 00000 n +0000007113 00000 n +0000007220 00000 n +0000007378 00000 n +0000007477 00000 n +0000007587 00000 n +0000007692 00000 n +0000007833 00000 n +0000007932 00000 n +0000008040 00000 n +0000008156 00000 n +0000008296 00000 n +0000008395 00000 n +0000008507 00000 n +0000008654 00000 n 0000008740 00000 n -0000008826 00000 n -0000008971 00000 n -0000009057 00000 n -0000009165 00000 n -0000009310 00000 n -0000009398 00000 n -0000009500 00000 n -0000009615 00000 n -0000009733 00000 n -0000009845 00000 n -0000009945 00000 n -0000010034 00000 n -0000011150 00000 n -0000014704 00000 n -0000017696 00000 n -0000020575 00000 n +0000008895 00000 n +0000008981 00000 n +0000009126 00000 n +0000009212 00000 n +0000009320 00000 n +0000009465 00000 n +0000009553 00000 n +0000009655 00000 n +0000009770 00000 n +0000009888 00000 n +0000010026 00000 n +0000010138 00000 n +0000010238 00000 n +0000010327 00000 n +0000011490 00000 n +0000015053 00000 n +0000018045 00000 n +0000020924 00000 n trailer << /ID -[] +[] % ReportLab generated PDF document -- digest (opensource) -/Info 43 0 R -/Root 42 0 R -/Size 79 +/Info 44 0 R +/Root 43 0 R +/Size 81 >> startxref -23288 +24161 %%EOF diff --git a/docs/ALPHA.md b/docs/ALPHA.md index e827aad..031ec25 100644 --- a/docs/ALPHA.md +++ b/docs/ALPHA.md @@ -14,6 +14,8 @@ Last updated: 2026-06-04. Use this document for **feature freeze**, **alpha buil --- +--- + ## Table of contents diff --git a/docs/ALPHA.pdf b/docs/ALPHA.pdf index c48cb6b..8ef4ae5 100644 --- a/docs/ALPHA.pdf +++ b/docs/ALPHA.pdf @@ -153,7 +153,7 @@ endobj endobj 27 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Android Cast \204 alpha release & QA) /Trapped /False >> endobj @@ -248,10 +248,10 @@ Gatn%:N+uI&B4,6'Q[Hf?%`g_a-(djgUIE%'Q'RS/dsV#=\GP_;YBI,qAm^RO9BEn"G-UmZ7,:a2fG;0 endobj 45 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3662 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3674 >> stream -Gb"/*>Ar7W&q801(gp_!e5:>&A?cY_R^Cb3-Ec`PJOP(k`M-j#](h(ZEme=06ckK;ft,PtH.i?Z2(2A?iG^cHDe?)$N#sACIh;[.R)@UB!f@?V,q-@#_u']kk=:"A.@ZI2+dob^lX8DSA8%!`mpS/hW0FYgaaeX:MTihR15[t;-tf1I$'&q/Q9`%Tgk9q8TZX9[.cWa!JpTs0=]#B0Zq(93-ErGW0U=,=,?9]MafD1jjn.YQV_;Cu"rAbNUO+p;tI_-$c/be>B=E`6ZBOA7p3IrqL%eOTH%7<7?H`-+5J33J8JA;J"\Dr3Ql/--_U9L22-WK;iLDNW`'C@86&Ns:fXn7.;r:!3mL]V/YY+RLZ@!OS%pNT[\E)CGHKj\mFCW(6g9V2re-3.!"fD8cu1s#<\r>=W4EbF-p4iMS67Pf7hQj/;_p[">@LSlS'K%8.sDphgHI&ZPc0@dn*6gTQN_o8lk[hIm/K`==L:gV!^HBl>&J9l;a39RU>Ci8n'_ilR5M)0nL)c(V%Rr`OUATOqi6&Ke5B&P#WKu:FgZUT-,&gh)]+[ZS`nUJr:ZY=h:T)FKEtI7&]$J7ml2uqS_E`]4&k70QhsE>X[P64uKk;fG4pX2*nrgfb&m[*$o-Xi8U4rjYdH;;dd[l^.Uh8Uu5ssNa,jrSDB2YIKL@rca[b?UbkOaEL/TX8o)0'IRtB^kcD)oqSaU-_E.:OnTm`S+3l!?,X,M8,!>k[)N6&qT]tp#XS`&>a@!MC4[1JnMN%OfC#pfsE__>cs.UiYbHt(aX8q(N-,F_eq^/M'mZmB*h'oB/'%n7$%8UH"hHW\sD"6U:8gd]C=;p!=*6l$1L3T0mu`fE(d+8g#isKW99HF:A$TIWl6VNi^_c<16QV81O*7\GPpE?Lg(uOQu@5N5G`8aSOT=Q>B6hs]=k4m#465+*\MCBEUkK@u=1dt*lp;N#g4deW9=AbuJP$0UM@T:R.im9b4&eV0foC-Vb=3Y0YANd^YVcaGCHJs^/.F`Tbs!O6EY3R"Se1Ib\)4"0ph')Br;5%+G^_ljr;CAVH26>jp_PtoBepaGcO+)Grknn)GsK@A\%W^&iZDj"6\]Phft>oSnaif'5`EUbA4]jnG!'\VFu_f!Y+rgkJq.',YOJP/g4FnDm$7`RPFVRkoP_p3,SfL>L_\/m(8`PQLL[stn@n!-.^m21)9UbgR=BI*hA^(RA[B6j?^O.Da6\\2#\\GY6+_7FBK,fS]:g8Y%-Wb]*#MS7Vih([&%%=!3FGZ\PL%25.Jgp&JIna4@-?&i<&1@F1GVnfDob:=!op!9P!%Y:p:PYp%3;'P3TT2C3m(WAp&M-pg"'ksX@1G^S"1E6Bhn$UP+Y`H^\\I#F/m[+lrsoY$^]IfG7DHLRacFmrlBfDlV@/%9b70%ED5UK.5b.=LLq80FZ@V.*e3\PG%&_MbSOT3Kb@6"bE7]e?`<3pmS*3Ip\h`2u(8cT#@l>m!jCG1ST(1aq2L8:i3BJHFgO!1mJY'1o*#Y>Qh[WI2iM`@fO>=1K7e<(i8Pq?N+So2TT(!bZh#&/!=0+Hk[K](qEaT9^Y7T\QTE`iROP?a#DJ'?fXW$9/[ZK7F6#L`O\W%Ng2UjploXCQA?.L=N<8(:*)T)M`5SM4RIEDEH?K;.GSWl;V8+$F$p4%fQ\AGQo'N%;ZGDYr;_1rt.QKK1/][YIm?h(Ap<7M2e<MMe#'R!#iia%t>hqs$(%CNCReUqG\H#j/Gc+:F#&RqpT68TDJ\HH_]j3=3p"F'?C711bX!"bHDL3tf2Q8.L7aJZa;;'q7M'Qguoc/&]3Mf3a*C>&pNhkXnhaaY5d(KW;%EQE%F30?''s!=+ng]'FKAGJd)7gbFJ>Z4R0<]slLG;ueAGfj9TZII!ef0/)'LQ`$R_=iP?0mus+4N2CJlrXJF.6GN:h:[s:T.muN?#G95^l:lkU[kt"^ttk8XM+`eiXdLRH!1HAO*]#Zf3f#ANRlOGo8n[%C1kiZ^CO+AV;/Mba6GbVes+G]K[:G03om88oBD6b_:0E21+!8:_/,rFa:"cngo[lg8iG@rUeMgD3Toq3gq\1:^K0LH%]`k^m+k(8Dn'nEOCD4PFI0J$!Q_[.<3&1P6$Lc;*c;:V;en9@r6JA6sr[Z\qZabjc=n+2p5PhPX,GW?SFl&^0$[K*"2cL!hGVok:`iK#NRL*GNA8,(Z'K:01Z6-R9L@=EF[!_@C]5tMG8;p_,7[b+Eb$o2bd>f4u"<6gYnO=WHn?#g41O3KDile0n'YMZ"eg*g&_JRL6[]L_J--h'[#I#SF',4Cq=\X!D!.l]9R`o~>endstream +Gb"/*>BAO[%Xua-^s'NgM509`aj*)[DUN,m0!=SXB6H%O7^;0EN@mDhPaqBt0.9u/,[6Sup,q^[[rj,t+:*QA4oeVK`fH;]3tDZ_KaFPk@T'OA+DjFg,[d1,MMApTPTD<(^>oAAB_r7HWJd)+C#.Pd=0`%*(:Z9-@McDF1uD:hA0>POX\d_#kpD/1CZSR\p/m'3IXWI"9moUnd'oNYfW.d[7fo-KGD7GHN;R*]-C!rbC]7;bDJ!D2i[*Y;r3%kO:$+//i$WM'+;OhP`q2)EpMT=G#F.2K!]Tjn'9P]4>L+P2&u:C/\.Hib)_8Z89$5I_$P[V8.^Re[/_)M=!rPp>O&R<*?[i5:lt:8[Ds(I=US?mMl"o!N'DLZFsn$-J>9,D[HZ%VAS\&$sQULdqKnsRcT'SfG0*5>u_9#o6+-t_b=^q4B`>A4FUMG$+pjX9=fHIcmiDOc5ANVXYR(*gT"k!+DHib>;f$29eFI*D'71'@%:$\6bdM:&ZT]@+UDn;FXK2%d]uBb6LkPX\Qa!IK3YPl(kB7#LM"[::dA2Rj$Et%*8pQ$t$I3S:f9;5Ds_2GMn3_W'aOp!Y`GM`Z#C^LdBF:o6GBUoa5P1osGf-orcL\bskoiP1U5s.Z+m=N$(R2"`?)&E\8]S'@.)PR8fY>TO->nQWT\EMq6Kq%q\Ssd'BEqt*C3fH;*sCO0"uU1m\5e""brQ1]@9>@$D.+[aOTD9r,+Lj%9V]*i3*$@dMR\VIGWarXZGnbRBr-jC#YsMAlYVUf6)S;E#ddYId[@:k>1eVrEOW0D7c-HAn!aMGaS.V3B;Ofg$f-beAJu12['"X`W2cKX'\"EH6A%n#QKYsU,(j`[='0gA@RN8kc95Jaug[*^DGik-=UUQTnGbEHO5,HT8V3C09b5djXo1FM1HCS!ciYNU),Ami+8\"7-S/0g1s;ek2QsBW>27^Btmj7l>SZK190B$Pt0Hbl)JY5-biqaU$N+E#&1s7%033d/Rl\tW7hfXne`-Hien6,m[)-^I^nSM1[),NiO18\TQF[e76Uj]45HRc3WugZh4WS#%g`G^a'0#]\*T0aF@QmQ;\\;rQ)dn`'Z6/G96Lf?c$blN4'QkR77X18JFoWE:(@S"35U.">DZKalk[[mPUn!2?T-4@8la5+Zuh6Q6%8WDsI6gYW.YGM])YXACIFa]^kGKW7AoI]TH\gQ'-8E&0!#3,]b^`l#1V[h_9LE;%.%XkY[m`Qu^<-\Xh!N:Z3'VPrfdX?Du#PJOVM9jNHrB9/gKcU!hn3@K-d06"`b=eB'0MS9Z3W*X'cmuic+R%3rMPUHo$/^N:/#XS+B\l62`$`ZG.Ljd>jGCN##'^1Cq[fcP+F(8RXot[R4`4qAqH#dk_t$>nG.J_3&+4;/2arsPDZj]oNsdbjEOLNF_rL'p*XX25olC45L:59=?5#=JWhp.l+%sil^4VQ;T7cip#^Egnr-D/LK*;1mYY\cM''i'esQ:ldS8!tP!K6P434$nYO!^='<^UP)*5^4gBO2di4gH27`=qU/,p_,J^j\+iJc!(A<*gJagUNn29@i($Q-7fE+^(PUM91YES2eJT`]p\$^lDdE2M;T,>/me4e_f\fpc3]Qhc*NK8g<(I6"O44ta&1SY.iSDj(a'Ya\>kgZTID2Y(S>;j@M1lRO:X%-*X)PDW`OH?)k$a++nKJ3@XZ\&iijCuD9@;G3Odk;7e?W7'hI*t=4VD&r0lOl^-l_GOoi[e7(Ge>5?5dLSO]J<#FpXQ*(hm$Lu9&]S-(8UDXj6q%]o3/i?mXh\"$$!WLG7<:70s:fuZ/feZLuZSeM23C^+sqO80B@NnF/PRT5(VnL76#?lnJBbJe_SIF"[2^$9Tj)BT:k>Kh#-rS5Vh(K2?0p$q/8.gdhU$:uEB:SGd7?7(.&6aX;Dp3#uL%rE$;'iBns\6HmK!5n>F"*g^,Cd^QSP6#X(f)sPP]$hu`HS%+efJA:IW,7t+di`tq2S1N5auiRn:sJ8E3H4@a\#j]uMLr;If]MNg3-B1?`A;("EP;*fk,)sqpc'oOaK.[.&To-.T=BjLURCp5\bEJ1GD^Sl@s=cM6s%Lt:kcHam\"/&>9)olYdc;][9K4kd9_0bfs[MZHDQU!d<.t.jVB=37jsG&N!Ga@h\-=/bVu\*d!'M/O?#V-I52tKpO:O8OX)F?K==gmQ>ieqc^G,UBjTDq[A!Ng:[Mci98>9Y+SH1t.)m(Hnq:N3T0T'u''&mY'lB#eL$4O:^A#KKYQ"c_TKI:R@No^6\1&sfMFXr9<])l%eeY'A(>u(3o%,7DKOrm[ZT'gUjTBcR5DqP5WDdR0N]:0@+;EDYsC@Oendstream endobj 46 0 obj << @@ -315,12 +315,12 @@ xref 0000006111 00000 n 0000006193 00000 n 0000007236 00000 n -0000010990 00000 n -0000014443 00000 n +0000011002 00000 n +0000014455 00000 n trailer << /ID -[] +[<8e0b29f4527559737151344ff53c0eb9><8e0b29f4527559737151344ff53c0eb9>] % ReportLab generated PDF document -- digest (opensource) /Info 27 0 R @@ -328,5 +328,5 @@ trailer /Size 48 >> startxref -17366 +17378 %%EOF diff --git a/docs/ALPHA_SOAK.md b/docs/ALPHA_SOAK.md index dffc9fd..f8a38e9 100644 --- a/docs/ALPHA_SOAK.md +++ b/docs/ALPHA_SOAK.md @@ -10,6 +10,8 @@ Manual QA on **two devices** on the same Wi‑Fi. Goal: stable show path without --- +--- + ## Table of contents diff --git a/docs/ALPHA_SOAK.pdf b/docs/ALPHA_SOAK.pdf index cda0c43..2ba8ed0 100644 --- a/docs/ALPHA_SOAK.pdf +++ b/docs/ALPHA_SOAK.pdf @@ -92,7 +92,7 @@ endobj endobj 17 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Alpha soak checklist \(LAN demo\)) /Trapped /False >> endobj @@ -145,10 +145,10 @@ Gatn#?Z2Df'ZJu$.F)EaD4^b-L:sG;U/$WX9]7_Sj:\Ap!+r[GW\=>;1Kg3G;**)SZ31fqlgqa?a-V@3 endobj 27 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2547 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2557 >> stream -Gau0F9m`A>(>e4US>D_0;C"GsXPDUq,h"SEA*8$qNIp7o'9'FDRV(%+5"B!7rkMp)H/-mMM'M7J?gg".J;GA2ruWcm5#'tqB**b'A.HO9Cm\JF+-VogT9.SsgG)sj0l?E-hf,ZjNR-Q;5"I/+e8Sg$"CgZblWg0f"e,67H%a"8(1f%Mmj!o+]S">`3/JE7#3o@.N;jRm:KJdA`s6pr>&[$cP/@g8)RYLNEj\3?q,DM:ZS:<5ahfi)'mg3`bX+K\bgZ]cKj)Pk!WNo+6nEVZE-!L;;&[VGV'$G!-K/bIE?Z,.P`V#i0/GW=n9i:&?AKT=1MooTe1cFl^1WT2'260BE*]fYQ=9X>E\&oGTkes<(nO*M2F5_<&O(qnChIEX6='@O/ARP5V^PGm<`<79h\7:OB>aH;l61qkb-csejPnrQ\TmkqPhc-aGe)MU*S7X5oa9bP'l:FOelF))QlH!k.j^q17a2Lb2,)=9p(ACjGg\"n15?(=M:Y,c*=o[T\Ke^=5eD4r:6+.=8Q&o9;EB.d;OrJZSEKmd\*Yk0HR#MU2D"gQgN:2.CitsC9F&`lDh>Z!`#bGt8C@E]$C5Ld'-t*=VItE;Brlr]W&alIcYumI.YO:QX'hQS`-]cDl+(_DiVklhAY`gZEfgD8q#Za>%E3GZ>4rO/NNGh>&[5Z9N$deQcFg2kahF'tA#KbWFDl/c%m2=2a_U6=$p?Dk(qja@fSs>?"XR(d?bMHk'dm:3Gd3Al.Tp=_E,m?#YM";LV:#C)$fe.95p=i&E03K:0'ICP:n/IpG.A?pQ=<(L?;g8DMgs''b""1Go!pN>gP_=@pBT[T3$dM5k0/\'?n.Nn[BZ29=[@rd)Cj?&Clq;T5DoqJKD?,aFaTJE7Y@(P+$*?C0,:45$.!la"6,><>q'<;PK=>"a>IQkMYZG`!7cdQjO8]^udKMr8jg*`JR"WllVs%)[?L!s4G$;>ARNQ^6N9$(_1,\7E/ia(2jM[Q7g`RaCk6<=)0RN`&]Pb@`/BZV!(X>u#qbU>Zf'M,Y:HG_50F`d1!'Hk3uKfeo>S6dh]>XR[=<4=-R(T31UTR)f^'G6JQSH>^6YRD*%E!h*qkC.Bd>F>BHRIEk6Jk&%n=lUd+>QKH9j;A!Bf!R4P(,mW1C@gB-V\X((\a".R/4^)UdKis^TSH]od\no>A?]47fh#gO)$R2rlWfq&J028rY0c;P7cs6IdjMKO$,La*Lj[b]pQgW[=XTq-90S9Y^@3o['pdPoHWbor?FY#0NsJjsP%Rh"a4[.V*!p7=4B9u3BDl:p_cBQ(uJhnEujqs&pEF`c72AJm#/CkS?_e8S-kO6DK*&"`XlSBYPJ*uGu"bcOus[\M3I,?sI,C]`_Ig\>[\eE'=Y*Pn)Rs@mDqbk5ftiP6lqFL!gY0J02Xm,%;BbQ&+,Bo8Gd?FE\.L5I_?1^hS.`8l*+!9hEl@ig-T:2OUb+'\'3uYgskkp#tJU^)l`3;=;W\.k$@\6Kf]L>p'a`6gT[\8HSLTMpK&1#&Us5)]8?OKIf/G_i]2Wqs'\0JSQJq[oY#G=q%(1f];"0B^B,IWSbD)gI#1F5M+@[UOB?CAhY6NP&A\Fd:16?40T[&>M2u)p'J/&,18[0GM=*M0RTAXJX)3-(I=!t0QFL(4UM>"gJs1Za\m/Q<~>endstream +Gau0Fb?s#6(>eXaS7Ti[>t]VmYY)ITJLRF[K\K3Z_GQ*na7?Y";E"L.kK'hd&'']=IVB+sjl_,=)lD6Va7SHm-`!,D4,,h=9H1Y'cu?(KNR-Q;5"I/+e8Sg,!b1H`lV-;7$T,1cr!7qY/501Hho?j,GR)^4E>$MD%Fh_;3WCOUSeNEgir_GI/NG(m`SlS#7dYT1>\t$i5#pG=/.D;PZJZ-(`?#'pZ]rcI0su[ITp@H6^jed8(+UFUgmj7)Qp`]1$-3sUM)ed+'MHDn-"L\"b=k\h4Q#\8(F$oh9\\#-2,'[_cnidp$)V-7Nnlh6o*fB&_ZLQg_fFQ896^U48=\fKeu5%AV.`3&Sghpl9XF&rRQp=rN&ePl<+?uM7`a@.*YXlZ*Nuo;@1K9u=C>5UfCXf*GRbbI"@\r9p__kmSWQ2EFll[3XO\'ci&?3gL5-rL0?0G<;N5rl$fJ]l6lb%%9@2;@)\AFS@r]E'Pqe@6BgdBfoB%075g7=OWeXulE0.L*?L-Ys2:F#nE$2;m5T2#^TlZhK=WsUF*p4NG"@Z?,6-L,:e'd=f\H!b#,sKmPb2J`ikPm98paL`5mQnX)/X^#k44CKjL<..P2!;sDo"cYkUI0;P'256#@U*$GKAd(Q1m-FPkYgYO,WsPmT;0X'cp7?WE]lF*h^jNGm?]a,FnbMs*pXX6gE>7JaMp<5>RC64dS!6[Ebds'u2(60^JJXNSETA?>[]20uu(a"*dfU+HNH1i)Mdfm%H=f=60EgeHYMM3Ik)%2Lnm)!-,)FR(tFE>h%E-5"dIrAeuY2c2@>KrD\[;Ef3-61;.Dm+&?h(KUKlWNJ.:16qO>4sl9T+1]E$QhBb&?RMD.LCn7KUgBaI.j]F%t.+V'VIU/Ogfbl.7hNmB,GP3g;Zn.^L9BSY,pf"/+;(#A3LjcM>f&iJ[lrdRfeP=#[bOP)2hS?`-ge#I!06*>Pcd.`](WsfL)EalTkFrD2,7MIm2ZnGd`aSAbAXA_3?O<;)\%#tS)olKrmC#&`m@)Dt>#d:IM[gCsW68g#1:'S0"C4c2>"to.9;K-Y`"U?!1=@+N_0brObc^3[*Y)D=N)b>%Q=n/-i"P^S*b1V4r>#C,Y@iT*RE>=-(=6Tu<'+7aU6G.AmgCIo,jQ+U>)tJ`dNhI$OGEn3%VVH^.66$e)`q^rcF*;:5,Ma2ld8U70?hmIldWt:d:Fi2pKD)TkT5P[?4`f)&tLl&L2+q$_.9ds6Z_W.PB1)@O%e;#QQoX.?b1H>[3#+J^^MDhLQs95XWDC+Y/`51,%qr^6S7GRY12L;@\@"eNl(N3ID([DE@0F:hRC9hdE$B](HWX`@d\F%(M0o%IY/]manSR$[J8u'LadhFT]sE5&^F9R4np<<T-pgoOjW1RHO:e[Y^&+imd9uAn2`=4TGerkj;i:Co2f5@N;tO>^8I)h"'b89Ba$Sa4kCmA^I/Pt.G4W%"f@]S*S_5^.>`Wg[ZpB"!fr.,Cc4iXKKXhi`cZU$!FC`QW4hgl8%c_LL9//s*rD+d8tF]^;J6O!TpHm;"h/S*a`c;,N[lYK1ZGjnp75OV]H,Zr'M)@BLr]Z28&3P@m3Sc&Zm"grrh8/Q%;?o%6a"C9fWVb-akM"Y.37MBcs*G$MCgZn'C!k"7\^&=TW-sN'9:;F2cABVYTR+)be*3J$[3"[m2;ML`3?:"HSLTMpK&1#&Us5)];bekIe)`UiYdAQs5cM$SQKLkoY#G=q%(1.2<7!HhW=DOs5iiCmBdr_P=nSq.mt#;O2Q(.o=g"CV=9foFpdh0MLdTC8ph&BVI75XQSIG2MfnL)fendstream endobj xref 0 28 @@ -183,7 +183,7 @@ xref trailer << /ID -[] +[<512734ece359c2ed680f4edf5d59c938><512734ece359c2ed680f4edf5d59c938>] % ReportLab generated PDF document -- digest (opensource) /Info 17 0 R @@ -191,5 +191,5 @@ trailer /Size 28 >> startxref -6615 +6625 %%EOF diff --git a/docs/AV_QUALITY_QA_SESSION.md b/docs/AV_QUALITY_QA_SESSION.md index ed820d7..2cb29e8 100644 --- a/docs/AV_QUALITY_QA_SESSION.md +++ b/docs/AV_QUALITY_QA_SESSION.md @@ -15,6 +15,8 @@ Research and recommendations for **movie cast** vs **video cast** quality enhanc --- +--- + ## Table of contents diff --git a/docs/AV_QUALITY_QA_SESSION.pdf b/docs/AV_QUALITY_QA_SESSION.pdf index ec0dca5..5e63a4c 100644 --- a/docs/AV_QUALITY_QA_SESSION.pdf +++ b/docs/AV_QUALITY_QA_SESSION.pdf @@ -214,7 +214,7 @@ endobj endobj 37 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (AV quality enhancement \204 Q&A session notes) /Trapped /False >> endobj @@ -349,10 +349,10 @@ Gatn&gMYb*&;KZF'Q^[$G.3E$*Sieidf9Q7-<[AM$5a%^M2p7[U-_aQrUq8S#:)c:0We`uQ=NSYE=P3G endobj 63 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 4785 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4795 >> stream -Gau`W>BAQ/%Y!lMi1mnYA;RmD1V7_VVRN*AbpI=@Fs\lJ7,-M^ip,M[qp=5L!:"<%=*Mu\ag?mu$3UA@p]/YJOl8eBs#WCfYErf!:*Brjb;E-R8L)DonojiggC#="WTfRSl*k(LIp!nU1l(rTr*7cYjurXCO/m)>A7mPuMP*@LYJ:2rbsEHCQ>].@chq^o3=SidZ%D!f#HY[g(F5a!]DQ[p*0ga-ms26r.W^R:9VjA"jAGeddO`[h0T^SO%*YJk.+p@9$P&+"BB)q`gUO$fRPY<3Sm&_l&n&Poi!EOI$7n=uOekGpel@b:+rS2?,m"XeEFb)VlhX:#C3'7SZ"A=/P:XsAl3nS=#U9uT4?G*9k[2C3R>o17O.*K)oF_=g,hTZ/6H))cSU`V.L`@4Hg7#nJq6PN!g`-F$L9LZImJ%EQTp.^)C?]_C#r+36'nPB3)Lc9YbV/0p+(#;RYKY3nlo[6]93j3'.id>T]7A7jR@OF--C$$1e%Nl7)F_[>DVhX0Hg,g?^VcL(T.Qc;+"c'JdbI_hSip[3`@Y\<7.9,-3IONuch6+VIs8@(&HR]lFsmldk=VLQ7643r@^g!82B-fKD3Bg[iEB(D$f8]QaaFKA*3XI6$INX<"%RBk7(5t0t6CHW>QM9<-S1P&/u@Iu*:(LW&VhDrDSR,s!uV(-/XPSSG"cZMU?Vog5-Q2b&nF,f^P!r)>=%MrWrVIB2]q,S`i`AAFSilQd#3>XDo"i@e26Sp5SIAntg&O5M"+Y0%"7T7u!1Kkr^f)sQ%p5[I)N(\0VL^:_%j_U`Ch288iUS-6rj*!HlBW`aL>%X;Fi]`($([n$=f'^/Y`s-l+I8occXn83ad0skjqS`@#&#$<6#;A&+N)7l+0_r!ln7hFe.!672,*td1kA=^M/36hilo?MI'Yt+Wj'@$"o<*f(pG-8co#HU7RWaYpci^ic^kk$4MHP<+:d!0JV=+DD'X-0&0$p3*C*62%6tP(L_Y<1>nEM&U)\eDlZmlq='S^$_AnJDh#l5bdFdh7i;cf>=<\99%5Gfp4?*B8L-\LZDIWY:'[6.N0Ibc*F]5%%g)I27Hn:RIdZ."M"'1,;fm:m_/C`1b$NpZ`k:t?L"ji%8^AXW"BdTQbCF=DU2.crjdC"PAOp(?jal:cG7A@j/0DG3TODph7bh'2a@aRP>G;qFQ&4,Y?L9/SA2`Z?"aQkq@;fp1IBK)(">`N7_'*Rb.4#p>J_XU3mIq-(l+_9-#WpoNlo#`ui_V*CX[bG..qN.iuY<9NE:KnUqG"9@:P]a8l5b8>lgkb3Q$#'g'dH(t/Fp$0Rh9`*kjB>Yo>Lo(58_U:j1E`%!$;\[V16X$kg10bMjYb$fV8*Ge\RqEE"grD;BmQ1(e\9Wm#YnJi-bT.WR_FC0J+Ku3:D=^al"g>XlGLP@X?k`_j;2TNW\3j,L:=9,p`X#_87[MtdAOWFBZ`dT#bp7fso.9M<#QS(dr+!5ooU9AR?uj9\nI\hKLohi/%31=\_$9kWNlBfhWbPg6CUY^G*X.-?.6T/Xfp!-RS@iAr.*qV&&8lumA0$4)`:G>t\D^@*.#E?\eJii?RSTNjAcUqB90mLsATK#-1f!S5E8"Rb,kG7_i.=cj!7)AdrnjW,Y-/6L!ZWYZ"rXWHIs)!a)nQI%a,t7Wj"Y?%IV=NVBq<#8dmYkQL/pP8U#g9hWp6Bq.G;q7M=^k[d8]]D)MpW+)6:q?!k:SVVCGj@4p=R(?lE#`&(9MY]UNne8sZ/C9T+k4Ju05(+#3Pi4Hepi.$lLCHM8-W`(0H=(M6oeP[rLDX&ljPrI9=Are:hXr0BV83j-+()._`^nd]::=[JB&:3#r:(1\,2fiBb.KajJeUW!H%6K_[:ctF1""i9;5T,'U@2n>AN1n:]L`Ts93D>u*ji+J)a#t:)J[MOponlUbDbn/r9,u==!S$rA#sA?rbb&U.2Q.;Z&gEf19XoL.OghWj6bp$^`=mG'5NPdN*>;HdjfYKmlnJ_1h[0DM;P'3]HRm0G>"&9F??hW%&SqSO`P`$rp81>^>!RNoGQB-EK-^^&77V,SU:9MpVp/f3N@L8pAVTfSN#.F4Mt.3>_esg#>6l1LLJ/4lC$J&l3!@']M5l`-]kZG%gL78&A[XYJ'+ef;[4

'73:"'1[rNJ3O"*3N7)PUn5K.P+&r[IV)U6#,\QZ>m7!.#1g?bZ#mW?H#8qgtD<$[j\6*k\b]D8?"/oIPYN=D=V=G=F6Pa)3Sj;,RItQQVl]813fE^TQ@#%Dl8:QQ^d2"&Ll'_GMN]r9CE+A#.^h'`8_'c]Zf=._K=N892LOFq1u]K@(GbGJBBD5i'pocTH7cVRX?KM:rLn!m*BLZ1KUfNSmU05_P!-f0?HXh$VLR;go7[ddL&EM[2\?7\.C=m`s/*?Es@)'9&:fuk=,(F7cZm"7+^n]`s8#ibr#jrb@"ULW_g[,.D=bup-`Z;4LH/brtC-M/m.c1J8=hXVL:mKNaXQ1FQ/,Ugbg+p-nA\MtQ*?/?XYAst[Agq6e(',R*,BONqgTRsE_juo1dAO/AF@d'PQrNCc]WUHj3FQAS=b[15K*^$*)1.-m%tRIl/<>a8$=@:+5q:9\G0't[-hn'pc`T2[]p)6@CEE4V,;S2=(GSH$Y1?]7j:6iF"Fo^NrMoj]Og)/1.?1^tbOQ_0qTYCWA(p)d"I]lgbPq(2V3*\%35Q;FiJ;uZNc?K3=brX8'YVV(~>endstream +Gau`W=``=g%Xua-kXT8p;f(;1f5.RQ9TC^Zn^pI6VTLP+fogZu6fB3/o8qkD5k>]/;jja>=(5+a7&'c>n,[3",/Xp+s18:TYEreiNY8@RjdK"?d`D!Jr4[RKm0,(RC:[qX\uZLmZm8e^20]XdiC-qtU+0:Mj?f/CC07c:Q;<1VP)co2\qS(6nIoi^ff_uq'>%K.KH>u<)[-6M4X]>gR#lG)PF#hU(VH^-0:i?pSho@e8QlN:'[OiaC!YUVO%#U\^L`GOdq?P7XV88SQ:qSq8\/Ko.eM_VHfPXK7WreD(NWN3]SV4T%p;6)KZ1ai[uAAe[H(T>?N($'JXrCK#'NbcP6e*I/"\-N`:5c`bgUDoghju8r+P7T`N"u3$1&IA!rK3M`qM$5I!I?_Z0!K\JenStDAL:fJfAuOjWmMLf*)?V!C'j^1/(:.'T^n!$b'SX:qZGM?8UB>Mgc-S?t#j.Pl>uXJG$u8NKlu;q=XlER+bjZ:p\[:JfHLl.WoU>uG4d)OR0gWaQ;eU"Eb/<$.K88;;!6]b:fYX!Y2JRA),\8nlBAgpCTpWfQ]#i_+E?+4%a[H't.nP8i\Q.'d;E^)RqKG^5-hF)p>RNr4C'pkpQmTAa_mX6;B!EY_-Dn<(6M9rYr)js^BidU>Ck&RP!Tn9>_(^f)-Qt@,k7e"@bP*d,XG0MmGGlUL=(5PeCQufe%2E8crH;r\g$Jkq*Ch!;9W*u7<>_u>&3@>2-^`tnbq7hoEq/SL*W7oI0*j9m!8u=Z7Sq5RO8Z\j#cBjKI:Kp3R=fBRUje+qF+st?)I\SZcgg2[L^1-ao!'NR#S&3a1PkPDmK8=kf2R3q<&8k]EW%8G#"3rgGm>6gMo+K^R5j0?,dF.-LkAU\`A*6b6KPGLn_'U*R,l:,P(Qe%\d9sUQ#36Lh?9?fffFb/3un+L]j_dhM,;q:C`maO+e0A(jT+:E>ENN6Y$l!=?*J!',Z*+JgRNH9"L:TCmi$b/+C)Fj9O4Ho&9%YZ2q2mZ\ld[AcQcNR&8oDde+1cUMU2I$bd7:\u^NMc6PE,'[C(>%<^?Tf'.U2[2.M097YNfmqt!6Bfd[S[G]!J(-T82_u4,p5Fn5.8]*&/gI#NRGB2rNHC1JLpG3@6Gl-ZdhX%rZCq0f*f\u9MMF\rVQTm$\2PZ-#G!2giS5M'XXU3#4tkSHOr.M,Om<,u#ZUi&VE:*8cMbi+s7KUusZ0Y>2p.2up;56!`(fX]p/47?ESldRW#Ra`"tp&2IInR>[?##'b^7&F=cKHG'IX0K3sbo,u4FP]!&!8@k[75ZR\>0NteJr\o+M)CnsT)<'-F4pt:1Yb(Z:r`h(%#jMnTAlL79Zc8)LFnMWIO-`99."@+M=WQlV%[b9k/:N3/h.!:tb"F]X=o;'3=!31/**$'0IR7?EB4!WF3mMo(Mankp7al6@qPbF&[$*faP7@Z@[C-"&M.TuBKUF+u.Zr'Eb-%[u0LSj5'4Y`#oXLhm:FV07Q6s`0]SmXq-l/?#oa!]8E:[m8+oJi`hHpP<"?-k]-uib:_M.<+76'M;=p.l'\o#2#ADl!>n8>\h!K;WG,\kjN#BqRGeS,e.d$Pq+;si&g\?$CDc0Xa+Aoe8d;*>H'+TfH>0#/0=%CMn_*giJ(I=/t5$"@\'I0CEs@CSUQZ"$@TKrSH\;n=Q<.S#'J84nrm1u!%K!%0F&!6TA10SJ3<'XEb8!g:M9&&%2+$^;n;L?ac)"3m`>?o*?(^L\NIJ?jljEuLtO:H324GLK!S%raf_+FrXSP>pl0j=b;I%Z^`.G!p!qJQ2iUd!'Xp,d>G<,,[:(1mN6R+p`JL(;$EEO9].q:l\q3iGQ!kl`jhrLsdpNA,nnL0a\2&rp(bb14Xe>J>-.E]_MfWV?tV>Z99]3HH7fSdZ+g+,,pY8"6a10b!1VO!)7Zf:6RMH:6<)GYDhl&<2(5F@L2+;[sV;j>s97?.+%:KItn+V1:>o^J8YI:#6Ip-6k^+:*LF+Qk+)kaZpEO2,1")-AMS-+#R>p[n9pCRD%iT*,G\r/GCc8YjC)L\o3(E5LCaB`p!"H"O9V9&17(oGii*/K@6E$R'ThZdAX1=WSDVGt9Xi^>K)1o;9J3eM8CK\,4o3.U`0p_T]e+iSt.>MWcbf,s3(1'I\^h=DO^2@&`1W!r7M,^1N@J$5DNR%Kmg7GI1:V.WaqD2^P]pP.@\dQDWlg$$6=\4uD-VarK%K(siT=74'fW>qlA>.].1eq;q2X%\TF9RJu30.8)/a1$:4Z)Vg0?#>T/YkkMNFGQ*p/$F/97pYWqQ7H:f2trA.g/1fGumN?(P?Dbj0\:NAShGB0X>=WZiPbY/6VWPP&fA3N3EVn*JR7<@b7-;RWTh*Ee)!FSA"L49prR3,PTLDpGg7MWhSV0ESKhm'\YrA["mnl_10=4,:j:cH$$)>/92kepr9@m;(,S%un)M=pka&DI)?ZdlSO6H4B0T.=h"(/"45fRgDgXthjIJV0OILQ0&.?@ZWH2`VIMd%,=B('Y#1E)ile7/(I%lQ^G2"tNbTZ'Z[XT)kKWZ&cS/ERf+I5c`R^3jqN,7tDpto^fcj=IZ;KurRA0<+HhasSMea$Zo;X8':F<(oGV2NCfKeZ]DVLes@MHBf#[E,X2u0m$!nQ2[YI!\'C?9UOWoq4f@>4eAK1P3o7p$"I=A;;be]k4l,8RiI0&2630Hm:A2VfAKn$(Kk#e-=6:'8\;KLE-01$fZ"%@o^%@'t*ln3mC*'>2$jluPG2MqsgC8m=(ocTIbc;7O>KM:rLn!qWmLZ60/f\6Dq05hWM-U)pOXhHnPRrHu5[cppsH)5%h?7\.CH0p(]*?Es@R2uPdfddt5QR(9.m"7+^o?B0>#ibr#(*F;QUJpTWFP`T,bZU$_W_ZYB/]D:d2Y=+hbm^jTh=?pcmM5jBPk+`6,Ugb_-3E=EKfE<6?/?XYAm2S)gq6e(',R)aBONHU4m)8YcXah<0fMNshs=.(\%gVa*VVkt[k(Mhq(;$p'ZfL9E("V(+2ecA]P\_:+9RY00`Xus?"^,BG$el2L3k.,iWg,`@W,eTQ7Q1i5W+gA<]+;t2-#o4mU3srP^oUbag6^+MR`#V#u-.ij.LZD%D02[Ag6Q'I:1dN9DKJuX,OFB_Vn-!<$h'6`oSC-%=N\eB7=9oHU8ALd7GmD&FqaCa9[rTT$7C^mSD>8!bJ4_5r+^c\4M4d^!#U)>a5-D%GP$-i3EAa+$@N3+#(6k*E`_'#0U]hWN?WC/?8PQOjnOA%[c7(I0T9_(\h]Y("2sZr@5t/eY-1%e4q)V8ZT.<;j=]cu]Ymbn$_1tJ/Pjf.'A#*nI(SEO:H@P''c&MIV>K-i_1.hgH19s[]tn25E#RFHpLbJZS2>[dE=M?N^51jUE2__qT"k)JRgEFg7sp<_!fOj/?MjQK)rA"JG^QT\k'#NW7IZJP+O=gE0Ut,E;.rlW^

j2rVf^b^Wf(Ig#`GkWL%JP61Tc2M,gcWMoq+qGq[Y0NlS;P)KArW.ipb.j:Xg.~>endstream endobj 64 0 obj << @@ -448,14 +448,14 @@ xref 0000008844 00000 n 0000008940 00000 n 0000010299 00000 n -0000015176 00000 n -0000019372 00000 n -0000022898 00000 n -0000026881 00000 n +0000015186 00000 n +0000019382 00000 n +0000022908 00000 n +0000026891 00000 n trailer << /ID -[] +[<13b148972764fd620c33507f36faea4e><13b148972764fd620c33507f36faea4e>] % ReportLab generated PDF document -- digest (opensource) /Info 37 0 R @@ -463,5 +463,5 @@ trailer /Size 68 >> startxref -29267 +29277 %%EOF diff --git a/docs/BUILD_DEPLOY.md b/docs/BUILD_DEPLOY.md index b687211..0e10a89 100644 --- a/docs/BUILD_DEPLOY.md +++ b/docs/BUILD_DEPLOY.md @@ -8,6 +8,8 @@ --- +--- + ## Table of contents diff --git a/docs/BUILD_DEPLOY.pdf b/docs/BUILD_DEPLOY.pdf index 01540f6..3f3db3e 100644 --- a/docs/BUILD_DEPLOY.pdf +++ b/docs/BUILD_DEPLOY.pdf @@ -107,7 +107,7 @@ endobj endobj 19 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Android Cast build ecosystem) /Trapped /False >> endobj @@ -171,17 +171,17 @@ Gatn#?#/1K'Sc)J/)JHk0\&\%r3UL1JIU1mT?".:6h&m( endobj 31 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2951 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2886 >> stream -Gb"/)>BAfF'n5n\3"O[l]J6uBKK#/GCsO]na`qVKPH'^b2,XOF'l%TpAF*%P^ZVsV+ERX8GOr3%YlXObgs:1>UP":cHMZ6!!F/>aIB/!<^gmqdV-#F^Kf>4%?dA:kVDV1dB:rB]*8-4C=[QGi3H1`J-q\;XuR(e.P>,g]0Fa]hcqIVi))[$#9c[OCo,6s'[>,4?k:Kp8W)XIk.h,=*80&m!t1egiqm4>3Mk)7I2_0p=apjI/=^3rq42IMo0fr/&[$(:UsC+@\2^;23tdK>J=5?tRQh(T;Wf'H>DrW``B>1pEu>$=T]/(T0E.nji9'd:r(+XF,RYmpVQg>=CK:Y\HAg@(fPK3Ad>_/PF2r0jm_I0pRCQ\Pn9[/CKn.Z#@7KH=d?k7S@k7\"n)DS1`0FL399iKjQ6ft]f5+U:48n;n,njlb@C@r4<21o#=8N38uXr)=)4">()@Vd]WjPm6`-0nA5e1k;4(!Q,ac6C&m553*u:BhN:9:fk#de"3[Y)q.nQTk^N/_CP34-LmA,XhP.X%tTEe`BQW)QQch:"IOa+jIs`@*8_S%6iu7u3TF*Q=**+r2eJX&f"7kTSB4`6T8&@:o-@'bQXCdEOG'!>1Ff2QaIiVIVfVl@3=H2[J[U]qd=C.2GEJ#TVr.Xm1o0m^EP[ONmLk_FPgS8nLis?6V8F91Ws<^f@JrmmiNOdq<[LT'$)441c%P!#k\>+G.V3:FgAc`0<85GjVE:]FoG'_L_/NU)mSElY1qruD^:ARfqXEYH^D6&:[=/&1pu12dkPLb&RQ5#]rA%2_pf(DH_0-'Dh8]IJYqlK*\m1Hj67QqZAdi-;H3g5qb&9q91O'12Ctj,7YlBr@D,HK&E%!o$C"Hhn^Pni]6X)BLjKrbbIoY*`G(`EjSmcjm5bcSPhuddGNW@]pCV"?D;KjAUB,7)rKF+aQul3@dEk"D"[6\QK?o`9&0C^iil88+Z!PjTU3>,6i[<)LQ4%#/C%)@f5(o]5d85tsg0h96F)Emb1uu1:3r.rkdcG'FWG%rOW*,7Vj!eqeeYj.!q*t,bpF3C8`HsUK'&e[LWu?4]-n-*d*qt,#)d!p#.Tek/_6['"rcZNFn/>79sll"`t3?E>"!_\0ODf'unUie57k2+RD:,eDrQQr&Z?Q8:*<.EFm=jEYb[%^$%,:,$8E?l$6GZ'YJ@NPjCtY[Y4UREe[dk5I.r0'_mP4%9V'$c8P3)i.kDj"@8/o0Eh/'7^&n._hu)em8Rd<%SsO<^S@-."XD5?3\16Q2o*$\?*C$V-:P8_%N?e.+cPn=FMBMnbOenX2[u%G#cdkD[$s]0-)7,XG9G6eZ=:LgZCWeFI?%-n=1d^.:mj4!#552n2FAVX#19g@d5ac"RH:#<:WPtri^\Q_?P*iKg.<+V)5VFp,Z>P=*Y>;'d!i6/]n"1bB]+X[6`mFOd@MYIEgK2*Hl#tndo47EkS,cM+\!+ql*b,7-V3-i1%>@%aFYV=#VbZOC]Topq$ZD\"*;KGoVdgJ@_BOPZFH$?;!iEOEL$^tlD40@lm7^#]t\/4j";O\gOdouhnrZ)587]`UBJcaWXgJZiWH?X3g3sLP%.dP#5anQT>q+CWapn?NK*QM='KK0[AUM`#]ML*@W\3kKN(3VcBC.jJkcj3:IOVJj<$2Q%-*j-D$nh-1YBH"raYWVA8j8Ka8p!0XEYD_^l#clo7Wa`@PZ;dQ[*`d0)Ytsq.GZB?:U>4Q(*.3_=T:r[g>H=`K`(RQ.WqX@L`GuQCS)h>mG]hrYdnB1/r@1a%sTp@)uZW\OK?aKHdOLITEAW2oh#s17Fh(u#7tl1X-'3fWK:@lXcTsNbEYN8RN.u3QSPMtRR;:,ctrF=_qMfaLmm,kMBl_g,s.Wn*rrEIWReCa.a1Zse%hheQ5?$+5@-YtRKZ?r=OTsi+FAYgV!A`IFKIPXFP$0>2\7V>nG*]Z#sfDc-`7HC?"?rR_9,KKEb`75"8C^PRGPsFBb"1,lOGJ)A.Jc`r[W6g882$2,M=C$@s/1R\@MPk=fCe#hpr*a\=ZX#_#2n\lD&1]6X6-<6$lR0'g$ag&D%8[(pA~>endstream +Gb"/)=``?=&Ur?8k_Gskg(eT0"LY4.OclnMNb+'-;\c0/6XWI%$Y$=rJ<$Grhp[41"@7P@`V%thQ7-.D^AI4;l(I"%T)J:^!94BaDfsD9R*7k*'FQ6Hn7H_7gR2BlZu!^$D9[[Kcqt4r)W8350?k/(`>iRfSdCipS$pj2_&Xp+9lp&&YS>]/p)N$0MIu-sqZL,-:\a;cg"4ggd<1hX^bDPie@.p@4O6JSi!\c)0+"O?O>L+g-j`#!"=uTha`j-M,\?\Gj[@QeY0.L%mC&'6'O..\P]E*XYbf5[RRulB;X/9o#'cRQ;-/I#q$)0khfF?;+*6icRf)Hk$8o#AI=%eHcB>r:\S>U;3+p;(,6tB:^[Xk&GqchVLM>,q"qgB$#;!S-/)"+Yn?SV7i5TqJrnhB$n[bi96-#p#LaQG,D4X-&ER'Z829D7jo^uZM[paRZsOYGWXp5L4HgN8efY[Zcir;&g+5d&.hmCd,8Qf=^5GZV!25sf0,`F'q;%KP)l!F?gkVW[j+FtC\Cmr,O_g-K;jC5b??8RDC#[/+]VfDd0.KfI\*5HMq)8N.t^bCMRO=G:QlK6$,uuHBnZ:?Va@J5.17AFUd1-49FI5h0H8([*f$@;;%-lh^kn8fXqkZN;eA!($2lj+12S+'R;TdrUrNng"N,)I\3Krde*-5;k^*0rp&<4ls(^*iCA[q`dJa$QcZdu&CZ_.hp<,^pd:7#n#MZXlZ]4uPnG.fa,fK&(iO?]bcK:W]hkFaE"?,lJEMtQZ5Stc'<%bZaa[e!9>4h>)3G70HE;<-;Tr!u2D18=boGOm'+oPM`\-@RY?h?"kD,`+0S23bPaA0SR+2-4S2P3VLh\@3%#qfE#c*k&7;Gmtmf)Oe@1=&2?AgONVuNPR9ib1ncHT8L+%H)RP::4Tr<#G^%70["8'%ce]@E&6c$23fJ`MZSonk34E*:qJo=SrA3h,a]5uOWB7U-&j0bBDjrA!f^a$i&?r+J)KNX38,9SMIF#,.uq&KdOcdc%6CWoNhHW(3_L839-A4WQ?%+u+G5l_K7-B#DO>5]%j4^5D7jrm&3bN<+cDI*:,CNR[9c+6AL2@jSqd)fb,TDpf7&)i7FgNA3UK'-2_N,9&4]2FZ54t@4,->Q9rc"5sF(i$[M*YN6Old.9MRq`a&*Xa4->=1An<+&C^!,EL*f;fhMg?0:f3o8.s_YaoX1XG9%T]qT5eVfS#U1>P**hG=J@K9?:I^EOf!1mK[+e>m]q_#g#-_ubskUC$=I=c'3;/aG'?6Ofj-6rj?-4>\B,K0@!Z3=X1jtEBc%bqr>';@_2MU%&S[[h*\1;nau01Q`=_$WCe%\"csS[\>qZbmHs6qmCd;^KNS1Fi8^f&/[>WZ#K9e!a].@jCK](=LEHIcmOlV3dd@bqkKcMR_oM`/^f3)06+$_+9Ckj@VbJ`HFC5oAJO01&af+`0U^T'R?n$mKF%ZM7-5-3[HNYop^DGDC1d'CPtqB6E^Om?mobf'=6@7"'tdIP0G.7fb$`+Zummaa3r296hIL@@5-3*g;k&`&`Np'jEJ+F:aiQpM@MimF0`ju6Q-RDrC'<5I5.:,3-L3ZJC(e@G]bk^!5uj_ad>ZSR@W<%R/s_K+I94$`FnVi9,U0'*@\`'*;]eO^1N$/%um,"pcO9*T&WCFh-'B[P4G,>O^U;L,mKH-T6@2_H=eZPiJq4CgTtm9`Zak!VXNLEpE;"d3Z?c9~>endstream endobj 32 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 1101 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1156 >> stream -Gau0A8T3?C'YaHG]ZV!a&5gq0kLK]?0qE;g*K:uE7)_bD;'kHd^!(C:P*4poQB@n,+kRLdrk>k_"0t(:q_'Ui^1;ocOd/C;d",N[8f]O10#_:?:P_$%tYgE7FT*!1]%qae6/hsXj(OA";ZZ`;*'OR%q5H^[TomA+Nl&]Xj3_a#@b"QA"7W:<"6=3ed^tk--<$]Yk\UK%nl*Anh[B0K@gam]Y1B"-VJT)FV00)K&HAGAs057[VL?n>sJ5hkXsinB=X+7,$':P1+*EXF:OO^2$rqf-9BXpFD'6"K5r8>41Yo3[2$UR@RFJ,6r"g9'&,3]kO"Z@]LYPD^QtCUN&O-s=tBt-Q^TC%-k1S>ldlbIdog-]0VD4;l"V^'S.i/5F4r?$.#E"/P2\'`D,Yl_PRrIT=2qQVD5r?J2K66O.M."foJmS3]aIVY5[,;"oi2<@8j3e\[=rCn.FnGiFn$GN(Qk5)VQ5KH$U;M93'XiZ=5D5rt!D`;*(fJ)j":X:3m(6_CNNk^B0ugHIl.W*CAnqAu)Y`:u:'A72Io-&\0m4KU`jk!8PWcpm(1$IZpe/?s:S\8>l_*E;^<4Hc@.XEmFIQ%HL`^5H%EG`4KmLP[0K![[ilCh#]+g3EE#24RNg/`;&*_Uk>F$A1H6^B;I_Y===-@rseX'@%p]=]/I.`niZX",-4R/IP^Ed+)~>endstream +Gau0B997gc&AJ$Cbb]l7Z(g(cmk"R'VF;S%U8(SO#'/V@,YV)n"^*]&;0f##2=\g"5>%A`4s./GkUmUmPTWQ=K_$YkZIUmiLsC)J/5eXc%EcK]a-E^`$C@keQL(/,(quH8ho(rT_PAeKa872V!/]OAdLP,J6#V\30W%\a;K1Q>'BpB$sV[75$\eb3p-1\RSu)Xldmie&tua/BXTQ$W2\R'j>sG]f>^L0o#QL37V$TQO_-O)h.l!O:[(cZjh*3Z_KNR_R:mpgn5oNNbXgfJSo96FIf4O]HoSJRe:OuAl32RQKqY!9ojKV3Xikj&=@S9aII-lE!h:87f^I,h3'.JONLpMred3=/d2e@,@$pRJIF6?ho19Mh(:%V/,fH$1ek$$m%gkNQ"j=D(WK\r>;F.KtRud47#oBPT)+8>a2>`U?H_t@[Yf9?>D0B];<=$^"\Y5AnLa/i*m>X#$q!2B`uWERVHnmocO'c:;iHG"1R8)8&&NX\\uNAK^6:*0!T^+rUT:,ZRn%X2&0EJeGHg0^3@*FchKY>$7qis]f'%STlo0.MW2]$R@r;t+U_=iRd*2sDBD'*X"EPRSF9]m%R7FO9\_;Sl2'_Sr?h&.ThQOjTEZ(.J_NDV4E0fr9F*7gmi^;gj:Oc0J_.NfaQbOdF[$&eh?2*bR&`-!=%MF9/=@pXVGWk]XNK314du&^4[5J"k;Ze"Dcq9\E=!=;!jOF6A9l^Xb36R$WuIUQR/IBo_T)N~>endstream endobj xref 0 33 @@ -217,11 +217,11 @@ xref 0000003861 00000 n 0000003936 00000 n 0000004649 00000 n -0000007692 00000 n +0000007627 00000 n trailer << /ID -[] +[<8cf59d7b8ceb1fe7a630b86e8c53b8c3><8cf59d7b8ceb1fe7a630b86e8c53b8c3>] % ReportLab generated PDF document -- digest (opensource) /Info 19 0 R @@ -229,5 +229,5 @@ trailer /Size 33 >> startxref -8885 +8875 %%EOF diff --git a/docs/COMMERCIAL.md b/docs/COMMERCIAL.md index 8fce82c..6b629d5 100644 --- a/docs/COMMERCIAL.md +++ b/docs/COMMERCIAL.md @@ -10,6 +10,8 @@ Ads, in-app purchases, and Play Store helpers are **disabled for normal users**. --- +--- + ## Table of contents diff --git a/docs/COMMERCIAL.pdf b/docs/COMMERCIAL.pdf index 154340f..ef140a1 100644 --- a/docs/COMMERCIAL.pdf +++ b/docs/COMMERCIAL.pdf @@ -67,7 +67,7 @@ endobj endobj 12 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Commercial features \(developer-gated\)) /Trapped /False >> endobj @@ -105,10 +105,10 @@ Gatn"?#Q2d'Sc)J/)JHk;EZ*@CtRR42U\C#qsn<9(cWrp?tPr&n'A3b> stream -Gatm:=`^>t&:XAWkXT9k;*`nu:QBL\G;iNn`-HFSPQJ.m)1bo*3Teq3$OjkifM6UI`#NObnYuEO2Sm2P/:YPSi*loRf-Zk!Ad^;0@`.OS\=*m+*LId;gEE`g(cHW1:CJbXE??gn7^LKR=tklN1l.p9CPBLRB9ZK+K]+?%rrA1OYr%/VSV8S[F8Wn<#c!`VL=]2=*'t+hdtmZ&:h"^)fe;7f`3C;/O+9kc_smC+=N#F>4XM_d&a1::WK3=ml;23jhEKIK(^m`V8tPcDip,#J*H3%&AW.Hi[2]R1'tB"]"7[?LfI#l),e2)Td*$r9PIb^f.>D!1pjt!g[1RDkQ3]NTM3(W+%GgnnPND/b[&"S@m5&$K%0`pd)Z$UI/9$1j_A]Il>cEIc;%Vsi_ttnqHP*%h-*H3U7eP;@_8E"B\\2;3I=EfVH\=\+b@%&[[B=]hp#eaWQ0%]$?Vkg$\".r26kk5EnVcRQIG:"q/re;$'TJC#,*=Q)Q_qJI!LOBra[3^>1;`[3R!aTbFK6IF=pg?8q8oD/k[/Ti5O"0C!c%a"Hl>12N"T1<7o:2*,f.sUiC57Id>DfpKZ#""?_IqGrSJ-n#B*-W6YB"Z+j5f4BuXYfNqYj08L.J&5U6M?AgP>9`oFu17T-8L*)F**p!Qr?^hJ32)1N:s)+N)s%blKls,R3NWFn:>FROE4"71K_20$TRr./c!m`U6mDDfL]XTa*Q(Qdp)pD7U(-9ZhQ*5#u[IZOdH$R^6IonXO-;J[a0PVW'$go8G%?cf`2?osTU._l_ZNXhG>VFi=a&d#"9).U%USo=2&[BJtZq(bh/h3("*6kS/J1m'I-BfcX@ZGGcHELTr7B(o_O=LR8h88tX'TI[tA$X2V@I3TU)0mcnudE;OY!*T-mEg/*A0*d(sG8\H&pq@8]^bcYhcUPeDU=X"V@q2q"GmQrD`-#J+(l"i8eg%JP_/(B5^/;mnqXXl[@+jXrc8It2g:c2j#b_?maBdTERp^4!`!cP!J2abMNaXY:6Z,!?M/ACZpp?B9jO$,n3Mg%FWPDUCh5NR.EnFqb#_"S6LJ,7$2Dendstream +Gatm:gJ[&k&:Ml+oOA^R@EZ,jk:)'WATt,r5^5rPPd$E@1U?,-*A6sVgTk>LQoGE=PQ<#0e_N:BICa:"n?Ind@17*0KC`jtC^RKPfIh/Pp((EQHN3^*NMPkPJ)FH^"MoUjcHsOO\;^a\>*nWl/-aiQSiL[&%ZETPGk;XFUF?!A6up;q'[jB!="ND,Kd@=)-$t@C>\OZu/lSo/@/0a.b^Q33>&*=m,%H[s8$Gf.&uB(b@@a+]7W)_@:LLW^$03TXK1bW'^7sGl[S-V&=$grKH"M5Xc.Nosa"$&Ypr.9I&lO-H[(bM*'/>PEb7+kh*+cm[gVfZ21?u5K2oGWLF0:g%ag4adr'>&7pUl58@L]9r3C'+.DZp4cJObKuNOjHC*XaOkE_*-'I5o+a`3`Zp6'^TcLj23Q"4=_p3Ul%nTGr,dYl]MR4cX>6;UVrI90>WGf0*,'is)!;?L^:?tdj[n&nDl7$'Hopm1pteQ7Y4&+c+Lk&F<:h03l;,7N:1"qsqZ'd9f[4"ol'3C.@!Ma]Bpt\4P$mo<\5u:$!4?dS",c,h40Z""`(WMUX:9.3)rZq7pN2DdZ[f=5%+$DBPJa;"9Ic&uRYWY0O`"g&W#Hf?-(E6T9[m+)8EXdl]C68*,)n;n+OP(Nk\>hHK_AXB'.Q8brIfZ@M<%g.q^30*3hkL>O:3TY->tXH8VE=#0\DJeqa>3PJZddTk<7.)e;S3p,HRe2&8V<,F,EE&@4K(R98h8fBJ%!)D"OC6bZ@bY&5Tt[i`ZG)gIuN)bQ4.U\>ojAlnk5UQXt]=X"V@)NpFhmQsP;Ji5j?F>eoDD#5dS'l(TGQUS-u^-\iq^t5RMbn0DAZBB2n/9'r.MD%$5+5d$E`*<@f4B>5tE9:MaLnc?"H.$60k)s5?_;e]ioQK(mWGrZ(CZ0bO">IY.@S&2U/fnoan1WBe8+VpSmcAO'fV.RP/%eEsdNa_'_="&<.I8a7F#sZ]#_XZS$ha'W)I8hc2,TP2S9]dSendstream endobj xref 0 20 @@ -135,7 +135,7 @@ xref trailer << /ID -[<163c9256d990211d309e76dd07e8f034><163c9256d990211d309e76dd07e8f034>] +[<9dc9ad10d8d6171032f49fab4ea6ad8a><9dc9ad10d8d6171032f49fab4ea6ad8a>] % ReportLab generated PDF document -- digest (opensource) /Info 12 0 R @@ -143,5 +143,5 @@ trailer /Size 20 >> startxref -4450 +4459 %%EOF diff --git a/docs/CRASH_REPORTER.md b/docs/CRASH_REPORTER.md index 44c6d88..9bbe06c 100644 --- a/docs/CRASH_REPORTER.md +++ b/docs/CRASH_REPORTER.md @@ -8,6 +8,8 @@ --- +--- + ## Table of contents diff --git a/docs/CRASH_REPORTER.pdf b/docs/CRASH_REPORTER.pdf index 266d4fb..ed4a9ad 100644 --- a/docs/CRASH_REPORTER.pdf +++ b/docs/CRASH_REPORTER.pdf @@ -72,7 +72,7 @@ endobj endobj 13 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185330+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185330+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Anonymous crash reporter) /Trapped /False >> endobj @@ -110,10 +110,10 @@ Gatn!6#Y4+*6%CF'^o.c0`Kh3Sa=pe5eql.YQmPIdAA@p> stream -GatmU8MuJ'9\WeZ8,0ECB,RV)gF#c%'Al^s+po>52H4ds))%8^mTGoRhJ8Pr,AmaJBf)+.L91d;RcH+Qf(lfVGB\!ahotE?mR)BtZq?[1^fVWMn$]KgNW+i"?!YuY6c3Y/mYo!2g_s$`@^q(#^#Rj'i3;?kqc\l74"0mOYPkuX7r(ED?_X*6biHpIlI7VR/)i14s&mLgP2>R'E!-`O$B!4L+rhRT-3;51;@m[e3ac"YkdXhkOliZ%0V#)>s7d^YB^5Q',DirOH>ua81!Q#h?8"M]cQp^lohNU2Vh-,`MU$?^>W&nE8rRpYClPUF8jY@iFs-j8G33$o"n6!Ld$i8.d+hhgNt\H%&=ml=If#5nR?N/E;lTsk[qdncm/o"O$85UFOuP*LT%=uFRp64F-lJL5d7ngB5F'fMMJ=%GQO-<#e1]55-#hVPS1H);U9SKW=L3mJ.gT]I?BRq==9VfiPjafYYg[*PMBK)!=tq2$^b+qQL"A1-0UZg87_Q%O8FOq)J(+9Bc+Fc)0B._,cTMs-^oN3@2,N*c.>iJIFu>Eg*Ws19(hOYWlfKGi@N)5";E.Z,U-&`lkt=StARVL(prbot\VfF^Lf^eRS8SHkQ+p@Dq'#G0C,YT9D+'I/!Q`>\aPpfA46fj#%4YP1K5#abDq?:JmX[:`p!O]M(C9Bpp&^<)nhblae]8BBtTbfeL4K^mM:(ap+E=XD+g'5U4`V$e:;>U=I>K`HJ0=OY+t4$".6kgh>b':2F'^\7+._N"?E`#aunB6W)gpB!"<]\cTT0?2>*]PV^`Zt:95"b$:<eOsh:,.Q7ORLn<6CK1fYeVF$5+g_K,8a3[^*sGRQKrPm20r-n6Z`I8a<`F&XRc.qgTt.aOC07V8^=?a'iHo8ipIFsY]W'p2Mmq=/Q@Cqq09'Xh$S)FDkJ.K8J(au$N.2prA7Q*#>DMM,h&edjO3R*s7*fG(:EeL0$ejQdmHCtO/9`5aX9P:,(@]Xf!>!Pn!^o!GKrNo%oC9D`"c>L/.eh5p=F5[+_toendstream +Gatm94gc\d\?cu=Y;!n]L]>*4,H;lls.i[SsbiE3rU&Z^O?U\mK!M6$nqrLbeUG>$Qd$tbsUr4c_r*@>B>P-DLjli1nn2,md#:>(GI_qeVtdT\n7G?eL`Is2-8Cb7g(A[kVu(+%#LjNL>=FhlT9Zi4Ug6#+^u;X&-F'gK#%[i50qAO*Q/rof/sU9(gOqq'0Npi."1QgJO%q+2@sJ0C:5s/kjn=m"kcI?f=.'6#nb/O?3%6:4.nQD0;X0l\PIk-G3bNIadbnbLS9gm9[(@j#S;)IZ90C/M4KXa;C"q'eI@_TqB1L3mdCS.GKQuJGdI@B8Z#RH'=_2hC@bH3L'.G9I'T+]m=eA#9UW1JF,Kb;K4^@]bcV2O"LANU7o]R%3+TA/*Cn32;[j"/ZNZ@k.Vmq4IhJ:YZgd&[^BL*32ehOCsudn:.QrB+=?."eRRV6W2c.N$C(,$V9WT)5QB?dqfoUZ@P,R3ib>'4\O#S\M*b\lpct1ejalViMG=:=kMYLT%7s%.b4!F'%in7'QTBkA6\JMMEdOfRV*JK\VWGJ2IlQ8r6UuC$&ok#WCgb@Vj2ekF.7n1$MBiFN)t9Vtmbd4D@Tdd*(r2na^hgg;c*,&X@QgbZ2DrH];_"8,CKZFEtN="B-c0aLsC@@lMiDEkukVNF=rV,N?t.af`-^/Un+'m>=Gs*Xk6.m,/pAp:KBIu!8m5D`<1A!"kk4>MXl?u[7&.#j6Z.BfUf%N9NCrd:(M3B-9&ikc2H$5@6Y1%J:fSg-VnPF!=.e7b?4I(L679:&))(d'!f_diiZAbqpkVU*D)'60pj9:n5C`-.(kh`0\>U$`1b=;1'UPs^tSMg,G27E9Y>GmhJe$7UoHPc!$'&>so1s];YTn)`J+%Qag:mju\)L%;f.jmMG8hpuXhY;lms!:]Mt&SMDqi2l9"U)3"[2Z@ObAuG39js&Wa5\WP>C5aZJ;?F-3fORd5iGN-7R.8mcOBEmEHM=djFc0>4(EC[aeMnU5;Em_CnE(4qII8YXl!tNT&@<%sQW/*1UNrY[Q4AfK*UiDYYJK1j@gW6&lNaWdB=U0^FuB'%[t&t:$[@3q(@XmI&2I-C8VOd39&]M>*\q#<1ck3XP[ug9JN?Z!](qV8QW_D(+D[(=R]ATAZWh=OND$e@>VE07D3pn@a&A^R`gOW9%u8Zi_eoCiMjq%e_sQ%PH..hL?ThX[;LVV7UTSMF3qbGG0R04:3u\lNt43TY=t=t\A8.3/.YM*)P^F>?cN3N*3']QlZ_HM`BPIk6t@/H~>endstream endobj xref 0 21 @@ -141,7 +141,7 @@ xref trailer << /ID -[] +[<4c86bec4fe3d879d5004ff9d9fa30ccc><4c86bec4fe3d879d5004ff9d9fa30ccc>] % ReportLab generated PDF document -- digest (opensource) /Info 13 0 R @@ -149,5 +149,5 @@ trailer /Size 21 >> startxref -4968 +4973 %%EOF diff --git a/docs/DRs/20100611_3_url_shortener.md b/docs/DRs/20100611_3_url_shortener.md index f254509..00dd3a1 100644 --- a/docs/DRs/20100611_3_url_shortener.md +++ b/docs/DRs/20100611_3_url_shortener.md @@ -15,6 +15,8 @@ --- +--- + ## Table of contents @@ -57,7 +59,9 @@ The draft defines a **standalone URL shortener** at `https://s.f0xx.org`, separa | Priority | **Post-alpha**; medium severity; may move up if BE load stays low | | Slug hash | **SHA-256 truncated (12 hex)** — reject draft interleave + Java `hashCode` | | Auth | **Bearer tokens** for API; **signer** for permanent TTL; operator **session RBAC** only for token admin UI | -| Placement | Submodule `backend/url-shortener`; dedicated nginx vhost; **opt-in** deploy | +| Placement | `backend/url-shortener/` scaffold in repo; dedicated nginx vhost; **opt-in** deploy | +| Admin UI | Hub **Short links** card (not separate admin skin) — SPEC §20 | +| Infra | Git remote + FE TLS **live**; nginx snippets in repo | | Stack | PHP + nginx + MariaDB per draft | | OpenAPI | **Required** in v1 | @@ -75,7 +79,7 @@ Questions from draft §“TBD and open questions list” and inline `TBD` marker | Q4 | Java hash vs SHA-256 | **SHA-256** (see [§4](#4-slug-algorithm)). Java hash is 32-bit, non-cryptographic, JVM-stable but poor for URL slugs. | | Q5 | Interleaved URL+TOKEN string | **Rejected** for production. Deterministic `SHA256(bearer_id ‖ normalized_url)` instead. Draft interleave kept as historical note only. | | Q6 | Authentication: “app-wide shared session, project-wise token” | **Split roles:** `curl`/services → **project bearer token**; console operators → **shared `ac_crash_sess`** to create/revoke tokens (same RBAC as crashes/tickets). Shorten API does **not** accept PHP session cookies. | -| Q7 | Submodule remote “available soon” | Track as [open item](#14-remaining-open-items); scaffold in monorepo path first, push to `git://f0xx.org/androidcast_project/url-shortener` before prod. | +| Q7 | Submodule remote “available soon” | **Done** — `git://f0xx.org/androicast_project/url-shortener`; monorepo scaffold at `backend/url-shortener/`. | | Q8 | OTA-style “invalid URL” on unrelated services | N/A here; shorten service validates URL scheme/host and returns `INVALID_URL`. | | Q9 | Step 9.1.1 / 9.1.2 trusted sub-capabilities | `can_temporary` on bearer; `can_permanent` on bearer **and** valid signer required for `ttl=0`. | | Q10 | Cached hit when TTL “exceeds given limits” | If stored link **expired** → error `TTL_EXPIRED`, not silent renew. If valid → return same slug with **remaining** `ttl` in response (draft step 8). | @@ -99,7 +103,7 @@ Questions from draft §“TBD and open questions list” and inline `TBD` marker ### 3.3 Shared session (operators) -- Small PHP admin page under url-shortener **or** a tab in crashes console (suggestion) protected by existing login. +- **Frozen:** hub **Short links** card (SPEC §20) — same nav shell as Remote access / Builder. - Actions: create bearer, revoke bearer, list links for bearer, purge expired. - Uses same RBAC roles as [REMOTE_ACCESS_IMPL](../REMOTE_ACCESS_IMPL.md) pattern (`admin`, `operator`). @@ -184,11 +188,12 @@ Internet → FE (s.f0xx.org TLS) → proxy_pass BE :80 → url-shortener php-fpm | Step | Owner | Notes | |------|-------|-------| -| DNS `s.f0xx.org` → FE | PO / infra | **Open** — see §14 | -| FE nginx `server_name s.f0xx.org` | DEV | Mirror `apps.f0xx.org` TLS pattern | -| BE `url-shortener.conf` | DEV | Repo under `examples/` or submodule `deploy/nginx/` | -| Submodule init | DEV | `scripts/init-third-party-submodules.sh` update | -| Licenses | DEV | Add QR library to BE license inventory | +| DNS `s.f0xx.org` → FE | PO / infra | **Done** (with TLS) | +| FE TLS cert | PO / infra | **Done** — `/etc/letsencrypt/live/s.f0xx.org/` | +| FE nginx `server_name s.f0xx.org` | DEV | [nginx.fe-s.f0xx.org.snippet](../../backend/url-shortener/deploy/nginx.fe-s.f0xx.org.snippet) | +| BE vhost fragment | DEV | [nginx.be-url-shortener.fragment](../../backend/url-shortener/deploy/nginx.be-url-shortener.fragment) | +| Git remote | PO | **Done** — `git://f0xx.org/androicast_project/url-shortener` | +| Licenses | DEV | Add QR library to BE license inventory when impl starts | **Safe deploy:** nginx fragment only; no topology changes to router/FE↔BE path. Validate with `nginx -t` before reload. @@ -320,7 +325,7 @@ flowchart TD Items intentionally **not** frozen in SPEC — recommended but optional: 1. **HMAC signed GET** — `&sig=HMAC-SHA256(url|ttl, bearer_secret)` to prevent query tampering on shared links; skip for v1 if all clients use POST. -2. **Console integration** — add “Short links” card to hub nav next to Remote access instead of separate admin skin. +2. ~~**Console integration**~~ — **Done (spec):** hub **Short links** card (SPEC §20). 3. **Response field `qr`** — include ready-made QR URL in shorten JSON. 4. **Click analytics** — increment `access_count` only (already in schema); defer graphs to Grafana/nginx logs. 5. **Custom slug** — `&alias=` for operators; increases collision/abuse risk — post-v1. @@ -336,15 +341,16 @@ Items intentionally **not** frozen in SPEC — recommended but optional: Requires PO / infra input (hard blockers for **prod** only): -| ID | Item | Owner | -|----|------|-------| -| O1 | Create git remote `git://f0xx.org/androidcast_project/url-shortener` | PO | -| O2 | DNS + TLS cert for `s.f0xx.org` on FE | PO / infra | -| O3 | Confirm BE docroot path (`/var/www/.../apps/s/` vs subdomain root) | DEV + PO | -| O4 | Approve QR library license addition | PO | -| O5 | First production bearer token issuance policy | PO | +| ID | Item | Owner | Status | +|----|------|-------|--------| +| O1 | Git remote `git://f0xx.org/androicast_project/url-shortener` | PO | **Done** | +| O2 | DNS + TLS for `s.f0xx.org` on FE | PO / infra | **Done** | +| O3 | BE docroot `/var/www/localhost/htdocs/apps/s/` | DEV + PO | **Default in SPEC**; confirm on first sync | +| O4 | Approve QR library license addition | PO | Open (before QR impl) | +| O5 | First production bearer token issuance policy | PO | Open | +| O6 | PHP shorten/redirect handlers + hub Short links UI | DEV | Open (scaffold only) | -Soft blockers — DEV can proceed on `next` with local MariaDB and hosts-file testing without O1–O2. +Soft blockers cleared for BE nginx + MariaDB local dev. Hard blocker for prod traffic: **O6**. --- @@ -353,5 +359,6 @@ Soft blockers — DEV can proceed on `next` with local MariaDB and hosts-file te | Date | Rev | Change | |------|-----|--------| | 2026-06-11 | 1 | Draft → SPEC + DR; resolved hash, auth, schema, API paths; task graph + estimates | +| 2026-06-11 | 2 | Scaffold `backend/url-shortener/`; openapi.yaml; nginx snippets; curl appendix; O1/O2 done per draft | **Source linkage:** [docs/drafts/20100611_3_url_shortener.txt](../drafts/20100611_3_url_shortener.txt) diff --git a/docs/DRs/20100611_3_url_shortener.pdf b/docs/DRs/20100611_3_url_shortener.pdf index 7b5dff7..0368c85 100644 --- a/docs/DRs/20100611_3_url_shortener.pdf +++ b/docs/DRs/20100611_3_url_shortener.pdf @@ -17,112 +17,112 @@ endobj endobj 4 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 716.2874 124.373 727.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 45.68504 716.2874 124.373 727.2874 ] /Subtype /Link /Type /Annot >> endobj 5 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 705.2874 144.405 716.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 45.68504 705.2874 144.405 716.2874 ] /Subtype /Link /Type /Annot >> endobj 6 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 694.2874 138.629 705.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 45.68504 694.2874 138.629 705.2874 ] /Subtype /Link /Type /Annot >> endobj 7 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 683.8499 115.1325 693.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 59.68504 683.8499 115.1325 693.8499 ] /Subtype /Link /Type /Annot >> endobj 8 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 673.8499 93.87004 683.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 673.8499 93.87004 683.8499 ] /Subtype /Link /Type /Annot >> endobj 9 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 663.8499 162.645 673.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 663.8499 162.645 673.8499 ] /Subtype /Link /Type /Annot >> endobj 10 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 653.8499 144.705 663.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 653.8499 144.705 663.8499 ] /Subtype /Link /Type /Annot >> endobj 11 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 643.2874 105.709 654.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 643.2874 105.709 654.2874 ] /Subtype /Link /Type /Annot >> endobj 12 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 632.8499 168.9 642.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 632.8499 168.9 642.8499 ] /Subtype /Link /Type /Annot >> endobj 13 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 622.8499 121.785 632.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 622.8499 121.785 632.8499 ] /Subtype /Link /Type /Annot >> endobj 14 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 612.8499 210.9825 622.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 612.8499 210.9825 622.8499 ] /Subtype /Link /Type /Annot >> endobj 15 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 602.2874 140.837 613.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 602.2874 140.837 613.2874 ] /Subtype /Link /Type /Annot >> endobj 16 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 591.2874 91.48504 602.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 591.2874 91.48504 602.2874 ] /Subtype /Link /Type /Annot >> endobj 17 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 580.2874 130.613 591.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 580.2874 130.613 591.2874 ] /Subtype /Link /Type /Annot >> endobj 18 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 569.2874 90.14904 580.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 569.2874 90.14904 580.2874 ] /Subtype /Link /Type /Annot >> endobj 19 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 558.2874 107.485 569.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 558.2874 107.485 569.2874 ] /Subtype /Link /Type /Annot >> endobj 20 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 547.2874 156.853 558.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 547.2874 156.853 558.2874 ] /Subtype /Link /Type /Annot >> endobj 21 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 536.2874 94.14904 547.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 536.2874 94.14904 547.2874 ] /Subtype /Link /Type /Annot >> endobj 22 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 525.2874 144.853 536.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 525.2874 144.853 536.2874 ] /Subtype /Link /Type /Annot >> endobj 23 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 514.2874 178.189 525.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 514.2874 178.189 525.2874 ] /Subtype /Link /Type /Annot >> endobj 24 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 503.2874 138.613 514.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 503.2874 138.613 514.2874 ] /Subtype /Link /Type /Annot >> endobj 25 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 492.2874 97.71704 503.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 492.2874 97.71704 503.2874 ] /Subtype /Link /Type /Annot >> endobj 26 0 obj @@ -134,7 +134,7 @@ endobj << /Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R - 24 0 R 25 0 R ] /Contents 68 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources << + 24 0 R 25 0 R ] /Contents 67 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -149,22 +149,22 @@ endobj endobj 29 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 391.5722 464.1984 399.3562 472.5984 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 36 0 R /Fit ] /Rect [ 391.5722 435.3638 399.3562 443.7638 ] /Subtype /Link /Type /Annot >> endobj 30 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 414.9242 464.1984 422.7082 472.5984 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 414.9242 435.3638 422.7082 443.7638 ] /Subtype /Link /Type /Annot >> endobj 31 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 424.2482 437.1984 458.1002 445.5984 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 424.2482 408.3638 458.1002 416.7638 ] /Subtype /Link /Type /Annot >> endobj 32 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 423.4642 362.1984 431.2482 370.5984 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 423.4642 333.3638 431.2482 341.7638 ] /Subtype /Link /Type /Annot >> endobj 33 0 obj @@ -179,17 +179,12 @@ endobj endobj 35 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 405.9572 242.1984 436.6942 250.5984 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 391.5722 107.3638 403.2482 115.7638 ] /Subtype /Link /Type /Annot >> endobj 36 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 391.5722 136.1984 403.2482 144.5984 ] /Subtype /Link /Type /Annot ->> -endobj -37 0 obj -<< -/Annots [ 29 0 R 30 0 R 31 0 R 32 0 R 35 0 R 36 0 R ] /Contents 69 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources << +/Annots [ 29 0 R 30 0 R 31 0 R 32 0 R 35 0 R ] /Contents 68 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -197,9 +192,19 @@ endobj >> /Type /Page >> endobj +37 0 obj +<< +/Contents 69 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj 38 0 obj << -/Contents 70 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources << +/Contents 70 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -209,7 +214,7 @@ endobj endobj 39 0 obj << -/Contents 71 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources << +/Contents 71 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -219,7 +224,7 @@ endobj endobj 40 0 obj << -/Contents 72 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources << +/Contents 72 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 66 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -229,191 +234,181 @@ endobj endobj 41 0 obj << -/Contents 73 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 67 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page +/Outlines 43 0 R /PageMode /UseNone /Pages 66 0 R /Type /Catalog >> endobj 42 0 obj << -/Outlines 44 0 R /PageMode /UseNone /Pages 67 0 R /Type /Catalog +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (URL shortener service \204 design review \(DR\)) /Trapped /False >> endobj 43 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175416+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175416+02'00') /Producer (ReportLab PDF Library - \(opensource\)) - /Subject (\(unspecified\)) /Title (URL shortener service \204 design review \(DR\)) /Trapped /False +/Count 24 /First 44 0 R /Last 65 0 R /Type /Outlines >> endobj 44 0 obj << -/Count 24 /First 45 0 R /Last 66 0 R /Type /Outlines +/Dest [ 36 0 R /Fit ] /Next 45 0 R /Parent 43 0 R /Title (1. Executive summary) >> endobj 45 0 obj << -/Dest [ 37 0 R /Fit ] /Next 46 0 R /Parent 44 0 R /Title (1. Executive summary) +/Dest [ 36 0 R /Fit ] /Next 46 0 R /Parent 43 0 R /Prev 44 0 R /Title (2. Resolved open questions) >> endobj 46 0 obj << -/Dest [ 37 0 R /Fit ] /Next 47 0 R /Parent 44 0 R /Prev 45 0 R /Title (2. Resolved open questions) +/Count 4 /Dest [ 36 0 R /Fit ] /First 47 0 R /Last 50 0 R /Next 51 0 R /Parent 43 0 R + /Prev 45 0 R /Title (3. Authentication and trust) >> endobj 47 0 obj << -/Count 4 /Dest [ 37 0 R /Fit ] /First 48 0 R /Last 51 0 R /Next 52 0 R /Parent 44 0 R - /Prev 46 0 R /Title (3. Authentication and trust) +/Dest [ 36 0 R /Fit ] /Next 48 0 R /Parent 46 0 R /Title (3.1 Bearer token) >> endobj 48 0 obj << -/Dest [ 37 0 R /Fit ] /Next 49 0 R /Parent 47 0 R /Title (3.1 Bearer token) +/Dest [ 37 0 R /Fit ] /Next 49 0 R /Parent 46 0 R /Prev 47 0 R /Title (3.2 Signer) >> endobj 49 0 obj << -/Dest [ 38 0 R /Fit ] /Next 50 0 R /Parent 47 0 R /Prev 48 0 R /Title (3.2 Signer) +/Dest [ 37 0 R /Fit ] /Next 50 0 R /Parent 46 0 R /Prev 48 0 R /Title (3.3 Shared session \(operators\)) >> endobj 50 0 obj << -/Dest [ 38 0 R /Fit ] /Next 51 0 R /Parent 47 0 R /Prev 49 0 R /Title (3.3 Shared session \(operators\)) +/Dest [ 37 0 R /Fit ] /Parent 46 0 R /Prev 49 0 R /Title (3.4 Trust flow \(normative\)) >> endobj 51 0 obj << -/Dest [ 38 0 R /Fit ] /Parent 47 0 R /Prev 50 0 R /Title (3.4 Trust flow \(normative\)) +/Count 3 /Dest [ 37 0 R /Fit ] /First 52 0 R /Last 54 0 R /Next 55 0 R /Parent 43 0 R + /Prev 46 0 R /Title (4. Slug algorithm) >> endobj 52 0 obj << -/Count 3 /Dest [ 38 0 R /Fit ] /First 53 0 R /Last 55 0 R /Next 56 0 R /Parent 44 0 R - /Prev 47 0 R /Title (4. Slug algorithm) +/Dest [ 37 0 R /Fit ] /Next 53 0 R /Parent 51 0 R /Title (4.1 Decision: SHA-256 truncated) >> endobj 53 0 obj << -/Dest [ 38 0 R /Fit ] /Next 54 0 R /Parent 52 0 R /Title (4.1 Decision: SHA-256 truncated) +/Dest [ 37 0 R /Fit ] /Next 54 0 R /Parent 51 0 R /Prev 52 0 R /Title (4.2 Collision policy) >> endobj 54 0 obj << -/Dest [ 38 0 R /Fit ] /Next 55 0 R /Parent 52 0 R /Prev 53 0 R /Title (4.2 Collision policy) +/Dest [ 37 0 R /Fit ] /Parent 51 0 R /Prev 53 0 R /Title (4.3 Draft example \(preserved for comparison\)) >> endobj 55 0 obj << -/Dest [ 38 0 R /Fit ] /Parent 52 0 R /Prev 54 0 R /Title (4.3 Draft example \(preserved for comparison\)) +/Dest [ 37 0 R /Fit ] /Next 56 0 R /Parent 43 0 R /Prev 51 0 R /Title (5. API and flow corrections) >> endobj 56 0 obj << -/Dest [ 38 0 R /Fit ] /Next 57 0 R /Parent 44 0 R /Prev 52 0 R /Title (5. API and flow corrections) +/Dest [ 37 0 R /Fit ] /Next 57 0 R /Parent 43 0 R /Prev 55 0 R /Title (6. Data store) >> endobj 57 0 obj << -/Dest [ 38 0 R /Fit ] /Next 58 0 R /Parent 44 0 R /Prev 56 0 R /Title (6. Data store) +/Dest [ 38 0 R /Fit ] /Next 58 0 R /Parent 43 0 R /Prev 56 0 R /Title (7. Deployment and infra) >> endobj 58 0 obj << -/Dest [ 39 0 R /Fit ] /Next 59 0 R /Parent 44 0 R /Prev 57 0 R /Title (7. Deployment and infra) +/Dest [ 38 0 R /Fit ] /Next 59 0 R /Parent 43 0 R /Prev 57 0 R /Title (8. QR codes) >> endobj 59 0 obj << -/Dest [ 39 0 R /Fit ] /Next 60 0 R /Parent 44 0 R /Prev 58 0 R /Title (8. QR codes) +/Dest [ 38 0 R /Fit ] /Next 60 0 R /Parent 43 0 R /Prev 58 0 R /Title (9. Security model) >> endobj 60 0 obj << -/Dest [ 39 0 R /Fit ] /Next 61 0 R /Parent 44 0 R /Prev 59 0 R /Title (9. Security model) +/Dest [ 38 0 R /Fit ] /Next 61 0 R /Parent 43 0 R /Prev 59 0 R /Title (10. Integration with androidcast) >> endobj 61 0 obj << -/Dest [ 39 0 R /Fit ] /Next 62 0 R /Parent 44 0 R /Prev 60 0 R /Title (10. Integration with androidcast) +/Dest [ 38 0 R /Fit ] /Next 62 0 R /Parent 43 0 R /Prev 60 0 R /Title (11. Estimates) >> endobj 62 0 obj << -/Dest [ 39 0 R /Fit ] /Next 63 0 R /Parent 44 0 R /Prev 61 0 R /Title (11. Estimates) +/Dest [ 39 0 R /Fit ] /Next 63 0 R /Parent 43 0 R /Prev 61 0 R /Title (12. Task dependency graph) >> endobj 63 0 obj << -/Dest [ 40 0 R /Fit ] /Next 64 0 R /Parent 44 0 R /Prev 62 0 R /Title (12. Task dependency graph) +/Dest [ 39 0 R /Fit ] /Next 64 0 R /Parent 43 0 R /Prev 62 0 R /Title (13. Suggestions \(PO / dev discretion\)) >> endobj 64 0 obj << -/Dest [ 40 0 R /Fit ] /Next 65 0 R /Parent 44 0 R /Prev 63 0 R /Title (13. Suggestions \(PO / dev discretion\)) +/Dest [ 39 0 R /Fit ] /Next 65 0 R /Parent 43 0 R /Prev 63 0 R /Title (14. Remaining open items) >> endobj 65 0 obj << -/Dest [ 40 0 R /Fit ] /Next 66 0 R /Parent 44 0 R /Prev 64 0 R /Title (14. Remaining open items) +/Dest [ 40 0 R /Fit ] /Parent 43 0 R /Prev 64 0 R /Title (15. Changelog) >> endobj 66 0 obj << -/Dest [ 41 0 R /Fit ] /Parent 44 0 R /Prev 65 0 R /Title (15. Changelog) +/Count 6 /Kids [ 27 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R ] /Type /Pages >> endobj 67 0 obj << -/Count 6 /Kids [ 27 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R ] /Type /Pages ->> -endobj -68 0 obj -<< /Filter [ /ASCII85Decode /FlateDecode ] /Length 1045 >> stream Gatn&>>O95&;B$;(%YO._Sja-]E&0f'%0+9IB/%6M48f_lsM1Err%j]0"Zp.#$I5F._#"\4?bs+&E/C^^T.k&UkHX,$C!ie!h,2Rb"F]Ep[7b=e!3KsZ6G8@aRboinMJ)Zn2,t/(8imKGa_'H!@1Io1neq$Y&sQJUbpYoMTf)>4bD.J$f@M$7`0>IBXcCfFjh.O.Y`=D!OR"lBK*;K;cdUD?SUslaV64!/TW2!0"]u=P[j_%D!>_mRCUiWKfso12O?`(bpU%EEH`LA]:3&E)je`7QYj6'VFQ]$*_0JRA@H,IY+84,.PHQ*qZR2*X$b%!X9%&1W"BMB;)_C=KM&[CRiAp]!5@4YVch2['?f(o)V],RKsAT[0!F5mJK^ndr@p8[bkSuii\VDlb'=Rk3CdZ.\,*?sJ);#.Wg2Na$s=X/Tce;;a4b#=n^("::qBT4$s_];/KUTQp!uJNs+Q=H&V1=K23$9@WqU11D?,W]FiAd[ehdl'F^3S8Ck:1)2$ba8aJ"uA8oAQ%M.4E&KrQ0p9@C",-toiD6S[XQ`hn%(=6NI^5N!*@2Gd%N);u)&QkMs\?qcF#IiXkJWb*%IjWHUFiCTo_*0R$bT!#V=7&q7;jWYic/a.]Y#>'rVjO49>f\+2]FuB^kRS"P#MeEg`_K?OLN2F:6g$Fg'hX,CNcIS\SlINhc2Rd@AE&B]^\+('M_Q`/)`r*Qk>OgJkN8cEaa9nPNadZ@e]g"mH>Y4~>endstream endobj -69 0 obj +68 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3816 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3805 >> stream -Gatm>=`^(T&q801kc4NS,Sji&Ju$\E'0@Seal5bPe9u;$C(+U/(]e&1[a2.l4i<:^SQe^\T\4X;rONpOAGdk8?[E=Q@1A,j$7IC*mm5>I*S+TVI/W?^.j^[a0."M@auZUt;d*q%NpCX$(FmC1WjIHP*Yb#lJ&NF.0_pI/pdA>RSHX2BVg]'EF%G3%L@n>^Y*_)!ZYR(ASPeNeICQ-ZQTj9?(3A&F3&+M0Bd7;&9(GU]\d=P@VVjl'5!G^]$#I$]6YrI=MC]^(ZI(R%jDEO%LgoYu8;a&!&MtE,QS\"UUpbX=g*ChD^R[oM;gN-44!R:$Y$TDn1D1df;jC?m/fSk#)0*6*r!%d_&h!&0r)ABK"1P;AJqt'&)=E+__LTUHie9GqmQU7k=%L/3#X.2EY.kuCY@d]eda8/Vh"^]$ic!=dPPplt2+a)+'gKBAJh1Ud=m;NNEeRc`4VMpO--Ko`"N+,q#n7@m$>4mhk1AeBeb^j0S3Kk4M;87;QL+>kH60f-JMu##TN:6cdcC1LQe=>Xo\T6i!s0A31[3+c9RMV?JPY7nl`X,%:K'_.c;u3R`)"!)%b\J5Jk>_-dutJ6gW#Zq?o0,@g'HJ(_&d']`f:>Zbp+.t@j:\e%O;HYi6dO.E(Q8[AhNAV.9mWg9gWUOAh+-Ba/m'\.^o$9:EW^;2u.-_DV:gZD%96QMWQfd]Xs/4)dBfm"gP9c;Sb2[B)rOm2Mt]KSf@n?&SQW2N4k>=1$FH:=;2/ZmftXm3(NZA9i]eYda)E<':j1W05VG1*:>WD("tNL+HiLL+Tfegn/WMg&J(k4@hB>oMK[q1q^hPb"MTG4[6$CaC=sq"p9/ETVs\+.\un$*rPBHm+83djeZ=.K:5E["g#%CFW+TPB[3lQL\R0Hk7nLio#CaXEf:*3m\DP01/JqO?30FfttT&*%7SoIh)QDP8JdfDEq@TP%N;f:-UYG$[aU]4b>R7cJJ6Qmu&6qC1BrKDI4Hi"cOA^XkF4$X?:_d<@tc9#>X:+B&L?I2I=L.+P<5,a6VLf*ON[_6iF.Q5J^c`(4.XG!-e;o^fW7)so51Q?5dpIqN;5^D7W4%Ji9]?HZrV9&@eWmjJT_X$7k:;37Ns2--Q[tAcH>k*`jQ_8#qcU'qXA%m2LuXW_&3f5D#WaF[pll;jC:gUjj7O>(H?fi]<]bK[r(8BtBc7r1Zau"X:&D1cl.Jq>E0[&ZU@g?Ph5^;Yj-[:SE$et9SKdQ.(?;VO``sUjq2r/'Q-EP8';#LJZ#5)`_e'&c^@FGiYaMD36a0_BQ-((P*X>%i\[i.@U(-#2J9*GX?tWKGL3Js.(XT6#[8g7C&tu\(5-V@R%/(.j,tWbRaGSm"#;f_U$JYU0WMI\bOQ;[C]k#_N@9g>`_#h%jljct",q6F2HI5%1BU\9B_Zqhd4#B[')C2Mt.pjUOVJj'^8<0H8fAE0q"Tlmu*9o7bC(Qb/r6J,aZ_!>PZI\.eX^4sr1Cr+)NF9c>VC#o?$\aKY[F/fkPRu9q4769hcUG4_+CVV`jO3&0;$o(*>G,M[HH75gNIp3"Y9it6+;dlbUJL+;OmACH(&MP^:Q]f?1q,od*B2)3M.@7saD(JJ/VEJ=7h4/N4C<_2d5VCNjq^UugXLnF/F13$eoZUHLD>-j[X*(#8WnT/-&@Jusdu&-uBaIPC"4%WL%1!'^[@bW_?(,]NjA*p/HSf#a;,f\E+!i^+Zb=dV81*6&'9"#9q&)KH#s/2ED_dG4'cS$Qm!B:I.6:aKUIFSqk#:8b_!E)tP?`P@gC,<8YJo*/ug7#o@)/n+kr]:&h/<9QF>D3oZP,BQ@koAQ.kC\"0SiAM%i:VLW09>fL.HM&1T(5t]f(S,M/f;N$Tp;iS2gaP\"H%3;Q:RVnf@J>`H]lPV#]>*b`d-9=u^cJ]0)d.+suOLMG^/SB!`K%piG`JZ^!r%kd6nLBG6.2Nq7&0T#&KQIY#Oma8%5P;j-*'-dLkVr,/d\44=R2^7rDcCm(eoWq`(-,'kd(BJ/MqWUT,"U0gW=L?>`$VsjIlI>VJ3fh3XZq?Mri+sMn**NF,=8(833J_[:7.tKFgIIV`*$9K0RpI.kA3t;B^8-%[LQ0BP!\9,R!'I$P;BUhISCWc>0q`guc0?uKOdS`ni_HBY%.9p#n_O8.(9h[o>Sk9>@`4)2$0t8p#]=CX&Ep$o-E5r5Q2hm![2hb]SItQ;f##YBf8ZcQiKnf=l+UOJM]t"o;;64Rp+W^K7RAO6;h![clPrUsH]tCj=Ds#-k>U2f7Hb@TBTu2;C!/XG#@M/^@LB%>VGbS(U+PnG[g_ce/EJp1=]$V=/>tYD4oAgG`&c1![g)"2QOA3Y1s3Kie=l"mXO/bSB=:E=E+h8Rjl[;O9dcfcZTBZtO(.3,E$-F?JAuAMpk8KU/`N",qb72_M,-tNae=*C,fi6L;*7a_UDQC(m;AJendstream +Gatm>>BAO[%Y!lM^s'NgD(P!*X-nB,S+JO#]d0l/R=3/8LQNEX-aKP*P`tI;?]_QGQ=O,jG2"-RjjZ^R^`i_EM6F]dM3-*)phRSr=(4@0G=Rhq+4Y,EY3ZOL.30X90tkUKuH8s?TIET/oKY9jFX[F'u;KX#5%0JXdl_B-^_H\:DZCD9Mo0?cofTOO+O!e#N"I\O$,Cd6Yrd'R]>)1[PX:Q)D9](:-";IWpjXbJ4J@>^!PmJon%t7,FGcoV8_tKl3H!SaR4eWX/7+b5;5B'$qJhX:XFe]>%Z(`;fPcZeh]TjB"!,4$[_$%',i(C1a+#J0B=@LlN5KK\9t/[`e,iHQ>JN*I5rnpgGTR[B^DcfCT:pMhDkW+ksH"Z"pB,'fr=FnE>&'mN$A[Zh0t"IFu>OUGd.m8,_'!=T!/aS.8q;;k@Z)9=,f)8^h?&4]L;7N`Z*jWNL(9dStn1TgSF?/&kJ1U_Ge8%E)0%te#@;N35j:)n^Bfg-]>sQBgU8X$%qH(S\iW'MD,WQ:'".@#Q$R^q4ljicEFF9!OB+,`@,;%aKZ:Wf7^8VAkg%MW*9h1BYV$FP#$\era'HR`M5(kaHD,"I5LO!8eqonL1X`_&i?*L'jACW[7+Nd6klV8%Uj_`]IUh0t>+N*a(NER8bgfCW+p@,Q@+f4GAJOVD&70'DGu&))kXk_cLrY9J@FEKm/hD\0)c&9kGC0Y0;Q:T_@oFW/38f+0i;6+fq@/KCUnn$T=A86.d9guFp@7YVQJ.s\)0+34h+@e?R$!l9NY-Xf\r5d0munB\"b$mK>a1\TJm0O)@34kT:G]7!?d:%1AIHg#@9OpCr!=ih9qQV9@jQsUq#<]E^@Uh[KFTl8"D.*E^63>ICc.95S:?EEg*;iM2-)'e)'9t2`uZgmO"q[TNur)SRcbJ)&,Q(-.\,T&H1:$d/V?P=Z?-L$B+X)ZiV7b`!+kiHFE79Kr)8ea*//[`-$]UPDh88o]'9m.4lfZ4hlr2e15@qD>H98]gQSbmPjLX(OE5o/$2()&q:"IdR7A;>im:3M!YM`a0TGRSgbbd+&3[pSNHb&sZEurUEPa(he>29V,`E92%.q[?OgrU2Nlf#"P1c*debtT\'[i?7^1eU/+Y/X'8FpdA8]?CC@U>lo\Ri"c+M)oh?eP8JjX9uLFEFo\%f1"C*3Q#kF?k)u]=_%F&H2qpl@'CfiDr-LiiIE(-m@`Z/Phql#E+0ZTpui5eE;i^HQE;\hW'+l1n*q,QYS^"IY.=`SYQ:spa@+QmV;V52g26o$'!;m%FEn_.!eO9AO/reVOaG.[U%8Q/,oG/NAAs'e'aobIJ_&(9REDSr,bm!:Z=*^\K"N5"7"ahC2IEsaoOgQ^TA%*@l]36CjcR2M]p;MCErUR$oiSR44QN^Q.?0/W>NFpZSm>0`IP\3LMk^GhWK,BT^-Ku6#kKHTfDA_+_Y>a#T_^R@45ojQD3-R@45nP7QFm&;UlMlV(<+ckia`t7dqq'9[j^-ED0qI1WAV8[T,\.!S3`LT,]TJR>l0PkWFjD`sW4Hp,PHXbW$*%E\*$n3R]/K0R^M`,JSq4UE"&rfAf\INl9HVjelUgQk^l-]g,8%!AUP)"*MBLZ?GWs[n#^UlJZRG5q[puWj#GV=%?B73hVFq$?0GshUCl@t%N;g7upP$m$freadHZHr%**gnpLc5"@W@WrjZ2u8F^^3G$J3%>HRHHe.c%mT'21nB`5G,%jPl@aXW/L,-X[]+sSUIQ_"o#YZorJcZRcu,CC!Y@*f-$R?-PUN:A)`\.f.:JE-$bcYl%7$Fp[Wmnq$u;i"mcs8?lmek!-/iaa\P6WsG@,RsqFV(*AGk_kXO3KJ%Hl2jIUo`T]mN9-)NN%mRR"khkUl[g8FKXHu2G<;(t!,*?aS":%j;I)3qO:\[Nc/gtapmSJR5YC-r/)UK>hG#r8npr2p4lGnhVmpuE-l'85$qX_s0[8^WI0i!RdCc"f8O#2u-G)_HSkO:/F7klYIe0cHEpZgTRYPZ3rWm\T6HZaE-gee?tbc#c]5t"\),g#*rn0tS!$J$jc`9L*jNe@IR&it>A:)6ZLJ?A$@4rdF7hj$u(;9XsG:O[!29>fLnp)5id9GpR6!BT1KY$F9i?-AT$XJ:o?mEQ*I<)JH;T"J&joIuV$DTc5^mqnVrTPaSE>KX,@;CJFl(X+>AP[\Yg:$G\*&61eY0TQ-qCab)lJM:S*LpAI5_'A&8\AW[COY0`2E@&VV4Z*&ujs&sHoap6+,16)CpbAH?mSFoGc("f9@Q`=hG)suUe$Pj$/?d!X"JPJ_/<0s=]/r3j?,TUH.%TP2%81%3r53V[]YQ9jJ<\&uKc+5E\U!=T8/U`C\"qiLN6r,h'?uD]]lfT7,8#tZW?S3AS&?Z,F^)_2I.^\ZFNVGO1SJNdToL6Ak.hT3=l.lNmR"NH[fhV`FfuF5Q_\;/SU:W#G,(9/5obji_/cM2+l[cU#2&[NB4b1W2O:T_XD<`E;GqIj2$Ka0>gIfAi/hd6GIA%X$Pq9J*\4:A9oUHaNi35O)LIHjD\!Fat3cS1j`J$pD:HJW&30^MoAQO#9',k&qkm%XsH00LsO=$UqFNFZuSFEc=8lJ1kEW9Ej&gOn(m(2,S1]*2@c,l0q%+gYp7MIo\58?IV7&#e?WF=J'urLTlmDec;!4]V#S[PdING,nmfdbOdrCdiPk'qT:^IJ~>endstream +endobj +69 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3902 +>> +stream +GauGdBli#ep3V5lVR*mE[l-[,'Ic&kmJ'LVB4JuEh!WHg>n'Io&n?f,!7FA!a`$&A?BTPhUms>.W/G/*<(SF&M-@T-(#[)/&fOhE#F+AR<>XepkD!0)!`+`gstt66:uF3o=_lZZGslE[AgN/!=^i8jZ_:i6t3W\c08BQ91V\6f8gk">ZklS(@59%=+iD;W/FPH9kU@`SBW_@_`]nq0Z.kR'cmGMuKW!g0Y"<4O>4+C()m0n430\IY>tJca%;RPS7a%e]#f/9ZoPAcW&X0(VLNp1V@1lHD4douA@1h:OFRb/uD$J0V4Q:]1jD^IcC_-V\aY;C;DFfGr!l6l*`679D[XL]ouSVp@dF,:V\"SHmE0jn+ch!SBX_24)bs\-#J6,2ml+OmQ+K7h`,@Z0DSqC&mTq<.]*E4`#]+d_<")q2r#@.nn#>\gt=D-0&EC#E,X"_Asb1E\f`]MdTXhSK9,T6')gM5']D&8Nfj1R5*>G\44EFJH`!-c6Ck]-u["M;qp5Y7TMA_b+:75rmZr]haqF\&uTl:.R62i_!%U1?XE0eium=hBbCMnV:lp!YJ*t>5D,[U9H9[qSg2OVd?RrV?+munbtcU28!D']o'5?X$:l"3m]XN[lk0kBjn].C*>NKbVM9eIX_tk0c'R(&Lmb&S6?A2N_WcIQpGE'UgZh+=H@ntkodXrM6@0%:9RJm/56eGg^#U;sDR`*>7b]!CmbG2`_gTs\W.*XH&,#Z9:?O?#@+K52L"%*j(hTZKU(SNd4?JWOS?=H;\NN$.!%jPuekE*O-idL@iULS*SIH2BI;A\Ph^>&oY*V&:rl+l+dn,"+p)?]$E&3cNDd-b;`Ok7ROF3c'"s/Aq?ffoc]6udEi')>oDdqTIcE6p%Ri91Y@\7J/':rhVd(+_6][cRE2,6h+0(A6djOaBf1oCWW`/>/a:_`Q4AH!b\YV@^4(jOR80B]q)@eIm,:,%GO!C]HTjUj6$+edNsQ;A(V>H:4shc*Rrqf:V+R)A9B=PMHf/U8JX(fV9>cC'mH?d_(BTJ1Ra9FKYEVg(rk>kJ`0CemT[;+hg[?L!Ujd%>4"ZHLOADkfsW]AY;%Z]-I,\$tAEl6k(+;$]u,Hl`hTqk_eMSJr2gfj,/0#T!PFYpp\"C*K'paq:l.U\;N]G8BH99^UdpDJ@HVf:ttn.#h]\7J][3`HOT]Z([dj[\`%TcS%9iSAtVp-`geruoI#3FSXjod/m9es>IJX.T@WD]^S"H`c+04^M)_7r)J90P6J5J3*%Wl1^7bIp'2C@@#2?DZR@ff-AK\"`gH-%;lKDZ"dC*p$Je+k,Wr_OOfWJ30-27#2+eH]j'@#prmUUBV&R-32rqRB"/>)H12Z9t2)G7tF.^c8YuWE@/`h0V1D>aS,aFQduFaGBso(11aDDO_g^"OqXQB07f4GGeR1(Y?mSokl#ALonbIoWVHi//?+=,9P)g-1PRNn0^!0V17,KOuN>\WSAJc4)$fCQjp;8n_14p0OHGbKf^/nVbN#XdHH)rE)6qSd#J"Mb)MlYjC=W9seY,8#Nh9aP<>cCB.:U4%FMd'H[@Uu$1-DuO/JsE+=Wl(cf\r5:de`7igK3m!GAJbX2Ut5thRhaWL?.s>"D;XL?GHkU[JVEab!\3=[7SiL;Tqc""B;C?'%nptn*c!fU(?/doq-CV^?nk?Vh\j".]N6\L!=u7mrdtO7@QuKMT>c5Jf]B5GX/b)]2_V[W6ep-59H'CnqdRYgJLGa$qS\;9!e@fLFe$Ol-S$YJ@_;VKHDmM&oanY8&UWb?.IdYPPelGVDXeFD^M]gi15tN(OZ^#W.;@7'^pR_r=m^='He)2Nb]kh4i+1$>$A(4Xl=CIYbN.]qX"lISOL0Z*q$4'h\p!MisLnOhg?IBK[McQuq-m9+)./!FIGrif'0#?1/:Ar-U,7JY`3HJ4;N$AEgA+/NY_Nar987,0"#2hu]3OEJ.Zg-q'jaJsr+\:en)_/,htOO?GQ),PH-_A.$lS4R.'B8oU@=#7ZfK9rTIaD#nY[]Qo\mfh1,0:MmoYD<-U/C6dN8l`*n<%5?_Y2KN1VT)_Bh0`e%3kM8b=olZRZ\$BP7A]Yc"'62/>jFd(1[CN>M@Ds,pEGZ8\R97;iJu4X>'U+MZPe7\4;,JLu>^BE0K++Bf."Fmf[*W/'Cq]Z/7UA_pg*T&FORlB!s)#&+adi3N2G-WF/.b;_Io(5Wm/&4+1SV,Ge_hF!J-\!g@IgBhZ\Vg/g(Nom!k-W/WDYlm?a]WIVQ:leB&[pJ5i!$WUUcX]B+KA2JbXm3a,L5_mE?e:mr9tNm[1/m^nUKP]:C/1%fLF.DVh-YieIRt$[5e$Z:>;`*2N2b*Ft`sP!0gB$`#S5s&.-__6;VtD^gamLuPT"geAi%T8g.3Oj11GK;ifo5(^P!=du6?(iE:].'22#X7[RA:kk#F[VZol\:Pk3,Z08K64[_?o:qQ)oAediK4.cZ3?e7\77!=Iki+N\U:/Nm!77=%78I#?iA9YS;@k0K5r2Fj`8*7Y5fH-A35iZ4jT9mcW/^gq!?Dpe[.\,3*ZCGO0_=WBi\K78,nNl*XpRWAOF@7"t!(IIe;q*A;,H]~>endstream endobj 70 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3796 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3277 >> stream -GauGdCNJ5gnp>i)cHY1)h8V9YU-rX7*QM2Zk@2Jogtp:U4V(4Q&o3A4!QpJh[(lPTi'S,GMPQcNC19O1Fr.cKI3JmZpbC:Uh?)Wk%30k5J76=>'F\3PiT;?nDdND5b/dW;4j=l:F;t(/J_%/4)u&;JDTl2?AlJ$3blS;Zrqr][%O=GJIJ=3\-:Y`\LN)i@:7CG._)YdT8D$(b:9p:(gB!*QRY$@qAr7(NN$j7B,:9qkMfkUnRL/"^(/`oi;:!V]QZ7LKA&@?t65Ih+_Vg"A+=J9kJLTVjiR!ZMi*sIFC)0_N'!Op6@?7P*<+e\mQY!speAjS,\?$65\?-1'"!hkP+rVc#ILCel^7@)4rM<3e!O;H`Da7n[LdY,f=X\jYhU?+7-6,h&[r`ZKoGJid6p=/djn&TBJD]LN\l4$uFt.:DGYYbH*?e5gOPQm.0J4]-c0-2"I&T_s;5>@?Is2@??f6?mac+(lngT>?&!+Z!nUr*Mb::d3(AAppGL@a]S;90D!tY'nL!g$Yj_RD?<:n9U`1/.'P>])@?5\uhc%;kta.7dl`prs\eRpOkbF+G5q:&>EmNf8`15l&]9kZ:C]S@X(NZ1oma]JRpe(KO1hpQR)*s[ecLf;;U[0#`U\N;aMOXA.IYci>Hk`iP@A?;KI979N82[.#@`S25aAq,#nGTFgiR--SB]`DflIKlDTlWpMg(0g1jS!>!.(-XU?^PHl\s0@%Cj%fO"[ZmhnC&$NeX=!;[8E_f,82Af_mQpV9#h_)Q&d''QEf"4qA;$4$6&8"#p!LB)nfhi?(?+nrZ=8([.io5sokmV2AFDF_UjhcEEucbk*G&MMOOas>n&H@/#(,2Hn;7*gM;@Db'*R`:rMmi-[h)J^+URVV;Xa&"ab0=`"=OS7-[F&+%$l]0!9@#S%e$"o3lEF6(,jG$TcXP'f1RK;U$$Y44#!or`EO-$D?r?JMe#Bh?Dd5C(-)a'Tmnn_r[-Lu7t-PG2$j[e*O.\k!\8X4h80W.^1"$A3-2E0C"BOAN/^J#tM`q1qZS+?&Wn3?3q.XO?>r)#[5bb(>ga*'&ZE*THF*0,-M7LsY"5n5jS/=qOXaUL?ZL9@A+1KoIC%n5M;3k=g^Xri+shAbViUA,@$c'%N!aaJu^@4AfAl2k#V;o_Mba!PB&fa!8LP1nM08P$sU9IWrN[Ndc=FB:87Zn^Bt]QHp\SYto((;=pa1:4.G4R-0-)9)mD=VrX++fd8`Mic#TbsLWSkF,h&1HG6d1>siVG3,7u:V.kIh&\!.Bgdq#643f8-GQ8r)jl8\B[/',#UVT`W&O&HX1Er`nAF@MLs_ei".?kU'6p>6^6r?a0o]&c52e]fW6]J#Fta4s?:WWmb\susmXd,`St"E_*PiIXI@;nQ\'_$:#X%PAX?1XLfo3:L95"$l@Y.2,RMBV32kAJGOEFYrA?P\m4]t:T_"%O+r;9/+R!lSZ5l'U,r@@O(O1BaFX?6uQ65Za0IJnM@j(j(NDJ_g"(j)or'0+,^d"/>oi$b55dFna&T22+=>arN+3aqZ^<*k`@@Si.okt]B93F*'!l-Hadrh2&L"M(!7#/VC4tme48QC[L0r.[OY@4>1A8-I_VEQ-!)kHt$`VYeB0QkS3$IP25KM+O#DF7G?16AWTqnGlr=63G^Ct@_o[T.a=G'CiUF&f3_H;:b5+cBQ0G$njO<[O_t#D-e_CK8`OHa`rkR9'X4WGHh:\)m^/o095p+VH+&2M7qop_d1Y&U)/oMmP<$g/-I_fT&nt*imgN+b]I_2Z5nksueKU]_9e/O+-f&dt>.9+o]NEOc0[eG.o_Ln^^f9FMA";#T;,U%hSoPdQZ\Gn3jmLl_WNft"OW%_]d0/($bk<"6Rd9c6%_AOmNn$#ebfi[GlZ3ol1,VRGp47Zn#^5ZA[\pT"C9Jk15J2R&(^b,[5cb$/gPmI0PnY[o!CX\lCo!h8W:VMrE6C*B)A=g+5tu.WJD$eH<(c$.NBp?k!A]-/q=nIi#1t+j@*7.(`7"7U&9,\fBA)dOhNB*BG%R\-d8_:&,sdomT\c29;=/X4SA3W@e7$)5C11$<4P*2IUXOa'Wp*nJ;^,d)mOlF&T,2J/09u3m*ImS`VTUYmVo][Sn;bXiX,&A:UcS<$5F3iZ3KPiG9&@!PD:&lrjbl*5Q.d#>W`.Y00^-I+F'bW/5Y&4?JYOFPh+4uVa`.WJ&nMEs]uD=2/KQI^7cZSmUn#*rk5$^sEAXdEqCQKe:Nil/shF0l3apk2*;9gY\1rW6N/I*R>q16T'p8iYrqPeSXlqsWumr$+4jl::8<^H/P-kI83T!S"Y9^dp-L&T*H1c5>c6mF_*^"N)8p$Ta#bNX"Yl+_\M+Y:hlsJK.9'nau\FH7+tTg.&lc&X*s7;cCJ3fbiCmqr0M)RfLI`[f?##6)1UmOG/$H^?2NR2/WR_?/iL;Oh52JC4^6i!V^sEET!+?hX,s9]GBA?q4)1RQEQo50s;tfmo7:P]-4@$U5t#C&Dip0[ZW?R0lMt?CsDP:*ZJZ:>(JrQEnGFg9ro2N+iPc-dfsm+b;ilrTeb%&tCVup]XuZ<0c8FAhQ'FS%O*FpDd4+fP4IT[m['M-@L3LpRnXr]#6=QtEendstream +Gb!;g>Ar7W&q9;QR$S!)dpq2e:%upYh8ui6es<8OsN0Vmb%_;,*SH=LVoPK)mUqApoS-mh#QC3%-.d2<"3G4:^tNsfge#o^&%7k/UA>4A5,e;!8Fq.7<]/f&"E)X[?@Ad0FL.ppri5^Q9?n-_34*aCe!`\a0=_E[f$-TJ,s.9eC)0KB*>/_&hbY["0)I&/=!&k)BL)H=nWos#?:"nb&8Wjea>NA$!?4Lpl2eHLiULO7=T^b?#MS$@f$R+`_7c'pE?W0?f)LcX\9HE#VBm\"iZ'3CIB=_:\t(Od:;K)M"U(eW@BqD%$N(R>ahm*98SQCZ';B`VFD_-Bpr;X0S]fKYD3Q40)apYfKNJ'TG?:jmG5)=fNVL]FsuA,,k>3'ZA1EcH[K?Od5U>G\RFe+-<>gffLO8a@Chd9]5kEclqnh&*Kljq\g@&lZ%100i-Y'K,gV;&3Hk)eH!iJcU)-;oq;[ouV>:iYLj_f38QaS^Mc?L6H&b'@Ei0bZM:1*G?L,-Dbq>o/%(DF/j4eGA(cNc[+9h)AV8g#B(+4oe>tOc;qZ[$ZdsY&AV8R\Tp7Z<;pYDmCT8G!j44qq?VoTc4d>?+qrj9@CQa:fZ-H&Lb%XjIl1eST2YZ2O=]/@4jRR/q-`?d3bYqU][ic%VkB@J,'c.!s9u7W>\Uu3U#+:obi%5GbRUd$CRbj9925+s.KWQQq8pkPC(kiCa[":S-QjIO=EmFJ,`?=A7A0DDg;bL+@Esc+ZJM@^#?B`LdO5021\Cr`B'R2`U76u8%gL>=:F8E[l!,fhV9%WJ)2^.d?=F(9#^O0>,9M1^FWo`HX5%<5HeNpG70U6l6EMLL(&6Q59_jT**%'WXa)!#q-H3AFKL<6T9*l/joe02ATgsI%(IiCN:N4N?\7:ECU22i!1@N?hc&^N\1jI(m=Y5>RtfjmgcrCEcRNO\J-@MHC<=X7P"%MC%8$lir;R'(Ai.L&[MN2H-I-4KF@%a`U&_ER1V,M_H)rO(Z@HfJVn8R*4i3IFb@;p(_$5J#(3H/=9DVC4#Elp^nAEZJf(9K-rDW91sO-DN=V_/.#-(V_[OSM*(@8];lnq#ij5_8S7YlnOSL4D!@,tCR99;I$koTq6&0QWJE>l$K7\t.tBtRpKSB"";!=:KkU@8*3(7t';K:+F>JH'h/s.['qY:ScWnb+W*=5U,'c.$e1f9_"E_i[p]!(k^?]BUM0;DD#L^TY&f6"jTDcO]CYr7#VGZ`;$PVL*j"Fq`:.#OJ=["5L2OO>c0Ce'DB+4W_SI)RT$q-qlWI(id5S=SA)G!j66%!8lTe&=39Uoc>t0:NVY*D!/bDqLmou[4djk/fTV1:X1s\#hLn2Eb"nACj'ld+%endstream endobj 71 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3237 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3387 >> stream -Gb"/)D/\/g')nJ00jbD][qf-r]=OW_9sU*SR\Yep_Z9c>>,#kNoi=Y-@iXpOhb\7"AA(%GmN$7$g4Ue51E;Q6cU3kGL`_fZDg;=)B/%"E5U;^KJ1-!NZYR(nb)Gp#\koCPpQbDW`.KP1[i\cCnEFG$^9quis:KB"U/q@7+e_!EGOmk]E]FD?u3Q9#D)i)(ZSde7&#&^[#IMe_WiZ$h=$q#geF7l\EN)j2H[Kn@X/VBcP%2$i"+cj$g$oG7q*2-t,;c1gG`u7Hdb,f]Y^pOE@4<-giq?$sZ1g"\mOiqX5e`BLoEYK-6YPW#HjeG>f[?bs$;,2&'j6&s5#<&/cYrMk1&R>BI90oYUIt*soL86=LJbnj4hbF`]r?reO[mLj3EoA1D&GNpU.pn4HG'bg0`?;nKX2%V1TiZR(3t7"9p+!:G<$46UX2%V15q4odTnB:a2OdrM=X\-N74juE?mlr$rNuC:ghE()-q2mC"Vrpmj=J`eC!N;0<5;3Cmg#Q!s4U6g(D]a[-i(C`)O)W]c'2GaLh[i>K9;DN&9pUI!kT\9'jO=q`'#t@>Y/"C3K6Lgi(AmS/%:r?oZ2G0&^oaF]],Ga:@&,Ncq9HI5ngZdA1,lHO!ZHY3&\0l>0"`q75sT?[N*P:iW$hEoQY+@FHJ]"lc@ufF;lk.1-JS#\%*(bG%07=S)7W6d!D4Lda4D"aRjg9rE&?gQi@gf^R[e5KCH%Mm+st(,;9u+m3lpi[!okZ`W7_SrH'oDI$aB0]M^6Sds?km,Uq=AY1G=W";5E>'Pq`WF#6csInFS48\-h%&\.5NG9*:X*r,]mp86_EUD`uHaA&OLIIb-CFcUs]^W(**>^d:l3<;HU?t&bba12d9;8S%nj@/PIU\6m/;MN#sZ<]86gCo2_J$/oH70SG=]a?;2Mp`lmb[uj(:_n'b>%*djFMSZJet-?-.YsPENme\0/fTbn_572CbZ[M3Z3=boX<+h]1U/-e4_9&0\3FJhk`1gV#4X;$Aa3N+/MnIt/?H;R<:+mK5ZLMm`R:b5:N:mcu]T/&C(I/ft)]ZcF6]d"hT>K,a$oEO*"8$+SA+[PJ-33Yh*fIU`mh42b*K'A.k"ZPaSg4Z[mJ\Zqm]rC>=U>=A]DU-7`5n$=p50%OS@?uNFM3&Dq_BQraiM%J&.091:gbY?X!Dk*Qe4$rllXkN4"+K;TR^0G8Af:ki?sDKC:0mfpsXJ'b9?chW@^'DJAD9H&H^b.diWD?]71mOs-7DnerpirGkDblD#T_9][4,X%a]:pA/_;4]4>8=Len!W%qO%]:KlMsAguXeiL$QlB"Na>I!9!+`R/&CK9)q?IQct+ElGH`h_t!2O$&d9ZOHUn2tnsD49%lNrXlj$Cg:gq=YN?YoWKhI8NQElZ\,&GZ<9(&8Q%9?!ImPFbWoibMGLSM+H+8,=ME^p6l5T>pMe\q6<\dLdmu_#?GnZ5dYcglqYA./a+H?PKf8oKpbAZL"(!+/QMi+AJ90Fa=^"!V(bPV,Wrm)pSEM$1fIh+q]HCVrRN8DV\JjtC?p+8GS,$B`jZ<;lCa<0d)9<\99h[4ahKuodpmM=sNA9Xf42=Q6N\`99i^-02G5:S+c9Or%1npgH13q.2[j4Ck'W'4J%3WBcO@JY"#[ch04\2M"_#>IBH7=>^0+2N#=ZI?P]?Z;>s"SHo@$1cj2b^@"ArUCq@=Q9TYa*NY:"6iede9u?1^VVPhZ3[R.:JEf"6oJMVhW-knl+6e+Gk:_P0EZt/_H4+Yp6=MN&,aDdV=R=C@LS3/5pLm0$%<%A^r_'+706CT~>endstream +Gb!#^qet61&cUU9`PBG-p>n^49e,BBn2ifZYp.:Y!P:&:j@\-n09_W;oo[#&Z_U,h'I@bL"R,[LD!p?Dlo28WZSPQG`ZHN(^Z,EdNhC`uJ>0no%#Q\%0_tngUP%_3AMMW?-!=.TYZ(f+kik&YlfCA$j<26(Q4:FQP>jt.Tqc94;],O\+SAF]Z?<,G?;*,6VF`;JL:RVmf%Z%>4lWt2Y$mK`Z%PI[6s:Ihl5GR!Qr_L;FbWe/")%C%J0(>41nZIZWKY2`"Kk7)GR"h?IH%Ni#oqqukqS.2_<=u"Wiu3(I%@::Osumt]N*VjWe$k%U4"$^%GW@B6&OZKbb7>N6>Z0.ac`ntE*X'p4)oZa5T2i6!,f"!rWjS`EdrSO>C,hK.9iWMD,IrR_La_V]]bqn^c3YST*B"]$?0_?Kl_3#BD3mohn%'Sd";Uuofr.g"3/S4nPKaW3&-?>h/\FgBq*mm$S\sq2@Q+NOP5bA[f>+/sjgBU3SkIoh#HQ'clM].inCaFJ-COFPp*FJPVO@r3tlTk?I2dVn>AsHTAK=k42q(gXhl8F@.g#6e9(OCrruIbY9u+ODRQp%!\qS$#)gs.5Lr%.8uVY'il^tNe[1[`[m[qc]lGo/fSa4T@(-oI(36X$\AqG(JP3(,b=KXMB7rccHNS.i/irkoXs5s<*:"Cb_E3XdQKjYn?OA&5>aeMA2nSpGfINBdW!+!iPrtbTs9g:Do?U!Bcl%^_T&BCJ9![4.A,Xm7<^I(8cRikTGVf4`mPdFVp0(lTrMD@o6kc[jW.%CTD/U64"V,nrbf)nu2"ndf#;%*QdG[.0cEV]*ggNO7c5Fe;ReGr0s&s*Ps2[]12`86U0m!6I"GSusUt#kH91LOu[TO/iL%FU)q_f`Sb[ijOHnHqi@HgO+!F_/6o`mD*SQ\?.OAGYK]DACiY\b;E!kHD6PTT/M"%<4?D5-1-?- uWXuPpM(HP>KhAl.PQDD]KdGG'',g#t'rJ&r'QE80iO,Mk]oS]IsO0%Xpm)Z3?l[T\K8VcTlA38kV@e61[b(D2Z(\Nnn15Mh>n[kTk2udCIGQkG*_KJ@&Z\1TQ8-AdWXRrMo_"cGr&\n_U2qrrh:7281'_S/\X5n_8H!$QmPE]WtVNn?M2oRsLn9TDkIHlAD>!VT27V+-n0/-f(-fR]bfX_#)<1U46ZR?ILI)-S+?!A?VjJP&-T#bl_LY*$C[[ep-n/1;UZAduIS&&A%)*?GL-/'3!c#V%-VMT\?hb1s<*b4+*Ss562O-i5skH4E"QP'F/&McP;N$n=LPsid!EJ?_$6N"cTZPhrfi5(ER3C06r6E4>C<$,1nmZ$1r2(j\"pM+(%L[bC3-=#_`XSqd>8,>KHJ1f\a3O7`h4I4&[(52%0bMc^AIdOeJ55AiiCDXP7QZo(2hcm1q9.#]&:gq(`ma,QD(!lpe@'Xn0ak8g2QT3hi9pr%ALZFJom0td>1Aj)Tn^N0"TopjtIr<*8tj?.#!)X2tN1$*QUqJu2mg4L'aJi.``#3[r4O,0,S3a69`EOe=5JGs@Yj1N[&n9o\&1b`XgTJJVMn]E@[@8Ub#fKt*>)OsBD_N'Dnk&3-BHYlqO3QTXgJ*OFfULQB:tmCXiaeu]ed)h>K-mNIPq$B!-jA&!*%3JAe)$jWt9a$rE2#pQci:H%uiK*OnJ[5M'Cu@ZST@_>s5.!s,epUE,Mu?hO5gm;[emd$!:Z#N3p=c7e;&:[bP)"=.YArC?'Mk+MMWc"N801L:GbfHtbG'!C,<\$=-7.,%(9d`.Dg5mL*T6b42g6Y(l?Qs'>Q3;u?3P/_KWXXFrn\P,rUW[TD\4UtOb7neVUT:N:;]?W91lc+OZS#:S2&@WqX-]hnn0D?2jae6K\i71i,som`XqO&n;j+1pnAF^a10MA7b`/B`S).[mUcI2l4fb]'>o7?__-ZfXda;qhjW4aIg(mAMY$B5V77n#L2gEKV/PUFi9,?FR>jl8-OXqh$KNphTpaKZ_9IPO4)rthfs694^U2J#B^Mkm^6%GNXWAQE"0;bMRJg6Ou=:35=".%[FXSa7\7nLoLN@GeY2RT4U>;D4@QD8%\8=%_FtgO*N#K9XhK1MEqe^eD)#!%](Xo7+1<%=(?O-'MqSbM:iE[SBi3VV'&c1hYI`mcFZ,U-$])_81U%`g9Vd~>endstream endobj 72 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3539 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1434 >> stream -Gb!#^D0+IA&cV3*Z/a,PSBI>[42n#I)8@N/8RfZ)4.WW<*_:r0`"YdqP\p*\[s(,q'LbkEU#nC!hjk2XG_gckYup?j!u6oTWm`o#qKk*AE9eifi*qa0/rm!#Uo)SuOHmUV.^-Q4/PakP$-P-3Ji0&Q?N[fIrm?Q]B)s::,7WT)'AO[8&oI,XE#Z"a/?I9M:$'n*:Jh3;"TR81Mii^$W]H4t&=SG[<4aDKYQ]>!0e:p#FF#PWH%6G@7K$JcFjQ\=6,3fZH6sh9C`g.ju=:2gqa2C0HMN[o=%>RAi0+jp6"n#8j>4Y6I*h84Si)G"i^d5H"/J"oYuhi95nZ;pLQf]2SsNLsc;on:c1)0o(*]G9@0BpsG$c7$OsgNYYR_=n!9C#BUquK3S+L3rR,tIsR/NG9/+'R#K'BNZj?0-OBk0rY5K,]blkuT"sadkI?_WWo=r/'kR.:H%1MT9bU4aHHq.VQ\j(2"bn:O/9)2!:81ngU21&FbM&;#nZPsgs%K?c[Wet8H_m@"D^k5VCT7CR-P185$?Le8QH[9U1Li.5-qP2EG$r[=qtX]N)K:SFSk:qJg='Y%;)k+T9RKc;A&8a(NbQdGp;&i!rhk5O>s2Q,e`LT#t]KJRXtMN_XcEB%OT:_a9EK=EtY\2uM]32L;J]GIngJ@8,e\:o=9UqAbB]K7riK^aMSiY&3QW>CR==^o`[p>B&nH!h0VM`r3l<2"&s7idOUCA`KjVm.@rhDP`D[Zk'/rO?/&to"_/P3.@ZNG6Eg_4B'3Z,U7ef@P)Vcb)5-9^JFM3USK\=r#[b(DTng/hkUN-7tX5u00;C1gKeGIISeN66c21MT"WG\0%4nt;hPZ(5!Bpt\tI&1\:F9WVgJipG#L'u\7Ik4*RUX7FoT/YQQP*jh>8q(/,ncDj"j\*MoriRi]WH-g.ejn">@O4&VUH-kp+G2$Hob@>bKqspE)XNG0;q]-k3C!]YlKTfD^q=dG->/.l29&,js6s%gpa=tVfK<,#-%D78VG-G7TbVUKibL6GU-HEd`'ek*E3s;e9_"BV@4`)cgiu;-1[4Ob:-+_\1lSI@.+E[aPLn'&on[\:42B(&Fe)RcNA[dEK(J8<73aJOS!OhI8[EUS^jA""cu*kJ@an5qg8<'5&slE/ZgHs-,XB[70<9'AAA(1?&LhFDsC=j7Wc@8b>b:O)YYN)]>[\f"bCAb?4cYep3@,doiQ/J8>a%.IQ7"M/C8OoS4P=TD0qY4ptCP;>`C"G;!+KK$tGl].=A5QOgGh.C>!#^QscU8e\a=])S$6j3>+ka$mNElb@Y'bYU]/-h4d&3j/X:jO#r"76gIi.F@-'Jb,)!DV##rZCR&Hq/4!rA@Ap2sQ5JQ7P]"`Zkc#N5ep)A.?-G,=..OqVr"g9;)srqYqb<11\5Lf\f2heoU2G*0hrpXc.MX[P@0++`A4>:+/+mohoQUAS=42q-0l3*ZSjq`YG84kq+k58?3o1ek+-^Nkm#CI3;Id#*P"5B&Bo-1nM>Jfdb"<8VdjgL%5:2A(j,$0NG2.M?WLpl*/+DYZEMZ?^:![rKP4_/KY!U$o<)G=mpT`6RHqIa$`F0M[Y#[4ZKhgAV:aDomEkn#F4E_=?XF$a(cIlcigh#.uEM-)e'T)Zu#I;W.GrEM[_R>a@'`3cktR;"n%cZR*iW"f/I!CsKI?Z;-DD^^!W,[`u9BZpu=kHe*MDrE>aWP,pds7;,u_?\A;/U!HRPM(".7=WO\HmWaIV8OXj"MFW_'iuXdta"+DCmg5eF0g8Oq=VXSoH,Z[?$fMTbTG!ak38Nk&#uOh(fr(q,f7aO]h-^-K())>l9;&I#$<#%J?Yh/K=sgR00SDu:mih6K�="^#%Ok84(^)U1K3st(<:5C46WkU'IGd]cY/2_!Y8FpE[?!*hBa'RB+I\S\N->NJa=?J>Bc.]dNSXQr>Un^I;/X_=$&W/g02K8N^@4)ohS;D[i009:JQ&o:QLbHmZGTRH&El;^1P1hXkVGOB9+hdFal#!9`?#1)ulqOm12Y,Z9TSp.kSr]s/;"@ON6uX34]>,@q?rq45<6\CG^7]^S@ke9#MN/2OKLfT2&%uj#'2H/$)TVLAJe)XT8Tl^0oFmtR&$?K(,tm_UM:qI9R-$fje\k'$3lbmgl$MZDP&YP=H'mhS72Yb^i%6a'TC46dij&hT9?p'."16*bG1Xs\:^F&$ae5LSFC+h;45K^YTaP(aNtu8ErXM1qGfoQZ7n^McqDC-0/>n50buUI1/Y*nSAk#M"ClFA6b[^[3!t\Ahd9$=7"/CK2A=S@a8C0:E(>Ai"QXHrVqlKAg=_kQPeIdf8>ob]TMr$H"f85&#d[LOo~>endstream -endobj -73 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 771 ->> -stream -Gat=(D,8n?&H88.E?@83NR(@iA:,;[9q.MpBs^Z,a@k?dOja[,,0Va&B90D5Q:L*,93+\G3<<:,+=jkIj7tH3@$ERm@SnAn[=J^mm_f8R2-"\TikHB=OV=A%Ob*QlqHa@;>lkjY_Ip:3N?86(VjT(O.PDTj%hTDI*!6J/mJIM60ck9V4;Kc4J:mr]IC-@f@BFc^h\Qr\9Y_K*!]dpoUfp1_fZOfC$]5M'NSr_)"=D_c>G.Km5PhT7@\ZS[-F^.7:fOPMO4ol.M9]h[".n:21*$o=VdEK"N5%53T'o9?sG$X4=3\)_U$<7\eY3oT'_#"M.$[hU~>endstream +Gau0CgN&cS&:N/3oV6Hs0JhMEV`;+Dg"J%8[/8o6f*Fit(]c]@?iGMDWt>BSBPU8+i21kHd!^X4%0MJPr#e-(+Wbs0jsMV>V'LebZGm"3J?\A"Ih.D__lC9kq.@!4c;&9EPO86_ATi@KQBs&,['@b*akRT6&r!$9r)L#A_Q@3ELdc$>0#]NIdo@EK'TI7Cu)=P61LlncC4L65*me)NH,;7\@]KMH1i/'j%ffT3LNq.0Wg);&%0Qe#Q$AQF$>@,*L<1uOJ%p^h85q3O9h@QKd`WdFYocQ&_5ETS@(V*(+q@tKpb@E9IN54oHB-Y:%WcVXl)M3GC/6pC=Kk]QA@q&TM6S.UP2L<6*<^&;e;9R&2?Nl%Y+i!Ac?7]UpUrRPZ,0o1F13?oE48=&ed\B(HJrb$g3qF[a=rJ4Qk\)63lJI0.<'n?QKo)g#P:uQ@u6=67Z2&Ycd&[kh'K*AQ70S1`=_d;U2B[U%1l@Hj)l3RTM#24<%-&Ql&C0hRlPE*\Zi\+1R#U5HnEr*9%KaJdYs-^gY%?YL[1fI6nd^\+L]BtK+3in9HP/XEUi[@YRp&B&K3gfEZF.e`kck5+l?uT,+%=Ad^0:fWI"d9XaD%*9%502^k4`i[\C*`r;L]hf\>_I\fdp+3hb+2@u%*A*ISp7XjMS0*L*ICHop(;h!04R\S:F@WR^rfHGp)-IX?rb/k_odC^u$;K$PRJH1:WHDY4(A&YJ%JoaaS^*b;11MsM&,8u)Iha=Ii\GbhW..aI;Y8\u)'LIpDk4dYU6*kH,tZhH>a'\Gue?e_UEU`L\TdeY$qD7pSs@?H<*Qs2%FGR*=#cU4I^XcFt(asd/rU_Wb;kBZ'JaC1(!&DE(O$+EQT];(jjUOOPbieP`Yg>:F"*_"`)<8`W~>endstream endobj xref -0 74 +0 73 0000000000 65535 f 0000000061 00000 n 0000000146 00000 n @@ -451,53 +446,52 @@ xref 0000004894 00000 n 0000004972 00000 n 0000005121 00000 n -0000005270 00000 n -0000005530 00000 n -0000005736 00000 n -0000005942 00000 n -0000006148 00000 n -0000006354 00000 n -0000006441 00000 n -0000006763 00000 n -0000006838 00000 n -0000006940 00000 n -0000007061 00000 n -0000007222 00000 n -0000007320 00000 n -0000007425 00000 n -0000007552 00000 n -0000007662 00000 n -0000007813 00000 n -0000007926 00000 n -0000008041 00000 n -0000008169 00000 n -0000008291 00000 n -0000008399 00000 n -0000008517 00000 n -0000008623 00000 n -0000008735 00000 n -0000008862 00000 n -0000008970 00000 n -0000009090 00000 n -0000009224 00000 n -0000009343 00000 n -0000009438 00000 n -0000009534 00000 n -0000010671 00000 n -0000014579 00000 n -0000018467 00000 n -0000021796 00000 n -0000025427 00000 n +0000005374 00000 n +0000005580 00000 n +0000005786 00000 n +0000005992 00000 n +0000006198 00000 n +0000006285 00000 n +0000006607 00000 n +0000006682 00000 n +0000006784 00000 n +0000006905 00000 n +0000007066 00000 n +0000007164 00000 n +0000007269 00000 n +0000007396 00000 n +0000007506 00000 n +0000007657 00000 n +0000007770 00000 n +0000007885 00000 n +0000008013 00000 n +0000008135 00000 n +0000008243 00000 n +0000008361 00000 n +0000008467 00000 n +0000008579 00000 n +0000008706 00000 n +0000008814 00000 n +0000008934 00000 n +0000009068 00000 n +0000009187 00000 n +0000009282 00000 n +0000009378 00000 n +0000010515 00000 n +0000014412 00000 n +0000018406 00000 n +0000021775 00000 n +0000025254 00000 n trailer << /ID -[<84821a2348f034264701e135e5d978bf><84821a2348f034264701e135e5d978bf>] +[<8557445e7e830ad30d1d409ce95f518e><8557445e7e830ad30d1d409ce95f518e>] % ReportLab generated PDF document -- digest (opensource) -/Info 43 0 R -/Root 42 0 R -/Size 74 +/Info 42 0 R +/Root 41 0 R +/Size 73 >> startxref -26289 +26780 %%EOF diff --git a/docs/GIT_FLOW.md b/docs/GIT_FLOW.md index 2ad325e..e7012e3 100644 --- a/docs/GIT_FLOW.md +++ b/docs/GIT_FLOW.md @@ -21,6 +21,8 @@ This document defines how we develop, integrate, release, and hotfix. **Cursor a --- +--- + ## Table of contents diff --git a/docs/GIT_FLOW.pdf b/docs/GIT_FLOW.pdf index 19ad0e4..1318cf4 100644 --- a/docs/GIT_FLOW.pdf +++ b/docs/GIT_FLOW.pdf @@ -97,17 +97,17 @@ endobj endobj 13 0 obj << -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 2058 /Length 115465 /Subtype /Image +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 2058 /Length 115479 /Subtype /Image /Type /XObject /Width 1098 >> stream -Gb"-V9KBu?fBb,.b``)`gp78&pMbI/NT2LL:LUfl&@JLNqG3iJ&g\UsnEH"GgP)&*Y!6O\B`j'Oo#X5aprr;aun>AJOzzzzzzzzzzzzzzzzzXPZ,.]^s8rY?\tgq<:\)HMdF'?iKV_=l3Qd!!'h2^%pf[5PW&*/ml>?rquT@Vbc30?#nrCM0n^)=4d,CSpK\up$5cdJOEDS'>e>"9L57k3hOLL8H7J5")#sX:]C+':+,pZX#9J-Jeu`.Z(XCYY:I"gMpV-C8kl)G.#']Ljanh#%!!'eeEZ?I09Ai3CZHQ3"c!8Ht;O$8G5fn_uE1sN*P@Vh=qf<<48JhOn:En302!!!#-RHqHS9Q3jVAmGdS$bc;kHY:ZrNUF&!Sp2IF>93bE!8HbGf3XA:nU9`*\$E/gZ-D:%O&rJhanj!^!!'gC\UOL'<,GsOE$=Pi(H^SG5Pe6!b<>XYK3@+2!!!#O*ff8KFf&Ra=kC==+YUV.1'%U[!!$eVkK]Ws_Rt9lEn8bnG0[L2f:q$gaX<_)qP+#j!.`>fX'bfT>/P)/(h?q8@RpCdLHg_!c;/o[PH6t[!!!#O@->h+'31k73'=8U)1)):LW+[dil$Za5568dcNF4J!&i7]cTDkhB?giuaP;4^2I2`Bc,.BnpN1Wjt+i%IFGPSdr:jdennQTAU?nfZd%%pVX+(aGMRE;o&Zr;1]RLUaJjq9H:Xj$9:%95?@7W6]\`#,l?040X(kg.N7^Giue;Gp#=HiIAtk\%NnC!B!pu/^")!g8OTSAesgn;UJ]aT:bZj9\QhoO77!*l5qVDGX^o-07YoV2ptF\hca@T05Me,#"3[Z%3h<8`L95#H^0fCd;$LiP-"j.]#@cB#kH).la)(/-7b@=3X"iq$%KHJ/ElU"2;(LLIhgK:>4QCOY8.B4L9YT3Y+O)5eERQMb0(ijY6>QaCY[cQY::XS1rJfFC6!aAUHZn2\K(%GE^11IC_s&V5eLIc4X/2pEh3=C@e>q]sp%:3r>=Xfn:7XElDVCF`H7A/U%fcS0Eoa!V5$IDYcu[ZqcnmmW.S$8cr3Yl2bOM'm5ujs9C8IXSFfd^g[X;`F?nK_!gHDUfC6c2-Pa1NKTbSKQ>H+<1OkicOID;ZjCQ5c+d1f$O1a74Sj_L?XQhm>6$A]'XIb:V^qf&%dJ>kQDg4=)W6!@op$pg2#5%a-_!#@\9B3>$\L0S?#[rZ]1R1)6Q-YgjfA&ikBj=n]/!8!!*'"+@faeq.3DLSiV"/?"N1Cksj1oP1#@?q2'u1A;4:.9J5ZO/'F+/dGe7Ob&Ou?9jP0"?BfhE?Z*>ED8VLZ>3]J[mNd0Gh=)CBrY#3+FLA=DuaD%e`Y7GG@SigLt6#qrsl@H:I:aWPgZ`-.\:nE$$"j/\8WVW%hJ^@!-7/2kFN>eiq`3/f2ZuHP&>qN_akL2U[AF#=HnO]c,pXu<6E1K/aU=';S<-$@_G[ATMQE%(//e#,uSr;cs"!'lQL^3j'_M;j$:V:5nS+%c<"g.elr<"h(C*n-Z4Q6jl4lW@:9h#o/rOWCbIT<@%tP=hUTF*=IEgf:T4>="6teZG*bGAijRbAcHJXYJYEp=a:Edh;]]!#)(sLHP:_A*YU+(JHbkhi/gOX#ql6qkD^q"@KhRKq3uJ$ThF:Fqdic'fe:VAp1ag@^dPOaQ%CRoL:i`d+X/J:,emNKj&uUUj?ad8P70`:-r;<`04k88N6=*jLb9,9;5GBV#<[Cm%>#/1dl9oZu,Bu4A'u!o56\:Mj@)\q?$j#!.Z%LJ,]?aQ\5!u82oSW=rfhidqU<:m^X#of1$F#G5%lUcV?Dlm'^X)d@plF6a0H/Fh6hJ@fP!+=g_2RC)g6:-YJ]d'5"r"S.bQ<[1Y-,=`[?i;662JNu*Mqq?$j#!.Z'"pYL6cM>7#?c`aD3>^0eJP8K^"#>52!H_^BfHJM.KF<%h(FK'pDXmOAGR?;BQgMPHl&GD8$(4:YX;5]npmY+$V6kW)KJ%SU13)\XI6pFq']'6i%,nq7D.A#3,FrLUDAh!D_N\oSip:%f]qD/6S!._`'.c$?0-#kc]aW,Mt/>Bdr\liLO?8)S"&;:1t>O`MNeEJ:iK7fV_)Rs%7j0X:-Ejn8Z)!K]&c+k8MmhVf?GFTaf/.b=_!<<,8n]3!3`$MZr2M4M=#-/padT8l/RV)PU?9d-871a!!!#>,C1j!P>=BQY*sEoF;#(%$>92O`g+2#NZfTUGf,P#e&:*TUmiZRS'Q0icQ3DubGF\@I5apiaSKdPe'6Bu\CAN^D?'Y:E7?LG\g0m9?(Y@BCMA^&Rs6r,XY?1F*t0;C2b1d'bk-ZZ*b(n"FVUJNZ2/6\#TFh3DG@H^]=TC3Z&a6UAAJPdN&r#!jVr(PWY@IP\nbo:T66+R's!5O9.++IO[L_h^N>Z]T=2r+U01`&ZW`UnI2Wmu_:O2kN:p;34A1*bU+\(f'8UEkd2P8/PH]lXo5L%V@5G[7Ue&1buhf+-S503*$i[8PJ4G3Fs5F->+;DLuKP7h92h)PtqD5t@&T?@(i^ESm?MGr"[r&-)\1E[5tnqq8;gf2[">:,f'9(Y%#LSkEML#%@6onD'F$=n4^cnTUM:,4lM[m>TX[9@]ut/rEiA]<=T
    UsJkcu]jEm(R+I;=(otbb=_!H0L`,8"(>5T49s+"f$eCFmN5E[87rrj/SlF.4@pCbE(uj1@NG)DLC2otbij>#l>tAa)2bu[:[((#rIe_m'5[bB:Nj-2-V[J<(0Ya[A9aa>a37HT?L&QHN$IYoH[Rr[],SS6+:QrL,Bq\%("OMb!i_$efQ_1h(6%i@/*u@1jlH2OLe022#>+`V41M\h3Ud"M%ntS"17^J>EgD.f8;J([sPiqd.9O$H0If:1g(^8[(9Ep#9Ci&%W/,s1ZHV<&U]2SW]TkG99c5)g%SSee?>V6buMUH4i*ODA!nU048*5Bqc8qh[NGtFZ1=HlB5+HMM$*.G:*X+onHdMX\Ya^`?,CI2r48f34`k2-PaeGG>X7gTVY?n\r3qi.Il>Lu=/dd<`r\d\0"lrM%GCZsu:C$>E?1k!uI]s0"E%ei2p`5W0:\TV)%8"o6DE"m?pUL;cX3!@D]B"*846cTl/,ECZieooRj4Se'%/1CQ!!.\#jJ,HRM(&Rt/SND%UU)!p`lf,mAif8HPWMd'$kPtS_+HK9i4tXprB:aAqladguj1Y3D]BcW3U3//qrnIJR!$I>oGiB$,/tP:W53pW3Qm6oD'@61O!!'f#Idr>'g_IDGo4HS(.ko/G;l<$pH2?d'Zi8;O!!".VcC[6)2KAakHrH78*?$NL/,o'W)rmLc;U!tRMUFU\_SGkpHfUAuqGSFpLu!!!"EpY'Dd7F`WhDid>!cC>J*kG:h@3jf(CSukBl+`T"$?oHgJ#=59^(-!8&QoBo4ZD'U)\OZbXYI.p$u8%0-A.Q?234RChmuli-eMcap+[r"i^f1$VP^o?B5#raZ!/!+>ER^3uL@Bul,E-VfJ%nW?<_anfKJ!!%ODp&+F-7fhf,[;/p3\(Ft6:S&7ZiF"@\q?$`u!.`=;hgP6U_XbX%'5tPR7b1!\G1!jAkFsD55QCQ*Zi2c]!!$Ee712Kk2f@El]%"]:M5#t8fC-BD:=c$>!!!"8M8\$Gu9!!!",X.2>"2X8,(l(s`P/pjl%U:E1+h0%?:gUFN'pAk6oY\cT&o[A0T\L._DO$),6##/mc28kK]X"lXF\=B:jT1)N?)"pmh!d%KHKZSTF&DV773%o&\&5^%GFW2)7(NAQbp,T8mfbI_X2rD#aP9OHimRGpVms&K0d2qsT%5p"-OQQa%E%du82diQ3I>bkcJe!!!#uoWt1g/:&F6jQtR+0>-ekX]r9?/t\7r0>IGU6Ou?P^$gA&\m*)pSpg=cXD_MI!!$CK&SLOFpYNLq:7aQs$J-C"pr?(Pfl84`>ePIVgpqLJgI(%j+9(bb=l6Xf!!'fc7)jN5O[kQZNZtArSJ&p/l!=0@AF*d?)O,8`(=\FAL904oX5!WW3#Mu)@a&"\7HBp!'UMHfGE1M>!hf]tLlei+oU!!'6d:I"gMg9k^nC$N8n(^rg+Hi!C!k^RfmWDf_krVjp&-aR^3Oc-F-4nm`QiPL:!=0>fAHM-*I1nA:gtq4ERePBB4m!!!",-,\\!!"O[Gk%M!2pXVX9\'XR!!!"LQ!Ch<6):"5SpN*UL&_2R!5M4PSNA4Ic%#]DIq@FIz=NT7&B19E-d>ra@F[H-/!!$CQVb`p#l/q9]X'%@az!!"N0ET2XB2_Vo?@b(th!!!"LQ$i>!!"PFqU`J7d`p%+2m[B-zXQ4/(qjL&7[r1$E\fh%R!!'6dYC?/F,2Kp)elu99"98E%!*8ZUYC&d7Rs3_7-gQKe!!!#79"t5b08jrDm^qq"h%0Pd!!$-CQbN)AK%#QOi)!3G7"roS,e](u$&J":^Lz?mVpU9;J'7rqbs7f*HDEdsNcXtuEz=NU#\pH+LT56(H)BAF+!!!!"$a_uY")j,%;qQKo[l\5B>!!'f,55k+PO`(0lDuV`]L&_2R!5M2jq;`3ODSGUo04`lMz=NO&TI3d7cs8.m!!!#78j<1B6]l9#pr+muh%0Pd!!$-Cc[Yq8O`%o*V(ZE9&-)\1!*IA?n%UO(9tT6,\fh%R!!'6dGMdgMUmo.!qnLIg+TMKB!3hV7h0f%A?d?5+zYS-eMzCkm5kGt4["YC,F^=Z6H`!!!""&uD(IpkO@?\fh%R!!'59cgs[dz[Qp'prp_*11$aPo!!!#79&>$oD38_MqUMc]h%0Pd!!$-C>Aq2$dS6XgagrVq!!!#'OuM9GPB6m,!!$C77-Wj+rop&\D?p4B!!'+]p?gTYh0eU*?d$#(zY``5"DM`K,ci%=XX;_3@!!!!L\U!eD82oH$`](2@#QOi)!3G8$N>nZ4z>9HNss8&r!RWUst!!!",-3*kWs!uMl\(f0=+TMKB!3hXLj5a!!!"LPsjm!S)=-UedVW[!!%P7]_^oo,2N1o^]/Z3%06G/!.^?Io#`JY)ZTjlh.Q$#QOi)!3@G<2ui]Gs-\!sz?mRJ@r3AjPhtbQAZ>KpJ!!!##jP%"WU`0:6!!$4G8iPZ+mWZ!T#QOi)!3G7XQX1ab.8_r!!!#''&0i`]"._+]2o8r#eR*b$l).[n(B=F8!7K]6F6B44BbN++^79=U!<<*"@$\Fn^3f;C[*O3pZbQG"0=,OFzb]&uXP3dV!!!#BqnN1.^PV_fpqHe-qsP2;zCmO=!'-Z96!!!#O+9t=S!Y,21!.YM645*@5*:`3nRg]8s!!&2uM)H"JkOe#f"<7CA!!'R8GdJXPzaK!/R!!!!A-WZ9d"<7CA!!&FFUWo2_B3'jI"<7CA!!!o5h=#e/8"3_lDQOam#WMea!!"btU!/R!!!#W(`Z>Y+lE>#!!"uV`u/_"2uipY!05.j8"2Kr6n>SUDu]k#!!$,Z4@C+i%KHJ/J/./ng(83'!!!!M/T9#`6GNU%!!$sdq2@4oAAJ$:c[VPZW<*&"!0CQ5N]*"Zi.r-]Du]kF@2A$!#!!!"Lf]GYm#QY/1!!'g,2F#n`#WMea!5OWLNbB(LhuE`W!'=tcU.p;k!rr<$m%Ea(2A$!#!!!#';mnR;6jPaP!!'fpf^#!!$6lpV6b,ejl3c#WRQI&9%UL!._0sUb@6jPaP!!'f8g9kT-+lE>#!!$582ks*#J-,cO!,RX#N]%IN%KHJ/YQ]h@&HWFB!!'7Nib3DZ4nn;`[##?5!!!"L%@)l1DnYgEf%D5`Ooaa`%mS;7&cht4!18g\F-&B>LbhE6!<<*"EfL07Z\a2GT-"+E!!!"\>P-W#Jq*q'!!)("d:RA$)uos=+Ld.bLIJuZ!!!">LhO+7!Y,21!0A^!RoL#=!!!"LS06OeNdq33!!$PiBX9;o)uos=+@APdoci;o!!!"e+PIe=!Y,21!-$/<2FiOQ!rr<$*#kWs;'Y!!!!!#>J7s!d#WMea!5O^@g)MIA%KHJ/E(#L?a,b`Q!!!##*RQ2a"<7CA!+:fGBJUJ6Lc3;7J-,cO!3AUEg:[CXgK@VS4,SOj!!!##kRW1<"48GC#WMea!5R#N[!D;k7u9.76GNU%!!&Kfc:28!!!"80qupq+lE>#!+7;hD0?Qn#64`(>D?gtb6U'-!!(Xi6lQ\V!!!#'"c,'m&9%UL!3jk,2Fo%M!!!",6P4/hNIV*2!.^%r[)#$62uipYfH#!$G@!2E35h%KHJ/EenC]jUcA2!!&*26lW4ZJ-,cOJ=Ib9@!)Sl!!!"0NbF&f+lE>#!$FWs)lshV#64`(R3:5A-kL=t!!$u^Lc.4R"<7CA!#urP%?;>-#64`(a+.iUj$CH]!!'fs,21s7&T@^M!,t>^2E6-g)uos=XBcf_cC?m^[)$`+huE`W@#]t#a;+d]!!!"76*rp!&9%UL!3dZA%J#.%!rr=OV%IR+2Zt*#!!"R$BS1[VhuE`Wi)#4fa>3l-!!!!77'o8Z&T@^M!&,5:#+L3p!rr=O)2L3'/-Hpm!!&f=g0bR+Du]k<0S*nibsfDK!!#9CBS0#L^]=E8^n6E@fG4T0!!%Ni8$p)j+lE>#!:282%CQcJ#64a3#8(gWXU$ld!!#*7BS5\A^]=E8fF^LjliI4u!!'gc,MHOL&9%UL!4E`l#.oV?!rr>*Q&%?N9`uF9!.ZXg[)"@>huE`WC^m*J5emC#!8%?@)^%J_!<<,PBLEd^M1>[.!3i/Q2S_-N%KHLE`Za%9#9i"*!!$gHU(&dq!=&T)?m?5"J41#g!!!">NbAMGNdq33!0CDQ)rRr`!U&L(5L0*m$ig9X!7;!Q:)n6@^%Yh7%KHJok(kq2.L8!6!!##FZiO2t^]=E8a;iS3=;M#K!!#9=Lc3%p&T@^M!&?jI!KI3^#64b^Qk=1cUI2ft!!"u:a_5b]euc#(6!t'4Du]k"6:O)#64a3/trfZ.0qm5!!"edD1Kkt^]=E884Bld2A#rp!!$C.d0A6."<7CAJ/HZ8H^"5!3i/Q2?9TdDu]mR`Za%93!]Ni!!$gHU()Y+#WMea?m?5"!%`_P!rr=ANbAN&E'hAPRKODI.Bk[J$B"SJ6bRM!O+1r^c?W,*!$9E!$!eh%=n+D#+T'"ns6lQ,qJq*q'!+mA-!8&h*)uou#C)?qVHCeKVMq%^1!C`@5sR8F^'lk\4$g9BS?D=s)/!Uho-et!!%NU)]*?Z':&F0mV*&HD`GI/lUZ%n)Un#k0[5Q45;i=*\Q"DE:h@`jG)iHqgSSQXP,*nteud$-mpt7Ej.lLc<31u[Y8&>?+(X2tKnL8C/DAm[b+"R8js&^`!.`_A72qr`pl\m!X.h^LmtF=O35/Y#9*kbnEX0!s!tfB"*@q'XT!fgpZ?,f:)q%Fj&9%UL^n3M@g'DG+-qU_CVgYU'HV74N(U^uUj^\s*[$!5p?-fo0g\:E!n=\VGFsa0lam:lIf,cuU41(%C+SIN1YMS^!aq`h$*U!=&"mLb`P6V41!!%2tL.3,E3i$dHl#0lP"W!I\q):;e5C@p.mKMKegBWn1QcQqLk#R-^^f)RBHu57W"%b>0h"\)o_OO6b=seHbWfLA^?\Ft-FW.AQ+;<"Xe(/eZ_9oKq*`"!!+;^@DRArSlNrC$9WOJR+_QF2@CeuKMCPblBXM"I[2)KJC"8GKaQg70e^D$`gM4-sbuW=-<%1GA<^U]MD7=m?V%^o>r(c.Nes`UB;,sGnX`RbVGGri*nA'&_X_st=;o4kYCRWZ>ptdDgM0?@TB"c`X$Gj!'U9iD">%>"TDp^JJEHa+dlD"R5[;*J*FGGY8Def$%@^d@tJ9K<+^?K>([\?ePWm[nII:qHB/:P5>VAjsIeq6np.>h<2W6Mnc#,`YnHeT2=CMJip>,eNZ,.;DIC=]&!d/M#XXfbOOlJ^\)44egrhb@Go@_#,\:04RN$/2/Si['4P;g5f4id;%qu$Bj8o7$T?=;n:=JD2)FTMXfO3f.U1Ye(]\l)o:S[Dn5r_`"mC'^k+OmY0j2Tc*1,^UoiufJF67S4#bt(4^Y2_-Aa9$+'.*DcShEVurTG1qoC+&aVle?DrW>+H_Y_WFJtA1fm4QWoA7cSp5*P/SR)EUl#eu0Om`&KK.eDGLGb[;!5ua<`RYL<[a2r4#uZtc;$e4"eZ8`TY9r5_j/OTe_&fJV,O!fkr[Tk:3MGbjgj%?pi&p\Z(T>g<@9L:ROC,^dC%b4kT]du2e8(1j;pXX+@lNp/r;#%IUECTdh/GC?GIHGWEU/U51H\lW^q1[IlMl$IbacHi&*'2K)f8c(!]_9f5u/`0]EW_T(%7N!B5"R/FkEa1gMHF1W\c:BnaMVLP!;Y9=h;dk$eg)NLD"[NAui[B,5YEZ&5VrkPe\s&q!21#"*>D[jd0`7j_8h3MR[uP-)8"=4oQL']:im>UZV/T!h.3,s5%pJM,L7VbPoqL6HGe+2W82&\*O>;=sP,KGC`]hS5jlY),ad5*,)%&KD^DW3.W*:1!l]tknUkshim;lAn3EP2:ekp?\3j-`(9SVm,[oI/6-*H8:Y4=!j3@pH1gML2=5/Vb+N5O9t"VdFJs2:KLCOfQ0/LPs*(0Q[FpW)ZU]=:F4r+aNe@gFp':b`l=CHHih)?`"fhs8DZu2uiqpL[BmUIQ1%KRUn9KHqbUq?"%$p%%^L`dS$lT\l$N4a_WEO!L/n$cp$L^l&Dg^%g(a!na9,XXsi+u)0">"u6rk[hG%O5.CEpR,thYN6GD:9o14E&=2r4ZUI45FMTeS[6+rN9*.`fFiMM&Hi5'%]fX>)@f4ksMA734*'Y?pP`;Qa@?-LJ9_t#mhs^c0;b.':jYcZ]r$eI.mgSn:Ck_j7F[aM24m(S(01@7NgUh!3cX8-JF.GIk[.\,0E6!Y:LBQXe`=:I-nR=](,JY>A(B`FAPdH8'_^27Z4Ut?cpT"m!1N';pi!n_O>V104rk[hGrka-sp&/Ind.=Zr+?=L-C#VNTXPqO)P\e%&4Sd/@>14GpJ^sjCZ4<@AiY/Ug7S'E(l#ed/)PE*T(XZ,"df'FEP,?^Q.[OkU&9%ULfP"J&D>_>bJE^K29$<+WY!FXN[+-Yj`Z:*b>!ufs(3(G460748"eXp+$NA3IAV@*1fj8oohW0R@WTe$*j7NpX2dna<=iWL%GlC3]%0P@OQ$W?t
      Tf4p:7H+`FooSEq+hlcCL^FfH8X;']+':(_eg;"d^Sp\=Gf8!'ZnHh3hUfgT9(u%?)D8DcA$;u@9)6Ga`mMR'"nngGD/:EpE&HN+:J.8n\d3`*o@.YbRh5tr!29jO]n*n.PrJB./-/FBD]04E..1TD+'7$D$gm3XFQu4+&m8Y(\GZeNRlOS@,V=0)Ve'4SHf3]ZVLgo64b]u8iZ+Rc4Amn$Z9+>r<<6o[/eRn`tQ?Xj/jUSCNn=iR$cuXSp1u7M6F$G*#D^/p\6V8o2;$q7:jjMDI0%8r,huEb]EOI=Mpk\u+>O%DZ'"Z15Z'3;-M`G?Ssdu/9ec+_-$Hqgs&J]meRb-RrHZ=W1(#=mjYr3@kDhOi+&cpk7-44!A\"*%r$JT9-Q5F7GB,b?_!)7_f$)@"ZDFk1$A/>7bZL`)s4RVT5g@\>hfjCF>k!6Bb[6l7n["YZS"E([]&?,,[O&"jsBj:U+0oJY$r3NPF!5q?Npf\7\*t%R4h/Y4P1YXiV>_49igK43*m19,q-e*o.b??'iI+S)f05Mk#mOGS88/r!;!_nIqRikM,iios##G68kBPQFKUmJ:I_%^d^jaS!u?TAmI^(6+idS6'@1%eP+H?c)?kt?A`L:FOM,Z\"ZEbIb`'##29AV#+lI0NR/T/Qe%o&B`,do$`c.7H/V3?bnA&I[)_EC@\#.ANlCO`0Z.$jo.rfhfd(s"9/)K=l5<(]\Xf4-JnH6\b>#oJ-nK@OnX:0t/`;$/FE?(J'$p;J?0p9>m*04.UA,DZcNgSY0qE3J\4kY.J-,d:c>?pqnIt3p,bM>$+YJVJW@E#/FH_)OID%3/G"RIfpW\O)UTg4qr-WdiNWq&f]*d`5W8BQ/qM7Iqfs\j+l4hXX_Ga4ZO0-INiNIjQ'`&e(,Z"!!&*b>8_:@V:n3GTSuj]UNMsa+Zb`#duC$4^0D_]hk_$_DQ@@eKAgc_Qr^QJ0.L-K(`9]b%NgT&XcChq-l6)F`>E]PQ>'O?G#'ck@W1g*MMW^MP\$iOeqTK!=Mn0`i#80]4G]c2WC=MP(;&#>U"\^!AZ@5XFE:,[,i(#"]X$7O?6TGVY?gmWHMjY*@$u_#1g[4cmrq1s/SiuX(mRQpP"RAqp:\.4(73q/U1B*Gk;f^.%nsU:[Gq:FaVEP=&S+KCnWT99R,U4=XhJ4tl_d=LqdI//,nA0n/9.n<.E1DRL@n;K*\TmoGe3EsOd9U,6L(n4J#GVjMAp.>H7?p\("#jV)c[X62uiV"H'F-YF)o7fX&3)_e"Zl$^R\3B;,^KK0R8n/=paR'2iN`#IR\Q/ap@("kM$@WK@*A)Y)[t>'YFC:!7LPJi^Ng'<>FZp+gIu!Y,21\[&?b`_WZ`0TcO9fnmOZa^1RHUmkclSmQ:!EbSn"=9prd8nP8l3`SJ1Mp8t9<4%L@UD2fb6hBZd"U@`Q0A!f*C;uBT3k6d7hWgLT[5P:jC:Q%b2]$jRki1i=\`<&o:/Mn:E-aP(T'6Gp29YlW/j'kKG;tuu`7:qG#K]TM<04\NMXQql=%Za<73R*eN90p/p7P6b9Jj.S.Cj'5gmfZ#9tWp&fp^`[)4D8$7JaFmi48G&6/@B7cF.c#`1j)O-6X?R+6GNU%+=FTWg>n>$#hIAM%F`\sTk4)W6M%C9Nb=`FG_ouMShoP$LmI'iq[YWo-[ojC^0qNE?jjl[O8P]/9,qkhY_MDqksLiTp06SN>I/C=fN:(ao4EoihHu%nmpc*Q2>'=8%o8bb:7f&I%o'FHZtr+BnH.<^6-0N"%-O,la,;k,7AIc,2kP>OBamM#LZ4gTG.[U+]M)O^J-,d:k(knqYV$%u!!"cBZiP^M,2`G$O9qWj!#u.D%KHLLN+`:n7u)Ts!5Pi_g&Soc,N&P%E"%O\!,t%+2uipu.A@7O*%(dt!!#NBBEJ7TO+7<4^tKB;!$Ecp)uouiLhHkjfco>S!3d5,)Z[q]!Y,21X#!J6BEJ6[O:4)jJ,F<;s*XkI@)H6]G4"_E:O_kuXT,=2!:\lkkFFDAcA96$++!.EXT&q7!5R`Bie]%W^7-'#DIi]QFTC'.ahF7*55H\ns#pD_Y^-6;LHdopfOG=b"+Y2BmficB[34B-5dlJ,!!')4!=&V16F6an@-n4Z!-%jl2?3^s&HWFB*%.Hi!!#NHJ-,elK4k>e^bHB$LIZ^n^l]hp!!$tSrqOMu&o[j/L_+D'!'"Qn*,IdipC1VG(kuT=iVs"?"47;QJ4pMnYX+_+>LTrc?1\$RJhI^u7Og;A8ZKmqmgkGcH!#a_q`WE-em"uV.MiEq=]W_b:.+Vh,O;5/%FG@[J.*$/YRs9pOk$n].=/ZEf#S4Bh;h;Rng17d9i27\UGoJrh&6iA!!(([!G=?ZN`U/nCZUHBp9JSZI-mRV<_AP9)2G/Af:Hkbhs]htna4KWcSS'8AX6lQ++EeT%M;p64\\Vgi!>AB&H>-7@h?FXS2B(`3jcg+oh4\7,^LE17XU(%)&3CL[9*VldW&(3."oik<>agYH/H6MNbm<_re@JenXT%KNK1>NLY!!(*Bm0G\fjG8A`eQZdbW[b#LX`Rcif1IK0%EECp]7Wj/S.Hgc0X'?uWYJ6*'Wn,'>'8.Ogepm1bA4N>p7UH$;r>3u?*,t![8KlPAmM`pT9%PLeq\/4?<'^"e[ed9\h2gG;tjudSnMWAekjnS.N2?iFII?mllS'phK6D"]2tu_`1F"E[G@caHIqn]puJf/B"c`X$E=e8n8:+kesNR`VKWlYF(O"37QW`)_3o!rCUVW[DLa]s<_!u')77@3*)5sX:E6I&11&7Hr+9Sbek)]2uS(.+;p"a`dOBH9_7t5H1Ut*61mFHLtck;S=XYp:^l=P`':O0?KD^7\sLj>4ULkU:T3jV*`=n<7R`(gVJ+,iO&$uoELHB0@*'e?`Z)^%n(*07F1BL2bp6,TfXZ:h;es'7VVDScLr17M1*s@S!5WPh2$7(\s?;l;U7_4/:59_>oRq(T>"iuMV,Jg9l;MV7'0sr?APmACXJ-DE2,1&`EMb]pd1rLITU[NhQcnKB<7<<3XX4kYC=col1o;DpWN%8HVA5A2>Y0)gqmn07AWR'm,V%nR=](t].Ge'#.jfU1K#<`$kZ?fRetTX6kMqK;<3>o,>KO'Y3EG`DOR=->dUh:<"u0j\4h$b`n\8t<,L)ceS:d78jh^7*1sTmW[@0GEJBa5*aR7QN[bi\=uEep`ig+A1n%$AlEC/dV-86W4i`lrUPgaBnOr4dH40VY09p:gh'GY"NbZd9%O]IW;iZW:Bfa.j!:IY#[/XrDms#;QX_,E[f`!1\\JHU4pR>G,=,DUUM!lX*7:5[BI5JAH%;NMJX8/FkUa^^:SSQ%GNC68$T+imNo.u9oQBR"obe'irLJaMk9!Vs6j.dC1;X[ac$Ac8$US"aaWm.un*hqHAXH[OBDt)`4op,%V4H]BWk=uqFmWBVHh]V\#;7rDYl'GgiV!U3^/-8*B_#HR*sYemFbA1kuL88?gh!!b9#Hs[[TB8,'V.$3sm4h31BZ<:KDGGRUp3mMKd(r;Sh,TJ!Q(M3i2>;([&XB#-AJS!!'fsgRs'19Iiq$;6f3U[HS-TU99ucc/NgYQC=#p/]U55>)F"0GOrf<`bJ4smD&*e,?%AiXS,+po7G.T21fNbV/`EQW";t__pMQI;qYp&gaZA9B"J15b;<(m]D^t'r'^B;`sXcFC#YedE*1N`SC*)EQnK@73*K33NBe)qtt=rDESRem_Gr,%(XQC[W+BEJ7M7ba/Xds$Etq%(UXOgr0D)Y]<::,h,qKC@b<_=WM:(/J-qh1U^G7Z[HqV!`NlqRqI-C3Q,kAuFIdGC*aOd(]L5N\)/SOiHG@Ah<^8\&rQVU\*'8aGr&udPQ%ng1CogD$Ah1a(]"/UAY_a`&ah3Q7IJ%9K/!ppC41Zkr,$5G,s<\GGV%"$m;h.ksjGnEjZ\uo8[-Q4_`nT7^N!P"g6I%e`JpZ*mC>4kmbR6&U.Nado)[Kn_rs0(l%9KT'gbASWHH&qF\S"FSCTS53*8E8=U6,,\M7UBLc,55ClS>tS@Gbrti(iR&9]NI%]B/@%3<1%2@2-FdL$+`3.)kh]Lda0#-V9u5CCN[1`:8aR8KE`Nm?iZn,YH'0Um5aNA9MTaM2ktYsof=iuZiL/7bN(eDK]sgg7(59^7!DfS4Z4VBF@Gd.Pu4[a8?I[n6V;RD)f(Fch>TU".B^HnKk(Y,0_H#h1r=#GpI.4rW6lQ++[SNIs:0d/k1VpcHe^#H0,%,D-QKN?'/>P11:!73FcFfa>DBe*eLe#@cN94G?=C>[.4'qi%dIlMs[AKEAY*PttUE@X;p4OH3L!^5!(@<<65;Ff3Lp_'*=1N'ec.ta7#cS?-3U#r;N\?a>]jS.A.clhf`XeL&AJU1`Ag5qkpu$cm)ZTlH;JlSs0j`m5'kLV';^:a3+kR3SbsQN&b1"/s:)rg:3)[-B9:QEY"W<+3n@g),iBH]$aTGomh-oMZ[n`;F)`JA?DRalEtf9C%T$Z-brIg]/E@;2N9i&.R:?A!+8=X1Z1+7d1k_XEUlDQ6dIDb]@$AprE:qY9CnZkiWZiTE@a;D;EWDOdCUQZb\k&]48Ylq`MY#LSj,CGGJ&*=C/ZAIfIaKR3C_.NX+B7)qj/sB=1Y@7+ej3X2r*EPLE$Jc2_fm>)a?]2qRJ^pYdWD%:AsgQO/I2U9,XXdW\V7b1("6YBr1'3$d83uqB/qhYP5'A2Ko\&K:h[u*.F3$.[/Lt.6O"f;jmUrV%SP'hS?E:SY_`Mq8iuk"os1EP/De`='7gp>*S\t_m(fJEOr_]<#a62KA^8.-&Xm`)c?U#RqC1:VHU3V)%*P,H6(fkN*#kEfNY^6G.A`=dJo$D.jfA2/IC?Y0i(a&/AhtS=uZgMG:cC**T3sm.Bsk!F"QW'mY4@ub%GFbnMq;=ctQHqUE:e?g;&[lN4:186/2.PWV$Ln?.Ra"@WCDoGl-Zq,f<8B/XgueSE.D%p06po#H];(8[sLWYk,._kVb"kSD)r;0Pden>Z?@&2!i0X>jk[^C\Ah/kASN%U2@%RoW8NBYL,5'@O8bSg<*`_@GKD0.>:g/d:bEg>-1b)A[tX!A[Pe02RSAU*3X<0V*4#u%u<+D!:6?u"rthX9B/4)BkfqSNI@RAnsjS#h=]lM,P>/BQ"!T0/bp.U&]ABs>"oug]s"U_kg'SX.ledKTLQ1\\^m7T1j"0Gdhp]"DM!YB(,Yh@,N<>&c1.XYhC?e?Kbj]QCAlY7dRnPV3Qa>SZKs[M%]$8>nZuq='4]ZuL6Kg_'>fd*]tonJ^M:+"h*[:L`f#p+M7^+E<25X+@\FP/K`sKa%@4aG*-;IK8l>/\^&4/eF@3D9!+9I$0]7be[F$i>V1#a_8XA'fe[$W9a6,S@pu.u1_qp'[akCK$eiPbH[ro_EWr%ORl*aZ1FQB/OEU97-3q;QL3slC$>E?144#6klA8*3M(*o\i[8GAmpV8ZjbFXp?G$8CMW-mO'VZu:=1$K4P8:A%F7&=c5\m:@@6o(c#V!NID`F.;kH%#iodm]M8QgA\_8,:_F(bZ-Y:[`2k1R8cA";u[^[^jS7M.gnXb&Gn\f%'qbK8IX1%XA7!hVTSo>(`ff+7+3iE2u"OLF].b1ApE)jL\5gd.ZWZIk`+$M1P:]*d09RNUa"^s]4U!t;R%Rne?0L6c^_bR/.cXu!5K!G*+7B#Y$Z)X$K[L@YUcQ%fki;8PgAA[ZiL.,F,>G=e5K-TE.D5(fj9/9FLo/'\"i\E:9[DsNg<)&5dUOl!/i)[!6?ad%0-Af/-6<3*$X):!.a/BDuer+d09RNXFbs)+=Dt'!!$DL"<7E0,ME+tJ9<$n!6>`!"onY)(BFb+-AXP[!8o7:Du^k6U(%)&3'%0^!69h-!rr=])?C)Y0d,0M!.a)q^]ADMhLGQRU(%)&3&UmZ!(S;p2YZ'T0@9t(!#uLN%Y1<>Y71I3a92MK^`(2*2WrAV,ME+tJE'/8!O*?]B_0=nT4InE)ZTlj;$7j=.jE[I!.atihuHlJLc,c+n,Ui?!!)'b!=-CQLc,55+J/p!!"O]r!rr>lN.;"<5suXl!0D[5)ut&npYL6b)ZTlB&I:>rAeQhuMMhBEJ57Fq=];s0Ho._/30IhT'u@S\0#EY,kmbW%&`dH(fqmZq6N@.BQKSfpb'$*.m`J0TuWpQSF46*/D@<#\FK),f;$8#DJ!Z/q[X(JAl(T('?jj#t.#k3FmpS$'%UD=O65LW@dG\Z7Ys\V!k4=)6i5R?`dB'q<@N3#H0gS)ZTk7ZNrNU2'LZR!.YtX^]CG;d09RN+A'?L.Nd%B!!'f"^]>o$d09RN+:A2TW'j#m!!%P^#WP(\+kcnr!#.`7!@e9#"onX28L!)?nA,>4*5KdS2?3^W,pM7IAk'-.!!$+:!Y/U56lQ++J/'3b!+nU*!<<+%0`hhm*^gqI!.\&nhuI@SZiL.,-jp(d+;`E0!!&[N#WR>c6lQ++J?gEX!:,\Z!rr>*7L1uhH6V&C!!')L!Y2FuLc,55!:,/c"0=AS%0-CD\fou3CPQR*!!'7K#WTV'+PHeq!(]Dk!Qp=6!rr)ZTj<;^('!.mpZE!!"\r!Y2G>6lQ++!7N.M!2Upo!!!"d*!$9m`IImY+/02E!.akWE.Hq9[!DE%GDS3X!!!abJ--KPZiL.,W&Oo"+;`E0!!&ZY&TE7o6lQ++J;Qh3!H^^K!!%O!5emDV2?3^W!TFq!!&r0"<:B"U(%)&5YWE[TNVqE!!!"6&-3$dLM-bi!)U!-32e/l)ZTkg)FqS/FWfB[8mfj"%#rjV',MN(cO+4f_jbiD#%fcS0bi6Hk#6P&1,22D<\*oYjIc2&"R%+b*NZL@;dF#43c^n@MDTVkp!<<,8'S_?s7'tXZGH]jkA./sl/G"V']6E]^_>O#ogTj%8!!!"\m*r"5U2fDgq/4ut@Jl4;"*;U*CGRn.GN?gWE=8rD?'Y:?om1mo1__FLM-pAo#W7P5+$j&\Op5\k2spXHhQe<#PPE4a3+-r!<<+MH!S16IE.?gU':>D^](XZ59\rMQK9aPBcPuBcCA%n#6b)-!+r_"0=M6I=F\MR2S*IB9`b:pTL/VJb:fn6R#i2)rq3IEa_ppKb,m5KkXlgq"onXR$=um\e^rE^i^osP3*79'M)MpkVZ[,&!'l5fj+8BV*3?Qu7iS#5SC9h94`pA^e^YZ2!!!!QO1Dg3^:q<:0'5pE_:g>>[*aklN//^.f!!%OlTF\$ikidiA@Vb]h"<=N"RRS6e#W;Is)C"=fcH`T3;ZHdt@#\F$E'^*+pYs/MC].K@*3@.@6lXtSo^m\:#K5fb`>;ld_0SlW!!&,?d\TS\f8*J_\h.Ja^qn0p>I;dP9hk$2]2sA:L5(H6qRHS+!3gdS=D[m.m@sQ&mbGAGHsQjaQ><%dNUFfG)nU:\&g%\TeEc^b!!!"$):1/bXoG^@E)8SEd7/?QlICY2H:WEW55aofomC'G!!&8Oeu`0Q>rTfa*KsJ*!=,H_(i=A]/m[2>D4C=)I.l6+li6;O!!"G8cCI&op?`Nq[=Nl0\KdsX3%.OJ[*a9STp_R'j!!!!AQY7R,p!cnag@Y(2c-=MT/r+t0JkQeoFJ!sOM>5S:gU?L=Dn_?<#ljr*FL/<[cT_6-BV]cpGMg/b?ZnFY"mgW45YVp.5r?eH4$.rfjVQUXj?^S4cEttgB7,`:VP[nU!WW3sU\+#Fp[$RCk3nfH3&#Wb8S7UG*]S,SCjhrV!!'FbbaC9`G_,24YKO([#m?c%B)ZJ=b8e9?n(p4\jT#8\e.@&2-fOXXbHbn4#m$q^0I@!2tA(I.L(oY-Ca;W?%6@D037)h:fJbYPbNea/&5Ib:o8LM1m[pu."6CKVe^:+`F"BVV&eSFlW)ie)FNoP*!d!!!!uVjfV`mb5'A[(&l&4=Rn.\gpjbFEDV\O5'L%k@N6H!!#i4VP^4O4$,l89-aSl[?L[mVcm(j[*amgW45kUM9Sj%,OJ;?*:^A+GD"gZ<#%g#N!WMX@('=gS[mR5'O7\d8)!<<+u#5@TDn*]TZ9rr!"I7!XSpK\$C2,IA#WUA.>,.'pA7S)U#']IgFn=`ifsLe[!*#uoq>#Sm!R\"&[r:/p4*P5%ZW7>kQ-P1DJ,.8pW\<)ihL+ohnO\,pZ,``=VI\9[!!#iXNZC2.)H;(Xm_*c/QL%f+('1=RAO`0HIeuk5TsRk_kNDa>qo.agn])`DSt;6R%KHJoKmE^spI/$'kO[N>EC4n$l[aRbM/"7DKM=I=?WOFu]O&!2fJ72rAH+[S=-"/mPn/],!C439FjA)o(9;;pe'Yldi2OHhWC.l1*fSA_-t`!+9-bY@$1l@u"_TSND$jFtGH]E6PCqHYkN4:/:Y554MK5F68GJ=o\O&bin36RsXkq&acEY-Vqmf76V<&hLGQR!fkqFD%'LK>j:J9&0KPD3%VZW!!!"?q;mrM3]fDl91^u&A_1B,R6->'CqT>QFs!#&j!!!#*R$j@&GjqA^2LU"%%j!ip?&jcgK4>tpg>itYL\9m@Y?\U^]+tAH!;U5>B:jVG=j]M"md=[!NEd[q&TFNjg(Z8&3iXi-2*!ZG]+tAH!1?7(rP]R['MY>)#7dsbnmEW"2'i=LkiesYQ4FH8&o^m+BX;kWSN8&\qn%%=\pgJ@W@\7C;@m]@0NPhIIf-_B=o\O&8nG)'rkSg]aKD?T&TEUPg.5bE*.l#"lrjAh!1%5E4o=s-Dp,;[FqJ[#+kfIWa"@>lW"d_0e,/k+'CD)e??q6/lfB>KjT72r/$NL1B,&b3kVJ)oMG':/2\_.O5Lc2,Qo]T.lhUoSms7GrjlrjAh!)h['s*`9_nbIPkDr-^a$hC7XJ4$[uZamWW6\c/.ZU[eecg:#"luE(+!0Z;[=>Wc63]aEK\K\X$'NCP&LM11HGOODUlKT#FOI'='RAi^W!.\>%B[igQo#i[tf7G<)J.i=qCFA$OD(#3Ih%@lrm5Kq>#:\i-b.@2mW%q)C!m7Q>>*TkpI-Fq#gZt;V\j+CY,^pU,?uVe1'(Y?l<]&i"0`TdFV`TmI>G>.HU0I5F5X`!!&rL`i>T(Ke0hO/6d6%*260hqXi64`E?d,[Vc'DpV1:k!WW48Ks>B*Df>)s#7k@3K9`CdJ4$]CF<`"TinX+o_[leBj,^K]!<<,M06>Z=>)sE#q>q/SVE0M8;Oh0Es81^2\T:8a/H>dDb->\o26!I'6aWg2`ZdCuh;.hnh32+S!!&s$B?m#Ue]oXC*CR]mJ\Q!HGPnn\l;I":"o,XG+FhrU9T5?WQQq16io"Lc/8tVk8Fl]mI4JkIgcegTkSq!!(Or)NB'V?B<,?M*tn+K(>ttJ4$]C@c)V.h=g6j7DLp1p8mUa!!#:W0G`APe]oXFM#iBF;t[m"iX:/HS-p,caK>[H!)s'JL>9+JO(_horI3G-?u8nE^`hF]Li_b)M=XM58&r*rIOi#G!!#jKmbYYSpu@EnVF>ua5@]%U6)=](U.n?BH1Iaj$gl`[P=9Ej!5OI0ogMP]RM1B[0bSf*A!!!#*@qcnCOreRu2TYODB:o,toD.RAbH;!K!16i>V/9%Z`.14^6*??4&TO]%[Vad6s8?lh[/^1,1]$LJhcSS:77[_E6lQi7:[7`E_[g+hIU.+K!!'f>*^"[dq!__><9WT2@;-YpZH`K+BS.MIRB!m2>F`)BIIpAP_#XN9R7)C%?RbHq?[n>H$VYEn!Y3T^9+mpfT-IOX*8._"!!'>B*?>m>K:P)JrqPN7Z>2`0=GMDoZpBOdgplnD_[hY]fYG:QlrjAhJ:.Cla$944\_hl5XmB4f1"J2>&8eX&QS)S7GWatJG3[R+fsLe[!1CS$rd0(T#a'+;f7F@97KJ9XK,$@qrk(EboS!YhACgk_!9Eq>Vk8/"g;Te2=L#.:*23mCm.g,2ib[2ndIH%:hoW#)!!'+0?[r#ss8Mtk0d)p^Z>2`0.q?@FSNFgdXfnphYAO=?W!0(pT,*dm?+Y9"o*3?N`;ta-KCZU$q6E1ear>93+hJKi!3ima>dtn/qV/JtO2YS6CI,?_!ff7OLc1>C*"M:5W/5"^FtE[o@'+hJbr6X`*TDtV`>;n&Xp*?I%lcpD6_so*U(,]!aN0/sf6KKMBJ_3N('">2I`Cd=B@!07>mmZ8M#iBFK/GMN5QC;t08hWXcf_oco;:kp!!#8Eh7\/:T1VY]3G$folF1<>+kgh;#SaC\R8Qip?EV$ST`Mcc[pG!!&7756(5*!sb4n)=&_i^`hE>SR&dH7@uokn+Y#."TSP(f%IBBp%b4KX&=*mW&[u]LM-c=55k+PI1!C.5Q=u3/H>cYjhCNL$ZSK$kicFRB?4NbS8Z.;L1gZlhKe9)rFC07aq`U;!!%P7\9di5p?gVR"oZ;l$aOP6:&F_GO'bU+g-CPkq>%p`%u^&ftrNmlf@3!3(M?m^qp#D'7$X]6>?Hr,H^WI/<**B4kjgQNI3f8gPC;:HnTM\;1Y(%*5RT8@`]u!jhGaY+%@gqKtJHDEN7;W9d[f!'j-"SXp"e*/8\p.6sR5DH/t)LGOEPT"TV6Z_[eu]Vbm9R5Q<1E('">2b_6E@`$Kd-p?bqb?Bne(!1;9oi1N&0mb"f)k09C$CB4D8q8HgJNfFThao::X04`Z9!9Q.#48Xdtr'?i)]=PQj%L)o`$/N18C\R8QiaR?0lri#L!.``s9hk$.ZU^NA?[VB4fsLe[J48n^]6Ec&6#i;6*#t2K$NO.\Dnl6OT4-[VpYVV_f0Z*kj!%&;77.a(!Y$\pr]+tCF4EGRbbV0"sJ/S:S_[dsCLl8R[33m<#J4dch!rr`MUP4tXA^!2s_kIf&N@D;1Fd!!!!Jmbbe:h;'Y8`;TZ5Z>0JkC2iUr3IQX5M\e%hXp"fUg@FO0YDQ!B;boQ!n(p4\[/`IWGl@pY:B+%qO8n!7bn7IfB0+T,4E\`u]SDH?rb<3<0%YS("92MsK^SO$*"!YJ85_"TYR[SND$:IIpBVi]V>CL^6)Jb5hU9HMmB,s4$M"q#:0ZA_-t`[Gnge^13!q!!(1-k09AWG3fd,f?ZYX9Qhuf:g8l)4tg9W/@uYt!%QjLb`"`L^cV"t,J+]kW($OqT8u,*aIPD:ACgk_5\9iQ+9*alWeV')@O;*UOQ-9=@Sksh2/)1Veh^iJ8BFmJ"A*u7pUEBTRm$NNG7o]T-VhuEb]>kd^EJ)Z;4`&72>Z"((T!n-i7&fAN'_Vq`c=o\Q'EoY0!NfFTh9)mh%%qO8n!5No-nDM-(cTNYYK0r!nZ>0I@PekB^J#lEW9m8]"T[r>-gDi1lJ4W-0TPD./_@,AYrmXkBc-=MTXp"fUF`QTd'p$DAD;2Mbf<"p:%fYXp"f%AePgkiXG;GGckAd._?Gr!7opIs7f*(i=l5A]+=tXRX"5-f>MsKX/g#ZG#icK&_/\;bu^m_c[p[4V9Hc4V:STiqQ>mgW4CLqO,;P,W7o&\'#CB4F:TeF1Ynol!Ip],iE1cI@kYP!)0j@S%4!!(U*>Aq2$cM6D9M-=o\O&!+=pFGiK5FD-hJG"keS0!!!#7b'is5=!HAbgq!%MmG"p^!<<*"J/,YBp[6nOHUYLPLVpE5!<<*"J0I@!!%NaqX(cLoR#$cp:%fYXp"e*!!$'fbr=ModH6j0Ssc4CQX't!!!!##d+,0u7C:aVD;1+9r[>Ao!._%C-'P$!1_^9kW,&,%aY!eu?m7`]U)m$FUh>NSNl:Q[7YcB5j@jjBpsYl7,gss7n%W5dblU/,lO-Drq)lceM'A"K9I;ncUZ24,kOBgq6L.X?1neGXg#,^AAZJ6k-:_U5!rt$;^1^EL1oo5a%8(Z@i&+tS8mFusMMH$]Q]d1OEmP.53HF3=_1QfMF(O5a!*$=kJXAm2KKMst3[mJf;)\*';fmpW78FDpB6dC.82gO!!bRV;-=9'^g"_p3&[#q0r,bi1\HiFl4e0QB(6XuD?-'Mjrna;X:qM2'3jb/41H)_s/=[m6IC6&)e`BL!q+s\^IDE3J;Rs7)e#C.S>)dhO!3=eSW/hN!197c10U-s/)s)fR0e-oJ)pu2Bg5WZ2d)"KCBX^&?"UY[s#8?SS9oT:km$I4F9B>VI%_EHBbG'Y*g'opW>),)Sk]#ZO"_KCC?ljQft:nFVWQ,Tc+^V#+_cAgYRMY3aT/EG/gYZa4<(7#udc(`K%%iot/phV>bXPIO_R%eu2CZ)g.rj\%Ngl7ASASXl="SXmmTB\obra$dmVHITtd,8QgeT5=,l):uJqcdq=D;!pFVU.[he:3qXm07N2tqR*9TCdpmdAG4ZEn1OUp!_OFtsc$&XV>9(/`)K/M547SS^1:',<8W.1-pF]VTIDF%_Gf/o2RH&@F+dU/Gg:Vf,Pl-SlE]ar?rc2%5nnSP#H!bIV@GFS`FfVSu$rgtrSA;MaqpL92]b44#nO5MSA/gp+:2o8Y\J`no3'V#Mpfk)G\KdE]rfMa)"NNTPY.:NN(hU]:D*N-*P5fq`H>,6"EUUQV-Ne9Wd>DL<1N8OH)=Q=c(@/pjlPWn2-H-AJ;Q!2`T#c8`BPXna-';#T^)MK!kt,pd(nD7gfVT-fWY>96UnAl7o1`Hdnm91\bo:88$eqTq2UU27'V2OCmoQ@qU:-YZd_FK$M'bZch5D`#UMXim0u_S*[DCudAL`q8G*CW4hV'oke7Cj.n%5em]fUXpqMN4oSlq:C`>*cqei'b2HZ`7bMjfrt^>-uu6CnW4^,,gl#=Gbl;R]e#cOOg92P=A/@gh26Lf8_-F/OI.';t`PbtVEODJ@t?7B,%?s)=`%R2fos*cDJP;:!-SF^)=khUJi"Z)B%udB+AO^&`a.N-$l'Z`.e`;SQ6,`7@B73#,"DC;\Sb3]XZ+eTolWDJeu]fX+f=At@Z.c?$&@C+T)sogg9U\#ELe`Tu$s8k[X!X]m]\s$TEf3/ST'&h8u\:5I(oSJin=+oooAEbfG0S^Eqs,O,bD3nB!?Y'1g9b1=h^*fm419:Kq7gU_CPA36K,]%OGV";/%WA(*o*\E^J'+r%HXk!+$Ta(gA!:P)hg=X\1i6')fWs&5EKgALieJ[7W_=:khk1F_++oPFh;Bm4qM-SZ+EL32*gPM!>u]:&/[L>Hno*UXA$Eror+AE@0_C164tIqO]0.Ean"1J5Cf=,G&I6gSk,<1H?+^0Db'LgQJa/PeOD>7).TdD6d\Yn&D8g)d7R[?O^jYR#NJX:,e']X"lEj=h*bA,WBO7Fa7X6pls9>Au$C=`GVtTNXltnj.Y[qZ>lqZhdV!cR=EaB&5?Gg2d.Oq4iX+MVed<@&1L2u6Ln*q:,ju=Yc?MQH<7.'VUh_pE1:q2lXS]ZJ4^EB&a([:U486$rf_a"bY1!#9&1aHYNjXae/EH")^%X/YaXd!6uVcl$Kb^1R&F3LS9='CBMZq^2Ao6F,$6;JgR&kkua[<0letM7i(bBM+eSeXMPf(Z/M7(_Fr"Mu(]r(/(WZ:l8K11E,LI]2'R(k+Sd(*_Zs*eE>=VT#V2b@1QL]'TAZSDVo%ujKd?@lE]=I]1s7J:B*871f^DL=[JhJ:Nfgn`c\VVQIDPT*Rn2ZP9.10`/#Zg&eSWiT4I_9=:$-M+E`.CGB7lqL7$ChM9^3FYN>?*4B1q[Z2ZS@pEmp$E_`mbE,IQXt;-TW;du?*%7%4K=cRLs&oNuH7P[ql\6&Jdt1DWbFD555F8/[pr"POfU1m9l3?QO`nQ@^JWcKPj33*D9I9oN_W@7dfO>hI(u:-.Q4fA:!&cu0CO<-8^\&u8u(3)T]CR!<>d6Rr1VfW7/>s[C_1Intm?N2.Yj$9VT@A8WP0i3`1XJi%'/oip"Gr9'WlYQ(DlP*ho6b*Y!7`*:96)b\iFbN2KJs5_13/3K_fm;XcOm>'kaUFCX+M:h6%uMPhEd.n<8/?9@P+CNL)PU+%JG,h9.pWC?6>_Y:Jb8N-W!9qc[h)c%A"]d7BZQ.1#%l:ApGEM[Or))]qnTt[X?\^MJtW`\,"PLO6Ugn*KWGYd_(lT.\aDCe1l<"BI-mNOI$nMBT5#d&0Z8S4k>od5P,OZ,W<%rpFf!CXOt3P-*.:/g='8dTV@),)$iig69fJKh<9AWK^Z@ju4T<]>9A]K"A!o\W7a#a#?J.-;7Cl@Zs3sr$\e`N6Lp7Fbegt5uBWZKN;KTe%KlKTH0rcDMl)']NMpTK"GVY=.A!rf;U`0kGobNbgj.\U?f;bu[^WV'99,YaAXkr2-dTWFc,1\Vd;SjPjC#17O`+oDnK[Hu#o2;lcankMb3Ip>TmQ&Y5GL/T:KPPs+/BdS9/:c\B1+CrnglQFb?+THnZJl/bTdD6,(ZF[]kKVoI3/_s%1O@h6XS2p##0R_"\G9dMCW@k]5heRodBR7unHKka9$DTR4/2N^FS0tWsT#lqbW$Dj5&eiM;D/\0d%N5fJ,`YY2o7jjLo^:r[PU=6D3A#HVW%5IoKQ6k#)N-`nnf,p4L7='$$R"+P:^*dC3KpD'B:FQiL-9%mh!a*n6q.4ZOYM^:"OD^#FV:A]MqH@q>.]M;/QX4N'?^t<3H]i,3D34>F*aHkXpl:)6+Sd[Q^Z++CeW,b:X)$WQ&L``AA,,1,SbIe,Sce",+5=VMD$f_#Nt51AS,CK_,D58%hr2L#6;uC8@k3\YHsm/1-@--7o/bG-cRM\U-g0!(/L!#fk;ojVpdMk6#Ip--GL9^kG[9>?A#ST!c969fsBh>G#CY=qekdEA#NK<^+:.D"`8`*@cZ>jr3?q#5I0a>f;mi9Gb"ja]1FD?V,H>Q$?Rq!,*aiVYen^s_I5(1UW_'`cFFm9buhYcPCMK(XLJh0JX@m_d/9&:gQT=9iCl.Aolk>823^;9pUK[&u+VFUj3EVCrj6J)ZW-)9"GT=6o2?U-$Kp=M-/3S<,d_&cR);*1:n-9%*;jW4+,#n\?^3t,(8?JqJ&o9YtJph!C^@ID>BCSM!J>>caXRLZA@-hdC2-BWfT6hNR/Q3<&V)tH5EqPYLKM@FG*NKJugUQP?JdTL3+N^d$>-/F#$-r;OJrV\?DlrQNdHUWHc#%%?4.@D>#EE7HaSC)_?E/bu<#D;n=r*%YQ/fD=M?73%TC:B[<"*9Pb_U%KKJ2'%9QQr@U7a@]@Nki]T#]h!>tXlC,"R_BYUUEc511ND:fPS!FoD;T,l4EFnB((l?KoDQ1)(ZLc+EqcXm/S>X.8?O(S.!$KuEY%FCI?h1DO-Uf%/*_]+>m?WUE1L#J*Z(cD[iFIEtU,b.`9(!!$Ca6r)Cu$!GdHl77+ppge^3qe@l)!!!"LMUiT7;#rQSil/P(l)aMj&RAJYCJJEm16n,L=[l1sM7QX'jsTYgWi5Q;"^%@KS63%!fnER'XMTaK+rq8;(K`D*&a_S)n`oR:&?oJ&[a$7N(l+d8q^L\2_!2q/ip?WBXO)*@MaY!\rJ-E9cZQ1&,iX.P+4Y=8]!'k+Oa5c0riUckU(BOS%[_mk2Mi6*JT78K*&-+t,punK6`.d78dA*uT!<=7sfs>>17I#jkhN2"K!2)*[rqbs?_X[0:+3Q8>!.\lMr:#?K83Q\!A$QIC!*"\#T6sOA33HT$._?5l!:nJALJCT>atU0(BOS%6%A^R?c:K0FECK*+TML@lfmYB_DD7Cam&Os%h&lf/d)/^C6(RTW460h\T:8a+TMKVo](usZK_l!TXagnH#^+YHG-Tl!'F4[u8G\o^oNW=o\P7oYCbSLs*`YP:'oX!W^$a%N[_\/mI4_s1Rbc!!$VQk0+]_R5fWk[-U*Z!*IrJ0>/V`>8JnsOBi+l^l2$Z3[HBlB@!07>mLE19Dcn>rZWt!_-g)_+TMKuo)&CF1@`a^+3?,&iPUGi7I&kKZuRNS!J2f+-KQ!W\>&dA'37ck?C%KL-iWCSl?sc/m-8AJY^S5T[t,*uEP.Z*?%:K`D)uS"6,+[;4BWdH9+pT9W\2!!)hc5(-U>Wm7+p,J+KeJ:+,eUIDb4oUgX/jd39r"99Q/rB>mYhK_V7+TMN*fcThG7>dOG%Va&9U"9;g:++-e+lp:[PAo[P2frWR[N48lg<.l?Bpd&/hH@(!M(BORjMn=3%qL$$$FQ<%?H[:!Kf*)/i'&rGk\84>&giKb/!=R2ZNjLqsh]K`AO^.]3BG%!!!\[8)O62`oHSCiW]BZ&UsT@-]r;JIhnBQ!s]=W/d*l'l07I4")?AaT76Y/dn_&JGjt4]_m4%YAJ^dLB"Uklq-&)K!'i+\h#JdGl-^k&]G)_[d,a8`m!8]S82gNFb=FRBq=XIT0%kXt*l)D+8G@DW:2rlq.jhU!gq!4A&jUCNZUJ<],"ejeC9`LZaG[4!s#`fFAn't=0K=F!%@-1T72rO[T8N.!2,X?DG$V#Rurhq*rl:$rqtqDPAU@#AjEpVKqc!2'VG%040h82m@fh#K\PU`0;a8W[g^6+R)I,"OWm!0\P]P_*uZ!(Due!!"?3\g[gI"osN'h#IFKJojoudL?0j6+TADMBrmd5Zh:Na4./;FS-T3`5Mq5@Y<&_Z,-5#2crPDR^$fg(^NUNJr+_GFueY#NlD1;Z#DCaLdbk+!bk1aV'+Ro5S9f].cZR:>$HD-\(g.h3?1f+h-h-"3:*bbB7IBL*iZ0?Tm/:a6bB'@/rPmK&$LG7?/^I2fYdu@*L="LV6UZC`]G$G1cU^V]6M$JDZ.&=b182[gZ==f]@PupKCOWAQ'4ue=5YCNp4<$>*VL_^[)-6LZ=7iYNDfTGOBDBj%[IT8@O"Yg\1n]MKR;YlO_AWm9O#JW)TR^;NPbrTErt?Pqg^HeY:\7)sj"_RpE;K)m./0B71t$%6+;dFLhcJj/lU>mRB\j<\0E4Dl?)Va_k+1rU',W,TMf__ILRf>_B"tZPK5WQ:P-6K6_Z3,U34D*f-k86)1/"Jnj1;7/T>u)>hZ#:VDD?kT':V@aVGo/05Z:S*dXLX;fS^.7cAt:^$$[ar'B_gRs?<[.3`Y4Q5Q8-q]-KP)Kj^,o0W9Q()YZ3)LTBC57_G]PtFo:&Oig^]'Nf$bU'0Gf&\cFP-!>rqcPfC)6'2'VlZJ."ZP>AX5qI0g4>$X6nGk^75+0bieogV\t.g=-(;ZfA'oI,YJ[>(QegtN"[pNo^lZHI@8EQCG6TBolc86gMD&2_sV;aL].0SY>O*drP;O,:U/Wm'/_7scg1.u7Js,jh&B2J&Z=6Yhb<74=+%`*nUTIKTCJY%"&\S*j);hfWU:9o@TU%rVu853Q7"Nm`K'6K(D#^G>Dm&7,_k`CaB&"\7>Vhj.F'#lgYCUCCV<`\5P:?3TXViL6%;9:cn/Rb;X[0F"K,S1I^J;?;=Uksnaj#7n^?EZGf&5&(WV0aVS9fTrN03a[Wcu?e`tVD>J&)Ckk2@'`q!ZsrirtXWeburWTEjM,>P^L4"TdU,2U&Y;'m4-F#kOc]Qc2+khnkmCo?5LF!dqe2t7Ir^q"*hpmg4!k7,Z]YWRMqco+]nQ[^F\MDWnGIUkV[q@kVAlYT)A^"+iUmiul`S!,I=;nJ'k\daQ,5LgsUUrU'Ai$"0?6>4Z['@"KOm_"[klU8FqSR,TiOf[ta7#(cAnEr=&(;!!/4R-gogcBu7Ic7ej,4BLZ/Zb0pI4H(T\!3iO4_u$/?SRh3Tg-.[LPeBM^V)3Up4\dY#s2Ae,8M#RADu_g&hXE[:RIKHd+O;7G&T=6nF>"`Zqh0NqJ1fl=H-p'Gk%<>7_3;1-PTU&7tXf]3UKS.>AVl(c&+WKob+i);n:an4MYB@E4]BcVoqtVdsi#"VFI3tksd8\UAg4e_;a%;_[%S!lb_((9/=qT-+ua&X^4-%HN-u+\bL!oGp*_l=REiPT!9\]VnKdWh;N*KXJm,nik:/F16DhYp=@&LHYO12I!-R-#Ri4g"m1$T48=cZi.k%hN1.!0CX9E80^%SG[/D(hNn-0OACSOpUq?:WPMohKR^c7]cmGaD?C@A@Vj`8o+S6BZ#2=3.0(gF\Mea70iDf9a-NOPujSKr.ti99DpIBsj1I^"X@/<2B=bAF4s>Y%ZM&6Gr6m=X>;X3YIDWnet'-$-)U&F$&+U`0:^Jojq&N!?!#Wd*9(5+gHmosn8\Xc7)e:LkEZ2nP8"OcaPR5E)E844I4C90HB6BH+WNYG388hE-s:mY53X>Pd)m]qK4XdmuDiHG3bH.s/%!].]g95-qg)r%Sdc>)f`4j5EEGljlLq>J3N'fgn&Z2IZ1/@/If(78]1,]_\i0Xn=!s0kI."7I-h-"rAUgmL$u+-F@pc"Ca*.Y(kHLCpdD$]4ll%K[F;[n$H]pp(GF%oSQ%N;4gfli$Npd1&=0kdu?%0rjL[cBOgbrl0b-\nH,iX#+]548!]U#>%n]*9`tfHIWbI]dG\'S&oV$i[qf,>.2`/dcs5.iM`6LK*p?3:\oIDA9^U&34CMsrl8c$)]r3HcG:]UJ\Fa->7W0O-Ljsa,NJUbPa%#'FbcVpeK+\QhEcG@OX,?+hTT_)u?]1?r[ksi>DGVH`AhN_CrVU3"V\VtXZg9=[k0r)JL$"^[1h^f\[kZ4mX`@QF](*6fjLsa$GZ4/S0^XG$^'?ES!@-E6O`OAIk--frXf;%F^,X]CZZE%nH8qh?&`l?j.0\r?!/_oT<#MGsfO.RH%\(Z+FLbWdLXXsb1VU'd3pIB@76>dgM:bq7'jZKpCJ;hf1h!2LqL%1C)m]R'^PWQ!ns$_o@stE7r/R-5om$!ee$R-$g6f@-haU5L3N`(HBh$[pge1*V/(?r9clUOU&G.gu5?sh&A+V:N\+=aq)r(>fm<73cIDn[r"O`3ENb-^FG,;++6LUR%l^Cfo8sUiiLXT%])82#O1Zljj.>ub#MIsUVcMgplFe8Gp]O6tSFAiOp%0.).\u@GRAebS>inDIt[<^?[BM$,Xp9Tm!8o1p>_m/Y/@BZlXlh0sqqs<0grQg,QKuS*%F<`X=;OPV9dE?4%kFM)o=7LAW_MQ7bYP7Bop6uan4PcrCls%smp=nn3X3Y=bXp[rTjrTQKpY]V#F+)J2,3)E_A)r$(h,7dnNNUebC0$*MXm%StV5G8>JXYCNbp#(OD`:$FAiOp%0.).\u@I(dnM%b[=$O-N-&!/5_3V@3kNFk3H?))/T-oM]tMt\DRH;'5[.g2dAJ*>]aIDX\l!sOp#`4?o18l1TPd[IQt-%o@XZ^bd>(a"rEXZ91%f*mpDH#XI.1mP52CI9WRkJ;N_1NO&%bd;LNI$V.e1hO/Q8kCu0_5JDl)D+Rcf:CUK1_pC'D7\sAVnZiIN-+)]J"k1e>^0pXhKNKndu?9tf-gGnGLTMhV'T%.VR97[.&/PoS*YU//4PpKh,FO*9drUl!)Ng_VTP-pDDE0l9;WZ126K\oQ?TpBEhs^be98UU;Tb_qdaO2\>;Bi?b@5RZF_0@l[D([=g,&1=/AB>fdF"`&"aL/<)6H*Y(^G,_[G\E:NTi;rNJ!F:@qMO+;NPbrTErt?Ppu[W[*3^dP3Jho^"L&.1!5c!N$0YscJ^<;h5F,3?8OHZ&Y-fn1Y'(fR`)2t@AKCP>pQIE2rXutUaN#Yo\/T$h>4n`gC);pVE\Ra.EKYIp$!fbSn(WVlM8F_WF='!X2!q%q@+Y)Ql5.c'VlZJ."ZP>AW!B)F\R/U@-Th$[DABU.8-NWUBtemhNQ&aVK?dT\pC@,\W]$-MKE??Umk8DD?-=8dS5uUP&;K6KZ!!)RqHJ`aQRDA1>NeL`8%nK7@VuYfW$n*4&ZnIhbN-;CL:k,Mt((jWuGW6U[mgU]V12.aIIE8JE'>,RGXgI@)Vf]3SGKm$CE=eMpE+!"I(?,sP&@WA9E"\fj/BH^HeYc!2'VG9pIFOKS>3t\DQJjN&HO@k"P@Mj,2BY]0Xiuo6K`C/PfmA1r=!3H=c>1(lKa[>ePiWe58!t5tmGZ`"P/BJpP$fQaT\[\Qp@nc[lotZ=L+*['Fe;N\K`.eF,uPI!e?,O/[#lITLs[Oe<6#cg#+G4(UuB$2oBG-fSBSWtGdkHM9uiAk'?\"mH3kMBL_SRCqcR[,`.jXY,C2hq&d-jLHD!P&:od;P$pY4*._\>CC`u1`bU^JXE9"D20&\O/t=s,db5B*?;,h\[!uNXkqL^mYXM47u0abNW*D!rK.<]U304"41O+o&.KDF1a!W.1qJ%?@aVF7C>;1aZ?2l(:i1oWb^7bR]o_jd*36Z"X'P`UA'e0:i2JS6Y&olSIb3EqZo0m!pS8)c?#I8oZku=mAk'?\"mMm^N("B\9g"Sgb5,*NQ\s^',T$eT_di"O47P?FY@fC+%0hEHZ!\cioJERuJTQNU&SIS@39p5CJcU?`\nLXkrA6%MZXl8>L849(E%KrANs,Vg:M3G]=?I-3oBQS#,"qreHMNJ7]2O3=-2e,W)2lH*SJ`IV,iWT$UG^U(l)#.0SSm/.a5$)`Qcnc83ZS]c?/ordI-p@,iSH']fG=98AX+J0KZiO[X:$tWHQ+OE9<,rDY4c1ogDLM4QM5ZIrS`FQe`q:f&s5<2+,hK#mWQ(o*?EG?:r8CTl8P5A9?%cKg;KBS(R5)CO_t.!-:,3l7HLD9G^:/(6C\LNBHYXfmM0JrdS2]`BQ3WWmCGQ0KCRK$6[M)u@GXEm`:X?PMd/b]M.LhOWSpC[\_:q$K)P*,=:`nU]=IPk_/n4)mZ4Bk&@`X\O[,7h=7,ZQ,Sk@oL+S^G;AQLc):>NLhcupY;gDGVY>D#6!.[Y&DG!ckksjlsUukNO>L&@G(hBleksh6B7dJdTVP%)\R0;%3U!4CLh=J'gTVtSSF]4p[V:"7@frS4sC*4hkK*tP_>D&C#eCcnsQ$7m_1t'Ve+l*,`/L0)9U0?$*2NORnBjjA[R5QS@>,3*Io#;QnBGl=b:Oh;6`6Z,(;:L=1cfHE8#.enQTi[[dLe,ap4XIT4j7/qt*)`7,k>_?G"*dZe8Rn]=NMZ[+HE8cdgPfE4(#bkAiR']tX4(fPkGP8nPXH591/%h2V=I5!!SCqoaR^Na]Kch,_>iOJRt^-HU3q,]7[IgT:'K]>Irn#nM>TlsT)f`'aW$Y>8Nc^eq<1I-mZ"?;Y[])poa,+/ZcZJ9k:'+=c6UIf1j;4!!k,U+SZMXE=.4`M$`W`Ro%00#qA/2]g68o)$JWQQK)^&[gD#J&LUFg?e+#Ibn,W=N3Ga&'*2[`9FS^m:(^!?=+nj]G/pS*&cXlojAij%qb?:[O$tA;-SMmU)ugIm6L(0\g)e*XI\-0*7g1%n8OsZ3lJYbeJlkrOSG2(leQM*iU_1N]"D1$eFO:YrpoGQd+iWAhGj1[<.j]3+Ak2jOp1p$$Nqd9%)TGGJ+WG%Q:a*k,p*"[9KERJDKPCL'0*bs,E=4,^[MD6B%`@],d2F/5ks#autFSeY=>7\2075l5e`oCRqqmUFp&"mV[#\>LPNVk00Xg<;3(dX21eXI]_nPH.fAOmp<+1U`0;a8W[g^;3gAm&5?9oC9N<3'_1+U0:\#Dj0U4oXfZ=?eZ-,aN^efIAuXD&[Yl^rC=XZN7q\>luZaBW;g(?;4NY9QePNtkV0I'ccI)NMi*>0j^E6H?D-H-*niB82mYgRqTTqIrj<_S1^/9_*74g2tj&J?c:KL<;X>Ug>;+<\$joCSGM-#QOlioA=_RnlCFqn&9#6N*+3ZN6bKUgN'jPX?MpAEW]d-R-Dn8LV!b!.Bc[[-h))'/1T8^&5oe*D]@5jW0>Vo#\b"3kMmQUTe/t@`M0dZ3SAqi!'"^:O_E5?H$P=_\2DoVlOjI7GE1h@X'6_":g5l[.l?n>#m<3j-8"_&fD?'Y`6+SL6'r2eVFm.]NaK+$Ku$gC,X\m,^7Lu6hqY5YYS$eB@MWH8ZkokaoelO,jFmg$rT*Rc'cBq6F$R/M-X;hKVo]mZ7'>.c*%Y0BB%[Upo$9O7X21jqT;GU.W$NTH@HSIp@Ap0ru_N`caM3%CY"()+Soo'!HMV3e/uP2iqO`!cg*U+o;UL"i+D9m%/kq^_If4HJ[&J1#bklbu:a7Rr0f$%Dh]#j?j&Y/g!k3enc@Pj/=8WWOfBd@'c7@&Whe"$)6A)q.aaiB^ZlK)d/NRku^8H65H_jGEO;s$%7H&6aa@TQd]rmpqRS#`[`FJDSKh4Nj^&3JJ.:*!hiqo,qQh=PpBC4t&pGKQBI:(>7oM%gXU(<.0JWG'KuVrVCO6B$#]`bdRm0A;WD;F+Xf\Ioe=X"caZ>p/$AI[QTMSe88S,H8T2ThQR\riEB\YG=5Dnna)'ZURJE!)Uj02l3I5FQ7&A3h6bIbNX,[)XS$Rg0f:O5M#/GCjHu`VU.J'`>Pf,T:'>Oq1&A>G^kI,-r*24CAI:HX'(qo&S@YMPB*Z7Zi];b!edi8U0sSEZ'E?Dkkl6+sn79>paUSTLZs2+"kTJ6GFR.7FuIS(r!B,0Y9:`tWA-\2EreG)DE"8fZb/N@+o4@pRp(?E^QUkNs>Wc$M!uK=9XeTCGqu>6L76ZURJE!)Uj02l3IqFJJF3iqgG%[1/F>8S689QA?=ri#Ib)>eXXcRQ^P9:2QQA(0[WTduE)A@rZ.Y)mp)k<.Q(2b'ijE.-20>eN3LBT+5doM'c]A!,$/GAS/L.6ZMJNk8(O+LTONh>-e[/Fsu(FCtK:oQ4TUGL?&0BCsB3,551X'YC_9[B-C^8N0bUPE'ak7S#H<:s2BgV5WBq'2]!YFD$#G]dV\^$Ds\])Bmo:5V45:PbO&aNF5I6b@3<58kCsOlG2]717)<;I6>13Y[D)/F;=&[^F7p&1s;:IdnO(a0TTehB"Z&]C$O>rm7kt@a"eu,>Ck>&)gu2),&nk!+>a_4TBUUOQ)[0(JtfhYkL'Fkufl^].F6,;t/kM$tUP%)a9O5XJoc7-[0j?jQ`4:dG.,J-?[,THHg!3s_2^EOpEM&^R3a]2fpkMOYG]d[>qVp6R[jd<7E;7QW*f4qtRMgq8s:2hO);1N;QhYp]Zq"10W:F719U0(6KLY%3sp?L%@%HX/.aQ^=MlHX8hLZE_DX]pip3KaV'IUGfK)2bg=eC5_+,n"ujN2ZU(RO`$]QicLs)4BL$V@r*l#Zf\Hgf.,SnkA*%nkBeo=k\I&P#G.G*PMbZ+X"1YcN)!ST46X>tl;$,[\k/i9];ZIIip%IqZZp_l;X]5o/un'qFJD&Fdj@%LBPXJZWIHT=8Z(U!:IOQ9=&3o]s1&sZKXh_btQs':u&BX9U^F2pUT'f\u?QnLrR>mQ4ELi\e+rpUj%ft/_EZX=-tb2Wip#[F[N;X-ipce.#(R_o=,TGL`7^S!mb(^3,fP\l>;T@X<%,S8N(r6l$(Yjd]%UbDYaG;BVVJOjg9V+-<[C8/(IfM?OB;eqXf&CIo'u^l)(>\*`har:`h2%8>jH8q.ua,9]tuanWXXp)n0)E<4^IY"r7_PaY(!%NF1qJUV3Ok69^)]qadll2+]`PFbts"rQd#-b\'i8Ej8^ra!YqZd'3GY.JS-Mh38?&f(902jB*\"SLbNaq*Hg$cA%+nP7;-Sm[/n2./K[qlDbGN[35+u])FtD^G>Vra^.a8cT]dHcVCEgf\(X5O`[mQXf%7u!!"'+\oFH+dS26sra;SL2!`gd\e-Ob:sAp[d844)?I(T@iBXMM5Jl^6N=aF%Q!gEA0DU_T7<f$l@=ur@)t=h$gFKr;>CpMl/YsK;Lc6_'p2MHNLu/>dYs-uFVD[+VLFqXVA':F2SEehOA;DW<$U3!!'GjTj+Mp29a?n4[;<"-b@XD$]I>6DbLKk#:b0$0gLWgldIW&inTFK82l'[k^,A?Z5oCo$$6gE`X1'&!45&'!ITQBKC24?EIr97!,[g8!$(S06Vf5T?L<@'WU',a'HrT*9ABaGF_I3#:tD$k>`NnZf$4s+P9o17";`$qDP)aB3O<2j(%=m2'7`PcMo_b]%A\&fHZ#pIBuD;t7,552Bs68p*JF6uFtFVE\sA10LY/XiWei.uTT"oZ-%hp5)n$U*2IXZu4HfTC(QU[(eg\4K';WT2*q:2RcAWMrH^qA>3+&s7N5[jlffE4-TY3Cq*O.T-QINFQ3Mg"p!@"h#MI7Y?7u+.]:2LNc4'nJE)c"\X\SrZe>Ugc+=(5"1;%UmW-9]/M`nu!p3_0<0A.0eLGjn#tu&5JPajBqbTPWAEp3#KG+OT%4(8BBAsp-a!Tm`@j]*e5WP;fhH8ZB0;L"]h"Y84Dg\"qrdZub?$Om#)l+E#82gOq#3c?=2_"/(M,o$I*)pCp_80e9d(?[*EGoblh+q7NK1IC/MtZiTlQIZ6f[Tm:s"+dRb$P;S8q/f7mdE)PBg!>Ng);qPXXW4RrDqJq=),QBU4*1/$&<#qBOj*&T7[DDjil/9CO3Q(:HgfTb4p:a)CVLOiITG`l,0+aNs"5-Edf4BI_p-.-%q>+F*'T?ho*)&INho)4:bfaaV^BC=S4+;8`u4j#MD^Hp"M14IWFo7o'X#oEd^`/=UOsZ;iJ@.EP,R<\9\f.ukYhX.OI,ER)RG1FQ-s1"H7CJ@gSYirnTN!88RO!.)4*,l16M'(J3nX/!=^"*]&CbW0Zf=K3dDjMRjOrMW21W3s"N$)e1-m[7qeN4`"@W]))Tn+mNc)D=Ao;"l@:o-J$^V:9K1Y0hH&q`!$+>9EIr97!,[g8J5rM:Z#!,EoZE0tD3%r'e0Zu^6o#Ld>hM!S1IVH9a_5;77uhcX7sIF')Kp!WKKBoM8=^Vj3d^s)P'&9(?La4f'Pc0V.q=6[&X]$#2VYWEIr97!,[g8J@1ql'9;6eKS`3NV7al#Q#`^iaqfU-A,:L_`hVW`O9po)UElT4q9273=@hT^gA5O;5su3_k4M6o8$%R%VoJQ@q+SM!9Vlh+ab5*EK;kS-/%N032Ou<5nqBDM16WXs:F^olU-E$J-Kt`k6+V&fF9;M[OD]TV>r+':Wl;IA'ZLkGi_<(mFVCq8+9Bc=Q`W78hMR:(9d(dN[V[nA#cI`.[5QY&4F1PM1c:r"p4B/3gk(RGU7NAp1l%A_"!.n)q)_4sO[:69>nTFKeX6URQ+4s=*(pbq"l`*F1$nMS/S/#[?f&PjGb[dU?VGG2lkGKH#^/q4st5[4q5;C82j;*D?-==dL?2l,=jagODY&k%FP[c^`uB/:69>nTFKnTFKnTFKnTFKla!3Bh/)o.M*2aAmh)ZX!d82l&@O`#\M82gOQSrmmj59en`XcRE#?p,aj!.I>I!EpZ&!5NnM\cM_bF9Am:\cI?SN-#0s&a9L5KldCslP\pkn0??jcjK"A!7isS%H'aP)k[qo%03JBU`7+182idaU`0;9cU^!F+-CGk<_,.LYb$tp!'_[`!3M?#!+7r7h#Mml\cGusl/oj:$U4dpX?SrGd>pgWJFAS;J6$3l!le%8Jr8Y9DIf%Ikr6O1_&\q+Y?]+oc%-[rr@-cgkMrGZFq<+B^I3JXk3(:CZ!8&LO!!%D%F9;NI7CiL"p^ZNm!+:_,!s%g2dL?2l(?l#'i&d_R!.ZZL%041f82gMK>GN2GN2GN2%V5PaB(:Y\-"!!&IpR=-<0pi$3+Df20l!5KUlB&AEoo,n#&+)[\n!!$Uqpq[KB?d6\IC!='fJ9C;4Z"'X72WaVka$9R.gSY5UJ;mq8ns@q2k2cR?o#i]B5!&apRssmc?eEZ6q<`*Mlh7:Y!+>9fl-n4;EVNiM!:W_ShD`Zg!<@A:S:+o4\7(F;!5LP1I7=2:Y:,Z.qM^nIXlf?A!!'79mskB71>5Dt:V2$-!2027s8:4C")jQqRQ>fhm#QVf,I^GOF^KXs[G1^H!SI;&c[P$M-NmBb/mLB:q=s!2h*)XRroS.u`pJ8HJBNE?lX0Z'J=Z`9TDrp.+".,9T7-F$gRf%-(YuZFbO'eMJBMK7a_%mZ$D:gRHMWDm)o0@%](t*qrEH`q/HE!LlbEF7dLG\?,McVX-D?,_Bh#Jdt)aGV'!*5m7^uIsEJ-kHEO@V<\($Pql3787D6Fm1CdLBSQ\cFpRF9@nlD?,N8"'C\'!08A\!%+K\5U,"aHU`2QCh#LKO)o1K)2h25!#*;A7J/.;Qn2Si*?p_F*,gm-07CiL^NcYAjODY&TF9>X-D?,_Bh#Jdt)aGV'!*5m7^uIsEJ-kHEO@V<\($Pql3787D6Fm1CdLBSQ\cFpRF9@nlD?,N8"'C\'!08A\!%+K\5U,"aHU`2QCh#LKO)o1K)2h25!#*;A7J/.;Qn2Si*?p_F*,gm-07CiL^NcYAjODY&TF9>X-D?,_Bh#Jdt)aGV'!*5m7^uIsEJ-kHEO@V<\($Pql3787D6Fm1C?`0CgA7=8E`;"SZR$MrqenU%8.2n3-;Id+<`SL-@B9@'3O7R;$ad-`&j%1U7Y?YgI^Jg<<_dL@>p2r0:[&rut+CR*#e5C,bo_JCq>NTUt;c9Jlj82l(>XfHOgY'7Qh=o#sG^Z(T%j8-1$h+MDDO_t/u$dqa7;0'dp6>OPLTiNc2pDTML6m@8Opi*?9Eq_"B<2e?3E'c\9iIKq17s$Rnd9^E2*tNMnd9T&L!BdLmd`klb.2:3I/magk;MrS^CQW9S2V;BYVd)@['lj!%iVKCWo11fje/deN1-+^pl.e^Q[m-TY2ZULf$dqa3UhCk>?-D&>L[1;Pc6M-F''[F5>lTU,h#Qp_dZ+!`DE<_u"%_`*h.00d6m@n0aJKUHaL"pD.">@C,cu8Af4rEaSG6qVOf0$rZWKr,<%/T@[E=@3_H"NA:Zf\1#pgE#cSV^OM0N!L$DjiKp]U,m9]esPnRQ0L37?\+*K29(Yu5I;qi/kj-Si[)=?I36N(!N_U;Q4p]Mcu<2ooYc=u[Fej1WJW62f1YPDNJNl+3B;P[j6JqRDYYCj9nC0j`"8C`h:+82l(>Xcmj*eZJuM#HtWGJeX-":pBL7[+-/g)Q&NB/n75+O2N_r4(*2fbN692c`d7U9I7(RH4Dt+nS)Ee3HKER-?H.(3A1KO"5@fGH)"op;X2-0YeA&-N?epM,SYR3[f+*)+rSq&VV4@=q_/QTfJdb+YJ]<*W:SAhKP/Wk&LsuqS<+=7k_.Y[P)`GF%%POB`C/##dH^B$\ihG*j*/t->lG9m33c2lWGT>rPOLcRjW1ReAiImbjA_/a.OfAOneoXh'GIj2(h!DcTaSLDsUKMQ)_O8ofa:BUP-"aI3>Ol^=LIAX(0OFXk`OsmDhtg)IG(bY!Ib6D)e,iB#[pHXPH=V!BdLmdS2!c,SFV<.p$U4@3%niT.F0p9hikT'lE<&U;i9e1jQ.q,(emk.=$t6q&l%9Y/UQa37s%.GQ"o?[5On6B>U^DIq.85r,LR#DF[s$J'sQH?VH(2>-;$-AW:kWJ#*iA+6@?.peM!0ZO]n%(WcTTDkTBT1ELTla`jDbSooHQMO89=9R!>pED#4lZItc!B[#Vs$.:)o1LF+PjE!m:^!i,d#LS\.j\X3Va7=5QCD]euKj4+E\g_Us%aseaM1G`KdA]@D.4U0L4Ch8"I71*33G59;uLrcrp(jWLmLC33_[@]Vgj/!/Yf-1u.l?CLT7?9BW]>THkb5C$sqUJM_0G$",N.r];c.+r.<Q7K(;%YP>^_IF)&Bg(]p^8N1t1N"]nWh:/eHFb5a/rpse_R%K?'.r#tSRr6/m_IHaI*;Y#IFj'$>aP^7EW\4>th?u[3OSmQZ45)82iCdX!eOB5OT%0ag"C5B[cS4A5KbD)UG'=PW7(\_,)RBiQ%4&,gm,EO`%8-Mhq4\X:=f-nK%_-C+Ydqk8Me%>bHR/TM>.+jg+a/9DP*qO3hH&U*GX2Fs8lZFHn:UCP1Y]I8Mlp+[U`X2ISY\PF8*ZD,R8E>l+"F*)psXfIC2m0-K'N*_3dr;9'XMW`M--IcX2`MNs\t1aU"6DmWTfAQ-U@45UFCrO##+*,>YPSM7/jS]m@OiMDg07HU$YlSj6gk&<9*9W8pK:?^;+nc.U$]iE7=7(tpt!@6*Qq$,rL&upHcPcm1)DU%MKgGrKjapY`ejEpC6bVoFdR'Baa?*2*7qYX(^qnE!\6S>IRUh&dcT@BX]1sq3O?#:2qDKqm;t-H=hfP^hSI&^fi#5%YWblXRr,P)5gIi<<34Xpn[,r&LoaRdZ^Iqu+Pd#=8%NCqVKLb?*A$k4h(0Dsj%[?d7L^)I&[K2tX0hY#*,8D='2tU)aWEqNTc%\cFpRFJI=:9FE;ljQ)[JIaG.@)i`Pmb+U[d2n%Cm(>>tKC\?:X=-.;"M0,NApBXUi].'UL[9E$,2o`,c[HQ_=kl9!.qPf-&m#GOI3(:osmF8Jr(sWVX"iT7bUn?;R.UKSfIh+&D"g+C`r,VjtieP^uIsE;CkaRm9bhr't(6=0aC57b6U%$79PapYr4K]:WLM`-N@g3HgT/b%&bDOUS1lAr'5s.XdI?MY>Z`enOfZojegW]T!-9A11&Y)>WS(4KhA''`:X#ge4`j4fd8\S)aGV'e=,";<$u/o5047+2=L1\T/EO%QZ,2]-_nXI/lsGJ-8KmV.N*EpOXju)Z]i@;+^ZXpdTJS519:+6e\=826NY1>N^\9#P=]c3Cq^`(T9S*]6iou_\29o-GQA_Do]EInKjld-c)24Hq-"5&W&q9oL'$W#QoI%pTOXs[>X'gm4NPc#82l(>O`"og/IY%[WFV@H8McAi84S$_RQn+E[A2;8@q[hAa@sM[H#\6_Aod]L@Ns/<;9+q:QbFE'Y?j2eUuK:G>XmL(RE5UNl_e<']uEgAp6X'p35*\KpiRe7T?g2e.qUhDd+1ukZs]glgpOs[82l&e\u?PkN#\$nH5-j"F'QYBli[gDj/8-ohB)#!pY;nV-,h;`pd]CR!:be9cYtU0:cV+Wr,308u*V?>4`3N%3UdNZ5%?c(fQmDU_t&b"Ig7rFmI5@Hpr^T$%9KZ8Xls!F@FYZa=R%b.qC8D*:_nj_ngG8bd\HS=kn$Q+,\!1BkTIG/>hI9f>2^/'F6R%JCI/WKk+1(jAt]0`f9lXW5%^/AWXb)f!knQ0>GfCaVU=!nRnIB[gVP'MDE>8"[\maamq@\-;0-VtaYn:'(6Er)FL;cKneH'g[0:g*5B!((9Dr`1l%3UdN!%ZJ,i,PP3^k?e38>I3?MKArF*9dY]+l*,2km"@9h#JKd\cGJq2h4<-!N\gNJB*di!#*ci+H^OA/(+mbEMOPhKQI;eU`7+,F9?b-klrgbh#J)P#-]<-!$4YA!DH$CJ4-sLX@P:#a,t6>'@I=4O_t.LdLG,SU`7+&F9>(0)o.>Q"*bgM"u%4V!#"N#YThm'*_3dB9Lq*m7(NE#82l(>O_t.4dL@=]D?)38%H)6%)o.,K"%]4,^l!49GT>rP0Ho6P''TV),2E5?8%J^p82l&e\cJm'2h8r2D?(?u%3UdN!%ZJ,i,PP3^k?e38>I3?MKArF*9dY]+l*,2km"@9h#JKd\cGJq2h4<-!N\gNJB*di!#*ci+H^OA/(+mbEMOPhKQI;eU`7+,F9?b-klrgbh#J)P#-]<-!$4YA!DH$CJ4-sLX@P:#a,t6>'@I=4O_t.LdLG,SU`7+&F9>(0)o.>Q"*bgM"u%4V!#"N#YThm'*_3dB9Lq*m7(NE#82l(>O_t.4dL@=]D?)38%H)6%)o.,K"%]4,^l!49GT>rP0Ho6P''TV),2E5?8%J^p82l&e\cJm'2h8r2D?(?u%3UdN!%ZJ,i,PP3^k?e38>I3?MKArF*9dY]+l*,2km"@9h#JKd\cGJq2h4<-!N\gNJB*di!#*ci+H^OA/(+mbEMOPhKQI;eU`7+,F9?b-klrgbh#J)P#-]<-!$4YA!DH$CJ4-sLX@P:#a,t6>'@I=4O_t.LdLG,SU`7+&F9>&hh-@O5kuRj'82l(>a`JaGEc-A1!+,3ETDk's"+8Qg2ZTpM2h5P_F9B=3F9DI7\%fTWDb-eTVbWfZpu@Fk4qZ:mrUnc[rrWF4n*g8Dn(dnq5b5E*SN_JUmB](607NF!\,URP5i'D;(VfR4msP-1kAHmt!!#cN.p!pWE;M0d!1lQh!GN2GN2q!75H[rSRW,]5Oe&#l0\QJ,fC`T-F=99n)rfT=4c7Y#Hm]I?":-GPpML5A>1upud/+B=CYJ!.ZD'J,T&&,=ehBc&)HLIe]gjqPS5'+9927EqYK0ZoNR2[+f3u!.^%eZZ#j%+9'+DZNC3;kqE)-02:%(q;;56?iJ%3;Zd$8L3<3Lm'o'$ntb$<"orVqmskB76mD.A__09p!cdY`3Od11%NDis#K+l*G;=a3CS^VqaH\!!&=)lddZJJ8/]O!!%,IZa9K3@UW]]mF)(9?l=l\MgtMWJ,!:Y*B*tohu)Uq56HB.Zd1l9r8bt`J+=t:o)AOT]6u=$MVnI5pMPIK@9rZi07W6[+$9DclIDqbU:GI7RbR!,^LB$KQP"0"%fsJkDh%Xg[m-Uk0&3sV_sK[3!:/64Ie"/]56\_h)fu_WL8$(tMKI=482h5O=c7BS:*SLj']hrLDRpJFL8$)3O`&N;U`52c>Ue)q=!HHs'P/lE%6B>f6W''u7Cq_UU`52cX@9]d-]r9pMK5Oa2dM8^6W')U82o`XdLAWBXq^,t/!4]tMR"#^#+\/nTd\'K,2I>edLAWBefrqCP=RVH7Cc,3*Z''Y.F-s):Je!3H_'Lc/_FG!=4h,"gI8s+#&''Y.F-u4r_cq1#PMP=?)dS3deh,"es/^b(hM0)*^PUf26kt7`jMP@1@\j7^+DCCB_V+DU:tN)iC@p.FLpl,2H'0AM)=>3f.rG;3WS"]'2h_)iCAk7Ckc4O_uS)Ehu;c?&_h)fu_WL8$(tMKI=482h5O=c7BS:*SLj']hrLDRpJFL8$)3O`&N;U`52c>Ue)q=!HHs'P/lE%6B>f6W''u7Cq_UU`52cX@9]d-]r9pMK5Oa2dM8^6W')U82o`XdLAWjTeb`Kdhcqn^3K8?op`+V9P96)e!9j&DJ#s@Z"$^2a(!$QbuV;F0?hICrn`VbDn(8)']kZ*h4Tu0So2i?(Iqe*B0Jko\]pVMMkf0YD0G?)lXrjfX_RM)U7scD-q`K'J_>`1>sFqk'^;JFq*!P-0r?G*[3;.`SjFo?,*W`>1!clN%UDVghS*NPT^q#b9,[LMRPIPTpZa`sr9V7D^5a*2GD.$fq*IPTb2dLA7Zn*0!!ZbKA%^uIT#m+d9]%F-UX.ZYSc=/+1$hW"CbG-]EIiW_IHb.;?1DVY8`Gh+)5'gLC3qT3u^/r2`Km4YQY5DbZ=8u*DJOPeM]kf$cc,@uM%A<%2RhE^J`l$61^VLAJ>Q^+$(*`b(&7-)()T5O(Brjm>'mST5%O7p2719HFUKC7[lFOPHpZD-uIIu193V]GPK?;\.f)f-8Vr$sMR:Ujn'\nP/YdZ&l'h4TsZSSi$T(,lYu'ogckr5*cLa5?k_;$,_]]/D+Ejn1D%jrEX*:o#%K(?q\Hq)[=G6lZ-9;t?BO%SloJVAUIVj,Zf#TUB;;PY7RP--A\gJfKEF6)FA#'LH0qtbJ"eT]reSkG[qD6jYAD&rKBntB,l."%ocT\ZQHZ[N,PNQ;2C3j@ee[H$g\aQGOY4\,$OO$:&EdYDbJH@felDN5bu3jc9mK=`KU;VFOs@5md66>*n)sQ\Y2LBBBks*HtV])g%7HdnO:h;<\s]=.'MTEnN3-mELg(_;;"-ZsHkmr;:$jm44;^05TN#o_=Fop?pW2cLJfYo09_@nti\%8)o@8*^2\JG?t-m,?MX-qY?AgfB>#;BBQHO2;T)a%t=$>a>:"_\msr$opA,8*.R?rl#u:dlW]Uho^QR,(VVXFr,R)Qi7V?2?$6Yd-/u,Pb[,41g,:NPEJCB/m>W2g2E`KFh<9dCMA);@q8d/kdWA(9ja-!U=7l)Ho(HiXk&7Bc]uZ$'q:jL7ianNZK:>DNZ+$o$5.#h:@o#R;4SdF7T=oXFj#2+*pr!\lE*GMgBtIC97$rDepeC;5QfZW""EUh6"G\Y-+qrJp8kVH#u0?*29WKi3odrSm8%Y+EOT)IBtrT)$Uc^m=cROs"to1/AfD/g%A=4?hdjK/,4GX_Uo`1GXDrIK20IUfsID7WSOe\bJ,fcC_Ym)&-JYC,@gC]$upXqp9!/,;6^*&#VgJK[1hlrF@hSMK%eXuW04i4sO5K`qrlq6]=YSVkBU76.qD>[1sRM`0':/:RKI;a&1aB6q"IkdTGckWcYc0Yd"cUN4kS;,9GS!pU;?Dso.#2[uTF3Bt:SWDVteK\4*&_L0NqiCpZHeVs/,P'(JmFBP-s)qo?j)c\!PPf!_@.A02s7h[Q!RF9=!JPk`kH#eBo?(T`\l]C?kMZ7[c6<%W"$DE(05O\pWB;1%D=#!Td5TeCK'*1Z%Z=Z(8&tHWa4.DU:th:,dMaqFXVnkl9;;?[?L'%c",B^ij,edJ2Mip+9k),M#Y[:lfYbm:VCfd2NIO)tnZ\BTG2qnWh-*h_Le=9908K-KmO4MtcR_`HoaTe.8I-BPAiK[`t,-daLi*^YJ>:?CSPTb+$^A@CgHZb,F,r'Z\usQokY`;;.aIc8M+u\$i+rfr78RP?D7/?>J1_(4f6FU3-n//[G2HVHrK:7\]d59@,UUpVHBPkOZ[\R4,q%ddMMY+.qQ;MGk^+N,MrBrZsoMB`#n/*g7cHcGGE-?#hg:@C#%,7J!J<;FOQM&SSgp#c"lobP`7uVG4#tB=(iYF[e%_@io`Jt)q^3>g+Ac3JZ\JbHh`/`h>7D2T%gT^Da860*dVRr1#V9[An7R4Vb`:1I1L07g,HCLDs+&)/.64%JnRSkhK;fSI;;*)mH]\D4M'pZ4aMp?M4@R`l@=-XZT7,uHG\AST^:Oc(HW0IfJfN-lS$?ILQl8i;6&'nNB#acLULqNMg-t#L7]C4T7Zo/4Kqu&-:>D^488-qpe[U^X7WH$@u&.Qd_$3o^EB"u8pL6AXaOV(:k&Mbs1?cCcLB2N8@%o`D$qiQI2plue>'\_UZ,EUVi+`>;W%K6gVf#FSWYs'?f+o_`A%OXQ+eJh\e0F(g\-]LdhpdtYjJE`E+$#2=$A+^%6DV_l/pC2[q/IIB9V&Hu&TUa*IUA/\C`CI=0B?%1bXr2agHVpk7MFf@,^mD*Ip2BY\PsY=Ekak_VfbT"Sdc,C87o47f2G^L&$jqu'.Rq.KH9pt@ll/N)II4Lnu)^H\r`U#\/*O]7])/Mr(9^m5-j?XgT[Y1XO3n\d[N\:kt8Zb2ZrO"_on_u"0s4h*.'Rog=uLbbLYgkX(m.#B$8$m#Hl<#!B$ln$Rk7`pDCq[]mf@tSqi%=%I\01@J+^eS&\GtlCA3TGs>N5pEjRQ9$:-D.#$!5`]L.k8rI3=1ST,2BrKIJo";7k-4bA!5e'q1XT*$MIVuLGfqE_?TVko*gu\bpf!=mb`9XaPIsonr87.F_RjMF4hu$IP6'(Hfk[]R4So/(`R8T58rEa,/o>[r'"&EbdPj1X8e@>&>PRN_PXuC@9D(e\G5.,Oqgo5B')9"Ras9@g,\[4>#r_hVI5&I$Lp<`QZQKhCbN(IcfBRuM:L0]dFrCT8>g1,/N^TeAtnEQ@G+%/6'F7Da?Adp-ZDY2K?e6WkIodhE!]k;764cd\U\T.:"-]_r2"81k)jnu)ZoE1[<0A\WemnPVqd9#kV1ZEi7k#.'*2;K+-Gcn]hiN_"qRs"N/oAl?%S9GW,1H";bYKY*jB8Ru*fdY\Acd%b\1kV-^M8fDkm!^>hfPW3A@$'8Eh[YE#+7E*Qe)_j`dp9!ChfsbPANAfjsr^9LD^WkI]Y[&9u'klZjjl`Nmp"_#SJOiF3:RIUCX+''nI&ftglYjVpqr5/>eCZ02g)dL_QTIbtVp"brFeRHh27?Xf5l9l4%q2&4(;%01^1YL07Cq_Ur_5?JM?1#B3](tX[,m9!hVHmd3'CH`33(9N0mE'LMabDR<0)0RJ'kJIS+3_/]'0lh4)ZncrJYFO#"MiSSp,ZD-bFLhk*"!O1ST0pJ9q)nMcpo96gU%`09W*^BA%C5mH*S%7b_b6ZQOHXFnhWLO_NC3\+L&(L\f6N:Ba*>.C@`jePtKP)/G>](WXucRr$qU]p;AOX*[A/FOOi?=W\CC#+ai4FJFSH*]6?uZm0O"iV%]W^1mFmH]'dkk>?)k:Mkj3]r%&"*c3GDI6RX`m6bP=G-rLi[$hTV4rRqB3V!"_gR]+]_>/mL1$_O&/WFaD!?W[h`_nkCA;_=JVo^rt@D6X[f@_TQcKDsZ\Q_&*EgKR_851b$*[=)-6^[ihU"]':)?"3$S?"\)t(5;U:gC<#OPB9Ei.`C-[7N=Rl5@Tu?,f)VnN\mr*\6[ql)$!,2r1E,:p"MF<*_"^>$YPZ32F%6$]SI*[09bqWirR;>Za8K.jt:1pdXLHgBt\V/I0&HG]uF092@JO/2Qp0SJ3Fe:eto:Gj#>&XSg_9qHT`G)j*ab4X>JsUNG2_1h*)).W9BK?]W)Z:@6MiSdhfcQ1WLWR$R`;)4\/#FAm#:XIe":+?ar?oeWL8?Tg7Bo'"J20D)q_?`kRNnl"h#^$uZn(N2IGX\`cGY1dp\Ap*QuSo+b^5Ip6nqlf&*MfaSHno)+e^U68qr4O:ckWLdZVplKW^7D*:EupjPpB'Q@jDnb6*4=hbUDGQ/Iqc%Lq(H=B_Y1uadX&JZ2,0&fEj:(&[S-M?n):ZFon`O&S3<[Hj0,&Y4Uk9Cj1"(X,O;p[[^Bq_d2VK(#.(CF[;.<>?QX%sh-03pNS7+56[L-0riFV?5B65eh7';reWDsbACFFo1=_qk)`arf4inMLg"nuTJbk*nmF08'7+`qHn!141Xdd+rDHaIDe].2JlEDSBF(ap&l*jh<;icC]77/_Y'?A]Qh<7RQnP$#3Bm?N/XShJY=nuq"/u>&HY2.n0e4?Xla#LY+I;R:]/J,0ITH)\C2`kZYk1d3+Ap*QuEQp=UWqBY[DU:uS9fJ25?cmPq*3Q&t+Hf*6e=f^]'Dcqs[2jM,qHLWfYP0A'&[J4%P&2e?DB;%AV$mOr4;4sdJXS=S\='\H:KMJ,DY/pDe='+=Kt?$\0VZKXh#BkBJ>qu(F)*hq-@hPS%pqLSgh+8Vp,2dOP?l"4UD:,YBkW,$7L5M?"odbltLlh>6ZL7']8jHABn>%;F0]!J[*q7.n"mmK*gdk4NV);2_.;FcfDqr(6XD!#VmrJ"DfZU+\e\*2%l)%(a!ER"Nksc.Odi4CC8\%:eM7Rdol!la=9Q+n8X_W?TeN9L&\nSps:E+__:udG[XjW4.NOj*i!a4uV6q^X1:d$GU1qJd=:hT)R)h>;3]%Ps(2mHX7>F%Hu`(>a39%2%R4E:=&[,1n*e`fQli+peAVoN>MKb-P(1r?SG-mE*U8_?D'JnG".Q\1AP50D`Psm<`gle"FJCaocO:O(k1Z%STe)[NMX&Qc3@1>IQ*Dp6>WT2]hH`O=JQJc1=>/^qqS$J4[e-!dS!Q-pKb^]$eNVgQPCm&`*\ooXI7<6U[H?^cpXH)rg,,,%>C*:Ar\&&uOmhXfWQ`ArV2V1pnMdPa]mRCoeN6+/!ERICksccZV!!ck``P+GLcp7]=kT+lVaATcAglk;_%VfM,E?_QG2c!eX#?e=Y*3r`X3Tq.\%82\:mnjtT@Itr[('\nqsq'JTrr"/T%K!qrB,/dg#YuHl1aemVAjs/OZ'Agjp4];((QWK??Nh^ob08:]<*ZMeoF7.Wma\k8[diud^o\U6$IMth97dsaPEV_M41dC][LU^OS=ZTe!5I6EQ!BLHq?`[=FHs.*ffD0:8tJMjG#ksfIIX2F*oCJu0f6sGsCN?f!7U0cSrUS"-hS=O4p;#>@0s+QE%aiKDi9W>Lk1E=(+aL'L1,GZ8deU3g'eCC-LW?3J,d9lb8\<$*g=6Y!.Y*PsB-$&90`YfcmNC,5llJ#aYR20520e6de]$8A5I01Brf7SY-\W?CchQo%>m7E)2Z"u"]DR=geeT@Rg12!rEQC]1XbIb0]eVm26K.!hH]3/=+>H)O^ZhF!.Q9@ffFUS/E^.[][%^p2dARFl==J%V(C/#-*([7eIq)$o$2``+UXj@j#dV"[N]K9V:`%Jg$M_$7?VPpor7mEM@*Z._BmG>Qsp=^IO"0.?"j)W^p?:tZgfe",8D[+^$=ghKe\MT`*Ks>XNaZaL0D@SO1AD8\bS>;YN/K5W>C#)SXmMe=F[$q!/\p&gL"0@qeduD)YYc2WFcN.)u$Sq#uFNIMge0U4rI1sn1f+-9SXOd;ug9S?(Gc];dD6rh.'>P\Sre2M//ALnaPL@p>Z#@ffqQ"%q*$e/t7&T]p[9?PS<%C[%GPK,L`O]FQf"I+cr`K0o;0C,?S*-Ln'Sk`FRbjT)-eCH+ghYYuUecGr4^gHJYY'Q:MKI=4I%"s0.b.bH>3gBHq-SP%?_r$M>#?4U-F]\rgU-f,>N(*1prn2!]sSiWS"lV3h"k!O8*LoTgU_ahcHu_=7un[Z\TZ+6'D1tQ6n^fGiVLQ0Rr7k`j\A!PZ\lUpa6D`"WP0#?OC>$$qL\I@06jP"Hrg!%OD]SKo4bd]qLc!:bAFrfM"0Z'NRaD]qQR?'e\I30)_4HDVT>BFr>04LGXSo3b;YtSY/>?+DAG<\qjrT;hUeMjG!*))R:f#sI-$nt'/QsQO)hJ0hX>X8C;%>>/QI3T+FSj&WV":u+hR,UB'Y@5BT_7.7g#AaO`"4u`799T2Q:nb>7QL%s*]kU4R]4qpR%_,S>)k"=D'/0),&<']C*/]Crj,-X$3q@Fm8%b7_36QZ;Agmtu59Q$f$<7R!6,I5K[ScV$JU(q.Vp2VR6s0)F]fZf3?l)inh(.F+DeUuDSkVP[(WV`77,l8Gge;YgkCY*YQ"kq1i;2FJJ<"C0c#[A8/bjHTf/>*E[X^B>gPb3F46obn!]"5fp49$k"9s(R3:5Uq$#?KQIud+`D)%OS:pYR%:Qt6D$5aCIO4bj.-'K,FA$+RB>5^*1cFVk1,eT;ER\F>n))UK?g)dO(Q_?ci*Xg;3pa2XQq';H#Rq<8MqDc\3mI0$R[n\s=4^p\WRX-TVU`2=9C26'Ph*3Uil3k5ua21X>h"\\9*q@,QH:E(307A)dfHh\Ek*u+qgY6`tj7F]h0?n(VT3ZnolFh&H7R]uIbl4^pR['WQ"S!14h]KROm?De$WUuUTh?nB3AM#0b;a(!BcC*"UDNm=JH#4n@rsdYi\"35%>AK^G/udUq*0NNK\j&;=065"dV:&W8h'qAl5NC/Pqm%fP]`.IsnKqS0]6rh[WLh-+Bd]P-CjbpJn?OX=*'Z3#l*I@gcRp;apXJPp2cfm;OD]SKo4,ABd:g+0\*KEC_8eA`D77.]nTC[RNN(=+?cd6KKuh/_GE0F]rp%c"Za\i&G\^CYr=/Kcq0;LN*2XZ8'^F*CQ.WS?a'LkJH00h-@m_1nD%VcUm18&8qTR=1oqo8R-VB:9*e$DH`qE,!,/4*T`@KED[ngB0H0k=HpHA6:4mLOGq_buhQ/;kueLTgch`c;Yk.+Fa+i73)=-:#i9@#^UIIZ@@o3\#WrUT3j+3R/2"eX>AS*>WQC/b.Q2CWPcIc8;JGmg)\L9;_sH1+p$(?q\Hq)$pK-'u*p25I,ce=CJN_pW);AYKpW?8J=MEJRr4nG/IJ![UO]*kPgZ`[(SMab1mD-+i-"ulgMK:rMEhDpLT#MWXa>9%cZ*jHPV)Wt[pk[q[hY>S>els'%#@6RU6Fm1uc&_*9dhl)]n"48E3Iek%/5;H.%c>bX0m`@_jo1rST/NQ1+G]2N:DU'Kkts4\C#tnr`HrYQV9N<&*4g>_P>e@%Mt^mhOd[--nf=,3iM,G>fHZF\B'7DlDl[&I\ln82f-?4oP@cr&%CJ.[kON3Aqk.C\F(6OPE^$R?jJ+An9i'E5T(i\=o9i+-Ir)/Y2m\71+DL\V9rH`:@ke"\Z*i%$rbHPZ82jhrO6NO7cC7YFfXHho"`4C2.?_b5?5@Bop$uNpico'DIeT!!oNbEAd>HdDYZ:#RBKD0kGrLLBRFsL&V^K!"A"]`/PbS#FaiM9.=HhA.J?T!EUt+=EkVIobgq?B*Ab\1`Lbe0j-l`OFo$+/HoKB\Y2.mc\&\8A%/"JOoV$M"jpk\-g%1;O^]W?W6eBW-cgo)D\H_t=to!sb"m[+a&,GZ8debkePcB[[)G\h"@W8E.jQC>6d-t)M_7G0FYd6'eoo_d_/hgSqce?f:-#U$B8:M)e:Iha3W6t:]7gGeSJG\BIj^%Z@N4MKj1%JdWg%:*j2V[[2]G#eG3`N:WXZG8tJ)Vioqu5L]9(SFWVW/L?i$=&c(mBk;JV[m"LQMh\hiFQ.h2"+:n]UeNgFn2HD7\,mO/Yc>YC)H8:DN,k/,:pU/Di-3bnoN.fq65eU4%K!maEsnVPcV'n'Yjt`jV93,nhS'-H$mIIVVqp=InsuqXG(0E@H*m0EDr-l]@[ZEYdIk]JF*D'Qq_`l_ee0_&`5S@@csDTt\_F00R[;3UVm"qm7lY__qTRaNg1=lBri=KaDr$ee=oV4R4B14he%\>_kt56LDEM8%K#?;o@.'Wt79POjK21^SFQ;n;]J2[saY&tqAZU*uonaV"+lbb/g\Lf\m$j;jTr#9kW9IOXu7Ckc4O`'SVmJ>a67G5+8;>,HSgPJk.bj;IUr"nP!h]=q'jdsK)S'f9H/k8C5o2:@]ec0mZ90abkf8K67O`%`Cl/lk_pdh:,>$Hlm&Fmu",Bs#A-u.:$\j7^+DUuHUl4,93\%)pH;ste:gmId)>/!r`CKG$7>&!Ftf!=mfO`%`Cl/lk_TfW5)Q'q-U;'iI"F>__k:_)h"(Zp+[VA@_<7Ckc4O`'SV?!^VQ4`tP`Nr@O/LdRYr2dbA+A=$)LP,5&qn].ua[HtP2UmnMT]"+k!].e`sg?#fh*.R;,pPtj@hM!JXMOmt2N2##?km!\H]"+l,.4r:*dB1?dFQ2\EG>>!4Y?ptr"soKaF^f7Yc/\7g?bCDL)=qK,D[8ob6KMY0rKHepA&kn:d8O8b4Pc6AIUkEoTQ"W+0OMoL`O@ceu6AUlQDR'oBL(KLbg'ofoG!cOt'&$&\U>6AI&js8s-IH]:+]:Y=a\&oZ6:bR!2om8u%3\,3BK'(NG!cO,%.+7e7(XUq8."Z1/(&5?+c2oK+HpItKFfT+h..hc%3ZuOZlS6DT9XPEff?KTO.!DNIGs)a]@Fcu--%m=l18(toESM0;5lOV6ABfPgF&@V@^A,h`\N6qV,O=c%;h#Y>Hl#+7lk+bWAmm3X@2D?qDBU"piTBK(SU.A>R.-/&eO,VcYFA.n9a&0`F-S#f#i+bV+qG(WJ_h%2oKKQ`QEBK(U+`6`C`8[KF'Lm68(Z4cPZ&<[ma%5Nc`6O8eeg.bVBh%2mc6b>W2d;B45;F8";9!fO(87H6ka<]IK+[eq92d&^f2ogt$s4-XH&OK#6@C-taL=U7&T/\"nNt=W5(3QrN]?**;])dFMZl6f!i@^])_o!KkNF)2qN8fo,ZKd!<42^g+6ioBgIG>P:;^!/dS\'f[qU!+92DZU"o\K9S[cn!(_uj!rt"qg'n$).G>42^i[M5Y$JY_aW:Tc^i3sG!!(KAh#IG5eL9P?j;!!(KqgM1Dr:!),!s&B=$ge,u?ohK'q;?l9A.JeC?nAZ(!.a=\D?'Z.d;ApaVR(dPIdtVIrV,394V.UDZ-[@g!2fAdmse^Bo(r7@s"8X@!!$N&h#IFKk6F6HJb\@"hL"_5*XDb]=D0Vn!7UbQJ,;1pbNj(rqjZr'!!%t3Foq^uSbqlj?i9J@pYC%)%g2l?/@6>rJE\mL2q)XE!/YAJ!!(LDi=CDdIX/X*p=lkX!WXnig'n%tF<5\b!V+A!YCHMOm"#-:N.lEW!&0sr#7l]!?>mOMQL'/&!/uVT!rt$G+8tCnig88(rpglY!s&B=$ge,u?on>en,G"hH%eR.f`M6T(^o^8!+7j)D/J:!f:-]m.=30;!+V_Y!!#^Ua$9R.puQY[aq`S3!<IFjm"#-:N.lEW!&0t!*dUBTo(r=RIkQ-k!!$N&h#IFKkLd%Lig88T0>8i]+92COU"o\K9]u3@j5QEWV+[.c%g2l?/@6>rJEaT"DXkp9^]*Q6A.JeC?nAZ(!.aZC+pQXS(QTYl[J4pC]%84,KnUR/lGM[iLrNZY9!'kQf4[%d@eoT/#-[Qs9!1=#q#+"%aUYu_m!!'q-GWateeSfp.)qb;o!6Fg3qsX"-[;5;=ZZG=B)4]h[aP3_N&'u-uEH0-!t!s&BmVYrtdkkI"%lX$brp+QLI=HI^Bc`*lmf`M6T8G;J`n*\o;CS>pXF6Cj;J,fE4\,cRH=^PMXIu=C/B_qW'(YO5S))hNqK@>:34n[<'Z3LF2O>#kO2qk+V%NIItfk6r!*ZtF_MpX/?o>D;@'Z1GCL*HQ[jtcu'+4,aUm1!R0c,Vk+OgVSBlQp-8VqU"p8H81o[@".55&lP8faYHLaq5QJ]qh%2nD/r+TPR*im2(IbqrF68GJJH1El]-2ih>Rp-*0V`9PGt,01hVMSl!s&gcG!cNY\K'<4?q/I+qlFHi*fihb5QJ]qh%2nD/r+TPR$#_X'CFrSl-lpC!Z2F7L(H[l3OBa@N;S.>BK)haSWZ,I^i3sGKFj!s&gcG!cNY\K'<4?q,Y@_]M:Yq8G"9+aY>^iQuHJ+XECA])g,((^u:FoAG63arUgr34'Vk#g)2TD?)J=p!m,4]/b30W9f'8L-rQrKTKFKm058>f3Weu[%!]dltR:nO4&*]t>oa45]kZ`ufd^Hb=l&Zl;=;alUle!95QA9Y5PX.=fcpYGUYQJJ81o[@".6sUX&nc'pYMH&G:p2uAn5F?p+QOCBK(SUP09QT!+mrG3P!MQC#Y&1NK*u5a$4*q&Wi&s6O4jG*81j0(*A&(Z*sNVl&M7I^-:3P":Tj)6O4jG*81j0,0rCC9[_`UNK&qd^%\,bd/ete]-2ih>Rp-*0Tj[Fqs;+L",R1oE,\YIciBi6h%2nD/r+TPR*2h^4r\^cc)t?arr2Z,b8qI-'XSfG#g)2TD?//]d>raPSUI:#_)Zr?[-SA*#"#pFKTKFKm05885Tl`g\.Sc:QbWGep4r\NU"p8H81o[@P7(]Fp!kF]GiIMhEt:M5n>T?a:;ZoMHK_&0L5DO0fjhjUL`aaqhHoa43BTG%g2!n6hHFFlg'o3YjDnom=m>nZhtMH1I=6N]\,05,9L\m3%L`b.o?9#G^aM@Q)mY?h#l.bYrN8Ffc_/Gt\fcD`KTIKI]?)C<^%Kt/f\"<0-fZOH-Vg3$GW`m]_ip:JcTV#m++Rc^qs:X&',-Eip=SWYViMoa*r!Q&^A-cQ:NG!AA]^'XZY+7*=moTrlKXqSWFkB>2cj6-^TuFi-q]b)nP(*f4s!&3P+g]BLL;gge'iC)fJ.eP,Wa5td#aVS^%pf[ZN*\Yb*=In04'%ud7:g\]45VODf>+:oX*s:NB-&j]5\f1;A>%p*-mG$leNt;jQ6g:L(MgfG%5]6]^\I@J%siU:7XElVFIj=BE2(gfB\Eu3KH;naC"uD=4pduUSHZ+Ge7r#VJ6XKhHj+B$a.@,.b]m;$r-Wb4']a9)h#E-dK`.`'&&=j?+G!pj7-f(*mnkOH[B+Gkp>#(0`\9CKbn(BJ(TH2B?l;>]^.53ETKa')%-4e`qt,&4gCtIj9_.iV9Ye,N$"&Vf=i\pD`Z(f*9e&HUh#rs!YqGgcu.("]IcWpVjN[u$LPj/*e4*-IB(cRh`j7e/URI#i7`MMeQ52CdJom0m'G$\h@:E&NjP:OW?(U]9"pZ%mO>L;6:92APPM_&2q\r"%7qeO)q4WSTE!^&h5q]Tk4*\&J,ONCF"RH\F8>Cg;l3A>\1mr-n+a;<`!Z0!q*!$ggDZhm@l(]l9VAOVg$iDs$)\X0rbbN^Q>MZT'b6!dHkuU'f1q8P.8\aH4+)":p6iMi;mj7+F0$/c`3,*9]?DudO&+W^m$aV"VliWCccj2H5P->C/l.9.]o'jK3^!Xc6@c?>8jmaZ@6kK0`r$^NY]8\W0@?I1r"Qhs%94qh6JNDj:oG4@/n4"U3nSV^/+=JH:If>W6ki+-.cu+[NKo.Y5>?fiFUf`Q8Q_$p>(gP&tapq\gDu=d`bQFud>?V[V6=!aNBY``^EE$/5@b$cHI/\C+/<*Z1ehs8UinoGdYt"9Z,CA4'GC'rETP8Kr^5s^[%/)9tg.>rIcahU^g:Js1_4o:ZmL\hj;&AJiZg9qYm+Z>uLnC7;<#4N"?8TV@pA=I(P5Kjk=k1J?QKN_%4K!7?j0l&9DTq+q\T?I]k/)f[Z=d/;N8j3WZeC^RFECLUj?;anlYUd.KIJVH@7t07&e.#/&djDXSmiXD`?s^>1NXlX;-AkE,;INXHB>\AlF(UanH5j:$ep=78^\-U:/o]]RHV>:Yri05B_X\00P*.,!M.YJFga1mH^hF:*HWp0:;$UF'?0fhj(rWI(MhS3Uq*Rh6GA5B!-.7Y7ZE/'E;-2<`lc?.c4*s0DRcskKX$n]5"<``u8*=U+]fK]l`(6;-P5Ekk7CBie(1(6ZSFPl(;SZAk22$\q?^hCsuJ/MR$]rE7>CH3efu%1>4m8aYgcfLc8\K7F^MuI&g/Q_(NGJcW30^Oj[FHg_W[2LBD!sgDF3NPe&GH[6*[Ee0Q3a\iHBeb,,g*N@CA]I9M"la,_>*BJ]^/SppNMXl+Fd*nf9t6_N6\D)^apG#)/('_]&Fl%dMWW,p$4D3cgR0=EFAVu94ZSMmP;W42)6Wplge0fj*p96%,2cd0RpcZQHAp:-[2;cEMX,I><<0guV[lMo?Mo&l>smbd#kR$p,-Wl%&d=&p+T^]mHe!)biGVB[MOOHKJgF_,jTWOYnLk.T#l6[Q8kq5,BXCq\XQiE[]l0'D"e>62K&P)_-i.3:,f(9Agn@%0(k`pT_W5m`MM4X%\K=eX)6/gISCq^;5(VcBbkQkrWGpfB;D1+[e>m4k/TI*T&E64RYae@t(qf#kdNT]eTDL`7o:u321Q8.a^K`c2)dl7)).smu?m57Fo&tTKe]ob0kO^,pS^XIe_0fcWQRs$bGu^ZI^2K5*T7@"#=`'PMHWag5YXqp%<#t(G>Ik+K=OrIpTb8aO&:qln+NN[$ud'NL85kVW3^]'43;lGA2+J\%9I$noa-RPkJ(!-&On:frI-I$Fl,\h6A8RJh2(f0]V?u4LNHYXhHFC\G%7./7?>*bEPJr//+mUhfqHKHMNY]"Gd/()4e]U^C=e>%(&o`u*KdAMHA.r?JKjI=L;8$>*hX:n]jAQ9e"OpJ7cl>$>>@f.k=/6X@"ReFl@t=JK!]'+W\.Q(`.iAB[3a0up_ljmI=cqaHiFX!ld^[G*aDnO(b)e0('02s7BIO@j1F#5@Fjs&uH]0>@4Ulj4@+j*L.(kHo*FjQ*-'m?V:iRt]S@6?0$_<>aO,&t,N[G7/Q^.#`M#?h?l7ol'U3'E4e1]\SBC\L+^KGDAtnk[48@7b(FRmaGe+Eb7;TS-IAbg,?ZaE>NVLD,FLX%Or!4!k/%N5in%dA:OO.m(Ci!o]S$'En_@*ZI:&p5J^S^"/Ie+N3>;)CX2bVGqqL\_/DHHdf]lcF%p)L$34k-Q-X(&go49`,DYEdIp/U;'6>'m!UhR)>&(;Je^ipB4mdo9mW7fCT,JI@ha-!K0e2F0PP2ZMmOF)^i/,cR.TrMdI6AP*iU7Me?M"emZ6,]##Q2iFcsV+hNpR@;+nirn,Zq^@6&C1R@X][lT..R,o&uVS2fb=ZJE_hNbdlDg+V<#-C3>&lGk-m@?Dm7(>Wc'2i,G>SiYQ5DNs!q;I?h"W]Gn,CGOsTPt(GrWoTL7=M3JR]1>gsS'Z'D'2BZBF_+nYMl-3Tl9;_rhX-;oP-_6rX)^5-)e43[XgbYdb/hY[m-,,_1O8&D8$n29I/)ZUZF=@bcu,'Og.hP(UinC.D+[s=_=$)V>IDGL?aqZ\O;NBQ(HsX$hTh?Hp"YXV8`Y%#SQ/]&KX4qO/7j"_:qYH?YO!<'MfAXu:rj>/+$-@*Eb?D:tX2NqMfZS\5/qk=)?RC]?)h!"/69jZgp5742[%$\o1po3C:)ha%r&p3uK;/6]<0m.MKH(Ni`g?r7#*']cG4O]cfb5Y3k2UWs`J/ecGZa[*9FfcNdWVs(b`H[QO_JA)]P1pO80LLY'Qd;;\Y*)pU"-?me*gGm4>g\!M-Qi,oeWJ3CcCeGe4uXNM;h>O4[uJ]X_"H?0m6XA6Bg9&gWdS6kaiAhm3[5Fj,sS,Mpn_^=k_,@=0:,O=7>_@3T`@tS\q1/.r=_d3bEY,g7if&b<%kp8G)@SX`h%P(JQ4Par,Q6\t5SYq"JLGBE.h)cVu)Pg5R7]\o^NuEAKC,,C>^Z^jLaMTXG=*iue:LH[@(?m3]*o`#dSE^6?aQb?HPT"[*jp>=p)@:e9k8%l@;Ml.7nG=oc"6d!Ub&nC1oOq1GU^05*>:$DV:3u!9SJ&\@Qs8o#W7jDq-V&G*CQr(-h>:Tdf2e3mg!gf^-R89@\?DF3DSCh/t@%ID0+hEX0&Jr*6ooio\;sHGcYuW.2D1/eTJmFea_TS4:1g]?r:Z][.N'qBZ`lpC8Krk.%L1]2:4.*56".6C7Drmj4d<1]Mm&/3UQ2-GF%\JHjW8Lir?2g">j(Cu/#gV!.MZO6[@=5^G;p+Wm#A]JD.5u4rN8H4KR`4o!9R$i2hiM',[:Bh^oEcjRaSVl++Umm#1a$d>*"l\d(W'$C'!Qbr2SaXJV6&WC0&EZZ]&4PI$W5;b/Nmt4hQ]1MH[,B'niXLd[e=ggfiNl:D!X)a'C-,3Ms>g--;lO."$]mWg#pNZ]Zf?qJ.:2TiBM);2&O\u.GDc?\'?Yi_I#HPMRIdo$qrlL&Rc*>=V\9Gl8T8Mhe:?!3s%oi4]]3OCponSQ$$q="@mL/j^UEr5XXSU1b=8.,kj'?+VN?(O\bJXIekgTN2D`;uZ$r:jp*J^/[Ia:jK_Z!k;I[N"_6-MRDaN3`qNE&W`/9\9mfs@HJBCJI<<.ADeb7_L;g>SE&kDS#]-!k`?(44BKOmm,GEd)?K#>h:hN1[#O>odDA)Xlr/mr.W;Q.7gN[AD_gnP.>pWKjr^1g\\0h90s>?@A5pY=Up](28+@*G^nNqMfVZ[T..H/U!@]D#"jI@UGU+^U\/i4T6#AcdGE:L:J;XNH)W2rqj`r*>9O8jia!%c\VX4K,7j=6+]2M-_Gc1HOH0#[%#!W,LR1r>=tDX1A0u)oC(>/rU8l1$FLO^-IfqON[0%c:At(]ptesSVU*R)@Sul#'ZZ3Di_[D`G2e>3i]L&Dp/MC.rR@\]VmL3DWX.WeiWH^g5TF_(K+pHL-"JaXJFYt%IM.p/mPoZr^Q>?OZaihO?L1d]#9?Blh/EW_IX5E7TnYu2m.\Gpl>U]V]%Q+Flf_WMjq=:DKb4sS[eqjoC"UjE3_ZDpGTdGDFb')-"-7ja-Qe1&so++!_2XGFJgkc2"Zjh@[Z]"saYe&LF/9G?m%p7NqNUs*;mbI:Wsb)5Mn<&G`LD@GOR:I!B)!VZ>:Z=cN)ZH)%eUtDo-N[&lqQT;V3DGj&%@&d_`jVg6B1$+6RVQ7a%fe_:BRpN\.F9KRQ^K+M4dU[?SS"GU:i#X!*k]OE@?/@jHinl7-ll,-WkWRWUipm99ND2R.HDH%aF07DqWrGg.JpTU;m,s9n]2;sT<`\koE?F3MAW^'Y@R_32'qbQ<">WtopWdr^I(2kh4)hWD*`>>oa82<=!R8L.-lPgldp'qVZc3?*&lIfh&)]T?WSY;n&_+0SX^OMR9m9GCmDDI<1k[2*l$XD@E/k]L_RLlcLb/+rs:p2(q_:8XR#joVS"pP:M#BB1e\^d.pKP"lOLBEgeL4Z-tX3F[QZ^'7&[T8_*Zo>qKqF%/WMRJH#3&O`J2WRI.q*bnLg+qTfW)da;rqo)&AGF`88dAlTJX(7%Tj/GW>CI^?rBIG`D9B?5RrA#-m55dM(d(T'R5>k8TK'_uE$KVX^a].YR)Tg_gnf,&UP1_*6&%0_LAj8JWk8+ND;h1RH#`l;kPcu+g#NAo_@%NS];R7qRC[`I^aIL8KVW@TW?3bum=CTI\_m46#uCAkt_\!n:[Uto"-D[a(Xb/fQ-D)_/8D0:TWPmDRL(2_NR(SE9Mh!CO!js'*%&7$T9u6AqP""_.g@t?YHmZ_-L2Mmd&Z2^I36Y)k/9.GIH"ccN]0fI6B9b=Ne[hC+6X?DJWM^P]4C.*H9.Bb8f6\6;F(4,rRN-^L-]c/e_nWX-K9L^\5I*]TTS==]X504SL"3l90iE6cbE.%JfT/dtHN=kgVp52XSI!gK=mHnjMO%sgLpJOuYTRY;(juitDp:0g.jt]tjQo@Aus5Dh;r>j/[&+2U9dG-[$1mR)cM&tB1&Y(h#6@9,ipqn1S5)0H%fj/`uFp)!i;mYQFBfE#dh8H&DR#B;R'-!@'-VqnAg1:?QL(H[l3OBai55t=em?%*CRD[7e[%!JNo4o*Sf5>slZVBfhPr2dhbKFZNb<)3%`Z:U-X'UZ8f[SF!']jD^]4P6)a!\URf$lMq(`3a;[Pi8o=4WV&WmB8IYVeE&Sm?m$)g"!FPuh"EQZcD2[Pr%6N-S;]k,j%_e.Cd0CeFR!(/J=M/GY]"mDCa6pP-]A79sVBEU3(o]qn;Mn(L!+Df=&6q5Z&CR[U[#%hf=[ee`U1EU?4Pbr1Wlg=]:ThGn-4bBE'-GJUb\<'\*6gOMI#?YHmAD4n2g=^"u](/rEMRRNO?&.Hgl\];&XPa@_O96J65&GNE;n40@)Pb'.e^D$(1V0uHmVkNVT[2$J\lI8k@->0gm[\7f,L\^(CSNI97uD.B%A#JSTKMX=cVg5F*,(0,QI7*uliZ$#f%7u;4Ljk'jGD-Z\ceC>E+&SAhJ9Ud]@94_mi-tr,ae1pVG!=eF]f#1"Nn)l/:c-Fr'$&RiER=!t'HL,Ls*pK9r:N>hOjDi2QIF2rfSQfs-gZ'>+^-:+GWF)lI8c#@FD6eB^AunGk@u*C9JPc"`6^pQDs(NHdj6H'-S?/?c.[g5>#eo0RL%Vn+[W:[lNo2Y$(/Q/^?E[kQ_k=E=.15eLcUS+_:u_sr6Jf9Sn*R(%G&G>,@K7;#J1\S^VoAc^:sX9Ho=qbl\Wu^WN:8HD0G:QmHV
      itK!WD%//J-f;=lXT>PZI(UoTj/jd8[RMjsj'K6$Fp;OCD-q[otW/5ifN6c?>h)j%=l.s2`?X3h>Bk%qKC#]@gA*[?b\>YB[LER[SiVl3=kC2AFgr1,^q(.rWkj7s2@J])\K:?(JoH&bO:qkY&@RjXurrZ'*``tc1:@_>C56LTe8D^]gL:]3$ECGl0el2M7Q&arWdU5f9e+o*0+Kq*lEBWH;6S(Wnt^Bm7&@JE6(ORd>t@8oW3%CeEU:VZ/83oe^+I]<)>c#>G[fEe-M?tJZkh\9WgjMe*Yo%+g:)C85rRA\n33\F`IBq>F.\IO1g"5PMLClYCR)Bs[AQAas?Jlc99C+WZHNt621tE64Y:X2j)P.Bb*qZjb]34@)qAT#[gZm\$SRU;2UNRaXr\C5AbU*`@7H(p6lEO@DM\Q-9rj._N;Q27$n12N&+k;FJg(*-1f6/i=0^QiCb88jLG?I!XXLKj6h(DoM/Ofr)X3FAQ;[+.MmSt\Qcr-:2KHKoE7_Km](2aTH%^PT'7S+(&'8*Y\#8rt[,L5RfpM@%A3Se2'9YY4AYMCJ,>+1lCI^c%^LYcb;I]"2j34ik9=ilguWjK_a=g+P)VkpmY0E8/NHD9!MqYL',VWPuJT9R%6]B3ccKFjCI.>Uo`AL*kId.jpp@reK(H/sG>6gdWW&VH4_kXfIldE48*X5G^6[FGV1ap.$SJ*ZBe8L&_M:d,`md;Ng,@QPiiH1mBj0F]"R8DsD!Ip!@oIu1cD5Bs*=Q\Dfj:>)Qe#X5AgL)>1Zk0@lh!"j[59]sFLF&l2fqN\YedJ,-C'jAq/7jUT85mr4S"<\e4`P0aPQ&bF0llQ#g)2TDPS3m*klgb7cOjup93r*W=e`u@-!96`TPQ'f:^r![RY(ga(a#:;,""Wl;Tca>'F\3ibie^cD5RH/R@OuQnbW(9f*PQc>%?FB#5pI.m\AR\GOqN5F),qI8VZNoMRb9:3TFeNF&RcX3khI%5lpYoXtd7#k)kk+,2j:Wt[t)bdPk1>aj2X2b>Z82]K*p+r+=KC,[YJ1@8R-7?q)@?9(_WgJ(Q3LU-!`]_o7I3pifZ^L(elSp96$g"X/TNcmbq+h8THNHF@0T3q9_DN\`QS'eBg'mnS,k1`UiHUaM%KthUsJ"a"3A$Poulo&Fbc'dS9;eG27m5$iTT^R$OcGUS+M+P=*@4o#mWFke%FklffZR0TLqWF+N>KjLVA!KOXE@fU$1tT=p1lOk(YZ-;Mb,M#S6L?,e,pT"c]$7;CNY1X:bH,R<^9u\*eQNZtI!TV@R8%+$?N+/5SU97a3HIZ+C7]nNC"_7RCQ45rPtXnL8BG2\uL[d\+^hW>3&-=Vrp.9jDWMfsu8p:kJ9n#N2)Ncl)MQYT$n(;7rGged[8*nP9dMlb.e]sX-kl0/eLRcg8h:A-U7R\S[M6:`_aFsGhLcTWjCJq8IVmutJCoI6Vcpf?P3NHQq_U7NK+ORrQ;onp7sXeujY.j,5ibX>3=BWs#\#5*Y6C?sXYFk`\C:MXku(&t@KfCE4[1753"KVG:fp/Le9`EoED'>D`9[6AMFHS84Qqm%gh^;s:XdTA7Vd6Y2ela*RtS(V=&F*_bAjc1Ea\+XaRop4r]hDIg8+bYq^%dc`s^]!P'>BGsoG!.8WFNhb83c!?Tr\/FdVe]hlKIE8a"]omd;SPRC/mUWQ;h0:nr9C>g=1%?ms!e*:GZ2d4]01nhN'#_,LEW3S`5!QZXg\q]5"^LVR-hdgPn]pG#hHY91E:14jNht.#$s9gIe*pakkre!pt^R6?5)n)^E^A*H/[fk,QX6`)N_0aV0WD[CW6[4/3Kh/"*uK5UbTAV1IR+20t>2fY&colbdRVZ_;Yc]^dsfil).gUg=59+S$.kK@BYG9.78_ru-+=:Yd5^7_^dr6FSBu6G&*1;m=eiSIHk?9F'?_ED+:jMC]W""ntG=(T*gW;kOU[IRdUf>9N&JY%:tiCWU`U)nECZ\MeuCQHI.r?m$#L)2iusqBa0DCZZ@e1mX)LJ'Z'V/UM9"$+(X<#g)2TDN*N'WDhM6`)gLgUE)TGk#.KO[KZ)d=VJM+ZoTF3s5'@.J@@u$btQ?RgoH?tiQ`dBcTW?J6>']oFtbs]oH6)FZl?gpR'fA,P9na^D4A.&EO\g8'?*T!AX6:Fm:J8h#$/3ml*kD"A63Qu]T5sl0"17Yd5]+>S"1MlZBgG1cEWIS*VI>]]r@]1hm_]IGBeh-[5+ZMelG+RAAk?oI!f2meh.VL2hVa*bG!`/_50ek]gU@'K%O%Gi84>A5AZr\'^2AblteLe[YoCM?`C[>jBKF1Gm+#PSZ,NggD;2+(Hq=h*nqC[+)r0E,\&PnHeRnF:qM?C@/Wf$^F$;W(?#qNL9J>pdp9Lj:cpo%/)-g"1/LfF%5O(Alh`]$4f]K?_-We>bY27*&_^Y\V<[[ur+!4?coQV6R8C@BntVgFSAJ_YPi!6`W.:6<4rWN=gR1d7;oi2cm.e=fof)-mljgJD2m\_TFNidqEl!/@:7_L0JME*)kIB2Y2*h.R$es9'/(WfN-HN7OtWW5;;Ql_Ks"U@qNB5jEUi6hE8IT@enOY(J['Jb?cu`CQi#@"l]kOX&XsS6E+EnP15'g<9U^ul5Hh.`8W]huL[4?Ad"N2u^Gk4,4",PJkP+>OVu7mM]7q#8@H&C]MUK/JfJh($*K_GtNBs'uI9J^MA9DNB)4&GDD?+5"@uic"2D8^hSs@![b7NA:0k9"fIS8?PXXOrfQ)Y:RWm)LS9$6eocu["-P+qIQHU"pR+fs>>1BCX%fO3!n%V2od%(lcSr&K@$Cs8(?Q[r@a&]-4%EfqBR+a%Fcp:tn&HhCG>e.C1Sk\1`'Q?[P@SQVF(H03eE5C,[?U41ZU@VelutS"cu&hNR@0JjY?2uq$^Wl\)^76<7jdPFe;:[GeLe-EUYaP)4iTR(he:)L$1FDs"iT0/1%E*)6,-l/GJ;jM;gd%a;BJKjP[@;;$`MogOuG5-\$4_3mFmQu5idA*LGrGiG=1GGG%2q<[p+5"O$33(lo@r>g'2qAD/JZWD6nd.?'bu8b4YH#WUp%Z*nf;VN2#,>\_6!ZAOO3M5a<`B_:HO0\>K5I>4jrJ'ir9iB^QH3n!_toR5K=)+7B\ra/dfiF,1&p25WPMd;B;.p5T4i^1h_N:Z7=LeSZ^#rk-KG[&Y8W*@d9P&WdtCmD_toJ,X``EL]".iiT]HP!(Au?uE0_rjoPuk47WWZF=Zg7Cs^`UJCLNB[s!VUWKD0iQI7\#DjI%O$fDl+)O@Qm@*9tT%-`;.)%u[l6GO"qRuk\rVsQSmA>>C;S+IOm;#+`>K5MG6EWaj2b)9HeKmDATqNX_1Eun^VObm(nA>d[hPt-*m=n/m;a"'V0^4u\l;[oR:ldso(0+p6]rPcDLd1h;.GbZ9Ch71s&o%r/^nAl7!a/GI`8#;]Z.+m+%rL"WS+UA;LG!eI]Wt-4%-\PZJJ>E:X$'lMUtjnp8D$*h<7oQ&8E52'-h3tYaU[(%IM/c[(j+oGB_6%*s"'r'.6OgH\#aHcQo1>&0jTX%%;N5EU;9t#PuEko+Ya[g/IWee#9^Erkt^lD)W+tD)]Eljm_[fm0"LtjG%hf5TbIMU%V".-_Gcap(Rg`q-:FK5s']pp;Tc9g'oc'>(_rAfJqJ4^1ir-76j&kI$Qa;-gM=YW7HY'A;)`d@6qG_1ig0I^O,N-$jlCrLo/ED7=6uHZsL,D"QWnh*2AnFO+F:!IXkU5d]p!cpG[pd_3DMURkXtAq(`*,+_M$^r\48IjY-Cs$P@2JHT]o_h8I$1`ral#-7!)ph&+i0e#10_e()tpHc?3("@Ag/n`/m]rTr4DZF=-qd;Fb+1))mG9WKuGZ"bRp/@a?KOk6[c*]Henn@kWBoIG!QboRkDfr2oIZ^hqBDQ]>pakSUn`X0C$eC9BtMs@>iC%WQrW`ImH1'/qN<5:*86DBrT,\^d12rgo+hZCJ2j:WBR^*rRu$gqHVa>N90V&=0i[Mu90d:#,((Qt,e)g`0-;3]/N#-ViGD0\m#4^:?%\^TInDeE;J\:dD7N,j7`SfXC/Xp2Oo+p0pZPo!/Op+MH"].6nCPGSicEH[D@B.N_\.1,kZ5IU;R00t;k[4U41+XZ/uc4I54PidU.e]@lGXp1sPH3;)#e!?4lm.ob].o6'ri260iGh07c,[KaUDO$mNJDIFJ1CFf.eDU29HA/5&*#m$b;N_7=`!:M;]3I_W1c.d8(`??Wj8T")CfO:6nf@lbDZ?Mmffcf^KTaT@Q?73asU,(i_l-h<"pnI-.(4]*Jqu-B;ri&hohL5-(fio[GU>6@_`\fX<$`(.)H:*/Ue:iohQ`KlEK\s+(+UVRV_!>@P[9X3V287"/"iOnsVC"A/]>Pih`$;25?UG59g5UA@p!cq::7OfqH%`4-!*Lii%%]J#7f.HqIf/t^cTNY&$Y3ML)aXhPjj7m=mA#_+qXq%AX`p;lhVRFfIpVh"%)AlgqsCkBqqL#"3d"'p0n9,ka(916N/i'K#U-_ug.`?-pYC$8IItoo`>BF/R$sJ,4YHo!VGJ]5jHEC5p\,akG"ge#1GU`&SN9\8]-2ih>Rp-JCOGd%7o);@P]l3tI6,m6h0n_H3PXJOa$9Q#p3[=b@U=NZAauNV0JFVuD"W\j#]@-Kil-h]2_\i1]-2ih>Rp-Jqn2LB.t`J,Z*PZL='(_PCD%ql)h:oA*N[2?jN3T5J!E:sO:D^/^%U/qZF;7E6b=LpOB`:_-B#S1em!U)hrs:fo?TZ$hL"_5hL:h/m=l0=E]LLr*;&sZDu]?gJ,DG0H!Yg]V9>2YF%PP1JTaBd+h8TH%0.N?cu'+4,aUm1!Rp-*!0Bog2hVa*bG!_l!3upuL(H[l3OB_*5W5=l&4/o?LNWb"a>8Jr!PW]QX!!!"$&_[Zo!!%Q95e@$s!!&*$BK#nk!!';,m03Oj!'k_#h#IET!6>YW)ZTjg%0-A.JF#P5!<<*"O<&!nzZ30Iu!!!!aG+dXk!!!#?%^[/T!!!#PJT_+q!!"-'cu&g`!!$O7g'n#^!.aE$])_m3!0A472ZNgX!3u^o"onW'5^&gVza:>Qrzfn";K!!!!A44%jF!!!"0#MKUe!!%Q95e@$s!!&*$BK#nk!!';,m03Oj!'k_#h#IET!6>YW)ZTjg%0-A.JF#P5!<<*"O<&!nzZ30Iu!!!!aG+dXk!!!#?%^[/T!!!#PJT_+q!!"-'cu&g`!!$O7g'n#^!.aE$])_m3!0A472ZNgX!3u^o"onW'5^&gVza:>Qrzfn";K!!!!A44%jF!!!"0#MKUe!!%Q95e@$s!!&*$BK#nk!!';,m03Oj!'k_#h#IET!6>YW)ZTjg%0-A.!&G6Vk3eJU*\79k!!"Q@CH(-SMY7n?K*;5T!.Y7Oi!2JKZJ&uP*^)!"YQ+Y'!3i,oT72+.h)F'&?G:eip0[n$!!$Cm=0Gs/mWZFXF6CifX%dqf]BkX]!!!#7&uMP'QJ?n0jiS=k_ZTr>!.ZACqWXp8s8Mb:mbF44E3ufjG';"L,6.]D!2O/!ZZ!4Sr97",P!)&1!!!!iajmFn^\>G1,sD.fVa(-Zm*Ph6!!'ei4S@3&8U'()rqbrdLB[_Y!!(43aX<_Yi!2Kncb@g+o,#1:L$Wd[!!!#7Z>!t/`8VgszbXatq7b_qSPFqb@p4r\K!!"-9',)&UNgo:tC"^B)!!%Ps^%0;r:BQ@DjHEC=jdDBO/Ei'PhN5Do#64`9PEV3F!W]%^d\TUB2rjr=+@9j&B-4lJoUAng+bZY_LPPkmFoq_pTkNiUf?[`oR(c/u+XH_C1?#.e!!$CTZl;=;8M@Fi!!%t4G!cNYl%O9_!.`JDD?qC2^!LWs!&,>F%3^D#(YT;u!(K>f+bYsL6G!6u^h@C?KFj;QBK#nk(_,ke&44eQm03OjUS6KT6:cErh#IF_1pe2g#Y?\V)ZTksL3>oi+mF](!s!l!cu'+4,e_QB!!"\kg'o3YU_h_o!!#JU]-2ihoKp.j!5N8]2hVa*?>)7t!#Q14L(H]"$ge,u!2H7D&4/p6U"o\K?o55063p.9Zl8uFN.uLC#U/GdFoq_pdElb:+XFbJD?'Yj)VPWDKVTF<%0-At6b=LpORtlO!X&<^@52ZNgp%IJl]6IH8/"onXuU"p8H8:$uc!!$C`Zl;=;8M@Fi!!%t4G!cNYl%O9_!.`JDD?qC2^!LWs!&,>F%3^D#(YT;u!(K>f+bYsL6G!6u^h@C?KFj;QBK#nk(ld5'bsT=J[GQ(QNjUJ0R!U3`epZSMM5`f*UEq6Zs7Fi9qp'-4Gc0`c@VZe%jj7lF!&,=t\!suVXt%RG]@L+4VAFUf7GiLT3^joIZ:Xn+M2AOsfK4u]GstTQ5Gq3Mh9s>2$lI\-!!#Jup3(N3cc$UJHF$&.QtfFnJ;:#*.Q?`.F4?h2is+bC-&Hp*r0?hk[-t$+ARbK^l%=geGh#^HNOjU].e;iZV1(JFRcnnuYEj\0iLAHTg3)KEM.L6do,?X)]_!9j^V$?>dLWZ8Sc=n2Y&(aJh,<8iBCc(D#n&:H!XbZl8uFN5jB7k,6[0PqUsq[@?M=^V?O*Mq^;o!Hd;Yi)+ODLBL/fr`+So"8MBf?"l(lbNL9p7V4Wm]&5Fc+V>E,aOE!V(\7Et;CJ_?(8DY<)+o/Dmt>A6ma1lYbC_ERP#lq^26e-U.+XF77U9[,'9:Ds3-`VLIh1?rM^T`ij9knYTMK<)npLR61@[85/*)4^\2rHZ!(iFeef'<=cIndiWh6kj.DM:oms)G:"C"e/u?7lfZUXh]eYrWT!9=M=\no/=u+,Fn_NCGMg,k^bb!MIF*Ide%UTUr9Bh3hK5fC_L!6i*hAbL?g]Q>jmEm;=8p`Sn+t%iU%8dBIEp7)Ws?pThXo(dS#bs.\`q\7fA0X-[6&jh(/Z4Mlr6-mjOd,7I9h?kRh"5'cd9U8Vs=tJh"Pd`2te[mZ!'o;W73][?.Z;V6nI)LM'Tu0IGt+R0:r*.ii*t[dO#a8-R_16o/B`f&PM&jYMT-&O_mam=(e[lO'!?[8Cu2N>r1lN@kXgRr].I]2XgLQpk\CiSgO?J)#@r7.Bakhu;YmG;_>V;BLP_lZYPfoCe%!Q.X,>(_FmD*I/l\A8c#<")UX/ZrIOp8fAe__*bg8!5N8Ah/5-Ar'4+s:nkf3Vp1]ZkpM4$P$V6U9Md\'s,?NZY:'^7/BWV>h\eAR]X]n?W7s]:DK28\U3uB0rUI/iO2RR^qK7!053MSSnK1e/[@4+Q-\CsDdp6Uh>kb'h8\RVjmeuu6E=ZA$g+FuI&e?kTEn@iPaqq,SdhK<0E'OTYg]OW54LWlIG((]1?i)\X!M+s-QPSMQ`U-5kB;B5T:Hq8IU;oL#JOLa\(ZYgi4:SBSPHinraX^2ps>!Bg'n#^7Ut_,F5t!$[&.g@kJC8@J[rBp)E2&[N_=+jtGVr@H45S2f?1o9=O,KY+L17QIoo@hJP6"m2"f)OQUc=Td;/q'`c;!3/kPC\1-KbW`8'WVo)h*6=YnT^C`O]JfeSS[JnqER5[+>rYqWd6B/3*J,HT-=I]^]HRKK%_+gXkl+@GN8Yasnb6aqp!/f=JM-Mr*p@>]f2j]Y,9CCEl@3k;Re9>&r(n^@:5goRW90PgORHkRSFbhCjNu]=.@M_U2^OG5'[NK3)trGL$^Wh5UoU'WrD,h/_Pe>=EF9GO+I\I4JG[HFqk;c?e;@C:1VB9:rt9j.0PeBp2Ihl%;VK(+@b7lR\[Cc4YEnV!UW&N\@KG5O;kDr.uuI#-Jm2ge2uiMl8'd+XHr9Z]?caaRRo'U4+?/*^c@Y(r.Keg-R9r3OopN#@9E/aL-ViG3Yo=EUN*#4Y9!<@.2r#,3X&r7.ZO/O"eA5=$ABpHpl.BK#nk(l`gqNF#p``$BN`4^tQ.GO1`b8h"+HB=;sKXOhAis2KLl_M&/2DLG*GB\iA.C]Be\I1e'-kaRSpY?5[6S@7\L7a^p7S@hAlQANBlm=0L,q?QE!Fe>936k9BXBi:G7-q5t986+KV&%'qdpD1/SM(MZGSfL*i24S?P`lQSi'h>@6,]AM8@X#tmipPJTp!FoTsJKZ?WZC2?V#E=p<64A]5^r[kH0,]BQ-5\OB-f_G#OkkjK//oD2+cm-a1KJ1gE93^g'M=9k&LasWPE&YOQn$g!chHnoVDt/0Y?E\a"QF-D4\`_b9S9N'?:"=g:bncWF1*87^2?YV*>H#SpjI8r\Da@]X=tVB&6^QMm$/Y\qrK2nV?OK5Bs"f%la2-DU*pgK$@uf.sfr;0DBm;Il(Q4-lIWY@pAj0b;/Pk5S%cA+"d)!%u9Y>l?ej&Q@9MoilCL<9]c!(!!(WsfM+<8)qd>5+gE<#2$u,7e*MiK?4=0h0XY\@mf'i(X#uf\>i$sJZUZYr-=l8YRG0TB'Y0o/F_6AOCLZ4QCq4Y/>:*&BAFQo\e,/LThL0Hif`?Ed!fj6c2Z@9C&,GFL,N)'iQ?YU!la0HSr,PCb?+UHcOT`WF92\&"@GX%rKUH\9fS;IVnqqX1/+NE#omkEp;_SLF*fgd,`d01.S<.GNJfcfh4Ksll1sN$\eEP.t;Q=4``=ShWVY=4W6*<(R[RWOSN?bLQm"en4'A)%01AGN88T>>9aDpV"V,BDL6JD@c54>PI%a8\N>/5cg8%+eq0(jmd<:jqM!XQ/G^.8R.,4tm(MkFTNo'RA87LF(V*MHVYP9)VsL.A\&nS-k\4/G2lk.t`W%*$og>j&X&QQ>1=7d;i]H_Z9r?Tr%`*U%`PoQJkb)Y`b-QNT.slKiiU:-A4-D4G1;>6]n0dkQ_qR*cAugM%G+r2EkN((9h,hA9l``6g\d<<,Z*A8c;6DXA>pLp),i<%Z9m#QqC`JpLFG4UQp)BUe>GW7PrOI#Ko]oeroS`]2d^L)GKU5oK$TF8*"'>9FU<;WU9ZIq(4Y"C]BT#S%oOX"Xhitg_/\?7//W?K%r162keAg*Ok[u.jm+XC])kOUHO71iFl#oE,\n8+3\fjVW\m$*I5!N_5A8poIZVEs8(P98%lNa0kFq`58J**W4QdT7scWgT*mTf8kq=5Kp)>!%hT/cm!VIs7uon7E_YqQ7im$Rg#j1/1iksi'\1U'/D;oOn@f;%m_(d2:q'hgV3>=8\tsOE0&8X1:[nQKOt%X2KUS&eO^RYZI7'p%>gM;Jp!*.?em6L(8K@`h[%Ysnm)HcG%Mo#Qn'gB-C$$OiKCq[FqUqW,d:4634`p%@m7Xtt#U;;$YN(j$k[UQe)ZZfn@lN4C0C@LNS]k=]'O;FFoB]^=KUjbOIq2=PA+%4'b_6#ib\nTdQZ)AZV?"L#8r*20?FOIC`[pafWaF`9]eSVEK"Ogu0dH4;>E9D'X`t[S"+3J4_V@dnOp5>&KMVhLFcbB$58\jli_NgakU4%9;g7ZUJO(r_bllq'Yq!dS7VZdS9.U[_[`[/P6cGSnR@q65k\(rieVc!Mc'#)S.OsI],FhEP6_aXgHhO4!^UsNA[=WK64ltNj?V]C(jWrpP40"I'Kc+qedI]mfideToIHAPIjF7HN`u+)-$%^WPkG3R<.*uU/M><-U_8+b]tJuVB^F>g]IrXk*@T>;nbb6hUunUXlp/T+(nkSNGc>L9p/RAR5orciMhZBmpD]fOeeI##Hh3Lig-RMDnA#N\+eQ?rlHCGrI!#@jnX,:&d.1qeAQ#1nmo(Y*S,=n!)="/2@X:CJ?bTH$>rfo]+%I][1QK5p&H?h#K^:)5HFCGOB@b9J:T$FMVO&*SIL4')*qPj;fe5Rk\NPPRlT<]BT6Y=%ch:B\Ze\GOgllRg2uIM<3g=_pg_)r,K[NPJc'PX#^_+k)o.`,qBHA^"Z3-)VoM!G@Qk!$bG>[0Su?>Iq$dl?06(ep1ri,Ho`U;J%"eUCidQ75b(N)n,*A#PlE3hh&e>bs`5Q*q?hA84J/D>@D_:mf'FSl%2%XO\.Uml$dj6kY8237aDk-5*?5Q9?#HY2+k@Id,O-gnS+ejk0OZ__NS#*pR7b;W/o=k&DB-7%a*rq(o(>8oUu/8IFMoDHe@h=Hh71)DL$kV)WMURc:o3I3\?+`e4ePa`?0T)2*+l9p!]\:?64C[:Sq]?>(>a\7km9E)g#rk\IY03PlrU$_?4jqDr'=s*,Lac=Q0-(("2on)Hj'$HRnB]qFaV"r['$gKg6DCrD?.PT]>8*PftS%Q&s\)D,rCuaJeCDZ/7(`ulV;:J7&Db`Dn4$2-(GK\C*7Elq1p&C=J8`=FYa"1C?Umpl_q3rBT-X8.#e\S/iOa29s*8h74u?XnBI&3o<_Bq(J4_U5e'43X,F9LB:h98@c"s"%[UD0W-G!U\i/s!^M;)YiY%$l=cq)SZp*uhAYP+F4oJJXJ6GD[Aj]h0Kq%->IB'-3?S>_MFM9sf!T87+8"[_'kGeq_#G^/t97*ESDB$@'ES$.-BS<^MV(G#PLF0KS/>k#i.]Yh+[[L*PMj5%60bc$o>@:](.Hu)>#X\dL?1UR^&5t?Kg[dDEi>\cMVD_o?Vb!2\\>%@.qUSqm.sOnUQ&@bDooS**bU7^l0lKOICsm:H&3\KIbMe+smaCjb4So2E0ro"S>DS#fGr)V@lr.gTHqXCNjSj+!-Z<6hajQNp7ZLmYIqgOtq*4To*5P=70(Nil5=7;Z!RoZsi*'2'7u?>/3MOnrb,L[*%[Wo2*SA1Dp'hN]&S[N$9!35VS")*W2Oo/!""T+/P]R!-Pt&?q*n><)o#%kP>;d8-l21opQZ)]Inf]W&;G)q6P&:8mdRZ=KUS9PbDb;9es6.`S9,As;%O[5N&d_G5tHhPtYk=$nt.^l,l!2qa&c)=_C5uLeU^`?GB*VJ$r,tb0&>1*i[<#Y#`HIUKj%Ef_42'MM6A$\[GQVXGWKpQl`!0p$b\ZV2k?!c$*GlH.fq9LX"['[Q@\a;Eu`MSmriCg`_J4_'B.&BmW-/APdV3,Y[;Q@*eD?-?X82j-i"LXQ:hc^EV3EI3U`0<41t%@]8sNH*%00?Gksd+u8h9-1!%NtMUQeZQQ#m*.Pt&>^8u^62\cI=R,MacE<,!Z7!'mBCDNn&![$#;,T[H@i8h!bD8N-WGBqu]EPU`f2)ZZfndZ%-sPuc@H5@e+l+,!F=?R3!!!"`,t^,ID?'ZeYthk2!!(#o9q+%42ZNin3"VpUcHa_F)Zg!>:mT@q2huKri4soR)Zg!>:_r:"!!!iX[VXV@h#IETj+)4R!!%rg;7bGqIt-5_!<<*Jb:Bd/,2E5!!98TO!rr=[%o#bm+l2M>[kI0(!!!"`7CiL"!60dBh7Wa`lZ"id!!&ZC>ISL8D?'ZeEBq)9!!(#ok2tffDYEMS)g=XL!!(.ch#IETj28bg!+6e.D?'ZenKCL`*??/?2Zs*\TI_ZH/^b(.!&+mNl/oD*?AlE=!!!"1O_t.!JFR(Fp?g9;!!"\_m+AQfUmjMop;Gbu!!%PT82gMK_"]&.!!!#Z6YgIQ82n/)muG"'!!!"1fsu1%F9;LCMuuqgH1f]hj),,&!'j\_)ZTkGHt[;2PAU@#J8l](2nO8#MRt#3!!$R:\L+,ASND&8h%0PdJ?lialDl)a['mE_h%0PdJ?nOu]fW$Z*BSG_h%0PdJ?nOpZR;Q:mT^>HS)%_D;2MG$Js7.iC&pH\C!!(14mC1u-FS"g*s#TS&!!!"`j_oYG>=^^Qr6PB_G=)?1!6Xm,^]-HmS,)[=a5%:,!._A&s8D[8h>Hi1^PocJ!!!#\$L-[h^\C7QXT/>$.+aYY5$;)o)gfpp.dm!3!!!^Wq!d7)jI/V<;cDK="TSNNmecIfs4;c!f3t"a_JaqoMdLl1p"+2m(B=HnWnr4%m?&sTCu)Z[mZmnS!"@o`kF[7paX;jG\9[A=V_$U'!!&9;PtDJtD8Lc\2E&S27KaBQue>]qs"TSOAc2R@55=MV2_37YYq>Bj1a5%p>!8tk;l-cE"St;,n:VNHDil$]J93#>+s'3=p]6BV2$FtBLlK\6Do?ZIb)ZTl2U4*"5f5JG&G$A2*qXs/]*".qOjS%uq;lS9UhgQMgk5bP_nN20qFA#8"I=6Ok"OYTCYdT^"Xe"EPYJ0kuVk8DVGBX)g!'disB?tJO\om]2ebL*AV3bM7mBtQ++$Y5BgpqNSfOd4mU\$b?q5oo?B5Sc6]6%n(t`$YN7t./$HVVp"*Qkh=1IF^o7(P?iJL'eT4p9=?`pf[/*r'6j6HJXecD.X)?YRPekEq;daLLB7GU.,FUagS="]I=;(+n%K`bi/#4#!s`k)3;`I=O*a+l!.\kYjd0?:c4esCF(a8O,>Pqc]pgs!cE1DY^3hs/_#XN97]O)44.=Bs?G63racg_bMi.#T>ArVhZ2X[a5K>oT!!'h(rpY\-jR.#5rquT%;agir4VMZu>-hhcQX>1ZpHS`Z!(/bpqK2/@kIADt-2QXDrtkp0n=Kal!!$!":I"e7MDgHRNH*!pb'!.-\L?Ccf@OB@F=HWD!rr<.IIk]Bd>]^/Y$HD5_M,KU6q'1ap1tF^64Ag"g].>)66XiHlOghD]lBs*1#UQ\;pdYX/$HSupWrp@!*;!92b/3dcCI$5GA\6RhLGS(.,Z(+F=?PX"98EWhL5.SBU8YC47C+Y(rhs!]6B$ZX/i;el04%O(]aWp7X++FV.^7Yp?gVpc3e(0\om=T^]=Fc9!E0e[V39IgaQ[53d:!s[.^OLa?C[&J"^5I>/!S;7rt/DgF-^^mNEV^GZXEUV3#Er>_&W(Z.l>6"Z5Yr"BRPA;Qpj_ntc<7PoIb10%3dkLDq%grh$PtG64idU'E'r9bBiCCMn(bI[r5j>B/lcuX'3@,*g;G5Xq);'g8LBXpD`^!@iZ;V1!4X1?lO2P)h;qGpLJ9]n-(XHBPrGgUkKfd(bIVf[;VXVK!!)'7^4#mqgj@51/Yb(hcVHLUX(E+E[QC%OZ*6*JQkUSq0p,!YT.qg6>2e&8>oS+b_[etjH`-rF@%<-min;`,0e,!TU!la.JEaIgZG02b9M2+mPG@]_Pq43$d)58qkpj,he!fR(?!'=$:@aAO_W6i5oB1>d=d@8b$n\RLS5h?uqlK%i27&;g(MA5FeY]Ka:"@Hl=?U.pp%7KiAlLFbX\#q')YFaS6?3Jt]P5il\;(t&!62Q'nZJpn)m,P+8CC3dAR9/Zqe"B[Wr1[3iEro,[O/#O$pKSW`g!L+f(k$g!/Qp:NpR%N.lnF03C)E9"OcZ[PHqWTCL.?GTj\uA9pAp<)Wk"SIDe#h".6aW7>2]3p%n:,MZVp(VhG?2u$W[ZIqm[.%?k\chJi4ZG\-=ifAeX=HOR@'?tX*W?eRYgu=aW>=R^#7]_GP3@1c&*PR4_7A_c*S@p&lk.lNi`en3jNM-qBY@e+R[V]!.aV+o]aiPH,ZO9P945ERGXDB@3n$P<`L@"h3T?uX\)$EVg;gHX0jk[i)DaC?/$(lC@7>UpnfS1Pta2olo>6kq(m'71u7+>o3;*`&u&!:;sr0kf>UIR(EI9f5AtkZqo[&VCT;U,XM+k2`RRuQFHK"ad]?cg3qW#Ns8(?W#93^D`iZ"+O+pg3qXs/ECDoFSFL*rl:/kej=([,-P?K#Vdb:0c9UQ^YPcjjC"cj/pBB"m3dEAC&='p6VCq9p;4L03$_1%g=$e?Z1+Y(1g8lhB=^GF"cXn/D!hNbFF2dJ;S2HgXVD4R"7-#;)5$2o8Nr;!i-)uouYXZ,-b1X*EhCtLFFe+chh9ii[tb\cX):5YW-/WieP%Xq#EZ9)6Jaf_Y>dWt((4=r]EM1jb]m*@l/rGeg9\*lS73>3(jmc'^OB!(?UY)_6mIp-QW0N^\06g3]/55?Jl!=&UTEU3;L?OsL2c'pYQehhi/l"8n:FS0K&+8T-@I>e3N$0@OH,B'XA,m@JEC=XJ2$6!)[#Y%$NNF[_?_cD__ao@'FUF8GOn\-EuR!62.Nd`pREFL4q%2aiqTMTV2s'g3d&BM/"N]2WDqAm:cH6+WJun4:B2k14*5U0bD3!._?7^juTmS17@+aW4BlbKRQ7ZY$R4Gj.NHM8#`;nBl,bd;<&q'PM1#699oX1Q"@#JQ[?mVM'ZG$6*G]-mINN5_bEG9grN(>\@5YI-=Cm%8Q(juTnJdS9-n3s@RZ\ZRPi\DV7r!!$uOIJ;QAdDUC=B(A2g5VFsN?S`t6*gAFA4B^+#HN\;5lVbWe?,%TK(%0-Cg>a0-OS2iAT1\n)JS+-#LXf4lJC3+aqP;Q:EEMlV-f>RZj2m'KApXu(ge=EP,f!jn@F8hI!]#JiUmQ30H8fI!bVU%6_@Ah7C+O)?9cW\X-WK.EoIe4,_lZZNRg\'24frB(02!!%t!n%A6eR!UbK1lTRNIW2ltW_,sQ1iZ"X[/'=UF=*@;?]A)cnjr6ARe_f?8bk"pCYH_PT%;c$e>U.]ace)>pX[sJa$%]J!,t;-^OCT:?/:&6#=a,Z:WQ8(Dqj""iZ;V1!4X2bp=a:8^A-^20>AKN'GuV"qfmSZ_$=rj1&q=0&Af\Tg)G)#gpsrD^pnFWkgAUo^UQcN!!$mZa^d0N_ftJ"&U,?7=4XQ^+*r(mcCJqc0)u"-5i."jrFkeLgjrl2puCgkXql2]6D:9%`Z/@)`NMCI-IJoiZ;)"!4Y>VcM6\lm>X1LN+$AES;A#!H?sns*`;t<\8f4[o#kHF^3T>4\0Jj-[W_&lkQ&3(#87(;DJ84YSVu&>hL+q>\5U83ZubEUVusg1k*rjc'*&#MFRAJ_dIh3dc^p+X.uZ3$^\rSp+[H[DMd[@!/C71Rr?m.eV-$]qXs1#T0FEAUo4Q3c^q8BYE,F&R58L8*[1Ra@&/f)59A)1)]BXOHgeYXZUN(J*&nM#.CWp6R\$+B\-E6=!4Xp'/mMMjG&*9mauO8*BJ9j\eHaMI.[6tT>s)#!!'g5amD6J-N(oE*K*"2>Sis%SM.\K;Y2\2VL.dFpYtUc!!$F!?+P,la,V1N$e"No(fF_;p@DdiH_M3f"r+<-8ZY'7:rEk!Gendstream +Gb"-V9@W"oIK+5h447Bi3c:dW=C$VQdeXlKqr,YVne$O,D-?[e5DDFmJ(WOZQN4@(;#`-*+P)>EC"@Gue*Q2n/"&)**O>P5Ls-%!ZdGt+6qg%8GqfNCjn3"#Se&B6!j53:Tr$)1Azzzzzzzzzzzzzzzz!!'h2^&.605Q0hB?c$]+q;mt#I.PTirplD$hd6?`!5SHEp"!>3pq[KD?+Y:Ed\V$JcJ=&"Er,Fm]C*8R0T7BNGiFui?HN(V"98E%QLVg"03l5=H!816k007"fP/$*DrT;3J,]@E:HeC0LEGZ,LB7GU!-\\LU)CrQ.iaP4oCn!!!!mnAZDcN-*Y+IJ;QlZH^"q`Wl7lc[I4(::=@s,iAY"ci;5djok_b!!_;+l`GWNT@U%Z04'&*q<.@PUTr3agpeM::>20^r]nI(!!#:P^An0#Vn(sHHgeXno4Hj51UbDh:HnTfmsQk"Imcc?FmE)bG;K:"!;;QF5gQu^;g6S!3l>aqWO^8Yr/6e[4EisMASG:Puh9`3s8o>q;o8-FoVLBln[Jme!].GY@#Vf(<-i1s8D[F>e#mN@uieH=PgML!!!"Be#T[dR]bZIp=jNK>m4`)4nR)gl'/?`DgVNb!:6.U??miF#\2_V0D<8DIe9DrQFm1rqt%Q#!<<,(4+@%TT-i%#:".=uk/ACPIf2;.#64`(CNSmnXe`hHHM)%0eLpR@9/!uCgjY;Krcm9A"TSN&Cq!dMl;u(G*nH/f?+kPA#roD4hp2*T!<<+MXn:+A:F.;5/#4>4GMdhX\/!>^5G.\j!WW3#gIENX,hfc2Rs/9K7$9j!%mTu2hB*4-!!$i'1M>!h9(L,i.s[Jg^qbj]^6g0`htQaAHiO-H?u%mrbVPuJ4FR'JhXrF=aM%?)/+1W&kK`2f&HMk3^ioLtDgmmt6iQ`,:Zl$-!f*T;PJ?V($[I4u!!!#'"ht$8mu-J9fB_O(aT<,ISJr2sP1^]pAC?"onW')bSV;]

      (+,6*K>,LOEFr1F/2eRE=+'OtI>GgjLH+.?b[MtU=^pR5#Rpd/3:7\t>m98?g)?9a;Co@R[GX/'oqsM(7p#8p"iq6oe#j%O6DYn*YM#lI40>p?[hH;?n^L,0r>q9&r\e1+5"b-$+TB,s]!<<,8`jp*L7T(kAV=L.IDA"6uZ9-bYUIQW5T>dC;A_Aq&Ic/t`(S9u\Y.j:')sqfKM8Rn"]J(mO]d*]g[$'Shd=Kqf(jP@`l3U[A\hOUUB:JrJ;n&AQDbPe^AI?+<1[g8;'a7@RXso26/_Tghf#7fC-`3_cgs'k(H!!!!mFQ((?;(Fj/o[@TT4O\DIb#7H17t,7N@7fc1r@DE1^i$:RNia]DLb'kFCPBEUU9,`t<4cJ"!kdrIEo2URHb'N=K@<$[jHI5@4TGH^fIZ8"]5&iWB;Z]b$,V;J:3pljeNt+a/&#NL#ik.uP-('Pgssj(P&AE:/*YRkNV[sjQ`oF?2eUI.'fYN<0>0q?>NR5$68Lc*_f>:,82msM\g\n-Q=4Bi2#AL`RU^I"haBkqd9F;!6aWO4g/'4j]&#uHdF.^7l-2A$nK.O9qgr!E-JdlC-/!q,CQ8'X3PIIlUKVH3C.4,BU=*g9")l'AE,EK-XdIZJ.hM1((%5UT>4JD\M!9ai-r$4_l1uG7`qlV3*Sh[Vqq.=^-J`qh9Q`B'nThm:4PHOR.*dd6.ESk*:Ho^X+&-)\12TR]#41%)*8P)QdZ`,3-]\'_jmE2^SG72@(NW'c/PR;Ct_BjApd^l0]0-qPOAZ8j1C,J_bBMp#MU%lZdPD^$+WnK!QC,.iQ,YP/;W3M5[#,XTYN/;X$([D_FUj%&1;79&]EhQ@6e`r-g;G@Wq]Y,'!LP+u\:,gS^;a_jpk]A8m_1<+=_,D$+dI3._Xkrg#-kr;VZ<#FHlC`!0:H+3u:RLQ-NbHkB:I38u:Pn)*odpSp<"<9;ISof1qVA8@fPA];kOVA63B<39@i6]Na2!P+RZ!FmDZ`+,jM>=\8)8L0i3'Ts`+V.5lohA5\IaCUg+-a;@siR_HBnR!R(MP!rN>!pcLhAX.?NV&2YpXA4)Q\kXB5#%QiOFsXc$BXP=$Rf'0a.u4,?0KIt]dU0+2h7WULX$"iE!!!!DP"19io#N'A.Q\G?2d4O',)KVIPh%upC_rfh?I?X8c@gnBX'IXj.@l?dSQ7O.h(5g8&PhEG\d(^"4E8a%LuV5hU'66SDpY;+BtR#pDC6g*V\RWO1omFAH:\HlA)nrXWc$8D+`hPNM)H1pfT4`EqK*dT[JkG15nGDO/pldgD:-%jhe&Rcq91:"L3YY7AjX45m9<;'gR0<_55ief2j_C&arCf^,La>hZ,,!X1b\&ZqhB\-Ead&et-!kS;_HnL)h\#-nh*.QIp$cNmTtp%p_SmL=\k0eI^Eu_b>e\:!=tb03h]"ZdFRA=i*t4HZ9@Jkbb`=OqLa1^U!!(qfjH=E/P$"rWd3CWG6l+O0>VH>U8,n".\A=re4c,D[^-3L_t]l%V?X4gPg6\`,7Lih5%B4ik]XK"IZtCYBt)62\XZbfSI%oN@3N^!!(reh07b)U-phsdFGLf[Rdu$Q\3irK.6<;&@-=t0KdRJr347Vk);tqibkNRBltX,"\sElCAbTj9tCTt[lXA5c\+Abk:I%"`o,r+OD`KZWm1m&a,t8rGiK7]%0-A.7QgP2US:/hEokHTb0IQ^-s26CDErie=/CG"ctC3G$p?rjU2RQ)\Y37?'00>8k&gG81NTGp!TN@:1_eNjDf??=LD2iO['e3!?k$a@jsW:bNlSrC8^ih5&4pMhDa;l@b%e6k^SQG-0nO[SFclbMt7T)h'oBCt3W+lOV;18Zi>9gU=V1qu)!#+!:O`!,RbK?[r#bdZ#&rHI%aIeYM%SMH[K1W'eB.#,B86:(s`D#,==([N@P"J%Tu5G.Lgc\"]`Q%Nh6E0?^'D)gR8ZK`/'9IA3Y`hPF=MVOmuiVOu'i,M`XjE++<2n69:5J(8U/p8LVnlb(cBFefCt0QQs9S/iu=8m67o/#F7a*.+ZIm&Eu9NjMNNf(-$QBoVB>aX<\pp[-M3=7cCk!<<+-KDb`C^JEuFgqJ2`/S/R`DF??d/eq>S;,t$"W01DML;]^cG'/33Li*BZX:oH[kI2r,`prVbXZ5KN^("98FPc-kqN7%sD2F3gtblqGmQ1c;,nR8]`1URRiSXA"!.`0pUGe'2pFm5]`&T!b#/:FfrX>1XJoY)R62cge1lGj8n=RkX9*RF.gb,*++N>2KuZApiXE/Er`%>3=XoEIS9TKr%pi@PFJQdIR_0n=9hfbic;@*//\PB)$,TlH0:10U[CRV`Q"%L.&,jmADI"VS7fbB==^Ub9Q-XGP+CT?M1Am'.SW0J1a-*6S\;GP9%BfJqa&@uH<_>&s#/%Z\C[]]^d+"@g4NI;oP$A^52nl5VGgmj!kM[F]TP7Qg\Fj")VZ!!%P+55t=e;(M?d]j%s`*Ch[gXOi^f=2Z-V`"Pr-rQtWG!5KpBJ,[)/(S?$=WP%Ot@#k!=J,e#t;oq';H%0]3!!'6[*dd6.;(c1dF=H\,'pp3`8BGp8!<<*RbqFP9Mc6n4?[k6-l4o]Jm+J]hh)tMoPBhXk!!!#'\Lq1!,`9T3++6!7l4o]/p\eX1ZsWk0f6MjT!!!#'\^FK$=^(kF/'6][4RbVm*u=nW!,T5.n%;S`Nq_CWDr*?&0Z!GJf961erg`^q"TSN&S*ng.?VROjB&?tu,qJlKGMdgoIo$+F!3dL3]'Cu[Dm4e!H0(;:H@PS77sTSV!!!#'*Su))SYV!fiIr*=Y%N:fhtu:)`,5=k,ELpa&HMk3^buc.UaRHV0q!5K$Of/mi.F/P"onW'b;je7go45Mm^_MP]W53YI,TbqP5`D/hKg^@:Bge!!4L45)`JV+L(//!oP&:q54m2hH%.@F!!'7**61VPcLpMTo.Fsd^Wr?0F6_8SI_VNL#6Fl*!8Ho3ji\k(S3DAtNAo_8]?%rT\p3aS1'R%-5Q?#cT*>8q!,T>ZJS=#^N>m/0]%AZ-Zk;9nh07c$qf;`;!.Z*;n+W%-Wa:,He[u8rm#-5Y\L36a2fIQsq\&r0!.^V\iPL;Ee9pf*(\98+Z26qR(,t!I;l;b(bPU-$!!'g;q=N-3n%A8;,iCf_nABMf^Xu[B^%>4.6CRE/X0:Z6ir]8]?tWcYH8R-503u0]rql0I>mOrl4S-cQaUNFUbSfrSH/J&j!!(Yk:HnSb;Lb9%IG4Go]ZXaMNk=bo41Vce]^sEUs8(>mhrt+@!8%Ze,"C8R>?!'!BbRChmuldVn4C!8SYk):]n75`9,S3;)pqXs$CHg]n4Mg&_(HG(F"n:u;H[K$:-^f2N<4S6uffb$a=PR::C5)4RWi.DPtl^i:KUa$^0?bZHT$SURhWr`8$!/nF:qtB'25;!RC\eZ(Tg%k7&7I9\00CKhn!!!"$aetb[qU/"i=dEV97_dhF(DGou\c$L@m+G^KGNR,;]GknXdVF0f_M-1"00f6iK?l^TgjAM'QhLpp!!!",4e@0&q*4i,58EE0mtLfB!!'f,*6/ZUk5>&HGrGj+!!!""o"uRK:o'S0^Ro^;z?mX,_qlE=IQS)Rd]-..S!!'6dVk/3,Umil9Y2nCMz=NTTa5;(C/IJ;QaG=)?1!!$CQO$)uh82o/'?-Bi'zY`ab`ITWD8LE:aimtLfB!!'f,*dmHCO`%o5rU8q*&-)\1!*I@nX&ha$H1]KSo54g6!!!##jM(NZ'C"ZL`uiX>+TMKB!3hV:=0@@$o@-]7jkUIJ!!!"$alU^47Cmd,R:l).#QOi)!3G8@`JYqrr5XnR5Q?,f%06G/!.^?)5(-V1RhoCU+n(-c!!!#79"t2Ymtu5YieoJPh%0Pd!!$+m\(_Y^k2hq:cFY5"!!!#'P&GjIgEPIdo#`J.2Zs*\!!$'jc#8&0Umn"Tlt:T&"98E%!*7P4F@<]cmBtR:D?p4B!!'+]lX0\'82m`erd*E1!<<*"Jk2spXGrGj+!!!""o$spm?i6Wh2]mMD@GVFo!!!"LQ$hNu?P)Jaj,ZFM]-..S!!'6d^\OA6&aAGA:Hln4+TMKB!3hX$qQ%@Dl/pU4rcR',!<<*"J!!"PFgugjKd`q60pUe'W!WW3#!%[lhB0IQg:#;uP!!!"L!!"PFjHEA-](s2Z^6!P+z?mQnCoT;['s6p!d^UtKez/,A\P%n4)*iYT@sG=)?1!!$CQ5QCQ*7Cr7r,qn*jLz.s^/^XSp*O%!!!",-*P)_\k"d;pr58`D?p4B!!'+]`f1q5)ZTjGI2r(GlU!<<*"J<_DEk*t9+B&3st!!!"LQ2Ku]583;D?iTe+o54g6!!!##jJP6@.Hq$:!!'eEn2sLBRr<`@>Br.1zoFgBm!!!#7%S5$mGJF%2]GgnP!!!!LH1Aii7CkL%l;ZUL!<<*"JK=Mf9!!"^r*I$9nGC8+W5Ps,@rplD$[hJfB!!$VVo?B4^EL5\k2mKq=m/P"TSN&!1*A/s7_!R4Rg-,GMI3#baJ4^HS=jMz^bX>OP;mp_/-,tU!!'gc8Y_7N26XdoqYg0G:Cdp8!!%POPDqJ=]^\H.L*(g4!!/R!!!",7@Os-#WMea!!&=nC!e7n^]=E8!,s3Q)/U#>JFiB)s#faK"TSN&?up1*Zq7%o8$nA.!rr<$@%to,2@0Ep!!!"L)7CjF,R?@0!!!!Gb!qjZhg@6Km'70(%KHJ/J.^NQD%ZskzWU5['#m(S:!!%O6DL]#b&9%UL!.[5A)pouu^]=E8!;=tr7@OD\#64`(fL*7eD%Zsk!!!",YO$#28J#h@!!%O4Z.mYQ6,3L$!!%3!msb#CSW>Z8&TCFm,iAY&!!#)P7%4E'HuL1%9nIlt!!!#cUj\.Z#m(S:!!'65p+tDJ#WMea!5Qn4k@g&%huE`W!'>^EP9Ac`!!!"'/WDZ4hKe9J8"0V^#64`(fM^C9oCgpWkFF1_68mbLpu.!R?QoIM!!)U&D5Kl,N]8ft)uos=@)F]AD)MuFddoiA!<<*"2AWtaM]gpX!!!!#!!##'g8l(k#64`(a9BuR3"U$/!!%N_7^P0>"<7CA!8td,D2oP9#64`(2uuF:PmfCG;fJ-,cO!6dp>fbX5Np&P1!!!!!\O(bja#WMea!8(^JRsdZ>!<<,8:*SEY-NXbX!!%0Nd:T!_Du]kDHmEBa?Zu!!(Xq6lX>s!m]>s6"X'?kgumMb=/4\6B4u!!!#O-q#!o'`eO>!!!soBS5CXDu]k1^]=E8^^27>i:mk&!!!"<@Ycp%D?LpZ!!&MhU('j%!=&T)!69t1K9J^=!<<,80d59/j:Q>2!!'6HBs]mMr]JR4-]*?U!!%O,,2+/H"<7CA!3?@O#+L-n!rr=O'bP;e3=%SE!!$+>d0?(pJ-,cOJ0bbDYaGbV!!!!Y&u#gn)$'sB!!!BNg0jLaDu]k<0Gi+@gOaqX!!%NeLc3m<"<7CA!),ef_)/g!rr=O58%h;.gS*7!!%A+BS0SW^]=E8fNU`_llH3*-\s\5#6Z"H!.^V1[))_ahuE`WlnG.Cp'h$-!!$CS&T+bE#WMea!'>pKK7-5)!<<,P)+5EoJ-,cOYQK\>5_=Lg!!'7RLc.L6!=&T)?qV)KJ8k]3!!%PO6aQlk+lE>#!,N7A%58_%#64a3.hHQJ71aD:6kS<#o63:@A4!!!!C6lTMoBu%:FY.Fs!!!!#0,ME-u+Q*5"!,Mq8%Bqkp%KHJomYEd:\e&f\!!%%-ZiSa9J-,cOO:.clE#]-C!!!!HN+`;5*s)oP!5OH57[ol+Drt=3!]u3g!rr=?!f/bMaWTLA!!!uhU()()#WMea!69b+".VIT%KHLEg(A1P]F]#^!!(T+BER=RJ-,cOYSKVG?kX)j!!!""7'ltQ#6>&0!+9M/)dq,+Du]k")L.&%KHLE>XTN=>7b`R!!$URg&Tl]J-,cO0G2\:fL>u`!!%N]6lTN\&T@^M!)c3(@,$NgF8u45'6!pO^n)e)!5!f4!rr>p*74uC,m51f!3iqg2Se`(huEb-4[cXXFqk#_!!)@#U(+?]#WMea?r%>NJ:0\u!<<*]O(\X^%g!4@!8(^J)dqP7Du]mR:*SBlqh]h*!!%0Nd0A69"<7CAYVV(n!!kOa!+6$CD#bge2uiqdWtB1KA.`b\!5OmEg&Ms[^]=E8>DHko?lB(V!!(Xq6lQ-4&T@^M^fDT3!*B@)#64a?32-k4`=[%h!5QSedH8hH+!oV@=<%>H!!$gXU()Y7&9%UL^d^njc+.oYLc,6nMLYd/!&d5'gA&CSGEi;=.qJh.-_GdLpKq_:!+6l\D#gY1)K7<8]L]g=!!"C*BEMYUZ2s-T^\h["J&q]kJ:0_j!H9#H^j4jh#K5LOrI1Ah!rr8hJE_#XN9a+n=1i+*C,2*#V8H^"5!,tVf2?6Jn!=&T)X<#[m5[F^U!!$DdLc,8(7DJp(!,Fm-!O)k92uiqd778'pRtH4n!!&YUp,?!!$C2U()Y?6GNU%!#+`eZuQ&kZ>A8NIF"=k5nJdZj&r8@g/]'Wk".NBD@i86AX]K/RsDL)7#>-d1`\CO-iUS,Y^71EJ-,cO7VlA;&PZ6iICH7/\@q-\9!'\e7;9iA(ZR>.+TBmW3HD*^DP5-Mkd6DKq7B,*6V11o8aB@:0_FpRcH.fX:b(&8J_(6,)#!Q=c9gNK<>KH>S3ae8hi#/6^/:$pX5ugC8df,!;n"U7Fkj6*e(]^ipgFpDs-u&)n/D$gOj#X]u22mRb.]>**Vm2k,>J!s$-.gX9a[;MS6&P9(L?=e<r0:C_fe!XQPA%XGLfJ;.]/::TNY$h/"Ogc"80X!!'6)[Puon_t=.#D5L<+acNiXXY=(W3MMCHolXOnW3p0aNF#QUR,)O(X/0r4?e8N4VOmD_c3cVeTD"k#GXf8<8FGZg*S`GoGt%tBL#k(p=`6u3C83oX65;p[`&9Y;6tV8Vq#"/>,eHX?E8h;Tjq7'GSa%4L?$m\;kYXt>-4aJ\n4C/@e051+:cuN)S0+OWer"/f,HTZhk%9+Z+]!KX'.YMS7q(T[h\b'f7d>p;Mrq'CUU#3W2b)6^YL_/H^/\_\UiW*qMJ.6KCM$"/ujmi,#Z'-+RIS&)T[<0T_SSjI0R5Pf]#699;Z.75K*3LY3dYMBkj[pnX3J@e<*MUoFjI.ns:E(!j9$dGnmtp(dhRco"[3MqV.5ZmRb!0H7uQDl+Tl/$8>Y`88aPnkh*tJ.Z5u3F6)ZS3>bG<*E>XWAW%#%P9qiUuS#8DO_hKlJ7S&kn;O0lktT([V0Y9?8qhsJ3`QO2^2;O'%U,I>N--ER=B\/Kq5KGhDKN;;hI+OFZLpL_h?d\iJ2Mg3a#C!!%3![RZg/"BVo\MFgHX]7W+$S]]$>U$EIF\Y`B6>-4`&dcAiV'Lo+^[N.oX9"O2C;Q>S??+="9e33;6nccO;D]Rl2r^C8\e`i,ZD:J8[AjrKjm5a&HG$T5NTGp!j^jS4N5iqCFIbZ8`kD0@.uJDN<4$J5)G)kX]hDX]J-,ee%bp\j'5#f/Yk;\/['i%u&$;s/SMF,[Qq;iF9N_n.'+K)B@S$EIRgJ!,lW0+K(G3d#X&I1WKPen*\dZOV/cD=E`UH6o1jHl4;_8-t6/='"kaHD$h@,$h0B_ND]1F@TQ)$b^B&"\Y_L)D>/:g-^g]6-Nbg>Y51[;:WJ&r.gB.)ejE8b(G%\$)^EEe:MplR'/PnT5G:OD_AAWn=#mb4`FbDU<((6`6.IUtTsT;kt0ScYOYm4ctYl7e3UB\7Yu=X:4)p6S8(V0E"o.%:l:iSo0k+9O!'u!s$,3g4V`hc='#ts:9K.*(&4e1Oa;noK6(aC4#qSqh-f(W,^7POrCnB1'IM+A]1T/>JGA(uh/gk9_YXe/eILo,*g6'fXh&%+u[)5J%+=l`C.Rdbk>->N9N?;"@*h4YhhJK=Xc]sfeS<0VXrVY&W=j8?'Q:B^6@F);bm7t!e\+F:Ef9(sAH0E`jLDC=)/80\%120/-;:A6c6K/;;F#n3U9IHL`/5=nB]mHLY"Ao9LEI&kQ7&7iOc0CX0.hHY"!8%<6'5cb*5FP2@&S7Y_:_nr2<`3*W^33g/h#rM*XYX0D3[cJ7PNR]nK>lO+04bnOp:QlWWT[Nr@!.r/>,OV104iUh5UIc8%tqVea5#sqATB4pXFNLZr02&mO"P�F-\&ZoCKc?5TMLu>FjtMsSrcAr68jg`YF@8p!-S(I8=%tk%PP>Y24e\d\P1b3J-,eel`T;ZH%mHVOagZ&7%Q"%=@_K(E4l\C,3PGbL(IFNA&SrdY2c*FXmfV\>L7<_KU9)\!b[*l1ja-e^RD*6W*I@7MU!=&UT/[\7!-=0JUn0PNtW<@u6Xhh[=pq\o&Ok6`^h2%Ep>qMEm%9CRaH)/:3QA$lWDA&fc<#VThjY@Qk(!Grm"MK7f:uEC)ZV%.aB52)j>BGJ)o,FE;,p[p[U[hVt5W;*5_'^MCY!PqMMV%B#gLGA-4\Q>'dgW9GWl+go9aaP8\O9808k,ji`ZHt:rOQYEK4Du]mj,&+DEHhQe97%5kden_GYEGI)-.T#B>RAdF<,aYlaN+OIh<\(%9HSheElcaiEnuCYI//N],kM1.m/p4hcoQ6;j/;Vae:0PDJE[/WUA4nKq"4QA&dnYlK%^"b$mYtr4jf%Dj]:dh$-_rMf7+35AJp'QY"K:DW[UEcrltJi.`m`0FQY?[9Du]mj$JB+aqWk?J>sYPX\t2/QP0A+"RRB*9Um)m,MJC+PdiR)LU.?>Tgr\=U]2L&/O,2CWcj/[/^$%SI0Jghff&n\>]L]V:icp1.0\q\hdjRO$M0'&X,n;M4ZXVVic::Sf7m/$[I/f%]?2L&'R>k)WJ("4>g,^25l"5dqZl991!!$iFh2=1"Aj(_31DWKV-*]:-Ks$e\ZB)#hQfZSb:gk8*CS\irmNrc7?euXu10bNWh4>:+Ap,QdSG-_XV.0^)s3PiSZa7pnM,B2,S)oYh4blmRYR[M9f!#ZRU^X;()'>kk\:JQ=]Lt;=X:S)a3Ad?VM#&mn_4r]Z-,L-Q;d*J][gu3D3n-e8#K@K2V48NoB8iFhkS['JlJh%T9Ys4<=JhW#E@?Aq3#6Lj$c>VR2Tmg(NMA?;o'sa0@5>G$81HW/A:1,:Ot1Cf6Rq?;#?Ue$L./e+_+1H61"%eC:5?D2DO9QD6@L8XZU$'=p3D/Wt";5$hB/,qfj]Y1or]Nfh%i-!FoS+:Zq;2L95fIbT%WIC%@88TIC(j=iR'A81jF/PgYFd-NmYBcHQT-fPZc'\rV%f9:G3\Id4C!VenT5F4,;$%iK[^5C<:%rqoM)//hQ)_Y?l9EY.o_[!DUlmig%.>XE]gJS9;9[UnEC?g'&?=B0UnMBp-bDIVHn$[X@JCI2bRDQSO($l!+5orA@)Y!d:;/eN'gg\P6^0MSo2DiJ`;:0OJ_>E$R=\Wll[inSJfn1)C87'+*tRmU!b">b_cbZ\;rnX:>AVgH9A%8aFeUN9K1-8Dq^86a=c*k$Ku6Z8rMtSjf$5_TSH2,[oDZfgeoZEQ0'4L7/\cF'I_tt^#Hut`Ld%G*A0u)>-pEb0GBG%*rHm7B(9u,S<-@dSCV:dYe9Qn(KeTEUr)3Ud>7Pbf#m%ECNS$l$L6t9O0!YIeB>3l#WMeaCm84b2IU2\JWVK;cHQbmbP(M.-/Cud&&MMnO@t?Y`^81C;R3n1`2O*<>\s-#U8!WX*2P'm)d;0[/i[87@Car\=#3Uie&d$CGJ.dWeCr!HWo\i]CG,D+d)FJYElZom]qR8qiV7H3?-A;[C6fAN?$n-%^,)2c`7:qGqq4TR<00/#9'BF;=%Za<73R'dN9uDn.J_PJ\N*;&RWsa*ZR9B,/K/iFP^6q35+$P8[+3/WdGi]9OV8oKZWU3iF0sVK-]#?Vj?nJh>^a6=S@1%Wh[L:%Q$l5$Q6[7o.t+LF-24frcd\G_,1jT^2jTS2ht8$^-JYdHLAlbpQh,foBaP,L4D?[qg6,bHs&22uis>NbALplU&Af!$Fd")ZWtn!Y,21\KKT+^i:LT!!$uTLc,6PHjD\3!1Xn#%0.A,!Y,21-\,k4!%3DL!s$-A,2*%48L!'m!,tVf2?7^e#WMeaX<#[m!:iIl!#WMg'15Igg!1X$$E-T;K!$!M`%0-AUjput:!s&W,NX=);!.Y_P^qn=f_pC4\dkkpjN;j>H#t,^4!-1B@_%pbY>YW\YFY+#m"^`GtNDs^bP#RXA0^Klso<=#n%(hg,Xm;gh.MiEq=]W_bG!cXB1[h3C%FG@[J/f/?YSBQtOk#c=.7Uuff>n=Ch/""c%OJ)*NDU%GB/K0sh&6iA!!((\!G=W"?;PS5C?8(OGOo^qI''=s<_AMhQq+*+f:HmX0^KX:W\lA6?%$Wa=T,8]Hehti;Ce;18T*keDR\A:GD^-0P%8QlWWajD[bt2VJS5,c^kNuill0/nrFJ,A.7Mq)%I'akgS2+#OpEMfiicO4]$YhQ;Mn]'dcu0@Wn"<,-.CAam]o[?Bp,stCFMkmKAo(:&6:iYa54Ug,&qm=%%['PDVU_cYAp:lgiW/VZ+njB'M,W\-n("m9bE]R`]r%*ck9CT-;61_2W@^PFI'p?"giVQ\i`<=k7WPOXU63#H?.!6S7^hZqTrtlJ=u2QM?WRX"8aD7d%47%#ZbXkFRmfs<%aFmW7I`)67Oma%bDO&f3=gTIDR]<15^Q-GgAe2p,G3aO\TiG4n_fXNmi4jj6.iJW"PGD=f*!FN^HoCfa9'5?_%8YU3AX."uR2?%"i;]03ko@f4Dj;:QI5c1(lJ)JV!GHeFCbBu9E;-*.C-!s5aRg2`B4Au$BnN`sJh$Hgd]gYfMK6C2XZ%0[8hCq206F55m.^NO\e./.'j6c'U(44P`EGu7.U&8iN`:*Hkp@nC9&erQ\KKG08k#f&`IlmP=;6`DLjuF>8ZQPoV4(GJmE2-jM0'VG5no/J\PuTDWDH32e^]Q1hN6r?A2X25n?'+ZXjd+@U+fU5]s=Xb#?ZeB]qc.km6b6Pa60dtm''HN[&U.VC?8&F4ZSrj3LLSCVMV<(Q0\+=)4FST=#<>uL9>abh3=D[TE5qs//8mg.:b&0?(4`=L4jP*Yr[^M4E6^5&j-8qk)M(UpDB/sjL^-P&C,ir>ORR+X=p,b[Vm^0G>0C0IA](Y/.(DJ*ttHYt6sC=1i`8RB.ipF%p,d09T$/[C?:`sP/Dge=`gDQT/jVWlaI<76q:AS\V/h*_FN,(!?rc([nu]`1+Rsnp[umWZ_S[lFfDE9_0%iBN4%Q@%Yp?lEC`caa>t`;V@R@+n#_TrtMjMsUQDkrU0,L%+@JF<$7T,fN)G938S57TCMUb#ZC9%Sr/56e1/?+o_1Z3Pp&fipj?jlLV>2?2@Z--O`fd"s6)6]:)7_9FH%]s;g8YCuZQ'O2rP""Nh<'!d;VR;TRRB?+[`Ndq)G*2oim_\&Jlb.&>/[C-WpGFHIf/aarkkLi,]R`TD^A-JT_p=ksmZZU@ZM^p\biW350Rii9#-nk!7`6l+MEaVF4`Wrt!4o.o[e7QPT48C_hN-nKpW-/DCV5MEK#LuL__r)isC11Y58Mn;a&B1Jdo[&mkUYVZD-+/2"#EDd5;8F'-^3)J:+YL)3Q4YXco2?DB`3i.$Ro\?WUHF##;3k1MK7l*UAD)(RS9,L+.dBNcX+b+tAB^Tg'DN4nCYW,n*!Wl>(NF?(ksZU7;3$[.hVq5mCoV[7,l;[5K:T4?Wi]hCIWX>(Sf*[&A>PQEO^K$N_SITM3aL"91igRi_euI;m1)A(7RWeFI*[^l@7Pt$Lc,55i7MmD^knp'W9pB_npB*c#*,YJ`bMh:h8H/Pk]b57OsE:c9u:CfDXJ##Z@_C((GHV<&-".Nci7,N`%;7PrjG)Hs"p.c'QQD\-O/T/BlP3DC19Y/4$^kAs*3Am9/tZo!Qh`VYCF1@O"?UUJum2o%_Cimk.gH#QSq]P;Mi\-JjANsDr^ON5[=3j^[-PdCoHqXiMH@o@L,A4.@:!4LUi"Iu&*IE=]*4!`8R%XZhm1-==1qi&7EDa`%r(0Wh;l#[RlMOQa!UG-]6NZWHAVVZ&HS'?,W=mpIm?D'[a$Z/s%\0;C&`Q_NSD/PWnZj,co?'.:rnKqre?F!9ilJ%31HV`,/pdG!*UkuKd.kFa%0:6Xi+RGM>X5.JJop4HNpGu2Lb6F'XluXIi+M$3#ML!OH:HW@N<$nsKdflo+Gh(q;l5hLsDg2*$u6hOh;afu0(145H].*F2&noD"o"?+%3Yha>HT99o@\HQ[\1l)eD_+nX+]ZhWpV,6o0"4q$o@41Afq)US`hJ=Wt@!@R8Md*#?XOelVk^G`%1kG4S$s)b$*Ie&#PV!cd58u#_ElA_N98`$DBN]mWDAU9'9Q563IV6Knck@AIqWt)n+?UVQVF(Ds[cV2>E255@o7sjMtC3Ft#DC?#3%o8LqCXd.-BT^!EMKq]d2pi'J%r#7d8GC\=Y1d+gXt!7bgZe:\je?#/.ZHp2>-#gmFZeKu+Z0$,70/"(BtAu?SXQu5<4$(U^Zo/:4RX#AQRH`6VM,hbYIk3:C$T8SP]mmZQrFd!$qPsRGM=k@ct\NEu:cosR*c&YAl`N.E-q&)Z4\:+64d09T$h6Y3(-a!*;RGbpFl=Yrq&[8W#gZ3Gi/Yk:0:!7@5cFfa>DA'i5L^1i#biV2b=C>[.5@",'dIlM9[AKE=Y*R+?UE@U:p;@tsKu"'((@<<65;Ff2Lp_'*=1N'ec.ta5#SS:F1[X]/?7;.q]jS.A.clhfV@T)0=,J58=>68R5p/3b+1Hh5G#nP@8,'blUj,#P1MM0)6VC/Z%"d*eNRtNcQ_U#*K6>M5+Q>Kjdg$gm]+MhG7Uh7r3c6oqeAU1Zi!Y!Fj`[A.*5Aj=iijQC?lFJ!!(YsRi-2Ci@7OML:a7BhT.nRIZr7*lno4f:H-B?A#*W=Yi/:UW%mhPXHDc(j/n:_1r&88LioP`F?OAcC`0B#3Kt(2k<+a8dDBI)=ZGf`R#l4^_]J[R6RjMGJuhu%7_RC$RqAjfI0/a@Z"qg/?-D$a<<\1:!!)ABbmZR+CG:IQ=r_sPU(`36C+&g@\Q:;YFm16NRre\6C`H(YVj,JKaRjA+,.#b`L#/M;8*O`EVWSJN_B5pd4L(lBFR5;sO?@U$330dXKnl!J?<=_;73SBbXW).tksLK*baY$9*Xn[73W<9T+Bhuf0W0Btbbrq%ih_S]N2j185r+<%okC8mD@>20*M]5Yl.::4At-Dfp@Mu[AVZmhT?8GQ=c-"Pfi5sU6kbDENc/<.:uVcbc_KFY*[HY<:,epF/N9f-fhJm47Pba+cO\`a>o9a:26s]%=mU/pC,`3%fs`!"eMlUK8mM9QQKHhsBfgX=n!i]T"&X%RLD_REVV!Z8Nal;%e*\+8Wi4ka7_P&Bk??;.g'sBsPg@cM_fI49U"uZWAhQ^k[D&8$(i`4$rDjbk;]GE^\#d!c`T"hh#nG9EabH.:>-s6K36=>$lKPFX#>H#N,[Nhhg3HihGFGrd:9Du(Xd\+/MeWrpS9DKioj5&:B($mkrh^Ygg?-"EhhpFtNK,G&/*U?k;@\!]e#k;t.Ho#GUY2_^[8L.mj[)8!eT.qDe4*>T]#(-tks:r2J7o#b^`M4FJ7AgmC"Pp3:+]#NH"]%[-Dqg!n3abAR!:0.V-)4O97E^c"DJbm&WCdBdL=<*+YRc=Ur,4#?!MYo[u(#OYL[`l".3:Lq"\o@.<72YM*f6pCO1-i?I>cipPa0(`??OU&1n-/Bi--(9(EQIC&1Eg-\7,8]&Kf;mTN7[6k;l80uaB8KtEoj592QkUM]\gB92Y'g!K;abEg6\FU@Kr[$k;W1F^'%`kWWNOXjN_DNpX#A_f4`i6iTH$?d3U2q[3dk9j]4Li\Z"Jh[g4!.@F:0B`QK;#LTN)]>;/(8:,,\^,k_X?cd4uW.euNZ=a>BV#!!%@`!s;<8G(%989Z(gc1CP%f%^<3S0/-)9n/Zjd(:H1rgU+iUTKX()[N0:2m,D)fMV`U@dDiV+#2[ije+!Lg[#B:"D(O9L:!7]3A)mcMT,XXZ%c8#al>T"E&(qH+$&c7fnYCDL2T1Gn`C628P/U59HQ(;N':Y!L5O4]>gY6`un\7>?Q62LuUt3!<<*K!Y2HDbTL^Zg>aDBKru@e`Fsr.XY>$c\ICj3!<<*E#WTU@MAQ"C,tT`3P$V)3I`HSIfC]QqWOKH:EA6k$BTs:))0E`O2?3_b+p&7YDu+o2'l25kX\(;VXSMb9"47;Q!6d^D!VVN?L\4]_:nFlsG,80B3fO<8np0e^2?3_b/eN&oGiB#2%^9kf2sBqZG,O*Z[#JDDMjB4STI%uT&8_CI^u>VZ!&bV?"onWC'`eQT"sVb$!.a/BDua\gU(%)&=9S^1^kNuc!!%Q"&T@a2NbALp!7ljS"!C*%)ZTlB?3D5J\KKT+!.a)p^]ADkLc,55i:mk&!1Xn#%0-AfD?LpZ-\,k4!!#au!=-EFqVZu:Lc,55i5?1G!$%1Zg>$i&>soV3!,s\!2uns@]f#ij+;Y/#!,Ihmg0D:8O_=gs!)=R9#JaMRUWk0YI$46]D#aQD:D%OGXGCNl!!"n^!=-Eg7'sN!hKt);!!$DJ&9%V#JS5,c!&bJk#JcH5D#aRO-6qFK=:ija!!$h!!Y0akhLGQRU(%)&fEqa$!&KFEF61OZU(%)&fF!-'_]PItnju]ioQn1i2f@\^8HIHd,2*lg+oZr#FQq5WIeBbSs1/73!18gt"(3+r"onX>.0:!0/>%0-C\!T=qiCDPPAK52JBgjINVtA``JPV[9rbQlBpJ83hV=7Q&/2!-k(^S8X+9I_I+[]d2E(j`]H;8ZWD-:eCD:tg5I6U`UJ1\80C:1Y!:T)N!6lQ++:pUEe5W'_=!!%Nf8&,/*"47;Q!$FkK!@f2="onY=5emCM(XWEe!$DXM#H1$Y)ZTkg]EgJ^AKfb-!!!^!^]>ngd09RN?qDR#I.4rW"<>5$Lc,55!$riI!+n^-!<<+%('4tR:.-$$!.Ye,huI@VZiL.,=>9je?lh]T!!%OL,2`H55dUOl!%83V%NlS8"onXrN!MCn/4:EW!._@"huN)(BEJ57YXSmX^j73Y!!!##.0:!`5);)s!!)>8J-2l1U(%)&^q(]I!,I@'!rr>*c3QDF=s2N!!!#PU^]DT9BEJ57+Alad\U=4Ym'\'6_2'uL!!(Fb!U$lB?6eA..mpZE!!"\Z!Y2FQ6lQ++!)k'!!%UFD!<<*R+T`.X>XTM2!!(IlhuKSug&M*QQlH,3.)g]8o,j\9!!%QF&TE9[7'q76h04]6!!!!6JUdh:6F6an!2qj[*$?'F"onXr64n0e9LKg"!.]qr^]AOF)ZTkg.R:cMLc,55!*)AhS?lkS&o^[:Lc,55!*/0tK*MN!e0(Ip!!#8a,2f-F(t%KlJ,V7O"onXraq/Mg4#3SUbfl%4%j(cO!6U@QK3COI!<<+u&Hj(Q2kg`]!'j7%i1O6cD#aP9C(LCNeV@f?!!#j%#WSb06lQ++J/Uqn6$4=(!!!!A8\dXR,ME+t!5Lk8600J9bG8IXT7s*MN`4f>%%m>%-lIFE)o)Jaj0TWcT\\>el1+q]a^qn_R=1$A7N/WQ;J(Li/2f@DQrK.Tj!!'RlkN<'S#"/Q3hnFNRr:3Lk2CejS?iTt(!Y3AR][92-1c-JISL8GKU+/Ph0),Rq,"(5B,PrSND&<[93J0!3ENUVb`4?S^6K2If9+HCnH61E`o/NURRaBHiEj(`Fn//Vk1JDmp:8u%KHKZFeB8Emc`kj`Fet_^!!!"\imOYr,1hWOgq#(K8AN'aXBW'Z9he@Lh7Ha91kpa>f(uoW!!'6LYuki>p?eUQG4+.romC'I%[Ln$UQ+]]N>oKQm1LKPn^QmrMuWhX=;fM,oD*d.jn@PXn#cVr'6$c/.FCV/p$1(_*dUA)9KrCD_tAC`!!!"`maeLEqHZ&#NZF<`!s&Y'O;MhVQS)Rt[V_N/Y^H/tBC#Ta!!!!Im`q@bqtBCjXgN_2!P'GP#rj>.HF2(Jn\l:cNVF;m2#mUV+I?ac55!E(,22\^p!(b+aY&@!K7Zc0D02Ctnqm.kCtlDcRr?$'>6t90!-GQRZd1i4XD"DPGB_rZIp[@Z.0LXO10(^/NK0$Vcd%Ok40Do'._?Gr!.\6#6H"d8^*oF_#7hlGSt;6Rc6<1f-YV,7>rQ]YP[+Xs!'j6l_*Kp%3]fEQq;iFG[H'WhJ^1XM7V@+/VP^5$f)bpP:o![OSG2C'A*36M#rjVaZq4m%JK?di^heFl!!!#,i67TFqKRSWf<%[bIUWXXlG449Ng#W26!7VR.Xs`3!jiarF.1$$Q2H84&IemdKYrZpdM!S:F!!$cQ`5I(i=B(DVa$YGH^dt*C#!XFtE[o!7gFk++DkI@u"`AIJDcVZ>3Sd!_t>Gghe9=23(SieI6Q;o*d<4>J\2S(D?Y&nc-Ll^>$4CfsR%F!N0+$8$pZlp!m,MYLhh)r;H)6QX't!!'p4ESt8,bi.-VA0>@4Ua9Alm.1ZJTor4g%UD(1-I-sDBM+48GCB4D8W!<"bhs^"$(/:lCT7(m+G#icHj[?n`-IioLFJ2N%I/4n1kb7I[s'Bk#!!!"aD/O6oYHL_YY+Bt)WG60&)@/=QTj"4NDId9GHj4f^g3*#L:"coS!!#uuq>'i;JH=0"g:)"XSND%+Qa9]u30hdF2LkPG?`Gd5kh^^Y:%:f&m'4U.VP[nU!WW3sOcCGD-5oj1p[5_;l^$m@eeS:aEb._0hgYGsp7\iok3(q)qtn@qnaXXAT:VX?>n-i75_XL`rV&`Zb3/BP\8alZ/aIt<;i,67g?<-]B7"uP`M`9pB:cY`s1[i?!!!!K`[@C++rX.P[2IY'.lZT:.;+tBVW1\kKa)*qaJ:4YC1kK??S=/!!&nibr=NrgU9h`SM"0W+M/CL#WUsZ6lWnu?W5?AGO*h^]mKL2&*`WEa(gLo\/@@%Ys`A%Bj$I,.eTj!!)h,B4mibp0#d.lL+(P&WL$>mLaE6,MEhd3]a8o9f4pk.D$>q!!&ETe,@6%?PH50!s]=?!.#dk*4^k`90.P"\G-d,h7IlGC.`Y$!!!#I$k3Zn-n5B$7i%gn.H]gV`@_dqji8Hmr6CipZHE7K!0H-PpYOA;BXr-CL?r(n!!-a2&T(-!2`K@CgFGJ8:I"e7q[*<'e=-!lc\mP)p?gUEZ'al].L#od4V;Os9C*r:D8bU@`#KA4A=!Au!3f3BObc2`Cc!&q>t]kpi2dH`c-"hPF(bOPr?C0U>rOu40=r2(!.ZqNq=/@upTZb:g/:!<<+%'u/Y0Irfu&eh,R_<&4U$aq/F@JN,VrGi8gG*dH\$-eQN@!2+@d66Yd.?T/+XjW`E[S,;sK5P*)TN4]5m!0um=J,d,ob]pg-AkZAe"J!mPD:[D4o^r.]qo(Q]luQc5"98FejmqNV,1hX:N6!uaCT/lgS5Ko8UbGi^3e%":lrjAh!(ph(<;s]=+3:U]((kMC,MG\!S/d-sT^5h^!!&O1Api8c*9Qir'4!!%QF):KcmpY9g`Me!"pS4lmgW4^`m^2q5.i(FEVi5*4a`6E/6ELFnFlpESf?_J,f05[-Urr!!#pRJ,arE7.L)#2fIQ;>mp5%ja]_*0seF$\O2,^M6f]J:XACoXR's-!!&2@E*+ql3]]=)>e)&j()0`;!Jb>uIWt8;mHWsLkE)$;I[R0+!!%OSd:h%)q=;]^A_2M[Lk$-I#&>UE&8`o9eC9^HNVr;8Yj>Nn!'orJrql.+HKZO"-96ST]^/fuP54p!,N*t@br;s"`u6/U<0h=OY3@;IcTdb%$NL1*/]Of]U4k/1(+`[4#99I4jneVu:W6IJgU:u!rqF0=f)bpPC5&p-B5__WK*MotQ\1R%epp,pWH9@0,N@MLnA>e:pu@F@CB4D8eLu!o:0N\nXni)/dAAs\"&bXtIfK<&hmmeuFtE[oTZXNSB/QZcJ4$]C)TEs\h;-o]mbO(4%KHL->%c-N@F`XQ;]PmoBN&L1hS"9o^]AG`H1Aii=Tes0!3Cmhs8DE_J6u@EX>6%^E/6DPl)1/&g:_jB39RsQp=llg!<<,M-5qki]j?c?'8]+ff7NRogjhc!WFFb5pYGQ1gI8n$G_B9-_3q#,Zp[:!iO2g$[_1qtT34Ml&pmIm7FiCI+d"*26/%3I11k3",-/\W]I$!!'fl)=t-to?9"sZa6s\_)a<#^`hF])KAF\$k.r5d:85#`ZdAB!+9A+lVTJdp?gTn4ZtC/(9B%6R/HHk&'Yu2Lc2YTG'5"b7_lQTjbiD8ZOgtKSifTOWD,VVpuBYj42oleBP9q[/H>dD149&nf,i2'?[aH9(cD^OBI3/H>dd>TQ"PE;8p2d8]>ol!\9F'XH!bLM2;a`0mX;]3Cf5*e!ZX(;U"O!1?6%mj>Ch#\)6#"oT&7\:o/`#RIcp1YBLYJF$G>!.]Ispr>Vk_7AHPqlT3g:bgNXi"0b0/=.tpnp!:V4Eg#>.G;*/!!&G$s8I@njTpugAClD?ZUOtNBS.$ZJ,[)E8+_KC(M),!!!)*Tl)1.smFoORGZ_5V#99HIU+mdZVQsu'"Y4)u+kg<]k3(og*'#4gBtJTX(5J+?EW?*TqO*hBlfmXGc%&0:%R#(+5^#/dC`e)tdHUfDd0?ZGgMahI3,h-Qft+c+`4sJJ#64b*PLj,f9f)hkJ,JiKGON\W"k@"G!Jb?@EY6@?cCI&9q5pj(O03Di_kHZ>2b60`m@p\qi8+-l``_;lGO_;KaVl!+;pVo?B37*?F-ss2>d]aK>]s8ImdJ6UR[Q*23nncH+(_37iF*Jd)KM'nnAB2E"D2#mWV`n]A)TgOU&ru(.%8AHD&@,9VLF_ga>h;[eq_@&$@cd0ce#64agJNj,*JHH.Eru(,ODnmOM@%CT6E^cTec0tDMXp"e*XOc(2BD)(m7B9=0/Z:[4!Jb=j.6d_&;gf"\cThG7FtE[o@-,,tiX9`ln*&tCrb';]"IsDEq1`Pb=l+Ge*W9MnjiS=k[/^2WQ+2/5lLsW"`'j(LC]=7iU5O6J,]7Vg#W26JE7B0mmeFE6sRmlHga,N[/d1VoBs6Z&oAc7h7IkQJ,F;+7JSaK>[H!%_ttA40\4+*lq04*U,6Xp"f!kJIfpe>H.?k0I@!;XTCZ&XhSEQS4>M_AVm!W_@?4$3=p5Q!g;/\AU*(_-`MJ-k&CF_ga>h;Vmlp?Yr8[/ba19he@Lfs=2=1LGP"7G5'K!.[N+h7In#i'D@N*ZQ/a>mgX3L2Xj*mgW48=?*Bn*f_s-V9esS!.+f!*"nR.)ZMr!!&D/WDf_5V7Eq=oChS+Z>0Jk$M27VD_T'/!!">XM+$u-d]Qrl0"Vl!W'#-BF3H<b\f8,?ja>gJ@!J!e]$j-J089at)m7/4C6sPaJT0=j=('(:LhgYIi[Vacd@/p9-.IQ*.hqd*?0#[_erN^2>J80&kgc9e;JVtX`>kO\ZEdnd8b!fsLe[:uuTO]_V'7%u\X!Vk8Df]+tCF:)>Qie-Fob_dV6+!!#j'mbPMLpu@En$gt90a(3d'!7bmrA42r(4$#F*?G.i#('"?7dn;@-,d+T%4nm`a#7k@s!W^beIX_:lkFWQggrCI_CjLD2Fu]O&<1D@7:Q+Q*,EFtXl`\(GXp"g*hjliQ*e!ZXET0-%jG4('ZHE7KTR-P-TE!F0OneqQmq()P!4Cgun%N:g:B1C;lfQH]4*Ks%Qe0PIqb2/b!)QmY,sEth^+?l3!!"M*bfl#0PJB9K]Hb$(!2r?_&tb4Io#R@`G@];,!'k,miue:LY,[6e*F^>r!0H4>rVHg0*"]%-_hSaY!!`LS'g$L!N4>JIh7K#A"9:]]ldr=aFEEtLE@:5;K4jb>mgWtFnFlp#2fI]Y[$qkhgaXB-c@n7fWeqlCB4F2gq.ck!B:&Z/D"[@]dBnR:I"gMgt\Fd=o\O1Mubo>J-,d:.F+PM0!(k;\g^ln-B^"_5n.B]%frTdg%f)bq#a;BGKjN%qd[/^277e?6CLCYKX#HQ"M"TYc[CY,_+gU9hHZp4KX6eSjI!+7kV^]2$X8p5B$hS"8;FtE]EV28G%cJ'Q'Lnl9-('">.jO0kt*fm4oUOu2b!)sNCci*CS+2<=*^?f#'!&0+6IedR,Y$L&`GlIVdfsLe[QJp,[41f_*ApH-3!-A_m4F$SQB>p/+Puh:S>mgX?ftRI^lecEjpu2\7[/^1Lfr7oJ`&2Q7rr)TZh32+P!+7,0H062rS[+l;r`OCr!!#Q2l-^kt61!h!Lr\P]CB4F:d-U,c'2L_6cKBrm*L`UmQX(($!"p-dD8P89lrjAhX)d7?NK0#/ED$8hK+DME!W^#^Hgot0F3cusY(K)/6aCJ.!0k=?++L@f&5@@2!2.p,X4nURE.CMJ!MF2?nA5Rmh#>f%:X.//afYdIJ9>noaq]uXZYeI*ldr>`Xp"f%2RdV^hRR^*#WRB#5^"^Z!3Ct?l01\[I8jJKrqm^m]N8[F`?B^8n;MG'6o0/H>dPTl]DBM+c\MO$#0\4Y=8]!5P&5HhZs"4aY-#rge8iO^/=p!,H.dE`/M_o^_+eZ>0I@XJ%;^r:5%M:A=g>W\cXnVm#c:o&NBq[/^3Xgfn^1--l=I4ndNH^\oLk('"?Wm!o#tJ&Gnn"<=9F"b9cqn(t`Br8A0I4S":fs3%PK!.]+dp=jLS[-?f<\8gP`lrjAh!!$D\If&NAcH]1IDF1%YlrjAh!!$EghK\&i&T(j!i<@ngz^rh)ueQ3sKm+f/Cp?gV?CB4D8!.YfqHhZsb]mE2Z$&?F(CB4D8!.^?`mn#Tgpos*Oz@-+-1W/*>nG3haF'!c9R!!!"L(&I=,ht29DrqE,KR7nqj4eq$7gun2QVaB]LRP^^K;VBu*'P4=68L?r*'&'#i5(%eF)tpM1&t:\Q@YDlZ%P56762kcnkh=GaX1@cd>[sknoi/hNu?Ok'CorjHcJiY9/f*5n3bkf$NQGeU`2b-CfHY@OfaBO2C[)UP_.N3QODY&ccfQBjorJh)W=rM$Zobc6M#XF.E^J0&*?/ZpUB9l@^V<6B#(VSCU`3a87@^*I\W7oi@%E:@D?-&n\2%6VeLTZL7@=I-14SBl9kcgm3]C3!%r2=KP[.n4&cXf;e!tc30^/f-N-#0;r-Y1U7;3BIWZI:3P,T.jVOgNX;i`UNSSII1B\C%0e#)9P/^;#?Xeoq.:tof<4JgT5eORVR*UAi^AiV72Qr8gu@R4DVj0]Bp6&/N"5WG1U4#G$0=f=1[6Na':k\bI@ZqNfP'-A[)YSR@sZYF/0bq$(nYX9oblAn:=%MTkYU\0&#.Fr^1@jOSo/p#1!><;gbWo572bRKZ52cF/F+0X"t%:sget%D:7fORZ"RpYA0m@7J\E(O;s?konedo0J(UV.@]C+=Yb[p8>4YHmqsn(1I*EUBEXUX#(,jRn1_cLdB^]$"%AL;&QI;ar;kn2H,;I0cPdS?i3b9e*ST^4N0&G;@Y1.#I54?+f7D1d2KDLJDY+Ad\5fFIcUXh?-W-`Yc;N%!0QG2/!l9_'O-,)29=9h3uUf+[)8^@l`bVl,#/n5:H`e[QA?#uom*YYIKc-8se[r,p:]LAgSW;gh37@>-01ELHCl;>mF9m'[LCu3[I7Brd=da>09ke7(J,)gV"dBffhFAfkRpr(`Ph`)?B2ep7\OubV41t?m*[VfsRCtQ*the&G5fZnQ=gM/;6)>-NEI^c:Z1r\e1b=YFVQE=@LVZ0%U%604_IhF5mDGH#2WUGi19Pg?/BZPgboVqDAP8M4^"^,>4FLp/45m.e-CLbg_Mn&&[Cu/nu#E>U.pHfRgV]5oHj_uk,@cpM<8W&fT/:C]CY5rCZ>l*--fTn)26'=fO5HT>YZ2oAkGHIIB6--/W8C'ZGGhM!=LOc6C2VT1W)IKdfUOkI\%0GD"p!ta\S"5n+,5/;qFo<%D;H/n3o_2.FLEasg+#"ED"`kP5t:fVCiUr'?&^Be"1dUCM5fQJhhdb`;U=h4:n*Dc'CFHu:7t<&EFr7@Q*I$:An7TWe!$Bn;XH59S"6N7YW/>cSVZPO!DWB-F^)*c4JU<_,6$i[Z>h5OVD=3'F8DLW8oeD"Y(0?"FECJ/X_+=1([/cM`4fd6TrG]Lo5&.RLgo>d6dD'`_JKJ\Zi*i9R9d@1T&a&I;kZsk3HO4%=h%_RM"^5T;$grVZ)d-$\\5mf1,.CS32uDA6oWjH:4'%Qo%^S2O3_4$32q-1Ymle*1of+2Q:?RQF_c1r:?d)EC-h_ReedSZu';jF*^btlKbP,feQW@A^>%cRj%G?kZHC?2l(AMMY/hG57\L#=I%BY,r20iYhnZ/Y]m*L#*):076n%NE,ZoOQ%G8'@XcMJshJ3pQi9i>hNcfk>$@PCFc>jI+<)aD`jMJ%8Gu+@WG@rN+[d;SOAZG:/'phP`6GiZtE&"lo+op6?:P7qSPMieg%TakttZVH..a-`^H:&1X@O2dI^d_<0Uq8,=.2hfeXC>2f5>3oLKjX&MZU@B7t/'GE*uM]1;0g)G/gWd$\-29O0&4]ofBKhb@uL/M>Rb7ZUBnFCT-.PIbp\c]U.2QV'4%3$V(BS<8!2t$;lI,fN>(")W0IeujYt`?-UbD1b)G/?dJ4cTm4J:ba_.E8^PbN$4_TB6cD:COJDVCbRkhN1DN<'#PaI@'89W6FO`O3=4g@D*[,;j#oJkVoTDb6!9T/oi(_;Hhj`o?7&'2%Q!99l)dN#n^bN#iFNSfI-e\'/`M,)iEr,=$f*dQ*H>=&SNF.9_(JM0*7_bYVi>=c0*rod`O*qHc8NJnoH=Q(f]Th'COU:8p\MPf!1',tU#q.SZUYiu:c4-bUg?Q^-'EGNq`=JT7N(+W3/f.A=JXA\$8/!30/XFHb3e\_Nk7#.A)q1(bJJ9fJPfU:L#?A[/%$[7h(;XM32L4_*0oNH#VSk'0\hVX$99c>G1$CfCoT7ID?U^@=#I<=#^J\k-M3)tbR^LatpNq883KTA2dd'Bo]dAQ^eEF>bR(1ZL8[j_ct;Q#,b(Z#"+)2_M6g,Ag-X)uqC]:q@7IVXOD!CT17$[UupKNU[g[D0:-54Hn0V1-&>YDkj,BS"+RVRSGg$8=58-/b_#keIY)o(K&C-;LBAkV"VLLZ`>91I*D.ULdaY!op!kPs%0L:S/Eb_WM6:=^t)7;/fIT2KdJc\6@.kqT1]g$,AuZA[)Lh0:]9-tA[7/>O3bQ).,h0pbp6#FDN%o%X@X.!+h#*>IG`rhh^3bo*qA]oSmlc:!6h<:\hTL;;c3udYPb9'go4lc!4dubS)iR5M)(QhU%A?VVL30_,ZCb?W9<-pJbJ)>57sHVMCicCQ^'_oC=5iE[*OK@oPDW4/XEumlC]DFRH`g,Hu5r3UNK":?`1ombJWQF.Us"19K1'm&":(n4\[4SlXMUq37VX[+.5gfX+b:]a)9"FYVqV4H83%%W/!K5dacNh$=ZM8P=-uS7tQsTki>GC?W)`f8Yj`9hn0QYt%40=\LGbd.al(o/$s+e&R1!!`d2JhSXX+&TukEuOn%)$[Q],_=huIrJoi5ZNmAQc2f*B;N"#J.`^:EekX]B7CZg4Z6aM*/6l58[e0Z#.h1mnk^'go'WJ3D*mQ8*0aHE&s1u?g9]hK:(7*cWgI2C5W3A<3'.`5PP!)QujdS3X:`b';L\4A>H!DSl6HP3(;0r0((Zu!gqiYqk_=%^%9#"18WXsJ9'`/.UEdSt1C@*^/mE\b6=D@FWo<]b]Jca^9&F!?%i<;L?-@'N@A1''gNJo1=IiJ?f*9@(*[Og9eq1XWZlZ`9*IdZ)TkRT)2P'RCS&5-NJ7S90E]hh%p_-^.^MfS4Jic-VacR<(,OB2Y-GbIFaTPa;RSl`#-?d1)(22/W%9Q::!79cGX3T$:3]Ki>QBD%;4G2f8)!pGa^MjCll*j@jA1?4Hs7XqK2X;Z/42embW%*TB4:Q/(^F;X0^V:;S6H>B4XddZ%!K/Xr%CfM]YnSoJ?+7Mq!,1i;J.15++I'2!RckiKO?V"Q`qUTog'D8r$oMY<:+QAq*gft0:URWP;?1RW(L$n-7V^5C]Z;1)T:A"s.GhCq!:1@Ie=oIT5L.:2[8:NPZ9*1oh]D&p\iJ(bon!)TY(;p!D]`9:lJ4;?5`T,,(_9[+j'-Xu(tU!W"6FI[X)!2.!%6u+S8;M1c#kNjjr#-_Rg?tNN)A5q$4K+9[9T=!.E0e`lc#D!!!",2+13lkQtDAn*2EJ_"_GdjSN[I)?9a;J;VnoSPeZUeGGf6Q9A9f,XaoPH6T6De[FO5I/j6I!322?/O3O`#%_D@ng;,?dT5WN(^W':n`f("[VSd'PKR(j"onW'5]rGb-7t]J[qrFq9N:'SoE1:K`Nh1!=EC#g'k4::!!!"l7ZE'JPEY$"5L,LPFL/fXoPE>?'I&d^FV!/T7$3dlp:[PQ)_0so67tH>r9\BC&e7U55k+PECi3=pos*O!!!bu]C3HIf9)UcG%a!7"@lp:[P=RbUVYDUNPhu<=.fnBD+.`lJ0]uK.9!+7_bpr>V;jlsP[qnH\Y!W]/EHhQe:I5dnRc%uZ@qkF[5V]+=s-AbbJaO2Qb4kg?02$NU5MgY&oG`C9'O2r9X%#QUMQ]`.cnikk6U`uiJW"9WAlm]dgW*!!)T:#DZ&L:Ju1X/em:+TMN'pZ\TJMG$s!J%t>:!!$X*fk6q69?+$9^+-`+!!)T%IJ^I_<'Bm#6el8R!%@9kGMa.%N;)4Z?ZmRm!#24>&\WSfZKsmX!2_Y.0HdM7s7jW!A/>:I5XBnqb?r3mLGGUqZ`o4)q+\l04=9#QOit3-k'?PC*E3MO9cu@#u]8TH\d_q<-b+p!QJdaY!\r?rEVEnqjkS]_U]ZZ3p[5?jSc1hA"SC7j!.YFs-hcP7!"1i_"4M`!P+N!!'6Vq>'jRgUE*af(AUAlrjAhB(WnE+,J+Yace)`(BOTPdLI<\-n\`]J,d4K63%!tFQUdbELAe7qR#TU!!$-T9/!t(/mB,E>``4s!5OOgSN8&L'5,X_Q!FXq!)*44?iD6%>JX]DFs-hc1\1GAi\L&O7j#i*"9dfY54!qQN!.YrX3,q8i-I/5J0=qbq!1%fui^Ik?3ca;;lp:[PB(YfODi;fW`ufd^]+=rBQDRFb]mp'2fnBD+b_U?C!2q#]F)t[4r;=4o=o\Q"6b39u<0g#rI8jI^IfB.UfnBD+,l=eFqQJeA9QmZ@!9E\";br7.e?s)DA/>:IOK?B*UPBuF`<$%$a5Opk`C9(?V+\*%!<>[!F6ChHdZ)lE("WrK`<$%$a3gYP=jRf^+G<')UMH`Oa3E_hQXps@!'hUGNuo1iWNi]_fnBD+,b(?qh6h%MP0rFFB:kGp.0'ADSN_I*>cQ)>3?u-I!.]HlUSC8hDtKZOq;msKb6.ef5Q*d!GM[U8Fs-hcq0r5.[p?Uhj\7\nLL.1Yd%Nh4CBOX1T[,k&>[4W7oVXpq/d)/^$6O]g;3@?s^A[b0f`_EW:f&te'j%H&?[c.$+TML@R%9f(]mFt[B_1-]rSOo]!s#!]==bdO=>.>VK'Yf(!+p6Em+JJf2iP6I!*"UnIeZ36Y^1YCAJYCJ0T3Pen+qFGb]Mn9m"R-*jC)Q7?W&URlTErsT!7WdP%8_%82a@tN)ZZgJU`7,1I[AB1C%D6qG.iE:U`0<4AY^9\jGYWg$ITAK\cI=b7_/Uom[7^ZnT[0MH>53^F2\*mo[6CHGNmO%,J4^<6I=fSV!NC.a[e>j:s2BgJGJm3p+G$H,9FX5)+]p.!2-c_D?0:?Gk#85mMk[HO`'1K\Elfgq+*FE:s2Bg5Xfqol)24$Dr-#>s7"8lhiqCk?j`\K!2sJ))k\Ahl+YPpaG:d#8%J_O>"6((.`J)KLN5oBkkCnC.0^3V)ZZgJU`5t)I/W`i\_T4@IpTg7"6((.`dl*=)pB?If/_+fl["6((.a.G05G&g1q"t1r82gNFb=FQWA]^B'mFns`Z7?"#KldCs[>]20<1H=2%dBa,?@VorfsLgW6b3;K>"6(P`JkfqrW8J,Z"(h7BT=0!0"Vm,_:6u!m'F*WF9;NNN-&!UX&lL=$32L>Vk8F$IC<1=D?->qO`!dbVjig2OWOQ'3WAs>5Efsb!+nL-.>=@2!eGmg[gN2[843d4%040P82m@fh#K\PU`0;a8W[g^6+R)I,"OWm!0\P]P_*uZ!(Due!!"?3\g[gI"osN'h#IFKJojoudL?0j6+R'sQiuZN'VlZJ."ZOC!&+`-9drUl!)Ng_"or$DUmk8DD?-=8dL?2l,Y0kj+Pd#_&Yp?GJ4Yi?8jU#hJ0INC!!&3*h3sJO!=BilBQLI!#$#N5W[>K49J\0sSRil8Mg7U7/?+1`-Kf`e'%l9QiGX(QQK;_6Ir5R#"1Af)fYW2l.YQ!'h-lRk!HZ-^Y@k-pq,,:fn8gJbM=bY+7oAMIleK=\D?Oi[lZY;?1CkcNlC;NXbpT8?_(1oUA_5pP`,r=\g[gI"osN'h,G9L=K6e@QY8>O\(VJbYj=-gUDD:;Lc1:]1$u)Ict-,gM:A$Y*ffL"F]t%u[(kr2\;0+%;Qo5^89aK?p#AcbP"<'1A_Zq`@Z#c!2'VG9pIH]NRacU)B8%37[m\ge/PO1IV4'Q;%5Ja<-5\X7cUUVKC23!,$$7XW,JV'/]hm1K)P*,=iHW6(*H]s$iVrPVLP!?E6EuE]X$liUR6U/$MOut9NRgXn92sPMY=)h#LMtgSBo)CB9&I@h5H^h'CL^R,[sDjo%r\N%8%jW_YQgf82pj%Gd%B,=VG?)^o=CLOi?ar/_dh);?a%AH5F:3lFp1:W3PNk]cUp.T=Mi\UGIUiDG.Yq+n+X4:U/t_[.H37%7(uoPPK;n8L;.1!4gekCRX<:=QpoXIN'o4VXi;Tl`fB_Ij&TB"mKW8X''SOZDmsf>/!9%'A*[Oj@HOt%UX=VJldtl>VH3?i-poX2$6e5iJoh(p7?DDe9VHPQR]u5ZY\:1De/OAcZ>O_=dS6dsVH?9[;4R=aVorXgYReA3p%GCLO?D(%ZmrN(`Who,YulutA9dX7^dbnL:aZrXF%:j_EB3D]QWn:WB[)DsQ1Yd$78pbR@6D>6CN-mk%]@KJDps1Kn>8[J)sKgDh4jn0]tr^ZT#1g\%dV![0M=1LN?u8,LTOlF]6aKW3k>$%fm+_P93CSqe=NonDPt1]^"qX^(\ZFr7XJkc40_Yp/N'r,0\2d5]J#G%`F?5W/B3.CBP^^B@]V*K@kuMmGa<[-?n0%g(.B'Q3r!gMXblgTU&]>m".L3""76Q.#tUVb\go2;,;MS02QR'potC'ugFUtpAFKd:(2K[GH27\Z`/Da-Pe]8G>OCF8[qbB8e`Ci%gRMG^9/Z)l%iANaV:FsLD/X?7\;du!=.LUU+lMSK7X_T]`."qH]I]'rLWaP6Dd5h/iXf1mAW-hec)Q$C>s=n4lh.elgT?HMo1rm9^Gicg-'==-oKS;1q`E;,'2(Jj1h[iA6*I%,U>@trC@6gd$![8\DnVi[Cstp68p\3Yj"#5V=h?>[2a4RZ#5g1f=B^]fd,X(R)se)'\m)j;qq4M!MDeo6fO4Tn4[i5135#*kr2oWMpiX&i'5K1=M4:./p[3X_;5X"\h&bcP*P-7`W(cU&?p%k3o]eH>hn>s=Y]hXq1q<0bAO^S_h2$Q,h2R7nC<&g'M9N+B=+_+nVK-Z]mAl-.I9"ubBeTEr@Tc5\V'+Ro5S9f].T9k8:XMAu\Jc]D_;(p%O`'HB/e]=*s"=2_,LJ?TBPg^kJ;/P^."m_#['leUlUeL,;Ue18YuF=>*ME%>F1Xt`)]usARmQS:1$b9.*D2VFQ&!gaOVtilF>N(&%Om=e+c9mH0@'Q!H?GhUQ+ULhJ94]sdL?0j6+X$N7:m8?7,lqAGI;_IhIoL!(A>(sDG"`R"iIV5raE"6bNnipGPga`If7TFhM&sgnT6!4qGNa&\C&K5W99`@/Q_Ia,Jo;Vfrt/:AG2K,;*<[5?gM"H0D=/d;le5T[]U!4/ES"6lhB=KDKC6S9d8Um5@`c%QebPM\;dZA05=OC3N_O$1o7)h?\+QIc'[lL'Lm16\hlm$XZ5.Dq@i^0W@\p?2*nf&"mH3kMBL_SRGp"hMq5C[O!0SW!1\KDN-.\"S;^G=a,.n>ImZRi/\`hPW@:KkOR\i9ZAYdg:Eei3./I4FAllK+l`Sl<]bGGViGU=P)sS*N-%u*dL?0j6+X$N`R@O*rO%%(",q>#A3b]ZoK'V)N&bntlRd"@UV4@kl#*o)k_OODU;Z!/trI`l2BQ??cokdA.bDV?o8*\>%LNR?.K]`iZ_72`3kh&$Bc!2'VG9pI1+cEtf=ooeR:/%sWK@kl,kDN#_g--kI#4l*&4O^9k#EtOq]0/M.iesaOVoO4Pbia!h19K1r71o)Lr)t_kLS_a.WqqDM(RAN2YTde(*C\?p=OIfuYNU$>Z4fMl7dAt%I=S`INh3])EVA,gF!%nV(&/R2:h8WZ-lI[`W^P9&E=@Y6?^5[asBfhiUH\J\LXi0#*Gt"4Udb(QIVTd]nGU6hI;W7s\2QMc%$$%RqYg)1FY[^,;/1i-,ImRpH5B/*7HsP,,@c:<1ccV8fNPo[`c0eN8m8-RqV+Jt1>([qNs,Sp@:/JB/?gfi_2?^$fSrp%l9;SJ]":j)C'lF7Mq%2)I0t0QIJbeqE[f!$:e2[TG58LNM&G,l5`/:.%^2eGOj.0\r?!/_oT<11D`7^V4plE)[oXl%_KO6!hoQBH+ug/=MCRlb\t/mEaK=>V&Y?%JB>6#DAr/!$bkh'BA?i#Nf<\%/e"Nih0dhJ'.Uf&snL6=_Z/OOhqq)\[/nL:lnV#*K=0)cgS9l2,$VRM='!Cq7TA(4o&!ls8FoC9PbLPm#\It#egE2A"h!T?pgDq<[^JMe1ip&Im@8"TV!%("C.7N?qRs95prBd"`Q=qDem-YU'NRCN\O_A_,BC38qH\:k=@RGK-s'abQ**08Z)pGrp,E(FG/m`^s43pll9+nGEd63e<=$u+$YJ?;l2ZNiA+Pi9V3mp`4]u=lqg$NtQO0t\/\?36fU;R*`r6F29egT?6\l1PO],N>a5]81p)iI)td=j#tlI0gVX@4O6(E1cj#p7@$Ps$>68At0+(lMWh@YnZ=af45i]=HX5.C)CKd(?n;ZrC6,,d&*I=n!O=.oV'MGUttXNBV;:uRrqZ%dA>7LE7q':!cp=#A@M)Bmo:5V45:PbM@1NAcil3b`"iJXJDHc<@"_A+IVo?fTRq0"8Za3d7M`VC&3&Ah9D7l5b&WH5l6H`DWnbWp48>]A;>pf!3&/@kQ-)[r5,";7E=M5_O/$h5h4:%04m5dS20j3Se@IZ>7qa0AQ4Gg:4k7^X)'^mdd>5;^N,__dcGc]?P5;3p_K*QdH5%`"Ti%6!(\EmVpls2Xt!g.^ncX;p#?>$(kmkGPh"s%n,EZ^0\FhA[C&p%_K<&6F>Ad(=1O]+)nW6p#g?U*PK2\kh'idInF=a&O.9E7c!H;ipdMjh&8AOVI2Zt37+.,&qU2s&^0!'HZ[FMS?>RCO@D@&+/C3tdbr>$;k#W+JKrHG3qQ^o"$&sriD[G4WN%6JadWM3BG*jgXR7iO-'.(3pYU@,iS?;2nHY)LK<\jM6G$Kk%fir!rt"]dS20j2;MqiVQ"?#X32&e9ZEn]D-!hMa`1OLE,7LL\S$>n0X525n!IS/^R2F@d1Qt&\&S(Ec9t;dk&5)WN[U45XM<37!mWU:5tl^0@,C(PW%Gp`pfQglN-*P;[:u\2=gB+(lY8u/9,]H:>,2p(rah!leKrlG\W=l!@1b@UUo,+JDJdI056kX(M`-m!5oo@@>-%pF'tJd[2/`l8FZ?Di`h9fGCJ8#Z:"8*>D_*3QktBsrC0\D\SZt<7=I7:uO(L""T!`[/G;s'2GN@GM71".LZ:`R&.4EkfQ&AqUM>bcaYcn60]KI]PF(IMk_n7G4'6fCg5@IH03>Hm8WhR`M:/b@[a*a0pmX2epeUlPjbYW41Grf(t*9db:?>@Z+D+`q%Atd0A4Vi=9)*g[2:,>`'iXdM'm]6u5`<DF#,GdCRY:5@$[eo&N+>E%9Ds6Oi;Z)I\,Dc*$b7[Mk0hrlc&i6TL`H&:^l3r@Ip=AjXIrMus3_5\#Caa-Y3rF>h/C9B?Uct.+*6%)2eir`UlOffIJJSFWu@tUr>hl8ImGDWf%?JfHOFaa=5ZTc"/PV<((?"&Z1C,'%cP'V7/X!P(scU^!sDOY=TMgog%)k8OI[D>&nXuH'MX'`fqL/e&_dG!IBG.4p3gRS,tMO+lJY@O3\D!IRkD\-j#73#]QQUAEhQAe20^0^`.eZ(d-qBi)KVPNXT.qp%5,Mb2T;_tB"X?diM::o!:(,*LKmCDi9Fc3V/n'iGPs+u'O3Ln*ol4U]l,JlOR_[@&'UGauPC6?kG^Moih"VZ'ke(Tljm-8tQC$g(jejlAWODY$u-:,3l72;U;[<:bJn9M]2T<9JdC@Rnm>iT1%8MD^4!)RYb6=VdRo$I/_i%`X7_7!=f+JPd/o3!Wp>'(Mmn[[Lr?WV8`KGX62^McUY[FrHK5m.T#HYhlu;hS+4gs#\csDDVj-83E$fQ/cUUN+qM*XeiZ-8foKoU`7"[@@tHi5GCc^0;'CmC4BK9TeWVqe&HPoQOUCX&fF2a+;1l%VE05_QT'eXW2k(%M*DBhl1;5+K+:2k7eEl))fj;8jETdoL7!I#?3?2neKn7G6_bNUQmq)9m!0g2UUos2i]!ac"K5jr-qT'J1u&C,P6&Ts^Nc+Z?(n*:S;,G$gq]o!d*"Gl*;oUS5VnWrnue(oUP0+\R)2THpPHXYY2q4I%>ATRl*OD!J"?C\g^&_Ump.Z2^6Ij#KINq(q;Hr[<@FiDFto,*/u,@ZJ`3TLU,_hL2'bNVFD5Gbq=-68)\QCfDjr->ZeTGe?[PHop#=du?(J\%gHsapTblDA)44Cf,PV;TG.`Qo\!R*L:@q*6kD;+3f-`M1`7neXuA4(L%$.FL+G-2ZQ[t82mBDb&jEM#3,Kp&@Dt5DFnHcR?iXF)rM]r-X=Ao`L8seR8.Ui`YMaU`RBh#j(!(AVAloOD,bu8/7(aZ:H(bDF`;cX9jG@n.qjkf.J->`-=`1_TQb5hfdT)?jGpiJ59RA[LY_e#C+Ss!*->fkQ1T0.]Q_cqHY;uoPToj()AKfj5..Jlg.=5*Y`k)hZURJE!)Uj02l3J4F;%LVGB@JGGJ,E\,RUER'#uaS5[/fiV]1%n[j#f:o,ok&[&MMKHF0$R[6@o][dI)&@BiJ5#lp6eeh\N+X:`ki!7WdP9dsg&h&+DU;UUPJpQ!tKbe;?&>j4`4:24C@bk\>t0P@u=1[ZUI$sEkKUIUg6CDh3*Xj$(ZNR:/_G?XRO.&28g*%l6G42'>IceeW@[WUF#s1eS9r$++P(l8YG+Ul:3P!D?C#XmrGJ7&Z^!Dl&`,(Kh3E1e=F903EH$urk(0bMa,&\D'a)iC.$<771k5PCF%K[Fs$7RfHhmQM>r+5FMpkVn,RHo#a*]!3XbF9Am$hfJ60Y:f:WUon6rpKm.\^jB?;OdDE1b^3YY^V$%RoS!ZV4ejpBGrJHu'P`Qd1%2!782gOQSrmo\ki-]Z[ldaAG@PGDZoD!-.!h<8XOM$KWB*0]:FX/db[?AqW`;EO*Ta6HFTH+HSGCV-PZYN"gdBKojt\5:te<_Ss2X7s0[@CiEUHAKSYNg:1H>.P:H/YmTMW@cap4BI[B;%)<9efYJeU!#:l_e=DSUerQB!h*+A_c=fVar`H!088Y374kmB!P5>K^09SibEk>J%b3Emm`=MZYkRDIPmKBaE7Om7g0@D8h.WR]HKDMc67,j9Q7LKh-=7*MPPXos@t.r>'$Oudj`7V..`WoXJ^CY!\LI;u4Pc51gXc!$PiPplT:IMK$i*+DQ-P,>`KLaCeaAf^r[@W;hs.3RL:&/rhR`\Oe%[[6]#e8Rp!5hMS'Oj.J(WG%3g"NiGHId)D?'YX6+V'1446hRZ2S.-cnt(A8\,KcnkdR0aO*gl0OE'bA)T\T>X-*jdZ"gaQBbjRebL.?Km1t)BU]3]-fc/f0kj?X[dfWsBVlTqn+j$\^#V#KF=c(4Th9*`DJE>sNSY1Z2;Z+?B@&W>Vpe@7gWM#cRr#DfZoT_8;L_Ta!Je'ldsseqDr$fUgMVH\`j4Ta+k)R]+e:goZm"6*!'GjTj$`X,u`i'IpNLpnVV>fDaVl-5!Wq.J/)#WG-i^M0-#35AJD%ikGqWKB_H!X\sYZZ5&L%eW$2[A($nTFKg9k_LBFq^e*_7qC+V34-*Y%Q`6qSsrE(1S]/Tg1W-0]#ph?SA3'Q/).B12hQ/ao6fMhHbBV!?7gR-V-/rcj&_=co3EA%>e,6+<4?idD:P7l3W5UZ"RZ-Wh4nL:$'UIP&#BT&PkSO(0.!-FrK?m_-jc83ILSY!MGHpirnTN!88RO!.)3gs#1Mtf.-HBOA`Jum)k0>PY++cIjG`D=Jd@,OR2P:ji38b*6V']A;!faf?>&RBJR'%N*S@@G=C:GLE!*.YYVFQ3Mg"p!@"h#Mc4.4"aa^Cp'%$*0i6L'()>*P14OH8*I#pH!RBXd^Z5`MfUUU]3%!X4/Vep.&egDT!->N>XS'k3aL#Z<1$,rT\no&V%/9B1t8;Z//OI*WR3G\oE=D!s!2"DLb`bS$?d(%eRo("`9<*XOJRQ\O81fO2k2@pt3N\edJjL/EB/$qWlU@`Zr;l_>G]NmF.'OdhE6@jjI\m::a\r[i#ujWi!4boQ2Lql8]\_KI5Nj?)/De82gOq#3c=ogN55KX=:tOR6`1?qt1]VKN+qJ"@Yb>^3O`&\5ru%;JUHa',jHP&IH37BI)gDVP`X1'&!45&'!S/s\W2l3fZk^\Lof;n=cI5Kb>t?P]Sa#%4m?f-D[59UO]pISs,\1Atg>8FE,Mg-s82j;*D?-==dLEF8kpA'$+,[*tB#O(0'?1t-X0kcG;FZ^8=OE.7Q^fU+$;Cm6A49,U*NSqO'GC8g,H6hgeVV+mC#dV;Tc0Ic+r9:(K@]EUZ__C_hmBEokm$!1\oE=D!s!2"DLf-cG8$#"AV>n1Ju--$/\MA]CM,7$%_7Mk_PlrV=Z*YujQ[$JP>jg-J+:WoitEe46TsgS`'f$i*K1:e[^,q8n;=!e[JH4=dtPF>f[>(@m/GEAE^s*)A&8:ng0^4=9:shEe_mJoh(pD3/Xc[9YR?>H%eCj0jk"-O+pEU\37p)%G,r7I;3tXf'--31s6V9lWNGOo@aT?T;5%g`Eh#Wstut,/r1U;]`A^R$C%MJTm2nS06Vf5T?L<@*SGXad$Z#BMr3i=bq_4fi1WJODMJY)eg5%.7-NDgoWn2OA#8R59P`nPI"Xc"Ae=;&>Q/"H>A+mgZ)4LFYe_VST#u2boHP!2'eL%<.XJb13S,J)mo#@R80KL0p2qKj;>mD43F_/6?o']_M@WjE%_dc(#]I;RMh8($(?)V5!5L9/ip$Ed;Z2>WsNQAj-[>CIgBZODY&k%FP[c^`uB/:69>nTFKnTFKnTFKnTFKnTFKI!EpZ&!5NnM\cM_bF9Am:\cI?SN-#0s&a9L5KldCslP\pkn0??jcjK"A!7isS%H'aP)k[qo%03JBU`7+182idaU`0;9cU^!F+-CGk<_,.LYb$tp!'_[`!3M?#!+7r7h#Mml\cGtXh#P6:7_/WuLi`a+6Fm2Joo*tpp^u`pBSCO1!:(Ne#4Nkc%F>IH"p!41dLG,)U`5sAdL?2XB;?K^O%;2p/#4*a=O0MsJ00nkJ6#3"!3i&WD?)mFh#OR=D?+'-,M`?K7(ND&Om2#FKaU*K!3ACLqU(?p2h:@YDLbbu\cDf4B5V(7!3?Un#&*,5rp.=:"7+U#J,J?9hgYIKs8:4!4qYS)DI8;%X:4=t!+>-P`J`^onbM@?]6tk'!'!EY!GN2GN2W(k26mao5Q[G0jP!9fr&r5X:lp)5*(qsXRamr"aK!!'$UM2>fYRM.XTi=CG%p6bs^3pkS)A+=fVrRYCug].>eUKfF\s(Y=,8u.qk[HdIR!WY8U?6e0/+:]GTpq,G^cL''`!+Bst5l^nR[$c=eJ,!s^p2=i@,65M"D._[]eFOd^nK2Y@+92CR5PW&*XC'5o0knkA!J#=\fWeq`"ZGK8il=:_Z.l/\!.^&9rplE,YNFpGr:8#ah**n#J=D#XMdP,^\G>N1J*Zg-!lF:8`)Z[Z4c*M?L\7K:-!!#.Lo]aiEJA[-6r\kl:^f]^L@Mq_Hl!:J\TN/c_R@ci-0p*TuB(G8rPX82PNO52u9W;bptrl4>TSUen4rTdhj&:g>Oq4I\,q]@3dH_5`[RG4>FJ/@%QFj'0%SUemo]#eQjrsGE-H@#FCU`7+eA@hTk^\qBG5:ll=q!5]oCXN[]9dAJ!]m@'jTRh1eGaqGd[r:/IqpPW9$5)u'2o%AJ)o)sJ#4OV#%:DN6!@6)&?q%X-4H=LcR#l1cM0&i%O_t/[,M`>HU`2QCh#LKO)o1K)2h25!#*;A7J/.;Qn2Si*?p_F*,gm-07CiL^NcYAjODY&TF9>X-D?,_Bh#Jdt)aGV'!*5m7^uIsEJ-kHEO@V<\($Pql3787D6Fm1CdLBSQ\cFpRF9@nlD?,N8"'C\'!08A\!%+K\5U,"aHU`2QCh#LKO)o1K)2h25!#*;A7J/.;Qn2Si*?p_F*,gm-07CiL^NcYAjODY&TF9>X-D?,_Bh#Jdt)aGV'!*5m7^uIsEJ-kHEO@V<\($Pql3787D6Fm1CdLBSQ\cFpRF9@nlD?,N8"'C\'!08A\!%+K\5U,"aHU`2QCh#LKO)o1K)2h25!#*;A7J/.;Qn2Si*?p_F*,[[I=pgdggJ].>.XdGDuWRbg@9IUm>j\fTr>/f=hLM)`e!0?_i]#g7Rj5W]Y(U%(Y>ea%q/%+U96m=NoD-Y?d'@I=4q)@,cS.^XT'aK%"V3W'epR3M^Pe`si@5U./mSeXKO_t/[o5D33'P`NRn)WIc0c6k>b48l4nXTMc.O'=DFS@6"Rn,Jg[,05*W`2bQ6'6%?0mB7AF89j!/=DNP#A]UHc9HVDUr$q&&rl&fOj62&.nDULa/uCa,Hc7(@p/WFAA@,jFQ<5*_qdsukE0W^W=.-K5Z)RD_*VqV@\HgSlh;i:b"$P1?-utj,p*Y?rm>";\cFpr$e!:%81>8$D(].[dSbtEQ>;Ur+u\(\aerB+q%[oDg>Vn)Zh$^HJCGV(VD:0up?C@$H+-#48N-X^V@1gH4JZX4n6O5nCPV5BcH[Zj!#"P9qcs/W-J\[k)UaW>O`!4=F9>)"-f&<+[6u4(BZR%`qT-$CVC6prbTs<7/D"XYM4F?X16JLNhV8j.qT5m2h,>6rIB_^q"Kn<\0QZlKG_mIuLSpg*%3R[/_R>RnQ@3J@'dRc$6Cg/ML![hCC3/ok&TO=Ash:;?N&3;Ce1\_sg&c>D,75%0gTJqbPp(`2@H[E'g(*H"(`hpFWB=9spF/RN(]Qh-O>_H3`L$]/#T?88koc'[:Y5ET:J,gOoW#AQ:CP]1=l2[!pFt4BDmn_gt(dj_mgO_I0CR'O_End3K*"q;m\:Z+3bVP&Ae!0U<2=,"b,69Si:uoS4V"KiHO-:5Mp:*NjlI#F4Ll,T;Sp#D_DhKrB5'`VNLEQ\sX%7_`1<7mbU*1_^OG&#uP]GWh8d=sPjC%+U^=$24Yr7j!d[C6aajg$iNDO#E,>0GY\s+,n@_c,P).fR6,u!Bb8uUmp<3UjD.N/mcP>,@i;^O[!B0W>P=g.'(03UX[&\l$J)cU:o_80eAcl4mWSdmEE\S=hFf6`j1"6-'.59,Xd_s5(GY<$O?Ed/Sg#*?D=h5Hr[_r69>RUt),nWBgS@b,X"&m#Y3q_@Uq=DV5(o$pp:?iTP0Q-2\T8\1mnL4d=[l8:1V0$caFhJ_a\c]tND_t?23IA;J&\:#L"=MEA0'WY`k7'58:..,&MQPs3_R]\r18o6PZY%G[TpT31>\cFpr$dq`pW$E!cegjg>,%2K_et4KsdnNQ]+;Jb[Q(l9[8lkpFWda!(2XJuNo9BhHBH2Z))Ai^,CY=\o1uVX,'n']e@,Bc'QA<`_Z5k7UMHpapjWe44UKH^/@+X$?.DWE^keNVR/=D'RI<+E^2cYnaLtdABpT&LL+--)gNc$jMu#BgR3SL=IrAoT<=Bg8]6Ah<5sU\T+*;29*#'[e5]imuR;SeX1Te[;>^RBRb`a=5=SBf31APWi,&@U`7,0\ffh9U?uW(N[1aTNOT[Wj#QoI/O0:.Z.>rsEZfKIh5&6R<7UHjL;fFV3+9LO4to7VqF@*g)B>ebQV4;hp%0aD?,N8@l3!9^2%1;(ea&"1nZ*=JQ73odZc77XUfjZLL1*U"n=_"/uCe-B]k#)\`q`[Pna.XG#*$((JcsDXqo]-AR6@2m%/PGGAL+A"l+o(bFiWU`2SaJoi5%m43@]K8nW`)pqLNND:DOOnOK,alWu-2C;)):ad5skRE61JGRepD_M_XR#Hb>DC<$^7s$k#s+jDZ#0Q%:g!4iN/8p`/#/n\/?C0#`I6-Y$Y>WRig3dtLlkM"=0$@32$7OS8FoA"1D7M=bZ\Q#n3NX8$V41`bfbn@1)A2_3VNVL?#fTBZ<2]`'(e\fhP!ACE.*8_bV.e?Liablp[MmJb4HqhQn\J$N45n5FE$Wj@+H^QC[#9b:JZK=Q?1As:V.qTKbNBelfj(2"4J5FBcfMJ/cV+)(_iN/U5GBB^'6YQY^3#Vht1pSq:RI=C9Mjbf=n5r9n):2dL@a^nDjT0(pA["PP%L"1<TlL$+:ns[@E9YHe,:P$iRD?,_Bh+5PhP-ShYW5N`lfpABAY=bqn4P(_3/9gL.ifADR(_8.)l7*lEQn4.G]=M:=\o;c!^;@[kQVLaRFWn/gN/,sn_**g#"%]4,WDK]#,"WX`MQ-H[6_B"[X'SVm5(ndf5T`e``lH(K\Q)sI.ZJ!qQ.DE+$obo2M?K3Mh/]'S>e/FuEoocm>0J7O.i[^H['c.FWTYqJ7;A]&kfE)o1K)2c;2*?gV3[+VhDgTeQdBlcTPm9gr3IFKm_^*`'hs[3kog/:6d2#7ROUX.u@lebh[d9!+K*(p?jaEUcYuCZVGF/Y9/g#;TW=SQn4>PD)W&l,<5mj4$b%o%>?LU`2QCh:.nFdSqT()Eu:90>[Je8i?)0bF^YiLR2sF8LL:P67u=f-71Ko@O`7=lB*T-k-L8j@Nf),VUAU-=Yd&O5h3V4P=#Di'95M-Z]dt#_ed%()5!/JejKR3Xgg3]dWbd2O7_S@'89mMS^"&G8blO!:8g7[%>FrKjHqncnXsBkN*JS!fK@7"01\$Pa,t7SL+Ng%]W#G.ek%ZX4\/(ih3pR6m'WV>4C`%a*6:gl$[H`?.qWht=CNK$)c=Y@'plWRPcnCQW2/FjKj7+&17?5f)XF;4@_KcVU@sr!S2e4/\G11jg7Q\bLb!'u=4#Mo;m]r238CpX4%M;\7(T?8,)dM*ApP0i9<^-j,q?Ou9hqrs$YhblRH2nDUJ&'&a!TOl%6\=UN`khk[h;IoT88k8WufGboL7;PEiQ"jNutVe2eca*GLbUJ\VP>0GT>s;[(M%/'Cq>fN_)%`?6=M:510i(J-:)iE+sC\cu5,hQ1[jaX9.[;MPXH9iPtA$X-e,p92-E]m4Y#?frFs:cUsuV@p8L4dL@=]DR(!s#oHU0a.sRj^BC#CmWIj=S:!bYQO/)R8kGMV^N;on1I9CI7^4R^uIsEKBhZ-D:2$d9U^h;`LY^`[i;U-)6L%^`nTRs20ED\?rIOB"dF6g@bP-E>H/0oVZOR1VH]q;,,Wc>;O^N,26S1Z!0Vi\c2(Bf=0oGb/t4HRF4Gg3(h]B:*s#4ObTVOM_,rO'Of1]8Lq;D04G(U4QRQU7r.YD1"_^=<7,m4Y$M.qYpCbAZGedL@=]D?)38%H)6%)o.,K"%]4,^l!49GT>rP0Ho6P''TV),2E5?8%J^p82l&e\cJm'2h8r2D?(?u%3UdN!%ZJ,i,PP3^k?e38>I3?MKArF*9dY]+l*,2km"@9h#JKd\cGJq2h4<-!N\gNJB*di!#*ci+H^OA/(+mbEMOPhKQI;eU`7+,F9?b-klrgbh#J)P#-]<-!$4YA!DH$CJ4-sLX@P:#a,t6>'@I=4O_t.LdLG,SU`7+&F9>(0)o.>Q"*bgM"u%4V!#"N#YThm'*_3dB9Lq*m7(NE#82l(>O_t.4dL@=]D?)38%H)6%)o.,K"%]4,^l!49GT>rP0Ho6P''TV),2E5?8%J^p82l&e\cJm'2h8r2D?(?u%3UdN!%ZJ,i,PP3^k?e38>I3?MKArF*9dY]+l*,2km"@9h#JKd\cGJq2h4<-!N\gNJB*di!#*ci+H^OA/(+mbEMOPhKQI;eU`7+,F9?b-klrgbh#J)P#-]<-!$4YA!DH$CJ4-sLX@P:#a,t6>'@I=4O_t.LdLG,SU`7+&F9>(0)o.>Q"*bgM"u%4V!#"N#YThm'*_3dB9Lq*m7(NE#82l(>O_t.4dL@=]D?)38%H)6%)o.,K"%]4,^l!49GT>rP0Ho6P''TV),2E5?8%J^p82l&e\cJm'2h8r2D?(?u%3UdN!%ZJ,i,PP3^k?e38>I3?MKArF*9dY]+l*,2km"@9h#JKd\cGJq2h4<-!N\gNJB*di!#*ci+H^OA/(+mbEMOPhKQI;e1>Q3HFQlj,)Fuf;a2rEJ)KK_F=o_n!e"?W(F9?p>82gOM82l'3a`IX#KQI=op:%fM!H1N,e#,s3qY9*3h*)G#IJrijDZ9eB@.3R`mdJs1KKu*GN2GN2GN26M!0;KmXg]9V]S'e8Nk'SP!.`@?rUndWqq^^%\Nmh%hKs.4/-#\-bg"Bm:H/=G:]KMLq#UOWkHFmMYEljkaPVI:`>r&f*M29mskB7DP&-R!)7q=e"=)KC9CMc\UBJU,Gl[p#-a++Olu<+-n?U$P`BX3o5;HQUf]*/9+R-4NAB2ro;lAD7,6._0EU21-j+(lVg].=rZa7"7"_(nK_S40>IQhkYV+_@EPq0.Fo^j[:O_jJ[m(&$Q=RSKr'-Sgs7]HLU*s.d?MO#FU`4E59K3"700[-3GFP,3*Z''Y.F-s):Je!3H_'Lc/_FG!=4h,"gI8s+#&''Y.F-u4r_cq1#PMP=?)dS3deh,"es/^b(hM0)*^PUf26kt7`jMP@1@\j7^+DCCB_V+DU:tN)iC@p.FLpl,2H'0AM)=>3f.rG;3WS"]'2h_)iCAk7Ckc4O_uS)Ehu;c?&_h)fu_WL8$(tMKI=482h5O=c7BS:*SLj']hrLDRpJFL8$)3O`&N;U`52c>Ue)q=!HHs'P/lE%6B>f6W''u7Cq_UU`52cX@9]d-]r9pMK5Oa2dM8^6W')U82o`XdLAWBXq^,t/!4]tMR"#^#+\/nTd\'K,2I>edLAWBefrqCP=RVH7CcWAS\B@?o(AKTT1imTFOQNQSo//@oCkI]03pf7%M\0)/,;?a9NC8@LLNV:V-#qo/1Q]$(0@6ZhqmAhflj[Hc%!.qnAi-^*h"[W>sB3N.oTao4`rQfA,kmc0=ZHdXbq4Qmbmh],Pu&j^Vo102VJX99<4UFUZ)J>"3S2ib&6#7Sp8g1pD#pGj8-lBW\0)lMFHGD/:$BQ#iZi#eU1B8pg"o!]h!')^gnoN":7%67koNk]>t!bfFeH2bC".IL&tfoPj=IPS$_FG'#>pN4l.jKbNPLjt8`#,`L:CgKuIM&U7GmJJIhf2&nd7Cm25C!qun,2JoUI%>.e()Ah;V%o!@-N(`,S&aFc6;[gD#.lcBZfUj8p#[7Y`_`HMD\hT7/,;6^'LWo>\Pr'fU(0rqd&%[&j<]DQ;aXU"%U(Li7/VrS2hjT2R>)%HL/=r?$lGEqM(U,]5XW]P0i_k4h>.e;>$;Dmi6iEEp7c2qj/J;uLspEP`=@Cqpn%Hk#1O)@fOi3jE48j_T(Ofl*Mf$%&?e*%q`7Z1D0C6RC2QqMg2J`4dm&h,gVCVI'h&J)o.tJj,]^/Z(Vk#U"5d!,?hr):nqh51`?2:kjTq.([7R]>K5?qH,\r/Jr/M)AJel+`Pk@]+LO6F(1D!4*pZnT8^\YF2pS5E'I;$-"nGAlq!c8Q3/4#oO?q5I6W?%gkGk/)Mh7H$qJmF@0g#a0=EKlgIfk8W,r2&fO;oT[5u'e,eGlUMUAbF-f&`dq"QMg9>m3*i-/]'GIB3K!iVFPk[/_I_a.ccj^Rh.?V$LtDIHWrpq?2DR.b"LhNP^[hK&33W&'W+l"*2lns"V@IE#*H4I9Lq7uk"#9>Hh#ZV8q:*uDh_X-Z_QfZ7s*ImGO`&N;^.pV65PduL[cmbDX^?BiCC].#hnXDD!R^\tp%BtKdj*F>Ro#/dmd4YH%FH+&M];A;XD!YUF7GO9&)T.6^e9^loHrc`F,TeZGf>!QHdiS(J7rXEL:5?mS'obY(Vebpi*Mnb.*A%*5@M-CX3.Bs<>2JuCosm+m"6rLgco>_V=hC.0>/IpI/K*cB7I8H_.QII]MDDM*?MKj\eRBuKXOpKb^+)0NXrI:*XMfdF5I%>.EYK^kSBp=TCd<=pis&WkTS@8%5VrHl&oc)PE7+s5]`.>&]++*d6T&'8JL7[/+\Sj`ORN?ciUG:]jl"4J!Vl*=M2LQ*Q*83?Y\SpZ0#V6?u[t89^Dr,V9hL00)M='Ve]f`mnWBGQ`Ll%X%DX)asrNeNGJU52e)H;H7onh/Mp=)h`YZ^sE82S`W*"A[srU/d]JNi1Hq?LEcp5S']au]B(T`qeJC:Y)q[*D"R@_^mY@$9a\f(ddu??CSqjah08k'0GD;_.d[u-f7QdnX^*Z4Z_E7MZg%\C9ri>[l@:P)6dF,Z?XM5mIK1^Cc[]Osd,uB'l`W*R"4O3HCS4KsYUMUAgidDg!2q4V9#c$B^<2YXXO&Fm7j4hM1URdQ-8717TrP^JpOHmO)HFa]1HTW(L3>-6PoI9fUl&]]1pi@V\8m!X9-rXBB%Tf5A8^\EK=aOen#BPfs3]P,*!\Z\MKHK^2ULRu1ldj'1rco^inWP;d]@Jg!qm.k;g^A-DFO"E6IO$'bf'Z>0crBbEbDneN@CX:AVcg8F8Yp"C1_Fok(Hi"H%kgAQX%deL=l.I8QqkK3hHZ[;lZHg5@e9gl\WMKiJr8DumT&7l72h@6V![?JD]`0L)@c.PqI0&=,Fc_P8*ZWNU3St-WqRiRWCk?4%k*.XQGu"c8P4nNi\R.k'FV$p-'J+0j>`=Fh+k=>Q.OWpHEGgL\B*hcBd`oClCr#Y@rKRQ\Je*?N!J[QJ,hhI(uouHgp&LH\@lNn.m8s7o=8l62(+GuS-/HJ-KY0)=7cTd0/)0@<:M\'$on7`MHX'SB7NZ?C/F\qk/2)Y:oj:BRcH@[='DdUj(:D^PtbD2sYZBr=-,)2qhL3RUQTlk21'^q5q\qFOQM&SSg?$)qg%SE9#+)7P2]?L_fGG^#aW>1f/gO[.\dkkS4[g[[IsId)RT78!pT=!3\>m",m\-A%F\,J#d^4MK[Y@abK>F1JR7O&L]PQTgMAc]N,!BhD1]aYg%L0oYPuOhl&Z`K&^G"Q;';n`"UO]h10`nF64o!a%N//^8E$j5'p_kLXX_3G`aX"kqb3Z8$C.Y=D*L:o%>JHld*k@4_GSnXfo_JnN_M;\.DfN@+`Ul5$o[Q7lX(!X*@-nl"7<+VmnFo]"`!@'^5gmjPP'SDe-1iPB*C>70]/=LR)+unk3oK2P,BpamE7bO1MQGTricSISnejCqXC>CL3-2f$LMK(M#>!S&[J@%$"3r>H/dr3dOCT_IZsD*d+,Q]qqil,u\%1B5O*p#9,Bc?1tD]B\Bk+du?9HWW#:\4MT.p.Bm(udhQQWOlbc(/G7gI2M"Cl;GW[KoW*H#l?oX,Hg>Udh#$*AK[eX&45(a\5*n?&2lFjlkB3DCP0]SGX%+aa:%GccPX![HNV9ho*fR!;;#M=erAD#dSO#q89&,hH#jT\4Y24f#A3%)=\7-9ZWjti`Ws+#FmhfPWJL`SEA]X/o&A)[-0hnEh$IX?u2@cpU*UJG`]cFp*?#9I_5(4ACGK^D-?/U"NFqQu\'e34d\\iKGDpXhjgh4>H.qn1BW>7+6qWNT'#F'44iPGf.AY$WAXHDY3T;*c8.oC1=ok@Y=[8gR"LLeD"2.hEKP9-+//&hnSb1Xp%UDkZqZ]hHac4aVKU,K%gak]9@?3cg;X!fRBF;Xq0f=]CZPtoQ2[OWWrUNkQHG/h[iYQMr\#iJA]rp(0l"5),Ln8Jge3CM4\biSjcAQds:@`>7dD*(Qnbg'EA`u971T/_0f;[b20,sN@^\r,b4";s8G.f:M4?`)W8k(QYWWFmgZ,d($mY)LE43/j]$VJaecrI^Bsh_--!qa0'AZjZduE'UZU9'cec)Z"SNh,ap>*3U^=A?.87^1IDDKb5U`2=p76Sa/\(TV'O+I.^9't*PCh'RLdm2&6ksdegHaLOfXh/4["Tpo9Rg-G!V+W#-T,%iVE(&>-2Xcp;/?PDWS8MNoi_*-l7Sp&\$"QBqUA':f>fk^:OR*+/1hF<3M7AGh`!W0Zf^#Jl"5),LiLZrCT@&5O`&N;r_5>6;d[[jY8j^?O!'TQFO[!\aqOVr+gi>8^\V0J0sCV8o[DC+a`kUFCm&WeRr093rhU#,mlV8fm=C]\jLCVab>22XT5O:\LX_imV40Prip+=rqs,c=[2RdHCXq[h(hR"6aqG0Ul!8TgfWsa2+),=LB)DOEoH'aUhqk6F?i#?V`ZP&U82jhr^Zf?DC/-ZQ0;rZ'WB])7iR6X@mHaL`4bf@XEo`D?p/]cbBImr-/7Sq*ZK]ArRnW-uh%7?L*n30L9(,)e@d:a0LTaMNFE=`kmpK$T)WpEK)YEqE'7mFBZ7A=men^am_uY''b@nppD:=fWM]EYfq:nM:A#2%]\g_BPHZ.]R[&dqh:%*,o,1t)8S(51s:$JNI\cGjI^Ze2t7FN3;U.Mmaqh_n+5j;c=l:c,8lE+iMSCK]q;7^JV_bV5"X&.i6d&k`Urf+L/3G%[kuFgnPPEd\rqQlNL]`[bT5u10Pr$3R0/qd&S4Tu29!QpX2^\(V0&IjWm;(g(?X>80qg.fDMm`+VE#rqI[./iTNjOa8)@N>Rt4Y=jB+(qjSHT#osXL\rL9-6NJ/+K]@B+$k`^X&boSW(;gh*r2RV]3B(sfQ1>4RNZWhaTp&6U[\rlIJJZ6l5^86d`cLEip^V,$+=k,T#\cGjVVs-Yml(mL&fu@,Od>0r8p0$(7eu(jY2J+B$9u.L&F+a>c^9kC]chm:>0qka^XIe('U&@)plIk8o_s-pebGH5,cB1#fcfPL-h%gKd)I@Qt=nNFe0"\5;Q.BtFd]1bjdn."3^s]guog*eG,MgR%`lQu2Sr&oBoXrXf6BLr"FOQM&RVqb6&iP^J;WlarV`*cE*`.0kX)2Q2/5?+ES!TgtkC7m:7QE3Dq'oUgEft=Y_$AJ=L\g-aiJ2`r"+<=l%;8.NrPg3XmJi_il>:ZlSUiYtp?>%^iN'lZ9P[QGCIDBm6&d-"#>*qrV7oUe7LlkC]ObI<]i^meeS7eemhb5c/,;$X9Jtt@W,"7LQ@LS+)W\33Cg<')mB+_N_U<(Z%(nZ3BZ)OLsA6c)fLoIbM*>]m-X+Tl%.-9bY;a5Q6?[BIpplZBN_cNNmEF=Sf(,SK&nJ*CQguD7*PHbu?2f2g>&8ou4LLqUW?@*r]:@pJH(X1n3[&-PV?rqO6937OQeLceN9?T8b4KcSD,An8YHi'CipYOMs7!:\upR,Ya?[Ut+;\Lsn2NMm_Z/4qmd;$A/2D%pW1E_*tO/_cn5p<PZnWSB)d:=.6R'tHhWo&JXiI2``Qk(c5B:$dC\hUfkea>F/qL4Is(#LOSVMI=Jo\pO)!gdonV=0:`e!5mppmjZPO>GU6_B;VP#S#85;2sN;o_1A9bPerrcQ%=-;\et9qlHZ3V)k=S3BsI=Da0sNBXPPb`C,[5W[o7.4P'-D`GT$CcV6JK'JfYQ8@/5RagN94ZUM=(XqdaETB6ueW:*!G_pLhF>*'%=V29cY0-U>eWZO@3d(`/F`Q__._GD(&?XI;r6NP;:X9_2M-I3E:QYd@QN'$'jc!rCcBCA5Q9D>K"X91LKa:4IB)pl2u)FS#--d0e_#d^K:aV<)cLBH_;.[#k#G*13;'BgSFOHYZ'0=Q>qM<[3t'"duLI`#P2G:MFg?#Zd(*7)aFD>SV);RM2qW\I#pW(-HmG.KPefOA!#C8j_KeIk!aOhd^>3;=Ke_Ai!.HC%J7k`+ud[sfoIHnL_]1,4^qoo&A/"2`u#6aQ2?Jcj=E:&m5[&N\cV;;Q%$"Y\6MGl\7lHYgDVJ_V^4aClk]`/Go[^Vh$@U!W;DD%pCnJm]V4M!a>4"kWmgniG(m+j,N?pE]!jSQ57W4`-#:@TZ;R(Ib0_l96IqIq=LgMD91o^K.*%Dn#&"OMSso/8_i0"S$W2H&\fNX'`tek(UmoJTm-hG5gdOoCc+qj#gCpW$T&*-p\#csoE^2Jj%cdd7S%48R1Jbk7jD0IKJN)]jGoT#UIu8g;"Lr5C28ZaW_;rH[c)a7hajlojX`Ieu"7>*[t?''`>S*.E)-qT[L@DiYsS139`"F@cek=cq_E?[k(X-8b+H/s+4FDo82mSoio9Wt45d'n(@'$N97\pCE@GRgd_Wc>)VsCd#G6M*r7*=\Y2;Efp?&nap*%:PH<66=qb,6t14A]QbO])2S,MpB_]R&l1^0N%V46_'H>6CYE],@b*e*(fXEb2C)htL>V0VN558NL\/,;$XaEP?ka7:7='B,\IZIgC_"_QrB05mmp?+O2''A"If*0Xtsc4.0?lK@_Lhts'U4EG!Z13,R[CZM6DPtb',St>]bH1RFoN.5ZE9/j23SfhbDYYD%M87O@TV6RGW*WBhpYt-fZacG\`T['$'^Y$#T0El:rROOE@3aNS=D"[@->2jd=@=Is5p[h`j,ghM+4g7rPl"E,<_g+1r5+1(^YbrkYH"3MFDu8+JkB7nmF`d9+6ecdDkhRG'J=Ks";T>%^X%O<`[A_&o)q_mpplQ0;VCbR.7Wj1COXY^29.BR2O)ab0nT)>Bair=eVB%J3q8JrZHK1Hh@:hA6^[pK2hG8p+L4q2^O0b*3]d*PT8H_'b5?EK:BF418k:$nGY'5eKpeBAPT//8]S.;Npm'Bef0f>1rP(nM].j&%iR*eiHd69s$J43.Kp8`;BPl$VL#X[&2k#-K$/([MY3d3.ZlsOb]&(`SZ`Oq,X6HRJgmt1PbXWn"e%BpRXVBROM^I3o,TQGk&uS*nr?#Qu0F^ViRfM6a(m""A]csVCVHsh(7G;/'SmmQJ%nL>,$Fo@IDT#=/MlZH100oe&;KgX/N/m;$IrnWO1BJo29:?lH8ae:Yr^&D5pFpBmb?`a=SdOoB0/k1Z'i)-Ph7A]F:H.*]jQ[stC/p)WZlO`&N;IS;]Df'2M8R4YP6AR9:jM)]JQM\@2g4FQaGB(je]qGpjla.Y(#h.h^;d5F0QqrNZm[n_EpIJWfBg%(]:U3;"b.s\Mn=)Zr_s'hDZrmCD^l>q/Xj81]`imn_slGUZ6T?po%RCV(QGaauBMl3c8(.U?.nbUJbh:cFPHN'to(N8,sZW[<&h`Olqf$hB&]'2gmR;P,nqLZW=Jme#=%n0WZFG!?Rb&l\6HFtstcH.],'P4@ib4UGl:-?;1Pn:N]7Cq_UUmntqUJiu51S`ND!+r;'iKrlZ@9P8878^3(km!\H]"'?9[Y;\_q";fHD759]hj=o&C=j.f[AqCXMqc!p>t!^)MK6W7IlsNrY!fk3)l6:c$*)a]m+f>Fk`OMoC[]NlcWlj,H0`?sD7M5Ug'e+Liqsa>qb/DQF[`l--]r<77d^'191@OB5uI?)CYO\EWQa_2bkr:?Y2:9`Flf47]UR/[LhuQLEh$?1am+h7Ckc4O`&a_1?o>un$fh9WDi7-%,@6CnQNY+-YldnmojGo9%L<>Efk7N''\Or<1uAQes2Zm^/62\flT+)*)I.3$Q%rQ^SVdsh*nn@-]r<77U9>&*'JF[bDuPPXMNXg6)tCtTd^AGS>bmjl7(Tq027kPlk1\q+c5_?"f_:Dtq;-fUVi%'KNf9^d'^5gm7(Tq0Ppn#M$t+UqRiA^j0TFif_AKUPklWKB%e.$KHB2-hV58$Y#:QkUap19uqN=^pq(2[L0r()#'=O/=f!D=-)\Fk7_lQ6AUfODK6BWL(KLdg's>\m=l1H,da&27(XUqUkX&FV*qp=KI@/o-7@2Y#U-1@h-_\ZD?qCX6G(?2Zl;>&C1oP.9!fO(Lm$,&EY@bo&<[sc%@.XoL(L()[%!RR]-2j'L3A3G7(XUq-jf8f-dcf;+fV0k?n'K@#U)f,]?*XO)a[)1BK'$cZl;>fP0e)e'((DbOrE$`Q4iS>&>CGWS")mY+bZYGG(ZVZ]-2hU$10&ed;B45WM/-U.FE#=+\G)5a[riY6:bj)2cr\Z)a]@Dcu*k:m=l18)VPXd'((DbU*R+8S4't4KVX?GK;CuJ+bV6Mm3X4.D?qDbU"s**d;B458j^/38[KF'88;fs=A#q>6AUfODK6BWL(KLdg's>\m=l1H,da&27(XUqUkX&FV*qp=KI@/o-7@2Y#U-1@h-_\ZD?qCX6G(?2Zl;>&C1oP.9!fO(Lm$,&EY@bo&<[sc%@.XoL(L()[%!RR]-2j'L3A3G7(XUq-jf8f-dcf;+fV0k?n'K@#U)f,]?*XO)a[)1BK'$cZl;>fP0e)e'((DbOrE$`Q4iS>&>CGWS")mY+bZYGG(ZVZ]-2hU$10&ed;B45WM/-U.FE#=+\G)5a[riY6:bj)2cr\Z)a]@Dcu*k:m=l18)VPXd'((DbU*R+8S4't4KVX?GK;CuJ+bV6Mm3X4.D?qDbU"s**d;B458j^/38[@.l5(*.WLOW#(+gFG_DQks.]/b9"M"j2$#[+IsRiU3WcB7Ju!)h3^YV]n&!<=EZ2aFN,Fm@K-X]mGa\tjWp!!$QjhuE\bps%@=e>.C5!!(I[mH-Lfq$ucr!+6P9h2'rnhtu:)<"B*3?okY6!._K(D?'YmU"o\KXG(g"!14)["or$_Zl9"\9P??b!,J:a!!$Ut])_n6$ge,u0GE.L!5Md@?+VG4F)aW^!'i$f%041IA@l:-%0.Lcm03Pu/[F3fHgeYJ#6FlZ*SLr&^fiqtj:g5V!$ElI%041IA@q[*GJC2)+92DjU"o\KXQ@o,5Gd09!7IUt!!'*SFoq`3$1.os?nJ"!p6k^#[;FYVeH5gPQk&Kf!+7Cah)%#JWZDEG^iX6K!!(39h#IH'U>5eL/;JBN!(`#k!s#PFnXJj9HgX`o$35V@cu&g`Q:&7b!2N&q!l-O;J!1$!a!7C]<:rKV!9QV[!!$E$D"or$k9he@AQe0"PrGU3g!6rq3IEW?)nh#IFQd;ApaQEtYq:@ZNnTE"hel@Ap8b_:3B!3dHrDVfmCIFSE#!14/]"or$kZl9!1>-o4KJE?.O[7gGgHLJQA<"B*3?nSf*!.a2/n:s4B^V'R9O+4)L#QVYFBK#nkbPBPHIO'Af^&.60WWrS*0GiFP!5NXSj$3N1r:9^]huBj*+92C_U"o\K/E_Qh*Y?*!hKe9)eH5gPQj`9c!+7h3c-63*f>%;bofrKWk!HZ\!*INrro\cg?XAjc7.ieF!9QV[!Vo:Q%fr:9^As8?5QCfH6G!6u=O++!odfRUld]'DVaHjJ7A(._G&"JafkU?Iau==!+8:eJtHO_A#]b8!)W$QGM]mnSpP'a2dJ=1P(GOr:'!.`SJdkf28)pYqo!19;S7J>50:T5B@!'n6)BA^d'V=!-Qqm4U4;a!AG!+mH/P4Rau:T>HA!5K:\3r=ZFqu?`glg*jM^U$C"7o^'&!+6.P^\r?8]l3!3fXZ(d[;4An%h/Mh3B[<9j5S\AnF3[IJH,\o6=+UXEVI_acT\CU:]LL>XhVVXr7W&-)H&^0!.\4nZYsBdiJ\]UJ;'LVHWL(8HK'c/<"B*3?m>/Jca)IkrUeR=LB@NA7a@Pd-[p,B\8Xb,5QK:/pV6`V(!'I[^]+)TW#u'7a&fEK;*>ma):cK[!6idboB/QS&c\hV+Fr^hrV#!\"p!^Ce\@"Bbg1tN(IYkqGOD!dJH2PlgPts+pJh0,63nb1(>94*78H&9KP3;Wc^n-"&AWBu]BSVN"X66!#U0#0_ab3cD?.it)B'7UVSBlQofrN+U"p8H83VfP"'EslaG=LgO$EWRl@Ar46b=LpOF.Q*#-aiLd8A;/qYL%f%g4R,g'o3YjE"unJ/)A&GYti;hVMSh!s))NG!cNYq&J)t?q!jSoos,K4Zts.#6L8&m=l0=ni=&r^l&&=^M#R^h;,(9!gjJbL(H]B3OBa@MCr2G,hgMB;lCkM%3^DcF(dL_'g;041SW]q4F'it5QK9,h%2nD5)4:`=OFJ$4tG?Hcf\4i&AWC$2hVa*c_9.p6ePH;sQ&!7RXt&4/oOLNWc%d0hV?+PKP&B;b$G!2`,q+bYr)%daJ)U).0a;7)f;7ujMh#[f^#)aXhPkKn)H.sgHVQUJIELDNKM]-2ihHk,NJYbIIkITa%I6\c/N*XH.7Zl;=;alh#g!%WBgeQ52OnT[0r#6L8&m=l0=ni=&r^kuHFm5<:/Ieh/oWZDFR3j]hm#g)8VD?)0oLVokB4T+]dWWrTm%deu^6Lm.D)o.>[s81]3G'!026.H&<9S[dY#U0!`g'qFYJ,J=K7D&Bkc[W*D+Fr_'D?qC2T0p3kXQ]6:bG*h"[C)tT#[f^#)aXhPkKn)HoD;9DG=SM.-e75\<2/1[6:a:qFp"+=@\&pXGhA#s4&h7W:l0?_#U0!`g'qG=9he>rpX,f)bn9t94?T]k]RWV])aXhPkKn)Ho,AYh1s4#.^A#>0IJiWUWlGLG7(XUqOF.Q*"u*e&5Q#K@NZGGB*;ND/rV``$$ReKV+bYr)%daJ)KVtGkHHmNihu2tehgbZSeKY53UYQJJ83VfP"'EFJCY/!dn%Po.\'D;Vk1mLgWeUnZ8%TptOF.Q*#-a!4dF"?l:(puNCi'%-K+CqB&Q"O36O4k2*81j0'd%r'Z.sbkG/m=$GIQi%;bonWS]U"p8H83VfPPOh!6jHFOBr8a&;p@\)AqWO]pNupT0m$R]H=P"dY4S#O$naif-/6J"Zc;*o%B?m"Z5GXW!?WOkVa9Api63t]rcu*mPHgeZBo[?T[GB\DIhHpAh'[_,NH[DB1k*Z`Er)!'p`0+dmA.^U1$$uGo4FNg(5#3;A62>a2+`iB]P=sb[o?H7QiFBog,u'\c*'*$Mq$%$-7Rot@Hg\Ee!7Q2dfk3fE7a@SgHfDu#_hSaMrU>[t?G(NFbC.]0T!Y!SIA?4VpUjC*mgb:6.j)=0ie[fG'lHapWpEnsr.+A.&45Lfm3Xd)nA5RRNupT.k`D;HM)ga_3;rgS@cI%")fJCOY_]>]Y?ne^l1)e95C2s8@a-oYo&Ra-K^(.K2<7?@EUE#B1n-BF"e$2d\Q8OIXVKP!+dNN'`p3QoQbT%SIG1%iM2igX7]IhL!#C@Imn^#F]tM+/qqL"-Dfs9aG*D+V`Z#hsh7`RVddfYJ&U%.$DUbP54BUM/.4JUC3*E;00Z5H7h,r:ZX&lpE]&]CEd%NfS:S)sqPugr2`;hI'(LMR;kOTQ38,Vh"hK_Wa(^-=qN[+Sl/SVrjAoqQ,`C#e/Ed'4n,J=k1;GnpB;r-lDc.JW:KJ#dn=A1k6Y=kZSOBWQ42JQ;$lY4?V"b?;6MI/B5`_/jr*Og1=G;p;6+pDkg"UXiSNIoG2"W\2U-Dtnq/[AePA2KGrTPC\!G_>ii,geZS%O[=M/?'2C:?>t9moh:YLf9>M5L2&@&!,7ZC[=9s6S@>'-i;pGLT>;[J<,Yu1J-el7M#>C/lN7kFK+oW05)K"bIbCAQjM*%`\B2%VtcS4?+.W#maNV+/^sQWeg5fIhe5;iiguZ.0'AmDs9Dn/KA?m'8oqE=9IkXu$T&p9R^of=cYrm5ejZ/on)n1*HG%28"cCC$GQjX]_W1Hui0T3smHVA;p"pYB5Dl([0G,(mN2e#6XhIt,tS>AY#/uRh[18[jlG8)BP93pGRAp;7,CS_2WokUVnlYQ+U]pR7@mou(9^l3F]3LAE:^S?2,*GZ$gji5eR$t[dAmHC>"O,b.-cD"l.VlQVte7h&%C"N:GVPa!FTlKE`^ZUl`81[<8!Qtj]=QK9&s@#NHV)3Wa5W8f*X8-)b\N=ZAD@&3oE=Z@-?f)UJluK&dW,ri1+UBik#P!Li9bZ2CC\KniPFVQ;'5s_I[11"lfP_Po!H&Y:=Xr17%k3e^N[\o3Jcr[ptK$7Ic_IOtU+M6I_<''tSg#O8.Y?plJaW"idIn]\\qKK\iqH"IkA#E`ICA=?--^'H]])>oPmeFicM9h2"!s[6`=*_Etk8[DjZ0V8,q`fUgJo4l7(#,l9rK%Iu.aQ4!)mDlf>.]^#!JIWM5Tf`qZXC+N(aU0g?IQ50oh#`8c%7O,XmWNm/3;`"YAAfD)938?f>2ERtEHaOo")=7*i/K(?M*!7oec#*?rP2sk$.LQ(UZW@KXkO%kl@1%/uIlefFM/he?9@iOf)Ms_eRo!kTXg'S"COgK$Tbj]j#Z!_G="l$](-uh2jY2N5p7@!eKmQI`&V5Hb+ILVm\hfu9cYq\6\(>mQTV`_li`+V++^4>l&JT0t2V11Up\1=IlKf3shLTtBKh*tjR$1psHEAk"#bLe8m\@TK.%3`l.mCl?A[cD$TkBT#G)[iE@7AsR!kYKj7,i4Psb5p96X$d%!2&l#'(B5.%\i7br(0g)/_nf"V.a-g?kDWMPL!_i[5A,7-+RCghb?9(G>Ik+Kah!IpR"=cCR2"HAeU@m:N5=,:7Pan`6Id`#"?s4`X>1[WYn``RI0OZ^$?+OZcS[k5Mrk0\W6mSK\mNF$!l;UM>oCF:/`$R"iUK6I32H<'kYa7,Mm@\QHn,&dUc'tCT0&BNH=q14ncUEK6$]ek0qWHIBa_+V1&%#@P:?"6=]91Xq5M$q,LJ'a/[;=4)C<),oB0d2pH+FP1GiqU=D5H]kJ&*)sX>:/aYFGB,p,8T5lj49JP6q;O7e;h(U7R\uociQ/@sT*`M4%Q?.82SGB(+X45AMDFBO6Ln?she#+'h50h(gMSs\%q+eC&^?D)d3u;NMSH,&51XA0.[i!FSpRLNNQV+WS3TjAtiF)7S:]9]%F^+.>n#i_If.cCXB/FNt_=B%g&6W.\I29'/"br!_u4ZsJ"9"Z]GjFQntR8J;)>(`j`agPsflIpM_*9GuR//FCFj$9HctVS0WBr4@:9,E:`Sg=I,drGapQ+R3FJ:,83b#;TsOHAP`>4TJ/?/8+5tdj'u_?+[;5FB.#qVbVR$CcBh(j-ok+p9V5tOa4C)qVg(IR&,Y(a7l#?%:]%-VbabgCR)AubZ?BYWqLo%RLFmnX\hm7*S=h:21Yb'UtG.:q$JVgCdJeHWL&iNgBh@Z2a@oZZN54&bG:F$iR,q4)7VB=flFeVT9bHTYDP8$d2u];r;(?=(j`B!&_;E#.i\(#LC(iNZC@gMW`U+6g-.qU-7B+uB)Irq3Pq2+P98W,FWd>.%h?7,N^:bC.D`KcNop-F:0#@sM\'39W*eMU5M5S*XHm3Z\^fd17ONq1gZZ@:La14#aX.qo>OW1R>A/8&YhWsal5<]6"ufh,`jl,rp_krILX2a4W*k&6tRPf/X1>.)5uJ$LeK=3F:$hRVCcSt>_K&QS3FHKjJ<)39\3WeXU.c$WTp`2-Q(nJ/R23_l6hAm?j&p('2mH,eR4J%X5p4uQ&mmolf91TqV>,f[upGdY,cYitlVbN6'Gp"X10OT=dgP[8\#-+W&J@U_[s/.$k"KYq6/%Jf$+s/:6jV?$!1[G<)Lfb1u^bI#GsbqoU[*t$^o@olDXY\Pjm8Wh2-gll=HlGCd6.QD(Q0b1B:f-f,C#8.Nr8\Ds9Of[;sEF+%PH1&"LESHJXW,!D0me/CgQu$$R_9D9n]2^@q):l7nN*DNmoQNHBNQlirVIkDH-G()=,i''CZVm"1doBRbgqQFjI>'6a9Kjb^U^c_2Cd.dd6fZ$RWi&AfXD2-N5\roM*''a>PGS?I-FMYHB=4P+o?T/qonJ+Ep%KiiNP3E9mG1[3Gb^Qb1M=.'/(\KABo@.[%sKcc[;/$@[^i9-?=_!a@Y8pg,OsM\R^q6b]kSji8j=B#+MInN]aNlkdJfnTg5YXfWE7E8,n"NJftD'R&M$,sDNAd8P0nC:f+\BTh!$07cu.&sc:O$;4fWgK"Mi_$+4`C>(GB)o]iA9O[%#Qg1]*$l1JL14onh6cc/C3nfW%uag`+g&DQEARmLOttju]g#kND]T&_G(+cl5+g7fUrN]L\9Sf+%.@EuO^FmDcY(o1WdF(mdW%hqOdkR?Oqdm7+jXE:fGN1L8_d\eZG%3#j^ABOLJ-N5+`l?$Zp>i!05#T(2>>hhte95>leWMn)QAM6EY=h".4aKW8K@(otSF`;dV8empVp9>%N,I/eT,b:g_6i1R*fYhWWtZjcgrqa54nX]H7bpTsFdIsA:K*m[],]P_alL4MMt&WNHAqHS(:W*&oWpGbf4<6h\/S*?/.0tHcEPs%:RakX>@>(bmR:W(o;#K2ooHD+RH?`#]^r;K,(aJosS^/d;Dk:NL8"V7.1>Y+8JiAd!or:R#_]2a0qW4'tA"<"(2`h[)P:i.T\q7(:SW`?25LVMb785HU35=jsht<[A>?,l^^W\A'E9<4Oq-VaQ(t$4m)>GpMBRD/6_G,doTbT8]?RGrl9DArl=pL]B7dFjU_*AGMrjgY1hHsGhe='960c0'gK]0I,j)>UC[hm08_mm,K,:ZG<5/UmZ*r<]kaOK^N6]^#2"cE;3nU8s9ogV1cH5e2>!IY"bI[>VG.\?ft\Vtm9h]Y77E/bL`#@!ntJ/\KnMnY-&00A"`9N+EX8-Mb#P,kjj@Q>(L7C[8EF>.))Q`)U\r'\_oBF%&CnqXTd-jA3]R9.RCek&Y2pk4.;Tmi=H28:2DD04.aC-N]A;?@;93H$/=H55@V>(2iB`DGo5K8:*=0.s5Xle?:JU]OR0'hp$?ZaV/DYoYYSWUj]mAs82EWN_BXhbg0p2e+Zn-,`R*"^)m)nP).iOhH_Wb=RC-B,CS&7^Z^#0''>:1`:J2a`oV?ACbq&@D[PP$6ugW/:$gEjodWu6*DLl11Uii)<\:'UV7KsFL$9u1M]Uj4esZA+-*H2OqX2,DUiTNKM&"%&E.Z6[rc:Bg'm_fnUuK?G;LXAT3Nm_m>LBa.Wn#DkqR)KJrUq(:$HC+0MWCtR-m:O)5GRq7`e$?!kI2BuA%_VMTM#]>miP>&LY_'KU'ljX#$gWZ$)"Wnjt[0RhjEV#*sTNF1=75;I)%n]Bt@DG9'=:Ht,B!!`Q+e[$D!\RT`'<,>Z)a&0O4><;T8DDFdbBWSnnj68Wb1?M4jVQ24,g==dm(n\FB["lVj^K-j"dUYp@R\,L9i#V6(5O%_3H2OA-ftUTNfQ43nrT(etF.PXAg=Z&hWR(7]FO#%$ST]=RhrkTqpnkViA"IbUpqu52bi4*l_,356mU8n!I%f^^WQi(V/Q"76`\,3e]D/9aY0Pif*c1<:ajjcEfTYt*;\'7oJ-r^DG9'OQX?$`O=]qGB0s@RCg^XY^csM,3>l/_=3j#3rpW2&j9.&7%6fAC`r35CDs*Dlm:HY['*%:,F+u1a-Y:RR65)[t:O2R6$i3j+gUVXG*222U6uR"Ip`RkP3O;iZRE4H"gH_^ch6=Q%bjKF$Gbj.HJ9>NB76N&BZ6I[Dk%`X2Au$rrqrJrD/AHZf@5J">8D"u-ILe5<7`sKCp'1rnB^D>`A4p7ocmk2CYIjbk3FidbX2=8C:rON.-;aFE;K3@Z$A?Zrk.O`g_-=:/64mn_8cbLRCmS#gSF8(6QeBK%7]%nh9Jp"(!k1)#I;3o(gFB%PK$ei9BcD0/pi)n0`Pdi@?dWu]o)\78BjD$H`\BOrc95n,\2kOlNq)s(`lBa'.*]K/$3G-`TR?44rOBsp@?4K0TD3cgoGF7@D8N-RXi.?MRMBl:kjCEjrZXU:S@YgaTuNm\i#bS9;HCn]'9WV>/&LgS0Y^%.n`'Cm%G0?up>9^\[lelHQH5eRbI@VLEGi[@:!'ZDh?L=lGt=h5GWN;eS+(^%Kr\np66:I.2^PXkcmJh(21lLP+-ACdr$-EHaRP%Sa:L"*m58ObtO->5;"iL_-g+4enuq`DAFa.iF)'@!sPO_WO&\s'a)\3G)8S%hQeX&]6radBK'NGHB%\6L51O#AK%n&o0C0qLH0ZNf'Odpd;BTEDQMsdfsC7n51NlLV*MXqoQ18Wp)`mChq,MVhi;kUoAEa6HnRqM%0sB2C#6R:8!dl/dTjeL&F62X*8H%LF'!_[Y!"l?[l8N'4.+.[T>V$&`XIkI3?gY@f3Wf@iH(BjR,(bda_Hi`cVeu#=d;"$Y/ZE^C(U9^Yj9RjM%L5k.8n)Onirij#.[A's1]X5;^ZE7h^BZQO^0lLnrObP967oS-^\+i9'6g;o*C)`P%h]!GJ'6U.N`G<,i[[&9#]uto*hV9@eq5[c'2)T6:%hf=[1(\e28aSu(buUIOg>,RKhGn,Ub@^L%J&\si<_0l@CTfIU5\.0o[CujuL(/rE=RTYrS&<9GmHACP].OrU%;On*c-9\FfqN:"aV(^*Tn&2hOBcE0&1_LhD>QO2&DRl2n\]]qc2UL$mE'BZUq;+oNkk%;hC(e4!g4kGf*<0$rmAM!(b*HK/I\lu/&JoM5FaUj!OC\WbmaBK+e.NK1Y-f`1J_hV],orMlTb]/=(=s`j3_-e5Fg5TVKq;%S=uFh%l.q9l$RmI[>-P$8Cl=.b!PX]VHnSA98])ihQ$u6?_P3`&BR4S(\r03aLFYNjPiWFg4*bgQ_K?RC&I-Q]091ROkUZ8:1.u1!\XQb,"]F?7YW[hV,ig9:*iU+IoWMa#=$eW2NpM0ai`dmJh!X98Q,YAg-!jTIb1=@-Kh48fY/ML1*;\u%Mrkk6?2*+0((bCh>OF=3ZAQ.%G=D-+R@DTA2HJJtAK.BpSti0[ApIO%K@<"%M\U]##mL!3!k<-h1>mI8_6aSF'q&9;Y(X,`YtA>40b[SBg-"1"3u]janr5!H,qRs3]9D?qC2T0p4fcL:LcO5TZpdu-)=$,gKREgj\P@X33kD5N>$bb+RMQp^Il2]HV42_8QJ%J$-;2^Z"mbla1#0Wgbsc/o@'idk3?I9&HUk3-hb6VV._]C]u=fd=Hncqn>e\pm&]-NC#AgPqHnGrN%JpmNZ[,I*#X,*U<34up[gV\\*d1q2OAVdo#@nOFpm=3!Md`#BO"9g]N;Xqq>@>oRO"-iR'1:g!,cMLG\'@tBG3_%D+IqK+m71knES.r15@+m_ic\RpEUh&,NK506&_CaY#UcpTk%2amSqo(^8W<4P+(RQ<)q/C01XTBm.I$$TXC^"m5(AAisX)ho7\MaKiP`YS^jP@Y]Ho$_]=hDaCL(1W(LEu&\2iD,n&+Z;22^%@KQD;KD*]-2ihHk,O5\L3tn6=.iKZ0!`l:DB"G_kQMo?c\Q=HM3j$+cs3%kMGAOaU[S>uAa1/mCW'-=n"3=;\08t?re`L>cpp:!2XH-?'Kb/[OKK5hl&_5W%df"J-V;6q2*b_ND>1s(@fV3Pd4S)8/piHRO4rr[3l'92VVKWj^ng,lL[SUcfKtaT?e0a>>cHX&mM7PKc&)\Y?S)0.DC%j;NpU_0\(3h,#J2d!-`>`;mdbdqL^Gnluaa2'&6mbif-UqU,hXsn+@i2u@:Za0K(2n'K:7aQs2DpgR>uJA\]C'>kKFj[:A(r/2aVN^U'H/Gp`Ee$2_6?,`HJAmV.MKGd>8f6W]S'(#H(#J>'s[KoZRgD!agfI]N;HCjC)c]kuX1_Y3i+1GgV2922g-P*TMetrN)_Y9B,isU*O-u.E#OeZA7_A4>Kc.V,1U1a4XN'E,9nG5[s?RGm=l0=ni=&rjTYnnY$\f'!n"pbNVtgo@_NP:SIm[Tr-@9_[%#4H=:Of2*V(/gUtVeDQ"-_7QS$h%:%$,[N%VeTka2o;7fBuVL>pig/T0H6oL*XMm&c+f+,BBanpnGMW^TZ9jT0CVle6688ekNgFu+!6d<9$dIE4fuVaL#/]\uG!H0i[i1EF:X/QTJTHTA^[KUipIfJlsE=l>HW)k&1XgmIfXBq!mrMA&4=3EPA=^U;$p2a';e@T2mZP>A48k$<2<)aXhPkKn+24+I8-U7ZXn@r16"06,&?(bboX3SMcGkCt%&ULkmBe:H0e-hPEZ4U*BWHA,:URUtfWBdr(jCO_4.,XA'/Skik\+7[dn"cL.ed>ZY!nf[L$*!S,r;l]--U#U0!`g5U.!55VGV#^Ui1]MJAJ18^;UiEJt4DWJ@\RXTk4o!Ao5kZ>^qb+>n$>lg@MD^'?c6\AenX7V*h8GA,8f`H9Fu,P*l^stg_.CKn'4jh5US9%m-Z@G:R?m"'4@WIEH[+;8k%m!QHXEqjpN^$oI$Uf?A?fZKie)&Af4QmR2j;CJhfJe]Mld3CD^Y_aN4O)sXpk^IarI-TF++\ESlO;ZDOu_9Vd8f3Y25>::g2;:A]!I:"=>IlgmW0`t74D2Kenug5$J#-$:Ic%=R$>kg>hoE:#)cn^-9ot3Z4>Da/`k_UgAFV:ARt`QcEFLBQ/]VIL5*Oq6*BarA;aHDN%4%b]Kg/;t*'MEacsJ36Usq-gt`LBFQ8X__pn@HHk,\-=bXCX,mE#C8jm4%=1C(M4ruhBO#SjULm\LaC<7.p\.@pCpdA)G3;?jCl-27B"0U/pXU,>GJF$GfZ8_(*AcJ*ZR1!4BRN@Ms1LS?!H56dnUYQ3h'2oQ_nL:i%:LV$d4pA3%)qqsJbA*bEF_]l'o\5rI`HLNH3YDt>C)E>bm*=8_NhP^Xl,DiKin7KoQMH;`ie)%>%LdJRHe;"IBfBL/Q$P*&a@a1WZFJN@)Xn:5rIGI95iq,Dc!K1)Q@.V\]FqaPQA4\a+`Ek?r:=2L7NE7?eZlAq+s]@680Ao*gbtfWYLMQ8b,12'bA_%'A'18\5,i5FZB=N5#=gGiL@<43Z,jKT=F/m9g?_pd&dEBfCVs2!Khb-;1D7g+d`$icp0>a.t"F:IH;2?V\HsMFAHW-2s+UM%ZZQ1.s-]Fu("A"05X]N*A09EpC&Jg.*Sm(IrSP88b]r-DuS]Y9fs)F!r69URq=U2`4POqmQG!%^3sdAj0neO6C)9UZ5>rO"?/&9UdiN*f1La-UCC#*#W&P.!<m`-Vfk(M]Ub7n!/14D_5bqOog.0e"9TXm?Rh@L0-BeO^NTaVfVN7S"lptDKDs/XBT$qf[h+!N%N3DO$nT-HTM$eFUNJXrPPD22Dc27\nq(l6ANfc>#`7F^$^!K`%tl1@"%*1(]cmF&m&/0'6md]eU#+XWJUuZs?t^^Y*Unh3-YD/o':>-qqraQ"cU*S,-kM\3%>aa9Ys`5YB0csV08:DD#kXf[(4W9W/G'GIH[C,<6N\!q_"CpV65,Ob6fNgcE*Z!G#,kb01m7\:",Q_QNY>(\KgB,].o-U-VhbC7M^2KZc"W0h[P)^G4t9*Z$A?XqR#PTg_-=:&1ba^*jh2NP"hXkY#VTDJYjj!f0ehS-^=eK&E52XuFrCm056fH!"5u'N2W8>9^En@_)7Y60G]%BSk.%>Qo]*62C298?b3_8]pF(+F&BZcgM/DMq76VcbI8=,?iO_o`k]u)NCraKA>93#?e!>,:@8l02IboU"u*SLECtikg1LC=^8[g=nP`BHaFa-Cuf;Yq/]Zls$s[E(//ctW&^mM$KKJ7@lk>'8[O>+29iFlFRPfF.hTIora`c\`N$kOa;33Ad\]5A[$C*A:YrgZO:uShgUL8D(iBClaSTd3*:2kCmRkIpb,.rF_WiZ-!NE?#H+[9K,dn*84c"#G%2Ss^A=kB[Ql*Yh,"'c:1uS:WD#uZ(fr7c]nKZOZl>_t]?ZDeD5e3=m]2gk01NXQ7m=qBmf($nckbG!,798,kh=Mk2i!$S?/PHu]0csb+38gTNFP7Kdk@A?HYGcqhi=FWch2'4cJ>c&60qrsA)@_m)qp:NGeIGREL]1=8&+GM_[2&O\k#^6D5cD5!r4gEij(Hs08:A-0+s*pp9?eb(0\2We84:'=E]DftY6p6SH[L^Z>d&<,&d]>T59R.Yd(cbhq+!^@4L?&+H2dX&`Q)uZaH8F=HrK^F#_9jOZl??6]5RQCqc1t$!*G^QQ-\XbWSXX,2;/L:*k-Tq9MsM"Ab<#+gn>gF<[+Qd3W6+Lp#gqSs%f\"T`lX2WR%F`]!hHaH0AESh4\U%B$o@mB5DZkqgn;INUdQ=-$F.dj?1R$+kJ0M)mb\$h%O+?jV?=0,61aZ$jPgZjGc+T:q]k5C:"qS4C+)Bk0e0Sj4'6Q,r>8ECgS25546.XX?uS4d;IC6[j1DVF)7<-pJb]eW^Uhb`g$[[>$&P]\L]C99uu=KG%3l00GoT2^;pO2^JrNs0aD&Je'#>6b>(H%mKbRrmCDu`J^ao8-#aS_M&Bg$pN2\1Gri)`!k<8efmWT=:F(0U1BK(rTj8M#@O6=*_)rj6lqT2%jX->8bP0]iXR+V]dHlu2o5(3:7l?O$CZh+!?nq&-e2dMTuDmpFUh%91r1EP%H\>'j6[b4p^rg-okPOF$s?P4r:pWq=sXN@PY+-i1"9A8Vdhd"cVdk0F1X"i1Cp:->?H'6LIh3_Op&s3FIMgif%1F>1SSpKqQoMNmkLcFQ0^XA;nF\ddGd+*"RAlHm?IdG3EJhDFE7MSEh7:p<9R/m0^i#j!3EUIf["u-"Pu.h,qPOrq892HguEqQS2]H4dc@Z(9bCAMEH?qZa98:pYJi^XYL(6%5CkABn+k-P4TU=E4gMiLg>)G08e's?aMP$oe'IsoqM0bK=949ih)+p>5,bA:NadTh/nR1XV#-eB%&Df:_JRh8:&)FZ!d0X[=Rk>`%UhF#E/"`Q;=Yj)^2jqq-k`I*86BPr;H)6(Y)"C`-Lml(KF81!3#YYZd6d2_QdUkrqXliWnp@9"mq&3.O4IVV9O$IMEc8s9Uji3;8:tuhfJhkp:VbreB)H(UhM&$h+?L(ZH[%;9[g[K$UiG8VSm#nDJDrOUUuAifHo7+Vk#$]*si]NG9iHWY\i8u]AM)MpZMYPme[Aa=35@mDkLl)LSYU%U"rhl^]*o0e#-!"cg/rO6YF]7&Ud1Bg^8QMn%A7Pg_pHZ5Q:FjT7*S_qd^nX)e-8*7;m72FWmZLuURT\\j5*VZ*"JT%F\;YGM]_l[SpO6*(-WG#/b`6j6#U0!`g.`%g^WIXJr:+,Akj@aX)]M^=0*@<480i6Gil.L\*oi%PnDV7e!s@>X1D@,763t]rcu*mD7j!0Oe5K/b4'riRTqb,=p@\(^K>BeMi=DsOCB.u*X/4$]RuLE;*BC+podVP+4C/frl^W]X59RQ&+,)_6Lm.DRiM.aRr8L`_/nebSN_I*oGT`T3csR^l9#E(>2mT/X/i;5]6eL9n:_Zbi!?]DT\U/G83VfPPDA"@l`EDLi=E[*T[#'k]Q3i=AM34p4j\'P+XE[I])_om'&!dXH%GKTLQkm03QP95$8;&VV)ZTj"769m!!#9%T\TSJ!!((LZl8uF!!'Q\Foq^E!$F5ID?'Y:!9=@<%0-A.JDVV)ZTj"769m!!#9%T\TSJ!!((LZl8uF!!'Q\Foq^E!$F5ID?'Y:!9=@<%0-A.JDi]Bo%i,-F!!$X'UEBGJc>"RE4Es]q?i^6-!+88l5Q15E]5QcF?G:eioj@e#!!$Crf!.[(WqWXnBr8A0qDV^abE9((]3]^6$&HDe2!&?=Yff/IPJ,7Wd<"BN?!!!!SEp_Sg+8k%%C!XM=kb3c2Nt)-i!!)0?WMc=[]DLa5Pq/ki"onW'!;#^%-_L>#7mAcS^6/Hkb?t6Hosau%!!$E`jOlJK\Ao$Y!!!!L1=!Ur4)TN@Z_+3<&HDe2!+]eSAAm,?1Hn"*H8km)!&2%:?[r#g^m$HX]_Jh*rN*E7e`61u*XaZs^\m1HW]/u=!$GlqFS+/bJ8DpkdS$T!j8]0&7^ef8:L*2bn)"dF#g#2ipAYrr"onX%OmV9icWqS0^IAJP,kF,V&u==`!+7:`)aXhP0!lPt!6g1@6O4jgKm!OuJD&:e#U(J*cu&g`0H8^T+bXABg'n#^Aja0RKTPOe])_oIChPb\&<^=42ZNiF%IJl]6F%!d"onY0U"p8H89U]_!!$CbZl;=;aY'q>!!(5tG!cNYfnFSO!.`bLD?qC2]?kEq!&,AG%3^C8(YT;u!+nU1+bYsD6G!6u^hd[CKFj;PBK#nkQjrG;&43Z1m03OjZ_?1d6:c9nh#IF_2RFDi#g"^+)ZTl^L3>oi+k_Qm!s!l)cu'+4,eME@!!"\lg'o3YA/Er/!!$Uu]-2ihlpA;b!5NDa2hVa*?"c.s!145_L(H\W$ge,u!4/BT&4/p2U"o\K?oGA263t[cZl8uFb_C:.#U.lTFoq_pg!FUB+XF\HD?'Yj)qk`EKObnQ%0-B?6b=LpOR,/drm]k-;BSHnR()1R-ecR*G;Gc)(%]0uI!;]@NBkjo8N"onY0Z#mVB+2;tdPuilYqHEadEm"QOjfELIkI$F+Vr!dk\MV^)4gZ.Q\b)TED?'Yj)b[Z0LW6N3?bTaQS$[q]on`J9[9q#\'PlFDq45[K4;-I!i&`frHl-Hd/kpG#&+.A-/q)rj)ZTl^`mX7O8Y7>0amsJ)VY-`)S9A714CI!p"(o9O^a$[2mK`SM#u_pYao!,JiPA+*lb3\*Fr9mqUM.InD@m%gCitfAO@,C[5lLq:7E'AY90:jo476G!W_qk89kNB6TI,iiD*]SZ,cCH2RB>jiIE:DSmSWDY"[6&<WIC;XTi\u-:#ipjg\nq$r?G73Y#>aLkG&dLg8Sd4H9(qe9fcds83`\ZqQ;>?R/!UN!keQC>\F/f&fLpRQe@]Sf;P_7q'tDm+Wg>HKidN30$Ch0\T]q!ounrmR"=f/pZR(D[Pqe27b!UOE-B>)HdYp@&0.-I"#Yfc*$&m?*sK\rU.I5(B'lpr*,$@SZg2Q$9,ikN?[@5O>+Z2-#p#KVu5U]1uYFiQLQ8I#FlXpWZp+*^!*V/hQT+O#5Xf"PFX1OlV:_Y>Y>a,mVikgU%fRDM(>^E^%01Zq-;JJQG$A=ReHF#CH]L(Du02'eE:*2'mnZXUj%QsQ%%2OFpo*m[eCc2g&W[PG&I6?H215HI^:;6[1TIU%:@LESTs`hLGi`6Tpn9R)ZTl^`mX8:VOap3VXV.B8$C]`Rs*n"0bO@hFT4M:4AXh5pLnXkMs=_uhJiQ;js!o5e9QmD3_r-m/7m;"TZJE@CdKk5OM6lb7f9kAHl[SF>#N3N\+>q8Hpi/ei"u^ch=u9c`_5q9hL+A8^N&Fr/(YY;<\__J^/SRSeh'l@N.*/:UA`-0mG3S))`]f@^[Xtjd[S#J`NS'3%'7sU%A(,^Gd*S*IPJFdjjFeMa*?jeh.Jq]?b:%6]f4eqRiIS>>W8dtoqn"`M;5E-[_Ym((UA"=G-c(_rJ$g7C3.jj^[Up(GCK)EF`&q1&'o5tTNJC8Y^PI7>O9J\[MuJ2^:<_l\WFR4F^)i=%:TJphR.%2`j=KD7_I2mT8TmM`F#po[jb4eo!X\-<5/uei,^Dm`]bN7[\i>ug2GeqbM#\M6^1q_o4>1]B=`^_[MprgdZrgUrIXenW;,(Jp!5s3%qBO[8M%@8B<+1c0F%J[Xl:tgtiffO*-2'?Ri[`dUeYYhi5(*`%61<.o6aoHs2ZNiFNHO!8;-ll6,^/@a@]kr;m$X55Bj];$[WO+fT3JArNW&/l(DaMlmjiFQp%9umHVUseP?9P.?[(FRc$!mf[*<8CRbVt(lsA^V7RC2=JkLHF7k8@h^N2p%l\knPDaWZ4!!QY@Y?h&n%.i/gW$B90mA'8>IPN+-gB+6pn!;;]jRDj*Na-pqW;XOLR.m\m/>84N#cbX?e*ZdGDBXWT/ZaY0D",Cqs2i$9Y,4;-Dt6^Z#GYF,N%WNqVJ1N^V.7=Xg61B#CbNC?PkID#$r-UJg%0$EIH4oM'U*&$nlQT8b5`ti/7o]N7Q*1lt0dP@LUH"KkuQU"3ZWDBIRo-^m&"R/PcPGJ4s*n.&)q2V8H=a,(%n')0$F9o=rS]gV`:?kl^)_n'gk'j>RRBkM\JrFYq^Zf>HD`I:o"0obMqAU%NYVcK3pAdS5r;QW?>>SYc_lIXh%)kj+Jb^[5O`GLJYc#LZCtTH\TKAp)C(fF*bsR?rheX!ldl([($)hV35;H@$^:mnMT/%^UGMdDAuWXrkC/s4.(aTW+Yr#UW>ali3;_n-smhD[7F:rG%CKnC?(h/s!(n(FA(=+3IC@p>#]K2p]E:2q]/'4>nLj]PC^cA9*IYO#L;MUXLp(X*a*iq_GK?l*4L=/AmCdXsKs@a2[Au27==2Th/gAKQ_!;n:>E/FE:ME9`95"ZdQbgbfejmH[+40GMu[F!`s!9:)J#\eb?8b8Z%P4=P4c$u6ks!bK&bpiF5LYM$uG>]OK,V`SfS31[&\\dRiT,d$SQOLPT<,d%WmW@34\9cq2c=iA#tgA:$-fqBO9>=-1pXhchF>l_,l*8FRsTfF!egg3$nT?e,N^eq^4c&a9\&*2_Y)JHJSd!G()#kPkn&)n%Y&hl?R;tG79lfbfsM*P>c>_KA#ufn+Fhe+_,thmZ]0b01KMDH&(s/KIYdX!&r6B9fL`cJhTZ/4+Hh(-henk02A".\J?5GGR+C-p-GCF4*dofg?7cIUpuordj9p@J9!XrS]8JGLY%/?^X'?/pB"a1lUq%oT-oE)Y147?B%"m/ahV/e'7j/hr](2)EHW,[qfp'hf+fs9R7MsW^4aNe8uA[\LA34VAGbrS"BG1-i.JT7W3c7h%]d5=0D==+HQ/57LS2:Nm,GdoQ8.8J$c.0q)<_1oBmY7@U6@[-?T)7p!;N]=kf71]IO[eV&KEmVO=sY-5.Tkc&;kq%&:Z*9MKS?4s`@u1NRPZ(mZ1=AVZ:M#O[k@*eW#CFR-3gTiH<<2ju_90BX/6flU0^N.Ubn;=W"3%bgfX:,9T_*Z1[/5;8M2])$=Q2C$_"eOQ>s'LU3#)d5\.S+K+j6RtY4"_%&;]]n5#0>COf^%dG^Sq$:lA[ah631>_>+%R/al#CtJ_Rp-B:=RfF*b">Ee:DLW(FP\iSp6oI!ZaoKO`!M1aIGdToROZL,7s/^jL5O/8jfiX\,Lu;*H_+XadZ/4\!O5Cs1m%E`=f`d%kgBQe[MWj[=<723UPadN!DCS`[DjjFu(C3HfJps"'Mh\J-Abqb;M8.:f]L`Y/mnWoTkm.%i<3$8dA]A1KTlcL13%)2@las1b#p[5Oa5jZq/4B\9&C\f:b3HjE-UaI\q1.qm(h@a\H>Gc-62o's*PH:%m%IdnP!lAh<'R8N1MNZf[9Q5Ne`eg:"8.qSXlJ"oufj`(`2<;RGd5ZYa+7:3t*)f5&d6Zg9)']7qfI`bao8rng\97IJ:2flU.O9Y/?KB,c0lf[?r#h%S$8;b1CQ_CtV<1giGp9jRM$ks)8o%UAIpH0;g^c("IgcgDl7Be;!o6r/*tak%07?U"k-nt(_LIK"t`OU&Hd?^qFhDURF^gOGA'ED9h!I12Z*.9JNtDR,J"A+=Ye;CoStd^)0+YP/<pXN8.Nj;@HmXSugbOg?+,0L5>9mDB#p6BLN=%9.D[iRE_[&8-?oWP0=jISb\;h%Jc[4>d@haE+7lq+kC!IV8ODR=#7IUH@VGc.%X_ANG;4u*FU=`-%`a@o#39fN#&3HXB!-\%=CbW-r#]#!P`N%s/Dkf&s/kpH"=r+TWYNC);/20;Tt?ko5MSsYpZlTR)tIj;7#k5N??ZOuuCi=@W/D?,3VB7d"MoP)X>d9uB5n+rpVL[GSgVs(Lplr0WqeCe8Cp;'+W[i2fsP&BR18!=sMBV9_Pbipo)H8n!Kn^ou>m>(Pa-tjP*#^N=LPu?Y3DR'Z;$D)`)Ek:N(X@$(WqEb-J[Ij!23A3/ab-[lqc@ehLA,/#pmp/#p:iN2oB$at1h4ks5=5]MXh08ITI5_/ApMGMZS*VVqbRr4R7o7lkV\2?,ABo'sLe],7Se-%>,Nl>-S+b'0\47>'b>)8PLO;l[H>i\ceq,QBH^o4-288<%4%N]V<.UgU`fb5nF,n,_gMVLhTNc*+;pcDZSC>_5:DQJ[kuk$;De%XD"?EZ54Sfg^?f4f9J"u6T]D(JXo6u&3R;!gm]s-LodB.668#EI>E+JgDSN_Ts\cI>%1I9L7,;iO0%_82K3/orG^F\dKf]gBCJJ4ga``/?,BDN1>a(H_g]mkI=`fb5V(q=>2aZF+[]Bf1_h;7>nkf6I]os:JFVsj/(tNqkE57ajf=CU]\?)q)W,Y#F(:G]o.Iuq@1YN^iP^i4].@^,;HGYfHd:34*Akm.@=NTW@HKJL_sKfEmc'I>]#ie4l*7k(h`E9rZ6rBU]hM1H9?Y+jA<5V(eg,^>l)$UV'k6r[Wu!u]1kdMGFJZMs^C)*`l&B"!h6sK;p?R'Ed_@iA$GG"JW556Pq?/;4"oufj6qfOV"%22I$Ji0S$9iaYdb=SZ(N)t.*%]H#GdBZsb_i5M5Q>KI^/s&b/opnCT`s$in=^@N/mOki:,X"\YQMcHqrF6@4?bTuP?0dX79dfCZZ8UDmP3J>!;_ZHVo*(ER,[OWY\?>f*nttGC0LjC&:"/*K^[>p"6\LRpqoBR6"B0OM,Mb2!0it0Qu9>B*4c""PQIWSBOq!FTaf2m1!t9q#>[2K-LQ=>0oVfI5\!AER8l_#%elF>n234N5ecm;[6#H)fa(B!iR'a-3)C^k';6p`4rK?ko7XdJpu7o8naQN,M<9P7Ak]+rgPhKJdeG>5&]n=dUrqL:_YHL^!?:G';L'0-?65=hO=do]WVGZ/WjsLOPCL*4UJ85P*134q\C+6qJ'!jIa#i^E:;AT_Y:kaY)5k2rB8U$jbu^%:Y\,^BAIcU`H+i#CMpodNQP#gACmX=J)5_c3$Ar(iV/'f^&1O7!J#2H&_#"'oh+P:m9MYu(/si#CTC[c/[+(+8jdC"rCFc,hkerUoYR`a`:17u%--)DgO#8G*-nBp[BB0nHhTLiU,FV=Y0SUm-^WGo^=ort^$FIH&(R6M;;R]Iafajtqc5ZBCHaRIGD&c*3dg5:`D;!KY/6gBCbO'C?H2IlCL*M1RN6>80)RT-lalXZ_sur*[gg(*hcjZH+qq<&T=?47H-Df3[.Hq$:b)LLa1FbF1pU3J!h@K$[^1(6NrCHM3\^df0T3/AcNe)U;RBre\5;-1ha:i<(uRo.(o)jWZMC.dK>Vrj!#/tYb81,%kr!6U:CF&OUBF_tjkO[Ud8(VR1rl&+3+VUh5Y'Ur"cq_.1%,MacE<,j5?!'n)WDNn&!\<:_0T\N's8h!bF8N-WGDPS5JPU`i3)ZV9FdZ%-s'j&fm!0eGe7Ob0k/*R6Y-jS:i<'JV3EI4U`0:^2q![`8ekFU%02V3ksd+uMC[oq!6U:CUQeZqQ#m*.j[QgY8u^fB\cI>%';_2\5FgR,a^:<28r^Nmmd66V!2-D]klu[t82gNF52LVOXZ@k3@HdL@hu7fdg9koZ"GZTc#9Un_+*%>]-@j]TJ,PdJSiLoV:tuK\!!"F(F9;LC9FfJ[!!"]582gMK^uQWo!!!"_K6.1q!)*mN%0-A^3A`QLKQM;1nDUkr!WW3sOso.R])_m3-9CAq!!&B+2K.G'h#IETPODY$uJB8s,2sp#"EAn"#!2(U^c-=ZG!!"\Z7-S=PhS!nf"98Fp,gm,%!&-ELhnEC-!<<*HJN)J61SgL'HhPD6&-)]\P"7M3!5RY\/PJL!)ShAHhN,7e(i^uG=)?1!(sP@n(s.DhK\(?\/PJL!)Si,qtN0N+!!#8U%NdkSdS3(r6ei+O!!"FhgMahIdS2KbN4U55!!">0m-G/FB&gmjEAn"#!2(UXNZAMlVS9c.mY1]A!0lQ8GMWYjVQR'SmY1]A!0lQXpYH;BB'n<[EAn"#!2(Sb:7MUSVP^4;mY1]A!0lR*acdn(r:[V7NOp>6!!">@kbF2*](u)Ms7a#B!WW3sP4%c+OD\+$=qu6K!!!!kEq\kQODb'bhu54qL&_2RPiUkc57ZpijiWj.2Zs*\THr^HT+C0u`JPCM2Zs*\THk=+>R9TV?iTe+j),,&!'j,%H[A,k=gi-Lg^O8a!%>s%T7%L'c+j2"^Vnq>!!%P4I/`s)+l3(f5Q>f[%06G/.*8;YQU8:ZVgnQ@\/PJL!)Sj%QS4,9o?p8b`SD(*!.^71pOE3e82i39pgW"f!<<*Jae/S)ViYeFrTdh2h%0PdJ@b?t5]d`ntEorGSA!WW3sP&J,62PchWs80Ql]-..S!%%H5s7r:KDAFg-'R)nE!!#X^h07b1FRtDtr$(Q`!!!"`.\rQ+s8;&"[fQO0TN'6$qeUCtFkj)!!!"FtF3d#DbVRS`h$O,^J5Z@*(V^7?k(!F*J)bDP!!#8UIeh/oL3.M(g9nF0!WW3sP/$n+^C0;ggMaid]-..S!%%HkYC757br=O-'6ceD!!(%(R>daQo#uX>^PTS9!!!"QrVG-\IeMH-F0j'rIeh/o`nar$!._qH*'#d?>SCgfClH!>!!!"QIJ;QAs7hZT39p-1q!$+Srq!>-qC:q,!WW3/l^`7V)9]tC[VadYDCGPc^aNNP:&RC$G2iD;+WoZF>#Eg12rVAYm0>jY(U\49,@(IV6rrBl7gkXfX/l,3nIYesDTZg)5@HCY,^b5Q*G,b6\.KI,E5A5JM'i[WUoej^s/T)`I'=]D'7#',N9+8eZt%.:0>@3*mL'F'!8MZAL\!!%Ohd+-[3?*a/"l`^'Vp;S+:^*fgST?aUUX0&N&m'G$tmKrpoTQo5#DpJp^hg=h*\-#50%N[a"S\thaNk7XY!.Z#3q=sC9f*s>f@Lg_HC+\-T0AgZ[qXW'#64a/f@8:am3T;^iBl>1@D_ftK+F],F857`\2t6%!(_J*^%\6uqRc41)g>bY@!;"q*NiU@9hfPEDqs.S!!'L>X&lJo>=c2@h]?uBR#j4Dg_cU"&9gnO!5P`)NAo^M[bJ`k&gjUd(G8*3?Z3^XG2/Vp!!'L2oB4Fi,P1?km^Q34"SUDNDah:(Y$ALMGF&@2^b'<=L(2P0?ZG7]#qn>ZY.;)'mOeYCJ6UFA++G8)gg%L:1%'!7iLN#PWhuX?>g,G4q9O&)/-#\*Eg"OT(lc#3[)ALD-AbHd2MLJMg=dHh`rZ7VXeiM92k%6rn':HDil$];P(*/]GB%g[!!(e@)B0X53./o8/TGET8YrSm/mQqZ#7ni1]`8%OX8)!fru0-;S2tdBmQ`J*m,,QB>h+pUipL4T!4Z#K5CRu"mr>[Q9h3`c"]\Q&oB4Gl4*U+_3HN+;Aq)`]^:q3t,p%<%eudsfR*SJc4_s3BrNmr;R^8e9OdHn*0K#!V=ug5#hR(M/?b\d0iK$2!..45B!.[Z/[F\a^h=#gEhVLFK,PdJN:%WtheU'&9:K1%]UjA3ao"O3:,fakXgY1B@mV2_%R,i!tCW"g%_[esOQ]_3EkpC*18L:5cL`Y#NB_nU&X06h@m@I6(#aSP'_MlIiKjQ'iIm;VNq8C167-Z`C.hFs`Perd*4oY%d.#>.CAKcJ6RqZffZ6>Z+kXeZrfB:HSp)0jN\^RlACDeGoS'ab>:i9hilWNTA-CDLr`6>GBq4CZ\[Ym_0!WR_,@A;))SE=TieX<-5T#b($UpAGFQX3>Hme\u*_T1A(?n2=kIVqDsBi+PE$K2Q&U)6HZX=E`ui%p`,;73H=%H\AIZ[!rr<[eYf$g3fZ];UrJpBWfhduSMuCZdh8WZ9D"Pog<<`^N"SYUhu(V7$PtF_>IC\E7V.fGAlU+&)A`m0Y=uM6=_LuMqCse'-K`XVS3+K#lG-=RLE"I_HhV(lI>MZZUBa1_R9rrOCX1^'`O,VSX$`pKf8S<=M(Wf[GAdQ`^gqWNbaI\-ipdr/O"oHAl:?W5&frs?,*D0TcOk6MF@D=iEb_>\V)nM3Y#MF,\hX'/Jf3P;NS!&.P"Dr!g>ge=hAio\B`uZo1e!\%KHKm=@a+o1$FjA.nA\47.?@T.P\d\SP$tI[SCf<[TXG.^eGc5S'_PE>IKLB0ReuFAk?VbOdM]O12U(gR-:n?eM@OrAS$&k7!$f>8;CU$QV*NpMS2h7,LB@OlU_QtB=jWOnAni*7W03`L\c/[^B1)uaWW$Uub4K/OAZ7D[S(UFqo3O470/FBOdL?0V9H49J*fT2[J]`*&W5pSIlOM70]-_G2=e7dUrd?W06^Ht=Ot%s;AD_S^=r%mF74LWgDU+e7(O(W:!5PBFmCPq:PN+NZ+%s30$BN:K&Wf]u4ZVc(Vmc*$>1.INl!js1=!U\7`MT,9rTU2!_6gogV>A4'St=>tBqKhI=kk#-!!&3`='&Ht:!NF&DUQQk=3Q\&8RLM0kV&hdBZrON/Pg4ZGh2fJXZAnQ9^@P`:$+(&q$3eQ4OKR2?[r#sg`6k)!0^GZ:XAc_2p^jDc9_-)7&k0$o_3EmF[`hc=Z*VFDO6&/IF2[,oX!!3e;?gVg&(-sh#uo<\od2"]6OGX^s2T)^]$)/G`UHIIcPV"*>6E0`[Jgeh:F!%MHXUYV^gbfT)?-pSlBH.Ao_Nl0jA"bW-$LN8gS($8n=YY%g2V3VlYpMl.^3HemdAfXffagVD%pjXJkpCNVCRq#2LeHNP%bYf,mu3s1p6*0m+Be7\ZE5Zf%cA%VD^&o0oikdR[T\^(#HZQHe_m9!!&3fF)uC>Hgf[rCKs@"\`oua3R]H=egqdn4/D>@3H]M]-Y>,2Lc1fVhWr21:!hR[RT6b-KVP4W'NuMY[*>(!LF[cEkg?oP)?9aa\bFs-09!U1lKZB#,X4-A<)b,T9Ue)@En6t=o/i*cF'#+OPjIb+?*u(X0eN,gk0BFLZ)0Q8',@'U;OJ>)<80EMpAE^)'E0h$f$rD"$W9.J1R"*H3Dq!t3UX$S!.[Z/]C3HAA+-g@f8eI-IU%!hV-A]fYY$0]=lG1k[Bi@Ddi0HPHM\DGf(C^A@^&im%cBf\*TDUPYJshVPcS'EA,N?*Cs8=r0UA;!2^\p(Yc3+,t>?tH;>;SN.J,XiN=^co-kFHgkD#!G1n&F1C!!#8fI=6M\U2Shs1%)P*OnA>>7AjlZ2)WA/JH,[8^G&]Lc;/4lClCG49GgVP>eb`9gq#RpoCBn.IPtF!GpQ$0j;ls?iTe+EH`E'!0HZrTgM\mBl7gK4$Ah9.,"f:cCBa'df9Au_Y3HU+-##Z>?g.5&7oVJk0;:"qXDB5j6eN"!+7&W%NH%!L(iAa-ocMCADA1/!!%uGkg?._2)SeN^M2/oM\e%d*@].Jq=EcbCMT\YF8"tR\@W"H!#VaM-Vd&Sq7=/KpYUHbmVEKAK*MoVB?I>\\$!3L2t"rl!!$o\V+[0+Y?rA_SF,(?hjT`g4ZtsMA2:_%YJ:)5eZ2d3mM5d&TL^6Xr,0=)Dnd<:gA#"Agpo4ETbhfmFMuuM!!#9`:7j_@h/]fMrV@0T:;e/7DS!`@%nB:?UE!&rLghgDbCc^nqaLpB9M>MFZ*a+%@(E$=Y:EW\Y&3Hjak#\^ur;.![[q!d7PY;$"Wn@e\bZd1t:amMsH:?Vgb[VU6LNAl%Kgj,uk]_U]ZTiJ;2rd&6d?!U`RZe)<`pXWPeKuar%70NYkiq12+?Z^C3CtuPjG8&6`c'q)cq>0E\j1^0H!'o5JI/3?dZY/0DpY>oV%^`[QDV_l]Un7Fm-'QHj`l=Q2G9/kkYcFhjP>=Cendstream endobj 14 0 obj << /Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.c1deb9a62027078d3450d54ef64db6d3 13 0 R +/FormXob.0d5fff89e934c85f71893ae7bb15a209 13 0 R >> >> /Rotate 0 /Trans << @@ -142,7 +142,7 @@ endobj endobj 18 0 obj << -/Author (\(anonymous\)) /CreationDate (D:20260611175425+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175425+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (\(anonymous\)) /CreationDate (D:20260611185339+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185339+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False >> endobj @@ -181,10 +181,10 @@ GatUp9l&N<&;KZQ'giI>;cp.kQ=N"b1i8o4*k(a8LVe<45Hkmjh&flj"tT=9QY-*PM&X1^jGn endobj 24 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 1027 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1029 >> stream -Gat%!9lnc;&A@7.m*RCR[:Dq9l%+DZKjhIkR=R^XN\)V2YuGP9C&^=Ha`6,p!BQg"=F/]1qt>;0+i]H:n$3+A5DSh\$C&B>#+C\hk$R%e55RL<"&^fsEgBXc>SdD_p2%h^2cLJC(`,sbLE-ZbS:N7mE)Tk4Ih=-8,&eJ78s708REJ2e0>l7me,O#k:KY$9Zd0o\%5\u-M>_N/FIh[riNc:oUbbSMf2$>&VXQ-mt:=A4#ED"^4f]1iT`W-ToMI8#8Nb8Hg2*md0iYg]#YQ8P(G?bR;6r-=`HD8]p(NVlCMH[1lUB+3^u&.AnHRS/sNhAUFWn9ES$kRI^QeO:M_H,gKMDX!Gdjq&C+.R!W&s@j'[J0WohP*(UbK=+7I*G!3b0KrWdR*GBaftkT8(Ml,LU`%OA27TCHtc,8l[o)W9lK[uW>^@CL/Cqk,b%D;`%`E9m&3_Sj=3nIs8uR6=_dq[L\Y.,Sm&2ab*YrdrfFeY+;U~>endstream +Gat%!9iKe#&A@7.m*SWZ/D7>1Ep1jNg?J5ra\7'&`GstW1mY)B&GZ!*8WGNeZt2AqYk5;@p[.R@6Au`RhdloZBaUb>'I\TJ"Z.MS9Y\F*FRjcFHXt,e-CLYP\0+a_'$oN[m'ka2"=)8:BF`Jq"#:;H!]&oT7@_.0A#oGlFYI-qS#@-S?qJ\dV@N:B-fK]jTCU_7l)*1Jhk'-2,eZ]J.uUD(IMdf6M)7Eq1;hVE'cQlJ&rfOND_I][6tN&#BU;(nAD83WY_K*boL&(qkC:04/a=Df:i%8)2r-"A,^%:j;=9\lF11_7$d&VngYqO3jb@MY57?s.N,PBE$dsAU$B=hPeYZeY@%`0`SJZ5JE:.'SpYXk\P*o>'I3uKA.nVfM/EX1G;>%Qf.ooe,-7&/JNgS_7!RS=YIEoW'&?.s3(HEkA+#qH@p^QKT/CP5GuFRVl7(ImVNu!'J*3dGKq,p.BV05H]XEu7e05DTG^p2A80t4W?aTg_P>OQ&4&,/O5.kA't4(=R?Mm3X/a==P"Aj>]L(N!UekMaVn?EBKF;k"7*6s83N!+A5T(XDDps4M$9+$WKQ;cP`-s+G%r7aJ+XBi+&,EHF8)g$b\4RC%`?GO230Pe6)/,qh8r*:@n_+>&GC=(Iqpd#5&]#eZ:;fE^jL:Pjh9+&oLBae,_U6gWe[14DB+V>A(@+Fs2*>WnDh33$K.HoaoA"DkOstr&`*'S5MgW'`.>k7jstmu-R<=K70C4#rVh(/3,EeuBV'=c]/AC=%C[BC/W;6.(dA)hQJ&Te[bIHKK_!smE79TSp(pF%!$^2F"9~>endstream endobj 25 0 obj << @@ -216,23 +216,23 @@ xref 0000154467 00000 n 0000253784 00000 n 0000254054 00000 n -0000369715 00000 n -0000369985 00000 n -0000370191 00000 n -0000370397 00000 n -0000370467 00000 n -0000370748 00000 n -0000370849 00000 n -0000372596 00000 n -0000372867 00000 n -0000373754 00000 n -0000374417 00000 n -0000375536 00000 n -0000376049 00000 n +0000369729 00000 n +0000369999 00000 n +0000370205 00000 n +0000370411 00000 n +0000370481 00000 n +0000370762 00000 n +0000370863 00000 n +0000372610 00000 n +0000372881 00000 n +0000373768 00000 n +0000374431 00000 n +0000375552 00000 n +0000376065 00000 n trailer << /ID -[] +[<629352c10507264aa8d79428e143d487><629352c10507264aa8d79428e143d487>] % ReportLab generated PDF document -- digest (opensource) /Info 18 0 R @@ -240,5 +240,5 @@ trailer /Size 27 >> startxref -377358 +377374 %%EOF diff --git a/docs/GRAFANA_vs_others_graphvis_pivot.md b/docs/GRAFANA_vs_others_graphvis_pivot.md index cf6fbe0..f54d3cc 100644 --- a/docs/GRAFANA_vs_others_graphvis_pivot.md +++ b/docs/GRAFANA_vs_others_graphvis_pivot.md @@ -10,6 +10,8 @@ _Date: 2026-06-02_ --- +--- + ## Table of contents diff --git a/docs/GRAFANA_vs_others_graphvis_pivot.pdf b/docs/GRAFANA_vs_others_graphvis_pivot.pdf index 50accce..e24dd1d 100644 --- a/docs/GRAFANA_vs_others_graphvis_pivot.pdf +++ b/docs/GRAFANA_vs_others_graphvis_pivot.pdf @@ -42,7 +42,7 @@ endobj endobj 7 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175425+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175425+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185339+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185339+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Grafana vs Others GraphVis Pivot) /Trapped /False >> endobj @@ -81,7 +81,7 @@ xref trailer << /ID -[<1571da02c167125d1563843e17c9f30d><1571da02c167125d1563843e17c9f30d>] +[<4acbacb74072b1ab8591e187494a02fa><4acbacb74072b1ab8591e187494a02fa>] % ReportLab generated PDF document -- digest (opensource) /Info 7 0 R diff --git a/docs/INFRA.md b/docs/INFRA.md index 073bffa..bdfc6e0 100644 --- a/docs/INFRA.md +++ b/docs/INFRA.md @@ -21,6 +21,8 @@ --- +--- + ## Table of contents diff --git a/docs/INFRA.pdf b/docs/INFRA.pdf index 204e830..816e434 100644 --- a/docs/INFRA.pdf +++ b/docs/INFRA.pdf @@ -153,7 +153,7 @@ endobj endobj 27 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Android Cast \204 production infrastructure) /Trapped /False >> endobj @@ -247,10 +247,10 @@ Gatn%9lldX&;KZQ'mk$`Xb$QCd9E-ne'<2!WCqU/702(<@u3f%WW.A_E8oH4[Ru9_Cl]mY5-3UB]+dB? endobj 45 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3221 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3225 >> stream -Gb!l"D/\0"%fW&,6/Z^4G;gO6U\F,QUe.&!e#bS!?#`,[5`s*q]!A,sj>?[Q^\p-eQUnDgm;$^W`D(/o7c]XNOq0RQ!]%J(n^lRu>V&-dVgq*BYl[?=)D#daC2rgrM3?37FCJ@`XFY(g6s"47n&&SH;(63VU;LFJMTjsrObBnPq7Ydq7O>;AOleDA]293JEhH/3S\W[L-LKm`#Ra?EaY5p\>Mh/Fp[pLn&RNS3e(15AkBP,%rTXk,\La?`t(Z(6MTc#K&GM!YF%ZWicD#D*p35+JqnN9u5AO"F-E\-+=1\Vu^fN'itO=T91CKj\tZGQ754`e"HN.hdkr'FEMm0?.C!lM^-^8ik.Id@fK7Y`V-!PRn!WTcI?-9KuV-kgSQ6(oD<0eU"a9RW`!J6GC`bm46Es+S$b&/*.M0+)eIei5cCmW$@'ccoRgP&:gFdGEXmC"Q:S^\#Ln:Ds50&=[oh!1J/r:Ke:TGrIBqlnq&99s\&7Km(eWn0]%e34h;E>7r3()LBnqVh;4'K0B_U9d?ubhnRoZbeY6NUfHLo6Y%8Vk1tq4ZhC(M+UMW4`#;&dcK$Wk4?>W)7&2OBh5(7aQqY,peJ'S&M=Li(V$)C>X<7#/[qSF,q04@h`#A!s&5!>e2g]P2g1A/6d3'W=Y)]sm[l%4:>+%DREr)"Vsqfb4m2Cq'N,HEEatkN=Iq;%`PgDXLj-T5Y]tD:oD-QXBaPpAc$Bs`J\,>=5f8feB"3R1:E^!Pl,Ck@0aDU*?CF+t2K.A3\-M"WHQT&=`J:q;>qPIcDEjn5cfa>I45#f*CVKO@k+M&:dDj!rm^';,?nEooipYJ4@Sp(Q'kk>=^-=ojnZ>@5gXe99=$GDr!P/'?>l.]RSQD6,:'NM&AH8ok!R0\k!PBld0S`^6n>[>@4C&i?X'u(4.KfIL(r2qO)8N:hJ5SHb"^c@sOY?QlL>>H5B@o8=VBV0t`ro!k[:e:SS>b!p_'#U`p/+YCXf>">"GOq*e\f82#W5S^H\,jo',iL(."$)6=sR*s?1hBT5`p.L]qFG]bHHt##Q@(^DtMr3'5EGYQN`47!ONX,S:CGqMeET-=2eR%Z-`)%:cR)ZQ.XJ#*,N]PVeEqs.G]`jBclp7p`t2SHR,QP:-W4&8?Q:0+f/p$m_.MP5$S:XhH"&b[(#,n)p@qo/H.#T3rI[c]Ef"8,TULOJC2Z5^XW.hU4gup)pRo9E&/.O4urE4142t9XD14QY).nLo+A;pg?&As/g&k]aVUaHR`Dl2i):mp&T9=_nOPh[Y^_%R[[(HpFtDRR`G.i7[;I\IdaFo[55LsqALKlm-7=M2RpP7O`231hk.@S*hi*g2!VNX8]RrP%5eFK"#VM>M--iKuE954EecmEIEV2?/BoWKX$;gAV;^q+Ke_$YItVND.+J7`s<1q,`LCO;`?nD&(bfUBHKZaWO&pQBHs@[T@)Ca.He)t;LW:`7+'Q/R!]5%7C`O9.s@V75$VFT_jt'H9f7_u/[_qDTW'EGm%1YB-7e22M&cmp?lm<:L,7#u8q8$X+l0@P-I!aoE5t;Q9S@YmlPMh(]*p^ck1O&&i&cTo(gWL(TnHMiep^tO7ru"`jC86LoB?Qj,ma7^p)04$8Y(WQEGjtD8W*=ED#`J#5#nT)3Il!AGo5A+PppCIETgGA];\9oBV9*9%>]BbNB!r+9_XRd:S-="h%Lp-0pQ5Z=t8Xtn[P`C[C8mB#+k/Uc()3)DL;udZ@'YNpb,I.L#4co4qM>mP#mHl!&V5=cntF2_iUK4)#OS#qfe.c")o:5q-CGLkCbPO'VO+Tq3Wb"PZ6eaCrN'mr6E[s)Nf5HE.><@n!@h)qe*uTRJW#RbhMIG'6'+Il?Cf-=BFFr>?+W>*Y^@FkmqT*\WK4$Qd[(',erp7d=j)L#\"!FI'%`ah*g2Tf?%&SY,N\Om\9FX7dqI-9]3N#V7Jf0Sf10nQ\Pr3#I@n`%eRS!KO*!U3HQk;R)L]cEM1#%FY%(m`$(^%JO==7;@B/#80G`ihOZ9NU:HoR%)l$\k<`mt]W7JGr?7"3L1=E/0-A!`ue@IWI-sRj/8II+Qo5O7PEIRC^i])s.T'*>8FB&\&o1WB-Xtl-=g)UPL[E8dh.h@p+LL]=b-Y!/+q(Mr=:A/P7NPY[Jpq]LL<,GItP8k-!7TChrHRF%80f`<7UA)!K/+,Rf-(^qXRrmC9!I@&'gA?h:k%dKO,tFQg8`g:IN@LrscX>jgqCff$=@L>\Cn5R!k`7gO?]L4le2m,r1'f)=nIl^9$[0@qR]eDTV675H.<"$$=(9H4;?uDifHScZEl8NPH\1aS?*]VofY'pTiLTQ3:GNr`e=3QNsq$B:'C>>Db2"cHC6G=dTd%jN,b[5XRDn0r\-]n.6RSr.b?A(TH98+,We#5l%,N,WNTlq=^rgB3O/5DgGas69V:bnBp4Ee5e10t-fb@)l$@JL"3Br`QKMes1Zt$dB[r)[WJi3RbG+L)i7QEo.&*B_*sIp\@+l[3P\T-.PQ(V]hCNF~>endstream +Gb!l"D/\0"%fW&,6/Z^4G;gO6UNc1)Ue.&!e#bS!?#`,[5dAA<]!A,sj>?[Q^\p-e(JD&?m;$^W-#FZ67c]XNOq0QO"_@O3`4q3^^uZQ3G7#`4jss7bU;?aCY30GISLN5c9db[lb8Qb67h0h]gNM62Ac_.)I"CY)nqs7bUpQ7VZ[=%lTIUQCOs:h[6cN_m`?+^uk)]Y(B*C.B,pr+WJI`rN]j\NGeQ'^)>\%0['RaPVTj^Y_]-fl\hf>f4;M[(F\Hc8D)3nb,i/gl=m_=Ic;Vji.L>Kfh::)B'ND-Pi>K2hZCA$31^B@S\&EPlY9DG[BY%KVbZWaIMiA&Y@qnsKRjr@?dE-o`!JJO(e"9HN]/KdE7QF%6p%SN-?SO8CtX`Q%?[UMK]1s'pEX$McYbuICQK]\DQSXml@ut)4b;ek9-3$nhg:'4alPBj[a[':H>]6,+8:3.`Xb:V85?:^-!s&8]QoGQ=#c,6-YMrso9Ws1oQ]N)S(TfLE[',G\ibbd7@)`]W#(brN+Oe![NFP#mm##:3"pEoobbMt\W590Mqj>U]Vl`F1Oucj']oOj=Z%i:c1)SGNHY.uP*fo``)9+QZsS^QZ%gHBiM@LASM$0/#'5s\1Fo#hCIE'o"[hXfKK5bi7'?UW$-Zii]0rlh+(5o9bYY9u+jc&Ru$m""O3&KX:eNeN(qI\UEs'A$#(LI=n)";+`-1kRuiF*s?+fuhun$$a917F0C'7L^UA5NjD[R?q0'U$FL"-c(,a,`4l%KOWip9>ni?K#Eh+,^u&`QsYtel7W"tn)p?&ZT%>bT4$io0+\@.B`,*mOMTHr+FoLSGI]ttp*d^4MuR"o:YS/Z4#Q.I"ZM3WOCn*-M5D31G]14Ts/iCX^.uBM3_EpO2i):mp(;CbK!*fu[Y^_%g`'&`pE2JpWeWN,#1_KDIdaH:[55P*:*IM@$!'XVrRr4:pVP[Z>t!!BGlaeJe]M1Yb:q(j5>^17Q@nGj@G_4/'K%?$^gjGDMU!j[kWGb(7WsoEl7-_rlM\:YJj1a_RJ2WTF.Y/o]Dg/hMWg6Ig<@c`CP-A2/%,ho:8"?Ph&8A[H3iO2pJ:Eg1gJbs"0?mh?]M,Y3X7Hp8`*TZ+;kim;[5MA"mG!pML$ujYp&?UF9Z/4#P\<;V'QGfYVDgFAYl'$K]VRqSfgAA+`_U"XZE@:Vl[&sri"K&OqZdh9G,&kFp^N(MKSf\`r1/WJu=lf^Rp]*^O`qVbcGi&cTo(gWK]WJ+Frep^tObB(":iaW$JoB@u=,mY!tp683PVp7Z<3*:;$35Ktm[X\o4q$F10mP7&0&L9iI*8/ZEFVn@7O_1qOeUW0JYk]j`/"AR%kc8b`1X]"m;Fn/N9JPCC/O]U(*t(d+fq/K03\g.kL"&g9ZcXB`5@[i*2(m48k[3MdUBVYh=,E`CX@L=O88BUH)7o8;V(j6mHd;,`\NPtsHj8"-Jn"O$V9_6)/ZB3Qu-Nap9?!&^..GjD2+)hY&c&pq,.7rP)7V3@kq(umr@iYt(#XWZ>1n(dp4F#nX2V(D+/cIcVUYIfEED2RZ?[6b._#1.kT]s4n2Iki\.Ub(_gFn/7M0T*<&Ii26i#tJ2PDuPj>(<#bAB+^)arZo3>=t!ieCFHYT`9hj:^dY(=h]A3%3o-%nBg27CDiJH8)hY%=Ho=Gn9%T#3lr7C1B'3LG#EoFF/SM3>r!mb53?tGd;7?D&E$b_N.1OK5-$2TB(gl0rR,NhE/:2pZNBe&q-.sr:&W*R(-s&2T`C6!d'#V[IY#>l=q^2,t"9C8`g"A%4\CCQaF%brKmG>%a?JqU!3h'70afl,qr)5DWaK1,*JVRlH-L$87&C^dO,)u,d\*DC';fD8BSG].WY:kF^iY;$MbHXXoNSbI(9aHrmQ90UY'p`iLTQ3:GN,JI=3QNrq$B:'WkBI[,]Wd*9YSMt?`0#Vb[5XRDn0(_=-WMD:+9L;DMUR\$\]>le"B;r,s)+l-ku>`)=?qIQGrVRI9)?CPoK`0T(endstream endobj 46 0 obj << @@ -314,12 +314,12 @@ xref 0000005922 00000 n 0000006004 00000 n 0000006969 00000 n -0000010282 00000 n -0000013783 00000 n +0000010286 00000 n +0000013787 00000 n trailer << /ID -[] +[] % ReportLab generated PDF document -- digest (opensource) /Info 27 0 R @@ -327,5 +327,5 @@ trailer /Size 48 >> startxref -15750 +15754 %%EOF diff --git a/docs/OPEN_API.md b/docs/OPEN_API.md index 5c4f01d..33c75b0 100644 --- a/docs/OPEN_API.md +++ b/docs/OPEN_API.md @@ -10,6 +10,8 @@ Triage **real device crashes** vs **synthetic / bulk test traffic** when exposin --- +--- + ## Table of contents diff --git a/docs/OPEN_API.pdf b/docs/OPEN_API.pdf index d8bdcf9..d87bef0 100644 --- a/docs/OPEN_API.pdf +++ b/docs/OPEN_API.pdf @@ -112,7 +112,7 @@ endobj endobj 20 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Crash console \204 open ingest API \(design\)) /Trapped /False >> endobj @@ -180,10 +180,10 @@ Gatn$?#Q2d'Sc)J/'_]eBoYCX_sY+=OXa@HVU2qGP6Xij%@GjE]DVOHaO_3('<@3@/GU-tO'`tN1SEB& endobj 33 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3322 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3332 >> stream -GauHND/\/g')p`p0qSs$hHJL2?Q'W6,gC5=gQua:`U3s5!A2^-)Hg$2.>dM4s8@\JX=1Abdr'/ERm\S\,\MifcTJ!*2LZY=1L(#e:1r^eEXt/F3TQ\](3.uSrGb8)TMHF=EOpfI9,NM9EVNR2^4D33pB'K!_pSfe-=!>YB5n&"b:L.SiZo/P;YY9XEMWe6ItHOY=,qh=;.Is#ZHa(4#&4`QgNZ)u.SQT0jW:)t?e#N#TEc$:OFl(N^[ChXhFE\QsXM>5A4WT:.aL9-93dB5#38?WIjNo,)q*nFj(2kP#dpd_mr&[15JE;8hoo-]nQCgQpDckPXI_jBMeRK-XW0h#6g'V.<\Q"+O+&3ELF8>qC&C*UYVmj2U8-MK)`0N(:X-j19HOcA)6$Z)M!j1%-iY*[[p'H(No1aQj,RpdIQ(_ji_La_&VdTe<>;_#^DN0l/=kdN4q_!0#Wd&3D2!j)O1Sm75qB4hDNqi_--@<_Ug7>0VQPFdh6i6*Hqd;bTWLni[5Eh5@kXLdalB8id>G=/mlK0LZII(qmr`5kirHB\2u\_?f%u9Xo2/57&g/%WT-bP3Pj(J8+u!H_:)+J46:e^`,^6SS%oZqi7%uC3T"+>MmBdSG6Lb6VCneF]VdWEWT&kk#.TX:\faFn)uF8]i!,LpoT!I%j.2`iiP?S&]F'gDY6m.1U*[Z%VJ1Jq)u-P_(ag3]GfdEU]ciQ^.$l=mmcd3X5"tcZfmJjXg_1FAMpt9j-Lst(fOG(l1!XK"&.S_,*6f'_ZUG$s(7_K]*Dd3JEHNihp^R7QI:\DoOWQR0r;Ga/=."%M[rHlq*,b9qJQpZ4f>"e%Hu2+BX7^-BK1VfgJ5=o(I&]'^^MO'Br)s1dklrO)[%68KeO)3WLU^#l>;fOnAb.!L#s4LW<\PD8,Of(\=E`Ak)06:>VHV4GC`T;<&9&!Q*.!9+4,o'DLfRMA!q/`$,\Se?#-8G2rNk1^[Mb[K)*k30jB%4")VNp.%!+D&e[Ln$.-5_&6uT1W2[??a/1K07cJ%pqZ?0?]X/3+j`['>tkS&qfB2-UmGdF`V7M(-QjPh)QQ!!hLX'k0el&/XbQ8GFor2G?hC:\H+Et_cNoC'0-_%Pg`dfkK`Eo7+U?WmA-[>(bE4sJ?$D_G[h?H5C2!_&b*2^U>&S_=L5!oSQCO=M!^:-#N#_3o'D"*F3eL;R'#asoJe@6G:&mUJ9,28qqAad#K36C"L$VGYh7&)Hh07oV!L<(g[`g7ZF,cf+$B%?N9>)6,/Z#]:7H1V$`m&+[cY=qEYKhV>1<TZ'[N_d:o0Olnes;h>46tno>]);?2dhS%B1.dd-0H!b+=Q3B$q.+=hT6>@pq8R?1l^Qq9^FP4NdU&6B^Bb@;^F&$;%d<-C96OcrfuR9qA3;is.+%r0:tK+Za4_7+WR7)VK[`-ERlIO%/eQpcg+EfeW(Q_d'#:M25s2-8b3d-UZ,SRH,lC,1nj04MV:@ujVXHib$Rd@$1A<`1uEFO9b1=%[h#'E@^LibTT"K:4[)$/9NS_ue?6cPT/"H)aUh0HDNm17S^rIOnU.MuOTSS,0K;Uk['MUpW0hc-k(VT6[cW+qn)\J>rUss!6`s(7FR%]T>\e!`:Q^'(n;N2Nj^Col(m-m5lIK=G;5Q`@-"-]'$c)V90#l5aGMg(oBGa"O!e$^jgeSpBP^-]U,f*$Z?5n.`(G*eKE&m;Igo(p]KbO(:,'c;-VQ)^ZpCca7U%+N3TG\L[)OcWP7chPokS2&C194APoiJL\F)b#<)0-5.&YG6Fa1W;NBOoN][HCfb:>Xo%8-VIs10a'+^E!S3j@6l<]O[3S8^%8gee`r]N*?QG#*:3gn'V2lufgr['!.0m+M64b(e2Tg$?POW\Mkg_1eE9YuJ0YoC0fW35?ZurU?^G!hTOie7cdVodaYX(;2NkBO@R56cl<\6BI5mMMfa4tSN[\gASg22k+jYOpk+s:HQp,Q>58`.H5R+E@imH-Lipf4U#m0[U)orrnKUNMiCTM.\qr#G8BVddW.88?Sh=;%N#DKM32#4D4(qL(c:*!o3bcI0,%-KB1[5=rEqK1r:ZE.('SLi@1R$VjE.mlTF5PN7;?l`0;h36bHTAU&X4PNBWZG,$'Let;Na9s[%gdRYb&$rNG7qWpf*q@84\>8e:JI/i[Yc6W0k(F\Sq!@#I!)]_k,TApE7O>A'V\\(CnRpOuk`dUW@-ZQ&n1aB$aImd#Y^._dX)%1kM<>'?`6o+t)?_9MmPka"i:*$ltlg6IKDuIRdd*m!@c%M8:%skk+9>$/K2^0IYr/^(i@m\!+7GE%Lds]mHGtpt,*-RlkI`\jF*hTDMcTg/2d*pF=@mjas`Ck3CZhJJrNHaVCCfJYg$(LN,hi'=#4L[RLYb3Zf=TQn`cK!Dg>Ene^?\MhF6f$Kj7.'3Ja-)>>H6OQ;dhm6=6'+n)SXj&FFH7[I2.qRd:l-NAio-:W^B$R0#?D]`'KrRdS^a.KC+&c"!R^+0!OP4+^=WBApq"[&M8ahendstream +GauHND/\/g')p`p0qSs$hHH4UaY+*\6]u&jhE(26Um/fA\Gq"F;H=K7Z737B\4n02)NlnoR:dSh!?47`qAF)L/nZm5`<"#5fb,:NnmM.lY%OrP]lK"%So9T8^?ra]4L+83eAM$b)..JX=j@Rj)fTW:Q`j&5'.M7.+23?`N(7DIi='=*Z.[[P4\eQW+ao.J$3;M`9h!I)&C?%7;1D/RPAEt"."D=Lo(X7].Pf()=Y?JBrqbZD-:"2$-DG#SGoAIO!orc%VgJjg2t$o$ka!M+l,]i6'o*-%i_g.S'SQ"r$0mHLc/+(3;dssq%G;g[O@]qYD[K#d7\hQ9n5G$R%UN\K&.Rqb4E!l#`'^fRCIt<<>9c->%d/WL]*J,Cl=Luk_bQT@YoVgdL\f9;!gO=Cop[AN+2En!KU*dApFR]p12f!Ah.+P^t=''Ku(\tdp^3dNUo:E7F]7o[1OUQpPQ:>PoH42(eVXsjFR_0a]<9M-+6XAEa5.pf?:1JP*E9XRZJefosg,=N#G!PLD9.iBs'>P#o-ncB2"VK]:s;E##8O,J3IO$&SMoHpZ,dO2Eru7fGboP%_LOU/jbMXWUp=8cA\UuQp/k6F\.L!=N&R3:WBk6_F(^0-:QfXJ!lqBDOoWtU*o%urQ=IXHf>P6+]uYHa<"-m)Z/sPF6%]^I*HkT=]5O#(WD`[J;TGp9F8V/3O6u0O<,'RKMU/r@4DZWS9S-SFS.TL%:J5[IRA:/kq%EdBrhA80%S%>!\o:FMeVi3DM45`"(l&t*^DX=!h"tWkKP<4ps[_L]?%d+NQ*s"(u6LqlL]g-0;Vpj5e*^rM$l'"Iq=N?RW;2''[IF;/Xa[Ec""?m^1*V]Qlm@MJj>eMaC`U.W%9s`?ojr!IH0T2B(-c=s8'm,\7,F&f$84.a"[4RlkLSFU*[Y4$D>mirA3s,.(Y2pE>l7qHMBW;b(^bueY%KWK#c_3j"Zr;l"[:iQ@/F]gX6%W_.BYZ+5e3E7>/">M.RfT>Ua%iV4cH,-+A!k.GXhMJb7k)bO+aRp'\N*L"@WB+Rp=?B*OJV!S>pYb91a_0f8=sQT5HA9p`p90q21c*M/JhJ-Xh_et?Nj*rC1G3QYbDFmjA.(\;q%!nSt"BL[u]2$BF/^skn:mP1%5gnY:P1G>!pj]*td_#\!JjDD^$?(JKiI&>E]pcPKF:q!Ur<2aH_TjYMN@Bi7ta=!P8+m_dP'$VkorkYau/#pTPWPS)Q.pj[u@UTh89MPH\s$.u%&0P4c#BJ;*3(Y@7+m-uF&-U71okaE-.lkR>&>AQVjTH\-&^LgWq96q2\EQE-A(OC7&A[&XCG6cU`S`FOBNJ[Ju-asq8+RcelqH%L*frKm5PL[KGS+fZ84Wl:)AD:%5%kA^%\#"T:HPp97^K2b:VNIC+M-WU.OUp7`NEtsfWka=(8j\J8[C,qg^QO7Ws!!I!^XI&ujV*HD%8!%0Z)Y!km=*&C'2*(\IWc2VKOaYmoWA`WcIt[G^2pmG%9q>,[AV"toICA+c+4N_Ot8rPW/0+ohXRHP9kZSfUioRM)9+"SnlO7hJpTipc#]b[VMD4hgBZ%e1>5&m:e!b.p.p`!ZScV6[;.MXVbD,81.5'+)l8Q&V_t/WL7V\=a:Tn6j<(3lRb=,S<(o)to0R=N>B<4#p[U8Wf9HiV/e$1.GB`7S,C=Nim$jNC9[kL%F/m38gj)c+rd'PZ-,M)2lb?a+ei/iqiS[Un#(BEn^=?3iAGXC2+ek$QlLE.>dc#o9-+1g8E-9tCVKXf%(1a]O+_/eNm4Ctnj)6E0;@V7TL]4]&^O>aT;C7NnQFVLYC_q*DqkIDLR97,`V)9\/#A1D7YDAEaaS(4"UVeg.)OOkuVu^i3K9(\#P&nL48l1EI8cXc1C5UI&40W\l9(:d,RlB]V:0_m)(i*]Qh5\mro63ckQPJ%gDZ-#%UIqkBI:@3HU)IFn,-LE>Ero,Nh$E:O]1bT"6A9lhrc3Y3Xj`LYYXq)V^bMu!7e*"o5m:m$Kj#_EN..;GB'DR3ZPn,2P=2=NO0bXmo?`tEXidTBU,,U[cUPj=WC%.3Z(Ma,gVFpP$N#&]nUtX;Ck<>&i[.=%BE&\>t.VQDSmT\BGt-J&1\qEgTm>JPM$Hohm8O-J^3Sem&i@n(p8)ZpAKY^ZR-M'EG=>$Lni]rgH7G2I,<\m:d"YkGrncm[4#=ShXJk/X@_NP\$C@Gjk4Cj=9o:WYK]=l\@6F2p?2W:(>&L=mRVLFP5!upBOP0/K4=s=`Y3(%h9[/kP.qjK?cMFE5h$F*Ntendstream endobj 34 0 obj << @@ -228,11 +228,11 @@ xref 0000004192 00000 n 0000004267 00000 n 0000005038 00000 n -0000008452 00000 n +0000008462 00000 n trailer << /ID -[<464d53c36218eecdebcff97cb5c07255><464d53c36218eecdebcff97cb5c07255>] +[] % ReportLab generated PDF document -- digest (opensource) /Info 20 0 R @@ -240,5 +240,5 @@ trailer /Size 35 >> startxref -10124 +10134 %%EOF diff --git a/docs/OPEN_TASKS_GRAPH.md b/docs/OPEN_TASKS_GRAPH.md index 43cbbe4..1b07ac4 100644 --- a/docs/OPEN_TASKS_GRAPH.md +++ b/docs/OPEN_TASKS_GRAPH.md @@ -10,6 +10,8 @@ _Last synced: 2026-06-08 (post infra/browser/graphs/RSSH fixes). **DNS 2.x off g --- +--- + ## Table of contents diff --git a/docs/OPEN_TASKS_GRAPH.pdf b/docs/OPEN_TASKS_GRAPH.pdf index 0578efe..a09fa87 100644 --- a/docs/OPEN_TASKS_GRAPH.pdf +++ b/docs/OPEN_TASKS_GRAPH.pdf @@ -102,7 +102,7 @@ endobj endobj 18 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Open tasks \204 dependency graph) /Trapped /False >> endobj @@ -155,10 +155,10 @@ Gatn#Dbo+A&B> stream -Gb!;fqfCLM')p^:`K!$NES?3m5_>&%V_`@0-dK92C+8ChiYrCSJeD:Fe<,t;rTh)R.hot#S(u4jN[8W\+0Z,\pKK$KA:0O#mrAML3f!5/!CC5_!)Y$Wk#ZLc5Pjg\aY[!EBa0c$cj`?OMQ(&L'OsX2?mu_@q$)X+hQIJf!F5[t9I?W+%c5)SS.jS^R7mfD<#(:M;>tn"#%h!/&mD]q[@bKI;0l$HGT#$8!5tcDnEI9N`$lmcdA\JDhimZj/3EojgrD>9cn8mj/Ujo*4Pr/rUp^`CJi_\=cCCdS3=tTT"Kdc@;5ElS)R!Vlu8@CWc3,ERDY>G&T319Bi5+thgPWQ?YNflcP5>Eta([ZG9--Z%gHMLS:_S[R?jt*]\rEM.4JgTLG6tMV4*3W(A-\1pCKLetDW=6j_:deR8(Wb)EN'crXZ6_Y.5)YIc-#HhfiAs6fha%M8a2?^fMM1'Qo(4;(/(/=l\_r%O5g$jMUqOQf$0PjFHCD>%2b@+ceFb6E,HKi)sgtcA(?E9C*rKPs8?p_)&-d?oIk6p#9.CB9K&`.cfITE]ABQ05js&li,mh##!HQ\Q!*cu6R;#6CX^$DCZR!=e/jR]b&n!4+@&kQghdXIF^6P+:;DVU"iImqf45neg8da0R1)6Xr:dQ!j2N?icMtjpP"(*rVD+WlV&*<)HO'#6%-3`UMq[-%Z_7UQX?uV-`A4/E_sVE%fl;n^R'X/C)9QS033d69Emo9K@q\mSgi7Y,)csG#g9KI7h$/ILE."*Ang]p']GAM0kaHpl#%*Bt-BGB%b2WUWjf6lcY%Z7P5U>.nWGhCH/6T*Nn\"di6bACITuLl4a$'aI7c2l%4_RMFK=`K#o\9Wt6),9\c"6).A]%aN_2XN)7V1\#i@3WZ`/c6Z[#+#,)u#6gS9eLg(LEOH1[:Hg["hg/CJ=n1P)%kjP\1WOsl_diT'<*e?-ckiEk<0^rK*(!pe0N6&:!Q/^+%n`\["E]K=6VJY0?77qn,eooHN:_U[_Y56L2C[Lb@10`7sCAnq$P2uOb-As]A@cZiPi]D`/41OiSS'!/`R_;XC^m:t_D/Ef.iRb&(EBH+AV^.NJCqeCD@I<<(s!W04j-4^80b7kgWFtkn#$VVUA/:'O<:)#4eTHNr6u\rpmVleTC,DcV,t2qL0?'/AjAH*-6IAKiZ)t;FpLE]\'ufpum6jlmTm^*g^XmN+%1(%t+NS'C?S"Fi[P\HotD-C;-o+2>_P8qMtT^f0T=B^AE;J,sFRrhriilMfAUcm*j^OG]lS7*T#,I.T0ig"opHQ!2*_@EFYPM`W?,Z.=fH?(A_g+Oe;nGUr?+2L$`Hm"@cXpAd;>jGD&kan%HaVHo+$*f6E1HVc`5`/GGt37:U)p3RPq2@nepu]8O\8/a#p;>#]1_"ARNGX.oq@4=%)IQd8%E\9C"BGHLTb<+bQOQ!nILT;KB;Qr1_1iF3!fIGVK).r$?rrRHU#'0^7XJPS6aI\UAXrk;03E5AMj6Dl+2X'c9\QTg%k:bgdVO#P#-_%KG=/OV&+dV\TZ=kpgtd/5t:CN`tK%EY33LoNc;sHcKf'""lYs>*66`n2Mo#L37To]Z65'KD;g4KH_E4=WU8DK\u@T#>iu8KL2Om%^ZDXNLaA$9Zh]+2i!8'`8p3o<7t1VuC/.J~>endstream +Gb!;eqet4Y')p^:`P=nCVi=a4-'o?l0JXhm'$1iBeUohU)DD;)?iT"L-cgn'V_O2X>`_A'Ag?9og9XuB%JZ!=1-?$7q`IqTIZeSZpYcdQ)d/L;ceni&;)c;PAreWj__#L$T8iQTa0;5:&4p!1nkF\k:aX4X;+eo?\"'GXWCL^-^SJR)i:PQk_f?`f]uoq9#/E8AO:/d6dbeVV\%RuN_[*kLcaFI_HMT*>An9H@j[FJGrDiCA,(U$Fi$5I6j4"@(Hi-BYDLpfV4kC$*A;f3mK,l"cpB`P,*OHf9e6`UYo;$gnifi:J"K)Z+[p\2O?\@CfPuR%YJtc$3L%gQCHZ-9^lgYBA,)gIS1cU+h<=-W5Zgsi/:WICsPMMc\K!:)kE[PGiFV"2u?FrC;/73X8],*$t7!iA$#qKhr9;?ofI%""gm3ZLH']'\i%oZUqD6511YWUOG[_i#F3SKn^IP1&.)%Z.%6mQO$a)'8W6qSj9JJ-OOA-UoHaEMXc#BoKs`p=&-XoBEsMg\5\h5h:,3^`R!*G#>N+&,?%B&K*;jj4JgF5&]=!@DhZ'f;S!g"d0jO0TAMJK)Nkb6*[(\"!h[;U'QOb#Rf=[#`"fRldp^k8!s?me:IZjR/ebdJcJW3nUD;M1*\h4pA:EJ-8!-]O%$#Agjr*U\W?<,>I_':(iGE+Wp-sG9Gb\bH$GqSp)AGPO->_Ro-R\'s&%cBZ%aqL0%am).E*Ft;p9'j-%'g"[s*?dWb_S;0eFcc6\NWQjTAEjK[3\aT;XHT0#!,eVID.J!SWqS)HJRYSeQVk;fUjL%(H)t8<2D3:\D'`^dY&qGNbjH4RYNB$tK&cb]Y/TfVP;aCSAjMan-L$qlL$mSPIdjJ/QGD)DLi-Ue`ph5%5Y4*,q:[uA%.JY7T7:Rgu3S*HX@pM-2Z\sReN=\mN>"i\9(er^]WM<'+HqIX6/=mZLW)V3@'%Who2L\k3WPbPB#A[ta!V417;G!3I3^h)*9ZsoXkK&X/\]RItB2QE//$FPu0@'uKA6Cp'Q1%^*gY^0#h1S*L#3IN0H=h-FSI2-fJ'mr3b5;7a$QG8=j,)@%SOS_*jj5T)6mVM^nIXF"u5L(f?]:KLDs8)sD^I:=>K>Gn(XaBj63N*Y1424sPgZUn!&?>5`Pi<`5h8LPJXrlFEI5endstream endobj 29 0 obj << @@ -198,11 +198,11 @@ xref 0000003491 00000 n 0000003566 00000 n 0000004254 00000 n -0000006927 00000 n +0000006936 00000 n trailer << /ID -[<90744d6726fcd81f1d330d72beafd35c><90744d6726fcd81f1d330d72beafd35c>] +[<5c1160f026f4367ce45f2b46bcebc99e><5c1160f026f4367ce45f2b46bcebc99e>] % ReportLab generated PDF document -- digest (opensource) /Info 18 0 R @@ -210,5 +210,5 @@ trailer /Size 30 >> startxref -8385 +8394 %%EOF diff --git a/docs/OPUS_SPEEX_VALIDATION.md b/docs/OPUS_SPEEX_VALIDATION.md index 7ffbc29..671ad1a 100644 --- a/docs/OPUS_SPEEX_VALIDATION.md +++ b/docs/OPUS_SPEEX_VALIDATION.md @@ -8,6 +8,8 @@ E2E validation guide for **audio codecs** and **UDP stream protection** (FEC, NA --- +--- + ## Table of contents diff --git a/docs/OPUS_SPEEX_VALIDATION.pdf b/docs/OPUS_SPEEX_VALIDATION.pdf index 7165f52..be21552 100644 --- a/docs/OPUS_SPEEX_VALIDATION.pdf +++ b/docs/OPUS_SPEEX_VALIDATION.pdf @@ -133,7 +133,7 @@ endobj endobj 24 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Opus / Speex / stream protection \204 validation checklist \(task 3\)) /Trapped /False >> endobj @@ -217,17 +217,17 @@ Gatm:>u03/'RfGR\;t4L9^K^nfNY%<6URVI_mTdqA.h8C-?3WZ/O+a:/RPPd$Rgn^['AY4m^_N;>7(C; endobj 40 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3339 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3251 >> stream -Gb"/)>Ar7W&q9;Q(uSfLUhsf$0?o^@Ui!P#8K'\&=V\#7gh`?D!,=GK"NNf[Rqn*],Wg#NfON[N^K6,46up6&G2*>4at9]/?iCW]u$I3u-$lm8f*3ehm9@pSMY=5kM.^1JOJH'f#1I=ME4adblYMdhi66='T+:RsZYPN_]9<.lI=$<=)5SMCE!O8.o'D?KWQFE9?(rUYuLgeVm1KjVmPanP>?mXO#P0@"51\c4CuT:ScTk?"#&dqc'(0dY'YCMan2'?cX$joN&Qet[$*!u/'Y:c0n/BL>X;?&3Z,):p#>g#!`%nmWC-fSkdcXd]Vm_2dZ%9_hFAd6aEbMuu$"SdR/tnf/F=SY82:/9"_t+!G/)o:B'/G??W'ghn@J@W4'9XF_fp`.Jjq0s#('*M\]RUG50+H,O/8a6-=lF7eqk-$Ts)`eHGH=WdPeV52mo1\H)JerqU-h=<"aD\b%aGeP-5ZPP:Ro(79P<0PA-=;(`IHbfab4CV(pY1B(U1gMp2+qEh,7A%3DC03s1epegLW0A$VA*.+HOOgR?!]saM^+R,`L`PEraXD0rD]M?CADp&CZB!@5P@t7Z>T)8CP=5N1%m81T0i7leEFc86;K9XsBG".oB@$(8Y1K9X-al>Q'(rok>j^*AK#bV$(`AW-CfP=97YYLi!sY?[nL!Cs8ERdZ7a1T.L*euBLQSfK=A`^fO7!L)!2O(o.+V3*8>@cmC]]t39[Wleb]b5ioWaHWTS.^@^/cDHNFq\f6Xd>.I^akEc`dF?8)dYSmiB+d&,bOCd.F\,'Rb>Dib';rOuT7'[,tdjVF_?1/n31=(1qe>`4^(EStQh$R-RU)(.%N#cB+P,o&5"p4\HQQN>AFpgEnY62S[^M.T^$h]?i.AR%^up1meHhEBOB;'EcQMUE=11LaTP!-QeREZi^A2:;VW'3@mQ0;Tpls_%(1@*RZdCUF@\eR)-pb\h@UOn5DCFl)g=14ZH,BN#fDdAKn-Y12i1:Nbh'>Z(3=cb'Xfoa1&(@=A.R08+4dNP:8gEW?@"]tO?n:]]uZWhlWUA>8Y[h-gg8-h'LSd*,$<,ZOSiJP>Kr4Y^:X_7G]rFuibP>5`P+#]N$`ft19umgqS!-m>"(WMWXn&;?Ep)=l$]R:O1/aH9FF],@8VaJGI*T*"_aJ;U?<6R32[7:0uM234c/p3..WlR!#(hHhS-d]0S;H9@bD^>3&MIf4G>H?O?+[7[@J1g[mFJJ'8J#<6bBcuWF6Vo>NfF.0B&/V:?A=ETO2nd1;TcPP-&meFa6&BT:Nh"R>2Dom)r4h:nY3X-r5pqGRS-74GRu!ZT?E$;L"C"[2a64q@qXsue=/JOME#0]NCqu7*Ft#PG3U-55fIZ-DDcJe'k;>L?m$a,2gr3JSt_.'K*Q:"mtA#Z7;2QmbfQcfXj]Y`jY7O["ht(7@))<7@!0aS,+1XFg^Y6fCV[QS[t!haf71^XSgJ%MldRa;p`#@+Z1e<<,T?aZZ=5#QFG0c2d,)F*4i"gchHG]8?8+k]o$Oj1XERr8ZART<,o%QLZGgEcJ6+4U+Ddd9-nTh`.s7&W^!U.n$1Z@&#airbptF6QqFJc4H20ZROF&Ma+?Tc2HX444X#=:+50P=&TjRM^V!kpgtN4M2s*o$8Z5-b+[?M&,CLJ.%#U5)CU]Xg5C[)h\JIeQZ.048S!;5CWUc?730lPOjP/q4ALcV,13U2./aS[9'3lO)=!+aE*U:@;-8&:$mYOFYS^[>jRhqVjtION;Lc?.^^>UfR^0dEK3VLFMn(/+:hlPs0;4>=EhF'fB?K/SEWb(0EE%$^<5#0u;p#-MtOE(&;HN6qKfnDf#;N_b?%5\Z3ajH%0>G7944Kfe$84ZD89=#3WNE"T$n5(;IaXVTONf$;+R:X_0p2Kgr;V=@a23V^:XmIj\0.228nZL0nSi#VX"VekN[QOIQ9gg3]b&?kW"#>GI9K/;T@endstream +Gb"/)>Ar7W&q9;Q(uSfLUhsYu0?o^HUi!P#M&SO'YX!_hQ5EgRZKNOT8c%n"W!f`K])&f2Z4"-u.?[&=^>[9pUF78F7nJ3ACOf3%(k#FM;.9G(MD"-I^P)4SS%mf.q+0>'9\YYOYUj"A2+P]4fSpOZ+\U3j^'7#l$pL3i[(/:ZrBs:<3`jYdM$1O_&tal^h"i(G#8Y-1bl>TfC,Y%,Cd"DAb<5(0GulWa#Y=/ZLYn[t+\j4Rf!(!56`C,g5!VZ*/Fh1pg`9$A_3Mfs!V_gS_fM^(6McjE,b79-_Qb/'q35DYJSf'g&f.;GkO7?M>uC>NnDcnd*hb4$j/5YEVBm,QqGb!Lb6h7M$Ct$$,`(-ol=iWSEHH7c55Y:`>'h@Ljr2!pVs3sG^[AkoN\<'Js1\Ls^7UtBAf''#f[FW>\n&po`V8(?5`okUIR<'9Vj/8bD9Y[t:%k75Zh6E!65+ZW0FkdPq&XeQa`hHXL56$Ue'Oj%]SD^aGtX;(Y^5e[XR/RnE_MQ\2sMQhrXKM_Y8]`,_!7V&F\NjL$QuA*mHU-^@3)ST^g&DHaP`9f7+pMW0B/2''`1_6u)HKK2ZS,Vt7)&qujNNBb\1A^IdE^]((u#>:8+,V0E.h>+>B1P>)&82n\Y8F-,;oEMTf,Rd^@+BGhC8T[3+iCc3@I-b;bY;Y@[`>j]pLajIKXCLhH5m+BS7aOEp=@,NUSD\Ik_U`M'X9ERMTBX3g0(i]q<2/u^mkjGqc5ail7@Lr-^1tpC&2M;7S'Ea"a!tSj1*rB&nCl(UX>(pECR`-cc\^@;Lh1gA6`s/'(n7OJgFkKrE?nX/Ga_n^`d.rGRH"PI!PXHdU2_7Rs=W4-6,"Q#$EJR%ggtO19)7o=+H9RJ24Gs-d("2t&]mJLJca"^.RbSlA$qHZNI)',g\W2!gKjgH[L#."#?l!u?<_tc7SBoQ/L-Frfjus1o7[HRQ>F,asCK?7f96/V@71/`kf#n9"Wu=Vph-O?X_#_2/-ep9K][OW]/_ojpO*fHXc@Q6N<.h/X(O&H`4uU>)(+5ah+,_8GDe@5("G7WBO=@j"ROl5/mND+2[Eah/TdcR@GWT#3_@Vg5%$/Wb,oeBb%^()^NU'*F7X4(ZI8=`=noa'\.jMjO;o_]gIq[P7Q'2\fjs$:5A-'HkMJ,P)E,jL868MRaGS5h9-=JZI4&GZ^[0eE70(i@:9eRTM^=KE^:RGfE%^"R7fp`:a]I7Ei8,YFb&g/[SJ!gZalbdX%@.O=(4=h]\^:,+5Mem/prrsd?,QGh&95X\9BFW.6Nd$GE[7=a=;3gEN?/]X2Q&q`)F%e%5mSXO$*35eI3%n1%(dTQO'u/?`_P(ZmrIcU;'UPkQBKB8QE#s/>O$*@`B>bi2QrtU_bI62W++E/NQpfSpJ&mgO%T<0A!2WTi/:uddc`&\tZeIkGCON^a6VebH8SGla0XIslco+iQ`p-rkFZY,<2nB%,cdP0Sp5tE"buq/o"C@KWArCH4u3]HAXHI+X"KMf4s:4=fWohO4eGgX,+UZ(Ja`U5R4ROF-d.UF?Z9MJ0N?)0bReqoEs\PAjW2r!Ot0%c(@'E5^YO!!EgH963$X1;bOK7tHMq6>ll>'>m,C`=MR,]WSH7(o!]3tZ*^X&/=f>Xs(&ZWk!G*RJohCT>t0#;ej]!sTA>rZVo7(&9L#7m^P#UMo_IMW!7&5LhJ7UON#V`-s)],>`u^06g=gr^5e@`"aGp-L`OkV4l]L*IFabrXHOptRhJY+bh>1MWPAXS=T1N$c%)J4X@J*VK4jK)HY]n<;YU9q\CW%4&[4V/\f<`FNO5sA\g@38;VOBY[gg+dGk)dPk#4\^`!i[JM:Qjeig?VeaMg&#r-Y(8Br+ck/k:kq]gMftYqrd;fhf`P4$$WsIc@,sAbr3_bj<&.7u5B@CO7b$PqaUd%$NfQSbs5:LQ&IIT^(U6[Bk%=L[lFQq-h3\_>g00an!<:/M"kj20TblEPWtj1AiZ"?#3+)PS#-#Bm`agHi-QA5sYHebiTW/O+@Q.X$Ja.3RSb;[Xfj>k*TR22EHD.BRK@-6oo`Ce^gk\6s!&0a]]NBL?)R'(lae:K0Ef/gLQr*E2L(fk/gOi2=)DG+YeIVE(<#g7EYgW&Qi*l!_4*k0jtNVQC_[u1X3ucsmA_SY":J*HYPW\3`_pd3[/eL(IEnE#.8uY%Lp3]joI2]//UUDuKjdE,hW~>endstream endobj 41 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2452 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2540 >> stream -GauHM?$"c/&q0MXfU9H%D*jBCViiE1Npj>h>W5]P(XI1G&sA>Q,X[*FF!l$YHP[Ab;D]\_G'_2=b94S(YR?tBG%H2a5=YY(hZ-p,@=2pB6"%D0_pU*'rsiu1(LJhS@\i$u\nTgT\gID4Z1,06=8eqqM[0P"#:t4r&Hi&YAXJQ7=T3]A9cW!^/80JJ0B'F,Qh5Z+*)\?3c.>B*Xi^cO;SJ=j)b.A"Ht-(mR&KaLQf\[CItmdFb1*'Y;jfEM=7^C#:U#/30_TJ60JSFHkg!+mHetu@\XK@)31ae#+tEDS!FN\fj.Ui&///p&)MSXbIlTYFRN1U:X5!)qNW,&NU>,!dbt^LKs+'uD'SDk4r^F]>F\/=W?E<0\b4CjRBfCL[h=j)c=iU>q;bp0B&)pnN\n=L*5L0]8-FP,sK@gI;RTY+[tH.aUXp#G4]q%t()U.23VK"$R3+RW;YS@_R/IUTlV.U:X!A>JFX%fe^*\hLF1c%Wfcs3&6X:df>]+#105h78X!*OBkC%hjaGA/u@DfQ&pD6(^Z+n](2;tjiFDKN=!O.`X?"(Cs/?N$;>]o1iM5H<2sdg5k/NE-Hu8gBJ:WJ$=6[ueoq^:*?Gg_8EnSf_*eqd!*\JtGrG50!c^i9c^LM!_V*fA,"hIp!/;eQ'l'T;8`&^>s:u"e$\[B*.QoZ.1&jUPM(Sj5#b]0HorI1YWqqZa8,,iu,/\l@;/3E4Up9+h96kXQ(p]L+*b**N'rgN:M!"J`R_O]4$*RY*!JM&7/_k76D9trfO57rZdr._<`U>5?W3NeokCM"-rCE;%gFaP2)CI"V2!i&O[cc3'ls`edPNaXe.1FqTbbWP.fGI;:qS,=NK8i'U$r(q"OS'a6iDqU/=g-75Mh3Yb"_&WAHP@SfjD);WGmofW,J#!ZUq,n/i.m7\iO[%CZ*t`$c[XM!:7rX5WpB9X3@rS_1/@S:6)IMs-1M_^cPC/"at*\I<6H_0bK6DJ)fgVeeq!EC9^D54O5sSU+qu-<[MI0SQii(RT)+5UAiX#-WD(jPG"[>B3.d$aup:NX+TnUlGX#Oi'palI\K:Z;7MW#LJEL`",=5RPE+:9P"EjY1A0+P%KaLc)c_X*"`i-kLmd5cR-*`BZ,#68N*h:'9bPr3Bb/9aoPl(c4(p%[ScEQfmHt%#r4t9S4H>O5q++m$R\_c25f\PPP.".6#jL4gl#"tGZI24<+auE\uO7_GnB^5^`IN=^.dPr/7Q9.Qre=#jn+qWrjot0LJ$/4mokEA7?s(V4A_sLq[EM[m/cUdi`E_%/[a"#WR?/QKchq,E4(Ar(Kq?)&Ed"(\fF*o\>eP&Lc7u>DJl?"X+)S/qB"1%A">7pm9a^G('i(P)CZRGko.=3OVBa0dT8<1O/!-\kpOM>EKi%=X$ppZlU%X^O;#jS`61Kg02omibHP+\f=+*>-FdA/n]9eF$Ai/<1S)2]ab5$N4,+/@K@5/,_b*B-LQp*s:ub'd:AU>_8@E6(A>GdRH'CJ-oN"s)knX;`/je.XHl8fY43hQfBmE0.?m#g3;Y5d;Ec_qlh+P!meA#iVU"8H(m+<3]IS'(LMhfWq&ks7P:"HR_tnd+m:'5fRoCmSn^:O-[Y3K!f$sp:B4G3VOQV)[od1A_kdUK1rQM@NG6rdRLCRkSGSsZFZY-+)n#%$,0&c)nRA&G,E2-$dCOY!NDEA_/pZIiJV4\G"n/#OE0@XB^"aR4+"VnL6*7sWpo#MacWg%!/O*G/B6^4Y[B0Ff`XWc)EU$qFZ3+`a4mk[.BW58u)-KdrZG;BDpl)d$\XnAVI87F@ucAJBM0Is=&gHN.%#"@'89ks5ZB'$qKJWhe1&^m=%lO;&,nMHM5*MB<:_KLkK8UQO4#.:`:[rZZ\-rjoC7]GZM\*ZL2opi@DsV-[bs/nmO9%ab8!I$q*GJF?X?+R*QKL"tSbMQ*>endstream +GauHM?#uLV&q0MXkc0&.FqY"rLSX!&OlK[C&[+,o2D;5e)Snt5">PQ1agm\J^O:G/!Q#tpG&GF1$o@P"FO-Iu\hQIjO-0EaG5uQJ0YT#>7E+2YbR6\_!nFCH'T2K[?qM.)`umZVbXjMAe)@4.O\oa.C4!'[Y<%F!>nUUT:f/3h&CB4^?]r06=PA"l]F'9BBoB:-b@]>Pt`UH=O)m9.&u2:3rqj$fi5h,AC+ZBq"/N#i5L$q!9i^1Y75OH)'0ZEe?m9oAjDrnn(!Le/B#Dh.YH*N(`WEO$LdWUI$hqZT;%*Eu-?o>K\KRVbI:Be6"PeGsL'TtrRtK/q`PD91@XG;PrHE"UAc)Qna7Q#Jqu'c`ui`pmTDhlUe2%lW/1$k5*Vs1%t?mRDa-28J%+*li!Y&6HmSE(@tPE$WPR4=fWAmO&T^)"BQ_rHt;5ai(IoW.0P/^Q4<*U+A$(5@E;U*0Ld;2uek$uqH>ia.ZeH045RPV?o";5dQ9d[kJ`ML+t@2Br!0K;Ks@`44>#)!+kl:)Kq(E+hm&4aU(\5*aZ,1oQXfUhm?&adf&3>/6B4/X')e#1-k:!h+K%RHT:A7cR@kLc?,BTo;G*GfN:3peg=EeiI_MD"7m'MZkLZu,Iq:8E3+Id0CRiC4Vfp&G1"kR:rL-7k)sH=3u-O(rmM1]V_mK+3GmU4E_A'Z7u7Rj3jGeL0d@D4YcnFs!$.)`[>3/!:b)Ls#*FJs[$SI_3fRTtF72S5V$(o#"#:b`0.]]KjB]k=bs6ad8HOIMB$`\?9?fP7esd<["b^(EuZ%$^X?l!ftf)+Cr]%$$%O+&EJG#H*HHQ'op5RR?6j_D;O[nnW"bVOEY-_bMj,lp0UDg:>jZ#OK*0$-E(5'Up-aR(PDj,a^1.k\p!_C(rHZVt]LRO$&k+/X"#@YK(EGVl;]7dlU8AXpgEm2fI2\Y:J7a`RIP?)rN,bG$8i)9FPm4lNB]b!*b`\@7#r*$4SkY18Cgu/-7SJTEZAEE39_&Ui]`ZZ?%UY_!%3\6M;:egRq6ZtQ_u^*^(h9/>l;-[r[-lLc9\n93c!up,icOjaM9tMOW.n?Qbd;)+=fSf;,A&OCmSe8BNl2E.!`(N4Q/#q"4[tMR='0NNl'bcf%TQ7L\>ON;pBCQ,blI.Ci`E_'.C@LsV@$NfKtA.)[mR6bh%kZ]LCaot90):tac`jnM^e>ahb(&c8$uNikK=+r=3FbQO1AOZA^)H*r=:`@jn5l*YOa%Qa&M>\[97/eE2'j&QlnY$2TfZjE]^T.#bNqe$N@<2Mge!XG5FWifr]=q"OjtBgd>sf@"E%bXes+PR`$*c$e75dk`,r$mYpSF/Y41Dt9c%tUXU8J*JdpWZFLO50lGa/';)BIK(+NsV^T(%.k1.0-Bct;,Zhhf&EAqlHHMe'DQP$^Ppg[C3mdl=&M>%"pYZ@k_cp[Wqd9cAiK)nRnSk[;O67rWi\[6kn?pjGc6dp-^Qo[`s0qQ-5#Q15B-IN(*325p1Ngq)*:%SOq+;t">fm0u/4jV;9endstream endobj xref 0 42 @@ -272,11 +272,11 @@ xref 0000005151 00000 n 0000005226 00000 n 0000006138 00000 n -0000009569 00000 n +0000009481 00000 n trailer << /ID -[] +[<614bd83675b640eed7dfdacefc7557db><614bd83675b640eed7dfdacefc7557db>] % ReportLab generated PDF document -- digest (opensource) /Info 24 0 R diff --git a/docs/OTA.md b/docs/OTA.md index 05e4e69..a78ce7f 100644 --- a/docs/OTA.md +++ b/docs/OTA.md @@ -14,6 +14,8 @@ MQTT is fully supported for OTA sources using retained topic payloads (`mqtt://. --- +--- + ## Table of contents diff --git a/docs/OTA.pdf b/docs/OTA.pdf index 559e201..8b3d35a 100644 --- a/docs/OTA.pdf +++ b/docs/OTA.pdf @@ -112,7 +112,7 @@ endobj endobj 20 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Over-the-air \(OTA\) updates \204 deployment schema **v0**) /Trapped /False >> endobj @@ -181,10 +181,10 @@ Gatm9?#SFN'Rf.GS4D42f64n&`n$ht@th)BSp2uH+W:*EP>HD:ISQPL+M+BaMNl3P[ElDH?6:t"o<@X' endobj 33 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2900 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2909 >> stream -GauHND/\/g')nJ00aP"6P>,_JQ=RU_Id"5R]C,?\ZuPPuJV(=ERuJsJ,+WORoY9jVOrV0hnhk*E-C-XP]^hI.1(I.YEpV-J#2kOKo`+0+_dKbQa!E?3hS\*iak_f;;7[h=7ile]3#iMk(qVaK[o"A-3;fSsaI3*1?JurCU,;S#ce_3/764b\n583.o=S,\/?4:ME!#":k#W'ENU\oKFM@N.=1M,[]oEl&3hL1YjjnGsVIp%gLcC23+VZoXb.#nf*O4Ph&^YD'P3[_fqhSTR0(al_jhc9c7AqB_L2,noE)EjL%'+DUC&Zesi'o!dEaBE.g>d_?%i7?a6;a<04Qupa8;#R=`+!0R!->;b57qr[N=AlK9,Zd(kM'sicD8]:e.^fs]m7X#PJ#tS@#_qQZD_`r!-u=h/(F0RsG9Rj3\A"\Bs5f6lNc>Ohq%26hDtP3u/j^,+F5dODl9RQo3-6'!rAPJMdXkB;oGa=&:CCCurqnn+c@h:0&3>Cg=C#+kMka&3T*$OmfZU-B]CZQQ#)!BOGh`INY#!FC@8-(La?p^_fYCW>uaT:WW`IHGT?`:F6$et^k4VW10:o\7.U-4[tP)?LONY8YXn;0$WTJ>VhQB90Z5"./XA@!+b/?RIB^ei3cOV[g`LCL=t%CF-%d0i_"R8/j.(&>(hI#HOFH*S@t<#b$_P.`dsHCe;&m]9Ra4Q5L>/aHlL]/eYE^d7D7Mhkh(e_F./I4#le0p+%tE4$aY4r!3r[IO.hR*a:rkf=?q.l^9l0_Q:M24ug<008N^B,L!Esqf^]r[WV7.4^n?#c%Hc414M'+kMQ`.oaHiUhr>`l9Y$f[+QmCM`&ERLq[&?7Yb`8+&0om:?#mGc8d142S;kQjg5hCUYkG81YuFg9UP-DL*'tZ#V=82;KmKBN([BnHM+C6X=ceP@Gh*)f-2361D8UlM<`Lk%]l]Js'7-(qMPc!@s`7K>lhY^lc;3UVf!"*D5s*YrUb&!W7:"\^'<<2)5WCp![@uj'`Oj1#"_dO?YP(:I;3P-k`]%-&Q]!SYB:h4X.!+CF>o:PH.JtlTNQ5B7MI_MQES3o;"PI`")GQ]C3NTm^6-?^:Ac54E+P/:lis8)dpZ1K<\4-,JYIU'$"h'&>sd^m=Oc@YI-6_cMFn+i_&psAiZ5S_Q/m`M&ZaV;RYp8L03$8/MPand7XS.:*m`kh'P_IK.n^]A)u$gW`C:k-\j_X=Vd&O"PXk"<4!8@k-XZchoJt,1c$-6=juSI)"@5t@4r":k4!-^m-k,$43l%uWZ3E+TFq5IgO0-2^(_Lu9g+O$XChUg+_4f)gWgWjo\O9*Z@]$h(Y1EG8R%O1'7fi>TS)"%=CKDGr"C8HF.EhW!;4_#S(ODI.m"oEnjgk0N%PZBf82$'i8.;5-PY-'H%ijlD=h&du=u5Z;S:,!Z;^O=<="^O7m[AqMBak2=Mc$252iq"b!q#*\Xn/-%HVIe"8`ml0U!':6?Wn88NnSg6ciAi9T3]F$h.0a_neF)iku;V6Ii2Y_Xc46e4%2Koh,1WA1PMgs_UP/M'+Zca)9q-J&hu=6;uMOG[UH#d/SN^ff'6e>Yo>B0h2/Yras=Te27L#b9%B&:6a?/Tl;0#M-FLq,'dBfHIHD%pGbX;_cZPMeHt1rR;nQaE?Z^,sC4r_>4hQVf\J]D/./r(@ML*u9_/aF2!&VkhRedQ`JKbdW,HYO[h(C/]m2eF;Hs#3H_F%leq(&Q)jDQNi1I;~>endstream +GauGcCNIt7p3V;.REjTUctsM%[c<`:HshN;b:]-I2V_)r@?a/O6le@sP]dGPJ%nMEUOFO"0[S7fere8TWS1b=QYh2s2ZUTg@/(f_C^Q@PfIh/PndaMM:@:mD%+=giB^AkSq#6X_:>k+q>fMbHEL-"-A-98/4M>#B37d7qjssTN@'\q1[Tf-&q>=7pK4cn6N.<_g*(\%\+ie.076H6afC(JFm%hHX/E8FC+!_*q.`N.14LpjH7(@aVMo:cOFUi02,?Vkp;&HWne;pig/stW$rl5[$iX"]:B$1f1n`*AbC!]Q!&/-g40Q#J*3$B4QiD4NDN=qTg[VUE9(EanIjCP\h@^3ulb"oQDdCkDR]Y:!e8Ej/a_l(fd]]Rs&IY)U]#MOY__BF[XNJRVpt`qQqTb9=RO&q&`diAN>%!i7:tM!ne,KG92L]u&eV5giJNHtQW:[5F4de=<9k"52g7kW*tAT#FVtYS)V1Re'io*G)r8R#[tkCQKlj>J1JJraSX]Ysjsm2S(Rh0\*h[#ch+Z*-1#ot.kn%U?^6WC:J41I8ZF^.9:HZ[=pAh_A\#f*@!1Sp;UHL$l!0qGKSH,Fi?NATX_U_aRBkdk%4I>F8""o8n1#AnI_A]s[J`^<@#tJ4Q0SN]@@L5-HRmIN"15R%:dA3=V_jO8V)9/=C!n()n]b@2u.1ipUAR@r2lah[inCSoHtY*4uLs6!)[9I1`A"dZ9=>4.?Dh1alJXAZ[f0&KghIDGQ3u)I%88:YPsZSEZe,_do3u7F(PYGNQnY/h>CAK;Jfe"7/$*nJm7.KsDSk]gpBsdVM_-_V*[<_"KieX-lV&J83^9FJaAR[R@N40eQ-`P`RoiuQcQ))toDNi=&'*8&o#([b"3lY1)iN66U2M!i(REiDj,IT70_E:q`=eqc-XpMamsDn9#DDW;K`oR5XL=DPFjX!W4n$4N1G3q;RkJTm,@@*@',,:j=@Eo[mr[oA@9;;'cCa%+6B?o@PT/s\]H6`:O9+-Z&57.k1XY8u)I0,P6F&rZ:C!Cu/W0L^!Xi:R'En@[LuQJ^kUjU\!LEQfGQC9uE/*H55PP\H(t3,FH>7s'M9kmO:WH5>pahKQ%,bfgIe+*)Cd\37&H`=p=?#F0frM)[9"e(:ZrfA`bGrN.]+IPZ6kS$p\jUNdMYqUOD-)CddL];9s.S/L6A9uX$ViUktf4YO#"Q-I>peB?YoNF`Xl%+(q]bhHlpFBTg_G/shlXR4i+2T\*O-HuDG^XMG(@qGp*+Htug?R`L,"]uo*R45XOof*G%YW8bVhrQ":JlN=.7l[&LWQrm5Zf2)F`It(F&iqY2adFbH*6s%f$JN*L'.EkRld+k]?L.mS@8hI4]U.VW@TQd.Y3\!lG&R`^IaXaCu%lojOI@QmJHA&KL^a>h,#+`Ita#:1YJ=ke9eOJps5BDI/Q%#_98mo@EmjO>6QI[nBl3S+Tn#lh;cQH7,Z.@JQcrXYR[N+bH2ffZ4R#*9WiCs)r41\J,OI+dWh-IHQ3_,5GZU6lP#C2*q=n4IXu$7@(Ri=FcC>bs2H&OAo`1qVV-dl,!GbQ_be(74p,=%A8DsVPpae3'\h+FCr&J%!phP/8)n\RANP?t4^sDMj#K@E9RQgVM!ra,[C,m#\.-8Z&)16VNo7ct&/-V@n4Z^VRKK:S)ot@r7SRa@ET8H"p"Z]D603qgKVOLU!TKNb(XdR^!ST(f5Q-VoS%Fq=O![U+jDmV@/S'*.QrIcR36sIFkg!rqlPQ'+B$pGr4/93@-kCE+9Zbnp@G.g3S?$6*q_dTqo&G:\b&UPnrjN?bj0J>/7%XJ^PYUR)W)fA=,Q&#(?eAH%,K^JrN3TSH0_Q%()Vj?g4W"oYtK(#fUP\*k;3;O#fmA5JQ[cNlG@B=;^aO`CcHl%H9L\p+Gtk)k!sF'^*%%l)$.4,##2.,u8VNqW6j'e."E]Q!K,V1Ke-CTf$Js9X:Ns[eY/2H*Y35"X.@O>mjeeemhCd6-6[%q$a-C,?WI!6TBs%"W34$@A0Xof*ND,m*+n51R=gFI6e9A'2c_\&TQm%H8Jh?eal(Y.;VnHq-WGu".oq7:*R4IV.oYNjgP'I4^NQn[mas1G#nA,3]?*^FuKd4Fq+:k4S*u!'m@&U%l>A_2jLUHNTn8L.!uu);Du~>endstream endobj 34 0 obj << @@ -229,11 +229,11 @@ xref 0000004174 00000 n 0000004249 00000 n 0000005036 00000 n -0000008028 00000 n +0000008037 00000 n trailer << /ID -[<7d2634c98306e866c360bd34a140ae75><7d2634c98306e866c360bd34a140ae75>] +[] % ReportLab generated PDF document -- digest (opensource) /Info 20 0 R @@ -241,5 +241,5 @@ trailer /Size 35 >> startxref -9982 +9991 %%EOF diff --git a/docs/PRO_AAR.md b/docs/PRO_AAR.md index 2ab7637..b42f493 100644 --- a/docs/PRO_AAR.md +++ b/docs/PRO_AAR.md @@ -10,6 +10,8 @@ Design notes for a commercial build without forking the cast protocol. **Not imp --- +--- + ## Table of contents diff --git a/docs/PRO_AAR.pdf b/docs/PRO_AAR.pdf index 1867d66..6e292f5 100644 --- a/docs/PRO_AAR.pdf +++ b/docs/PRO_AAR.pdf @@ -97,7 +97,7 @@ endobj endobj 17 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Pro / OSS split \(cast-core + cast-pro AAR\)) /Trapped /False >> endobj @@ -155,10 +155,10 @@ Gatn#?#SFN'Sc)P(%9[@2q> stream -Gatm>=``?/'n4K4^eCYcEb!SRZoLpBlt"nif<1J675Gs?KHqfg_#gF!l1Dab"#j'k.FCoMM/A+T^feFY^_SZpAS'c4OH@f_jQ)4f/=YEJM<,X.\c5DWmbe!+SQ/Lt6XqqjRP#J=-\gkZ?*(qZ/@;Fj/;N#9`%m=G?EQ5Wkl&`l9N/5dPajG>7"OXBqt:EHW/Z=_%M.Nu&2M=uE*8t!76.;'a2Pk9RL:";M\g>)u)Q4]l0LtLX^s`d>bM4"sS$p&F]7[MK&$^WXTluK,:Is%ZSptGHK@5mBaM[huao1R\,a(VH(,@loP'N!N13l8%MdUG>U(raA&b.,HCV85/pt,s6*(a'T#s:V<;"tI5H'9i^Y1@\,Y`)]]ETL,U9]=&Lnh]`84o>TCJ$/odJPaSZclk6p+=Cf7[iK4:pcL"bl%fJtA!'*VY*o%ULkn%L,!o,HP(c"-&UZe6eB,Vi&_W&C?aRUet1_.:DMp5+/W5*plujFla\b#(,u5j5pPM^WhlE1u\844%LGd3;-S(kb<551k,g]i"=A<(;@E\?u'42e\U@MgDnl"#JuJIV,If:0bu!n-#4LAOac@(R=Z-N'8?4JN+LjA+pM<"R0j4o[\D^P0U'DZ=Y]a()p&(&+\`M$2cS38VHp7`)FE^rQ^W1R>suehh\f,"V8WC7<[@IL&0bKr!id1gk(B);_IpAUniZsABoS6lLKK*U;RKa(g'_+*]E7t_u7bE-?"#]Jp%`lZ4d)lT/Rk3^LR%TsQ#n==o^c1DZQj*S8@ZiPTQr8I(7j:2N\W9GYj^NE(kLo2@&^+`+HZb=D6bPu@%itFLLX(cRHDT%tha<8&aWWej/s4M$FhqjDYdtrGdOEYs8KO4<._R^il&6g[l)GjtAYdD9YL\NgJ;:cRV@Doic$*J#/Mm/\psZYAHk>k)LWHAd/p/a>Pq"qpN+<>+22lbJl0uVhT'A,B=4=#(A0(^m=ht+;n=!,Y#559:A)'7IK6p^\(fj'd\,F+UG+%=!t/g&sk09Q.W33]Slc91:9K>EK:4'q>jY_=FON7+;/W-+[$e\V:S:CU,:?T*\m$[5gU]ET%pW;--pJiiUX2a^!:>s7p@J!,EB1HA82_>*$nE(@MhLNo)$=9ei\)aP8h%nCVskS8fFj](-Kt\Pue,:ucp?Og$J>X$F_[XoM.3Nif$a]iC\b35*Vt6M-(5o4`(MPrWd"H@MjYVdLhi$_1j,b']#snc8>9a;o>+L"d<>9KWgrV!4FJ.aCY[=A<3>MH_kMHFnbA.R3QO_,/YGY^!"JCZ_q*hH4@?CH,OZk0k3.9(%/1RP+]K?+ojGqpW^9ms@&4IVVm*mpbXs-UM;lStD"Z>r6o+V*gg!D0,K$V\^:CLA"Ri8m5-5!Qjm0^1H.ZaBJ7m#/-8\%"HZ.fB)Y-_7WSmfeV6(E%dlF6LKf@?=E$Z4DAH"e_(2r=,-,9%33!ZM`W7-d2.6J<#YB.iMrTZ?LqTP2"'Zo4.P%05qSX%*7,\p,tB=i9bnB3P=8";J3h_$!>5YKp$)qG7!U4g@QbEd@:?!<0N7uF4D4%\ZFN\Ag""%/Hl.kUM5NVbJ,5!c*5C0?Nq(g7J:OT8TSlUW+])s],C2Hu]Uoabdk)tiVe&r]bK\jHidBhf`\kj1EXA!dK$=petMBS=k7.`ad;Z1(k0'NI?.U^m[rHZ&4oSSn=<:5K"b\5jGoGfMgDAP&Klt8IqOGDXh<8pG%B`s2-$5ikWs?sR?(?N\W@eB8e7Vmi-Aj/Vf-V&Tomr*1ZT#XCh>7@Eu=UW81XaV\eNoqK:uW:*_u!j]aCU_AE=qfG+ohmfB/n8VWK"j]_ao,8$GA~>endstream +Gatm>flGh,(4FM1TPA3g9#mgJ7@X8:aA0mA\F&uFo:i66LkI$!,f'[U0/_;[h?Vh(;5?T?Yq'uG?3#14GC`K:a1%K9F9=in4cklR-8@+CYTTfQ399$;\U8Yrk;tJtF9]a(4Qnk;1`@<]HfAER?=T[3mUb,5+WtCS)!L(-_m/(%T74s0l!6!^QQZZ(bS41c8LSRI&24FG3CZpR"pd%n8hf%K1kH7P,&XX7)"SQk?W388GWUD[9!*@tA:,?rJW]S,CrB8AmIu+'P&%2EW]0`eAna&W)@N[DH]RL6#W4_p^GB*5dIE$&$@W]XQ#Q1WT`$Z/kLEa7g7F=N-mDY2l$8Z&hpAR'&T5,4[/h4fB3$:[i/N"6^:.P";Y2c.7#pjPeJ^[0jX'<8d!d"3NgPH=%PJOQYU<%ck],Ee.1Vo$`F^r(G%-mjB7\Y38gh"Ap+8E4V[`_/N@/q9N9e!$D<%&MLUmdMA]#Zeu`glMiIno3aV?Ou:!QR!(iRs"CKFn22$!B+tEI>:F0tWPH@e\5E/Zqf&u0M(M:a?g_qK*`-i,n`qfk$]=5;2-)1JXMj^&O<2KV16a_o274KD5mWeK8A3)JEpc%'U]%BY#^[a&>7Njah7fUDBE^TlcsU@,HBi!m*Vh+YJo(13LEKJ?ZUo7FEX5f1?aE;'Og2e`i#:U$8R":1U@l1D:Ni>#GZ#&KOER:3+O;u0EJR=>mYbh?E8VUgjM32]=OS\EnOYbk+Y<@-J^;pQF7M?Anfo8+#m2)MG3=Y[q8u4Vf1!N))\NgJ^M[0NLlhpa,Pr;G*mGqHRf%P(@Ulq1ITDQt,L^AII23T.G5j^='hGk/t)qP%?q]YEuVIna"lVd]&S2:9Ml\:XVj%Z7!qhcfuGmTW8Oo8")aYhL,VSP++NIfQnh%$6d)Q%Z"1:3teOj]=Tp5"alpC/pf?J;Q;eF01JUs,IN\hb7R)mI^&;iRl%'Y;*]NfU2YO7TVs[.CS[lg&WEfu(T-KtQ6i`:OuBYh1qf[:*YcLN6LjF.5u9Mn#L;)KAfHM[!@1&r#%a=hej-@aR-6i$E.:.PFl/k=V\]5:-WbMl)>(^IN+7s=`<&YC"=_hh=U$qpI?0Odh+#=M[0X#2KU_&sPWUL42rJl+M++`cVtNPhg;T/'&Qs\ISS+@SdEcE\s$6+%I77#_[]T9,F:F'GZji?95gT'0"KM*$cZCI%+qBg_7D.';XgqD3esrD!;oVbUPqle\ppGN3fYAI;J$tr9?Cdrp.Gr*,]2%U>Q1D2mNB+cPHX@i.7;gW@f$UM[-`@TGi5&8FBjh\V&!V`Kk5G-IGS&mIDP-VSn8LAG>(sErrLs8RIi#Q_t0r9!&&oU/Ng$c,h"kf`@j=K`C-H(eXI#S&Y8W&Y]Dto=A(Cc;qN0dT7)@>O5Fh$A?i+EqYZf-:Kp1HD_/6=`3[VWNrh6.LQ`,fjta?=BmV"B96n10uhAW8^:*#2*OWQ(^_cu6PC*>hpn2+7iard+S70`tq[Psb]+VQ7"^^G>)Mn%k[>fg//_Sgsmm1`,t4^+r&E37Wf=jPA_ngUaE~>endstream endobj 29 0 obj << @@ -198,11 +198,11 @@ xref 0000003547 00000 n 0000003622 00000 n 0000004353 00000 n -0000007726 00000 n +0000007736 00000 n trailer << /ID -[<78b839a2a40ce2e87baf5e316381c96a><78b839a2a40ce2e87baf5e316381c96a>] +[<3fa21412f8ad7895eed1172469be6cd1><3fa21412f8ad7895eed1172469be6cd1>] % ReportLab generated PDF document -- digest (opensource) /Info 17 0 R @@ -210,5 +210,5 @@ trailer /Size 30 >> startxref -8161 +8171 %%EOF diff --git a/docs/README.pdf b/docs/README.pdf index dff0c96..43f07c8 100644 --- a/docs/README.pdf +++ b/docs/README.pdf @@ -123,7 +123,7 @@ endobj endobj 22 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Android Cast \204 documentation index) /Trapped /False >> endobj @@ -258,7 +258,7 @@ xref trailer << /ID -[] +[<5465d663d38226836f882a539aca7e31><5465d663d38226836f882a539aca7e31>] % ReportLab generated PDF document -- digest (opensource) /Info 22 0 R diff --git a/docs/REMOTE_ACCESS_IMPL.md b/docs/REMOTE_ACCESS_IMPL.md index 0f0eccf..1eff4ba 100644 --- a/docs/REMOTE_ACCESS_IMPL.md +++ b/docs/REMOTE_ACCESS_IMPL.md @@ -6,6 +6,8 @@ See the full proposal: [20260602_REVERSE_SSH_proposals_summary.md](20260602_REVE --- +--- + ## Table of contents diff --git a/docs/REMOTE_ACCESS_IMPL.pdf b/docs/REMOTE_ACCESS_IMPL.pdf index 21f85f1..cf18975 100644 --- a/docs/REMOTE_ACCESS_IMPL.pdf +++ b/docs/REMOTE_ACCESS_IMPL.pdf @@ -133,7 +133,7 @@ endobj endobj 24 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Remote access \204 implementation notes \(v1 WireGuard\)) /Trapped /False >> endobj @@ -223,10 +223,10 @@ Gatn%;,>q#&BE]*.IOH7_i('F8bWFrCe/.'+Cd&qa> stream -Gb"/*lZ:gj&c\H;@R#"*4.G4s'IA$BDNqL!\8cPH+%\P:7fuVMKS1Op!%D("p4)O_0C^2`Un)sL7u9)KJ-C,$f_t2HV1FLG/c'7$!8cKun#Ze_%eiWCqFVjtDrCKkeXs%PUhARa#")>VK/FVuVD7Ar3,DWjB"iSF'XWgtY*a1CM+A+$MQ2&D"(uhB6Em>k$loS#meNFsc5:Y'+/f9ATAbhT&&59T;BeA-Gn#^n@c,1.'MV/)r1H=fCg(H8(VB'QJ/h/qJ&(Tb0X%oL(:5X)J6au6[tJGpp8&PVFedM?#n\HX%1K/8>QH%'AnScZN]/_a7C_b6%a]u/+NDG"_WR@P!:]RDHe=T<7%&o%l6FbQ3C>DPPp?b3@^\m(<5dc5Gg,:+&oqC^_G$Nf,!"o',WWtHij20WHEL:Lknag5-UI#kj!.!Ek(b0jIg8:roKJ`M0go._(s03+#o<(?#\\8&UJDSXWJ!1IH77">]"pr4`jRQgPG6=NE9dZQ7,C>.j36P-g]FhmN`i]-fN/.L*4Q8G?G7h;Q1_C%6qYO>lB84?>*N%Zf2Pl/8)6Uk,I/6ia1_*)t[SsMp-@tr/)HKA;dH#JN;S[rBikSols9R%&0!_2o:bs?W^m;8)ap[k7,bHcs1``p3*bV!rE;#&*[7iVK*?-ZLAu)04-6uW[8'Vl$emaW4N0u:$dCI=g7qrp@tjI`TIqr%t.,g<*gX\\6h%C$=4JJ3`mM/Pfs^U.clC;e,Gr<0d7*t8W7FDDBQcnAqJ^FEr2`46esF*:lNde[>(>VVEX9\&t6ElCgc7WNtbmK#B57Kaq9:+KI#Y,l!iqu\gS0$5*WgG6,r+6?#8b#(]-);NT([9hB,Iq"=j\Dc1+@FSKn>-dB5_3[8u:UM'peN8'diS3$=8p>Oi:1e.+-W@>'/-W-W)eDMY2)QdfAfA`-^H1P93NNAIY?YdKeQKS,UQX0f26UC(dSShhdbOAQ1-/Ip!k_X\B"juZb63JF@5teYL@1U6uJJ:IPa(GXb4(4kjZAEn;RR5rS0XH]h9l6i0/Ms[^?gmIPVg!.Yp@BHP+>"nB@ueY$q"ak/s*oBl%!AUhC/FoDIJ4)"_Cfu3RtIKQ-O9(6"uZEe/\G*prGk&]P)^U+$4BW_B.iWdXaipDt'a<%W5)!W60]kkt8P31)5OOELi'l.4-kMT%Y;"UPN=bVfuiS4;Lj)PI5>Rs6dq];()Ks^kq[_Put3e_8I-+ItYpO[aJ^_1`M#3,%qjGn4%#s9j)fFC2O^19cgM"h\-cpDH5b,Qd!:tt1I`fW7heY%h7g+,A=1/&#n[uP<+B%nkgj6q\CP8Yg7L["77Air\2qmfA"\90#"&&?5U=gXe8]oBSnk>WfAqIS.$Hf)<0kFSAF:jjdXXaVJmS3h1iYS>S6[YWCO/2j<,oF-cZS,8]!TX;.p*-(cL/cHAJO3$O*IZofaBCY^\M82&\G<%^I/#U6S$7L@KL3\/%:fTj.:fQ$"tF5d2o*1=N%P7`\b9sqZo0B88[rAik^[UfqS;/+eMmHubSrnhr>#C@r=YF9I#1HuF65NF=U4+;D^`rO!_mNB7Y3T!XL,EANhTm]>3'dI3?(E,6PjG/c9KCV,JXVbSaq'`ihAnQ+,%$1!SlV%3h2^Er\![j9GOH1-CKlqIB'7L/J@]qm+WN>d#laAqsbK,Z.h,lJp5,-Es<4h@J-&ET"1]X0qHNf?8uNJ>/Ar78Ynh>qg*#EA!(5CD`__VQTkN[JkhQ.Y#A41FPX;L,q)]/T67N#p^Mp^5&Kf.;?!h;?38,/uQ)OQb]ccG%0p`,Q8JHPt'0FMUeQ$g?_D+\E%\rU4@UO#u#nl#hDf.$gPG[;K"ekZN\D,otG9k,cRh`Np9db"Fb?'-Y0M1_r]9n17NhJ`OA/DY'V!@L/!.*!R9H:jE3MWM+ugLXFL/->(Alm/`JP=]XkB"5OG>^a7[daa.F>%FUT;ciU-008*a\*+]59[VJW[ek.j>Z2ceAB;@hEO8;`?4XM<-qj6t8b)RJ54rshVmGGJ[?oYTp?FD\c$WX2j!X@7[FZ-WU;H2;H,l,gc&9J9q1V/\;So=Jf066^=J.CI4.N3tF#2(j%?7^_G^Gj-c/7@"Roo/OY\s+i*)5&=T7HJ5S1FdNn4,Hep9f/endstream +Gb"/*=``=W&q801kbg"F`hn!:+skjjPVREB.4:nc89Sd^V1L*d6:-eSJ<[.hh>b1u?K*,cPb!6VX^pE7!B/:0]"`-i2,Nh((B<^%!T)U!n#Ze_%eg@XqFVjtDrCKkeXs%PFCsE0#.CN)_6Rps1kpGV%YrSZQnMei"YD+%.jj&TA!2"/;3`ePi9ZJ%#Zh]UOm>?LrP05f*J(BY"*L:%e(a1Af=,tUe%<6ddqi,[7C6A7^/NU(jYbhCKDV;%hEKtlKDRG>9C5r(Igm'5`O8b5a95L?%C=qS_6Ob\UGsni&fcVE^?_q:/Oqg:=jqcVo3SR&C\$OVfd/4T:q]"8]n#f+'#1^i^k0)<7_Qt*`Y/fq&rrr.cAQoSIlHs0G:.+no9YOEsO5R!i/O^Fe+-jrBO>YGT0:p*"27rndTYR]*JVYiCh_TA@j]:/::3Z4>oNgm-bS$YqSQLc6;])RoN!nBXn3Qf$(1X8tX@cCOFXV6$[3/<0c#A72jH"$'em5<69&]\>juhmK,EN:--H1^&&2^l@$*&GdtG<3TY(010SXH%1Xap"]=4SA0-f_biqu+boR0nmhh*kcH!`+?YUR)BT110E7]2,]oZYN!d)P9M%CP^n;UWe1jo_XKZ'+.Pq??04L?U[LG89]l@S=``-$8E=>I!JQ8G?E7h9:F+s7ALYO>l:8Bjn1N6a-YPl.\n77NU6/6ia)c@'lOT3&`J,n*f:or>(*oA:,B48#Tf0fC]rR.+B*"cVtY\qB;"Nk\U1rmR'oDTa1I*,U;m0tW)r6#%YN1;Vt:?H@OoU?$_"iTbshIJ=G"7K7FfNW%Aa>__rLj5q!B+$RLBPrh?^_=u_*YQa+Sit-9##JD'G':Q.(9=?W90pF=`GTr95oY#bV&@bSJ4*Pe;Nfr,SB@V13b83M=+koZ/!77`9j.M,C&-"ua>"blkB10Bc,-D;?lT:lO?u[;8Yj;]k]jM;:>mCga!S;9t[pJ.#=,8!*]`P*CIE.AhQ-M@u-=6hP*gOYL[KM^,.K`HfMf`X.WrkXX*;fo,sonH:11?W$sC=R-KID3VPB%MTWife]Sp&'3ea7QZAB,<%5ci)/##R[#O*Va&C1JQ4mj&nP\c0*Ttk?'Dda]WA5>j?d$\ZS_P_#JRSihg]nC,%PHr@Y`oa%9ZPYn`0*8_5.eUCjDI:TnQe;Wuk6V#kAu@:,A[Yl!QY%?d$JK'6qD+]@,Jl_WFs=K+Om?=!mL^#29<[5*Se#[seDbh_oNL(s/'KtH#%M[^!2$OtN4XcEI*)Z_WA&jPZN1K/K`QQn"uOe"e1%kg5NH$&e3P:*3Li=0_k3D@V:jIbTj]e0i(O8XrH(BVKT+LSm='b7\HH*-%jD>^T?DmSqYq;"@kJRi6M19j>^=&-_0n^Z.68IMnTHX-a1RId5*p@2Q_6!=0Vh$'Ef+FCTl_ereVaZGD=e/+aF]1.@Z+CB.ll3:9bMF\[Bb#ieE>?#KUX'8P%;Z`E\Q7ih!,i$6GPDl.4=(/Fe$Zc#RSk)SV'>VYlml7c3jMQ?9jT'D%X.n`=F"^3Q_f--g!ND66HZ4X97^C;Y3jPQ@j,?7R`C#FJB2lLDmahoCgL!Q7YA;B-)oR<.BElcP3irF;FgB>=1]FMI1VNSc]8gRA*/1G\seGaAEbQK$NP\AMG\MI$ka-(Q)@]VT+gB`rXB?](AWWJ;A3_5#@?,M1)+YuXDTO65O#M2.;c+sF(YA8B.8]96dhH$07MMaQcY$]'?A,P[K4+S%)mi);OakdFSJd..4U["SO.H>[.Vf8#1paBds>R2?i@J&AXY_;Ik.NR>3MD9u0PcPhc7b1015CjD6b)X:`Lj^=+;7%tni1eX]fgF00%s!s9L?C=L@Mr=IdH8>.T#G]7fpWB4`3Z;J^;6E[/5Ib,G9PZAW-^#5JdA%ZGKlKDHa;YPpkp-lqHIV8)8`l'&=H(7t,DDo#hEM),6-A%133FnAQ'TAcqcg6B%l/FC1t3W+q)FW&*q3qbIpK=@\cqIZY`7VTJaMM^+U.p21=X'3TLK!+H6Ap$b9MLrrNY\VD>#_k"mDJM;4!s$JZb4E;Yo9&`?1,MD7+QCS9S_#:E_)NS@IK%msQ[M'8k=Y\\HD&crl=[AIhD]i$Ku2BZtFB4hgc;S^sqUQuj`Zlhr!$NL!a8'DQj2OeKZ*L>AZnp8YX"5[)a#(DYq;\)BR3$3M[=Bt]!a4a@utaU8ErN4CK-%l!j,hI-&DOhg0n,H[UGo-#8G!UL'ntmr.l7iXm8AeWc=kP?)%pnQ^j"u_)=8R58=M;U$mN9Y*?"uMggFQOX>H[)<8:EEpq$c0@nnGa]LAWmoq6j][n-KU=i3ns\'qX2l22EM.t7kN<4sdI+tD,h^8^eq(aU3Oac/=fJfi?pG-i(_3V6g/P+.Xp#C-Y7<$Z&3%RSTuK7Z7Wkft5eDe)7%Fj6]6>.QO@CA-Si>#+i5#k[(3?Zq"P)R%%4&>NPBeKpH6qXgTYHmt\6KkAhKHF_a&0*lo!jhBc&=Q\S+pl%]/)BWscFgf!$($+DE)ji8nEaBi*hd#mgms]nDd<%A&IK=)ERi=EO_"DoW(0eGmQ.N;QODrb7GB,ObmX>5;#B7<]jf\[O4@`^;:Ynln^Y_V9,-Rij%>GiG8*%onFE2aNCA5eOX4ek*q$0SUI5dEEHhY`Cg-XFG:qap95l/?0j?tO@!R_+CQKr#k-5bcW?Lq?N_S::5.#-i`4%[Z[IE(7"eJ6;W04-/-nV/bQTR';ZHI(k@QKC&-.9YRO`)d`IJf3Ybn~>endstream endobj 42 0 obj << @@ -279,11 +279,11 @@ xref 0000005339 00000 n 0000005414 00000 n 0000006344 00000 n -0000010472 00000 n +0000010488 00000 n trailer << /ID -[<5f9224eb7473afe06dd231cb210d3972><5f9224eb7473afe06dd231cb210d3972>] +[] % ReportLab generated PDF document -- digest (opensource) /Info 24 0 R @@ -291,5 +291,5 @@ trailer /Size 43 >> startxref -13889 +13905 %%EOF diff --git a/docs/REMOTE_ACCESS_VALIDATION.md b/docs/REMOTE_ACCESS_VALIDATION.md index 02a8f15..dc99e59 100644 --- a/docs/REMOTE_ACCESS_VALIDATION.md +++ b/docs/REMOTE_ACCESS_VALIDATION.md @@ -8,6 +8,8 @@ Companion to [REMOTE_ACCESS_IMPL.md](REMOTE_ACCESS_IMPL.md). Use this when verif --- +--- + ## Table of contents diff --git a/docs/REMOTE_ACCESS_VALIDATION.pdf b/docs/REMOTE_ACCESS_VALIDATION.pdf index 2102747..a52c1fe 100644 --- a/docs/REMOTE_ACCESS_VALIDATION.pdf +++ b/docs/REMOTE_ACCESS_VALIDATION.pdf @@ -107,7 +107,7 @@ endobj endobj 19 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Remote access \204 validation \(Linux CLI + mobile parity\)) /Trapped /False >> endobj @@ -170,10 +170,10 @@ Gatn#?Z4XP'ZJu*'_elg1cKUWd^Q[3$&K-qZLt%,16)_`+jOnZG2Ia-T`p1^.]ZAk+qZ3cGE7dq"V39? endobj 31 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3457 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3459 >> stream -GauHN=`^')(4Q"]kdki5Y+/UM?,AIe.`G9uhsqOU8R>@b[@h*8&Wd2JqrRhN3R&nh,/?cEfng--m^"QR,6@?(,K0U$>D,0mdHHdE";*4E8<>hL/[*NKH1LPp81A,(;^Vo*U[`TGnWG6:3d;&@KmYO>6H^qnGYV\jfnL0K+!:O0#;is[[Q\kOcUFO_mcW32bIKgM\P@'CssO-9-Ib&r4s>,K3,OO,bN8USR:=bIPV+6R8B]4Sq9,jX[Q!?T3qQLE1.B8;chKg:6eY":e2"JTP`+C%A;@i.R7/r-'LWZF+WDg8o+(J)58fG7WMAG3%:rN(.b:+@mQIMTWnq1;[BN`Z1,*e7C:J:U*Ob/YJ,hq9-3X[ZCeBhgp"_k\.&i%,J*F*\kHQA[4I0SLIlSXBOD&g$:;CK#V'C^;P\Ehm%AJODn4*hI]C`Vh_-YFqW08(b]10#B->F#a+JPXCb\\dH?R4+%`[7R$N>nmH8F[*R-h-TE>0!FDKEE;"r%??r@EqTl2iRT+0Ue2Ob#_s*)A#d@pP)n+]KE!8?>cklDdj$1]Mg\E,I",[lZ+hjCmPq7?/)JBoYI1irTUrnWKP(r!mf0F3QAkld62NZls%6iJq'?H0`kBm6fNqr-YAM;iD4!??Q]3%UTV/&u_;"-d#QB.mrHm&BrT+=SQCtu/[l:CM<=5>cfP@^?g!HK49)/(mT\Qc/7M:("A*C?TFT)!Y*58[d)QSZrN.g4SWO;NP`Sg/MLK84Rko8o)onK\tO$#W08-/fnku3s`0\efj6a]=nHPjbmEh!^:I0snZC3>X,[m$KFK](]i0W7(7lS1O&Z32j*K/W*DD6*>P"skJ@%EGW..1g'Kh5G'V)NX;INb1LlLf@7rXk\K%[g3#VNGR0Tm6D^fC)9I)'F.QV9SN,O`06#>CpV%m`7@3IN$->2j27.DNr'qV$V_P_mD>eT!B7<<*nJ"F]5n_g*Or%S7O9cU#9th$S\A!sF%f2?ADuB`4AB3UCuCiQD&AE/MgU?aIkMsF@pqA_T4E7A)dl#3XQMi7O8_WK7+W5fo+Shp3EbTltbl*TQ<8V5M3Fd[C>L,O5gcE4[AC?jTYY(TRJDOf-Yo3FqT;l/[#-!pKhFjmge&-K\-ZS'LoH)n?`"NYcoe`";\g1>SG=."Dhsa::,fZj$Ng31%6B%&G$=@?H>`5;Hu:l`4$tlhh9hrFIa]_$LF#G4@=!?k9dD>jrh":ArbDmrfO(I$V_47'L%T.G=@MhfYc/(1u@k9@qSHC9:@eojTV+gCC;BBW5X(ijccG70$ubRW.:[U"4fiB+`b7)@H$,*9\Qd/R2LUW9"I0o"Ib[H-.:8NEDhAgct,nN5+cj#fM`F6j,^4AS9');;prj*=C=L1VN)I'O!,k(t'^iJ?':n:k2.9OEifrH(uFpUT5KAc]l4iQtHa:i9D`%8u6Dn=#*#!"SKk54%U*,Jq)ZTp0)Nq6\%CFR,WiCeriUn3Ep'EDV2T0JS^^PAQ$h6`NZeBM;H"?CikCWGfS+sZKoL[QW%uY(3Nd_kaZR\f&D!Kl_<)0V0iXXmD)FGc95WAO,QF#a;U#T3T^t9SEW-bRriu(\24_e(1?PGH\pq\N."')c]TL&3fB'8%m..-1``Is+FK7S,[uB9M32t=jKh57"6%V9ql=`=rqU4QLgpo'_$T9H'O(*kj,VMdl`,?k^4i^S>/]g1F8*u/IYa65Q/6VSD58op)O.TGf"TQcbS+;C@DaYcN<:aAX<["Ug1?8Xn/MVMsk%T(1l]QR]&(W#\m,]Z]cG%9Xa&LtI8ET+'_,J#u+FqMW96?H1ZrA07Xe`+_ZD\kZJ3Zcf%@pbMUIg8fn"oM(Xm5G5KK3(n.b=IHK+l"+;\Jh]:ELC6ij_kXYIVk9IQ*EGcoUIu)KT)SSF^iI8n];jQMSt';>c4O$K22KXk,c0UV.gWt#m98`+J>%)rtQr\W8-G^'NAV'endstream +GauHN>B?9)(4Q"]kaJ'EOV8+B'p<@=B1o2])189ha%kfi?cJCRi@#E0$rO?KHqEeejr[B'eQT8CiT%;7,"bB2.8Jm6l"t_8._&k$N&a>Cm;63,R#bX8.l)cDs%@cpj$?H@LoD]5rV"$*9s5ZUANX:m:'[$/hUc-\T)nCG9q&V!IY=]$>h.U>FTm$R4r:Pl?Ej'LVq3r#VuiO9B['A*eAj3&Ep7;RPM2GE_!Nm-nDI>LOugWAu.hKV8$*6'J>\@P'ojFdX>c6dRO8:hVob9@4!8Qb-SEn#"C5W)P#p3j=7m>M>6`^[Tg)]FlrBp'U+'?1JZ0_=iL=d0&o!,Ll2FNZ72_8"?``SqA)c[CLg4n-Yjr!RP\oq^^6H*(IA*X.^][*^i\QQViujjgHRc4UPn`fZa9c@4drh"UuAA4[F>@@uM-]W1^ujDCg>hLC_JTi0h1kn03HE`\N5;iC"CE'e%!"C1t-;7>;gQ4K=YX:5]l-/TNH"sseSi7pqbDDkNFajIn(o+W'#Ftj%u:C(dd6q]i"piiYeCOCS&?]Rqf]aqA_'M#f0Q5g&M$>$Or26k9n9DP6V9MPoeqiM[U/i'Eh&Ml!8rn;Vu#ojI$Jc(@r*F''VLnD<6X"36$Ahgpt5.NH2KlbPd/qff5GicG1kWmJa^8UZX!WcS:"4fY+>HmQ`B&BAPm`n=Q2['(B^V/T_XH`2_f3*[uMi&QTXFrg1#/u1Z=-D?!+%*GiVX)98DXb%9h,oNQ]I+]&8WCj$ap5Bd#*`Tga]L@10l#M34edB2Qj"J4<2VF:TYGn']4td=p7WR,b()n@G=fGaZIM7Rhti#b&=e)_6_j)?WlO3$9G9[L%+6u5ZmjU..?qol0O:TnVgt$Ap7ei*=kpS-3:>T+h_+0tR1XM@b4"6Wn*rd_ah"KDW;(iAq#oWo2J]o`qd,Fm\nE/B'(\'#KhhoE.GVShp%iN4Pp]*"Z!@1aM1EkM6SM*[c-nPd63HUp"o#:)aXrZ(f`X<,JRF$bFUg36j$>FpQ6P;&B$\p.>VJ#nYSe`rZN]U"*q1jKM9?+r&@kiXf05ZL!"/hXQ.b.:`nI=[$u@Ycn;8,i_$MKA8Z(R4QY+>K,#E_E/SfUaZK)'j#RnmG?6'/<0.&aWnm&QkPA%)d2MrR:259@N>3`kA:K6+(jHc*DE3<%jk"4Z1n?_DlWl8R_tnYdtZ:Ah<+`-"-gO-FD6^?!lH.P=pO'.c?#g):GDgXM*jY\hjnc>Qaljgn5Ce"0o$Mce3jG:@9`3Yb=hq@e]uh*tMcOq"$Jb:qMUN4Idi+k;-k\P-,P5"6i"pi`Vf;4P8Wg%Q'cN/Mo\V]"o8QIRN^:%mFTV*,FMhe<9HY=H4riLn>-a'=@@9E-a$"e:-%n^e)!n/]mi=^lO6)KNmI+@le3nVX_=7V.](]"Y.n/BkTEuJ^Bm?M72.I&:lm6fR19PKMkI+1Nf'3.=Am"bO$CefEt?K(n2HPDbL=m/?5S&QZYU>kguX(1b*[#V_6EpiIl@_VrO-EL_%]09>&^s1">&Gq/hLA^`E8pIoVOS1BqE=S2&YSN'XAlED0]u.WKGmR=CXLNK9;!m"6=5rqTqEJKdL,8`q=<,S%WNq'SQmr#VPp%!IeGiP%Bn1;1E70ttnFpE(#UOF2%,REq'MdLG^n@F-=MF3>LaUtj]#7_2L@6OlP?[=0Sm_,GOc3r@#=I)4'^/hqm4Ip[e6BnU=#9]B(h!#A=BY'^H"4m1R2)]-o?N430=oK.E^T>H'0]_5XDlMEL48@>0r5+suK!-KPX@sMA&-.p;oFVI?,`ERa=%70&cu4E$:C&cSB]V:PnO-\Vdi`I(8LKmQ6&N3G@)/k"A=G8A3:6>8F3QQEmIfoda#lk4=Wuo5+GX\s0@P"$4sg8VH^l5#T_HI&&E1a!ZF\p$@tjDB+#IQEhn;df>t&QcW0:PL:iBOU#ST_Zme^HfWXCW5B5J"pm\;;Dfhrs]:dpiOq>NZppU4cZH%U;j-o3KIm$US\-ha#=O0*/"f6@f.Mln;:]CDq,Sj'9H\]7;(e#D38[gQL>r)gN#4V.K64JtT.r\<`"`PVVY((O>6$JmudMADO%r,W@V>~>endstream endobj 32 0 obj << @@ -216,11 +216,11 @@ xref 0000003956 00000 n 0000004031 00000 n 0000004854 00000 n -0000008403 00000 n +0000008405 00000 n trailer << /ID -[<844df79e18ebca290bba95438eade42f><844df79e18ebca290bba95438eade42f>] +[<46b18678d01cdbe7e73839fa89d85491><46b18678d01cdbe7e73839fa89d85491>] % ReportLab generated PDF document -- digest (opensource) /Info 19 0 R @@ -228,5 +228,5 @@ trailer /Size 33 >> startxref -11549 +11551 %%EOF diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 044676f..77f147c 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -12,6 +12,8 @@ Last updated: 2026-06-04. Living document — refine as alpha and commercial tra --- +--- + ## Table of contents @@ -222,6 +224,7 @@ See [ndk/README.md](../ndk/README.md). ## Deferred / post-alpha +- **URL shortener** (`https://s.f0xx.org`) — standalone PHP service; SPEC [specs/20100611_3_url_shortener.md](specs/20100611_3_url_shortener.md), scaffold [backend/url-shortener/](../backend/url-shortener/); git + FE TLS live; PHP handlers TODO (~8.5 d) - Internet relay gateway - TLS on cast stream - Passthrough video codec diff --git a/docs/ROADMAP.pdf b/docs/ROADMAP.pdf index 050046a..317de41 100644 --- a/docs/ROADMAP.pdf +++ b/docs/ROADMAP.pdf @@ -168,7 +168,7 @@ endobj endobj 29 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Android Cast \204 implementation roadmap) /Trapped /False >> endobj @@ -267,10 +267,10 @@ Gau1->u03/'Sc)R/'c[E-=Q6dcH#?F9*H4Q>na#>oYrjCadU/9m/m1ZF4*st%Rr^O+sg6:h"Sp;I#^o$ endobj 48 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 4015 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 4025 >> stream -Gau0G>Bedl&q801W2Df(`!G1Qig7V$a3=;oN&,Nufu"D"!u_P)Ob=bDYMX*N&\=.lnRQ+.>Ld$0eQ#t)h%>1X+!LQs\HTL562t*g6%mnu"IYH^Fpm?`L[Q=<\>QEIl9O<>cisSIO`VJU_e))Kp=:<^JrgI-BiEBX;m?W!oD)`)OLABiHcD,09pceEaAq._b2`C30pes5!L!t9LA!=+[+E@RD(MZ##*%ra]FU(Y$7%PLMFHALS_:^NLUW)S7#<$]T9r8Cs9cQK"q:o'l57f,0!`%0D?5imB.AAF&bQ1uH9N,nn3[Y9/$9^\lon1e5.$FPI>uWQ172"T4>UW@%ins8rP#1jL.Q@!+&[]p8`$>e(r>&^8Bu_12Ij.K'VXiC6eCn-D1StH2;:]c8pjY"R92UmeTc,&VkQLNLRc8>TOJu,H+(7DLN'26->++Id[ir;lTK-A`LHsOiHBIaaLW/9GZSJIGkEQG6'lb?6FKfl&74bC7E/6Ir+fo=fbi?-mTKr*DtTZ4!WBc`-'0*m&4Fk)gM@_NtL"T"77"ZF?1B3@n/YN7:qLjFN6_'%kHpr^S,Sr1Lt:VdB>0Bit9mXp*m8Q93m[N6f3`#oV.,o&Bp-m]#6&/dALG\dkf?GR&Yra*-G"'STUiJ%t0\1dmI1G0UJ3;W'8GOVGBuHkG`kaLKXS8D-=eoZf9e`s)[`Jj](fgf^9a=_qqf,h4V^X9j7Dth(I-Drb6`?bMM_>GSS"KQ?b,m3i*j6-7JL'jt18P1f9V'pH/BMqZAbg2&SbYnaG_/%gX<7OrUgQZ2m-Ln.[eMq=jg'CHh'NlVT8='3)+8T99E&41PQCMAcUdMYrSC9HR/`'!Fbt`gYA3\G9nT:/R8W-`U'%LeoBLm8/H9'(^_YE\UW8P[T(fDPnV:`@_u$Zb:u;=g@b+N4'q_4ui6d!IG!dL&_UmllF*t*d+#t0&%V5T^0;O7#7s)K'f#PhEpDC/_?&lde!+^7o8BOlnsNCMtm[652oBI38fuC^qJk4os28rpo6\U_r8tAY\.>W^G&at32d0^PnaN9KG=]J&U!fAe;P5+M"uYm1M@h,dakb+pu+jkmtWpDKR+*YBUO?kAIt_r1lNpJGKL_bD1,$&24DS0bq#QshHq5`0p4SLml.C/YccJ@qq-oAd3PGeep38Zh:*Z8Ll/>5qdNO6r6Bh(2H\\ELhO(^W(X;;fX?LAKGgNe^\[A(V\#7V0=?DaoQ.TAlA=6uW%a%)]Z;_UR(EI=tcGJO^Oe_#"@>O7X+$eP(_f\4&lV&#h?r4i]ho)-]g[_ss%;_U-,be%4\I!<#CNE=#@=Mh%'[AaK*2T(@3Z__17F"fmpCfg5AQapc:gT@5Pdrl9*!eCQBYVc\_ai#561t,M^Mc_`#M59//kPKcMLi()%%e,XMZ`5D4!hmm[h]!mZPl2_CDT_>c`;>h1HcXEIn8Og0NjL.T"D"D][mm*2Qb%)g`G)d611;MrK/HbQ%F(=Vee4S^n,0#mY'bM2R;&W;3bm;6>p$(spsUkZG'BS"I+BQ/='EsB4\/bJf#af,4e=\`V)rq"SbF1;q9G;+'efI@qIb%Pkh;Y_agJQ4/0MOlu>iY&PWj^^\a&?BjB9l`][YYlh*KTBg\J&!qGa.s$bPWWlXV[Zauj;RM:jXgsS+Cu2t&"!i(XO)9UOA351u,_A=$ED/'"TB`*9$XiLO7f^_oG!Wn1aGQAl(sZ'dbQt6FjY<9g%E'/#OG/1^fB2W#$#K*ujuGQ2-hD85TYn!Io'Ig*q,.0D:>i46H9(`u<`sfjV\rM?UquTK"H,2D/;\DXTSSS\r@dOM]_H#n;eI=YY8gjgT\9BIRXqYFqsu0=958_ZEEM\Cr0*3]^llhh`<)L,8jS`&5LNQL9>GlM>6770PUQSTm^;0((Vf%-.8ecoZL0OjDr#M8CJJ_=8;L]@^T<_1)'6*&f&7Dc\0()Wf5%^++b$eRAO?gpYbOT)T=k@haPf%,#6]6TVF8%n+`BkH^T5.BO$r8=N_Y*bhd>gE8hj'`UK#u,rnonKMp!Ded.rMr.0GQ"SSiH,3J@!fn2C[`gWou-0)O84CVgX7D!-9Yi\CjIUe^*OM_hI8crm8p*e@Se:bgjre=^HM\D[+3$Jg&M?Z^,@0M@bRO9SW7Du&.b\ZG$LM]JQc$5hK5:[&8l&hN4b8?o7NX/?cqnXiOlkEJWQi-(TgBD27V`(NrGI8e)@uEO>AN1QHrn>[all4=,ENhTJ>K&mMT37@*g.4T>S9iN66ZAG0\#M%MGMB5?%>'#X$p`t,b-b&N9nHs@k]%Gc,2dQCl64[H4ne]M_kA's'#=pJ[SPCQUKjJ%=^SQAULqi`se1po-;Npm3LI,IlW2NHaZ@i/8WqR"\XGm*rMGb]t\&qSIk9J;0rF4fl">GU#uoP!(2Lt&("jk#[:TN&tmb0(RrcnLNao!A[/M'^fZdae;8Q;YTQ=/kCR6G,gL^=j!0`^hkKdDf(aFGcnk+,jiTQW12Pmn-$DLU@?al-5_8aS-@T]h>G(GNtQ106_$FAe.rRFYmH,ju^7C(ZAiQ'FP/$R,J'/RQ2ff4M#*:oZ\k.T0\*%6Kc&SOOR[K/.SOeZR`_]=BZut@0^P9\ULYYh<3.l:7ZN"8j&E_k@[qkQf@BjfDNKh0QGW_,[@XmqNk^RO:ZDUrj$hD_0DtclCO#=C@>dcZJgbWOU/r#C]"m%qC0XYXSK04Vpd\T(`Ka5gH:Lu9L]$C_B>8P)1S0fhfN;)Iq0So72_SO;^=fGSXp@bIIMp*AeZc,#N>9W8O<,jnN@KnS*p])NnQN#+_SUtk4<\]9r;L_T4'%*@W9[B;eGMssU^0hn]E+LZOIsJJD;s1Sd(?X:;WQXg5aKHO1_*.N@8Ns7V\NW2b!dKKn3>dkBW;~>endstream +Gau0G>Bedl&q801W2Df(`!G1Qig7V$a3=;oN&,Nufu"D"!u_P)Ob=bDYMX*N&\=.lnRQ+.9@_kKeQ#t)h%>1X+!LQs\HTL562t*g6%mnu"IYH^Fpm?`L[Q=<=Ai0ZFeJ4ZBS->`8@jc;@5Au`Hg;3@5tI8uS-$$6W,`GajOoGq34h'G!;8Lt#`/-k6s`i>4T6^LE,35BmM[Wkm^L+D?nR180PTS3QG>!O*IWikX;!g8uZHp:jS6!u2fMJPoS%=kC`A-juOK,&:qVq:$-n,dJP-4B0!'![bF]i)nio4U>JqMQ5;%Qak#nejEXFYpZ_&H*=ClqfR,l[^OZa\"bh;UjHU!W+]iZ?ek_$3949.jUB*S]Jeo3ZnSd=)phf,2KUd?#G3in5l)@pl/q(-6hF;%NR6IB+D4>N:`mFbq&u\5oq3M4Ir;MX2>Z:9:0+4j8XgD@G,C:=5%b'kL+c5W`C,,CXSWS.%FlVf!#nPaTufR`$Y>Q[/9%@D?[%JUVp#`9>l,?'snU^ADSNL#M\V[me=f.%o<.LIP]H8ULT,rl\g63)l<6%[4G.h9]U5SCP)'ZX[LMu22a_31m%HrrjB&SrO/qiu]FJm^rr"^Ug3j(j^ec9%B[O\!mmhJj`1=7!bH9kSC'5)eGVeEh(.OQK>JeN-jM.'F&a:0[-h,Hu\(>MYY&F\M?H!]j?%['Ap+D_^XL;,\"(c2.)gDGp'U1m.&/=1f=@C*]$4.'6<;+k9AmRG_Z_fZ2O'Uc5gFhnuPi)4n#Q&L-"LU+5nm_\)n9j-6)C2gN=e(co?OQM^enL8hBW.IJp7[TE^49hfR,nugusO2Hk7!=Q%W[AnSsetdA*rG+:J[p+`4ZUcD%U(>RY,h.?7JM/Mml;qUZ*a[Z^@;>u_Q2Mo>)'M%jMK;B%^%IFB$kj_:WN!l5#dl(nFFEEi5$Np4MAadAZ0S'kfIO'?Y3d=8[=&9Q/]QiGJJY3Fq3br5M.Zgc?u5P)GJC$MmVM>1YD2GKKN!M<;\SG5MM2]pfNiEJ!>W;S!G?>X(R9+3Fbk4YBRod+H&/`V*^qcS'a$&tm$2EW\=&V;D2bA&atQ8$KcMLi()%%e,XMZ`5D4!hmm[h]!fi$,2_CDT_>c`;>h1HcXEIn8Og0NjL.T"D"D][mP\/H_#%Ho_%BV'S.7N:S4l=O3Ms5ICSpVJQ(ZYDOjmDj.LrDWlp9q5s"ONtt;T%:$Zp88&1q:6O3ogOs7toB3F%I-3uGM.n&bZ"`Oof&4W_n?VrPbhF?KQS\4(8jH'V0:lPqIQM'Ml5hL&a:iY"#_E\\fALfHJ2-93:h==KGP_T0$?5N!I4A($$A8tNN=dfq?uEXhf.neMHTOKnnC#>Bn$ee/nSUrjR7UqMr>OP-=].TE%AaF]cdS61^tKLLZJ>gh"sbBcV,F]=J2`JT$qBH$dfrW>)9UOA351u,_A=$ED/'"TB`*9$XiLO7f^_oG!Wn1aGQAl(sZ'aHo>Pae`.^`uU]Ep+Z:Zgc%rH3*R4Z%7t51-b@:.4Sa`i"(iF3sG0GU1=D\0u"M-CN*']#Arr\((dNuii$hL\9O"C^#p*m*1g2c'\4="BNU58MV5$]^\*LW91c2\$-I#U6;-]Y=-8*@,O4)kAWE987'\>C+\dTt5;\\?ceEIo-]::qhX(O)>nL2hZCO:L,kj>2$LU@?5kYePnZ0".-g:u%+oB\lZ?JF3N*W[rsFEl:)h8='A(lh)GVl.MCiU,]@31E%c8$$%,<[#dQ]=_md.59CdS"_J.B"R*u(dE/2"0N_o`NWVidZQ3cDtmNYkB2?Q$;fg\hI\$N$L9J$d9_OI"0a'sn:A24hJl9/&MhH6KI4LrHG`asJ>^HRrm`*S]Dg@:E&rS5YWZLJ3I$h@HK+V%a*b_fDtJr%$2s0rU3lmQ`GZ?_7$qXKb$%VgV(TAOi6e!qD\TT]6Fm7rB*]cQP=^N@':o\?HpdmG')KZ%R4`%bLfIER\L`";jkH!6a]t5V"UW7iZ"578;rR@+uj;l\/g48]fpW./&suGK0/+N%6G;L8Uhce9e_sHX[B6ZcI1%L?H;o0YB7NMTd-d-S^4KjOU?q,_jniNurK:PiECeq7&gDlal>jUj9VIH@fHhWn#jK`hKs$[1:J1-3:(ua@-Dn*F:ltmn_g4dF?I33l2\$nUX2MgGjp\NaZ0QkgN/Qjq6\'if+^c8d%cL0YJHdc=+3&D38]pe"_%e,>s.(P[@'-K2Pa4ef3ru1sG!\4=u.d@L74ZFEKgnX&F\#AY;Sb:0p9b&['>iFSRO%<&&tre9.F&cGGV%]_cd0AoO^i,jSK8;hBgaO4*=5006_$FAe.rRFYmH,ju^7C(ZAhn.2EC'0uF*>1ilQVG]_-SkaSL"I0:!X&j#KXLSP-tAT9CES)*o=`6oid%QeX,RHrI"Wr!X%euA82OqNi;o(cEhkbWO9br*8?(/.u@e!L&g3)4tB:''k5f]uc;__8<##>195%uErm-)I%;<`#eV70lt8/bkQ.U[eFC.VI8p!R[n-Y&k\C?TY*cIgR:"<@A6(i!QdFEZHou+gkr,"QE)D?%K09TpsiU=6[_gBE7>?nHH7%P's^o3da?kBc5hIUK6cAn/;r$/B%il\/n]q\3M?2erZZX5c%)3;mYCof)`r&rJ!bfa(fD`1?8=+ho5^PlW\C04N"`Y6NoO<,k9N@KnS*p])NnQN#+_SUtk4<\]9r;L_T4'%*@W9[B;eGN7'U^0im]E+LZOIsJJD;s1Sd(?X<;WQXg5aKHO1_*.N@8Ns7V\NW2b!dKKn38O8DXI~>endstream endobj 49 0 obj << @@ -281,17 +281,17 @@ Gb"/*Bli#g')h6*d@[k3`1fh"e<-`0*Ef[(hY8!^Y1-FM8ct9=KU> stream -Gb"/)=d.i7&q9:V;,<5GbTM!LI\T1lK2"95LV:=I&O[cW+HK@@3r7K9^Sqki&<[#`pgJg=(8=EHrL_CXd/)33UWKU3MPtns++ebc*b&W^0I7H-M<3`XU_45p'MD>OK$1QS-['h<>4hakF0GT_no-jUD=+D)FjUO85NmFl1Re?#k+1h%-GOd*$i2])*m%_tVKmE!d5:+p!LdNi!?E^\h=cM#c>V9-BKGGaa%d53i)XUiqS,>(*''7mhK6JrJ1g/F$X?%/\fkHsp0i*o1(&n3F@oQbH,n?3De$!tSK\g0F@F6]I1E4TsLYQgBht*=bQp(ALDDpmg_QV8YsN3#XQ#TJJ/'STI09:_XsZOEI$-nd!I$o[2!kaM:3HFTudK3'rsQ@mUCjc^SV1D0hVZgkBZ`T6cPeGTb.abPr<6YI6["RhHGsN&S,K+R00oEnb@NP-Ndm[:`JfilOuEWKT;XJIFg(XNoI>.T;bQibHS7>AnJ`Yj@mQQ[9D#eh.XL&osba9M#IYi0)AB2+gs0)Z7H[=0s%I=a=9XKu$M3R4U*cNRhM*h@s=.Wu@#\2BMeR"1Kqn,AnT],IoQLf`raG$GX#rbe-WlEPKE)6c3r&3ogp)M45pAPH[;e3:9YO:fPZ4BRa_1eXJYUghpI=P"l\_`#tOmpUCRq)E226f*IB'N@ePgX7lnB\t6.ki!)[QF'3_\3=+21DbaJK0MWu8?uJZX5qXYJHATKB3<0*(aiF*"//]"tnm!AP0lYL2+u6n>c+RXFEQ+8+K<1"DVO;dKEahBp3SaKE'Y,I5/*7p1krJZBdBEmP:Xes\G[2RS=0A'`t?-V=(Sg!NlQW/'4\n$X?\\D%VA#LX"Fu1J6iP]P#DD@GR!VaW3_RmIBL(r=4q1d+d>jY@._uV1]YQ7s*]iO/biP=J23XnDqT>(DF6+L%X&RNG3&3ClPfJ!fHEL_k1X%iQXY2in!?FeVkO.gF2l-SdE)a"R<%GW)uU&aCSD!nNc"pd?<-\su#q=YG@o!OcdbT8fZWuuQkf:urF]U.[TKnGi7Kg!$/9%T_ngdBepDDJn"OSF`]:XUgH$4:##k`7Jr91ZW>kZq<.ESIsg0Dt-_tikC2#\`OFQ8MDj7FA%8"jX]$Jd:0F3&])Sch<5f[Pn^Ko?P[NZZ;CGr3:5h='cd-Kmloq`TJ!Y:VEsS1"K>eoMe$7`DTSqAi_oDMBGj#W(umCmpq7NWFKK2rj[q-lSFt5I(B(uNrIhoZ+>du+cFLDapVLn/[I+8CBGj7VA\U0nk<]VC'"ng>j8%PIU]([$:C*76HF;atXd;<8Y;XG=@Q58W#PqsfrqG8N.>ZuWpa(YJd5Kj3Gp6\35j39+qLR3UI;endstream +Gb"/)=d.i)&q7#kTr3b4"68.5qhYNWS!c.MMA+:uE"Ig>H-Aa48Po_:[n>.@#-m34%reBa<]V`lNHqb]7Gt/q8A$.L3'hjPI&eCe$&;V#n;LCgP[=]is*J#8Yrq_Qc3L*ZibRSp:UiT"n0^*]D\HMl@NCe?_P[sR_&K"8/JpSgE$.@5niS,IC.OC4-gM$tYZ31]EYKOQ*@*-nN0g_p"ZjFCd+.FCJk>TQFZ$h4PD@!MLd>)7,Jq04Y8H0$HJ)5.UW6'pIb1Gn0)br[PZ*3Z<8_hNZ1\`-f)tnW-P7R9^^[q9IE-$Cj\6iYEmZITJlm5gkHML;3h"QtgA;*s)KpQ5Cn=6?^)RIr`#qF8Xl%JVZK$%IgJS3TQYOqcn*P$E+'4eX%>uNJGEB>D0>4*`]I[?8U1K(\H6q,p],Tf?/)A)6X5O^'UQns7o/;BA<+`]#L&WEeR\j[c^9bJT8R]p]>@Qfq5,GJE%Z!;bdYf!+2."odf-fh[5TIe#1]`LEYf0r8n&1>G:$ZVUZp>e?u$-.\T?)atN)J"KoKP)"J-nLKuOmMkoi?,K.CsTo'9EU&lBm:sZ68%oQWSdmTol83arecs%4/P'r4p+%s4H\7f?JEsj#eVkX(nTbl&.(uI2VImG/us8ZMF/VmHl@00O_("&(K1TKS]j^\k*\4g9r?"^/>K1]/]1VP\4h`3kQ.#:T%H!KEYV^=L2]Vq?L>^&Z-Ng$#7[$?[bRLn6p;l]rg3.H+9Wmrg^T_>2(3^hB3!R_:>bF_aOH**;I=#31)C]4N"M+SNj07A5t'tX=91:qMIO.9X^)0TfjdBY=,F^SX(Y;D#i1=f'pL$lPB7$q,a\?\HnG?ZW!96COj:_;$O]R(\Q:"p2Yc$*Ai<0D8_KH%*d[]GAA2Tngrf1%GN(0j8,g?$\@fR'YJ"p;K*IApJ@eKt&6FY!3GndEIak/W;W\nIMm3.?*PRPkdbkd'cCVO-Xg>Uo(i[7q\Y=NfR?B:K!6-N(D-KH4%sWb#[aG:A:"NhWu8?uJZX5qXYJH1TKB3<07`QVYrU6Jh-f#G8ke5u5$%l/h7LumBs3F]/E\9r;F[pekDW,i$o$o-`\Wk:Oj0?>^aX#q^^DjpA8gHnV99Cd\-#n!T#iI[hXu&?s4>[jlh4RT=m2@PPPdi>0R&iYLf7^#D"k9;s"^l?5O4c+gu5?EbkAo&F!gJj\0Z-FVTNSp["-2@lB2K7$.pa_62kT,;!"=rbRefGBg\[cX>p`9r)X-(S-iF]$d1RYj;'qf[DC@XIF-WbA!`@o,ntq]TK0q'p^98dFd?0'>%)Es@a2!9T';mndPYD_C6rZt.3'd"Zh$'hT;4=%/Z>#9I#hA!0optI//H3=/WSn3m]sO1]'m7pK3'_6_-LU+1#O`IhhDYO=9G0b!D>.uLJ8$NBS^&WLBNH.r(uT+QWduUqpJ'*0sO+@JS.HoRnl5FgO`t2AeKrjel/U7G_$V+l%IW1I'QqQB/E^B5up#9(o*WnlG?qX:m&\s;H*cRU)7sj`j3CV?4UNjL@m1<7j`]Z4]!`VB#h+e"V]q&"3FL:@]--"*&hPP4hm$?bIdYL5B9IW!BGO9_#a9i%0,/S1mbl'ng&aC`:eRj/S)L32KSZ8n?.n"U/G+5o0Vj)h6`g?86>;:"uQDpoj&$A)M:oi\S>>drco!V&>F=(E15=[G5j`j$20QS8$u\00!aLiET%_kR0dTO6(?5(pq8gH"pjE%Xg[@OB33QEu6q&@>uqE&m..k.+;UOCV>:+4-:_j+#XK%%\L]7ao2`J%r=GaUZG5r<`C7h3J7`E/I(GS9Yj_i(h9!1C=fu_KM4WikY>*CcK&pDoY<;D&$.-rs!0B2:j8~>endstream endobj 51 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 366 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 459 >> stream -GatVW>t`'h'F*LmrebbC;m7UR?X?4cFAO;i@mLrbfZ&'>1gSN=p@%D.3^e-780EJ):0sLp!u_quH_g]`);Iq@?ioZsE8Uu:1.[hBp$cZN#lQ.X;#kU!pu20=0\dW$aL0:8)\U0<+bf\70]b&'(Q"0+$mnUea7-I/;`^h(Dn59TBe3U/d5Cg/jkY6dHXG=-,U5?)^3j%LN,djPrtu+e&W..YMmQ.o7EUPJRHgIAQ8<3km7GI5KBpHa9p_>=;>,)N5~>endstream +GatVW?#.;2'F*KBJ&Sr:DRck:qR+L+lR%j1gF*=oLi(XZD,ZY`nD>mB>/p%uO?`m1,_mbN!P2H(ZR5oA+2cRS!5erP!lNG;^]F5?ZgAU-S!L0:Sul5THCe_5^KBclC?nSuX?116q5TlmC,Y"ERHZRRoj].qm_WpKkYF^bJ.2?I0V3&K$4G=)@DJ'[-=FC-o!AY-VX(n-j*/k7=,^BL]if$:]886:>9IN^r,jendstream endobj xref 0 52 @@ -344,13 +344,13 @@ xref 0000006371 00000 n 0000006460 00000 n 0000007422 00000 n -0000011529 00000 n -0000014865 00000 n -0000017959 00000 n +0000011539 00000 n +0000014875 00000 n +0000018066 00000 n trailer << /ID -[] +[<9c7fc54d8829b4dd20be9a391b353f80><9c7fc54d8829b4dd20be9a391b353f80>] % ReportLab generated PDF document -- digest (opensource) /Info 29 0 R @@ -358,5 +358,5 @@ trailer /Size 52 >> startxref -18416 +18616 %%EOF diff --git a/docs/TICKETS_ROADMAP.md b/docs/TICKETS_ROADMAP.md index f4733dd..34343a6 100644 --- a/docs/TICKETS_ROADMAP.md +++ b/docs/TICKETS_ROADMAP.md @@ -8,6 +8,8 @@ --- +--- + ## Table of contents diff --git a/docs/TICKETS_ROADMAP.pdf b/docs/TICKETS_ROADMAP.pdf index 995e8b0..682d4b8 100644 --- a/docs/TICKETS_ROADMAP.pdf +++ b/docs/TICKETS_ROADMAP.pdf @@ -102,7 +102,7 @@ endobj endobj 18 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Tickets, Gitea, and alpha smoke delegation) /Trapped /False >> endobj @@ -161,10 +161,10 @@ Gatn#?#Q2d'Sc)J/'_]eFTrcnA9[uE26Bfh'koUh.Mj)a#&J$9S+?#l+Doh%fgMm^&g2Sgo:5Q&:^D'g endobj 29 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3979 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3992 >> stream -Gb!#_>Ar7U(4OT5+L"t`ZfB+>F`fIG$TDc\h.`?PPO@d)J:NbqRuJu!]$q$%]>&b)WJb=j=1>M<"K`o43^!.X5*FF0\)n".U>)^!0gSf5h)*h534<:sWm`]=:`R[D=Mi#Z[?XVCi]Q.r9!E#6AN=`Yc'X@hTR0E9YmL$MU-Lp1kI:@3u"lDl?aqR8K%a\j8PCWp[:?M'#uhc;&X[96=])u?C]h]e]_CD3<70c!MX#7UA]]07N$p.,iqAFakJ+^I3-aH+d5L:$b]&eX+J57&Q'_b-9Mq#9"11Y+$,PaK!mdfM@j(T=d?rsE5>Rh6p7p<&]?_%MI6[MHf8[lB^/ZL"ERNq5?"WYp&YQBuRL!''7AOV]"Z+NF21Aaq%0[fpWH#I%Ji&2P8Y,V:D1j4UI'c3t9[6f%t9l$BAE[]PP#Kc][4\#>U<.An7HOQa>?Aa,/=3`_`_tRaJT9l$'&VZ\ro4*"#@=GmS_\V>X%Ne@l+uL+2='Y'Wt3"W?R_.=V6N9OPXHPSFh0Lg)Ye%XT@1=2M([#$j#W0uU!'m&e71U.49t$Aa_LL#@aQ(cS*pW6K_6+=$P]n.q@'sV)>_R?"RPoN/sirg-J":V]XM'kBTtCm:NU%?HQ3q9K.&##^C"7:0eV>4b?HI/MA+FcR-=m#k3s^5[0KOm!oo+ik5?o_S*FBoWr,D]:aD,5ajX[uCps?HOVM:,,'U\Y\"`MX)#^EsLa4Ah8[^d,G)aUWUA'i\$.;SY;!BKkn%>?EKFrEB4J:NGUJp7X">0B4)/)0FX+3O?,7EZIZKEid>e\mIL_1bDc!oaR[o)M,_nXMFMM#c`e56,8j-p^tp=g2lDg!g14Sn8B%]RtZFmj+R19iU2KoeRLeKK/gLB'56LZ#ES!jl2MJYutmhW*8FXTLPm1&t+h!+=X*!'CtuG]+$rX9!-JhC(cA+*Ji:4OsJYjXt\DE1Y!:3'C-[tQ+!Y[l);YVqk\8'g3]>s1P9!4urTWO"C-cW3oo!7Xf?<22(iO-!C(3[SoqZWVAPi$#+p"=T7D"Kd6eAg'EDd!RZ?RbP;f.,.S1`cZt'Sd2Q?ii<)h5I^XaccJXX$6Yr%A(-rkcQ0!>CT=/RYOqfbhO5)GcV8/E5$q$j#1Jj6&NCK>VB!#9kX&g]d^NpP@XBY!Y9(lLZtTJ4Z$=>Akc_A,PN&0.&I\A;CF-SL'uN0G$\/Ridu2[$SJ@hEq]?PB@j=kHi:O`ldsCpIbidf!dtRmkW;IgpRhbo+:ilBPB=;-3S1C8418/.ZF'>kLY/iR#rPe*o%)VG]PT:8BF-]g09:iOIi3:L$gphDqWF?(/pXfI8OC*0&s3t0RdY.f=;`3DYK>oQro0^%'LeN>kVP]X$V&*YpJ6T/'@D;"QD-)AjBn8.3^aC6-MORR@*>o<++8eo<.mI5c5^OG.Tp184(UZ?htR3GZ8c^Kq]L9A4!c/\)0Bg!WpXdp<0*Jlj$kkRVgY0cFahdnZ35"6I7#I^YIZ$gkmV5k9s+_CG'N#O;*k(6<5Td%S8=a$[ohX)D[6GoU.)8$n`duPtmI_2d,F6U+7qoYff=72+g#Z+#0re3B.RKQpk?+Bt-K51YqEE3G/<6^LQ-8B/S+9H2U0:j[N@(K1S&9QS]qSILGAgq3[r`$',7QGCB^Ru>Nh<5Mf'%1.=)Z7<$2;F66PY@!dpR,+3g$bs=CH0V+$p>?Y,_BsF6@UNgUKgotQ,3$0r%E*Z+fpua(qCc_G:5.(:e.(=-J_4T4g]M#T&bR4$B)LFO[i&&pY*jYVI^Zg^g]2A5,4;:Fq`W]iU!dW&Do"SpXpbpT3>tJM7n=g7!ntj2U%h&g_VpSi7$f4YQG<[a!-=H@A4m=?.1_,uLnF?qLrj/pmg>n%%2]SCL(b?U49qE"8A$:2`D8Y%)HpCYqlX*:;$j,mr\&&#AZ!PW":jjLMM=Y!Fc2`-jSK(aCFm3R#_W6COp:KiJtRX3;*l=ZgtO]1nrE]RTh>]q:^L$m%sq(r7P8%B`K@*L5D/sR_mFV]$jC"lrtp,$"o'R-)QUr[%5+'!Q:qRrp05q;>HD$gRt+95$e3ls:B~>endstream +Gb!#_>BAQ/'n5n\^eCX^g9+/4i'imDgQ#daflWG1)`uk>GfBiLOG&uF(_Veol*S4=#N/#b`N,0hF>CH`"n:I*chRR^5W\g!eGm3>6Efh(oZBE'7X#5N=IOs3hP&PF7ph:8I&:IjNbdqrR`ui^ldcL$48Q()JuP.oh<:6!CURq]m1\9C2UcfX@tLPfNmk7dM`'\9H,)m[O^&b\8IO..SWbmKUob]+>;XrSOR>!64:Y^"Dq0jTLc.4MTCsTJ.k.-*P_oiqS=X>1fTo$PPmhR-$62Lm$5dZtH*bo]KkHa3/pMSc"_#n4cI6m*EFY+1pPfNVLf'"sj%6EZe!pXEqOWqTQ'W/dsLM/7`m=n.<9Z]cY%fVQT63hE8T3*7sQMB!_!hI'qCl5@.^S4if>U)'*ChDVf!8U?7TN?!b91J,97+gYlh]U:/H]>Joe^Xgr)uX4MIredN?I=no(D4C$A`rb(YfpD?!`\T:r($hX5lndn)6;i6ofO+jKa_ha[n0o6$oV7=Z"VJ#d$'YL(JO.R''(3rql$'JPtAK"Jh/U.]/:.,]\i,LD4N=5DR<"<5uO=b,i-S:\S$.L(r,_ND$@i9,dTg+434[$Q[lhN@R94b;W-%^k,G%u>V2.i<9BEiXL+pb",HaO#lYPculEG$]\Ld$G+OKpE:XtM5f)GS,"K"4.)86HHh%"O4FSh=+;,u38Z:'B`I[#3U"K0JJ3I9D3WXHBudhNQIA.C+)$Y\)Gnffcd7>oq1_>k:-)h_XmAo-[B5`U3%9P\PLnnkECMS!\uS1Lrf/"u]MYomk"D0G=m!,>aT%TQ&gnd^18of>R522;cZW'=1o#:8706sJjoRWoVFOe+\?-irLf.>"pBb2`o%(5ho7kpiNiRt[AdNJ]!MmUFX'O_2lZIHD_jB&gF5aSHXof;q!r@'3o?46QfV'38E:"_c&.`>m@+bQ5t#F#6>46M8[a/]2=LCPVI#2_ElRGW,#eCX3JufX,u_JT9l$$39(uro606#@;2WS_\V>X"+Nujh]mIAIrtYYlTF?K)#p[ig#Ibc'c`KP_?daHWM-rHIOfsq0@F\cpg^Tg["0ijVsMG@#8'i*$jL&+hh;QfK-,[%Nr!.!3:X'n-+DW@^f>Q&`7>GKI:&*?gIA@"]ueeA.@M3;@6k8QrVa`4;g"_dMqTC@8ld%oQL"_2'0pZ_6\8jeY4,CW3U^r4D6>4[hAVn[AJb?qU4*kM1ZXS\8,AQ>0i'LYOJ@:%P&CPVWQ.BP\'kdfMfgk+fTYr:@.V`s,Yin6,+5aKS0PfV.Chg>Y7,cu9>IXr[Yd==M!3CTR.&7EQ!FKqKE2K=K4kFL/W6_h$1GbX@r^J2^HrP/S@5^?Ao&426ZBgZ0?Y^nqZ*CA?cM>n]A<=38!L@BcjXoS*KWBB+AjcN,[L=VW3i[-O+FA"$a5cKnN#2ka<\-O#pDV$M48ejK89==FZ40e5r:oC[Yl1Fe`9T#!PE,aUceFL//`"t>q1R/-2A^D'3F3rm-]iT#Vmk*2QjBYGJ/45;P'U`DDGfMoXg3(:Kr5C6F1-0\"8U[^fK25qbC\PQ8A4",cC<\)b;^p$hjK-CP-?0oR%_2eMF!'Qo/_3F`qBcfeUhkJGP+eDUjI:&^kDaa(16L2N)GQ4@If.&>]\mTf)=?/-9JmRZE4pD>3^uHT(rI2WWhR0N-Dn_Ja$87fa:JBS^:f@d!AiF?77T4969H02^KqQhA16gKaVterkh(UA6Ab4<+7Rm=i$U&GQ(ieNXTD3ij&'baEHhur$G^AV7]"p:(+]Gmr=L/fps]I6[iKbOqIAO4hR?s+k3fIl@o`#Qo-H46[j_u;.JeL6I@dHS3pT<$+/=`/&_$IgGZ\rL9IHCpTul:Q/!<^G\]8rL&k^OrL!oO/\3SqgkB21q/gr*Ui.;:ZGGeel\,EnEe#tjfIbilFfBk.:0R#4%\]"\r#C>;8nh>8B8U"sBF5>Q]@gDKRG1s,A@`p;Me6L8C>BdRG[^l=1-02kVHl<1dA]Q;R``BY6T5S2Mi:36A62_`8P8=1eDf>>/)'=a>and=Z&tkF&`LI\ON+>R4=&Y)NLh-`J:\i46-qSekH1-_A]+]SZVV!+/W]:3#M-1D?)M.X`g/K^-B;AWlSV"0W>P'bO\go_d+aNoD4Em*ArAmadWP5-Ft4icanN'?TK&Cuh=&)Tn$.p3AU`0=k2=*#:_OOd)ah04nD^[gi\s6jZ]oWc",,-Q$]YAEZFhipNFT:ct%U;&G_kD"no"*=`62sY9N>j(77=("li0QD,#;;L_6Y)idpK4:;noa]ei!8U#O),f)SR=#s(/jST=P^='b5P<_`g29]O7[&9/r`QU>OGV&p:jP5lP)0b.AsNbb+"A!8a$_0+/;:PY0GoS4ZWs8O@d$@.,dg$lX?f6JSTB9^/>\6>E6L//YY=4?l3'D9'nJ2jilfm!q8Ku7MO%cVq]imRek/64Gs(eg3a;cfOG,e6p.,a:#gr7uK-jD&"aE!0)G^$NqC'15bd_["jcSinE!CL6#eHe6>7om-`Z#4jrrD,#>m*NTMp#smDZVRg/ZL0$mP*j&c>,m%'f,f5pa#%)'qVq42ObXta3UYW%2T[IT.G?s"UjC0<5R[A".45<.T9l)!db_KA]H$FhW!WYq#LNcR`M\`&n4,;UnKiR+=O$),fo#=$e\a08,l]T;W0-*U(h:ZhNO=hb?)aT9N:#D6,2roXXt2Rd?jAf7UK2I^5B8:.eIJn9/`^YRgs=#VZO>Lh0G$8dF!FEE,%pt~>endstream endobj 30 0 obj << @@ -205,11 +205,11 @@ xref 0000003929 00000 n 0000004004 00000 n 0000004839 00000 n -0000008910 00000 n +0000008923 00000 n trailer << /ID -[<0e289f67619633abd86562cc9631475d><0e289f67619633abd86562cc9631475d>] +[<9a6afd45fa8ce10be0ffbc92fd23c7bc><9a6afd45fa8ce10be0ffbc92fd23c7bc>] % ReportLab generated PDF document -- digest (opensource) /Info 18 0 R @@ -217,5 +217,5 @@ trailer /Size 31 >> startxref -9922 +9935 %%EOF diff --git a/docs/USB_HDMI_CAST.md b/docs/USB_HDMI_CAST.md index e055c02..e645da2 100644 --- a/docs/USB_HDMI_CAST.md +++ b/docs/USB_HDMI_CAST.md @@ -10,6 +10,8 @@ Android Cast streams over **Wi‑Fi** (UDP/TCP/QUIC). USB-C→HDMI adapters use --- +--- + ## Table of contents diff --git a/docs/USB_HDMI_CAST.pdf b/docs/USB_HDMI_CAST.pdf index bd095aa..7cfeb63 100644 --- a/docs/USB_HDMI_CAST.pdf +++ b/docs/USB_HDMI_CAST.pdf @@ -82,7 +82,7 @@ endobj endobj 15 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (USB-C / HDMI and USB-tether cast \(roadmap D & E\)) /Trapped /False >> endobj @@ -125,10 +125,10 @@ Gatn"?#SFN'Sc)P(%9[@2q>jlLVrQ2!p_*]FX"GbKN*5RJW(jd[TV@7?RMPK:s)lt=iuMJI*QfYGn5Vl endobj 23 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2586 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2591 >> stream -Gau0ED/\/e&H88.EM!GJX(AufDEePDS?<`u`f6Mu!t5m&7,)H%;'Vp5q=csK032W,g5bN_;5V=ILC+N*.'Q(r66V[`VhiTlA&Hndu,P'>":1V;XIfkb$d,.):5gYa7P#4ZWp_E/CLP@FNkX"lueAaRC_cWpN-t6RcWd'2h='<*6YSt&@e1,lf/'MQ8WpB"%QH_:!enD6cP4%((k)Wk@P!J,#9%.0ah[EBae'4W8W8bJo6XsoW`*j(22:;e\*\NSmtN3"1b!K\BU<09f1o7#rEsesTOequ?,kcI)M5JqYd/GXV=jBmYW9olR+'Kp>3DK!B<15n:Bn<#q)HKmbDGa=NZt;!h0s.P0Bg9LT2;Q_/5J[&OqAYTN,48uZknD=G%IXOh0/f1I,Y]Fl6(([+':N`JVKJBOnp29l1_9Ri-$:2Jc?`TpikNZ[;FIosnD4BB[&=U=,U)L%0=:obp^La?)GOj0U.g:?ET=c/g\+]*#g&%3Dq**"QCtWY!D5!SA@#HYP),@mD@(($^YB;T*l`jtaXSCn5$!#nD%7E:0OB'UCj[*h+7c.s/-d!7diPq[FA>]2>6eHZMJeFZiZU7QVjI#&g%7EC1jgh;neA2V8DJ$&,S$%2EN:#TH:?;dB%sN\/AGt5dW3_*D(b7j(7&ZuAsLF2>3\o]p[(?fS"B!ad/LcTirlX)A(=W>D0t+#YU;:Dn>TU,^=-3"VeQ5O9Oe*qM?Uo&$Fe3BlA,3]96Ub>aQ<8l>lN0*7U4QrSB88[9=U9j'>+k_bVfU/fG"mOGrpNaaej9\3a^`:oLp5]eRN[Dc,ibtfjT6rF-"O%J`(^iP/B7Pmla]75"*:)5R`O&>Vu._1C"r!EY!\m0-CL--XL2D9h'\$bt1Ct+>%$(oBBtL,D@bNn5D0kgq:7H`e4Nm%AC2ZGB1oip#_u\Dfp9q:Je_6ACk9V8!u$0hrE,K-W.$-Kas5)K1(KpRi[[:M74$Gg@W*7i^o903;'^2&5X)P0mDU(GlB@f)#YNYDXMi5QpMjqELTkLjp%^U^4;44tsZG##;.uFFQNU7SHNk:$:Tg1('fZnMD>K8o=RP`7@dKkd&R08smO5K41$i0CSkQ7]fpLoN+@4X@K`*=]'ajDts_ICVKkn&jCjQ<+M\"I)+ZoT@W$iHDMgjW_V+YF<#:U&M`!(lSQsXYlJ$[\ab#&H6Y-ML=:sN.P3Kr->u#[K7QNZ#or[?-ZI_g[1H9O5&F9g;Rt/MA"MA2iB\U8alof"9tQS%!gl+#qq1=";)q4_(mG%Kf-<^0_rD;$*9.&fuF6XNX9;$E,2LOHM];VotNLf3`/5TG./lY0Z3GkB8E^oWa"-qIjSYE4Jm;?-cB##M$-1d'//MhmDd50_GOd$HK(0.]Hhm+'G\^n)Y((&h_8;gir$R_kTG1[Ms12k:MU."g<\@O%IjVa$TV1\nCp(3L6M2la,j+fh@;+F]"k[@l7?`/<21R6aTa2C"/FQ:At?H?A[5~>endstream +Gau0ED/\/e&H88.EM!GJX(B!!DEePDS?<`u`f6Mu!t5m&7,)H%;'Vp5q=csKP-*)sXY_&Werb2>hYTH+>@?I2;Z?t._#$,#5$24G0OKFn)D95u_8Z?5h\3&bF?RM`H):teiQ*^DZ&AKu))k_&$kjEAXa,l*kn_cP2H91."!&C--R60+Q!6i_S,*)9rA%Tud8&6)f!J4p:PFO,6q6/.LEgAu)V@Z9sAXqj5@'NS4UMIU%BEFAE9qD)ao3C+&MkL?EgL!n`fT;i'A2=SJKA?f$o6Qi6d/TWbo$=GShQ`K(=K_C>5kJ]me^n^(rI?HNotrON.#b,!b:HIA(O&M-Ris)V0ldj[VR&^)![X.nlK?N58B#:g.,U#FtW"9eL&JtHprZF8L'A)13^sI@CatY#FNihQqJ^J+D5,JFP@ItCh,$(S')[m37qser3siF,iY>:YZf;$QgM;AC;8iC%I-Mf7]o9SUc,R0&4d(&Gt1qf3]AZQ*Ws+SQH8T!/d?KBjD.4F3YePq!BBp[&3h+=(.?E6?hUf9+[^UA5?dUPO;pN,)+HKW^euf.S][W/$CsGU%1CM=ZW1p9'Vf2@+X^MbL>a<%pa"o@u<+"%=H*p^7tCo]W]`@t3uB(N_3m'XC#CJaA1K0?3=J5>h>p792)51L%n?lBFJ<%_:E;n?8+[!C;ojHtD\$+[]oW0Y3*_%f?E#/Z(;/E%fdW!Qdd"K#sd?u5t$dtTr?%*0[P1o3OS0u][`oK"WG4(WCGlsOh0?&/Y4Af6m]e6tp'1'5BrN,,*fS/"'8UFo/uS;*s8`Q2)lh4[1b2;&6]BJ,>\D^!,D$YmcHf9)$06s^/#S@+HHdM"RYfWl@_,4*\PaW?fQSC1BF`YmkK;*]91F1R6^)Q@7^V@lnY$H7$/7C=PM!)`(MtBa-Q"Do#3:,PP`HA?Vg;KuZ)(bM@_"?m7O^OBh7>uJVUgY!^r'KQMgAXW'Z$@PR.CE3Nl0@JQPfC<"?\Gghaq9>I;^h-?J=%X.,KjH+Mq]n.]$%0+sBT\0pYBD`T"!@*M:V@QXCF`,FIj!N?2%kB5FmYe0LnmXn!5clRB?OWo?SFKqBH^UB/N+>WDW'J>R#!),EN?(KW#ZB\q.EqTbB#!`UOW@ood.)shu"YYsY+ej!`Tpm[ogW(5OJRnURi]:5o\n$k5]f(3a1e31sag^iu!2L4hk>M[DE>f.-a%m?)e[)OCjA%,E29j`"a)r_%9\GX[+0ed@)9X'>-@W$:Lqme;,:m&H8J"m/:-2#7N*@3$GKFJCU&/kW>$\#kZ;t$95Qk'$*-@=lqr)]RQfTF3kc^J$Ybo7M9Gi]jC9.i20Xd\iO:_E\iJN$?(6"DZao$FtGd[Yqs)Ca(^g55d&_C`dZ]Ekq1A#$7HUWd,JXbbk`[#e]&d!\^6\`8DV1b1(=+Z58QXC\qo>1jhAX*2N_$!M+MsOmSHcH9<'"I1@<8N(^H2VZ4Ptk;?:@Asp&Z/[ei=+-,U8>2kjdC^sX\,ITL=0MH3m%ZMLaVcE"Yjl4S"bfbPL@X4"LaQn6=?RETlHc3edniLnPc@.k?'=b=`N7D/JYU#o)LsScUV3*A>SGWV(/!%=~>endstream endobj xref 0 24 @@ -159,7 +159,7 @@ xref trailer << /ID -[<9930c9d1e8a09d57d2d79395963c99a7><9930c9d1e8a09d57d2d79395963c99a7>] +[<9a2835e2004e186f32352a8c6c16eef0><9a2835e2004e186f32352a8c6c16eef0>] % ReportLab generated PDF document -- digest (opensource) /Info 15 0 R @@ -167,5 +167,5 @@ trailer /Size 24 >> startxref -6520 +6525 %%EOF diff --git a/docs/_pdf_build/git_flow_diagram_hotfix.png b/docs/_pdf_build/git_flow_diagram_hotfix.png index d5f9aea..fbb0ddd 100644 Binary files a/docs/_pdf_build/git_flow_diagram_hotfix.png and b/docs/_pdf_build/git_flow_diagram_hotfix.png differ diff --git a/docs/drafts/20100611_3_url_shortener.txt b/docs/drafts/20100611_3_url_shortener.txt index 7d3ef73..b59393d 100644 --- a/docs/drafts/20100611_3_url_shortener.txt +++ b/docs/drafts/20100611_3_url_shortener.txt @@ -100,6 +100,13 @@ is straightforward TBD and open questions list: +TODO/DONE list: +- git OK: git://f0xx.org/androicast_project/url-shortener +- SSL OK: (FE) /etc/letsencrypt/live/s.f0xx.org/fullchain.pem, /etc/letsencrypt/live/s.f0xx.org/privkey.pem +- docs OK: docs/specs/20100611_3_url_shortener.md, docs/DRs/20100611_3_url_shortener.md +- scaffold OK: backend/url-shortener/ (openapi.yaml, nginx snippets, sql, demo_curl.sh) +- impl TODO: PHP handlers, hub Short links card, BE sync + Estimations: Severity: Medium diff --git a/docs/specs/20100611_3_url_shortener.md b/docs/specs/20100611_3_url_shortener.md index 4f5bc64..565e37b 100644 --- a/docs/specs/20100611_3_url_shortener.md +++ b/docs/specs/20100611_3_url_shortener.md @@ -6,7 +6,8 @@ **Status:** Post-alpha (next after alpha); priority may shift with BE capacity/load **Severity:** Medium **Public host:** `https://s.f0xx.org` -**Repo placement:** `backend/url-shortener` (git submodule → `git://f0xx.org/androidcast_project/url-shortener`) +**Repo placement:** `backend/url-shortener` (git → `git://f0xx.org/androicast_project/url-shortener`) +**Scaffold:** [backend/url-shortener/](../../backend/url-shortener/) · **OpenAPI:** [openapi.yaml](../../backend/url-shortener/openapi.yaml) **Documentation index:** [README.md](../README.md) @@ -16,6 +17,8 @@ --- +--- + ## Table of contents @@ -47,6 +50,9 @@ - [15. Tests](#15-tests) - [16. Out of scope (v1)](#16-out-of-scope-v1) - [17. Related docs](#17-related-docs) +- [18. Routing (normative)](#18-routing-normative) +- [19. Appendix A — curl cookbook](#19-appendix-a-curl-cookbook) +- [20. Admin UI](#20-admin-ui) **Documentation index:** [README.md](README.md) @@ -104,7 +110,7 @@ Provide **short, encoded URLs on demand** for long targets. The service is a **h | S1 | Support **GET** (query) and **POST** (JSON body) shorten endpoints | | S2 | Rate limits per bearer token | | S3 | Audit log table for create/access/deny | -| S4 | Admin token mint/revoke via BE RBAC (shared operator session) — see DR | +| S4 | Admin token mint/revoke via hub **Short links** card + shared `ac_crash_sess` RBAC — [§20](#20-admin-ui) | | S5 | Unit tests (PHP) + curl-based smoke script in `scripts/` | --- @@ -359,7 +365,7 @@ Unique index: `(bearer_id, origin_hash)` where `expires_at IS NULL OR expires_at ## 11. OpenAPI -Ship `backend/url-shortener/openapi.yaml` covering: +Ship [backend/url-shortener/openapi.yaml](../../backend/url-shortener/openapi.yaml) covering: - `POST /api/v1/shorten` - `GET /api/v1/shorten` (documented; mark `POST` preferred) @@ -375,9 +381,10 @@ Serve docs at `GET /api/v1/docs` (Swagger UI static bundle or Redoc) — opt-in | Item | Value | |------|-------| | Submodule path | `backend/url-shortener` | -| Remote | `git://f0xx.org/androidcast_project/url-shortener` (when available) | -| BE docroot | `/var/www/localhost/htdocs/apps/s/` (suggested — confirm in DR) | -| nginx | New fragment `url-shortener.conf`; FE `server_name s.f0xx.org` | +| Remote | `git://f0xx.org/androicast_project/url-shortener` (live) | +| FE TLS | `/etc/letsencrypt/live/s.f0xx.org/` (live on FE) | +| BE docroot | `/var/www/localhost/htdocs/apps/s/` | +| nginx | [deploy/nginx.fe-s.f0xx.org.snippet](../../backend/url-shortener/deploy/nginx.fe-s.f0xx.org.snippet), [deploy/nginx.be-url-shortener.fragment](../../backend/url-shortener/deploy/nginx.be-url-shortener.fragment) | | PHP-FPM | Same pool as other BE apps or dedicated pool if load warrants | | MariaDB | Schema `url_shortener` | | Enable | Operator copies submodule, runs migration, includes nginx fragment, reload | @@ -436,6 +443,76 @@ Metrics (suggestion): redirect count, 4xx/5xx rate — post-v1 Prometheus or ngi ## 17. Related docs - [DR — design review](../DRs/20100611_3_url_shortener.md) +- [backend/url-shortener/README.md](../../backend/url-shortener/README.md) — scaffold + deploy - [INFRA.md](../INFRA.md) — FE → BE proxy -- [20260610_SERVICES.md](../20260610_SERVICES.md) — service catalog (add row when live) +- [20260610_SERVICES.md](../20260610_SERVICES.md) — service catalog (preview row) - [ROADMAP.md](../ROADMAP.md) — post-alpha track + +--- + +## 18. Routing (normative) + +Single vhost `s.f0xx.org`. **API and redirect share the host**; paths are disjoint: + +```text +https://s.f0xx.org + /api/v1/health → JSON health + /api/v1/shorten → shorten (GET query or POST JSON) + /api/v1/qr/{slug}.png → QR PNG + /{slug} → 302 redirect (regex: [a-f0-9]{6,16}) +``` + +```text +Client nginx (FE TLS) nginx (BE) PHP + │ POST /api/v1/shorten proxy_pass :80 /api/* → index.php + ├──────────────────────────►──────────────────────────►──────────────────► shorten handler + │ + │ GET /{slug} + ├──────────────────────────►──────────────────────────► slug regex ──────► redirect handler +``` + +FE: full URI proxied to BE `:80` with `Host: s.f0xx.org` (see deploy snippet). +BE: `try_files` → `public/index.php` for `/api/` and slug paths. + +--- + +## 19. Appendix A — curl cookbook + +Runnable script: [backend/url-shortener/scripts/demo_curl.sh](../../backend/url-shortener/scripts/demo_curl.sh) + +```bash +export BASE=https://s.f0xx.org +export BEARER=your-trusted-token +export TARGET='https://defender.net/very/long/link?demo=1' + +# 1) Health +curl -fsS "$BASE/api/v1/health" + +# 2) Shorten (POST) +curl -fsS -X POST "$BASE/api/v1/shorten" \ + -H 'Content-Type: application/json' \ + -d '{"url":"'"$TARGET"'","bearer":"'"$BEARER"'","ttl":3600}' + +# 3) Follow redirect (HEAD) +SHORT=https://s.f0xx.org/a1b2c3d4e5f6 # from .u in response +curl -sSI "$SHORT" | grep -E '^(HTTP|Location:)' + +# 4) QR PNG +curl -fsS -o /tmp/qr.png "$BASE/api/v1/qr/a1b2c3d4e5f6.png?size=256" +``` + +Deploy smoke: [scripts/smoke_shorten.sh](../../backend/url-shortener/scripts/smoke_shorten.sh) + +--- + +## 20. Admin UI + +**Decision (DR rev. 2):** operator token management lives in the **hub** as a **Short links** nav card (same theme as Remote access / Builder), not a separate skin. + +| Action | Auth | +|--------|------| +| Mint / revoke bearer tokens | `ac_crash_sess` + RBAC `admin` / `operator` | +| List links per bearer | same | +| Purge expired | `admin` | + +Machine clients (`curl`, BE jobs) use **bearer tokens only** — no session cookie on `/api/v1/shorten`. diff --git a/docs/specs/20100611_3_url_shortener.pdf b/docs/specs/20100611_3_url_shortener.pdf index ee6b600..1d9d165 100644 --- a/docs/specs/20100611_3_url_shortener.pdf +++ b/docs/specs/20100611_3_url_shortener.pdf @@ -2,7 +2,7 @@ % ReportLab Generated PDF document (opensource) 1 0 obj << -/F1 2 0 R /F2 3 0 R /F3 32 0 R /F4 34 0 R /F5 35 0 R /F6 36 0 R +/F1 2 0 R /F2 3 0 R /F3 35 0 R /F4 37 0 R /F5 38 0 R /F6 41 0 R >> endobj 2 0 obj @@ -17,154 +17,170 @@ endobj endobj 4 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 716.2874 84.37304 727.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 716.2874 84.37304 727.2874 ] /Subtype /Link /Type /Annot >> endobj 5 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 705.2874 77.26104 716.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 705.2874 77.26104 716.2874 ] /Subtype /Link /Type /Annot >> endobj 6 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 694.2874 104.373 705.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 694.2874 104.373 705.2874 ] /Subtype /Link /Type /Annot >> endobj 7 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 683.8499 88.44754 693.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 683.8499 88.44754 693.8499 ] /Subtype /Link /Type /Annot >> endobj 8 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 59.68504 673.8499 95.54254 683.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 673.8499 95.54254 683.8499 ] /Subtype /Link /Type /Annot >> endobj 9 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 37 0 R /Fit ] /Rect [ 45.68504 663.2874 97.26104 674.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 663.2874 97.26104 674.2874 ] /Subtype /Link /Type /Annot >> endobj 10 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 652.2874 138.629 663.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 652.2874 138.629 663.2874 ] /Subtype /Link /Type /Annot >> endobj 11 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 641.2874 91.03704 652.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 641.2874 91.03704 652.2874 ] /Subtype /Link /Type /Annot >> endobj 12 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 630.8499 125.55 640.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 59.68504 630.8499 125.55 640.8499 ] /Subtype /Link /Type /Annot >> endobj 13 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 620.8499 130.5525 630.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 59.68504 620.8499 130.5525 630.8499 ] /Subtype /Link /Type /Annot >> endobj 14 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 610.8499 121.7925 620.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 59.68504 610.8499 121.7925 620.8499 ] /Subtype /Link /Type /Annot >> endobj 15 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 600.8499 133.47 610.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 59.68504 600.8499 133.47 610.8499 ] /Subtype /Link /Type /Annot >> endobj 16 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 590.8499 83.44504 600.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 59.68504 590.8499 83.44504 600.8499 ] /Subtype /Link /Type /Annot >> endobj 17 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 580.2874 174.181 591.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 45.68504 580.2874 174.181 591.2874 ] /Subtype /Link /Type /Annot >> endobj 18 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 569.2874 105.709 580.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 45.68504 569.2874 105.709 580.2874 ] /Subtype /Link /Type /Annot >> endobj 19 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 558.2874 119.053 569.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 45.68504 558.2874 119.053 569.2874 ] /Subtype /Link /Type /Annot >> endobj 20 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 547.8499 87.19504 557.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 59.68504 547.8499 87.19504 557.8499 ] /Subtype /Link /Type /Annot >> endobj 21 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 537.8499 120.135 547.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 59.68504 537.8499 120.135 547.8499 ] /Subtype /Link /Type /Annot >> endobj 22 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 527.8499 112.2075 537.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 59.68504 527.8499 112.2075 537.8499 ] /Subtype /Link /Type /Annot >> endobj 23 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 517.8499 102.63 527.8499 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 59.68504 517.8499 102.63 527.8499 ] /Subtype /Link /Type /Annot >> endobj 24 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 507.2874 94.59704 518.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 45.68504 507.2874 94.59704 518.2874 ] /Subtype /Link /Type /Annot >> endobj 25 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 496.2874 91.49304 507.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 45.68504 496.2874 91.49304 507.2874 ] /Subtype /Link /Type /Annot >> endobj 26 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 485.2874 101.709 496.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 485.2874 101.709 496.2874 ] /Subtype /Link /Type /Annot >> endobj 27 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 474.2874 87.92504 485.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 474.2874 87.92504 485.2874 ] /Subtype /Link /Type /Annot >> endobj 28 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 463.2874 141.269 474.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 463.2874 141.269 474.2874 ] /Subtype /Link /Type /Annot >> endobj 29 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 452.2874 78.58904 463.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 452.2874 78.58904 463.2874 ] /Subtype /Link /Type /Annot >> endobj 30 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 441.2874 120.389 452.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 441.2874 120.389 452.2874 ] /Subtype /Link /Type /Annot >> endobj 31 0 obj << -/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 430.2874 105.717 441.2874 ] /Subtype /Link /Type /Annot +/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 430.2874 105.717 441.2874 ] /Subtype /Link /Type /Annot >> endobj 32 0 obj << -/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 419.2874 129.269 430.2874 ] /Subtype /Link /Type /Annot >> endobj 33 0 obj << +/Border [ 0 0 0 ] /Contents () /Dest [ 46 0 R /Fit ] /Rect [ 45.68504 408.2874 161.741 419.2874 ] /Subtype /Link /Type /Annot +>> +endobj +34 0 obj +<< +/Border [ 0 0 0 ] /Contents () /Dest [ 46 0 R /Fit ] /Rect [ 45.68504 397.2874 91.92504 408.2874 ] /Subtype /Link /Type /Annot +>> +endobj +35 0 obj +<< +/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font +>> +endobj +36 0 obj +<< /Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R - 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R ] /Contents 74 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << + 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R + 34 0 R ] /Contents 82 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -172,64 +188,39 @@ endobj >> /Type /Page >> endobj -34 0 obj +37 0 obj << /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font >> endobj -35 0 obj +38 0 obj << /BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font >> endobj -36 0 obj -<< -/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font ->> -endobj -37 0 obj -<< -/Contents 75 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -38 0 obj -<< -/Contents 76 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj 39 0 obj << -/Contents 77 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page +/Border [ 0 0 0 ] /Contents () /Dest [ 46 0 R /Fit ] /Rect [ 387.5218 109.7614 399.1978 118.1614 ] /Subtype /Link /Type /Annot >> endobj 40 0 obj << -/Contents 78 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << +/Annots [ 39 0 R ] /Contents 83 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << +>> /Rotate 0 + /Trans << ->> - /Type /Page +>> /Type /Page >> endobj 41 0 obj << -/Contents 79 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 73 0 R /Resources << +/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font +>> +endobj +42 0 obj +<< +/Contents 84 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -237,214 +228,276 @@ endobj /Type /Page >> endobj -42 0 obj -<< -/Outlines 44 0 R /PageMode /UseNone /Pages 73 0 R /Type /Catalog ->> -endobj 43 0 obj << -/Author (Android Cast project) /CreationDate (D:20260611175417+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611175417+02'00') /Producer (ReportLab PDF Library - \(opensource\)) - /Subject (\(unspecified\)) /Title (URL shortener service \204 specification) /Trapped /False +/Contents 85 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page >> endobj 44 0 obj << -/Count 31 /First 45 0 R /Last 72 0 R /Type /Outlines +/Contents 86 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page >> endobj 45 0 obj << -/Dest [ 37 0 R /Fit ] /Next 46 0 R /Parent 44 0 R /Title (1. Purpose) +/Contents 87 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page >> endobj 46 0 obj << -/Dest [ 37 0 R /Fit ] /Next 47 0 R /Parent 44 0 R /Prev 45 0 R /Title (2. Scope) +/Contents 88 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page >> endobj 47 0 obj << -/Count 2 /Dest [ 37 0 R /Fit ] /First 48 0 R /Last 49 0 R /Next 50 0 R /Parent 44 0 R - /Prev 46 0 R /Title (3. Requirements) +/Outlines 49 0 R /PageMode /UseNone /Pages 81 0 R /Type /Catalog >> endobj 48 0 obj << -/Dest [ 37 0 R /Fit ] /Next 49 0 R /Parent 47 0 R /Title (3.1 Must) +/Author (Android Cast project) /CreationDate (D:20260611185331+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260611185331+02'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title (URL shortener service \204 specification) /Trapped /False >> endobj 49 0 obj << -/Dest [ 37 0 R /Fit ] /Parent 47 0 R /Prev 48 0 R /Title (3.2 Should) +/Count 34 /First 50 0 R /Last 80 0 R /Type /Outlines >> endobj 50 0 obj << -/Dest [ 37 0 R /Fit ] /Next 51 0 R /Parent 44 0 R /Prev 47 0 R /Title (4. Architecture) +/Dest [ 40 0 R /Fit ] /Next 51 0 R /Parent 49 0 R /Title (1. Purpose) >> endobj 51 0 obj << -/Dest [ 38 0 R /Fit ] /Next 52 0 R /Parent 44 0 R /Prev 50 0 R /Title (5. Authentication and trust) +/Dest [ 40 0 R /Fit ] /Next 52 0 R /Parent 49 0 R /Prev 50 0 R /Title (2. Scope) >> endobj 52 0 obj << -/Count 5 /Dest [ 38 0 R /Fit ] /First 53 0 R /Last 57 0 R /Next 58 0 R /Parent 44 0 R - /Prev 51 0 R /Title (6. REST API) +/Count 2 /Dest [ 40 0 R /Fit ] /First 53 0 R /Last 54 0 R /Next 55 0 R /Parent 49 0 R + /Prev 51 0 R /Title (3. Requirements) >> endobj 53 0 obj << -/Dest [ 38 0 R /Fit ] /Next 54 0 R /Parent 52 0 R /Title (6.1 Shorten \204 GET) +/Dest [ 40 0 R /Fit ] /Next 54 0 R /Parent 52 0 R /Title (3.1 Must) >> endobj 54 0 obj << -/Dest [ 38 0 R /Fit ] /Next 55 0 R /Parent 52 0 R /Prev 53 0 R /Title (6.2 Shorten \204 POST) +/Dest [ 40 0 R /Fit ] /Parent 52 0 R /Prev 53 0 R /Title (3.2 Should) >> endobj 55 0 obj << -/Dest [ 38 0 R /Fit ] /Next 56 0 R /Parent 52 0 R /Prev 54 0 R /Title (6.3 Error response) +/Dest [ 40 0 R /Fit ] /Next 56 0 R /Parent 49 0 R /Prev 52 0 R /Title (4. Architecture) >> endobj 56 0 obj << -/Dest [ 39 0 R /Fit ] /Next 57 0 R /Parent 52 0 R /Prev 55 0 R /Title (6.4 Success response) +/Dest [ 42 0 R /Fit ] /Next 57 0 R /Parent 49 0 R /Prev 55 0 R /Title (5. Authentication and trust) >> endobj 57 0 obj << -/Dest [ 39 0 R /Fit ] /Parent 52 0 R /Prev 56 0 R /Title (6.5 QR) +/Count 5 /Dest [ 42 0 R /Fit ] /First 58 0 R /Last 62 0 R /Next 63 0 R /Parent 49 0 R + /Prev 56 0 R /Title (6. REST API) >> endobj 58 0 obj << -/Dest [ 39 0 R /Fit ] /Next 59 0 R /Parent 44 0 R /Prev 52 0 R /Title (7. Redirect and permalink behaviour) +/Dest [ 42 0 R /Fit ] /Next 59 0 R /Parent 57 0 R /Title (6.1 Shorten \204 GET) >> endobj 59 0 obj << -/Dest [ 39 0 R /Fit ] /Next 60 0 R /Parent 44 0 R /Prev 58 0 R /Title (8. Slug algorithm) +/Dest [ 42 0 R /Fit ] /Next 60 0 R /Parent 57 0 R /Prev 58 0 R /Title (6.2 Shorten \204 POST) >> endobj 60 0 obj << -/Count 4 /Dest [ 39 0 R /Fit ] /First 61 0 R /Last 64 0 R /Next 65 0 R /Parent 44 0 R - /Prev 59 0 R /Title (9. Database schema) +/Dest [ 42 0 R /Fit ] /Next 61 0 R /Parent 57 0 R /Prev 59 0 R /Title (6.3 Error response) >> endobj 61 0 obj << -/Dest [ 39 0 R /Fit ] /Next 62 0 R /Parent 60 0 R /Title (9.1 links) +/Dest [ 43 0 R /Fit ] /Next 62 0 R /Parent 57 0 R /Prev 60 0 R /Title (6.4 Success response) >> endobj 62 0 obj << -/Dest [ 40 0 R /Fit ] /Next 63 0 R /Parent 60 0 R /Prev 61 0 R /Title (9.2 bearer_tokens) +/Dest [ 43 0 R /Fit ] /Parent 57 0 R /Prev 61 0 R /Title (6.5 QR) >> endobj 63 0 obj << -/Dest [ 40 0 R /Fit ] /Next 64 0 R /Parent 60 0 R /Prev 62 0 R /Title (9.3 signer_keys) +/Dest [ 43 0 R /Fit ] /Next 64 0 R /Parent 49 0 R /Prev 57 0 R /Title (7. Redirect and permalink behaviour) >> endobj 64 0 obj << -/Dest [ 40 0 R /Fit ] /Parent 60 0 R /Prev 63 0 R /Title (9.4 audit_log) +/Dest [ 43 0 R /Fit ] /Next 65 0 R /Parent 49 0 R /Prev 63 0 R /Title (8. Slug algorithm) >> endobj 65 0 obj << -/Dest [ 40 0 R /Fit ] /Next 66 0 R /Parent 44 0 R /Prev 60 0 R /Title (10. QR codes) +/Count 4 /Dest [ 43 0 R /Fit ] /First 66 0 R /Last 69 0 R /Next 70 0 R /Parent 49 0 R + /Prev 64 0 R /Title (9. Database schema) >> endobj 66 0 obj << -/Dest [ 40 0 R /Fit ] /Next 67 0 R /Parent 44 0 R /Prev 65 0 R /Title (11. OpenAPI) +/Dest [ 43 0 R /Fit ] /Next 67 0 R /Parent 65 0 R /Title (9.1 links) >> endobj 67 0 obj << -/Dest [ 41 0 R /Fit ] /Next 68 0 R /Parent 44 0 R /Prev 66 0 R /Title (12. Deployment) +/Dest [ 44 0 R /Fit ] /Next 68 0 R /Parent 65 0 R /Prev 66 0 R /Title (9.2 bearer_tokens) >> endobj 68 0 obj << -/Dest [ 41 0 R /Fit ] /Next 69 0 R /Parent 44 0 R /Prev 67 0 R /Title (13. Security) +/Dest [ 44 0 R /Fit ] /Next 69 0 R /Parent 65 0 R /Prev 67 0 R /Title (9.3 signer_keys) >> endobj 69 0 obj << -/Dest [ 41 0 R /Fit ] /Next 70 0 R /Parent 44 0 R /Prev 68 0 R /Title (14. Observability and limits) +/Dest [ 44 0 R /Fit ] /Parent 65 0 R /Prev 68 0 R /Title (9.4 audit_log) >> endobj 70 0 obj << -/Dest [ 41 0 R /Fit ] /Next 71 0 R /Parent 44 0 R /Prev 69 0 R /Title (15. Tests) +/Dest [ 44 0 R /Fit ] /Next 71 0 R /Parent 49 0 R /Prev 65 0 R /Title (10. QR codes) >> endobj 71 0 obj << -/Dest [ 41 0 R /Fit ] /Next 72 0 R /Parent 44 0 R /Prev 70 0 R /Title (16. Out of scope \(v1\)) +/Dest [ 44 0 R /Fit ] /Next 72 0 R /Parent 49 0 R /Prev 70 0 R /Title (11. OpenAPI) >> endobj 72 0 obj << -/Dest [ 41 0 R /Fit ] /Parent 44 0 R /Prev 71 0 R /Title (17. Related docs) +/Dest [ 45 0 R /Fit ] /Next 73 0 R /Parent 49 0 R /Prev 71 0 R /Title (12. Deployment) >> endobj 73 0 obj << -/Count 6 /Kids [ 33 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R ] /Type /Pages +/Dest [ 45 0 R /Fit ] /Next 74 0 R /Parent 49 0 R /Prev 72 0 R /Title (13. Security) >> endobj 74 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 1029 +/Dest [ 45 0 R /Fit ] /Next 75 0 R /Parent 49 0 R /Prev 73 0 R /Title (14. Observability and limits) >> -stream -Gatn&Df=)Y&B*Up6)ApU)eV;:@a#AG7t2bOm39YqF@KY%)N9sP^sXVFQ4kYr4a95US;2\c"Kp8#Yr-:^([!&*SBYO$s!96/GA4Z*^u3s\SHh.a:$,8/HL,AWG4M*gIPTn;JQ#K)X](K(NR)JM)N$,.4h:iAH=*sCp,+hi(]PloV'EgXRh[6>cG+[Eq;L+qp-$6N/+1R@?#fct.m6k9cmnfX(%[@#7g9DS,D)=$CRqA@S5rob<)Ja9QFpE"`Ah1L%hnW,Intss4n^*JqU%DmJJ\#h1Zef,\Wg-GXW"U4*r,MLr(BVC@r7Sk^nVL!-o@CQ[S*C>_Wd'FI3e=/&gFRI)VsF_UMbJ_Yg:UYi/It"5s^\)?+(dXQ?]mcg.B*2:T5.#ls-6@2XE8nr,;gfm^afVWd6k'O>+uXjdU6PYml'[YP]okna#G2;-RXfcSuBA>+5G!e+jiJ[U@0fk7g/eLtJb\4/N`j"TDnGg.\db78Tr_Im$BkgeYU%lWIhQ2~>endstream endobj 75 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3500 +/Dest [ 45 0 R /Fit ] /Next 76 0 R /Parent 49 0 R /Prev 74 0 R /Title (15. Tests) >> -stream -Gau0F>B?9+&q801ka/E7:M^0OTtR\[dt(2i:'rdLb]HYU-&=LtSbBj$V%:,I>/S+/qDPf4mgjr7--qK[u3)-A.\c9BV_7b>LK2`sVRGn'T2)9dSBHF$p&R,-YIb.aAF7`rL+kKj3&99N'k^eCPd_nh?!LLa2q/"CjS28s&P/$`t>aq+/8)YlVW[>5G:n46/XOre*ibVpAqa5/:rLd-1_q=#N1V_'.K\31%pRr9ui@OGm&2mRcB-Ps35Y&.:"!re>_>*;C;IC2'3!+FrFa@fiJA%t@Cp)Xikp6%:\]E-%_D$QQM^9IJC?SbHdmu0JN)TLV:^2_at2a+OK`p(LT:RAfY^`&3?2h:9OC<3!u8J9%0j)HV5a=f30LfQ[Y`q7_31Zb<\d'k#jS$ZsU9A=aQJNH?i]-t@rq9EHVne-c-j[QbZcO1V:hHl.PZs^IBJ$j*-W^V2HPJSMR4)cG'\W.[X5JfthjA+,aU;^7W,;RB*23WuD\:ZQ!/5oSQ3mdlS[?_;k`+7O^g;1!qfqG[4MF-XM=L!bU>[9ffK)7A37EiBAC1&/DVFI]"MmDNgOa-HPE_X%21s.A!%Qn]`b?amYH5hJB^uZM?X/:A/L^8A?X<=dC'i/9Fk%bG]O.JImdpBjS"5?`7OPjk]`^NmRq2%Y"L7IlH"!A.K0BCB'7""!T>O$bU_/BA=F02;n_2!<#@BU6M_eHhAjRUo\j;56]Qh6-L#Y\\F&OH[RN$d6G82?KU5jN")No&1(:)MO*_d9njeb7d_jZ^'m\t,R^"Gu/;\hUcO\jIYAI0]0#XZTj0nm-?ik;C3a>fkd,rROnJ,g.m%k7?C9PT9rtIrtFQK8)EJ$A7iSU4[&m'ciHR0i_:@;C@38=s04oRqN/>=b*\MBQ+WA.Em;MbR>0sIm]@jflk2u%WmggE>gZ`DI50k::WDI6*<95P`%-2j^Pt_\J^N=\S!C.O%$$UafTp"M"I*c8`k\5"3aEJT'0ob8dfrR.[(:o3(:elRSZOm;,``KqrIMT%C:h5V5bR#7,Zdd%60'j$SNnq("*B3-!h,rb&AOd?=-)+;'TNbpKt5]e&NTKLNJfdQjD`Z*HP?Z!g.AB<07O!2H7TdAi>FFqlfK1mP(TeD^ob=N#m1=Bt2#U)!f-F&=X/<5\GZ&4M0I5U*:jBZK8VkO2jG,553M?ZbtPm2Uc)Xs`SJ:EI]bd!E;I**BFS)gV8K.\7SKDp<.GA/B*cA?\6QD80;%NTY9^TKt\3Q2H5C+G8q?]bXZf]^c)ddOJ>=N!X]^(0!%;,aKF&b/:^QgHptaE_Vg0Tucp.0Q0QEL1@eJQ_&6seoU(W<*o5qu&5rb\DmB3FN-\:T(L_Lb;cZM2i"Ye0VGpoW9ljMhM%Hp)?Hl)cK`B'uo,d][C5e5UZp>ebLC;X,_KqTF&DJ9oQ?^0[pkW^k)G7m],oLCM@PMVj9r`p"TdRP-)o((ZUZ8+GZiDnPKKPV;:"=.99TJ:h(2n160:S7M.Ubn%NN&I-]4G6BX4*Aj1qJ*c]@dVk&e4*r_""?-L4F*,2b2c>cGq#>fAionb$hF7Zj$WfWRc^Fl\!=%[WWPBang&1Oj2I&b/9[6fp]fGNSZhQ6L)tOZK>u4&AC/Y(!Xq!dOaf*K_LD2S@!.2S0(A1nbL;bknuWTqk9rcgDYG1/#h^g,11*3ESem/MJc);n+3GBA?YqnTBWNL=W)1\lrj-J'2WQI.\oC;iJb:!0JtM([[9f1*`^F%dhPdXHcCG^gT]?W,^^8_aGsT9OI0+%JM(&k8T(INH5*+E=U?.2`/IQ12Db?"N6.Qck#]"!OO'I7cQX+flO+T2(u!JUYHLn=&Sl2!f3.Aag,@I.g>9#*j,ZG"VIl92X+t1W[i4p^+1?+f2Wi+VP>tOlmIZdR_3qpgBJh*i:5<"'<2dDq"fi@f(i-6+'P9=.?=6HhZq8HGN\W?4%OY(U#.(^.rSukG+L?mk.XF.sXCZPsm:`C;m;t/;[hHZsK_)=D1oBgCi.](FrX)hBW.PUkHE]`r&1ME!VR&+TURNSea$@=6FYH*MY6`j\rmdeJGI%B)A;P.P>^C+Bnc45Y.(lu$dghNM0MW.-3*b__fe6kNp\\]:n)hHi!aDuP'Q1G1X46eT9Z;+5BBeS,,l+j"Z0aM5NlO\p?@OChRe:&am=u03^8Qt'O>0iU%)7&,=h,JFkLgaRr^M_.#p8*IZ`,'%rHS!lMQLt^BQr2:Oa.oknL/8^`OnUfE[Gp1R/Ib4(pb9jWf'mED:QB&>g4P+['LkrNcTIVF@5>&Bu^@$2e7[@[M771)IR3)NGAAb`t(s#[p?qRJO#]4da;$/P-ncj1jkj2b?[\MbIO`cL890Eb;A;1t.D7R&&QgFljp6l+cOgF`oma/q_m[Ci';tZ4KLd)Fm9opm]gQ?p&]-kSr,n5eQqH1]SDgpf,*:TIVhG:C-YNXN>!/ppXCn8tP9*n34XaLZ3'qZA.8`T+8CMe7amXMT^*cM~>endstream endobj 76 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 3122 +/Dest [ 45 0 R /Fit ] /Next 77 0 R /Parent 49 0 R /Prev 75 0 R /Title (16. Out of scope \(v1\)) >> -stream -Gb!#^lVHQ`(&uQd0qp-)[i<@/^U^'RO5.FUP\!E9og@5BYU@AI?[/)+MYQ(U`in$TSN(&YQITklB'.<_TAMY8$&S.A9)c4\KJ(;Yn=,(VN5dY!.>!/k[qI`bH9%.oSVen1L+4ZDdptb/9a/f_rUE(GZQSg0*)la+7-$m4[RX+`5Z'!`Og$:5B^EP]5_/kq6O(<"LZ%>0NISa$emn_[/2QS`/n)FhQt$IsShIJ;ohg%tn64d8Jo%1-P?6++:6JlSr7m,\eL).Ko(R?.A8+1oaEm(s2PT@U.Ae#^4<_tI,[3"Pnmd"@E^6uJXAK.*T\NREXXY;,ou&io%L1;.g6gkqIVV]NssnUDMiM)/I-_(,W-#3bpdE(Bh`S*h(;kj*2Hk&DBHZb^%?J-PJd>s*OW+Pc8SE/"scU6*=brE[2JK',S4s#F6#kVfY9lid;*$6f^;0UDhjd.cZ@,RV+8l+@3XDbrk'B,b1"[0S6%:.p]po$?'dmMVOe]Q=1`P-3u"i,l5J(Z]nc[eGk"/:=CCB]7]RgHn"c=WNSX*"_"f!lq_TMg;c16*5B>7>/o7)q:i5;/]Cf!EB-IjZHpjS`ne_)lJ&7%mWJ/YA*2).h=,ZjA`)AYusr0=_RBh.-b"RpDk>$iI%0Gq';"0=@9DCn6jFu/DQVj4LXf4csuFP-jXNTiZLS;-]]lkLb0[]^g=Mbr@(B8Z\U_`#s68,$)YAS;+)^;J#QilM$oAa.QU=rbHe/M\lcml@)GR,(P/tk*%b:*RkblF?V!LL-gTKp\/E&0RCRJ#;oC=e\^!1K*NUmT/j,=+/jXNF(q9hj+H,j6^9'oDPG_^Q7O,c6)db784c4Eh1F^P2[Ppuo$FE@ZW6n`11I@)aX2.^22n57]O&'&t&:OG>Wsd[3h%p/O6n#80olte-[='i?P'O8&@p>Ip+5O<*8G6,qfcd*?_;Lo9b*k+F/:Ok:(R:^AWZGn9kh#=JilGe]@UitLpSkde313Me6qi"E$M\*86mK^J'JLJZ5:N/KM\9-MRoUTHl-,GY)=PqW>#lj>M8`&SmiNN[YdudX!S"8NaH1V^L.,@VaTd6K^H[_]"7(goU&*rif-@55YBbilei=\@>Vo%g`:EY3j_JkLYI('m%$[[Rki@-@o;n`8)UpL+tklSk:l3s2:iZVgjHQ+S69MLU*;f9Q)M?1J')g3D1>XK!2%L!D#8(KKB'q*`%Vec,9$sZV@fZb_-Q'2L9N*GlYMRoG&,*TSos`q=&JK$X?Q!Mc=fi_KqWl3AjQP"3Q8i`-f68bd6P;-Oa$I+.t6qQZa4"4WXIKZ?aGS1HT"&*P78?5Q'U=uF5s2T4N+PrW+Se[bpIBF;&8p'm!#A6giHloCcd"S=AfNHo0ERh8f@K$etlDIZrb7aL@WCR@t^cl"C2%aDSFs:+$NGEP'Da]r__XfO`ON!+[OXa.%fj6"W-Jd7luII8-+E3Q\5Yi7X6-G.:O$hjV$3>8>\FCh5$!U0AQ6>Y")15!Mc427a?iIHklAAKs,6-ja6GLA/b.FRS/'Hj7P$RDnJh&>XfiJ,;oNqj=iYD`_QKL$C]rhHtF&P:^BjgBK=R^1u:TFXtt';slhqFLFH?XfCV26q&u.7#65la&0^"7-?W1oicp9O9O$6'JVj>$j8_U#k7O,EtGhK=c]VN>7bt!*U"CZ?IC[l_M7aTKrZ,tGMLJq"o9+rCll85"\p,*AY8n@S:K"`Q73N,&m1=e60[5*A4MZm@RUZ$S#-E2%N$N-d\TjU/%[FD($\Tl2]>A%#>&I!!>\/!.q8Ll\=JEh(ge_P]oFb"VMH#[Iu=Jr,M\;jp!#Bkge>m3DS`r5EW">!6`d*:Fa%=YO(eP3KdQep.46]jJp6cV2j#-Xm$IBqe[Gd+!kC;\8hn9/Y@Hjah(-R$MRdQ)Dr$S!0H.?dHk#H+S`7ll97h8V3q<8UGG%/F7rtN$$3,7D!^UUinN^hL`iSDcJ\n^SKN[Y7NQIUKT?$6oCpXt~>endstream endobj 77 0 obj << +/Dest [ 45 0 R /Fit ] /Next 78 0 R /Parent 49 0 R /Prev 76 0 R /Title (17. Related docs) +>> +endobj +78 0 obj +<< +/Dest [ 45 0 R /Fit ] /Next 79 0 R /Parent 49 0 R /Prev 77 0 R /Title (18. Routing \(normative\)) +>> +endobj +79 0 obj +<< +/Dest [ 46 0 R /Fit ] /Next 80 0 R /Parent 49 0 R /Prev 78 0 R /Title (19. Appendix A \204 curl cookbook) +>> +endobj +80 0 obj +<< +/Dest [ 46 0 R /Fit ] /Parent 49 0 R /Prev 79 0 R /Title (20. Admin UI) +>> +endobj +81 0 obj +<< +/Count 7 /Kids [ 36 0 R 40 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R ] /Type /Pages +>> +endobj +82 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1116 +>> +stream +Gatn'?#SIU'Sc)J/'_]eX;jIs\N=_LLB/:P7d=7ZK9d@4ZQuObjX1#A8%+ni6(61%+kQuM9$b[Jnsl%W5k/<=n#?KbUP.Mg0OPmCHXIGBTY-"jH1C]^SQ\K;8[=^QOJXJ#,*24R]M3(Z74`tF4J?Hn,`R'j0sKC?Hma9XUel5ji5"=i_>+LI1Pnt[pWFI-5M]Y`fGNpRY:PXTmWGAaNq3t)5umbf=41g3^Ou)a."?gB5T5]!7R*iU6mEip]@3kU>iIMiX]mKKJq(#A'Pjg4e8:A%"?r%70_p@OFr;$*^?^>`].PUTnR3$_87Lt%eoCMe;>9pOB,h[ao#coA2Yu2WF.RIQ(JYFoP#;jPJ.&\8-X$0>5Wm39C8Tm:e7DSpZBh<]B[O2(arg?7=5u'e23>@I@g=h1M]Oc9$)"EEt_H)Y>WcF_=8L8m*;6)P$JY^W8e,89!-3M\6f+^HK+)I-te1T&>PXNbS'O*<03.*\(9*(&UQ:X.-sr"q<.O^sZCr_5_K/]hcq3o?\C".&O"Bj*6TA/@:9O52LU)dk'!(8E]&LHYk+qTdNE!l,g.2[F5n%]/c_m#\TqO>c5R5J&FPt4jtG`18fg(D]N.'n6Z"Q/5$"IbU`^m5(:,tjHT+5>W6d>Lr6h,ma`pNi=[(?)6H`b"14+_7DK5he6Hkc$0AUE*>!iYTo,C.j_\G-CDC*AB~>endstream +endobj +83 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3526 +>> +stream +Gau0F=``=W&q801ka/DL-8rj?E,$JbfTTjs)*=#D9iWWuKHqlY_#[+L]=%Ze)a#C'i[JM58JDM>GGEPNIpW9baS8W7mGcCJDj6uoDFgXAa?!G3/K("Pj*TF;0.MZDf80[I5OT^;jHt',jb$--s[5)boW5:85#.$%^PqT0>+OGr+cjE9@Zad'-j8`.TCMHt(b2Mj$dH6sB`98P#He5Yk8ffh]f#mig[Sj*pP#47WICemBfojpL0nI,5k\h]M%SgaOk-)&AImuf[+*c^n+\k/e;bI7R9V\lU>&h[=j=l>kGXO0U<=K85u%^?R'\W:EKrUAo:"N0+gj@_.:(CV19.]K^kM.&5bO<$p!A>Q&R=BpU;d6WsI=ggCQaHCD/m4(fYhKPpo>#BsR+_U,%PN?e0(Z"HJ'ICj?m0c:LETfm\M`CYY]'[Ni>\6(&hLI*@`fd@9L=1:Ub7*hKBRCh#rsQiMS1j(n?(%N6,?.0G`40>3a3"6I)P-.D5JkC=[4W4#>JH^5)KGa76<0S\1=?Q\Al229uKU$":+i=8cu`0Bp,q!Id,P*Q*khOIf4ci2quLUGNp&]GRb%trTSFUc=8Eq=\+/&j]%+f.*[<8ERmt"#E-RWo'MP/bKBVoV]Dt?7hYT'2Y_s'0eQFle*IYUitUN;'T:6_mM68UjpV;Ur-=F,.8JoZKjN`J5N_]i%^=f/Pk/N`Qf&VoMkq2%qg:U2R/SHCd`m8GEq>Y,Rmf;k0nqH<6c&h5#Q<_%I%56i],1`J>Hp]V9]hoe1nR7W&/:m^pGWM%hdPU6O5W9Hd8@#HR"?!%Of>9,'N"s:mTdZk:7hi3Z69&X@U?qI`)(e[3`)9FWKJ^"kGYmd'@l;JJk6jO'$h'_g[4'$F\:=O?`[gtCHTg,WMB,!<66u+?K'!PS)!Ti_Va66.Q$3f!rqMH0?O?JKbm0%E1"js#-f!\Gmg..u?<>ZeXMpCK^EoH5ZK>?XOS1p*8OI:r"I;"p(ZDE-&Q%0P8C&`uFP1o`T_6$[-6GppflR#dq5jG-$F:1Ct6(*rc)%c)JLc3T.`t5%+*(lMI%!M>>E2d"*(A?m,TlQj^K3\@\55JDGoW.Ut(5%IWdXY,)""*J/"$VtZR'J4Opf'.Z>-9^?;qZ[sPm7.b2IMQI1uM0su1.Y&!aF6Ot2T-u^;<:2ti$]'=aF(M(BuJg$+)rB@:REQU8\3r!JV9gs>'&7;5Tg"IZZc>-()R;gqT+f*VG/+>[@4_KBT']TK9-`(cE!ad\ToqGk0BD/!p#7W1q,Bc2$Q\nXoMWg+Ppp(uT.uJb0A>e:hf'&t4>a_E4]=7"$oh&"7+%;h]d]ITP$EAeT;%Ub$DO@RcoRF^gGV_NDh7>q'7WpU0Z-#DhV2RJBg[u>+pFXi2aY]n3&221DS\qF=a^D&o`^+)M&;lU0<\E=l':`H?h&IeblLD8hV.6]!EZmu/A?fD_>%oMG@b(jo'/#<`:N5aeZk-HR/kUp>7nSP:90&.1;lM14;4b/'CQ7<78jakW4YN"Mn#E8UTUQ_8:dk/G5g,X[`3sQV.)JW_==fmTT(rQa@(^KlQ!.#5eU\::^S-7?jQL:dkP<9JI.k/@D!J6V:ag,Uj.g6nR2V/#1Jcr3T2Ao\PW[l+prD5flPbm*0*/Y$IOj20;PC97J53T83N3a"hd>sOU#9DMqTgCgT.b(4[KrT;s(J6WnQ5C;E(>R4T?HogL1H8r!rKdJW_)E!?QXjgN6GV`qc;.>7X>m+Bj5\?QRqifEXf0h!\B7j*QaQWP:OlE;_N+BU#p3Dr>n\=-\9sZ,h:m;sPZC-[u"E_uNB7HU(4im;\]2"**SjE^aGgTm+Asq#rnp1<_na[6?SaU?LqtWF`?kB>SE'qlRE@#[bGaH__Rendstream +endobj +84 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 3145 +>> +stream +Gb!#^lYkP!&c_:6@ZdC>I#TQBo'M'6pn>mAQR7`h!rX6@=Hb7n0jj'@Z?8Y9pWi=UMBX?=^7r#t.+I\1c?k!r$q<#Miq.0D8*F]H#/=Q!#o_,$<[AK?5GR34jS8rA4&o#'9heZNY%a'#==Th&q=@n9Amt&T,[nt=NTl:iDN>l8J0HU!_29CMB^EV_5X>6gL.lSU&&HR0)LmMWI<-^U^YV$@lZde96AWt*3+2j!]Xpm^NdobO/SV!bB=@9rp=#R=RiK0Od=`&5I:>JTL1o#qdS,+.c]_#k&oTUpRIY%U3Y$uC`Wf"=9p'$3'p=">6>99L#J/;qj#Bb`K/5=H^uDR!UaJrjfRpE_B_Q>c485?n=f7F<;u^p^(a7_1XR;)Fqs'8N`#;kAe]rLMW`^lBk91Hqa99;C?PNXMieU<@i'P<.+!\[P?.DXN(/C>?&7$WfMkW6(I7TuUb6.Cdmg+/>d<;:9XjO@8SX?K[M9E*s."im,l_-"A0hoM%Z%,#_N$H&]n3^jI1%^ep4j@I4-m\.'+#,'7Bm199dYme])?RcBGX=158bu\W?'EXs,+/NPDW\S;XGrBf_3=h6BdStlin@uI7LK'Yl`MoDGbT_,mZN,&D3r/br#FhLDr[d%;n<:f&8OhEj>BGjC_B08OJH!iCm[aK1h*Fdn//qiMh!(=6nm"c+"I=^d-N-Q.":b>L=NY"9$+'2rg=kVou\H)HimYS4bBhg.u3&V7Q6%L,RZ>#[W&U*9YAhNR@/'s=^=dfQ=DhuJdfG'#3DVVJ%[*_c"-I'5j3Jgp*54'L_=JjE.*iX\X;XMf<&G0W_p!#qe^K@9Y#:$m[Ef_CZ3W`hSUME#/&2Dj2I?6Z34[3t98g:js$R1R$/ZmLOUm`H15bo]Y/A%3>\)UfEg!:rOEYudY7%R<=o(,Kh&mS#T-ko,+ts[pUSUUP_$"-(+dBnK#;7MXb[+SH<8=>V+DO\NfJ+*be:$NZlLHu'+$l7o6.!#9Vbc]jkWimYCk15^$9@Z0fs%I=2;-pVnE9\*A.h8[0WKWZIl`,fpJOs-J"YiDgX.?pJlAnPC`:(=b*DZ!D61"!M5/P-p3auGUaK%Sl?K`.9dq5b+(c%:d3qkHu$V'WbG(-\!0q+U)Jc^k8X+=#?!o!@fZ`E1e78'a;)8=->2N=!K3rs-"D)Dh?t"%<;3+Z-j'Hd+#tm?!>s&Aui(n!Fg$WraU`/hFO3HX6p!RQ.$@Dki$)+N;/VV1MRjV:bh[qt&7U:!l`&g<>lMC%MT>me"\>YOXB7VLo[QplD"B=@=Ap11gW&X;a/,2/sSM(%b8,oP)L\Uangb3%>o%g)\/B7kRtHKNlKWD/a\KFROX`MpZsii($4epY.03(-&p]r&pI_QOkZ6XF(WW_C+Gc#GT5IfqD,_`E@R-i)l3$H)n\+MDFbZkW4E?OP9$Brjndi]NiD@emDr"#RQVl4e_Ef!d>f(2&@-@f[!/leO@.bgi=CC<5@M?aZ67suAE!Yd%Lt%%:`RkcZ5s08qA9$QcW#(KGoQCaBBE6pXqTp7!V*SEi'G@*i\?l`:4o$4DB:=iZgS[bs8lq5mA%KgrLqVtQY=I;R?QbS4nI-9gqRr3YT]VYW.7In>VqGQ"3o["BC^NYaML>%T2GBp3M%".fZsMc.uM.M;;V>/u"tdeUM&/c)m(6@%X0s"/r[FSmhk934-p^0S.4fhf/).:gm6mYGl)>k272QApZ(RKZ7'*'7`9j:#D4"00kk[-a=UQEob[sQMsA]f8jBUM\i6sLMkAb/"@[I^^;!W1Rhj2eRe#JhUg;'e[D>c_s%;;&Ji-o^)i;(e!o<_gYpDSX`sT;,Y:'\DF.lNF+XPp<%Lu&At25+%UA.DkjCkhKX%ZsB')PGj?G':j3m~>endstream +endobj +85 0 obj +<< /Filter [ /ASCII85Decode /FlateDecode ] /Length 3400 >> stream Gb"/)qet61&cUU9`P@65b132qHqErR./Zm]j_VnuPbLFn$8f;V(fR6ILEAZas7Xb/-#+_u9.).qoUs,8\\#2[1HXKA1F)u=5:$2C0*0A=d!eK8-nq4nd3K1@f?bHYI6Ad":STG^.adcj_&oP/_m!.(]8EVh+K;4]GIeo>FN)`8K_$F\%3ln?FAl(n@_`qW6:bPY1Wj7#U5uDCl6E,,2;l7@;'n:O(mi]VY+Zr%X",ibX-s:T@S:dQfPdD;e?0.#;R7iW7TE=_7V54P]p0$MjlsQ(99c)\&kjXFAHr]n%HB)qrg?@TKV,Y?U)T9NO\J-X8lbBXnbBOnYUZ+TdI9935k#5jI+P!3ZE*$=iNH=GWA`:hHrr[$6:k1U,1h`)e^Idi.'[V-75/FEq6.EGH%nEG"cnl!oeSp9DQ9#/Mi6G*1qi5bqRt(i.MA1X@kX:P*`c-ZZ00UDBaB/!6Q@FM9H@fAX$$U[eCgT>UXN1.2uV.&5Id/RpWeN,iF*0%c+n%L*7dr-Z%E#e$rbRqFm*"-Fn>og4hL,h:-T8m&*lPQ4JrPfLMAI8`q!_-\AU`IK]'A&je4'\fa=%*5>oL]3l'b*^Q.h-`'1uMB1!WSDm<]AU1jpa^[ZU;NO>$e:SWldeC:=``X'^_MPj(l5:FEQ)ed4qImLSQ)_,#fnRE$D=a,AAJh4\7q!Dd29tYuO;hqTRS3OYIb49XF0N9N+q];6;qYl.)i;qG3UHNS)LeWk,&IQhQ!ed-XTQC6FS`2/hk+ho:&TCd4;*s1`-K6JQB%'n#1BY0K4g[YI([BYQS^u"^f3H%P#n"i$C)^-iPYV1WR$"Z/Zm$-gQc>%Y2A.ZuUF:,F:)5hCW/E_,'n:GogJaYbj=+/Qb+Ee(TrW&E64I[A>V<,#*$UiJSHmeaoEc.@BhEolXfrdDh'ufe,;a:7..T=M!p(Ee!hejM,?R6Nr@XkD'[Y42q?U?>od$9WeW.n3n+*<+N4R^(T1Zo9(qp'$3h6cFe']PM[1F-O3UB_tTLm%S(7]_H;d`^V1odOhFY@2/1DJ&0jU3':hM$*N0K\O>.FI7r!VGamL&b`![9ELE"8NDVUh]Xk!kGj1<*HuU64h*dU+#aPXV]'kmqEJ*>2mU.@rL+iirhP,V'*k%R8001KE^6Xa9?UAnBp3UQ5K]=kn2HE4`1G'Wfj-F#/NX^I29T7:YbsZ1lQ^W!_t+3B'DiLHuJQcHpcEWUG1HQf87bGnJ;);Qq?QmT%bAfqYc9=Qg,p.$>sWCD`j*_Q"M'47Eh_h4uS/:K_RnOF#'UJ9U3](lLV_Iacj.H=Qd$>%#jafC+\TOi^J\mq=LeFSWD35WmlZddMRgMO*l?Q]qSO9&PG6+)350WUT(m[G[u6O3kb_!qO!BbQHka!,AS($68!ngBD=8Be>%hW6$`n^_*q,X/cSL%3F,dM_iUJt-`odICPG%etE]+U'ilWN'a&KkC2"dYq*))iAQZ*jXJOQMU[9'AO-%qGu%YF3f8ZT#t&?sW7n'4_T,r#k,,I]skE*plF:LcLpBh"7=c@Abj`!QAAQ/o*8MEIIcN;<5!Le]ks=RA,r[+r1J-N$>G?,FU-`C/)!=.5ehFj7G/7]a634Y,bk\S:cR!jT/c8%,%P]K91@@R66Vb1&b>a.n;TP.oQGDUJTpJmn"t.,!?*AaSU5d$;;9.Bp-[7]6nAkA+CO"[+ifuYUNRd[&1qa40&p(DU7fjXUB>j*3EjdTn@3Nc+`M3"l%iKIG80L@WnQ-Tlt4"Lib_AP':SeW\4G"F!DG9(5RkcO69_[qBN$G+c+*F#Q>,6=Nhs7G?/q+e.Y<&.=s/'Q#Q[KMQCl)Am:(Tb\$8V0KVLMQ5Ku4ON%lD4tis!8IZJ&4A/Oi&7l+oN2cF\l]'mJge9,>HOhkTkH,dUU0A/$%0KuMQU@2d+(1h%-@$Co%HHPG1s.VXcC:La_%X.hu!+Cn)`BuSY/8M;WGoajJGG>EEBU)1.QQ"CVBVE%qYgJus.7+l)#\6('KSBLLtiOLP-AB-%k`UMS).QN,@62;rUkM<>=qZ`IGTS8?a)!p,Q'Tepk-V2^OB+`1>d?sgf$G#Ft,bi!*!0XaXTI8NSTj@Y5aN6dJ%p%WLRVq91sPOendstream endobj -78 0 obj +86 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2851 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2852 >> stream -Gb"/)CJWt](B)O^\0'0UNT9RkN-6KcBKEI2kR_o\V+A\GQ,J;b)r%&JZeGGnf1t\bNZV7*7\`tADMVRuVlEM*cFGA*,6!\bpM:$&B`e7Z"Gd2E3=nVU?ucDePG@:cZHK3bJg_9I1i7ab"pu,=;WFBWETG--A.]Mu+@noKi0_Rs:mh9),RcM,2\[\?9hQ)3W`0R5<&u-481Uo^FMQGVL!IUF:fWJ1J$pTFJ-VB&oQ$oM2=RCk]H*^'I64+\K38_SdDV)pIQG$,%'M<$pNrbEMJE]AiS0O,9_9`d[f`seRLurpki#$-l![sH=_u(68-X!\CYrUh%6ln#De/gN2lKV7lSE00)MX4,iJ6Td]1`qRk3eKP7O[RR>^s)W=Y"V>k$dDS)cjk*TR#K\%57Oc5F*2pbad.m\TT/./$ONBs1]W^L86=LJb%^gjcQ4Q[mWN?Y_'!lESq>aA9'_+a<('>@PME5[T[I^o'!iT5k85Dr8fK06[^jQ+%DQ-6[`gP9>e;G*q=^llf+'>+-._.VOQo>\KQQkW1`V$2,8+;jsD%FCO!DdL["GHKP?gipjPoVH[>P;V(WlhBOn1`9;T%S=nRbO:89.+"V*;9#^NP-4K@+blM_%OF-kK(u>*Jm2a&<,tS>gjZ@RLM1=X9=1N7@m_R+(\&fHq)s+FmJ-i)N7K$,?MK")Nq2E+NTE>"[Q4dJ^P=*-jCTiK+Vr)]/i&O5ctSdZiF0_-ORB6_2&l^lL71B[lPARJm07e-j>GGZR!?ml.*TUWF/.WB>%dDIiY10)kV-R+4u-7?:oul2B]*@5p:e?X-rs(lU9(.\YJjs(!oo1qNVK4@YZ%&s+o\gT;(7M?^FZjRIS>a*a].HNXBCE?iSMT0U1$SmH$i"jl%[:;/qpLJ^Del4on?1*$63i9u5U>lU-80>lMrh+!S;e]tb%7mpYka\Dd2XW?WN>a(a!\aIShb;UcaTG_Oi6UPK5kg,/a0/u;SSgK6A$mcL!A5NlD4#dFS^E9ri1`KWM:]lifc!OF:Kg!s&l1]uKU6LCSb9!kJR;'LNO5;'+3k!YeAO13@K9El3*KX^5!c8?V@rYPQ03*I&JL("CA"nKYBn5(;;=\NYJE`FA]=;.&G\2#6X"iE&R[+rLh35;nS]j4@Tt_m`QMXbMmD%P\kcIUHL"pGQC9E!gL^$MXbuS&ciriR_3Z0jgO:U6TJI8#&u)nl6'o^Tr=1g/]e4G0./W7Fn^^=d*UNMl`p]L(r,'A0gGMoYgqkXAepC_AEgt2Ehc1(8lCXu./K1$8K=:4kJse7'reM.E"R2@bKNZ<`(ubKtZnL`?9sei*?E9D=r%u3M[&;b%[,c,fJIa0$*6knSF(hT@^TM6mc+p1QdW[^?W,421Qr=u+Wd<2t)+6.:pZ7AJomOAcjXh_9Frc<#u2s0%m;"&]i_;3TK^g@?=q"Dl_d-%h8@QLFj[eGRtHUchQ!knpu-p]R*O&<,epiMWFL+p(W$BK;sTgi>8?pPZJ#8'>H&R;_3pB5#d:79c.48ib;[/ZdH+K='oQLm.%E]^l1#T%,di1R#gi0pK&])(,h3:gBS+jgV?f8]ri.#Dm)a1&$aGCak&FN-(nr:$N>%u%RhrO^tkMuJ4coCK_nJRZ3,75X\FFIno,-1^9qnJ*e-8ObSmKFqM+/5CdE]"tY$gd'Z;T4?H9b?tma(CM/$V&5[O$.<3XDe=hWAf5jF*YI>MVs`g:OJ*gc(%gd;g5#TDC&8,oeBHSZ0"V$CE/o.:PQlOHgLL)gYVB3SGn&'3(E1V['8G(qC,IO.1UPZegRC:38D(jtWH`Sf?is`-]2\3ZFA(ZD+"*MRjJqE:cBTKd2o~>endstream +Gb"/)CNH71(B'h3EBh$I3Z.C1VKT#g8NQ7l`(<&9c>JoJ;T-X7'+>"_\ij9phtM^3#0]FYajeg@=1T'_'h?]7ONtBP!>0fPnp@eHpb[R$B*(JQaW-*\-nr2`MojB<&_WH!$pg,7$CWlg%g)tW9;:rPYW-[`6F$lS3Y3P\BlHaV#UmoH3YDXcW#H).s/&R(^$;R@ZD_k1*fsE1h<9BiWNE\1e,`Vl[,PPj"2f006XhgT=CaAaH8>-@_8+5R6A+Z=k8tl#%)PM8LnJPr"u/@rZkk>(*c1-E9R_c=:GLp3r7St#<>.c+*-=IgN[A^0\f4t90$[mIIs"aqM_#>@U>QI'C,lDm0J`p]<^?-F59Rf0Ioc0+:F0#qh'`$qC#N>j;[T,[-5:VcA5Dj5T#3Ubp%0BmU;kHhZX,-TC/LGf=d8P?.Qq:Vm@W*NE\%]7g1&$DES\6tfIb5T=WLWXLZPa3>`pW?6F3\'g$4:kKap]MZFV_]@Z_gkUFX-$Wk,fTZLAaC/_LEJ1nh#>B2&)ECY\K*T"p!F<&@Sp2R>Sf\_^Ie3"??TR7"uZOki_HjDCS&:0jO"L$5R3h'@SYL3E^QWsNodK"TZ>QCtU!;_j`!3afN?KD7`Dr8fK06[Gkb1hacPE9):8WZAX43V\,]1Csh99V\>"jKl+$Vf(Q>pfk-_7fnu8dgll:2CkE)C"0;mp(B?gci3aFK8&1ar5c`H_b88(nH_L'3%$sP/6hNN=X9=1N7\3hS+(\&fHq)s+FmJ-iRZ(&O,?MK")Nq2E+NTE>"[Q4dJ^TjU-mfk4P7_X9]/i)P5d!jOZiF1*-ORB6abU_flL[IF[lPDSJm4e;-ma]gM^6CMl.*l]WF/.WB>%dDIiY10)kV-r+4u-7?:gu`eNC11Snj]@10''e,.83_f0]U^::lo0c4Q/pk%\nbXe13Z]A2sEE^)>!"$S+pG"]g(Vg(AID1^.s@XA9.GEVVE>I>I+0pB!/']SFntj+cISViH;C*2cNc+Eql&85X^Di>#ssO!5qKC=De_\:qU_:WrVjZqqgo5pV^>SGP(J.:k8k&%/4nE(:i9Z:F6M>h9:BWNLpDV)uT/ub0#j@]_:^g&p7?X7(TgXe4;sJ_hZ4#9a(KndnA50((0=%Ti"ZiRuV6""I[=u'4n`gbjWHOC<,?JqjT)D/;r(dtp9F8[5U50nZ9bd-X^.oC4-S8Ih&O1$pX);f\A/r+J/icZ&_R)]$"(rRf/FfMmfoIkA9.u+"><:"#Z+QqK%RDq9Z`(Jr-o7,VohCXHfself0!j4ho!]4_Cr]6FE=8[<=jMB,a_<*VIoeA+W.1BS[V04*%,/FJ#\H-aqBJM_OJH[;&S;2^EeOI*ftOOL2;,]L]N-[Yph>7#C\>!/a9%JCdX`#S=b6.S+;3!?8P8YtI%B/TLa^'j1!DcG5at_P6jB*Q(LM,;n#FBuX)NXn)6[M5/]&2jqYVa=:DsksT@9`R]Un=!qNU7Q2#qb6*g2VC8h2K3cA9kM(Ht8@C^VIu#SuOhMI``2bS-HJK25mIT?\X`jqbI*9%X,%Zi4JY#3,=I*^C//K.nFj_43'+D@3n08"(BMqeW4ATY7,ukNfrb8DoQ/4LOcS_G/(iC?n*W%(^o8lB,MCXXr.q9JVH6)]MQBrKj[AEK+f%]S8ic19O,+0\0']SD+=4-*nRQKHPp^X@uAUjm[/)(f>M1So/nra[tn+,cZM,sB4+.od1g^Nhr3dKKS1?8~>endstream endobj -79 0 obj +87 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2766 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2854 >> stream -Gb!#^gN)%.&q0LUoV45.O9Bg#4?9Z0nZJF-,\5h],V<5A4PR*UF^<6GI1+rM@=42:\d3l/&h$a5lW:HU"D4`oig2a%\%Y)9[JFk<['sn:iM>/TW`CP`'=+a<@J`nSd8-eu`T!EVC#48B-$Dp,`9C]lll$l,dq'H[0o$Le(-Q-lA]!.Y0kJ0SSqMDBifA,BMMrof1g33ZL,h)J&RVEgrk'9@^1F5>l]&XKI(R_f;>.W)c]%%"/JW>t-)!l)0OQY_=GcYt&$c:gHQjGZP[2q62DC4VT[euSOF)Nft_:@ZH99P3'/fkY6XO?fAC1WjAb_kWpSX$gjG9=$VDS,(C\EYf[&$%OHJOrD="W)]GW)<[p!?huKJ>ir*7%tR;.1>*k$,Mcu[KK1(Tq:$p&[@8?h*KIV-%NG+rA[pK,s/?r&&#!ri2qBpW;=jcOuC;FFPbLEIDlB5E+OWC'laPc/H09)njL>MRcAXW->0h_K/aB=VV"gIm[mM$._&[+"((s?s8>(-4R-*.Jc5&b+"*Kd:DM,WDR!D/`\9$"C'4,n)`rX5+q9DD:"gW)a(bmjd-_H/Q:"2oG"1u#*,o\JgoVSB2`h-:<":%%fbqT'Ee)_Wd*`,prd&jTVop!rLZ3.tYl0%/%;G]A?li9/EADJ*2sP@9)*qFet^=5-]@??u#!lZ8`2L'ET/.B_AB-D?TaPPWu)b(^4/ZEj;f):U2C'N;u?ZGd/\aX`7Q]"!t*^REZCRHZhD5Pk(:^N-UMC.!t2(r0Bj]B"IcOdEVF!A*CXBFm=+j&T$@s]32[cbjiVfe_<[W]toAKJsA%RY-l.^O7H@0]K_O&L\#a3#bFUqC88p8,]L7"6k0]@'#256aTZ-@3eJkoJdYjRo6(sm#'9X_c+#imiG(lP15:@q.\F^XJF'@sKc5U,Bfrulp=pjE8a'e4hnNPd3ZqpAY#[YXpM2=3S7\^\md2aVZWEkjP@PQINi[jpe$]U'icJm@nr."NBDVo9F`qGpIbrHI7TP^\dYG?46'&rK_LP7(WNmVP7RTe',XR[^!k:k*>\A""gWLskmh,SW,TiePM^fm/i+lcpUD3;YL^Zjnb*Qc`:4S^sJ&sq_XmeRU$E#Btkiu2s;BJ5]M0pI0J2I91bZm-$?XqfrV_q[W>HDK<&1YY@0.?)_%50,g+dG1p6kIZrW^%A?T)F'`DPsI(_]C;Qs3?6VrW!4/kc35;">LT#ASR^FaZBmSr+KZ3S.O**`#.bA$\,1b4-N%+EY_qc(sL2N;1ARD=ssib04;eBF(qRZ=dc[tA]^h0i:m*l6e6?^[VDVk['5E&VO_HSgoj/&'ptQH/m&qiaB_E(AlQ4i"lMK)"Fk"0_#f(64c5bE+M"P#;nI]r4ceE0>#Z".kHDgkaFi#,3bnWIIAD$urs/\lT>aGcI1'RD/!lFm>Nf0s'3;OK*i;p&_A45j>E-f#`dqHj_4Vit=>n?ar<7e^VfcRCpr6(Q8(mp*b:Hp7[7EWg80oVLoL1W:Rd:")5+_Q,)#lU6ZBn5sOWW1<$p+Al"27Mc^:=`mI4_4UUCY>)5N)J-?b#_F3ddJlmU1eI7U:Hd\_33(Qpj=_VR*HGFYrC(O0eSdb-mkkk1pmJ1&L=i'@Sf=dS;<8V`u:At>P@!_Y~>endstream +Gb!#^=``=W&q9SYkXT:*joOFAjo&rY['SZ[^9m6IN4TgU/jO*61o5__^h0\;XeE.p]^ro*l6T^T:b*r-=^6C;GggDciODKD?%Fs!#_cKg0o_[Yk?3$Z*__=].)C(mY2[iRs[[K&TnN1NcZE(<`m!(Ad5D6mjltl3;23b?n)Dr$c4([3IG!Y0_j>cgk;/f;mT2:JgBr]m:^$-A((bdVHG-HB5hB*kdQB=#j4Dc#\\kPG\t;O['-MBIH@d6Frb+sL_kU47lDkLi"cIg.]M2Dj]df6rroUNIbYFe,6iU!i=/W']m-`U_$g'!K1IWBUealVbA_Yli6:%U3[c5ZtD9rE^os%_#Z.?BfW&Z3tj/aBW;ul)GEr$o"3VJ_tme]=bkim14WXl5ADcbt=-)W.6.!1Cfd-Eq^^8&?l.qC!)$u8@X=$T`I8Rc=rf+NZ\SWm"QmsP_\nkqu._[0lg/VOS[peSG?s/Thl`@,(n3]j1Z$QUuTj1'%99+TTF>g\"efVFiua=EG,2[)_qGg`17:o=Y*qoY&HNtiX6$%5KX%laYO[S`7u^qB6#ehGki`dq/N:A`%`ha%R6k@S1,49\8aGY7pfK*kGH3CUA%@8WXgWgWjTLZ_5/]GDAga9JdZ)f2U=S#9&:^Sm*=b*cBHEo2H""mgJhp0`DX[9IO@uW&0F]0S2Uk63/W%/V2>r?>>$(`AH:UK]Qq0qUjZD:gh<@N/-Y=Ds(T@p>/JMj.^8$FPV(7T^.WkX4PouBJ5>DG)2[:%dDg::iC^>%\X8i-=Di[dN?9n7Ot'B08fYrk/+An6T"BpP"D>;TSamTDS-:/'ZiS7B38*;7aO\lY[E\OY)72KNK7amUq&e(HbA'H;8slDhI_ZooT;pn1!i[iGk=/DVUtdT&\^>:pK*R1:sbeXD)8V7P;4Wi77-LpNdWeK',>h*pj"cJ5b9$p>Q;!^NAFoQZ][Gm,kHc:"JkpMJKe*Y\@S@'O^JkTuC8U5X[0q#pB+V&miihu%bZIK:nn69?%^GHs*E=LB7pYKj>J[#X4<8d(/dU'Kj,G^_mirGfm'6_mLP&VCBTD*MU.&Ylc.^r0@PlJKR6Yl==pp5A6!sV>l'n9aeRRN"3LQb)HoVg`75/F_mB8B[&)DZOYDh2T!qkg#=>o$;G)XR'?'*X/:/$,=7\;Z.gc$8VX<4.ncWTthiYXS?DU%V\7o2QQZZ@tP"Z69,_5ha[0T[*]-c[DC+E29bXYi+_IHT2GgNDYTsE6Mj::RPs4XN&2u,6'/Y[+5Ktq@a]k&W'ICW^Z_TD\!^K$43r$73L$S\3E<9rcT\3(!V]P`ks?U![m`tReDeh#"b`Oe\d'$h_/CLFo.WRafZ$plFpZ!_>r0P=\I8;XDNhr!9]+0t1F#hZYX*BJ7%%\(_dmFQsNOC#C&P4Z;[rX?GV3N>(/l&c$(*$nCl5_1I-;SL8X]?Nh6ro1NXkf'Wlb4L%+djGZ%SF?uI_LJnM*!\-)Nf#bP?12Ft2!Y.];a=s'_,fcZd&[1M>29pATaGMB]O`OI_/G!>NLBEH1`LmZ<-9-W(c/rSF6(!Gf^d'?Md^gDaBj)Fdb=A:K:q'1JpRGc`uAHXhMlYu!9MlSh&!>PU(a^N$jk<2J[(#>@saNZYD4eAH,"DdU\Qn+p%[(&X]e\B/re&YQ&tHf^Z^3r[U*Ac`&06heiW8FNi>@HkWEZ\0o7:/]*%3&+We"j@nfF\Fg\"I%&CM@#=eN?@F'..7tL06S=DJfb]\6$Lt3@Jtj8k,qq5_*YQkO1,d6'C=Ke5$]e)."GZ_E]_&oc$8VK\bU8/]rHIiSs1X3*=endstream +endobj +88 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 2061 +>> +stream +Gau0DD0+E#&H;*)YsZtpUunI7]n#]mGnB+X7)\<\g>smHrZqZb'iW.c*#XG3/c@"&RiPTF;#uE:ge)5a0;XZ#n_RiT^9R:]DT!ng1q2M4O1TRGT<(`?G(?Hd*frjZno5jr\;'9"N^M2lP_+mn5SZPh6W^grb)G(]4G30Sq@Tn0#gP!F?\\_N5ffoDC`Fo*peF%MpA9Fd-a5js4?o.kXD66'4p.p*A@T\p][$(nmh'Q,ecbXpGG1Uf@2PZ.+CW)TaaB/0Te"4&"FcP)r]r[ob]lpV=.1SCmFII:@9]]h]?4P,b2pb0uc\kF,/HtW'`_k6Te8p=eUfM4LgOM&M`%DR6e6gAqu[!WZ!1kM(_4q#;4a/cM8+_c\egQmWEj=&&BHia3d5He9W+-Bgom)]8'PXr,fnubU7'gO,2+ljW9m&`=)UCijo'E.r"uC4^G<`fHe(/T85[1?:`n\gT='SD>fO&^hp9s*+"3T0UI7SQZ2d^n8TYT%j"'o!]pf&$?kb?^2b_*s0T"<%&_u5.'(drS5rsl(?3eGA]1iJNRHFXLQ^8/N22oAW^!t0lX,,+%p"+sLGX4/\S\=oq@ap="3fpaNGcS>E&Yej9n]ZIV[+?\o@lDY&f;D!%?>SA*FLmX'VBKX?6qf6h0-J1VM$.>WB\k5pB>>lAdb>f*SX<;GkisOR`/7g20kY^cgF'=^-06[CA^)n(AhnB?9NlJB=g@OA2Lu6:LLP[.n-cb2uK.:iFE';D__qH"'5n*J0K;u:#CNG:<&*_'(l^&D-'6dNQ#&$^]k?O`>R:^+t1s8i;9csmt=ZVhqkMn=MiN?:9;.`-8I?1;Qa\-.nmu.CMq[O7%Yg]<@Rk6t\I=1SP;^BJYT;@g?Z:?9k>YLbX;i7E1JX$57mDo]5l9M4$@]JRs3%s88!:u+[9U$L5RKnYDH#Xp2N*SjV49dX<=ZHq/Z/<-X\AqLK'P:MFZ[nP3gc1EJAiBe/FWKOWNs*3`n"TclfK.\@(DKH+,1R$fV+PNR!I^bbY$I1K&WhG'Sc*Fd?BE+t':Q7;q/mM$PQUUoGSD#;Y`B%YfCSo!Ha:oj4aq9E86J,7jXmKURCoDS9(0F?,67CbXE#-?->\^entNs&Kf#2f]Qk8gbI^;C>%-lTll^F'2YoRO2`N(+Utu>/MU:,<5P0o>,T^Y0XpUr^e<<-kt#N4-`,=3Kn*igL);25?iq6-#*h`&GY,"UQ_62&blAtjN9eendstream endobj xref -0 80 +0 89 0000000000 65535 f 0000000061 00000 n 0000000146 00000 n @@ -478,63 +531,72 @@ xref 0000004219 00000 n 0000004367 00000 n 0000004515 00000 n -0000004631 00000 n -0000005045 00000 n -0000005151 00000 n -0000005229 00000 n -0000005313 00000 n -0000005519 00000 n -0000005725 00000 n -0000005931 00000 n -0000006137 00000 n -0000006343 00000 n -0000006430 00000 n -0000006745 00000 n -0000006820 00000 n -0000006912 00000 n -0000007015 00000 n -0000007164 00000 n -0000007254 00000 n -0000007346 00000 n -0000007456 00000 n -0000007578 00000 n -0000007723 00000 n -0000007825 00000 n -0000007941 00000 n -0000008054 00000 n -0000008169 00000 n -0000008257 00000 n -0000008387 00000 n -0000008499 00000 n -0000008651 00000 n -0000008742 00000 n -0000008854 00000 n -0000008964 00000 n -0000009059 00000 n -0000009166 00000 n -0000009272 00000 n -0000009381 00000 n -0000009488 00000 n -0000009611 00000 n -0000009715 00000 n -0000009833 00000 n -0000009931 00000 n -0000010027 00000 n -0000011148 00000 n -0000014740 00000 n -0000017954 00000 n -0000021446 00000 n -0000024389 00000 n +0000004663 00000 n +0000004811 00000 n +0000004960 00000 n +0000005076 00000 n +0000005514 00000 n +0000005620 00000 n +0000005698 00000 n +0000005847 00000 n +0000006072 00000 n +0000006156 00000 n +0000006362 00000 n +0000006568 00000 n +0000006774 00000 n +0000006980 00000 n +0000007186 00000 n +0000007273 00000 n +0000007588 00000 n +0000007663 00000 n +0000007755 00000 n +0000007858 00000 n +0000008007 00000 n +0000008097 00000 n +0000008189 00000 n +0000008299 00000 n +0000008421 00000 n +0000008566 00000 n +0000008668 00000 n +0000008784 00000 n +0000008897 00000 n +0000009012 00000 n +0000009100 00000 n +0000009230 00000 n +0000009342 00000 n +0000009494 00000 n +0000009585 00000 n +0000009697 00000 n +0000009807 00000 n +0000009902 00000 n +0000010009 00000 n +0000010115 00000 n +0000010224 00000 n +0000010331 00000 n +0000010454 00000 n +0000010558 00000 n +0000010676 00000 n +0000010787 00000 n +0000010907 00000 n +0000011035 00000 n +0000011129 00000 n +0000011232 00000 n +0000012440 00000 n +0000016058 00000 n +0000019295 00000 n +0000022787 00000 n +0000025731 00000 n +0000028677 00000 n trailer << /ID -[<475ca66bc5e001998636d1469a46808e><475ca66bc5e001998636d1469a46808e>] +[<43846ba034f0f13d3c3b73c3a2995bc3><43846ba034f0f13d3c3b73c3a2995bc3>] % ReportLab generated PDF document -- digest (opensource) -/Info 43 0 R -/Root 42 0 R -/Size 80 +/Info 48 0 R +/Root 47 0 R +/Size 89 >> startxref -27247 +30830 %%EOF