From 2457943e0532bce376302e3653e67b7a98cbf83d Mon Sep 17 00:00:00 2001 From: styczynski Date: Mon, 24 Jun 2019 22:21:46 +0200 Subject: [PATCH 1/4] Working documentalist setup --- .gitignore | 2 + README.md | 14 + package.json | 66 + src/_nav.md | 6 + src/assets/favicon.png | Bin 0 -> 1362 bytes src/assets/sketch-mac-icon@2x.png | Bin 0 -> 82569 bytes src/blueprint.md | 57 + src/components/blueprintDocs.tsx | 182 + src/components/clickToCopy.tsx | 106 + src/components/colorPalettes.tsx | 134 + src/components/colorSchemes.tsx | 229 + src/components/docsIcon.tsx | 75 + src/components/icons.tsx | 130 + src/components/logo.tsx | 31 + src/components/navHeader.tsx | 115 + src/components/navIcons.tsx | 105 + src/components/resources.tsx | 60 + src/components/welcome.tsx | 46 + src/docs-data/compile-docs-data.js | 92 + src/docs-data/docsUtils.js | 51 + src/docs-data/package.json | 31 + src/docs-data/src/index.d.ts | 9 + src/docs-data/src/index.js | 8 + src/examples/core-examples/alertExample.tsx | 114 + .../core-examples/breadcrumbsExample.tsx | 89 + .../core-examples/buttonGroupExample.tsx | 78 + .../buttonGroupPopoverExample.tsx | 80 + src/examples/core-examples/buttonsExample.tsx | 115 + .../core-examples/buttonsIconsExample.tsx | 37 + src/examples/core-examples/calloutExample.tsx | 60 + src/examples/core-examples/cardExample.tsx | 68 + .../core-examples/checkboxExample.tsx | 78 + .../core-examples/collapseExample.tsx | 72 + .../core-examples/collapsibleListExample.tsx | 101 + .../core-examples/common/alignmentSelect.tsx | 51 + .../core-examples/common/fileMenu.tsx | 35 + .../core-examples/common/iconSelect.tsx | 79 + .../core-examples/common/intentSelect.tsx | 39 + .../core-examples/contextMenuExample.tsx | 90 + .../core-examples/controlGroupExample.tsx | 61 + src/examples/core-examples/dialogExample.tsx | 127 + src/examples/core-examples/dividerExample.tsx | 54 + src/examples/core-examples/drawerExample.tsx | 162 + .../core-examples/dropdownMenuExample.tsx | 45 + .../core-examples/editableTextExample.tsx | 110 + src/examples/core-examples/focusExample.tsx | 52 + .../core-examples/formGroupExample.tsx | 92 + src/examples/core-examples/hotkeyPiano.tsx | 410 + src/examples/core-examples/hotkeyTester.tsx | 69 + src/examples/core-examples/iconExample.tsx | 71 + src/examples/core-examples/index.ts | 69 + .../core-examples/inputGroupExample.tsx | 151 + src/examples/core-examples/menuExample.tsx | 80 + .../core-examples/multiSliderExample.tsx | 164 + src/examples/core-examples/navbarExample.tsx | 64 + .../core-examples/nonIdealStateExample.tsx | 69 + .../numericInputBasicExample.tsx | 163 + .../numericInputExtendedExample.tsx | 189 + .../core-examples/overflowListExample.tsx | 19 + src/examples/core-examples/overlayExample.tsx | 141 + .../core-examples/panelStackExample.tsx | 95 + .../core-examples/popoverDismissExample.tsx | 96 + src/examples/core-examples/popoverExample.tsx | 303 + .../popoverInteractionKindExample.tsx | 52 + .../core-examples/popoverMinimalExample.tsx | 38 + .../core-examples/popoverPortalExample.tsx | 126 + .../core-examples/popoverPositionExample.tsx | 112 + .../core-examples/popoverSizingExample.tsx | 33 + .../core-examples/progressExample.tsx | 71 + src/examples/core-examples/radioExample.tsx | 44 + .../core-examples/rangeSliderExample.tsx | 60 + src/examples/core-examples/sliderExample.tsx | 95 + src/examples/core-examples/spinnerExample.tsx | 85 + src/examples/core-examples/switchExample.tsx | 40 + src/examples/core-examples/tabsExample.tsx | 137 + src/examples/core-examples/tagExample.tsx | 106 + .../core-examples/tagInputExample.tsx | 140 + src/examples/core-examples/textExample.tsx | 47 + src/examples/core-examples/toastExample.tsx | 182 + src/examples/core-examples/tooltipExample.tsx | 133 + src/examples/core-examples/treeExample.tsx | 143 + .../datetime-examples/common/formatSelect.tsx | 63 + .../datetime-examples/common/momentDate.tsx | 50 + .../common/precisionSelect.tsx | 55 + .../datetime-examples/dateInputExample.tsx | 89 + .../datetime-examples/datePickerExample.tsx | 76 + .../dateRangeInputExample.tsx | 118 + .../dateRangePickerExample.tsx | 193 + .../dateTimePickerExample.tsx | 44 + src/examples/datetime-examples/index.ts | 22 + .../datetime-examples/timePickerExample.tsx | 139 + src/examples/select-examples/films.tsx | 271 + src/examples/select-examples/index.ts | 20 + .../select-examples/multiSelectExample.tsx | 262 + .../select-examples/omnibarExample.tsx | 136 + .../select-examples/selectExample.tsx | 186 + .../select-examples/suggestExample.tsx | 164 + .../table-examples/cellLoadingExample.tsx | 148 + .../table-examples/columnLoadingExample.tsx | 98 + src/examples/table-examples/index.ts | 25 + .../potentiallyHazardousAsteroids.json | 178 + src/examples/table-examples/sumo.json | 752 + .../table-examples/tableDollarExample.tsx | 33 + .../table-examples/tableEditableExample.tsx | 136 + .../table-examples/tableFormatsExample.tsx | 125 + .../table-examples/tableFreezingExample.tsx | 58 + .../table-examples/tableLoadingExample.tsx | 104 + .../tableReorderableExample.tsx | 110 + .../table-examples/tableSortableExample.tsx | 246 + .../components/customTimezoneTarget.tsx | 76 + .../timezone-examples/components/index.ts | 17 + src/examples/timezone-examples/index.ts | 17 + .../timezonePickerExample.tsx | 92 + src/generated/docs.json | 12053 ++++++++++++++++ src/getting-started.md | 183 + src/index.html | 31 + src/index.scss | 59 + src/index.tsx | 42 + src/reading-the-docs.md | 42 + src/resources.md | 5 + src/styles/_colors.scss | 303 + src/styles/_examples.scss | 504 + src/styles/_icons.scss | 143 + src/styles/_nav.scss | 177 + src/styles/_resources.scss | 52 + src/styles/_welcome.scss | 26 + src/tags/reactDocs.ts | 23 + src/tags/reactExamples.ts | 60 + src/tsconfig.json | 26 + src/whats-new-2.0.md | 20 + src/whats-new-3.0.md | 23 + webpack.config.js | 40 + 132 files changed, 25150 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 package.json create mode 100644 src/_nav.md create mode 100644 src/assets/favicon.png create mode 100644 src/assets/sketch-mac-icon@2x.png create mode 100644 src/blueprint.md create mode 100644 src/components/blueprintDocs.tsx create mode 100644 src/components/clickToCopy.tsx create mode 100644 src/components/colorPalettes.tsx create mode 100644 src/components/colorSchemes.tsx create mode 100644 src/components/docsIcon.tsx create mode 100644 src/components/icons.tsx create mode 100644 src/components/logo.tsx create mode 100644 src/components/navHeader.tsx create mode 100644 src/components/navIcons.tsx create mode 100644 src/components/resources.tsx create mode 100644 src/components/welcome.tsx create mode 100644 src/docs-data/compile-docs-data.js create mode 100644 src/docs-data/docsUtils.js create mode 100644 src/docs-data/package.json create mode 100644 src/docs-data/src/index.d.ts create mode 100644 src/docs-data/src/index.js create mode 100644 src/examples/core-examples/alertExample.tsx create mode 100644 src/examples/core-examples/breadcrumbsExample.tsx create mode 100644 src/examples/core-examples/buttonGroupExample.tsx create mode 100644 src/examples/core-examples/buttonGroupPopoverExample.tsx create mode 100644 src/examples/core-examples/buttonsExample.tsx create mode 100644 src/examples/core-examples/buttonsIconsExample.tsx create mode 100644 src/examples/core-examples/calloutExample.tsx create mode 100644 src/examples/core-examples/cardExample.tsx create mode 100644 src/examples/core-examples/checkboxExample.tsx create mode 100644 src/examples/core-examples/collapseExample.tsx create mode 100644 src/examples/core-examples/collapsibleListExample.tsx create mode 100644 src/examples/core-examples/common/alignmentSelect.tsx create mode 100644 src/examples/core-examples/common/fileMenu.tsx create mode 100644 src/examples/core-examples/common/iconSelect.tsx create mode 100644 src/examples/core-examples/common/intentSelect.tsx create mode 100644 src/examples/core-examples/contextMenuExample.tsx create mode 100644 src/examples/core-examples/controlGroupExample.tsx create mode 100644 src/examples/core-examples/dialogExample.tsx create mode 100644 src/examples/core-examples/dividerExample.tsx create mode 100644 src/examples/core-examples/drawerExample.tsx create mode 100644 src/examples/core-examples/dropdownMenuExample.tsx create mode 100644 src/examples/core-examples/editableTextExample.tsx create mode 100644 src/examples/core-examples/focusExample.tsx create mode 100644 src/examples/core-examples/formGroupExample.tsx create mode 100644 src/examples/core-examples/hotkeyPiano.tsx create mode 100644 src/examples/core-examples/hotkeyTester.tsx create mode 100644 src/examples/core-examples/iconExample.tsx create mode 100644 src/examples/core-examples/index.ts create mode 100644 src/examples/core-examples/inputGroupExample.tsx create mode 100644 src/examples/core-examples/menuExample.tsx create mode 100644 src/examples/core-examples/multiSliderExample.tsx create mode 100644 src/examples/core-examples/navbarExample.tsx create mode 100644 src/examples/core-examples/nonIdealStateExample.tsx create mode 100644 src/examples/core-examples/numericInputBasicExample.tsx create mode 100644 src/examples/core-examples/numericInputExtendedExample.tsx create mode 100644 src/examples/core-examples/overflowListExample.tsx create mode 100644 src/examples/core-examples/overlayExample.tsx create mode 100644 src/examples/core-examples/panelStackExample.tsx create mode 100644 src/examples/core-examples/popoverDismissExample.tsx create mode 100644 src/examples/core-examples/popoverExample.tsx create mode 100644 src/examples/core-examples/popoverInteractionKindExample.tsx create mode 100644 src/examples/core-examples/popoverMinimalExample.tsx create mode 100644 src/examples/core-examples/popoverPortalExample.tsx create mode 100644 src/examples/core-examples/popoverPositionExample.tsx create mode 100644 src/examples/core-examples/popoverSizingExample.tsx create mode 100644 src/examples/core-examples/progressExample.tsx create mode 100644 src/examples/core-examples/radioExample.tsx create mode 100644 src/examples/core-examples/rangeSliderExample.tsx create mode 100644 src/examples/core-examples/sliderExample.tsx create mode 100644 src/examples/core-examples/spinnerExample.tsx create mode 100644 src/examples/core-examples/switchExample.tsx create mode 100644 src/examples/core-examples/tabsExample.tsx create mode 100644 src/examples/core-examples/tagExample.tsx create mode 100644 src/examples/core-examples/tagInputExample.tsx create mode 100644 src/examples/core-examples/textExample.tsx create mode 100644 src/examples/core-examples/toastExample.tsx create mode 100644 src/examples/core-examples/tooltipExample.tsx create mode 100644 src/examples/core-examples/treeExample.tsx create mode 100644 src/examples/datetime-examples/common/formatSelect.tsx create mode 100644 src/examples/datetime-examples/common/momentDate.tsx create mode 100644 src/examples/datetime-examples/common/precisionSelect.tsx create mode 100644 src/examples/datetime-examples/dateInputExample.tsx create mode 100644 src/examples/datetime-examples/datePickerExample.tsx create mode 100644 src/examples/datetime-examples/dateRangeInputExample.tsx create mode 100644 src/examples/datetime-examples/dateRangePickerExample.tsx create mode 100644 src/examples/datetime-examples/dateTimePickerExample.tsx create mode 100644 src/examples/datetime-examples/index.ts create mode 100644 src/examples/datetime-examples/timePickerExample.tsx create mode 100644 src/examples/select-examples/films.tsx create mode 100644 src/examples/select-examples/index.ts create mode 100644 src/examples/select-examples/multiSelectExample.tsx create mode 100644 src/examples/select-examples/omnibarExample.tsx create mode 100644 src/examples/select-examples/selectExample.tsx create mode 100644 src/examples/select-examples/suggestExample.tsx create mode 100644 src/examples/table-examples/cellLoadingExample.tsx create mode 100644 src/examples/table-examples/columnLoadingExample.tsx create mode 100644 src/examples/table-examples/index.ts create mode 100644 src/examples/table-examples/potentiallyHazardousAsteroids.json create mode 100644 src/examples/table-examples/sumo.json create mode 100644 src/examples/table-examples/tableDollarExample.tsx create mode 100644 src/examples/table-examples/tableEditableExample.tsx create mode 100644 src/examples/table-examples/tableFormatsExample.tsx create mode 100644 src/examples/table-examples/tableFreezingExample.tsx create mode 100644 src/examples/table-examples/tableLoadingExample.tsx create mode 100644 src/examples/table-examples/tableReorderableExample.tsx create mode 100644 src/examples/table-examples/tableSortableExample.tsx create mode 100644 src/examples/timezone-examples/components/customTimezoneTarget.tsx create mode 100644 src/examples/timezone-examples/components/index.ts create mode 100644 src/examples/timezone-examples/index.ts create mode 100644 src/examples/timezone-examples/timezonePickerExample.tsx create mode 100644 src/generated/docs.json create mode 100644 src/getting-started.md create mode 100644 src/index.html create mode 100644 src/index.scss create mode 100644 src/index.tsx create mode 100644 src/reading-the-docs.md create mode 100644 src/resources.md create mode 100644 src/styles/_colors.scss create mode 100644 src/styles/_examples.scss create mode 100644 src/styles/_icons.scss create mode 100644 src/styles/_nav.scss create mode 100644 src/styles/_resources.scss create mode 100644 src/styles/_welcome.scss create mode 100644 src/tags/reactDocs.ts create mode 100644 src/tags/reactExamples.ts create mode 100644 src/tsconfig.json create mode 100644 src/whats-new-2.0.md create mode 100644 src/whats-new-3.0.md create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3fbb0d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +**/node_modules/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..d9811d4 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# [Blueprint Documentation](http://blueprintjs.com/docs) + +This project generates and aggregates the documentation from the packages +in this repo. + +## Quick start + +From the root of the repo: + +1. Run `yarn` +1. Run `yarn dev` +1. Open your browser to http://localhost:9000/ + +*Note: if you want to run the development server on a different port, set the `PORT` environment variable.* diff --git a/package.json b/package.json new file mode 100644 index 0000000..ddb7b64 --- /dev/null +++ b/package.json @@ -0,0 +1,66 @@ +{ + "name": "@blueprintjs/docs-app", + "version": "3.14.1", + "description": "Blueprint Documentation Site", + "private": true, + "scripts": { + "bundle": "webpack --config ./webpack.config.js", + "clean": "rm -rf dist/*", + "dev": "webpack-dev-server --config ./webpack.config.js --host 0.0.0.0", + "dist": "cross-env NODE_ENV=production yarn bundle", + "lint": "run-p lint:scss lint:ts", + "lint:scss": "sass-lint", + "lint:ts": "ts-lint", + "lint-fix": "ts-lint --fix", + "test": "exit 0", + "verify": "run-p dist lint" + }, + "dependencies": { + "@blueprintjs/core": "^3.14.1", + "@blueprintjs/datetime": "^3.0.0", + "@blueprintjs/docs-theme": "^3.0.0", + "@blueprintjs/icons": "^3.0.0", + "@blueprintjs/labs": "^0.16.2", + "@blueprintjs/select": "^3.7.0", + "@blueprintjs/table": "^3.0.0", + "@blueprintjs/test-commons": "^0.8.0", + "@blueprintjs/timezone": "^3.0.0", + "@types/classnames": "^2.2.8", + "@types/downloadjs": "^1.4.0", + "chroma-js": "^1.3.4", + "classnames": "^2.2.5", + "documentalist": "^1.6.0", + "dom4": "^2.0.1", + "downloadjs": "^1.4.7", + "moment": "^2.18.1", + "normalize.css": "^8.0.0", + "popper.js": "^1.14.1", + "react": "^16.2.0", + "react-dom": "^16.2.0", + "react-transition-group": "^2.2.1", + "tslib": "^1.9.0" + }, + "devDependencies": { + "@blueprintjs/node-build-scripts": "*", + "@blueprintjs/webpack-build-scripts": "*", + "@types/chroma-js": "^1.3.3", + "@types/react": "^16.8.22", + "@types/react-dom": "^16.8.4", + "copy-webpack-plugin": "^5.0.3", + "npm-run-all": "^4.1.2", + "webpack-cli": "^3.1.2", + "webpack-dev-server": "^3.1.0" + }, + "repository": { + "type": "git", + "url": "git@github.com:palantir/blueprint.git", + "directory": "packages/docs-app" + }, + "keywords": [ + "palantir", + "blueprint", + "docs" + ], + "author": "Palantir Technologies", + "license": "Apache-2.0" +} diff --git a/src/_nav.md b/src/_nav.md new file mode 100644 index 0000000..5483895 --- /dev/null +++ b/src/_nav.md @@ -0,0 +1,6 @@ + + +@page blueprint +@page core \ No newline at end of file diff --git a/src/assets/favicon.png b/src/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..40180ebcc4ecd7cf5c355efbd9417dc90ad4d312 GIT binary patch literal 1362 zcmV-Y1+DstP)O|nVaU@lhFNNH+Iq4=WoIf%xZfH9;f z30|l{A-+^!Dp~{!zFClpD0o33wrbi41+k%pJOpXgx=E^ujkz_=#cuYJz0Axx{%3b* zvpch!X8Wo?4Cl;${{KJUf1LsT>%{Ih0DHe#Ji-|J7#u;)6WxKX`!3#%t&#ye_{Bz( z+p|6jg*8D4=5QzwfG}eEs2=w{HTityS}8zE0?<0Rc%C`f<8)(IPXaJWaG~o7{z0It z;dPUDr!{M6D?$BeU;D9rJzrm_-{Y~$9wwgm#Ao|T=K~VK)l%3qr1yKgu~&> z70m+3Fg4YQ6Z<-Gq3J-bSkb+q@vxzZqvOvue3>h>SwR`D&h^ir=3kzxVD6LAFxpNH zAaOfJ&0urP6w9u9Ea{uSbmQ|ZBeQW>8Ad3qAQp#GR}1E(=yR)tz{J$wShz6*Bbh`Z zoPZY7P+sGK;&NiMKQej-uzYm^!G$om!EF(@0Z6H78u-m6u<9zX8b4T4OR<;25loF= zM|3s6)w#|QS&qWxb;46qPMFj8MCOB7n_NXKl(c%0eJ>0kb1Z`E5aBSC=4Sjpzl6m= z07561iclh=AsJnVcV{_PCsy#!Oh^`C5$QDBRs%L^gM%+GBRD$?qW71p-hy*7uvP4?s6tB=IZ3+P)@K!1e%PK|Q(m2WEhU%+u?A^m+Y4>GtHIa8F z+tQkQMdi>c1}!jwk|O}81E-HXf}yrna2joJg)#rwPw@TKjOy7|s(*@+3q6SW^xZIf{iHv%sYpK z;}g1g-IgNLz_ubFXfE`hXvcKRPE)VoYPbxn?7xQF*Drzl15}iM6usCqur&bbd7MTq z71^{W2E-}X6<(_B^k6cLWYM3Dhz2cT;Zu>^t6=_AviTr8f5xdl_9Lzbgs*V6wF#)5TllagH0Cw(@oxAz)<@7#k~o zd9H%Tt)XSt$y}D)+W@%E4Zq`#C974Z`&){$t#4E5D02ZWH>t~(%byR{3!th3^*e^K z`vE@&&b?thx2Hgw9T|z!(jhvZXo<(QvoMTS$%cdS@1#dwEJ>!R7y$YAQ{$gNWnCv; z{fY{tFckz~in253|D^rH@u%C{DpdD-QK!1!JWH)|*ifg~sH$=ueqSG68#-${voJEQ zSh&Sre;9a@s`Gt%9!iPG-^G#9bYV({$DKr7%}EON@nR;d{L%nO?VnFOu{_aFSaIKfYOuMC@(+7C3~;>JIb|PMJslucbubUo;;V UPyNAcRR91007*qoM6N<$g7S`loB#j- literal 0 HcmV?d00001 diff --git a/src/assets/sketch-mac-icon@2x.png b/src/assets/sketch-mac-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7d7c7aff2626a01c32b19c10dfb77a0a5746b6ef GIT binary patch literal 82569 zcmbTdbyU;;8~?qH(JkE#DqYeoC9Q&_q=X>dwIQuENH+*7UD7EM(%p>it^tGX-sk)K zo%{a(-ap&Ud7qv4_PXl%cwURv)mA0Mqs0RN0EFslFJA)yAoNQR00#^GbmcpJ4*)9a zs=rit>-+v_wnhs>fdq40j%osG!tDAA_}1;ZdfG!@7w`8`ij?UGNB%=u3)pOG}+|s}yu@OXG;o857gV zIZXqjFO{7~klBwUl}VF4dS|0hrwK|Q3~WEF^2{U{DdMmQ)@xwlf(>NY7A;JKLTwb- zcvxa;6bO4X=9!(; z8GZl18>~v>ObbHm@(%4I<~lkV zH0HbXhO4oTGXj!F0phVdj;wxKEOrU5cnSJH_`c&pPpEOn`7rA6yCz(Kae<%Kd*dGj z&(0u#zQ~Yz;4t6_=OPZ&_2S8k@dKG8xA!cE_SHmdC-uo=Y}O2)y<)24^rd59f4v(h z6cb&!pWI(GRde$EE93z~m5oxA^}+#qj{P33o&2vIQA#mx#0Cj&wbln}3?4d;65mCK zJ+;7&1Abb`*&%D<~T#eryT}-~@IM``?o)QYhATBPbm-4|M-Z1N|h=M6xEGFsmNHLk~K)lI8ns6<=w!NEJD#lEUROguJ536MJ3gm?#430W3~8-!$ljPfPe*c7~fW`3(MbsB$C9Q2-vdFiP^oX^-md3-hV@*`r~5KW|B~O<@OV z*_@>|&T&!u_o2nYB+aiWhMw)?kO8a#lfqY&B@K=fiv_wrZiX2?mw(P}SCaHsjfev1 zqC}}A!7^@`_F~YPs*vnpB4)NCjPJM(fE>lsJDsk+JitClJ{^=DFwZYwn5COo7*dv6 z^0MB=H1TDD8i_i9{d>oV3i@!UOIh=d>`BSr+9uiH|1y_Py(BSvH{kzq(mz-GRQr>x z+)`4j>QK=owaZF;yp;y>eY+@7{(e9;!8s7zVy9JIdUx^v#g_dsKiHMqhN!~q%#sJF zN~F}NGsd2m$XPLH(}q<%WpC$LXgqwSRaas}3^#7IAh6(p-YmKpSY(D66g(d<2P7nV zoMgP-H?Z6W&B$Q!A^eL^T+WvbLG5pic{5QLZwO%}7#$0Xt6;dYTLtEDTn zcCrr^*)Mqk4u93go!c|i1vWbC%r%T07Nv|TrJi6h`jLxSngH7E9eX?qZb{ClYyaN_ zvOg9Fb^rZ%%+!a|^pU1cwd!SNg=Na@#l@|rU6ShTR8kF=!(2k9Ff?0tWaww2U>}|) zfPHFK@GwIP+${C;IWtWm4c>xGeqq3u@1S3csAC$b?B`WbhZ*QE!FR2*mDsFisb6Qewcgg2^%(dXH8)@>x%t^`D9%3aXhYpLm{XA7{ z@w0B%>-=lE0gYRn!+d?2(0JzcCx&E{AM_|eU4=aL-tu}w%W}~i%K=v;B_^c>4usqz z#?Gmu^4lVd-ddu0q=}+2lD6?|Bss;TPg21p4cr1l?M5BDQZ(|G=SJ{i(qpZQUjfQoC3 zJ28)>0mT&Zjap^zV&Opg930@}6idhZf@mtDq%2_&slK5Uo;(6|)J~|ZOOmMQT-?a1 zCIRkx8{qia)_!r}!)CMDoWY#(mUN~qL!nQpH$wWwlGlJe!=|TLrT^_`Y0RZ>WTxaK z%lFIR<@=Y7=rjJWREN(77p?Who3_mcZ|`#iTKWer%DUUONy^3!UeHeZ@{ZX$PHqs; z%EYFO0``kPzE@Z8OIMp%%<35)VhQi&&NuSW(cL=X`7XL2Kk0I1+FQ72ZQ!W)IJaIFc6cJ(+qtaE z7bJO@-*L#^moKnKq0(N-VEP6@P!~S?N%rPCAz@YqYArtcq)%?L`2(`3;LAjydg!s1 z+8fdp@RjUVAfwUAY|3ba#+JOZfCY(^2Kx^A`TYch$8(jC&!l#0?+l`CXT4H&-3$xT#| zOn#shiUavMymQP0q>F^#)k8lO4?$nK)qJ(F9}S@YWqGUev zI?v(OY>$(%iW&Ync;K9{j~j~E5he_Ax;{qn@~YK*-&MbYD^Jx&oA{>W}YOC@y$+u%y3 z&upU4Y!<#BL-M&Fj}Bw6-N|AqRY3)DWT10TqUu)kC#|*r)d$eW-?y9rd2yWi^~WKQ{Sy=ClML8p-s`mZw>65Q>~nS6SaxjeRkwcpkFz&tK{ZVfGgYEHXl9$ z(XxD3zpY%1K_o_dRlD5{Yi=UVWrW@8ww+ChfaLUE-$N`-R`Zg>!F&8jBY=oWfNt4b zPV!3y`I%9WYGY@t-swb^yVhz*_MKGM!L!mky5uX%plm*6kcLKA-^%!P7EsfFTO2U} zIPDZ`Y5M(F&Ih7Bc+lGpoK3CbmnX+cnqZmW2vOX9gd2oz@yH-5WCKVEy(`kmpB4tS z*{G^vn&NI#ABVpznVk0KTYDv3PqIL{#$s<02L3erhPJ{kW3{5Cxzc3ndcrA?F*0sB z^xK%zzbSsKUw7fS{B7@U%5l3k8GiZwFNV^w#szOoLcY!}<^_#_cU9k6+^_LHFQXLtJbP!x-gjQ(m7O6I25a>wUClgO3^Q>#o=Y-Oe|r3Z?`tgyfHK_r zFBQFaVS`SG6%E|UTy&~JxOTc+-PlOU*i1>v?9IN2k5RIS@f)rFg5%e;>Jy7x0A>Wx zaj~#@w`WfHt$P)oy58}Ofwc`r1ulUZs|RKw7E{J|;hIox->LJzmhBaMwyFuE;xp z@AMu$SJx}|%(|whIJ=F+&SBH@tv;z>JC^EuR|DYoNyzKzdxi>tH)U=1Jp#jkSSgG3 z4XUCzu6(;u%So*^r}#7YTS}6TM84Fkg~6^D33iK$lfQ8o$E8=o9VkD|PQ=V5HhL$^ zJAA#?YYk)^nQRxo_{m$xnIO7TqfhyP1;8T$A>BGgdEPs64wbcJQX6kUuUYpU5rHBE%(}Q&~+z>R1J%~q(Q^-tYqPpC4i`!Q^2`@I-5pR=#+r_ zUpN-F>-CXS%z{j(@SgyME=T0f^J>JROSGnpF=k9+ z|4q=#Fdwe27eAur>y|d9BKS{a<}d#WXd5!{$)__XzqIrWw>oVE;Zd-MTw(t9n_y*t zI@EBc^y<_SS||y$N;$U1WzTYm?oJe6iv(ODb1Ew24DU-?QJyXp-P=6>Cvvh*r0P~@ z`8T-xVSzXBDX;!`3_SK4LeEbT98r2d6u)Cv?6Vx$bV{slEV6uQ$|bX{VAh0XOfw|q zwB|`U3J9vMvm~3H^hHHaYSjld_)lp1ft5?|gtksCy+ zMd}^6@jSU;AeI(*jBk{4yt6xxZWqNiU#$JFNt3$pPuA7IH{n}lqcUYOo=(r}7CH>Q zqyBX;J5sFE{uXS-p|{>S)_vElb-u=Vyr(mEE<4fx@!Aw-#!zJ`v6EY&b=`VmhTwb{ z@2++%Qtlq!Dkz-c<-@oSH-5S5|lN10CHZ_qxjenD`>FMlE%Ix#Zic71Ec^#xOXMlaG&U+)Tl*YZ%m}EaM9N zY-rjA#u4Ls?KIS)2*yeXxFMU#&!kYh`4+3PD19GZgS@kY$hDJ?c{`46*7LmT*=*(c z7x|C+H|paRmPCx*_OUnTxL`h8R1EVXU{M}1qh05@yGDh58|NmzqthVJncjSF=_4B+ zwf(iwc5E522GDuZ58s0eBA3fV+m9%R1zZ}TP`~6U-Z1x+kC7D^P$`ooxU~)vX^b9 z1$z`kc}a6biI5z}k%HM27GoMaRZxPbuvDr3-Yx{Y=?uGTk2;?i z_O0RCR8mx&dfD6L&Kl*zzPfrK zl~h*c6i#DrEtrCUDM$&E85d>ux zRk45M5hT@tSnk*OKuzF^;J{0Q_&?oKSslbu31#MB9y7wN$XDi~9m&Yrs^lee}{9dkJmcjGx;-mXlBzNS%Qf5A+ z2Gkiq$UKK6vk-ai3>B&ISEDrN+t}PcKE)_M_A6)R0ws|R5Ke$Dr-J;BTvr#z)e<~LdjBgH<{en471PObtbt*ru{1YX_*zL>!o z1s;wecN=P^gmU3B%e!gNJ#sbcz)LwlAo9l@ZeY1d)_XWoBbFGg&+xl?P9ZtZSC>rA zVljr?2Up@|h2?&o&%2y9dR>bK@JjLYnF_yy)z7T^0&7sxSNtFKYcy0gOSF5Mtb>RY z!M55QG5kA-#+J?YnlR~oJLsT0?xTi=ca8|u_qeeJtJmfsw6tvE1Hmxk;&BoBf`EG> zXiaP+Rf|(*wYX31DLd-#**{V)=I6((q{}$6M?zttL^u;HlkBWo#<+@ZVP3!Qbp>MZ zool9MM?QQ=l$vw`JhvKEoN~Y&CI0nzZ9#HieLaxYlaPEQk;dlAk zzL_Brn2=efQ=A}M9M^&@L8fAyWqQJDQRj-_so-v*mBJ)79@o16Wc)lNs=8XvmUnxs zN})Q6<#S>vi6wJ-hC>IWj8>6|;eHt}L5z9sL1}GV-NK)rS!3c!2pAe>!6=>6|3l-A z;*&HT`P5EI-!nPNchKQBC+ZB*{yQ-z0IWa7;_Br=U4lU#v3yhnFTqV(cDv@$IQE~% znR`-R7nb@|uBYyveB+F)0P{yB^H}i}(S@(a&uiFeAO_%uy|nPC7q%;LL zc^j(FR6WZ%O@_D*l(GSK{iKr}Eh10d>g%Oo!|4|mLq7sr|3#73&{z9imXeJ z#^{;bwm|yy_74+<6CB?I>xt9sqKCaYFS12(z=Bs(eXt3$AmStIo{!VckAWjEUTlD+ z``C-FS%q9iG{xgCDHU(ZqsEfgTQ*my7vQi_64t8^Tun`p1;SQVJWnJI6{$UB?()BK@I{yt_f5{n@4$H;9>PIMjh9tJK zSlIPT`-woCbQMbV5QP$-I}KZ<&E+ieMLr(?4HG99>5E`pg#~Yb$5)B7???yEtI*mO zWOH>Ja+UxdX2c}Q!|byQi9}%}XoKbjIJX`rK%=IAjSSH}o&=GtyS8I#pVYs2$rC}( zFphVeXSW5W1Cn>gcghj&K~>`5n`6YS=5=_|o^sU!%-B1zkkG zS_6?@q_H^cSAt>pG_~2p>Tf{z)*Q^&3qgU|Emc+Eoi1G4LYd1>D)C1j=6Auo)z^MK z50}*vnN!jDA+uElsv(~cmkFC=0PRll^cDO8b&WzcMS1#};6Jg^?3r0CD&A_If1W-TjC0{06#?>yYPfPccN&qiKExNCwx>?H>=a9q#C zV>%rfDstM`nK3_l49jf*Un-36ShGs7;Jm;ZDP_@Ca|^b~qYWTh(z78Ym=-H>mTs@kMJvFB@!AsL3`{Yr7^ z{rtIKHZb+*FxO0ed|jj%mGmO#c#he*Te2qwxPV_uL$v^PfQiFLGW!Wr-K+&q{p$Pq0Hn@O9R2o|BzA7Rh}f%V$taz z<56Eo=jv|~HG)r}f}cIfXzEdO(d{`wPB)vWIY3qD)$v4Eyylzz9 z0Z*e_ks%XfqN)vj-_Rkc@@JzbRORDt9O>u@29XSz`y+nH!XxHeRTb^B8Q%zhlB}=A zyAlU)T8MS(kVDi1RL}(~=DBtfaZhVMZ3$;ZmN3MU{vD^b@Z8d^q2!08I77A^yYl)P z3fr2026G3kBI8ad6`P~+qsnViLFu9r1*cXV@Vb3Ojog9#N9zUp27#IUsFbq%2E3KU znF`AlTvPEu=Mn z&0f7@$pF16xBi=zZib82nb{pPW2>}XXJdYQ`K-nyZ<|D!TZryk-mA5M>^lMF+2N)r z^wg-u~9f?+ctVv2@CQj17#a9gmFf%$wm09J|R@TwYA~e z!#(eId;xr;j^MNr!cXsWuH7NS8?hDNm0ni|q7Fv7(eM8X0|YCkDtGUY2uGf(AXO>QUT7CMp{@#4 zJ%jP6$$DWzp7|N;1g~I7VcZCjOBpmL^lU8Z_+pq0aE$TS{ey8`<59wRyVd>yQ9xC2 z-S-G~Z51l6s|fL6N}-R};mY8b*&)cIZZFfl@(~?J;puo%5owWB{GlXzZJ=t0h$c{Q z{q2;l!1xc7)=Y{(y8z+$yijjPI>t92^uX~MwNLLCS5HwuX{yh}jR&%VEDo(xLINwG zj*BV`Ri@*OzSu-Crxc_EwQgGU?;DxDv~LHbaj!+vV+-Nav3ehfGJxHuMUyCK4WH1K zgYNCS;hpPR^1>i*=TkkT5Hw;-ml;IaK)J_J7}_v)zqbn!B4Dkdo-{X3&WUX>SbE|iIw_j@E?6st|JQ7FeDrkTk} zIzC_5Un4^iQS$;@jyvY^1D=vkk~i;g`r$gSm~2*8{cp;$Ksuz|q3E*hDVX+DOTrb` zzLI<|a?AX(Br0v*0eQJ&o_CrjfLISiW#6gV{2q8v>VWXuP|Mt3t~`P+eKO_7;4XFz z7|Dgl7zuTqpqR9foH0=CQB89cAYsE++WJKzE`#(+!)b=o=3YoMxq{u{3yU_qX5>4> zfe9cr#JbV$#FzlL0(VWgm zsgQ@SoNIrur`2L+C>V;hH!Bh(r|mi1X>#~~?1>nTP0?`u`uGi*5xhzVlS@Q$dHck_ zMes{m$hm6=WK^182-cYpi25-EcNxyJhko?@@Hk{6$S&1w-2tgp&6k9A2F#M?Tg%%e zcy!|MVAj#Qo* zb>8M!wo#WWUsImNUmuqVmbH{79nk?zmXnV(plC^Sv6a{8>HH zdMn~Bb_~vAFmy#!>;4f?wb1$BFa<)7^8DjBwhx|lpQ#djAw<85jBo$W-{s@_(~ZHa zY|`2%E91TQj4f|?+tpGM;m9ik1jn<{=&H!fBCnyx^<5z;x{4#UUGz62%v=C-ujs}=^y1! z%a&J7#O!fZ#<$s7I^Oo)V}F_Jnul0U`gYfSaM(Etz7j(b>@HZ1WYMZu95j z(F0Q8yU6UH9&T8Z(0vrxuo_t=J?wxCL*z!#dTSQMaI?&M4BhM>g_;(&puH_Rq z%j48u6V)Ld z%IQ1=>cbPY=0Y0Ml(b=Q>&;fMYvHWrYIdUgw~qS`w@TP_Y0b5?ex2ytk5_0w`o)0uHgvL+jc*+aI911=c*jRK_?zq z(0MfwHLIrF0cm)n+<}@8HtRr92lH2=WG?e6FiJa^+^>BAS$VuszSKYg6(>Uk8-i|- z3V>Gdaqny z*=!?3c@Efj><2z_90=SAIJVaQhsy4)`JVJsBq|N{OUM5741EyUC6-2u#Qk z{j%YmFcKjs)cuNYGsU1{^)DC!_|0TN16!&HTA{uD9*Xxq1obO7@&Sy~<2CHK~t^Ua(0|&hLv3}2L#6f8OBwdVOwef9@!KZ4^y7y+^ zox=?}yQ?GK`=MU)5D8IpkZew?eqgh}+WO}L_$?L^i+cTpW3b5iGF#_tE0LYXRprMi zvfl5A$LgFB)Z&+%brPoP+lN$k482ZVfyD`QxQ=b{g5UqRnG;JG^y*sip`3oDUUG5i zoaW&k#VM>ddV7->07S-5_^ih{YXz=U4EQSkA34{FsY=()JJNL9m!I&()sHcDPGs9< z7?2?b>lD;^U;aL*1A;EC0vE0wC@6*noE2%9dz#1NopFZ>-$FFniPfQ^dmiGE6zIx| zQSBioAVplvk=%;wJ4snhZIe2QoljZ%wfwFy4eEkNff+L6B?aM9uRb>AfujuXIH7=u%bzVg|c+eOTc z>kh+Dhco<{?~sEH|Ex|;qZmR0lo@@c=lU&h$3p^9j22HZ_FoPj`Rvgo)IpdAmbylB zINlWPSg44hq(VM?d#e>s+kAWPF>&|khw9qjy8FARqtSJBDZdKMMz~pA?{DY)`}Uhm zj>tB9jP}oY7nv+!SQeJet6ia}9wqXyS`?qP+V@uin;yJSm(IbBTB)R-~Jpa3-Q&{zOP*BIF(Z|b24NIgrRy`c35y>p}plKw~ zD63DMd17X#Z@nYt_So=yq*VK&RrpOk>vUco(W>mJTtVF~cE0iI!fff+7T-T(pdo8! z81~wijyUv`aJDAu?fcY}C6&S|7~ex*raDzuG~I4gVR@!X2w(-?DD~+{MVUPLGgp1n zo`BzQ`X1p?L~r{N*O}bD1Nwq@9nm6sKIARe_21$MG5j2Pf7qmF(x!k<>qIL*^r0u1 ze3)x+{M;&Ax*s7{QS|~Q7a}a$!i|y8aj?%0>+D0%##J-pk$b-qG6PYvasV-|qPYjR zdYeW%4EH}-A-1^l4`Aj^B%`3ZCX6q7%12X~;PZS%mYaquBvsNb@?z z{}JIOqy1jOMB6bi`&5B{A4Aqi@Ja_2VTBUXvHq;x?LKYX>383+LAO2i06dR@Q${t7`$|bZn1tGE7?smCiEFW01ZAhhW@>N@pGX8j;{>fl zBk*g4Ev{{BHr;>j)dUR*aK#>W$}p8{?P3$Nr+K~mY#&3%(Q07U)}3=TD)*heM$j}SvmFdnE{)rC z2747G*te^+quIJDmFddoWs1X`l#{qe#8b5S8m)N@`r+oZ0Yp)_f>x(RkayngGIoBY zWjdd;gB-`c{sxwdrzH&`s`#FFjfAhML}k!fdw#L4-5+bH8ct!-yDN{^6!-R!X#rUw z2BJ7xcRe1-V5oFNq2@NnmkS>1`M7)=xi0d$l?Jyjjq5{||E+_zp#sj~nH+7!EAsf= zI58+vIAbLEBtuhj`dub43G3n!yF?(tJ9YPRcYf3LnuaLEoh*`hQr|477a1+iYr_na zn-(T%)iEezx_FES9>?(xESO`)NmDeP*#V5L?OEd{{2)z&#&O7A!Nu6Peo)R$o?PA^ z0#||+9z5RabHTNNck-hhj0vCQ5nHduaegJ!8(SLCL6~!oNevBSclI>k9#V*Iy&G|fV^=Hyx?0phsq`b$d~`g;5^B>!gLKo`UDfI zJV9KTnB~3s*x7-(S}X<4gmo&ma;>+kG#ajY&Qs^xj!CQUnU^f$+U?MnbF~l*dpZmY zL$lu2pQbn3PW5eQxFG|2?^WWFtK{J^uNUTYINY>?N!*VQq1NUm)G5xu+O00P*Wj`B z<{aGodxeR0#3sT$dgc=!u{J*^U-<~3dGo#-<@jtIwl>t6D4jR){AUKAqFC$iWqHK9ct^m=*%Nro`4&FQsIe6gCxARc z*rT;T>0Y<+yw-#B4#`l*Ah4@CV!|zkeWQ%Q*{)-Bbb#>CRG>e9qS%2V5w)OQA6&Wh z^qZ8!(hk<>hPyC5kNNlF-NiCk1-@8cq&hPCYO^V`w3Jp-gWog=Qt8LpLY6zFkSmww zvm|T!I5c_d?GMmyjGbdQ4s&vm!k!8{(H4p}M1L7?Y}Ix(5Gu#&g&xq&Fan1FU$V)JJGc-}rO`J_cLohZ`+;P z{+(|}@DJsnr&i(&*cVYdJ`E!U;Iqinni`k-QALt-f3vq3^qg4GMDfih`(KCz16BBM z0V|6?Py30z9QQ#?Yi=C>0nVkv zrw-(^m+Fay{TwnM4r3S4gZ~1>JqoP!1u;rGz~Ez%BzSdJBd<#>$aT+SS zk4pI_Xt*38r%2R*R;fZ*b*dVxP-~cepIYT}Yb?P&mszgPXXC-xym?NXqVGa6hVbCl zch4fsm=u}gDr6Y@U9Jf`(ja8c!WEP%{Kcq6HXx@@r;NLA5QeyETk&t@EKbAy*-2-u z6*H6Tngb%k|7c*rh3sXKuZMB>-0}S*CZT%0`!V(+%GiP8@O~N(PhxR; zz)qG3G(AeBPpi#zo@GbdmQXj7B4NGJgGywvM|aU{ZM;#j64ff73o>ECwjmGNzF8uC zFP{8ug0S3QGGcFno>0P7(#8B>@BD7l%lj7YM2SH|QQx(!SP7AEy)}7-XG_k)tf;`& z0tVDRGaylTJ~OIqQX-Dg!)l6ik>7IqU9QPQv3vx&pJ*klo7Wh!Mqr527}V8Qn;IXU z6gqN?3g=eQYK-u9bZ9JDq(vC={x20F{K3pxXKZy^HaIHap2icgcr3gUS*^|0aRI`+ zixEwJ^!%38XVd}75Qaf$2Qn!yAEyfa#9^IkpU{OgM_0Sq=Em_9%ODr%ccDW;k}?wS z2a#1DCKIvvoU*si%=}7L-=&L&`Rb&rdt!aBlJQs$BD=xmbIOks&*^G;Ip#mGmIpG( z!`f;cns;#gOrVJ%CS}Zg^gxX3s_Ia>AHL{y&wtMHG!z^uFF@j72B!K0q`w0jO~~r7 zF~+>VXa7)9S40s(Ue|`?YXEVb>@Z&OhHn~IaA$WTP33}6pm_#ozvz>>t1&mRUQ8DLK>Pk^n zlHAaOuL(EnVBD@zi?QAQ=KDvZ_P5lJM+z2q{sR*(U`8Y?WM4_X<;l2Kr@|;Q?)dEC zQIYMVqEP;Ps+0#0&LUxlz>hL6j33g)#OoPJWV!qR4V`d#=(QY31eg>ls8uZVG~y4X z{cE+d+f(yLvGb*(({8lujA$WNIH!L0KMNfe17@=46rZ*o2CyS7$4A=A&v1ltzIkLG z;k&rs4FzRg?jlqi15vcgnA-b;fcq`kJ7m)G?y?I&!wwoN z$36TqlUfCfBcbPG%*dA_slE{(h;ENq7scH^UQL`YhOVe%W%*Aqsee42mQh9eB7N}37W+H=aF>=;kam)HP!SY$bP^w zQC}sbef2^+l#Tfys-~x3(3*p4ApO+bk`&8h7s1t`b`5{h$vm@zh?n|lbgNv8$!CbU zB3&%1iIHZHEG7Oq0MU3Tk2|mnXL%(#w~@tzWQqiFBw)Q%R)-hKN5_C zjV?C-iepn{xMKDKBdWU1UP=Fpu(>0bHzJSMS;-EmKiZMO|6CvrxOOapv$xa^k=N+kSX$XPv4}Onx=EvP|H9 z^GW_SU`pusuUxLoGp=XS@Q$RUtgH|{kMdv^j|n_4{N5jc_0PPX7OTQ6tM^P_Vnc8N z`!-Hr9PbP~wX@5Gmd!e#%M}fEJ{y1W1EKuQfa)mtT;t|5P#cDDDapl?efHP(-hF%{3XzXo12hR+)E>idm$Aax${yYa!u%oVd#EW2 zYwb%F_6ryOd|{z;+k>V%tw5DF`zMXnGX3Hl-3QGKTdOWSGg7M0a=zW)(=Ji1KT@%b zr2*1iEysSXKmNUWy=<);1{JcUYsBbBN)0r)02T@5(*QI}o&*J@vZM)FauSy~G+^5*e?%Kl z?0*va_7OONC05Eoe;oLhWET$K%`{zDJ{nVs>K|m;ChUE@T(J5!gSTw|ew zTyh{Pu{kN`b8&|uLxz}eN!!|0G&%Os;o_yE1 zIlS*a$jLYEcso{sYP+y+C(%vQ7v-~lUHiqZ!K57~_k5vEjl=A@{brx$acWUJD@-n% zUjUtk13^7jD70CzU0t;Nof#t$zo&xj7gg3NjO0l`K2!6KUC0|4mJ>64rZ&UpT%HeAPlVCaZN94`QEY&}|h5jjxb*)<1 zysc)4Jq=p)kJS^3-)G+;E1LYhE63pc=%jQ3W&>?~Kz8qOv;BYqLDcj29@f$XrRLv@ z=(M7=l7)_`d+cwlmuKbb5#AQhuAsA*;^*zlMt6-?BlMFJDR7|8GLrL(Y>c)+fjlK1;H{h%?PeOR|izZz&N7ds>xjb zpF~`IHzpfZeV2C`-R4S7-<5~*nNr+@@I>T^?j=bDrnIGw{A7$Lhw}?J-A?BYk4ilI zur@xsmiSOs*3A5R>#+n*3M5K?7sa&S){%3Q5C>bS7)%TNAFx7aTRz1yx_lZ+33oym zoKaou@6Mi>-M$EPpQkR;evG6S-TNW<79Ek0vAk0z^cNM@Xt@Vp^{)dAr(|Ie{9@s7 z(rjPct;JL9i*n|F`*FB$CywZ0OxSN&gN+zfT|^iL%1ilrwT}{HTF!<;yB<6f$7RP% zagw%OagbuFUsEU)snRNhu7^Dc_FkZIKz@!wC4vc>3@J4PRokjN^YDt~AxJg9?$+vJ zMy`F!JpE_JdV;io@1~~Ct8A+%*4Qb6wyGzZEJ+e9n>@6cG#OJ`M4ODdYYg0k0X%0w zzF0KDsp3xhfZ%&@uZ!6|xT537r#9=-X6G~d0m^0aG8lOsw(Rp zJvrgffR5r7NX))-cpzWb%qxXZKlPUR3G;Mxr(M^-XOxEcR0JQRbtE(9f9pRCO_d|Q zE^^Tncr=RhTY;a~-QM2ySUr#QY=V1@M$JB<7K*-P`toFeD(w_@FujA|g6oXt6jbt_ z!`&N64FTuhI6fR5%*p3I#6!<aY}>r=R4PkC>WekE?+G9WW%$MJ~suJ+^$ z+shv72eW)(44$=?elkdg6EvbQnR~pq}BOYm9u<<=7apX zumu}_L0tefgOI!`p-k9e;yh&c#l{%ZDlrv~JP)suI5tg!y4cQ#qqMP<=4z3BVVw84 zTN#2Myxh(dP5D4iR9!rl_A{@72M(q55OAai=+&=Yu*_*5`X`@l7;k!YkQa|grR!2Gj+dP&$ z4aH~oPOIr2vsQYUacaR4xZIZ5x0XOu5>6a6N38>;Hq|~H33hDROdqeAC}HKtjRa-;v1v8l#p&kq+xVQNQ2U)AR*liqd`&-1VKU& zM7o>Nosv?cyKBH0d-r?a_pe>ouKlxTyYJ_FpYu8Av9DgrkW#KYk-7@u?dCg8srvoW^n2u!HwpFz5({>u>8w2koc#Jz7`|^8_mKLLj%j z{ypX~2tvxOOIbtVy2HZifR)qGPgI`vGXt(C1B@huB#XDYW4=XUWx*i826S%UcDks* zHQ#3ONVxHn`2#}~WW@p!cCz||!o7!QJLN&!Wn&znV9ahPqH?2lSUSauVIwp}Aa_Jq zB*zJELMZbw&6Aviv88*zId<3IQ^$q;n0msL7La$aKJCDV^WC}pWbVlMILG1tf92NL z+H(;}yiUY0rZBPG*Vo*V_uPNw=4>nC`^o6oC+dD^Wy|K)jK6lgXv)A_Vbjk#%~caU zc={~-q5f<84vHjLqo9!;Ncj0wcf5lNd{1autZ;|0wzg5>Pn13h<~$wVB+js*t3IV5 zm6m;xK< z#m6yK&AcyhY9}5#4)%ZgsYvZ$HEU?c)x4e25{>YE?tXYo#Xfb=cm4CjI2iRt18N?i zJXYlKRI}3NsXl4#uXi742?k)IE&Ry1A$Ssc{YH+W)yl>9SHpp*%@jaU5ViZwSm!wu zQ=Jh*LdfCkJ3|@tqzqmWW z#Qd6p=|w9#Bf*)7Wf}dVw!i=b^W(E;x{kNae4R4Ipg{}vfLj1qn5>Ni{ThCb{oh~N zymc2o;E?rE(q-aQi*m((G~^ZYrG1G)TmJEr%zhEnLUN1m>gdJwKr(x&)pc)%CR))# zJIvA3zspc;M0{gtBu63X_}+7S(E_95!N$@%-}W&JqJEzhPbYZccGXR#c-|e>;t934 zEMNkxR}Cu}xQb)nQyord;n?TSR0d1)@vO94Sn#@K1D?qwS&^DaPy_v1Eip$$LQ`R; zJL>44bTi5?KXY@-A)f?vrXo}uS6Z-)(K$^TUWh-Z9Zf($tF5r z7KiZOuF_*jeCufPSCE+6a48(B_=Rhdi@o^V^}z4r$>_;T54;07BpDpY`TMUatt4hj zX>T_&7NZqf6UpjFtR8;J>dsu&VWUD@@U>x5HTCKXOFILP@Zfe`a5M?TnP=W--H#v; z@Csnr_3)(y?_#gjwdFM)YiM4id{dQraH>mLLvZ^?=f%ndZiv6qOGO85xCfXxbCcF2 zh-C=vq0eQ{PCjbl;4}W5nEe}VB|REv}e|A%m|~5P0pzWf7K6o=LPc8VHWSn zIC*CQ?UBFLV=+^=ESn(aTc^x8=$pE~F+2hxT($ab&|rvHnA*lc))$yyGdX-_K9NSocr-X7jD zV2)u)Q53i3z57JSq&_c~%czYlm$!co9QSkxaKmb%F8W_bo*?gd>FmG;3--^s<>B%7 z>&8D{&C~3!!mkTTYK;yw7Mo>gziWYa5L6S6W~1&6_a55_gYT!X&wp*VbTF$aF&n2l zk7_&9WH6gg*Z~}!H@lD@6Hmr0mb$>6(?vLeaFrvZn_lh0y8AND4!y9eFQa!h8(C9i zlkHBiiKYPmQ!)*LFJBvA&fww4 z1l8U=$63RR{klO)`4@NLWLe1vWdFn+ITBg`BRE>tDRZ_Pi99%^SPM3Lv3^v+UQ){g zgU%lmh`dUCwQ(>&6jL3ttv++%`-9DLhSGiGOPncHiH`TD+FvP%xFwP*pr=D%;~ei9 z@Qo^3Evr23R2^!fNjUyQldj0xE{$P{maC_5*2a~0s1leRx@=FFG}8*%$3nY$15q4= zkolz6J}ia1#{}t&Q>crYX8KG;v~yTC(k)MH5#cTaWWqXQnHHg-S(f+cGtt>7l5MRF zU6o}`r8uqBcUf@@w$ajxIH|MEsOS9K=d@Q^IkALuupg`N*zYQb3Rd{=<6qh~O~Y9OyhiJLw1t)?SOsW>I38l{tRVJ6)Z_4^1~%8s zAO^!b+Cd^20`&?E8lurYz~;pd&J_C#@uQJ(0Rx=qV(k{Aye%5keeXm zpv&X=H9}Wr;2;|*1Mb%jtlG#d5Rcyj>p$=paRa zjI6)>00Ih{2;KPRehTM&rn`*N;n2d5HLHj9z;&ftzoftaRUd~YW;tCxpjj!S5S5O{ zQ1*I|aJNM$jff{kUU;;wf zSVi&p&^Dcyz~ji3W)9JZQg>BzoUPwuG_drPssY?VirvDdfLRvZPc$-NdZbW;^V1A= zZko(Kg_Lrs*?xPn_TzA8RufMSsl*~ab2xQ{tLd|_^5z*)H%Wz!HRA=XF zOI?%B^|Q3aL-p(-{JNhhg_ok9=DT7{Qan|qz#U)B`nVVR#34*nwnv_$Hrhl@CU;a$xp zA$Km#nKB9Lf`l)#FX3ll7H~7Uzqf$3;=S)SX~Fm57+UoHTXDIRHKk}H&22!@z3 zF!|1RW1aQ#BX@7+&-BLdJ8T<5pLTMY$E>q_6N1T9vhp1(O@%~!$lAc4l82xv@rr+! zfhYx+1qTpafN2WoP00{k=0!=+5`uZYodW#$E!128qUAJjl^=x}qxhcv6MQ^-<@WwT z%&Nbe^w7dCHY-C|6PHVvLfMk$HJw_5cHeeJw6tpo(I2XPnQG*VZUn!|28Ys<7_iS2 zfLPv>EMtvX$%l?LzH-(C%libg;gky^JKz#w3QtUNrX7JKW($u7Nj$z}<1k#=QT!wl ze|@C=%%td597qU1i#oM*Zt+%h;K-zAfPG3QVn~llmIzyohZrza$woaUG9@x{o0G`t z*|r|LgRi0`1VxQkt{dS$yjjIoOg`9nkV3L3=y;Ax&bMVW*N9=NSf#W;pHINGsEtQ1 zkn;f7+CWrw;xBElYYnx}ewQPOA^|QdZ79wCz^)+5FE6BGzARM4poGcQt(HD2Ny>uOcoG zP&{QpSGDi5i_aGU*CTgy6FTMUhL%~67(X2DOw|RyRw-FBd;6`G>OTF3K8DDIm);PU z;p9sX!E+He!^rXy!UZqva|s0D*61Omw4>cry1nw&`XgNd<`I9vYlRpM{ux_Y-q;G` z{yg7Lh6NHreHqxIb7Z2bMhJWnvE97d28_U$`?(ao!cxuhm1>rZPMygosZZXHUFL3rM^aM2qdG9$`=r_bl#( z1`F<`^QmS7oTsqE%yweNPUa7pS8GZ4q$^>-hGdYXE&xIA?9GP8;w`T1JQM~z&*P;C5-wXYvSxL%>1k3$!` zZ^f+dK3Kt@%B#p>sLx?P@0rpwZce}0H~uHxN6Cc%im#sWtya4N1I6xuI%RPv{U=MDFf0fLmMX^=&Q@p1NP*c;8D}|-of5>(YTQ8j? zD*)l-M{|EqR1CY&Pq&+!2c??xywl2=YcK(MB%2$~$SkQF_Dedw-tjdg+T4IV;6mIo z3phi5X4Rq(C>IG8q%3ttpH4H@lR}bYZ%)$o{B`=>($)cIUyE4t9W12u@yjRHgAUya ze4!hDGtPM{+houvgFu?2|7LT>)k_4FW?}~0Wzs3YW_V$}y>p2D+K^yczm#3djKSNl>{VdnCw;a+LNT$b)n$QRGn3eMiQ!#ZdD zO7w0RVD*MDd>qNxbg2+J6m=n-1Lq0P44<)03^vy z{B3%a4_YET{aSNx5!ivs)&MPz9r*;Po_O3Sf36gE`4-s_M48OdKcCgW5E6F=c8{ar zyymAg;L=c4}E^hGEuJh zzJDyw)uq0iM|yColvV!A3;Q_3j}j2|dY1fT@LFbZY(*e?djG@N-y;PeD`A5_<;2BO zgcN-F`(4-vt`K6=xO_hwY{!ihni3PnOMtrgQnIb5IaIgg?N#$j$pUp7M>7*7L^=5#;_uzMsC2VTqvqH~a_hE!sGUJ--SCA|X?iuO1yM zlwL#Yr3#(T(8vZ(;rxSyBuWCJ0K*o8zd;v3Y}u=x2(~h+s6mW5>cD)GnlgW_Vi?%^ zz}{F19!dGeCpn?jzExS&$}VxO4r*gkYX~ZuG=6)o?7S@=4#<>p%rzPC^9+<56~cBG zFJ&QA86J;kd0nQJ2F7{bWDuXpF=3aPOo2rqtm2dhT*QGSB!R@Sz855W$l%fWn-A$` zY69)dOqgh}Jk%4}3EOqBCxNwAb3);qMqg_vsuta20QMgaqhsnv6@bmxdN1I@#4HjM z&HIyYrq4gug%x|ZS&?C#fr;-NVDXF^+`g)Z8%UbXUBHv@xrR92@xLlGpFV^Q*6qHd zu=;(&Ozd>P|DE(3FyTejhwJuJ>6lx^8u)P|d#wdR%yPRFJ=_yh=k8^qibH>RSv~$G zlx@a`g;s8>kN#mxT#*rdMon{pC&od+`8`rU(_Z-Mof2l>1pkn^c09*1hvtQf&-Lv1 zuOJ6CZ-dwdBX! zY41xUAU~2o`=4Z?+Wq>D#Qnjw^eBdXtuk?|jTFoImMTRH8IJwW`lM>%g!bw8JXm@G zSZ+;zs**20XI(q2hpf1qUa$G59pmiz4pgqo49RpZ!F|yM5@*!B=wrx=?7qqQHEElU zTDt?V|cs?}O23t|;p(ZS&_OB=y(p0}eN(EO-avDqSk#}-7e`qt`daen3=X67 zD@8&Qim%26Bks)a@qcSOJQvk{Talz|r0l>P8GYHtg~owp`=3de|2_Yj*oa1d2K?Jl zagzs!)iuvfp%JR%c37k;L5ZIVJmi?>;8$WkCGOmc@za{NkewH7YIxOA!;7(w^zC3cCL%z}9hsmeR z0ZlDu-v6La42zSV%vq(w`0GV{6?e=}EEJsHb$BrE4)*_3$_v?w7t!F`_f;Lx6JNbB zTqUWh0tD6(T1j-7pj%Z|owHz!#=p8qsK%>ypFfy<{Tv`_WyLWlrEYsxk`lFbv4b$c z5GkbT%umsN4G@Dbb*@+L={%lrGwTarD3)&CvT6oieD~ML4*u<8dl4LFFVSqRvQc%c zv1#r0VA?n29mVG#WLcjkwy5lcKoios*xY|M&cuHHI+_o(YLE*PwDinP?HXrtyUXl7 z7h#V)L+hdw-n(_nXQ+cAk~A@`YW$g&r}iS>ZtpGAHkaApoboE9(l+`!v`oStOxZQC z>*+7gL~u?mTvV$9fm$vDzNP0Gk$|&>D?|wH@zI#CUv0!UG#-6Aft|Gm@bwQO^R6g$ zP|iCSxJk};vVI)&_Kve8ywkx6OO5qZyg(|Cv26(@J*(gdqA*FWMbU!queu+Wq62nh zu+c;HZ8<63<02TjC3r~&UZ;+B3H#i`Ov+4#9eW2^&a~f;1uJFch_HOYpf}seQ_lY# zoEqmY-ut~8{BWCN4Jekiyq2fk0uxK>=FcQ;;yk5UdkmSO$Kv`O^m}x_z`|_Dw=1W< zSD%<+sqb83j80^tyRmOGP0Zl!g^zc4dns$l)q8<5>ONHE9aOBWLI7nvR@w8rC(&O2 ztmdD|`9iIy{35p^O64hrzKiVYD}~cc~MA}p>nG1 z^Bz)H(EJJ})7aIwU|)Lr2s`~WH~4Z2;Eri`8g2?>hc{RAq1yfp+&3ob5DuI#bu%X2 zgM++4qnm4+Hh;c^zxCR2IpKES?8V4^)=SJT5wEF!F&9jPPWRp2sG|1%jJ(8T_&Ak$ zNs(s>#$-#1l(GP5Z-9x(Ob69bJz$KduMBtGR{7zv$&G(In@sRi~C^X+G}4|o~K7ge^-CH^a^ej z4U7guA^~~$|E|XZNmC_zc*e-nm!9%a+IP0Rb_EzJEWa?8seW;iyH|w7eUjBbUMyM* zL$ex3FIT=WkbL|5ZJRskd1yKDhi;0sHBF28WSFkznWAj??6+r!({Crzv==`iyG z12a7YFIOZSvYSP3jn_>Xeu@x%ulD$+VGPucS8jPucm@auGN@2AJoc}=|}e+p%5cB zIl!P?mG1kLoaOfkIm|pUNE`ax-ieCsb;V;YWICkX_R$Hd?QB>k5}56+K^HPwOu}B0 zsDPv{W^mgwqYIR6R0CC|lE^=WNa&fFdo=KX_+kyY>y!Ty6^ph-dcjIL`m0ax83DBst@0oe}U9lpGFrOtug!Q#)9%97!EJR#RrUCe(n3J zp~36zRNvb3oB^LNywSd>eauGx=ef4vT_Ad zLLX}NIPE2yZW`$QlJv2=37~+TUWw}%=Q>(wbN#1Ko%k%-@#9wYj1C`gVn8--kPbaQ z9-WJYsYzb0n6-t{32!Zociv(vwuUy7(g-p26iKXL_uE2di=VXMUZIb0hfrMg9Ky9% zfPxrnyUk;TJ8Z|Du3vqT{tOt~Wtwm~&4;AUzrq0Tyxa$kwQ&?-JSXG?(^WfXCjQ|^ zrbGG+mBlwL!PcnBzCFqBrPjobqUYfSxt%x+r?-Ip^Ak8M7?cwg-)My|%SFU}@bT^53@>4e8GF(LYz6B!=L;I&$tkp1DPdP`-?;z$Mx2%4^?-%SJbFno$$lb@( z02+}E*ZVnlS|4^goA!*>g_2?hMV(_vvwnU=H%7^xnm-q!wPmEh6+?MjdG5Nqijf~3 z^+-ql*2;NB?vAf0UP+RC^Fy2TrTPclxIk3c!oSj(2c&;CP;~q;^SNet+?zEpMu%bR zDoG_jk-IS(&l@p~ro2cs{~JW`nkiinVB=QC-Za5-P!yC4iaoD==HPYR9kyHcaY^JA zi>$b{v(PY@TW-4U?=H!B@13zl9Efl4Q!<0=_3@HR-}HZ%qF|sLW-;l_D-8=LDa6zF z(Li;^ym)r*^6Khhc`6VCzd2X`6H2mQ*q9>ue)wam{LqQ19+$0Q0G)L(WJ4uzZp|R<9(JkYnLXSLCvl;Djj` zrMKKOP;zBK7+9?V`=MdhG=?nGx zpL;)v{#D{KNtxF!=+xa2mzD`h_rz{KN&ROvjnL3rFIN zP}@zM9x96xWKmgDl-;`O@;X-E*=|~%^1s6Ubx;Vvs<+@O-1&UrRQC8J5BU;80WjvR z6HinTc+g4Q5ur#IU-jw%{wS+(0%$~!9lX>69dYjrnpK+n!r-_$ci@K4*|txqS( zio%WdBL{CNI%8(DZdlKU;tstbw%n)NT1KBJrhf$^n5ymuUcHYEr;PH~_`189^!>v} zI;bHdX1?^dGxDkUR3E{Jn}VVVc^a#Vhg->whg%J6$-ll)2Q=L8n_T5Xn-DlfZz8bV zFjUpI9grma=SQnl(30Z#$~fmUm_jF+E0Rh8Ws1to)iTB1kCXx0kUV|w=l%qZ+5^%j zFz!6Im!>j>-yV>kaC&p8xOsgo)YHd^*(kSC=>!8yM1GdoXgzH<5FQ6m(e4ZYnGDgA zmhnK`)v@pJrW@K)S?)t{7h*|IzFb$?jSFS!3-t=$-4EKe@bVxO#zf#>mmYcrD40l?)_ zh9nCkbzt{T((^#V;9hWGq2142P4z~5o@|8+mY$}hyNd*3?32w2MML~W5t7jA$E;bl zEeTmIoZ6@8h%$n8V)+)`*kDwu}_?O9U~c?Szz6 zlO`)y4gl9Ymq=U-e{6vI3z!IiYr1!632t7r^j2xSW*75QKt+`BDp@7`!#e z!v_eifsK}wTRk>&PW9gQGpV)zEt* z#!HP}6Gr`_-fcs^v+@A2D-?A^bh|3lujSoAwGwBU3{qca4WEDgeH18^@96&ShVdVp zm#Q@xCM=YPnVDD_^|`}7jG9Z|Kp(L3@>?zf24U60TKwTY)UQk+(xQ&-=p0LwZH3W& zIn+b_lYR(shl3F=r-3AEd1vKIKXVt~K6jviOleKD)WUhfSrnKsKd##7txC_K$nG-a z7C^Fq@H$Ouv+$t5(^jJ&EOzn&D9*=qAC%tv?U#w_ti)HuDQ=wfML=%ySukVLUA70O znRXwYLY9aC+z2x-+NQUG$}h-%$4$7&8g{cfe^aLQWBYg!9>CLtmG@T|@**K5uj;s*4Y?K+<>J$ivU$v(iKp{A{w5M3QLz zf#my(JJd|$p&+HOEV>pK>4ISpNI&TeO2J1n19}| zo-Ad8;T2_E5zsq6x%W^_AaSi&mT^0O%zwKHNbc@w!qLI@(xxtH{EL^B;53oMv16e9>n=f~1>!_sc*H8! zija3b-$U4+%B-rzp2;2cI>$R&BrJL;(g9KC+1k{*l|A``a}z86sgKW$F!Xb<>!w#+ zR4x#CK5c|{;~2h^tHM4ZcYRS?!c`4sDLewaR)hJ4s?EAK&Z9Kxc!${MBZA^wE905< zdI=zO~xhg8njgi=kM zF_`btcvl6j;n{)taqy%a9o)9`J$1xfFeQFXtLAe_cI8(>QI0xH#1s~02$oekt$lr{ z8yu%=NOM)rBYzB+#yFVPwyAD;OqnT`yPunFE5XOu1E>$7;Diu$P3I>(*1vsA6} zegHY4MDEvF-cX)3Hh`Ct%0v11lixx@U`Z27Vk@&+(<_Yjlcws;%GTf?+v-^s20xy= z2GapP9#aKE5)Hg0M|>B$vG`=hQP0l9gt|&?vb1r(hk~c#`hYQBg)G?bcKP`K=|Io5 zapi3LCUW#YysYQnz7Is*)Swf~5=0yzciN0#{F<8yNc}F=F}v{Vf`9kaOsN1p$6()+ z9#IZjg_L2fomLmR6%x9oWR8jsD-7m}wpgz|+j+gmeL2ZZmS+dFRDVSe?6C18xAusm znL0_6ZpI@{4h9e=2pb#t#JHs|&Y3BzX6O@UFo^%XcJtQ_Tt4mRu#P3(PFFTr7C{VO z{lNulU?T?>qZLAvNqF1DH~?sUOcnaCc(^f27P_&dXp1>4CmHk8I-#-Oi$0sg*V3ooRJ5gV)-m$Dm z#9;eG+BV1`S1Y}MjBI}Y(}DW~dH}4q|zwz|-kp#C!j#@B#jevH-WbH1?u z64Jk6D23N;PESr<(%pXkc#r-11KAt&seLkZ7n)YFc^=Gk%=uUPhjoN>O~xhC?d}b_ zgQ96t>;j3%SbLg09eHPQrO! zrQ$Ys)tS)lp0}8w$L6ulDQ$qh@bTQq(#*~eo78slukweN#sl#EI*(8!1L&{sd)qan z-Q>LneT+N?toIH2hAJoR4e!`MhH@zmcRpx->G{3nQGKqA#igPId2`oa@esY8l`2d{ zZuj)hEmBDxg8Wrn+F}RTH9zAUWa+ef>mZ-RUi*CT636vdk_~)Q3Hv0|llqzw z_MSh}i*s9(URF0kkZHd2myss?Alkz6m(*LhTET|#QK`---_x8?Y1j8p2a3O2UWpAe zCGt>_xpF3&ky9ed4U;@T-&lU7p4>x;$z?$l3uuk!j?}`4hT_=C zn4zEObeBXrK)wT>NGL6mTnHc!<7JUzYc>L47S1$je{2uD}JgcMJ!wYtYzQV za9~6{$L7B%E8rU8(#D|mNpN+ZBn(|lsxux5>dd@cLmqN|o!y1w6knp^jKA`i7-_Mf zYm(G5cwtb@P)~9@mn98TmR)mDeBv|OfBhj?HY8VB)5cb=@%aN_RPuJ>?qT#4))X{s zl=J~?$_winI>+DGINlgc*vIO8#x{L{gP15M^3J8qBq8VbLmbj5Je}7nav$nz4+#jS zi0Qo_cO&kdCCS2~NrYH=HWzc&(Cxg>&4G++8E^)Js_tJ(@-G#2{tItcZrhdz?Z_|x7GIJ{`ukfmJjIXM$FKcV|z+RpHfb2wa^W9G~!6zRpgB64pbOz^audEkE z0h*2XW__I1S&X- ztgStY3%A9AvdtfQ*TuRiH#_qKowjWi{jX$ar>zj^AnCxg_$oGlzEZEWniO!hc=1cq zB57Wj`?kS*+VwFuJ-7-C(6P&9{POwqVHZ9VM<;OX1AF6c<2M-bOTz1~*|0 z`cOt5AK^gK4k2wTAmjs074lyVwH*igK|!yQE~%oGWk00N+HX8YUd%Fcs0xq|G$c7y zlZr$){eCrV?ka6LX4WSlO*bPz4yn=p%{E&c*C8fE%Iz0*wcRvBihNpN@ zC=a*0be-V;^Vj^7Xn?z?Jfc{Eu$eEp422T`x6)WAv#?*!&K+^+^hTn>Gg z8753{0eonXSL60(3Kvzk@}h&H-7rCQ5kpU_Weh%)2-`S`fi_#~P__6(T4R^mif)hG>g48c}O zy&z)ne{;uy1zE*eOZLH1Vw255z#gBnHy!$+vK@&h#xxJies77tQkb>XPgBWd#DPp= zX|&?S_um%NR|b@=feLx~FSS~EH!L>ltRMVkEO{uqv4f=PAn2TluKm0JTH$8j2c=z? z8)kcXc!p4CH$eD2{C8M{$kFMHc^*&(Mhi#`A<;Qi3_7-%c#ttrN7+A@#Wqp(=)D^N zJ6J6U{|q*b@skd&{Ffq$J9BQwVPccM%N21jHmtMMz-s8nViS&M$dDxcS8h)_lRTeW za^;5}rTOGr$M~U`unauKP=5Dkm2jxCy79a2Ts#as6Wjq?A zN;|DsSw?bfFQd!_2o7daaIh*~tZt3ZV}%QNf1Y(j1$?TgdYJ|K_2RAZVR>`%dfm}A zz{Pts0Ytj5Z!&rFdkDIE-e!)gqNM_q1$H^)2eqLP-|@!l^hTNNGTt39xdFbt!668M+DzJM3BaQ}s_tQWeEYSDaz*hAIO7h}L5hXfKCg+W}hCu?1Qj?n5 zya_Nx2e$a(Mp3gn+utR7hk+>FZ`t?20wppZ5K`$04Kpgqx!L&C1bRhwa%JIX7 zfop)7ZHUslxfiR>4BD=Pm$RqBd%`#8DIkvXj;-$+kcySOcG135*ebAjC#W-a7f@Rs z+~tScbQWEdkU6o$FW>l2Q|<$tY~#U-PBh`t*6m)B*mV8jkO^Mw_7J*nV(~p69LRzx zls|EPo_)jB^+SGRIS4oFNKjZ=Jchj+le4w`bwb2>T&D)x1!RMidZlaEoer48!!Ka| z86>w;b8*MHasLg+6@yaWY)CK`5h7Yd^{5t0sxrcUxD)I03ib)nd~wWTB!ih|-y@8H zi5IvdC!v)3_=TJ@?ez=Y8=I$3rQpWHZh$Q&SHO!st~(5L2ek440&|jgI~a1so&ZO^ zTNa{S--SOs#=9{P5(DC{%X+Z~v-dAmxa50)Yt-?QHUCBj0MnxoNe*h_>(gH6?CNYk z3fF^5;IZbZPn&iIw4wiP(6C`Xmj{2x0x|h+Qap zsvozA{m1j4?|OgY?V*v<2ArG;b1A(y)|^luH#P?uK7)GLtLH?bBchnake8Uu39cVB z7xqjV1t)%y#9j{Me`xmujHBscQJFjJ(1Jo~^*1AzdTgqz6o=goK=&hrxHW;#1Q0(^TXplJHX)58J z7>_HY8o`f@+RB0>^`0u9Mzen^Qt}CQRV6r}p};8oLz0NxoD>=o$c*CZ1Y+{E#4D%`5&n zsx??(@n?3*w5D4xdG)0YmJC551Fnw>oQnrA7 z|AxEqvumGbPlSX8ZA9Ngk4N2EuljOi{yNsK0W>kj;A^DVX78vLY4{mQcazXEYJ{wS zjC}`d(u}?5Gsc>;m{W_B(6A1Gt4Q?5$@Ss=v?l+dujK&2RNB1hBNDJ*gFs>}KB_&i8g*at ztmdky<3xe9nWvujq*tKjlUR=`)Mec8kouQ#4AP+VYMqo*sO@8I5@-O04$nYs<1GrA zzG%o;$f|nU!~q+#&gK4&UX&|y=`naH6gHko|GcSu5Ok&TmGOz6-kq2r)r^lndVo(Y zJN9Lyw9EYLEAej`DYn2QvH~CM4WE**!);}cn6v->;p$>`%@3nfW*R7bQ_akPWu@jE z7<{6_v8mha>a`sFeo5=s?x1n2$FgjmC+>c2>10jEKflb48KBwQO))+sg zf8G13GL}uSmUy+`rFj7ph#g3^yelgnUO3Ay#yJegRklSQ;f>Zz< z?6!^HfvF1*H-NM#jW3Mgid_y)Q#F*$H2Zd7TEtW(za^qW9oM|DJ0^ud2J%-g+hW8{?nWr+}#^jGV zLlt0HVu)#}g4{Ik25BtEAj0I25oL_DnZa}Hc) z2f0ZFD@=ssDnz8|tHJ3c>dqOuWwmYx`c(;p6C9qk#9A2T`s^6wn)oxE0=OvH{z6Jp{K zzIl+}XhH@Z_r3!NenG6<5MFf+oTrW@U`_+)urb-3sz@z-+;NUxI>Ueo3RKDivOx+G z%LPlqZKyR_Wz1bmF7t2Gn+T1qU}wSnComKkT847uuQ_Zhs${y9iGV0&L%^Kz6#(nz zz}h9BuP$J%(5bZTCG%jBWSJFCl235CrlAr{CIEkfHbo0#V!MXy%y4GEjJH*#z=SQ1-+M=`;RqrSC(} zM*>C_k#^G7Q=xwu6Ea1gG~Tkrxy=wwz@0gU4!|K+WjnT&6OFmp8@C!GiEevh0@$Ue z%d{Gnf0YajU30ZS?d%)5zzWGDZ9dv?Cljh=6jDtUHveIbQaXvLG+fhD%H~4;RE3Rn4 znDv8`XlXzeVLs{1x6pcHoU@+-&&F@FxFgkzB(>=v3+a=AK-kLp@JKx)lUb23%C=;~ z;KDoeRSz`+eOYAnYUc0un(;m{K<9v)fI`-wzdt(94nr$n1I6(7j-@(KD2%df!5G+z zSs&`(15E$Jtu7&dd=m=2e+YjMTF;ZFZOj+@*4&GP#|7HsJ*GTdeiI)&m* z3QYVHk2>3$d!^5((RC9iyiAucUX_2VKNJq)z{H^=8J1-jlJ^1ICYq@iPL68{eX8$sm05(hx3E1}6- zK*uXPo_RU&0n#P+`@acCTg5HS7@}I@{h8_g;Bf$knD;RDH2)4Ng%%lXf4GPP>6s+Q zP{l_9#FwgY40jdK2g_a0-P$Mj+2|LFM}bFvuf!G0i2F-o8q@gl;ztzY{KcDsWgs7W zupp2`F>nl&#`zo5Qf2A~-QjNJgc#@UqZO3I=_^@m8UWGnZd$pIATSfP(NjoMTj*+x zS{xmrexa$|Keq4v@Yy!xQU7|W$8iLdk1rpeCH=tY@XlrhPquh};>tTv9Dtfw%&0){ zei5)aRMgiY*TEb>K;s0Yv~P11_uttt)ltoN6T+$ z?5iYV0U&YAt`xes4@2xyZl|*&=JO|Jaq`05hQ*lJrC}<7qa_mO?veUz((yR`WPmnE zBs37wpRJxg>aU4DeACVw2hHo~a2mV;3iWlti#>z?KNBb%&VU;i_x@ZFdmfrYfPa)6 zC%~AX7iP)(7qXNFKqCSUachm0d<_mao$2%W?E&wzA z=k{0die?FayWK(y#fZh-Un(2`9-B!~qg<&EYmfcq?ba8ApHHtdh_E1L=8Hsll{q_TQhMh`T6OhVKlq(Rp%PW5wTE}!D@%^)2`bC3c9EJ zw)@|s^35Or%O$~AUhgx0j_f&FM&2%Z1#`3O8R z!>O>uPZ1wN)Y=us&62(Uc>gGHr4?Z34&cHcmp-SaeETPF>XQfE2H@C!^i1V@0U}KC ziklzRO#Pq)2aW@vb$bRl54nUm07{=F=?>8G(2kd0Dtv%+N&No*0*7+D>-TT6#rrc2 z`rvT@r2hH{{6PIWq*R3u*24j7#jI~u-DaXh8ZI=O)CK5A*1F_Af1@z}vY3~g{@b4@ z%wJp5ww?IG$sgXTX~YTOg-cs%_ksums3AD+Jzaeae`5Li8DiUTXrt9}aq`4vp+>jF zG$a`f^HW>@xM0ia#t6(k6M=1Fc0sEL-~SN$=+5E&5X(#$|Hu?MPQZS5nR3(@jv^_5 zu=gjleJeJ;Kqli8=X^9Jlg+=v_6uk+^KX3uxbWXhaBO#gQ-2e3<}C#%2v=1w!W`k4 zn^pUk2AO&#U5DtkjGFoBJ5gZf4rPvlI)qId(exS2|CPy!lB<`7Fgz=4`uxT0C{1afK6ZR*TROrm#2D-Ij_UAx4 zW$S=exXn^iB9jz|krQ+5abooo!2zHG$B_HCGU80!alkkLoEMe-0BIRdZ4=)9*m41I zzyFUm%lLskzrW38X5K$|8~|Rw&ixSU4eaiW!vFjxE~OO9zSkT9#K%PE@L~<+?{xXF zPy8Hk%}Wbe+aBfbjy|vd#2B|EKdXI+nGefy@6FXI^++5viKC_}0EttFMlCv;c4D8* zggSSeKaUUyaquMHexZ{%{1_rBO&kkVZ^k#ec=LIoM@#~-v(*pdA8`b{b)bRK+4BWP z>*)*;lH&x#`9mN%W4`}5Ka}SofH0f|7G)CatBazE-vE?y@#c$WbOAXtFT?3Fr?(cVU=fODgQqoYqejj^o3@vEA8g_X{A<5H|omD;5 zuoW%$i8%5W0TAQpQw(vj@i&sg3y6Qi)lW8bQ3xdAc3wy$%s1i$Si3PggGXv;<}M-# z;W9SA>AL{I&v5PA|B>$_I?1@{l^(-1sv!965#;UPdFj%S7iE|AN+^kzrKun0pJ86jmH9r(7@@ck`Mgo%OGce z0!Yh-?>~D0c;x>=SK>xJic}U~2G94;e7RIO0Q|Suet>ZXZs~Y! z$8$U0`=z%4e6&1H+v2Th2~Tf#%ccNY$Jyq%=c~YBG!*_{*lSWw&MhH-RLF|g!#%+BMU(x zbTR#=;nO(%*uTVa3~W9dQ?~cVZ~_QZ4V6%q+ zS#t68TnjeSEsN6+=Fpma|3l^$uW>nM9tP3%k8TQc$Y(5ty+2Y;8pbC^PiSvdoIPBG09zw~$w|l!zX&Y<JLBzSeFnie6>Byw0)KN@aZ=;suu#2Y~ZS^!NbFc-idrczMTrzu3^g^u_x9w_lI1 z5#TMD+HjH`mX{I-pnmfRXWm@${EPMFW7>8~23dbGE!=HTn?jZU6 zqXz2Z{H>pbNwGM2vg5r$#5r*N_n}xYdR;;*p{_Sx-)n%)eyfiJJOO);0rS7m11OZ$ zk4#zAweQBy-XqJ`AMqTJ8E6y_);4Pf$&rz0`|D?V#paBK7Tf1wAoO>rQI#m*e;YevqXZ@NZ`+gn?) z`k4#ZC=vxgGNx!~Y|~=)*E`F9-|)Wyt0lRQ0sZ_TuycD4^pgYnm`w?nk&XK`1~qvb zFCPc3{Od%Hj9tXf0k0Vj@BXw%3NpZ~e$3||i^Mqg$dqE7Jd`KR;c@0+qDR41?Dat0 z^V@TnIos32@Wf=me=#usWkEX00tLGp${M&xo-37==06T!T``<-M zq0jXIXVvI@^^W*h*a{Y$N)O%p74ytm`QyS!K-m(K$5p;9m3jyI=e zeBG|!U(qmW=F;E*IC>tC{9^q&Usd8b0es-QHN>@ZoB^ZL!H62Uk~FpI{r6-tY0&<; zO^?N~hh6sZ{c6B}=W+ZzE>6$X-2w7ON$_#(zXRIs-i$g1Ha`Ju{1G6B%yh@{@!LR;CHpYDHmX9FpDIj58A%rTEa4%#0fY0Y|+F3~BtJwj}I64OM?Hfa&^q4Q61x_S) zFVCo?)8OP$7#rYY{ zjcpWcke#NUJWhra(mOiHJ9YPo*aS{6jW`^IwghbaF|he5K*r_T*%ol@>&x1bF913V zRuoC&e)w9xcGs6!pZ`XE{VJnUeZGNgv`d2nz%1F8FQDVW9WRy_&9@&Q&E@z1B|Hro zZ^N{VJ=t`T+Ha| zvf+_9_!#H!eEk9Ez}lhvS(1-5U`fvja#g^QcbEo3+V?^V+Zbxk5gEOm{f8IdZ;EM^ zjqa)^o+cO;8R9kZI6r9reE-S3B&nu_;{ZT|57L?S9ZmSgToXdGqdQJ5ld@)PeXjg1 zQWT0Sp9Q)8w}AF`7lI3*St?aAJrE6uYt+n-Ut51*_rKEr=R$#ADja~pWOCB;;J0-= zc^-U#ba8(FB4vyOA83}b+GflEB<3=^bT|M9=U?Z$r3prKb*$<^;{XVN&2nm1j0qtD z`O%WlRP z?-u?jr2Wti#|bdMo!!^joVD8F5f>Bu^rAr5G;)j zb(4hkPh&oL6QXPdi*&^IX|zbUF(l7t@0a_|tZsCL5F7)swh8c1e1FzX)%-9zy|<&2 zXF)@gL|LXnSI@ueCS0C9B2yn3no`jBS1M>mKYJa0W!`-L7Dod?hd9 zynyonTw)vmKHWzhFHS4CvE$7byB|O^z#H?;@v?d?3({era@o_u{ z>%Y-s^hXMGZf?)S`eFBh#`t|eR z%WT&mmAysHG2qy@_ln1?ubN5{v7OHr=H5=B|JM%z7aoBQtZS8=$igT!^?jk%6esAn z`>`O@y%)0%5ig{hYkYqIKUaBy$P_@R!|A3Ya8=WoWl27jlw2XXl;{hZHFp zhl`Lg7GTt$li21P8TV52qFFz9S(xqguCgXQ^`*e(7SN`GFqkj&=dE(q9iZJQXPuTKXJDq~m;z|Er#}FotK0K1 zB{FKZ18rRdnw?qRCbNPcf&OiY4&h2 zPmL2WYWuSQP3p~7P0xHsJtJP~aj#d3UrbhumfEydZv-Iq9T7Vunc2%2`?#k&;FFLY z&CG+6mI^S(_-bI~t7GU=xyTqrbun`^*CLf*a$cek2+q7J%}4S19y`StA~!`7XiKWS z$pLP$=7p!?WTAL26QX9ybiedP>Q%3(_EF*aK*~kMSxXeW6dd1!7qj?ij+{qPLID!$`b8CIbt!ecwfLSg$Xsr~hs9q>_^HzVK zZJ6LOE5EY>)3yj5Qw3&YAU|3T<3)B>_q!YxtfZCGD0+isv-C_AV_>AfSW4X` z=~1PmXTYgHk0HtY;%Fv7S}wnn0u6d5+?4wX`nHn+Tcqyr{`K+xeC~;1joa_?Tpmx{ zZ$cuFPaGVl!chc>Bw+PMVD;&i#Ai^O^FG5&61T98bdgydWZ~LT8UTo>M24Eb#QXE# zyB>ksmNagi7Ccor_3p4J70*IPF(5d)5HlUOpD4|?hPX!qu( ze-O7rj51*JpW~Bkd=%LD2%xPGT!?LRtY405$e*(u;sq78Bu2>lp{Ffcqd(9eJLSkN zkPF;#`McCF_wKC}Gwsg+T9oVa29Rf^uI@nh?xQoiM^|s!9VmbA0MOQi6YZ}@|996u zoWNs`2jrma&YBgB@;2Vk{4{=QkB48h0H7~K(_sxy|0$j~TE*|qfEHskm=ykvr3M&{ zAksh^fs7Q|o3drxKvSWiqo*Z^jQWir<6f)oj#U7Y9*$Ca23)#j1L`uCc|SZ{T2M{# z@sRiXnG5_U*(4L;SM7FEy5lCW0w!klbhXDYgyjA#_Iy5Wc`!Apj8-8hzq7nMZLN`P z6T5!ria0(p=(i8`xz)KUMwaDMCrqC1;65P6FL43l4`g$bG8$gr$f+_l+8k(^^Z#b0 zp3Y78L?b1D?R4Jp_mAizxkL#%FxcP7{FO{6wZH4+%=-RWr2uh=&23uaE11449P;l&22SJ?#JGRO}A;KJ~dPz;P(*%znJzUQw;4&uX=$&rpC?HVX7;9 zT2~`SPn+1pf|RrDe`D$x@ZJj(qXSTnx^-_65JV-I z2rU-TB*4ZDD_=jx(l;D}&Rlrb9aCTnfDCX?>t`ibQO@kFK4DnIWG(LNOEH!{YKYbh z>CpUKOq9_NT4RjwI%UR5=jaP#xZTH}5)5^Vj!1#JD-8RSrd+-f0tW*qmr znX(9hs9JXh_FSr2{f*e)Lt#aX8PlEqG2{6jS?!)ZJq1C-`YcuvX58)DAp(Ob%Vkoe zqBxi9`m+!rO0&xsC77)=7;PnddgU~pEpNuXl`a5Y^tl+xt(a}U6kpR`!0$JL)tRDI zpc#sJ6mfHlYP{}KmB@JQ9JP3B!_NG>-yeA<19g;Z%O)i71YSHGdZ3^58WA*_aOiKW zK(6RNMD+V79@+-(+6Ec{^#9M^+W^~=UFBil>hAM%?|t(|KbZ()N!SSmsn}JxQo=?U z$2b_u9zygxqd3@@KmozV7$UH2EL#urDF&Mq`ksDo)p@J>t6tu>&%00W?5eJF?pb&D?%v&dt+m%$ z-&){JLayNHTfugI0^=N0Y~3fn*Z8y0X)F_d>m}E47^4SUJk&sOom%eLyaXwKf6W9; z+HU4wg3m$}_@YB#UK!)71o}jcr~l<8w4%K*gJ;}e-#ty$34fO#YfFhB=kxm=iu`tinb3&zj$zjuaI}(53k7XEEr&Sg5Udg%ocCK zAL_T@<@M+As{)h?Bq$2DpcGpZ?cJwDXZK3;Ht$k`TroP?)VMAbxnSdo*WwBRlG=S1 z<~s2G?LIbS89cu)pa(z-MSH2m`mT#ue#Oyt3jA{=uux!?fMQ(GH%AE)x}LI0KDqcq zZZ_A*_2kfP{CNLNb2{?I_vQ2hE^O=1#*1ISW*BR-pI`p@`R7QXmrhH-M^J`@t|RWh z0r0F6SP0OzTc=#zbqURJLUDKv!rILN2?y9TC!F1`SqF@QMkkfry<*{WT@km1S5g4~ zo3CzSt^>~&)L);tF{}+J8wrY1N??A3m&@Dnhn>upx1c_iOn@(V3+fYX;_dj?IK+1z zR97cMUErn+TabJ@0KX_@z|!SXk-JIYfT#?EpZioD_*;O&tQTRBnm@m%BLO%7)^{hQ z$7`SxTfk)jJZlz$ee;Q87dq_@nqM#Z43vuwjGys$uxS9U9?F}ZVKoTd-)Z@@C!B9R zjpse>dWg>lUBCJFUjcaLd^^WQB}k90Pk2#rU_#Wz&$8ik+%1Z@tm34x1lN85{wn)8 z12%LaHh3HmYHke~_54i+AID&4$ zoIVve_{PrnciJ0$F*rTj^6TA(;sg48d2jLKdpE~cbLUr*=`_{A`mPlOY8R6fxMdDl z-Jj7rGVUtmb-Cl3Ru1#FBlKb+gD$%M{XAa17QFLlfl39nk$nJMQm&b) zIt_{xU-D-Clm^bt5U&~Q)+skSwAlRpiGx`w6UG(KS#3P?-PW88ZjB zCD5XPzmA}rC=&|6t4Hp3c;zi}4`KR_1(&iyQ)B6D?sMoF*LS^yzs40u-#_yHvH8rG zQ1+eOPhfo~djIB{d&b;gPqzEV>LUtS+IifrSN*UcbeG6giQz@NBO@i&$h?Ub$7k-{ zLhSm4r11CCZhd@gvsV&y>m&|oRv*q#t$}wgF3V(lViT1E-oOGkedhlMzVR4%-%*8` z2pSm(7FJd0SlTpeq8ux3Cj5M z52e5ezW=%_%SL?t^0i>GMVsA!0z_cD{~FqC@jWN}CE(EuuQ@TUPbL$*GVh@IDrM;fl>tR z^7(l2vEsgEfl7gvEhvSbok9j~*zVh4Ax5$XBF=n1+Uh4PJ2?@$-X|4bu1NtAWb!lc-AInPvqbI|NdsiO?O*J~NwLGpFNl-c5pY0 z9h~mgUhMqH7~j6ETS@Mt+p16#_kq9V zDH$Ot%nCqG4pOm72z{E2!10W*GSHVzq-5-lcLLY zb{jVyYo-G)*n zCQ?=gq8*j*($&$Ow&qMj%v#2S4f8iBl0z3xhi&^=BNN)uIoE5-22N{Y`dPd8Q z(k7M&$u#wIzwgeQ2^MBfKWp?|3I442GmdHyB6xTHe&nxTe*fnC@0w*gbucRaaN)@0w#GQ-FvR5x~ ztbe`&z}*2&r+qBnfnU=@e8=I8EI+lwnYyXlz(Y$kz?4HSB|G9gMCc3WKiU5o;((t= zEf8}3!7VF*Ap#a-Ox@g%$?4>Va+(JI7COQCe``j6LJzw}(un7S>q(CY{)wLtPU-pS zDZO85s`Zeuewn+Y1#nBz`~G`^^t=DNYTNxQxm+c5V%;MfKFZHU#_DZ+4GO5c$P04D zhLoJ&u8T8zwXlSPO$nXvn7s|ZreAF}|EE>}xFz5Yl*_l{E$ae5bTmVuYUT)*C%`m7 zj(zl)N`G!~=Z~XZkWurlAWA@H9su4y0ayU*`xWWa>uoE*tTaTxhzXenN1SiUS)XrgmUa^k~xk=~G=sGdZUji1ToF+S6zqb3A!U(0D@R-$oiekX`e=2zZ zNWDOjsNs-bpAx!=BX}Vmlp8{b%rq?6!2OO3{LuWetkpXR+%G7%^4l*XDIkk~hJSdh z_{F0+DiPFBf5WN{Gfx+_2n&#-=Qnx~g(ew%Mjbsn4*(xi3~t$J=F%pkCI!yV%nHE$ z-EkbTPLKy60vFSa9bw?S)4M zwjNxTu>ho#xgc$)3V;BL3lIQUz6gKq7Fd((YSYD6de*a8`-wp)My@|M4}`M!%h9qkJMz8+v4QCN<^ONHf3ZH5 zAU#}nmPXr9I2`{Jc>n^!Ur8-2t{iwcp^YEk%jj_bLQMEOx&=f+jNWum`xWrsPPX=N zzn(n30uYA>-idbk9K7TbaBl|>1klQmmS^w>n|u$aum>~_r|(NY8{NAU?A-Cq5z``N zx;y~Bzm3;v=+dU1AeI+kPK03wjyQl*jyDaMG<6J4I|Bz!UWSQH@A-n#@7%p`Ph@AW z*iF-%GS-pzmC=KFCg8`*f2M4FLPvy7&>%+w9L~1-NxO;sPwHwLZRpeF0k9<}G??3n z43skPz3{@{F3@M?<8B4cYJBN@F&e~KLE6I#RVPaq|0P}`cM`bYjuik75B$e?^x#(9 z-T+Ttfd_IGiUk8YtR=Y1jw?F1^84Alwzx3-o*l# z6@Zw!<2YizbIxyRWPE^(#Azb~2d;!3RW?BAH*1p&w~uf-5TMidX9Uzwa$$dL{G2=< zBi$FzoNt%9o5=}JS$$M{XmNl)Nj_b=Ly1u&3ffUXNVZxSEk9I9{J9{W_p2YLoeRp9 z;>k{y$^|^i;eNYU060AG&A5AU3+_k)Kv4>i=z_LPwk#2Yrv*Ia9rh$Rq7O008s zzKQYxc+(kD(IWzy)}F4)#tJawk&j3*9I?@fK%B(v%d7xX=LsNmbwXm_CaIOc6wWN1 zKacycW1!`h`whfxg!6cCG>2vVyJq(<0;v;LA6P>Rpb$SLkSX#2#0&Ru@7=(rOMMnW z3?-nWka2G1HD$)5B*Y7$1fWbCxZfR}EOl_d=@o!{c%b|&eiI9P+uR6)9jQ1az zX~r$YfP7&=9D#~~K`XA0BGpsP1HiGb3t;ttqJ7Bn0w5{O3cyYj!x3}!c>3f(d?F{# z6QBVc_P$LU=%=~XgodAG`>cOOVfRo1?L%v9E+_?X#4((8 zUgLggPn$kZfE~!iq3@o~+nKpuF61?5Jn|V%BOJ(skUjqy>yzXDd*A;YX!YvWT^dFG z!5UfwmUCtv0B-0YbaA=-X$Du-04j;qWf_?{R>o~6($O4pT;K-}-iEh2xZfF7060AG z?YOWO{KC;3r4*G_yWO)L1kMqu_pW*9KGXC|h=P!ZlOFO9duK}FD zkJsVnf5xoumo|MXpnY(SRloa3a^0uP10W=^&zO?EI)pgzl3Tc$7ZOb`uMUO4cZf!= zI~jQ__=SUa;DS21-=fL_wpn33`N`bR-+X|pW@EdJ{JONn( z*RKD%=Lz6`Y5Qb(1bp8czXje0K0kJ(jOQ~XFm((ZFrrYL!FvD7?+4oZ{-wA&fK-C! zlQrs30x};qm#eZ<$MXP)fVRR-5jj7}9y=;}UxwpCMMfYH)CEI27<$jYn@%QPQhcP7 zks?S0?svu&0A4-tvE{RI`%3XdC8$)+`=@&YuFRkQs@-dX|G7&SV8GbYTF*AX~tc>=O<_dw0LU&K+ zP5k_OI@{^*zMemady?3c+@?%Xovhx!?fz3TX1i*!x~qX!#3CB!PrUz_H0r_rVzgLx zSTzADE*N__4}yr%0V2C>6WGoQRGmybIEULi8Oh;(XI}x}@W6k9dk&89@+3e3g9p0F zkF0m`{SnE_tk%c+2XOxpzDaicaZ?x{w76;oXv_+b0L&`jdO^BENa+ z4uZo*4$hn5$fwUE5YIeF?t4;tq)H>Bk4&>WeLa8PGz;n%hm~r^`b#6neMZ0ghXC5| z{vWj6zwdLpc>r|8MvITn`Lhye9uM5(F(5+z78$W|6eI!47CB};r@Pot=KRmgFWVp)--4QEb^})ts0ib~Pi@q`@ z!A+sjdgD7vdLv#DfCNmg(R%O5t2fUDJBM}|oxcdXZ{+%91ltD~`w+VLr5}-$L z{@iuogMAMKII8+xkJ|44LyhGP5%$Q9PVxXyx;T2^l_L;uWx`#2o&vajE>D3s;ge0P zs{O9&9+zr@98^Fj3p<(U;C?r@0>I&c)z9MR))iiJZsAh?JM;Ze9{s}T11TEE1#&>R zum-qt06H#j;_ua(QB^=3V@1b2Q(`{;9`R~WX0}UA~Xr?REglqW$0WW zWdzFYS|QNvKtAp}&!6A;^Ob-r0HX`p zY4eyaz9hW$*4)Q2h@N*VdsnTU-)-y$@*w!NkviFTT;VmHEF^Hh8(IP2@W8j>9~~$B z{0TfzQ2ToKz7(W*L;ysB$RZ#0?=20ae{Okl2w&R}yMJELjMDAP3|N1l0aghpdTIi2 z>kKHp;N-aXvy>+w5FDsnFmN3B4sh>@3r3Dwh|{4Fdj9x!Ofi3f=SS-uFr2*g-BEVS z`1+FZ?~m>N%k3gS$1T<$Y<<>H&B+5m{o$T}$7756dHlFgjh5Vb+zgy7`KTT&QoZU{$jNCWZ`LOgbpE86jN z;ZUAy8lm7BPKN?A1L}u?`hhj1vYW)B1kM*EF92DM)8z@sZ;AS7Bif?>)E(mV)ea6b zjLqltJ8u7d_jv~VXZ-%$dvpeH{)Dc9_ft2)z?St-ASFV| z6TpM0;;4e0JOWeF$>I7F1tHsf@8)Il`;R}L40vUVxPS7mKVHwDV&eFH9RN62ZJ+1lkZu10(iZ1qh|>W+rhON3PesG0c6yp52Fr< zse9DH`#Uy8uRov8edD3$6BpnqF3|bwZ*A3k7SU0k+lX>sn4czbS7a-LOo9M^- zf5CrOKaF=?^->E8@Hzm12}&pBlMV)%SRa8ux7Y^R_qT_y-bUqLM57J-C%Tf!Bb?;3j}*nI>DDadUo44KEIr< zf#*9>fFFM^g6qda{o+WC1%T%rZZRpTTRi>i$7r4cPy)~(e{r!}mdAxFHE=L6Q6me3 zXDd+nb8W|U+4!E`U!S_Z&iFzUHP_FbzpsH)K!DjHzGn6___un&Mf~3k761+p>?Wo< zhi^XEXrLm14$1=~KnE6#@G623!VD;CKzUpOvhoB>0o%5`0L`O7^FU)szY>6@#R7O{ zIAxvyI|Ba9yrvw+1w9LS1om`3zl5H+Fh>f!6WJ(B^IH5(u?JiADIQjL%b`YOdCSmO5G1%<$^!vTP%8 zznj$s;9V~Q==xjnb2Gs=AJ?cAm??QkRMQqf32xS#|NX*K_W#xgGBP4r2mXire*~(+ z|F;0}G;sLB64igbgs%HpF9i71CE&?qib34`?vx1MpU`)1IuGKgHNKLd0s76>;`8JC zXyEyriFyke>m&EtTL90gfM+a#1l#?8=onAGzl9w6*awwZP7h0QOXC)-Xc?>t{eM3% z0+^6@{YdNpAIJI&kHZjfw}1fka)w#0c*p#0_@A$>^R~AD5O`oWVJpSEy9or)FdRRJ zeQ>uM#^UXD=$)}i6q14}Cmp_!C{vB9bqUZbR)D8lpcDXNNkIyhPjh5FbjiUnN5-25 zIv5|HN5}j73efc|)a#$V-ae-jNMtn6LYmCaKYbpJ6kZ>G_kT+Ts5$7n-T(SS?Fmhk z;OEs17mlM5!gJj%lUgd`&|vllwN9`?KqD*&G6FfHW<72?*|kb|cPGmn+;6V{aCjg9 zEdC^3x&rR%;DH6us0=~={DYA#nm5Z!uxz}I=W7k9O{DpkT&`=Q=hRg3a7eEt2z4Fw z5x<`S+WTurX$%6(3OFY~%EV!(AdWe|-g|zNpsK@oLOgq^1 zOCXK$RQ3FM#lKAz(6a350x9)`2Q*J?c!JV+C_6?K-x0E`iQ9nPo>2bD(OP^t@cZ=& z!SG`#th8^nO1NwBe7qC@9NcfO0C0HV$%K6`o>)8sw_j2`-a#lt(P9ANAp-A5&=C+4 z@2}_SgVie*Vzhx5mz+P7*NDUeZIJp{fDg6M&$YeTUd;+Xm{JU<9>6gZy0snV5kL%z z$os}}wezuVaJn!Ye0I}syMOIyX*_-& zlLK-%pDcz72zkgJWI&rx0%;J8h#k;@=@zu}64i0SRBe!S+X%Ip8D5!?$_xZn>LWlC_gach9LYGf?P3TU1L z+WTrqVYo%J0+8LyNF28hvf}>xI-vYNs-ti75*Z#}j1IBDL|c%=rON(R1*$o4_?H%& zdf=@BWdU4T1D{wsp`VR!mjKQ=WHQ}7{yv@qI!G6M{xpr=|Jf+Y6NiXqz2DX}H_w2t z2#V(&Y}R(a`Q4x1O?;jdM zd657b88i4mc}g3f@el5TloDt^+gSk`m=!=bR)8Y`T2{|LqaMEG;h>F1uW$OMb|BdS zjR_H-I+D(BzKSn#dR*A&)Y}hQVR)OqUcVYW>;2Bpli>TN-uFK%OduCPb8n62vl||u zIq{8_tR*^?97-KQIB}CbPv9eNOa~2z^5Q~iLrN`3YuDu5zSbZ0!3OU4_WA#gZ@mB%ud%}G*joVd`KZ3;!iLaI@JjKn zZo);-h;Un#ke#9PWrcaT^%wDUk)fK?V}oF(Z$$~zp97kYHV`C0b;Br@1#l!j)1S~? zV?5uw8a-YQJ?x9$O%pq4lR#AH&hBl>@yRn~!Ev%9P9@XT>*vtE9A%QM&xB2e&r+^# zQ$-T$`x~^M1Bx;apd%T}z(0Op(NBcbX(8}$I(;$_C`jmCE5yfK^`z!t1NVDZCz}AE zlT}3c?-hV-c;J75m#q{ZJg88?lmLg9clG{>rs~XE#2uhyox5{~YJ}{bH*1dwSbaD_ zpKO8B{0z9YjOPK+@c$bVluVp7^6Sm#3;sy4p-{d28>{hZd^|W*sG@W_O?Qst_knpD z8b6NvpIgO0K!Fm_&nB$zO3($MDH9CA>G9aok=YX^(BH=;ki?176O09V=(SiU6le}h zR4d?vi!a8@9NcfO089iA{JVH^@oaqkvEtE1fl3vvh|8Eq%2Ij=o#gnZY$ADO!8j}$ zvJ2~M38afa-Ngck8UtCDW(CN`eFrMAseSG!k3hcmC3Z}*qnC_pa$B+x-8adpcOQ6R ziIpT<8IYag`1$WRwZDy~{qBEOz;^#Yb6<<*A|T~%t2E0PFOZU&`^LZH-ZcRV8L$iw zq;EH6!05Ui8_+HU)iLns;#v6mP9{0H-(CTj5FYsBxWDS)fx3ZS07ztEI;h9V0edk- zT&mtsmO+Jw9qIt16Ysl<^BMBLL3%Ijf%V-AeKMJ&3j&-k>5eDAUOqXuoRK^N7-60k z1R4`;+1JOj<>@GTJP?u7c}5n=KwT95AyHW8bU1!)_Ro-{W7l5-Fzd7arJhjAiG^=< zcY+Yye|FOmWj<(~C!Skhl}`;oiu}m7f>8(wpHNdA)GoRoAF15H{Zc1`I$7l4etQLA zVr0MtRI@kZw{eJXT2uhEN6Xn_ga~}|IC@_t%Dy8J%(u7~lH>G6JRNZ36GYgAT6+Ps z$3T5=11b7doOELaI20f`hUbJep~vgp`_!lTIBRwEaJ_b~Rb>i)_22Vx_W6wqq5M1n z9ugYatusg;;Qc@MFBfL<{+n&p7t>`A@=`|4>%wDYJT1|T-J z^|w}d#6Y{8pJ*5&ij^)~XxgAG6Q8#-_)LS_=M-iw zOvIX@&fC(#{i<5=oAaN+*O~0uD*$K46`-%hEywra{Y&6a9Jgp7s9?UJXbC{e_iS{i zdV#J)FesaC{{NOjm;@#21U4bP1T4Q4SbX^c+S+QuLu=rYni6o9-XsYK^8lTuGnN}I z#c#lcay^>{lpG~+J9nR_{C@0yp15Mu0(e$&`Iz;>O(3OW^?NHE-v!74fRrulxi`ek zkMp6AteZfDx6wVc&uA9CABp7vAU@@Lvn)^@10PuaX}nOr6;H)Y|9cm}^zgt};i=^x z!R^NhkIZ{`AWUFGI1bx4^}&9Sh~iJ&<|MjR#4m0glL<6GM~_tsybnlEBugS9eM(Vl zJEg@QtylIUzJK{h z5+4*rNVfbi^2%urMfrj|^0#i|d2bfOPqgArTQlV)L>4!ARvqkAhtnoG-MHR&TNj=! z(^<1w-3^nS9Dz(!tt1)N(=HRtIO}7F`l;BV*{;hW7a$6x!xVKZi%2*9{fQ60f#K(x z6Q_qr-#b37mAj(UpA`87g&$-ph@sO+nQhf%#Smyq;K&vG`sctfIg|lT5-iM}V+$`2 zBw#gbx#9U35-aVsg^>c^0?5G-DBx_TB$@Bq%7y=w#XMD?%&N^sKIWU(@N1)p%YcLI z-94S89OTP^+Y7AG#Feief*5HFj+n8R)6kw^>n;LB@;F;U&PSAdI51~n%Kd4!%VnHg zq^;^_3(_93B427}Oy$4z0BA3k(3B*53=R-O@TpD$zOfawTLR}`hbll%)wz&sg~&j%(CHK8pl>e3l2HMinAdn!#)kQDF8nrrk<`meq8;!aAz=@Vd!I=B~G8$k&fpZL$qViR>_Q)cpyn?jpIL z9FaTN7++13(a|i{?2}gJLHE#H?Kx-O$q;D({q`9l%wya=@292SfcYurBCd=wq(ZU&nuYLQd1~ML)T+WD7ezoT}kd%CtITA~98C&Hmgq58Ni~j4aK`YTxHdmkJ z&G2K{@#NoG7J$=U#EAuHAbXP$H1{;%_yyZ$>6rRk*J!QHA-+yUyDoE?ClCL&U)PXy zRC5#W!P9)=#r}3)GXxFDjCzw)9$lWgeTYA2iB#(mO)6hr!cgR=%|Ctf2wG{`JcdXT zLj*9=o2>sRD@Xl$zr;u~_)j@es{2Y2_ZmaCjj!^lXp!=%2PFIRt6$Oa_=dF>ifgeFx*aiBMLWq#4?DcN54-lX)jviBdhBH zZcIz{NshS}HDp8={KT)j=&K=Zj@%iC8`2N6XwvhiV6&Hf6dA^C0c7#U2?Nc=A z;_1WZj}ka-gSB8TkN|$*#3v@SzrG(>c6d4|A#;RKNQV@NG-DgwGgqVUI!3s`Xo|FjUfvZCPlTm z#&bT1sN%`|<>k>hICy3c1AAa0GD6h&roQzWZu@?M2)JPz`M@}X1^2`!di5qsY=@wK zRT-69vZnNC4=0Zj7qe^a!Z!vGE$IC35~;r2UMhX$OVjvy*=$e=p#FHCn)p#Q$TYN2 zgjXt~0TfWG&Wiy14e)h(u*Gz&H>tNj1F9`N1L^{FhRLPhE(?UI&xs~_I=*G_UtN2l zOIef?{e9)5sT<`h0FCsr#G;v2HoSHL_59EFRMq+iGP#dTV^G_fbSKm`{=)f3iQzF} z!u)~xX~h zw~)pO+;uD&6t-$;?%aK&}An)VN%G0=C8yAO6 zeA9w~(6E-ri_@<{)S8a+8P>=i{yIJ$fOAD>r+H`g_QqR5=dUu)E9Z2-(h#x0#ncU0 zp>>Lebmf)T9Qd*&9DtynD&wGc_t9 zZKLteJVYORd2~8{4h2a!RPpzd?LqrRKt{wRn}>|3p_R?A;ToQAC1-OqSt)txx**JM zLdGU19;h>!ef(~wfjy!m4@*FP0SyZv$`G9d8Cp~;Q!e-*)e=}{;%pEU!^kV77Vn_ddd@LnK`KE` zL^p?i(+i1`le(3dMw$%>RbRl<-cXR+{o2R5Ak+#1u2lP*Rt)pEJeMIdA&huGcxyd? z7Hc@qLRIZ;3Fqb(ShIc#z$t3x#kOG1e6HQYig+ zm~Le=5!Mf>#Di3`F~$6PEn1Kfz8qxVDa zInT!#b1hYv3h>n1g5UC8&&N5%Ip}FRu|FZxo(jq;`&qzVE36TA8FssmqnI1~yR&}v zfe1PfNN=%De= zy6kS!?@!S)D=o?!ib51T|3~p@u=2I=*Fv2e_#RSJLkS?>4$?BAwYfj6p}YVO?h^xycCE%GAudDV4P-_#6o4aYe6Juz^X8AH|H|19zS8@32LQjT`iizv|9Z=5qHyg^E?W z)4~qfgaJcg^zh&>2NldU2B$Di;SRo)W&f>6srJo#Kga7sdEVceJ{39yvc6N+eLz;W z_ayg;#W&a>1>imU*g+#nb`sx}aRg~%9yw8Re88xCcKP!BHponK0_bRfZTG(+n)<|- zEC(=JKMAu2S}>be`TpMMpBa}y94Gw2(2v}UX9>(EK5%f!9w8zRovkM(t-2sHmckTg zM8f4!L$kl+eZPegz)EP%fYFtnVlkd`L4gSOr$n7d{o9M?p#t*UehDj<3n3!Gu+B}I z{kNu8b4W60cgv-6K#t43MJ8iFBbWncnHvyBR>o8ezIYAdGRY-f$`T-HPAzf`=t6_V z1jVlIN&AWanN8@tCV9GqtL}}_IK6civUE@4Ib&|`(erfB0SAy8{17yRI73Fp;SG89 zwsZF1c(7B-MBOj?8w}s)8c|3*nku3@JL$MmJh^W>Us1w@4?8ov&~0K!>v{4YRtyeU z@}5dqzVUANPGGO4O%0n2iEJa!v1i&Y$PfPz0;5Vmugj?pYj}WMiH5St#PK0jKi;dP zBmBx1?-|o@>U;8NWMv@wFMx}_7a8&})Yqq2oT7Nb>1dx*DUer^NJCI1jP%B#8INzN zU3}Vo=q~gp0ds|0?O1f36#9H1=t}w+_Aok@GVmg&1V8_8;NkDin@P0Lzfm>hb?8cA z)b*}4;BX5$PazBK&@-3Vs@@P=4*p76Wt3ns4rGDx^cm>bI(+gDM-@$DNGasLvU|Qw z;VC#vA^)x~(JQf{9Lyc+_ls*W)}s~fw(>D62seFtW>m51bAk=RmvO=QMRPPC1ZuY> z6{m#9b0boZwrBI+m}3b`*VMIdND)frJH8xOBgeGtBbc+aucF@~TA~#M-bz7P?tU_# z3;sy}S0Y;$%oK z3a82&-E0X~DN?hwBs>Wq+r;XWM7Ol@B0KUQ8LY%);igyi`tlivBk-Uf$z%67ELj#! zsLbvu5Y0erp0rYmqzix5bxg;SGbRjgHLo#OOT=rFzBaJK z=QPkAJ1h6h_BOZgMw44C{y^&vQ^NVtln8oRS30}NrGLwfqwweOWd?flCti^vf#wg_ z?#XLM{JL!Zyl7aX?;)LTT3sd-BKiC^6-cJ1Isxk*+%ThCg{uU;#u%NL(kpi+-*_nU zj7PULajigAy{igdw!E%Xj(gd>vlJGtFtUJ9*oYbrzusj+sHz+gwwC$E!GEdif{WLm z@~WbFx+Go;#n0oF7FJ$ljgk%GFf3_W$4!)$KrW&TBjJJ#Yk({_1%TDQJc0jg`INu| zv%z3p3)-qfS#a1LL_)<}|AbSIGPdEyRppf*fCLsRQcH;m|=&@~;Kb|4eN z2272w&AnOy&6tySt&#<3AVu?2OS&RN6qquO6(FtoAWoclV-MA1^|VtNdA|&tGM}3RI#UG*7JQLeRG{>`C2d4KXJy zh`)A_e4Xv$0t@Y=Sf999drl~3LhNX0c5Esy16!VdsVpH+rRASULiQn51bB2JH}0pB z!mB+GS!g2;*zKvyl*Q29YRo*R(uJ&>eISm=Z>CfiK@dOHY3c#5<2(M5 zT6N{^V0eZO7SEx5fnPsRct^}`d*>ljM3^=Mn6 z+VdPiGHq5Vw}daNJB;zqrvBjk|I+85$@<8yRf8(K^wxS0@O$9B26MpKt}fLkAui2o zM<{SrB!Ov}Oo#&dT3Ot-p6s3#DLd0GIb|eu%m0~T_Vy*^2=fJ6pD6q~3j{u1q7qM^ zq@(T{tiVVyWSmBc30mFCw*P6kru>fL^3-~ZAPq1%ygjEkskTuvFp z-9qxw$pP%=m{Z?#@wSk{8Gn>3zw0N43;7acp8Bt&9i}lApd9!9F{t3x5r}l!P}*DG z1_)1zmTKEk|*UAFs}<&*i%Z4am@wsX~ee6-)J+gw-s7?Br9 zpD0SMwcH(GN>m81wtA2L4NO^je)xnu;i;F&gkJ|r^5CuEg?~#xLkGM9urn*g3q)g2 z1DwWJa{Or-0d=%r^Z8erHa4ow&KENjJ_jmW9pluZe+W25StipCOa&vM`!}DAgkV92 zKKw8puqHo^CkM&MCOtYf1vlMc>u71ULgwzZ$vP#ZRs0qsrHG;r38Sx{^w2Z8)A2)= z#DfP`3i~=%+eScvXIjUJ@`XAn{%xSTU;8*R=e z)n@pHa8iQi(6&qLC1GBNOZxX*x@RG@ZO=|M%t?4;_+1k^p6dh}nC&r`MpbO|MvOH4 z0OWM{Q{OMa@rkB0*`*qD#!O4yCx6wCKGc)^kdvjC-UJoS6%ZF+^Y24MGx z!y>n@kCiZ=L~tQ)n-Wex+d&O98~tp_GEyeO4FKcUs^=OymDC8ff&ONN8-oDNCE`7E zA#7N$cZI@#l8_y1;AR)r=iZYV%nE@-(1`1q0-k1Qb!M`?X=lKWwovF_BQFoEr9AOYu=<`k5qUz^t_Cb5 z>@yF4e_-C~E9^oe`|Wa%1MlECR_fT{bMnMEvhCoj#T52%)-lDAgi8`K=+LCoXqUu z_0A|W704lLk)B^p2MAK%S71c2-K_C=@1=t7(OkK`c#^vl@T%AGo=tG!|LTd{jDOXQ*P;(d zY9Ka`m|-Zv2|a7rN5(c|p^e^twyMsJ7H@S%5;mdSvm=YU>Wf#!|Ar0!d6TDB?jY7_ z`S?so1r%te6~h+t6ocSlAC5756o!~%_9D!O(cQ@~T>mMAaGE<#Q4fY`YzxAI-?ZU7 zZA2u2q2$H;$n%@dE2i=?f0c+FQYl(zIVrS3F^wt%$>H&+8Ry92Gm7V{v?6+Te(%hE z{u{UGa(Ba>hG?#nXbOrz$-g=%{Mb(9G?>*hKsxJRytu9zc{y!mn=JPs%TYfYu(C47 z(BWr;h>&6!!bPq_&@S``sUU$_Cpu?+T=cI-yFNO}&tpo@Gk#vG9{zcg#l;O>SQ*n0 z7*z-gQ>}}Q@@%vR9q0qynvzdxilK=fo6y%D_>6LUs>wy|9g6l#lGw<@r+7k_%xJ}y zIOQ2i@SxQze|GiZ%+OZI2R^fly`u+*sCnA|WHyyXtX6PnSf1!%=r$7}SDyCw0g!Pu zxm9>-%l<_;Ng0K1z^4_{j4h9!js`GGP_*s1km4g?23RE-!T8WgOdYT4mwsd}NPl)1 zysi@=r^~%rj+XogEa}qEc>wDtv@BHAY8`#Jsr!P!c%&AmvV7Admwbw-%tzILahd0F@!{ z1$!LbksJEWuKMZ0Uxl7C zUG;^1SS7J;xm#v?gTtzEA=gE2HNFM+fh-m&He8sBg9e)D6Jd1R{bZlKL#sX3+l(YB zB~s&Zigf-p&nbQpGx5~cmXVOlIOLG^z#+TXv&x^SGCUASWE6&6nRZ;+V6Gd+UqsSW zO)YF_Tv5=No*C4S>|br`v3B-LI{T5+x` z?-c*PD&M8y()xFED{G2j)o3!!gCYBCe=}vZhIcHmV9Gz|0>_Rc-~7ou-o}KJ4>kfO zcg*N}H?P$=JgjdG|I&fyrsP{6M>p230-;rPAfFl`E}j4!)b2Q zkTCEK0Un2*qRm%Pz2ta@FMwS!%kPj$m`*aI2*4Ml;@WO@E%!6xObMqW7gn+xTi^u@GO51- z&_Z##K9|`CxSR?^ZTn3HF1LM45=Ol=jF-{9{O26Py2QPL8NG^Bd5BGFdI!f8n$q>P zfTepC`e;^d7Y-(F&ItJ99vzOw*jLJ@741Ll0^1*a?D-Lw1v?7_B|f5=1A*R@d3312 zRkID3VkzuGxf8QZb7f45zj1u9tJfs6038xDtS%{yEU0}{*CyE*SAe!@mBZI=2Kz1{ zgR8U#Ym6h~OBHvLa{II0+Teis-W0OaP=w+lGlVoBE$OQ~^y z#*51FPrary*km_rl-Z)#c(_sY_}h1*NP(Nt%*OQE8Tw>Hi|xc7{Hd9ucLB z(B0qSfz4+4w$!64ShD-Voet0!jg$OujzE1sZVV>LRWjafhIRzqcs&HmLScj_y~d^~4xo&DYE+&u?!VY5(Ea)MD*2aW z7dh>00P2GTm0w*GX}dF(>l>xhODBl9yZTgaH_>0AHv{fdjKHU*1)rq|OaWzL{Vzs= zW)~@LWd{s*BvHxY_s(Zb!@fN2zCx0p5Y1HDxn0?;;6nWVB>pjD2$q+pxQCD?TYFM_TCc-|!#6 za46a1ldj7r;)KE5_ssiy4zKS}eCWhjZXY>tw&eQxNFFH7Uu_m2pGgp5q*Q2-r)0$b z1C2p9bL8p~dP=IN5V&*qgtecyk;cmo@{hK!R1{L_ROUu=#8$RyygOF0o4;R_g3PF_ zb^>xkXt>%oOa3F>1h3K!!S+t`?rpHxknz0ltCw$V4DeISpTz*An(uBeG0%S#=epD8 zPDrk7C4e@oYMX+YmilOctfzCwjKuwYH10W{o7Q7;1^dJ2sI#AuD01FT1=~+?1iiKT z`!bj2jp=fnrmFASwFyXZrv_&R3$l6yr%Y5rtW6HR3&M3;UZn!<@2j$uYQlONUUtJA@2c z{X>;BGi>-Uxq}wypq~UQA$9wuumvK!18axqJny( zCb{H4spc>TJbyJ*LG}Ne;X1U#r~=8ozl0>OEqPYxWhHX3$L#Dy8#y&JjmS#CJiY=$YT^iRCC7WvgJZML)HN=ij;&_f$);(3>UP zU!be%vL#zB{FEfM@sCDvJS-bg-FqX3@NzsX;obA z;~W_urF=fTe*1WY|{tlm^)kF@>Vqctc*h1J_tPL+(`V z%B|-WyHE_xFr!Rwgl#+}_GcUZ=TfjwLmbCfZmdsX0IG@ujKAt*#hzx~@p$_%g{93d zHmOcESCO9QV%t9e+$6vA$%?P2A84y-8N8FB-F6}QjDKV>XQ;NSb{pwuGIm?Qi{t~} zdG>>$Z(1L_myS{nTP6BrLHTsZ@=n-j(WX<;otyZc4OM2ct25lwq zTZqHR#P4YoghA;h|BQ0?9`>>;SRcnm6-8>MSt+wa4;lbgN`2`j!!V-fFg=nuGfqQq*1b9579&J?sSFG^2aD%kr(c-??s&B5B%K%9{d@|0$dliofU9|2 z{Zy&n^JVa(LR*|obtyPU)u(`4B;~SO*bbNDiUvOM$a(TJVf_;>VyCGuh>zz?K#=MC z%~m?ZLq_M_HPg3-@Kz70dn59t!Ov{=%pVB>%(yOae(ztI!6J#<1zrVFY*>5&Ai#r) zSW1JgFZy2)=_YB_qMX?lK0?7=KtLREi@GjX^6yKQ*G1nEW+meZw(Hf6`njKEIKu*i ze_gB8=2jYF(|PbWu7Vq{kdOIx1{t$fe*$L_q$`pi-cWt&V|d6o(LWoIR?&Bfl93xv zi_F0v@OQ?H6(cxSp9Vtqp^bADd4_-zLSy?))_#LT?nMCm)`k2!Ic7FgFlT&|rIx59 zCHXnQIK4Oah|l{Myn$Fz7^|LDI`KT*z%C+_O!*i*eXuM!pGh+#P%0#1rXF;Cqzuxg zjsTMPq=B6A(RR3Q>~JEZ;_7D35)mYYO}o9m@@I5i z#mewEFI22Duy_xtaG>|)AY+=1cq4yEIQiO%0^Gf>oDc6+ejZc(H-v9}Hk8}4NCQnK z_FnF{63ot~l03It`TWR_yw8o%J%^^i%hX4E(_7e|MSN`2sO*^5-S#1+shzc*GeBFp zfo*(a>C~)nS4ev{G53w}Dz|PZktzyo1;lg78B#uPG}Kv?lr9aP+Twa5dR|)0fQZfX zMARxA4mkC?4>MaJ1;`UEW@t+MAb`!vOUV#4!k8#9p?zlceE+Z-6|sf=7Ky(ljf2q0r3h<*=hdP3fEBf!JJqi-em&592_1vJ&*5jhTnG?uc+53n!jOi-%{Tl`7M>TS4d+q~%-H z3j1I;GR0l<9CHfB#+`L%?Z;h@6CRC-3Gc(NaD$iR$$!;I7c9G0^RXB5``C9xli;U7 z;7_Jw_}HF;(I-xhwnxF@Eb&-uZ^Hu_d5BM6uVb0)&$GPd#b)z!alrgVSsjk4j@Gyv z(my0|;u7|$cgX0lsOGKIwz4u~DU!oTucp57lfTWA0(F2C;_A)s56+++^o$An8U^JE zx<0~0HC?B^b^HNJf1{{Nz&PP-!ZHlY5JFg~lTqc#00~`>rB?lkoP-etxsOiX;}Boj z;imc*^;oSSk%$3*)E&lur()a##6A7a|158AKVo+ROB5)QGlTNKL&fxw$ao!T-jZrG zT>eifbktJJBKN^ji9BOu*80orJNwh^knrzdCFm&)ARYxCHZGj-~O zeTz8kry#Mv6RqD{GcaZ0cun#D8I~wbYT6OfxxG#lAP166s>N)BFZ8=e{((_;Ls9xb zUUMOy8zfzbxF3(~#=gm1D5u;t7jPI%Z^`F4c=p+&J(J@=(1>H8#zVwa%5jmKBZ!oP zSmfj)p;fNX+)-sR0ENF+{&c(xcy7+Sq@eq> z8{VT7=Itx>yEEOH@G%@e|o~4iw$AYo@2QQbPu0XC~G`S zl~cD`{ScZay8#8>sB-=$CG}{DxtCm76OOiZ7%cscHtl&g$_=M|KK!s=iY(CT!V4_? zdMaWEN*5sSjax@T2}&PNP9%2U*6!Eqv)%$&{>i!crrKs2j)E!uj=HoOb=Pxc(ltci zy9cDXw<+PQWfUvxVWGXvL+@K?5w}IoOI;PciW?6(Hy|;?$DRr{z5C~wfNXh{9uZDE znNggBMsC5diPo*?`(8ZpYXc=1-sL-A%rj7uc9e3UX6h^b$~<%h^o>@ErDuBLCPqBM zVBp!3{Rx%@MlQ%7-C-(v2up9Fr`2rP%W;$iY^2Vg`)+teD(X?PmZp7e_h6)5R1@cB zTrAhzb;MxK@96KHVt&^#&x&!s=IU+eo2m|6wmAvnpdk_!C96yZ;i+sFa+XKg8mqle z$lt&8xNQsrt=QbH?1gBL$*eTJRf&Ae*9;=|VVKNzkT%LvCwVQgY)V6w8-w`q&1R3m z2g{%nR^^Z8rM+CS%XS~lZ#nvUuRxh7$fAyjepdBo)MU8XT(sZxm1A^SMB~tr3a}@8 zS+BkFc=kC}`SU(2eR}HfvDvqUCWfzbM-)5|MR2Vy(Yb z6LJP%c*KJzm>mB-#zQZZO}k{{*>4IQlNqtaI&v{?)jVxh7=(zt!y}2`j;N)ciCdnX zaL)-Rw$!umH6Dyv<5?Q%ToHNuPtRqHjBr)$)F^UV{QE~RO0nNB4AT7u>3-%Ni>aqd z(S1zg|A4}ieFSs9aLw~M$rm4bTB!@4lAJBw!QXmU7;S)6D<2VhT&(zB(C0EXnvWz| zs6@1uqCf%b9juBXv>xJPbwOoEXxr^b_E~Lx%rlY7R&;QV~$7r8TmIyu)h08qv+C6d;+Bv65Cl#`Qf|$|IoC*z zODq2WK&-MANrkz1@3*{;6d7)H{(HoxnEWm>o6wKf0p6wT`z%-flKA#b!x$8B(|b=E zai?TuVPOdOSt0Pr&xr*78Hvfcs ze^ZUB5aRP^s5j+=Z*V7f9zZR(gW!eY*Q&0kNR=#pFZO!X=Qep5P1~(L{y)d@kz}Fo z{6uxX)?13^dML^C`ulm(quasZ-xjkwPHnNTb{sWfGGSbMgSDCNEX{=O$V;+u4%0A)R?yCodF#!x%FByl7b@~0srTuatU}fI7`aYDY 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 literal 0 HcmV?d00001 diff --git a/src/blueprint.md b/src/blueprint.md new file mode 100644 index 0000000..c115861 --- /dev/null +++ b/src/blueprint.md @@ -0,0 +1,57 @@ +@# Blueprint + +#### Blueprint is a React-based UI toolkit for the web. + +It is optimized for building complex data-dense interfaces for desktop applications. + +@reactDocs Welcome + +
+

