diff --git a/apps/Backend/src/services/pythonClient.ts b/apps/Backend/src/services/pythonClient.ts index 5e279ef..1a02a2c 100644 --- a/apps/Backend/src/services/pythonClient.ts +++ b/apps/Backend/src/services/pythonClient.ts @@ -6,7 +6,7 @@ export interface ExtractedData { name?: string; memberId?: string; dob?: string; - [key: string]: any; // In case your extraction returns additional dynamic fields + [key: string]: any; } export default async function forwardToPythonService( diff --git a/apps/Frontend/index.html b/apps/Frontend/index.html index 7455d36..849e428 100644 --- a/apps/Frontend/index.html +++ b/apps/Frontend/index.html @@ -2,7 +2,7 @@ - + Dental Management diff --git a/apps/Frontend/public/favicon.svg b/apps/Frontend/public/favicon.svg new file mode 100644 index 0000000..17b818d --- /dev/null +++ b/apps/Frontend/public/favicon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/Frontend/src/hooks/use-extractPdfData.ts b/apps/Frontend/src/hooks/use-extractPdfData.ts index 8321620..02d07b9 100644 --- a/apps/Frontend/src/hooks/use-extractPdfData.ts +++ b/apps/Frontend/src/hooks/use-extractPdfData.ts @@ -16,17 +16,10 @@ export default function useExtractPdfData() { const formData = new FormData(); formData.append("pdf", pdfFile); - const res = await apiRequest("POST", "/api/pdfExtraction/", formData); + const res = await apiRequest("POST", "/api/pdfExtraction/extract", formData); if (!res.ok) throw new Error("Failed to extract PDF"); return res.json(); }, - onSuccess: () => { - toast({ - title: "Success", - description: "PDF data extracted!", - variant: "default", - }); - }, onError: (error) => { toast({ title: "Error", @@ -34,5 +27,5 @@ export default function useExtractPdfData() { variant: "destructive", }); }, - }); + }); } diff --git a/apps/Frontend/src/lib/queryClient.ts b/apps/Frontend/src/lib/queryClient.ts index 6bbb77a..098c02c 100644 --- a/apps/Frontend/src/lib/queryClient.ts +++ b/apps/Frontend/src/lib/queryClient.ts @@ -16,14 +16,18 @@ export async function apiRequest( ): Promise { const token = localStorage.getItem("token"); + const isFormData = typeof FormData !== "undefined" && data instanceof FormData; + + const headers: Record = { + ...(token ? { Authorization: `Bearer ${token}` } : {}), + // Only set Content-Type if not using FormData + ...(isFormData ? {} : { "Content-Type": "application/json" }), + }; + const res = await fetch(`${API_BASE_URL}${url}`, { method, - // headers: data ? { "Content-Type": "application/json" } : {}, - headers: { - "Content-Type": "application/json", - ...(token ? { Authorization: `Bearer ${token}` } : {}), // Include JWT token if available - }, - body: data ? JSON.stringify(data) : undefined, + headers, + body: isFormData ? data as FormData : JSON.stringify(data), credentials: "include", }); diff --git a/apps/Frontend/src/pages/patients-page.tsx b/apps/Frontend/src/pages/patients-page.tsx index 8bceed7..acb790f 100644 --- a/apps/Frontend/src/pages/patients-page.tsx +++ b/apps/Frontend/src/pages/patients-page.tsx @@ -87,7 +87,7 @@ export default function PatientsPage() { const [isUploading, setIsUploading] = useState(false); const [isExtracting, setIsExtracting] = useState(false); const [formData, setFormData] = useState({ PatientName: "", PatientMemberId: "", PatientDob:"" }); - const { mutate: extractPdf, isPending } = useExtractPdfData(); + const { mutate: extractPdf} = useExtractPdfData(); // Fetch patients @@ -294,21 +294,39 @@ export default function PatientsPage() { // File upload handling const handleFileUpload = (file: File) => { + setIsUploading(true); setUploadedFile(file); - setIsUploading(false); // In a real implementation, this would be set to true during upload toast({ title: "File Selected", description: `${file.name} is ready for processing.`, variant: "default", }); + + setIsUploading(false); }; // data extraction - const handleExtract = () => { - if (!uploadedFile) return alert("Please upload a PDF."); + const handleExtract = () =>{ + setIsExtracting(true); + + if (!uploadedFile){ + return toast({ + title: "Error", + description:"Please upload a PDF", + variant: "destructive", + }); + } extractPdf(uploadedFile, { onSuccess: (data) => { + setIsExtracting(false); + + toast({ + title: "Success Pdf Data Extracted", + description: `Name: ${data.name}, Member ID: ${data.memberId}, DOB: ${data.dob}`, + variant: "default", + }); + setFormData({ PatientName: data.name || "", PatientMemberId: data.memberId || "", PatientDob: data.dob || ""}); }, }); diff --git a/apps/PdfService/PDF_To_Test/sample1.pdf b/apps/PdfService/PDF_To_Test/sample1.pdf new file mode 100644 index 0000000..417b45e --- /dev/null +++ b/apps/PdfService/PDF_To_Test/sample1.pdf @@ -0,0 +1,618 @@ +%PDF-1.3 +%쏢 +1 0 obj +<> +endobj + +2 0 obj +<> +endobj + +3 0 obj +<> +endobj + +4 0 obj +<> +endobj + +5 0 obj +<> +endobj + +6 0 obj +<> +endobj + +7 0 obj +<> +endobj + +8 0 obj +<> +stream +x `?\;3n6لl #""d%} 4g}R+T[Bj-Ѣ|-ylnv晙wfys;A!dFCܵk"^.BU V.\>iO!ɂY_lYZEnv8aϰ]huEV̝s$Ln]>gJ{z(r ~!V؏ "?G>r3.}F5zmË6 +z} +yHxGhLs;_s=8:e/C7ȃ}эVm8V24MB+Нx\j4 }ߌq*fݛ{ +=qu#\})1gθ=>w$ܥJBsiB PGG!Gb^ύ<CJEa0+7>wyh|}rON!?Acy:o!.۽! -&@+Apdz1sBP:!)\{4j,yѹ8kD"} +( +;-~{BrO/ĒG9+H߄##lc1#ywx+rt'z;<_x?c32L#KW"{SFo6ɀ PУdQ|?Dc +:ހOr ?_sW$A%eUGr?8/W%\­Zmw7W>sucs‹«)Qn2![Keoޟݙ + j?KmGoc.xluВӬ?:$܏ $'md twYNdƹjb.pps-c w9—e|OGOOY›'E\.nIJRZ[#cjtF{QmFq]ߐgyxH% adNqhc ƍcT Я&`³NT +QA;1"p_r&zKO{I,7 P20EGO6|=MF!d9g 8_0 o@`of> = ]Gg+Wբ,;w"?O׈1'-8=,~ECW{ jϟEף-]#"PH\ UfLܽpn<r.xA/))N#]h` uNA3sϠr U{Q_rϡO9|k:s Qat/  ]} 6.h*jm]!t%p wg'JxܳRlArDt=- h>^)5bhZWoo6f+ 9o]zUW-_tE ̿2=i' O6_xAӰClп_ߚDuxEy,) qfl1$Q9QͨH&ޚK.Kcs`ǜݻL&ʊEzLB*K& %iBM}k"b̑H9ywD2'=[ QE##vQǨ֑peDl|K")V 1#wTT&9*㏍5pL #P. ]ٚP͙5#i'#3kz636 r|#tcS$uQlikbtkhfhıS#p7rkˌ nOBJQtOH(cI+tM#\$>BQi3bLs02gdh uLf?>ҷffvՖ'_8(VRcZ 2Ɍ<?uӂ<m(OZ,/G=s{ +_'q$j +i)B=o."Cm FiѕDWF} }; DDK##Hqpzk ܉Θ?qZ44=cN9#25߶cҏ)S\)QBa1C'2PLJGFgKe%?ԕ;Eb MkW* u촙^j Wx4mF42"gV_Wk fd#h+٫`0OohtcsrW"ZcyڱrT;ћ[}kbHGǼ$;0#%31\Ec3ó@tюm$m4In6c'dDE-;،}l/{Nh,IL|p_vvg;.>]Dߧ7%GFi}z|i4bؘ6#i4hk'eaB܌;S.ܾcX2]iJd; Xх~Oy3gJ\D?TB%y &31v*  ZG̎ҧˤbDag,i vC-ƠUfKzׄJ-+`gSSv ):nn0nwgtXw B1v xfJMk]j fi. (/E1t`kF̓Jw tV42QpQ!H;aoۑY{sQas4RO,e%̲DC)e'_Lv.δϝU}3fn v\ +;"3[*j9͝V)sU%A&`Qp!8I֖H+<;,)6ʍIL9S\D-@-3?Fk]o}ZGjȠ`GG 0U CW23Zv a7_79uՂb(B*X[B]Is;ݘnM@K;`4*>>7 +r-EFGXW 4 +hA83;RE"62#"3("? )3^'TMliy?4:L?  +6X8N< ۗ 9$qHBu|\CI'Hq&Q8NC%3MMM㻛P3yX G dGC:"!pZd*44!ski #!4 BYMNڥǬW N"ǽdfztڙpf Nw!'׋|3nX'oklwֲ)UJ#fLdyðDqWX"42o:m6FTUF#iXtJ/9N;56Qsg *㣑 8( g??=;ٯ&Z7#Ȃz@(vI8܄, $Nx[ʏ?u;>}\;٤AѥvR>%S]k=XvRAtY] ȑ;s. ]d Y%YɑxHrIF\ppq9­Egk n{5iOjzon%ki&H36Ս1~~Kv_Yܧ]8H+YZD7(a^pUk}PElG +݃<KC#8O̞y++J'2e^R{(tI.s^Dno*%GF9ǹ/NsrO .sKkĵMگ}ww?* rF27HE*N&)js2ka<'͹{S-vEQp3eʲNT])j6pR+E{FQdEz=)%?IXR2|StJIN)FZ)?v.SU>eH4'(5Ǡ:.*NS_7Ȯce8}[\sђ{=~߰4yff^_‹/ov9[)vY +OnAX(4J2⒪a)#n͒W_1J2ͺTgqvA'O+^' [4( +B)Ii +85uvMc{Db0Q,R)j h)d I*d6YAno?)GI x$e FqVǺ˳lBZğN! k3 ~҂8 +v$eDq{]y7IRh|0jР L9S Dx`xᯞ{躛3<۶ o{ß,XG:Gbی>uۜT$&"-!}Iڿ”e +l>1jSla;}BB5*>?/2aDSZ*A9A埄9Q;?QGU~2 7ųL[ZƵQp|ZȊj%  ? v*'O!?Y4C G.EjzvdED|"Rq;ŵ8>ׅ!`JͰ ߛW$W^N :8e#(tSp*p˜)ٽf ڻBnCT]m=UmVT; PmP% .($Dx7nq.kś]/~ ݴ%ٻ?}mܴqףdso7~: P(PEEAޙRż M"[ B0th悶1ɔ/l2&SL^5 B0 c) ekEǍSsYH9IȜPUx񜊈wÑI y(ް]d^A$KJ,6#dƕ NR, GJ[l򨬺HpLzm›AmNSФИL⭱qSf1 WWG#wr}#WַKJ%ZP&Rr>QI62mْך>(ܣfSIW.H Uu=:1;g[O~kفxܞ>}$}KA P7*<zUb JT]bet]CZU͈CVK9m<V$ ̄fTQG09*LMrl:)h2;}紸NVtYm*ȹ:i +^Ֆt|5x6 vZ!lmvvkgc2^#>CD@dA!;OeYzy XAҤAdVXav '9&רdk`h!RV7x.n[gnH9@s\f YK74g@!K[8>eCnܶUE;{aӚ;Okw~=^ʮ=E8=F $@łmjvQiTS݅vWOE~*SZc0@TKmnmK Ȩ!Ӆ 1y]'jwwF/5Xz)Ew% ++vRWLaB`X$e^ΖnZ0AWÔK +LeLhRyMD_2dS]]EXՌY>J2?mtxׄUO=qݵ/SKۚ:Nހ?/t=Ks@_zg` aGL +L ͊행̪HfZm;MfX7oxv:4 hvBM[`Y+0|ED(9p7gOd6ߗuduiT?pPZt*(G7dz~hX5L> Rb Qֱ %A3fQ+WVhq7';AuBc/hTD+r=lߟ|gw'y>fp/\\?~񌉟P>/x=&RVށ:f~i|Q5CAaRN["|'^;B(*(*(նd #f#.|Og`}>#[0E*7 +ʍJjGI7qoka}S0i֔Ԋ)ev";#Z}"L*z' _ Z bbQ&"Ȣ yg0qAhKV.;ʡ/.tg{esƥn}ۆ2usnY.%[p`CwO[tͳn|nϴs(FdfOLa\ +ڽ %UL/hggxgIUaWhV1sU.N(7mÉtu4>e!PTs)Y%;r֭joxh`'sYl̳<0vm=𜈜8/<'DljWMۓtmIo[:E/5Oi܈rrL\TNC֖kw5 + *V \`Oډ}K +s@G@`[rFĈhy٪+@hQ4aqusB2j>X#"qf_ͳ~' ƒ,sK}k牗'o>f_8]{ոRb?ٿe~W9fP}|9DL&k"o!M`v#BccmTHC# o2az7}GZ9#pc~ $XM;O[GP'3w +I0'!OJыkQptLƉ4h֦'6p>W:(LE@o$V#Gt?@qo 9p3nڕ]-FHhOZBVAk:7ExgÂ` +EV&Ȥ|$X-'J͗)<|IyrHP(XۚM:*vH?~k'Os6N6oj'PM|l&aÛ} ،q^)N=qT^''v1hV͒j)LS}c0U{*I&9 J&$x/}e '=.ÉA+,|P{,(JБjl}?zn*yq -kVO#fw{0j&l˾%w2{s 0gN:L\2:- +aI.22I. M.X"*TL +:ވ03TS]|7[zߑdOLLj Ff)H-9 \[۲/emm2?&tݤ_arbW^/@a„crਛ1WVB{y hWS`mFHbQ>>k-fY]ȪJ\Ybt@%RX X,)s/%Xk3XR_@¶>xH#H|, +!NTZ;^7UXO-".gD2"C2eEr4+`P+z/,/ZYj2_ۻL4;N5+klXa%<^Fӻ\`;7,;{lu“ƷGܳW {n8u!i~ wj>|ū;voxcߴ퀑@Qu+G$x -[-,""@2􂂩 +& +S$t$̌]i  tU"8 :H>P1dRfi"yɳcDuڪTa-DdQ:`,ݩ1]˄$s@&e0&p(_6؛4_ OJξj(~<;O +0hsObCx~ ojޕOACQAѕD9?X<'U5zk,eW}__Wױ +}]׾Rj a]~}7ڊ2EI4 }N!['Co|>g_}v& 'w[ֈY3vni[]p!3 +>.$F[WELjhg={ΘdP<[" qu^t.G!Y q*L?h'8)jYlD1B`ALVD-2ܩ⠇™&&lE&3"}>Y$3d c<^x4B|v!CH$~AFf^:VdK-yDCR jx De7XX 6JVИlt^"H +9FRI!.vYD݉ӵIԤ?LeHGZFDl& FWДeW5Zuuj`jTY'H)i^d#0e2|)l(-O:dnhIaKT2$D$3yB̒@ݞ+[Hr DQ0DPPp鈌#$U^)˂l*yVpD׳*T{yUWşeX$OM /֭:Dظg`Qhbo0E`$t hJd]Tg9{@$3XduIOqY%@)wEFr%zH +gBX0 +_c9Y@F@Lvݧ-*~LۗXmrr/+a 29zYߛ,+创q$kb5&-/VO'GLH_jN5]-9UsV]G_z7m15^w6 ORPaU@]f[ل}^N1 =F@Em2m %{꘿glwK|㬛*~=CeFQlŎA LKy3K5Ė+Y +,% ѕx#S*tA˯m5㮒~k5=DХ*:5[-Pu>~j@%F6n#HEtЬYg6{ܡH!zQ٬p/px- $0xӑ\y|g/^&a}}hU=y%ݰXrdY0cfbJmPc(ezƴdGh‟5j\+_A\wԱK~m 'psxֽo3#C7>N:uo>.wW]7:[wK*'\mn8PGA} $ +7\Y+P pñx h]ٰ\IL( &I9"2' +`@ OzP_a&#xn+,.I*}einѪ\ja. s} JXO.j "G I5-pAmzÐxcOzͮǏ "Ӥ~ |tq09Ut f8.`܋oW`NX_f16`W}9LaJ`QgὌXYy|^u_IeM^6 +m۞<87ڍ~z?hWyEGZI ~r[wm|b}Ҫa^}tϩ'tt{)"W2шHk@4b3-0 ב]}pf`4%e&My!!lHtiC2t='46K9|q;I1׺|.gu۶m' mVv+@=ZyXV(=[ԓ+΃9<ܙOn=_;[C_uݦ/ݶ7e2aܧ>MZL- _cr|,qRkE"/"/'$(E<:>.p'EN4sTDz^.B,*EIp;PX/iVSv x7\AܔnBCg 4<>Wgt't֭NPyA&e&:bl dhT٤~?5.wZ;3o6Z77aj'"UeL_Ntoe3zݭ ~8:iEW{rn|vwuڦ>C + ʘmZcV~5PGnTVN%>{~x^uWl$PhTFzph;e<'#a )U-%jƚ1%5)SKbiqbI? +o]gE'Tkmm}̚ +Y[rJ~ICfey^VYy^NY!E^-!k,sB*< Ui qr9z8MϻIr + vrF?tH,47Z=3j@ +2\V&鼛H|{\h^n`lwy->XCCdk#n\wzqɈx+|eZC4iOՖ"I,eL9qf|g&βNEljVfóaq@8pDKH*4azGOQ=˴`P'_HZ.7DJ0(5۷dW_2p qn$0I3{W^1nEOKn>['lಪ +U}/hi169~N!V5'^iLHC%:,(ra0JK3,T(tK8i + Miu-"ĴL]dsUP{;o%JV/4ے8$a~ɿHP0$JYe@c,B2I,+?&cMNʭrc2Yٗ16VQem+l785gKP-h+Bfdɨ!:4oV-e+) "?],Cr,qҚ]d8o5\ӎ~~߫>}۟Koy Oݲ.|wQ\-/aa~r4 C=8\o!Z6#Uak`22255ZCJ~W޿?aSZP1:6@eԏusO>Éhx덟[n 9 0yKQ MZH +|kxr +JBl=LXZ's!g|`NzVz8OȶE۪M!(ZPu2>'1Zv])oRӪ1WF61^\YݐQ(cKR\9`{R>IB3zZ+ ^ T2ûtbaiBUm:·a ͌/́||>TT;h8Q/<c2 i54 ̋7K7d$ξ"]צۊD%E4eD5_<v؊fyʐ)lWeپoE`. +}e6?_j +Uji'JJL*B& Ddy̅]9Y{S$ߓio>{PWG]4Da $A +"(W1߼ +%Tп·]̮b&]l%z?(:-p }N& iݣhY..%^fv]16UqOehZ_lLtr);{yY!uSF==mi?nry:]}r]UW\'rIwAKѮ4C^$m0va-5[kAA}kFˣLNXۧϢ_ƾ{= +9%fhԟ9 듚 +,B㮯)~E,p)Kw̋5om5Ћdz B^-eZpe{е-Eg浐W"u6O%]cd< WlGmr6l6!VlyM/ecb!Z#}κi&?Q&JSbBdiGb8glIa0C%-wW@ngN+zQ Ar^J}&[ށvϾ[]|V6SW΃>3O[C\m׮{nF`rEݼ3wx|st݋\o/^'h֫ Z IWQ~g^dW.N$lQz3JöIV +s~PCΌ3$KhbKQ,9w-gf>-1P?si24>eL) 2SҳՓ<  |* w,Lu>x6eҌ7r!"L|Np_f +szh 3EdO7 $ +.zh .{3 $ j"/̃h?O4o1o5ġO%d.54Ȝ3[JI<"w w(wF Qx'`83Z)MP1ӨŽ`6V5)6] NOp/oD:P"Mѣ|&7^ EKa{- ~Og~ܛXw7wtU]q?b +6r/r eW&Pm/KZ8TD@]R4'3TD@%E"D+Ev)b(EDn2fxYm~~/)33!M- + _[*V +7`bv>棳槻q; +;a޺¼u66`7z|.3}'=& US-Adw +dw +];S ެD +g­ R3n3Tg,oR +| aF#MA/sKFE_ה tTfh yE^+zqocL2(̚.G'?D*DzdxƆUq9.m(T#"1i,жXݠn,%3'ܹL :c {fC*~%k(G_uuΘ7nP>~߄Wؿ}Ow%ɲC{sݺIa̫p +$i]߸O3Ntek4v/#&qEjQf-|kd >f&3;Mfv\d&2VYi|Pߒ3 +ef + >*_f򑕾q1117g:|joj"SCIǷM ^*G7N3ׁ>eNon,]ÎNi[\j8 %AN",mzZY:^Y>Q+]߽lj{>Jjd3Т"?Qq7:X/O)?;,~bSJl1-L PP@(mcgo0^d谤 YedPB)1 ,IKG"O$_~[S'6̫@H+Tz -]O lI[ƇY+bc.[!ec. u٘!łLڃ-^,Dcox;M˿3dUJ*g$̒zt$0V>U2Xw1xUT؞OU~`ٯV}/۞莾n3^dv11 aikg:;v/^ש]s+B5@\&: 5h&괛Uę̄,NRw[yqswh6>v@/ 쫊XP^/IˋX]VDGH\\eC͗G旭7e5ryy+tB:l22ϲ̒g)%%%%eהּ>gZZyyUkbkhyDꁚ?ey^y]_=U3Wf1(7*}F %bQn%t#8TYX@$~%j/װaY_K+R~`< a Y\6Y U' #s"XCN_C= %~z?Bd-?VGuI.y.8pݡcոޚ^ژQmjM@0:}W:nh;TGH,G>;dѻ2%h )V2T=-g I_zH_OMS~)AqC;#qr#5-hE.I}ocyi4 +C6n'+c&nS25D*)`3jQYLUL},A\Ui >J` V'6l؀d7ܥ{v`9ExI?d .a[*z9ǮW# N&:|d)6мvu kM>׿<ӞQV/^ ů]=|Ah#/*lp5UK[2kXi)~.{ UykR-<*ɽ^CKEXD[L8Z>,ݏVT G3'l9٦/_gfC $!$fAr! Q)2(XQdP(ʤ"0Z-J[WJ\E[ErosF>{:{kst~ ԷD4\&CJX>1}aC7X;°CBд_.b֤„Mt{}b-,ʔzlc,cm3>ΓkW߁r*C7J'4#A'{bӦ%B :ۛ+K/x= ۷]7m<锧#ǓI"* ǭ4q7WTJQR\WNB|*0:QwbW +e6.wU%\;20ۘ6p~1ߵKR?.JQQR"o@Ij/ٵȵByyCCߝzTCCS7ZutK=V^[xj.U`x tl(IRbARy4ܓ$H>$?ZV47OXVN?Kupi =>DUF,{ɡ~2@fj~.HJNMJJvb+IH2%#$QtIʗ$jpaOhG繓>DŽ<~Ͼ&M +߳ۥR.YL, +H>+&+ ŗG ij rq7F/݌ȋhIĐy Qgo( x3ۨo[Βo=kR\FȺ8CXr@4\L=w[GJ$ψN77xBjϺ9l#Л:[SߖvyڹObvH)N~Lܮ/ٱi۞ڿb A3+~{H~|o_cuo9ě9-9lD9/_F->I#1?8+NVUh'ի$(YހPB81k}oVIqٙ|LIoee&wQXN +{eos7_Dw =)3.]b='?O( + JTT Lv~SҭRoK[ti`iʽ+<^NAIg|_y1IOIQ{7+,`K +&^o#zIVjJJA +7C It΀r}rI\9Q.ESᄲ@8 O + ȁF|WjCr<|KY89qX2j Msvq`{ۚ|nM>+ϙmyƻnI}-գoAMLҕ"[^LsoGSFtm>+?r{GP'AW5 6ZX/- Fn@܍i g/0ȶ.FqwqZq=#h Mpi6O<h2OR-Hi(K>J ?Q|tC~,m +8a+KQx2b~:+ŸY1˗T-8EY:eHs,g4*}F1C4ml Aߵ>0{i6s07p7Ϣ-n̩&{>m̥V8%8֕i!oyt[Bwjk1DgR˿s 2w3b㣝{%nxqCR(Uii0怈5I4c!oz NJ=]ǭN8?_UbQC=fcml#K'fltP?c 2uYW= z'W_g K-C}aIpv-D`j,ӺFYOB)`F`0~W+c3 xO!4Ў@ +@ GYߗBgzz{{S?[k [Q6jLB頋^|ǡϦhc3)Yf]g?T߄rRʺ3믬; +V 4Q1h*UȱlZng + c,6_\rKCҙzmaNOo̩6&Bz̈(Zst<;w?*eas7#V/=GhߒCz%?܏=Gɦb-ͺSqom4 EdF+swRT +YL{=elQm~zHocjK˷ m&C\*`+0k^C2f]^/WEڝ~<~/dqӳlz G43m"a[O S5H( 0;il2Bl/1md ̃0y@cŞl_Omȩ-S<_'vO +LưEy_,f2^<ieZJ;~r Z' X쯌qUcc[fvĦi?sN 7.c{LtN:W%/ʲc`jW_iζ{ΰ"s~~"Pϱɮ=JWc┅v9s!]M'l}~۠R*E;$k017w\z ˔,ۣ؟c00Nc<>*znoPHf'1tTs o RhalTݺH [nSVa`lD{.m#;_Rk|e}u!W/-Pޥ<MQ4!UJBSg#O{oUξe+^.cC( mw+ˍ޴Cc#埢r*75 Q|1@kl TaKcLKbpócp@xyqxDž c@=.oX wԯ*P;Q@z@>a֦A۞? cm~`k>&TYn25bOh:kȝrGX,N۴*[.JyWb_D,{wo]nUG7Z(5THՌ.]/vϼj 8dd"թF?˄}z!ߣ Bޙ}}TO$2\&߯MDO+}8iꋔOBx -2ț6ʽt9 *ŞB=ۄCT1ڋ5mRNboxg4P@t}.G(c?an.EGQ!Rk +s/fVcmno1V>7>N:Cl6Zq8홷GjlACBz}j9yE=mh!@wXZwXTLSk+:z5z^eȹh9fj?l[Cs5SS4}BDz>Dٜ@ 1 3 Øs6l=D:|sOlc(UO\ud`&uy.N@`'m4N; x:;o/G>P>Xgi6R (c%*)OyHs`֦ ouhvF5>_,3Y$Xx$t[廇Zle ]_u>s6a߯ͧJSm hwBP=6Xc~.o碁mXo{z9W4eaĚ~&e)>oRW39O/a/HؗfCIAqęgX/RІ/F  +A6\=t2w#`ܙ^xoPTam!kK-}ASOE~V#"JeMUʑX))(4ۭBkٮ='9LJeh n#N ?4 莾~^?5e{.'<.3WR+"}8tC%>O,1_ul~o8T8K/aEGo?@N^X`VCC1?$CYuA|'0K+mzXA.2g9@2u g&"^HEugɆy +uztp̩K,D=;)m n :k^Fm2ܶv>ݣ!{Ns?D6>}a n~nUG#Hv^g] :36.PGF[\/Ɯo ~ g[#;18M P_2a_nḰ1n +[V>0#1(n@G}GV@G>Lm y6cT ^^=OO{7=cLg++!Cj>qZf=m4?Vb}} /u=f!IõP/k>= B;+[͵r1sKst7SУ \Kƚp`+5ш cXߥqyq^'g ߰>gX羍>†M\|t*Gm|n3~Ǖ)ie/ȉT~-p8uo*ޅ8-utط(rୠ= +qy^sS| +lU e{ƋZ+C+up`fz٦<۱ _o$ -Coscx#ڂϯ~O[֬/4'1l؅1Y瀚_ +,E4 q漦kw/as~͐+ǁO%W^!J mxl7,%jNiOXhn'j0KwKy.Zv ]Gsww#<|рۈ".K%K D#iGL@LhR!hkϵ=f lWDsBa~MGqGqGqGqGqGqGqGqGqGqGqGqGqGqGqGqGqC"\N} $´H>%䭣OP:? Rt@ҡ^olT +3_Pq@V +R)ÍJۆ@ZEJEky`/$%>\j-^0wC<`5p(P׿YxA'PP AÀIj@8dp'\ +tE3a֜RNRxU[lE؊֥ܩܢ:Z4PPZԓTLGůUC^I QҨ +{$EV$JAs"'K{dS>I +?ȟ5$KW"K["Bwǹq-V{׀.ǿ?;;ߦ 'C~W po+| Uc}ޥv lGF6=8= ڣ~UiS_YwfQ~!T\ӿ:2j:J~Bp`2p=uT <p> $~@(Q~\|)g)\|).R8&R8u\|)0 . .=͖BhJ7n&U*me}h;kwK/H#uR4.T{T[,JyRmX#BSJmgy{3ڃRRmT[(HRmHn[*AWnm o SˆjcEcڦCtq< Hݰ `d?2ZL' *zq-ʀII@9 4ϮQ1t]a*ǿ6Znn)JfLFiFo 3zFG4Z9F+].]Kv+<.&t`cHnW%גK!TTUʥ}SPW6J괶R]F*j4̑u=W*IT#N^(A sE_,ieՔ~SYfYwey.kq_YVu˫FqcR6M8~]ߙTߥ0Õ~UXBwυYQȕg{܊Wn* +nO8֚[EՈ858 @I"ZSODE\Eʦ\%WQ6G)r(IZq;q#NV^\,52q&0 \wM32j N:p5Sf0zZ]uiuSVxv[iN O3 wyVYF6< ̺qY{vO=eH[]T^}D6  :P]6PBqu]b$o]| Co%#kʼOT<ƚ)s + 4FnpZ\s?Pf>QU]QUue#&j̏Tw0gvB(֗n;M/QP+iy|VFː'Y'N5xXq]\L̿vm1ߦVJ$q$ǍUi"[ќOVz(%sgЋ@/--UJ " ]= W\$ +endstream +endobj + +9 0 obj +<> +stream +begincmap +/CIDSystemInfo +<< /Registry (Adobe) + /Ordering (UCS) + /Supplement 0 +>> def +/CMapName /Adobe-Identity-UCS def +/CMapType 2 def +1 begincodespacerange +<0003> <005c> +endcodespacerange +13 beginbfrange +<0003> <0003> <0020> +<000b> <000c> <0028> +<000f> <001d> <002c> +<0021> <0021> <003e> +<0024> <0028> <0041> +<002a> <002c> <0047> +<002f> <0031> <004c> +<0033> <0033> <0050> +<0035> <0037> <0052> +<003c> <003c> <0059> +<0044> <004c> <0061> +<004f> <005a> <006c> +<005c> <005c> <0079> +endbfrange +endcmap +CMapName currentdict /CMap defineresource pop + +endstream +endobj + +10 0 obj +<> +stream +}θ@@ +endstream +endobj + +11 0 obj +<> +/Font <> +>> +>> +endobj + +12 0 obj +<> +stream +xWY \ =)퉥|F7&EE\?T +i<` UJUM Vo +l,=}yG}Uz@g},Ǐh Cy͔1L๼?ݟy \3@u YdʼnN4+X*#"s (CrSD21$!I_@uDsES;+$D Ue/-6)dfa:/4ے37K| |ZC6RjJ86if:pcG}ݫ9Ǝ6#&}CGNGOF#['8\=d * N>6Mbڎ]-%kVhgtaEtl*:{cZě )z\LIQTKiMh*Š4O_:/P!;> +stream +x]XTW&n1XvɮI6lI6!ņ"һCw 3"U"Hˌ~ϑg9s{߹瞹y5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xcٱђs{f-*lhdվF^&&5!+ll2CJigbyDApIXed2yD}ll72*-R8-&6^Q) -XPG7瓜,f>VܖZ^[P\TRZV{rw[wO^(k}W]60xmph`hdpxC!! G$]64|Ém4 WMM#ȋ.6!.1>-!˝Q㛒VQY][-L(D',ͮjȩn,k.o)mV5׶vԵ]W{u}C#7fmg 3cp1f3kݦa(cK$P,"'E$A'"GtG!A( %  +3毨w p@$ :6&>6)>Å隐噘㕔㛜',N/ +(.+WK KkR겫º撆 ສN*讳, o#8bQp1.C\ldJ1^˯9>'.T,B164 +6$1șKL@YC ^OCơ(+ +89M\gpez$f$垡\V[ +왐$R`a&pe]:K/_~}:UA] ދzx42Pd(B I贺qqjʼn *@PҢ+׮;g` ưSE3EK !V5(wRl2׬{.BlB|R,m>qm~1c8Ŧַ=ļ1<2Uf. Sb՟wغA!E^}H -B!`^IC?QxQ/( ( + APmlj`zaZy}ySk{w?I|3>B/wy4P8?q53[ݡyD@"&\K{Wol;s- "j⒕/qi n )xrR5fgw3/>m~M5W^& }|BUPix3C „܄CvqiԱ 7Ky#Tqi'\Bn3f≲cCl=}TP3MFc:\aZm1iƙXbֻ +θr‚¥ɷ\,,N>E)Zޢ(tGnO*\/XMg*>]#-ln~$yZ 5HߩͧVk;ř5 侸GJ5Py;TNyD'dMSNܭOnV' 6E9p45&{{_UF]bށeyF۔8K]3 naIi8pZ\xiWmP;'W_ݚ˛!'8n|Y/K l Lʃ4i~yRj[M<=b6Dtx][T^GkZg@n{~hgb7Py/Fow sM8U֡~d6q9X_Uݹ**w͜, J/g-.ݚYUj'ov%cCE 4T`5fE#;ĉ`dX[ikNIc}'-;ccN588ح G7 rE[-[I1X<s6y۩ +n" Uan&\FC0:8()s_ F0O̗vo3|B䬒3y_S7ڎsEXO{.cNcNe.٭bc.06 PDw~IX6Sq|r}bn\&7ZG 1l;iQCz }ު]B +]RjC[wKZ=N-36c24X .liIش4ߖ57c:GM96}cL>5h L .zr%VE}rNdTo$#g @!PZA9K{?x!@rLmx\;T^ܣ^-|W C齓f㕘+xBKL}$^/^?U{3)yߝv+)"iM"O  H-0 C`n)Prg!A?6U$8΋;ͽAp7 h\bb!tŗ>MͣiGާ(l6h1G{iJiI( +:=ׁ"lanUw?di + ^,*se+/k +s1B7KmDH t5vF!]ck7 ve+8Kf1F9^-8~JV(Tc>#)H҄ qXPF\m> +< 4`eWZs C~ 3%A5*#]LOr1=Xq0Pq ŜJlɢ2A`  +C;`,ۧ8orj-{&]&)=W ?U>Sqd#∱A6 'e3 +Cb8?qv3 R7ƀ٠00W? bT0?a7P72vynW^׈.ZVxbIG,h[ڞDXCеnAHnZJ8#2OoU **l\^sIOoQO5ϧWv7FqxuHRJkܢ\Vŕ2^O7 읔뛔 ;AX%t 4>V:睔V1 xEaDAvkN M' .&M?0A/GJb-zF?2&k$H'o +":@ YD+^(zD"a^ +r9|,@, ;OUm؀l8`}p_I(1:p BЖumW{q. ϕ<Ѩ٧hlc 8/Pw:;<2cK8vS/Aq!Xpu/C2S"+n#"XG&k;FaJvE5 OU"e0\# +Bփ,$i)b&sl&T} Tb-:̧gt^'y L4DA|qA@bY$նx,$%JJ +"B/ۯMP闒]j6D@j̧{Au.Hx~ 6[q} 2SN@w嫽>e +IÄYPr>& (=="yhNT]p&Y.-MMT@`&y>IyJi[$&Tr/RllD/ޥ5M Y@ߏ7:·EQZi($ +kϥBe FމF|bo3@d8SS y1}J2}Z\#ɤvk5ITHZD N8=kf #S^L͆UoqdV6@A@ȉ0QF8yPcBFI殣S\@FspD` m4rSB|e\qk=#ATݡ*pF ,#gҞHwK_hG,4[=9ܒ iu/`01lh$To8i4}Y 7tõ򪛦 +Qe;iI흯᤯ dڽ7Y Ik2OStMM`ᶂH[ 3ie4ఠJi _~= qT ڰ$d¢66jPHV)׷zΣH'&&3SpvgROA6o +trnpF7Hȇc8 ]x0f[d1fቯ!de%3hA^:4iy[6/G_6+x'w_Hf1t,)@2S:U؀ !S.{1#KfN;>EAP[!11 #m҃=; ijtyGG!`Zb[US4u/vz!I4 OC || A*C!vdm/"Me&c-s LAo ]y H:6 e99Óh?; rx>22eHQ䛜k&U {N!F!|F :< .PvuU; tMubTnxy%!e ^;u[y +/H{cJF; +iXpwVU>ʭ>53l Mi#~VQ'kA0\ Pk8虿52ҢdV}0F@A}n;iǍ"ЍD7y|-R+0SbduI-9oXf16g +M,DWP?Od8:ژfJ +A<\΋6TNǓ)_:A35 ::hn_o슘ȂD DlPeIgǻ:&mJ:f41-+pمe~d/&^FS0u-Upz]E!^+?~6%<a]DFW8.૏-A&@ +.P4qhaC/g1&NyQ GLhb?L܎ ȅaC`P 7 |0H2a-*̥t3U3|m8rS@ZZNY_k'qD*2sA`!R^S@ AhP~s)5Y%@,y"Yy yT8kns mJHW g['zz#kd .:S1tvS vi b=UKr%G3wX@sS)" +ǐ1$_?w%'9nES&k O9c I"}x +TƸ @`ctyɓN\S[N!G$O^A:j&FylĜ=V8Mg4rr.a3.20p՚PnU'4'#μt@1>c=PL/!ƹZ/E$KE?]'Q5w>k?ՇݪV?[3ZmSWdIY$ZS׏1kǛfIH*[~YS+2ndy&#w%HGpջ'M!}{ޗވtF#w90;:m7, +4X'cRc vٻr& y#A̺PYʬC`6ISk2[gl౥;:B[Eo쑪ħ8OZˇJU'A(PfcC0GnBW!3[ CqWH0q*wRa,u1?˙̂2.88]H Řv\N45.3ܐ1#ѧӆfZ?ܲkVQ lÕ%q|C?[q"+A ,cG/EۓCwNRZ2f0K5^0;Yc6~0 bNgO>N4W0ulEul:-645J$378<<04<8Lv<>^'/JokWϥ+lD{:Y̏y$Pa !óJ0$ *%I%ՀbÚe+|ujBKgeT2's`]m,,H/Izu6ʹ7N)$+9hWbP?(mݭjc\qb#:CNU;˙n=vi|쥐[} #/HOΌUR9Tkүߦ Vn!y`<948 "pY}@~*.>x7jA ݿаFK(T5N!ςmI| l5r|5z.SOUP[]$.N63L(e~ Iبܲcm=vi899=~B$Ur '3[ = dx!l Ry|VQ'o yAeK[4^m2tX}x[ޢ'7+Sf(Wԡ /@ΫtOóZ-Eە\Q@㻋鲽wLv z>a]/Ao66~$q %UڢS\"/,?G\=Zۡ`)w_ޫnt$-kPJ]F6i'~a`1vr{)7Df%t c|t%'Jwx +}:4U§b *NM>)6ЙOmV8`ȼ#(>7_J~Awi HRbͱCAG{~]dܣ?T};;Y Gbm&Ւ= C#d;aʏ?B7 +,:g*4c%9PZCӽ_j4*'{PY+;o_s͊ &ۺK'ۡ"4:Eie9aF疕7=/q1WRm~ARmg)/Mat~Wo?$tRFQ]bBԈQE=% 6{F<"OVnS>VM +`@|IU3#Bh؏rLYU ,"iuEȂZr-YUdzQs(sxʸ-&o7Yψsept2֗|Ƀ{g}1Ӌ 5e9fp&%^oΣ[({E_K]be ռcN˻Gu +oi?58]l_WlEȉ'a#ш+J|( YY=5<#s +#6l'kege|l$Ja>.Axzw{X" '['GCXAblꠂgM"VVaJ^Q 7J|u &B]}`@{D,| tJ/hzAojD z8 1!.m?e._`xlzDΤ)Ao0p pS o5D#A/nE)sGמ^u8zP)wi~ +CG_!BZqK"sJ)$>g8#76Km s G+Yȉ jg ܤZ>}Mh([=A&lgK ͠+`*DV\y8k28)dYb}_qpsӚr 3#M/,㙔Dr_]L*cKxQ~m KD HυE,PAxYh!RrxBM0  +#19fb9AD{"ƒy52\T3omW}ޕݗU ~ nP[F +f`x8 $DR:HdnyxrFeR3 :p2\R`Pj",TqXB'!O6," Gy9ӠijզIHcAAǽr6s:y4Zy슃lJm-8s3 ks I|P$|H-uepk:[bǘ  + snǥ Id kA}M] +A +x)d&-9߉ /TW_ H6&<Fꃠ~|򺬪Қ2(;:5@Z^[36kZ˨"'y<<2aXl)5F! %d AiEg/t?tݳ_'ZD$Y\!a"O+khhXfDT$ /m`r6 ЅM0݂>i"Š>:jK%x֬նuGo ̓?,,,,Nq<8LZp7ӿ{֢euQEQ !=\Z]>YVqCy<s +ɥ+lu_\4EO02R`5!+4$Vj[6[o@goϮfAqi5MN(!' >n(k[t',D//%*DX#=(ȵV4OُP[i3:H:ewddktHXc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5XoW +endstream +endobj + +14 0 obj +<> +stream +x /k8$9Y +endstream +endobj + +xref +0 15 +0000000000 65535 f +0000000015 00000 n +0000000064 00000 n +0000000122 00000 n +0000000244 00000 n +0000000391 00000 n +0000018032 00000 n +0000018106 00000 n +0000018314 00000 n +0000050006 00000 n +0000050600 00000 n +0000050667 00000 n +0000050819 00000 n +0000051816 00000 n +0000063894 00000 n +trailer +< <8EAF7D443EC4C92087A699265EE4AC6A>] +>> +startxref +64179 +%%EOF diff --git a/apps/PdfService/PDF_To_Test/sample2.pdf b/apps/PdfService/PDF_To_Test/sample2.pdf new file mode 100644 index 0000000..586231e --- /dev/null +++ b/apps/PdfService/PDF_To_Test/sample2.pdf @@ -0,0 +1,594 @@ +%PDF-1.3 +%쏢 +1 0 obj +<> +endobj + +2 0 obj +<> +endobj + +3 0 obj +<> +endobj + +4 0 obj +<> +endobj + +5 0 obj +<> +endobj + +6 0 obj +<> +endobj + +7 0 obj +<> +endobj + +8 0 obj +<> +stream +x `?<3{I]iu%˖ 2mp`} ! I9}R6`64IsPhMڒ%M)MK3ZYN~95!3jC]{`cW/Xp< $ Brf{6hy:]3dpfX._| ]K;sيslMݲ|ε+w!+|jlj/`{4Ba// |}t];A5zmŋVz= +yhxя$N4:S݌">G;;H4@wk,t Eh%n5ݟ{=pu#\})!'x=;Q%GУ\ǹP(ԁG!|$g؇oFUerT"(ڋIT;Od:YJqO;_&Od;W[A@OAч=,c+|#8g{3?_/NW9 #" ()o"? ?"=BAy2. fnj;0v^^^Nt =Lw?gQvclg/ }V(E P9] nz+v_CKp+Zv(~'x?WPgX"2 Wl&N9I87חKs5u܃\{+w;oK2>'5gg,".׋]HC )-+7:vݨ胏q1Nt׀h7Rɋx# wrZq'S| $9CFp8< -!.eX5@'l+_+*f򕨠z/|{}#o^|MPhBQ1߄v1YΙ6'A.L5.82P4 -%@'7<~!gy>b_э"vĝ/r .t;Ns_50oA^&?&𧄩xpMh=jͭC MoBtᣰ,iM=>@x a< h1 ~: -B;٩hfyHn!:w?`CFt/zߑDa?XrXGɇdywBkW`? }=srtW}].C);\@ىd{n,({!W-hQn$͑[x|25] p/BZ?wm&Aly8x?ykVj]˖.YhW.O͘>id4^?lښAWۧ2^Q+FJ%`z.î٬"[&Ix`T=&6%dxK1hGK&.b%PrJ&BIEPCȘX$sht,҅gNiѱH$'0z3UQ8!2Ʒht$["c2c.j2.]oW[d e2{!f +bdѴb̜ySƌF3xU(cK"hMFm"Ӡ"۫oU- e^lޜYMnN3=^׳ wjP|4ȵ- ̖)MGt ׀sIؖpMЈEn nOBJ1tO˒H(}I tM=^$䎡HX45BS'#GUozn ŊSjBbZإLdnjgFà|1=8cҮ BEgN~X Q58nЙD"ӷ/4 +x!ܯzmVjXAжsFiՕDWFmJAWwDs##HqpzK ܉Θ?qY4<=Mޒoq{mLJ婌sT$y9v@9Pn4)Dy] P،rlDǓrYlsZ#zmAA>@M MoFFe +FLl-w7{ fPt }l,2}NWXD!Wi1ӕ{W03vS3"<_uioqpdp;fQw5g&%chi>'P;ʳl{nFl؇.ٍ`V#I4L6tU h^g;lLoJZ&'G$/$Z{Bu\qp;\s*݅۶H+M͗lt_[aԜ+O=O0cfSDžϖP"*QCL0Q_hRHi@z2,h):'fp,3;vm>]&. +;cHk(]jno727դ/!\+5gڮ2CMNeQR V(n.3{+obAK7m>͔P3aV̔\ P^P!b2vv21֘/%`hd^3-LC_ BTk#-ٷ=X.&YF3Ke͉B9ہSNZ@\i;ҹ1q4] Ur;NSDKL Bq2m#-͑!x +4v0`YSl Vsڧv[0#<[0g~ + Ż<Mkʠ`{{ 0U oe"6g>Pnnr@uYЫĢPTF.S1ݒ;#iU||nZD-hKV3\H/h|,OlOK={ߊ^ĮʌdhMdwdz:6Pq)4oPgMϫ KA`O+ŒpV1nAh~L!CEI:Ec7qЌ/inn݀b=j!{>89ӂnN!-{HC3w$@V0IӺpmzju.=iq8UgNjgN½68@6 #_cA8NuC %5> 3X'SoˏinpOHe5RHF #$a݉䮴EЩidtl8ީGf6kX_ukwjmfU[G#p"QvAϜp8;ٿ=їٯ&ZƷCȂz@"v8܀, $Ox[O= u;>}\;٠AѥvR>A;%S]k pjY;!C:4!ܡCw'\0tkEJ#H  +wiS4`AQ+4أ6QHw 'ȡ>BAmeYΤоpIh[j=tm1COszA\;\+dU $#Z]p; @K;A8t\jN Oo^M$flbl_Yތg]8H+YZD7(a^pUkʝ`DOae#AEBC8O̞y++J>e/"F MQ+\ɉl7޲ +fI1ӝܳSK\2RK:q|m#G[PZ4RݓBHFrHɤ=]mNFcu;̚GZ$9wB/;e\jW ';Sv,IUHW# +\)3"S(ҋJ7GO'N’VF[QLrrSk!`??lF?~ {UW7s v,@F1Aa9x<`w1VVwjښ!v-+K۲vǚݷo|饛o,M<Gl[ލ>)/rzQ3,Ja)$,&3mFG=Hhј] jɹΑM7\xcO.~{65q魐tҬL.UYw\ӱIੀI$oP(` +@R!N k]َIvl¾Vҋ-En)ɂ?|y/6ٍsSOy 1i K,P`YTb [,}1U|h #R2:|TIxoho8굃(u^/ rS=˴%yk\vםTV^p?L@}xpy^,EI3N꩎^pQgGVDHG(&:I*:I*:IZg#Q\xӻ|]x{x/f\ yp%N2xDS6bMZ^; 0jR!,lP~/f +1D U-C=T0TIC 00.Q,,}`-۞v!Zd&Wg\nݜ=s6#2 rMso77s OAmH@M JBy;7{gJ +D04hn1-A $S $C;L2yd2 D0D^%M"Q%-EύWsYH9IȜPUx񜊈Ñ-I y(޶]dnA$KJ,6#dƕ MR,V'EKm򨬺HpL.zi›AmNSР}1%ՙ{=[} $f7j*z'z_=Ǘ4K4Lҥ$zmr+e!Xgڲ95{}P"K".f75]4Q[[R{t0׺cvΎɃݷxsܮ=} +$KA P7*<zUb JT]bet]AZU͈CVK9m<V$ ̄fTQG 9*LMr\ຒ/8|1h2;}־iq;η6TsI'uҺ<-j=*A&B +^2dG| m8ȆvXw~,+-zI4@~6HI??!P4{AOrLQ +MsB(:`on]¹ݶݐjsܱ +s^,o ӜQw. lYvkMozaIw}WݸMkӏ!jv߼yߎcinЛ%/Hsp)9 +'U`NK1Ш|--(tLoz;F?ҀPv0M!oё鑥v0O[W`b՚z襼Zgo)H\']W8„+k5:+#H@՝ aJU2) +=фx%DjG5beȮ ƝU_45rUd?8r_֏Nggi%' ?m'o/7w=mCo~@F: +<2G4, +Uaw1>a% +:aS8#XrB /wJHnVѨW8 ?dIoKt3fO|^x@Ə˄s@| ȯ1ʫkwv_oZ'߮WkPP؇Ӗ1{qD#GJWf%J'J''ږ0i6bu L3s]daGQ(Tn#W '7N{7 )D3 ;.HOrv"`k>ONjEt@g  *PU2Qnad"tQ1S%+}ځ/.pẇfws/:eC}nܟ?~n?ym"G(gQ_2-^V<`I#>b0,`٫rUFd'Y9Յ&c'UoS%]FV&jXf)iT˂^TC#ٗYvƋ宽[ (Qd +2›wiLy V7Z +:td hs~ ȵ(?˟rV7egsO;b=;Ez0Ȇl^AF5=gw +[ms +0Fof:[-hEm#Y{KxC7ExgÂ` +EV&Ȥ|$X-'J͗Qc &TL?L>,x +Z㢜3+E#!M>زPX?;wo?9`}P$ Tۑf dε|qQؕ4YAՙ蠪L)DȠ'(,1*J^WЫ) +:~.F8"ф3L2"?pV'D}l҉|tC7 Ldx AnʞFv16avWv2#=Ly !DѢȜpF cQ86J?H/z;盲?vٸ>#^~e|ؔ*m3k+-2j,p>Hʰc^G# r kP ƀ%%kٔu.5%mQ9uשAKYb:J%%\_7)XM.w%78r<=b}4"~hՉ\(OOwT3*RUـΰüY.C>R^ӽN \fjĐb΢C@oiցЗ@K;&8D{\LZ@6MS`Wӹ7+N v,S84 +XWce'+ũ'n{ d?ކG'\=f-t3%dW~'xcrٯۗ}?O |o~ѵ#RGtka2y{qQPJiØq) K-lt0b"PZͪY3M7ŀ3S`o +S7ӽ8iQ%pA$oE/#l`Dqz81yabE :>p:ijy.z XE&?R +3on^z#ܠ1Z6qk]adU_f_SuȠ1?if:JF'YE!l2IxesXF&bܥ9eKD%ʛIA03ffjʈ+\ `KO8};)I-Al4%7;=͗Kwwkլr1{@TXT+MNQ%(Lpc,zVu3ʊ^h//B{yjThqZ0ʇ?b #+ YV+K(1: XJ 9|-}&߶k\ qh[և}ip>C?ĉJ\pK +>%Q9PHU&TDqHQTW4`EQ+p'1Rf2p:^&֬\#;mptxMr9xpCx->ف'Io^k :l&|B*>j|>;vhʶ SnɃo vȳ (౺:VKГ=Z]D,lAgߋ $SHpD`f _aٗFIj#i"5jVӎ6Vͭ n]cCI[_{ZԊ ,gu@LvJ=8+~4|*gwVrN~ '#$ 4NGw6&jgZTQJqÂMY"Xd>gvR@iɿ1|g6n`nǪzBT}j#[l|zkPF{#UiԚAEDKK +`C(jq9b?¾lj[I{.cٱ;QRJ3!+92>C6ɧxω Yi;F +XxYQOgzh\]<.+oX9$}s7h̗k3쳝3}8GX6{d" lWHXYQ:X+XÅS%:6BU2h$L(K\b3T̀`9LݼL!HC@O| ]˄oӭd3g4eh OJf9Pm בx wW:^;p}~߯'o׳hv_?;{`D*K]d6uv0rQw:{:RitL,fJtA0|jHQW#%ϬJYm[%0TfS7gU f2+x:&+Q 0xaځ.8eF|'ݞSkuߵ|_Uoemndiz-يCB3KflbK-A(04_J(!+G֧:*tN˯m5CGI\?O^ +Dei*lwX6R_uNX?i;e6hc4[Xo,w(t@^-cl6) \ X8n}L4f#gNȢHrG3F^ +/؈/ +xq_>E <nبr`0S~BbJmpc8ٸ Vt~d^+s~aaS<)/eLv +{=^gO1n6}|ߛP5c|3_t_Sw<8g~ucTO&ۊݾi,u_Etg߅@n$Cʢx]=7#KY9hA)":TD |!_ N$Rsjn WTCK%cJG5KJ.i OATD * "p։ +D%RJrb.6b̀TlF2yԺ5w|z&vNvvGmtnJh>8PGA $ +/\Y+P +~p1UEC8i=DWi6: &U[UYJA$qEyp_ Iy^'= 1N<x3q$~y zcJhU .3J1sOZ9>T[dF<jF +@ԐQ#[Ҥg9 (F:SAХ'OЬ|lNf?NiKSs4ӡ・q z ̅'{Lx8#B +' ImM>\^cXv~zx/g,_ݴig.x_ڶy~3Gﵫգ,y$>3-~w{]1viՈk9zԏV^:6c +hD|5#HkX]duGD-F0@0މ1IyS^m7jHt3i#šz0?|'\ӉL"GXqL4i48%|{6(['m~J;ۚ&[&ӕU#LcLkm 'lNͮ^ +U.Cav\qbxPA->{P$gxVz95A2mkhFD]jZ{> ފf[^=gW~֛>%=gܤ;^yl>%@/(x>p~m|3g1fVYU,I5v74vyds4lMK$ZWe`-UrӅZfatҽpD"[ +2Ya:;A$ 4%Mt(c96 NA~bZwi+ipA;/ 4ztVZwYEb&ez֛ (̺`;0d2þ~uCRR݇|5j^^w֭祅[5|Y/DUh(Wڬ@>j߾MK}[ +<%ճxL8V7@=RtVdDbҞPxX$bHD1U_J2e#>),eyy lN4gN5{"ٸ' yO>28(~]\?l*-\ 9\|,0:،:яjvJ}…(Y0y{lK/h!J2ܹɚ[?Y5/z:^rی1qDU WXwAsq9Թ;.? +iU\rŤ ~@x=1!j8߀V. BcijCVn.;< )6Ҟ+KLE=W~|W?Xi +06YX |T/hn+'%lq2M8q,|E6d!(Y&'Mˏ1|Sdc*LOPܤP`;ɃЮpW^FWGQs)l-8Oa7ILLi +| e/ЍnnЍXe+VC}l8Na⡽0*}̙cE5"XjE5НآYz̋A*JazV be=y^\m?ݿ͸o]Uaot۫_e?x?ڌs E:9w; z#@ۛ;eZZTKA B3EEN:-6ls2Z8;B 2%mk%ĸo0I;?5mVpihsws11l@1~["\T畝]Q+#lmgàl4mA)dF6z0`nKʭ&oʂ. _r9Q1' 9NVCt)] gIK Z܆vvw4.?,RQ"Ee-ʒ1NR# +,: W_4 kNӜUFN-}m.LЧZ ^Y*ehy{wnS6-37Kwxw%*&=\} )r깘$«j:Z.'-S]B mհʚ $,J9#-De!_WѾUm{VUh;I{r.]*̂r.RƲ3ikg +ńJ1a7;Ƹ}Q;kLc])Gdčh"oD5tTIѹ}Z۪?<2U]d{gU)1KGicWܔԄPfSR,wmE-}K\.cL,OY*|#^yo^$32--h!/Bt.1h):8z0ɨ{*)@e K @Mf;l;jR[mxX5U[VƦ߆hؘfkT9%&H|LZ+OLA1sλ?v\a0C%-@ngN+zQ Ar^J}[v\M榍>+^㩫s럟-?oŭ_bS`JEͼC3wᆏxm|sW9ڻxTl@;boYo$< +~07۫l B-J/{F)Bb6ʔRaN˙30cƓd Ul103tl>fe"Mggv찉,R򐕞-'=eeeU'hPSr`cgγI/fKZrVw a0wtɾb5a$&NF1}Ew +q>!*Z +j h:/ +- v./I4Rwcvmy?yw7;gMpô{nRk#f"XSK!1ҟb8_0롅"7 ? D(\Ȼꡅ"7h(] D(Z 顅"/Ch?O2o6o1gGͧ2WOw3̖R38|O8_o#Qy(Ug1^< #y=@f jVgJ7&o4*a' U 3>׎M/s[N>e/[eIg6vvv?|6Ph) ?}6BolUӏS.Fa)(c'| PwGV2>ǑZ@ǰvo$,pw~vd,5mGvtJX+r2U ) +pʏGai|dw%_mrBMݫFNqe{IzD%|Jd+Rbidӆ;{h}x/|u<|,xb|BKõeL%YM[9OKUFV/@/*`͒X,|*̧|Y֍HaCӄ!J KY'`n|BGBXFtw.^`{xC^*}W+޻OwG_v^Lv11ciK9;z/|7]sB @&G pb1Okxl7Mfi73a d1Wm6aSYĉo/n)xp$Ed|/UULzq ҧWVm\oiom9oU8MJ%.nH-YlGg tO_+/W|KPyqc˪i6Npۡ a_ȡ UE,PxQEt.+Et`Dޘ\e͗Gh|{W_T7WWh5eee%RfKLKK,K%3Yi}ϴ4֔rC |LU_=U3Wf1(7*}G %bQn%t#\?TYX@$%j/WaY_K+G|^?`LN a ,t<'鄧 ǓN*񌠐ǭ=5qOjGxANkgI aTl59|?hGuGgHl ok@D Wk EVtgU +wĶZbL]1"F'R'G0b7?Y\DlˆGhnn\^?a7ϋnߞhm~_(!I['-zTVa?!k{4 =H)՛,uV;yawgUӗS̚]NҳM%Us%>JRlWV\Nb]=qb2Xj \kLw]^Xڭ |tK$8[(KK}׺V+J o[v{_Rr~ pB֝'^Wn"ck,OW e + oa" %A/Lh64Yا$/Ǫ=7{֦2eNqgJV4 s=W\|CݦQ obs~ÕgRH4#\{W2d$KF@uy z?m//A~5$(BiiDž#-~~ap\(ΧIS뤯gEEƅ'.8g!xq_ÒKVB*uم-WKdFocRYmcpLs yy1,(aNݼyrk{if<&cj{D~PejY7m?˯މ% +Ls4Q_yU|p~6OG_I4_G]ȀIB\c,^i9ObvHJ)RH-{<]xz^Ҳ}ӝ^tqASHy ߽ZmQ0sd 7=|Z(|وr^L [[|&:wG|8~xsq$8V63:P'٫)ހ'޼P|Weog1'!y%/+CJ{xPB+{JňwRq {'J|W(IZKK4;z7$ߐ$ۓW{6=ߓNI6sI鉉UlazyoF!,YPMxF:䤤€'o76.h.D΂!Rg8$ϓߧ_"f)G(xM@Д0ڲ+?*(N 5rZmiVi5i{t"=n2:;!;-V~Cz/x:9 X2FZ,^ҋ:(6|~LCy3Y2<빁i?sPNêcm$P毀r?}PwDݢ8 +C:FɇhzIhIa︝Spdsd?p@yJ}*'/ݠsLG{w2S:G/[_(PtP<X>wډE(;H?~iq}P~94G ٙ'9 G^6kqV]@ +3t  +@ &~0o +oh/ Q73<*3yq94FΓ ,ɛC|7~N0S?\1[q:xXrA7bYC]D`Lt@ijvcT!hb:m 9U 2e- Q^LNU0<6ʟh~ꁾQt58"97=#hӟG|ȉ4h䛅4 iu)#ޏ w 6Afn2?֎&>'R7 ϡo,ծR1|X!:W Qu?'rc㴿>e%'daХ*4% >jsѼP_)|:6 +|T แ峘 6 zN?tNGe4s 3NQ|d2'~4H|rMua؇FO0M|JnnP?:lN\jS3j=h-ϞKGNj-tv(hO{:m sd(0L6}Aω<ʛ8m&DTMu'TOӹ9>)9qO#N +yoh=%%08c"Mv{{D;""hS{nXݯb\fr9 2"} fe۱^{ FkRonWA?ND]}*AA:̡c6zF9LqF0v//_%x[C*G~ru +2`=Xٻa>Bt+B fZ[@N;oKDߞXOnwɷA?F@k?5kgyDM$_`}uyC)tigm^7F!~0up=a3V;`.ȵql:<2heYMM((١;ʺ3믠 &3^)[(l:q͗!{ﯰ6z?x7&+A~zЯ9͑vΑƜZncJǢߞ2GG[3;pr20v?wh^qhsL #jXBѪ;ufF"9Pbϡ@fr +`:-d6n˭C"Dhe\h3!S[N_e1:Wd~ D^{!u?vb{<>goq B9zm_M[shб¶!#%fmypC7(wKGն 9ٱ%}++#ҎtT T>8(elwWӳVg#=~uM-bi0-F]^*W9*ωg-33lӴ9Z'L=&\'se1m0L+̯l4`=gs59?N?F)7cd׃KԥuqB:.&pO>kmPIp5?5LKrUkJeP?,ۣ؟c00A?1z +xP_fq"a֦Ah^ +k۱v_XdVـ3y SjsT+Zf[6r~30*Ӷlf? KQTVyl{@;Ϸ.Ѫ{[g[a*hiE s.]/vϼj dT"F? }\u!LȾT'@yXo`Ԧcn"'p4yާ)T^<e}ruv{bONeB!NÚm6$׍߃y1N)O/xϔfb +Sv+ qֶ|rk lZMӌ.Hy_)۽ za6޻7(-?RQgzusn@m2]gszTIsP*1нh;_9t詥b_~xɸk˨YcPޏsSg }1 l{@:y~[zGu +F98gmoX6OSM$uxK>kafKiv!%QL鬟}]t o0Xbf=:0;ms3촸o^m3D?vocӞzێL:$/ROR-=3ԴK 0:4t㇞g6=:~!'m8z4γ|k3=KlZ><'JM'P۝mstX6V~OHX߇}~>=<|L10ymag~7`40PĖl|bcC{aCGP.:ǂqh20<~/e0m4N; xY:;o/G>P>Xgi6R q?c%*)3O3yp`%֦ ouhvF5;S3,3vv,}f*'g/;oDJq?Oч7*oOyljHڢMV5քkTb`}{?cOΩORr5T Z0!l{egژl]u򫼮E]2=Hʵ^dKMW `O}w6Jٍrsio :r }F{!_`d>jk+q JM_ +a_jGIMUm~AS6z.ރȴk[DNۓƱe* >ۍut-!g ,v*ԱJP;2r<y@ȤDKf)YaUi/5K ǼWibn֒Bn>~`ӗlrSB;&;%IbN~:𺋨8W^]ۗ}-Ykt1Os;~̃yQd7OIY9k r9tn|&IFo`3$Iqao5o9y0_߀ԟ!nzh h٭zܮ (Cc+J]vqWN9jY9B^W2 +9_/7&+#'5t>O zا^/މdZ߯*0f+{Ǩ?q4GoֻzЇkUT4dk4C"t%\Q{bsZ}>]0>J= qgŹꧠqMD|MȥA, :H5dir>#p&pu!}l@ %zDDඈ%uE_Nem+\0j[oц-m n3=Ch6(D8_Xud<2dzUwZHsDPVYG[p<-~Kx'::(xk=w"(#qQGQ6ԪH;2 ycq?}1R{suGZUw蒫1F/KW.yd[D_ ?}- wÆi?<(%dB$n,P#,?l'h/Q,汧]2tİ\Z,=%{D.\/BE݀, F'^w%&1sO⫂ebc>Ԟ9:`t7:!kxg?i֥޿S(]NjeaYZA F1Ͼlq`=k&wYΧ}JxsBRuW"Xz-0;&jYw=z[w7krYu5Q ,F(6P!6dS' +AO;oi~#wX+xEСjOAm>0z1~g9sمp\ar-Gt_jroTز + 6B?d;=#=w5g :y@4A|r%K7PWq 8P xF7Cx {!=! '~1O?}2tt7{[jZO@q?. R ]g>si7'HS" w.'T\&Rϸ]jw4UER]]=K~&}v4DO:)w$\qD OA,s:aqj(I-XS~IExhKw&^:Y!nq>&F!c ۺ @0W' 3A6; +Qdc#-/Z%T:fP2tC M3{xQ:gmx&j'3D)1XkcvTqV~_M˔{h$CUGoi<0/\ + O:T9oM4c-X#քCw)fb\D9v(r%a2·l#-go\a&i0jQ\gLqezlwr"Y_3\/"b۝*ws?=H+\:]&-J +:x9G Nϋ|SJSך=1'7dD}@|C ˾0|]9.CЇ`/)%NK*G>{ݪ2=eb-}8v03U=PˇlSa}XI7yosx#ڂϯ@[Ҫ/7'F1l؅1ZZ_,軥4q漖˕w/a~ZYOţ^"Jk!3fU\ъDAL@A=Pjwk]-> q'5uOkSms 稜w»mBE/eVsh{Z],ZŢJ*2WIy%VIF@Vt;$٧$)"t +)_^Ms +PPuGl[|M0]]E>mk|13#C^m**)`9`obVWvW>M<֛z7zC~U>w Giڎ,H-o_m8= ګ@7v7 lۖW\[M~5y %FyH`*p%up> O>8J݀0pɇPLJSQU2U~Y~h.A U>!ZmY킸` +p72K]MiBsy|):.M_F f]>#Jy^ZҵhkJג*_PShC:H J uR fa0@jDj(\!$5)6~tP/5I RCԐ' 5d *yЁ7+w@vwL؇+)|!D˷"g2ֹw=|sH93=LC^\+)~stGW/e@0Eu>dZ`WqW̮@ÿ| w}!ْ7Wk}(5~YJτ3ܕn.n=6niuS`e UyR?* +ARlӞ-o-odަ.=R"&xf_kVl|-fB-j@䉨9(.73){ppn1úqI=|!optѤW}Y0T-/2B),qR蠈s04Q%7[D2)[Dɖ2EQ(.JR8VcNcSCfTJMmʺ=\Vϑgl$g֓ \V.584XEGNꢪ'[tNPWroeŕ5wjL9T- -`}+H[>;VQ«믦AC«kipoPcD6V4qa t*?RNX\ܠfsr#rs툧6=GAwʕR}Ҙ[;VD; :y=PxKR]R`նn6R"I$?np-ي,<2Q魔Q%tn瀞ZZEAEt> +stream +begincmap +/CIDSystemInfo +<< /Registry (Adobe) + /Ordering (UCS) + /Supplement 0 +>> def +/CMapName /Adobe-Identity-UCS def +/CMapType 2 def +1 begincodespacerange +<0003> <005c> +endcodespacerange +13 beginbfrange +<0003> <0003> <0020> +<000b> <000c> <0028> +<000f> <0019> <002c> +<001b> <001d> <0038> +<0021> <0021> <003e> +<0024> <0028> <0041> +<002a> <002c> <0047> +<002f> <0033> <004c> +<0035> <0038> <0052> +<003d> <003d> <005a> +<0044> <004c> <0061> +<004f> <005a> <006c> +<005c> <005c> <0079> +endbfrange +endcmap +CMapName currentdict /CMap defineresource pop + +endstream +endobj + +10 0 obj +<> +stream +}ϼ @ +endstream +endobj + +11 0 obj +<> +/Font <> +>> +>> +endobj + +12 0 obj +<> +stream +xWێ! }+f1R2H}6ЛTiUu_ 5E 9 +` iӗWWu+o?3]!16Gcpc^ccs~py=?<:f8N}s;(ώezK:Y_Y3,B':)+#"й c 2r6@l05E$,Cwh.zl' +5hj fUBbq&ٖy=K׹1h#DbK|DK?0 dI:zv;ڌ ղZ #HpYޅm2ZP|-X8 \XAI~鼌:Cwt}3/dy;-2/:JrPj[lYB}+۬Yt¢Y + Ųȇ yżQ9O.hx~^T~g-ߜ ѻY}&KٰwcJ  1~fMw!${A[Dr ]6vǔ61G/qk|c|= { ̛E1a3r)83 2Mm/2kZ&NC^f^ʥ]ZZs).N5qx9;C=gSjt;UfRUq`:죤l߱rp]d>m:YpdJԵJ +{ٴ95> +stream +x]XTW&n1XvɮI6lI6!ņ"һCw 3"U"Hˌ~ϑg9s{߹瞹y5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xcٱђs{f-*lhdվF^&&5!+ll2CJigbyDApIXed2yD}ll72*-R8-&6^Q) -XPG7瓜,f>VܖZ^[P\TRZV{rw[wO^(k}W]60xmph`hdpxC!! G$]64|Ém4 WMM#ȋ.6!.1>-!˝Q㛒VQY][-L(D',ͮjȩn,k.o)mV5׶vԵ]W{u}C#7fmg 3cp1f3kݦa(cK$P,"'E$A'"GtG!A( %  +3毨w p@$ :6&>6)>Å隐噘㕔㛜',N/ +(.+WK KkR겫º撆 ສN*讳, o#8bQp1.C\ldJ1^˯9>'.T,B164 +6$1șKL@YC ^OCơ(+ +89M\gpez$f$垡\V[ +왐$R`a&pe]:K/_~}:UA] ދzx42Pd(B I贺qqjʼn *@PҢ+׮;g` ưSE3EK !V5(wRl2׬{.BlB|R,m>qm~1c8Ŧַ=ļ1<2Uf. Sb՟wغA!E^}H -B!`^IC?QxQ/( ( + APmlj`zaZy}ySk{w?I|3>B/wy4P8?q53[ݡyD@"&\K{Wol;s- "j⒕/qi n )xrR5fgw3/>m~M5W^& }|BUPix3C „܄CvqiԱ 7Ky#Tqi'\Bn3f≲cCl=}TP3MFc:\aZm1iƙXbֻ +θr‚¥ɷ\,,N>E)Zޢ(tGnO*\/XMg*>]#-ln~$yZ 5HߩͧVk;ř5 侸GJ5Py;TNyD'dMSNܭOnV' 6E9p45&{{_UF]bށeyF۔8K]3 naIi8pZ\xiWmP;'W_ݚ˛!'8n|Y/K l Lʃ4i~yRj[M<=b6Dtx][T^GkZg@n{~hgb7Py/Fow sM8U֡~d6q9X_Uݹ**w͜, J/g-.ݚYUj'ov%cCE 4T`5fE#;ĉ`dX[ikNIc}'-;ccN588ح G7 rE[-[I1X<s6y۩ +n" Uan&\FC0:8()s_ F0O̗vo3|B䬒3y_S7ڎsEXO{.cNcNe.٭bc.06 PDw~IX6Sq|r}bn\&7ZG 1l;iQCz }ު]B +]RjC[wKZ=N-36c24X .liIش4ߖ57c:GM96}cL>5h L .zr%VE}rNdTo$#g @!PZA9K{?x!@rLmx\;T^ܣ^-|W C齓f㕘+xBKL}$^/^?U{3)yߝv+)"iM"O  H-0 C`n)Prg!A?6U$8΋;ͽAp7 h\bb!tŗ>MͣiGާ(l6h1G{iJiI( +:=ׁ"lanUw?di + ^,*se+/k +s1B7KmDH t5vF!]ck7 ve+8Kf1F9^-8~JV(Tc>#)H҄ qXPF\m> +< 4`eWZs C~ 3%A5*#]LOr1=Xq0Pq ŜJlɢ2A`  +C;`,ۧ8orj-{&]&)=W ?U>Sqd#∱A6 'e3 +Cb8?qv3 R7ƀ٠00W? bT0?a7P72vynW^׈.ZVxbIG,h[ڞDXCеnAHnZJ8#2OoU **l\^sIOoQO5ϧWv7FqxuHRJkܢ\Vŕ2^O7 읔뛔 ;AX%t 4>V:睔V1 xEaDAvkN M' .&M?0A/GJb-zF?2&k$H'o +":@ YD+^(zD"a^ +r9|,@, ;OUm؀l8`}p_I(1:p BЖumW{q. ϕ<Ѩ٧hlc 8/Pw:;<2cK8vS/Aq!Xpu/C2S"+n#"XG&k;FaJvE5 OU"e0\# +Bփ,$i)b&sl&T} Tb-:̧gt^'y L4DA|qA@bY$նx,$%JJ +"B/ۯMP闒]j6D@j̧{Au.Hx~ 6[q} 2SN@w嫽>e +IÄYPr>& (=="yhNT]p&Y.-MMT@`&y>IyJi[$&Tr/RllD/ޥ5M Y@ߏ7:·EQZi($ +kϥBe FމF|bo3@d8SS y1}J2}Z\#ɤvk5ITHZD N8=kf #S^L͆UoqdV6@A@ȉ0QF8yPcBFI殣S\@FspD` m4rSB|e\qk=#ATݡ*pF ,#gҞHwK_hG,4[=9ܒ iu/`01lh$To8i4}Y 7tõ򪛦 +Qe;iI흯᤯ dڽ7Y Ik2OStMM`ᶂH[ 3ie4ఠJi _~= qT ڰ$d¢66jPHV)׷zΣH'&&3SpvgROA6o +trnpF7Hȇc8 ]x0f[d1fቯ!de%3hA^:4iy[6/G_6+x'w_Hf1t,)@2S:U؀ !S.{1#KfN;>EAP[!11 #m҃=; ijtyGG!`Zb[US4u/vz!I4 OC || A*C!vdm/"Me&c-s LAo ]y H:6 e99Óh?; rx>22eHQ䛜k&U {N!F!|F :< .PvuU; tMubTnxy%!e ^;u[y +/H{cJF; +iXpwVU>ʭ>53l Mi#~VQ'kA0\ Pk8虿52ҢdV}0F@A}n;iǍ"ЍD7y|-R+0SbduI-9oXf16g +M,DWP?Od8:ژfJ +A<\΋6TNǓ)_:A35 ::hn_o슘ȂD DlPeIgǻ:&mJ:f41-+pمe~d/&^FS0u-Upz]E!^+?~6%<a]DFW8.૏-A&@ +.P4qhaC/g1&NyQ GLhb?L܎ ȅaC`P 7 |0H2a-*̥t3U3|m8rS@ZZNY_k'qD*2sA`!R^S@ AhP~s)5Y%@,y"Yy yT8kns mJHW g['zz#kd .:S1tvS vi b=UKr%G3wX@sS)" +ǐ1$_?w%'9nES&k O9c I"}x +TƸ @`ctyɓN\S[N!G$O^A:j&FylĜ=V8Mg4rr.a3.20p՚PnU'4'#μt@1>c=PL/!ƹZ/E$KE?]'Q5w>k?ՇݪV?[3ZmSWdIY$ZS׏1kǛfIH*[~YS+2ndy&#w%HGpջ'M!}{ޗވtF#w90;:m7, +4X'cRc vٻr& y#A̺PYʬC`6ISk2[gl౥;:B[Eo쑪ħ8OZˇJU'A(PfcC0GnBW!3[ CqWH0q*wRa,u1?˙̂2.88]H Řv\N45.3ܐ1#ѧӆfZ?ܲkVQ lÕ%q|C?[q"+A ,cG/EۓCwNRZ2f0K5^0;Yc6~0 bNgO>N4W0ulEul:-645J$378<<04<8Lv<>^'/JokWϥ+lD{:Y̏y$Pa !óJ0$ *%I%ՀbÚe+|ujBKgeT2's`]m,,H/Izu6ʹ7N)$+9hWbP?(mݭjc\qb#:CNU;˙n=vi|쥐[} #/HOΌUR9Tkүߦ Vn!y`<948 "pY}@~*.>x7jA ݿаFK(T5N!ςmI| l5r|5z.SOUP[]$.N63L(e~ Iبܲcm=vi899=~B$Ur '3[ = dx!l Ry|VQ'o yAeK[4^m2tX}x[ޢ'7+Sf(Wԡ /@ΫtOóZ-Eە\Q@㻋鲽wLv z>a]/Ao66~$q %UڢS\"/,?G\=Zۡ`)w_ޫnt$-kPJ]F6i'~a`1vr{)7Df%t c|t%'Jwx +}:4U§b *NM>)6ЙOmV8`ȼ#(>7_J~Awi HRbͱCAG{~]dܣ?T};;Y Gbm&Ւ= C#d;aʏ?B7 +,:g*4c%9PZCӽ_j4*'{PY+;o_s͊ &ۺK'ۡ"4:Eie9aF疕7=/q1WRm~ARmg)/Mat~Wo?$tRFQ]bBԈQE=% 6{F<"OVnS>VM +`@|IU3#Bh؏rLYU ,"iuEȂZr-YUdzQs(sxʸ-&o7Yψsept2֗|Ƀ{g}1Ӌ 5e9fp&%^oΣ[({E_K]be ռcN˻Gu +oi?58]l_WlEȉ'a#ш+J|( YY=5<#s +#6l'kege|l$Ja>.Axzw{X" '['GCXAblꠂgM"VVaJ^Q 7J|u &B]}`@{D,| tJ/hzAojD z8 1!.m?e._`xlzDΤ)Ao0p pS o5D#A/nE)sGמ^u8zP)wi~ +CG_!BZqK"sJ)$>g8#76Km s G+Yȉ jg ܤZ>}Mh([=A&lgK ͠+`*DV\y8k28)dYb}_qpsӚr 3#M/,㙔Dr_]L*cKxQ~m KD HυE,PAxYh!RrxBM0  +#19fb9AD{"ƒy52\T3omW}ޕݗU ~ nP[F +f`x8 $DR:HdnyxrFeR3 :p2\R`Pj",TqXB'!O6," Gy9ӠijզIHcAAǽr6s:y4Zy슃lJm-8s3 ks I|P$|H-uepk:[bǘ  + snǥ Id kA}M] +A +x)d&-9߉ /TW_ H6&<Fꃠ~|򺬪Қ2(;:5@Z^[36kZ˨"'y<<2aXl)5F! %d AiEg/t?tݳ_'ZD$Y\!a"O+khhXfDT$ /m`r6 ЅM0݂>i"Š>:jK%x֬նuGo ̓?,,,,Nq<8LZp7ӿ{֢euQEQ !=\Z]>YVqCy<s +ɥ+lu_\4EO02R`5!+4$Vj[6[o@goϮfAqi5MN(!' >n(k[t',D//%*DX#=(ȵV4OُP[i3:H:ewddktHXc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5XoW +endstream +endobj + +14 0 obj +<> +stream +x /k8$9Y +endstream +endobj + +xref +0 15 +0000000000 65535 f +0000000015 00000 n +0000000064 00000 n +0000000122 00000 n +0000000244 00000 n +0000000391 00000 n +0000018032 00000 n +0000018106 00000 n +0000018314 00000 n +0000050247 00000 n +0000050841 00000 n +0000050908 00000 n +0000051060 00000 n +0000052075 00000 n +0000064153 00000 n +trailer +< ] +>> +startxref +64438 +%%EOF diff --git a/apps/PdfService/PDF_To_Test/sample3.pdf b/apps/PdfService/PDF_To_Test/sample3.pdf new file mode 100644 index 0000000..fb7a70b --- /dev/null +++ b/apps/PdfService/PDF_To_Test/sample3.pdf @@ -0,0 +1,619 @@ +%PDF-1.3 +%쏢 +1 0 obj +<> +endobj + +2 0 obj +<> +endobj + +3 0 obj +<> +endobj + +4 0 obj +<> +endobj + +5 0 obj +<> +endobj + +6 0 obj +<> +endobj + +7 0 obj +<> +endobj + +8 0 obj +<> +stream +x |T?~ιeξf2I&IX (" +Ժ``DE[ZX7\Ё`+Z[.ZJ-sΝ;Lj{~sϽs,gA!dCCƢm;!A˖^v})$!5l5KWw$B}m|=0BQ!UZqKe^ ^y._o[}*_;l#{ cph/A@~4k>ڀD4RnC+@q0߃j#PÐ]p ʽW݊tTƣrt>/%oFy2w[w?G{_Bh|~# +W܋G{lP 9֠ 'q(IݗOp&]g WerڇGI\?|h7|{O;XCA4MA\f1j5™Ou?# P'ko"Bi+?'߅ KYr7m_O8ktBj!n #]}=»Fp߈evh$!Mcx- L&CSoKwcL|!^ n|?>_ǟdYIsO;_,n?͵~{.~J/zl/:ކC,`q<_;6?ğ7W$a'M5;Arp~Kq#&J ]ܟC= [m3AᘨI7HGC-0P { p A݅`|&>jf^;P~2$<$g,!d3INTy\[]]m/w)y/+$WׄDET\/#ΔfH3t[zSn9څBwz>H~E~-T o$R)\-#~sppuCQs~S݃aGsQx/ pP}|#?[ >2_< +MG/%-RYx2+$w ]P i+n;M [o< +֮X}eZ˖.8zA9n>qcnjP_7bxCRkU'*Xy,~v9 ]T&Ks!cd{O&9g(=N,% $M'kgbs!ʙ6s9kBMC&%b^(rQ/oI[yHʹN3Bn>giM+cgf5BvB>;3q3{bɽsǸtx/ӬBNI:iPrF<~ZDpgEZ(D 1`|~AU#]SgғʘRr:F/DvA8}lK8$&1@kȴi7SxHԖO>RW!ŧ]g=m <]㲋ӠY|!ݲ+Q(a>Ю]2B9icwJrZ6R*K1 +rswSlپĤŐA鎄Ɗ\ *4m&\*v.cu Gve <\^3ak6\h҅K\ڧethvkCPĪɐn̊)tթ%Բ[J %eCAR*bYEL{ +j5vg䢖vcM0 GP SQhzKf/MHUSYfweFDvEb? :RY'Y^'TMMW Es +jü~ +4l5yY +}G8 g]Sg]@ EY=^rڍ(?QP{\BCq|xӴ& q +6#ǝqgl0wTZ@ߠ>5P-4 +oޚjMZî]{]$o){Gny9rKpai +=}GF֖+CkJttoѮRnb/Uþa/\2j\_ROyd0j,'peCC) + +|eޘSzeh 5ѱ^_ݽڽպnc]%ґ52\6fLE[uoqQLҊ:3Ge`Q|o}X~qH7mӝĈqT؇Q % @61Ee騍kFlFݹ(Мo謷6Nh*QLTT'G6:ځda Sz~ .qܳmb8Dk6܍fxo$ΆѣF׋|i^3)|_m][$W ,UD 2 6eeR0{Ev*{ G{tI;uP|UrY%w': z8RgT_{ ?wK׼|r2-ӹ0RbZ] +@3b/Nb&8F;-@V3Ǐ}M@}FF1|B9".NO#Ϳya==*=p+`()"< L&xaaX*s)p [?9r=7 -b(/x?e\Et͉4|[Z`ð9 oy;;N2tPUEzK C薦oyyq٨ntbl y Nq +Vܫ+kwīk-+w[[bHC4O B*R HG:N-t<0f؈mYmO͌{Zl˝tOӮ&!:-εw!:H.dEf-hs)gR}d 8#ƂF`.;?~0AwU· Ef ĝ۠(4%q7^Vțܽuz͐70xvAw.N.~1 ú[bŬb-\Zw6o weYې(&`WV +m'c Ps{`p9U̍zhN5 U%sTWORMG>{0N/(^_HS6m}~Zm\> + i/{$( y" RʡG^Xt'v.ZND ֍ wDܕ-ZT~r#!Ik]d@xTr|&)L:fmu(?2L-Vٴ-lD2#j?C {-yӆ286$D{UDLz=T)5h`(ˢʑ[hSvu7='yGoߴw}tryOƅ#[>>Q%` M7ALJ\Pt*J75FOZ K̠BKhd-xPEfP}2}//C:1\}$}Or^*2Vxԯ׻<Uy2 Ǵ#U#{4P,O۠tOw W _JԀk1 P9uJ.J.J.&Hb4z}r@/3އǀp 5!s{x*SG}Dyd"{bH'Q#Aa'4ݡZpDjxҏxGEGSM5Ž> WI`$EdKO+oxןqk{ׯd'sWr6>}gy|s ٛ=y\}n%e;/xpX'wcP(hIr H˟4E +D4hn-E؊"$Yβ\SPME!Z" +z,=ժ-О^ф i"' I uUph:/q~0 ޚVC{AI7(SL_0JţӺH4Hf2D #k8^Cv{&zrǩNh2>6D[ca)pڛ0WWW#7j}#W1ʚ-ڀ!OڣFsFN6jmdڲ5|P*[m"^n5][4U__gRg|$w{NΉɖ[ȏK=xS>{ O^Exen.pk&u + {Zi5]zUݎЌ`I<*(5v5e]e[O!,V.Ucw{p.N۷gwP=A1aI \`\n`eaa" XsG"ri| @ Xdi2G7R*U=puIEpoڊBm{:"<3w#s*o)Z7oi7!G[89'WԳ}=u'y[>+8~it~#l~ON,Cg%܁hZǺTXzt%QA -kQAYZctY,3e( ]wbpblkNl%XZ,p-]!_U^yK~b M&1TŚ(XAm^1BbЮSU?U%S`c`dTCmnc1QK G5DqcZo/_B eTu2ue))L"sXOu,ZEo@ug[xƂbo$ ]o0a}l//r)ZO͟(SKxL9<]k-)ʒ΢8Nܜ  PuZG`[%tcb̊?tLSj7 yѨb4 +QT9u&PM50"Ilu[p3FQ/} +K/wݵg!=~;Zw#xqeZe%>69U\s/r ?}M"IhW%x BF }TABxV'@ P\ç<|}ȏD$wi`p~2dN! $i/zF|&qM" +1 WJ̃b|4kC} HԱGpZ( +Z#-rJ??~ܩ>^#7vfԝ[ +5GHhOZBvEK: KL>ziCK$n >m1ߋqZ׸ᐎHS"od  >ΦP_&ڭG;R\m`{o0:A0`Mͪf31wp/ \MM#/\'C{im,# $k@yꛛY6qs8%Ly+"¾ d޲;wπ̯z9K~#hI,Mb/ ])UonVj Tl`|Z~C'hܮ55(R*FHⵁkZ%5j`UT.D2(ӒDeKqNՀ-UI-B)nefK 2~˓R,G)c"B aQ9ø$DDa"ԸbGg̨9?oFd8zG;m$ZradLN//Iv2sڥnΟm}qsN%';M¾K.ze;GpӦ\^VIrkh{i* TkYO"`ӑ`uizbN_:NtKf __GGZ活ʜee`qsp$V~\.,u~m1[yP!vLؠFvG5.mFq.J F[/4Od q.9hLրЖ@c'k&8E{^N+k04> Ug9_&:/%'^{ԗb=~ 7?×#]Kip9뼰1);RP1 */3j5B0M1*?[B%T!TI1|5Q\XEYyPp}q& Gا8(E{"F @ƿ}~! cUB'R5HCnkϿ÷vƻ1iV=Ka켋sG==n>{ ?ơ3U+ +QY$[TEDyc9ܹ1%%6RVflմq,`L;~[HFAf%٬俅ZfuzSqSnm5?ӷӺƆ`uS. Vͱ}6qmm5#=cP{XMSqdgз)R׽UI'%"ٍ]\e% +E @/--Ƣ?jQцqrWHzeQJYQV3(,t|8vWY]fUvYT˒1+EPUC.ӌ̉BM*SAuq㮑F@'p$ F8QKUdyRⓉ^G>;=GBUGTv6Q[<*9 LAMEC?x{teetVal=D۹=N6^*damxNpO71'|ݗz;10$֬݋/[xmϲ_9m-7>|(u <}<ٴtsQUy]!@**`dv1Ii3ƀ*3Xd]o/3032:։jjj5Vgr @ W |(8:?-tuN@C6ԫ1SSSU*CmY L Oڴ#l;HNx\%?+qR/Yo +T|_6pB=ڟ裑2X(45?` )Nl4Mxj60{j6|:@ߏi3cXU{,B4ٰ 6J)42KЖ:-XtVu<$E> }"m(Wx6ɮ* %6zgܱ&B4["AS0g}a$;a[c~rS8@ZC~ܩǟxž bK@rsȓ$RDUj]__mߠ*F}}:M4,r"mqOJ8 "HY嘅ӘY)*(Iݠt> LjBL#vi6 +"i[Kk7Xm*%s`4^)@LiԐB1jeOLh:d[AA:! g3(Trx4CN(~CFsn9al o!1f587; +=Yx}Hm=^7BjaRmMGЄv ^:s.k2qkZGq0p;ÕH s-Z}|u93~ȝ:9훑PDxt\9 aRl4wT0uoNYsem K jH&6$Č]Q(XP4SMeb*3vuک +\ژiKP̗mN}k-I51~tgE7Y,?H!F#S +8GNOn*<{r3ɺF  Yg45aP7=> dI; HH'#,Z2p͍ 1tzi+(Mhjȁ=oU+:RB-|@!E`HjY-rW|UH12"W6|b\4A SiUjH023DE$-F&Sj$\u(GCbbդyܪU +}}gIZZƕks]mzʛѷ8x7eh< +'Cd N"Tru#h @>maCUJ Ů)!:8h6cƓ.pzhU]Wx,%r*+ Mᡡ4|h( 31<x3q/Φј}\`NhQ ε 680DU6hK\CռNa"\[CĭрPG8颖&e!85EpD!v +^g]tʙџI㴦@ȩ9E{hX㴌&=8}CBU}Q}|jB'Ze5D3yrHߣ/?={qU3/Yݯ? ۟>8yo~rqYk'NZ/L~t?[|/o~N_9hܮ<Ϩ?}t3A WъJkTWH ldmwʲGaRKwb 蟦Ur俲ZhB9;ʻ/ u@Ӄ47O"GXq _ Gh_q\Xзo?WZwL{!uH"N:Ry(LO@xNb=IbyPA+AL̇c>[qknY) S{*(E=T2^I֞f$p)u23R.PW6DTUwce]'~pq7;ۯkԎwsqO|q٬wd+l2:`a5R <#,h Rr$l=-GZV", ,f+ÕVo +%2K^AM0j=l{Y_Lc`4RjZv|mv@;1mFxʤ0׆5`/ZbeC`G}Sl["%Df$gȸS,1i5. .0!8c څ dcھ tй0 BBAa fftXmX`{ 9܀9NzbܷL!g<˪-,tDk71zaHfN׷Ԡƕ 4QFS\gZV>>qhK` 4hTavwX[BB4#AX7 +?3J(E9^()?6phoo[@k.'ݧye[ 00FAހ 4-urjGpz ir+81Ia@.Ӊ2LO##^|yȄCP?p%?.z VБ: t(ol049plI9CU6w;K¥TJ& n--dP1TӺ,&+FhP)+nSV.عqӑ?+Cc7&PΔCmL=L0]1`#^{ C1ÍnsYdF"m`gHGs>!ۀxT{U,~Fe&UCi"@ Rm옄2!0 zΒZ>Ĉ ~:<>›LN6^<|kS Б39 */3K +D88z_ʊy0Dǻ ٩d'yVsXޖ/˞6A}S$m†8>=~l\ `/{"OC%(DΦht iLQ=hhGS``aQSE .V{I0mS$iYiS! Һj1͚Nb±+MWpXA$}XpH`n/ 3Ω/g/4^MaX*%%@5͹AM,ec]xoGƵ%N4ܥRA8ͱl6?sNs/8>cYȇ{ȥܴunϟ jRijMĞ%vTZ||SdVv uF50N"cSs20m +/+J,0HW+y0KxeitC<"7MK$U&*1]K #i\YjȎ DA`zL;FGa6M;d5N69Y:(ٍec%l"ވq +W +6 +H)HaF8UV+ãFSKqo r9~ŇNmY|ei|? B ++A=4F+-ҊT 4]&|>)4> kK2ݒjFBЛek,*PQk-Rk1(-/GDR.6DXya-u&0Yhg= +l8b道tq.3J l=b,4>/2U3X0B=K4^ Qjc4\QG*mfSZؚ֪,&8}G6TOIXa&(ى9Y2qMxמ3r;p7\S \ma/D|~ݥ,q湓Per3:OM/҈pábdÒ!k +ͳՔƴ55ք N#s~" cp1U✜il%e#-7ܴ}gmcm|[V܉o9˰,&7>Hx媟)'oC%nUz>QFzFF. sYّedĶ9P[yw#TTiԇƒT2I@iїNv{9j8)Uɉ*AW@eqvmbTt @UǿdGaĆ3lwv:WtQr2 Sdhd'vNk,o +\\ZZ-JSc+(kyQ:"/%rtLa EMfɌ3)82mQ{fEhdu˦ ? t|_xGA ŎDJUrH\jdTŃ7.]c̒C7oܾ?W=YЦo}s]3W;NzNi񑙮YKC #WW{OCgh86[ b|8HhyʪYS94cu[iLR[|UUnXUCr\oĻ[|E}pz¦liRJWnbLS-tp"LP0at( TLrҀN̴p\eDa4yN!:A :@p9CxS ɚ|LmY_(8sG6gKRE|ܗb;>E!31-{ +`hxP?{OXȏ/2ǣyl ?ԟ>H d{I9){'6kO;͟l0VWGA#4Hyfi +AT b1 + +JhH!RUa0XsfWl%I0z4|Cqt+ +ۜV'g@ї˘kӜ1Mej +#S85q + dMxR|n =g'*6G)__gN0EE.oݡ:o~xLݬGplX0׏o:EW@gfrNu~jX;VyS'yD[Yl I4<窓=-R\=kR}f7:DUfN|N%Ң!Cީ4Ej'z{ɎA,#3;14!D"eREDS|zo_,Fb-U٢TO~~";i!?B3-DWcZ梫ߜI(̓%uLWr!-,/0E/w4;g88Bl-i&G058UNO#KGaQbsxQ #@H}B,yq +.z݃vM4At83U{򏴦_Tyno U?wpKmmUuގ޽MuZ<"kܵפt:{N&a(@$eQ6ADmqQQA@oučWf]G>F1{4 |? }ֽUԩS[];_Y,'R>+^5wyѾ3xWʎUgdpI!I&pmbbWOKB 2bq% ;W6s 8^}\FB ?U#d߷%|0,/ + C6lF *6Y(~RłYC,CH3Ks`H_I9.3QǾHzQš\ea +<,X(Nս9R؜*x7 ז|c€`==|˵.UݖK捻m=ۦɏ,j״= 1wCvO1,2`0pk nvo=8vGm VUvۡ 9#pk n5nP*+.]ye=^V"]U(H]Q[]~UߥTeRTմ3ȓ8T7gAjwKeNLf3VyWqm[- k$|XjŖ-[/zHZr4b򒣹%>t HxcxR&SK-)%/[3xWXbWt#Qzy>9_ l]g\-p/.̼LJwZDml|e6ˍ!OF@B:5C P|qe`7GAa״ +)$ᰶ(9[cW,o/(#PS6I)Vز) TRmJ ț q~ Y L%lT›iC,e ZU,+S俨bኩS;'MbYm<<*M)TlLKG0?/H&9G +RWH^ISu~:#¼E;ArFgipmh̙_1/gWO3SЁQ#.T+AhǞ/@iI=ԬN PYqʭ*{٭F[EcO̕r-,y,>XLtG{џ04x8yQ,@_%&##dJf=(&;O1Rj 5,=wrRH ĉ%a?6 V{ɇWMg`ݥoxbqӦ9گo?VcգGn9}P7~v\3}\\7k{ +5_7u'L]>H #SkgΣV4eSI;,0f9l:lƲX &,ۀuha{T=œ-ә=52OuUQ~_O׾tڶnO_޴n㥗<>Gv#kڗSgxW +5ˈI|&62MRW=UV+t9])iW +)N#]ew:%gA4MJ XǷGp]N:i17;M3Ope9zb>x/d8o5+f%I٘7?OMw2a6|Kc^Ts{z"RvQV,-o^%&c2_Y;YQ3+weZYbZs=|vƬVr<܁{ʥrNSn-/\yەZ_-ҭ]UruUs\ӓEiEՀ^CvlLF-DG/Z2Bu5MbXW!I<.)5oyxV2􌊯/c/Mg_ +FEb][ax*+=)P ( 4DsUȑ[jax9RY˭W9<3RhyŒ%K(AvnjGdNI<%%y=deg /c tҷJKJ{Y 7n}c\~ׄk~=%msp2熝y";YfWd+":?3楹 q곞*2˵(CPX,BN[;܎vɄ%z|W,$o[R(wU_@R17o^p8Ow,r4;tGccCGXg;eŪ&Rc9T~<V6ҭ9sR$ +9]p;y1wց>}&I Q+Zs͗qR.wuJk Pa.6Tg>=ng*Y:kNVpNN:33<-lSEΈ2B$5/!LZloH"72]RƘlkM Ek[lגY;*lC+[qԵǵߥlW)+;䔰5ĴkLV'C5sQT"J!/2f9't*N`W 5/ڒjNU+~w@ȋ)^9o@Up[*f?mqVZp_r[8;p{@ DͯZfTmG;6W[_n^)kc"E}UJs\YAM%U<ΠҔ#יK-bG"/s rNUF1:ϩ}g9f:^_X|NN?*ʨ,4W L9otR>!=)?Y};RLi+#y_nn1caJ;է)t8T6]:[X +COH4 +3ݍ7 +YaVLʊCA/T?'R^trAԵj@l/5b:`i#\JIIu| +3y%HA xSSD,ڂ>>:OD]kl@Z.Ly4]L+~O<+N;<[ *84uj&Bpj7[R1 ~tGc%2!!0%/1܏g E3:;=$mB]KNc&GԼ!>FkV z=8tL>bVwTwQ\oo d]L7Pqg{CZ!*R];V<~lؾ V<;k+Gϑ-$'j|{"vT`Lo<~|rvV6G{VEu1eUVdFv0= q˕| 5, 6XJ'eu)RO4J`YڨpC!!}NpNڜ+KS\2}Ý[Z~OCߥ4OnS|Y0 d|>-zIV(-8){!ǝ=:?rre\9w\% m'(X;֫bS|Mk%$Woɉ^f"lxACn3dLLk{{Os.j}7^ג7`3>&!d|u@w Mk1Й #,>E:枟ݢ4d+ #, u=h} RіÊz]]߷eE9|yjY},RyޑoiAT O Ι$[Qi9}7ꇍm9^I1} 6p|N_`nhLMȣ˴z,-)zQL}.F"$C`Pd[ag؏x"~M4ZцVjlaתѓ@ZcoJ4zZq} #p7^帍:»9X[W]Hcq@k+BzX렴/p֢e^_ +w6n@4 Ch%,W~;!VǺD _@cPWBޒ4 )}tߠ$>&r8EIc MF Qɸv18LWt^Lׁj%xgfD9qz&D49?H˜]o ;$YqnCUt΃ gpe<' Ё<'1 2MHW +a^A"ogwxXԧftӟy30"/gsby<h{4 x˦gn+1X!ӴygS.5Q&hDU +-^_jS,z ϜFirZ;z! -tsA]$+v=7f9Mu߬9>0I%h?5Ʊ)=$ :heYEMH(dS֝YeݙWG@|/H!z98˥ƛ=>w=ƀ<b-]>u;!w}<>͖Gi7* Ӓpp'[88QomR3v0ңOd_'%?G]O=[ɦ8ݿ +[vvqY~D@Y}Zy(nuHUg +E@K}hz"d 3O|QfBJ`06 1$/q:N}HOHE3Av`{< >gW8my1P˶/w¦NGY>4bOgې#ce~,.;n[ZˆmlJI~aH#ݸjj՜c1Wzjq]Ι4yoZ?NHk1m@9ꍀUyBOu>smPi p#D9.43-moډ1 +m2I_wNUts)Fѧ@zemҼ ,\E3='ZnC ӎ;(u}Ecp3 =L:dЦLfsNO1:iߠ>.^•Ikxzjm}/rOTb()n}1(,{@fJ$5),A`(havA?M +6djI/Yc'v(h~#M@NjtL->Z*Aݜ +`La5Ō@#9V*Pᓬ{qݸg8<v>L3[͇&8$ZknZڜ@| ΨgzcAGOp K?.;p$y^bx—2 ci@+?VΓL8^5!ʀIAAu 2o,b0vh <[^kMy~|~aBYOit`{h+ټVI~%+9nؔa7Αi^cU>Y&9JrvLcGv%\kle ]nٝu>c96֢?-kƣڕ kA ^:H]^OO%c|1IqKf=bퟚeOKcb|=N1Ru <ߤKøPC57[e8Ʉkx] p=>,e¾4r]?&։"# +m,b<7eo=͑opgAR-O~@|@QT^Cn5x{+̈́N<3i[LC<#%nu\_vw+p|q͎㸆Fge)h%asN4臺~?-e< n9y]=OnQB'im!az@2}ĕKX%ki۾m)D߰NXK/aEgf[zFYgcATsj8I9jGi&@6mLyM G"/y[mK W` O+yhmƉjTnh- Is.'/<N}m]1T2 a5bAO"&v|ȯ|Vaӿ|A6՘yGkmR%Sȶ5G[[o"nKXֲL}8 f&U#h i,vFP-RC.xUȤTSf)mgyהWyJ)M$86_\ ŘfOSN +YvH~s6`N/Y$MOZl9:5w$MɯPw^wk?Q:HoE=̹})y\9\޴@4wOi@Ɖ&㐕OdOo챜= >L)CkDB1XC*=.2" ey ;ϴSqCy@s{(<4lg;ec=k[y\_kQ\:M&1ѨS )5KE")p,pZy }aBn +c%"|$?;ZIJe.[WF˵S;W"8q|9ߢ mpY&FU{"{輻8P\'.,P~qyd<2d|"J-"oHGYGYp34vq5Q7.][9]"qAaęA"m~fĽs ,}"GW}0Fؼ&oW<\w{a=jjYw9z[ͼy>{:GAgƬHkGa-8I6ʢ-j_(Q-tXwy +;8ut4Zj76SCu>x1i ` 6=Nx(/ +{XA5KIn2 +[VpPi}޶~cĽGwZ舧txR^xƥlо4߃/ĵ:w̢g } = M[+GEw-j.O+B~ +tp>REvu n  WFt;K5USa|i4uӻ^_g{ՠ, ?Ex +2gh{hs/]/ǤtDΎ=tg$Ƕ$<6QAvk +xKg<~y;$ȞexNG>:JujƔR~63ƒ$yl] =MS@c^v>&F7!cۺmA6hgwvB6? +QdcM?Z)_%7?^2:Tf8sxA PH{y9d=6G#uThGC̱q;3i8y\5 r+w8`Ys翥MًBtBp.d"/4)Κ؎ c&ΥvXq\c Arl#-/{_I`aLӦ>:#϶^nqezl5wy2DH Wjo[:'-h:x9}D Nueko}' 2Zs 萿eȲanq➇:3#s: ӗ:-SBh: +,UeYsX3㰺 v0#3>v,|w&;ZGiҿϜQ~gRt(}D}b}&]c>D D?Yt絟|@u.b-&+ !'RwAyކb:-Qw5Qf=H w;#oeh +Q -EY=x D'R轛tLȁHoЛ&NAak஝H4u%Dg _1i^DS H4 w.Jt&zك.ہ`-r]|,F/Bts54kh6;=N_|ESr7G#aJ 0@4tC;JL|w=c-Ν_%ƩzVIohh=kLZäf]J/FWG>IQҩ +)֢;$EV$Ic"mN T sˆ )"]ڼ"ݚZ=l7oWtj`' C@|T TӀN!_ew5 /z>ޑAy焣rD-GF}wpT jR@CR7/s9GъȚa䷩ӁE>Q3p'heQy7:z1`lF26D7W(%{A__5%A_-9?BSj^+5ϒHCs +9WjΗcR(f)w`,Sj-5?#57I%Rs\$5Grͧd øс2'wCvwL؉߷Cb-0#g3-h-6=U-Dy7jx>TTЋ`~i.t.@>V4:@iō"cJ+cU~ +-WG)wJ|il/pg`S)o`-i;6-\|dXt/_"U2]KNFSKR'MZv͠-'n㧴h5RK&ִ\Qa21ɛ$+K4qve9-S'?GXv[Ӳe54PfnVtevrմ0ysjZ0kgBqsҷIŤasPgr2nT/QT/D/(7o+W\.*].O8ަᵛD(58M8X 7ngw Qrs%?WD)WDɕE(VQn))RG\3N~;N~ĩj** 3*>p,`z-^|^4iF_(%ϛqsg4ΪmQX4M8|MY/n&'4hVNP/*xxpksv@uy< -š/4a| M/"g]ʼvpғ%?5TK(sZ.px6%vnmb u-Lp t:R ;eD TxDa.Ģr+hobbjjPZ&ʐ]LŊ`T!5ϰ]QAm,rYeآ杸.VENJh<,UT0ν@O= +JK"< rxܵ^P6 +endstream +endobj + +9 0 obj +<> +stream +begincmap +/CIDSystemInfo +<< /Registry (Adobe) + /Ordering (UCS) + /Supplement 0 +>> def +/CMapName /Adobe-Identity-UCS def +/CMapType 2 def +1 begincodespacerange +<0003> <005c> +endcodespacerange +10 beginbfrange +<0003> <0003> <0020> +<0009> <0009> <0026> +<000b> <000c> <0028> +<000f> <001d> <002c> +<0021> <0021> <003e> +<0024> <0033> <0041> +<0035> <003d> <0052> +<0044> <004c> <0061> +<004f> <005a> <006c> +<005c> <005c> <0079> +endbfrange +endcmap +CMapName currentdict /CMap defineresource pop + +endstream +endobj + +10 0 obj +<> +stream +@ +endstream +endobj + +11 0 obj +<> +/Font <> +>> +>> +endobj + +12 0 obj +<> +stream +x]&} +_ (Rw϶hI6RU}E`SUkձ?O]*?J:#߿-ҋܦ6ƦO~?octkX?.JubcO!]BmBk`WF{ߛ ^-^FU֑54hl2f4\ {|5 +ٰ{cܓX!ٍ!!PkD~E2aBv_%Zdu2s sV· Pȹ2y-(`;*/}L `?,xt r"cVgzsy(mu`}U[k5a`5gyL aE7Gnヱky !͝%qKIm.txNiukrVSpl{v#Czd3 +/x|44!Iukg )*I$Z[]qNʠV`%a^Y[uH&\SWF}r_n>HkŐ^Pw-KkcX%Asq}mJe|iԇtdW-J:;˗%S%_yyMB~+:VW +&i׫LbTRs|L\S[wR +5RVbnXaHqn蒚,ЊX( 7؈0ar{3#vIC9λ0s<)RoǙ>*#kK_ǚVlHFf,jΊV,55Or*/rZi}RiB ]:ù'cn>Ѧ $joR>o(5 +"i_qc`/>`=MH5<( սr{gCpgM٭ #&⁹T3q듍%3W\ͥqs9*=YɭPn߻4 Û"c6> tU%^lgi]ܘ.JwzIXBÉ:u5"dOh]e7DshqEHRBoœz<]t)gڬvDڹ&֜GǽA̛uuNR޷~gon!RL c94@-O}i!Ph_b;[fNZ;G"D+!/h7~$~aMIc}ۄ? <䇗F~?}v((Y2Z޲FާwXdcl!!_Gl02dUCRv'#RzW +)WH:"WOy ? |Wi1-'h-b +endstream +endobj + +13 0 obj +<> +stream +x]XTW&n1XvɮI6lI6!ņ"һCw 3"U"Hˌ~ϑg9s{߹瞹y5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xcٱђs{f-*lhdվF^&&5!+ll2CJigbyDApIXed2yD}ll72*-R8-&6^Q) -XPG7瓜,f>VܖZ^[P\TRZV{rw[wO^(k}W]60xmph`hdpxC!! G$]64|Ém4 WMM#ȋ.6!.1>-!˝Q㛒VQY][-L(D',ͮjȩn,k.o)mV5׶vԵ]W{u}C#7fmg 3cp1f3kݦa(cK$P,"'E$A'"GtG!A( %  +3毨w p@$ :6&>6)>Å隐噘㕔㛜',N/ +(.+WK KkR겫º撆 ສN*讳, o#8bQp1.C\ldJ1^˯9>'.T,B164 +6$1șKL@YC ^OCơ(+ +89M\gpez$f$垡\V[ +왐$R`a&pe]:K/_~}:UA] ދzx42Pd(B I贺qqjʼn *@PҢ+׮;g` ưSE3EK !V5(wRl2׬{.BlB|R,m>qm~1c8Ŧַ=ļ1<2Uf. Sb՟wغA!E^}H -B!`^IC?QxQ/( ( + APmlj`zaZy}ySk{w?I|3>B/wy4P8?q53[ݡyD@"&\K{Wol;s- "j⒕/qi n )xrR5fgw3/>m~M5W^& }|BUPix3C „܄CvqiԱ 7Ky#Tqi'\Bn3f≲cCl=}TP3MFc:\aZm1iƙXbֻ +θr‚¥ɷ\,,N>E)Zޢ(tGnO*\/XMg*>]#-ln~$yZ 5HߩͧVk;ř5 侸GJ5Py;TNyD'dMSNܭOnV' 6E9p45&{{_UF]bށeyF۔8K]3 naIi8pZ\xiWmP;'W_ݚ˛!'8n|Y/K l Lʃ4i~yRj[M<=b6Dtx][T^GkZg@n{~hgb7Py/Fow sM8U֡~d6q9X_Uݹ**w͜, J/g-.ݚYUj'ov%cCE 4T`5fE#;ĉ`dX[ikNIc}'-;ccN588ح G7 rE[-[I1X<s6y۩ +n" Uan&\FC0:8()s_ F0O̗vo3|B䬒3y_S7ڎsEXO{.cNcNe.٭bc.06 PDw~IX6Sq|r}bn\&7ZG 1l;iQCz }ު]B +]RjC[wKZ=N-36c24X .liIش4ߖ57c:GM96}cL>5h L .zr%VE}rNdTo$#g @!PZA9K{?x!@rLmx\;T^ܣ^-|W C齓f㕘+xBKL}$^/^?U{3)yߝv+)"iM"O  H-0 C`n)Prg!A?6U$8΋;ͽAp7 h\bb!tŗ>MͣiGާ(l6h1G{iJiI( +:=ׁ"lanUw?di + ^,*se+/k +s1B7KmDH t5vF!]ck7 ve+8Kf1F9^-8~JV(Tc>#)H҄ qXPF\m> +< 4`eWZs C~ 3%A5*#]LOr1=Xq0Pq ŜJlɢ2A`  +C;`,ۧ8orj-{&]&)=W ?U>Sqd#∱A6 'e3 +Cb8?qv3 R7ƀ٠00W? bT0?a7P72vynW^׈.ZVxbIG,h[ڞDXCеnAHnZJ8#2OoU **l\^sIOoQO5ϧWv7FqxuHRJkܢ\Vŕ2^O7 읔뛔 ;AX%t 4>V:睔V1 xEaDAvkN M' .&M?0A/GJb-zF?2&k$H'o +":@ YD+^(zD"a^ +r9|,@, ;OUm؀l8`}p_I(1:p BЖumW{q. ϕ<Ѩ٧hlc 8/Pw:;<2cK8vS/Aq!Xpu/C2S"+n#"XG&k;FaJvE5 OU"e0\# +Bփ,$i)b&sl&T} Tb-:̧gt^'y L4DA|qA@bY$նx,$%JJ +"B/ۯMP闒]j6D@j̧{Au.Hx~ 6[q} 2SN@w嫽>e +IÄYPr>& (=="yhNT]p&Y.-MMT@`&y>IyJi[$&Tr/RllD/ޥ5M Y@ߏ7:·EQZi($ +kϥBe FމF|bo3@d8SS y1}J2}Z\#ɤvk5ITHZD N8=kf #S^L͆UoqdV6@A@ȉ0QF8yPcBFI殣S\@FspD` m4rSB|e\qk=#ATݡ*pF ,#gҞHwK_hG,4[=9ܒ iu/`01lh$To8i4}Y 7tõ򪛦 +Qe;iI흯᤯ dڽ7Y Ik2OStMM`ᶂH[ 3ie4ఠJi _~= qT ڰ$d¢66jPHV)׷zΣH'&&3SpvgROA6o +trnpF7Hȇc8 ]x0f[d1fቯ!de%3hA^:4iy[6/G_6+x'w_Hf1t,)@2S:U؀ !S.{1#KfN;>EAP[!11 #m҃=; ijtyGG!`Zb[US4u/vz!I4 OC || A*C!vdm/"Me&c-s LAo ]y H:6 e99Óh?; rx>22eHQ䛜k&U {N!F!|F :< .PvuU; tMubTnxy%!e ^;u[y +/H{cJF; +iXpwVU>ʭ>53l Mi#~VQ'kA0\ Pk8虿52ҢdV}0F@A}n;iǍ"ЍD7y|-R+0SbduI-9oXf16g +M,DWP?Od8:ژfJ +A<\΋6TNǓ)_:A35 ::hn_o슘ȂD DlPeIgǻ:&mJ:f41-+pمe~d/&^FS0u-Upz]E!^+?~6%<a]DFW8.૏-A&@ +.P4qhaC/g1&NyQ GLhb?L܎ ȅaC`P 7 |0H2a-*̥t3U3|m8rS@ZZNY_k'qD*2sA`!R^S@ AhP~s)5Y%@,y"Yy yT8kns mJHW g['zz#kd .:S1tvS vi b=UKr%G3wX@sS)" +ǐ1$_?w%'9nES&k O9c I"}x +TƸ @`ctyɓN\S[N!G$O^A:j&FylĜ=V8Mg4rr.a3.20p՚PnU'4'#μt@1>c=PL/!ƹZ/E$KE?]'Q5w>k?ՇݪV?[3ZmSWdIY$ZS׏1kǛfIH*[~YS+2ndy&#w%HGpջ'M!}{ޗވtF#w90;:m7, +4X'cRc vٻr& y#A̺PYʬC`6ISk2[gl౥;:B[Eo쑪ħ8OZˇJU'A(PfcC0GnBW!3[ CqWH0q*wRa,u1?˙̂2.88]H Řv\N45.3ܐ1#ѧӆfZ?ܲkVQ lÕ%q|C?[q"+A ,cG/EۓCwNRZ2f0K5^0;Yc6~0 bNgO>N4W0ulEul:-645J$378<<04<8Lv<>^'/JokWϥ+lD{:Y̏y$Pa !óJ0$ *%I%ՀbÚe+|ujBKgeT2's`]m,,H/Izu6ʹ7N)$+9hWbP?(mݭjc\qb#:CNU;˙n=vi|쥐[} #/HOΌUR9Tkүߦ Vn!y`<948 "pY}@~*.>x7jA ݿаFK(T5N!ςmI| l5r|5z.SOUP[]$.N63L(e~ Iبܲcm=vi899=~B$Ur '3[ = dx!l Ry|VQ'o yAeK[4^m2tX}x[ޢ'7+Sf(Wԡ /@ΫtOóZ-Eە\Q@㻋鲽wLv z>a]/Ao66~$q %UڢS\"/,?G\=Zۡ`)w_ޫnt$-kPJ]F6i'~a`1vr{)7Df%t c|t%'Jwx +}:4U§b *NM>)6ЙOmV8`ȼ#(>7_J~Awi HRbͱCAG{~]dܣ?T};;Y Gbm&Ւ= C#d;aʏ?B7 +,:g*4c%9PZCӽ_j4*'{PY+;o_s͊ &ۺK'ۡ"4:Eie9aF疕7=/q1WRm~ARmg)/Mat~Wo?$tRFQ]bBԈQE=% 6{F<"OVnS>VM +`@|IU3#Bh؏rLYU ,"iuEȂZr-YUdzQs(sxʸ-&o7Yψsept2֗|Ƀ{g}1Ӌ 5e9fp&%^oΣ[({E_K]be ռcN˻Gu +oi?58]l_WlEȉ'a#ш+J|( YY=5<#s +#6l'kege|l$Ja>.Axzw{X" '['GCXAblꠂgM"VVaJ^Q 7J|u &B]}`@{D,| tJ/hzAojD z8 1!.m?e._`xlzDΤ)Ao0p pS o5D#A/nE)sGמ^u8zP)wi~ +CG_!BZqK"sJ)$>g8#76Km s G+Yȉ jg ܤZ>}Mh([=A&lgK ͠+`*DV\y8k28)dYb}_qpsӚr 3#M/,㙔Dr_]L*cKxQ~m KD HυE,PAxYh!RrxBM0  +#19fb9AD{"ƒy52\T3omW}ޕݗU ~ nP[F +f`x8 $DR:HdnyxrFeR3 :p2\R`Pj",TqXB'!O6," Gy9ӠijզIHcAAǽr6s:y4Zy슃lJm-8s3 ks I|P$|H-uepk:[bǘ  + snǥ Id kA}M] +A +x)d&-9߉ /TW_ H6&<Fꃠ~|򺬪Қ2(;:5@Z^[36kZ˨"'y<<2aXl)5F! %d AiEg/t?tݳ_'ZD$Y\!a"O+khhXfDT$ /m`r6 ЅM0݂>i"Š>:jK%x֬նuGo ̓?,,,,Nq<8LZp7ӿ{֢euQEQ !=\Z]>YVqCy<s +ɥ+lu_\4EO02R`5!+4$Vj[6[o@goϮfAqi5MN(!' >n(k[t',D//%*DX#=(ȵV4OُP[i3:H:ewddktHXc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5XoW +endstream +endobj + +14 0 obj +<> +stream +x /k8$9Y +endstream +endobj + +xref +0 15 +0000000000 65535 f +0000000015 00000 n +0000000064 00000 n +0000000122 00000 n +0000000266 00000 n +0000000413 00000 n +0000018054 00000 n +0000018128 00000 n +0000018336 00000 n +0000053434 00000 n +0000053965 00000 n +0000054032 00000 n +0000054184 00000 n +0000056014 00000 n +0000068092 00000 n +trailer +< <5646AC7C14E63D400CD5E21609B4C86F>] +>> +startxref +68377 +%%EOF diff --git a/apps/PdfService/PDF_To_Test/sample4.pdf b/apps/PdfService/PDF_To_Test/sample4.pdf new file mode 100644 index 0000000..1732f21 --- /dev/null +++ b/apps/PdfService/PDF_To_Test/sample4.pdf @@ -0,0 +1,617 @@ +%PDF-1.3 +%쏢 +1 0 obj +<> +endobj + +2 0 obj +<> +endobj + +3 0 obj +<> +endobj + +4 0 obj +<> +endobj + +5 0 obj +<> +endobj + +6 0 obj +<> +endobj + +7 0 obj +<> +endobj + +8 0 obj +<> +stream +x ?^U}N3=3;{ù aaEF9T5.+F4QA#^D$b?U==;gv>g0BȁW]҇߃/[j饣 ҕ,q!nݿlE= B_ ׌X |8qKyn sW^pc}0.]pLZxcۏ~?AH"AaEQF!(.|Ww~=KVz^DQ% +^ף HDs!v4]hz 1t^nD{P򟢛m[pmHGh,.GwWyC4.Cp{%='Гh7|RQ-B{уC|c2)Gh z84 +JD߅2h +:4}18l䊡 ZB{p|.I +SQq5Ao7)zk(I>]x?Yk8s9zSrAjS66ahicOr#|o^'ANimB<Oͤ?<­A2M|E%IRYCK~@&&*47kZˡTȡ}0P >@܋-AE|6>jf>^W㫡&o'YA-eIy0N!{YLVE!8S9prn1ww w~Ž;ɝoWr|Ja𑨈ntivJom_h*:n}akk|B܀Hp8Sq(9IpSd< -'ì>95@}n;_-jF򅨡xqC4zKc菼y()Ђ'j|A& 7@.Ƶ+.82P4+ @ǀ7"~)ףOSF.;w!? o׀+1'Э8=$~AEWC>^"?Džxp h=Z_Z⥈ͨ? zO&*@r`,7RBs@B<@NK/)k%&h uDsOKe{ A3uh|&C A%}}j +ghjo$bt:o9<;~TJ'r}?D3O˱WihzR) mſ-&3Wps@=`Bm] v~5 / x>7[o7/튵kVKWX~ɲK_iyiSǚMg8ftèj 2xj*SDy,C ST!KsR,_wHXPЖM@ľy6-7 9|-i49hD&&كSnhU$Ze$`ՇC.h=? |G.l8.nGtk339L}xy[ +܅?NX6:Ӌg&ϘےVɳYGw\ %D9v@9hY +DEݒ d)811k}ڶ*xQw8z/+3;:xL>:8(0(ɳvt(}ԬN*hvK21.gV_w~(kfMq4J*-Э4p"ĎS #ձL^X5Nw~MPWASLGǢmǘm#њnMe/N.F#-9mP-7f⍳6'8e;d\9*\B&K%4&҃=@1Tv"&B,nXlaXij ʅݼuƴs&[iV~21=4b'68b*#lDFhvHy`y6nmpϙ,ocFw;,l4%Jnϳ^|N̙y6-8~BL[41y TFE zaSW'eS$!1MLй֎|SP+ [-=N`PK:cTv54Jt؏.֧ABeF|C;u<&er3%y3l%TȁLLM=fRA;+XJs(PL$U$,.{x8Fl xƲhveke}єGϥ6P;f."0 ABbp“d7mhkM 30R ܘnt[1 E٢Y ْSTf)ޭڧethVKE;:R!(bD ΊՓVS Sn 5[&[tB* +YHK8`fa3mi w# YW/ln0D*a=jYU4#\ewy,2#";"? V$8 +Nҗ32 E+Okja]?^̺ RZmxV7N/3/BbB E9]nEC(,ЁăQ(mlijhӈ6fФ;鮂 !{&?c +4JiAf6-d Lk\I6n\׉uʰ7ң΋gp ^ph}\11xV<g%ajj:Ww#D ~]SsV*ӹW{=loOsD]J# P <Z&Qþ =]0 rqK7ӥ(dY$DXG1v{ DLua)rpA(e:OjF jFpzJxP,'b^EVqd +I!VA0Pzq$c|L96l(Z (Ő}wx?;v{E7;rh$kWj^Eo<[x.'3_%ԭ]B{HHc ! _"+#9a&SC;8*pё?je\4]nZ@t6"M @TY\Ȋ;wPg`KjFgV X/YszK1`?4?\E?~ {t_77k @F)ManxF`w1UQS5u#FuBxkUۯ8g[}ݻg2-^ߙ˿~]G8_0!ؙc +vRu*7 Ů-dUJ1͜W7ȃ2HF +] xjw0@|f\c NW-3Lh#/ 轜^N@7ې%*V[->p`i`v7ЖA5l< U@A'SnQ#ƾ5 r%8aiqm!WSr0 >!N5H3l<3qa2)`p( yhA4,Dj) 59l/4zpk*0T Rj۞F>>=Zwx֖=q0@bsc>HL%ZB Lھ”e)Ewic|L诧t-%aP&LH%4{*Ay@98?'u~UQnf`ܷ(p~o=%  ߋi'wi!O0Yf:tO5Y;?qy$BRLwTcTmTx՛< +̀Z v{ +Jc*LQlŚ" `J^MA0SR;;V\r.:eٟia[8v#ϼy^|Ziˀ4,:84 & \D)47]S5 3x'~q +)Nd1(l+A3Yk4X:XCC1ޱD "Z9.[OӀ8cVDXz~?{C + IIkC |=Z]]_uMzyz^3++^! %ه%|zgs|K!KQ$w$wD +׺HF.E\ڐ!Cv$6a,3Uڙ*JZ'7{5Lɉ)Ϟ JjŔDDb J~x[ +ɬYV_ 57hTcbI& Θm*#HJAhWtÝロ;yW,%K7yֺg|\˷%x`<9[/pӞjgP!G9+1]j9h*7 T3~!7K!/NӜC1fNn9} eU8`2AU3\20{x<ﳾ!29?`. \Z­ \Y6rC|SCg#">NLx +<F_$~iԮч෦[ڰ>|lM K_ncҸ%b>$GT]ksAU6Tum{s +,p@EWE5`[; 1aVL+S yѨb4 +QT9u6^_C5fjg_5pY7LGt,rױy+7u%;< {7Bx=_ޜ + b#5bWH#݈cra5e DBtv'@ P\g>x +zŃ#{\“HM?z^|>q"  WJ̅b|8 +O(bXE=DMC(h S`r* .x8ǜ3y .7|BB+xrZұe|U;S%B t,EOY~Vo& +מf'DQ ]/vmᴋaHVʮft̵@|$hob 5mFn8nЊtc5]k;9Uq9.rb7Ye:}jLVM@%nt!m1ߍNKjf kpI$r.w~oA9 ? v"a1`ȱ#[Jsap`8.'V=&}d.owx>r?,_s3~#jN-Iu/\)rUonQŚ `-ov蘡fп?šq7CpmxmD@kZ9T-jUTDAiIE=Ga)ήs߾ޔ}_Zj +F{iPoxR([$Q94,# +!j-BzH+I*xd{h@h*;bE%Oo~оxTӻh1; 'aJ#+d\f pݥdI|IR8YkŷSI87JGyc풥uA7徏Z7o~$G|E掞}VaO=UW}鶶aLw`ɔI?EF8^DJx !'{!Y^FH9jΧT A\Q֎n-یws]HNO s%՛}˄ey<=|( ~<Ӌ|(bOk`&U_zuN)ڍ=Xht9X1ev7 )r8p1YB[QpݬaxMT@.h7W۵G/WjVK8(JhOe]-'~{rX?|{Ox^w !þ8s|o?s~cЖ{~O;Q谹.hK{xlqۈE}tm.*X¡>KaL4D̰P +@2ŀi3W6Sſ +>4lk\TEYyáH2@D81MH%q@q'QD:nCƷZ˂`౪dm8zک}6p&Lԭ_ {e_;t\[G Ss@o1R1^~Q˲$!M8*%qᩗfs%N;HQ0so6`-2SN$~ 3%9!' gg~*ٚkz!ouԍꦂ].VT P ?TFm(c8bEzЧ&vZx^pd{ӷg RAVٻGd/p( *'Lii1q'k*pze W9]oK갦wa5ÌB{ )(tҧ55̮2ˊB:`(T+SBM*SAu±q@gT4cUUjNU$ +I&$88ܰ;ITej,břI' X*jwd"t +Tr쁠4hC|H7w>ܛ[{OSb❗w6`r&M/kkij2i=}H<Ҿ<Ѳt@B繸C٢E DA*\نŽf9!I"c@TA""QQiױNTf5QgTP+(J8OU:?5ά.0) N@C6ԫ!3) 6@JCmY !zmmݑ_ +OLNr(y=5tLy :sOg=c~&TzW‘MCVA&D1i=X:Bt: 鬫Z~}ڗŭ}(b  a]h "~2t!:O7#NAiۄ +m7>iXNkﴖ(qZi]Qf:N0K/So<a&6_ ;F(ʹzt..x*iOwɂ;5Fg;8`0%2=;-hFZ|Pss':} H_g%%"m^6 %mOU}]%T ΄i/e.[el"8JzX"wñ22mTfǕGZw7@u]OSh!ވG'>ߕҡܞg~~Gӻ=y_r?}۲xr8ډ>"s|Bxe.vd߅ƅ>^ Q0d5<}[v6{,sD , fd*+ʊX"B) Rԑf#BL CLkPUATd2F=ƫ 7A7x4c $FE9¾5!"S]#)+)ي3|&zS`N1t-Hǁ_][S9?9]0(9z㹡žiwʪ*^[ݺi*\ՍetNѼ' oX֗F5%(KHDh/Ђa1KZ-c%tԦ +Al[ٯy!_]U5ù8nt~لkfqҼ uh@&l&jl"pee*H~zu%jFS& hNͩZ.W8Qկu`\Yj=סޮw4n>}xMD#_;-ѣ&z{DxMB Er*NXqO˰ CYߨ9ҩB2VxDU& +蠈Iy.h 3 <Ux3q7Κڠx=g}@YZG(9 osG6G5S5t90MCq$Hڣ֠pZ*-vI]m Scs: +}w~_0?`9Tۥ ?7k13.Yz?x_=fkmivew^p #_|]u;iuu+qՕ^)㇂QA1ȕlB}DA~ $`ClQ'G7Yۙ\ 1ށ ޣ\_-sL(|4MT?.$a-1ZT@T7Ww䢂u멿Ӻ{ g-1,jW "&Bܼ#Oϓr=%uI"n:eOt(L_ Cl&E1 +'-dL@{ [lg:RlOIXSyG)jO/D,,SOW{Z)ĥ1k{evJсj*u}<k4o{yQۿΝZ[oxg̶sg?妝Ҏ_fQ!*jZ\vłv(iaڕ);J7[R xݜp [#нP˿ C +YU{C hȌI\$ϹtsAx@~E!>6ض1  B6^Mfk ++.OR0&\D&\4rhhq"J,(t4;)P5͹~ّ@!wAy4#qk.Wp qhr/0IBp22<ɑ`0bu(56g"ؙ#1n|6ˈDSz"H'4u-7;C6:w?4w4M*Y׬YwolhGyQP7Bt=B{S3,L&n~l2u# 0˅]4dD%Q;oNa: Gr׽aedvZ*6_.ۛ{F +rO5WrDr]ONM3=8pIY^Y|*2Jt.jvG:{SL{' +buzU ىozfPaPIO(<%rG;{FzxY Ҏs%I}7UI5_pV{F*w|Fu,ŋ +bϕ25߾w=!u(.+k?:|:? Dx RnUnU5!-R_餔!"#Y!E(^{f3LWC@/z]N]dž=^ +FtӼExכ@zB|)uMC?%4S# J( +tɣLE2!3 $P9 z_&QXXƂ>8NF75S=QéПF`y(=p@}0prkz|I*m/_iz'!ڤ/4Ig.μSx 'k}WS+" Gq;NqVxbqn\ghޜ͡rΜнXLBwAj_`,@c>d_pBVmF"]U:,硒H|Js ğ+pQUv MgIRHT~Zh1LkWw߱\=SC7- !H/ӛe/0XbObC,t7|I<$rI$^FWogpdDibELBEE'(bQ|"2ןN ٺ?NJ 4?/GMJVL8Y/VGw!.4gnn Djќ +c>k8 fs"g1;ƚ$}6aA S՜(952qv/q߹k3|{Kq݄7]S ]n8b\>K9m꺩>R.tV;& |ӷ5 +/f2;mN;뻔E밠*Ah*ϖX]تhoc1r~HF-LryuYw[oῖ.ϗPe +绦 K24E1P?T餀ޠcĭ*N0+CoPMMmWykxV F/Y*MPzw6Xucz"Y4 r)\!1ތ,>r܄aeZLQ ݘCэ!Eيe "ɦ7pܑ}\t +5Hvӗ!(M5.N5M(&J!" v$QW'~*j8_dn堧lf˟[A} O^y ž5Ƚ#|Ks8ƛЙ^Gc7"dmKDC9leM&*b;ora*!SPW/ɴ%V(%~SZc3. +yۂ?$?ҟ0hVK•*]Jةд^+]nrq. jF͵A6-0:˥2Ơl!0 sW)3}SEl<ʼny1T`l:V,Z#,)$3; ZI1-6lWp$zlzie^C +# (, \SXҖ1ή9A罬42Ggť, +hbD*ǎ̢`+Գ5يX +`q[?y/5޾O/o'n]=|[p!\0Yc+;/ r" Ck2IyBxJpd27+,;b~}?#$b<btrTi0Fd2A@i֗NN9j@R3V#*s +CuQGnͮ*xӍ nsARVCŗY0TκEXn&m,I1vRLPn{̓{]:Wx0z1v6{*%ORi~I:$}(%oIq0k3D2L0DK$X(Yb#1yxؤ^AIDqTH́Hq"E$*,ITi`QpA[hK'Z|][ٓxʫ|溫[Ȧӏ?cD?_y28J? .,G1?x7!㘣.V;Zs&bleϻ)?3:<,63%2663/<3sidAjjIr2dv 9sk Gc(Zlɚs.tdgsO,+Ȧ-ƼyG̀H9_[U]OY{mxgsz'ɶ6*%r@f1eP"b BP1B}Um&:@$ L)lƞՍЅzli,CLE6MFbL_i cAނxSL)=IlE!iwݐgCIIlIt]g?}}v3G-jgqs.\6>HgweOH`."k<ρ]!a3*CaY]lxLL9S}^^v5{Mw-a*<= 6 K7#6 +:ޏT(`_ag̮bCMيSlx(AIt+vmNF ccˣ6 '>-:$Qpx-|45H xi7ԠXF I AQQ=pmQo䖫ΟU;sCCVxGĶ79g 'zY;VW'DGYlZjPGS'uzJ9855le4"9_"-L.6}{5GqlJ1h(s%7 1M 躑kE~Y2i^लY + b#hۂA~ "3i B +2-DW-bYZ梫PI (S%2TZs +B6 m@l.|u+]Mi`bUT]L"v +DNZ4+xE*^ɲ_m'9IW:RXq #IBޘ,yqG.Z^eփ  ҙϬVz+8zKWTYZ;6_;]?ng>ulgZ"3j7ƛh?CW? ~W~A5k6R̳s=:ϒp}Pvkn'` OU>V*Ͷm̚fa֍;~0c&`IGa7ʜ;Gsx[Q}9t+;>ʺ#곁*% |lll|8]:Lsl\!x 2isJCD"?wz^'i9.p*] [МM1o ڽ>{7tl'wn!76Gq=)Z|R=)J铢LeEYRsjQ?" +ډH]~HVkNU7a4R4PvdȰGPДglc*ӂ?34P_ݙ<1fTUf͔.B{Xo5&AW(|jb[h*mEvJUrpb+Eːm>aA&Sy(Uŏ>o|:S^EW;u-{^SC~r{蹟lm} |3+pNzE^c7CC}N_;5gY΢kvVb֚4ijNSS+Xg~f +A}?ioP)bS|P-tđ:^FcLBr 2TSfKL5 } xTEkoIzٺN&a AYM}At130㎢̌7̈(N?x頻[unթSNUݎU1r?Sy;(ԷN7*//; r;JzJu,O]SW;̥hR=7K+^[lzD-csOpCo{3jORpK2%ek{*K +;4Bgs>}uòFߴ Y Y.]|2I>-i2[Ɣ'3Wu!!:5b,iѹ>(G+s9?qvMk^B눒Qp쌤 s#|!)qy6eb3Y[)}(%5C|Ī +6*Kx M⳽A,e ?dVW6_C$yӾ63g*L&t4q"goZB=j3(cR? TTk[ʸor[孛hSқ.lݟ_-Kɯe^iE\ *@^!'NpKX&UW%90gtiI9fsڻYf9@ځa#QV*}Ѿ=<%#%;1T0QʭqK>w=VÂkGwW,Q!6(Kbkb)ܻ`n$r h/4b}_h+0VЈYRBcG1EFKODۦtbbɼbai˖~%aV<4WwM݅oxdqӦo?c퇮?yCC{e+׌l(WB.$ɗ$-k>}rkSks&N̙:3gF~sGIeIIIS_ G9?^IMN8R\қ:q uZ0u/x%7mԕ/+L]ި+L]^a +EJ2ŗm~iL)Y/:bM%n/RV(O˜0ex3eŊ1a=$5MIѓ=ق=!55NOWK8oGJGT8\'&aO5_ƣ\!b@~K:}].qĸĸQ%z `k`v宛\KJ+3;+g]}Z~,҇6<_QfO +lG(eP+; +mG]SIn5;\zze M,cӃuo0\|?7oFpbI>ʃO#$$5i}J|Ez4-ȓrL>?ERP]fUb1&˼߳ 9e0̩bVP,ݡ.sO8xޓK5?>[Zn r?xn٢,]J̨Y%WW5WUE/H琫̑#iqOKJa&'9sR[Ps(Ym3q%KPfݴɜ$yJJz?{N_z7-<*-)!ӯneVﵗ]~q_soxo[^>/#2w}";ٵ'fWZ2f%e5qBܼTwQ7N!orNʔp'g:܎vJxHAdPUuCkT<^_HGQ߬ϧ@}K sk ǹf-0}Xhqtq ַ~rbWi~<V6ҭ9slQoӜ8Ps_I:{^9 +IFP4ami?U3Zlޒ;Pʪb[9jkZ4ByJ>2} 8+ʑl]̂tu¤E(*쳏y\1R:x;bbb8;b`S/2ghr,Ŝ&Ecb>9ܼR4<*IT= h*Iq|9r9"*v;+RP_@研Zeq8;!01yVRb6}wk[/Ҕ2oi2ȹܹZ#QQϺ'i=%u''ޏ\$qS=V^KSjN-NaUCIی}<%C: T=w:_wfğu8Xi~w3Dqڡn')Am(7% ;@H4G +ڹ89%-99z+4$і$#YrTן,fi%0msn~$uKW3yr5/-_ Lx|4C,+~<)}1rpڴ,L +ബ_\ƙhGo0݌ApRX~؏ ~=[7MLk3\سS]&ֵ=44or͛?ٳS.dfO'gJ'9Fg&7jOuۿb50R;N˙+CŇ:vÃR3lTڟXm=q-O?M w9Coɗ?vi#Gx{(p񻨰g}7v$EGlG`e~Tt`U4Vsyt xÞHR+`eEY>&$]foee)w@YZw[$G7\ֳ/$W #9+P)M*M/oʝ~OY,udFC!!}n`nK /_vi7nH6mQ3>smaiFn~ 5+%%фTOn^UK@$z:`Zjjq7 ]Nxܩ|У(ח+Wȕs'HZ<)Dhjz["ᤞIcqI8]ҋ/GF:<G2;pA3>p<6_M~:f]ג6d|M|TWt4㽭 HHdr:Ҿ`hQ(g7O-;|K.P襍5 9:sk?(-g_Y>rEH8|.ωҭ y@-tD(G]iM %"t>⮇(vN@=mLd?nxƹAh3Dz0[Hs^~@h!!?AUzZ{p&p7"]OrHAx*~jWK9X<Ɓ'X!H+JK +j-:YHWRQ tiFπVO5xwoHe-P(0>uŔ-K0JM͠`'S=Du_B9'j[.4{hrNKUxY^wT)Ab +U/3?0&!-n@^_u#@4 <ȿ]oL;$xVŇk;(EQAU `C{ :>@P *_3̛?ڋCM4ֳ8.4B~&YelS36=_=}OFpDoٔa&+}2rl¼&}¢c޵# +QKmjEM33!SHu1Tn3կVJ= n9Mph˱GW3{yN^uzW.PJT#em|pA!41e } g^}@39_jsL&EjjDCΣ/ |Wڡ܈kEjfp*4% ~>1|ԉyɦ6SO@u,-<䱁 ΋068Lx*w"kg2e$93vx:y=nj QƿY}r}aÍG-ƣJxTxuqqtLb[iW{,5cZoZhɳ~%zQ>!EyX}rWgAe#FDY<.cэTyM~1^Tө(" c*SNTNI=< (ٙ9z!N:o="'p$xv i"!Q"=ta dmB"V.:GRf()_PFJPQ˨;?qQxM'mS }O?~Ow+^6j*)-x--9u_MSHQS 9hkn!7xԣo-{'bb#HQVqeVѦ(/;e.Q'ޓtGM>^6k$Dz؎J~t9CKOK;`֗;A7¤+\C">`5}/c;XH~ȯz^Я4Dž"<ZӓT駀^1}G=@3~މa?wJ7yR}ƛ>+{jקN]ǵ\csLJx~y3MQ~0jΗiC?ү>rLr..xH>Jrʚi瀨u4}!o| KJ^v>(_/5 +Z +:t"h~f˒ʼn xxv^W=z^'Ð%?V &0]d; ^C}>0d5Xzea[Ny^" Lh=0 {Ո]_</} h:h7  *#GCKD9Cl<~ݞǡs GclqԬ̙%vSs=cN6CLb=uY֟hQ1z,%J)ά+fLy(5nV GR5/[̍bd:./ƺ߂?[{Le28cK`L0= +qQxc<c~{BU GΈK?Kz/%?G܏=[ɦ(/-';t 8,?hX, ʬ1t-OȌ<cqW:*TJQ {پmj}nwYxe\臨3!oS%0v[y1g/qF b 9m_s¦N;chȶζ!G%FeqT.;oXZˆfے>ރ|ŽkGq#ժN5/ʇbfݕ1􌵾^O^h*޴J"Mt^!W&*G-3;jӴ9^'k9c7e1`eWij=϶ c~+WbgdׁUeB>.d&p*l}z۠RcᆋzT(n3-}olSbė)~G>ǶaT/9+Avw5։t u3}"PrAvdu8N]X+@ϗ_k^k-0@McM0K-v2u.HEE]EK;m9AԊx;"W 6SNȺ\h*|iCn&} +M! +?Ij} 삮Xk yZ'lyah.g 8$ +y, yAYCҜigz*XgeZ3-3kRc;V9^q?Qx X\D9cyl >?x)ɠ؎ ̱cŻ׸Sl&ds_W;2hi#1nʁz3/Ngf3'@_gYn-ooY;(ҵtP H؁'Mς`V؝oS@?wAf XXoR2:Y;U +y=*7d!R ,õ",M>OACCV# oXYnΡ\KbR Ŵ½E/>IS?FyԦ`\..K i5W!}: ЮV_H.- zEiSXr]+qvѵ{!|i_X,ʌBS1N hP'Dyƈ5H0v2 W%te;=Bϱ'?9΢^ +*$r۔l{tԳZ= Jgz[3{%[ js[4F0m +;S H<$v,}ֱF;u4G_NSP/4,#(3Cu y־.:J6'Su1ls{hDg< +c[ | ygY,2pZ񟈱ռoBC±zjcgqϴq=UGY㏧m罏>z֣҆j_iR2}آ2Ok?Of?i}/6=ݢ%}9ǡd:aXkln6=&A#OT )h{s~=\W: # ñ3,=oF:OʼĄq-e(Ҁzk< +}]~/M8^6!IAu 2,\o0vh #2[߶][SeGϦwO?j>4!ҬT :i` lޫ?i17eX~kCsdՏcRľSlcɾ"8z'bقqyO4gL4Z4\~xP2k%*֘X`n88i,#^l6;&\G--E?}1Ǡ>2aÓdsՎ2?Ll^6-KdqOWz/7GM5m: lcT s іVid,SŘ{1OŲE~z?2H+@,]eTrKԐKw݄5^2)ŔY +ym,0*O6)A3^S116`I!  8bΟ%KGB++͑%bL~輋}A:|. mdK^ᶵݬ:݄?^Ƹ{2N4r$>>:r\hz=]'I31ۇb ݈77<#w`i:>;ڷi^ d +M}Ei.s qvzW#B ֢4J&Ѩ K:Uz83Y :WUqz%UhcL|ne8L2Y>3L7n޲QXp9ຈ׋ @oLCI+\(\nQ6.uk#Ū磀=tCn(A8_ed<2d'r$ʻZ-ylGYG]p gtHpO!y#uexQhΗs}ɫoEG̤B7?{Y>v.dOƪ0[-;?ԒͲC\>z^g#+G&/p}hRH! +bkV -?я.\[ȄXs<,܎=e˧#σe:@JTb Sy/%=i2Z&@% f= BW^weIhxJ? ʺ7zyqtx]AO|VgLtٱ&~OuNi_#cD=`|hNU9R@Si)ՍMLs}Bmιx/ &y)? +锥 +cߊaYJ8Ɓy EV*]@;JvȕХ0Mn1?;an3jjYw5z[|y>{?8GOUj;Y,=*7([yأ5&lEZ?G#[=FNvy<"^Щ 6SCm>|1nqgqS{ ̧ P_2߃>i#d1"T š\2lg5/O7+=)MzC *ׇ ^^L{au=M :X[G׉twݺ i[ڝ[մB?><+/Kmtpϧj̢qt9Dy{V4.9D!-cK5ct5У]E#@j݃s +B>}1Յs:̏p_~|"B.i8uVQ re[=Oɫ);{LIG&uv;%HM$~)3ڋNuA"M'!{Z9h8)UMuS~CixxKw8M= t=ó{j|̛]Mnbv F;hc3d#A6x->fMUe|ce CɡCGi^@iw>/Lhv<ʔНh976sGu V g>OB +P= +^m۸zzK~ EskUۄr-GfdTj+8- zZ)![)h-j<7&9\Z32Jr~8`p.õ} Zp> ,^QO Vd&ZR!&HK* + K~5?DC=OHoV&~sQ d ;Pw!\+j`,0rAPyv9 1[SAZ'E"%'|)x"\D^t\|)RrRBR2k\|):..m}O/zPK.B-]D|U.ݭ娱"]Cۥg RZy|ԼDj,5.5WH͹RsN@U4K-"YR. Ij."9,]ZGd r=qWC".0#l.6=V-By E3Pg]"y\_ors͗r o+J&P||3n=DtWy*AO&KN}(WZ՚[d֒nR +>@6OrnS^lz#˕mNPŷRne]9KvQX|A5ln Z|Wyh: kQ۴|b]KS692x;ȁa9"X$ӛHI2$¤xƩSCⱢ/$UHM3bWT'~g/\V],I*qeUDklxΊ)CS~J% ;hw**2( )r?q׆zm~jC)* +endstream +endobj + +9 0 obj +<> +stream +begincmap +/CIDSystemInfo +<< /Registry (Adobe) + /Ordering (UCS) + /Supplement 0 +>> def +/CMapName /Adobe-Identity-UCS def +/CMapType 2 def +1 begincodespacerange +<0003> <005c> +endcodespacerange +11 beginbfrange +<0003> <0003> <0020> +<000b> <000c> <0028> +<000f> <001d> <002c> +<0021> <0021> <003e> +<0024> <002c> <0041> +<002e> <0033> <004b> +<0035> <0038> <0052> +<003a> <003c> <0057> +<0044> <004c> <0061> +<004f> <005a> <006c> +<005c> <005c> <0079> +endbfrange +endcmap +CMapName currentdict /CMap defineresource pop + +endstream +endobj + +10 0 obj +<> +stream +߽@ +endstream +endobj + +11 0 obj +<> +/Font <> +>> +>> +endobj + +12 0 obj +<> +stream +xێ z~$(v@/MA;HsH+d䟜͉=SEgfk|_yzuaf<5]r/|/T.o_;sWW|Owk7GzoѧC]D l׏+LW5^8v{x; +#W)6Tѳyu.&Yq٣)i5>P3hWFK藪桚DU麽yug|GFZNs[L٠zz>KKkWXu0weIE?W{OݧRtQ?WΓnrGG̬..Ǣx.ʮf_4uk$)XL&bVZ}|Lf!NOq]7VRĸHbiYvӁ  )2P"^̞9hJx>8W-|U~'Cv* ; ̩f#i1a;-?2M)OTusڦvXy-սWDѤ9kڣr&/id\5eM*۲QP35YP1F:͔$ndzc6TZ6)-n/vq9؛)iqv\,.U +gWu_q΃I5 p#a8>0O4yއ|\ɍhn[,_ڲ0x|aPʛ[Eºڮx`55*ۏtO+$6zlRqR7,%GFg(QFdtSR9e +L<)RxDR7+I|dc:c }NpswnyHa!+| +ixVL< >ȇ T|G<͎Y>FwF0| ^!a]lY`jc cepxFK< +o.C'UYhjs|D}_G> g&+OKW)c@ +P8/BrAT5z<)%RxDkob(%FRT%XJJq+UI"ŊRB)B"Е7HBjR}R}Ԛ(5GQJ +BCPq +^#|֙Fwk0| A!aVVP+6fVz`lRȳ9cc q~XYI,o6f^J(_bWHlt 6P/6T/=F6T/%xćk2j>ȇjTÇjȇjDZoohnJ)_aWHlhnz +u^f#l֙ Fw)YgPNR NX#Ny9f,ΰYgcTذcmM6P6T=F6T%<0Rmrk%.xąkorh/p5r(jJRW|/e^cƙE*Il,RM{^cK,xHDCzr\ R5H:fxf R%pE$uQ + _ ĂjTm OX~noX$/ļ +endstream +endobj + +13 0 obj +<> +stream +x]XTW&n1XvɮI6lI6!ņ"һCw 3"U"Hˌ~ϑg9s{߹瞹y5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xcٱђs{f-*lhdվF^&&5!+ll2CJigbyDApIXed2yD}ll72*-R8-&6^Q) -XPG7瓜,f>VܖZ^[P\TRZV{rw[wO^(k}W]60xmph`hdpxC!! G$]64|Ém4 WMM#ȋ.6!.1>-!˝Q㛒VQY][-L(D',ͮjȩn,k.o)mV5׶vԵ]W{u}C#7fmg 3cp1f3kݦa(cK$P,"'E$A'"GtG!A( %  +3毨w p@$ :6&>6)>Å隐噘㕔㛜',N/ +(.+WK KkR겫º撆 ສN*讳, o#8bQp1.C\ldJ1^˯9>'.T,B164 +6$1șKL@YC ^OCơ(+ +89M\gpez$f$垡\V[ +왐$R`a&pe]:K/_~}:UA] ދzx42Pd(B I贺qqjʼn *@PҢ+׮;g` ưSE3EK !V5(wRl2׬{.BlB|R,m>qm~1c8Ŧַ=ļ1<2Uf. Sb՟wغA!E^}H -B!`^IC?QxQ/( ( + APmlj`zaZy}ySk{w?I|3>B/wy4P8?q53[ݡyD@"&\K{Wol;s- "j⒕/qi n )xrR5fgw3/>m~M5W^& }|BUPix3C „܄CvqiԱ 7Ky#Tqi'\Bn3f≲cCl=}TP3MFc:\aZm1iƙXbֻ +θr‚¥ɷ\,,N>E)Zޢ(tGnO*\/XMg*>]#-ln~$yZ 5HߩͧVk;ř5 侸GJ5Py;TNyD'dMSNܭOnV' 6E9p45&{{_UF]bށeyF۔8K]3 naIi8pZ\xiWmP;'W_ݚ˛!'8n|Y/K l Lʃ4i~yRj[M<=b6Dtx][T^GkZg@n{~hgb7Py/Fow sM8U֡~d6q9X_Uݹ**w͜, J/g-.ݚYUj'ov%cCE 4T`5fE#;ĉ`dX[ikNIc}'-;ccN588ح G7 rE[-[I1X<s6y۩ +n" Uan&\FC0:8()s_ F0O̗vo3|B䬒3y_S7ڎsEXO{.cNcNe.٭bc.06 PDw~IX6Sq|r}bn\&7ZG 1l;iQCz }ު]B +]RjC[wKZ=N-36c24X .liIش4ߖ57c:GM96}cL>5h L .zr%VE}rNdTo$#g @!PZA9K{?x!@rLmx\;T^ܣ^-|W C齓f㕘+xBKL}$^/^?U{3)yߝv+)"iM"O  H-0 C`n)Prg!A?6U$8΋;ͽAp7 h\bb!tŗ>MͣiGާ(l6h1G{iJiI( +:=ׁ"lanUw?di + ^,*se+/k +s1B7KmDH t5vF!]ck7 ve+8Kf1F9^-8~JV(Tc>#)H҄ qXPF\m> +< 4`eWZs C~ 3%A5*#]LOr1=Xq0Pq ŜJlɢ2A`  +C;`,ۧ8orj-{&]&)=W ?U>Sqd#∱A6 'e3 +Cb8?qv3 R7ƀ٠00W? bT0?a7P72vynW^׈.ZVxbIG,h[ڞDXCеnAHnZJ8#2OoU **l\^sIOoQO5ϧWv7FqxuHRJkܢ\Vŕ2^O7 읔뛔 ;AX%t 4>V:睔V1 xEaDAvkN M' .&M?0A/GJb-zF?2&k$H'o +":@ YD+^(zD"a^ +r9|,@, ;OUm؀l8`}p_I(1:p BЖumW{q. ϕ<Ѩ٧hlc 8/Pw:;<2cK8vS/Aq!Xpu/C2S"+n#"XG&k;FaJvE5 OU"e0\# +Bփ,$i)b&sl&T} Tb-:̧gt^'y L4DA|qA@bY$նx,$%JJ +"B/ۯMP闒]j6D@j̧{Au.Hx~ 6[q} 2SN@w嫽>e +IÄYPr>& (=="yhNT]p&Y.-MMT@`&y>IyJi[$&Tr/RllD/ޥ5M Y@ߏ7:·EQZi($ +kϥBe FމF|bo3@d8SS y1}J2}Z\#ɤvk5ITHZD N8=kf #S^L͆UoqdV6@A@ȉ0QF8yPcBFI殣S\@FspD` m4rSB|e\qk=#ATݡ*pF ,#gҞHwK_hG,4[=9ܒ iu/`01lh$To8i4}Y 7tõ򪛦 +Qe;iI흯᤯ dڽ7Y Ik2OStMM`ᶂH[ 3ie4ఠJi _~= qT ڰ$d¢66jPHV)׷zΣH'&&3SpvgROA6o +trnpF7Hȇc8 ]x0f[d1fቯ!de%3hA^:4iy[6/G_6+x'w_Hf1t,)@2S:U؀ !S.{1#KfN;>EAP[!11 #m҃=; ijtyGG!`Zb[US4u/vz!I4 OC || A*C!vdm/"Me&c-s LAo ]y H:6 e99Óh?; rx>22eHQ䛜k&U {N!F!|F :< .PvuU; tMubTnxy%!e ^;u[y +/H{cJF; +iXpwVU>ʭ>53l Mi#~VQ'kA0\ Pk8虿52ҢdV}0F@A}n;iǍ"ЍD7y|-R+0SbduI-9oXf16g +M,DWP?Od8:ژfJ +A<\΋6TNǓ)_:A35 ::hn_o슘ȂD DlPeIgǻ:&mJ:f41-+pمe~d/&^FS0u-Upz]E!^+?~6%<a]DFW8.૏-A&@ +.P4qhaC/g1&NyQ GLhb?L܎ ȅaC`P 7 |0H2a-*̥t3U3|m8rS@ZZNY_k'qD*2sA`!R^S@ AhP~s)5Y%@,y"Yy yT8kns mJHW g['zz#kd .:S1tvS vi b=UKr%G3wX@sS)" +ǐ1$_?w%'9nES&k O9c I"}x +TƸ @`ctyɓN\S[N!G$O^A:j&FylĜ=V8Mg4rr.a3.20p՚PnU'4'#μt@1>c=PL/!ƹZ/E$KE?]'Q5w>k?ՇݪV?[3ZmSWdIY$ZS׏1kǛfIH*[~YS+2ndy&#w%HGpջ'M!}{ޗވtF#w90;:m7, +4X'cRc vٻr& y#A̺PYʬC`6ISk2[gl౥;:B[Eo쑪ħ8OZˇJU'A(PfcC0GnBW!3[ CqWH0q*wRa,u1?˙̂2.88]H Řv\N45.3ܐ1#ѧӆfZ?ܲkVQ lÕ%q|C?[q"+A ,cG/EۓCwNRZ2f0K5^0;Yc6~0 bNgO>N4W0ulEul:-645J$378<<04<8Lv<>^'/JokWϥ+lD{:Y̏y$Pa !óJ0$ *%I%ՀbÚe+|ujBKgeT2's`]m,,H/Izu6ʹ7N)$+9hWbP?(mݭjc\qb#:CNU;˙n=vi|쥐[} #/HOΌUR9Tkүߦ Vn!y`<948 "pY}@~*.>x7jA ݿаFK(T5N!ςmI| l5r|5z.SOUP[]$.N63L(e~ Iبܲcm=vi899=~B$Ur '3[ = dx!l Ry|VQ'o yAeK[4^m2tX}x[ޢ'7+Sf(Wԡ /@ΫtOóZ-Eە\Q@㻋鲽wLv z>a]/Ao66~$q %UڢS\"/,?G\=Zۡ`)w_ޫnt$-kPJ]F6i'~a`1vr{)7Df%t c|t%'Jwx +}:4U§b *NM>)6ЙOmV8`ȼ#(>7_J~Awi HRbͱCAG{~]dܣ?T};;Y Gbm&Ւ= C#d;aʏ?B7 +,:g*4c%9PZCӽ_j4*'{PY+;o_s͊ &ۺK'ۡ"4:Eie9aF疕7=/q1WRm~ARmg)/Mat~Wo?$tRFQ]bBԈQE=% 6{F<"OVnS>VM +`@|IU3#Bh؏rLYU ,"iuEȂZr-YUdzQs(sxʸ-&o7Yψsept2֗|Ƀ{g}1Ӌ 5e9fp&%^oΣ[({E_K]be ռcN˻Gu +oi?58]l_WlEȉ'a#ш+J|( YY=5<#s +#6l'kege|l$Ja>.Axzw{X" '['GCXAblꠂgM"VVaJ^Q 7J|u &B]}`@{D,| tJ/hzAojD z8 1!.m?e._`xlzDΤ)Ao0p pS o5D#A/nE)sGמ^u8zP)wi~ +CG_!BZqK"sJ)$>g8#76Km s G+Yȉ jg ܤZ>}Mh([=A&lgK ͠+`*DV\y8k28)dYb}_qpsӚr 3#M/,㙔Dr_]L*cKxQ~m KD HυE,PAxYh!RrxBM0  +#19fb9AD{"ƒy52\T3omW}ޕݗU ~ nP[F +f`x8 $DR:HdnyxrFeR3 :p2\R`Pj",TqXB'!O6," Gy9ӠijզIHcAAǽr6s:y4Zy슃lJm-8s3 ks I|P$|H-uepk:[bǘ  + snǥ Id kA}M] +A +x)d&-9߉ /TW_ H6&<Fꃠ~|򺬪Қ2(;:5@Z^[36kZ˨"'y<<2aXl)5F! %d AiEg/t?tݳ_'ZD$Y\!a"O+khhXfDT$ /m`r6 ЅM0݂>i"Š>:jK%x֬նuGo ̓?,,,,Nq<8LZp7ӿ{֢euQEQ !=\Z]>YVqCy<s +ɥ+lu_\4EO02R`5!+4$Vj[6[o@goϮfAqi5MN(!' >n(k[t',D//%*DX#=(ȵV4OُP[i3:H:ewddktHXc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5XoW +endstream +endobj + +14 0 obj +<> +stream +x /k8$9Y +endstream +endobj + +xref +0 15 +0000000000 65535 f +0000000015 00000 n +0000000064 00000 n +0000000122 00000 n +0000000266 00000 n +0000000413 00000 n +0000018054 00000 n +0000018128 00000 n +0000018336 00000 n +0000052149 00000 n +0000052701 00000 n +0000052768 00000 n +0000052920 00000 n +0000055600 00000 n +0000067678 00000 n +trailer +< <5796935E67F5DE8381B43A10689BDEEB>] +>> +startxref +67963 +%%EOF diff --git a/apps/PdfService/main.py b/apps/PdfService/main.py index fa01f50..88d21cb 100644 --- a/apps/PdfService/main.py +++ b/apps/PdfService/main.py @@ -8,16 +8,31 @@ app = Flask(__name__) def extract(): file = request.files['pdf'] doc = fitz.open(stream=file.read(), filetype="pdf") - text = "".join(page.get_text() for page in doc) + text = "\n".join(page.get_text() for page in doc) + lines = [line.strip() for line in text.splitlines() if line.strip()] + member_id = "" + name = "" + dob = "" + + for i, line in enumerate(lines): + if line.isdigit() and (len(line) <= 14 or len(line) >= 8): + member_id = line + name_lines = [] + j = i + 1 + while j < len(lines) and not re.match(r"\d{1,2}/\d{1,2}/\d{4}", lines[j]): + name_lines.append(lines[j]) + j += 1 + name = " ".join(name_lines).strip() - name = re.search(r"Name:\s*(.*)", text) - email = re.search(r"Email:\s*(.*)", text) + if j < len(lines): + dob = lines[j].strip() + break - return jsonify({ - "text": text, - "name": name.group(1).strip() if name else "", - "email": email.group(1).strip() if email else "" - }) + return { + "memberId": member_id, + "name": name, + "dob": dob + } if __name__ == "__main__": app.run(port=5001) diff --git a/apps/PdfService/package.json b/apps/PdfService/package.json new file mode 100644 index 0000000..a4416d1 --- /dev/null +++ b/apps/PdfService/package.json @@ -0,0 +1,8 @@ +{ + "name": "pdfservice", + "private": true, + "scripts": { + "postinstall": "pip install -r requirements.txt", + "dev": "python main.py" + } +} diff --git a/apps/PdfService/requirements.txt b/apps/PdfService/requirements.txt new file mode 100644 index 0000000..314e8f5 --- /dev/null +++ b/apps/PdfService/requirements.txt @@ -0,0 +1,2 @@ +flask +pymupdf \ No newline at end of file diff --git a/apps/PdfService/testFunction.py b/apps/PdfService/testFunction.py new file mode 100644 index 0000000..ebf40e7 --- /dev/null +++ b/apps/PdfService/testFunction.py @@ -0,0 +1,37 @@ +import fitz # PyMuPDF +import re + +def extract_from_pdf(file_path): + doc = fitz.open(file_path) + text = "\n".join(page.get_text() for page in doc) + lines = [line.strip() for line in text.splitlines() if line.strip()] + member_id = "" + name = "" + dob = "" + + for i, line in enumerate(lines): + if line.isdigit() and (len(line) <= 14 or len(line) >= 8): + member_id = line + name_lines = [] + j = i + 1 + while j < len(lines) and not re.match(r"\d{1,2}/\d{1,2}/\d{4}", lines[j]): + name_lines.append(lines[j]) + j += 1 + name = " ".join(name_lines).strip() + + if j < len(lines): + dob = lines[j].strip() + break + + return { + "memberId": member_id, + "name": name, + "dob": dob + } + +if __name__ == "__main__": + result = extract_from_pdf("PDF_To_Test/sample1.pdf") + print(result) + + + diff --git a/package-lock.json b/package-lock.json index d74bf60..31e6bd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,7 @@ "": { "name": "dental-manager", "version": "1.0.0", + "hasInstallScript": true, "workspaces": [ "apps/*", "packages/*" @@ -28,6 +29,7 @@ "apps/Backend": { "name": "backend", "version": "1.0.0", + "hasInstallScript": true, "license": "ISC", "dependencies": { "axios": "^1.9.0", @@ -414,6 +416,7 @@ "apps/Frontend": { "name": "frontend", "version": "0.0.0", + "hasInstallScript": true, "dependencies": { "@hookform/resolvers": "^3.10.0", "@jridgewell/trace-mapping": "^0.3.25", @@ -634,6 +637,10 @@ "node": ">=14.17" } }, + "apps/PdfService": { + "name": "pdfservice", + "hasInstallScript": true + }, "apps/web": { "version": "1.0.0", "extraneous": true, @@ -1960,16 +1967,6 @@ "node": ">=18" } }, - "node_modules/@next/eslint-plugin-next": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.3.2.tgz", - "integrity": "sha512-ijVRTXBgnHT33aWnDtmlG+LJD+5vhc9AKTJPquGG5NKXjpKNjc62woIhFtrAcWdBobt8kqjCoaJ0q6sDQoX7aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "3.3.1" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3720,10 +3717,6 @@ "resolved": "packages/db", "link": true }, - "node_modules/@repo/eslint-config": { - "resolved": "packages/eslint-config", - "link": true - }, "node_modules/@repo/typescript-config": { "resolved": "packages/typescript-config", "link": true @@ -5293,50 +5286,12 @@ "node": ">=10" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "license": "MIT" }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -5346,104 +5301,6 @@ "node": ">=8" } }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -5459,16 +5316,6 @@ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "license": "MIT" }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -5512,22 +5359,6 @@ "postcss": "^8.1.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/axios": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", @@ -5746,25 +5577,6 @@ "node": ">= 0.8" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -6416,60 +6228,6 @@ "node": ">=12" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/date-fns": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", @@ -6525,42 +6283,6 @@ "dev": true, "license": "MIT" }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/del": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", @@ -6677,19 +6399,6 @@ "redux": "^4.2.0" } }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -6870,72 +6579,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -6954,34 +6597,6 @@ "node": ">= 0.4" } }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -7009,37 +6624,6 @@ "node": ">= 0.4" } }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/esbuild": { "version": "0.25.4", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", @@ -7183,62 +6767,6 @@ } } }, - "node_modules/eslint-config-prettier": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.3.tgz", - "integrity": "sha512-vDo4d9yQE+cS2tdIT4J02H/16veRvkHgiLDRpej+WL67oCfbOb97itZXn8wMPJ/GsiEBVjrjs//AVNw2Cp1EcA==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-only-warn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-only-warn/-/eslint-plugin-only-warn-1.1.0.tgz", - "integrity": "sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, "node_modules/eslint-plugin-react-hooks": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", @@ -7262,30 +6790,6 @@ "eslint": ">=8.40" } }, - "node_modules/eslint-plugin-turbo": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-turbo/-/eslint-plugin-turbo-2.5.3.tgz", - "integrity": "sha512-DlXZd+LgpDlxH/6IsiAXLhy82x0jeJDm0XBEqP6Le08uy0HBQkjCUt7SmXNp8esAtX9RYe6oDClbNbmI1jtK5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dotenv": "16.0.3" - }, - "peerDependencies": { - "eslint": ">6.6.0", - "turbo": ">2.0.0" - } - }, - "node_modules/eslint-plugin-turbo/node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, "node_modules/eslint-scope": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", @@ -7729,22 +7233,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -7987,37 +7475,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", @@ -8107,24 +7564,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-tsconfig": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", @@ -8199,23 +7638,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -8261,19 +7683,6 @@ "dev": true, "license": "MIT" }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -8283,35 +7692,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -8586,21 +7966,6 @@ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", @@ -8628,66 +7993,12 @@ "node": ">= 0.10" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "license": "MIT" }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -8700,36 +8011,6 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -8745,41 +8026,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -8804,22 +8050,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -8829,25 +8059,6 @@ "node": ">=8" } }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -8860,19 +8071,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -8882,23 +8080,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -8924,54 +8105,6 @@ "dev": true, "license": "MIT" }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -8984,103 +8117,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -9102,37 +8138,12 @@ "node": ">=8" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -9275,22 +8286,6 @@ "node": ">=10" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, "node_modules/jwa": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", @@ -10420,91 +9415,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -10584,24 +9494,6 @@ "node": ">= 0.8.0" } }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/p-filter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", @@ -10861,6 +9753,10 @@ "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" }, + "node_modules/pdfservice": { + "resolved": "apps/PdfService", + "link": true + }, "node_modules/pg": { "version": "8.15.6", "resolved": "https://registry.npmjs.org/pg/-/pg-8.15.6.tgz", @@ -11060,16 +9956,6 @@ "node": ">=8" } }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -12124,50 +11010,6 @@ "@babel/runtime": "^7.9.2" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/regexparam": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz", @@ -12189,24 +11031,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -12341,26 +11165,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -12381,41 +11185,6 @@ ], "license": "MIT" }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -12482,55 +11251,6 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "license": "ISC" }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -12971,104 +11691,6 @@ "node": ">=8" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -13891,84 +12513,6 @@ "node": ">= 0.6" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -14024,25 +12568,6 @@ "node": ">= 0.8" } }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -14399,95 +12924,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -14764,6 +13200,7 @@ "packages/db": { "name": "@repo/db", "version": "1.0.0", + "hasInstallScript": true, "license": "ISC", "dependencies": { "@prisma/client": "^6.7.0", @@ -14779,6 +13216,7 @@ "packages/eslint-config": { "name": "@repo/eslint-config", "version": "0.0.0", + "extraneous": true, "devDependencies": { "@eslint/js": "^9.26.0", "@next/eslint-plugin-next": "^15.3.0", diff --git a/package.json b/package.json index e3a33f8..6f04a5e 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "db:generate": "prisma generate --schema=packages/db/prisma/schema.prisma", "db:migrate": "dotenv -e packages/db/.env -- prisma migrate dev --schema=packages/db/prisma/schema.prisma", "db:seed": "prisma db seed --schema=packages/db/prisma/schema.prisma", - "setup:env": "shx cp packages/db/prisma/.env.example packages/db/prisma/.env && shx cp apps/Frontend/.env.example apps/Frontend/.env && shx cp apps/Backend/.env.example apps/Backend/.env" + "setup:env": "shx cp packages/db/prisma/.env.example packages/db/prisma/.env && shx cp apps/Frontend/.env.example apps/Frontend/.env && shx cp apps/Backend/.env.example apps/Backend/.env", + "postinstall": "cd apps/pdfservice && npm run postinstall" }, "prisma": { "seed": "ts-node packages/db/prisma/seed.ts" diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md deleted file mode 100644 index 8b42d90..0000000 --- a/packages/eslint-config/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@turbo/eslint-config` - -Collection of internal eslint configurations. diff --git a/packages/eslint-config/base.js b/packages/eslint-config/base.js deleted file mode 100644 index 31f5f43..0000000 --- a/packages/eslint-config/base.js +++ /dev/null @@ -1,32 +0,0 @@ -import js from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import turboPlugin from "eslint-plugin-turbo"; -import tseslint from "typescript-eslint"; -import onlyWarn from "eslint-plugin-only-warn"; - -/** - * A shared ESLint configuration for the repository. - * - * @type {import("eslint").Linter.Config} - * */ -export const config = [ - js.configs.recommended, - eslintConfigPrettier, - ...tseslint.configs.recommended, - { - plugins: { - turbo: turboPlugin, - }, - rules: { - "turbo/no-undeclared-env-vars": "warn", - }, - }, - { - plugins: { - onlyWarn, - }, - }, - { - ignores: ["dist/**"], - }, -]; diff --git a/packages/eslint-config/next.js b/packages/eslint-config/next.js deleted file mode 100644 index 1997af7..0000000 --- a/packages/eslint-config/next.js +++ /dev/null @@ -1,49 +0,0 @@ -import js from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import tseslint from "typescript-eslint"; -import pluginReactHooks from "eslint-plugin-react-hooks"; -import pluginReact from "eslint-plugin-react"; -import globals from "globals"; -import pluginNext from "@next/eslint-plugin-next"; -import { config as baseConfig } from "./base.js"; - -/** - * A custom ESLint configuration for libraries that use Next.js. - * - * @type {import("eslint").Linter.Config} - * */ -export const nextJsConfig = [ - ...baseConfig, - js.configs.recommended, - eslintConfigPrettier, - ...tseslint.configs.recommended, - { - ...pluginReact.configs.flat.recommended, - languageOptions: { - ...pluginReact.configs.flat.recommended.languageOptions, - globals: { - ...globals.serviceworker, - }, - }, - }, - { - plugins: { - "@next/next": pluginNext, - }, - rules: { - ...pluginNext.configs.recommended.rules, - ...pluginNext.configs["core-web-vitals"].rules, - }, - }, - { - plugins: { - "react-hooks": pluginReactHooks, - }, - settings: { react: { version: "detect" } }, - rules: { - ...pluginReactHooks.configs.recommended.rules, - // React scope no longer necessary with new JSX transform. - "react/react-in-jsx-scope": "off", - }, - }, -]; diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json deleted file mode 100644 index d4f9c5c..0000000 --- a/packages/eslint-config/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@repo/eslint-config", - "version": "0.0.0", - "type": "module", - "private": true, - "exports": { - "./base": "./base.js", - "./next-js": "./next.js", - "./react-internal": "./react-internal.js" - }, - "devDependencies": { - "@eslint/js": "^9.26.0", - "@next/eslint-plugin-next": "^15.3.0", - "eslint": "^9.26.0", - "eslint-config-prettier": "^10.1.1", - "eslint-plugin-only-warn": "^1.1.0", - "eslint-plugin-react": "^7.37.4", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-turbo": "^2.5.0", - "globals": "^16.0.0", - "typescript": "^5.8.2", - "typescript-eslint": "^8.31.0" - } -} diff --git a/packages/eslint-config/react-internal.js b/packages/eslint-config/react-internal.js deleted file mode 100644 index 0cc8b1d..0000000 --- a/packages/eslint-config/react-internal.js +++ /dev/null @@ -1,39 +0,0 @@ -import js from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import tseslint from "typescript-eslint"; -import pluginReactHooks from "eslint-plugin-react-hooks"; -import pluginReact from "eslint-plugin-react"; -import globals from "globals"; -import { config as baseConfig } from "./base.js"; - -/** - * A custom ESLint configuration for libraries that use React. - * - * @type {import("eslint").Linter.Config} */ -export const config = [ - ...baseConfig, - js.configs.recommended, - eslintConfigPrettier, - ...tseslint.configs.recommended, - pluginReact.configs.flat.recommended, - { - languageOptions: { - ...pluginReact.configs.flat.recommended.languageOptions, - globals: { - ...globals.serviceworker, - ...globals.browser, - }, - }, - }, - { - plugins: { - "react-hooks": pluginReactHooks, - }, - settings: { react: { version: "detect" } }, - rules: { - ...pluginReactHooks.configs.recommended.rules, - // React scope no longer necessary with new JSX transform. - "react/react-in-jsx-scope": "off", - }, - }, -];