From 31d794ed599e14596591f9874874c8446151528a Mon Sep 17 00:00:00 2001 From: Luke Morales Date: Fri, 29 Mar 2024 13:25:15 -0300 Subject: [PATCH] feat: Add support for `experimental.typedRoutes` (#15) * literal routes * update dependencies * lint files * integrate with Next `typedRoutes` * update docs * generate changeset * rename type * update lockfile * update ci actions * remove initial cache from ci script --- .changeset/fuzzy-parrots-glow.md | 7 +++ .github/workflows/ci.yml | 11 ++-- .github/workflows/release.yml | 8 +-- .github/workflows/tests.yml | 8 +-- README.md | 4 +- bun.lockb | Bin 303092 -> 317036 bytes package.json | 16 ++--- src/convert-url-search-params-to-object.ts | 1 + src/create-navigation-config.ts | 69 ++++++++++++--------- src/make-route-builder.spec.ts | 1 - src/make-route-builder.ts | 50 +++++++++++---- src/test-utils.ts | 2 +- 12 files changed, 108 insertions(+), 69 deletions(-) create mode 100644 .changeset/fuzzy-parrots-glow.md diff --git a/.changeset/fuzzy-parrots-glow.md b/.changeset/fuzzy-parrots-glow.md new file mode 100644 index 0000000..78ff803 --- /dev/null +++ b/.changeset/fuzzy-parrots-glow.md @@ -0,0 +1,7 @@ +--- +"next-safe-navigation": minor +--- + +Add support for `experimental.typedRoutes` + +You may now enable `experimental.typedRoutes` in `next.config.js` to have a better and safer experience with autocomplete when defining your routes diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ba7c60..b8a94e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,14 +25,11 @@ jobs: - name: โ™ป๏ธ Cache node_modules uses: actions/cache@v4 - id: bun-cache + id: cache with: path: "**/node_modules" key: ${{ runner.os }}-node-${{ hashFiles('**/bun.lockb') }} - restore-keys: | - ${{ runner.os }}-node- - if: steps.bun-cache.outputs.cache-hit != 'true' - run: bun install --frozen-lockfile lint-package: @@ -62,7 +59,7 @@ jobs: key: ${{ matrix.os }}-eslint-${{ hashFiles('**/*.ts', 'package.json', 'tsconfig.json') }} - name: ๐Ÿ“ฆ Install dependencies - if: steps.bun-cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' run: bun install --frozen-lockfile - name: ๐Ÿšจ Lint files @@ -88,7 +85,7 @@ jobs: key: ${{ runner.os }}-node-${{ hashFiles('**/bun.lockb') }} - name: ๐Ÿ“ฆ Install dependencies - if: steps.bun-cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' run: bun install --frozen-lockfile - name: ๐Ÿงช Run tests @@ -119,7 +116,7 @@ jobs: key: ${{ runner.os }}-node-${{ hashFiles('**/bun.lockb') }} - name: ๐Ÿ“ฆ Install dependencies - if: steps.bun-cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' run: bun install --frozen-lockfile - name: ๐Ÿ—๏ธ Build package diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 647c51c..b83721f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,14 +30,14 @@ jobs: - name: โ™ป๏ธ Cache node_modules uses: actions/cache@v4 - id: bun-cache + id: cache with: path: "**/node_modules" key: ${{ runner.os }}-node-${{ hashFiles('**/bun.lockb') }} restore-keys: | ${{ runner.os }}-node- - if: steps.bun-cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' - run: bun install --frozen-lockfile build: @@ -54,7 +54,7 @@ jobs: bun-version: latest - name: ๐Ÿ“ฆ Install dependencies - if: steps.bun-cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' run: bun install --frozen-lockfile - name: ๐Ÿšจ Check for errors @@ -159,7 +159,7 @@ jobs: registry-url: 'https://npm.pkg.github.com' - name: ๐Ÿ“ฆ Install dependencies - if: steps.bun-cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' run: bun install --frozen-lockfile - name: ๐Ÿท๏ธ Overwrite package name with user scope diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 33819b0..981ad54 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -20,14 +20,14 @@ jobs: - name: โ™ป๏ธ Cache node_modules uses: actions/cache@v4 - id: bun-cache + id: cache with: path: "**/node_modules" key: ${{ runner.os }}-node-${{ hashFiles('**/bun.lockb') }} restore-keys: | ${{ runner.os }}-node- - if: steps.bun-cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' - run: bun install --frozen-lockfile tests: @@ -50,7 +50,7 @@ jobs: key: ${{ runner.os }}-node-${{ hashFiles('**/bun.lockb') }} - name: ๐Ÿ“ฆ Install dependencies - if: steps.bun-cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' run: bun install --frozen-lockfile - name: ๐Ÿงช Run tests @@ -81,7 +81,7 @@ jobs: key: ${{ runner.os }}-node-${{ hashFiles('**/bun.lockb') }} - name: ๐Ÿ“ฆ Install dependencies - if: steps.bun-cache.outputs.cache-hit != 'true' + if: steps.cache.outputs.cache-hit != 'true' run: bun install --frozen-lockfile - name: ๐Ÿ—๏ธ Build package diff --git a/README.md b/README.md index deaa289..ad4305e 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,8 @@ npm install next-safe-navigation ## โšก Quick start -> [!WARNING] -> Ensure `experimental.typedRoutes` is disabled in `next.config.js` +> [!TIP] +> Enable `experimental.typedRoutes` in `next.config.js` for a better and safer experience with autocomplete when defining your routes ### Declare your application routes and parameters in a single place ```ts diff --git a/bun.lockb b/bun.lockb index f6b5d3be38feddee2f7c31eed8d6d0d1dd7c610c..4bfbbf52af7b61679b65d4bdea5fe2974a22aceb 100755 GIT binary patch delta 91009 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 Ql1OJ?svAWBezR*aa% zoKRHE5p&M@HlY7?re}F}eeUO}_pAS{uj;G1r(CYS&gnjVy8CpPCirS&#ZLz-%yMYd zyr97N7xCywCEKi7YZcdum#OS2pm=H~U$jd=rMaF?jmVXDZ zEaV>*9A^%E3M4+S6vy$vXFyZnO`sXaC8wkzK^bD>Bc+;eqd*z(_`s1G@?~UHWblx{ zxcEX@9*eZbh2u2Q3E>Ihn)v7u@qw}79JdwvS}3;^NEL@@f)c|}K1yy-ZM23OGz^XB``iII(TS!!Vu)Ae1qh2!SV6& z2}zNfji`*|7YtYnRVYL)jnf1MC)kI_&jF`~O_k+6VBEYN1d%a`u^JS<1_2dlBxe`` zH;GpV$G?>L@VMc~#wElg1V)C(Cq%`Os~qQKE>tkENxp%+)Q-9pnIGXm;z4nN!PJxY zWVuZxW^N>q^ii6)FpVR}RfV4X3y-%Ci;M~4f-5sS#*kBog$Bka3`6yCn#B0<&?N2| z^iZX&t0E0xa>{2UsKfq398rNg=m@G{cz6Oej|+|049BR&$HhcOCdP8yS4)no0sSpt zbzq*%R{`-aWir0h0)_#tf$e~GfHuIIz|t~4uS$B1WIht4$N`c;0cZt`jfqddC~>c0 zg*r4kFghkY1R)e3lo%cv!X?#au^$Sg7Ig=rb5guyd1IMd%KFl>{3E=he0P9Vl94zq z3$_6*z!#AMmOF{3EVDQHkR9%sV8W2$fstH@MiXnV85Vg}mY)RDP)|WQayX(fCs--#CkF<{#6_cgd_su5CVDvM z2R(&A8wWYoA|sQ?eqv}00XGG5@=G&P6C4P>r3tgQ3P}FNL~9Z##u4b@!SgxCMjL!lYpqlDP;r_G{jLrnv6j}GBjdHc<>NZ5FU@JfI}Tw1Jq8!ccnw}GiT;s zd}451V7!K_(42LAYBj0=208W174UMj3N~_Q12A7!90jL=+X*DYn>|>82|#LBS5FzisYC98 zQ^Z{Xl7rgC=5z~IzN(t#|9d-_J6&Z%S_9o$GKaK=rol0C=r1h2()91;>97wg}VwYQ^;^}MB#Oil@mPKpXl2p+Nu{?Qcq0R@dn zY@8+m`%m0?_)0xqw-f7t^+4iYU05hA0%C|$j&^49u$WjZJ(vREWM@cVe9VYwj$781 z@x72!2ZzSQ*=qumgNMA33(kUJQkeO%j#>_RRqz<_O27u-Re;Up3NLhLBN5nxm9z3? z=m$?=%Rmu9}$WM;fM0r|V>LI^bG7`oR&``gJfbcGmG8_k117^W7GUNkJ1~vi7 zvH3t6*;F9)05+C5O_*lnNN~y@9*^!1OyYvT$#K5`Cf^982K9nG*%S#+B+P)0K#D0P zkP3W8i>W2IfKgMySgU~Ks0gHnS|LA`a~p*ICqYky42``HkTPBZl82hOI0}=Iqp_xuqb(sP zj13P-h|_4eWv;B8yw0SY3T5TXqJ`wppUdOFmPI+pg}|~F$)&@Y7YJ4R(8$2Bk61}* zfV6AFpNmYiW@G|~M>_ccT_ag-bAZ%}pF#rH*C=#>t2S zKuj>UtUnI|+hLF#HyX=&C@wrIE)c<>-Kh4A75bXlBo@ z@reoHa7PnAEKw7e#C1tw<}~qG4iSTy$X5~hPC-uoPX?!UZy(RNHgZB@f)nDxqcu2h zL}JW1Il_eBW|ql`6WO5l15y-3!v+n0Hy|AYU4S%82To>_&JNrJ+zLod>^z0};02_* zr5y(N8k|;#F;kf@3goA;dW3-{y9vM=v=?8S#==oMTeX{ZQeY$_yE z78%Lo=`&dmeT!!;{W*)twGL~Sm&cG(&uHI3u7gv>XJp(1BnLJCsh(_-(~5siU==vd zVHK$545NWGye;Okf(wCFz?JhDUkWS_t`J$pe}R(&Soz~Ma2^;H7|U_fA+HR10+3oB z45S^w2KJIkP!b=gkh-ojkmPo958Ow~Nqz=c1$bp4YgxTTOnwBM9Nht=mW61BCE^&% z;hoYRM^w#fS-uEJ4ra*QFB|<&1#@5+!H_avt{`a%>ybZS>S`=y!DI}i7HJJ8E@OtT z0(r>ufi$H1fHaYoEN2b+3cJ+uCo&2v(Erqhk5{mlohfjD#%K+;4GNxmfR!Mj^T*lH+5dT{w=5T*nOEmouCLRzv~q zd-Zm3EAV+hGVB6_wSo0EvU0INYDgs+69QucgCaFtP2{5?GX+w^v_oo=!+Iq7!zMO{ zpX8S2ZDuXL2TmSm!8vlI|5oOCK9CIM0I6l&fYjB8w=sECU|4uC-d+1_XYxHj%AXCS z26O__tnflPIGmhP8HtJzL8Q2To&aoXZT@f>ZEmkGOBQura&|q|;SA?FLwV>+k0{8x$}G zQrEwRo?7x@FUxlpoQ7f!I1NEWye6Jr6d!@pY&Z_A2^@crmD2#J=T<^q8}XO&=Zg36 z5Nr9l!>k1`7Z@2BqB#ssUAGBHLvtMYXer$eq!zb^!D_(8Xc;*?8cxu3+jxx4if=#~ zs&_Ky73hE3Z?p;x3Q(}PonS4Q0i*(Wn@>o>rO6{%ehFv}xi|7tOSFe`cW|0+74unz zN!W1XAv*_7c9NR8MuTz(z^QyrJ}1OiuHQZGKjiOJz#4EANYh$demFSUi;%GwkU~Mb zO^+Kbyr^uGtbO|`4K-Ew>nt-fG*Xio2RDM_hm$v4ej#gaRQO1`;NcE{nywvUY}dqr4Y#U?rMDr?q0M%#yngvR60oDdhtE+6G77aAU^d4vukg9%Zw)L`z!U1msoy-8P*A=t_^(ZdqM z<1}$Mw-1lTrN%LE8u*#_nS!0m)I<+Os?5Kzlw?cq*> zCN7rknB0tqtiUkn$xslG96k7mIjDHd7Oh~Q3FMXJe9ytj-b6Wndmzmag{-#$Cf9=C z)G4-TJO@$?tOwFu&VI%WWCCeSV}Nyl&`E|uViM@4hkNy$Ehgd%=D>e^@t5`GcZIil z+2g@{`{oaYPL`(Ir&a4{u)U9EQ-ktHM&8?ZrgL$ktx&%e7OCP-#jIC|AyIP-82#0F-5p3(kmcLT{(Cr>Oj;)Nzn)Ga? z^`ZO1?mF*;EpnvPoSj+fy!&dI!;?EXrf7h_8fl%IVZBze* zH%S4%D<7?3;C=hkuCNvUS&vf6RnK0#`mJM*d*Q67RfgH!%gilX^SIrCJ3B9Z9Vr+$ zo@V^$)!u4{Y84l5pVipapcWtFdE$lNf_*E_%uiYpaWOozN#Asv+!k(Hxp2Y0R;|wG zVkbf1tw+A-uzRhk=`Zfn+!|mmpO)?PX_&f8B5jIZf z^r}MUa24OpkmEXoDTyf-84CHHYW_ZiEg&?LvRE6jETttD0oGJofL{RS3Z@YJR4V== zSbH!dDQ8tBV}^pCyNVwI<_R4qm^-WZLttJ~IdhcbN^zVI7<0m>l;G1+tyoe@NNcI) zKSS3VIs?h3sx*$SQn^eg6+aq`tZ)LDVqa+?%}cF#URucaQu7UrInEKfQYhzY48q)` zjG4wlS}Qew9ztj2C@sJTg&{APv{oxTc)_Q&nvdZ*ZU}S+f_ZZle+`WMD=ic{s}y!7 zf=L@SKfr|J8bhd%il>?gX%HTVu%ncdI@c7_vpX2;k3nGAL>N5%K{x zWd)OVYJL9;#VE1Eg4IE~GWDZsN=tyl9hl)7#;` z(A2Ri{{(qx@TGPs>QoR+RBFB_)}H1N8VcqURD2p3nL&J{suXz@gnVSN$JvR>83}$a zDn1U3n$Ci4BN!Dhq(R|d$T=~X7%=BbtRIzv`BPV85Gp3cuVP;%A(4JNHBL%DWWP1KJIG8y2?VDyV~>zbWYG2V39Hx3>@tQFGpkEp$aQuAQYlRNEN}y zL(S(xNb!hfqHB#TgnS5nEI6(ugz(x$B}{8ymS&;pEl8U|ih00sLg9Hk;ZPngq;_a& zI;bjZmk|`aklD&kND1T1R^zz7$o?-OoG^`sw2z)NWzpYcJ#?8bi!+@Ri6uso{M z^~#g+U+UXUS;Civ@ZSv>TmRWGa%?c9{(n|x zz7tXvq?pYdbx&=KQ3D|*g(o9y<)8rZsi_T@Ow8fbnu1BJS~ zsKasIQfe?#hniYm53T6Z9&S7Q+JMp}uK55Zi8bd?8hWv^W~GFz$mUSO>yJAVCC zilz2KT7a6r1R)j0UIo{A2d!1})+)ZU%&-^0joDz-5HRSDfZ-olA(oMMNP0ndMGc z`&vtu(~%kDMKBqp=Dl55Z%RR;SnndF4Z_~i zT*wEEXfBuxR`Z+C0~jt^Bhk>GU~)9JQYqT21Rrb#V=%{=5W~jr1*2ACW5C(sCzuZy zM!`#^@OKr`PO6pX;cH95^rQ!G>&6_%_Kg7?4CaB%CPJp*Y79d0!%JiP2#mFyHW61S z+A^zHF~+zHX~Am6C3hh|SgouK3+_U}Ku=>zAQL+rRYZ?ar<9U*p#Yg-7lOIDU^HMx zLZOFB`4!Ax>Q-Nzw5VamQUFYs85)LWUIn9O;*8N;rKqD8d_vXyK;)(>Q2-NRzFInX zT!!#pHJ8VR!vcqPw}D_(19lV4{6%2YEa}k1-;;Hv1PWPe6zT{a8{$wfs)%*+QZVXd zlhLgRWRM{!H+|VsDX{i}smeoP)>_C9S1bHlOa3iDGdfGQXfb{QMsdQ9 zS5?}S3?@du4;b^ECd7QOE+ysOf>Am2M;n#0CYnJ(?`ez#B2RWZ9Sk9tQbsU;?`j0% zDE0GiIg?WGb9FUnC!Jjq+G$%zb>)CjKOyijF<*hvq(FXzm^I>p{E#MvBC@^U6Rqag zLr8NM1B`CI2S)RQ6|dSsJKQw*eZZ(IrGeyUgP{lHoR`6Lh7SEN&$0j&A5y}wbSV~f z6w-#P`FjweF>-MiZ`S{)7QL4YCKqq1;&*{jPQ)BS*w{zNAE8$E#c1Ko=;gtmLy8)V z0rpVw?w#27ih=Y{ndX8aHl$-u6$GPn>@oF2A3z~V4Ftaeb{N_KDa{+qzc#M)Ej}{J zmdhqxbw_#-7&V;j7dc=wY*L>pACQhBM_I3%G_KD*jgg?nNFm4117n8$TC0?orA)pq z9(-*-HZ(Ab4wwkmhgFY$zXgVjsE`KHt~)5l#~1@0HcWqo0z&5y|wjGOM8K_ULYSgfpr(s-941Qk!mma9`Q7S z7Q1Yy2R{}mW`?5vBv^A8l}@XCF&I2Y73TX?d{BTk(h$!DI~ z?<@FBQu88&6xHw!?Y{)Z41p;d^g|CyJ5LN!GzRPtp9{vq!yMydh^Ep)!1}BW7_&#a za55OPNBwdM44r|TnIlzv!vQ7Z+C!xr3)WUZoG1??)mf_5bRau)GT(-Rp`BD3FEB?3 z3MQ#)rNJQTA8gmk0Z2((t5QU&skD}yM2f1%bjBgTe=s{nqY-fJ8W;rLQghdG9jf_Bk&zj0L)7&fcRC^4ieI)s}+NTg#77h{#+1#)(JYvH{Ll|+XpoM zv0xNM7^+DsMQ*T=KSRy`fRN32G)6ffME0E*k)rNn2aA_rtjRPuZ8U6}p*ygQO#!38 z#iR>&HP8rY8EW1fK2TI}(rbPPFbZ_MxMAxbA1e6FRPz@hqzdr<7UOCh#+thqv{9d3YD~GDpQHkI4TYg5z;c%eC2S~QY^k$ z4g$c~cx58hjWY80k)nDrE zPsOhV!^#Am`FvMn5SGzA!qqrNYl3FuDll4ZCHMGuU|1w&)-skggzZnO!Pux_ZdQB* z)&V&UDD3cTK7D$&V}0qx)ovJDbP-WF3=akKqKwj(w*d_285-t^D#epwLfU*aUp0!?ls%*UI%@q;R&1e*;xVl*W)^f;S(*_69^6 z-U&j%SOC$aSS~ZfB*w02gkZ8z&D)MF3Byp8av)fHX^d7PMXkUX%~vTOfyD{F(>#rn zSayifmkYpLS>0H@E`qfcOc5njMrnJ_4@P@}VYWMZC^AL~X^U};ga9Mn*@HJ3tqo(E zG#$ZcO0aYG99hSv*Ts^Y6vySqu!>pEj$l;IP;zPx3ibi>6ny)6@N)7G<3s^Vk*vxA`f!wF}r*TNp z0)m%EEFfFJ+A<61rcabhTSn1%qTsVy&8JRe?!XY@>;M>SMcMKg6F2N7GYHmRq=zsSlek=-X!bL zmpI&iml=y0_o>>okIsve!Q5e6iW0@ase;LRHE%pkzQhqS54sWwLJqt)V%PXRO~^-% zf>hSh(t_V|6>pHnjIdWr4=@@!R^2c#>UgXkk6n#HJS7$UQoaToC={&sP((}@(l)9U zjb;e>8`a7IGqCAN@~sf8S1Z3l;7;`Y*zElX395U(!5y$#s(1{E8fl& zOtz?bmrRc9CpDumSH;f)qaehtgI(%arjU;;2D91Cb~(Cbd+$go$u~NdO#*W!xpKEQ zrFbO@`MGLk%lR~3rsF(~k?@g9(E4T0(~v4DZ-BO9hjC zYCe1^i%WCqNV^e?f=62X6i=24`N-n7jEx1R6-F#sW^f$K^j$DkfZnz&muo|wR)zqu z_L4Cww-fANBT{w+$F+eDD<*Djx`MS83NCw?u0X0aI?#k8XIO2H>j%}1}ql^~Q> z^z9bYTVQ0c6uP65_72-Lc9p!{=t*}&N+GD9x9n=>V2N~gI#05Jf9B-3KhYi_^h4{Nkun9hKdrcOy6!l6~XF@%F9b2N?HtrgM^s}&8_3HgWB%8~1&J;B|B z-;0!^lne7r@oJrrc0|qFtY^UiPq3s$fYDNnDV&3~9gGTKDQ>M&yjU-!9aSqkZa_px zuQcnCijdT_gEigAnuMiux{6N$WAl*a%PBB#Lk3Hi7e_1nby5H~Ierd41x z7VHEyG^b=C!vX9#nDjy|nJ&MXD>+T7_+T(v&&o+RL(gP}bMqFQ*|)G0WJT$nV-8q* z;AN=RJbSIkjT^9>M3FT6tj)9VAUJdYJa# z%RJL-17Bkwiy>)xE4uCze9o&)XFy1v>Sa}Q+ArjvS1Ts&7fddw74P>8J{Q!y?*X~L zgv>cA(^X*qR#5pEQjOr7=b`k;!*mx4E_(2Dk#a;8=!}Uf)01H8f2&Y=P%ycuRxUb- zDg@sP9;Tm=qF^Gwsz|#qZP8s13HcXskAH}bE_;_~cvyQx#nNOt2&@$f8c7A^iy+0L z!$STgHQ)LO>lh4@yGk+Yh~RTsUEu(PG;#(gL8WFYu;kcCM}l%kh5XBEWz38TsW0j#^EBi8nO$x#){=O{1= zaQ6PR8%$m#pnE6hgw1uX#uv2ng4Vr0GGl978W_cabX?|-f%$;3R+|+v9rg*Vi5!taFid3s%UMDn+l0g3mp*LcA!X-NSVVbktbsrAJxe zlGK%0hdLugjbW>Cn#|at;}qqBj@4Y|GV2614PDs^jCAlA?|-Agn03-!2BR)vHmhCH zu7K1F1Hqa~HfgQQ08@d%D;$76fKl{H>!{N9Do!^-L9Pcs6e%{O*ufQRt_o?7)V$)F zHZz%Zl^GUYT!2M`Q6)Ik;Vi>lXVV4S$Rw500}R)?%{`Q3k#d%<)bf$S?Fuf}D&0U; zLVAj)F%qpMUnl@(gGp7os+?XkDVAQV&=KHS3AkGq@uG<7gYlUwg5H@1 zMirnbZn(z4&W^dPee=PnW_X3^Rr*EAj@Akj3JjO|=&xl+c_J609Ch818CxbTU$T=K z#&V{sF$m31n8Spg`%=jN>f>g`;g?eIse(^CeCQ!m;L|}y9BieB&;TDFV#4viY6eiE zGd?86*_JcH#}6MW-2)$b{wGM~(NgJ=P_X}2Gnr^Fe8^gFd?;5ReCQ!0PA-tXpUnFM z4e=Qy^T9xR2IE8d1M#8f?~v>S<3ssEXz4IUA`%~JRxCbbI36E*bdd@qNK%Hx6J<_F ze7MYY(NH+>t$}d%Th(MGwBzt07gF${Cj}oWIbOyIGEM~2ql=Vp5`ldo zhmhoH_>g=$eqIwGB}$MSnuSjpd=^SlhUJi6FZ2IBWcB~8Ve0cua)r8R0ogHG z{{I{0`v3O~{vS9-4NN|XFEkdX-Z3250xH5iUI6`^dxH&e~VNQJDv3CA{oHOBsp*&XoSyWeCW|d9{i0Y)km`XR+6Lt zDM5mFlHh-a)bfvVxleLALbCH&=Kl>VAWvyzHl*=4p;9tZSDMRQ7pcNZkdvyij8)`( ze}^=Ste~f!sv+moMG{%#OEM*D${7f$Ky8^5mI7}8BnKJ+No7Z0WF)zR%yp4OP4I=V zsjMfY{7$mm*+8EENJt8mobm6F9CMTPgk;DQNOH9-*F_Swl=HQg^@NmcBl9)}^86zK z1yKiC@pni);VbKPkwjf&xh_)h^_JzjNTNQnypItQ2Ey3i7Q&3*#>vJ|1(F09BxfO{ zWU$N$sm&T0!(_QGQq{4LQy;|x8vqvoDJqr#@sC?dUu2}@G8zo(gH>{d)p7=1B+(jK zPDmB32a@5d`%#-mT4FEza?XljQ4?5-$NkTd76v_Jx}EfFJycz%Lystdzlkb@`H>Y zWjP^L_(jHVGX4bOA6JYoRPk>h*)s&8{K=(|pbVvDfeBDr5rFu|RirO6Qh_Sql;1*@ z6OutIAc<&NeOXRO6*QDNAtmi(PDuIbhy3aJJ0!h5 z^pvHEoR1;KpAs~-&OplOB4cwo;7<892 z5R&0uat41{{=b1_s*h|>7p3?MkQIdFd0(09Vr9rl6<9%t7Kd)>sKpKKV?`00d@U)Il~4Z zwT%8O537Qdoyka0#d~A{A!XPLB+-7EA0UEF24vQ!t#0vYeOE1ca{XQB!gk--akX}|B$=r_gw3JeUGBgHKOC3oeBel>SoPw|;kR0eF>vfUjU1T{S zaX%S*%JRR%X5^{AoG}1Mj`Woa=pq>$KyuO71j`2bsgbi0N-+zh;zNOCHcIBvGLHq) z+j%mO9$hp6PnG3_WG79==|HlV4kR~b8Oh5A64Fr40n$TA8AKpCxEM%=vSnNXBu7`u zd=-!$LQ1Z~7b?F|mj7p@Vf!N^d6l`l0$oB`CcG7a6s1o z9a239wOw}*8EZjs7f37e6B%F22L2mTMemT09D6V02e}*}_26GXidjQ=Nfj%}TRh3y z#Qy}TU}+Sjii~CCWi*iu5|TrvGM1O+gjCL4=7jJmnX4=-s>q7}36dl9+n!XB6_9uh zxx6k?C)Aepb%Dei$oUARZL6UyAS4eP$()c3H0QnKI5-A_z&b7+=WS6+kMu5=i^jR#N^4q}I@1 z4W);W9Na16ZW;H=`ahA%&>Kl5PB8h)JL1D_)s?n<3qy`^3V17KiA{`SFX!x zGXHZu{?GOJKiA{ZeL3ye9cTsq4@i5Z?zK4OBThwhuf<7DoL;eXuf<7Dobvy3J^s)2 z_&?X<|6GsjUz7iHJuWSd|6GsjUW?PVL7cXef3C-=H*iylqbr?WYvK#NJN}L&TW{me{lcpK8dcqY_S|juHc#x{ zSbcHuF20nUa-e)IpTRpA($@FX*P4sNJf*TZO`yHbctB&l1GWyCyV zW8dEw*4K#LSwVgD)(}oSM|FHg9lB##Q*6~r@^73ow5wX_dr(_jJ<#aeoL|$b_wqCC zyX{${Me4PECk1ti_L}W9$f~Pb!t(YzB11+fE^It9=c!`ojqMqglph-&d$WG?zOh+7 z91V7PTbv3+n7W{jUaj>#s4FgOEqPExT4fu3ZGF+Njik+J4sGrq+6JOQTS=={L91!2 zU$&vRm1*CQwsJdtt(_RyPAZ%2itqUw$Ltxqxqg1i&>z?H{4!_X?b-BWzpr=rHrG03 z$Byy6UgvbryDJ<|y}@kiK@<>~%Y>&+>{! zaj%S$!ZTtoL{$6LKPR)|_Bx7Fc6EF{tsK(rtF7%Zi_0UU>R0O)9pupeMMluLDlx!8(&mx&z#m#Sk#8btqgy~5)kHs(pdF@z8LF0rD!nZIddy|KDOMk2gU4Ck(VRmQd4skw(Wj?pl8P%4$ z&KJMxvcJ=!AAc?A9+mJ|QOCWg%u0*SzC$fetW2ohY{ZkFBgTcMoj3bh?di0NY2B7R z+2d5^9hD&PFcX zX?wYu`eC;3{afoQEhspgS?l?|sizvbty!DC>7ezR-4+ildNuN>^3?w4or6!-m2R@9 zXv(w&M>aW?dmosaN531PohiQJb7r_pTU6`YT;Hj#Vpemh+FztC{zL00db2GmryU0R z$_Ces&i8r+btxJfZLO)gKIiF{KE^KPqQ8gqA2`3r^+?YJf30_3dppGX^4Kav=bSs6 zKKX2;h4a=dC^ftJWQUPAkLWn1{f#LaZ=(lR4Jx$SwV}<(uBy-9i_#PB4w(4itI_%O z@9Qs(s{7RD`@NdswMI0)TfgTbs}6k@y}bL^?jzp6M?{#;Yy0%`mUS_ew5_FY9P|_| zI~a7PpDxh0zZcaZKSr0b;%C*{x!Xv*U_0Hy=K9!xrY_sEtb}%LmaQ%9wQadUj{(CA zFD3W%Ke^Pu-qW4luI_vXWnt3&liaEVzdZ^4w!sdL2FB%q{#v6zqd4ocKQ6y~Y^}6Q zSJvP?ll|k%6gGZvePwid$I=7tp3JykocjL9b&bu@b=`Ak4Y^ZrqIALL8k;Pab$B@T zsE3X1j7>U*d+Qpm(I&!a>|!g`;YLp;cB?kI^uDgodzikRIz4Rch0p0dO08_OIv#|+D^5PQ9=3F2@8`m_nQugztr$q<@syNRC+RX`gDsy-M>||em38A zOrxMju0cktr*A$u=f}luYg*QAv-)W4om!1Y`hHn7!fn}dSfbMxb#Y&$ThVCi{=ia?TyGuZz|8Wo-}bZSU=2w8wGl!mNhA?$whMXBLzizF?vI z?H!Lt%@!BACYHJF3L^&i36B(DKYX;0QG*Lgv(4{QE4aOXG~7Am?&$zwaOAYmkp2e_ z**2JIYt}p2#d*w8+nL>8i@%D)B0h{$y>CBpa~bp8uN73I#6zQ-!H@xNzsOapB1w&+*x?_N3mVGg5)}yz#jp=jcxxM};S8g{6a@etY zQO32z0}JgVmX}_x*bp3(9GQ7<$Lg`Zd7dwi&f0%JeZsZ#mj``)+xKp>4*j|p#Yu*Z zB#-e6oh6Uag!xl0uH;>=8ueN;?rN>ZRZHDd3?DPI%khY;HMNXtxjHU#b3J1o++u5$ zU(I$n`kzoNGBsYf!rd!v?@;T<)62LgmDol52bGw`*oDRKz0|nt&U^Eh?R|aD-T6qs zX4Bil*NH_2As@y(J7%^f;X|juvTL?F%pLn`&7q`r=a(NgZFm=dE5O|JedpsR>d{Zb z7~m&)Qhzke#K3QJ^|x;Rj46=>9TU^VBx5e*hO*-NFUQCZoz*Is&el0+KfB5&hiR{=3=(lR?X`+ zieynXOw%Js*RaV7Uqf5J%;wMD_X>Di({0d!lXt9r2VF{EwEEiaksB=s?^svmQdi64 zSGrXGbalzudH1RoG_J8=fJede#y?+tc$j4&*=6q!!Mb)E`ShD&5qvaa*7o3?Wi`pa zK16r%UsgS`W{0*`Zw8+apRoH_<<gYdS0I-ft2zp>W&A6PF75oP5=F<711R z`8tL}bPacC_qOK}|Gh^ZtZO=H+Thi-YRy>PTQO@!(+&ed-D(x{*3o}WzCPT}dSoY& z?^d@{w$lc_OzcOCu&gd-BeOSk&s|18uc=*%HR3W~gU-4q<52PRIIV;&Qek54WUYiv z)*)h2iG;;KxL8;s;f%ddLxk8cMO%t9t_8_ZalDQM0xnX#p(CN`8YMOxZ_t@V7pEXe zG+z3~8+4LI(hP~=#0Mp!6iF1ziS85ha}DFf*?)-QIPpb^$XF^E&xx%kY74Rnn81k( zN`o9Uj?O~Q{%+tB_g&EkL1MfB_bo~N8ge-vHN6gL9BiV z^iiC+zC^@ge>5j5rf74q6=w`5_AL>mNVofAIdL0Ay5l!abn`dpOaY@EV`=FFr^l%N znf9+sjkK?IZS$;+JxWg=pWilbS2MQ(?Z*|pvEKKn&C^!~{a0m$G+DgV?q}@t+gnOs z`T4r)G0VM*+DR@ehD2Vk0~=bqDdMs|+7V{)KVJL>3B8#6<8a~=IRC+kNk<1QJmecS zb>+cfSu;)B~qjSHtfuKWJ;;V-jtoq}d*76e?XJM`Pt zCPGI~ovJ31@A6}`WYc=%o#$s<|FGgk(?++7+Ei($X&U<18TX*^6K^GEA6*rDcij03 ze!kUGKQ){k|8h^yZoRV~^|I}{XzSW9pSSu~>$)HB_wY~j?X7=KpRBC`h`)cbD8j1o z(UYSGjq2{Osp!ryhu^J#e9+W0aoyZ~>8zx<(9fp_4XAl(#QBt#k6T}Uv&8m;q5a{b zo%!*u6MOCbmG_1dGkT*BMuaUM+J#enE$3FVg+=b$$J-8O>@b=VR;Kcssa1Lp8Tr=B z=4Rx#?~}5vJzspg^!x1Y7}KAt8gDf{c0{o`ZF^`cex1LhyQk{9SLEJ5;ho{D{iXdn z3ODEVn5pr+o-V{0H(%D{tzFfy7lTh-fBrr9$N6flTo2XF*!fOV%5=ezg;TG(`=AeU1N0A{siHw&b|NONrmwzsy112Tvjd>5+)rPdE(Z3K%691s?eRaf zGez_M>{v_M#QyqypQ+n8?@mq)r|vmYrrDxPbLUhsdzO;--fv!_UsfNJIVTohuCTq; z&V>O7Lf@Tkv+eA~Z(m)Po{uo|i+VpE?CUVYyOpKekWpWoSqQdc z46|N2Xl@+b;=qXm`=gG>gY^4gu2_4Z)Jn4f&`utxuNB2Yrp<#k+4*y~{iR$^9O$;J z_msl3`%kx5yy{uq!#X=}P+@wD*e01VXTN>)u(MrT^WnmpN2i>rc;jld4`bRIZ>d&k z=CASH@3R$=O}s4Krmc9Gx!Pb$_#}%7%O)PayDZb8+@8f3vLj|VRf>*qJUBGD%=1sr zW4pAk<~j9c@`K+EpHD9M+%Tza^{YF&U#)d`g~!uMoESY2-nSU6@BKnCb+FVn>p{@I z{zJQ1bPJTU=SaIaP`~UF@j26u8;p0UeluUED37o0<~%L$uFy57%}9?Ut$!ZN+InY% zPodw!`-iXo{+iY0;*|Z}S}m(Ex63?_B^!(GT`U$IUXCA8de3+I{~StY#WFD~NUGK$ z5Y-k3=~uf#^bVG^MWo#ntgl@qeq-8q4Zm>R@P1HTv3hVt_`{z9H>_ zKeQV}K2*|Xhd>(@s$X`KxQA)GXwVr`KJOdfcFNba-|o!0I9FZw=kiY*dNvnVzNl*6 z|K+!wpLy&rM9Xmu{yInlZv;)JSwGY?V=88$-QdzSh(BAn&yGv{sA!+kS zn;xNGc8_?2X`{oTt^ZYjR_@acUB`~CH+UYdAiOZ|LgqZFtpZ3~uweR)39!}ov zr=7iJW_oS(g0(?uAzAYd&K<=$Ju&$~r_sTl|OisOTLnX^Tj^DO$hmaq%0|W<)_d zAVyz%Qd}1!l~qSWYZ|MsJuL>rO4>K1J@AM2jK~j@wAnGxMh(+1TOjUX+Agus)`-*B zo)^R8q_V$ATkwarP_&Gfv^m3|9UHG-_L6v-X$QtZYoDO6y&@(hNM+69vA$K`-M!C) z!s+L}opU{F_5D}#Vp~4OVSebRQUGB+|csuwZgHd8)vNRI?_8fbYx6auE(lx zsfG8pZ>1mD*B*s#Xq^KZok(gt>Y-QJf?B&mU;Slu-@|A0yVD*oLmOyrIh^g4aP8<2 ztDY;a)S6W-Z_fImxtGJ6uYU5bRKy{J-Zw>qx+aTyG4#2uXX6w2MdRm%S@KXWDVYq4gc9KL_vYy8nJ@lf%6#Sc}KjIlCVHFk^1< z$zc{zPg}XUI+m|j-DRwqUz2go!uP+=^^W&VjEGNr6ngYlUT%KhSOa7Aqkx8MaT0eJ zfo083swhRf# zEmix9!_G0^IWZ0*dSlT}tslCcR34hUbZfrJzHpEJ>v}9t@ZPp_#D$ed?HWDb`taA2 z2`!^1p4k3;^{nZw%;)Z1+RWSIzJ)Ir_pb1C+8LMVXR%e=(eKV{?f%rY>pru2%B(}Z zPRtl?|8(z!$)abPK{H(^igh!Wy*K>z!7qN!M}MSlYuGCA$Jc8CXAXArOzAlJ?!-4& z&ZVR~2QTUS-Lc2dq}880Y<|0amtFEQ8{^9sRgBCJP6_v&q2t6aUAv=f=f6v^4*XL3 zdZPw6c5O(ud-UvCME;HH{aS1^oE5RVd#zcmzI2G$Xz^ubqs+Zs*KO=p`Sh3(mz_e_ zJMRc|?v;P%kdEQsx`zD|k58Mt|J04*S>p>no{b5ckr8le(2k|A+AgVC{>!34KkHxZ zvANXl$Oa#?>(zhpsstaS#e&;^Qn-m4e)GOuSAlYP^8>f!Vo?K`jNm~vEi zL05{;)Aiq?OX*hiW|?~0?~HG|m7hN0`hONm>el}CA?iY-drdo-&6ql;pkv$j^W$a=Og>>e>aBxAlJ$s6 zs}j#Nj;(aUV@RV#s^XtcgJvII@}hpZIu5^n#rghxGJPce5V5P_C0a7HjVhz-u>bL& zNz1K|eA#%(@@-nI_2>Pr0UxYg-P;E>tP?Qd^N=GR8zXv*BUOXYq;XRDVd&+gx(3I>lAsP%i7X&->0&JzejZ~?pG`5 zY=;SUi;4=n&wN<7=?v?yty(|mkrL+ADly~Htk*MdDHd-vjTx_F*HqW;%$`ocr#j4Z ze!qLgj8KnJQRn6i^F6h`Tzswaql3o$zP@Nd#}!K~_B}7UXR%`L9)}^jt}XfY@!7DT zqcQy)=6~_LRHK@XVKZ@SrvC7j6ZzR}XP83k@@)Nm!(80Mv^i60Sr+uQ6~%BtDm!o* zEvSEJD~pzMB&}I0HsD6h<5ouG)qVe?dPaviFG^Xro6{{KuT9(Ylgn(d-@n0s-_wRo z2cO;DvBB=|4L)D;dbVRk&*0OGnZ&jfwf7*mQ5QvKioe4c*dK`iyj_Je3FB=lj#_?^m+P&T0^`sPa3v!&?Yx`C^lO& z{%vTx4gIG6%-i1JUcSc7Y{!Sv%fEaL%)H=VTV37VVNVyEQrpfocKc>}ZCBetjgBsu zYu>Exl((8?N6YNj@xG?6_jCWces4sbT)vU=$r zoAO_TjSt#gZA+_)pVr+eJbvfa>5APq9Go?(^1Zm(^=~{(#rJM!Agn$n95}jW@`eH9 zjVAQTb8pv-W`w{e@%Ihb+zIF}jZ?I1IV(~H1x3hE2 z?Z28&inQJ`ruX^UH9wYr6dJnTYF4e($+pjiPdWKKuwed@(ex({wTA18&za#O7*5{q zAoM>vZc6;`Lud19Hy&K%bM537uUt)+`#ui4>n5M8+oGFyQQ^x4Sv~rWQN1lwaI5Xj z;-~hNpV+P#>8$K_GbTsJaDCk#-Ep*a+Um-gahBr?re@FBS?ArsrzOcJbJ{2O8SWv{Nl#?t5|RYTPqtWFQ`jv-IPkf#|(J z>K64(Xg4j;*ESTtG3^^@leeuH-pwQTcjvu(KY#GKka6DDYev0QHBL@mdL*^q@dM^v z`{y-i+3J?%#a5NR4m)-xu2Ombj?pk+wPWYS>7Lche!U7Dn`1Gzq1UTABTHvgG_Pu) zS+Z|uKsQdzo(2ET+>bk5^WBH9r`qROw>s)#KCMERq^bSCFR*w}>zv8W{0oye%)S31 zKw}z^5}Ml8#wIFvc2VUzrY$B`E1&)QfTkL~_h|>!Ue~{Y>cs~izKXu>sLrf8@8pV3 zFO0)1XUrYwde*r8!-LU5Z(BH?x;^+=>uOcv;~MSZb8P!t^^0L$iY*W7_}4@XTr3USFEV`HdvQ(wCbf;TR`+Y&oOej| z{;;?6d#6vMoE>}L?Vf$xJhypHze4+&lgEwiw)Vh*1zk;*1J)p}5@OFZ;`VTz5oewa9Oqcj%)# z@5_`~e&+34yC!umHn_9Z@bi}4W)H5m>1Z>{ui=w2GwV(9KGAHzQF@Qn_P2{}f1f(! zvpO?+^VeI}Z$q`2H`AuJunPHe4okOCAi1 z>C5!H#ZA1yw9#{+ZLwTm>mjBtm&#htgZA|w+7_bQ3Q2no+T^6*aSrh+OY5cT*Wdb8 z92^-wCMVQ|^IqH3<4iI4y&!dF-?CedN2K<-*2%Kv%F!o%Tq14y=(YZzAo>Yq& z>s$JI{-Kad0pYJdO(`_|w&Zf(p@B`BCSySs;l1xl{kF9dvsOypJIsf+_z!Ix(R-Do zEh6ovRr+PyiQkwuBMaIAtM#=V#C5Bsvg!rUny%5;dW!*TB<&m09{59xZ$_?_wAl-x zjasW;)>quav|ScKTVtKRwyPMvPAdD0v;}`?{Y1<4k~U{Cv}4!nm+c{*X4-+-(Asa% z*Y*;VHb`a7mOy*w4{dL;;YLZDN80p_`eg&e8%!I$6xtS>^tJuO)J;-Z>t)cs{zE%J zbjy*n=SaIaN5AYK@j26uTaGDnr2osUyNbNKcm{I8q2)h%82e8e>iGSUk)2o*!tWF@mG%DdbszfXLvxoH#Qd0yT2^#sXF_TA+$UAqI~ z97=aP+_rYC^P5Q(n+nNI6TYq5uqE8~FYloqeCpYX*+t<5p+bq#OY zIc;#i;e)PPDs4{wY+Opw{IFHb*^S%;|JUNB=N0l>eY754`ca>gCzWS1^Z9EXEDBdm zsMzrNz8B};ZcO+(u-Z-?yAir}&n{kV*w@KC0NIPl05ZeT#djuHl30%6&L| z{e;v04hB#99O=FxH=t$sb(6Ne+W4%US7X)7YR^Vrt{bf!v#s8(;rEjbAH1$T&sV+E zd2g}Dwg=;Sn=D!NLdS5VuHm+$JbX|6$_VJ~w{71E-}F-{&qfTdZv5`Xi5C8ir!*UJ zpoP-x>Ygg~Z$F;n95c`Fd$yNFf_l4Nzv$ih`tDr0C-4n%E=smb@y8imb#+K6 z3Ji}7QVckEwa?{FflKxZPlo-7zEOo=H-Cmr_(G++^A&s>*u}nG=kxcYZX1oZ%j!#WaQD+P3Ibn zYgDFzd4ph8(Icl_2J6ZO3_bEY^8Ap6pZ5Ij9dDAm_b?1d-Ge}*k%4nzafv(UU1Wc&VFlov&nPo`73L+XfaHA@OmS+ zZiObE6TY0>5*$8nEB~W#S4!T4`?yA2i#o>U>d)B!kFx)OtNH)`|MAl~WrVa#(vXzW zP7A4!N)wS$c0`g9qEu!X3F%=bBN<6%BFQGn-lUM(kiGqH_vd+@mvj2QeJ;QMxxB8g z$K!dwJ@$S+PHGyvbeJna*e<9RM`YC)7JGzKm3Cv3>tSWre#M~&ZR74Adv{vB^2yGf z^KB+*AH2IpWl2w^$nV?!q@5X7Sz_C&%340_X{!H0-$fOPUX~3lkGJUeaO@$J#pklly>KVpQx>(lhKuBlTs~c{ir!(b>+SeBZ{%&|j1x|(6Soi6u~4t;{zcEM z-1m2x$&r^6LUp$7%}N|4*ESJ%hbW(~&hq%P<*Pq$nCBc(n^K$5mKNiTKh$16-mdeaRqVo(7TvB}zNhl$%|(;ON|i5`-7nxO9<>L} z(*3Axv&>;BM>$n57iw)IHJ&*aa%wrLn+j#)Ca~9Hb?#oMe#d0hB)0At7uPZm>aRxX zeCBos*zOR{nIvO=-ye*$W|QdxB$ zizwyd{wDQGBXvJ(bD2}~ilN3|mW_LmT@tHdCo!!PFKf&m-m~`CVoSI1iMNLqI0VgB zAD=W}c+|<_1pgeXi7%UtSkCO`|M;N3_0PGdn>$`MXnJ6!;lM?escXJJ%?p1eHLVY` z*fK6#r4nTOxJ))%d_#SOQ;SJmennO-WcS5t)G4Ul%VpK$ETx=_t9Ke|Z6oyrbH2){ z<)m)9D!a~~lwJ&P=dV&Rp6&W)>%*Y>9G#i1^>=yoFgExRR~T}ApR#(vw}%It=zhO( zY;<^SipR5=D>i5DjqRS0vrBNg=4EYdgf+fdn|lU%_+67N-zm248dn0#vrvCEQqM5& z>zrCa>fYIJsz1{c@$Jk(Yp@=UzprhEmzPjc+3Y#5CJY%8J97S2%h5&;hZ$Vl z)}-id$H&j5y7Dq>ev3;u^8yl1m)ku+=((l1tIpB9hd0=$Wz8z1N=r(cw|p(XWV2;z zC(D*a1HLazxf7~swPi+@-BFLu=^ArtmE1cR8Y%T~ajln1_zEi&C+vR_^=Wrowmw%` z#BDCy-=tn?q+Vxj?r>_}C8+UtWaHjsm&9sVDTG*&zOWDhf2Bn8T#9OS_xqdLP_^h#1k#Dou zyIi(Pmyzw`yRzBdWu5MEYB8zH@5v6n`_h9i!hiopn~;FGnA-X$*OIrM4q6dlv8}9Z zRhv(8Ro{$m z;Pah&&ADL_7f^4y&Z(r`llWoXzs$%vc&^pJ%6{jS;yQdel(=SBOit3#w@;(GyZn$l zv$KBEv8Be3nnhk-lAu`B zvtr{5zZXM1>@^4L^sJu!;LGTygVXd1ceiN~`}66v*<%G?w}va@a`lRwmftdi$Ui<~ z*Zxq-JdhYSK&#iJ<(keT!<#*eR=u&#`Ru{~^*5jT?;lhoxSQ6&@Ftt3nxESIN1q)o ziCI~@!reX?td%O?V>#yXfcuKH94WI+4`jc-d?Lr*h~>HEXqXv;I@_zZAENfW-OUBc zyDAp6UfHGh{Aml#H1A&w^|vfcyn0Bfg_6&Y-DWd#dQVoD)3SH@cqu%-+s0&1!)?6| z*`1Qgn0`6E5Gx2HEM4z%r2d;-~I7|+{+&4 zb=rkx&E1`LVnf0QwQlF0<-|vO%*`>j-qrjCzK_3(;{SRmJ2>b!-%CF7%AM5CoPA-U zaO_6^)qP%!ak5n%x;^ki?L4dK)ZO<|Obce)j+pgAE%w&ziMqp{n(p5&e16_TdFYqm zxM@~P^ajpbfuE?PJoY}4&7)d6kD+B@e!e;x3GE;4do+6R`QeV^g4d0juB9{IsP`eQ zo-cgIOlR=xYXX1(kS0)nh>s!fV=%~HN5AMM_d>9#$%Z%@Bt`+rPw{NZ{0(ZG0rm!?Ob zcRDpIdewT=S#m_D-}Nu~$agUadg}gdOUS4GE$Y9VFfa5L4mx;vgOi4OU5~wQKSv)5 zop|fT$Jv*4>OBLFRhT=?(!SPzV!wL#=7&ojTnPNpPIm!*qVhV*_hX!iuV>ikjek<6 zY_L>&>(pe)&+~aN{KLZbjlP?>tG8qA9v`=kwaZQo=ohZLE=0GXB9+xw^u3xDF?suR z?VK-lQssLsUB2iSz1j2ZwZ`N*%NpJWte(1DMPb&A-j(Ns( zygIc!;or&3Ol8=J%f@X!YM0;2u6y3+#Nko_t3&zNi3-_a{8o-BKH)}r<_*Y`p2&7# zt#ldA$lX(3aH!`M{TCBDUzqwQrlGK4{WFz)y$d#Z`fZ!^Vef*>jf?cw+TCx{rs&}7 zJ4vzr(e3?{$0%p_I$j#sZB^HSxOBaVJkB-Bqh2}>z2`#R*JEyvTVJsDgU=12yh+@n zN23hN%#>O`*6nK=`+39Wuil=n5y7`NcJH;zv&is_rvLsXx%s6d9DfFl2=r|)V81Dk zm`d4tNd9gE^|ySIS(E(Kqi@3qj#ZECt2IGeb3q7RxNc#sQQVPqZuZ5s0*?YU%>!vB8!p5K z?&{>&$)nz7&50Mk<5r$6KD*U^)L8Gx$6iZM^@}+iraEY~(`Nfcfh_{emFGE2f5Y}c zj_Fi!y%2UArH`+Y?W9j~tW+#3-GOZJR95~X$7Vm}Vi%MAxRLx#j+s5<pD5X*Y^P^)Xk-?b{e9$XDw>9gnN>4mw%Hi_3q*ROx95O8K$=e3;|t@*uYVXC)F zKvna5g>CdZ_K)m6%W8dm-RLp>PE|h?o|AqR{3XYhJm)elN6M`Bxon^Ok?!{n3-9Mt z^;rCQQTm^^?&TIoUv5i|9UP`qxTke3Jl57d5p|I)jIE@r7IA9Rqy?LE#%`IlzWIg*IeFEp zpNT(B9bGCHto!I-(PTu?uU3aDKYQzRjypI@Z-Sj|?2!Vc)g2$#pK-b{Dr3J-@mI|H z3Y31*8`<`2EuG1?rOh>hzV~_SpIlqnY`w{gB{`MZ8^4cu^I%ZkjDU`Ln^iPlTy|OE zG03!FYR9iuhs$zQY}R`xjg`OJYN30%;s__qdgPH1->r$e_p?Qdn#LN=-mre4gYS!$ zj*+Gw_i`(zEV47-^5Ko5kMM!tsfR7j>kb=otHZ_J?j|2DRSyliZP#`5woyfTQf;6j zUA#$)_jI#K(BJTVQ1P^*##k5b!nOb&3~%y9DMDvmwD*YaXN`vyR$_zpWOc9S!7XO zIcj_y8+K^>r1{k>D?NTa+~T~2YN2T5)gIIL{Jgay zF!@030F}2ZdMr5k#ay_vWtT|{6-(P_B|EtLX4_7kCjCQu8q)1oa#L^jO}pn0qqBS5 z8WZk3VZiT!^EUaMN$v5?Om~p_(Efjdwfj62&eHi%dF6hjdWO-^o)zC!x{0hj^k<)t#@9zxC|}N!`gZa?eV0$t9xc*nUaa#d;P%S*LcOCQqTp?Yy7r|*dbGS!^_;5r4CW`kT6#Cf=&P}I)a2TAJkC>D)Bgq*KEUrBvyG zZOGgkxT;xJqwv`cvV}L2F1(fPtK?^b^FNE*JU%7dd#ZL&a^jcq-&z|UX&VFQ29-xGPI8MJuy{>8-I@vS=MTFiaZ-_cJavsd%(r&ac8 znr{f!d$_1}yXla7IJUk(9tt01^DvRl!(xWovr#E^L%dAg_BcROd+pkgcY8w3uzS2j9*2>K^gjjb z#Nb|iT;8)??Up%RKPIc4 zh`DuAA!c*`urt9=H)IDoKRKc^)%DJ~eo|x8oSmxV63%>uN!k0Tzq9r7EVGAmdrjRk zZGL#>H`^hjbT775TP?4UW|BGez1uzWC2~ejHyM|o5nZ}6ZQ$vimPhwB-E1+hRmHk^ zJ^Dv}l8whgx>YVD4LNbJS8QCuq^v(>RySrGf4;oq`}fh~-sK2;`D}mPH~*xfp!>S@ zI)l!hYt~}tuhQ{F>irEw~*mz!}S>o|84y2pKie37`mHs!>gn;6} zkqUvsGoK~j>!kJIQ>Rxg4Gg$D{2IN`=0e}rrWR|u4sO@d zyo-ETa?XOHy^0fc4pw|BTWXqh*rcXuO?}YHbE7qPxGf4#_g#!F;|)r`@T+X;?b!9N zT%BR>Rt8)zC7?Ad}wpGXJ_PJEPHv(WYOt{+TYnW%@SuUUQs(Z{ZLh}P3sGi#~`!l4<*PXfly zcIxvy+C~SMYFZue($ZO0^iF=-iB}z#+;_S5C}?K$Nu8fR(9cg#K0D}S6Vtp<<@(UA zs*ajXUzYwXy)y`J`R`D*eoi_&UT3U1XqcvL7jUG*v<$5vR~Id>CCAS$3ftRun&{ii z9#z-Ajeh<5((Z1b#vVJu)~w%^@;10g(|NS5)|6S&Z=XHcw_jYo@#vlUbYV&)o6Nu(kR!e4BjJ5Wkw7Y?pB^8B5x?$xJWn zT5)iZ*E{jIn&KbY?ag-m<`PbAK&!O+Bim+u*x)~$>iQn)iAJjTn&v|KcAyU8nn^;L z-y76dx;?)P=y$E;rQC=sMI(+4F>?-0u?<=NOZ}Ap*HtHeBpN4ezwpC2Ke(%P{ST8@ z2M(pree`_zYE7TXf2KZZwkc$$qW*9E{L%+h`^DZa^{f4t-<`1I$A|u}MJYy!tLHzN zUbpb1AY+Tt%C5(5mh~wr9^zUVGkj{aimLM0%+;N**GG*r8y(Q{em9dp)1-!qAB&LV z%I^OW6}uuQTlfI!!W;coH+fj|rRVl0cU+d3u6EY&y_oF%)J75_93~T7Q-=G;Wq5+hYyqdty5IL!Z~_JBOo4p-(1a!*$odEzuodBh8aG7Dc2yCmdFkoO6yg-BNI z&tgTK8ul3#|Dki{p2pH04W$laKf50b-BB`R$n+@_)T}$&6?alsvvrh6{!b)F|@a{vKn=cD-(;HvXX^}-? zT&T{VyXJ#3He@=VXm#B?t)x}gM?0p>c2W+o?r2=oP`pvO^}|Jn_U0~_IqGG)+Sl{X zjHD7C#O{j|E~bP(91xl*I2WWJbat(gzi`?)-640@_5RNuO};kX;Gp)^z4k-1o(HR* zlmDrF_o8*s(8_t)Pfuj)tXkJFSZ+g3XZqVQ|7}BqS&9Nz;;64^s9FWtt{N)cRW~v; znnah5solKE=yaZ_$LrC$wa<@S8~AE{oW$)B4W8{cXI$@>U$yth zfuEO!UsKr<43{oJpknMxlXnikI;R*-k)%@ zqfN?~Ia@xqOFws9N7Xx9b%pO-og3xjy)x9t8jWO|u{!-g9($X~)?>7E9uLj!w%W`o zS~R;M$IIpC?W#h{cQ1y_eB`YEsQ2Tvmf?1FF4jZx237a-y7J1&AZGZ|`rvg(v-LZ9 zjX(M8>({72JsjpJkI?3_d5o3LqtNg8%6Hc@v`Se`m;QTR-`#3?qJ8bMmZ8GKgSzi? zFDf+Om%p}sS)b~h2;CPIg76;ChUZ?oJRsyn%rnm;p5F{`&zbrY8{E;t$eY<3W^$gN z1Ye!2LOQ$eopo9;aa||hFA7$ZZI8BZR(|38xc2L82m1`DT&JnM?!|_2r{;D%lrylI zN{>QU9qBvBani-xHGT4=r}MpknxwCLuxUWVb(6Xf|DGPY%KJ7>>a6?vW%l~XX0DY+ zraJjyOXhCQbn5X{W61=Tr!`^rc>%VnfFyrAAV@!wN+6UD&O{*T9LYRjgFOSn@x^s zk9(GcFRk|xZapz>akowR8L5A8P_0Axe21R!w-UT5n}29#tbN_iF6YW0SDpLmb2k5| z(a}jt8Z`^v&8WVcQePdNvNL|i)#~864nOvJ*P9mYxiEmWzcQ#x2dVN+WFuQ}6D9LE z?yeGde4IV~MX%0xy^WhI<(r%vKwzc_z)uW$hjrAS>eRCVr zQvK>{yFNEu3lz*LsaD(a_{b@#geM8vX;1F%%Ks0VG=JRa(^o!EuioK0?p&P4HZL?hb65~;!*1h|miqNYz>7n*7Iz}z*l+uj*(Mc%hJ5Aj@n6>B}p=NtN_WrV-*s_A3T6OSqvC?7HW;kmv`Lul8% ziv|>)YSUAcu6jMoZ_bZ7JF`4GxSo%hZF5lX&d#%Ib4FO-f3joU-MLcbo5D`Dq$XXH zC)7$9yz1#G(~%{I!ehe@>Q`-#tm^+dbIq#2wKY!yv4Tz2ZxHLeTQRdWg zQr9TU#!X;VVs)+p)ZQwxY7$$i!o{_00`*fPbv|=f<@$Ipmx!bRX4CC9WJh3YpB(Y)J@E$EvJ@~x~8pc+|8^?tj<*yYWZgRKQ=4S ze6MwST+;Vd!5d@Rn8;V(DZ3?iag(Wu@vj=SydCF7Ux!`pn>;*2&hq!OTgo#$3bo2E zSSKB*-c(a_vq5SuZec5Rxoj;}knJa3*=)Bl_ja6GL27n8Sv8wAh}Be8sKI)&Y7X0? z$HjG3gQ}n}tL|b!`kY!v>fuJ}9wukNshR3f#~R4S-OKiiReuer8ium!J~q;ji~F0@ zbB)yfOr<@i=4nEWX)hc1AUh>i!?d6p8_BAN*%Tu#u97y?+l|x$X4rvKi%DJBK{jq7 zyDnCv+Cc4MEUO-8Nyc1UJsqgkjnos&rX#18le(s(Y}}KqO03Rp3$?e2ta^&AG~wb} z>O%e0NIk>cO*yrK)NE7PxaU}dSWRsQHMohgQ{RAt6pM3W}I3_>fuJ} zWhQ6NshRpv$C}H=y~6g3ReuAh8l7d;t88RvF79tq&oxr7GZhO?%`=1=V<8*&COaio z!`eeNwv<(GvniHbTqPr@w;QQBFDCV|m2BMmtdlhtH>v~F<<_$5Lv~-R>KQ}r zZX=ZWcgl~2Y>ADqFWx%KNv>@qKM^t)TTY(a5%MNm+1OP=_C_pQnn3omla-$d*?K!J zb_L158p+i{=3~#vsiu(k+RMg%DP-TpvTG;Ep%{@>?Mr;=sw7 zW{^)bl52%b(UFt=%^^>6l#N|4WXHtvZ<5H&vzm~PrMU^4DFkZcZ_F0h_zA7#$fy@JGHPjf=v?yf>sn%i-IaRMG6EhnN4ruORCsKvb7pJEixhsfwzKI3`Kpy<6f%Do?EmH5N*}i!nn<PR=ug}B;BA|E8#+cX0njIlvn6n2Nf3$$`fT9?D#0Jd+qUvHda;z;D{O;}WV-&B z+yi9u;Z$G?ClQ|=yp39PJa5b4ZECPhSgDm^|Y#kK^20UoCE#u7fDA#6i= z+bP&+u(bzayzML>&ImRu-gb_+b%4#5x1EO#|8a%0<82pVp!BG4nhNNDvR~#So4`+h zx|&9486Vjc{-^vvD(Ay>f~}gjUFB_Nu+evcG?1_Han0dhNx9)ef8>c;tuvs%$4#G` z)c<6}$}X738*lNEEn%C*+wSn;tY8a)jYj-k-ewK|WI&_)9v{~R{&GI!2Yfi}7Tn)_ zha-5%+Y;>X(4Noa5g*weHg(=s!3U%z^B14s6W-atO3)4TCl#Nsd_Z^jy?EO<-sSL=nr})7{k+?H~PWf4Mwsl z!bTbU19RBu(~=Jt0KXw`YsK3FVbg|tZa^eG&S1r#v$<2OrX)N!`p_!PcwmRZF$=;_-Q7PO_#TY!cTE&#JA&ZVenI2 zvgz@*;qX&jC+dHF-Z%n&icC|(fVYi=pCXgZkhhJ3pCXg3J#QNgKP^u5G2(4w;HTE2 zS=E8JjfJ0Di)_ZQB~bH+g9boTts@_B9B=CZ*Mzr?hhLK-;A09K32+69m_mw@rorE4sZu^}ii&oCf1}&L|Mr^S0@*)x$=gF1#%U zeoBxAqXTc70YA0EV7QLFZ6^HukxSsj+h)N=amT=QCL8sCEO3O8n%4zJ{D)tvi*W%P zeY(Ry8`2!G9j!pE(UT&>jRVwL)Ed2bTRi+NVWV31=52HNa8yZ8-bQ&Rm>?CZWgp&{ z2tV}`70QdZCBfew;iypFuu)IU14g{9FCT6`Z1hVeD4Z{ETL6DY-sT4z{u3+&tx!M| zG(ix^2V4XrH4T+2h_@|FOM z>;O0jPGaoP$@!E#3)d4_CX~Z}6QPoN`g3Rnu3f#o0-tN^P(Iv9oq z2?cbD7z_r0{(#PEwDr-ss}FENSSw%+Y=Ir<4AcM}fuk{U>ECTn1!KWrIf0g72t30; z7#I%rA|d>uC!da@fffOH4g^7uJMWzH= z17&axNnQsxz)f%)+yRfkWAG5%2M<6Q2trxW&4PIt(KEqFFbX)sZie&*!XFIiuiyCs zKi~~K6$GAwKJa(}Ed#HS?7YiU>~5D^o6J^ZGCif zsYG7%&q?0Np$Xa{Vq35P0v%E4NTQ7AYy|iNza0GY;dTLZl;{TNq~HqNfIIL2Nq~;A zbPlF-uNqJX8h~DP=+t-}oCl}D8E{sJ^TaWD3cwDK3FuO0Bgg;@tOp}dxZxlO^aEXC z>jLb71+WAi!7dc~HkbycgBUOi#DX~>p2@XCqo=^T1S|zIWAAN2L+M;N>z!iQM1vL6LJkSr*Xnp3$APZ!J9R$MUfSuqV(xQV29YCgm6NpRaK{|fDh5rWp zbnUYXbOL7dGO7Si8N@>%36bawXaLkfCltg0dOOey{(K~~9~=S&(2s&bFbvP3fKEVk zMWu0)^^xWfP)Hm%^A zfClJ40o?;k0rcMZ5gFYDvjDxi&jE2@AqYTRI_}%R?~lysZJOSmt6@ucf&aY(ufQ8X zZ^kvC7LQA zMZN<$*vw(GOyGs>Ft&rAGJTJLFF`fT5xT6@RMatH1Vq{x;c$hb4SYI?0(8Xf4QMoXhCUO4 zFcbt7hmM?d^vnYkA3?Y@a^cPe^ddt?&J7>~%m;MB?FQBWI##Ws&2S|=wB@G)T1*y# zd4RS_3qT7me~ZsKR1oq|LCk>}=md;FdteCK0bS4*(Ak&P06GV2fYv|>GzBdv7e#oQ z0JJO(ewoag;h6$92Q5J>Kw;DY+0=kCPz5SL3+Mm?K(*KBUCDC`JkzP0PTw7XG1bxp zND4tEbpt(sE08pq6a3T~)Xa{c3$O#0zy??YD_{%kfdl9YT!1qO0)2rO=mXqAPcXm( z|LX;M15e-$e1Jdj1%7}c)5;bIsBfuel7dm!g@e%`7z_Z+-CU%_0?kDV3RI2(Y>K(a zN`(&31Ho88qhJgxG#3RVOn^56j0fXDBA~>nwn<<<|4cPq02YB{K;wkMEC`&k_BY`p{VI9~3vcYz+4QvHjAQNl?8^LC<1?&O4Kn~am zc7tz#TIvI!)}j`A1D=Ctpb|U*!88EraJV1j1Ib9=2mfC1Ut__42iyk7Kp{8;4uS)q z02~E}!4dxX7Ti;y7!-ly-~{hK3AY5CLH>f%;2O99%E38s1)K$?fb3*D4=#a={PShF zW#A^D_!RdlxB;&7&(xCCV)p@c-(7Hz_dkT2P=WtF29H2<@Dx-5Y5{7E*Kl6~H}C@V z0oC9Ypv2#U2JjA0H`Rk$Py^nAIzV0Y74!sN;4|tb*Z}%v+q6{E(o8StE$E7@ z2|V=1E)Qrur(;+%K=R7SyYdfv+w1?1oPx}Pz83uq(Q+j|lBsv??8Id+Q zIx{MPKPa4}P)+en1>mkoDRU~B0+22YJySu*C0!BFX-4uau7Ox1UGhw|)&P`lYe2_4 zI;5%ss)#ZmjW!JKiku?Q14SY~m5yrLxWrUAvP;59KT`oDnxreJuq^RQ^0C3fmUO0PNfKLwB^ zL<5Ktr)H;potlaYL}AFKglK?ChbN8342=`AlfMt>3Y>up@B|*f9drY3pgZV6ry@F~ z(gV4@K`+n~P-cF>8&D!%pfB(Nz90~kpj<(4L%<+F83cm?fL6nSa6`c`Fa!(*VPH6z z0TQO;e^bE}K$+3JpA0t&OahT$BA5Uoz<4kYgagTHIR^fbU=$e5yJMwn(Y${e+!&xN z#6SeNPDtS1;>_?sZz&xBy;{>TyEXWOz`wx<@E+U*4d6N`11G>NKudKI+~eRdI0O!W z{h%+je7Lz_7obH;5A1|Lhx$Joo^4<&$O4-|CRhcQfu$e?B!d@-xEL<2UW?!^0P{f{ zmS1E!nYf=Ym8)T^$c7>>NP$crub_Ay@(^;Z(TG!3vNDR)W>Q71~C)>0k}m z0M>(bfHGzv1FYr!K9C3Yg67Z;!lh=T zjHoHePc23*L#hdImq$ zMmkeT{O7RS00F20cHk{|0}MeYU<6u&YCwC-YwG`3cz6k307{q=q(sP1E){4q|14=8 zswst|Fw!>a3gRdD0jRa8YrlhU;0yQ+=yX&CSDxlS_47v{-Pe@JC-9Z$7hFlgG??f` zfSy~zrOaBuRRFu-mxn6?a^O6IT2pZNn*aysROsgLQw5qOz|$EXYA$LfGeFJM6!vy- zsh?>O(EyTeI!VpRm9!QmNUhZjabLrwmZiR@^b}#E0oe-fV7N-Wn=l#=G(~7lruCd^ zbsW&80o{1eZKo=rX_pK;&GjU>Cjnjk(mGCYC_G&Us{=`RvXgBa?@H{F>03c%8*8B z(>KP;10S0djE4IKioBdE?{i|{^MRI?BTHk4qy#3q-Ldy zS|>0DVO-$SV52K`H$Z7q9Rpo}fSMlEmqoQE%V{ zC^Lzj{NaG&Q^jbC4g|x%U=RW*>;Mozx1tn*YCwhXhwBHZ`6Lm8@!TKu13^HN5rq%L zGsPz;L2@acBn&-EDl`awai-#Mlcz&&sm+yU1B_IB>}pB9^|c)kKIf^*<3*aLRc`ENNqS>Oo@M)P|E z{OiF?unW)Wa94vQKu4;%aA$#dKsAp8a{#?1&xRYz`zh>MKrNgIXiZoJcO{UdGmrXz z1q=(o5+F$|1^#3}i7tk_2+Riy0fk)(mLtJs_@!Ulsle;NTEM^>kO4M= z8ssn71Wzy$8vr)Lp9$#Txf3pBvIXu|-cM`9cKEjeT9|gg%?3HZ9ck@?OBFc-N&qcAiupMXm66f_P;36hOw zOEq`~B(s9jp)_gcJOWe*vYn&RNr_7gl9JI(kYqrSBs$s2Pa0)X1E_Wq{Vn`dkT+mA zpcatKta|tVoEjXdtr0#gZeqma_Y^s@DMLhB&_?zYJr~(n+A*(QqQs_Ls)8Iga-c}fN&G-> zb;`)2-`3KC)f2rZ3+4FCxpxO8C`WSdIW34YI4e<@@<5ShJ8^6}>fvQ3@${_9t%_etV0w z9mb>0s5xd&J$T9Ee)f4GVp?0;TiS7}DP^`|U7zvq+wQi4VsB|p>C6!_UmuaSZW`iJ zWo)%_JI=O=TZ|Bn;t*LvmWU9-{rER9J|bV?bs_5U>4^x=Wgfi}>@dkFfWE@?;dz8e;`bkkN#>`k@jJ5Q2KG;hpixt#%Gq5W?2d#?l5G zP7^lO4^=l*WF>y0aB@xkQ8;mBY=!Guur#XF&K7Jp*&|!B3aLu!(pTD4c$GHinD#ZN zJ4o3^-2QxH3h%dKb-hJ-+#uZSDbi4+KBvOzDzRcuByFa|?s+04+^^&CB>SR zxM|j$@R0a8e=4jq*COdk%&m{eR<}O}kqScSZxUA8s~&nOuCSw}li+S^mWnhi$D@%b z4c9PX(XIMsPpDYpT@QXBG9EE#grRvms zVY65H^yN!q%c6#ebl9)}QG&dUGp2Gwl1R-k%!%fNtzhcp$jF#z9GoH_dbQ4WUx`Te z+=yUmfuaDpmTYvOC`mY8IU`79o3L7&`wl7bxVoll=!$jo+9;=vabLBtGtGSGh1Sl={LqimVdxM<&mV;6ss1+IcO{&YW-@V z8n0k)5Om}vr+0G#l#~}={~M_{l=g_Ubj7cY1x6}w{wm|3P)0A@jhlVy+3W0IWg!#; zD2^t3oos(x^Zcu1L&1NEJ(>oEPfflwhLnEdx)#IU4pO_>0dm!Gw-f(HdI*JDq4m@2 zHl2T7{`pt=!pBLTy20devUe+q!jAM4IS6a@*oa~1>r?tHaSYb5o2a}x(z)0)ka@nE zbXp$s99?H)D|iV7-JICZ^_sbEJC&Tj$}fFZPH|OG9}R@aY-@e&=IhZz{)XrX1;a1V z+GG9jf+nre-jYiTqiEp+=EVzdDZLc!?arFM4)`155}&G>s;Qma(q~)#Dvu3V z4VCNzA7Yf|&*rW5)j$6Y(bSL`gd_DfhT_^K%jb?CuHrK5Z-~xNs8*}H))-A#zCQV{ z;%3OAC~iMK#Kq5v`f=NXSN{zW&ZpW;#nt?%Tzc7GCDxD?AubbMz(1~P2o`l|Cf?Et zOqu0C*eeS#>1G6Df8bXuVNxfS8!WPAqk4*Tk-cJW-Nao)&;Cv&j(^Xs6xmVsFhdEp>4z7XD81>v1M|^wz=JLjY z0jF(CCJYfJ3VT|z1tBQIC@U7dSfrs3X_A$AK{IWrsGp|wt^kpo#0%O?D^?SNu3LZ* zwC&#U_sn^_qRJj2a0a0&Ew^F@gHh0RR?KBElFhbaQS_W|#gYeOhnZ;0-VMf%<7&rT zhrpg~&q9WX%5@Lgi@Q4D+nK{f@}t)CRmUQF-ky0371^p+AOtP5&ufn9lo;oTq0*SG&r91rJ8}+JNv`c1cxBk9i4U^eUyaKcy~5FdgI-) zn?gAySg`LUPKt<%h#om@+O#HV@uSze%o55;QoD^1w9O1YS*NhEqSlnlm)pY3T*POG zK|#0tLf>Cv-x5SEghyQ1#xNB33`Au_+Zp?NvRzhNcX?_w8yeaHUD-8+NSKN*=qbe4 z?{mhV4oS}z$_<5u8hRdF>dtoUtBgvTw=YDN{I0nL3LRI*3_f!@vvrn&P;MD4wEpdb zOH~WLS<_+mWaYt#heOlqp;9V1}5Uz5IGzp4Mj>UgFCM) z%i^B9vAFH1#BIFRQ%ly284~=sTS+f2QEn_(c4KuE5;5E^A>^g*;!H+O>CoM+MQf+O zt)%VBx{W}Hbd;OY^0zv@wN2?6b%byb7ZABeBZR}hs~v!HP=gGS+xXD)%jReiG0+5m5T^}Ni)}c3?_rN3@iefbX)w-R+`}WhN4IF7 z68r#h>{!-FQ4@!MrDo6lY$R1)>LAIV(wBR%MRBk$4i8pCOwb@&8;yRNiKd|8lAV!RqhK(?9f9dYjKB-5 zSUy4srPi_MqjBi`AB{&V9@50hW;;gY%Wj3^Fs`j8ZsW{F$9wMlrL;pRH@6EC#xmmN z#X5{bc?Wv2ka1W>A`p@r%Oh(3d`}zsnJWScfon)_Rx%FVJilU1chd7U0{b3q35U28I&(aT3?np1!=77%M8}T-QAZ( z&lYJ1enbpy#OQVIr*n_XQ+!1 zN~(ATB^BqQp$~6&1X4vHCAW+>ZRhk4K_EIYqmTi|0Hg6D_=39&VAJ>E&X)%S1Y-@?7 z{}U8tD31m?<)&H`K88Zo!1g^d6PvbzpSUTs7hYUf9J1>fpDU7V>&J?6(9j+HSXQJ+ zQ{Gl!>&ND1qNLprhZfD=u^#J>pX%L;i(_Mlrt$G(b&-e@?8kI>pmRp?sT(DDcKT3b zKx>qZB?c*O{Gg~Hjae4vZ{y5#Uh(-tNr6K9!<=maJ|pwW=oN>$jatl)MNblGBw#z* zi$K)t(Qa{jN)oy%@qtj^b5Lm0((d@uup(`}(O=~W6zb5MZ)V+7BwAb`;GqW+Gh0k-*KQDgD!1_^lSEY-=cmv zn08PacUT{`1hBa1|Lbnm4d`arFR9%Y3rI*(>6p|L75DN zjwZKtOCI$VTc*rJy8JNb>LE^E0qr67;qpi-h_;ZQ>bmrccxg}zoIlRk z+GnZwti?@Wentqd^<(8&6dWA;i|5Xpk$DQ;r|-DUw>XOF21NyFw0PR}P2bfk`LRl) zDX2fwor<<Z(=lbmGe|=L`;}w>*#Bz){I>>ab8-KVRY5W@t@#o2|9=D_-w|l0|0l7=>#Xko z>~C&4VFl3PX`6% zcRJco|Gi;JlHmi>^5r~Syi<8E(MWAM@1y{Y!(Z9Z#gFLx+BS^0{NIkF-Dj}UAW%V$U{dlW0DH1~~SujZmuJ;r3*#G}s`=8%BL z0b`hQK8^L`C#p~whsEm2)iaTfv#2}(Y`+vN9(Q=M$)69j{Ag=IY zIBSw9es_*a6u&zcC893><81@2MQMH*&)y+~uxSKSOhS<^b!VLIem_n+xX9&B#Lp+NWk^H!7eY`Q+pQWs`_!hac%j@o zSZL4dF@`;$T$)d0O7le86VxV(`!O@b<&N;oXg&G=(&_|-HmD?<+tby}SBLynxMosf0oeea`&E<0Ch}%z}c;MtVi~$j8}HZ=2_GJ&kV9ZMtx$r&iNg*#eYY@{5!< zkE*E|>3N+dDDEj~UF$L}Vac6g4PM-*tR!<~SMW zM@LILZZR>RE^f7f)9Ydf|Is)jlxqnKE@2aU@yhArqXkobYteC^p9G;$=rp>o(}H*x z&E<66LSNG;*mMz0pU(6aiOhs6r!${L7zod&GwYRTMq!LNo2ul8)A#$AHsccGUZ~o} zu&hOxjphhJFTI)ygWLJHn~&_AEW6{BSl6N0Z*|T`r0FQWJy;pTtoMjCSkq)t zkZ^kpD@nyRVu!D%W7za$3~7Avv6I|0G3*h!Wid=S1@7G#){ETg7&ePs#ThI&1*;BT zDO>J?t2u*J;#t>thPa*vGko%=s{531wZXR*coP%ftO%`UFv}%~v3~~hT7s00&tP%% zd}{{Fz_UXIQcyORB-X$gB0k6$pK%h^JyQvl(5QUT&^(``mz!u4sn0;X=*P; zn&)RTUvlTpVTntTcFG)K2%amuIUS*OC_tM`3ZJ2B)r&k7vSVxG2nv zXA730Sy8zg%aBZAJZrKXi*o-27PTD7`6sgE<*;8&WJUBWZd80nw_K#EI5{6QQ&GUM zh0J3GVxXWiR*2RM-4-#`H1RXnE53`^h%}78+C}2kdyiqr*6$1dbl_T!d#5{ZFCHm1 zUq?M2uGWlhcljMUZZXS4T&mo~G%Qs^lEvfnZZi8x&-Hkwe&XkVL+=#vtiSl$J~t-6 zq6R6^wGO7|ASkqVWX>qEh`6CJl~XXgZ3Sae*j&sX;er&FwHl*mBSLmS$X)FoU%Y*w zH!e!LSURBh@naA%tZXGt1CrL&cV;@PP*c8@b^Q~?<8EU2^yDcwA6?+;!M!N)X$$)< zWgAzC&MR(N%Kc-SL`j}2F;{5uc$pWwa?sN$Ul7xdzGcV#khoNQOzlA9RPkxXw(elz zUg5YDghU(C_`8d?prxs)|D2i8o$5TGbg{I@QY)}S9GZzY8(uw|eX{&A6xxQ7dXH4r zJ{^7dZ5oSCM;k0%!Iq?>My_eB7|*)CY2sz5)_rJ5mjHEVE+)6Wj!t9m5mI*!LQu&y z23~pA+30K-7Xsz66<~n6tw9=@2th4B;Nfgjb6ux!p4ldnNOqUrAKok@7X)~8rb58G1Ay0#1&SjvCnHnX3gsPkgV<$PD4M_ zSg#C>6OEPPElqMfY<$@Ld&-o&Rq|IX&RuYyhnGW56syq%hBaOv2mkB!LUOQgbcEC0 zH%h$n|15F*c6n^j7{0lX7Ix|1bl7|Dz_iz*3;tEq#zp^ExPRFtU0c3dys1tY-{6$SJE4zj$!jCnJD?C zqlE(!=j>D7`BhoYwY&KBEp>x<9oGEazW2#}H&c-dPB(Pk+X#hDSzg&udH3|2G=8R!Ak3@5|0nz6z5f+r9o{OnT6WmTPH)BT z5R}Q3w;_-JS!Wyi;UT+J7Pbv5cC?J!9sFd|UF2fZZ$sAHqF`tH} zDI!i0AfV=iNM_p8L{nFqPtdR*P7Gom!vP5;K|wGTL^Dw{i%e2qPKm$oKKmXi3H?J~&C!w@VjWo)C*CVe`DcJEhEo8$6S4m>{<~ zwwpivv~=-l9`S?s&!Z^A#VH&=ut0LpKYEHYz*$=a&k|4Pf9q!D<-*&eIjHxdh=p=Y zZ~)zTu-C4B{mMxpngRn!;cyy64u-093&rqIx*;;b1Bqe{`e{vv(%x;L?>T@m2bjeg z{ff?g2a97d#L96y?C&vkHzOtq%T6^shNx(h_3Oy|RXyYO!l2R9faVJpET*YyIWfsl ztx))W+O(}y&nIoLrY>;wKK()nM8Qn_=Fg(R{5XIw92)VFHXaO5ZEB?xc=u9J*oO;cL8w@j>3?O6lZIENO)#eqsMtAbhP~OB9(| z2?s~*%+lKY4uJ}Q7@?;Ba@qt!Yu{SFzF2Y^G}$QUjSt%_?dax3$&LJXOAbLQeVT2j zcs9+;ju4Px+bDgv^vY8zKg;)?nL;HPOox6w-g$_^qGzwg*_zbtil$Mr1&#P~SWUv* zglh9LDJ%~=ZS021GbsZ(l3L-OI?``h2u7>!xG)1w+S*JC;oEBXfn&4L_*N!;k`43l z7&yEF9HO_=H`y=`BK~OHV--4(3Uj1(v?E6f;GG_=OgnwjdcX7^}*Dmssu7 zZtcDGW{9bjT7D5Ug?12PWX^5s<1c$?~@MY;hW+ARC9P#O7mQ z$VTCzsm*{M@N57IidBg~JsW`1Vcaelhiu15_SAsxy~m=+4n@z(py~`wjgH0c1=msD zTKSvHm|^`fL7uXN+>FE7l*-eIMq#JK&8|Ll-m5-ow|L}`hZTT6ws=SPN&RA~vc)J( zr(?_chvS0L~G5tY8p?B})tQ{!5J^NQ+qZdciO^J#cSSw_w znKUITYLE=e)lN;0$Zj#2a`@=Y)R`14BZcW!4h@hczcBu-6b>NK=N5CmE}3$S`z+ko z1Bo0^!$o%A{DnWeAGfMdY7|%cWz=xh9vPPu7O`v-;&w`WM2DlqTskgG$!=k2!G-zX z+4t|##0xy)#nUc;%(z@i+7A_@ZnTV~(O|!xl}ji0gNdbp)f%wsZfx8*vTIQ&U~yjv zunPCA{~B(}mLQ>%+_hKU8S&e1Jb=o5Vyvwpc{J>6fC$eM=s32y9{TdKHww{0agOyS zYL@EeJlceoT7#w6ew{}Zc-Oc5O7wjHUx|m>{Q7WZ??3qDP2naN$<*@z=u?L#oWx59^&axY-DQtO6Yg(5mMQK4*k!R_D25@R zBwtZBuMfCj)9WTbdj~LIoYsWr(P6;Se}R^5(W2ez!7-8PpU%;0pqrJyeAIAn!fH+b zf7&gnM(9qhsn}0e2SI%U3@!K;g7-zu@=amA@tVH*!i`^eaAb0i!jE`v2{7btds7lA zYX{K0eVeS1i|B(T;1djrU&pS%4oDCF>dECx<1UX9;CM>nS`1{1nz|YDmzsCir>Ql1 zlZi<=6afwf*_#*bV3X2ZDn2Cj)7l;&tHV-v{eLr)lLu(Q zVF<`gjPDA3OC29NSlIl|a~YKJeN9>(q#WL&^FbkHHai=3&Dz+>TD0&(h*~T{N7v`z zN*%s}ckNvuwc{cXS|CJ0`4m)e(i@wn?{he07blX;Ba*B3 z|I0X)=urjYFzKE1^*+PWU3h3!kz`%q;sW~h$a9Hq&|_}KWFA*k1);;5CoE170`rat ztx)XNrs3Z|+c>FA4>UQ38h-hpZfDfC&8O4$HP&1`LI<%^(jpXnt`JVhvxlbXg+hbu zE~MVyAnhn1sL)U%I~}`NQPFS>(3F@>fJu2F#eXA(PQ8lpxH*aa?37K?vQVOS0^hP!H05u#9^Vpun zzl_*;0Eogv(E9`^9re#vCy8p4<^vU6C(TWx)FRL;xR`bn!DiqT^%CCuttb{lxj1yT zTikKv$wnl;Lk(9*hgRGjV1H{a?t-aW^crfoLJBR9OZiua8JXm9RO+N<$7#S(K>p-& zI(Pvxv*WnnU54hR6Zz>LLMbUa_4skhI*JxQqlGizM5KSvt#64_HKxgr>Y)s^B@}ud z*xHv+PBmJ3m59A-sMp0V=27&wQP14_vE7+Oq13m%Dh;6GzZ=EQ;AUWj;=$;=Y^ z^^Jm`=KZ))> zpPzAXvBUaK5vOw0{kSyEEenA746>*1JbSXuVMjwV1VIj!(&6J68mZ0I$1!wyDOvF} z>ES&D?;b~Ma^gJu)u4yCexw4{X7`}6CCE8#c8{d&o*GUH^ylugs;Rm`{(!-S6r-Az z(M61+rg4*XsWePGq>SDvg)3wPS@;wNWZg!U34hP2HnZS*!A^I>bU>FGWpugpx#-U> zBl{CLjVuRA_&Vq{wPNyuk7g(*XFLzx&!h;@%~A7_>6(`>^tiy27O{olR2LXJxh2gP ze#+<(Cx%7X?&W7vh8E&Ha?10`r(~{!e4#v(-AHCTCy9$Tvy#fuNWZsIpyd51^ZdPk zgwDl)*aPq&;UUy;Uq%=4hfUU_6`aO6S>rS=tt7WHa1=+#VP$|}B>5Sl^6X^;)fL7? z41*e^v-)WOLNl@14?kYNhmihyR7GG8V^tgE94LxROIAkkD z4R=1m<+*jY+x*rQHHM{8T}9Rv5P@bBk(9mYjVkI}0YSS17@T&IC(QOstzx;yXjs=c zW=;hRqe9|ul3OkM%HGm8n^Q%%(bsUidbpY{p|95BJl(IrEQ{v}-W9g)@t+ByYxqGS z&u)M?_pPCcl^Df1rh_Mo5bCtR314>o$IW%6ZJwz-GkN5sUhn?|*2(8`vlbP=3wdL{)SS_T-IfSpekzZ=O1YS%*~7NqG2^y?JDvH zL#tKIsWB6%n!XpCTh*AV#?#PK8P?7C%$qjfSJTKqmBi06@=d!hy?{xoh3aIr2A?7J z2Gw)_!?;|iJ=JNizCq#Kq;I}KD=tE4RTKZ~&t&~QXl`gvA>U)zmA}w96uQwbf>o)1 zY)j8?C#8T@@Uys3;X-=q_W*;7G?&oQ;t2odY5aNQt-mCNXz{%nA(tfIMH<8nxN%z& z6nIkezI8)l0>4U(bAr;+k9V1S-5-Q{h*EOt9qN@-IQP~#ymOOxuUqPuUA}bokHWhx z-izN$>^8gW2Q>+^BI6?xqD=N3i?jTEs6+e*urGWWUl=t%Fr+uh*!uwv0e%GKu`T0=^aS`!A@MPcK z`Hu$neEZ0;vjTzRAMg3IC~U-+XYp=<4p$RXrrS;)bm0fQa|&#G_w9d88TgtTg18t0 zfx;|SKg88DDk@FAz!>JE!2{E9CIUEOJ+vyS0oGZT@F{I5dI*?UXk#v z0<|v8gTk*%DJTmjyPqTvdVC%CSClxi*%gqXpGJlG>_8PK%-r zuFRdvT-b7rzxw2Ymt}lzA{~SZv_kGz6Byha(IvWcPe(^e+r=h7KsOZ(7y-be5cskY}-DXY0ljQ*B z2{+AW02?B3-7tW~DR{|U1~M0oXg_=q>rI`5(0=$!z&&pe^Al}M2Q%z<^;}7~(|4h) z6P-2(L!5`QYb`ata>FQgNJDkj40-2ov2%2E9577{2RrLWV}g&up^6&I299AbJ$*H& zx-raxwvGW^)Fw*VUz_wC%e?k0pI#xqMw8_(P!b_L_vNNO0*9`%fg^-hS2#INTjh|?7B zxae6^r^k55M@2*?Dqb;UJ|-f5uD8xl7d$zz+muLeKVQE9Uq4?RU0%YRDP#iMpwY`U z6PT+V2&mZrUV9|47IOQUtXhJQDKcKSlR3&hv)BlU6L~Frg?7BpVi}Tt17)|lY=%U- zk*tIKKMR^3B;dNCU=BcM>yX7k zIFfte^`jJKD{AEwW-p%VQrI1x5#U|DyBevX+Ip!oUHSk5`6cWZmpxN@oCN7fS;Ag& zHcsG~30UX9Edk@cU&7kCzla}CmawU>HgXgQ{hg_eRo+S}IBC{E>=u202Kf>O2TfxFLs0^evE7@>71kkmW?7OzuDl3{&!Rx6y^`!~X z>{VpavNlvb9=fmNDrN^xBiG=y*$|kpRm{;*9Qri&@s5a&n-)PcS2G{l@ELmAm9dVL z{yqp*zKV5`(EYDPbC_$BqL>XZMO*A3Glx=Hd+OK%4@gdxnK*M0y^N?lly8+4&BP|1xO(~m;)Wkf|l#O zjp;Z{Ier@pEigmcKI@MbwSS<6?^-CNdD+YwGyXW6^|irqFoq1_Dkh=poCNA{UmBnZ z60Cy^x1h(_tScpFfQe5|Fsqh07UNeI4CdyI`_gOlN)GD;l{7qujnL|XXloAZ-#$=r zL=0e|#Nxb_5ex<78x8?=&Skw^65y3go)sMx52inT#u~>6i<4lf6og0TVqJ9b#Ou0T z_NE1Xh}&EIP&b9_13M4 1 ? values : value; + return acc; }, {}, diff --git a/src/create-navigation-config.ts b/src/create-navigation-config.ts index 1be5bd0..8f278cd 100644 --- a/src/create-navigation-config.ts +++ b/src/create-navigation-config.ts @@ -10,67 +10,77 @@ import { makeRouteBuilder, type RouteBuilder } from './make-route-builder'; import type { Prettify } from './types'; type AnyRouteBuilder = - | RouteBuilder - | RouteBuilder - | RouteBuilder - | RouteBuilder; + | RouteBuilder + | RouteBuilder + | RouteBuilder + | RouteBuilder; type NavigationConfig = Record; -type SafeRootRoute = () => string; +type SafeRootRoute = () => Path; -type SafeRouteWithParams = { - (options: z.input): string; +type SafeRouteWithParams = { + (options: z.input): Path; $parseParams: (params: unknown) => z.output; }; -type SafeRouteWithSearch = { - (options?: { search?: z.input }): string; +type SafeRouteWithSearch = { + (options?: { search?: z.input }): Path; $parseSearchParams: (searchParams: unknown) => z.output; }; -type SafeRouteWithRequiredSearch = { - (options: { search: z.input }): string; +type SafeRouteWithRequiredSearch< + Path extends string, + Search extends z.ZodSchema, +> = { + (options: { search: z.input }): Path; $parseSearchParams: (searchParams: unknown) => z.output; }; type SafeRouteWithParamsAndSearch< + Path extends string, Params extends z.ZodSchema, Search extends z.ZodSchema, Options = z.input & { search?: z.input }, > = { - (options: Prettify): string; + (options: Prettify): Path; $parseParams: (params: unknown) => z.output; $parseSearchParams: (searchParams: unknown) => z.output; }; type SafeRouteWithParamsAndRequiredSearch< + Path extends string, Params extends z.ZodSchema, Search extends z.ZodSchema, Options = z.input & { search: z.input }, > = { - (options: Prettify): string; + (options: Prettify): Path; $parseParams: (params: unknown) => z.output; $parseSearchParams: (searchParams: unknown) => z.output; }; -type SafeRoute = - [Params, Search] extends [never, never] ? SafeRootRoute - : [Params, Search] extends [z.ZodSchema, never] ? SafeRouteWithParams +type SafeRoute< + Path extends string, + Params extends z.ZodSchema, + Search extends z.ZodSchema, +> = + [Params, Search] extends [never, never] ? SafeRootRoute + : [Params, Search] extends [z.ZodSchema, never] ? + SafeRouteWithParams : [Params, Search] extends [never, z.ZodSchema] ? undefined extends z.input ? - SafeRouteWithSearch - : SafeRouteWithRequiredSearch + SafeRouteWithSearch + : SafeRouteWithRequiredSearch : [Params, Search] extends [z.ZodSchema, z.ZodSchema] ? undefined extends z.input ? - SafeRouteWithParamsAndSearch - : SafeRouteWithParamsAndRequiredSearch + SafeRouteWithParamsAndSearch + : SafeRouteWithParamsAndRequiredSearch : never; type RouteWithParams = { [Route in keyof Config & string]: Config[Route] extends ( - | RouteBuilder - | RouteBuilder + | RouteBuilder + | RouteBuilder ) ? Params extends z.ZodSchema ? Route @@ -80,8 +90,8 @@ type RouteWithParams = { type RouteWithSearchParams = { [Route in keyof Config & string]: Config[Route] extends ( - | RouteBuilder - | RouteBuilder + | RouteBuilder + | RouteBuilder ) ? Search extends z.ZodSchema ? Route @@ -92,11 +102,12 @@ type RouteWithSearchParams = { type SafeNavigation = { [Route in keyof Config]: Config[Route] extends ( RouteBuilder< + infer Path extends string, infer Params extends z.ZodSchema, infer Search extends z.ZodSchema > ) ? - SafeRoute + SafeRoute : never; }; @@ -108,8 +119,8 @@ type ValidatedRouteParams< > = Route extends keyof Pick ? Router[Route] extends ( - | SafeRoute - | SafeRoute + | SafeRoute + | SafeRoute ) ? z.output : never @@ -123,8 +134,8 @@ type ValidatedRouteSearchParams< > = Route extends keyof Pick ? Router[Route] extends ( - | SafeRoute - | SafeRoute + | SafeRoute + | SafeRoute ) ? z.output : never diff --git a/src/make-route-builder.spec.ts b/src/make-route-builder.spec.ts index 3ceb152..8992265 100644 --- a/src/make-route-builder.spec.ts +++ b/src/make-route-builder.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-secrets/no-secrets */ import { z } from 'zod'; import { makeRouteBuilder } from './make-route-builder'; diff --git a/src/make-route-builder.ts b/src/make-route-builder.ts index c465938..891ef5f 100644 --- a/src/make-route-builder.ts +++ b/src/make-route-builder.ts @@ -1,3 +1,5 @@ +import { type Route } from 'next'; + import { type z } from 'zod'; import { convertObjectToURLSearchParams } from './convert-object-to-url-search-params'; @@ -5,6 +7,20 @@ import type { ExcludeAny } from './types'; type PathBlueprint = `/${string}`; +type Suffix = `?${string}`; + +/** + * When `experimental.typeRoutes` is disabled, + * `Route` is `string & {}`, therefore `string extends Route` is a truthy condition. + * If this is the case, we simply use the `Path` value to infer the literal string. + * + * If `experimental.typeRoutes` is enabled, + * `Route` will be a union of string literals, therefore `string extends Route` is a falsy condition. + * If this is the case, we use `Route` so that we have auto-complete on the available routes + * generated by NextJS and validation check against dynamic routes (that are checked by passing the string generic). + */ +type SafePath = string extends Route ? Path : Route; + type ExtractPathParams = T extends `${string}[[...${infer Param}]]${infer Rest}` ? Param | ExtractPathParams @@ -15,40 +31,45 @@ type ExtractPathParams = : never; export type RouteBuilder< + Path extends string, Params extends z.ZodSchema, Search extends z.ZodSchema, > = [Params, Search] extends [never, never] ? - { (): string; getSchemas: () => { params: never; search: never } } + { (): Path; getSchemas: () => { params: never; search: never } } : [Params, Search] extends [z.ZodSchema, never] ? { - (options: z.input): string; + (options: z.input): Path; getSchemas: () => { params: Params; search: never }; } : [Params, Search] extends [never, z.ZodSchema] ? undefined extends z.input ? { - (options?: { search?: z.input }): string; + (options?: { search?: z.input }): Path | `${Path}${Suffix}`; getSchemas: () => { params: never; search: Search }; } : { - (options: { search: z.input }): string; + (options: { search: z.input }): `${Path}${Suffix}`; getSchemas: () => { params: never; search: Search }; } : [Params, Search] extends [z.ZodSchema, z.ZodSchema] ? undefined extends z.input ? { - (options: z.input & { search?: z.input }): string; + ( + options: z.input & { search?: z.input }, + ): Path | `${Path}${Suffix}`; getSchemas: () => { params: Params; search: Search }; } : { - (options: z.input & { search: z.input }): string; + ( + options: z.input & { search: z.input }, + ): `${Path}${Suffix}`; getSchemas: () => { params: Params; search: Search }; } : never; type EnsurePathWithNoParams = - ExtractPathParams extends never ? Path + ExtractPathParams extends never ? SafePath : `[ERROR]: Missing validation for path params`; /** @@ -64,15 +85,17 @@ type StrictParams = : never; type RouteBuilderResult< + Path extends string, PathParams extends string, Params extends z.ZodObject, Search extends z.ZodSchema, > = - [PathParams, Search] extends [string, never] ? RouteBuilder + [PathParams, Search] extends [string, never] ? + RouteBuilder : [PathParams, Search] extends [never, z.ZodSchema] ? - RouteBuilder + RouteBuilder : [PathParams, Search] extends [string, z.ZodSchema] ? - RouteBuilder + RouteBuilder : never; const PATH_PARAM_REGEX = /\[{1,2}([^[\]]+)]{1,2}/g; @@ -95,7 +118,7 @@ const REMOVE_PARAM_NOTATION_REGEX = /[^[.].+[^\]]/; // the compiler complains about EnsurePathWithNoParams, but it is fine export function makeRouteBuilder( path: EnsurePathWithNoParams, -): RouteBuilder; +): RouteBuilder; export function makeRouteBuilder< Path extends PathBlueprint, @@ -104,7 +127,7 @@ export function makeRouteBuilder< }>, Search extends z.ZodSchema = never, >( - path: Path, + path: SafePath, schemas: ExtractPathParams extends never ? { search: Search | z.ZodOptional } : { @@ -112,6 +135,7 @@ export function makeRouteBuilder< search?: Search | z.ZodOptional; }, ): RouteBuilderResult< + Path, ExtractPathParams, ExcludeAny, ExcludeAny @@ -132,7 +156,7 @@ export function makeRouteBuilder( throw new Error(`Validation missing for path params: "${path}"`); } - const routeBuilder: RouteBuilder = (options) => { + const routeBuilder: RouteBuilder = (options) => { const { search = {}, ...params } = options ?? {}; const basePath = path.replace(PATH_PARAM_REGEX, (match, param: string) => { diff --git a/src/test-utils.ts b/src/test-utils.ts index 966b1d0..9636621 100644 --- a/src/test-utils.ts +++ b/src/test-utils.ts @@ -11,5 +11,5 @@ export function suppressConsoleErrors(fn: () => void | Promise): void { }); } - return mockRestore(); + mockRestore(); }