From 0c1f505739173f579640c0936202639a650e0660 Mon Sep 17 00:00:00 2001
From: "keisuke.okafuji"
コードスニペットにおける実際の動作は - NormalのStory + + Container (Multi Slides)のStory + を参照してください。
+ ++ カルーセルコンポーネントは、マルチ(複数スライド)とシングル(1枚のみ)の2つの構成をサポートしています。 + 用途に応じて適切なコンポーネントを選択してください。 +
+ +
+ 複数のスライドをナビゲーション付きで表示する場合は Carousel{' '}
+ コンポーネントを使用します。
+
+ 見出しを使用する場合は、Carouselのchildren
+ に見出し要素を渡し、aria-labelledby
+ 属性でその見出しのIDを参照します。見出しを使用しない場合は、
+ Carouselのaria-label属性で直接ラベルを指定します。
+
+
+ {`// 見出しありの場合
+
+ 開催中のイベント
+
+
+// 見出しなしの場合
+
+ `}
+
+
+ Carousel: ナビゲーション付きカルーセルのルートコンテナ
+
+ 単一のスライドのみを表示する場合は CarouselSingle{' '}
+ コンポーネントを使用します。
+
CarouselSingle: シングル用のルートコンテナ
+ CarouselSingleLink: スライドのリンク要素(href
+ が省略された場合は<span>として描画)
+ CarouselSingleImage: スライドの画像要素
+
+
+ {`import {
+ CarouselSingle,
+ CarouselSingleImage,
+ CarouselSingleLink,
+} from './Carousel';
+
+const MyKeyVisual = () => (
+
+
+
+
+
+);`}
+
+
+
+ Carousel(マルチ用)
+ | Props | +型 | +デフォルト | +説明 | +
|---|---|---|---|
+ slides
+ |
+ CarouselSlide[] | +- | +スライドデータの配列 | +
+ currentIndex
+ |
+ number | +- | +現在表示中のスライドインデックス | +
+ unit
+ |
+ string | +'スライド' | +スライドの単位ラベル | +
+ isNormal
+ |
+ boolean | +- | +通常レイアウト(true)またはコンパクトレイアウト(false)の切り替え | +
+ innerRef
+ |
+ Ref<HTMLDivElement> | +- | +内側のdiv要素のref(ResizeObserver用) | +
+ onPrev
+ |
+ () => void | +- | +前へボタンのコールバック | +
+ onNext
+ |
+ () => void | +- | +次へボタンのコールバック | +
+ onStepSelect
+ |
+ (index: number) => void | +- | +ステップナビゲーションでのスライド選択コールバック | +
CarouselSlide(スライドデータ)
+ | プロパティ | +型 | +説明 | +
|---|---|---|
+ id
+ |
+ string | +スライドの一意な識別子 | +
+ label
+ |
+ string | +スライドの表示ラベル | +
+ href
+ |
+ string? | +スライドのリンクURL(省略時はリンクなし) | +
+ target
+ |
+ string? | +リンクのtarget属性 | +
+ image
+ |
+ CarouselImage | +画像情報(src, srcSet, alt, width, height) | +
CarouselSingleLink(シングル用スライドリンク)
+ | Props | +型 | +説明 | +
|---|---|---|
+ href
+ |
+ string? | +
+ リンクURL(省略時は<span>として描画)
+ |
+
Carousel
コンポーネントの規定のブレークポイントはコンテナ幅を基準とした1024pxです。ブレークポイントを変更するには、コンポーネント内に記述されているすべての
@@ -74,13 +344,14 @@ const meta = {
export default meta;
-const slides: CarouselSlide[] = [
+const containerSlides: CarouselSlide[] = [
{
id: 'slide-1',
label: 'スライド1',
href: '#link1',
image: {
src: image1,
+ srcSet: `${image1_2x} 2x`,
alt: '学ぼうSDGs 偶数月の第3土曜日 環境保全の「自分事化」で学べるワークショップ開催',
width: 696,
height: 392,
@@ -92,6 +363,7 @@ const slides: CarouselSlide[] = [
href: '#link2',
image: {
src: image2,
+ srcSet: `${image2_2x} 2x`,
alt: '地産地消キャンペーン 県の名産品や体験イベントを楽しもう 期間:4月から7月までの毎週末開催!',
width: 696,
height: 392,
@@ -103,6 +375,7 @@ const slides: CarouselSlide[] = [
href: '#link3',
image: {
src: image3,
+ srcSet: `${image3_2x} 2x`,
alt: '令和 国立公園・歴史名所スタンプラリー まわろうよ 今年の週末 全国を 子どもたちの歴史理解促進と、日本各地の名産品・観光資源に親しむことを目的に、本イベントを全国開催しています!',
width: 696,
height: 392,
@@ -114,6 +387,7 @@ const slides: CarouselSlide[] = [
href: '#link4',
image: {
src: image4,
+ srcSet: `${image4_2x} 2x`,
alt: '合同健康診断のお知らせ ご自身とご家族の健康維持のため、定期的な健康診断の受診を。皆様の健やかな生活を応援します。 6月1日より受付開始 川海町および森林町にお住いの方が対象です',
width: 696,
height: 392,
@@ -121,16 +395,67 @@ const slides: CarouselSlide[] = [
},
];
+const containerSlidesWithoutLinks: CarouselSlide[] = containerSlides.map((slide) => ({
+ ...slide,
+ href: undefined,
+}));
+
+const keyVisualSlides: CarouselSlide[] = [
+ {
+ id: 'slide-1',
+ label: 'スライド1',
+ image: {
+ src: image5,
+ srcSet: `${image5_2x} 2x`,
+ alt: '写真:デジタル公園の大木 - 太い幹があり、そこから伸びる多数の枝が絡み合うように広がっている。枝の間からは青空と緑の葉が見える。',
+ width: 696,
+ height: 392,
+ },
+ },
+ {
+ id: 'slide-2',
+ label: 'スライド2',
+ image: {
+ src: image6,
+ srcSet: `${image6_2x} 2x`,
+ alt: '写真:デジタル海水浴場 - 透明度が高いターコイズブルーの海と砂浜の風景。海は穏やかで、水面には細かな波紋が広がっている。',
+ width: 696,
+ height: 392,
+ },
+ },
+ {
+ id: 'slide-3',
+ label: 'スライド3',
+ image: {
+ src: image7,
+ srcSet: `${image7_2x} 2x`,
+ alt: '写真:デジタル中央通り沿いの花壇 - 白、黄色、紫、オレンジのパンジーが咲いている。背景には車のテールランプの赤い光が見える。',
+ width: 696,
+ height: 392,
+ },
+ },
+ {
+ id: 'slide-4',
+ label: 'スライド4',
+ image: {
+ src: image8,
+ srcSet: `${image8_2x} 2x`,
+ alt: '写真:デジタル県の夕焼け雲 - オレンジのグラデーションの空に、複数の濃い灰色の雲が浮かんでいる。下部には山々のシルエットが黒く連なっている。',
+ width: 696,
+ height: 392,
+ },
+ },
+];
+
/**
- * コンテナ幅が1024pxの地点にブレークポイントを持つカルーセルの作例です。各スライドは横幅696pxです。
- *
- * ブレークポイント前後の挙動を確認するには[NormalのStory](?path=/story/component-dads-v2-carousel--normal)を参照してください。
+ * コンテナタイプのカルーセルです。見出しあり、リンクありの複数スライド構成(マルチ)
*
- * `Carousel`コンポーネントの規定のブレークポイントはコンテナ幅を基準とした1024pxです。ブレークポイントを変更するには、コンポーネント内に記述されているすべての`@[64rem]`の指定を同一の任意の値、またはTailwind CSSのテーマ設定で定義されたブレークポイントに置き換えてください。
+ * コンテナ幅が1024pxの地点にブレークポイントを持ちます。各スライドは横幅696pxです。
*/
-export const Normal: StoryObj = {
+export const Container: StoryObj = {
+ name: 'Container (Multi Slides)',
render: () => {
- const CONTAINER_BREAKPOINT = 64; // rem
+ const CONTAINER_BREAKPOINT = 64;
const [currentIndex, setCurrentIndex] = useState(0);
const [isNormal, setIsNormal] = useState(false);
const carouselInnerRef = useRef
+ 開催中のイベント
+
+
+ 開催中のイベント
+
+
-
-
-
-
次の{unit}
@@ -400,10 +357,7 @@ const CarouselPanelArea = (props: CarouselPanelAreaProps) => {
BSTOXFiiqbYR^p|@gR&Qw2PYBCcG^akS84a+@pfqR$w{NZcOeVT>$97 z%YFpfS{6MUOAM-aWBkXqQ{YrVR)3@&YH>DjPpb)%vvxo7N<#~dioLHq;F%ByW8lIH z4IOaj&OKZXVG1C8s0?FAd;T{Q`cJd;G!P;`wc9WPerQKv1vQ($TJGE-ohO%mhq3+v zoX(HSuMHyD<`OXL(v;HtT;owkzpFJAsfrQ zg+@A)Dd5JT>y4tMhq*AbV`u}}6)ZLu=|G-?!9X=J26AAl$4c5{{Gd@11E#NCRP2SN zZ?QAW^KTscuWp`5DGOTcjTd0&)1|zEZ1nKlTG!$c1R3yl;fhBf=0wNjs>>eDQPNWl zT8F=fuV;uYcUkfetIGtI`>2jWKa%CY=}C?z1x0Shk$fIWdoJ8+eFj{NRCA+5*4mte zi}Br!4Ta>lmflKuT4AoWf(9!uE_v2YT&a9#8~}(@An}8Rla4|2uxI{2T}RhasvU87 zwfaS^n@qZbH~h?^_!YKlSZL@o(8y*FG&%ul^IXQ!D9C$^W(6eW-4m1eqhf~yD+a|M zfj!6NQzkV(-8UjFaY V%4- BMiJ_f08Q z(G$2!4t(u0cw=Mhy)Xoj930$^Azsi>xoZ6+jQpau1v2?!5W^z|w44^7l39bk!<6t} z1^xWl==vB9(2U$a>_c)z+%>n+UtLRYRVwPl2%X>75P4xd&--=r<>Qbh)I@1k=BWyL zRcZUE$F1_2MJ-OTDrg ~r;FlBR7w`+eIn_Y6fQKpl>vZn~D zRvAm!k@t5%St1vkIdcPW5Jq$&A~PZv^$weGM*#G7*UyOd$t4jE-E&{;>fGVn4g^Li z^LRQ4V42gs!KXd4VZjA$@3l0`L85YU1Sa&PvRe$X{?pLBrZwIEy&7 *Jehra+Y6;axsPa%p~VR^YlRy-c@GdtskvVb=UN)VPzH`obhDa^mP@kjtSd*v zZ={m4{`ySR&;2;ioCuz7vFn!4sjz9N8teASbo;&@0!A}Zwvx?4up!y6NQnwHl2M{G z2On%P>C%wQ5K&;$t50-hlS7GM$yXxCH#?0;os3Pavmga?7y%sx6hy}5pa_EEcIk#k zwyV-3O_Q(aK8D#2qTg${Nf}b2@k4Lg(t9;W!vR}-x&@Stkjaz7p!8c*Kh7c}aa=xt z;>R#&HY?1u Ibz+)6|uu `z4~86@rP1LU^l-f ztr472k67{~n0aF+elrMoQxu4FlWOYJJ=x|*K^`;xfVTn#2Oh2aP&yhsue6Do`FPW> z{rg!}k;9J()4eWpnfpcykE?H=O23h4`RTpJbxd&5jUzj?91&`EIe+DAm}br1@>|cj zg@KX-hScn;#0tcrnoVq0+B~YKkzgn(wS4cS{$};=74h?2UnKny9EIkWGl>!{@;D`3 zD6%!!^cFX~T!A6B|LE9` |4O>j&?-%bAqnH-*3cKytx&;ph~NMFt~APmG{z zYunw5uOWV?P;RltSxh1GK{rD`yJ?N=ZdDL?z9OG_U6{4G-^|P~;Uz2?1AZ@f)gqUO zY6UN)eldxh#jpi@t&GS;Z``!K $Z&V}M&;r#x8{NM=c>@gSMlL0b&CmNMd?7OwT=d9Vx}Kr%bA2&iBzhTCN^!YO&~ zSvii^4Ip>Gfk)R(4wPgOd+?3*ZzJs|%k{=kQuXu{KBeaCtOsX#ll`TxX2?bEGffNt z&>T?s_5zILK2DC^c>kJhlP5Lskzmz@8!QD~B6XaIf1uoJd8K!BWTjBN6vz1*M^4y= zca`v-n282^UrkbSR!4B2Jv{>}=zH^WJ2*j8QxaXis(%9{qRNRA1a5C>ZykETZw- z-+AO$6A^35h9uZleVwK7c-Y#)obkJ96(Q~t`+yhoqWrE|3q)>=+&t1aRbsvw6KIg# zuWm 7X~JCAX+( zr8}()DmpCV2SJlry!7ZO$I|=PSfo}`VDYeQKroIdmTtPAhl26ZBR>V?rUS)wHp}kK zBqrFSXM9r+KOe3g*0_qLj*#GBL+;!GN5j2`PdmUg3-fm%k=i$Ti(67%kbzb#&*uSx zw0W;(V0Ag$m6hP)CFn!|KTn-Rd!5m%QYkiBkDHx;A>?wQJonD5x7-7=Q*mCOXkr=l z%( 4Z+Fg+__J4$s z5LZ)!n&whDcCjsEikvPsqSiU6+iQN~E!y=gwIFR9W5yY<%?baFA|$x1Dz?Txs5Fg* zOYz5a(zenBln8`_u(dz#8v c`}m&+KOVB>xL^w?%7OP@aHh2y*zA zAOTfqdio-L4T50*- I#ScD_z{Z-yn2mi{RmXSADc4U2NzE6 zompr~AfUO>>=L9S-Fq0?FNZ4KnJ->gJFVR<;}v!&iHk3lcM)n#%0Az#LyF|47Eknf z9RnBlx04pY3HBYqrO5w#&!xA^mLV}}N1<-|9d*AjkhMSZuqf`+0`#C;iTO~BSsgne z4V{ryCcA6cMxN$QL?ws5H=wyD>Om3HO#F#oDh193wwe-pPQC-T0degj+6Y4qz53d` zX_gp_-GA(8;M-K|lk#mFmIiA}$Gg|Z!V(rMda#sV?qjUrijnKnAfeMLAAYBms;x|_ z^ihlrT=i3s;3SvWt?EX$H(GQ_0*pv?QCdiF4I`;fzoJou$u6=LnwUe+^42!PMFc%5 zs88+7SGdIdGtN;%w^piuv_t4b?I}v-ha6Y5$t)cy)7r>x4DHvV3i#o_Yv 1$+_N}D|0=vG4Rm82uDoSp!6nknr&4lnog`HcD}|pMYO5jhD(H) L1HpA*j9oE*k{A5*?4PM60e+ zUTU50&4p?iArwf5N)JeW)*Qi-tTXLjInglsmxpxwUNBwrEDez^OGcLITK_)05vhr0 zqgs(T>tV*EIQ{*FrWYzoZ} rL=X5 zC`%=e>I<-PMD>*61GWeWa$V=Tw_~epSTPN{7VEk*M>euL5S28!sM7Wb2y?co*pn`` za~eXw^as%l@s!2p!;Z7Fdb1v{yhdNp7y3F{vO6mq!wGWys4fh!=A1?2&7zH%uW#X# z`%LC7ft@M?YK1P^OhN5HXn&XIH0O;m**VLIW_dYXFF;I?*W04$9lk#*9<8XmDj#R0 zF3 ECk;;wO-9 zoghtOO-~V!?IM#90XyC_?EHyDNtj_54PohiG-x4J!q$L$o^`;1KyY8uVXFkbTTKww z1v$f6!+`^`4!)S7n_5%s;$*4o*TXr9SEb)7BkFp9D+Hl>+#LV5^}s5=8S$M `aOmdwBK zNyMz#&;@y2nqrU4A1`AkB0;ixrf|VQ-GWYNZ8j+z>b-}2l>;k_I^g!7enI?lVyvD9 zZ~$<|Y-9~kNWAZ-zgf9f)Zc z?r8xNk<+Ait*M}vNmYOE`;YG}Uj27^=*WiG<17_ny&9|O;3NaCZg_>V%iQw@_;b;W ze*k&h?Ph?c-n)qU-~FpNKm(D6F7TVdgE#BfKDC0y2&}BtSG^(G5W7|rGY`UD>nnki zB&sZeIFCdI@Xnlvm47>(XG8~qU|4L2FQPd(hfJ?z7ab>3%l2dhKI#$^YEp9PZ2BCM zd&T)74&hy_H9N{Kg-eW`8I|@VcoZMUQ?@nBYBhyWzhCzf+eZE!bm_P!^!u>vBs+Ey zKO$=mUZiVEv;AJ}9w=VIGK(;%_%!qJRU(uuEr0>i-ht12f1|LIqDNnrF{47|OTZ=W zFT{#KvZ IW=l#aV zsARdAx;ZBp3#kTTlzK@ xJfmEnennY1qHwhTVrjy}ZYz4K$R& F0>#K sZ-{e8eB~9fG;RGQV`S8)c+A* zU#Oh)8qk&c;8Pc6gKoN!^fd$Rh5D)16XOiK-vAxT;Ug2^g<#Ov!B(3IU!Usz`E{68 zjew7T;GE)YTff;C6^tl*Srr;ZP*OYdv9-EnW21`R8Tj4Su!xgei2$Y&yg7z4<}OM9 z#sVZvu%M$gR=s*&y``!Mmnek;bv969=00*0OCKcIz+$3Umy+XrpVG}RP##g833qFf zuNC=_ahMk%2hYGfFs-Ut-1?>3gYne?xt5lpYWC5@J{W~u<}e$~>nEc!VlYe-lr|Ip zZ?{AfUU9v%g})UmbBfwCEz?w6B=iQX9%^#lN5mdTfP2;fLXWN$$BM3_+EEg<)Wjzc zj=YT}6r?@=TTM-5cXlHCo?IeZDV)nP6w`hF?NDoPRmO?1%j@vzt!9tVm<%il5INjs z?C;)Lt6g7yKAqRYRzT4IDaG@>jTHq`u%RO+YEWv-li<%9n$ac^>T$b<*QoBEBgacS z6Yt0+NwHsjBL}hKS&}u`9C3W~+OM?#Q1{FKzt^3e)kdkVU@`5-doBfjAS~C6eGKL$ zWu|a^Kl$>%LF#|`2V*wfp%>p9c26Ij+61-{-$Y?6pF{+!4YC38)zv>=;UKyWE5y7A znVwmflj5`9O4~74n86{wu?^09z++pH@x-W*!!c;2nH=pw(V*xlL}#_~SE$K3V+hqB z`3r>fRd#Q~LbXtyF6__R7^MA1xeBM}1X6;(NBIAYe+kZYuBc&uOC$~)c8AmC)<8Wk zS~0S}lz&0r10CI*ykRBc&GSR !5%GFjz(%|~J@^VmG+943VCC3g44 cICO!2E4eCBrp zl)~A-8YJlcf=>FQ>ET0T`TwkUg*$CgVl#Fyh`)V<)lN@OCPkpEKLAk%hfmR_=xbYD zONHQ~$A|mnBZ%4SDnYy#p1TKFd`z(%=fgawRih7$YfT) OcwT#3aTRB-BaHI@lJpW n~c<=D`WDHMaYtLhDk@ zE#{q5_D(svhI)fyg=(|FzdX={;Fu94W+?H0e&&xjE{3teghAhPGWpspfP-s{vj90j z#=lAYX4wH%Wnu)7cHp?9Q)2H>aKSRv$L&2Wig$shf-M6*x@mfHG3yd;(~K@el}%pB z^KQVkCaW0gTO^$3CIx9FhO3%57t3TpL(c%5JXe`^uDvjZsb&y=S%2QW#QRjMQyM@z z5D1(2LS^1Lom4Ff`fx!Uy?1i%2+V~~+d4OaT25h%ndO1=!Jk +4)Dn?DCK0_4eY+kK~S*=JOP#8#_&GFp-XnA4oyDbLeS`){2f~&lCcnf zs{QnIV!1Q3S^HddCU9b#uW0t=uT`ys44XrhXP!Y!axZWEmsY5JUL_lbJZLp}gTi zNeKl4JE&ZW0`;`;ct}4BjN1%Igv0>4lb9HUbjQ-P+I%T{1 myYSkECPCkoq zSExj5-=J^?`wQv)Z&jrGJ$Ok3{C958c;qGAALfFdSY~=R{Fdo&TjW1rFkGIY;XBBT zmVv2YOD{<4_dus@Njlu_cVc0~gILRb`u4WLcTJ5w-81PeE~Ye&mkXrLKzp60=UqXq zaYo|pEza(kTCl#)3x^h2pWK9N1OTN;b(+)YN94>0u(gSmNAhtk&BsY*`K@cHT$j1Q zUX4iprsj#>7-|h6@nSk>0Ooz;+67x7wt}?@?f}o{%hX2|u}_vxR(MUCJ?;}SvfXad z&CBlMm<@=on68@#e@H}Z(@e2C-@er+^;TH^`fh0vA&3yG){{Gw^|=L-2p6soFC%k* zVye JkfW1!9q%Ld(qA1{XHi&xK=1pgB*_hq-)Wc!fb|8%z%cix2ahe6 zfx|e3M#mYT60~$qQqkrCTB@zH73*MZf(mcD)?xB{M^V8ry3eIC7ucFD$ 5X0T}2 z8J$M8gV>$v(5I(IFBIei7R^;jz_>?7)b=!JOqLwtEaKQ;f=qYGc$3+!+7OIzIDy6z zODrA4NjhMC27F|9Z_9M{Mz+T~arc~>lfPr+*#I1(5TZs`Sexf6jNmP1n`1aX9m?P~ zW@U1uVx~rta_Cc#PRx*mQKq}YC3|wt5q$ovJ^ 4 zyr-0GzSq=%{(T0id co6<{sG;~TD~ zM#aa+orN$<{3|dNdl8$~~=pYC-#a>W@6mA^^@KrmE0RzPFA- zT_cTDKD#y)4;?#9DRU*)S~TR@W1eg*flfvNP=ssaDh2r4PyguFCMtHU1UmWL4`h40 zmlQ``rrnOGL_maq0&y(AiDwAgzysg_7rxXm_C=GG>dkEG%7i{u*(tf|GnI#`?Er^A z1Qbb!0S5#U{$GLn6U239gN(Wb3^clm;6WtLv{0mROCZxBstM1mXi>}u`-MJTD$CdV zTy$qs4A(M+eW7E5q_uHVNY;{5Gy z|Tk&2yZz7FobOD(E$<{5vzZVYn_^% zC>%UME4||Y3mmA4A}=YMApbA)$;WU4Q~%ysYdP?6Vw`F(`x~rYu}lKecH-QqVbjU& z2P6RJV>MdV626^bNDa7E>#7m83n)a1zm}j&5mH>LJQ=N<+v^VFuDg~_934TQO5$Jr zg(a+k+ky9Rceb5&KGQ%|0&00;FgI&ZnG$KLm(f)=V_p@(RL@py0MCGT_if<|U?dC* z{$vrR^dL-3ugBpJyAc0s)tJI_N<=5aeN@>tKNW5Rgv(d~_8OZuc=|917m8Ej$dJyU za@fkZ6(6V3CtyQXaAzOsOndK;EI?LnwQ!DXxoysP hM5FxW&TXkh5mQMt#c;c2G_S5^TEt_`_5A|J``WTobF!cd*6DGWFeZi|y~5uHZd zjTSd4GN4t%fwCh!B;04j&slC+0=*6GJjH6@))=eA@dXTccN%$Xt}23wM}n0+Y>V~( z2w)nA!@N3wW#zCDxdqC|l#-~D+dk`nV30(PUFzE6-#i}1jBWO2mVqRbDNOGoR426a zRw2#(qrGbe<)fYs88xo;yO_`ZTlR7aWy&3Mpa>vnuo1n<6GS0RET2FOycNmP{ezJZ z2}U|BJV2D>D*91eh<42I8;zBT0TJ}-bW)LAzNC23#YCG0#nhq&q>Y&@uxlPv@}?W_ z+bjJp@9?^{G}V!viw}$v50g9z_RI%f(qUzAUhgH$lnF2gSu!S4Zg0+pjA^~&BIUXd zWpUj6s8s)EqxRwgW#s)!HS-&!_THGrp*mbS$eu1Eb`ockc=;nv{?tNpAaSdj$@7%H z(VBd*Bi(`Xc#0M9{{KU~)TFhrSgUPU!u)Oy{2wtJX+ZDa`D@l~ RWqnDghWKF#b=GCo8+co3|b|d&`h-Gs6+Dq|yy@vojc?Y3xNH-hF*V(q3ol!Rp zqSuviW|_(+=Nkn$tzeXFt#u#>$dbRU;OEfDnzNOA!O_Q<;}_6%TB;75siGV&^>JaY z9n8sRjQ^@ybVy6L>|-E~kc)f|bOb}14dB(oo(lUiElFFq>}iHlU 2lwHHo++%@Q&QVZ!GE-1 z{+-TC9}rp%(Jy8HI*a%tUwc##o0IO3s$b4KR!QNpT2Fty2H)*Vd~*_nE$W*IB2kc; zLEYO>Ap+mZn^{|-0*}` ?$exdxzQNu&-RNRQztPgWQ+}8R4K2LE(UVpLEPdgiM680&h#P7*-H)p7!;Y&R4 z?J_`zrh=?}aOlol%(HxwXQ_AsCbMPQ2m~I0=Kin<>}uIaWet}*E?j$C>{njRveDjK z1@g}%@4t8YDXy66*ILp;pd}nTQ@aHL@PoNaIX=%6$AQETYjnNX*dnZ|C#?FdN}AC} z4STkiJSf00ph;zNgVWFabpP%yoGa-dczSK3blSk>tiaq7liojDSC8Qq&8h#mom;Z8 z{2w!9!lp?A8*EpPn&DAy&lWHN1a1C!5`6il)D>$cQjG- tW)N9AZz}6>$s`1GCXEYOcI<`H>?M_F&dsO{Q n2~aUD=Ldm zQ7~9s&l;&+5>OBp#hS=f3TI{Pb#?dqbNLO9jx7u!%jCu1Ki2j-`EY9tHDp|X_dj I#(Kd_7W+Sr1e0vM&-v^?f5L?uRmn*ZyBC5~=TgSek?@%OV-SzDvn$o3Pep;Hp| zzkN@#ppEe}^vSYh8`sar_0pk5wHHi)>f-&!m5LZ%5uA2>?m-O>K5Y!GU)f<_!CAJs zG?9)~p*2yA!9x>IHD5OLZZ}H@`TGOYeBtDVy!^@dzQGw3OWfkr8UQ`QNw!@fE$+43 zDWIdIxw!F)!b=6US%Yk(5*k1)0!CG^RLtG%M|Ly(4w`lS+Z5cEMwNagUyT*)Z` D*S#k+3jsT&)|)C z!mXnR5#FFIsak2iL2^0#lV>0q&qjEbCWhOYCy^aAKVHE?tT9GYw z(}-kSRHf0NU}{mY0z;V9r_v2edx=z=OoM^t^LqXCv>mM)DNYxzd`+~&Gz5(A{#SGJ zO}s1n54YE});7Aktqz;jtd vHt@MeVsh1 PvhLO?L0;1s|8Y>jY+6>agq zf+NEkGg|#G``5bctNu&8=ys}>MBE4_zgkv_UTR_b9VJzsXOwWYIiVI!f_H(P7%Gcy z=A=+akL>!vWE4U0RK0~alft0^A> NPpz^c@2lL#6Q~vWs;c$ zbOi#w9w7;(5yvrkwPC-*ozHkj*&Fpv3E7^L#%~hpKheq}`AkOB;0w)Jg-J}E!sEJh z9WUV+6dQ(+Yw&^{pzZqS4xu5aU}sguaF%i$OI$_gPj|pRroO{uC%`T`B4UU(7Yhr6 zOZr g@GamqA>z4G+Hw3!-kT*<+|M;f)_7!)J1 zBSD1XQWQ3M2S_fPJSag%w_(6ra_!wL`{iIdoQDX g*lGsn)!J;!HoCu5o2J z`u%jWf^mc(2biTUxf=DPt>B(kt Uo9~wBr;Lzl Pt|&88F&X;ILP_nrQluReLH#2qB3+ zK(KFF%!D(xH7uji1OY;GO*vb`p_UbNjEolLbTGqe8#DL8G7E7rBzW~r7~!wJLXh}w zI?2Y)VkkP-*Pdsd9li8+yfM5WQ>;7wHWj@$*CLw*rlh*>i|40L$G|?K3KTTg9;1n- zhW@@hp3rwNaK~R0j3!iQ;Ls%B46fHs`CCv>=q~QhJhm4eFk+N3DqasZ6Uc#y8YWdW zzh}TTSzSVPcPCzOQj(}@{iwfs>=f5Dkk2=PEx0x>Gu5J1v9kG8z+KZe`R10umrK}p z$Fv>%65eUR>NK}IR}0q)o+No=KWm1r0`bfe{bbM*H5Z9S8eK4q*)XATO43YBTY0GU zrCZrJCpFUU3PSS(&fL)(1X$Mj2<=QIhQp)aHmb5;W^t7p7$~_@!3uppL>na|3We-6 zW+^hJ3#+%%fk~HC#sS%MzO-zLOl)Bbuu_YywZnY5w)5;0fz1;cKsqa8QNmfug@FJ8 zJjq-mBCL>BlsGn|{_1qr_kCV}iE<-!yjfCR(r{PzOF(tYHD=xr1x$jHtu8FEjrD@G zd`W47TG4HkF4;R}c&{D7I^GFr&H&WRLO1JVVjF)JbAu+h+8~ff iD<>u9Dkj8gYE8 UFRa8Hb$okFeIBE1ZHtjBiv&}#-NPfVs7@uv?wmhPa71Qzeav0d?X@5 z&R~mHkCqm(s^nldFcJTZ2RU1Od+@|X7`CF-JjogcPLWSaksPn$bla2ANJYNPyd6=U zV39RPzH|SBncm2AJoK$gp8UX(#ndz)8&Ub*ao8HPmz*B(!_E#_R~{`hIY>P;6m4@& z h(U!c+b9ebO*aaIO2?OKK|`6SxXN}VvdOJWGpHIDe4b< zjkFKBO%R&Pl}qeMrR^H8wfSEg{bRV=F`dw%1B#u73SLbXmya-Z$jtpZl4+ZAb`BVS z06{Ep-7`~FB=nr#I&Fi6YAXt*aASYe0000000000veenjc?Y_s3+bAK_rrP@h9dIy zOP1iwkW&<|BVHdoG)Zw>)%A-wd_XGE!qc2ugYXC=-W1lx9(IPxQnz)?qOtgeW5&f$ zxebhzRN0Y^9e=|7XYlyURcN_`Fj09xo#I;xmpJ>I*;YiLUyx<$c{)75UBRQmpB`B1 zs#PX>4LwnkjU^1^s<0zh#%5NB+i@%wLIE2Nc7JtTrZYsUrLGhNoM-j4@#{CQM4jW1 zP>-kb7c?jrJ66K+qfP{D(|5y@5Xp3ddtTN08kJ~r(yCd;rxpp+>2Kijc8F7$PkQ+r z2xb5K0^HqsO8p|og2~W<4u2pPvsw+xX~2Ql>EwpTb)N1v^JOyGMj0698!s>LFsoKw zr;<-*o+&CI&jZK%6r;42Du!JMa5^dPJdq&(G*qQaZ1|2kz;R9yDuJeb`(m1&tm3_+ zp&0a&F^H}HK6!%UnH@9d&$($QeAcLx$0To&cl4f!DGQQp^?A)BTKYslKWinpn*~`A z%@O}m^x79Cwbz~_m>=dTI(=i{E)Sc9kXS8Q? ?v>*K=3Ga`t&JtXqucCAe zOd^5TjO37Ex2wO)nM88HE~U;m2c)Y+e1><`4=hO$)G2{$SkDp@Om;5lLI#C{$nzPE z$h`i#5=`}VfEhgn+fGz3b0yoD{YqY6$kC>p5?X|}#Bt4bUdJ>>I!UwUH1cWYuuGvd zxUjPnuRyaZtaJ+&$7PEc4!YXImx7Q+sdkgBwA}n?tF*lO_$a&rYisANJs)$#%MZ!% z-vla|p9I23v}4_@g$_J;)f)2(Ey&HiFR&4dl`eG57hSvGftW*gO~p5%RkN3&GskoFfr`gI@~LB{p3q z#lUM@E&+Wf8LN^(E>Qd~k3?f25^&(6Ym6Nl6!>vw+J2&QnEKT0@;?`&5wn{MLS4bE zVwzT3uD#H5dC@M&L4Kqm1WrM0N}Hf6;%4pwAzxw(b(7kaU#^Z0JdUv^I4e$!oIO`% zT<8eyUPvTA@a{|Uk2-sHiaJ(1U|%-IRvC#9rU4bW!uU~uzK^>@et1_^44et05%oNV zm?_4xFbHY7GS-9LE%Zb(PHD8EFoj;)=`H+VF~7wBIyZ?F8S^pfed6lwGb9&NH0)H` zTSQ@xy a~HFp!feOdNtt>2 zY$|+Lr=Dj#-2f8s#~!R-quQBs3z%;Ybe&`h{-|~C*FmJ+`WivSo^wr 1(zU}QYI)M$?`9$du#3(Ui_MeZ)rN@!+u#51|xNj+(@dvI)pWdta8gPm%Q zrn;^MFL}le^)r L5whZ$ss!7e_%#u2GV3qdr#XBV~VxrNIA&_$M53P{sYk z=PLT&aYGY|Q#Gh7W|nVQXAe5HhR%?2dr UPzj9C0-~ zUue0-WMgfuFt~Bz7FTx>)k@y>!%ye?P!;ubbC zzVd`=bfZip?PmM79i$B-tNLAltn!j>>;}e`a+oT$?P;ChaAVkA!>wPjIoKIyen^vT zMrwi4B=NjvLkyFcqW90%&h*)3eS3;pfs5)D>jF~OBZpk8>kp^*K(yPJZ}ka=;Vz}t zD0MA(*`L@Uc}!FbOS!*s?h(>z$otMqOI=hK5m3F-x^zxvs4L(JjF1?1R-l@ab#TUI zSqro=0!hS^A;l+L3;J`<3Ti*-Bcw6!ErA ~~$5%DAjEVT_@G9;ge)t=u$i4u*xgL8)Zxx~ci5T->q5T&+0I&~67_`1u6 zIf(`+fIvCf<>|7=nsiv3`2Y1)TKH v||V|{=o7}Rz8 z1Km#ZnTP@jCU3o1x)%8IsW7R$^KHllaG9clR_ZCvY6^p3ml*Jb2p==tCc3M{0YEph zL`?$q4}Z}MAESo~B+LR27wFf0FC!0w23qr{aXU_0Kg2RI;UeKD{O(xUmO7VV0Tkb* z16Zxo*mO2(!st=0IA@Dp+|-{C*HHb^WN9({d!@ra_9JLc)+qFl?7DImevReB }R8Q z<5H8GQ2Z4$)@dnY!XcLsf-l_vFV^zTJCU%>gKBb#k>S;UvG$_<95$yi5?eiHMO+<7 zT;%k@r$x(1JHPrk6&3frbKXo5o_x26J|XH4Q b&b`tRO;o6sj>AOImA}ren4pa zxTfbAH#W~2@LH^XLgh--`At*t@p=~Afo4+s1<+PysiW)`U~z%cw^ar$qP2_Kv@1~8 zI?;@BQ98>`#z6#OrIk2j@VDi;l>;1_dTi2Ljv6@Zha4z=M_%szFe}uk6av|=c}#^a z8BB(}d4~J|@te?Zy{1-g4a_Y1;H7!(?BvEqqBl8+3h)_<{Z+_*T=o%;EPrOw{Hg*s z6d4KOHH*&D;yp{k9Z0v;_j6Y98L(>e2I0#V$7E v?0^|dh%Gl!c$Adj|C6C` z8aGI(LR0Et7^;zgu*uh0t8@f7=Z!9EdH;5+)D&7Qw0_lc1#E*6V?Ghl(P$Z6T>i0L zlM2{l(9JI@Uu-Ns$T;9Q?g0{cC|s#`H51QN*WsY#*o8sVL?YOgHQ?k!=&ZL5MdYFj z7tQ;A-|CGN0slLHF8hA jG#?zI?|otP6& zwPqk|HYePk@k(4O(X10VB}f$M>@q?BB8br|VF&x7WXHz`MjelupN<;>$5Rk+W+8gF zY%7TTDR>#h#Qr{{z1_%$oLA}s8LVx?>I=aK9f(p|n->Y6>+ar5#~ziqccTNQ56dL? zQF~ZR$Fo$&-Q1py!zZFT1BOYqXigYK>97R&Wi+)kCSXh8fTpVH-di^WnKP~c0e~FU zwlySFL6I58R!_;pfc0DX96XmIW5@@K#-!*nK=ltErB!A849e|&v^#DJ$jQB}V7(e2 z14EyslP_Eo%gMg=F$mB8!nzq#G(L5`Z(ddj#w%M8W(Q2MbZ3Nq?`*=2Ud239J94gf zVVh`rtMu+uL6u3etm4=k-jNrXi%is~tbOI(=N`Nu@ShB8^dh{B`(G;esq$5doxhtE zwN{>&fq9U69>C0T&_!jd2(=8V@6g9BZW&GQ0LcvW32d1*&L}{3xW+zF^%7foEbp1z z0jmG~AX+y&Sh^p9u{u(;M<-<3Ns%v&4?06{!6=qxd7s5~O _0Zf0Vs z1AZ~dI?Q-&4UPNR7nj8Kh<9K?+o)mH&puxbX7~N555fpXYc-I`v%hR)LZcqr`W6tF zc;~upxreIrpBJHbXsxuSp++=A>vTNZwfLZ%x2_Op#(`7|Qhl+<<8~4Aej_M9Lc>0q z;ZT!&0AcIlI%u&rI{bP(RVkKFxBKy5etIQim$ow%vc^vzyh=XK;xR`M6Fd$LaI)$c z`(8KQFq%|xf0n!4%^Ytz6e}rE{W??SX|3qYYxOBREQR&RFWInCqdmYS>>UzJNUQ<# zYncBs+zjk=CBN)QNFbEPx<4jfY`Ok8eMn+NDh1pBDb}Jh{vq!);k8l;3a}BL6Y4+p zZ}D~dRk4wbe37u{J$MLtCAgH&T?V*{Ou4Tzh le6kuR^<=`=-bj!k9T1wE zX9NkrVSgHlt?}aFPsW|C9fB~oBX7{B*=&rYVPWfnV>8}zpDo#ry4R#)sapKU; ~E5MuG)5p1f0(gKr#53EgkP5QfJ&nISSS5IsKP z_7S$8QINsr+G4>xnt@JdQt+g#RaX!eyIO(-(99 ziM2M+GO3F!6YKNm?S}ivqx=v=Plg4P fMS9^&;_r8Al>E%k=h= zB4sY=9~hu~D5m3sq4uLWDQ@@wblq=53#bVvg1 duQZg)iNwi-lkeu;?gIcSx3GRD_`vQ7_f~ocFb8iT#1#W)%${jFLbe zG#NQbh6n&9-eJ1b3j)(;Y;TI4^B7dkr qF zovVJrh}1uWTFwlT$IHwNu>vWoM)0}y|1IqrQaIY y)`Be{9B11b?u41s|2J=T z)}fVg?5Wxf>%Ktn&Y}XAROmTsiP*YF5~>Li7N|K4S4lRgwl%dfg0iK9?L&^`*ubOZ z9Qn2|-B3l?|4v}3yaEd%)Mp2WHJ=)HCY4hOj`QEshg76SXn>NkXsBgV(Ffkf&|7qA zg5wxvuF4<3{t~a^L$QP%M89MnLcNl)QpMQcIk~m$J-cHCkXWIK>qF(<1zmfb3sU`b zlGq!mp(w6Xx?!HS)`&GwDuV^cDa3s%m5