Blueprint v3 is available now! [See what's new.](#blueprint/whats-new-3.0)

+
+ +@## Quick start + +### Install + +**@blueprintjs/core** is the primary Blueprint package on NPM and home to over 40 components. + +```sh +yarn add @blueprintjs/core react react-dom +``` + +Additional components live in the **@blueprintjs/icons**, **@blueprintjs/datetime**, **@blueprintjs/select**, **@blueprintjs/table**, and **@blueprintjs/timezone** packages, separated by use case and significant dependencies. All have peer dependencies on **react** and **react-dom**, so these two packages must be installed alongside Blueprint. + +### Import + +Import React components from the appropriate package. + +```tsx +import { Button } from "@blueprintjs/core"; + + + + + {!iconOnly && "Options"} + + + + ); + } + + private handleAlignChange = (alignText: Alignment) => this.setState({ alignText }); +} diff --git a/src/examples/core-examples/buttonGroupPopoverExample.tsx b/src/examples/core-examples/buttonGroupPopoverExample.tsx new file mode 100644 index 0000000..8f9ce58 --- /dev/null +++ b/src/examples/core-examples/buttonGroupPopoverExample.tsx @@ -0,0 +1,80 @@ +/* + * Copyright 2017 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Alignment, Button, ButtonGroup, H5, IconName, Popover, Position, Switch } from "@blueprintjs/core"; +import { Example, handleBooleanChange, IExampleProps } from "@blueprintjs/docs-theme"; +import * as React from "react"; + +import { AlignmentSelect } from "./common/alignmentSelect"; +import { FileMenu } from "./common/fileMenu"; + +export interface IButtonGroupPopoverExampleState { + alignText: Alignment; + fill: boolean; + large: boolean; + minimal: boolean; + vertical: boolean; +} + +export class ButtonGroupPopoverExample extends React.PureComponent { + public state: IButtonGroupPopoverExampleState = { + alignText: Alignment.CENTER, + fill: false, + large: false, + minimal: false, + vertical: false, + }; + + private handleFillChange = handleBooleanChange(fill => this.setState({ fill })); + private handleLargeChange = handleBooleanChange(large => this.setState({ large })); + private handleMinimalChange = handleBooleanChange(minimal => this.setState({ minimal })); + private handleVerticalChange = handleBooleanChange(vertical => this.setState({ vertical })); + + public render() { + const options = ( + <> +
Props
+ + + + + + + ); + return ( + + + {this.renderButton("File", "document")} + {this.renderButton("Edit", "edit")} + {this.renderButton("View", "eye-open")} + + + ); + } + + private renderButton(text: string, iconName: IconName) { + const { vertical } = this.state; + const rightIconName: IconName = vertical ? "caret-right" : "caret-down"; + const position = vertical ? Position.RIGHT_TOP : Position.BOTTOM_LEFT; + return ( + } position={position}> + + +
+

+ AnchorButton +

+ +
+ + ); + } + + private beginWiggling = () => { + window.clearTimeout(this.wiggleTimeoutId); + this.setState({ wiggling: true }); + this.wiggleTimeoutId = window.setTimeout(() => this.setState({ wiggling: false }), 300); + }; +} diff --git a/src/examples/core-examples/buttonsIconsExample.tsx b/src/examples/core-examples/buttonsIconsExample.tsx new file mode 100644 index 0000000..1c84d6f --- /dev/null +++ b/src/examples/core-examples/buttonsIconsExample.tsx @@ -0,0 +1,37 @@ +/* + * Copyright 2016 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as React from "react"; + +import { Button, Icon } from "@blueprintjs/core"; +import { Example, IExampleProps } from "@blueprintjs/docs-theme"; + +export class ButtonsIconsExample extends React.PureComponent { + public render() { + return ( + + {/* icon and rightIcon props */} + + + ); + } +} diff --git a/src/examples/core-examples/calloutExample.tsx b/src/examples/core-examples/calloutExample.tsx new file mode 100644 index 0000000..5b3ce0e --- /dev/null +++ b/src/examples/core-examples/calloutExample.tsx @@ -0,0 +1,60 @@ +/* + * Copyright 2017 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as React from "react"; + +import { Callout, Code, H5, Intent, Switch } from "@blueprintjs/core"; +import { Example, handleBooleanChange, handleStringChange, IDocsExampleProps } from "@blueprintjs/docs-theme"; +import { IconName } from "@blueprintjs/icons"; +import { IconSelect } from "./common/iconSelect"; +import { IntentSelect } from "./common/intentSelect"; + +export interface ICalloutExampleState { + icon?: IconName; + intent?: Intent; + showHeader: boolean; +} + +export class CalloutExample extends React.PureComponent { + public state: ICalloutExampleState = { showHeader: true }; + + private handleHeaderChange = handleBooleanChange((showHeader: boolean) => this.setState({ showHeader })); + private handleIntentChange = handleStringChange((intent: Intent) => this.setState({ intent })); + + public render() { + const { showHeader, ...calloutProps } = this.state; + const options = ( + <> +
Props
+ + +
Example
+ + + ); + return ( + + + The component is a simple wrapper around the CSS API that provides props for modifiers and optional + title element. Any additional HTML props will be spread to the rendered {"
"}{" "} + element. + + + ); + } + + private handleIconNameChange = (icon: IconName) => this.setState({ icon }); +} diff --git a/src/examples/core-examples/cardExample.tsx b/src/examples/core-examples/cardExample.tsx new file mode 100644 index 0000000..6aa33ef --- /dev/null +++ b/src/examples/core-examples/cardExample.tsx @@ -0,0 +1,68 @@ +/* + * Copyright 2017 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as React from "react"; + +import { Button, Card, Classes, Elevation, H5, Label, Slider, Switch } from "@blueprintjs/core"; +import { Example, IExampleProps } from "@blueprintjs/docs-theme"; + +export interface ICardExampleState { + elevation: Elevation; + interactive: boolean; +} + +export class CardExample extends React.PureComponent { + public state: ICardExampleState = { + elevation: 0, + interactive: false, + }; + + public render() { + const options = ( + <> +
Props
+ + + + ); + + return ( + + +
+ Analytical applications +
+

+ User interfaces that enable people to interact smoothly with data, ask better questions, and + make better decisions. +

+ + +
+                            [11:53:30] Finished 'typescript-bundle-blueprint' after 769 ms
+                            
+ [11:53:30] Starting 'typescript-typings-blueprint'... +
+ [11:53:30] Finished 'typescript-typings-blueprint' after 198 ms +
+ [11:53:30] write ./blueprint.css +
+ [11:53:30] Finished 'sass-compile-blueprint' after 2.84 s +
+
+
+
+ ); + } + + private handleClick = () => this.setState({ isOpen: !this.state.isOpen }); +} diff --git a/src/examples/core-examples/collapsibleListExample.tsx b/src/examples/core-examples/collapsibleListExample.tsx new file mode 100644 index 0000000..5ebb4ed --- /dev/null +++ b/src/examples/core-examples/collapsibleListExample.tsx @@ -0,0 +1,101 @@ +/* + * Copyright 2016 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import classNames from "classnames"; +import * as React from "react"; + +import { + Boundary, + Classes, + CollapsibleList, + H5, + IMenuItemProps, + Label, + MenuItem, + RadioGroup, + Slider, +} from "@blueprintjs/core"; +import { Example, handleStringChange, IExampleProps } from "@blueprintjs/docs-theme"; + +export interface ICollapsibleListExampleState { + collapseFrom?: Boundary; + visibleItemCount?: number; +} + +const COLLAPSE_FROM_RADIOS = [ + { label: "Start", value: Boundary.START.toString() }, + { label: "End", value: Boundary.END.toString() }, +]; + +export class CollapsibleListExample extends React.PureComponent { + public state: ICollapsibleListExampleState = { + collapseFrom: Boundary.START, + visibleItemCount: 3, + }; + + private handleChangeCollapse = handleStringChange((collapseFrom: Boundary) => this.setState({ collapseFrom })); + + public render() { + const options = ( + <> +
Props
+ + + + + ); + + return ( + + } + visibleItemRenderer={this.renderBreadcrumb} + > + + + + + + + + + ); + } + + private renderBreadcrumb(props: IMenuItemProps) { + if (props.href != null) { + return {props.text}; + } else { + return {props.text}; + } + } + + private handleChangeCount = (visibleItemCount: number) => this.setState({ visibleItemCount }); +} diff --git a/src/examples/core-examples/common/alignmentSelect.tsx b/src/examples/core-examples/common/alignmentSelect.tsx new file mode 100644 index 0000000..fb5b382 --- /dev/null +++ b/src/examples/core-examples/common/alignmentSelect.tsx @@ -0,0 +1,51 @@ +/* + * Copyright 2016 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Alignment, Button, ButtonGroup } from "@blueprintjs/core"; +import * as React from "react"; + +export interface IAlignSelectProps { + align: Alignment | undefined; + allowCenter?: boolean; + label?: string; + onChange: (align: Alignment) => void; +} + +export class AlignmentSelect extends React.PureComponent { + public render() { + const { align, allowCenter = true, label = "Align text" } = this.props; + return ( +
+ {label} + +
+ ); + } + + private handleAlignLeft = () => this.props.onChange(Alignment.LEFT); + private handleAlignCenter = () => this.props.onChange(Alignment.CENTER); + private handleAlignRight = () => this.props.onChange(Alignment.RIGHT); +} diff --git a/src/examples/core-examples/common/fileMenu.tsx b/src/examples/core-examples/common/fileMenu.tsx new file mode 100644 index 0000000..c2d5df2 --- /dev/null +++ b/src/examples/core-examples/common/fileMenu.tsx @@ -0,0 +1,35 @@ +/* + * Copyright 2016 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { IProps, Menu, MenuDivider, MenuItem } from "@blueprintjs/core"; +import * as React from "react"; + +export interface IFileMenuProps extends IProps { + shouldDismissPopover?: boolean; +} + +export const FileMenu: React.SFC = props => ( + + + + + + + + + + +); diff --git a/src/examples/core-examples/common/iconSelect.tsx b/src/examples/core-examples/common/iconSelect.tsx new file mode 100644 index 0000000..2d2300a --- /dev/null +++ b/src/examples/core-examples/common/iconSelect.tsx @@ -0,0 +1,79 @@ +/* + * Copyright 2016 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Alignment, Button, Classes, MenuItem } from "@blueprintjs/core"; +import { IconName, IconNames } from "@blueprintjs/icons"; +import { ItemRenderer, Select } from "@blueprintjs/select"; +import * as React from "react"; + +export interface IIconSelectProps { + iconName?: IconName; + onChange: (iconName?: IconName) => void; +} + +const NONE = "(none)"; +type IconType = IconName | typeof NONE; +const ICON_NAMES = Object.keys(IconNames).map((name: keyof typeof IconNames) => IconNames[name]); +ICON_NAMES.push(NONE); + +const TypedSelect = Select.ofType(); + +export class IconSelect extends React.PureComponent { + public render() { + const { iconName } = this.props; + return ( +
+ + This example uses labelElement to demonstrate JSX labels. + + + ); + } +} diff --git a/src/examples/core-examples/tabsExample.tsx b/src/examples/core-examples/tabsExample.tsx new file mode 100644 index 0000000..3aa58e0 --- /dev/null +++ b/src/examples/core-examples/tabsExample.tsx @@ -0,0 +1,137 @@ +/* + * Copyright 2017 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as React from "react"; + +import { Alignment, Classes, H3, H5, InputGroup, Navbar, Switch, Tab, TabId, Tabs } from "@blueprintjs/core"; +import { Example, handleBooleanChange, IExampleProps } from "@blueprintjs/docs-theme"; + +export interface ITabsExampleState { + activePanelOnly: boolean; + animate: boolean; + navbarTabId: TabId; + vertical: boolean; +} + +export class TabsExample extends React.PureComponent { + public state: ITabsExampleState = { + activePanelOnly: false, + animate: true, + navbarTabId: "Home", + vertical: false, + }; + + private toggleActiveOnly = handleBooleanChange(activePanelOnly => this.setState({ activePanelOnly })); + private toggleAnimate = handleBooleanChange(animate => this.setState({ animate })); + private toggleVertical = handleBooleanChange(vertical => this.setState({ vertical })); + + public render() { + const options = ( + <> +
Props
+ + + + + ); + + return ( + + + + + Current page: {this.state.navbarTabId} + + + + {/* controlled mode & no panels (see h1 below): */} + + + + + + + + {/* uncontrolled mode & each Tab has a panel: */} + + } /> + } /> + } panelClassName="ember-panel" /> + } /> + + + + + ); + } + + private handleNavbarTabChange = (navbarTabId: TabId) => this.setState({ navbarTabId }); +} + +const ReactPanel: React.SFC<{}> = () => ( +
+

Example panel: React

+

+ Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology + stack, it's easy to try it out on a small feature in an existing project. +

+
+); + +const AngularPanel: React.SFC<{}> = () => ( +
+

Example panel: Angular

+

+ HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic + views in web-applications. AngularJS lets you extend HTML vocabulary for your application. The resulting + environment is extraordinarily expressive, readable, and quick to develop. +

+
+); + +const EmberPanel: React.SFC<{}> = () => ( +
+

Example panel: Ember

+

+ Ember.js is an open-source JavaScript application framework, based on the model-view-controller (MVC) + pattern. It allows developers to create scalable single-page web applications by incorporating common idioms + and best practices into the framework. What is your favorite JS framework? +

+ +
+); + +const BackbonePanel: React.SFC<{}> = () => ( +
+

Backbone

+
+); diff --git a/src/examples/core-examples/tagExample.tsx b/src/examples/core-examples/tagExample.tsx new file mode 100644 index 0000000..fd3beb5 --- /dev/null +++ b/src/examples/core-examples/tagExample.tsx @@ -0,0 +1,106 @@ +/* + * Copyright 2016 Palantir Technologies, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as React from "react"; + +import { Button, H5, Intent, Switch, Tag } from "@blueprintjs/core"; +import { Example, handleBooleanChange, handleStringChange, IExampleProps } from "@blueprintjs/docs-theme"; +import { IntentSelect } from "./common/intentSelect"; + +export interface ITagExampleState { + fill: boolean; + icon: boolean; + intent: Intent; + interactive: boolean; + large: boolean; + minimal: boolean; + removable: boolean; + rightIcon: boolean; + round: boolean; + tags: string[]; +} + +export class TagExample extends React.PureComponent { + public state: ITagExampleState = { + fill: false, + icon: false, + intent: Intent.NONE, + interactive: false, + large: false, + minimal: false, + removable: false, + rightIcon: false, + round: false, + tags: INITIAL_TAGS, + }; + + private handleFillChange = handleBooleanChange(fill => this.setState({ fill })); + private handleIconChange = handleBooleanChange(icon => this.setState({ icon })); + private handleIntentChange = handleStringChange((intent: Intent) => this.setState({ intent })); + private handleInteractiveChange = handleBooleanChange(interactive => this.setState({ interactive })); + private handleLargeChange = handleBooleanChange(large => this.setState({ large })); + private handleMinimalChange = handleBooleanChange(minimal => this.setState({ minimal })); + private handleRemovableChange = handleBooleanChange(removable => this.setState({ removable })); + private handleRightIconChange = handleBooleanChange(rightIcon => this.setState({ rightIcon })); + private handleRoundChange = handleBooleanChange(round => this.setState({ round })); + + public render() { + const { icon, removable, rightIcon, tags, ...tagProps } = this.state; + const tagElements = tags.map(tag => { + const onRemove = () => this.setState({ tags: this.state.tags.filter(t => t !== tag) }); + return ( + + {tag} + + ); + }); + return ( + + {tagElements} + + ); + } + + private renderOptions() { + const { fill, icon, intent, interactive, large, minimal, removable, rightIcon, round } = this.state; + return ( + <> +
Props
+ + + + + + + + + +
Example
+ - - ); - } -} diff --git a/src/examples/core-examples/popoverSizingExample.tsx b/src/examples/core-examples/popoverSizingExample.tsx deleted file mode 100644 index 958c5cc..0000000 --- a/src/examples/core-examples/popoverSizingExample.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2017 Palantir Technologies, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as React from "react"; - -import { Button, Popover, Position } from "@blueprintjs/core"; -import { Example, IExampleProps } from "@blueprintjs/docs-theme"; -import { FileMenu } from "./common/fileMenu"; - -export class PopoverSizingExample extends React.PureComponent { - public render() { - return ( - - } position={Position.BOTTOM_LEFT}> - - - - ); - } -} diff --git a/src/examples/core-examples/progressExample.tsx b/src/examples/core-examples/progressExample.tsx deleted file mode 100644 index f4d0e54..0000000 --- a/src/examples/core-examples/progressExample.tsx +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Palantir Technologies, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as React from "react"; - -import { H5, Intent, ProgressBar, Slider, Switch } from "@blueprintjs/core"; -import { Example, handleBooleanChange, handleStringChange, IExampleProps } from "@blueprintjs/docs-theme"; - -import { IntentSelect } from "./common/intentSelect"; - -export interface IProgressExampleState { - hasValue: boolean; - intent?: Intent; - value: number; -} - -export class ProgressExample extends React.PureComponent { - public state: IProgressExampleState = { - hasValue: false, - value: 0.7, - }; - - private handleIndeterminateChange = handleBooleanChange(hasValue => this.setState({ hasValue })); - private handleModifierChange = handleStringChange((intent: Intent) => this.setState({ intent })); - - public render() { - const { hasValue, intent, value } = this.state; - - const options = ( - <> -
Props
- - - - - ); - - return ( - - - - ); - } - - private renderLabel = (value: number) => value.toFixed(1); - - private handleValueChange = (value: number) => this.setState({ value }); -} diff --git a/src/examples/core-examples/radioExample.tsx b/src/examples/core-examples/radioExample.tsx deleted file mode 100644 index c3c3f1e..0000000 --- a/src/examples/core-examples/radioExample.tsx +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2015 Palantir Technologies, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as React from "react"; - -import { Radio, RadioGroup } from "@blueprintjs/core"; -import { Example, handleStringChange } from "@blueprintjs/docs-theme"; -import { CheckboxExample } from "./checkboxExample"; - -export class RadioExample extends CheckboxExample { - private handleRadioChange = handleStringChange(value => this.setState({ value })); - - // See CheckboxExample for options - protected renderExample() { - return ( - - - - - - - - ); - } -} diff --git a/src/examples/core-examples/rangeSliderExample.tsx b/src/examples/core-examples/rangeSliderExample.tsx deleted file mode 100644 index 08e0e7d..0000000 --- a/src/examples/core-examples/rangeSliderExample.tsx +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2016 Palantir Technologies, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as React from "react"; - -import { H5, NumberRange, RangeSlider, Switch } from "@blueprintjs/core"; -import { Example, handleBooleanChange, IExampleProps } from "@blueprintjs/docs-theme"; - -export interface IRangeSliderExampleState { - range: NumberRange; - vertical: boolean; -} - -export class RangeSliderExample extends React.PureComponent { - public state: IRangeSliderExampleState = { - range: [36, 72], - vertical: false, - }; - - private toggleVertical = handleBooleanChange(vertical => this.setState({ vertical })); - - public render() { - const { range, vertical } = this.state; - const options = ( - <> -
Props
- - - ); - - return ( - - - - ); - } - - private handleValueChange = (range: NumberRange) => this.setState({ range }); -} diff --git a/src/examples/core-examples/sliderExample.tsx b/src/examples/core-examples/sliderExample.tsx deleted file mode 100644 index 01ce16b..0000000 --- a/src/examples/core-examples/sliderExample.tsx +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2016 Palantir Technologies, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as React from "react"; - -import { H5, Slider, Switch } from "@blueprintjs/core"; -import { Example, handleBooleanChange, IExampleProps } from "@blueprintjs/docs-theme"; - -export interface ISliderExampleState { - value1?: number; - value2?: number; - value3?: number; - vertical?: boolean; -} - -export class SliderExample extends React.PureComponent { - public state: ISliderExampleState = { - value1: 0, - value2: 2.5, - value3: 30, - vertical: false, - }; - - private toggleVertical = handleBooleanChange(vertical => this.setState({ vertical })); - - public render() { - const { vertical } = this.state; - const options = ( - <> -
Props
- - - ); - - return ( - - - - - - ); - } - - private getChangeHandler(key: string) { - return (value: number) => this.setState({ [key]: value }); - } - - private renderLabel2(val: number) { - return `${Math.round(val * 100)}%`; - } - - private renderLabel3(val: number) { - return val === 0 ? `£${val}` : `£${val},000`; - } -} diff --git a/src/examples/core-examples/spinnerExample.tsx b/src/examples/core-examples/spinnerExample.tsx deleted file mode 100644 index 830e867..0000000 --- a/src/examples/core-examples/spinnerExample.tsx +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2015 Palantir Technologies, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as React from "react"; - -import { H5, Intent, Label, Slider, Spinner, Switch } from "@blueprintjs/core"; -import { Example, handleBooleanChange, handleStringChange, IExampleProps } from "@blueprintjs/docs-theme"; -import { IntentSelect } from "./common/intentSelect"; - -export interface ISpinnerExampleState { - hasValue: boolean; - intent?: Intent; - size: number; - value: number; -} - -export class SpinnerExample extends React.PureComponent { - public state: ISpinnerExampleState = { - hasValue: false, - size: Spinner.SIZE_STANDARD, - value: 0.7, - }; - - private handleIndeterminateChange = handleBooleanChange(hasValue => this.setState({ hasValue })); - private handleModifierChange = handleStringChange((intent: Intent) => this.setState({ intent })); - - public render() { - const { size, hasValue, intent, value } = this.state; - return ( - - - - ); - } - - private renderOptions() { - const { size, hasValue, intent, value } = this.state; - return ( - <> -
Props
- - - - - - - ); - } - - private renderLabel = (value: number) => value.toFixed(1); - - private handleValueChange = (value: number) => this.setState({ value }); - private handleSizeChange = (size: number) => this.setState({ size }); -} diff --git a/src/examples/core-examples/switchExample.tsx b/src/examples/core-examples/switchExample.tsx deleted file mode 100644 index 233dc99..0000000 --- a/src/examples/core-examples/switchExample.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2016 Palantir Technologies, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as React from "react"; - -import { Code, Label, Switch } from "@blueprintjs/core"; -import { CheckboxExample } from "./checkboxExample"; - -export class SwitchExample extends CheckboxExample { - // See CheckboxExample for options - protected renderExample() { - return ( - <> -
- - Enabled} /> - Public} /> - Cooperative} defaultChecked={true} /> - -
- - This example uses labelElement to demonstrate JSX labels. - - - ); - } -} diff --git a/src/examples/core-examples/tabsExample.tsx b/src/examples/core-examples/tabsExample.tsx deleted file mode 100644 index 3aa58e0..0000000 --- a/src/examples/core-examples/tabsExample.tsx +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2017 Palantir Technologies, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as React from "react"; - -import { Alignment, Classes, H3, H5, InputGroup, Navbar, Switch, Tab, TabId, Tabs } from "@blueprintjs/core"; -import { Example, handleBooleanChange, IExampleProps } from "@blueprintjs/docs-theme"; - -export interface ITabsExampleState { - activePanelOnly: boolean; - animate: boolean; - navbarTabId: TabId; - vertical: boolean; -} - -export class TabsExample extends React.PureComponent { - public state: ITabsExampleState = { - activePanelOnly: false, - animate: true, - navbarTabId: "Home", - vertical: false, - }; - - private toggleActiveOnly = handleBooleanChange(activePanelOnly => this.setState({ activePanelOnly })); - private toggleAnimate = handleBooleanChange(animate => this.setState({ animate })); - private toggleVertical = handleBooleanChange(vertical => this.setState({ vertical })); - - public render() { - const options = ( - <> -
Props
- - - - - ); - - return ( - - - - - Current page: {this.state.navbarTabId} - - - - {/* controlled mode & no panels (see h1 below): */} - - - - - - - - {/* uncontrolled mode & each Tab has a panel: */} - - } /> - } /> - } panelClassName="ember-panel" /> - } /> - - - - - ); - } - - private handleNavbarTabChange = (navbarTabId: TabId) => this.setState({ navbarTabId }); -} - -const ReactPanel: React.SFC<{}> = () => ( -
-

Example panel: React

-

- Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology - stack, it's easy to try it out on a small feature in an existing project. -

-
-); - -const AngularPanel: React.SFC<{}> = () => ( -
-

Example panel: Angular

-

- HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic - views in web-applications. AngularJS lets you extend HTML vocabulary for your application. The resulting - environment is extraordinarily expressive, readable, and quick to develop. -

-
-); - -const EmberPanel: React.SFC<{}> = () => ( -
-

Example panel: Ember

-

- Ember.js is an open-source JavaScript application framework, based on the model-view-controller (MVC) - pattern. It allows developers to create scalable single-page web applications by incorporating common idioms - and best practices into the framework. What is your favorite JS framework? -

- -
-); - -const BackbonePanel: React.SFC<{}> = () => ( -
-

Backbone

-
-); diff --git a/src/examples/core-examples/tagExample.tsx b/src/examples/core-examples/tagExample.tsx deleted file mode 100644 index fd3beb5..0000000 --- a/src/examples/core-examples/tagExample.tsx +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2016 Palantir Technologies, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as React from "react"; - -import { Button, H5, Intent, Switch, Tag } from "@blueprintjs/core"; -import { Example, handleBooleanChange, handleStringChange, IExampleProps } from "@blueprintjs/docs-theme"; -import { IntentSelect } from "./common/intentSelect"; - -export interface ITagExampleState { - fill: boolean; - icon: boolean; - intent: Intent; - interactive: boolean; - large: boolean; - minimal: boolean; - removable: boolean; - rightIcon: boolean; - round: boolean; - tags: string[]; -} - -export class TagExample extends React.PureComponent { - public state: ITagExampleState = { - fill: false, - icon: false, - intent: Intent.NONE, - interactive: false, - large: false, - minimal: false, - removable: false, - rightIcon: false, - round: false, - tags: INITIAL_TAGS, - }; - - private handleFillChange = handleBooleanChange(fill => this.setState({ fill })); - private handleIconChange = handleBooleanChange(icon => this.setState({ icon })); - private handleIntentChange = handleStringChange((intent: Intent) => this.setState({ intent })); - private handleInteractiveChange = handleBooleanChange(interactive => this.setState({ interactive })); - private handleLargeChange = handleBooleanChange(large => this.setState({ large })); - private handleMinimalChange = handleBooleanChange(minimal => this.setState({ minimal })); - private handleRemovableChange = handleBooleanChange(removable => this.setState({ removable })); - private handleRightIconChange = handleBooleanChange(rightIcon => this.setState({ rightIcon })); - private handleRoundChange = handleBooleanChange(round => this.setState({ round })); - - public render() { - const { icon, removable, rightIcon, tags, ...tagProps } = this.state; - const tagElements = tags.map(tag => { - const onRemove = () => this.setState({ tags: this.state.tags.filter(t => t !== tag) }); - return ( - - {tag} - - ); - }); - return ( - - {tagElements} - - ); - } - - private renderOptions() { - const { fill, icon, intent, interactive, large, minimal, removable, rightIcon, round } = this.state; - return ( - <> -
Props
- - - - - - - - - -
Example
-
+ + Enabled} /> + Public} /> + Cooperative} defaultChecked={true} /> + +