From e6c4613d8c40f1a5f630f23f15dbe00ee245a252 Mon Sep 17 00:00:00 2001 From: astone123 Date: Sun, 17 Dec 2023 14:51:19 -0700 Subject: [PATCH 01/13] chore: map routes to tabs --- src/App.tsx | 61 ++++-- src/components/FixtureRow.tsx | 4 + src/components/FixturesList.tsx | 2 +- src/components/Header.tsx | 80 ++++++-- src/components/ThemeSelect.tsx | 9 +- src/hooks/useTheme.tsx | 32 ++++ src/index.css | 7 + src/lib/utils.ts | 9 +- src/pages/Fixture.tsx | 53 ++---- src/pages/Fixtures.tsx | 31 ++++ src/pages/Goal.tsx | 3 - src/pages/Goals.tsx | 319 +++++++++++--------------------- src/pages/Settings.tsx | 16 ++ 13 files changed, 343 insertions(+), 283 deletions(-) create mode 100644 src/hooks/useTheme.tsx create mode 100644 src/pages/Fixtures.tsx create mode 100644 src/pages/Settings.tsx diff --git a/src/App.tsx b/src/App.tsx index 4132959..bdcadf7 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,35 +1,58 @@ +import Header from './components/Header'; +import {ThemeProvider} from './hooks/useTheme'; import Error from './pages/Error'; import Fixture from './pages/Fixture'; +import Fixtures from './pages/Fixtures'; import Goal from './pages/Goal'; import Goals from './pages/Goals'; +import Settings from './pages/Settings'; import {createBrowserRouter, Navigate, RouterProvider} from 'react-router-dom'; const router = createBrowserRouter([ { - path: '/', - element: , - errorElement: , - }, - { - path: '/goals', - element: , - errorElement: , - }, - { - path: '/goals/:goalId', - element: , - errorElement: , - }, - { - path: '/fixtures/:fixtureId', - element: , - errorElement: , + element:
, + children: [ + { + path: '/', + element: , + errorElement: , + }, + { + path: '/goals', + element: , + errorElement: , + }, + { + path: '/fixtures', + element: , + errorElement: , + }, + { + path: '/settings', + element: , + errorElement: , + }, + { + path: '/goals/:goalId', + element: , + errorElement: , + }, + { + path: '/fixtures/:fixtureId', + element: , + errorElement: , + }, + ], }, ]); function App() { - return ; + return ( + + + + ); } export default App; diff --git a/src/components/FixtureRow.tsx b/src/components/FixtureRow.tsx index 2db9ce2..7171a97 100644 --- a/src/components/FixtureRow.tsx +++ b/src/components/FixtureRow.tsx @@ -36,6 +36,8 @@ function FixtureRow({fixture}: FixtureRowProps) { src={fixture.teams.home.logo} alt="Home team logo" style={{maxWidth: '20px'}} + width={20} + height={20} >
{fixture.teams.home.name}
@@ -45,6 +47,8 @@ function FixtureRow({fixture}: FixtureRowProps) { src={fixture.teams.away.logo} alt="Away team logo" style={{maxWidth: '20px'}} + width={20} + height={20} >
{fixture.teams.away.name}
diff --git a/src/components/FixturesList.tsx b/src/components/FixturesList.tsx index 98946ca..0349340 100644 --- a/src/components/FixturesList.tsx +++ b/src/components/FixturesList.tsx @@ -26,7 +26,7 @@ function FixturesList({fixtures, leagues}: FixturesListProps) { {filteredLeagues.map((league) => (
- League Logo + League Logo
{league.name}
<> diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 2a0a2a0..80895c6 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,26 +1,84 @@ import {useEffect, useState} from 'react'; +import {NavLink, Outlet, useMatch} from 'react-router-dom'; import logoBlack from '../assets/top90logo-black.avif'; import logoWhite from '../assets/top90logo-white.avif'; - -interface HeaderProps { - selectedTheme: string; - onClick?: () => void; -} +import {useTheme} from '../hooks/useTheme'; const DARK = 'dark'; -function Header({selectedTheme, onClick}: HeaderProps) { - const [logo, setLogo] = useState(logoBlack); +function getLogo(theme: string) { + return theme === DARK ? logoWhite : logoBlack; +} + +function Header() { + // Child components can attach a reset function to this state via the outlet context + // so that the header can reset some state that they control. + const [resetFn, setResetFn] = useState<() => void>(); + const {theme} = useTheme(); + const [logo, setLogo] = useState(getLogo(theme)); useEffect(() => { - const logoToDisplay = selectedTheme === DARK ? logoWhite : logoBlack; + const logoToDisplay = getLogo(theme); setLogo(logoToDisplay); - }, [selectedTheme]); + }, [theme]); return ( -
- logo +
+
+
+ logo +
+ +
    +
  • + { + return `nav-link ${isActive ? 'active' : ''}`; + }} + id="home-tab" + type="button" + aria-controls="home" + aria-selected={Boolean(useMatch('/goals'))} + > + Home + +
  • +
  • + { + return `nav-link ${isActive ? 'active' : ''}`; + }} + id="fixtures-tab" + type="button" + aria-controls="fixtures" + aria-selected={Boolean(useMatch('/fixtures'))} + > + Fixtures + +
  • +
  • + { + return `nav-link ${isActive ? 'active' : ''}`; + }} + id="settings-tab" + type="button" + aria-controls="settings" + aria-selected={Boolean(useMatch('/settings'))} + > + Settings + +
  • +
+ +
+ +
+
); } diff --git a/src/components/ThemeSelect.tsx b/src/components/ThemeSelect.tsx index 1196d2a..a95aca6 100644 --- a/src/components/ThemeSelect.tsx +++ b/src/components/ThemeSelect.tsx @@ -1,13 +1,12 @@ -import {getPreferredTheme} from '../lib/utils'; +import {Theme} from '../hooks/useTheme'; import Select from './Select'; interface ThemeSelectProps { + theme: Theme; onChange: (value: string) => void; } -function ThemeSelect({onChange}: ThemeSelectProps) { - const preferredTheme = getPreferredTheme(); - +function ThemeSelect({theme, onChange}: ThemeSelectProps) { return ( - - -
- -
- -
-
- -
-
- -
-
+
+
+
+ + + +
- {getGoalsResponse?.goals?.map((goal) => ( -
- -
- ))} +
+ +
+
+ +
+
-
-
+
+
-
-
- -
-
-
-
-
- -
-
-
-
- -
-
+ {getGoalsResponse?.goals?.map((goal) => ( +
+ +
+ ))} + +
+
+ +
+
+
diff --git a/src/pages/Settings.tsx b/src/pages/Settings.tsx new file mode 100644 index 0000000..913f2e3 --- /dev/null +++ b/src/pages/Settings.tsx @@ -0,0 +1,16 @@ +import ThemeSelect from '../components/ThemeSelect'; +import {Theme, useTheme} from '../hooks/useTheme'; + +function Settings() { + const {theme, setTheme} = useTheme(); + + return ( +
+
+ setTheme(value as Theme)}> +
+
+ ); +} + +export default Settings; From 7b41bdc7f47e2bea08736dc3e9bccb23afcb7e80 Mon Sep 17 00:00:00 2001 From: astone123 Date: Sun, 17 Dec 2023 14:59:06 -0700 Subject: [PATCH 02/13] update tests --- e2e/fixtures.cy.ts | 8 +++++--- e2e/goals.cy.ts | 2 -- e2e/settings.cy.ts | 2 +- e2e/tabs.cy.ts | 13 +++++++++++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/e2e/fixtures.cy.ts b/e2e/fixtures.cy.ts index 08561fa..fd75ea3 100644 --- a/e2e/fixtures.cy.ts +++ b/e2e/fixtures.cy.ts @@ -1,7 +1,9 @@ beforeEach(() => { - cy.visit('/'); + cy.visit('/fixtures'); cy.wait('@fixtures'); cy.get('.nav-link').contains('Fixtures').click(); + + cy.get('@fixtures').should('have.property', 'state', 'Complete'); }); describe('fixtures', () => { @@ -30,8 +32,8 @@ describe('fixtures', () => { expect(loc.pathname).to.eq('/fixtures/1049002'); }); - cy.wait(['@goals', '@goals', '@goals']).then((interceptions) => { - const reqQuery = JSON.parse(interceptions[2].request.query.json as string); + cy.wait(['@goals', '@goals']).then((interceptions) => { + const reqQuery = JSON.parse(interceptions[1].request.query.json as string); cy.wrap(reqQuery).its('filter').its('fixtureId').should('equal', 1049002); }); diff --git a/e2e/goals.cy.ts b/e2e/goals.cy.ts index acc5e76..49863b8 100644 --- a/e2e/goals.cy.ts +++ b/e2e/goals.cy.ts @@ -13,8 +13,6 @@ describe('Goals', () => { expect(loc.pathname).to.eq('/goals'); }); - cy.get('@fixtures').should('have.property', 'state', 'Complete'); - cy.get('@leagues').should('have.property', 'state', 'Complete'); cy.get('@goals').should('have.property', 'state', 'Complete'); }); diff --git a/e2e/settings.cy.ts b/e2e/settings.cy.ts index 1284422..e853761 100644 --- a/e2e/settings.cy.ts +++ b/e2e/settings.cy.ts @@ -1,5 +1,5 @@ beforeEach(() => { - cy.visit('/'); + cy.visit('/settings'); cy.get('.nav-link').contains('Settings').click(); }); diff --git a/e2e/tabs.cy.ts b/e2e/tabs.cy.ts index b3591fb..195d8ed 100644 --- a/e2e/tabs.cy.ts +++ b/e2e/tabs.cy.ts @@ -3,16 +3,25 @@ describe('tabs', () => { cy.visit('/'); cy.get('.nav-link.active').contains('Home'); + cy.location().should((loc) => { + expect(loc.pathname).to.eq('/goals'); + }); cy.get('[aria-labelledby="home-tab"]').should('be.visible'); - cy.get('[aria-labelledby="fixtures-tab"]').should('not.be.visible'); - cy.get('[aria-labelledby="settings-tab"]').should('not.be.visible'); + cy.get('[aria-labelledby="fixtures-tab"]').should('not.exist'); + cy.get('[aria-labelledby="settings-tab"]').should('not.exist'); cy.get('.nav-link').contains('Fixtures').click(); cy.get('.nav-link.active').contains('Fixtures'); + cy.location().should((loc) => { + expect(loc.pathname).to.eq('/fixtures'); + }); cy.get('[aria-labelledby="fixtures-tab"]').should('be.visible'); cy.get('.nav-link').contains('Settings').click(); cy.get('.nav-link.active').contains('Settings'); + cy.location().should((loc) => { + expect(loc.pathname).to.eq('/settings'); + }); cy.get('[aria-labelledby="settings-tab"]').should('be.visible'); }); }); From 329ebd4e898c580dc0a075a355c3c36a5d141ac9 Mon Sep 17 00:00:00 2001 From: astone123 Date: Sun, 17 Dec 2023 15:03:20 -0700 Subject: [PATCH 03/13] format --- src/index.css | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/index.css b/src/index.css index 3966c16..8d35494 100644 --- a/src/index.css +++ b/src/index.css @@ -34,9 +34,15 @@ body { max-width: 800px; } -.fade-in { animation: fadeIn .5s; } +.fade-in { + animation: fadeIn 0.5s; +} @keyframes fadeIn { - 0% { opacity: 0; } - 100% { opacity: 1; } + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } } From 0f4bd8ffb4b37196352d74c801d42ec2800bbb77 Mon Sep 17 00:00:00 2001 From: Wes Weitzel Date: Sun, 17 Dec 2023 17:35:18 -0800 Subject: [PATCH 04/13] Import matchMedia mock --- src/App.test.tsx | 19 ++----------------- src/mocks/matchMedia.ts | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) create mode 100644 src/mocks/matchMedia.ts diff --git a/src/App.test.tsx b/src/App.test.tsx index 9f84bf8..5270620 100644 --- a/src/App.test.tsx +++ b/src/App.test.tsx @@ -1,23 +1,8 @@ +import './mocks/matchMedia.ts'; + import {render} from '@testing-library/react'; import App from './App'; test('renders the app with no errors', () => { - // window.matchMedia is not implemented in JSDOM so need to mock it - // https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom - - Object.defineProperty(window, 'matchMedia', { - writable: true, - value: vi.fn().mockImplementation((query) => ({ - matches: false, - media: query, - onchange: null, - addListener: vi.fn(), // deprecated - removeListener: vi.fn(), // deprecated - addEventListener: vi.fn(), - removeEventListener: vi.fn(), - dispatchEvent: vi.fn(), - })), - }); - render(); }); diff --git a/src/mocks/matchMedia.ts b/src/mocks/matchMedia.ts new file mode 100644 index 0000000..49086ab --- /dev/null +++ b/src/mocks/matchMedia.ts @@ -0,0 +1,16 @@ +// window.matchMedia is not implemented in JSDOM so need to mock it +// https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom + +Object.defineProperty(window, 'matchMedia', { + writable: true, + value: vi.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: vi.fn(), + removeListener: vi.fn(), + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + dispatchEvent: vi.fn(), + })), +}); From 7d0ef3922014c48d6cc2b8b4faa0a7ff68c72cf6 Mon Sep 17 00:00:00 2001 From: astone123 Date: Mon, 18 Dec 2023 19:17:38 -0700 Subject: [PATCH 05/13] animate tab transitions --- bun.lockb | Bin 372915 -> 374311 bytes package.json | 2 + src/App.tsx | 76 ++++++++++++------------ src/components/Header.tsx | 121 +++++++++++++++++++------------------- src/index.css | 28 ++++++--- src/index.tsx | 5 +- src/pages/Fixtures.tsx | 2 +- src/pages/Goals.tsx | 6 +- src/pages/Settings.tsx | 2 +- 9 files changed, 126 insertions(+), 116 deletions(-) diff --git a/bun.lockb b/bun.lockb index e61821e966cfaa32ae681fab0e89149b537d7f00..e5ef0776c3ba8b6d80b07511c300e9e1117b9139 100755 GIT binary patch delta 74095 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 G`+op)+!BKT delta 73324 zcmeF4dze*Y%RAx$Lsf8&-=cAz1L-3)_m{p=RP0Sz1BXoJ^1wz z%eNkJOZ#@+r;JIOesQZ!`yJHy!$tePoWJkQ_>5D=wj2E1zZT8elHIE3agRnrI-Z<8 z?C9$Amo^HF{c~_AH1()(D0BdNxYNeyq4=F7@zB!T?3{AK10tc&LHKQ`c$U-s9N$g8 zCh#9gt8!0lY|9Pur{*!-=6 za?TA+eb*H*g;G^OqQI)`ipvUUP#WD4Z;z_SCAmdo)X*`xqbtUtg=KP~(5q4Z*2oEm ztz$Hld>N|xpKj{E5;>~+UMw|For}_=sW&+-%rDGM9Wy#~IiCNf=9iU~GfRa<7iqUeu1lV1LLJOW{(f1E>uyPPaUC9NkvgrPVt!B39alL4n`?rYIjt9>qmaI zsXZz`>L}ax?6Rt&oC*1j$}^k#2Q)q^(x$0@QsXnL^IF?#&O?>_uw!lV#!mB#@^VY_ z%gY`iUNfFZmxxb{@QmYZbMniwOG~q>LW%C30oTyAMb+J$(j1LUXmrKcvALxo|D(oU z^($>`lePB&HvM&|>K&6?5-i@arMYE!q{}VO)*24Ycj@P% zwA(*=zt)kesNa3R6ROYXXuHI!95W`rwB$v+x?WzKTADj9w{rgJ)|ckm9b_n8T|WU; zmG_=uSMn}YLy=!rJbHX?PWf$k#UDvJ@z|L*T_JiHJ}iHm44Y|{mTh-O3 zABcL@L?njnSAbgHOA%-hs)C0(e@Zty+n3@sv_S!AB445b9lP87ok*uE>sS0i=nszf zXM|O5ceGj+B{Kff!#3ayB2>YFs4{ZlrH;wxvZ^c(u7vzvwr9_vY(P^-muBbWmW4uB zon!fXPRmi1GagmPR`s_2VN|={CFd~zYDs=sYEbZ+J~rXC9c;q>eeIB6j#s*gs0zw1 zsw&Jb&&f;d0k!=?p%(DO;w|ZK)2~7`0!_}f9T|&P{(JG#dFNK!p}NRr(41>o4#2DB zf9~C3<@AdA5S>=z;LWlq9r%WUJlKmgZ{<4uvj`+6GmY z1~ybN+3No1+X8bdRb^RdQg$hK(NO5L3v31DRVBIH`9mK&Khb6j4ZYAdY$d7=Ek-r; zLxfF;y>R*$PKjm1|9f9wR<@ zQpm~4Eh#Sx{W8Ko?7$PM_grL?eT}NVoV@IU2_*k*q-_`dNgZ2|J?=~V;lzK0s+uD% zw#DV5>enXnD?U4?xU`7;ujAG4gr73lmREwR8E0P_tnuop75QUQ%d*GjZUU$Qx1%aB z(b3cK%8>A5DM0ZTFvDudHQZ5@FVWADE?z64{n(<=Rou?BeK6g{1(R|^C2nN|@i`Zk zm5mucI@l1$xrhN2pbQ-tW$6v5W@w7jAY)NUVehearuvdk4XP}+ccH92|N4X4SNG?} zp=@WNP0*6kVlM8oPt9Zdl(Q8ge5RfB(` zQmwS@sQSOzX-RfzZV?No(?mNVufa7jYfv@pkW!nk4DV6@)cpWj0%LN=<`?CT2{m^a z{``cJcrv+w#;PHWNf#_N23S5^Var(z*PZQNyc&8tz8N}vlI3-%8uUEcoDFH}nC!B= z)ai)l|KPieF0w8i^}VH6(Fu=S~U+B9sePzLBUp znsK>p!1ZV~7v7Va(W$gs-#(4RBiE(q}s@9MdV7 z(ti@Ka@LVw>Bd^Gr#9G!=%+;PSBNv*J$ zjf?Vn&$JDAxSD_pX78f7Q0QK~=5QYBp&2f|ii?bO7pnIi(ut6jWswrrVs$qwr>R4`BPIf^y{m&`LugIsMlW(#W{!bfc2O6S={dvPZ3a+U;098+m zvWtrI8KgfyGygurHe~8-o6c?Ejo88cj!oL1ROZ|GJf|h81;shp<+*5nVSafi?=~C% zkHg zW%-HuD80juv)#te;Ob|os=~wzrNl0fc=6(17=;oqigu6nKRN7#>Mq;{lx^`ncH!KE zYJueE6c?oymsQ@5*F4|oG~oHgWma=TQ(eA_L_X&~3)u`F4hUdC&4dYdp> zJ#`%ct@s>X8}k$sdgOkapcd5%T}`|i^p6F$p^0}n5(5!=!15PRrRNce*B_zKjSt!e z^dVU-({yZ-u{{3@Z48hit~gBSl#O zy9td;JaxW8y!MJ!sL~fcY&-HCdMrMlauh!j)rjA|ga&HAPkF=+Q9qYpQa+D9^kDW< zTVZ*AQB@i5noPrM=(N;wsW`E84qay71Sun4YjqT=3jVwl6KgiH6vvY;cmbdaDX)Hr zN{b5$DoS`upt!7@X$iG@%of;+3|b3`YdW`VbVYu_n9z$)*q$vzHIlXH;ph#HPj-Hc zi$CA-_!Er361D{#fgX;^?|a-%#TTgf+o%eD4psaksD`q}`D;+6n}{miNVFN+2UYrx zsN#=uzObO6N*%5kTU{&-oy#ioNU$2!VoW^Ebt0>=1EkGmOFiZd46u$q!(?64qa=@-;Hlc{6f;HzDVs0 z{?A7oRh@WtNM2{RC)JZ(P!{^_W!vy~*M~wUkbV`Kg5HIyoC96@DR|!Gn0gQC)vocp zosmNuAAHT;f%|Q+GkObN7ujySX6QT8GqBZDHxkfe-9fM0g1`Hx?Z~5W6@2*{b|kB^ zxwmt56yr5hB^&M3=Aatk^H5EB4^;7kNp}?56;+3CpgdLF7Cj05<)u(4RolRO1dazR zcRC$yk00jrH1tILK`y?78}TXc*%|u)^@x8H)l5`wvfIE#s75Tel!uhm+{(huHvLPa zQv(~-p{Ee|kqGr*Hb4a(MFm=0C%$iaveV1_HO-H#er${Fk9&a_dI+y-FLS)S^o%nZ z|N6J}?tmXc{Ebc%ue0*;P2f*cm74R!$F}y^R$J@OcqVA-L#W~}COr$ZdTLpAW$*&6 zvao=SrL^n<8^P{WT9(@>6e^lrmR*w1OFZ~7WIPsCMel!V8+sW2P<;Mpmhbz(PE0=< zqVDg)tHLi(b?ie_JbQFDFP;2%TO1ad`i1{xi=+Ded1;hP27Kk@CK_Bk&tumt@wLwz$NT(TBvVVHfYT z#YQMz{&T#lOaI2^D=x|{*Bf`ddzYV+I=1Ld@~Ii8err24h;r4jo+$jdsfmIMvM;OR zbwF7+3f7W+_B&hfW8eA7E!$ToW<)QL#^x8~_W$0tcWnN+3SKOQ(p-B=^y-Ntw=y>; z8$J48c3m|^)ea3tD(~d)@BD8+xCua$i2oc_|0n0==jeWyUq(r+fYA55?Le*l(Iz~J z3YB3@c2)3h#?g3XJOWh*4{{BP@3H;({&PD|Y_fT|y!kk~pdxp4e(9JU@L;A(gZe@r z;8pG#RC|uSlXJ;F<|3B=VFD{0aEsq*MN!D*NtBCcdTa+`WId1^oHh$+MywdF`&A=U9SQSMk@EjUyp*ThvTD5}OQ0~jBoz9F zf>lvTG#pes&gn2z1)PKG;>&b=)qb|3P2^KWL-)7w%TSHT>u_}-@i4i{rK7&!ZQ;e? z@cF@z+)0FbaEBKT{4IDbs%egw9}o`q`>m+vFdyDr=@}6Z~lsHvZHRLe{A zl57c&q3Y{NPLok}#l27nCB}42?!*e7yF))y!ZF0hn|)b!_^9WqzdqrC_QOuUqt)GQ zrk-;0^xV-IPfSn!^t+NK{*0sA`rjSZ+<)|_=F4M8mmC)B{A2k+2UhvBmsfT;##?^R zS;NDJ9`W0;y`EkA)=dXJ^u`-!HNG>?-;;4qxUE00OV@CTzqw1-$ircO#M$xiVSZL- z*XZa7+nhftGb235-<;Xi`v!j&O=;}69-c*+BFi3`Xjo{@cTMv$nRhilYPKF8PLJUR;`USa$XlLY*E1eD@&G@%SKO;%db$U3TYIKO zJ~+Uy0UpT}9|tz_v%955hu{YJDP1$X1%$e&SasLiiaRYxMX}MNSTU#hTQV~u0}t|( zd&eVJ9psPb9gn^U@9A&pkr9otc6$1wx@CCh66zC_)4Eq$^fp{?rHH(r={vRPAuNwuH9wMUw_36~bsmi>BqjO98E!{qczi;O+Quj?E4Rs&TkL)I-V53vk2p8(9m6xoDJsRZK0chz`l$on3``ADwmv(}dm7gf7g8yaZw~Wo2E@G&*~09A zZDsfl<{H&BhWzY)X_0}4`y;xtb`JMz2F4?=9q!i+j7J-@9klniu--a0^GBQ)_bvvU zqnd-p-H+3BP|4Y8k&m1C$%EpNlq38RgW}$W>#WY(J%UMx=jpKl%K)cP*g40Ph(^QvjpLTKf&B zUWI%u$M!A!IV@b*uO&cSu@ zw+zgPZX^^mz-z+ILi0x-nSk?J`Xh$KBR914Ylg(V_lQ&fgUce)w3VMcH11Wm3Wd%9 zHukp;Op7dU<<|he0uHjJ3{3MfQbM7TK|W26N%2Pvi+fvuns++I>N)Z#ziwDOHi4(k zp1}HUcuOI6B-EZSj`C}U$Gvt(+d3Qht$U|MMjh=ZXT`nSfgQ*j_FHGAMP5GIugQu> z!pHb^NT*}`-}-QR3}d^PJuEHqOl!a9BG%ur zwpEN;VY=R<<*FKz;VmSjrZF77(!7sx_G-|ybU)6o8yWZRJgz?Hl=K)zLmLgI@u=hN z5Cs=XtO%!#s=njV`yprRD)l}i)RQ=R%Wl-Rja>}5Rp~KIdmGh1EpmGsKlzfl_ZCoP z1zS_p<7Rx8za=Zf>p@861dBQPCGKp0RKE=Gq!VpR8vEHf=`oBFF`b!d(Pwb|{Mzmr zUaYOX5=aCei0h)QC31aRza~2#S>M*L%Z^7=+A#>?(Og1j`L$g$B9FB5YevVtq?7E( za`~~x^~LqniuYy_(kOEM_f3nf#c7P{$H8lKa{Y{Crp5Z>bSc>QH}3Uf0PPL5w`W>( z1@26L%gBuA&ic@CM4u6Cl*3N(N94x6hXGnB+!O|_=#;G-o z7|Zx^oNXyH?Cr#;0b{ z{p5nUmw&p2!G-B9#_3`Tw)V&ur~7pU@#qn37Pc3I2x%yS#L=a=?!nzkJCxmYbzPl< zQ$4}GF?JKL)eO$LL0PX7((YvM>yBe&yRwLJ7y4W7 z=@L%!lS|@WBdTF`)E?%y1MXZL>-D@e?;#vxh|^uF4yRV&SQkezf|_koG7=*@`!y5e z-U^^H1bcSmi_U&>X*_xy8y*+M#0+l~A(aqZ{n7cj?*5kZyM)j3lgr}Kb{X<17i2^x zWcW2@aqnG#MluvM?J$CNT(i4#C+niyf9xuVM(vN0SqJF{p|?ZRB8O%A$rW*LEYIN@ z0v7-I=`oCLxq79bR#hW^{=~FM*SMcNDehGPRjjS~S)4X)hG<24V@$9K#IEUT%lV`3 z=OIc+HAB<9{aF4C8NF3Kah#e@T$eQOGMrKp*EcQt7>C|OH|v`Li&4^PnyT$kWdolM9zmqqmyLHb44nK|zloQ8#l zy^tR3WeW)ICecdVIeu-I4DTI6LxU_@l_xV7c0H?r**HxOtEePB=1g#*c&GHX_0l>9 zxdf*{u|x2(i=!%vJdpk~3hD>@#sD1iiqllxfK#vRP3l$LzYT44|Gv}`OxH+4{cXN@ zn)e`1rP#}E8&3IxE#7O*npCgZ0qH^(PUBspz%2i$1?!$7y9dtV(O(S`Rqk=NC&-3d@@-Waf zk+J^)XGdFGU57!onRb>YIA<@K1vs~I$hQrrih^!OQU?1q*YT7#*sr@T?rk1yw=w3E z%ecw;{)icIuiN?cQ^3GZIp41XW?YcCY0YOloPY~1y~v^q{F<3O#0l8m3`vW$yU>cZFLT3fbV>2P`tvsB)lpbR}+ZD(9i}u9@ zH-yO5L;Vpq#=VUKLE8D(u{?R*;pUD9k6t*Q8!pK3W)jl8(M<|@7S}JR$s3+%AafAw zi_`V;$8InMqIt86ajlDI#wMhPhx>Im#l6m1_EDY{K^L#f@<-ep_uc@ela1Nn=`uFL zue&)O9n4zosD~WyYC`p0^48*P+qRD6mC;3h-7QSPMTvFax*{!7b&)?}_R#2)z-DIa zAb-nE8QvyBnnn1c^zg-gogep#FHWomT|gb>*W4EO&b-79yWLGL z$Eji*o9+^vE)qMagI@Du0NZ=!B68lPe%+k7ch9AX5#w@+eTLKe{bM4I&#rGoL3#|M zc?zj#k=wHUWW!yr9_luG!01GJR*iQKPTgYqZ%d2ZGTKj`%L_iBZ6;$7IW$KvUc7U2 z>L=rZw8-onKY3o<+f)x*Uyv3(c#M|dmgyN@A3_>MR>$+V^(7Q)>?yn-~i{n+?a=8?&~FdvPk|;9wfZ=GiW=2e8@A z#dRl+VPSu$!)aNCOm<^l2j~0AwJfXrMA3THUWL;m92w@Nc?)r=xc&V3Woh0!xSlp{ zUwY&5x?oZ+%!uTS_iOHodv^fb0>6njEynwGnQ<>=Lj9PRqvHNbnBCyG4H8z42Jj;^0ln1}p6$i1u9WI5(zw zpX0cv>Pn8M$4cyOVDBGgIPRj_znQdEe>k2%e#f1u9VXI!qF;AEuhAza=7wt`x(*i) z-n2QoG_k>G=Evc*aO}g*eCL?mOVXn6~gK=*M za1hXTqI0?J5-q(kEn0ya|P<65O@DZdGUN%k9YUbk0K_M(zHi)LO_u2&;muU*Y=WXdf?`7G9C4 zQJ3UrIQ5HymZ!(2*gAME%B6TEPOC2Jx1N+1eHV8|aI0u~Wuk88Av#npc(A>NkczS` z++6RpM;uw5=!@pHKhCA(F=r+&xX`=}3I!#QC)#o<^#_~RFhaUacyDT8TJ#>=z~EN- z4WZNFtVTN4dRl$!c_p2T>*$Z-)@B?hH@*4^cXp6R7hu{|w&bwcdI;}(;?yq6V`vuR z(s67)v@&`%Pj;#`dI=%>P%w{>+GTtEI!>#;v7TF^&92e@r1XV^>{|uP2-z9s*)+Bd zrwhVO+d3~cy?(7QWYci=THg9jdU(2D_e9*=15@L9Nax|U=e2gZ@WxM%v}h@gw+VQk zWI3Vkwjn$^H@U8UuvrV|;oR2EJ9}$!!~bXkH}I4h?kWuiq%rQaV5pZ9(oi1|Y@I`9 z+M%|)&PtqGWgqnR;7-G_Y`9F@UT+r>LpnS?hB=F<{es8XyKvobhwE15eS}j5hpK`| z{04u-Q@l5KL!zv$+~=3#?9}ma;kCTcmP}zxWVUm>(~PUd4W%%pE}H{ z->Vsq%W)cI+I~}-w+5#vCm+vbdvP88lwKL$88_L6v%PTpE5g}j!p7-6jMHe_jp!Sk z-KzDn<)oYI+elqwaXoE2a1Y^BmqsSd`vf=8*1S4Bc8i^a;Qe>+CY)9cFKg-A^Ei#6 z?dY#K+kADq`|L!+v^;LZ4I-s|$^RLyBaYQcJM=E@ z6kOP3H{uHM?S$BT9dY)$R2QzqxvK~Fv~#u(KjTy;i-Ne0x7mCw-2Uk?jIxDHYkl;9 zQ={#ugy$sYU)eg~?Cj_rjeO_Wx#;@*KjQkOML)suKE==suhs4KUE|_EAE()|`{GSF z&4*pLZ{qp|P8(J$V_Rk4>l}fzQ=m0{6HcWt2-N%vPNmohIe2b^l@jfPOZP_&%kZWW zQY!8(L(`%!;)0uPEHclwuYT{2q|ft5tmkot2s@fu`kP%cb{ZZ~52^8!U*XBACb9C= zs;hD7)W92@-1VNq1+QVey@a$xxTUfvy53KLRVx3>pp zM@Hk`I^K%`GD&w(uq!-{(>23A zlEwHF?##exJX7zo_efgE`|1^U`8EHHM;`!k_qiy;t0Qz)kXYk#_}z(3QkUBZ+-bI; zr_!R= zeF&)?_5-?WahjwQf9ox2k+&c4Yu=4}%^tKLxdd6gIk=2OLEif~%^dqB&p}NV+A0s% z2UK2PT<7}2)-3dsH^sd}7TL*d7VHDVaOVZtH73vDhS@zQ~$K{JIa~(QlXX zDWt#UgADJ4N9|Yz*G+UJu3Nxs3E3-8m-g$A`pF;0BPTEOM|>EMUb&13QL5-ugffEk zKN3=U%BkS~`j7fOfI%CN(*;0xN2Wz<5I{gh8KqAgeG6Iq2u z6Y3j;78A0u-_^6uD--Fa60)&t3E3P6uVUbXycZF&?0!P$1?-3V*t4HZlyV&*o9+!l zw!CIfCD_G;Yi?;dzPaJm+_A#v@^z@^zXvZ$WL>0yLh3EOk4=j~-}KM5G~ygyloC?b7ExqI=}9_c=S8qx%y~4 z+GTz4r3|wDN+_L#2L_+G_I<^#+ZB&o`--3Zecb!kEA}&ATk)V*8#E)j5XZ&KYl|I( z#w3~-9q?MPmB7~%vQ6OiaO9WQ{JJ0be!>R(gb_SldW)T71et&X{+YN-b4QE}`lnyl zH6Fbgm>mqtiLW=TzZ!Ru>W|hD$_-j_%^Qik2HS}D49>0tZ7TnI!>{=<9=&!W8?3+O ziHyi+8~x;;;*k^I^hY37Z~8Sq#iP%?846vZvLZ*n26zk)*;Qq+h`#sxuyMAWibiwfS z&eGh5)8%2G50Bnt*Ot9~&BXO1&c65c7H)L#4A^P2on~Hx^FCuGPUUesXP}^YPC*LU}>Kda+XW zfo($YQq5b8JDs>Af=9BKw%7%4D?RK(`<7SCpU><3VYp0E9uz!k-iA9D=PoRq-R!gZ z-2Wq60dvJ`l0G;!(cT1aaxS={B5!{byqkN>$9Ax6t>bYThT!2b^6bZ^E*y@>nr*dx ztA9B4hCzCgj%s*?eg}?^;HP)d_eSGEeR?U^;uE|0?W2ExoG!8;i+43nDH(m95!T>z zTiHK&4&3b=Dc??uw)>O;42E(xA3q_o53<8b%jjtRP93}Tcj_ByUXO1Qt4?o=PQz*7>?^hvIM+E|^?ZwS%bQ2)^l#0GL&EV$ z*|(+!^&a^)QIlRFeS=dA?Xo%PJ6jHW2g5lUrzOQpYTCO2r@^-ub(3B7tzkbu57(YJ z+xjUu-45(4sHJ~6cA%~GPS;M;?`?fvur&xW$HmzW zrSG;AN0Fo~#i=R5t5feWoaUSN)p^O?^2fy5$-Xl^R&P{YHBP&fE%HsA3JJzNa`;as z`AFtw=uhCm*d#!ctmR3Z zeFJ?DA&oGz{Wk9b{SpdwwT_|6$ED)9*lYQ;7N-?Ne|W5}`^6-;qTHlkZJ!wzn$-=b zEr2VAw;?~n^$1?EpSUj+Duvqzl;yag_0Ic^uj1Fc$vACq!F$l&W4JV2Qm`7n!VL_Z zK7+gHce?<1M7)`gfN(vCYpI7!@5oR%csOO3w|01&+fAan>J4I38-Um9HGndB20@^7HJX6?1to^M<$ zO)%B58*o|_^#dLK2ErG0Zpw(Ac3`-{Tfc|i?Zp6^?cgrk=+y(m{`*}s8>Ji+_FJBv z=@sxrYpv9zVCQ=jr#?na>sH}3?+m`Bts%EtW;sqR3S9IVT<|5E=+8k&Lv-fB;ozNL zwjdtYC*$npqD^5D&MhIvXdBK>CVNSw#UWFoIT7-gsU&P;k*T(o1&PJTaaE3Ws zJ3SWFAr(K4Gs4-1Q-?HSR`(4bU9I97iO~L>^fEa9lO9NlA)G3f;SP?5s%nNi-cXf3 z%Wn$M|2s$nYR6la$R4yk;x zwbBEEpg?1@uV47cYPDmMiWap*wmCiR*^{d)(>EWEd^HSxz&3UQnx!w5&YKv$9 zf+X@Pz_<+mNwqF&I6cn$IF;{yP90KJ{D2HcLshy56J2-^Be2lvB2*)~gi{qf%BkZ& zsVe$Mkjkp^Kf$STS2+H^sfJC5B2>|noMAKN-0+F!#&g5X&BN`(v0%+SO@xkys*+c8 zYA#;nQ~@tLeFfDaRk~MYIHYRX>zvB>E~nz($(o7d0w^|+Q>Jm0oCG6%h^l%w^I_>4sOBFnaKQVNm z<5G>(10A4f1IkltMO{rvtf5x z5(o~dg3mcGRd9{-QU#xPUaEp#bbPJjQmxfD9e>N|+b&+JhHMHS$KN1e3#ubR1%BW% zY*7Z2dOr7Db?6gWrwV?`A1%S{sN%nJ@eNhzYsaMu?&Qxw=w4LY)9Q}@l z2c+^BJ1>>L1XTs2Q8i?|;}cLFf2E2lbn#Nl}A1plPuGfUIL(P|a&3JG)(yzUYfIE zp(GkJ9x*m9AeS>Q}@7{wU#jP6wk(I82dF z)w7G7Z>Y*Q%5kZJm-0t^wBu6wF{rM@364+D4zF+#f0UpE)m^#D@hebOJk`Zth3aUi z8se)Rm#X12otLWI8&H*Vv*S_)t8eA63h*7c-FbsHgFlQarf`IN z?)l8&ZB9RT`h}8lNY$hr&i|EafWLF`4OP|ca$G9^z0)5WxgCcYicm&ld$AL+1$1#4r7AGfY20zCwxd4I|G%pW zGCMB{AK6Xy^>gJ)<@=**=s?H+N;NZsl+L8Y!$+EtBg2PQtCLwUt&dAw-i9ik3s)Uu zUA$C&oYOqVrMmtnI$r8{Lsc8f9Y?E!-Xc{)qp}@rEk2hd zQT_|{aK5Juhg6;KgDQW2$E`B|{|^4$t3dwa!a}XUQ1^RKfKw zLaGXGaK536-{|6JIlT#0MYp0V=QdQwe^Qk*C#vLTUytyK!RyeuuDp4urs_^tj#TMu z#m$tSY+H)H-$hFmy#PHKeZz67_(rF1I(^IO+o%qy(!JySe^Ol{A4c8&{jtj+RRLR_ zZ>Zv*z%?$Px%h^vaoY}8hrV+9jY}t0{%=v`-{ttOXpW8e-T|o+{@{E=RmRld>J+@L#D~b(qWE z)TNWE*u$OwZ&b}X!liGZc6)CCNcNWr|2M7zo4W#~YETRGF!W^SPeIjzQ&BC9bX4Qj z1=UD)+t1xzx&c&R4^)R#z89*3&q1|vCpun+>dk}8QB`mys^hOz`KyUn!)BwZ_;ys> zC_;g`sE&rJmfi_hL+*0%f2At$K3C5DP8T?R09F2l&M!iBNY(I^hh1Q)i;ybAGI=wl zk9)stC06ZR<)WWLHKH#%z7|z^>s`YWdmmN04^SNq)J~Cr z5`O3se&iBLl~IR2)YGY>p=u!i?>{r7TYrCO`1gl~4+P8V?+*j8frZRA1eO+p&+-^D!)8EXxWCynKAdD05DFh?b`^$) znHduRv&I9G%;xcc^a4Ve699*pzD0oT0!xYjP0U__xrKmH#ek+}Q8A!T5g@4q(9C3& z0QLy17C6#)69Eg00fiF*EzBx`;U$2SQb0?SUkZp#1Z)sUF)hjfD+Q*M0gg871@cM( zspWvyrm7s!ybQ2K;5gH+0XPX_E0IMwv60&EvpQU&N>_6p3c1dO^2aJpG^8K6%UAn9^I zCzEwKV2{9Rfi&Y?0a$n$pzsPnXR}IR_~n3km4L2h zy+Ga+Kx#Fho2jY>G`|wCMWBaiHx;l>VAfPXFSA*ovKo*%4ba=noCat+6|hsFujzah zV3R=YRe=6xhro=QW8^t}eKU0}&IfWc<3z}%|=qoxBcFpH)G z`dkA@x)w0RWL*o`Bd}UvnDMUT&%)_|!s`H8W|hG3YXK=U02i738GzVzfDHnpOpBR- zl>$>{0xmJ@1@dM9Qm+SOo2u&p&1V9(2;`V{HvrZN%(?-PYc>m1UJuB;5irioyb;j$ z2Ea~%eA9UrV3R=YEWiY_Ltw^@fB`oF3eCKm0O_*;`vi(j-J~tmS#%4a&&`0O*?{h@A zfhnfNZGe>mQ*HxPoAm;DJ|J}tV4A6#189C5V2i-jrrqs;bpo?)2TV7c1uEwNG7aE5 zGt&Ut-VWF)Fw=CN3)m!3I~Q<+*)00zth%rf)l0n+CJ_6gi<`qlup3oNMt%r<)k z=FS6*x&z>wMRx%D)Buw11k5p6cLMeZtQIiFs|75)15j8Cm}gcA48IeQau?tZlYbW= zRtwl5P-|M;4Ol5K;X1ze(U4Ybk0P{`NJ%HwS1GWg9%odSzY=lcMg1ZwXCEH*m?X50%Ha6e#)nRh=R{XW1xfu*MJ0>E~G zB?|z{%wB=H_X9>f09bAoJpkyl0Fd+`;Bk}nAYhNcYJnBTTL@VA0HAOoV3k<~2tR3> zEJB_#`G|=vBznUlqF0+14*^yROnC_KtXVIRw+N8B7_i1vEe14y2(U%q1=H?fz&e3h z4+GYk%>tE+0hvnxFPoW50Bs)z>=amUIzIx~BvAVZ;8n9jV8#-_fTe&9X5Laj`XhjS z0#}EO`{L(d-qNyA&{L8Q?9mXc?f-qkyD;0NycK{{ZX}SS|3L@s2|(sbz!zrbN=o`yUbpJxlaN{Jq`H5EP5Ky=P5waYQS!jwHmNTV70(c z#(M^^@M%EdGl0EjmB8@TfRty${Ug7G%=l-+Lrv@%$Oe&pA(Q+ZWTnWI=ODj_%qt>! z&q7kyP)yiVt)ZCa&jGdwG&1d;2dopA^*kVIHVag)0c5@a*x$^20nqk&z)k_rbbb-A zNuc&cz=39mz>F6F1J(kP%)GUL^cM;36F9{5eF?B#V985>CT6d|+_ivFF9VvIMK1&T zyaY&E2WV!p)&ceitQI)Zcv{^5Z_X;5OH9%`q^%|i0tAH&6$C-8;0P6&1Z2+_}n*}Og17!XaaH5&{Pe9uZ zfSm&EOy}1Dn*?fK2b^qn2+a5=V89!IR5R}lK>F)|eFCSNz8eAC1(s|CbTE4b=DqhmjQ2KR;hTWMw*j5aDuLl|0aD%pWSIPS0I|0L z8w4^IK!3ACV8&*^fcF6d%)Ivj>2-j80_T~&9{{%3g%2_h ze-J)b&mRJF-zUYWEu^@>EZPF-^8p~~L%L-9~Q}qd;`BuOdfgIEBQ@}cb zS)T%O&1QkhPXL*p0mhk`p8?u_3fL)-Z#r)SY!ay52AE)W2+a5lFyM1Qp_%tNAblHP zpFpwc`vqXTz>+Tj6U|IGJ19kys znR&Ya>E8kN3EXV@eh=6#u;hEdY_nHj?k>Qn9{|2t^aG&J_kg5-0p^&je*yLgtQIiF z+YMOw1E6p>V4hheF#KPDlpg_inEW3BvE6_T0=1^aPk@yIQ+@*6ZPp9q{Rl|i1DJ2B z_5hmy1lS^QpJ}%juufpsUcdsgS)g(cAoFLygJ$N>fVO)9I|UY*&c6UQ3Do`qSZsC( z%=j5F;8(yBGw)YG`Y(We0!vNbeSqx(OZEYlnY{vYe+7*C4Y1rS`VG)$A0X*>z~d(C zcfcNj)dDN#coBx!8|4wvD82^;X4@ZX0iA5L-`PHUH1iunLC4zs} ztjC+YFd(%NV2!D21ZW-sY!P_Dv}+7lCoroqV6E9KP}vBO83nv-W<~*R8v}LrKOlWSz&?T3P2U(`yTFndV58Y9Fn52zC=c+KS)`u! zQCE@<0K8+e4gl;CSS|3L@eTwm^Zcjgq#Oiz-{cNCK=B zn34qe$gCI0I|z_^Fkq{xIvCJA39v=rQ`7Dcz&e3hhXA&j%>tDN12PW zV5h(i)42&?lR#|~z*lC6z>Gry0}cc1H1iGvq&ETV6ZqEjZ3@^fu%szqm)R>Y_b|Yy z!vQ~-MTZ0WGzBCz1MD_g%>a7@Rtx-OydwY$4+j(;0oZF+2@G!rNI5dX(?{5hKQhA8 z#}SYXBKyK7xjAH|$du-g-^1n=k-Q@zsVyibY^qvNO!MY|Edq^9yJWyRfmz9bsM#z~ z*#eN+60pCS*%Ht;8L(5pGo4!jHVM?W0vu>|2+U{+7?1);GV@XZ>8$|!1P(EMj{0>h61 zq#O%qY4VQ+#99M32&9-6#{pIfOgRp4v{^5ZcPt?FctC4Ybv&T?aeyrX$C-9*BE!PR zn`x3ZW;0?ck0(0w1fowgGfx1tZ3EaT(9U!|5wJ<1_C&zRW{1Fx695C+0#ePqwt(~# z0s90_HGSIwwhJt22k2n-3e0T_7}-iOxDSOJp!u*(u{WsVBtxC z!czd9%_@Q6Cj(Ma0U0Jg6%acGut6Zxv}g}lDKMoypsQIgke3QbJr&T+RGkWF-X5?; zpoeL98epBktkVF!%w~bgQvsPB0KLu34uH0&0d@-XHJv*GHVM>r1oSsM1ZH#q3^*My zz|1=xklqonPvAV$_YA;xfhA`E2AjPCb5941>IAsJEb0X4a|R&kOu!J6btYhsz-obE z#!CY%>;x!G17w+10>jS)q@)8bGWqF%SQ=mhATlaqKAE70b&)omNpgvq*qJ1G>40|x zvQ6u=0L?oCrk@4KF&hQe33TFrZOgOAv|J|7Z$pkEj1BwklI?R9w4CxA(Xy$hX%#8!0X9LR2;IjdJx&j^- zs4(GffIR}a-2ju#GJ%C>1DbUQRGIAVfZ^Q$YXvShO?m)g-2oLn08`8wft3PndIGA= z#GZh>9)NcQrkU2g0L^;>ruPC|Z8i$56XkCNl16a@(aI@JZuw7tCKfr7=zaL<3UqG}!z&C^Y zbGhDT7D?uq@VUtCCQD+>GRa)y4M66ZY)Oq-CAq^i8Hn6z@+GxqjpQ!V;ymPTGf{Gn zSudGyS`R|*HC2-P%tp!mrrls0b;`e6Edi1(yI`H@gJ33k@qlOn;0H6f0MKUw z;BkT7CR_;EBao}7%%99MfrSNtW<`L#Cc6kQyb!Qf;1|=R7!WH0R21vMB4VB|)`Nve zn-V=(L`-Rk9xRF>??8C4Xg!fk%}W5&CjuIojRNZgI+X&VW?Ctraw1@x!2YH~8K7+` zU``ppGg}2V3G^xl9B5{j17?%~b_*n#ZWVy^a=?NLz#(Rrz;=NllK@T3{7Hbh6@chu zKvOe#GN8{Sz~chVOt=!TMt z!*7dTnX4MkZQV31*BI47EA@4YIX^17Z@@P(80`~ z2ADe)5WNa;x*2>GpwBeG;{u&b_-eo&f!wPBX=a(g!m9wyt^ss5+1CJuUkz9*kYSok z2gI%cR7?kCnl%C|1=?H-=xQcj3&@)ect@a{X?-1_`L%%Q*8zH%jRNZgI?Vv|GSg-N zDz5`<6XUqz+f}~M!?(~0MS{13(VkIfIc?@9v2v5!Z!i-2;|-b7-p6UESv>sb~7N$WZw)J zeiLA=z(uCXEr8g~fQnlHqs$tCl>%*M11>QWX9MzX0lXuSZCc+7Xg(V-{Z>GZ*(k71 zppy^CHPd`R<*k5i0^>}F+W>8Sz?|Cv`DUxYCV^ga029pYIe;0r0d@-%nr^oP(&qpc z+zu!6An+Is*um>mK$?gk8)513`< z%?G641K1~Uv*~*;V7tJQdjYe}UV*vu0i*5%_-4_4fIjyElI{o0FOU=B8NwQsFA4zxw>AM6l_hG=2C4l8-uRxzAfKiVC z9yf~~0qhY-S_)WUvX%lCJ_1-Ru*!IkMqZ5#;G0zZD%@1_-0H|e{^zib&DYB!t)jQ^ zZ8Nt1$0H{Ptjj+lv1lIODoI+=dQIf&h+ynp((n@|LDr{54wyV9_{=^u{V?<4*HrQS{_v`1uQ!@p~i1u2{J`GNw`F;m#|LS`+!wi!Qy0B3122LEi6PrP^OE zc1=05o<&M7QHEoKb{x=`cJMP9Q%^odl^hlRBiSz(n=4ju2_j%pG1Cc zJ$|X}z@~o$KgKv!y;B+_bj)%$=s_I^lol5hRFs55^Ou`{e#*cEEu-(sl3O;qBEMiv z=>5ku{s#x+Z!}90hI-)Vkr9zDOU*-{M}AC7dOrBN;#7Tk^I(3B`c(7ATajRum^-&e zVn>|0?vI9yFDowUM7qiAG%Z8Tp*tdtqi4M0{+Gp92lIK)4wk}mueqfVERR;jZ`e`J zDada>zRdpP#gdKu_5iJ2!Fs;bw(roLWX<7MY!B7UEw=ErZ-JvfcRjbOJoX(cKWLZ| zz7-^V;)h6HI4S(2T@(kRK`F0?gUK^}evI51w68&VgFlZ9OM3NpJK%%(B37{A_ir5Z zYsH{nBIll6AMDm`1>>?Z{QuwIUf~1gF4eygbn&}@o7 zyjBs{YjAXEkVfC%)6vl}tsDJXrH<1bQ$GC!gN`#CV^0dbr9b+e8~whWD%HPee$B$r znK1qfe(NFeTM(UHI#t@mrPFWXDK9%o@GB=sD8n&!xzGcy)%wjmrBmaU!qlP6fbo@O z{m$u&E@9jyJQy~`G5ye@Oh4Pb4)*&rXQ`)(H*ABGyNo3F-3FF%YIQj^s=e;J5&$M(cNN z&Jy6b&@uf+1OF3%;HVzr3QWd!b5Oq&sLU-nyE``Au~zstj%7KfA9>JEbLbf1n7#=% z8K!B~FAS=@qd6~gY$S}4sSX_j90b(wdR*)hwkDk9hW`?qF!*(O{a}gaHQS{-j&Lcb zj?s=CPxw8TH^=2wgY|QHn(ADa?gYYbL^b{#V;ww^@Nk!ToMUZaL){$bIo1v~%&~mO zPEuaS#=|u4S_e_b3S2s^gZ&*V)DQM(Xi_;npcYT!_Y>O_KENd`ap_KlHFa#FV_GjQ z94mFK1MGOm%3%B#tf5mKn*>k;t54_8X%1Gp%xA#_@^{ z-It?^)&eY}WG&8e#by(GP<~&e89IDl=UwTv}TB(P+gx5Hh0c+*hbeMu& zIPW5?tKd49E|c&g!a8O+rd6(=2-cM`6Q<~{oYzx`u8bS?o0(dnXLBA-LR}g@saR*h z)zHkbd9J|j@Jdb{HLk!Ogr@|AUt)r3`Sj%E=j?*xUYEBQt^%g3^#Eyp+l{1-A~Y72z>at93CD)QI?)(i8Tx@vl{bttm~3Pv zOcf93j1bn<@}x_bMg5_zisg99!4ZUiBdp_T$9TjI{Z3dbezjvG33nl{R`)ZGjUwE` zmG>-6K^}!e`dw%(?lmsmC4|+|49)-Z4qi(54Z>R8`f*V8B%AX*SKy0|jfM?^X?3rK zDLRL9Hi53Fb~@!9!&&RtI>&Nh|8Q(QEcoHzvA|1I3dbuh;W)yVI>tW^3@XWk=~wU1 zM)hN&iq7Y3<=E>k?|4{>W9pC^GlBDH$2K}vK>eXFiRi}prh|oqS99uk%dsND&vAC= zeA}^N!fPCR$FUOp^PD=~b!;Nx7Xre4!7<%4uH)>X`QHRoPk0y&-4Z~4;@BlD$Lmtj z@xEgfgmtCp_`tDAgeS8Id!k!hd6Nn2XSH?Rf8^3>?-=gb$6}iQD$Z%zaX7ZRgqIP% z%CS!zyBwC`*rzZx`U*~sp!SDtE}b?b{X}Lz^mE6qBs>PDz2FPSRCjebM#pvsrxKn_ zSl8(e$EFd!*rof@v8!N-ABO(Qv8!R43LRfNb`4>T!f14-W77$16kye%ZydZ9sGf}B z{MIqe(HIhHF@ERR48qT|khB}JB_Id$xFOlv4BAa)<2U7^{W8U?Kr z?IU8hat_z;3<~O=DCl$QH`ldz68{eMHo~WoNr(PTs?yEj?B`e`$8Lvd)nAP^cFYh~ zdDozN5K-Q_oa+_fsNT=Pd6+jG)YA!hg8!jQJD7%74<}-GaGvba9q97j2|LB5I|!zB z)pDNd(jDU1U9gUh9cEc|=x(6qMDx|m6?hNfy_}kwBOIGg_%%))M>=*d;l~5Q#^l(2 zc=cFAuBRf^cR#0oGEGOaV+#mp>i(~xZ0X1xoU z9s6J9y?1z2#ryZ4Y&P@~NPqxK?+77{rS~d?(0gy87irQH={1HrbV3#B9Z^J@fOHfo zQf+{M3J9ox@Vwr8&Kkacz|Zsi%Juu>m+N|E=FHqPbI(2H%*@$6`yu|VcG^64+O>o& zAxsv^Ys;;}ub<-3Uw*ykRQ~l)3y(}xzz*AhzqTD#&<@*3*hN?dh3v3R_`gF=$`>X~ z3T}o=gh~0Lw%iu{9}_0!-?GDEw{oGMp^&D!v@&sZx$TzE6PW%_aE@fXKo+xD;#!;@YB#2 z`ayqq2L`}E7zBf12)qkJ`IM|*M6BL&yazsoy`Wd=K87c7AG8M^17l%4On`|n38uhQ zmcQJk8;WAfx1bn=KnVziFbIbT zC<$&T1*Q39uV3~WmGD-EDo_=2Lry3FSs@$fU5R?Vp}w`G_ac4++RYAzVUWs9|H3a{ zY!DX83|T<$smu!5AUn7q2jqm@kO%TYKFALRpdb{2B2W~vz&8|s8T3L^z0ETdXy)fl zsy^4jpX+3hJQ+926nIiXDo71!AT8(%g9AvUFA)Akq8IQIw266+tCyDQ#ioCPUg4@E zU~P~u!X@|yF2fbjGEuL6)hl7O1l6lzwFVmO)5LnstX@I80Or7Kh==!K2I!ludS&i0 z+Uq!+fRk_vPQw{E3tz%laL#Gc9rg=}J%axWh#_q^=nl=GIcPKfl(=WG5jMeQ*aBN& z8*GQwa2M{uEm#Y?U^z5_rqB$UgEr|6pb;>LJ9$QJWiF~fRj3Blp$621TA&-MKO}?X zkOERcYDfcVAswWL0LTEk#|1)=$#KN5glTfbFMsS?To;4l5CSD26v7}JwC~nF`*+Z4 zM61(FpcScBpjvTig?SD1TBCPh01Sd5;1AksCx;Y}5>i1LNb8_aq{EZm{CUJLdu(RB zSs)m)fwtK>As6I^JaB??=D|W(3`=1-XtS!#sWzV4Xli4*4xTX+zJRHujRXBs&qH_w zkKqYu6+A*~zma&fS{)5FpeEFYw;>M{25p)2n$kfSM?2*aP?ug21;s({x2^=0!40LL zG?am|;DQ{G7xb2IEe>^0DW;du7ALb1(9%h7uhj5=lTL%1pR=_m#_z3koE`ACPkZVmE^h3AO?U13udG>kvYR4mxDeF4!0RK)=^PHU@0WRa##QhVFt{C+0Ye> zb%Gcy)fF0Q?LUedb%hw{20frBXuGBD)vqXWQ(+YPIW;{DM?u@CV{j5qgLY15LBFF` z6tqJs4%z{QLKtZ069M_)1o>{Id><{fw}Y0_-Jt^uunD%pHmC%8H|Ro`17$&*k0^+($G-~{s2^+7FT8yMyPyhGg$nQi zlm`8lpVt2^L2LfDpdS#d4-KFpGy<*jdqE%Q3#{>d-hlz2rF}=x(*2Is{!{Tx1FhS& z{O$%dsHvXOd`=sUgW@Q7m9Qc3E)0hT5R6PNTs;#whNX_kVubyswgqiiwGGpGz!Ufb z?tl&^bPzF6zg#w$cI6b>Co32N7r_!(0V_d=$2u$y!qr*uFqEkVMPM+QtKg9+Fv?a! z$F@}=nCpSa+{AwiB&XxswxA>1UeHQ=zt*4)$7l*EjawET;xCEoP$Dw<3eLe^!aoE3 zuvlC0Lq-P?I#BSzABciw3D==yWvB`Y3&-`rO$ld^-3j^#L97lD8$vwH038-4!YcR> zwn8w8vVqR{bf%{>yxed{3c)_u5947X#6tqigm+O&rye@%nS@2EQG2D6H8`M(_34B_ z7f`@EwyUjHMy?-|=n3dBsuQ$@qVO{r=qJ$*Lk6xrKO#mNUr=pp5?&kR7m{zowO5fb zq>&O|sQr5p(Ft_ObO7Olun#_i0-(fKKnae*6F3a>U_Q)&UeFD^1?cdhrShZ3MR7M0 zw+WP&Dk{3bQH}o&c&by7&TYI2B`D30z;P%9g+WI#I%Ww0DI~c+L5hh!5Ch(PT2pv) z@~r?DK-X7Edmb)8><0en6r(&W2Axzag#?%ZbD$A2xzZe6mo(KvO*RJhRn7 zNF^3te|!AxK#L-Uw>4?c`(=skinlX#0ZlhrKuOP@Fc4Jn$si-hFf(8%%!hYDaU(%t zBVafT1JzCP<6takFE$1w^B%+jHjDLa(3C(191qH90!#wU`YJF1-iLUY4%1*NOaX7^ zDqtQMP$9EGJz*xyhPf~Y6sBIX5Io&x0Ujmr7VPzFfGmcMumQG0B5a1WunD|z>+!FH z4`4N{f)%hFmcdF;8s+^VC~OUEQLVRwYAJJTM5Xh!_BCm6l^_*v3Q$dU!w%R5JK-ac zbv_1J;5j@4%@>DoK7+sDDf|Jy!xPvG#~}6-{&@uzxCcH3C6xal?1TMq06w?fFK`dT z5jbkQ7jb2s^KcHnf-m6&9EY=T22R5%IH^|u8qWprX80riYj72=fC~KvF2QBk2U6k( zP(g~nZu@WGesBA~#r+O`1LbuGeg( zQ$jU~Oj;M$D=f1sL0`h<_OsmqwyXZ2@WJ-AR*yq$ztRkcVfOV}+}m&y`o{9_2be(O z4{=w*_wXGYfEDl=?1g3UDd=9Y2UmOQk6{GY8*$geQdk0uU?Gfy8pJQaoe!h%&%vDm z2@v}}|E9rIm;w`EJdA}g5C@}SB#eMjAf=V*d${UwDnuD8ej-eUNuX;rtt=X^Yh1}q zx8t~u^#sf!V5TjgHk*xq9vGMlN9=@)@ymQNsn=Sv&~lJrll!3y$86UN;)jVH-3K2s=awiFstioQERk*@V;41vp^h&2V z+*pr*0?r`h%}k2e0v@g9|B^6GBwypIcB;*VSNs?4uy1Tv*H_^Rc++3D!<3i&Bh)o@ zp-jD|kvWx#63I;7n#w{qK*~wcZ^5giw}2lBQIb*rC(uYL3wOZ{cQllK zhI_hzk~Y8CVY)8v;6?-5wUr~o9JnsX44EJZw0lbjXh=)R+Wp@B> zdXQ`eP<$ZFQ~SSey{@N5dU~X@vuuzZbU0fG3POI!3uDnaH?E#4<$-)q02HSq?;@ac z63Hpv4J9EGA|PA`HF|WQM+ge=y6w=uEmR_`3^c@F8u!&3RYk6w6J7zg9Fzr}j|rt$ zKX@DeP29dv3x5q*iT``>Oz~=eb(GIwFKCAP6sjY*2lo@u^jwW=b+V24tKwgeyA-P6 zUxd35#=*bM^_uE6p-q7appF?kmVd9C=U>+>H7RT&O1uX;2de{hLB~@~p$RmGMxet# z9RljvN;K$HP=|FoLDHFrp0Tvkhjew^7y})l3v`A~&=p3(a2N*tp&Rss9uNTCA;E52 zrR@iOK=C?%lT2^u3yK>8Nl$D1mAAiM(uKpjmT=3Qulg@)R0atc$z5g^5s zPS+z}xmNh6um_~bM)(9a!DP@7{up;Gj8RXV0lVQN*abUb8f=5jFaf5*cz6$D&Hf+x z)Ic0wPae3^V;m@diN}I;nh1)U1nT@#Kt<|Wao)Z!-K5uA+%X`Pq{1wCAL2oS%>G7) z9CP|dzqA>q+YvKyl_himX9oQE@@yibD^JB51^PJlPv1h zxCEC$Eqm2=75=Is7r6cwZh*>CWsj@*m65m$ci>0(9;E3H@DtpITW}M6KrJXauL82j ze?w;1-Q)@GUyu>X{K3E9L2aelJ%gw4Cp?Fj@B(~jM?EHXKpw8+)wKg-3vyWq3P66y z2YDe6=y7xo&?9O+UCahqAq!*%9oz>%D$rBMw2%@~KyrAc3%}IUNXhAmWO~s00-0FP zrv((K=bd_Dpl6?Y2CC=X>Q;I#uGSQ}@q4dTU@yXYfOb5}T$S-EAw`G6V9+zufiM8{ z47ES>g9)0H`r^^V(g(LH^n#wCr-3r z6N}(F9CXhJ!z}^DAUW|xWAPM$QV70U?78}*@)PU+x6ZAy6E=brbD7pHCMMDGVP6mx} z^=Lx(g=V--ZFH^Mbt|qrK|ZcK;&y=c&=&0SVtv|h(axqTZfEEMF(3tccj32=Z>O_8&>$2xv)Qb7%q0Ks~f6 zG=j#^5ES1Y+Cgj3h<%T=YR1u^Niz;t;a+zv*Kh2IN@(@O|8F{C?B6{RMZ6tx1OD-# z=|ukZFaYQVGK$C5@_ah3*6{D+&Vku53uc1kRM`qMH5$ff9@?vlvsDrb>;mr zcO1S&Wn})|_BZj5{Nfyq{Y}7QzwNGeNJ@#2te>TiO`Ww(l4Li3bK^0!>+f$8@;Y;v zEKmG8JBIn2Yk8f)j&c5G?i0Tl$8mr2;t4|M{dtX}U%2C2e-rh)Us1;ce>3!Vzp^eD zD`VBDTiJ@y=LSBnjjAXrRf{Dzr+)Vfc2_|n7>PgDUl}*1Wa&vB`-g^vF~8Z>fW%Xu7)1)@{$-|K$jmiI%=A!UvPiZciE!{KRpmb&**Y2%ok{xBn zHb|Lw=#qEWCG~=n#H1#s#JMR?hNn1p2{j|E-f!pOdUG>*OWBa#w0VXWR>i_yqv#Pb zZ0?+0GQT}`cDz%jFQX>+<{3h(s#jK@k>k^%<$1%2@8~c}rEyAS*p>0QpTpNtAkcgq z?~HPU1oHA0XSkz6peg^pGuTy!E~BLH&#%?}VfM8pNE#jzp+3<#(46=Sb9F#MmQO4> zW5f2-X-0c8*OcJXH*oF?^c)dr_L7w&KF~zJAi+EmXa?BXv}KmxDy09E1fl3lg5`l` zj8bd~G?lA5Gx<}>o(!f+`VRto5x8Ru{FyfIj!cyk?<1gD37zaR zyk#lp%D&Ww@Eervs+7&DP2_h2*ZL1p*9^lxB=mVZn~C>D2X79OvzaSOSt*-&Lb&@R zT|{<>X!>!FbBDr4dCK$*nW`>pP-Q(jBjwfco9REEUP6mDbeVPz^62FwDvh@!O_i3Bc1o_dhRq~ilerQuFgE{4NW;W~noGwTGJSKNClDEra zsZw{&gexa~zy3U_`rY%G7k*CW6(rQkpA;=yF-OI^OOqrv5)(j7{G}pa6z}&*Q*Y6% z8LiyS_Das|zIjcYlYBDfwendWaXxzKsy|C1jhWS1w@?KQjXal2v@6su&n>z|$q-LJ zvQ!Rs7tUw3;`&dM?P!_pKnK!dX{C)MM%s-`)^=fqX{-9$F|-0Yxco5~#=lnHS;BPn zcjj`4#5O+CkH9z_CW~Vg+w@>tRYQ_xvl)R=x1u{hP zov=b{y}Ak%Z^|bBq}2nRxc&{%6zmjrYWahPc@*7c>=*fUc)BOUXKnbD~bT2{;~D!>4Jn$kJuAA#ZKSSn{W z$JJuyW-4ct>vl1#^-I_2y1bKLmevm6aBP6ReSRxuqEkEL91}y#nbZ_GC&W0@IJdjr zAyUKVQl|5lla*RF)1$Jd5l4iX+_{}u&Ch9^SsfF?Op3IB*EG%%8E*DcWA{XCtL|31 z&aq#@7iJsku`P8D^Et${qm1wNIkd3Ft%k>m(HtEXs?LNVgH8T)Xr4O4R8Gg#ktM=1 zUG5sKw?)64!Q|?>^N~rx2osNlBQnDD&qlIuNam`FxF%G`^)_u=-+$E3qc-z3+pY)` zkRGEoi!g~UOK#^N-y0eI0M}#ON5EbK&4RXd1l;erOYp?xWrA^O_RBw5tS;DnD1&T=d ztMM6XO#Wou7oHTJ>it(0U5nV@%QVH#EZBWFvV6*EpJ?8qMJ#Bw>*b-=bqMTVSi8q_qvS_fYK?SQ*9O<-l-|9>a zqsT*Djy!C;nesvOotB8Hsw;iJUKKDTQ#4|8lK`x2wk)+qbcZB=ru+CYq^ee@Yt$y_6?^7=!0k#{lW z{k)Q?nVAmpX481Jpd<9nO$tkkO#ZZux0iXNtZp3aDptk1gZON$GvIQuHTO`%zJrjW zOBSnmPt_=XtFFVVnwxUn6?vsJ?r&91bg!gkbN4;CNQe zG|Eb*uOIp0e-9FCs(EeBwiSESFy)zI{vKZTl=F|dB;1_O#+dxaSaj{>aR%$3xR@;i zmu*WGlPamR{LiT<+|j~-~MCUpa&1#XNX~RE2dZ#)6PX6*0}Om_Cif_SV4Aky27hkeYR+c+Ry)J z9rVy{KH6Y?EfbQ1f_K-ldZ4pKc$1UK*1ock`LAgm`)iw1IjLOTx6S4pjF8vd2ec++ zghb{uFDT8ixQ+?ViGG+PN-nJshwG|W*U}<=uOitZH$087D~X;~8Bq>$aOGl*wMJ6o zqIv#edkXhyv>-_`rmks#guA~j5x#3|w@>p=T#H1gwV~ckOaN(bCfjxS<3`or^~A9F zWWtIvOO$qglx45c2iI@vm-(4)k@k38PK+kLHLZ3Z&-oe8y8a%ImWCelTldi@&9n@# z@V^bzEZXeRfcq}moL9Kr>aL!&tun3f+rBNw0!nr#Q+pB3D5{u8Ghuy8V#e-^R~zMR zxf%(LKMdo|V?7P1Deg|wjRVIFZ8*@Q80$dJQLCDLSux@s@1>doI<>ibmFHfmwz zvA9q2#wKS$8MK&bgzE}!Z1vjIL%PL&ef;mBhCKOX%3TTewws!i<`o9T;~Beb!ZQiwcmG&Xw+QM>=#v5Zz{36Jz? z*2HWsh2@qvF#$`QnR1cSx+a#f?ro~DENDklYkBH9nfR!QsazOg))`lD&49v`Rj;Xu zS75WIX5`YONUxCV&Dnj%d+>^o;%GBdvEXNS+-^?ed;apde+L^M$&P*wQ&{W`eJM2 zF2?n})~2W2KU$k5#aNtQZ)5H${!SY+dK&JFHYRs*O32J%wz_Ypck)-LoH~7J&lvJ- z#k;mMeT&mgBRW_T)e{TkpT8m7a*srWCc(-b%>ClzZS}$^$J`EPS_oxYrU`dk>|h@0 z+KLa>5n0s|tmDUZGKWeKZpnK(Q^rtd^;Bm&StTLYA(VK|#AeGK)7hK}XTy3e)cKJk ztgD$9M&PKf=0q43ncCId)U_>?Gn^ASYc$tf5H#ogLlX;1;Yh|!s86jJ6CI8$@17i8 zm#(t8g)^gBAI{kMDaM>=L2gzq!H&l<=8hzt-Av91`f6}DOSO}2BOKo^KmDU;H&{|P ztpeRlbW2i}>SlT)>8RVyOo+g+-d9(;q8=wUIQLZ=w6KR=*KX#FQVi^7eu==qBgtE{ z&sE>7d(JeNzQSW*&(d!~H`70oyu9zoY&_#>?#wH`*Zxq)avB!h%-%@!^S)to+Mm<& z)oeSl3KBXNWGQ{3n|Vkcj!WH4!IIi$QJU6;6XUm6iCCDS88xw&*S~i&@g>pAyT{pA z(i!PW&XX0*v8h6WVr#$Mc%(-;w4x zP5i>%#!-fNTSv#AeN0bXBkwsBI#Y(xn6{s}R|cbG?`Iiy?B=egi+srl-j` z|2axn<9j*_i|5g#)oH`LiWsHE5OcF4WsqmKO1KAxnCMExe>22%*Y&e^%_6xNH3cv`%4D-fnkz}kGnv%Y*yn$YxHPSl=JL4Tw9c4Dwp_De&D21XM z)cm^?&pCuu=S=>rSW=BPaWyQ(7^vZndZSHHb*7{L?9QwQ-O`2pI@Gal{-;J;7CD$D zD9xx`X>=YV4QN5DO5qMGd(T;yH5G(APK`F!N6Y4~8XRa?!oj9Xjieg5 zGsIc;dH?E1_l|b=%l1`h7uUeE9X-l2#qglr(}gpc-`;kXats<} ziqZCOYQS)B0|vX_(0}L@?Z;U?>-6VMzT7bXc+Vue*gZ>)c(e|Uh&lB>v1PwO_n0s8RvRwOFD+9-8m(1z+g)f!~1Yp zyE2;5l4`Q0Rhz3ldQXUm*x~SHsHkata!xjB>QmZ_HkL_i9PHfrWTD>%IDFZ3drAwN zY%15M7nLIqt=21aJJV(4#Gd)t4rl>DbJUt_;+4mIBvK+V(SK&)%jGWXxX>?HzOvZJX1}(23RG0stIXGnj`xI zN;1uG_qw!ddbRvMJu1}0X6o^Ds=1+L8K#-d4H^8HsrfW(G`8|xbh+m5OZy|N*@_rD zZ(BIn^;W#4chj%#xLbua$gdWuhyT#2gagEU9I;|uFM3*?QJnON8K}mYBF5ljW z4*$wAeS^lNw2$c>-DjC4jWN)`S>~h0$aSA>k~N_vMxdc`Tr%O4YHR*V$G)0pCv2wp ztVWpW+k_lAa9EC{|*uWi{i)#7iz8JGNf>xjbBRXG00-;|oZW;ZW;QqpS< zS-fph)l6$j?r(l9LHYZTaP*jOuJphiI^R5^G{@NaCZQQayh1Z)DObXLt2(vsZC}ym z&Igq}2J)O||@a#HE`y4f4vv>%#c%?aopkw1obGto7ZCzzTyE=oCsgF2Tn+6?- zW0vaKfnpD?HcPm6)%n0$+MX|6t>3shljF!VyiAC;A#FY|8@rIA#|P$~Bu5~b0R`h) zd>U6`?U8FqlG8pgxjQ0p1_{j%58ui8eB{<_93?3)H+DX5eRRR}?#N2zwa>&n&!((t zBa?P8UVX=`G53}Ck~P-p@u-aD!*}lL{S|rJ!^6(ov15&?*ohAQ97!#N*8UVXu=Mp3 zY-_y7XsbUo(>jsY7$jUs%v)Xb=ihI}+)a|$z1HlL#G7k!Y^`}jDX)L9=c&YN4s^9m z=H6$uN3a>xnc;b5tx4#Nc^Us}JJTSVvPN>y?n62r zjPMlDc9W^BxxD8l(;G?mKwI+W{kq>p7ir3_*em%SF#+V!X!)^SvwFSVFDYimCex~i z(-oYa*bMn|1vXjq{C3da{bSuG^9wmUc5E^!x>J?Cn@suc=ya6)G&IMQP8joJVA^3x zDb8&&{gH57-(;pJh1Uq)k*5QpfGs9X58`b7T{Fl{qa;`9vC&`m9hW;vJKAiJBwtN! z-)Qs%=#`t<6N!26L6v&4R8E+0hW6y#%WMAX?>GaT`f!>l*vmP|(R!QN+>2-$HM}=d zgDvKEZMPcet*=)MINNKh_JP{pAu;XBMJTG(CN zmI!|OG_27vch@9|HpFD2ic7MGe*D!>om(ZvytBi&`e4#=Na(q4+AP(7TC#D-ktB%) zJ4^#4+#8X|h(wRw<<~?e>vJg|QE{iq-Iv@OAtB9f z%^mb`S*0hRBuR83MpMru=lbsLGn5^g6!Y#*(^qMy+G+RyIAcv%amHNI=70N*ADtO1hqpr!A@3)SzvcWVU8bkDMv)(;~_=Y{5n zABTK%W$H9y>}77bgQnO!&Z4R6BB4RH_@L?V4%)3bXzmTiejgLA$@M^s9NEep?Ytx@ z<@tkVqa=qMGW`cTgUpq8oH-qj51Ho#y7sN-TLC1y**LMjvRxd|PB z>CznL`vXX{96K~;rDq$8CuJN;Od(?S_Pf6NVB(LnlVX}5HlvkxJQ5*Dyqn@+;o|Sl z(WfWu>TI)f{bNkCjJwY7*_IS@;jlSDTGulqij%g?v)Lo|Wj)N32XETKN9GQsK3JfE zYCiRd)$4s?_8$5<;hif8YK_Op<+c)yq&pD_+3ar55ff6Db?f6zr9xE6lADR)&@C=< z4)s8uP#4IAM>pl{i7;AmkyGGIdyR<&EC0-mcXQW5!qo&=vNM<`~ZJ4tC z(dXw6>*m$jnI&1qvV5@P#87_HkEcaNj+)VfoMj!hey%s`H|h)X%OGm7 zW^1SPm52P@f3o z(TUk6dyNxTGRyX87|{31L$rERsy zQl&bdHBrOJqyJeGGYmW1cagt;tf}9;)9FV~iZTJdm&rrhds^lcDO_*1ragMRqv-#N z`#BrR&BkpWMqcuvj+gYk%B1$SfPd zx|$BSM+sVAH1|p19(vJQ2@k)VE8s-u;=?=!;t-mzid?ep?N9p79TSvlwNCYP?h(c} zsxFy|EbrWY-&kh9_eZCz?E_OpCKWb=7@6#Dn%r4ak0}sNjJ?9mcG*lLt*g*wtAP&0 zMt|Gy`X`Q zGIVjh=PQyFS$oy&9mCVT;jw%ib^BE_FP7%4bj_R~nWNq{b5qxLb|yTI1uxH0qvOc) zKc9{U+^{M|He=#YeeDf%21)l$!qt9D+@0%hIn-?srE6o&()cMcnz|p{FYwv&2=_^1 z=o9J{DZVv1-y@I9-<#gJt{y*FJ*z|6XUP^W9yE`0Gau{Ek_h+K)#M(7lGf*PGv(qD z+&E_n#=q+<&9G#_d;pLe*Mv)gl3%{q6fe#aing9;BXGqpfHV$`r0 ztic^~Zz2V>yknA0LXo%P&7?`JnmXGlZcZ|LCJ}F+L7KahoH^Vd-nII#|Ao4~gO-=n zUfj0w3u0v56qBnZzrJF51y4bqqo0)bOhuhKetFMQrEJXFfwKy=(=oU9bEsn5*KzHh znI_5CoM5`GWy=5d38qdFbk^x;_p>Rck0E=HRB!%l+DyTYrGGIAxULevT4Q2=#&VC_ zN6pj|0Omt|dI)WMzfd-|6+uLuRlC|pN#Ft z9ro8Bm|Hzxe`u9Jl=rhS_IC>O%?Iz-ApQ@&^zgs`-34n85tLi!CzGG^Ngzypd|R$M zm3qEC*3%fQkxTk)dTvI}M9T}$&D@!2IsY&7Lf76E#6PZ0omref{Qqp`a+G;#P9-{n z{c64RG1rYVixw{&Y3UF!(#IRQkjUcmoLT(VA zjMc99$1W?Udf8xj!LLqxy1vdebey$u9)15c=hF5;y>-}F%%q#|Oy<6C?gS*XC<*v& zY(SQR{k$J5W;`yk)Am`gC(n$Idk>ISb11jbb-w1re7enU-?To0+uvVrv%p?OyI6Pg;*n?2+U8 z1&K^ZWQre}=f$Oy+Rtg4LJdEMIm5$0cc8=9bDY{@eVd1QdN(>}myg9cukz&HZ~nO3 zD|7DChEr+L%r=m5FXZ+#-eD>)#{A8iTC-R3MKez18++6G?3AadjD99@Aydrne&&~j zNc!@%NwvU>w(mE;`(;gi>Rl~>)$EMD&lz16{4L|$>A2Cq!l2dK=1B!4Yxp-16I%k~bhFb2otsu|@9N_}C#lazA@`E@Uo^Js1Y){Bf(72t_ik-!O(~ z{ZwguJqKKA)}A?2*11TZy`@*^TSWHMlAU?Svw1ugonq1Ld}C@LQQGslIG=OIcbPNd zKfc@>fTGreS+Z!b%o&{HDTU-l;p!u6^(t~aog?{b>yHBap{12FfoU|hc38J_=BR_9unmHTk)s>&ILFHCxraDNFqb^iJ%^3&zc z%E>$zKBn{vXK1G`oXDx7L{h@TQy)X*V-_=Ty!er*MzJO z#@g|pb={mN+3_FlPq*X0ztJ&%cg2`33%OQ)-(P65r$NlL-XCN!$5wE-ws?}cBlp8e zCe=!3#n}J%%eA%%t8&fpA6KNtyNQXG4YF@$cfc3skF0b~GQC$hH<%Kuox9D{waysR z>jP)Dpx*uZ4eVOHYu_O~VulUu+`Vg;!M(ehEmxebT_1kn^z}7&*E&B;)qg<0{>29k z>)&;tnZ3?g+^k#U{CwBGb, - children: [ - { - path: '/', - element: , - errorElement: , - }, - { - path: '/goals', - element: , - errorElement: , - }, - { - path: '/fixtures', - element: , - errorElement: , - }, - { - path: '/settings', - element: , - errorElement: , - }, - { - path: '/goals/:goalId', - element: , - errorElement: , - }, - { - path: '/fixtures/:fixtureId', - element: , - errorElement: , - }, - ], - }, -]); +import {useState} from 'react'; +import {Navigate, Route, Routes, useLocation} from 'react-router-dom'; function App() { + const location = useLocation(); + // Child components can attach a reset function to this state via the outlet context + // so that the header can reset some state that they control. + const [resetFn, setResetFn] = useState(); + return ( - +
+
+
+
+ + + + } errorElement={} /> + } + errorElement={} + /> + } errorElement={} /> + } errorElement={} /> + } errorElement={} /> + } errorElement={} /> + } + errorElement={} + /> + + + +
+
+
); } diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 80895c6..ae1b212 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,20 +1,21 @@ import {useEffect, useState} from 'react'; -import {NavLink, Outlet, useMatch} from 'react-router-dom'; +import {NavLink, useMatch} from 'react-router-dom'; import logoBlack from '../assets/top90logo-black.avif'; import logoWhite from '../assets/top90logo-white.avif'; import {useTheme} from '../hooks/useTheme'; +interface HeaderProps { + resetFn?: Function; +} + const DARK = 'dark'; function getLogo(theme: string) { return theme === DARK ? logoWhite : logoBlack; } -function Header() { - // Child components can attach a reset function to this state via the outlet context - // so that the header can reset some state that they control. - const [resetFn, setResetFn] = useState<() => void>(); +function Header({resetFn}: HeaderProps) { const {theme} = useTheme(); const [logo, setLogo] = useState(getLogo(theme)); @@ -24,62 +25,62 @@ function Header() { }, [theme]); return ( -
-
-
- logo -
- -
    -
  • - { - return `nav-link ${isActive ? 'active' : ''}`; - }} - id="home-tab" - type="button" - aria-controls="home" - aria-selected={Boolean(useMatch('/goals'))} - > - Home - -
  • -
  • - { - return `nav-link ${isActive ? 'active' : ''}`; - }} - id="fixtures-tab" - type="button" - aria-controls="fixtures" - aria-selected={Boolean(useMatch('/fixtures'))} - > - Fixtures - -
  • -
  • - { - return `nav-link ${isActive ? 'active' : ''}`; - }} - id="settings-tab" - type="button" - aria-controls="settings" - aria-selected={Boolean(useMatch('/settings'))} - > - Settings - -
  • -
- -
- -
+ <> +
+ resetFn && resetFn()} + alt="logo" + role="button" + />
-
+ +
    +
  • + { + return `nav-link ${isActive ? 'active' : ''}`; + }} + id="home-tab" + type="button" + aria-controls="home" + aria-selected={Boolean(useMatch('/goals'))} + > + Home + +
  • +
  • + { + return `nav-link ${isActive ? 'active' : ''}`; + }} + id="fixtures-tab" + type="button" + aria-controls="fixtures" + aria-selected={Boolean(useMatch('/fixtures'))} + > + Fixtures + +
  • +
  • + { + return `nav-link ${isActive ? 'active' : ''}`; + }} + id="settings-tab" + type="button" + aria-controls="settings" + aria-selected={Boolean(useMatch('/settings'))} + > + Settings + +
  • +
+ ); } diff --git a/src/index.css b/src/index.css index 8d35494..22e1d0c 100644 --- a/src/index.css +++ b/src/index.css @@ -34,15 +34,25 @@ body { max-width: 800px; } -.fade-in { - animation: fadeIn 0.5s; +/* These classes are for CSSTransition */ +.fade-enter { + opacity: 0; + transform: translate(0, 25px); + z-index: 1; } +.fade-enter.fade-enter-active { + opacity: 1; + transform: translate(0, 0); -@keyframes fadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } + transition: opacity 50ms ease-in, transform 100ms ease; } +.fade-exit { + opacity: 1; + transform: translate(0, 0); +} +.fade-exit.fade-exit-active { + opacity: 0; + transform: translate(0, 30px); + + transition: opacity 50ms ease-out, transform 100ms ease; +} \ No newline at end of file diff --git a/src/index.tsx b/src/index.tsx index 3183bb0..1577439 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,3 +1,4 @@ +import {BrowserRouter} from 'react-router-dom'; import App from './App'; import './index.css'; @@ -8,6 +9,8 @@ const container = document.getElementById('root'); const root = createRoot(container!); root.render( - + + + ); diff --git a/src/pages/Fixtures.tsx b/src/pages/Fixtures.tsx index 252a4ad..af07e2a 100644 --- a/src/pages/Fixtures.tsx +++ b/src/pages/Fixtures.tsx @@ -17,7 +17,7 @@ function Fixtures() { }, []); return ( -
+
}) { const [pagination, setPagination] = useState(defaultPagination); const [currentPage, setCurrentPage] = useState(0); const [selectedLeagueId, setSelectedLeagueId] = useState(); @@ -22,7 +21,6 @@ function Goals() { const [getGoalsResponse, setGetGoalsResponse] = useState(); const [getTeamsResponse, setGetTeamsResponse] = useState(); const [searchPlayersResponse, setSearchPlayersResponse] = useState(); - const [_, setResetFn] = useOutletContext<[Function, React.Dispatch]>(); const pageCount = Math.ceil( (getGoalsResponse ? getGoalsResponse.total : 0) / (pagination.limit || defaultPagination.limit) @@ -139,7 +137,7 @@ function Goals() { } return ( -
+
+
setTheme(value as Theme)}>
From 69d8f8393e3dc015cda0e83f2c8f047130af7cf5 Mon Sep 17 00:00:00 2001 From: astone123 Date: Tue, 19 Dec 2023 18:30:11 -0700 Subject: [PATCH 13/13] remove fade-in, fix circular dep, hide pagination if no goals --- src/components/ThemeSelect.tsx | 1 - src/hooks/useTheme.tsx | 2 -- src/index.css | 13 ----------- src/lib/utils.ts | 2 -- src/pages/Fixtures.tsx | 2 +- src/pages/Goals.tsx | 42 ++++++++++++++++++---------------- src/pages/Settings.tsx | 4 ++-- src/types.d.ts | 2 ++ 8 files changed, 27 insertions(+), 41 deletions(-) diff --git a/src/components/ThemeSelect.tsx b/src/components/ThemeSelect.tsx index a95aca6..08f4e53 100644 --- a/src/components/ThemeSelect.tsx +++ b/src/components/ThemeSelect.tsx @@ -1,4 +1,3 @@ -import {Theme} from '../hooks/useTheme'; import Select from './Select'; interface ThemeSelectProps { diff --git a/src/hooks/useTheme.tsx b/src/hooks/useTheme.tsx index 854d765..2bce35c 100644 --- a/src/hooks/useTheme.tsx +++ b/src/hooks/useTheme.tsx @@ -1,8 +1,6 @@ import {createContext, useContext, useState} from 'react'; import {getPreferredTheme, setDocumentTheme} from '../lib/utils'; -export type Theme = 'dark' | 'light'; - interface ThemeContext { theme: Theme; setTheme: (theme: Theme) => void; diff --git a/src/index.css b/src/index.css index 8d35494..98caf6b 100644 --- a/src/index.css +++ b/src/index.css @@ -33,16 +33,3 @@ body { width: 100%; max-width: 800px; } - -.fade-in { - animation: fadeIn 0.5s; -} - -@keyframes fadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 1fcc048..46ba95e 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,5 +1,3 @@ -import {Theme} from '../hooks/useTheme'; - export function getPreferredTheme(): Theme { let storedTheme = localStorage.getItem('top90-theme'); if (storedTheme) { diff --git a/src/pages/Fixtures.tsx b/src/pages/Fixtures.tsx index 252a4ad..af07e2a 100644 --- a/src/pages/Fixtures.tsx +++ b/src/pages/Fixtures.tsx @@ -17,7 +17,7 @@ function Fixtures() { }, []); return ( -
+
+