From f073f2b4024527e8c8d79d9656a8c069e3920fd3 Mon Sep 17 00:00:00 2001 From: Gherman Date: Fri, 5 Apr 2024 19:02:23 +0100 Subject: [PATCH] Verifier 1 (#10) * add crate * introduce runner trait and merge parser and sem errors * verifier ast * docs * fix enum access * translate literals to z3 primitives * transform basic operations and literals * rename module * add math model concept * [untested] transdorm expressions to Z3 AST * test expression translation * delete project files * partially resolve models * optimise ast lifetimes * [untested] resolve declarations * simplify context passing and lifetimes * [untested] check individual blocks * [tested] improve constraint generation respecting co-dependent structs * cleanup * parse params object to transformer * cleanup * add `verify` command and support nested errors * apply addition on strings * fix test * clippy suggestions * small cleanup * [tested] verify consistency in linked blocks * add changelog * refine the test * add docs * update examples and add CI test --- .github/workflows/ci.yml | 22 +- .gitignore | 1 + .vscode/launch.json | 102 ---- .vscode/settings.json | 159 ----- CHANGELOG.md | 1 + Cargo.toml | 10 +- concepts/math_model.pdf | Bin 0 -> 433792 bytes concepts/math_model.typ | 142 +++++ crates/diagnostics/src/lib.rs | 49 +- crates/folidity/Cargo.toml | 1 + crates/folidity/src/cmd/check.rs | 33 +- crates/folidity/src/cmd/mod.rs | 46 +- crates/folidity/src/cmd/new.rs | 4 +- crates/folidity/src/cmd/verify.rs | 57 ++ crates/parser/src/ast.rs | 2 + crates/parser/src/folidity.lalrpop | 2 +- crates/parser/src/lib.rs | 13 +- crates/parser/src/tests.rs | 3 + crates/semantics/src/ast.rs | 51 +- crates/semantics/src/bounds.rs | 60 +- crates/semantics/src/contract.rs | 29 +- crates/semantics/src/expression/complex.rs | 125 ++-- crates/semantics/src/expression/eval.rs | 2 +- crates/semantics/src/expression/mod.rs | 2 +- crates/semantics/src/expression/ops.rs | 14 +- crates/semantics/src/functions.rs | 1 + crates/semantics/src/global_symbol.rs | 26 +- crates/semantics/src/lib.rs | 86 ++- crates/semantics/src/tests.rs | 51 +- crates/semantics/src/types.rs | 2 +- crates/verifier/Cargo.toml | 28 + crates/verifier/src/ast.rs | 184 ++++++ crates/verifier/src/executor.rs | 543 +++++++++++++++++ crates/verifier/src/lib.rs | 62 ++ crates/verifier/src/links.rs | 65 ++ crates/verifier/src/solver.rs | 93 +++ crates/verifier/src/tests.rs | 558 ++++++++++++++++++ crates/verifier/src/transformer.rs | 544 +++++++++++++++++ .../counter/{counter.fol => contract.fol} | 2 - 39 files changed, 2713 insertions(+), 462 deletions(-) delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json create mode 100644 concepts/math_model.pdf create mode 100644 concepts/math_model.typ create mode 100644 crates/folidity/src/cmd/verify.rs create mode 100644 crates/verifier/Cargo.toml create mode 100644 crates/verifier/src/ast.rs create mode 100644 crates/verifier/src/executor.rs create mode 100644 crates/verifier/src/lib.rs create mode 100644 crates/verifier/src/links.rs create mode 100644 crates/verifier/src/solver.rs create mode 100644 crates/verifier/src/tests.rs create mode 100644 crates/verifier/src/transformer.rs rename examples/counter/{counter.fol => contract.fol} (95%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e545137..c53b394 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,10 +27,30 @@ jobs: fmt: name: Check formatting runs-on: ubuntu-latest + steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 - uses: dtolnay/rust-toolchain@nightly with: components: rustfmt - - run: cargo +nightly fmt --all -- --check --verbose \ No newline at end of file + - run: cargo +nightly fmt --all -- --check --verbose + + examples: + strategy: + matrix: + job: + - check + - verify + name: Compile and formally test examples + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: Swatinem/rust-cache@v2 + - uses: dtolnay/rust-toolchain@stable + - run: | + for example in examples/*/; do + echo "Processing example: $example"; + cargo run ${{ matrix.job }} $example/contract.fol + done + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 055dff1..da7e620 100644 --- a/.gitignore +++ b/.gitignore @@ -308,5 +308,6 @@ Cargo.lock .DS_Store reports/ecsproject.pdf +.vscode /auto \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 01b05b7..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in library 'folidity-diagnostics'", - "cargo": { - "args": [ - "test", - "--no-run", - "--lib", - "--package=folidity-diagnostics" - ], - "filter": { - "name": "folidity-diagnostics", - "kind": "lib" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug executable 'folidity'", - "cargo": { - "args": [ - "build", - "--bin=folidity", - "--package=folidity" - ], - "filter": { - "name": "folidity", - "kind": "bin" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in executable 'folidity'", - "cargo": { - "args": [ - "test", - "--no-run", - "--bin=folidity", - "--package=folidity" - ], - "filter": { - "name": "folidity", - "kind": "bin" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in library 'folidity-parser'", - "cargo": { - "args": [ - "test", - "--no-run", - "--lib", - "--package=folidity-parser" - ], - "filter": { - "name": "folidity-parser", - "kind": "lib" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in library 'folidity-semantics'", - "cargo": { - "args": [ - "test", - "--no-run", - "--lib", - "--package=folidity-semantics" - ], - "filter": { - "name": "folidity-semantics", - "kind": "lib" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index c3f0c3f..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "latex-workshop.latex.outDir": "output", - "latex-workshop.latex.clean.args": [], - "latex-workshop.latex.clean.command": "latexclean", - "grammarly.config.documentDialect": "british", - "grammarly.config.documentDomain": "academic", - "grammarly.config.suggestionCategories.conjugationAtStartOfSentence": "on", - "grammarly.config.suggestionCategories.oxfordComma": "on", - "grammarly.config.suggestionCategories.stylisticFragments": "on", - "latex-workshop.latex.tools": [ - - { - "name": "latexmk", - "command": "latexmk", - "args": [ - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "-pdf", - "-outdir=%OUTDIR%", - "-shell-escape", - "%DOC%" - ], - "env": {} - }, - { - "name": "lualatexmk", - "command": "latexmk", - "args": [ - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "-lualatex", - "-outdir=%OUTDIR%", - "-shell-escape", - "%DOC%" - ], - "env": {} - }, - { - "name": "xelatexmk", - "command": "latexmk", - "args": [ - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "-xelatex", - "-outdir=%OUTDIR%", - "-shell-escape", - "%DOC%" - ], - "env": {} - }, - { - "name": "latexmk_rconly", - "command": "latexmk", - "args": [ - "%DOC%" - ], - "env": {} - }, - { - "name": "pdflatex", - "command": "pdflatex", - "args": [ - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "-shell-escape", - "%DOC%" - ], - "env": {} - }, - { - "name": "bibtex", - "command": "bibtex", - "args": [ - "%DOCFILE%" - ], - "env": {} - }, - { - "name": "rnw2tex", - "command": "Rscript", - "args": [ - "-e", - "knitr::opts_knit$set(concordance = TRUE); knitr::knit('%DOCFILE_EXT%')" - ], - "env": {} - }, - { - "name": "jnw2tex", - "command": "julia", - "args": [ - "-e", - "using Weave; weave(\"%DOC_EXT%\", doctype=\"tex\")" - ], - "env": {} - }, - { - "name": "jnw2texminted", - "command": "julia", - "args": [ - "-e", - "using Weave; weave(\"%DOC_EXT%\", doctype=\"texminted\")" - ], - "env": {} - }, - { - "name": "pnw2tex", - "command": "pweave", - "args": [ - "-f", - "tex", - "%DOC_EXT%" - ], - "env": {} - }, - { - "name": "pnw2texminted", - "command": "pweave", - "args": [ - "-f", - "texminted", - "%DOC_EXT%" - ], - "env": {} - }, - { - "name": "tectonic", - "command": "tectonic", - "args": [ - "--synctex", - "--keep-logs", - "%DOC%.tex" - ], - "env": {} - } - ], - "cSpell.words": [ - "algonaut", - "Algorand", - "entrancy", - "Folidity", - "incrementer", - "indexmap", - "lalrpop", - "nums", - "petgraph", - "symtable", - "tarjan", - "yays" - ], - "rust-analyzer.linkedProjects": [ - "./crates/parser/Cargo.toml", - "./crates/semantics/Cargo.toml", - ], - "typst-lsp.experimentalFormatterMode": "on", -} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 43f2c9e..11785d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Contains important changes as part of the project development adhering to [seman ## Unreleased ### Added +- Verifier 1 - [#10](https://github.com/SkymanOne/folidity/pull/10) - Compiler executable 1 - [#9](https://github.com/SkymanOne/folidity/pull/9) - Semantics 1 - [#7](https://github.com/SkymanOne/folidity/pull/7) - Parser - [#4](https://github.com/SkymanOne/folidity/pull/4) diff --git a/Cargo.toml b/Cargo.toml index 8d7ebde..79465b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,8 @@ members = [ "crates/diagnostics", "crates/folidity", "crates/parser", - "crates/semantics", + "crates/semantics", + "crates/verifier", ] [workspace.package] @@ -21,8 +22,9 @@ version = "1.0.0" [workspace.dependencies] folidity-parser = { path = "crates/parser" } folidity-diagnostics = { path = "crates/diagnostics" } -derive-node = { path = "crates/derive_node" } folidity-semantics = { path = "crates/semantics" } +folidity-verifier = { path = "crates/verifier" } +derive-node = { path = "crates/derive_node" } logos = "0.14" lalrpop-util = "0.20" lalrpop = "0.20" @@ -43,4 +45,6 @@ clap = { version ="4.5", features = ["derive"]} ariadne = { version = "0.4", features = ["auto-color"] } anyhow = "1.0" walkdir = "2.5" -yansi = "1.0" \ No newline at end of file +yansi = "1.0" +# we need to pin to commit as the crate version doesn't allow us to detect local `z3` binary. +z3 = { git = "https://github.com/prove-rs/z3.rs.git", rev = "247d308f27d8b59152ad402e2d8b13d617a1a6a1" } \ No newline at end of file diff --git a/concepts/math_model.pdf b/concepts/math_model.pdf new file mode 100644 index 0000000000000000000000000000000000000000..762e94ab5d9129b006fdcc7e71964df0aa283633 GIT binary patch literal 433792 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

L_ZLLlQS4F1OO>WJLrz=! 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 z zZbY=~X7CJA<1SrtX?I7!D4~tw=oG=`<2cc@jk}m_lEPzKr*#%fr%o2jx=!1?x2;>Z z4Hs!zFdjQIIW0_*G9alE<_%@s5|nH`H*9UY{XJQT3D``xFpWz^ms%wY75?3ru0c?u z=7IW|LqB~cMhg>IicIHf$zT;Pg^1xPD6N!VhNq?3O#w5#bGyON3I*v<7Dz_bqN_3f zWx|ALg?uCu)IZmo>MvXgWzt*`sQU!=4>hJ+R?@z2-M?e)?zwWZ85Go4wq+*f^K=qK ziF=bdHYxO7x+)lV7sI$cs;8&~HSA=mYry)WOkm-lC8;x8S=JeB(8C3E1*5aTYcfJ9 zQNS-u7^bNc4UK?_KSE8{KN?*Ydutovt5`Zxog; zu)FwLSf#P8nUq2eAT;gDb*5ip`+yojQ438<$Hxz5Nm^2+-X)A>J1OPc^dDnJ_EG8bE|nWZ%!$~4FCr3E5wH`$~40rm2|LC?lKFQF+n zmm~<6$x{1L{*5uTUn9KbLOd%uSt1+X75efj9Y&w-#scauGE7T<_N=BH@BUr9`2>MJ zkR<^osG?}8aJA_{8!Ox#%)_nUfSyI)ek9mts)8*yL{}MR?GLNc<4Zm_ig;E7a~B`K zluox~6Pk~P-_WIW+pkupgQ~)uoesAE;$rO0@ts;RxlZapTf&Dmio+o=hD_EpicTQ!ly2Arp@hyE;9ch}hsc0}3CBzTWj^)Z2F*+T=k&v2FkWqZ9jANzJc~RAl zQ)Nr&tV|8~8xtp0Kbq;294=-3L&|x`lNioU0HW?er=+`hoDp^aCOx_9pJ=C;E75D| zE>x;gdUgtX{_P~w5bRcL3SE;eaVCFj!UNp8cBa2<^i4S1d35+rMjM4_dHZ4YQ`oF$ zbWywl=))(4xOu=^485p??&nSwf$SzHAl0aBUHKcNL7k9i>#Z zsjJ*NQiDBxx|Dedc`_c0-9b%D*Gp#oG&13+{XLlwYp0P3M{PzXBm&Yc9RcZ<{*9!9 zkWK`Sg54#A-i4vAFgu+~4}&JQ%Ve~)Jb;0ZKYl4KJJcwKtKZSRj91zA_QfC@;GW*^ z;&cwI1VZ)Fa~GY?=@FHocI{zI>$Wj!+*lbApq_;GNAyh1ulgp!-p5f|>T0rtxqQUZ z?&-0Yw<NJ~<_O8POd{r$*;1c9YRWfI8BL!KqorC$NC%%tzWP_8#u9tp~Y1i4~^anip7~ z+DjP-+qDYoj9^L2@{%fXG4bgM1!M52uGpPz+}#m7I&W>IT*)vih&}BkF-Xd##xst0 zD)Vtiu}PU8|N97&CQOoqtGiVAI!^_${mPVL=|!@pv_uW%gz*AqDo&>l{AZ$AT2Q~M zBgp~^y->k~Nzn|WiBF;We2rmnH}ZfzIVG$V0OC>GYRXjMd)xDW*8+is@92~&x~H8G zBRV>{F-hj1K!QgGfYB^hjt)kxTzS1{_s7r&%GB~-N>PmwGU;C#Ef$zKAmMOn*luja z#7Vr`kK`PNsbZnhlu~Flb7zchI%9-O#BjJ+R|jJb#wnArGjT3XJ|UfnMd=Ysr#L1~ z_(ntgDQ!?L9?I$LZ7?`CQEyyF2_afJ!Cfx18!PRB^EMEEex+&8{gZRCymQP|T$*vi z7?*$r4AuBiW0Yn56|STR-x6vE&7gy@7%L0=EM=d;FllO>a`!qhG}Vt8BqecL&M-2a z8jO_bB_Ni)0B}KFT*TP|AH(Gn!ewYKnD$IPm5$NL7Zl@MEV?1hwOx>}@;S1y(tLF4 z1qGX7IfnxUFK7m7(85#-_PN4zO0VfM!d{5Ik{63TQx_{}N}Pl#bga`cWgm8dEj7AP z7<-f^u~M%ZQQnnOmLbY6xeg_9K*bJd0EdzZb9T~nkh)lyh{K4DqE(KijJzOU;mPFK>1<)*>By1~J%%zIWEoYdHznnQOS$+;DoXC6Ad{{K zGmYXtf^t8&$thSZ{6+V=ySt(^pFEM&!y9bt0U$?z1eo;Ddt*XH==a7J*fp9mJ zKJC7jx*{#34yS@t-*;%Ji9tFHi=Fa{$#fXAR1fc{4{71}goDyp@l0sk7T-A5K&=9X zeL)*0mM#XEq3$&DVrUBiQwPD_9Qt&%iT1e35@fFe(IKnnuynjWm{x(*C;|lI z1b+Y&@VCJZee{bTa1iN={HTPFpJ1d49WeR|jG{%1!OY+?YYr-dCT#s5i6p(+z}O82 z>B`*D55d5j2*E&8k_`07K$=UejeM<$Pw$pZI3i`+AygJm?;n1d^ofm;Nd}_XTJ_hr>^A1|`sWTOI6_A{%@QXCNe!e&uuXm4S z)b|74OEu<$Z&;03_ak~8P0^t8+!ySMpHBhW3BnUWpUi+xY@7#JtI$FLk3qV_1TYqW zUVvswdLd6Tdi2j4!J4FD2@T_A{RCj5RucUbhB77R8<#k|Isw#c4?~|o0|i00-WdlI z{iQZ+!AW^b2~1C}Fv$8vv{_G=Scb`znod{Jf3{QFxOP4$oILXaYA*2p1>hkwU`?Ma zxdBs8$|9`BiD8l>b9{R!3%u+cEx=GSS(8n%JS<#Xwvt{^378n2>I*G~wvmvk`xs<1I}OOV!^n5N|f$>2(jED8F-+@j~5L+#>Y? zMn4ltb%uegh^N~La{i9n$OvS`0;n&?j8U}ca;8(sFMldU+yJdxi6!G_vwZKvgkjOc zpxyYE52417VE~QMzd4=z&ja22Sn4v^xa-ao7~7{{Y~MHYonFC|iTW#0hinfFhmkVG zQMY;Yl94j(VK!%!dT2K1{B-7u&^%pO0__P>pi(g;g_7p%k^C(VnQ{(2v1I5lDed}f zVRp=HXxETX5Klb?lH(HrRw-4bkI>QU<(;JSkBgO-k+x z12`omSa*K8DQt!I@gKV;{xod=M{xW_4#o#4BFPW5k>mr4NW4FkqBR16g%M`Mr~Poi z?|z+w`4MqSz48MTcI7Wn82#XTcH+t}uoLXV?^^i5f_9u1#0;W`*j7-asWYnxo3}}F zXB9!=SF*ol)OY z7_epCTK+(8M?H0tHsQ^cG44NNP`pP8W5-3y*&HY-dPhlhe8NC2WM<(CMwch=Q=0QY`WdyMPi^xy@47B-H?A@!B%A74vJL22VFOBBrAo=gyddfeb8F z07l3MIGQoF0D!LwOQQv4l;hl)4lkYg@jE>pmFKZ-Iz;Tx^Uc!Gv7c|4OxTAG%dy=} zI#~k5)+Fd&-Xt^w@;1AZ`&yeOHf>f4PC*?~2 z?oxu)tpdsC|<@BM+s=rXeaIrL%$M+H$2|5Xs_zwoPq zLl6JKbBEsBL#!p{hyQBfzmEKlTJWFiUwjU9x2{|IM$>oACmG(Q>pm>0_3dH)?U<*j zImr9(=fugbA79zvzp}x9mAg2{F-M%^?vZ*v^?dSq_rIZ5_>rO_jXzDtIQ&4ZAZ|=e zp;~|H^O2k)Zgl_Ge1T(Qa*A7;{V~O{(f#iVRq0$^QgZxx;=bhg#@e|}f?2eXUV}_! zFU$>?deyN)A%}c{YJ4=v<5JAmXekr2GMSc0XE4aX(tt+sh}+OR1sRXQR>* zs#AESvd`cPM|&BZ^r6ddZ4}0b@h<5-Bl}D#(l4a7>|hu<ETW1u zL)?E~zyA$@xvY<$sjn`)h?T@0v77XjVjTS)EnCY!r^S@~y-xm6YWpD?AO5c;G~D@P z*jki#y0WpKBR;(}He9e;{-XOomCP<)732R(GW&J@& zj%$he9Qi2ucl|5oqwE3w7f|H1xFsX!Ma}IOH+1BXs4@Mg4VfOXWb|Axtt^-~Z^42g za|aC?5;17dydevG*pqpK21N`RG-xh9nH#la%JjL@=8aiAWctu){l-K^j2sfzZ|+F= zdM=cWfU-k|xW1k%eNCT4z>`@sX3UxuIeoZK8@CB!=C*Ge{Biw{oo^?KnU%ZTX3dxm z?`915NuB66JTh|l@EK9Fe0I4_bY$LH@_L;Hb=sDk;K;0O1Mi~XUF0mOwwd^aqc46j zLV7B`6QrF<_vkxJy-P}Uh?FkQ>$4->Jm^1ZPu)GfcVU&ttV?i0f~#~iN$w;zN$#jf z7k@QLh!xWF07AO>tFhyvl#XVpz0${Bji;t#id>0HhJxCnm148h-jbEpb=nU*$>`6K zUO(wyv*g~2anotrt`m;l$cAlc5C5>`CaIkqO;S64-_P`XqL3~=j9QG7J;gpka!@M# zlj`Z{Bcui?JcQJIj{A;K$9*wWNX{q1KMFcUJ}G|mPd03z)i!8&QhOb`NbcPe ziAbv7a}WoqULCLZs*40furq;m>ICBd&;0SnnKOU*c&u5lV(Ie!%X)Mf)T?jr#Tdey z*2)l}m7qv#D0Gmyi(nAyzZh~-I3ny^ykfmFuJ?kTcygAwSKOzVHcgm4a=Oy7P24Wd z78Gf_W|Ghd>tP#5Tr4=YIkqcCMhU~FjZ}(z9s3m1N6r?ePlI~qIoN;VJlG~s6V^Is zYRoDIT5>IU37N-&^B;Z`Imkq+YK zkz8bRY7y9WlIF=x(j+BN?YvJR_d)I~nw7e}WRsOm(uKN>$Y&#a7fME@*F9OCC1sAx ziXzsf$OA!wpWtT*Y7`05{~q@yvqFyvSA;8x$1co*A$Lk`<>&;s;JR?(Y>Y^hJ=~&e zXv13y&4u8d(YN7ej3dKkO%g!)hH#OV=uS(t5Q2rEbS17riJR%_(9jaJj_z0@Npl5C z#KlaWBEWxRr;LG(*-tF37&dL_NFhS$*yS!n%o#ZwW?{;tn5jaXQiLaShfW&?0Pp80 ztr!zMcC-NhO&%QwTN9s59ye`5TrALVVH$j>bd(nRDWc<`02Uh?JqDgQ`YA?219PF} zX|qSpi2$*9ms^A|5~@{-_%>z?bOk#!IVMh-hSgn|ddi}h#Xe$l_r(KZMvop4-QU~M z+`a#z=qcVFDHYuk1YvhqLHVVkTUSA7jd)4ux?2zul%I#X3kj_Sp)2N6k&8LXx{ATW zctJSVjXvxq2*1UreJhT3eJgZ3CkXNMN&Ihu&`s&_TCS|LtFG5_Ri*z_Q}sX9RNYmR zSjyF}QpvsCSi!H*ap_}^?{1|E{yf0cUXD`ktS?Zfhj>EnkB7M5bql3V$ffYde%B8u z&-wwksn8MDCVcFAz8{~n4nUy}=?dWw`OPHPh$f{$dXfv$lfH*fa*pregHL_{pZ(te ztKkoT^=Gg&Ob?b;j#6&vV3f9W9CroypTgDKnLmCZ&P;764?4Nw{?vx9hQ+%-ScPd1 z9W&Fqo7%8da>I1}o0&ETXI$maxTSk2L+*?Va^f8a{O9hmwH^FzRlvWNaQyd&LEK_P zcV_fXmR};-^>#E&r*=v2OWe@?M`7QnGDu(R=5IZWzq9}PI5z(&Dm)zvgA#B$w!|Aq zV|o=3Ro;A~p-MgPScb|QF+MqqB2Dn3`ukXk;ZQQS*0ik2U@7+gVs;xLM2?OcrgX%o z!l%ynErvOrueX4a)Uzk>5}!2CM2`BS1!YQeH#wIxSQ@5GpDjB?#>&TDNsf@dDM6Ar zNwX$}#-{V>rviGYB*u?|l3#+-`(cg~#xdDlbbe8O=|VZb%(6K_x@4A8;lpqyP~IsT z(DRt&>I%jXNoQy>zG{qs?u-tXx?Z;Sz!$02717ZX(nZlLe`t#Fm@4}Px_ukIF^)cw z@>nas1SR{*A~#RpxuVOI->@dJLaco7883MmC=9ZKT#ghG;)FOkbk5ZmES*|i9HWSi zq3O>Knt+}5D5Rxb0*RL%DXjE}iJ6#=5m)}u zWR*I=?S~_h7Rp3A{1~9^xQJLUJ~QyqcX2exFXOkcRk-|zWxiEfAmh^er(*tw@hepF_`$|W9`Iu$UAprQCqzfXN^^`+uz{y- z9Q2Wf9VG`*x+=ghiqOu&a?kZKCtWl)>9>Y{(F4uBF3R3z`RgtPr)%=B$QefON)2@Z4<*`>L z(=XHIwWrd zg|{5cComf-l|*ylASkdrT${Wq*l7<-N9;)vusc$AI>`|KHemDfe-72{Tjq4C4`XJ^ zb&@_59ZG2u^<7x}Ds>ngTTcsLJ|E$9&ThQL=^T(}8I)9i`9u0j>Mi|J3M0iY$#1!% zqz_5-(>BtFWGi1BiF-!j8JM+_4A-5`jqwT6b(7P%D9Io=G78e6dlJkqFnZUMi6Atb z`VV}4E@-1!MNy5t}2+$cZqf`=qORvAb z&=*hy3jYkzeMdw=i~Hc$h$v`pAACndg>mUn7r(pE7tPV)$BNf-QQXo9KtUPRZ*dbBOx zN1AnmRY zTX6zfdufnuDov$I9TuK5^u%KF(TxmKHd)zfIf{YUVDXLbAuWGuFvf-ovA47#W%@R0 zKcGioyZwXtZZwf!et&7g`uB%qD@uyOL&h5%gud;8UHAB4LwXs=x=CZfXr|*o*^H=> zD4l%>f1;7-dz;Y(_~|@ybi2<#T@0A|Spq+ui0>wc-qER}ljxe%A1;NTuLMjmf80fI z(a{}ObKjXASGC{SmMu8C^qM2yq(+!9MiXh;e!y-sm-?ivb6-mR6KB!{j^1C^yRi)Z z9}I>OeSN;HbMH%!g&9HJalJi+zBDR-2&Gg}VVRqm-OmCLj zEwx*6H+NR5CM#8wm8zM}E-E=l6mT22p1Bp_!AH_5F&J6;?3qHsDlvZ|u+j9%xb#6m zO6d+KS3bm7S-!l2Z54Vd_H8T&TB43%fGCj8j#LQOlEhjjsaFJb5C zZwdaNWkw;LjUq-8H4u6Xflz=JVO>}cMxFxhE`vG1VSOw+aVo2fa_EV#*n4)oj)JC6 zmRiUz2MkGBRMIt{eoiRlq-|1&0i8AyyWYh-aWdP&0-qFVlBLWdQJU-RSQus%7oyPM z?xGPazlOmD69>b%(Nbuh)v?gAa0ffUBOUYfiHdzp95GNsWqg`hT`7)rWOL+nj6`Gn zO-w^|0_@{C-&Tdqm>~pqakXspq6B?(OVCKSgfV*9fvfm1XBh~$gL?ur+{Z(giq-&g zcH7HJM^14h3ZK6kFz`1*5Ps3i^H+T`B?I7uaT4pSjF>rUsrPEPr88j*dkl6Goxv~? zb6b}JAZ@{8R-S(W3|}71&JBtHdb)k-93ag14)po!Qu-OFaj)fZlAZ+|PSW?G0@K@V zhgoXbiE@BV>=#nTnG$i1Aaj@s7)T z(Zw`a3S5E%{M3JFb8Uw$G4XNEg?12`lubd`Z;UGfOj))f0v4GUV zqA?i6@=nqQ-;aPH@lMi_?&+*OAFxaI$%UYn+`9J^AkNlSdE`E{N zNjs2sg>J*N{``s$*^k_qoX&?6?l_&#`Zvc*5&XHq^{faiN%%<$z+1S;KfU1XH_zk> z;9Klt)?q==Mz)490lA`~h2+LyJj_1eqq2f%6_RH>6|IQP3si^QQWvOy%5o6oavUiM zY=HS7^FzcA;KI>GorZ>`gvdr zF1N^y(AwvU7?;0TL>{Z4qUnR?}FOIqi^nTC*;r)45xp3YQRIf7Yz+Bt0XI z@eW^*7Vv_!z`Mrs3w-wPTJV49^Y1*ea~JwmHT@GqO?|Q?hPvq@A15j6xdli*)ME|Ze`eujiP&BBvAj zdiS!E1fPbDQLI`i<-z~@{ClbW)A+yS{>&Nm9a_ad%0_aukEiF+w|$q{MSAL&?kOOq zPr%ST^@nwyClhcr5B7mr@em^}pJD*!Qw$S%h+!fR={W>=hc8G0ctHvxn#_Y}(yJn1 zyMh;*)7-oAhcqp(^!0=NfH0q`0R27vcpjc*t_&AwkL1Djoi8O4v|d zTVazGR0n#0lhBMo6@Unq>sEe67Z6;WFbY-r!whLChtsyab;Wj#ytZ|5Sc&q_%1EG)HzAl?&_4J>qF18 z>>_3~{i$^1$l=H?s}?2AC|=NEPg07~=Pp*9x_V{DFR05_9FquWB05P#Lxqz^n#3kq z0itCOFO&)#Im8@ku4Mo`$+YrW5^<;lS`J5!A9-T^!0il6y4=U0c-)`*f`&Aj9U=#6 zjJvthn^E*xMEVSwn1SeJ$(+hI2y%ntfB=FsWLVvVlIsO;xCbmj`uBna|(76wCF zTEB?`+dMSW7mbZUtSYJUq~tnh|HAtiUj7^zf0IS~D<#HX(_99B0V~sJq?PLdD^tq2 zo6eZ>&%~8F>Hbyj9Eq^fa|(N|XNPK*ktgckOcIOGYKG5Fp-t)RH;Yyx8YJ@(qeMAK z*1D?zXd5J;v5aj1xF!r}t5E0m_b3=frO2=fO;5%C0hrdd+pql3z=uXe0eqUIhs}mx zfDKiN;ZZ){$AA3k2%q#NDN4Z-f6lV`-LXJFFPXlSkE7tv13}=c{BmY{k{1)*yVBd! z%=R?9ep;%2;)x0RF<(C^P!c2TF(rv7W+=&v5>x?6f}+qqi%_FsMaN*mHG)4>Q#JuC zI;ZIlldcEKCiM0fs|b2Ym$K#p~jnKG{@0iy|PqEMS7#{moy9}HT?lkCdvwoit`R&*6-Q{Alyg+`e_f!MNJs+l08Lf(;}ed{S8x1AT{eLgxefqrjJan}521YX zMv>kM%FC-Bsh$V)13J?jyLAIQxPfvpD$2UlMo6J8O-c%fwzSmD)JKEj*D5$XQ2iek zqz|BD`IDf5hIpYGkMAz@1r$l5ZM34}hECJ&A5S+RI>01BE)t53(~}tkp#sbSaa_9k zOOQacBgofnWfSPE1;HPizHJB>i4A635Wez1PG?lQvYPKQQbxNMNZW3R70}339Dx+A zns$f7bsnG-yp2w9lFX(_>jZQpgQI#fT`oN$jfR^3&MIg{KkhAmyqylSf?T!FBO zKiwPz7;GDC?CkY=L7Um1<`dGZT&d;y6Dp4#>&1fNS~0&uPO3oJPPcTNa2h8ixiX_8 z4T3CM=}2;vS47b&$I_TkL3Tp^i0L`-$#izKVhTwiUx=GW>XOtY$xGb736_!=scqk- zhWs1R6_U?KYI~Q@$KMECaK--o*JLVBkQ0^1CoE>_#w@O~8C+YOrYTo`=~6oId_NT^NQ~*iqEYvCXmL zpSdE4@TK4=>L{E(=;ANq@e7NM-6U55?BBszFKuX$ z^%&LZbh+;6k&aX)vLikrPAN7L3%mcELSFefg#=hMa-+43k!qEUcIRCzPud*~Pdxy= zYa}#cQLYE*a$sCT`n!5^O{hs8qjWTK6n6i4AFg~CuIX|08UXPYut-^aec`UC2`RZL zEpjbS*@Ua?=;<*5aHreT0yOk{%Q(r5&J&=}QFC!&CFN!p(uFmXuCzn!gwlrewBE+p znT_}BImy^uAbWQy4K~f5FF^pW{jsS)&uoP2S{(S(B!eH#Eec3)2sGl{)Mzbe@u6X7 z=NSW_RGsC2NMF#NNnc^_{G^`IkFaObN3?e|o6e6?dh9`aNu$rekUS58XSvt?IOEAr z5^((E8ohs1CE7Zk{hfSmKTg+1Pr;@KiO(7!7CD19q^t&&u#g^Af?1Xl(G!K9*COAe zDMLESWUjCn6)EwF)9JH?Q|Un^^c)ntM5191PsV`n`!5(ij2=6Whpb>lPx126pz14( z5C+okdZH_SqS8b9S1Ly9!$yVvsNXfHqUiI1qon@9s-+hULdAkl;QPgcfR^N*hwVFY2XO60KvOw7FNDj603ZYYzMxPawqEHdC*F}zKC^K3-U0c^}g9 zF45$Yr5$&EkX(`yA_>(~*_ED8PAjH@IyIiUd~d!_e<^y3o5j42&5ATDD$DLKE9k$; z?yvq%rSYu_BIwW1xZ?QaCj2mw;Q={`AvWtuV(3c7hz~psh68_BRZWjep4i8T4m~0afP(|V#0JnOdubboT49^hp%+CA}yvSESF!pUN=JIO&`TQN|oXdOv;2o&ik8DU;(J zajEcsg`D>dx;2_+0emwaMCcq|U`l?=gYh@lv#;<;{}D_lE@K*lq`VWROJTMwufYV# zTjhuO45(fV4_{A9cq_Ys{1m7w73p&wOG#>EqVZx*PYdQ8yiF)1xam1y@cK(8OY42 z%2b;FWIy!{T;7&W;d=@KsiXuq)S4vh@Bu6FrF`6UcGp2ORGmgQN51%ks8xe0`tGgtIP<5B zQkChKoy|kwT15+du5J$O2ruJpCuwINB72Gd%{gG%qwc#zdg^nRZWdgWnmleQOJ?|e6cVge=ZkQV=3CFK0?RH1 zO4TDLfYz=At~GZjw_%J6c~6-Iw$OyOg0#TsbV#YrV2UC}u+>H51gNtx=K1&N+P`~b z&;K8L{{a|9wT2DAOWDo9QWOLPVV5o-*eD{XG)0Oa#enqQdkGLide2F(gb;d7=)DSv zf`}jph)9vDbfwPXEbRZh@0{5L1O%`5e&6^1|K&QFopR=sx3?qQp?_If(LBR3?2gQo zI#+e?EPpyjprj?8aG0yxc5%#rOP9@y|i7{v)~Xc_oi*3nY)L z-(P~{vFIQS#rMu&PTOt7oYt%NpGzLOSc_+;nH-(_zm`6@eXr$uwbG}_iq9jkGb@n- zyXRk*3?3mdRtDprr`E`Ye?xuO{PgW){*rxFMSI8mt}H6PonEm~i$6R?Qpon4gY^rk zgXNsm8|%MM#m~1MK#*K|gkfng5d6PT6^TcrY$COci=EBVS z!1BA-v;gme;bBbsBYKLJM3piUl{4ij<9<21!?>@5Q1zZii9=+)=W_k*0FAQWy@qx6 zxZzeeH1~wwW#^1L8G(z{a?KJTy}w?DjS8oG>*eKjm%&+GX!IP0cMg9`>4L{r!F5_C z5y1aTa2<4NL~TNIMsB#ZyUH|6N(!P1fwZoHELOBJ_AK@E>>y8PV!|Um{?XL9&5SQf zSy3*%K0WkPpPm}E#^P9YWgbjVx$d}H0bJ?a*?AIcVUF7(O>x!u`JS)mqvt(gS?Vwh zrr#H)EOVK_H)7$X!<*D3y5X+b=>9`gZRyLi~j zHdknQG^nlnQ;{pCbmx?KMEH@IB0^0t7>8>HJ6P!f|JPy+Auat^??%Xlv! z-(O6IPbx>|kLO*p@}Z-h(T2<4Il%UaAyS_PeAzVc;x+j7OF=FD;(OS-)8G8U<(gJ- zsLQps*Fapm1A#hy)-)qF^s&ZuZYKbpH}%3WOr6nrlm8{x(|Teo1id+ECaje$dxJ1+ zy?`EMl=*_X0r_X`WefERW{mU_f9CYy7Gw{T_0u0H;_WVEixsawxd-~9P}}S1D^1b1 zsXxAgm4PJH@=_UEC&RKMeLC`iTUjoEXk01->iKdR|A{jLneht7apiH5=(0p8RR?vacG|4!A+?Qg zm^J*-4ry(K(`>e?H`SXtIeYopfSI4$)}{3P?))%~o(wc9iMZ{Q`qoxAwVOGaZ<>3T zFvG&CxijokdNOx8k^=ZxihB>Rr);og7zg=kj=@mT-c@Ir!(}MMpT_$+88bq^N<27R zuM(=gtIc}41IN%~WVV^1+bAl(>E6;<1{64{{G~ym&9Yx{`c}Y?)SVEI6fh~N4mFIz zdI1w^G^c`@Np0vO1x&;v)hXx+*~dR6!OLBpf-dFcp>uT#u{?sAMySlu zVg(O;Yhsq3{>-~Gxfag*5xC|He%NIiu&!AUrnBkxi-OacaLn@TG=-zGV4)1znhdY{ z*F{_|pQca(GL~EMz)aJI|SC zR@O8Q7g+2vQB$Tj8r*c5sCiTWc6abV%J|ZpTGE|-O!W8&eq8^$$@sedirxdkJs8hD z=%Ig{$HpJ0v58#cn#SW=tk(tmx12xYn835?|lOwgG=iD_9g<Szs z5%c8Hhy{-}muv67hvm>V_NyDaW5&dan5RegUOlx0eSHa@==Ik@&KB5ex?C%2!zF+6 zyPql5;;}n!#ym&FaL!JfdbF@X^cbV`XyJ#m)c(EQHp%!98x`}oT{geO$Ugn*5Qcf6 zKE_z)7KUD8JlvJ#8(=!heD?GhyOGJ z{qJ^eeSGBkU*L$E%aX8kz#wmb2TM-~E?@D~65`5i%tYSPow3NiAn--)APjfUP+79~ zM~zkAGt22V8zfsN<$4fmL{12pPRhqhiuq<3@WJ+(UceI-@V6s;2ex&NvPuHriV&0P=jMT=ixpr2m~)q|Xxf~$e@s=G=g z*9dhC=Nh3@zmn1@^!lKBeMu^AIb4>6HOju~S4Tc_)$SOTtCdlIX=T)3TA>1*GtOF~ z;>;200danzind+LYZPG&jt@%+SJZ7<9&>s~YJ6NscQss<4TMN z8WIA7Sm%f^N5w|OhSKv9Q4xx^-WeVlVMbd~b`h4~pB$&C3)C9s*cg0L(C1?#Vfl}Z zp*p$=5wQ``_@=tn92p&no+(il%xrLMD7vO?FvmpTS`;M`L`Gr|Fan1MrG>@|(2Zze zkBu=~^)^LPa8hWPqAdi_V|Y<$C^9N43g=PL5iu09?7a9oRC=wT<6m^X=+#C}Y z7ZoRBMM88;yrOQvNUUlXM?+^rt&7&h+0fC@V!e6z@J(B~5X*fEfn1+*DLngzs`8(iLlbd_rw+usSs!3e_@~dCGv==l}Ev=-W|C=s(sV{u>&gIWk zGSePyq!txNj{<3n)K|M}Z%$Rz-X5v`S)-=IcAuOiQbkf<K#JY2z09FO5tLO$-u2 zA~Ym2MDZUoZq(2zp%G!B0Na4%;1n@kWGzfhQ?%Y5y~BG?8aniY_l5StPai1O)VPRQ zQ$UwwB?h1aiIibL52Mn;6cI5YHJl146y^d7;h{01gf&UgadA2265_&>q6pq&62cQ? zafENQ587&t%zzA9p=euMwedG=Y{^luaJuZ86mzm$ns4GfV8&s@4>uyLn~oWwB1I7U#sW2wL75-|ZGZ zDZkY@uGO_Un|D`D&hwh7yQ9BFZSc#vYj*1g-P+W!X>Y32)mD~2GT-ZAxB3h1C9See z`$XNKcCySAo5a%I%91{!qk!|QyTwbhjd~mEn4;BGmwjoulG3}0eUrMhyQN7`?;5tx z)D*R*MXf95H_gxrE1Se{HS~TSbPTX0oToG#yWcA&%+^hs$#GsaZSoipQC;-Lzv^N@ ztb)h1H0_9*_P9ITbB~p=*D%0!;+j~ANzhE{D)orA>MwWj0Si80+2qj|&Gf*(>Y^_- zV?i^P?jCFK@J9T*Cf3lyBRx8ah&cZYMVq7ERYTP7=GmER#bTjM-(=|*(E)U3fM_NL zp#hJnVy2iEhV_e1j!>KyZI4h7)95ytpRvOOJ$^r>_SNQ^<3Si=L%oA1iorsmE?p2C zuyhA#dEFDFjq&gj0U}^5Z4*6T3vtXh2h0l)URZ#!^o`vX;T07%Dq>tjB!EU4+ugD< z_A9YUtQFg6Xq(1*c#Fx=-Z3L%K|NOAK)bMnNruv82sX!+62Dyb9I$*N7QqV};_#Yf?9_i5g<=|^6kqMc~Eu@b~~_Op2Iob1bx2wZ_3{ zeNUq34?E3Oq6ptUyiH7{FECR)*C%K(J9@1O5i|(S>~iqdEI7+=tr?rkWf#WGF(et>BBMrsG(5|6UBG z=(On^HP`KPxDyr(L_gkKxD1ZsbWfXhnhKl+^ub5{DOI5T1j_$|3F(gxFrgL?dmH^* z3X4u5@BO6E@E~5K+=d57JmaI{$y!CfoJTyRDx;^c=vMncAdYjPo_*&PDBa*U3|kg0 zVI(a=rzj34A-}d>T8~!*+7(Auyadm@ddFg)l)aP%+IU3ZIDw-IQG~sby2Yg z54Sx7SIV~WP+Q+jz^rXR?@WbbnvreE?1T?-$osI?{Fxud;g2X#rce9w)EH+_^A53G zL~NU0<&}e$uhhVWBUHuiNBVh+^;P%TL7Ix+>5=a!C|k3O-D(I_FQpomxq|C3=65GP zW-`@;x8@C^+#jt2>suF=)KG+Ej!mOv50g$2Ud zAQ=iZl7P@{O=N?qvB?BK5+{vK{&b*y6HUFcvNQH7>L-}r8oJq-9DTfdE_-s%ldu$M zgsj4ay?Um!V!)tb6H;$|pnGpRNmZQzwxo0B^Q`>kaj-|ggCb-CtL zyoA-L^7Pe+(dk33JZI1{WuH3pvM}o#Y?8y@*uycuoJBT|dqx{UIMQBnpW-(3iM+}V zZk$HR9Y`J}12UXTQs_9{rM**~VorHDzJVtogq!dU)WiPuMdPUb-`VS_AJ2Jq3YC=% zYm2W{UxM#f;mfRW?-RiH*I#0w7I?#I6gv;bWVf)ZQ!EQ(aXfG#Ta?mitMNmIFfOg_ z*WDSw*L5;N8g{cT$D2(5T5AoY)Y6fE!j6zl)nDFExs z743$>QWg|8ig%&ADUuX=7%l?o#$k7Xl6P5Y?Tdeb&6!3BRI?$p-F&dJchV;@?hZM`hN%$9r@+iG8 z{e1NP(m`}WeI1t4`?o<0FIxu@C$_7_V!x&Q{DKQdkz>01Wzg+{8jtyfzOZ0O=~b)#s({v9S$Y}>r8%K)@@o3Zy9 zPs3yxY$400J}fHabTIHbI#~ViNp!H#;<|s|LAfXU6~pZNxQ?o299d5Qfdsky9O1xQ zp5Lm6yM+J;rq(31tQkwTNT!)m0Mo6kHmyX2Rw~x)!^DY&2B5Q&o3b+pkYP$jc|}_; zfDJRkMTxqXb}oLNb^gtN2PPq)5gJn9X}+iq4P>em#zV8KFU6`aN0>ACJGvcOWMFhf zx75c9Sx2JN&AtJ&+y2mn+M1A{dCOq3j>GRMD8M#9+KguDC*0Oxw+;sWvZ0j za-mW&3cw>!r@1V3`XtcFUI|~jTa@Y^arD}i;;&&6Hm`aONOPqD36u}*zC_;J8U}|d zVxV=dGu#bxa~ZDI!-pG0?k-7kr#OpfYkyLA{qt4Njrekn^>U^@im}7spPZgtdYpCQ9L)h?_@l>4+kc3|PvqPdw;0T8{3M(vqk0NUeeqHNd>o4K%*4{fc1qw%jmj$Z zby%kJs%9Eg1BbdxrR5a@bOQr*$P; zEM+s+B>~+Btjg5ToQK4J|3r~45|c!Rq2f3gtN)O~6(qr3#D(wdYXUH;?1#A<4(F5Y zc#xu1P>)KlvcW>K;&Q6dD{6Q3bu-s)Sc%2S%AT_nNbqud^12sJgUq&!stg~xNRC8X zphyXeCt2X8=TA5u>D(1u@@9wqB;h}1-fe18umV%5;^TlHh2X_)7Y1cSy9FRAKHwe! zQ%>UXv#bJ(lDa6vG2(_O^9Zuh40W0+qs|NvCQmfQB`^p#Z;kcexE52Ffyph^e^TzR z+qF_)+UNW?V}!1Xr2$$uw}OuKg!l4V;bw~FaDLIqv6147U9X|7uHYT_PmDoZ^C6X; ztK1&~Sy?o2>9+@H^yR#my<3o5FBj_bIH3|cM%RNbQ?>bTV0ilgG=IG9us@0v#hgM< zuNt720n>5!gj-4b^*{kUS{tkS%Nr`@CHVrne&L;H;gWlk<7;VTj+{{+$3|alB7gAQ zA_QYaHqn)n#|XxXkI1c71J)Ebu<_jR)>r_xK4QXDF<-` zut*$8;kr6p=ZXWx6zK$09Hkw%w6e~%=1?zLG5jIa4`sBcyuZ^rN4!F@BX@SK$EZ`k zqb!&@L@lpwx`q*d8Jh&4yt@ue&Sd;xM^O7+Ans zG0RVkq1Z2%Bs!A!P&Hu9L_JrYk{H)0oZUQjnav0sz))Y(7mf}TUyEaUope)U5)a|b{X##s!Q*sg6|+B5 zTs!%3bj29W#D86`6?9laGYb`4v#`q1QK~w-`L*48l^71Qpc=idZS*B5O5%5W4yUuaboMFHtPbSYeVeY0;s_U)YjW1BP|c5E*(W<;BH3O8j?|T1 zpb8$!gaGnQ2t=PX-nRhPJ`f8RUOa+VQu1w}o;h2%Og-|wjSr7@?iVudk`e25`U;aj z&R}?DSaX-j>(?_bQ?r#=;6V?{zzA`!k;_!?6*HSI<}>A=x|)dN@VEQpwSCiFuEi&T zW$_i)^FD|G!>Vuu-#)eh%hIt1elGd(5$?Vhs!z2#rwQ}DiSdQoA7_yXm7Lx8Kj-Q% z#_naV{=*=QzFOuRBnZb3&Ee|LBAM@2Bh+_E4{nkxu{+VI{m2z8j+J%EYaVX#d#Ferblo~VcCcyV@ZR9K2AzD^C`{f=_4@W+^hi{ z%$q{hvW9LmX4K7$3Uhk++YjbrkRK=bgShOwiqVWZfsVcXl5&z}x=1&gf_is0Vy0hM z7S1XM6LPjla(H<>n=kC0g{+>G*N}hQn>EL<%_fdEDtyJURu2hFkCoiOhyaUAm>auZ zaK&sKtB`qz6Mc%io69*XKn-J=#Sr1mb2NsBG(@pR21l_jB8;%V+iof7PsxgP!beJd z&i5hjDht%c6kwi5Dy1^;k1O6Nxupf0a|4l$PcD%?YGPp=hWrNR@LoZ1oYd0LtD720 zZ+aBYJ-MRc59eL`ojhKdTjLXY})3u0(aH((@ALi>7%}j4G@1=`W07_W} zyGOyJWH+q_Gisjq!TZ!NNi}m_Uwsq3{Cdw~Fv#mc1BgK?wDHZxTla`T=IbZ^vc0P+ z#~&u;7W8~Bk0*`pb#il5fM95VzcjzSsZq$uxvoTTR=`4V?hRPWnuXlMnb#DYeS6To z(H8GApkreJDtSThlrT3YBPPi(>lgNvd&NGYRpO%;yVk&QRr}5u&&ALDSu*JK5iV^C z`HVECDud|K4JpAueNGO`1dP|5;YI9k^bPdl4G6u~Kc<179{5yI6>YxOUmIsA={ia| zjdBn2w9_H&`!uLQ?ogIsKj`^#984A3eTHjvkj0_g zJ4zYbUMa>P>F_)E$g|TpdH)Z#4(8g~;%3g4c8@3tFOrh*((y*=Do0v3|ME=xOT_&)}JgR$Sd_{{E2U#P#R~`*4Jy6%?kS(dAk;y0bh!N5Rm7k%jneDg&=c(kng70pV3bfWOQ(k)(J|C@|RRQ z-u101)edTSj|fW{SRn4V_#P;*7)%p5wU5k^(m?V+e>p2BhzsC$5UQ3+#iH{3 z0TKDn@mn$Y_h$)rc|llY6OyD3LM6LRWowY+P$PTUf@KR_rrK2Gs&IhmdstFy3g>#K z8a~ndmvUv0Hf@eJAULI$QPID=Kf|+;x5FST@r1^hnWgEXH;?aXjI8t$+zofH^&PV3Mf+?)9I zFKb{X&eFX-^ypV~$T>St@Igf(iBQb^5%}NuIwe$8|I}sb{bEURQ0#%C7+~75YsW6k zLu0Zwnwm2J_Fl6Fuij`4LfaY!=b1&;>RkE~8>ry03G5^F*QK7GLpsP1Ou*(ipYg#| z-{@OwYaGwrUWV&&f;d{u=kUGg}D<4TuPR&rgNbzIYCGtq#0 z{Vze7%P0kxK%J=={@%fMYvvR&*5)e$gl{xl>d_I?m0AwX96m2BZmjSU!Qs9W6lXc- zHM9RDfA6MIim$gA8JrlHW?w9p#%75XaD6WqO5#khDAQX6+k@f5_excMQ_HJ!#2l@v zc~bcBs3}63I9ZJJOASl4tJPxiV6!435%R0gz!!m3xv_X3eIny(!c3qy3O&u zWv+-5$+MIz>IiefR1uFhGAD^JJQ5Y@Kl)Sc<<2d&_W^$;jXoSymmU!2T{DA**o9BX z=%@%KD$qP-YD9`{hKNpx&x8kLoH=f)h^3Y$if}PWM23V-n%H=RPh+8cD!x^d%u{1h zMG6L5%A)33Kdz=-c!zu8i<4&H`?ExJN(?BvrP>@IZcWf4kE!rOHQEAjF@LZL6uo4I zVx1ZY|H4=?CUUG$8b^H)Z5|^=$BYq5(8Pz=sI``&{mkE-9k&dVOEE8Tu_=ksGtfP1 zL_9+yPhDu5^x0ybm>)AwC`Y4ziZag^3nJ$UG6uva#wEmL&_wu((PDy_6g?qY`9WQw z{tR3BjDN35wW{OPV+N>L(*hIR)6_7kzCJ>n2LMgHGejmvxINN6yh&01k>0{jC=)Dh zgpj>B5q*k!F(189QV5$Si^=v0mJl&C+7I8a=-6kDn;soKGiF-!R548`vn*K0==ivV zxY%?^l-A_nFVfFD(R4+#&8oQ$c(63w!y)ks5|DP~2^kVIy(m}2iC zBIANH6s?td$Gm@&+FC8KEOSoUtkf@JGNbX4g^D%PM|j(`=9b|iEMkh6;(e z=2Y)E0Oo8F9Tz`SQD1eOFvo*n%}tmdI}b~*WKO3Zs~>0u&uLAxJz702Q|qoZQ(tVT zHdJ@3@2JUYUz=658l*LARjaX<_f4-3VyNhmIAB$;^F$J{u3Fxn+%n%D__=}NtIpg1|3F=3} ztbU>vQ}e3@?N;IMS7l(g38QTbD{LHU_nMrnl2LUSt2_IcFgP1H=@khB0Cc2X)`3v=xZ5=g&r5HsO24Bnd35| zqh~}bYb{r{guP=IV#3segRICZ%X+E~WfTTghiek+m9;3W7 zqLS^4qvi+4p(7o&_HU@3=9HMMxamSk%@hmMgW~<{TFr>&(dO}DT+Dcoi%IC;R4hU| zrXoEmJu*5f!Cz5r+FC76i#B^to-pC#~14Dc~zobs9Wu{lhK zkjc}d5&+L}vGM5})Z#yGRc+{M8R6VWv1-AA0b-Kkn<8e~91)iJ;Khk^lq0IQIX0E~ z@-)BLKoJ6=D$K99R=oS`S_e#PW#QQ9_{E%*oR~_H*pa?%wK((0A>D^}6KzD;4xrAq zrE1ZPRau9(%v&RrU30q!*sW6o;sb2qB1%L?Db|3|5g}r-(*EmVU)t_$Rm;xA0H%l_ zn?Jr4?l)A+=NafDs7e@^{G60|Df1NT-4FI@rL_L#wYpld@;|jyOR4?us&&<3K()bR zv_c~~4Q%zPS5MJLbeb-Xie>ZFLW{Sr_-^;?4Pvd>K3Oy(n`sGY>Ij@jW+}ESUm?5b zsQ^=7NTZbSL`RqFXS(`FfN2QpaJ$uloDQ^$1Cqcj6H`Mb+eM@1qdWR4)-H{@gp7pj zG9gLKR;H^A`z`7HmF>1T{li7I1a*K_wDX4FMvw3*qI(ldQW|2O zvE!lL9qbCz#_J1UZ9MKVXnyX^2H8qq)ve8yW!>Douotz_U_LAK zI`p)5??N~qBgO=e4fPHjJH?Mmx-5*?7?>TB9W9X587@7O6|q^-ozl&;e|&S*Eiefr46Nikj`d)AWdIg8V0B+kIP zr-Y@4B`cGb`Yafi?Ugn53wY_4EuK3+Q}InVH|_U9Q_(AW#N0mfhs_!@eO&sOWbY(z zOdJd`H(^WNw4yqc=UX^C@aa(~ex>7;x3#=x>ntzx;zg_GZ4%4GmMLq{`LN7hlgyD( zfe~SVOaF}E)R5$`6p^Ats2*nVRm{%Voue}QF7!+3J-Ek+?!%Q#|5ejhPB6#zjOitM zigpq0LfR{b-!*SrwSDzhOEEEDMedB)Ibz1>%u%yIF{)0Rw33XGwo8;TSftH(m@2=z zhn4x}B+eRo#7-2Q#6a=Bs2$ckVo>0~(WA$X9W-{x1SP}UeB_Jc`}TY@<5I#EaTyK! zY}4NSQmdnABP?I4b+)T-!nd(|RdtEun?qYo)cppZl%Uvcf!Vede~AUn*Ah zTMLMErIqSic5$WIS5@%NFEe&;5hoP&HLdz$t&mMyVzJ_#YU+OVdu_k^Dw=s!Tcv%k zuJWMkCDjogD*c& zki28v#uYQZ5xd1V-rsaz-DyL!+ZKg$I?}k$9l0bYU!v&M}9R>{aI@u zw5nP^v$eifKwIv76S73*w>H^M z>x*ki+zifKJL@*4wZ^sgzTK{_GP_@OKbCWeOlq%}H>o3BCNU;J^>CSHj|^a-aJgz9 zYwW1!%F`|@fI$QO(;91sU8WE7Z`UCN?@qe09nyL@Y5g?(Cad);Qd1_#N>@R^8=Ft`MLV za6O0_(U=z>X0|UI0|L-O$@T%aaiePEa4hG@Dkin4E6>QF?FFf5mD`e(+fP_z%@i(|LWS+9#vNqMo|;X4LyLg$@v>G& z>!S5lD`{2KU^r}GhERLjtZEyr>@n?q?Wp#SHbd*IHCIbD07U{ELGq5VzgSWm%X=$|9HWeSrcY^iQ%HPcC@GVnRs1PJ+|sn z;s z00jIo@0)qb;^PfbsofoXeN z1x-^2*u}YFKeyT+9v2o%#a?{}Lnj&^KW?hu#vW^1i;<$0=7oQ)q7@%8IetofNX(=p z5>CQ{MNqVN_NQtS%*&Dm3zlS$UNCgn=+VQ5E*OnvTk_?U!FDlB>(@iG1#QVv-@LO8 z&+T!vo2L3KZLzkOy}#%^uE+46Bf1UjGCU?7n(QL6J$O&R-hjP+`vbpI7H=_+SnRVZ z{Ogg!M-GEvGjz^`%&{xAZZqLAYc3{4`bGr%_)qc~H(nVL*d?qfl<`r?L&mB_hHtf7 zhmILN)IMzf=p|VD1(-v0j4#pR+pG(gr_6(}GH1f#UYLZ!LM`>|v&BZh-z4xQsQeOydHe9z?flN!#|YR=K>BzD!Rd{_}=_eIhDn-%IyNejlL zhI@C_hOaNLzCi_dXU8uJoHgh`y&e59l^=g9K3F(&Mj|Oya|5RNYqkM{yNNdyF*0FL zQorQBsXf!W`5vUp2Oit-h{ig#R4+|-P3*V)APV^#Cm8-8E-Zw^`+xH5Dhl<+O; zd%F)0PYau#kvbPNy|h|+gId=vZhPP8s^$wz4UP*54h;nHUxuDqsZ|54G4YZc4I`GOy3{ z*Ti6@saC76mao>RU3+a}b=unWg$ZfnQ-gfH2Ksdtot0YaYCwg1Lw);8wUtd|M$HJH zxhY}!>;)^g3}5C0<3hZMi;j&^cqmIo&mT5)G*Es44Q0u}o&iI(M#Ho`_WqV-bJZ$W zmlIQLr4Bx#7F_f3H@)mV#fP0+b{RHy*w|5%Mo;t#@E6_0gw@_Ff-}5BgMEX2BgbYA zQ)UcZsO1$Ml>S=X9<^%q-uQz}WXG?~T%SC9cv8qH?^b~wM0e%&ADf*~E2#CisQqms zEh;4{ZBgWcC}^fR{bEu?{bDR^MOb+DF<3YrSlE5-Ct?H$lb1IB30OEOyPX>g(K-`4 z`%s2|d@y?nt?6h&i3N-j^Rdi2Ss7*@YFx@@3W@15o?^tA4~(X^7L3Wx_2L+MaenTn zsAqG)iF_^}0@@+Wv(`eVmI%ZBg8GdYDe9iHIER5im?^G}OIl*J#nGA35}# z7uTSaz;d0!XX|YZ8zwu3?%&wDUwvtF*p(5Z2MobEG9;S!!C`t;#n> zXXl!{T=XOtFOdVzJuP~7BGd3MWzv;?-`0l`KOu196fd7ilO}ri8qjILyP}HF@~L*A zHc$ktB|76+;$|G5NXAiHC@mk$I7Vv4YDmU0{7O1s;7u&>~Vd;aFMDI9n zK!|U=Uvj9jc0%C(h|Gt12`wl3ot_#L7#I-bJ0&1F#h#LyJk91N<2ggg4Jsj&SHCzeVxVGOaJscHR}r-{o2(o#v+?SlqJ`+ue_VYf z#WFW#S@MFYg<@&Y+DY>QW(H3WNs35_NQm?b={u$E_%`EP`%~gsnQ;eB%kRZxM?chb z*r(I9i-0Yy_*ZS!65?C2Dt+@j7|MSzf4O*P@(z(HW=AfHOcT?hGVw2kD|u$`^aV#6 zs`ZCJ5u^}Hx=kBJeB;;^ug1AqQukrKMs^$cIapFOv!o!fq`*k_P&3726}SLg$6f z^Pd|yH*9K<2o4Sn3GoZ_4ICNLFJ;oS;i;1op*tq|#RiK2WyA-Qw8GlUm|dGOk?71$ z?#$vDzpq^3cf#L3MvQMZV^E5B+&B@;N&BLQ7?IvDGii3pyu_vPGe?GoOj4{vYBcg{ z6ESUW(%h8!NwbHAg?K4e?+zVCf<|IeMjaHV|FTxA#rdSQ;3?_;*`YJVF0pvQ^3}?o zzN@_!ibvomAjn@|?6%ZEZ=tG@LBm3*3<~yz1OqhUP z_=QD=!59@F0uw?2ML@d0(xT(z)8muU=8VgnJX{Hw5Hx;tgwouSdt%zFB_foi08{gF zv3SPZ6)6GfVd)|`Xo`2B@5C|l#>~r_J|}ZlLgK>7yF%Co^R$)xin%$gB$;iY0&Swu z)z{!8dgDVq|{1Uk;ZQztLstkQYjdiHZWWd6N{U|=|21y+Y;716AL8*2?HoR2xlR*ne@GK4@(9Hb2a#!&VuQZu74=jXVgFri0>1R#(p;T)iGKz zq0JXs>AONr7izn+>Z|G~wV;wcedHW-*Hv1+q}HDg8{Ib{I5v92rX{euY84>Ci5G;h|HCa0dC#SYV(bCn{Rn_%2pq=kzZ(m>U$-e2C)6>(ZLq!>z>Xq)T z_>409Pn(Fl_448?RThzkpj5R;*ubnc=?k9Z0Cx@<>mz^daZh6m+Rot0GFx2kK3Vxb_huF$?V&8gc6=$o}QLMVe}iSuNq1PSt0`? z7tffNmWelmR{Adum=T^Fkrq=G4 z{a2-{xK4lV)};#;EL}Q!!H^-NM-LgYVDwVEb=K63nRdso9y9$iCfJ<6Stj`UOtd?H z^_ZCMGs|Xm9&qk=9PqFv#K$Mv)wewo!{S42T5U^6SXhW%d)p%go>h2dPwZw?O=A#q`fnqM=U6T%Zjd>k0l%<9@mwN+PjaaV0IL>Aa()U3@~ z*5+<%RyQq6%c8&djmy)j;>nNIk?KdNAH+Ca6U+GM#ldYL*}#VhZt z1Jr>H&|G`97XGzY+iUo%wa33&_}AX9;RY_Xw^>(+F=Gb6_Oeop9!-B&;O{{BoBpnn z*H_}X{`fm1J$=Ru-)WO3O_?&uK53dS_|}Z{X}FY*OTKhz3SF9pr=~po)HFOb1yA|X zQ|VLOFS?(alKZL0wB<`rrRTKezC=%{WwbKtaG{pLztV7+sKd3=e66%L9IRa{jsMCB zZ8%*6+wMPRfmms_iUFgIzw-smb7CNVui(G)_3LB!w_Z}|0hd&=IUjHt7Q6F-EUV-^ zFouBHd0;gCSt2Hn8H$-&BD_b_-)#IHrvDuye~%f)_q~SFZ(}gtauzakhAc1nX68(c zx11Qdgyy{Go2}FFcQXEFqFMT#iO+d2pua=;?`(X=Yl+#KmKK+u?jPrGcd7?vou^n| z;Kab%ROX3l;82;T2t~z(^sv-ey~@);vo&5M#l|MYB}OJi#w)eef#%5gkoXY2)Ki#J zTf>F0NNDo0p-B<(a4I`h3srtfkE2>os)sc`Hh~H}Q5l{XeD0jtH$EUjukZAcQx#@^ z|8QU5wD2^$L;XnBcZx`lSFADdF-hTx5g_tmLixy{TBe4l`uc`bg(vkRk1!D&5fK_5 z5)&K~rkq13V#BD$Q=&+WkHO2lWa?r-L;}xzS>%;3I36OQ=rjL zm^vjbQY|$>%~yMqRx~y!IW$EmdJDxptZ6Y*r$IxUGdO|U@cJExYK1yWNZTx=Ub_SOUTEf5xd`vc}> zQ;?U-b?f&S7@B>l%#h$|Ra~xLn~V|OLWcV1ROzOKI4v3O za38qC=mKZha|Y%X@>q5Dka6}LDEulN@_2euq_VynMNM}N(ASJ8$!#7of&bU6?5XpO zQh1cd6faMyAm>)NF7}a`yu^Euu)fE^RKhg{XE>N%+L`Wh?cb>0^I1sDe8N0(<(_LINU<@$4UIg)IDzpBVoB7JT+tpjuO zIk_$hczX8W_Q$U$^L3Ny$6cm(`_YDG^&;Sp*fR;*6^EH8x=h79JEhAa)~~i|43T;! ze2v}P^ui+j*3xC_HMkFi+DR9bH#`Iv$e2jsfLZ-G40f1av^$hT1IeDgCj&S3^v{IQ zxox=1^mgN9%A0NLc?4gGgtXc>>ou3Dc8MYQddJ?^#7^F?PTz4;-zl$rR<=Gf?Rk>g zzjz@jB*iKpjs?htQ4sy{}_M193aE>}#22k^*dU39r- zoXYDmy|CvHu(p}SDB@k&(=#x8qGDai={qxq3!@f3Z6>X!K5=P_AF{H?NWV2_G4t&^ zo}O@SX`bp>v{$KUX9}Dx0C@UiF~OP&Mi#4jdu$eK{g;nZtgA=O90)zOmn_4=(W8eX zpbY@UIFgkez)3@B@*|7O^;5_5n2se-Hy->x6YamyhvMhs77lf}zU*AjZn5WM$1Zyr)AEBku_wqY|eFpqr(xLj-U7IC@a@82X4 zXv28XBrALL4$mE)3tX-*cslg_r9(2te3*pet8x}bjFZ#EIQTPxh8~aph2eE~tBD>YqY z3N>}=wnB$ibWPsKxrRp+{RUoh=mjY?<040s=V9s}6rWXaj{#3PP-GS>LFf zn`Gvky+qXYJAz8yDryzcOEE+Zzu#1d&zBOTc~)W}o`+c6>uC8xUDSnG%?(e_cO<^; z;^NDk0R0Q+CgtoiFptOj$rErcP1bF)xFbmN&<-iuT1x_NWzQKft0kY|I2XIj4O*n< z1rbgP-VQ^o);ptDW<5mY>zP^yFwrxWXvZhLbu_R@){J^u>n>A&zDxC7X+!%Xax42! zJ&n9F=85gOws~JX`g?y6{H*NvU8ZIXWMKo|J-StfGFn^y!7c$5O9t%9Ue%mLHWH4om|r8&(Jfs5-n zy|tdsa2U+LKjO`}L2fwP!&6VavdaXlO74qjgVOyfcI}D}c7=tl+K4%NXU<-WtUn&08Ivvq7}ZEG=@z?xpiot6+oDy^Ffmrw(UX+sEij`Ls$yG(g& zP-d;ZTNUSq5GI-m)}SgC4lwcz9b4&2qQ2FZOm-~6gqWHjOjnkEVbL0dYYpR`5B;^F z&iv}o=le{`v6n4T$oo1{U+sBB^vwDYO;|) ziN!QMvS zjMJPGg($_Bn=IGssEZ3mwGZ0J+G)|Ug}TA~-v;gf0n7=tCX9Re)KOZznMd!Rv&oOp zcYTlpr!s!}%s_x71w~!zJZ(;rD`7QMFPXKkA30V=;i@$+Q0awLj!VLsWq$IYF3Blj zIZ-G>F{nCmYTf@T)zLarH4R$`4YzbTbYxUh^z0jm;#cCoP_*gJEn0?SGgUn(u?8S_ z7@Dp+2#S^EH7chObPdu$=jT#xyd`ttI4SX4Lq+AnL#(3KGWOKq z4ZHJ zEl)Q*q~f6C(-HYWV3wgLyS}FqeL|Mx=lYY!q<+mKsjG{n^ti)lU(Y?|>_QH>%CF;| zAsq;3C1-s{ggN)V(zj)QeK7N%e@?sJRMcml(E5S+o?NHRo&`nJk|v zsD~w&=m>@0yaZyXrPn9W0A{TrQDp>Aa4%Xcic2=NcS~|C<8kfA*RrzD;h~{CWkaby zyiLOAG}OgXcyPIv(KXsr(lyH{FzQOgD{!CUlBefTex#-Tiff~%o^t#)ZYI;JRp9T` z=I?%__k&UzFY8q!spf>9m^ddZdo0QRSzTC9^+bc~v$E0ne8%*7Jag+k-6jQS^Ice+ z9SgkqT{_)ZQkU;L8Rb($!5}!v26be54~) z`*^|S%IG>1U-UgtM6n(eMzsZcgDYfUS$Ffxiz)G+7ONT0I3{)^eY;b81_IBuF4qoE z&si+23FEjUD{BG+Lmyc?kvS4?jJAv6eG|^hE9C2Dpb6kf8ytR;77-YrUH7ip*x&U z8H%a5Q?eq;3XG{BLNnXrSypPtqr9hp2-H2QDFAjIP_BQWjv(9HD z&u&&*FA@6bWjr~H9bcQtsw$Ao4Hp%T=)_YNx-@k#0UaGT8@f!N_ya}HtS(6OqU&bm zEnteLC)AelkVCZUYJdfAmpy<7^Yp2TwGV^6v&@X2akhAhV%;Lf!={iR#%tkQNc1uv zLpNKN2lXuQ?hJJO=yd3VS79uwpyb11zUIQqKgNO@+$wKq} z(-0;m`mwp>?8_w|@$}H&lx#geZ#q>#@?gDOT9Qap9FfG)Um1D`O}_g&zOd&ds@4o+ zaNh4qCrF{2C0&!mYCPUlX@TPhzx{;9l1gC~ik`-L4!;C~cl#C{th_WLsx$JNT}vh_Qgfe&>*Oaa)v_BJTr;r*mA zuUH9&aHVZYNQdVaV#u#_u?zJCoN)ZHVcs?J~mW4tDkCP%(*vtgvJsfxC?@( zB9e||7Qneb*5Eod+1x!dPg(Qjq!<-H5>}) zVuH@M6)jQSroN|kHtRy<4l=)c9@WL7Q-?$RagSo{bvf=1p#c}7( z8rex9Ng;7;YZH3OfzWWho|?Z|n#hjRjXgBHYxHxKE*mYC zpQ_=8=h_U(`teN(&l_{(qH`~mplXsZJN$a(3YOUCHc^zA#*hp`r6uT|LA3SaW`(p# zT1hpUcCEu$BIETD>l;>Qvf{Gb_Jv13{zPy79Bn{N#dHVAi9ao8geP8ye%5UtNKHku zh@3MIx~tNhStJZ7YHRI=S=LeDIxClrZKud5Fie&OW)gpzE&>Dx2w#u|TA4szl?=w+ zq-laz9|I`20Q~*pEhoCur4dL;q5RSbz&6P1l9NCrxC)-z;0q{aCyIj=G-%?0speyz z;diOK)w8nUWb8lV^AxCb*Xug4p7Atf_%m{OMhLPb zoHUkD-^bpVua}$F0{m<}1o-F$x7+1e$L&_vfAsww<+iB2^*9zWJdSOkEObJCY{5`q2;0*B>84Zps9=#2X7LXV^|wna?3%1> zxR%z^Jn=5F>!cLbWPskV?yJO8ihn|Anl0XvB;+jTlglD&GBHK#l$E`cEP+`p@v?+Q zQljq5d{wUR(j4?7$z+18%zsZdO5%udZb(Zk=TgNfq5er(Gqj^~U^uHW!HV{=R&aK2 zwfj%zxjd0+%-scLKE4uI3`kN9#_tk-*ReK7;Rdw&6Lm543@{P`;4Root)s+t;nfdG@Gn7fFzifqV z<2+rj$mv>2f=H`=QJC-Pkj0PHiNQqg9cT9FzzY%1Ya*KSJ_z^p%7#P@!;e)I7yi8L~!Z9tuqmJBoNI&n6f(T+C1?+7Wf7bqW z*N!^x&?||L)9VH5nl2YGgWP0OdwGa$V^()w$R5Vo)2_FCA^7bUr4a5;ktbds&P**GVyB%fEx!l3PRev|0 z_V~#x%d-_QK>F$U+VA1D%;JqrS4*`)uJhcm7cf$;tmoxQ)IgjQ$f`3VvD3e|`Z`a~z&gJR z+hn_wH-W>uVCWwfI*!YHc5hD$oexg#PgfQpbiW7uZhP}T!{OHZHbMS*yE(MvPhjR< zxB3eZf2s6CJ8L4Xe^6$;i5D&beV1!~h)47_>ly!bez2=+hiBsl|31MGj|(XhZ-Pf$ zk8qi~e?#C<6^qhyNjXgLft_W^5BY6%9QInN7U>-b!RNs4 zPnHGuKRyZ&^2(ONxDgKssod<=}h9fLB~4r!^d>vI!)0kdbk+P7~ZIa znKhNg9AnD2(h4-Q}MAVo_D#0Os=-l4lVi;+~xA_jb^XYK2{5u8TXPnHXu&d z0MOEfkT=k(&q44QuXgwuwZd*4P1`G+V$=jPnqoNBuk!Icd3|`-ffG`tW*eKQpiYKvHTBrn9m6`+*5G+T%K3tq=?0-PK%{8?b+DeI#baVb(Gn_bdV*%^(ssr)4<;tLi`i`@cWM@1*5xXgN( z!(aC02JIA2@^W24hi>$fXP_9H?uuk({S#L8?`jkOhq)-uoBk=VkKq3URLxq1o&7 z75S;0ui%kv{Zn|&lbS6}Uy+}puh^c{$3b79D^r0J-cqt?(nE?(Gp}jdsP`gKV8? z2?=So3<4CZ@gdqXC&!QRkL9TsFG3S2IvS!>nX79su+=SSCV#<$-DfLqiGk5)xGc^7 zh~$vSQbW4(h-u}SO`tB*xXWL{?>-UILdy~#;Acd48||(13XSK!+ccu-qhw~p=4vpf z1f5aQVyW!;`CZPr>Yi@)G2WJ{4zTBYAa^qYv(%&+F4yMaeW6c>mxaw_(s{7!u;+{y zr@(mfGJ`d)=wcDlj&tw2kmbP#4INLX+GF+i;K4*@>n)D_Q z#SslCT*GV^OBoK9FjP>l-k1#MW->fUo4GN%QdqwZ8Ef((d{eGP7_!P>ce3v zy*NY}E+)RYg}b_$;?yCzboyG)@8B>PqSt$L{}2}M z0Qvtf0aasbDUr_IPW*3xX!u`1G6xVnJ#(MwAjx~17OPvaSN>9Wc??itt3Zi(iZugA}&YLI#|6T5tkTkrx+f|KNE8$FXx|+7jt252sL)- zbBno?Jec_>@XKkGNkkd}Z&xy1ioNkH@}@k4xNGlfCGl}COf5wQxiEkrNR>rj&O_pE zB$_E|Yez9*1W8A(;2H5X9~5iGEbVo+MOdXR;y+QwZI9E&pPdDq`h!Yp7ar?!Z7sPM z=x{UE<;rvn&W(05=4PKnsQ(vO!NC?l#Q_k!zuejzdc(B7=-rsl85Jwh{w`m?`8(A6 zbrh_W{T*0A%UKdhBvQO2HJ_PJMUq}~YI71TkRvPmA-#{T-E!kYX*WJR6)FBBz3(A} zknwPAs=J~e9@77e{ekr7v)stx)&U=n49g8f;P(g-ig8DuruRJ+5oDP4acK?V$f0y* zGcht^JZJx-qIx)asWw2jysKcCQ^vsLTPk+5-TIwH=Yh+j*wzuLaDLXdhw`%?o3~Qn zh!OekNXVU|#djXgUnwbDp**c^MxIvZhw`-kP8v-38}@riwnF(@ohe_dmQKvsgi85U zGKOdnnz?+$(}*GBPcag>&zy8OCxXbTH4G4+o0q$Vgc{j0CxUmo%Q?$OcWseWmavSmqpIcT+3oxgbaRg#bx?`2ryI*(yX;|+l#QNC`f&^51 zaBbZ?cz1M9{EVApd&;t6jPLt%%&UwpB(dvn#z~9MIPomw^rAf5suKCu%5m1>9QS|7 zBZ`?{!)e4R5QLxMihX&WH-651fCoD)CUfH1?<&IlQTr6Iw^n=n`~m29zFIY`;p;1K z?I?UxuN-V=&$U}2M>-}kos5(w0@^FtbyV{2VaB-bON)iz3*xc+A13H+CNR+gQkU)D z8Xs&DM>|bn{0&~Bec9?{y^WF7TpkT#vjr1TquqFXuGt-%l{TQg%R#`81gt$@APoL4 zf)nscXGm0+=g*+s1N;69)1YzBc-Oi|rXilEAmu+DzV-oO9MOhSHL@inD(?BsIm=IX zpAX{ziK`{Xz2?R^Ja+yBohlcW!4yErL&dNS7lf^!!0sURFn3MuIP~W`y z<%S+(rSz>DpO9`iOm^q|Us4UZpo9)RbnV%p$K_f;&zc^ebNCEkBRATXppzxPMs|d! zg3c`l8_$RG4&S1K4mNb{>0lGOl=2RtI(;y?qsx^(m^LQx-7(Jra= z&yb7y6qpF$W%U9qL`=fkSZVyB@XONd|FiZsdR#^?^)I%Vx-rMyIOl zAycm9lFH;hW3d*~A*zU1VI?FvBr7ZX1kaA5|8bf69P!jsnM`BRoJzTyedt#u(xNa; zKhRRrUoOJtGI`dZrRvAa23!iDVr8AYWUf7Qrp=tKw64cW%vQBpSmqb4%OE8G01$b- z3ak>QdixJ4)^p+qmfUu5EW|brGnn60uvrnuOlpiOj<{CPL~twx$6tP9kX3z!VQQ{x z0JwyWZ{6@h@;w1NmX(*V79`l0e<+KqDS zuCEAw+4Q<4Hx;1ezU*due-R=?8yW1nw??)!oE_#g9OG2SDKgO?)wd!p&b8L6>T+lU zw>H2gv>XDpL&loC$r3O54`Ix&_1LqUU+A+2lVLt9l=vvrpcVw zgo#!2+jkmT1%a-fYtH5DO7jAGO6wMkew}oJ2P;z`C6DdfJr4L620VzWAM?zy9tsD0 zr=+{06$xj8ZDoS9K!aJI z^--)(sYg&hPJQ=zD?j}g}FPY-pk4r z`j*$+ZruleCMAo7%oXl-+Gm+N5gDO+pNRrmBUFIB`fvsHUnH*d^g zEjx)pTR+A>b_T~X#^H29dGGFvUJJW;{#~I@(9eL(JoX+n(O-Lc; zkx)V=$!~lG6g~awZgg-5d@%Q_76bF1oEIpx>QzNAr6SWxC4Hf+^>VU{vqB~PzNdo< z&Gyhl26u4FF9p`f^eGN6_w^)4;fFls zbv!-iE#ImLs)yh7pOt4-FPmkrp5Me-7ro0q2GY8-+xwuJRUsl|&)Z2^L@S%t1v%Zi zmr4SIoqtqsh+U{B=}Z0(kN@vX`+u-$|2gME|H`wDC&zj4r15CC320fKy-0`s)PVz8 z*#o2jg%jpk=DnVk-G-!|kaq1{uC>cSia+TAp!S(F+wOS5L!@UUWyg>vNN^d&WrJ;E z8&$R=TrwNXhUFp?dA%tzK07iaSokVVy#En%pHF!Ty6o;oDf6D=T&BxJFYhH2O?iM0}NXAo)Ixa2Z%!f(yq^$Lj(fm#W8i{m; z3%$Szjr^Sq$f$MuW8UxGC%%=pIK}&6dc_FcMVubU5@Og~q07ob{qe6WowL4f0ff)= zl?Kp_Q?z~_Z1U0#ZMu6q2%LB?=|^rElA|-;rq47oaLXt{bdlx4BUBI0OjT;=7@ixa z)No96vyFK{i`zkqYTO*2pc-3i&^p{)h>3o6GA8x63mu_vg<@uZDzo%Ss>_KVucOH! z+i~>@RNL~YjWL7okCGF8lXJ-K(kW!&P(^IXL9nU}49r&k%GPf($X_9lZ-U8KOFHn@ z->rIpo;WKQ z_k~ZBD^D`x1``U(sZFP7owO)zh&sp28!*HuQtK$eKq6HyLdg%p z%`#PnYxC^WOVweB+og=7bk4#m*J-(nRFq+D(YHv503};t7SB)kNKw*j1zt`c1HPm}U@!Lx9N;B}EPxUAhY7lzaK=5IXC%?eUEqbU zGp~~K^SA;p{~VlyyzR8E3@i-6xxrWfjOUs|d0iv)h?*EBg+V#~F<{IR&OW2!B7t$7 z1mS2Bw~FnDzw`cF5SfzmR)XAg@A1C}VcDDn<4*F6B+5P$7(ZIKsF$o+H0ZP47l0;vyl{V;A)Io-PtC0kQK>Ik=CBMK zv)-ofu=$b6E6d(YUM(^np|C-#+_S7JxWdPuna4OOTCvanvZroI6m2j)yPB0lw2Vx}tUly-YYw?e172WLJx9$QrNgtA2GnC2GTfyBtE9tVS$#Y}@|A&P!;hGS zM_S~)Lp1;~8rOLmO?`~ewRb?G&AQ&B+c>#vc3I+Sae595)0-q^lWJ8Lim$W^W?so) zxw3iy#C_I-8F5((Gm5a+O6L1BXoOM*Q(Tv?StXdXojiyCpdeLJVN zGshxnpx8JI~j`41+@C(eo#UOJ&=D=m`1WTnrFlT7pkkxt67u|8Lt3R+nb;&S3#xzW{sf!B_0oF&>f- zU6KpT7LQR9Dw+A~iIy~zEY?z)KSiqs6#e-{81?_W{tkU-FnxBaT}@N_0xmo!eFLpB z98_uB$8ca|ZTN_^g)i?=tkO|$Xg5_G^oOLLP!-tr^>js@iYtcLM;@9!k&Bw~M-5Y0J(Kl<@u|7ppEX_8*}nOG>xo zOiR~=V)O9xT6eks2&Z7``;X8Y6^H`8%mfLKm?{*TXR{JuH>3GrIr|++_;R0dlG_%n zMnlm#pp)|%>sC!j?&%Q3Ny0ee0J`dqmU z$qTw2AxjEF8|brQxa#jzh3LJIjB3w9FOr^zUflDrY*c6UA&Knf9w5!qZ@e+U@Wr+6XVDjS#~ef&HWz`Dc%FoV%t0yk+2>-@K0%xnEW>}boE?kez;!yP!08XJOmX*N0)U4{YM9Gm^F_45^fQI3!~DLG!V61* zlD*J{2nvK$aP9TD zXU9)%toEZi_W3?hD_pDf9G`eTk--AdPksG4CP^xFiVx^|4}*~6NbwMv(gk6~c;ge}4c7x*V%NhWOwk+R+MAf7MZ#>nlNMX5ikUDfx@ zvJNn()If5Xv6F{|CUbUTA%x75yRqDqeNeRWm>culG%0*T?so6Oa^EeD(`Xg#nzmV} z+sywD!>3T|swLpP?xsyOv##kcLF=xkto&>!LEHsag77U{Zx2b{bd8Q?c7U!9TZJQ9 zjdPwg=cH20GG>_0G&Wl5Dy^aHangyJ8pP@p_cDpr&+1p~)Ew>7O zjP(*$D}K~5F1weYIxRoSZ{*rHrMJgcv6y?5!o5rKkK^9zJy(SDHD>`wlsQ;Zr`wWR z>6Q*fYu1}~UeHrAOH$}QMFfQ_&YAzg&}El%?Q*itqYD+-Q@Fe}1{<6f&U(Ml_x%wL zAIFEzp9#cow+8(>G7R*q;-6INoF?buW_ zYQeP_EmooE$PCg*UD-9V4>dp3T>rf5BmwCFnR4^4r)OuKhPsyXvLxY#rm%)xm$k2s zY<%g$QL00%7H`Ty6}mXTRzL2P zm7U&}Bwy}&io5UD$ey)j?UuFRFw|q+6HI%2?34CPR?FCX&HHfWobgs3B|SY`ik3qE zrDxo-J?oJ1mVUiSvPGWW8HK5u%=9l0V+jp=eg zR<>G%MUq?>aa@jJ{G|hsHX75T zB8|{Gn$`~(&gvVxo9K&T<4s{eZx(M7dQRzLX^Smk5G>tZ2qreuYYtQJ`MNz$57eU| zbVAE!knD^8cZ@B}nMkx8EzF#?#}O<~lA6YPSk?R%9+@EGktKCqE)B=}?*|u;Kmvbn zKNhCcYgmJsv(f14N-&M;h7s=4Mfo_qd{@^(aoAsMi_5j6-dZfz-B)u@EvE@d}$YjqT0Qi6&X z_rfl+XjqJ}~NKSbORhEDD6YbHi@kgYkasR|a3H*?1rb zp$P-7-30FDUtO4lO4G3**WcQJuJs#@5!a_3_V%RgRyh2c;y1IUY99 zI^r!?Bba9Lohb{|YCFs|dG~&%Sl5UNs{j4^VuI$shGZTNZ+hJjVF}O@VAp+VG``%n z3p!kX-&IiJ1rC>~-ww($sAvQ+KD7Nwv1p)}Gjt7>YaCGQ?zfEzrdAZnEugYks!9$) z+n}%=jvWmge#nKsdi1vBF5TC}s5@ZlWvIpCJIQP+x%q4l5B+VuH4;NZWmt>bDZ{)d zms~DGG}(E}=5gGJiIY+<@9)Ihq3EM+sM8%_(abB}KG4nqB=Qm*0<#AXsvd&WR35EO*2xVjc7(voC*gaCApq z78(^Tde0>&uDzoy-YO=DFzq1tU5&{+`vIJOJ++zI$C|H^w+9aNxeRySMDW%-SEb06 z64a_m;fRivva+H$?j%y7`7}@DN$_RIN^nweQh1V}Js8*_l#fXP%h0?#&Fg9pwUIW# ztfw@_gbRj8Aq@~$nM56vn4yT?>Ko+7(7h~`JUc}(r;k*u&OqTWkyW|U!)1y(R~IJx zWkBt^W%s&Fu>-CNMSWK|>pIUFJ7DDOm#b#UiC26WQiFNnY>s%5sb=*R=I}Psw89jG zQxbIt_AMw}JM+B`2^QScb;b#qX>RIJ(B}_@qpstOIUy+)L#K`B{(vBJ=Kx4to}vpu zUEe70wj=*aB_4GFwBjJ`juYM(r;(TD)VN8GmVeZq4%pPQB+v!~1{he)2o23Bt!ZtWL zJ+9vaZcJ$hg7C>rO!!wN_@Mm7btSu#$4x~Za$!~cKjy-^YtH#?xUc}Qxm;MDh837i zI?{!8TM9LS|BCyHIV;m6OuVn6mC{~aFkG$8kuxt!YRmnipzOk&O;D;nXyD~PS^}VU z19vYKT~990GroSf;0tzoIVcEJDhLd?Y=_IZwzMP;UC^hp3+~x;bPZ%7Y+{mJ&%#`b znbEO|oHWZBP~k0|*4Rg5a>vLedR_XNp+|RoXshP2VvHEYTRV?uzTv%e z1m`VGF$6%`Q+D$_o*ym~u1KCdUq)BGM&D14HnR#tgo@qqG!e{&3XvV1`kppl=sT-@ z-M53spa5?#NvhZgR7{SHh2fY1_9fYR&YX)kh61^WY)Wum1lNKbE1p?fQu zfu&?`0ZTdiEg)!P-SK1!JrE5z`e7VE+6IBw^u|#qfpqr)pf6)ShI_D5#0&5$Zm2;* zSdvnUyo#@AAUOZ^1-j&O&{&}MWanBo8tc#}7C&ch?Bax`dKDkH%dQ5$znjo z@>f^_VkcfjN0R$N(i?vaG@|8=CsDCEgUnKBT{FVpZ+FbWO&b z6#_Ra+jT#rjSt|TDmDLYFvm5O9}8A*Napx%CdA-!vmxTVzZIT{S1!Y|-k|a?xOPi* z15O`lf%}C-zY9bcp!gWv zBfHWZ=pBP<5^d;bfeQ5Dy%qqK^`F7o(qf7IU#CAg4C4DaKmb%gtH1IsJ$n6xL69tb zSQ`H9AzLEhlv5Q4d0!!xvLj z=8rRA9zmEf`%k<6Lc^BRb}UQ!4S0lkc-qLYbQbfS0`cvQp)WJ@$Oq&db8i%t>VmX3 zkZQ!43+&gK$74cLa)A=lp8(V7@uSBZbmuQ1#B>MG%o#n$pf?YLPRE)6owkq$Kdb}> zlD#q?U?!4;^M26{aQv`5;QF)HyXZ;yEBmi$pcry0iK9|ZWtp@Xj1d>E!8UPW+9LcM z0FB|~)Mj9`WFlmX*Ri{93ahYXnqC_Rqz1)czz^ukLLujaBRHVtjDH|*J=vuSRg zJ6AfrDCxy@b?;AD#E)^durvVe)eYnVFBASmC^c22Qn_T^GrdBka@oXpYG4VhYWfvS z$FH!$o+`amhO$t^iVS5TV5orAH94|#|$KpjSA&~&8+4+eeb@>CD;)Wmk=3y=d z-t_^vc!|kN@M=@cdjlt+^=#lNm?=_QEGEFQ6t-rU1okVo!~bjDde^!E6gBe zKJ6G=j^5)^m1T(!6{QAWp$G(_C#>imQbv_qtf5qqOkElvF_9VK{~f*X{|dq7DbPSy z0S(I~B*3;cY}DUE!EyJ1E*QCToS@5)z&)>#Ev=6X2RUbyrT7?#$X=LXILBUcr!LW~ z%+w>Np9BT}k}mR$-23tL@f!$yA9noMAw?_ zOLb+94O3*6BvhZ-sj^mFDVdtj3sS(~zB*Sd%+=an@az<8)aPlmwZT1h|m4Tt2lH;EF;-^TPE+~;lke~+|1ABgckvGpxnEs~dV{|loDl9PXB^RCrFKNTulHx_RfT!0pv0LE>1 z;2pD3Fx$%%%=R)#$2OLZAK%B)zoM~U%ixfFA3ulXlYOMzf7wU4KOWafyY+u#1tKUg ztUy`MDwReS0M(rUi`@ANFF^J?^~aM9Z`~G@hVInr5<2wpWav(7OOfGi#FGtgrV1zD zqn%-f12-#v1tE4&a&D*gg^@6@pG+WSW+?4!LScyKQ_y?`3Qc^RbUXWTQYm2&Yht;D z#KG?aP5N&j)vF#>um_qc`XvT+>x=v`jPZJ^d>ULj4cjJQJwFE>YH;mk^lBVzKMlTu zZ|rRCvmB}qo|^2JsY_Vu+nUFMEUlFKs@{uq|3vqWI2Q>KE>pbpWr~-+_@2dXjrcbS za`_L|;8=VI^ee5_S|YMPwAKl7cu4Tm2=QbO2{C4gnU4@;dB9J-M9T9L=KW?&;kSQ| z!pH|<$`4J=^N;M}|E`khsJhWvmFfW3GlRMA(O|Es@+W1EQZZ>N6gd=nW$9R9Wu1 zgj9ByjgsLZ4-2cFhHNEtD5-Si3E!{k>G%vpYnbuPfaA4 zNWmOU-Uk}kdjo#I*ooepo|ThGz*YrJ^a#y6HAvj}-5nD9 zyOgB(&XeO{dT|oLY(0r!7uea-jUay42i|eHR*i-E{@@SAG04NUWpo(l{OCyp^fOly zf$c}2$(b57!jd%L%e-$cnd9{$tejZI`zdgY97pzZVAXd73ni)Djpz~4oITXNOGi9= za`Zq?BZh#k?m41AvW;GUnFdA=>m{`4sa$9Ek96WzWPFuw+@S|L$@qo}MrZT__pAvQ z&dQ!AjN0i|u1sVmB~jmeH6)a&sXs;UK#cf~tN?qyKMteeAK*6IC;uwC2^px!RmRRr z9;%F!(e=0J!t0)T+`t}1-2vDr`2}1)N|Pp7N2;w|^0eje(=Wm@K+>wm+kqKH;W{X` z1SX1ozrTnkc0$nEo+s}=g6;ofNixp@-?`$vlK=nk{U5-$ULq}1q=h8>&*3`5z0>DZ zFSY!B^Z$?n|IeZH{|Bfrr()?)S|jV4&>xER zYk^hh{Q;JK_YI)zMhp8>o;CjoN{gusDJ|!q$e1dSBJ)^(%3~FsXEx*GqqsITcSh=e zqSe|Sr`8%X_rp+3)m7L(s!hau9~FlOwd1}s# zJon}-7Q8(v7k4V2e_Lklax&d!I;^6f997SeZyZ&xKg?)Q$7O0Gv5-rqeSBev%QTq9 zkwJ_(%?Wc#OTEQ#Q0a(Vk_uSqVV`;?%-kd@JGp2$W^?C8oF3%|C3l9et{Q3Gn^k&bOfCd*Ls|ubnReTJ?s8 z4!?2*s^S5&jWg5MKb)BsAD;5GjI>jjXg@4`-!?#RWbs8!hc=*=T{> z!7w8Wt(V2B)d=8F((-ytF>x~8eDEjN+hfpVzH)=37`a9p^A%nzXMian#E5(4V8<&& zi#Y=Jq;9^mN`n*EDbWp1RHx+G3{KFoX12$*-pldsD{yv|J3rw`bIu5S0w#`MGx1>A zN*4iK6x4XCH;BovGpTOug}3mt%=Z$3c|&L&fq6sdoQ<*!3Ce-nN4>wq?DjF! zLyUsUy*)HF#Ed(I7}jLw!IX*RdO*#b&_iFX6e{k*lD8TiOd|Y-9b{8&>q8J*nJJ@>Z^6C0+Je-E2NCI+A5)d8d zxOdz!*VWFT&*vAdBf9n$ONaD0AuyFRv1?vAW2YOpiSOQXOCLFBY~jNk3=$M^TOiIX z)0zO&t8$WX_Bcu!EBT(bGEh9rBOV^eZb&SU)j&$1Oa!rG&hj#MX%Qch% ziR~3}*8FT{g|X5LDx+}Ek-YMsnid{!H(~Jx^YHJP6CO^;%E~^((d7DZ`DvjiW!*3m zvgrGNmyji&`OrA(iC6)qoJ6d8hd7S=kgQPN$xT9YC1c4F*fJrD2uUI@te{&|^@O<4 zbLC~>Lp;*)JUt^kJ>BV9on#67+6>a*P8)a5c_=k&JYVhcP)Zhy(vYZXczWtbBRz{N zNf_x_1cqG2;(PiOn+kKzb}?L&H9AQKE3d} ze(S%I*$2d3?s8=v@qAKd-}At?@kxCXft)kFds*3k59e&rN~e_0XNPrn;vr8lZ&RQ= z0_5`WH-Iiz-wo`Xh?on~>5!9%_(UkDYMj)N?s}o%5Q+`mx*jrXy@!$y{|C?wbtx-* zYcCn2@(_gYdlb6q5JR(hz!+CRP;Q=@M&KIs;9RGR1atfsP4Dc_BZQO_n#z& zKL2|B6BK^ZARmvq|Aea1LSp4M7)O1*>1xh;caUjRZ23533_`B8=kroBQ~p94MaG`M z<$7;WWNc;d*eySbze^k0EW@ig(7GgZ!?LeKN-R>U8u;gQZ&+DQK@qUjt%sili_oVY zn|_+VKP7ujr?jsJlmG@j^u+5w%kNJygpm-+MsZ$elt44M` zF1Rb{NzPd(X_+z7sP$tfnTW4HNkmV{IpyX~yPu_uW!I6c?BDc_nMsqQIBlyl z`PWD^qRlGoT)B)OnV+J%So{`w?E4Wp{e_$Sft&wY#?b>F_vUO9!yr=m6S%8>YmF7J zyc+hO<7+;`G*$z+|912z%F3HhNqXJ5e(-m+!EKiSGG@SNQgJ~536wPzUOra*Rn}ZqaX_SVCz%rhS^L_7P1j>C4^QWsn{%5a?I00X4T67Pk451k8|yk|MNP7 z0M%2Wkq7F!U0bcEZ2n|;ba;A3>J{K|^TkPE0GrBT3?Ic+ z!JM7N;5{A9pOn?CRnwJwJ%#qABc5EjIgyin6OEGStlYZ`uv-_7N@p4%jEyo@eiRGC z(N=KN-J8Zz8FsQP?d4k_|7ktuc3#M(<+iZicTgHUUepy9Lle5irdQYXlK8Ci5_B?0 z^*s3Ck1o6Rna9M0z%(1Fs1`$W)d8u1p02BK6th*fn$GLDt=E39lVZ1E9tqGQ^Z}Zz zGLF0n`db(kJu+wz4AX0x!&vmmb!V)*lqD>QbnByDq|zShza~&E8V5E>&-T zfRMF)ERHQd1UvXB)*q~UGuT1vF@e127TL!vl_fTlW7 zt&41-2MtSL;L5}0trcuDJyL@gueMOq4r zeS8x3ferA>Sz6;~$u$o9Z-${z-?o%2&xB+X8KTF?Md5m_yeLQbsaa(!;JEDEFTjqe zR5D=UAgboD>#bkG8EV6ledHn>7jJ*p7f^WNNLu*Zu;roB=>mjYpa+z3JQXcgIj)ye zL^69}6#D*_E*#UfW8DOai|hD!AS-Jv8wGxm6&eaN2Cymajt(~0x_>~GguettIebC< zJ%a68VI6Gr@~<3Sk>gup`nFj5QeLHoxHi&Ty8XZZt`S(mcay+&Y{y-u-e;;1&L5X% z#!hK`K9?!|Vx0%j2735L2QuF&vI>e!9xHgn^U2k6)*H2rp51e9_RuGWO)zbx*u*tJ zV4~@Zm8i0 zQj!z;v9B~NvU!%0yD9pPW^J)v%El+jsMbKmZhRE&BIt7z6?k8KABMfTRP;S6?^cSA zS)UI`{<|}g+-}EQrl$5+M7@oIx^M;GyO0WAUV+(NyIg0Q2OBXPD3QfnY8E({Yh$W>;v}A_eIG`(N|gZo-{sR40oDOQy!LI4p3N zh1|__j?p$~5H+vwrpJo%PN~>-+X4D>MCb)7(nPJTR+a-rQcSp4l_tc<9DuO zNn*?5;ctpTWOdNC*v-A?lkiO&UyMm)b0%%WQIP!7d>Hzw*+gc{Nrm9l&V%gVt~?P^_3G3;M^$rr-obY7GRWSGi?G{(AR*cJ7Cyy z`;BLx2tOgW;AlxPt4C5H(wu^bx~;}gNR1V!5YrQ;oxM}lcn6e2`WO5B0~8x-?1Iuj zvXv)J{d0XG*VZCW8W-`YGE|u3<(I&?9dIVQF5S#y7s0Zkd`@-^`N*`7v;^&Qm4v@P zx$4k;sYwW93jh{2OBl3_WJs34?6FW zrdJFfK4$^s_-f~c*4`|hH6mklFN^wGocbDET~Dv%SBP!0#hG`tQHQ9z%+erLokIF` zs~=gQ!24ymB=i4MZpWa$1WR_TMS_kfa@z*M>i&W<+sYp`%3sS0*;SxMIENK;$ z>R`%jMeXRQZO)Y591iv=PB+QJ#2@Dhd+Zy!z%?d4bx*7qB!+WJ!x%Y{9@44tKuUw8 zOA&rwHr(G4Os+!p)vTyZ)C#JJ=J2FQUM``x!cxz4)+v_S#5%2DxDhSNe$i9ZHoiF^ zj=%TLPTB*gpaR24p1Z>^s@hYC;HN0+yBg&-T>b$DoFnrhXyaF?IQz!0!65Qq0gC_n zm89YqXiHsp`4-_$@FU`!*R3H#yHTQ}%^3{kNmOD_-^;;nSeST1b=T8rX}0hghA)=d z4(R%zD0+3VF~sp5H*EiCf!_Yx1!Cy9;NHRP-&&vqTA&0Gr=(3!SW4LR*ae}DFx=nJ zOPv+xtu+YJ6|PRCA9+iSyMzs_D3E^qfAdl~@`y~edtX9iO`4iySpSbi17PqOZyb*u z(QmaEie?t-I`xiTH#CVSCQ&3Pa?bAxtE4?S#V#=R1iZs|5)uKK0hfDg8_XNaj>Z7L;apBWiT!v?EwJUew`ZJH-4G-tC`;nu|6 zVlij5T6w4i_*jHAP9ooPnFDW@Teaz~nfDmr>SGkHi!_S57@6xk$3B~NzC~KWxLO+T zmOPQn%3_`5B8wez^@rEH*kQPsgG5Q)6^7Ks0 zR1V+PQ_SKLWAtGt>Q;-?8hNSn=$y7w4F6UV2byKJ7;iMdGSykU7OwbD2<=1LjRHGw zZ-8O&?zBR{-2u0K`Qst{b!hiBe(sGfym5~}iXW7q7{|+feHk)BnAg}H%`69n#B?Sztmwe( zah%b8wO;OYFCO{K3tG*>xX-Ylzhf-RMlZpFXQb$Sg}`J1&3z}y(X6^5u;Ff)pI<%z znY(p;DADx}y@8fmfU0hlUQ&)IWzQ))yAK(R5WYJjX>m8ftg{C6w)3E7uG=7FE=Oam z$Zy*^QKYKw(&F%spXkl6xd1O0R%I6##W9d!jfxt#5<68dDhc;dKQOC~+c7I!p;o$< zfa+Iut^sbe1a7o=n?mRJLB~9`=Q^zN^@{O#;7%OH^V)Hk^r*pF^|`bi@1b659WDMs z@*nnEFmsN+j|cWV#8w@8M;~Sj=&Ox_H9_ zU{w0nxJmh49bt}R3LBH43vnVnIMGMw{y<|hI;Z@2s8q5w zuHl!nt1br`z`i)3v)oyU4UWcH8_D*UaKLi6=bPZYYMNS%CYYdjv83fpQEs`Z#-F+v z<7t%ryDcRP!gMTcxQ~eBs+|!$+u=%>hkWslzL}y#YM~#KC241yI8|-lsg5|j4 zYPJS~zw#qyZ9g1$#n0EkoW72^Z!`rS@cc`HU`BXQ9b~WaO}MW@HxP-x4W@CcyAv;4 z!8v}Lo8RXAlQ6oKiczmEfG@Oz<>a^J{Rr-zXGx&&I*j48dl~IS)x-qs<1Gn)rG)Pv zY8}TkR7ys_ubjimpBSz*jixC0pjEhgq;Ck^A2-W<%XVl(Hgs=D3F#vN{VGxr>Y!<4 z5unwbIrgWK;i!;E9j!WQO z0q-UYom9rl{gHHv=a3ZD|Nr!e|CZtW9U*bc1^8ag?wc{%*Y_8|BpvSnNh6w1WF z+<NV)S>W$4PX>#q@*(_XWjDh@oTp|F5Yj_)Y3qqUCASL8F|QJznrfE( z;TD6JyU?+m1%TKXDbM^MS7go*^t=Zs*Zt!l5a%k_d}Kvxt)D_GQW@ka|H%u`B`PhW zGWoA4M;Xl0F-AGbw%+>jIVOkFA*bJPQtypBOWL_rh-Y*vh<% z*6NMM!+YZGB1Tp`&MP^PZjDk)Ic6D39rU7D$rAE%A%3IM?R-fqYUwVnau|}S2nJ`$ zTe&9Y@AzS&gnvb5dw4GPV;J57Oli!b^kV{V!^wfgcNc>vocXvMv5^<6_ zEJjO+q$<*S&H}F&Nkr<~zngO;rq~#xtR|Vt8)`Gn34yVpB2o$DE`~{2?6P|`*ena< zg>Pa=I+T}c#VJ0hg*F_3UGk5OaG+YGDFEY1W@yyS1VT3vM6q2tQo7+e?7%%gvxQ+L zajUpwof;z8R-M8mVkRU&xEiD#i_zdgR#vS1O@mlI&&)P#j_$iaMwKjmuXwVsu9nJX zW&S1|%0qMo38=CRb5fqlE&hy!EfC9EdHd2r!m}QHaa(@FD9%rJAUH)elj7r@W;4*& zAAcHx{@gxy4=UfIn(>Rr(BhlZKEb3P!@bu!0x4WogOvjWK-N1Chy$)pCeqYtSZJ1>#J%9kjvZW0gGsUL&Akksd?_w!`jQ zX3iWtl_M$6aPTxTP}E7a%x~8PUpeq&S+tf1cE&&I?SM1jn?-o{RwYHo2;O}Z%JIb# zgHGWq&0nh;M>~`|g%QC(UOXMd4UktB1O5w~4#dsM?=`?e7C86OQ%oFz+|oq5Zi>=1 z8p1WU)6C|LUJW9z&wN3`;9`zgwKVSolV84&B9Vr+uuT_JlhQI2M{~zTt&DRq)$Cz= z#h*2d(K(pE>c`6grbwCD@;GUSc+fpoQ>Y-6?uWc3yQ+-DD&1+a9XC&WQXMdVXKbk_ z(QmeV6mTnS%yM62U7xOTx!jBTcJ23@C!#~Q8&;!pzvfCsXKihxBLb^;2lhi#vEnM_ z&D25yOnW40}rruBq;webs;ma+nghbq2*lcD}kk7E4=`C8Q zomU)7h%TM{6WZg%-$3D4oCFuj=m_J;nCi3wyOfzJl90mCo*t6ui=JK?OWT=mY+Ev% z5H^zHuP(?KrjM!rWQ8StoMTXB(Bvvl-SOT8egKvfs^RYLk@(!0E1sV0Gpx z=$Mr~>-buiDPY{MFuS}s$z_U&F5@zVTsViD%a!@83&&1_m3;Rq*ol+sgPiT!2Uqac zTBUH7(jH)OrG?8iwP|IThhEy?a*0JkbQE1OdS$bnXt{1@HZ^20=t!vmc_A4C=uEwi zpl7Y9d+q6ooU?Akr>oK3;d)=A-be4ce_6)mTCr-A%QdM@b3#X^fkpE+kuk;8fpm!4tjcTOsk0A4z* zrJp~0dTNE(7`azXdYbjd>YEgj0lDGb`zO)WMgb*ArP&SNa8MCaY2H^an&~egDMPAGUzsQYa&;#>6Xb0+1^;`P{i@uf57&*(=3;{pKoJR0K@s#-u z?`$;Fgc!J2Uvg0XpVEt}m94siwaY$&-n6m8s(<^SQ0{=hb)12@uhQptOu}oQ0lN<` zq508%yM@D*Y2bFf0c6gX27+^}pC+UUpAGk{Ip`J0inhz7s@AJ2NWfpt-XnC{k7e1g|VKS0JD|rK{x7W4X8nmTK%ZL!0$>+t(BpF z0`Mb4rSeb68ubCAmDxR`_#sk$kK5ULa4l3Cfi=Scayl)Ny1K5KYW_1q2R zt|d(*^H&n|4NSC`oeT6X_|q{t~4FTJ$JtbIJ^px?89&seqvLhQ~2cN zm^@S-Ekg^`hMA3=+dn0-3uO{GLiz*Y4EC1Dobx3nK5T>4va&`<5~`2D!3b_lk&gK; zo_q2Ek>k18Pviw_+NwF`sMyJ_M9)2#__0Fa;`m`AY*|1Tt78yuRBbeXd}80!d6McV zr3mQ(%+lpLT_(8Z79a0Qmd*j|Sc~}N6eiY+I$7;U={OzWdRe)MV!H-H&|A5ACC-}v zhO_DKOUU5E?^#)4a!UgjyJ)XVEcuJ@^V*tHL`Zv009O16Cs6gPKyFv{uFvJ~d$BEe z)Qzb?pS&xl067Qsgd}mi?F*Re3kShE^QOZ1a`W_c2pU7)RkYUX*XlsEjj^8tqg;JY z&)NHQ158HJU!;<2ug*eSTi0#^3|yI$_BNxdG@|kBixv1?jx>(+mfBjE#%yee(B=+nhw0R07o_G2DF2Xz@O&dEex(! zoN}28fclPJ0u!FrOE@&gAv2FXjUD!BB2AB>3gB7rvN`7x-K;p4&@2g7!UyHSMI5bY zmy2K8!4lqr!lE7wC;=F`@eU#5gMO>Yj=7qfjCO?G)-}7nrzN2vLxKqxhyTd-Fo5=KF?aKa)+WeO2OUl!EiI zl^hZu4k-zH!40x39D&E9LJ@qw>W=NJH?s^oSKqS`v-r`q(-3-!m4_){F>q~Dr)E@d zvv?6I57X%6G5Gk47at)qL=uxpNg?&ZVF|txi!Zo2G81QoDXH#cV$zzQ7p{OL*UB-q zkeVgtXtm8bJGJHNeskXeO{rkaVM>sYJEw?%#{y7o9epz-RNg72W2u zKW;V*n4X@goq;<}GH9%TT5{`CXe7=bVZpgny^39Dz?`AeNmBN0kz^Gd03z$M76MvL zn}^Y_-b}i56Ogc1oa^*xMzW~ilB`7nD<7EMTsL-y;i4+aWQ(LSd=peASeKr#z`qZM zcdgKgwm{gl{8-LPt89+qpgK)4d3z<%eP4>ckj2+&1;JQ z)FnWY*Bt&FgNS_%aQ*oyco2%8KH)Nrt^hjQw8wjRyyuRKn5iz34snJ8yW_DSy(H3c zb}@yh=;eX6x5O?rfF#IfKv&x*Z()4jxM*s=2R_|e27+3Hip0cj0m_d7;X2tLqRtl? z5OqXn8Q^f34(x$v-!Y6Q!}vQsp3-=9?Ip~^-7Bjw8S|kWDqX*~|Ddi>`;m^&;t!DB zIz@}3yS48_v-~cf-RfNP*kzTFT1b*~-6hTzSCJ{Tt^87+kdV!GNQU`d16us@|O zO4aqRbR(vW4GQ;;P#n6$z3w?@muqCRYQzY9X(4szb9BtP4qd$5a-BaDjZkJ*cE?Uk zTIn9uiR*8Li9AmtNV&&_Jy`h>0m?;n5IO1#P*rH4XeV7ZP^e&*%|FbLf$z(41_n!Z z&uB%dEhLC`m6dpYqg}FTX*=+;Ho}y@_xLG4pe|EQywTw4Y9QG5pD;D$&SKur+Uz1w z?nIsg^_Y#w&?weEg>IH1Uq?PkxD#bAl`aqIM-Q&I=9$~wzC#^hxZAlLm=bJ}LLZ|H zxMx_Tlw&|z;h*~B2yurao|9RynJmSdvo!U8(k)84QmTos)yV|2J&poqmjc=ztosF{ z=>XyC)hn$4vvn=3Orld&7&UpL)jK+>apn~ZYg|C-G#;a>V>h<+1A#if1LVhbEy(h4 z1W|&>vB~E4zL?!|Q(m1j;87)0Z7edVbo1>ifZ(4F;Vo+k(EL|x*{o?yWD|I}VB{BH z+Jnz6Q+DCgznvv^ckmE}5pUnK2`cWDew10J%N(i{_=FKOm1CFxlZ-`$rO>NvCqh?f z&?q8wKw8UGr~;;u%7sl_S@bcVFx`pZ5@gW&j2E9Rs<~91- z&XmT%LYy_6du=_*wOLO0mA~Qz6{=7asfA~*VSQ~JEq5uI68zVkI19wT6ub8ci-qsD zC1?IiKIo-s4f_Ah7XZ8!-;zabcRJ61BAa4_5fFTbwF4l{sELZRy0+q|y5k?wvfU*~ z1*T$w*U9Jj;<(4bjy^R;@&Hn6&daVI#kp?-#oyT@Pb_ zZqkMM`XH2`aEA{@o@}KH!|q^qmq(C?hc>BQ1Vi_|FUn)6i#~fM5}+#xGgaNciD2AJ;xaBP^I55p-o z(^ovC@1*hMC-Cgsjf4cQ8&Qy5HmttvsDm6|y()c)<|B(f(DwGLw3vN@pG*Osc~Pk_=t6*$X%jqdzkUvM zy?>pkOp(s*{{@0yDziD7>I>4HcNMHOCEBz>8_a7?Yo4iz%?2L~7I4{2X3|;xM z4Oto@e|Q)ZCBUd|fYCwtoU|WKruog1L9L1uWOGs|H6gl zFyUN;fqZaCKUxZJGub*QU3tlufV1%T2au5TS9^x-dF>gBR)$gb`79XEFJqMYj1qI( zw{J}b$*zqo zc)#$?VC5S%R{fBS7ci8G{gNd&k_I%c=^@Q${F9Qu_K9s{IU}r#UKy0c^0{n>OzQ|b zasBa@L#xZwo0{SB=WM>;L4)w(863l=589Vw1Q%P z*u3JDHWb6TnBxHCTCgC#yl?HP%z_|0eeYsbhJYTNPp#vh7)maly4&Bvth`sc0y&^z z7O!8GV`_g^&Xc}S`sxteeRT}5^+62GQN`v=!r54#+(N=bQiI`9lq?7xiBU#b*m5ZJ z@~wJKr^Dd)#Cu|Lg8YQxm&P$#?gmcs0?mje8qWTb*P7w!?`S80!64Qp7Nn4;yQ}0? zER+{#@tl^fGB@=uH(ObLEJOCsehYfRoi2lbGllA5Zqlfd()UHFZWnCK5hFs`My4yu ziA=cC2`Xh`B$*ffYQ9OKa9i{tL0O=-H>WXRCUBmI&3T)gyrZbW`;GRHQ-vCB2b0<5 z=_8d-v}P3f_%(1%D*?QAHUQDMeP#hYt@IMKR`B}i%--aO0a)7l4+B?-T5t8a~ zz9A@4oG^k7ualAH#8MD}f|y!ME4Z7BdB9O<`h2Gxq$x)-J|bPtlxdIkF6c+0>HA@> zwgkf9`}>Mxv{q9RNvmIYnWW?6)T?b$8t7|`ggod&V!Wdx#l!MgZlNNTY3OWwrqH#< z6d3{iVnz$xsepCJ6Z!`3TpI=u{e@(i8+jGAoHj=*tG!}wrk4%Wt>bLZ{*4n7u5%>7 zHTlVjOa+1?Ib}A2fsHDH<7;7tk;XqEl>8SjOd}+0uTc>PL%#vN`wix$;y=})1P4%t_qIaP@wi$sg}V^XLarcZ zQX%%PS#($M^|fI*e!V9abIp?(A!!;+9KE6jkADy`L|Z zCgmLNI>#!XX&)JpTXzlS%qnoC$nDHy*S`ms^dmpv?7d(|N2stw70x=)k9CfCPW>Ks z>-U9ozw@lw-#?V&Fm)7F0$G&}V^!AX7)v>T3*k63<=b6=3=6O`SQ22&DUq*-@`F0s zY#5^r4omhR9ePN;W#;DGuS0A$?ctjWPA_od_NT545xQ>6Kxgx5$H@|vg7QGa^QHX2#HpWPfM`HXcHluRncBi-vsLR7jA_`LB>LN}`?Y+I zEo#2~9&N*0h_?8LW1P}L&F9>r>mJh|{k!h|yrb5;qb}BFccvSy;>_E{=BRBEiX5Zn@8K=HgwIGt z`_j2i`x1JS&mu43jqmvDE5Y?;YU+(SvZIB1(0S0DF>*Ex?im8dMT&aN@k=zmy^+7& zh{oK`J!WlgvlbqzJ=YbUf#w}0Ox;JwcfE=-xaTGjkU(&;>n-IZ)#(BzFvRdW>pJnCC_TzY|fw-cPv)wvqx?~ z7^X%Dv)WLtaYTL5Zq){F|eNpVdKm6GouI$&UJF?Y69(ZKq=xJJhES;9uL;G6Yr~0bFYGHza8sXaen9Th` zYlx0ER2zRu5YsWdk?0^H1~9Kq*XC*SwIx~+Ld>->n_~9hqwk@+Err@o9isNrhI~f1 zcE%kQUxC!rw@lXRY1P7D%+o#WJtycamAv&73#r-6x4ubl^oUitZeaf{;N3{=Z&LJJ| zI)5nN(IG7A$5+q(ZnrjQ@p*Nd)*9;9Aj`E?9opKhExNVT6q`0w%~Ho()CyCzJcH2b zwhkMpLNHqXDv^MDeG9XKFjGv@cnnuRiLDYYhUlv%KSnyE{F`M{1QK zeSn{uJ;p0W>3CO*bb6?fkGn(T@t6~%R*E64RPB+oBbA-y)%gw&ZT?^HSa-HiJv~(A z)~em>XN+%V(-LSPC*wBTwww$X7^r4;{Ggh5dUOe|CpzI@UC|{@>8P5WKWOHT9$Vv1 zV_LV1Gh!LRqlWBHD!av}twYFlCt_7;{4v zXH{*xPJ57R5y0WZ(HBSDv zo+fmsRxw#QpSM6Z4 zibg?=`nT!v;rpYSh&H0Ztj<67_&)rS_)_doII(r_+HD6G9Ru1$32h4SLABOV7437a zYdx)iR!}Q&zP#E=?R-u(sfx{7S5(s~Yn8?IGsneMwX#}S)MyC$n5X;&t*y=3rQ=y)dY@n`I-?OOo#e1#o)^Wg$05MJr{#KY%)ja7(AW$e5oL_4- zJ6h()d>Op}owG)(MWf7%#HOf4Xilr?`1-sD9!qbUs^tY}KsZ^Xo>e=jq4e))NfN)rZ9-4#5p^0PMvIY&iu$QKTK!a;*o;Wf*0^67PCv2u zYjs+-(`s`#lB2cbTXV|P=x8xbS?nt&*qq-BUmj|j`my?Y98uZ1&w zDrVapXD!x^1DE&gF=#;V9xDcIux(tva-H2eZ=CS4jkoxTDZ(#W(Oz=gGlwko5o3hX z%raaAL`)c|IO_nW{k((x-W37(7aAB66h2-E;g{y0CNjmW*i3-ZtZ0DKfhhBAF*jni zND`?cDJ?D`ZkC7@^G1tcF-eSx3yW56V2PBy19W6hzc!kgXky#8ZCeve?4)CNF!98; zJuxP>ZQHgcHowgL-}k)dJNMjm*X^}?^{!t%RrSNOYj^K1oCnkX{#K(li^#-fp_JFr zfl2030FfWkWaxFOot+-~Mm5YUF}h65vsZv^o%{sgOgO#FP)pIOlimH=Q z?6$t>G0FMds6lt0x8A&BB^`w}PBi!nJUmonGNo`r6|mP)tDfweEK0FrsOorAl?-XL zVa^wnE}^b2Boxs`X6N$3O0I1>RW@n5pXkqX^j7TfqXaIN-fwswtLfR7dvvRv*VT=p*b@Vq9mLB_jA{ zV#Gr;e`tVZnE5r4bfC0SOBr;=)5@r~D0oWPm7&C|7Hbk)=H!?`_@zgr$3V-~coMHx zYJA*~N6bMkEK)vdJUFrkj%-DkL{?f_Ix+(iGsn3PSoge0hT3laN!cd^#^?ZM@B2+L z<@M((O2be63D6*+VNqFB+i0>sDy)n82pD0%zN^YPIHG5ng}jR!rT==0x2K-J`Jtkh zDX6cyRjT87Y|; z&^*<{GTS3YOk3~Hgl>%E7_t!K~Ap>EnuZ=EtyNpKLq}g0po`lCMUszJ2 zkqi6#`xFLV#;%cfm<)uvDf$U;SrC1teBEUEetKEy^0>%Mn@qN-$E3$6qjKO7)Lp67 zP0+5}4Y)?ArvFaYs&mQy0)9-Ya$+4F@Y9Yqt-Vub)sGHlz~9O2tKR4!mpFY)oV{dj{J;)Bp) z!PO-g)B(GJ6f++#oe5xx3mGft$5hOu1C^?26_6nWl(D*T6d2-tX~w973CdCY%+LEW zmD^At#AH-bLDx`*+WtvjHO1JX*tObv7u8=daahfH%WC-0XE^YPcRwQoy0^+bHZ(@J ztm~fuqQ1;jnuP;jr<@XvOC594={@UP8LxhJR%+MW9%|D?>Lv5rmR{6L3{p`af3air z^NKmcqpR*?cEl!CF57+>veJod#V7p^uPVSKCM8Ln36511p}JGDe?nWxHpN^w|2159 z{;DV>vfDz7P4qWZSAN`GuCr>51^9fi?Rcn0_%qL*!Nd6&Q)B3vJ4pPQQUo!R+H zI%rlJ317x%ESYP>UR$*w;dSO;pxJe4v)j(U4tXxyYaSxn$E6 zh&5IcYCdXiYO1e_TINH`@O1O1Z06y%o`PBzB#j{o1H!9I66&C^ZeZs6C)M5{epgjo zjLaJ}^`H9d@RJO}wRIH~QRaj!;H(*GnUU;$w%)RdPy#A06mHW@O7Ez0$G8N`lk=r& zhwqpO8DrD|8;3=Qo2cLrJ`98~Hyjg#$y~2$LJms8(uNMJxEa~Pn;5$4;Q9GX`}Po7 zP~d0EyhBHLcBLx$x*FwmKj>oIj;-#?3^TS!$Q8?e#Srr{n}tuq6}&SF2o@mz)FJgU zNR4XtXkw6cDcg?=dIUD!95Z52(-x2JnVeq z0@j=2p$LRo8;P>?al6N2nqH$kVBmplqr_yJh3+5#&FTf*SW&N8kbG_E4$N!LdqJ`g za^tB`dJ#Kjf1; z_!0?yn>y*pIw@~X?flDNKku+uwr0J)sBb>J?Bkwlc$Z2SYaJ%)=rGDlrekdipLGV8 zS;kobDkm&vW@e_oh#HK3cq^>_*oNN4hR_29wIqA&Tm>{A;4JaL5RDBBaY#^dNR#c0ngwO5neiVDDrxG$0SW2~Dy zm_!0!guuQCZEIJd3i1q}N%V)9J-ij6s$|-}Y?2pG!SaWhT!8LbzO%o~G$_TlMVr9H zu|99SMOy%^JilX~J~>KrKl2Z{8s$p#>nr*8kAx&!OCc`BNP$470cq|hA^C1dF0QI& z!Iu341N{S^ks_o8DGq|cnSi-M&|MGvLVQ6#VmT2q{HvDEzymp;?qClaBR%(1m{=sw z)2&mO!nl#c5!_70zqrfJ`VQ_=_Hk)E9~V8%byQkKxO1Yn^~?N%uFJ+J~*&2rn8fT8jDV=K~WmbO}|(a=|DUd`L#T?ORB_Y`6HVCL|j$ zQ0h&>iQLijsnW9)6JP!j74nRm%9vwQW-@)>RBk?D#Kt^(t1uTJ-UchTfbe=F7Fc;5S&$#!UQf!iJ8*u!s0VRWL*Ys?Kj_ zky(f*4bgIDEc-N(k;cM3ZdP8*jzPT&M4c%FFzv34%e*3`=qZZBLXuIh3k;WRJb((a(aXIoc7~~zE=HX>Pk}pd9LrWFpazJNuJKs`ph(&!gr40 zS=E-3j$(o$CJUE~G2OUYZd-G3x4Mc2A(oJs9676n2)~*FD>RgTr7N~9|4`x1wU=4?1z90 zs~XK>bVTtozEd0^Vjm1n%!o7W^z7LLSRw&zYMeZ?3M!DT2uanykOT8P+L{xnMni|5MoRgtEX}|*+ z*iwIJ{Z~9RGiBW=BP0C_xKBRGj5O3kne@{ng#lEW7{7O*EoiPw7dfj4-E163JrG08 z-$Fh`*FlKNhx+b@B@LXUVz$B7bFT2Cac|ES!49^ByoG8?Xn~x|*ShB1o1H@_hH@Aa zyvKL4KJ$J&TH{?S#b9G_Uw}(zgHkwsh{(ikXc&YfNNTe7? zTzLg@aMal!zy!?E7z^aH<%i-snn6MTT+nvfObUS*37}v7f*CRIVZL?jU0^JZ1(kS$!dGae6}CvIf#u zJw*EueKr5(M7YI<`wB?$>yAKXX(-++r&Hmhv{mMu;Ji=s^z0#r@djL}F!k(nTBTqU z#32gEapl2t4CD*_4k2U40lPvNDQqZI&0RXE?CP$k!7c3iF-R zA>rraXLF4VmYPs)SJY$EQpV`-4Lcfs>%ZnU$NycsP105vW?t_~OipfKvVV4qqh@4W zMWlWvWzcT$NxwO!y@&C8D;6U(^MY}HUzAb9ib|Bu%Tfy*f@Ou}x~6Vfy=vpjWx?@D zNkghySs6NnVltx`&2-b=g;z#@y&o?JtIcV+Voh!$NR)}3a+uXhQk~m#tB!tyq0~dG z6ii!Akg$@({r1lh>J}|P!#r&k|7zQjUfD`De5`i~p(|G}j~Owm<+I_KO_c?nco810 zIn*Up^i-h7zQbCE9>}reF>(@&BQ#iPkKv@^`($Njr++0Y2}$U-GV(M&bhA@^)#$_9qD(hxx;b_{Px|d;EjX{Utmqk~6ugl&^XTXwiU+ zj?8FNurwOn$IS`%wL!VH?{Up~jnb1OD?YB6w@m*0#4!afD^Wp=fk7lLF$%=OcD4 zc4A%;BhIM9!>Oe~boRXIHDzK^<@@L_udck=Zs84nXGc6M$4rYEjQVX=X4QrBwJ7{^e-F^uS62W=9wcD-wC z`ha>=S3^ER;($}*`}lCS=bZn}rM+Jec%(haBu8F7p#z^mt>)GAG=QHSDC z65e_Jy{h1YmpA-vCli*XRT|4rNn*Pr(N~v^wb@w44TL|d)qJomlKRRbv zI1tSOAd3SCbWci8hq@GWOhZ9EUY>@**gPZ5T?sUdG^B_tkZhhYYoiB=PewL}gv=d$ zWt2D?e<-_V(jY+82T6GOQ4=i_u3MnxrM7#@#DI!12NFfN#ilFvR z^)d$rZ4UGd;rT+vAtCV4o6^8%B8PA%7wnn;=!G7sgMN>0ed70(eiG$H;ckMYSEPRR zmKTT2kJyvC7z3whYJi=AeED+Zfof9=?KcY@rQ@?II-ZeBiX@~L=8HE5FH<|chsZ60^a0ae0$z-@WJ zMv@~d{n(8e`dvXj*KW{_A6faRBpr#jX({Mwo6CQviigI*5|))Ow_>!3?{HtP0Ty-P zB$*ORN($?a69KD#HN^%ur`}xM&9!$~c8yXa8xZq$lc9( zWD_hUKb^eFI$l01xV3 zF&+ygIP{VmE@GP_Hf|@OAY^tC*73rMq7C24iY3Q!Vuz*068q-JJ*0EUBs9!8e!8RJ zHnf(ES!>gx7?|eJ*symY1wB5w6B?ih%rG6xQzp9~Jt1(|85T%>T`5SR@ z_MPD{eQDz~S$~MJ9+b(>&l~c2u{07nEraaMJ7N4qPYzSs5g7llfdp|oP5wK!?>M=7 zh$}$qXl)>NS}u|bR#pO=h0!_*@`YSqslsZyTz&P1b1{hVbIIDH+_J0o-SX~D_2E)Q zgp|$dIOKXqJ`*3iS=_$)Qh}-}&6g@EccD@>7%1v}^X|B42^O>aHB0d=JYsnrNS$muZ9Ay*6s9HaTER>!!hJ-2{2* zfIFz1SQ%^IC~620js+Eu1+!0TTbyafOZ)7cfuqhhD@{^BerxRxt7$JEL2u7EXFPB0 z(s^w4yv5Pt;CqLOo7{Z*GEF}(>dXazvHaKiUB(^^Y6A$(4M_8cSJLtMuVqC?t7t)5 ztP@Mb182$fL2+~|G_0HSx>}dqh!&bc(yz~-)~qWpW8nE`6HkBktO?cih*O>&nnp=H zrCej3P*JCPLPwjHF(R3wH6tn)v_h8fXs2ZwMdN}^;%6Er*4S$&LDU#`EzdyYw9I?d zb?$NV>{pJ|Q5bR0v(y)S?D}^NQ)>F8g4}dB8gOcX9Vf4V4on&DgP-1*M~c<-|7oTI zRxCRw2|9)xRcHdpl_@{}ST9_lFEzn1(E`n_aOkZ0`wTI^#g%==;g%;^nC8xHwg+DZ z*7Ut2#1Q6Evw_;Nnp{$`?)%&9LJ$2+=epddAE1yirJ5Db`q&GEZdcq9Y&vJit|R&t zycFCryz+Up;tYN`C;I~6Yq-(C`CtJ>;o^PrH8(E0ee2PE`tNR$9CsOcJ@oY7F6C6w z!JchXzP|TLNZV(_W$ToqvBpx?TYQPRCb^(1jiqA~-0NG<;TdTwsYw(8!oN6lN$AXP<9$7Y#( z>lRrqJqt_G^;v%Ysw&DW!D06T6D>+5HgNUV&wVy6xJ=<7UT#o|enWN(L;tIy*8p7~ zI_)#j0;zEhQF0V}s3w@&MV^oGKf_Y;%j+au-%+R{UWTdf#S|taF+I%;4(*d1Jos>bccq$^v=@uapb~A(~It@WKY$IzUOIX zL>VVz3*+J?I%GbOm#C%IX_3>Z<*kYie>F+wBc9=x0fIj$Ma!9n;hCMVkjFZj(t2j~ z!p?x*Yp98vHa~wN`psq^>C(pAUk%D|^8z>B-HBmlYH?D{S|ds+?y0nSt78`B>Sp2` z^W1L)S1=Uuu1=^m)fpCykPTbq+AR>HrC9 z#w(^6r8&EhZ*Im}eA%iNGM+&$6M4%r6-LVyvcOgN!mh9!QA*qPB_iFz1fMji*(?6z z`oXQzywjPXN#w;w(i| z&LK-TGgEmtFWPS4+3Lg%p)h(swOc@|D4{1&z^q`;by9W=g*`YJ_8v=9$ialXN48p* zQLF={x1qI|w=M?Ls>Xy|#=bHc71Hmafuqf6d(1?T$Ot^20|=?|2;LT(EC5h>AKJ&2 z?s0Uc`<1|2Q><_%G}yvjH9B^FvBFRd$4aI4YKYuQpp2Dm1tYh2qQAo>Ch64OoOFJf!842zVP7Uo@lT} zvs1qSfbBV}fU$xzHh7(XX5_Di9=gQc^TTh2(8z3;AA>*WH!L$UQk8jDbmwuF@^ z6(tf>OczY_MRAMCQvoy-Xhf(i&lKwi@jY99fO*D!6#};jok3q*Fo!wC_;~-SsMy4F zyXEsWutb2qRUPKGNo-4fxOg#ZBD{%Z7|mgLauyR2>b!~-g7L?Z|0D;MBCQcc3C#gE6uzw9#q~ zPV)EBVg&)jxYHpMEx10u(ZSg^L4`U?g zy$k(*q6|ND^S2Ft@_>PmP3LW{iMrWw*b)4oWU{lN;zzSEU&%hE@?UjZjrM>z43N)1p=o+oQ+9#}rm za;wi2iFZn8z9Iux|9OZdP!==0N$IpYnHL%!9${Dp^~c|U_HT_)VJ3wgY5l3eut`f!y)Hy0E+ zRETRhf16*sw!D@zM{~JPQ8R1eCmjVpPw%bT&I5K`C+wxQsl`Z~=wCc6Q7D>IOcI;E zUca_GX6$6KxzxuoSxt>7K=xVEx}@db5HG-~8R~UX2bQtE{bUN*F^_he4H%7$nj<~!c8sjX)Fm+LC zuJ%SBccn=i=aY%M3UQ#tNyP_5wyGmk{?cB#oR?n<`koK}IO zw{BRRVtMSa6Ai6zRzcS1p3aG)1S5qX5$sS^?UCv|s4cQkv;43$-F$6#Qq;JV^+|3% z%9l|}73S*T`{35Lu`0ad)R@DwI!udjp}Sp02Ku&jOApkWR(j8P4YZ-5KlJaquD)?1 zh8eI@W8jW)FbdBp*!!>g^qvPFKuyTM+*WjjfBe8p&mee33dC}h|Mlo<%H=Uq$Kad) z9`@@3KkW@F?DC3Pznq$SRk|@!_jQWNhH@7UBx^?pPU*_dN)b|2Yu0Fi4zCwSurSTnRA!W z?csLh5>a&R0qdUkTQIp~p{Yl|g5G63l2o@hNS0)0+AHnM@@5GW7qyw*(bHcYo9-p| zF{^MQv*dyNoad^nh)eibHVD}zkCpV>rzi;lyC8F+{ho!@6OhtYa{{8MiZ>WnTo~R+ zof;xmYI;`o&5!!{tn_i+EUIuLT6T^F7~Wf zjm+AMx(g~!$*05;M)wZ*6{7e!J_F*h`chu$144jbmOEoKuZfUukih^bxqSELYtBBA z7vtE;>VxkyQUL=6^B|UXOX8cCh?|!-yH#iC>jNzM$VEuMEzv=v-l6FO!T>zY*NeMp zhbXwX$j2znM8dVAFbAm}oUdEOSGEpZQ7tx@>xT14fQ|@Ty~S6DN5g}`mWnSS!?^o03)B%FahN0Zb~#;) z=YQrtP!=BH2I_U|B-+_}lP%5zT2mF+c^LG2&5jT}BnU`4%ODz-zlQl$y7LpiFxcUrlV%Xr0)NM z;Gk#Ecb}}`VQ=gaj5N%jfg7RKuKaT6RSA*))Fa!jQ;Ct7CH(#J{w~nBV%5E-G5iz& zJmiM8<0Sn~>0!&21QKwrqoSGaxHfA3V8+wevIE}d@4SB?DGKPbQ%}-w%pVL==^bCc zmsso(ae#Sje@V$rx%%;3-C|{5pniOjFl_k~m(_#Z4JO+3V}|wJw;t+60lasR)%-9T z{g6dYOwEb=H}u4Y2j97$X$-H@O0JJdBK4|}Qcg7SZE%_Mzri=bWN$VK$f|=Bn^`_5 zxsxo@B=2=CH1iq!&Jv%MxLQCRw}oWhmV?W>uDiMlbTQcd#$q5Epnt-D?kOr`8h3vf z{!Nq+A;mbeTA5ly7OE4+6}_8y$txdjvmF9qrOw@HlUe|7nH48}125cCUw_9p$Td|{ zk+u$c;!@S-qCB%5w)}cXI|4gADQO#bTmpgN%v_(aXJQ_>k%DuuZ}o_ict?a>uEu_) zMqc=g%45Z@79h&Oe|XFLLK>Cf*2wVvsCL{tE-z{woKD2W6Rgtw+M_0?UZCfjnCqI& zMZyHxMT_18mC((z^=+U1MH+-p!{POb^#OcGC^r9;mI;fQdYt~Ub1M}6n&R(s&=xEG zhPInMD0?>7sIi~G3lzLr*i>ImynPLVH9nR4S$&XEL(S%B9RrRfm{S)kh?yCTC2hBe z^&Gz=EmXhHbjA!y9Q9FnKhS5Ew5*8cszMwQ))e&e;*LDZ$f;QTtVoH6#)e~9yn0g; z#7daE+EY5yj|5dWxYFB(LKk`2(<0px_8nVg52j#`!57;W4?AkaPWjWiKfX1x2Xa@f zvu3XUtTDsZDfV0>17rIl4iv)xHRA+vAGV^PkNFsOUP!6O6CGjM$#ldRRIzQ0`l|xUl79FU5?IQ<;^Q%`I18EL!F`59lk~nI~$XL z<7qm95(T}6EEa!zM%j+gitsrKv_mF-n(JLGv7|l6gSC2#aE84!JqEjjXM%7}JwEG* z9}wTKrXnvGvy(A7bE^&!O^b7|bdaHzOlV|jWThot+}v?Bn}gKk_DMGP_{67QU@CXR zV1Hwz7$^EVUF1UVG{he-lEo$3i>#EWh^E*ehO8H zl?}v7k2n~U4;+ydt`FBO3VVDzK1AKAn#L$!79Bug#Y@Z`g7Tw4tn_tc|)xwIrl#rBImv;qELWFr3RoD-`fcGNU~l(BmH-%?Tp>07gS0{E5W;F@LT_i_2GEqmCNS2!N^!9Ga!5(tY)Z-O$X`LszVC9gwJ6ug!cx1v z3o!{dAK+9vPDRZ%u0I%6b4;Xhs$it(D3x^@6us9`0o-rnH8rEE1$Y}Sbl&?Pw(DG ztRa6(<2l1!Tc7h?$K>rpG9-0)+w#Al&PUo6gMa$My*2c^MF4KJUkjHpD#W*#CWeWx z%2Q4F`!@`?Doa_Nkc-{B&LftKSr=Gd9ju_8eqQp%FY>QiG7X}0+}cstXXu^F0+J@E z!Ot7N+zbGEPo<6#rG8D`Gvy02cA<-8kHk8*5++f`0bI+HE#5$oxkW z#`CA$$rZtk#}#VX&7+*QoL{i1MZ3^*jQ)b^@clHEu+49}c=Qve(mDh8$I{6|Yc0tZUkH2=xKrnJG)N(Nm zQ7(F;`57tECz5NUC6QBbn$W<3F{GN1^C$1tC>6h0w|$RS0&Ag3MH(d>nUUH$;54a>w$oDzJtr%9emgN@jQj@1(R}^ z^J8BBPNQqvsQH>5nlM|=XrS&l1>2y)PpW9^ji-=Np!U89OW_QJ;6EUcOPwu|-m@wM zgR(w(ok}qK1d|{|zc|4~uV_OIH2`A@OzooGedLpVxxF!82%<_m$Yu`ElG^hUAp6%bR^?%zf6C^Wsye*td<>tAOP zrf$a7lr>Y@atmAS5d@|}FZ1}@-TU)1!s*<&tw&Q}z06vG3G_E72FsF~MqUFymioOx z#Tt3Unk##N+iHv!{HgSI4YipY&=K+??Mu#hOa~kRdHlqhD^co$@2p5q@D+0;r+KaF z;)2X9_~WvXMV}MFCC-4ka&`w#BodGBtIlgbR96Tbn${{lq>dxI{Td{C;P8^u_Iac> zwcEEWAV5khVl)A+fZh@MWz$wo;*sP^1rm|$tFoc-P6`a(AkoGBcZo+ML}x6kq^bTq zu-q!b?C54+So=?LZqPj&<#$(^gofGV_0f@q^j3sHof|v9_qgGP#z%(+#Sco7^oQk! zq`ErjWjOM4u4iQi836?-amin!wTs%^g>}@UJH8b*5y*18ZQy}ioxCklKMcA(o~lT- zfnpScjdgqyV~9D22G|$_9UTA$)_=}y4K1LdS(phK3ICk&@f`c)@;g4aI|2FJj8Oly}c2)rE4<``*@!5y&ALu{Y{4v?V+|JR~fslpu zuU#J*qH2Fp3~Gd0j2|*)PDVmD=068J+s7H(pM#T~UFZLD!Joqan+yKaz`vW6H?aPQ z=l^T0{=%#bOo4<oHa01F`t`(OY3_qhLI!hejG1=yH6nh}1q`={c6Xe%OTVE4yQ z|Dre<(N|@FwKa136C`;6z!+fs?_3}^p`C-R5fI== z_(29K8*@i!GBPO}BP%Ckz`rs78$|enBR2m5{Aq(w#0ltVYyDAP#oW;fz)eW`kAU#6 zPK5tv4Iv}d2SgR%05rF?;U;AINQl`Oi`ZKKQ4R?Ghm(KQAY}OZp_lT9UMA)?#t#27 zhS2a&yUW5qZ7mEKU z^S{&luk_<;{`<-B$M}DU_b-G0RQOl=FDnU|{sa6QI>x_grhl~hbKwK+42%E{1~#Su zXkNyT7e67d$;az&H}F65ng1zeXkuh$;P3~{!uo+`WMpIE|C{3YC&m7^?7vVSs{ZxQ ze`#vufe-M_9 zm6?t64`n}i?g()B__Q)`1c(Cu81+Z|UtR8h@4-a=8>_#k|9%Dcz>#X^fDUW^7TX=J zlsuFuYY^8xip#=MW2K?~S*x0sg(V=xo>_{VH5|*NVBE^xrQIR{FEyp6M=n;coUB|HIJ1=_L7=9}|WuJS*OzV;^Q;ZJ{@+)!A=j0JDBMsV^;6B{v$`m6# zc;M;BXpeediZ^|-h4*{@^s0{cH+M&ZePT-k0(|aVj_e)*!%6UJG`#OvVBAkS=TVVE z37{zlHrXQfeS|)VJ%%+PzXU8SF6M>k{gM&<3GR`>L7MEmS}K3jfw) zVdzu|Un5^VUQ=FWQ-fc*uJ1YclzNMDVrzw-W{hAQWuTz1V8l~{QJqx7QFC9_vov-3 z-Ipd^>zcc3XC5bZd}P zhU*s>4%Z6Tr*wUJOp3&~?xAf;F7R||dA`B~U^p=3`tt$V_((bj7Xh$+=WF^#lZTD> z+1E3(a(|u}o(!I(lVP3S+x_y*@;#gFvjcH^lqM`~wuWe}F6(_~hbX%Vd%ex|{q|AM zu;)+rz%!Rsy(aI2%kRYNgzJ*)oa-vi3>{8_eyXvq?h zEJNseZHRw-q1X;qArAVABAydWNpT#kx=m>B%c-DEVuQkfVvBT+l7*~?B7htf>>bUk zBneL{5v?qVbtG0!aUUCF{5eH_KUQ;E7CkP(7<5S%&3%Od!T5N0qq6(LU1k5B4CSViD; zn;@L<<37JO(Z7SNgPr?LbT({aOww&a`}_L%B7F|g57n<1Bv&WAKrTfr#jrv-MFWE( z28Z%>6e<^_VT1_`7u;wD~V-0Xp4A-8J1b-D%y=-5mZ1 z0a?%;NN==xVz@Datb(lCr08y7A;n!K}n_gXATM zb79M(L82657@`Ye3?aHmZFEmxZvqb8k;tAT2yzs%`2C*4k6GF$YWacBjdvQe1BDYM z{5a32hcz7vl39oRQl8Aul+TCHsCQIH%4>zi6F&R{&)P@8h6zj0_21X_Srtz&iw6zu zrR^{6uTSv5c?!;Z+gYBtZ=KFt@+w--Q`^&?&yG(vI7)4;HsaftJimFud6s#OJk8%( zAG!ZLzidBv(*5oJ>)fy1_Rh28+|;w<_p{8#nb)dUw-@Mh#398INB+jCSG5<+lk2V4 zl&xon_3Pao%rV9iL$;n<$Ew$|*S=TZEA=zmjpeyZ<3_O;#&g@`xqOG(bKA^$u9x23 zbM{8ASI0fY^Zjpuy!XR5lqZFAfr<{T_r6!p=ZdqA;`i}4uUC=hfg6RhtT}-Wfm7Qf zz2%MqZ{U0R+rU%SZ}0r~vA6r@j;VKpcZFx~nfHUY8<263t{(oB&VO=;0D}+4L=+$d2)=>LfIRom!yha30p1EuaMOFZ!DYpdGjmW1U$L{MeER z+pxqCK0-M{pb!yQtib3M!gC=@2y6UW%jk`tl|og1N)Q0pVZ1y%V|*3fB8RU%KktNs zATzKX?I&UU&S2e~CVBk$v2XT%50M>GCeRTzvei z262vi%E9SqH@dmorQvrC+0&KSmG5T>!GXZf`7paV;%5uz1-NMO6To{}+msMl6!8~< zK)_-%-j3D~(GH}=ueKU|BH{^rKnTH%J|0j^+{3CAfNv zW(a)Y^v55@S#~+B%#O{T3FL;$5SVp8JkHh%Jj26gW_31Oo@~vwGn<+m&XyBFfaT-5 znVw7&(ZhclpHv9+;)%!Z$0o;QH(NY3hzlIU-{-a(s@&^ghh5>K)mPuG^fyT9QR$KG zIqk6stb^y_Jsqw5)uW4jw_F+2!;g2jRw>crMIaAggtzb-*6*%6G@Q-S;9Dc5GNZ)k+GXU$3k=` zI1))hJRRTOyf*^LMWU5`dku*o>cOHnio^?N2z!WN$#!=##z;*Jq({6zQWh(PPl;`sahki@%J}zSVhp4>K7p&v?p#cRI6vm&{@}fY7yH#p zOh@=BejgqgE}PwKuwtyDviKN28BU#9{6x{WT=vLiCX4r?XvL}ASaCq4Qsi_LHSRa& z5;v8ZqH#qDi3}_!*V(Y#vj{iOS@&FitlQh7Eb&)sR(Dp+HSe3sDI*C5Y(8M^wOQ1Z zj06KtoAXWLREq>;I6MI!2e*^sxY@1Q&SB2fUhau_LnJ@vQ}5w*Zbd{p-_zcdZN!`Y z%|UJl&g;oxN7PmX(g(9mc9ZRm3L;Zj`T?WeOzTFfkxPsw&&i%fz5}8WQn+zUZ&>;t$ut=caPJiDz$-i>}UPc zG@}iI=gY;4{x{A$4knpVjC&LWv?wG6)CokMkhMOUUWZHUOOs3bst!(BTpD>K)39%b zev8!fC<~!ly^y^FeFwd2eGR<`y|$qn7~bS>sxM)UTHOg>$Uw9}9mdKZApkhU(kx7qYwL?@56H#TT$>3t0hYW_OhQx+oVtHcK$j&ACV?C%Ig{~y8 zo;e+~H|$0FBk(y4R&VUD`|70W*(ciP?^yJ+ zMV(-~SgkJEFZ8cr-S;;l40tk~J=@PVdWTc=-(v}Ue<`}$8Bo9xaA`ex5Zm$WufXbX zdTGDR-a+X%jZ%x?2xq|AV1Da-*x8wg=-_^ve}LTCz<+?&T$R2+fa+d#aRa z&Lqcb-CKJ(VqnGhEeiK#T&Gi~|6jkuf@0UL1(jSeLYbu+}l_*aXA*AWje{i#RAR(If~1#%nQ64)nLhIIheRfZ}Ql0PSG+wOTpq~F*JD@txX9{ zNlht8sZT*;IWest<7K_x9fe`}*doAupN3^4^KomG!Nf}-F7+`=qqmg524Vu6&GMzx zyk>vgA*0SLaia8F4g2^qljVD9w8m6TtO;OTX?%KuI{h2-FE`bh(s2z5(~J}+*ZHuT zvoSZ%dG{Lrl-t|VER$Djc6avVHSfF1B_mUXR6bz+wN=!Tj44A}oAX`bQj00%D0~(k z2al8UxYe!I&S}olUd@R~!#F?ZbMNVOO~qI{-}By*?bw_C-9b%9+Uv<_$Hdkc(ij%2 z>2A6`uwXoeWdJbV&9x3x9baNJeNOiT`W}dmNu|dzQP@V>$ampBrZUs2%07OoyTe&P6T_IN91X6NAG0K9V4JgXfy|23mqNLUC~$V-u->=UV_qmD&yjw{-L`*IJ~JS%$Mt%6lg2WVa=tp@T6B$h5Hik^o{_$mk;FNYvA}8T zyuNpOj=PV0lD?h(yVQZ5Q!8U6-7-Tf9f6a;h5x`~?lJKi^nfE{!{u%CQR_f2y(M3} z_$&8UZei*e`Izy<;XIf;-D$Mx+iC0RwrN81JXWDp`mqFyd=vAkTBT(|>m>Zd%vjy{ zcEUCi&u>qWHzY?%(*$`@c^xB?8hT5JOJ+-8OO8vtDQQ+!qiXe<^-}f9`xGz~QWMTGl%z)S?b0?rNY!OgBLW@y6 z;(?)%v`2rUUEh3a59JtQ7vdrXRBSZUmZfJ;f=+TvVowsGr_iBq)OK+l+Cxif(BXG{ z?A~+77~Uf&_qQZi=qk_E9%zvVW}F-!HxJGYI3=8jFW{9w>xgLQ>cnZY=p>Z8EeJ0l zFIX&)FUT+CmYZrbw6q_(P24&y+-nQizb@ZWEOazgt^LsQZZNPhS|e{7a|AkH+i4xw zk6P!ia5s$E@T}f7gExY=1T={?lQrhI>@}OOjoJWg#%v_kjTE6gx*8%9qCQ!MLGxqf>H!Qx(Wgz2!v21Qly36Ll6`} z>7dek2^|Hc2+~3ksi7tGFY~<5%sVq{=Ks$8*Y~Zp*SY8SJLlfqHXrth5yd#VAmc9k)+V$P#8V9nc8}gi(&O zWV578mOA?ScIE)AS?28aMqy^mA$5yWfOhE>X+|l|Ci7a~wXQ}=776<{--E6TN+M=` zX%pM*)-NBcU7aqv;87*a4t7D|OPiDn4{@DcRm>Lg4e=xrsS>$$kG~e(j1Q2GvrljA z|5)mG_pC@DzEUDM^eanznB!a^X0I2`Z05MtG!4a^_BJzO}6K*t}IxQq>T$@#z$(lKx zbx-<e21ilVT2yCh!Z0=~DYaTdD#@g<(wD1JA zZ(cNF&F0f-Q6*Jl*9r!w#|lIgmj0ZL*+y7w+SyeFR(8tEC{q&hw$LS7SG-w1b75_qysadLy7}|14OHL z_gx`ydr8HCXZyDyZ_Z24Q_qD?^7hA8G^JgnH=Df*Yq#7!xJA27y15NK&H5yvTD^s<1rJq9HGkUbtX0fvZQrVMTaY?)!~3G&@mt!D z7&4H^k|?MRIrf{`2Mo1lR@tT@y zlTT$(!*UvvV+GC$@M(Ehyipt=epbcVWw250+%vJl%4yub2 zSw&YQ*yencb8*|bJ#rg;dvkC+W>Jz`%!M3hBWu{S?m{;*NDR_SN^=~2emhm5kxsvn=kyzY;GD8K*V{^b3P zGIo4;IhD`9=RUAl{d{ z(2?{LFA6l1Ruri=AO$w30C8rizhl@}s+Zsu78|Tu|804)YGxRzF(8G-#?$IuRT)yn zQ&CZXIjt9AF-xvdM54nW`v^+5=rpDzS?eu3w$IWbtH9bNv)VGGm`=~c3Ej7puPI?) zBb*4zxLWBplq$o1=k%BCmvKE~zytmMlwVh$;EF|Ds843<92fV(D$t3KLk{B;jSLf# zVyUV36KTlfXl!FPSzo3-hu`i~f^TZ473rKWrxo#Eq%yc5HD-Rjh!5mc)BrGE-3xm| zBsCA3TM3fu1kD}3eaL`xRRjs0x=D3JW`a^1r#W&>*>Ww@O$ zCe63D_wJ=23S=B&<8R0Sp5FIoO2uCq29+llnME>+uNnoQ(!748ZJ8S6k8`2&lSp+= z(e|z;{)U9|diitfOFiTwqe>~uy3s%uM8k3qwaAVVrXyCww8eKh5y<2C?j43)D*|V~ zW2h!mM5=$-Vb0AuNTdUKbe)!JHKI^WCY>~T{|~a8RHRKQrHV2!HVN)T1E)kbJV3Gz z0bL-@5@rdju{CP4nIe7rJvM(M7bIy;leAiVqgrG#S^D<7Y#dmJC|w{<64D8)Q8j;0 zP7P5izEq}hd&XnQeoG2L-C?Cy=R`LdM zrtPIbMo7`P25)jI$~fBFWZh|^8##3->>hLsq29*Au$y(hqK>jPceV)eADhN>N-n;% z>tLyWA?;1zI7isl00;q5;+iDD*CN$K%cU#Zt57Oxh0ek6ve5kAK8|zqZLA~K+?OlQ zlu6QDWE%Z*-gxshw84!VYF6>WYO=F5FbqOjh9!ZKZ8+^@0o$w>tR|%b90!7%Y`=Im z9+R}sQ|WwxAmvTpwzX!xM7Hk60qdDsv%2xQSYXxj)+`r%E*^N&H$Q|Kn+xp1nT|^) zNozuR(5j6~JzOH(N}bcD4oaB5SXxt=%Ct8x^Yj0BsH_vVaX>axdtVp^A&Zpn1NQ}u zvW~H#m0i?464n#`LNcO_{-cBnJs^Yp4-(2gaA%Md>lgst_(+Wlih<(Me4)VLci% zCxhhZ1OF?s+hT&v_>PCf&HS2g{(b+yzzi3<(M3%{KEGzzzfW#rh6wHSbt6HqM4mZ+ z)W%=M<=+D6Ben8HRj9L?ghqZ1&cAPYf-T<6XHCNRCZh-zY|v9%V(C1+8|Z_3SN)e zz*JnweMK+nDh?>6v zN0VL_OHA**>N)UnZ*eA85Z-0HKGGcvG(~{;dt<3Yq?ACtu^gszpyh}(Zs$K6TL@^m z^yN2lw6c?$gvnb|*0KM|8osqjHmu=Ian|DRh3UotVi_qJM49osfd0>dWqQH?@{Irf zGycUH*|Wy7^;yn+QoRWe;~J|N!H)0k#`NsThC_?9&u+_NGn{wCd(W-nPAV7=>_pe< zErxxHz4vwBh6o@2j)DWn`lrn`4MwF^NZ3lWoWj~_$esG%f$R_O^e9^Q9J)^GMafQP z3AC@iC!NycI~qx$)JeLe?-IZM)hCCimNOK_4}|gs6vdM{fv?|Yi@YCJQxjHpQFKmp zF)3Ja=Lh%X%g-8KE{})bRVQC>9|<#3FWuDXZqezU6p2($wpIiDIOuTsbONG&i4^lO zUrrlWkuw@=i^_|HeCJVT?@Cuo7KP9z`unHwb*3Zu=sVNZ#_#$WSVAENBE`|Yi_56! z-WYztdm$ny*{{;?NhK9-NbugET6M|3t@hJzj7eney}McP2X@({yq^T|wr{_AAm2PP zRhNv2VQ^2e;9(QF|4-$9vrQW`HzFm`5!)WbbiT!o4`Q_l)uuqV8`k zh7F6eQ*O%&WH{@K_5OWW)D}Yp`Tc>Slbt!V zq=ZNH%_>HXm~r6U^f;Z)uRSIEKJRyJFozG6l6k37)k zNCVbgO~!T1Ccy7Epd5~*fy$azil z|09qU=}(2;U8i5CIQ@SMLSb@Sz;vgA*HmZ3Zqp*yyA=|sW@Y5Oy8ElC@!#nW@Mi@({I~ns zUo9%o{VstjPfpHj@bBtKymp(8PI2PUkAB9=#yl=pfLz*;+H6eNjO_hL75{{dc|xv$ z`?|e|#5*?|lcDPDOea~%Zs!Nle=Gej3M5$30DQOgKUaE`>C`FF4YQ2~)KPv8w6AVO z!zx%=ym}iRiT45QWTmFZ13Q7;05d8UHCg+;9^Zch)PfDqmWf%&|F3%g{tEwZmCy#V zsLegx^9}6m{t5USz-&Nhvw)j#rGl!P7dv-gq|KDvTmL0MeWK)^k_xhKUIcB!{s#Jg zo?mFQmAp#(CM#vW90~M57=rk_V<}DTLCev=Kt#}D4^ZT9-5r0Rpabg|B^u(SCY`Vz zh40jnEPV%ELI0BcXYKS~s;qyI8mwca=#xikJPGSBF(EQY+P;I%pnplWv5v8zPn^~M zcxQ&lBBlEddV~HY`Nxa%UnlF;AoFw&Zc~Ksasp7))Kv-887po&=erCC(jtPEdxl7( zG%sHAyI2rH)}=hq$zy&%dQf2rniA3z)`qXS$Gy9kNM=vTclLV|+5D z9XD(CySAyGE(QPIw)Xv|vOi;a&R+S6aq2;w@rti`A#r^KV|@fwme$(GHQAi`;UB1_ zU%ya|pIQ~)K;?1I=ho!#k|5RnOR7OwDoC(lF=cW2Ge&jRvV<+~?%S0}bLXC%qMe!0$Nj9Q>!$pPHmx)u!`p`QBw zrz8a{&QW?du*~_s|G6^DS<}df0_C}Qy;XwG2BVAzU9PAPV5;vn;7^*+KN|j&fIw8x z4(k|R(?nbCcRb(o{V`+r^U&kL0MS%8Ub=5$a^!*@-J?zT9kHYqq7F5}9l5LNxH$8l zpSzeRAA&{?2E@oXT|;-y-=8V9oX(wCVhhZ#(mc)7*KK|;VgG`8vd)sSf~~ZaDNY6B ztCpA52bRmsD2}#7+v4N*@r;I4hrCByYmSIDwr1pvpWr~ZW?!N)5+OF6C7#ZP})x~_ja%g|e4j-y1 zhI5nKPb6VI5>qYAkIH?;>B;X`9^0QU0|V-J{4bQf<6$zvHsRm*-1jd+Hp<$`CZOa( zTprV(52f?vLV&oc*Z5GmF`S;j}o*psrD{J@hN ze9=R(pGX_U-)+P_X>!i3%zpRRtW8<6ONBQ46GfxAzHe`FK<}-}hKKgD+>=5pHd)Co z54GXX$(8>eH2&`(%1K=Zeni!%s_%;;+hOhG5@>KC4orA)lTvw7V#TH|*=0l<{x{H! z)u%B<<@~iQ?R3^rKCPxlj4m@-h7IO4SCw{Yd%q z%hhR`Oqc&Z0rewgg%_*S*D_s*Y~cS17_x>-Ix2q-S)Ja`aQQ#M^VR9e3>Q0V__K$~ zpZ^C4Si=+Tl@A9-TS__DOJGJzew?ZV%YvIqp>g+SWNWneeq zIse7QGCI{9cm7_e=@)sU0OFHBwbQsy^~&pNWC}fXqWSgA|1{# zBMiD00y1(+Nx8&?5zuSJ4mahNjB&+#6LvEYI;R!^xyG9N`MZ}diY~tJ^*XsKj~(a^ zhWfwqu?R8oGS^N(r)J5!)JE}r7CJHD=TIhN662*(XJIVhjHYA;viG*2 zSGJhblUbv?zBgzDRn*8kcqTA-;KLeBL6Dv@Vvn3{Ob$6U8HLPl-KR8umHpCzMlaa} z7^O!VqZcFeuJE@$$qAoOJY;0{rp&Ok*ehF)QG55NoBc{3Hh4BzxKfgtS9yQ~Y7*c~ zxj|c3x)1k1hFiG0Cch!D=faQVzkdg2sB1`EmywZB7S_0yH8V0mdNgkN>||w_pi>RK zz1Vae)D?@LZ&6BF>H&yUDuKFVRZZ1=mt%p_h#+*&U#77@ht-PS20nA}`3A05kZLe~ z&`+DN9)VH&O9TI-#p7Evr?p;^*D$9#n8*nvtXLSVLpViu1t(B zipd|YIX<(VlxB{IToNP{Nl_;UhltId-5Zm2a`ftG`|=``o`4EN7V}+Qq(hoHBg*z< zz?CbEPdJTklZEah?E>g0_8Txf82vtew9TxbAIg1Rrnr8wnyA_Q3uA2tReSz*Y7hQ_9+SF#_4~=j z#Kr3AA#i`)F-7xv>(t$|bNQX{?_@jSayHzKhnHm~&`i4KtM3<(a0t4l?#k$@QPwtw z^4Gv8O*))TU9j5oi;b#%mq1+KYM(9eNckR`-T;rdtI`hcl?YZ zRzIu(hkM=gs~YuDJM}!diR;)z@%2#QlbS*;xcl}%ubgADN^PlNlKe1{IFgVYD%L&@ zqCyoklAHjrhm8DfJMT-Jk%OqBqSvtAXgSxE{B&0KwDd(5u57pjV~k$!^{p`SQt2Y3 z`kkOPM!rL&yyWS(37VT%N$a>H;v1$&p~Z$}r9@f^a+l%k*SAoH#&L;yiAh_9uaQ2* zARhH_4H1>=tC*X8Y1}+7`mZn)2b{k#GUuZEoNK}NUOU3xuzglrJ8R9!FdOrApI&_M z+M~e4{GEiEdtaQ$%xbHe*hj^>CPm;(-ppK{QOIT7Sraas&XurlQ82Pb?`4rQXWuu3 zVS5jX#W&?khFkxSBNzSK+RnGl1rLlkK4iVjE(2O}r@NKg3vZU5r!|qj?bS5C+MrbD z%3>Z1nc>7tj~~z1d_@HwxtsZS*JyC$S3PVEVNywiQzhQ=C<|49ym6&ARVX6<8Bb+G zcFTy-bonl9M^Xoy3H6zatj$xqJNR0j#|zLSB2!(e1!UD8vX=Gdq`O;4KfGB;pELy= zjg6%;Io5G=orH)u)!#KMWS2Z)*-W^*^>!>9`gtu%h7g|uzxEL#RI_?0gebcf7vFWH19 z)!j8x3eELsQVU%^UeR5Xf}ZxQZUCoB%;pL-FpommO@Ny2QKc0aBr!Pk4G~lxnf<+x z%6;Pc%M!LhwPJ`M)+_IYTwALT?znB~Z1|;k@NU(w*4-&+?=B|8fvVlZ;b^m$?02X@ zDK_!72RGGbE6*e}{NZlK^Q5Xn=W^)Ucga>-?~PDjgWU{#gf8dcsvfnrabt-!HfN(& zTHzy&>`ACl1$Gea+xiB~9RnqFE;>)E);Yx(24aI!k3v$9f>T4~#OFehuAv34t4Vd- zX1{{f3O6y4l_+4-KL8}YM5A!?B(icH*z~`^L;B&`8Gp2ka;=<)a2|4Ns+%%+R|f7N zyqSai$Sm7g&E+(F4NH?qYfLlCnEMNd&|SOX!!wT}Qj}?0+&>3k*QIe9ft|Le=YT4F zRxNyq_QuNC!(qf137DBsB^X(}%y`GT{G3=B$DI~W6W>Rxd|kMx6E0}TKR%x=X^T{G^F?Yr z?@)i<8F6~3Omz88*)qDsj7tyln^5YjB?~72`WrDLOZ;ARskK1mQ0nLI#eFwh!WgEuZTu!_5(lgMfoUA~$*c;Oh*9?f%9-ftyUE-s}y+4${8P?P^HhDA? zr(roX4~+Rd0fklU>mKr0a!4CQG7I4sq*NIUT9}1Ql|X&5j3RP~hQ%Hx5pN|BDwfn# z4YV8u^g%rOp9PV(tY&c-UsdS;xhC=-tb|aZmD|D%zVb{7>QCjYE2${MN8xY2fzp-X zQgDH=@ez=JAg4N~ff?%S5a=*~GnCW75p{Qz^C9Qqecm9d^d-#*{@V^tT z!=L}5u$>N}rZw-Rjd;JZ;2nd*w`I`re&k1kXZmK9+l>rA(<;G? zqJ4J-TexD;=b%xi$146?^T6^)Z|V}&1(%`q`hJfe{~{4sS(7as=Jt7=#Pa4;rIy3bsT!JyjvskE~Bq$+0$^#Y$@IYv&c{>S%3U9FTf!+LtxH#SXeE{wbKUKKKCiHR<< z(P~?~=-y0a{4yb9L|`t!V%Uym_4k(W**DLQW7b-6)q5I6%HR>gS-hOMRW{bpDpqF~PCcG2gM%G5zt~ zW7%WSG5N94vFP!WW42@4V`VG8Gqp3qGyXG%Gr2R0GqE%FGnF&IG4*l$R^FD~)~p24 zP*+%NXiR8UXi{jw#fuBMGp6IRt*Pm%x`jvW17YzO3PU|&&h6b{Sr^=Ad}pD@q+7Hz zJT;o`;a!*M7i^pSn-7oIx1^^XYulZ}M=ql;B+pcjv0FUTnziB1SHqW47vg!&n$A~! zmmGQSfpu4-O{15jXMr^F-R`X&r`g?0zRGGeoqWn6G>c?P+VEEsF%wx6NfQO~FXWTu zU&&|7M>6%W4YKvIjk0yJ4Y2jHjj(mI4bg)I5g-HxL5_$;7$F7_qKNm1Cx{IM8zKi` ziA65bywc$a_$Fhr1TZRYAPXuUpq8f6!c3~8bC0biisqqjSeij`qe7U zAUNT$w4nj?b>$OICWDc$z8^Wc48|fjiBSErpkV}|DIcn<#xG7u!BiGCD!P>JH>k9V zpfD9GiL)Gezx2)Tx6%=U#8jXpc4GL+(nr4^O4|q;Q<0K*@C$G<_!T%C90^Xx8_^-a zFmNh34x9^)24{ldU?eyKoC1yo=YXTY8Q?^4KHkWVWL z5n0Mrz7DG`eUSVElJz^Ic8GfAUElfD78Il(QgA@9t}|+YNK!8F)mRPbJ3$-(){RH4 z5mm|yzHO@^s1qc9SE<3M8KOYB-8XF29ASW1PzpzXL3ocYC|@m}kGg?o>}j%wRzc)a z1FK*H>kcMAy*Z7!wz;sm%Q=F%h&ipf&N;rh!a1k8r8)Y!l)1ZeU*}}!YV2jLySPwX zWBDEV{rNrl!}(qLgZX{=qxqfr1NpuABl+F=L;0xZ%PQbvd$y^l&B5pBCa`+LK_g`Y zWg~uzVxw_`aU;@Rx>9i}W^*V5oK;h6`(Vd!hhpdUj@ZuA9rm3EJ1RTDJ0v^$JHk8e zJIp&)I|^1(;z=1}=#Xz)I|rFOh`xOW_OGWs2u=ZX;k$yE4jil^OJG&bcz*u1j(?6ExJwGdk_^hULZ5VP&vn*y~tUtP++OD~M&p-oR2}C9s@W zH7p^PAIpH1!%|?y@HdpX<&(VV&;+>c)*%VVS^V5XUbU0ovgX421juFQrOT1{7fB7 zx|1|l(4YwpU%DJDZb)iq2VM0QH~yS!2VZqwhwQB#Fz+$%Gh>(!GWRm~)gTUP zK1kZJERl6dwB&llV#P|ua>ZK3QpIWox?=s=;d7nCf&hp;0vOVAsTWRFEQh%hq8xbKyJ1?aNw#!PIY*$+{ENUBwMT;II8leIyYCIV`%nh_GvIQ z2k<@kJ{$u-Fx@lVH^rD9jP8x@k77m-r1qrtr7%(lm3x)@m6*x{hsB?Zt^Lgd&ArVd z(AdD3z^uTezyjT4-`_EosWp{z| zB`sq?1qW@5p#x`e*qgf?^YtyeK??_Aix>T8u~_+Cmia2RIP5Dd$F7fB?$pSc>Ml>q z0y%T1uo7|BB0aGdLkJ-qp|;_xR~ovGMLb^%SZ`4YlF+}5diFeD1}u|c_(5q6 zdUL`K{5y1kvCy8-Wde*Gh5{poH?mT}kYI!{%oqg>4MqyXjY$qFz`ejF<6hyiagn%m zTmlY(gW*zfakyMuG%gbd$02bMxD;G0E(aHd%Xt0DpvR|Yfh_lz@TKYbOI*HdidU+R zpAolFvfzLSfhcd(+gDpU$3kZ*7Xt(BBq z4d5ao$-n`l6<0qBmmiIC7Q#R!W%O-&dWzIr@eTc^H13rUKZ3?& zdtE8vtYl*&v+?*t;ZQ?I3sWh9tTgfdj1@7zn~l--#+3q7X&n8DE5d&AjZyd)r9gd} zYJdKUl%HZ_%$)I#05&b`ttQ(ol2k2M88+?cR3}#@HZA?syRJ9bbox?3u4*~Agj0=N z<#M#&r9N?0$FOA*8__v`txe?J5!8>nrBzP%}D4z($ z8*5Si3^?{X8pVa^Ug}>az8&!1-(At{UpSG_$QxS% zpQvecikyUKEK=gM+g>fiEMzStEfi?J&`j2RrJ1c6shO^spo!3gX{Kt%Y36E1Yi3HX z8RO76^a&6L#2cljomk>5PbP2^C-Qg$^*UVL2^a@HIl!5Qc(kQUqnr00o_L1@wvmQw zgcF4Gh0}-2hLeYjE~M@DV%N_0LQniI7NrJys;Y;^R z=1Z$fh0B0TnoHA5sY~xm?n{SDjmxk$o`nLQ4%!t`%*zwLbMr7(O$1M8(ux7*&57)} zO&F&pvY^9kMFf*}B6@x=j9oLopmS`+15Z zYCUH5gzMZijOFUu74H?@mCO~{)%7dZE2S&qE5R$qs~cBTR}xp8S87*;SNvBDS8`Vr zS7KM}S1MP4OX|z`^SpDr^V##P=>uC?39c)ep)`Pv(Rp*Zj1`4=PIwa2P@IcU?Klo= zyKzohPG%)|<#s84ZhcZ!Lx`(7SXgWy2#;@#R*%0@xZ=8OKF8u{Pj(M97sLDU*8j3s zz{`^JF`MG^u@lF=_LcD7tK2KAKYaOW_$um3ykJ>#`Ks@VqhKxY z;A-@W^eV7}(5r*MzJrLEmw@LQ?=@{+!q8ieUuX|Wi8^k{kWrE7bePLfQIQIC7|Kv2 zkhpZ%@RBgd&?JxoJ9K5pO-L*|?#WP_kji(M$WRWGfIIAEXq5;&cmZ;Yg!T~}zNFlb zG;FRh!}K1>+7MR#R?~Ksy|&X}3tjI(Ud*+@d3fX_1iuoOn5PUl`H>inOR+0YJRmf-iKFiBq*G z3;|Dgxm;hEBm-)-Xv|;OCzGc0@|3<{fBb^^*9-1jkFM!IB6K&uMiBw9(W0-8aDGH8 z^qMg}!q1#QOpB?M8VD<4o{K6$1asGVfgKNhY3E33JBAjS z_QZmyTWIF5`M~NsW*52kq=IPG@SYcFJ7VxYrDbu%Aru-!1uvyLvKGbnZsJHnDBFk@ zUh;G#EsE^P;{fLr*Z0WINiInqf1$?zH3-63s)@Y_3_6(hh$CMx?g4J`(vbo9wRp4~ zwKTQDJFj)#>g4Tw)JfNA-YL`R+ey}G*m=G4aVKl1O@s|EeF89n#e~j;(S*T-*@WJN z$pmP^GE6tjILt82JWM~#Gz?TCM*u7$OcwclnHtFF0Nk(>7yuRp(}VTGgkZ&lW)WE( zcKG{d>IV!F4*|r9#Q|l+WdKiNPrxSeCV+#O1CU3Y2e2cy1I!Z70#u1r0nNnC04OmO za7KIv2qO&FdckW>CrHK|Nu~{Og86Di@>RlZE=3SI8J)_FBkWqWvtT#7`siUo-t84kln^CDxBHdc@2~Mgd@sxNk04O&$jb z(29M1&s_LA%RMqNz<|3smH^|rlcVO;X@vrZH5q`|#Po@HR2qS{Mgz3P# zVFLJQq%JTt3717H@WL!W4;pDCQYjB!dk0Di_r|bvn;rw8T6V8Vn&4INiPX zi}Ic8Flk~(iZ+H2Nu2&(#iD8_7RE!YNfE|yE`ihAD|^A9#&9l-%X`7>PkAYYi&+fh zGwx^hi?ru6GbA(Ob0mu-EHuB)fS(dzItCuI(9qE^(lF34)6ml}(Ew>!;B;_CI0Kv+ zP7h~_i(*((S_)bso?M6oMx{ljMOj8#MomOcM9D|WN7Y5vMS-Watr*2~C7rSKqfDbf z74rNji$arM{QgW$Jaibs`2 zmPL6+dPZ$VZborLa^Ux`=0({>+C|Mq&PJ(5szxnb5pz96Z6A8Kt*p=30 z*)`E6kM~Lf?mFnA?27L)?i#{-C@Jgm?Aq*NiByb~rtqQgA@`wlWSFO)XPO7jvuMz@ zNrdR(KJ49G+Qhpt@u65?Xp;;vz*X+4FX=3ubh1Lq9L30DALe_{2&?|MsgXr@MN!Mt$X6a_0W=-fdC@+)_Dgz~hUWc+mmGFO5K`0~i z29ydaVKTKIT7mK4v(!_$)FTzdds7bXL2%<+ioD#k7^Nb${!-p>CC1l}nX} z&m$ka=QkgBA15C-9~U2w-AB8wyUx4ryH2}qyDqyPXEhfy1Y5TP=v1@0x@g>D@Lq}N zw+sUqRdczz;cloJ^bGlyZUBR7PJWlETS?8t4BM7T0JCadez#RMcn0Dnq*_qnTsFi0 zITJKe%Qw3hK2Lq>sH%14N&3rCS@Vhu82@mOd zI49x?$&6Qr_Fr`YBhW=^9p2liF$UzQ@?s;Tfge4 zEO~|ga2{S#W+BLMM1RC|1UzD)rlV%0W}s%Krl)4222!&m(j_t`G9)tN{W~zl>M?v( z`Wp0=_-jwtRbu$mgxQs_n#QYK-(sBg(@p93?NnihrFn9+)GRcY%Gye}yKm{#b#LaS zh3EO_UeqTqtWkgZ;5D;+owYJCQcI?TkxDC!BEhumg&qUYYhr4h;M6{FZ_t2VH=}XH zoJ8w6z)SQl<8{I2MVf8X2HG9j?U-8wE%(Tc@v1yEvrb-{uE&c$lfCLQkuFZs?_AZ) zKOWg~1>M;D>Y?kDg7;8sbpvrTUB}#l+)nV~@?cl<>R%=^?KKk29zW?&pkLDq;a3-` z>2B1zq{sJ#QSLOmvN1-(5t|MAaZxQJvZ2Jo&B&oV&^LL)4n_e z_5}7ftC5_<;CKCdGrZSpLlyQnv%*6Bp7+-?l6b*_TnkKf0%B|r>ot51skiD&7wRw0 zjvS}kYpxP63y!YbI(7)0h-yjh(JCqW;yQk5b!i!ptW%M*sXTq$`6a$vn95GI+FLcn;ve+{19kbasl37VI{K14jcEf2x{$0D`OI4R&R3iyZY#tu_?zi37 zM#}RcPu9%p-VHY?s`>`(dmU{pD-*3rWQ!NzP3%zz4F~T=o40RF3@rQ4Z;*P#99Hn?=R)kbPVEJW#7o%4E}nQG8>Ft-NCAn1UEpv z4!;D4EMg`?l1{b{+8t#4I)4D5%*2vkBpy5Zx^>!7T1%VQ<2H(3=~YRbdeuxgxA#Kg zeIzd*W2)ktv-UDgY?eRvJd0gV{bbB&>~AcVIrngXV*IPIh_rgs;pDiPT0KNeJzm`> z_;T%LzvoNq^eLmNs#e?ij@g;!?`J$3o}qFf`=Q>aE$D-~U7H2P)ms|3cBE)i?N)pS z+Z_~~bDrdc&UCu%N}ajdV)sRd>ZPnDq#uNZNBQafygffiFaBLz+=|=bT&);J2ZSb?3dz~u?gvkU7f4Z7c&GPg29fhTb_&C zuLrb7wY0RzwVGagYDoh^*$(Yw=+y*+LVO?Yoh%yg5$Ray+}62M_|wUyyQ{l0I*H7Y z4#`v_x$M5u)gPK7n!=S*rJIf2;|*q_+}$~5beLu1>lA`|5dKh;&I!KC-Pzh8aJc^_}7 z__nY3sl}|NPjOh$x;3h^5eYmWC~UTu%k=|_%9u5>lJ?5yS3EJ9JT5pzJOm* z>;3ISU1MbAE(c#%yh!|?D}m96(0_-Jg-?V%1^Df!_p4cRPnTo?ay{SX+Ijw zjvT8%V=kgE?w_#;!BRVgT#Vf_4UN@|t<4c&jH?$vDgHeUb(@o$ zs@--wa;qO~lj5<_cpqYV(zoA4VUCaAQhvRv!3G0f{WTbyQJ5i_;bVPNwf|xK9#{G4 z>mTo%N>B5D@8m|@w0p|nDfK=qyAxQfpC*QlC(Zu+KlmwSu(YSi3xSad0t4WBSVOfb%AA0u-2TaCrr{Dpxkv z=#5+a^!u>7nmP7BtIWgG#8YcFT_H)~N+C3_b=!G%eVb@D|HtZfS7UD1IzONn^7@zs_UDf$3yWg{xNA9^ zK)+VIi@G;rk~nk1d(Qfi0=))d$|?t?yI;2rER#MY<-&g?aci7D)ynxw75_-*>8wUJ zk@d>@>9wz!J5J_WkH^KG$je`n=r{rBPIhU2u#KmG5mFBLy~h??+8|V{L80IEiulfr zSFbIrZfPG54St{tULg#op?*9mjwvZ6pe@y7w3G1rX*gC;fVlsiFS=w_6j|{Jlc*zf zpAMlABrY`kFzG}zCnMjP-mCCOyNW}#sDp%DmYrQ8`Mr0Y60%%+eYaXoGfKzCs9!ut zen39dbB}d~g8E%oFz@fUDq73})5q?1$%@sLfj1?+Mb?(#h50?`La)u}_jc|iU*Zc% z)3YWd1_ARCw4OT}=h@5LulX0bcn1?H3T-V@VkAnb9irrT0Jdni>PM$}&#<)e~Nx z^dZ>E*q3sO(BEIIJ@?_ikrN!6DrKBSF3#J%_X zzYB{EMdvK*mQIz)*PUOywCW;jcxUc(ttb@G*=HWKbeumrDfjfsOnN?&k>EOVwm0_U zgy0XirM7qdF1wCJHYM!xO>(_YODCV+{1u)a!JgJvDmg4^ehcvGIPKZ+nCy+#Q-Yhw zWgeA`&n8r#eh-{Y?l`mx`}^>3%PS@$N#rB0ml0>idA?@LHI67fx6red+=|>5-5$90 z4LP3SPe}Omi{xOV5&x-S*i#C1(Ei7$vmee$2vx}Py=SML>$hJklqIV4Q2XUD=n4zF zJ{`R6aEVK-qU9W&;g7~_NMZQ+>=Zg5lR5Vb-h)&;c=J_Ii%ib=QAR^P?PazrQ zZc%TK+lxD|K9!=6CszuW3^m{LBGk zOjR*p8#Om51aQ;bT<_#EuQAJK)-{{aKlm)|_YO7uulk$)rjxkylmE4o~SRj){l=7+d&_avoS8z##6@O9CLDEo9 z|JSm4AngNDdZ*evDmv;q;pad#8qJTPm({hy4pc*rBATwVXqQGbvRA8ymN-++QDSW_ z#K4sPB-HnAJ*-qXtORqv*7SD<$(_UH>IcLHvUp;q`?VFOgB4^?@Kby z_`dyIyt?;YVCoTd`TZG-7uRp)aMHZda(=QLQK@rBn%l5Z&Tb3uXlLm0BxA6-N-M<< z!42$|#ckeqnc>FDmfb={!yTphL%h?-(4zNcX<|kChPonR%L0PFKD_F8>8W*#Z69A2 zzjhcJAt>s}=HmF=d84#;)&DhLuv)7i1L)0m<7~GH;Ir7b#A1qU8q3$rV)7jl!8Z#n zetr5SQO0=l7WMLz&v9v0q4OY0t1jm|54q{SuV$`Ky;0TId9SPx^c5$W#ymbT?%t)w zYM1{FzTz;@3#0H&&h=d^n^<^QcsduRdK-1DC2-ZQ)NR@ znUY1Mqf9y{HD795T8$20d`jjfncMLx!8t$e^+?Bg#FFjA*=}xM; z#IM3;#atg)b+z*)I+AD^T>?jBs&&J9sc17_{oto3+Pq90)>Q|7r`k?kARC{jvJ)zT zN4|UQ0O9Z3e=EnOj<~bdNmY7dh4qN!A)5`RH1CVT(>r%%$U#%XL0?98E;G&FijKD& z@lw{9zS95rmO3Ek#}Z$VE|iYY^QM2fq-x^y zDG(&#*J>qa;5pM-coLr0o`k^01UE$VPDm}J+6WPR-}mSO3u@)DjW2x&-vVFCj!qDF z4N1(ent)dLLyqSWjrks z(-Qb1Wk8I^U}!^Jb2wRj6M9HQ3wP5ZdXShNkE)*!^9|r->ICHliMqRRwnTJ=N@Q4* z8S%i<9MniI%ZSx?7r}T4=+m?(t*1lj&D2z1YMSH~_;%eJFTQ`b_G2W_OOg0Me|b=w zw~Kb7hizMk1jy>beMiBbWAH^Z&`&l{n?Ish_a1)Ta0h-1Pc4G8VU$*dN|0F$t08DW zL%X0FHG(fa=q5ct+}-Eju0M~YYN=V2mfDNP`j#Mi`JScQ+}-z0g zFUberC(vl#qaMr^Bc`v3O#S_K?Qz0w_qC$;5L+lUtY5m}4xY4v3f}GTzs9Yy$KLb?~s7Z9v=B9626}|?p zh1+Xl>!X`e4#HdTWFxii-CrJj@_oZ?2!1@~E|tIttp+M_kM(ree=%N8(B8C$j-=O7 z6FjNek{j^#vdd?Is4?+af(6>4vB+cxr>RYZsniH9hGHYqyCJAAXXXYIOBC;f+qH=2 z!>y(r5agylKNwcgHu?y>PUSl~w8{uxG!PZNamau2?q3b0>|%AXwjx5$ztk-0G3sDj`Db&xs&m(w->T>{jEM|YnqvqWUlmnDl)d9~Z%R=CBq4KdN) zj;$vPV3!WH4LzZ!)G0cJJ{3t^kl@hivTbU+L#IRk!%Nx=Sf^unoFpD@H$KLzHrNdn z20NN;WQBtTS=7au;{9;1b|2gb*PAw>!I9Q8<_?pGQ3uy)0o}JdgGgDpbNgnff`Kru z{(LEt)lHx+u_+*AYxHvYoq$ip)C~B}dzG&Os?Vcj!c<}~*p0;q$c9)XS?Q=BDowU{ zH`JT+%K$x(`h`+cD~ZmA#^P&6V5u@R+mzN^Ni2-i#z0gclOOK2^a_0uVy-Rv>U_{W zp1$}pb?m>>+f%#WBVdvySp2Vd(s{~{V!uZXqz@1&`B6xe1E!^OY%06tG(2lM1CPL? z+QaBgM?+So!aQ*%ni}ein5En4G4vb=HauoJ6CT|o%%uiHqtRxlXWIV&S&4>ud8Sb* z*$6jiH^ObW%m4L(if4QzS%-LzwFbORMH42Av5?UY9I}mGO(sC4J}U{(-*(ryKPo3Q zjVfa-8be$DjIWOCzRDO2npl-Wm#jsTHv>JRF=bUq4#Fd*LrBOU(;h;d+1pHcFa##p z05$f}X#@PM`!&LpT%fE)JfYBLD+7UHNNA=X{?%RYl)1a?K)@lL6|EVdD-eXE@YALKMXoOb83LOQemeT|7(_;E4 zJ(q5z_t1+eu!NdM9Y7kWoeDwrr>{S~Y4zMyv%R7>pdk>}kX9RY7@1@(@a2P)_oYv6 z|N24WCDa)GD#vd^)cVr=R;if&{ofFb|H??eNflCaAwhXi11T0Y5XsK8j7ed;ax+4L zW}`Ob!~0Z+qc55uI7PnmI`nePW(Cs7HBgn3u`@0@8nuqD6-lvjXf1gch%85tKq!Pq zl8>!xL?T_#^8V}aQ$Pvm;hhu2^n3qq1H#-R5^B_iRpUz7e(~Yv6F+ z=^Q8r+x=)3O)Q^T|FamD8_Spxg<26Z%2gIjggU5B1v}{7$i8x@Ajr5dBNl5g6j|FE z0wZ6%&>nFu@hvo7d_O`Xj3W^>Q!5B0RTsx*d_+dB2IezVCK355Ibo=@4n?LK znhcie)6|&egVa!1kLp$K=#!TTjXqkl6N0_C&#IwWLTxcoJG2Bd#2q4LADIlJ3@JuH zjeB&R87Q#K0J_Mp>(W+BV5BNgm#ah03RK?I3MAkw(eyB*LD4gr1A8WO;NvAmk0I8f=MwMV*F5T+Q5z7F-K%}~|=s2?AFLfC6c zO0OD0S%smw$Lz^LatUebhD>DksO^9rMLnc8Q2|7KW2gNV1dL=VR$6i-AuvcA>=4HL zap4`p*aSOu$bh9i=w+VNDx%ZUfW{ZFF$K>p$Z<6PPR1`_+V@n!?PL-19~9}!bOwDv z4xj*in9igNh{S~G>}7h8%J`*B*%gul@Q~>sayp#U9>-QvMVdh)QNn0L9OAuxRKjO; z3K6M_(Q6R#RDF!YnRV8|9Ztei+7rE|m1F%{Bn;O^^sZm)=`*XO0#@kCRe)B}9h0bo zM7^ohP=}YBmFAdpQTex_;j;(sHtl_C{aSDNOMA*cg#KY09q8a!sal0TjZww^ieK4! zRk0*e0pkog2Bb14QJvJAL}g8Riqy{2hz=hq#-5(J7%Di0U zDatB_72-$xkfBfrEj2)7vgj@<6DKgPtaxR3+R`xO!_BuMK3HY6BFEAlst&ug%&;!KDh7E((v{iS5gmaA zai|&#r_%H3QMBlx|Le#WINe@fRTX+N<1jo88#+s>8;_M-VYHY18~u<4p9sTB;Z=C4 zi|Sw8-1+t8vPReio0EzIzS00?}fo>8M)v(r63FiNChf@RcZPx z#J>8g2n902kp+%grU*@xN`?bW>Xs6DA!z>RBGvX`@XOSaZ;%;2LM#fIv>uJ}H4vF- zrLeQGvHXVhfTh9GW@&^*TXAFikp`p?)OBWUl)x>abbmz*a-^ly=ZduqOU?ImpMqx9 zW*FIq%6+(*>eqDP@XIfjwIY_+q_0W=JJR%fkS{sY8hPwkYuE9!`;NQQ8^_bG^e~Up zF4R}Z&Hr4DvLJGfb|80DgXM5h zCpbdBKq0S%_=QaeJdra%L=Q*ach;TdNNZ?=*G=cEddoiv+0bjnrRQv|E$z*nC(1h^ zI93-MArYP4-M&Ih4}j4$J8wHkn~oHZ$I8G5(6@Uak-Jr=$ljsN%-R}`#x$~ptsNEC zHdqdtQmUdtLL>L>JQsCcd=S1@bDEk~a=f6*dIG#ay+Lsx!5B4++gvh{w4Sb~##l-V zO3Lhvlq}Vk<|pN(CBPUETb6?N2NO*>CLpS*K!c+MG^ExAcTury!!;#0(B5pPU|>-Nz7)Apj$#%qz&3v4C3AqSA-Z7%+8P3>wpuDUQuOemCpe+ zC%60W*}s2ZM19O5@#$kHj!Q(xzCBynh#IfRu1AiSRGm_j0cLcMB$QE6&g+oYl4pdl zrlh0^x!{@B4~z&4+Iu4Qn)pNb<%_i+Jw1WqGS{c<3PB~$M!FX2>1t~`5E*So8)BBP zyVQAG4>WcjG#c){ejLqj6KW?D^7s0y z>5Bcpk6uWq5>TWqA3tq}hYL#1gBz3{J$?1_Po5vC&y@G+GCo~I;24R2EaJae!d}cD zeQqOew{t4JfF3yM!AeR*?f9OWPYn`_qE~MU-ws3Jt_t`79&V&~4HsK(UgFSa#H;NB$^yV*U8XbUj2|yH-j;uf}dLg5s;b8UI%bPkDiWkAq z*tE>>n3Sz3T;lpcdYcM}F63U!MH&`_Gm(Qj8x=jg$znQI1y6xP5!UqJ(CD43Z-;y> zZicrEmkxmo2a(shqh~@hAv$G--?W`+acDy47!W7LbKzC$%-hgm1UO7XA6WGkVQDNr zfq1)vvuDE~RnBe@LQk0wiL~?{f%7u-rQ3UE23UPH>;;Pd5+$h+|C5P#k7~tgP62F7 zuqPwpfvTJxKu&iOnl!y8CMGL8J|hZ+t8}N4I`%^6$MrW6BWpm~Tg5-;l*u`fsw^Oi zaEb9ovUlF?(Dz_7JXUb_)YH-$^v>N^_m-xH28V=*VM1xHOi~kMypee~4;C4V0U#Gt)rsP+sS1(BZ91LbA%u3vvyfZp%KPs>C z1VjOn`p=qv0!1B#^=NE3T4*QC*{ewfVe}XxHy~>Zj6q7S+L)KRKQ1;L%@KG5dD5>m z-EVt{Tn7~eCI3c2gJ&eIL$Z5)Lsqgtts{C zP3b5Ho2?DDT3cOlHEOj3vGt*TdjfZb*T)_bA3c5OtVGn1))MR=5Ev*nMAyW3A!YI4 z;lrp<8|m59Yw3s-0!jG=kNF?b1T($uN$DEg8KGqN?A+RUQt zGKhp6a!*vfhT^>@y-8=<^Fqw4dG7#=sz8YU+XyGMMzJfpkS#sKh90rQNn= zOV(~}KJvgBGN8tkkA_wi^0>6x0Tc1i<>~a9`dqyNTfEshFinD*FTa!-Nd`)wC#=YL z(xG8%QkF1=1cWLb5T&Y9^?7KFeoP=E*MO>1ky(_EgkgT1CM`cfugl%L&z@8m20<1{ z1yIu)DNktD)y13gkwj6&Y88pH(B?t#<^-`KKOgT zzmFo+YK=;tuTC${E=OF;R$#G!-}?VHiYP#FG^2&Fl+}eAGnn-$kzJC93Lg%`<8veO zqG}W+YCw%%OBCqLdJC*D*0dN=c?#N78X_3QH!md{x!30rDvc7+*Q+ei@4Gc0n}t z8dA|b3v|r0YR5b~#LTmttT=rZ@;byD7>~BOrMRS|wAN68bci|~Oae~_NO#bJ0Cy(3 zv7k4)af>Rxjsm1*On@{~m7vQ=e)*r&58Z?dbkTXBpm}~{qT*`<7SLrMWJ# zJh41BNudO^lHN>DLN4xno8F)`WfUjoEAo=li!%yT0I_3#x{%&WPXJPbR$k7rRo7P6R@GHjIaWW}v#m-rR#Y%23oKtu zgjH>c6m%Hgw@-o1UH7fno0 z-H7}>d+HNg!K3w$^h9wKjDX1c%PkH*2&-UmS-rIwy!bu3U|vCUaaA*HcDOCVf}?luIUI38TnB$BK1a>8cNTS7 zy1>Ve;)(JP%MN}A--MPe%mSj+b$WHi_T1debpL(HaY!H}n8TW)fv6;_JPo<5)X8-J zHHZG~BSN!ug4?jk7aSF8tIhWUzB~f1AQsbu) z{|8-nkF`;#(!?sV{)(G``Z`^bM06yqan+pNTXyX~n0VvMlUGiOMMcSVxnhU($zS2= zou2@A!F~0pNs3@Y$tA=QZc_V@&*{bWoxYMCaA#I%s;)S%HVTzLQl$u9n??(QJl4^i z1-Z_M-}>I!_bUWt$Q^v~fGN5{+@BT;>mm)b?2vIN~ANhH;nmh$?p;<(-ExgDd(i`AJ+5^&~V1RYUSwFCJ zE|G>$U6$D4e%$*15%?9?<%105IT#t6lsPB>wayz z(*Dx*u8XLx+Z;w*#ESKyThZ{1fJrETP(Zyz81qe8s6B!c$Hi^}SSn>htwN`cadS!u zK&t)LdUz3*n#|Aw5PEK^Ha>RowH>cf174^49ufZ=Z;0_L|9@DWMG+<Sgkp#}Tyy}OX(1e(PzeWZadKpar=<^fJ z#&%0g|HQ2> z`d9qwe{7F^F!^Ztk)pban%Xk(fsXi>7C13$swDsOHC4bu21SSLhW^javo9X?W2%Y9 z7Pz^wa~;iJK}*sd?g|uxGg!;93meT2J@S(LPdwQFC!D|k)(jLorl3TWZ&BF9j73{j z`th9$Kf!z8WXhr4d-etH2(OJljNY!WmRghLJJ)UsP-}8j$eS%{OsR<$N5Qm2l>#iI zg+#sr$tev?Z_YKN;ZX#OZQ%Pa2%D{}1lB%dXl$eV`Y)uV5X|bG;}57q??d8cYeuvL zW}z9Lqu1zF|74D%_S348QaoeQ&>UX^U!XL-D_PEwRG({bf&_-C4q3}_ zrqBWu#<3RQH)ZR_hq;=E?Ni(c79Y=HWSYe~F7J^6M&n9dLJ#l;1atLOx zyGsqBnMFmMYn>E+a@y;MK( zJ@{Vb>*pvhiabR5!*?OIloowNJ3}|PCVEHI-gD}rOvG8$`I>aFo!*DM^?5*1pso_z z$qHyHuvVP>k>b7lGkgg?jD++MxG7_$G8}a0lJQWd(4^*U(uG3C*f?c9ZaV=U4I?+v zY4qTAGGsrj>Vi~X6obmj$Rrjor3caz-RKZ-4PG@A)e>DFp8Wjm`;~2nZzJzE9nd!U z%=Y%^a^#Xc4=+?5Z8sWh$IysM&B;_H=>s)Et(QJfrVR?dL{%9$Q;Zd(P|MSi&M ztVj85q^%t(Jc6{LD>)aUk0BS5QExm`b@WW>B?N9YSfLekq%?)?2@MDk!|3Y74t+*i zQg*Ut_u*BQzHly_7O_z7=DmG-!t~rAbs!7@aFcy|%l=c#-;4YVeg?m3d;1P}@BX>3 z>%Rh`WS2PEI?sJuR)sK&i1!>wzocx?HX>nqspMMe)#|tE-?@GloH&28{RQ{}JRMQB z9S!+-a~$#n?^0~f-qBMaq^qL>8TRNy17M(|NV@d2JV}pwWJkCn{$j= zNNncBT3En*+E$=5X{^W;r#h(3kf4TLNSJ_z zW|lS`*=>L2$hhFp4~Bh8-iY#E&lYuJwGK+Do8VLIE=T zm{u!-MW7?KIc#@WPd9ez(^3<&;+3GF3YrOMRaulqVBl+XYG&CCEi$Pgp@jJ=of2pj zdJO^d3iGWxU`7T9(Fv>dRVuS%tbl3V5+ZYL)Rw(L`+_&7ZA6NDP-S|%vP@gSL@^6m zY)8P4kLC~%c^Ac{##RFpZLu)UGLzl#7+7nd=V@uDXFwqXTEKu7kVj#QzElUMbWbJJ z$=W331m9h@uO;H-&Ic)P!~5_-?bVZ4Pae8mc@KQ{h)=v+{L+=m`#{9dFH{$*5PdX+ zhr~0E8U9SDM`cCbUTUf;s0KGtxch#^&2tqm8H-R$Ss~L>Xnch^##dERyEZ)| zIVV90bag2uNl5>QO;bh!Ulhqf3Zzn>AG<$1!5?w6^b%E-wpeFJuC=;?Mr()dVEM@= zRE~lYqaAU)i+c{PM{$gG-pTGj!-p!fs!$Ki`X)#qw;U4Em9KVQIF81KNrQ@)sY=X^ zi}gw0lNSU;ssv3U3SvfE;>wa6Lr!O1M(V|(s?Lt8h{GwTAh-n&+^hWnV0K7-@Pr-G zpZBms*{4aAkW#!y$-WfB+d&`F(~AM6quhyx$^xCWt>m1MQBX=1#w>BS3z-I0`6}f7 zpHD{`3X#~$EY;XiW0?wy>Mm2GUn)c{rBYa`M^4`_A$^$MOa#PcAZZOUOZBDVLh^_q z-F5YUY>aKSJ;s>^675PAGD6vzc$| z(#myqG1W~{m#AS>1+|LeZABr45J@+OR3_`=6ot7}k_xg4O@%5Qpr>@dLu6}H^x@2> zd&*>89MXfQK6;-hGnVPgA-GF^^ZP(ky7P1tY zjW*=mt!}ArXhlrnBCPklj}!pb%hZ4a7OgE+l8a)c`AW4aX9MC_DpC{$ml*cKuYaH> zfA}Fa)Lvmk(E?ysn6kxrWQblVN1k}mUKo2%4uRW7=g905ja_mHZf^epT`xi7<5xXB zk(Nx{=t1|(N!OzuLSl93HxVz2FT$fWhuRtgk7Xn0^4Cq&9CMMXFh!ywb6}ocotPh& z;u6M4RTK(^)rF0PwSXG+sFN_54X6aLJja}abP9$~(I7v{%7n|CiwFjJi2+zR!{b(d8*U}oTDlcvK){Q;!b0AuAWB1qM+wje* zOP7uvwRG7}1B(C1k0>{lAr}ZJCF>2QDm0eLv&~FYBT~B>f-U4O=!_;SNKj{GrIe$n z8#7pr7!GTh?`pRa+Uz*mc^qOF@x`eX7wuIiVJjZ;yZiz+qLL}iifTQ0l#GT)f!R{| zkV;3IY7qm00z8Ndsxks6Zl1yjk6_d?=+D5cA%BOcG&dX2tgj}EYD^6_73#T6xJNq= zqDWD?A;N$f8vPIAb;&Bn@T)}htN(2H>0>3LeTSnii|@jR2anw^tuvKbn!vl%LlojG zszaLg_3cMi(&Tb_Op>x7zf4?&bQ-h4R)6Hv^VM~T16cD>TW0C9as!ap=^G+$;{JfW z%sLIa91g-Jx2WjdR<3|b5YmLhvO z1&*QiE!H3hX0kF$6%SU^1t^lF%|!}&Tx|xkUbVWoxV)%Dt9XejH&^J3s$0&za>d51 z|AEsN(_**_tiKp}{>O9Fn3|GobB-9jsnzPT6o%cwd$Q6~6xoO?U-a#`d@)9;cz{G@%e#yVIY89NAHBRc-@tdS1C_QL=C6rNJLpXa-*UnV#4-ipxNS= z*wp?bP;0kiKr^e zm?;h>ql|?rBix4~74xaaR=SaJ zl=9?>qopk%`c)YQ#k(t4r5PaK6%|oNskS)=W$xy4(q$wj(7la{?q@n;e zqSik4233ueyp}{HJegHqSvfIHktKnDIZZFZsvSt1LemskI?qniN5QbhW=rTd z$qW<#Lk-D)W9Pf#x8c>xO$UI1tlxYo9WD*i`f;(i5+5J-h^NgZr}sk~Nh%WeF%WpAoOl1`^H5b0wnGawL0B7)}_kAyeR#wu~8*HHF3bwlqm9nTpi7RO4kTHZQfN9DII{5K#kA zo9)fsUx{j*Ua7OeQ-%)X4Ky3>J7xoVxvHo-1Exy!NJmLF1WkHwMzOkFQbksxh)-n?E6vg->q8+(C*$=< zZ_j;7Jlh=NS@&1s8PcrRvc$P6MmopUq&JAGU{$fbtf-{og%)ZM5S__Ak;=?Nn4wOG z8DQCs(97Q(q9)ssewHK7b4Y1LPBtyrjB1lx1nba~UG@g#czkbi#il}}#lL#-9>r%u zBW7)3?k-hoAdCYsHEGSvD#iA!)0@Oo;aa+n(^~M=qoIs{i0RH^RZ$wlyY*T~3-cq8 zSOqCaD?tiSF)Y>>>ouwBG~|Pzhj&*KIwcC_Ik&RPVipl2f=V(4~e{ky3l(GmNQD*ms~vs9H-l$D?f^*CJO{nD-v zDYs9l@f0bBN3uVpg%yC>MR^ghrTS=Tjxkq4KR{zqrBX91g=n@;$!ID_E}5<6ZFkOT zK8N5wqyya52n^P*I#W8!6S4y5&j6knu1cMK#Ycv!u!JsdIsQ6X(rXmTn*kP=p3Fn5r$6*``c1E8<{+F~!P!fL2Qsr&&{Nsemf& zHW9Wov$mQciv)_Pum(^gA2kyNmFB8~%7O}O(d$NFB(1f^Ml@?;CCM;Sw-;`P;ihCX zx>I3HdYQIV(g+)LRZ1|S+k;j-+C$`4sZFVl4+R-LH{Gr&lTlfxlA*XRf8)C=@i;or5f?ARq56@S3Hk|GwkBp--S$-%jsClHq0t75)*$ zx%a`_)+TrXeiRSsF>qHnZJNhJz5|&29aaGz81|y5w-hUY6&%nVlTac zo?4HDloLG;(K=9ktgzlx+D2`p#=tIkIvx4KLKJ?;1kQ}2HzK;BaCap{R<+WUQztHg zO{SmWr%2yH=^lI;+I4nqan#TB z*ka^#rf-rNS*j$|Q&o8IKNbzySTv-OiR#R3G<-%;oDI}q@elCMk*=2a@6~)*d;)w( z{YY5ql;vL;L4&!XxGcx4kR-t*-Ad#m2r=a_Vka#(r$|}tn0nPpFuS`Cp-ES#tI~HO zp34qigc@~qHGB`AthtBWzi*;2thFiE_y&q>lTGGIn+IuRuTh1J z1E%k_J$?V!HjSaV%jsG|6|aniVL+6POn$Kq+Ds;6iA{g%z$trKbty7&pefHG>2@qa z=KM4``OWyd@G|VEZEtA^K9YsPsb92GGYiXd3^|fi=F_9Z{MZzi&>mF~o_>p}fvvDH zr91)2{)pV{onQrBO{kMh>V&wIq}cRG)NK((@ESt+=@m)<&x31QI(CRB?xe@2NdE7v z?iJ(Zy%LeWL|L1ObnFaOiX@N^W2%)EDCqQh=?7&8nb1+ONtr8w^H)YDuS2C>bvhKT zf(nCLuLR!vC;5hDv~`Ltd}u+A6$@xesg4Rtj0ju!PUPFjPcZaTYK*vq4=-eNMKvL| zRg_SU#!hWbjUD+$+By$4!xzB4%?G`5()3UqsH6L3gdpcX;=(23YsiCk4S9Jx^|y71 zouh$cD^~SrQ;re;fI2`OhK%l+txdw}NvvMStYk&rlp1&qwwnIxeMTE&KGr@%6dh0* z?lP5ZFqn|UfF-#W#xWVIrPKlEbHts_{PEAV9V){t3RBhM%9&PLxmVc@nL>a^fdp>G^816k=lixJo7HHPCkd9 zdeyClYhYkvShVBw7DJ(l@gzH(32LZfoC*B=C=1eBVq2|;H0mT(vN{RSgSribR-wsZ z7X0KFD5}NBNNVU0m9I$P*)6sVG#-i$m`YI(S0*Eu?>;gX>XrF1%5ZHq8c(SWhGHEM zm20c>klEwsox4(x!iI`eefqQZA7faFd)e$?Fj=uEwMIY$SJJN&MwO9S z6_uGA7DP|akG1MNn2CbrGTp zW4W>7DK81q(Q{Ch!?Y-x6-$nTdQ&XZ=V^>LssyPoh_M*WrXp(t)&B*gC>N-h=7l>K z(G%coIOVPQJIDyDx3pBm()?x1k*7tJ2s162Hl*1eDl6)Q6`(n}GA3q!(v~e3f?p9I zg=g(&T7J1*@tLI=d_w(=K>ltEQhu9KkTJ9c=5EsFfR%I!>PLN!DmNwEKR%opLSMW> z4TC4a#a)LsF$`u*vP5*aq2yqDX~xh%mk*wOGH1 zXzou5?@`|0zxSpX9!TukP=z{9lwGVVLSeBISZFA$Y5o3KNhPyLUybY=Q3{NyDCmMF z>!G4!RUeuvkguRdcXLP4PP=Dd=nkDa&mToG&QrI$5(ssf zx-7(;HrM!HFoJW&i>>V^3X7~qp(!&ZB`cBXX|-8dq%}Z;-hjN=$6q*#f;RTGS6~C| zu;0CDvDg_#0SmO&Jd+;k40`0%@>}Nz!wi`(Y(a6%oqHl<^7E1Aj}+MSa#$+1!Xn0H zRct&u)0!C{xqExwN>nhr! zPJ?+F$y=9g&PEd}JJH%?-pDJ-;5j5)i(+vCvRj!@$FOWGI}FAb@9DcVF$sxDWf2t-Yu-?ohTvO%4u z0;0y+hRUv@LPL$2u~KXFsH^=}ninF*sy8E^X6cdsSE*FO2upJqpV>2?KK$vI4^dG; z{z*~DfQ2Off(U;=^j9A*f!?o|s+9yaiW*&sTyn4}zA73?6wRJ(^kOvamAd41O62mRyU9?Pn}#@$NEueHV&1c~nMwe);5R2EW>d_JXvoe`=jc#qO0WJi zI{L?S6b?G7_SU_QvR=Gm%D4NYQ^%9LAq{;RHc&jmIG?T-!)kEu>;5!b*{Yk6sI zd~!yFGEx~|43R5g)$8dkb;kNaF|0^O%2{whdNJYvg~;P!LCTLMr#Pz#f&*RchniBW zBG+x$xCu=S#7PZ>wiD&{bFc+gsSq1QOj@tX-J7o1h3wCiLRb$(S>@@)$OyMusS#g+ z$FIxDsqAaJ9aX70~k@3jdC-p{#K_JOcET(cuTP>`%<(ZH> zP)TOwGRqPawk*3CMXL%e1%T3{$XtQh&iK}fbIWoNgVyMhk-UwgrxK~z8A^ye6-eWV z6?cC`Mj(wj4Mkcdk3J&XYnV?>@?b)4Mg&+$FC?JOjFdNn;l*<`6|cTvvsi2F?ePZ! zarguU%#f@$>I$+N0(3dL-6~DEL1~UWq%TG)y{!ROqWdk;B>`%GwIbS-Sr~c1zzCFD zySWv)A)q2p4GY`KZz3h5G`46zk{}wW(PwD0RN8#4I+C7hV8)C^W!03bEJ&b(X2fra z`l8wbX6uRkl1w8IJ5{3ia6v^uMPVcI;UX<0MNFrVnaEqM zN(Sl_RXpP^QJRtQN2MU`u@F6LF1I#9D=25Y{&Xtx4d$!W>FC+~IObW4){v`LYEw3^ zi;f*XgLd6aPrQ_B*;TpweCQ$nSIkIBHI@`0@Nq9nkQU{995UbM)tP)s!;r7An zfI14B=xK9c&Ms2jgM{e1@w(wUd>c8A(8#BLg@}bW?}9|~j^ynjek&F)${&YVhXgseJMTlH zsLrm?f%e#dfRy0 za2sBSNA$1hfc*?jKx!HyOF-1fD|IXND^Xzs3`>nbu?t_o=jar?T3upyhNeiem z@1qCl!CIPw9L^@>UDuEm)w<6RkE1wy--X`;YTOr;m|FGL$FUQT>(+-}M-N{|FVQG8 z3T7EoA)1<$0)9yCM&0f=$EHCo0zAndk+_fj8d6Kahs!7)trn|E`aFv6&!tC5AU%*0 z$=hiHNJ&>s!AS`$H3m>H?c&W=@P=jB8*t6J8R){@$ed-vXZ`1u!* z;)8E|zoGXdOL92vOph1CwKcn&H?%LaM;H159~1>e4t!G{qsX-Z!*QY#sX^j+s8#C| zfC|OM^ifuQ0~*)U5nr&tf?|WQ^au((T!BXQJsqF zUWoy&^h^{!bS$AkFEcwfSu2XFU!+DNt|AI-i|s;6A2KS8$L&oA;bCyWzZAtaw+C;L z{KZY?o>-*JfW<`q58J8X^z3Z9PsWakFaoNLTC>)qGax}x%!Ct-bwyE!(U=2B@q>l> zvw58%r5g&83^^$36r)SkBm{Xw<^vyd>bymCKsQ!lDrhsW6)1a;ui?A5TgBi+{ zI8FXSdJ$5091;Ui{k|nyYMbj&$ojBfaklv1vOIt&A=P$7^4~E%a$uA)H6%aFhn@}f zz^W=zz5XI`wBul#*<4y$h$Iax&O5T3+48~gxVjMeGqWH)qj3C1_!Y32_!dZ6tmv}A zc3Ka&8|eLos6(N(;nbmP$3Li}2y-p-k`WlpMMs%jG-RCcIZ&aeQ*!80zM=F$RjM`x zH4{CH$_Sz+pq5h2rC>d<)uYM9jK0nE0oAp0JSUWTluj-NAZn(gQ5KOs!xHa>XY)<3s=TbzTJRibMOJdial>e)1qe3BT0ot#*segu;5DHL^NEEHWij=e5F1 zuo$TXuu56B-vqW~$02k1Iqf0BkXI0K7y*IHwuVX+Lxk_y?p^_+H*OTa3%`Q(`UY)- z>Q;VP81e=wktq&DaoHJ3C^RL4YwvD{OTp3wJ85D;*5$)u)8)%Q2frHl@?6!Lt;+nY zOfBk2d}AZVojm;}@qh?kIG!Eh&*P2PyH#6!~$^t6AC^ zx~ROlo9Tfwpcl-(%Y15156q@HZZQ*ec@w+Sk-uNx2;18lp+VeCEhWmnEP2B*MzuzD z#kNkr*O6{%H&_jna~;K^CL*y7tF_hnl_2iHf(tYsh2r4pq9av@+OA$WeH$LrTuy=0 zq0IfvPR|Z0dQWU$ zUV<2mHt2Zy7Yg2kJHw*^T=0WEPy#YaqM zJJIDM(TxG(kS!sbB_eA(Jxb#;GhlDjimXk*lRi(4hB>>5{U(|Rcc4F%?9~GMX>|Ej z>O5gCtA0D-Ui>Q?P!N6jSXftn>y5X*g5Vc;dx3$Tf-I2tP=J{C z;-{!X4lc}Cl@}VlY7w%2)m?@4*3Q)F*+zpju{`NW9QSIo6H&}s8j%q0+v z2aeR{f@1cI-S=}2)M@Egy@RLdS(a$ncY|-YJMXxGbbEpHqy6ARLVoFTX2#6=cq3d> zf{{wEYp;N$Y?K+^cwtPGWXgf6+vAx1jQLb*AC?@;ExB)CBjj2LL};nk#1u;<;=#le zvw1{k)!3$ru1^?z=zD(rC2v!Jf@T6B5-$s$f(^VU=u*q%WHGzSCe<>`MhX-={$j-A zP&NPMgjmUp&U{&xfU=h><2dk-DzW5KNs2`#J&7ELu`8pWTq&{kCceUORZ~-*YlA@N z#kY|(yUplA&#wUDDZ#+Z3sAY-Rmn6KgrW6usN6-W6xwN8gNK`mvGs#=HGGdgbP}m! zS%u)_Z!wMH>BJwecie;*vGTMc+uUTQ2{B*)B&S)CbVz6VFf+uk;D^^iB~s||J+YMG zDCHQfKD+$t7K0%-o0k!6 zj6Ooxd5c)}V;O(PS6`MsKwpWLK-ox;zGxZ=2%HBtvP>k71IGSPm5+x=H{^*jsBIBY zg%?slG_{6Ax{Kk{2;?HL93;TLBJTib!ck2VpF!KpE{5}FZX(kx^$}D zTUL8}hT-lQZoD$NLE%MZ`d!c2MRylo=y}@0XBR9YL$2bxlBjZm=$7g>7`qV&`_xH`0GB=@M0-cROg5&hoqI|Mm+hu zI3cR*Sz|0TmkGAiiYXW85MeB&Bt8=a6yt-7T8x7boBH}5oWLRe2_ku#3<5fZVh@oT z=A>Q0@fidd3ng}#3(Xy1=*a4eESIKnOXSe|k`Gde2(R@!BJq)fPbT-S&LLmDd;uJ`?36YmerCECqMM9KBs;H()=gLg znh)!P%lpM2#T|w9LW)GVPBpTwk7EG_8X=i-m)xwGsbQp2*0_``e-j*@!YuhQaM4y+ zy};bBVbpB4=*vT4Lqq$y+CWq>JgZX5WG;ioq|=6?>I?H-yhJ*L#%x)vB~4!#GK=T( zT&{*}S`*=jSpao_E*!%g$o-=~lqsP?q>F)_5WPY9CQ07BVdUFklLhI`%?(;ikqIll zUff8BN6j-66-zF}h0+|>2RANsYrk1{($!1VXg?(^SAHZ!!tOi6Qo1!dYb0uv!}hnT!M7y){az|LGTn=*lsN?mFQ++6J6lu0<#Gzrc&7@f``=^&G~{M^U4`tb(Y z^CjtSJT9n}qdIk_{@R7bm!NUsh`SkzMJBV6ZEhOeroukqE%B4}PFPlvzm!!>`KUZI z5iJ7gR(VXnCrzL^=%ry*G0N#s&}NzzfqSlS9JPKCu#TlSLRB;($$9w=QF#(@N+zJL zQ#Wvb=rs&mNz+|C)0ow($(mT3M?Xb)K6gX#hA_*=RG?a-ljNUc(jrfF26s+cye+8< ze*fZ8;Uhk?1dL=s4`bDha+p6hQ^Om8H*HgjC0F`%Q9*H@9hTvue>rhPT@E*8My^S1 z&n}@Q5kvhFnUqJ@;GSgnF6R#8%a z;o$d!rtoRJF5@2~C)wnq8vr1bQ->)BS!o@E_j7N<%bUV-Ua$Zizy7Om-^gNln|@VG zi5l&o=V)+VdYjHw#ncyYZXNvcuazt9YfhhS$8&@(FuQ62k`f66XZ;$!T4P zZ`QQTv3lu zD5x);v#{isoT4gcQ4gGvvdyA^2SOiz#HlW7NIx8OyAS<2UJoNP(dD<`_Q1=7ln}8i z5aLncrzP&>ufq~Em4z%SEZ?16$roNc#m^mQGHEion3|D;UW*%q`9qp`I~@>Y%xy}b z%$Jh(CjHk@+2zIPLmoz%2fc%LsCMw44HL4j9{BT^^dSkXKI@r`ObrhWqXEtmb&`lZ zVbX@G+V=fJ5~fM6UFuXrzcu-}z!)Lt57U*Z2Qoo5uj5bCb60qjD1CN7liZOeB!x%b z@Kfi4iWK!N9_{30dA>ro*wRBSlT5Io=Niv9*mTrNk6>l>&tPM`!Jn&LVpCP=bI3@^H2r4Szb4SC&w@FM#gQ12-VHZH}I@E^4~|rE*-q4 zbcGcpvYygdiPinMMPh4cg!(}o87fTth{*IyVoF|XMeu~J9qEj@XXuPy(EQFc+i(~{ zy@lT&%eJ&sJMcYwKA!HS$r~%-Xta8GwA2C*Te)@`I))pJ>?v}dn6Bgwm#rFIm#)e% z%YzQ(^$hrJu}N#le{0eJ$0o!slI`BDLJ>^MsGZD;>%cD3|NR=>3sn_ zRz;a|IO&v4L0DVx6{?;%&Gtb*z?t*L{Mmp?L1JG$C}EdEnJZ+`z8=7LH1K%x8%rKS zxgP08nCS;Y59g^A$zTtOt>4trw2^HfEBHaVDUNELFgZg%-NvLw&$5WPm@~zzvY@EE z90O{R-nPQB&8A^&EpbGntc`tDI<`Wk>>gr5{0?uGq43St?0BKnTZProh&Owvp16dB z;Q921qX4$Lh&_Zsy=wN5df}l~I~a$oG3j|3{Dt%g)C+9we9vA{Ym#!5f7jzi#dkR%H#%JzEesmREJ;2`Or2C+_!AtMw$##= zStX$nW(0mQ=~v3}wN3HrVrzam#3EBv+aH`MTzta-h&NP>ss@MNgkI*!IW94-cCgw^8*dcO?;TNojI zWatG%;eRlOG1{I%Gj8iOa0>Kbiw#^tqMe2>9jyq2jToqQ&@+;Ng<3ZW8kuT|{OZqQ zO>e{hQ;=(9p_G7CD}cWg^mCvh#$Il;1|$1W1WvJtOvQ8qF&)jlpT_L9+QLlZGBE;Z z4ai1lad%}aT@;TN5g`>$kX8?5djh?wC;r=4p{*LLDn@RRunu?QOy)51gPTCiZ&^2r z`|&{2N>+}m(Qh!$l#4r7t0boIwbpzX^;Sm3+`j~67keZtQ;O$=dCX`N=6=?MuDXFu z)pvGj0cw|V`6e=7i`lpKDd!R#NmZi??u_VQx9REyO_Q~(DlV<8PF@qe!;)(%iTu)( z%nR3v6l_k)3RleU1uizWv?3F)YcEhoXv6GsSdy-lr$*ft^_erUD;_k{+#Y)8`^ zizCY;!o;4IS0jWoFv`Z91uHVF5Te)ppaKtSWwOMcRW4{a0-bmODg21eRPA(~b zFe2lHsAT#6%qPAq{}Xi>i#0>;gnblGx}0vxh#=KCh7F z`fc6g;-ckz^wxH!_4s093?X!ksDq=X{m5fVhVjZ$pTaG4`{OnE)R4`cryGABlx<1o zu4G?ClAKLM`*}~hF2@($4_ezNYChhhx4K-+kI9+2NWtt3%?wEc_%mmgz@fh^=vgYl z_Vz?blKjD1ro3LWTFgiz@te|td+yJ_IKOD`#a;R6k)OuTv~FvPuvX_=yt?t z2Z0${i$Cx$p@!YafQ^yjLFaQ#)<{h@
IhyN)#Ci@fCOU~cg^bz+Km;?a5 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 [ + #it.body + #v(0.5em) +] + += Introduction + +Folidity features model-first approach in coding and design of smart contracts. This can be faciliated by numerous techniques that have been actively researched in the fields of symbolic execution, model-bounded verification, static analysis, etc. + +As a good starting point, it was decided to opt-in for symbolic execution, static analysis and bounded model checking. + += Verification techniques + +A typical program in folidity consists of data structures that describe models, states, and function that can interact with each other. Models are one of core structures that provide the model consistency guarantee in folidity. States can encapsulte different of the same models and describe explicit state transition or state mutations as part of program execution, and functions are the driving points in program execution. Functions declares and describe the state transitions. + +One of the core pieces in the workflow aforementioned is the model bounds that consist of individual boolean constraints. As shown below: + +``` +# Some model and its constraints +model ModelA { + x: int, + y: int +} st [ + x > 10, + y < 5 +] +# A state that encapsulates a model and provides its own constraints. +state StateA(ModelA) st [ + x < y +] +# A function that describes mutation. +fn () mutate(value: int) when (StateA s) -> StateA +st [ + value > 100, + value < 100, +] { ... } + +``` + +Let's break down how each of the selected techniques can be applied to the program written in Folidity. + + +As a good starting point, we can perform a static analysis and verify that the program statements, declarations and constraints are valid and consistent. + +A a simple approach is to perform semantic analysis that carries out type checking and verfication of correct state transition in the function body. Specifically, if `mutate()` expect to return `StateA`, but instead it perform a state transition to `StateB` we can already detect that at a compile time. + +The next stage of the analysis involves verification of the consistency of models described. + +We can generalise the approach using the following mathematical model. + +We can describe some verification system $bold(italic("VS"))$ as +$bold(italic("VS")) = angle.l bold(Mu), bold(Epsilon), bold(Upsilon), Theta, Tau_Mu, Tau_(Epsilon, {Epsilon, Mu}), Tau_(Upsilon, Epsilon) angle.r$ where +- $bold(Mu)$ - set of models in the system. +- $bold(Epsilon)$ - set of states in the system +- $bold(Upsilon)$ - set of functions in the system. +- $Theta$ - set of of constraint blocks in the system, where $Theta[bold(Mu)]$ corresponds to the set of constraints for models, $Theta[bold(Epsilon)]$ - state constraints and $Theta[bold(Upsilon)]$ function constraints. +- $Tau_Mu$ - a relation $Tau: bold(Mu) harpoon.rt bold(Mu)$ describing a model inheritance. +- $Tau_(Epsilon, {Epsilon, Mu})$ - a relation $Tau: bold(Epsilon) harpoon.rt {bold(Epsilon), bold(Mu)}$ describing any state transition bounds and encapsulated models in states, that is some state `S'` can only be transitioned to from the specified state `S`, and state some state `S` can encapsulate some model `M` +- $Tau_(Upsilon, Epsilon)$ - a relation $Tau: bold(Upsilon) harpoon.rt bold(Epsilon)$ describing any state transition bounds for states $bold(Epsilon)$ in functions $bold(Upsilon)$ + +In particular, $forall mu in bold(Mu) " " exists theta in Theta[mu]$ where $theta$ is a set of constraints for $mu$, and corresponding logic can be applied for elements of $Epsilon$ and $Upsilon$. + +Then, to verify consistency of the system, we first need to verify the following satisfability _Sat_: + +$ forall mu in bold(Mu) \ +exists theta in Theta[mu] \ +"s.t." theta = {c_0, c_1, ..., c_k} \ +(and.big_(i) c_i) => italic("Sat") $ +#pagebreak() +We can define the following check by some functions $rho(theta): Theta -> {italic("Sat"), italic("Unsat")}$ + +which yields the following proof: +$ +exists theta in Theta[e] \ +"s.t." theta = {c_0, c_1, ..., c_k} \ +(and.big_(i) c_i) => italic("Sat or Unsat") +$ + +This allows to validate the next property of $bold(italic("VS"))$ +$ +A = { bold(Mu) union bold(Epsilon) union Upsilon } \ +A = { e_0, e_1, ..., e_k } \ +(and.big_(i) rho(Theta[e_i]) )=> italic("Sat or Unsat") +$ + +The next stage is to verify co-dependent symbols in the system for satisfability of their respective constraints. + +Let's look at the models $bold(Mu)$, we want to ensure that +$ +"if for some" m in Mu, m' in Mu \ +exists (m, m') in Tau_Mu \ +"s.t." rho(m) times rho(m') = (italic("Sat"), italic("Sat")) \ +"and" theta = Theta[m] union Theta[m'] \ +rho(theta) => italic("Sat") +$ + +Very similar verification can applied to $Tau_(Upsilon, Epsilon)$. + +For $Tau_(Epsilon, {Epsilon, Mu})$, the constraints can be extracted in the following way: + +$ +"if for some" epsilon in Epsilon, epsilon' in Epsilon \ +exists (epsilon, epsilon') in Tau_(Epsilon, {Epsilon, Mu}) \ +"s.t." rho(epsilon) times rho(epsilon') times rho(mu) = (italic("Sat"), italic("Sat")) \ +"and" theta = Theta[epsilon] union Theta[epsilon'] \ +rho(theta) => italic("Sat") +$ + +#pagebreak() +Similarly +$ +"if for some" epsilon in Epsilon, mu in Mu \ +exists (epsilon, mu) in Tau_(Epsilon, {Epsilon, Mu}) \ +"s.t." rho(epsilon) times rho(mu) = (italic("Sat"), italic("Sat")) \ +"and" theta = Theta[epsilon] union Theta[mu] \ +rho(theta) => italic("Sat") +$ + +After the completing verification of `Tau` relations for consistency, we can provide a mathematical guarantee that *_VS_* has been modelled consistently. + +Having verified the constraints, we can leverage them as the guards during state transions and can apply proofs from _temporal logic_ to verify that the described state transitions will take place under the described constraints. + +As the final stage, we can perform the symbolic execution of instructions in the function bodies with the constraints loaded in the global context of the system. Having tracked the states of different symbols, we can verify each function for reachability for described state transitions and provide strong guanratees of functional correctness of the system described in the smart contract. \ No newline at end of file diff --git a/crates/diagnostics/src/lib.rs b/crates/diagnostics/src/lib.rs index cf86aef..b67628a 100644 --- a/crates/diagnostics/src/lib.rs +++ b/crates/diagnostics/src/lib.rs @@ -14,13 +14,13 @@ pub fn disable_pretty_print() { yansi::disable(); } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq)] pub enum ErrorType { Lexer, Parser, Semantics, Type, - Functional, + Verification, } impl Display for ErrorType { @@ -31,12 +31,12 @@ impl Display for ErrorType { ErrorType::Parser => word("Parser error"), ErrorType::Semantics => word("Semantic error"), ErrorType::Type => word("Type error"), - ErrorType::Functional => word("Functional error"), + ErrorType::Verification => word("Verification error"), } } } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq)] pub enum Level { Info, Warning, @@ -54,7 +54,7 @@ impl<'a> From for ariadne::ReportKind<'a> { } /// Error report. -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq)] pub struct Report { /// Location of an error pub loc: Span, @@ -64,6 +64,10 @@ pub struct Report { pub level: Level, /// Message of an error pub message: String, + /// Additional error. + pub additional_info: Vec, + /// Helping note for the message. + pub note: String, } impl Report { @@ -74,6 +78,8 @@ impl Report { error_type: ErrorType::Lexer, level: Level::Error, message, + additional_info: vec![], + note: String::from("Consider changing structure to adhere to language grammar."), } } @@ -84,6 +90,8 @@ impl Report { error_type: ErrorType::Parser, level: Level::Error, message, + additional_info: vec![], + note: String::from("Consider changing structure to adhere to language grammar."), } } @@ -94,6 +102,8 @@ impl Report { error_type: ErrorType::Semantics, level: Level::Error, message, + additional_info: vec![], + note: String::from("Consider changing structure to adhere to language grammar."), } } @@ -104,6 +114,8 @@ impl Report { error_type: ErrorType::Semantics, level: Level::Warning, message, + additional_info: vec![], + note: String::from("Consider rewriting the code block to reduce syntactical overhead."), } } @@ -114,16 +126,37 @@ impl Report { error_type: ErrorType::Type, level: Level::Error, message, + additional_info: vec![], + note: String::from("Consider rewriting the expression to match the types."), } } - /// Build a report from the functional error. - pub fn func_error(loc: Span, message: String) -> Self { + /// Build a report from the verification error. + pub fn ver_error(loc: Span, message: String) -> Self { Self { loc, - error_type: ErrorType::Functional, + error_type: ErrorType::Verification, level: Level::Error, message, + additional_info: vec![], + note: String::from("Consider revising the constraints for validity."), + } + } + + /// Build a report from the verification error with additional info. + pub fn ver_error_with_extra( + loc: Span, + message: String, + errs: Vec, + note: String, + ) -> Self { + Self { + loc, + error_type: ErrorType::Verification, + level: Level::Error, + message, + additional_info: errs, + note, } } } diff --git a/crates/folidity/Cargo.toml b/crates/folidity/Cargo.toml index c7af7e6..cfa3c01 100644 --- a/crates/folidity/Cargo.toml +++ b/crates/folidity/Cargo.toml @@ -14,6 +14,7 @@ version.workspace = true [dependencies] folidity-parser = { workspace = true } folidity-semantics = { workspace = true } +folidity-verifier = { workspace = true } folidity-diagnostics = { workspace = true } clap = { workspace = true } ariadne = { workspace = true } diff --git a/crates/folidity/src/cmd/check.rs b/crates/folidity/src/cmd/check.rs index 3bb80b0..e94750a 100644 --- a/crates/folidity/src/cmd/check.rs +++ b/crates/folidity/src/cmd/check.rs @@ -1,16 +1,14 @@ use anyhow::Result; -use ariadne::{ - Color, - Fmt, -}; use folidity_parser::parse; -use folidity_semantics::resolve_semantics; +use folidity_semantics::ContractDefinition; use std::ffi::OsString; +use yansi::Paint; use clap::Args; use super::{ build_report, + exec, read_contract, }; @@ -28,21 +26,20 @@ impl CheckCommand { let parse_result = parse(&contract_contents); match parse_result { Ok(tree) => { - let def = resolve_semantics(&tree); - if def.diagnostics.is_empty() { - println!("{}", "Contract has no known errors".fg(Color::Green)); - Ok(()) - } else { - build_report( - &contract_contents, - &def.diagnostics, - self.contract.to_str().unwrap(), - ); - anyhow::bail!("Syntactical checking failed.") - } + let _ = exec::<_, _, ContractDefinition>( + &tree, + &contract_contents, + self.contract.to_str().expect("Valid path name."), + )?; + println!("{}", "Program is semantically valid.".green().bold()); + Ok(()) } Err(errors) => { - build_report(&contract_contents, &errors, self.contract.to_str().unwrap()); + build_report( + &contract_contents, + &errors, + self.contract.to_str().expect("Valid path name."), + ); anyhow::bail!("Error during parsing") } } diff --git a/crates/folidity/src/cmd/mod.rs b/crates/folidity/src/cmd/mod.rs index b667fbd..ce9a5c9 100644 --- a/crates/folidity/src/cmd/mod.rs +++ b/crates/folidity/src/cmd/mod.rs @@ -10,12 +10,21 @@ use anyhow::{ Result, }; use clap::Subcommand; -use folidity_diagnostics::Report; +use folidity_diagnostics::{ + Level, + Report, + Span, +}; +use folidity_semantics::{ + CompilationError, + Runner, +}; use yansi::Paint; use self::{ check::CheckCommand, new::NewCommand, + verify::VerifyCommand, }; use ariadne::{ Color, @@ -26,11 +35,13 @@ use ariadne::{ mod check; mod new; +mod verify; #[derive(Subcommand)] pub enum Commands { New(NewCommand), Check(CheckCommand), + Verify(VerifyCommand), } impl Commands { @@ -38,6 +49,7 @@ impl Commands { match self { Commands::New(cmd) => cmd.run(), Commands::Check(cmd) => cmd.run(), + Commands::Verify(cmd) => cmd.run(), } } } @@ -60,15 +72,45 @@ pub fn read_contract(path_str: &OsString) -> Result { pub fn build_report(content: &str, diagnostics: &[Report], file_name: &str) { for r in diagnostics { + let notes: Vec> = r + .additional_info + .iter() + .filter(|x| x.level != Level::Info) + .map(|ra| { + Label::new((file_name, ra.loc.clone())) + .with_message(ra.message.clone()) + .with_color(Color::Yellow) + }) + .collect(); + let title = format!("{} detected.", r.error_type.cyan().underline(),); PrettyReport::build(r.level.clone().into(), file_name, r.loc.start) - .with_message(format!("{} detected.", r.error_type.cyan().underline())) + .with_message(title) .with_label( Label::new((file_name, r.loc.clone())) .with_message(r.message.clone()) .with_color(Color::Yellow), ) + .with_labels(notes) + .with_note(r.note.clone()) .finish() .print((file_name, Source::from(content))) .unwrap(); } } + +/// Execute the compilation stage using the runner. +pub fn exec>( + input: &I, + contract_contents: &str, + file_name: &str, +) -> Result { + W::run(input).map_err(|e| { + let reports = e.diagnostics(); + build_report(contract_contents, reports, file_name); + match e { + CompilationError::Syntax(_) => anyhow::anyhow!("Syntactical error occurred"), + CompilationError::Formal(_) => anyhow::anyhow!("Verification failed"), + CompilationError::Emit(_) => anyhow::anyhow!("Compilation failed"), + } + }) +} diff --git a/crates/folidity/src/cmd/new.rs b/crates/folidity/src/cmd/new.rs index cf42589..8959c95 100644 --- a/crates/folidity/src/cmd/new.rs +++ b/crates/folidity/src/cmd/new.rs @@ -46,10 +46,10 @@ impl NewCommand { create_dir(&out_dir).map(|_| anyhow::anyhow!("Cannot create project directory."))?; } - let contract_content = include_bytes!("../../../../examples/counter/counter.fol"); + let contract_content = include_bytes!("../../../../examples/counter/contract.fol"); let readme_content = include_bytes!("../../../../examples/counter/README.md"); - let mut contract_file = File::create(Path::new(&out_dir).join("counter.fol"))?; + let mut contract_file = File::create(Path::new(&out_dir).join("contract.fol"))?; contract_file.write_all(contract_content)?; let mut readme_file = File::create(Path::new(&out_dir).join("README.md"))?; diff --git a/crates/folidity/src/cmd/verify.rs b/crates/folidity/src/cmd/verify.rs new file mode 100644 index 0000000..abee4e6 --- /dev/null +++ b/crates/folidity/src/cmd/verify.rs @@ -0,0 +1,57 @@ +use anyhow::{ + Context, + Result, +}; +use folidity_parser::parse; +use folidity_semantics::ContractDefinition; +use folidity_verifier::SymbolicExecutor; +use std::ffi::OsString; +use yansi::Paint; + +use clap::Args; + +use super::{ + build_report, + exec, + read_contract, +}; + +/// Check the contract's code for errors +/// and validate model consistency using static analysis and symbolic execution. +#[derive(Args)] +pub struct VerifyCommand { + /// Contract's file name + #[clap(value_parser)] + contract: OsString, +} + +impl VerifyCommand { + pub fn run(&self) -> Result<()> { + let contract_contents = read_contract(&self.contract)?; + let parse_result = parse(&contract_contents); + let file_name = self.contract.to_str().context("Invalid filename")?; + match parse_result { + Ok(tree) => { + let contract = + exec::<_, _, ContractDefinition>(&tree, &contract_contents, file_name)?; + + exec::<_, _, SymbolicExecutor>(&contract, &contract_contents, file_name)?; + println!( + "{}", + "Program model is consistent and has satisfiable constraints." + .green() + .bold() + ); + Ok(()) + } + Err(errors) => { + build_report( + &contract_contents, + &errors, + self.contract.to_str().expect("Valid path name."), + ); + anyhow::bail!("Error during parsing") + } + } + } +} diff --git a/crates/parser/src/ast.rs b/crates/parser/src/ast.rs index 2a2b930..82be9bf 100644 --- a/crates/parser/src/ast.rs +++ b/crates/parser/src/ast.rs @@ -1,9 +1,11 @@ use super::Span; use derive_node::Node; +use folidity_diagnostics::Report; #[derive(Clone, Debug, PartialEq)] pub struct Source { pub declarations: Vec, + pub diagnostics: Vec, } #[derive(Clone, Debug, PartialEq, Node, Default)] diff --git a/crates/parser/src/folidity.lalrpop b/crates/parser/src/folidity.lalrpop index a42251f..aa1e972 100644 --- a/crates/parser/src/folidity.lalrpop +++ b/crates/parser/src/folidity.lalrpop @@ -7,7 +7,7 @@ use lalrpop_util::ParseError; grammar<'input, 'err>(errors: &'err mut Vec, LexicalError>>); pub FolidityTree: ast::Source = { - Declaration* => ast::Source { declarations: <> } + Declaration* => ast::Source { declarations: <>, diagnostics: vec![] } } Declaration: ast::Declaration = { diff --git a/crates/parser/src/lib.rs b/crates/parser/src/lib.rs index abbc6d7..01de0ba 100644 --- a/crates/parser/src/lib.rs +++ b/crates/parser/src/lib.rs @@ -15,6 +15,9 @@ use lexer::{ }; use std::ops::Range; +#[cfg(test)] +mod tests; + pub type Span = Range; lalrpop_mod!(pub folidity); @@ -44,8 +47,11 @@ pub fn parse(src: &str) -> Result> { reports.push(parser_error_to_report(&e)); Err(reports) } - Ok(_) if !reports.is_empty() => Err(reports), - Ok(tree) => Ok(tree), + // Ok(_) if !reports.is_empty() => Err(reports), + Ok(mut tree) => { + tree.diagnostics.extend(reports); + Ok(tree) + } } } @@ -114,6 +120,3 @@ fn parser_error_to_report(error: &ParseError, LexicalError>) -> ParseError::User { error } => Report::from(error.clone()), } } - -#[cfg(test)] -mod tests; diff --git a/crates/parser/src/tests.rs b/crates/parser/src/tests.rs index 057e697..e7e61f8 100644 --- a/crates/parser/src/tests.rs +++ b/crates/parser/src/tests.rs @@ -182,6 +182,7 @@ fn test_factorial() -> Result<(), String> { fn test_factorial_tree() -> Result<(), String> { let tree = unwrap_tree(FACTORIAL_SRC)?; let parsed = Source { + diagnostics: vec![], declarations: vec![ Declaration::StateDeclaration(Box::new(StateDeclaration { loc: 1..17, @@ -427,6 +428,7 @@ fn () lists() { fn test_lists() -> Result<(), String> { let tree = unwrap_tree(LISTS_SRC)?; let parsed = Source { + diagnostics: vec![], declarations: vec![Declaration::FunDeclaration(Box::new(FunctionDeclaration { loc: 1..148, is_init: false, @@ -583,6 +585,7 @@ fn test_structs_enums() -> Result<(), String> { let parsed = unwrap_tree(STRUCTS_SRC)?; let tree = Source { + diagnostics: vec![], declarations: vec![ Declaration::StructDeclaration(Box::new(StructDeclaration { loc: 1..47, diff --git a/crates/semantics/src/ast.rs b/crates/semantics/src/ast.rs index 493e61f..45617de 100644 --- a/crates/semantics/src/ast.rs +++ b/crates/semantics/src/ast.rs @@ -17,6 +17,7 @@ use num_rational::BigRational; use crate::{ contract::ContractDefinition, + expression::resolve_nested_fields, global_symbol::SymbolInfo, symtable::Scope, }; @@ -180,6 +181,13 @@ pub struct StateBound { pub to: Vec, } +#[derive(Clone, Debug, PartialEq)] +pub struct Bounds { + pub loc: Span, + /// Final state + pub exprs: Vec, +} + #[derive(Clone, Debug)] pub struct Function { /// Location span of the function. @@ -198,7 +206,7 @@ pub struct Function { /// List of parameters. pub params: IndexMap, /// Function logical bounds. - pub bounds: Vec, + pub bounds: Option, /// Bounds for the state transition. pub state_bound: Option, /// The body of the function. @@ -227,7 +235,7 @@ impl Function { params, state_bound, body: Vec::new(), - bounds: Vec::new(), + bounds: None, scope: Scope::default(), } } @@ -253,7 +261,7 @@ pub struct StructDeclaration { pub fields: Vec, } -#[derive(Clone, Debug, PartialEq, Node)] +#[derive(Clone, Debug, Node)] pub struct ModelDeclaration { /// Location span of the model. pub loc: Span, @@ -265,9 +273,21 @@ pub struct ModelDeclaration { /// Identified as a index in the global symbol table. pub parent: Option, /// Model logical bounds. - pub bounds: Vec, + pub bounds: Option, /// Is the parent model recursive. pub recursive_parent: bool, + /// Scope table for the bounds context. + pub scope: Scope, +} + +impl ModelDeclaration { + /// Extract fields and any nested fields from parents. + pub fn fields(&self, contract: &ContractDefinition) -> Vec { + let mut fields = vec![]; + resolve_nested_fields(&self.parent, &mut fields, contract); + fields.extend_from_slice(&self.fields); + fields + } } #[derive(Clone, Debug, PartialEq)] @@ -278,7 +298,7 @@ pub enum StateBody { Model(SymbolInfo), } -#[derive(Clone, Debug, PartialEq, Node)] +#[derive(Clone, Debug, Node)] pub struct StateDeclaration { /// Location span of the model. pub loc: Span, @@ -289,10 +309,26 @@ pub struct StateDeclaration { /// From which state we can transition. /// e.g `StateA st` pub from: Option<(SymbolInfo, Option)>, - /// Model logical bounds. - pub bounds: Vec, + /// State logical bounds. + pub bounds: Option, /// Is the parent state recursive. pub recursive_parent: bool, + /// Scope table for the bounds context. + pub scope: Scope, +} + +impl StateDeclaration { + /// Extract fields of the state and any nested fields that can come from the model. + pub fn fields(&self, contract: &ContractDefinition) -> Vec { + match &self.body { + Some(StateBody::Raw(params)) => params.clone(), + Some(StateBody::Model(s)) => { + let model = &contract.models[s.i]; + model.fields(contract) + } + None => vec![], + } + } } #[derive(Clone, Debug, PartialEq, Node)] @@ -520,6 +556,7 @@ impl TypeVariant { /// Extracts literal value, `T`, from the expression, if possible. pub trait TryGetValue { + #[allow(clippy::result_unit_err)] fn try_get(&self) -> Result; } diff --git a/crates/semantics/src/bounds.rs b/crates/semantics/src/bounds.rs index 06543e5..47c7b9c 100644 --- a/crates/semantics/src/bounds.rs +++ b/crates/semantics/src/bounds.rs @@ -2,15 +2,12 @@ use folidity_parser::ast as parsed_ast; use crate::{ ast::{ + Bounds, Expression, - StateBody, TypeVariant, }, contract::ContractDefinition, - expression::{ - expression, - resolve_nested_fields, - }, + expression::expression, global_symbol::{ GlobalSymbol, SymbolInfo, @@ -39,12 +36,7 @@ pub fn resolve_bounds(contract: &mut ContractDefinition, delay: &DelayedDeclarat }), ScopeContext::DeclarationBounds, ); - let mut fields = Vec::new(); - let parent_sym = contract.models[model_delay.i].parent.clone(); - resolve_nested_fields(&parent_sym, &mut fields, contract); - let model_fields = contract.models[model_delay.i].fields.clone(); - - fields.extend(model_fields); + let fields = contract.models[model_delay.i].fields(contract); for f in fields { scope.add( @@ -62,7 +54,11 @@ pub fn resolve_bounds(contract: &mut ContractDefinition, delay: &DelayedDeclarat continue; }; - contract.models[model_delay.i].bounds = bounds; + contract.models[model_delay.i].scope = scope; + contract.models[model_delay.i].bounds = Some(Bounds { + loc: st.loc.clone(), + exprs: bounds, + }); } for state_delay in &delay.states { @@ -91,30 +87,29 @@ pub fn resolve_bounds(contract: &mut ContractDefinition, delay: &DelayedDeclarat ); } - if let Some(body) = &state.body { - let members = match body { - StateBody::Raw(params) => params.clone(), - StateBody::Model(s) => contract.models[s.i].fields.clone(), - }; + let members = state.fields(contract); - members.iter().for_each(|p| { - scope.add( - &p.name, - p.ty.ty.clone(), - None, - VariableKind::Local, - false, - scope.current, - contract, - ); - }); - } + members.iter().for_each(|p| { + scope.add( + &p.name, + p.ty.ty.clone(), + None, + VariableKind::Local, + false, + scope.current, + contract, + ); + }); let Ok(bounds) = resolve_bound_exprs(&st.expr, &mut scope, contract) else { continue; }; - contract.states[state_delay.i].bounds = bounds; + contract.states[state_delay.i].bounds = Some(Bounds { + loc: st.loc.clone(), + exprs: bounds, + }); + contract.states[state_delay.i].scope = scope; } for func_delay in &delay.functions { @@ -127,7 +122,10 @@ pub fn resolve_bounds(contract: &mut ContractDefinition, delay: &DelayedDeclarat } else { vec![] }; - contract.functions[func_delay.i].bounds = bounds; + contract.functions[func_delay.i].bounds = Some(Bounds { + loc: st.loc.clone(), + exprs: bounds, + }); } std::mem::swap(&mut scope, &mut contract.functions[func_delay.i].scope); diff --git a/crates/semantics/src/contract.rs b/crates/semantics/src/contract.rs index b0da3f9..c32aef9 100644 --- a/crates/semantics/src/contract.rs +++ b/crates/semantics/src/contract.rs @@ -11,14 +11,17 @@ use folidity_parser::{ }; use indexmap::IndexMap; -use crate::ast::{ - EnumDeclaration, - Function, - ModelDeclaration, - Param, - StateBody, - StateDeclaration, - StructDeclaration, +use crate::{ + ast::{ + EnumDeclaration, + Function, + ModelDeclaration, + Param, + StateBody, + StateDeclaration, + StructDeclaration, + }, + symtable::Scope, }; use crate::{ @@ -307,8 +310,9 @@ impl ContractDefinition { name: item.name.clone(), fields: Vec::new(), parent: None, - bounds: Vec::new(), + bounds: None, recursive_parent: false, + scope: Scope::default(), }); delay @@ -337,8 +341,9 @@ impl ContractDefinition { name: item.name.clone(), body: None, from: None, - bounds: Vec::new(), + bounds: None, recursive_parent: false, + scope: Scope::default(), }); delay @@ -403,9 +408,7 @@ impl ContractDefinition { format!("Expected to find {}, found {}", expected, found), )); }; - let Some(sym) = GlobalSymbol::lookup(self, ident) else { - return None; - }; + let sym = GlobalSymbol::lookup(self, ident)?; match &kind { SymbolKind::Struct => { if let GlobalSymbol::Struct(s) = sym { diff --git a/crates/semantics/src/expression/complex.rs b/crates/semantics/src/expression/complex.rs index 4d68df8..cbf62f4 100644 --- a/crates/semantics/src/expression/complex.rs +++ b/crates/semantics/src/expression/complex.rs @@ -39,10 +39,7 @@ use crate::{ }, }; -use super::{ - expression, - resolve_nested_fields, -}; +use super::expression; /// Resolve variable to a AST expression. /// @@ -122,10 +119,8 @@ pub fn resolve_variable( returns: f_ty.returns.clone(), }), })) - } else { - let var_id = find_var(ident, contract, scope)?; + } else if let Some((var_id, _)) = scope.find_var_index(&ident.name) { let sym = scope.find_symbol(&var_id).unwrap(); - if &sym.ty != ty { report_type_mismatch(&expected_ty, &[sym.ty.clone()], &ident.loc, contract); return Err(()); @@ -136,25 +131,65 @@ pub fn resolve_variable( element: var_id, ty: sym.ty.clone(), })) + } else if let Some(sym) = &contract.find_global_symbol(ident, SymbolKind::Enum) { + // todo: rewrite this to reduce code duplication. + let enum_ty = TypeVariant::Enum(sym.clone()); + if &enum_ty != ty { + report_type_mismatch(&expected_ty, &[enum_ty], &ident.loc, contract); + return Err(()); + } else { + Ok(Expression::Variable(UnaryExpression { + loc: ident.loc.clone(), + element: sym.i, + ty: enum_ty, + })) + } + } else { + contract.diagnostics.push(Report::semantic_error( + ident.loc.clone(), + format!( + "`{}`: Variable is not declared or inaccessible.", + ident.name.yellow().bold() + ), + )); + Err(()) } } ExpectedType::Dynamic(tys) => { - let var_id = find_var(ident, contract, scope)?; - let sym = scope.find_symbol(&var_id).unwrap(); + if let Some((var_id, _)) = scope.find_var_index(&ident.name) { + let sym = scope.find_symbol(&var_id).unwrap(); + if !tys.is_empty() && !tys.contains(&sym.ty) { + report_type_mismatch(&expected_ty, &[sym.ty.clone()], &ident.loc, contract); + return Err(()); + } - if !tys.is_empty() && !tys.contains(&sym.ty) { - contract.diagnostics.push(Report::type_error( + Ok(Expression::Variable(UnaryExpression { + loc: ident.loc.clone(), + element: var_id, + ty: sym.ty.clone(), + })) + } else if let Some(sym) = &contract.find_global_symbol(ident, SymbolKind::Enum) { + let ty = TypeVariant::Enum(sym.clone()); + if !tys.is_empty() && !tys.contains(&ty) { + report_type_mismatch(&expected_ty, &[ty], &ident.loc, contract); + return Err(()); + } else { + Ok(Expression::Variable(UnaryExpression { + loc: ident.loc.clone(), + element: sym.i, + ty, + })) + } + } else { + contract.diagnostics.push(Report::semantic_error( ident.loc.clone(), - String::from("Variable is not of any allowed types."), + format!( + "`{}`: Variable is not declared or inaccessible.", + ident.name.yellow().bold() + ), )); - return Err(()); + Err(()) } - - Ok(Expression::Variable(UnaryExpression { - loc: ident.loc.clone(), - element: var_id, - ty: sym.ty.clone(), - })) } ExpectedType::Empty => { contract.diagnostics.push(Report::semantic_error( @@ -183,7 +218,7 @@ pub fn resolve_variable( /// - Return types mismatch pub fn resolve_func_call( ident: &Identifier, - args: &Vec, + args: &[parsed_ast::Expression], loc: Span, scope: &mut Scope, contract: &mut ContractDefinition, @@ -394,19 +429,8 @@ pub fn resolve_member_access( let (mty, pos) = match &var.ty { TypeVariant::State(s) => { let state_decl = &contract.states[s.i].clone(); - if let Some(body) = &state_decl.body { - let members = match body { - StateBody::Raw(params) => params.clone(), - StateBody::Model(s) => { - let mut fields = Vec::new(); - let parent = contract.models[s.i].parent.clone(); - - resolve_nested_fields(&parent, &mut fields, contract); - - fields.extend(contract.models[s.i].fields.clone()); - fields - } - }; + if state_decl.body.is_some() { + let members = state_decl.fields(contract); if let Some(pos) = members.iter().position(|m| m.name.name == member.name) { let field = &members[pos]; @@ -444,12 +468,7 @@ pub fn resolve_member_access( } } TypeVariant::Model(s) => { - let mut members = Vec::new(); - let parent = contract.models[s.i].parent.clone(); - - resolve_nested_fields(&parent, &mut members, contract); - - members.extend(contract.models[s.i].fields.clone()); + let members = contract.models[s.i].fields(contract); if let Some(pos) = members.iter().position(|m| m.name.name == member.name) { let field = &members[pos]; @@ -566,7 +585,7 @@ pub fn resolve_pipe( /// - Invalid number of type of arguments. pub fn resolve_struct_init( ident: &Identifier, - args: &Vec, + args: &[parsed_ast::Expression], auto_object: &Option, loc: Span, contract: &mut ContractDefinition, @@ -590,18 +609,14 @@ pub fn resolve_struct_init( contract: &mut ContractDefinition| -> Result<(Vec, Option), ()> { let model_decl = contract.models[s.i].clone(); - let mut fields = Vec::new(); + let fields = &model_decl.fields(contract); let parent = model_decl.parent; - resolve_nested_fields(&parent, &mut fields, contract); - - fields.extend(model_decl.fields); - if fields.len() != args.len() { report_mismatched_args_len(&loc, fields.len(), args.len(), contract); return Err(()); } - let (parsed_args, error_args) = parse_args(args, &fields, scope, contract); + let (parsed_args, error_args) = parse_args(args, fields, scope, contract); if error_args { contract.diagnostics.push(Report::type_error( @@ -832,21 +847,3 @@ fn report_mismatched_args_len( ), )); } - -fn find_var( - ident: &Identifier, - contract: &mut ContractDefinition, - scope: &mut Scope, -) -> Result { - let Some((v_i, _)) = scope.find_var_index(&ident.name) else { - contract.diagnostics.push(Report::semantic_error( - ident.loc.clone(), - format!( - "`{}`: Variable is not declared or inaccessible.", - ident.name.yellow().bold() - ), - )); - return Err(()); - }; - Ok(v_i) -} diff --git a/crates/semantics/src/expression/eval.rs b/crates/semantics/src/expression/eval.rs index 445b971..c7e9762 100644 --- a/crates/semantics/src/expression/eval.rs +++ b/crates/semantics/src/expression/eval.rs @@ -586,7 +586,7 @@ where let a = TryGetValue::::try_get(u.left.as_ref())?; let b = TryGetValue::::try_get(u.right.as_ref())?; let result = func(a, b).ok_or_else(|| { - contract.diagnostics.push(Report::func_error( + contract.diagnostics.push(Report::semantic_error( loc.clone(), String::from("The operation is invalid. Probably resulted from the division by 0 or overflow/underflow."), )); diff --git a/crates/semantics/src/expression/mod.rs b/crates/semantics/src/expression/mod.rs index 2c5373c..f1694ee 100644 --- a/crates/semantics/src/expression/mod.rs +++ b/crates/semantics/src/expression/mod.rs @@ -293,7 +293,7 @@ pub fn dynamic_to_concrete_type(tys: &[TypeVariant], allowed: &[TypeVariant]) -> pub fn resolve_nested_fields( s: &Option, fields: &mut Vec, - contract: &mut ContractDefinition, + contract: &ContractDefinition, ) { if let Some(parent_sym) = s { let parent_decl_fields = contract.models[parent_sym.i].fields.clone(); diff --git a/crates/semantics/src/expression/ops.rs b/crates/semantics/src/expression/ops.rs index 0c4aab8..3048180 100644 --- a/crates/semantics/src/expression/ops.rs +++ b/crates/semantics/src/expression/ops.rs @@ -358,7 +358,7 @@ pub fn resolve_equality( match ty { TypeVariant::Bool => { let concrete = - coerce_type(left, right, &loc, &vec![], allowed_tys, scope, contract)?; + coerce_type(left, right, &loc, &[], allowed_tys, scope, contract)?; let resolved_left = expression(left, concrete.clone(), scope, contract); let resolved_right = expression(right, concrete.clone(), scope, contract); @@ -444,7 +444,7 @@ pub fn resolve_inequality( match ty { TypeVariant::Bool => { let concrete = - coerce_type(left, right, &loc, &vec![], allowed_tys, scope, contract)?; + coerce_type(left, right, &loc, &[], allowed_tys, scope, contract)?; let resolved_left = expression(left, concrete.clone(), scope, contract); let resolved_right = expression(right, concrete.clone(), scope, contract); @@ -526,7 +526,7 @@ pub fn resolve_greater( match ty { TypeVariant::Bool => { let concrete = - coerce_type(left, right, &loc, &vec![], allowed_tys, scope, contract)?; + coerce_type(left, right, &loc, &[], allowed_tys, scope, contract)?; let resolved_left = expression(left, concrete.clone(), scope, contract); let resolved_right = expression(right, concrete.clone(), scope, contract); @@ -608,7 +608,7 @@ pub fn resolve_less( match ty { TypeVariant::Bool => { let concrete = - coerce_type(left, right, &loc, &vec![], allowed_tys, scope, contract)?; + coerce_type(left, right, &loc, &[], allowed_tys, scope, contract)?; let resolved_left = expression(left, concrete.clone(), scope, contract); let resolved_right = expression(right, concrete.clone(), scope, contract); @@ -690,7 +690,7 @@ pub fn resolve_greater_eq( match ty { TypeVariant::Bool => { let concrete = - coerce_type(left, right, &loc, &vec![], allowed_tys, scope, contract)?; + coerce_type(left, right, &loc, &[], allowed_tys, scope, contract)?; let resolved_left = expression(left, concrete.clone(), scope, contract); let resolved_right = expression(right, concrete.clone(), scope, contract); @@ -772,7 +772,7 @@ pub fn resolve_less_eq( match ty { TypeVariant::Bool => { let concrete = - coerce_type(left, right, &loc, &vec![], allowed_tys, scope, contract)?; + coerce_type(left, right, &loc, &[], allowed_tys, scope, contract)?; let resolved_left = expression(left, concrete.clone(), scope, contract); let resolved_right = expression(right, concrete.clone(), scope, contract); @@ -1147,7 +1147,7 @@ fn coerce_type( left: &parsed_ast::Expression, right: &parsed_ast::Expression, loc: &Span, - tys: &Vec, + tys: &[TypeVariant], allowed_tys: &[TypeVariant], scope: &mut Scope, contract: &mut ContractDefinition, diff --git a/crates/semantics/src/functions.rs b/crates/semantics/src/functions.rs index cd1fbf0..7c0bca0 100644 --- a/crates/semantics/src/functions.rs +++ b/crates/semantics/src/functions.rs @@ -324,6 +324,7 @@ pub fn resolve_func_body( ) -> Result<(), ()> { let mut scope = Scope::default(); std::mem::swap(&mut scope, &mut contract.functions[func_i].scope); + scope.push(ScopeContext::FunctionBody); let mut resolved_stmts = Vec::new(); diff --git a/crates/semantics/src/global_symbol.rs b/crates/semantics/src/global_symbol.rs index b577c80..942bb03 100644 --- a/crates/semantics/src/global_symbol.rs +++ b/crates/semantics/src/global_symbol.rs @@ -17,7 +17,7 @@ pub enum SymbolKind { Function, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Hash, Eq)] pub enum GlobalSymbol { Struct(SymbolInfo), Model(SymbolInfo), @@ -47,6 +47,28 @@ impl GlobalSymbol { } } } + + /// Extract location. + pub fn loc(&self) -> &Span { + match self { + GlobalSymbol::Struct(s) => &s.loc, + GlobalSymbol::Model(s) => &s.loc, + GlobalSymbol::Enum(s) => &s.loc, + GlobalSymbol::State(s) => &s.loc, + GlobalSymbol::Function(s) => &s.loc, + } + } + + /// Extract symbol info. + pub fn symbol_info(&self) -> &SymbolInfo { + match self { + GlobalSymbol::Struct(s) => s, + GlobalSymbol::Model(s) => s, + GlobalSymbol::Enum(s) => s, + GlobalSymbol::State(s) => s, + GlobalSymbol::Function(s) => s, + } + } } impl Display for GlobalSymbol { @@ -76,7 +98,7 @@ impl Display for SymbolKind { } /// Global user defined symbol info. -#[derive(Debug, Clone, PartialEq, Default)] +#[derive(Debug, Clone, PartialEq, Default, Hash, Eq)] pub struct SymbolInfo { /// Locations of the global symbol. pub loc: Span, diff --git a/crates/semantics/src/lib.rs b/crates/semantics/src/lib.rs index 1c42a13..36313f8 100644 --- a/crates/semantics/src/lib.rs +++ b/crates/semantics/src/lib.rs @@ -1,45 +1,91 @@ use bounds::resolve_bounds; -use contract::ContractDefinition; +pub use contract::ContractDefinition; +use folidity_diagnostics::Report; use folidity_parser::ast::Source; +pub use folidity_parser::Span; use functions::resolve_func_body; +pub use global_symbol::{ + GlobalSymbol, + SymbolInfo, +}; +pub use types::DelayedDeclaration; + use types::check_inheritance; -mod ast; +pub mod ast; mod bounds; mod contract; mod expression; mod functions; mod global_symbol; mod statement; -mod symtable; +pub mod symtable; mod types; #[cfg(test)] mod tests; -/// Resolves the contract's parsed tree into the semantically analysed and typed-checked -/// definition. +/// Pipeline specific error during compilation. +#[derive(Debug, Clone)] +pub enum CompilationError { + /// Error occurred during parsing and/or semantic analysis. + Syntax(Vec), + /// Error ocurred during formal verification stage. + Formal(Vec), + /// Error occurred during code emission. + Emit(Vec), +} + +impl CompilationError { + /// Extract the list of reports from error variant. + pub fn diagnostics(&self) -> &Vec { + match self { + CompilationError::Syntax(r) => r, + CompilationError::Formal(r) => r, + CompilationError::Emit(r) => r, + } + } +} + +/// Program runner that performs some operations on the input and output artifacts. +/// +/// # Generic params +/// - `I` - input type +/// - `O` output type. /// /// # Errors -/// [`ContractDefinition`] may contain errors stored in the `diagnostics` field. -pub fn resolve_semantics(source: &Source) -> ContractDefinition { - let mut definition = ContractDefinition::default(); - let mut delay = definition.resolve_declarations(source); - definition.resolve_fields(&delay); +/// [`CompilationError`] variant specific to the pipeline step. +pub trait Runner { + fn run(source: &I) -> Result + where + Self: std::marker::Sized; +} - check_inheritance(&mut definition, &delay); +impl Runner for ContractDefinition { + fn run(source: &Source) -> Result { + let mut definition = ContractDefinition::default(); + definition.diagnostics.extend(source.diagnostics.clone()); + let mut delay = definition.resolve_declarations(source); + definition.resolve_fields(&delay); - // todo: add built-in function to environment. + check_inheritance(&mut definition, &delay); - // we can now resolve functions and create scopes. - definition.resolve_functions(source, &mut delay); + // todo: add built-in function to environment. - // now we can resolve model bounds on all declarations. - resolve_bounds(&mut definition, &delay); + // we can now resolve functions and create scopes. + definition.resolve_functions(source, &mut delay); - for f in &delay.functions { - let _ = resolve_func_body(&f.decl, f.i, &mut definition); - } + // now we can resolve model bounds on all declarations. + resolve_bounds(&mut definition, &delay); - definition + for f in &delay.functions { + let _ = resolve_func_body(&f.decl, f.i, &mut definition); + } + + if !definition.diagnostics.is_empty() { + return Err(CompilationError::Syntax(definition.diagnostics)); + } + + Ok(definition) + } } diff --git a/crates/semantics/src/tests.rs b/crates/semantics/src/tests.rs index 501b3a5..3393122 100644 --- a/crates/semantics/src/tests.rs +++ b/crates/semantics/src/tests.rs @@ -1,7 +1,8 @@ use crate::{ ast::TypeVariant, - resolve_semantics, symtable::VariableSym, + ContractDefinition, + Runner, }; use folidity_parser::parse; @@ -16,9 +17,13 @@ enum MyEnum { B } +model ParentModel { + a: int +} + model MyModel: ParentModel { c: int, - b: string, + b: string } state NoState(MyModel) @@ -28,10 +33,13 @@ state NoState(MyModel) fn test_first_pass() { let tree = parse(DECL_SRC).unwrap(); - let def = resolve_semantics(&tree); + let res = ContractDefinition::run(&tree); + let Ok(def) = res else { + panic!("{:#?}", res.err().unwrap()) + }; assert_eq!(def.structs.len(), 1); assert_eq!(def.enums.len(), 1); - assert_eq!(def.models.len(), 1); + assert_eq!(def.models.len(), 2); assert_eq!(def.states.len(), 1); let e = &def.enums[0]; @@ -48,6 +56,11 @@ model ParentModel { b: list } +enum MyEnum { + A, + B +} + model MyModel: ParentModel { c: int, d: string @@ -57,9 +70,13 @@ model MyModel: ParentModel { d == s"Hello World" ] -state StartState(MyModel) +state StartState(MyModel) st [ + c < 1000 +] -state SecondState(MyModel) +state SecondState(MyModel) st [ + c < 500 +] state BoundedState { field: int @@ -72,7 +89,8 @@ state BoundedState { fn (r: bool) start(init: int) when () -> (StartState s) st [ r == true, - s.c < 10 + s.c < 10, + MyEnum.A == MyEnum.A ] { let a = a"2FMLYJHYQWRHMFKRHKTKX5UNB5DGO65U57O3YVLWUJWKRE4YYJYC2CWWBY"; @@ -134,16 +152,20 @@ view(StartState s) fn int get_value() { #[test] fn test_program() { + folidity_diagnostics::disable_pretty_print(); let result = parse(WORKING); let Ok(tree) = &result else { panic!("{:#?}", &result.err().unwrap()); }; - let contract = resolve_semantics(tree); + let res = ContractDefinition::run(tree); + assert!(res.is_ok(), "{:#?}", res.err().unwrap()); + let contract = res.unwrap(); assert_eq!(contract.diagnostics.len(), 0, "{:#?}", contract.diagnostics); assert_eq!(contract.models.len(), 2); assert_eq!(contract.states.len(), 3); assert_eq!(contract.functions.len(), 5); + assert_eq!(contract.enums.len(), 1); assert_eq!(contract.structs.len(), 0); let model = contract @@ -152,7 +174,10 @@ fn test_program() { .find(|x| &x.name.name == "MyModel") .unwrap(); - assert_eq!(model.bounds.len(), 3); + let Some(bounds) = &model.bounds else { + panic!("Model should have bounds"); + }; + assert_eq!(bounds.exprs.len(), 3); let func = &contract.functions[0]; let vars: Vec<&VariableSym> = func.scope.vars.values().collect(); @@ -240,15 +265,17 @@ fn () fail_move_state() when () -> (StartState s) { #[test] fn test_err_program() { folidity_diagnostics::disable_pretty_print(); - let result = parse(NOT_WORKING); let Ok(tree) = &result else { panic!("{:#?}", &result.err().unwrap()); }; - let contract = resolve_semantics(tree); + let result = ContractDefinition::run(tree); + let Err(e) = result else { + panic!("The contract is expected to fail") + }; + let mut errors = e.diagnostics().iter().map(|r| r.message.clone()); // assert_eq!(contract.diagnostics.len(), 0, "{:#?}", contract.diagnostics); - let mut errors = contract.diagnostics.iter().map(|r| r.message.clone()); assert_eq!( "Expected function to return a value of type bool", &errors.next().unwrap() diff --git a/crates/semantics/src/types.rs b/crates/semantics/src/types.rs index 0a33dd8..363b866 100644 --- a/crates/semantics/src/types.rs +++ b/crates/semantics/src/types.rs @@ -219,7 +219,7 @@ pub fn find_user_type_recursion(contract: &mut ContractDefinition) { fn collect_edges(edges: &mut HashSet<(usize, usize, usize)>, fields: &[Param], struct_no: usize) { for (no, field) in fields.iter().enumerate() { for dependency in field.ty.ty.custom_type_dependencies() { - if edges.insert((no, dependency, struct_no)) { + if edges.insert((struct_no, dependency, no)) { collect_edges(edges, fields, struct_no) } } diff --git a/crates/verifier/Cargo.toml b/crates/verifier/Cargo.toml new file mode 100644 index 0000000..cc4ad4b --- /dev/null +++ b/crates/verifier/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "folidity-verifier" +authors.workspace = true +categories.workspace = true +edition.workspace = true +homepage.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +version.workspace = true +description = "Formal verification library for the Folidity compiler" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +folidity-semantics = { workspace = true } +folidity-diagnostics = { workspace = true } +num-bigint = { workspace = true } +num-rational = { workspace = true } +num-traits = { workspace = true } +algonaut_core = { workspace = true } +z3 = { workspace = true } +hex = { workspace = true } +indexmap = { workspace = true } +petgraph = { workspace = true } + +[dev-dependencies] +folidity-parser = { workspace = true } \ No newline at end of file diff --git a/crates/verifier/src/ast.rs b/crates/verifier/src/ast.rs new file mode 100644 index 0000000..72d6d19 --- /dev/null +++ b/crates/verifier/src/ast.rs @@ -0,0 +1,184 @@ +use folidity_diagnostics::Report; +use folidity_semantics::{ + ast::{ + Expression, + Function, + StateDeclaration, + }, + DelayedDeclaration, + Span, +}; +use indexmap::IndexMap; +use z3::{ + ast::{ + Ast, + Bool, + Dynamic, + }, + Context, + Solver, + Sort, +}; + +use crate::{ + executor::SymbolicExecutor, + transformer::{ + create_constraint_const, + transform_expr, + TransformParams, + }, +}; + +/// Z3 specific scope of Z3 types constant to be reused in formulas. +#[derive(Debug, Default, Clone)] +pub struct Z3Scope { + pub consts: IndexMap, +} + +impl Z3Scope { + /// Create a constant or retrieve the existing one with the same name. + pub fn create_or_get<'ctx>( + &mut self, + ident: &str, + sort: Sort<'ctx>, + ctx: &'ctx Context, + executor: &mut SymbolicExecutor<'ctx>, + ) -> Dynamic<'ctx> { + if let Some(i) = self.consts.get(ident) { + Dynamic::new_const(ctx, *i, &sort) + } else { + let (c, i) = executor.create_constant(&sort); + self.consts.insert(ident.to_string(), i); + c + } + } + + /// Retrieve a constant with the given name. + pub fn get<'ctx>( + &self, + ident: &str, + sort: Sort<'ctx>, + ctx: &'ctx Context, + ) -> Option> { + self.consts + .get(ident) + .map(|i| Dynamic::new_const(ctx, *i, &sort)) + } +} + +/// List of delayed declaration to be resolved in consequent passes. +#[derive(Debug, Default)] +pub struct Delays<'a> { + pub state_delay: Vec>, + pub func_delay: Vec>, +} + +/// A declaration in the code AST. +#[derive(Debug, Default)] +pub struct DeclarationBounds<'ctx> { + /// `st` location block. + pub loc: Span, + /// Links of others declaration. + pub links: Vec, + /// Constraint block of the declaration. + pub constraints: IndexMap>, + /// Scope of the local constraints. + pub scope: Z3Scope, +} + +impl<'ctx> DeclarationBounds<'ctx> { + /// Translate context to the new solver. + pub fn translate_to_solver<'src_ctx>( + &self, + solver: &Solver<'src_ctx>, + ) -> Vec> + where + 'ctx: 'src_ctx, + { + let new_ctx = solver.get_context(); + self.constraints + .iter() + .map(|(n, c)| { + Constraint { + loc: c.loc.clone(), + binding_sym: *n, + expr: c.expr.translate(new_ctx).clone(), + } + }) + .collect() + } + + /// Transform the list of ids of constraints into concrete boolean constants. + pub fn constraint_consts<'a>(&self, ctx: &'a Context) -> Vec> { + self.constraints + .iter() + .map(|(_, c)| c.sym_to_const(ctx)) + .collect() + } +} + +/// A singular constraint. +#[derive(Debug, Clone)] +pub struct Constraint<'ctx> { + /// Location of the constraint in the original code. + pub loc: Span, + /// Binding constraint symbol id to track it across contexts. + /// + /// e.g. `k!0 => a > 10` + /// where `0` is the id of the symbol. + pub binding_sym: u32, + /// Boolean expression. + pub expr: Bool<'ctx>, +} + +impl<'ctx> Constraint<'ctx> { + /// Produce a boolean constant in the context from the constraint symbol. + pub fn sym_to_const<'a>(&self, ctx: &'a Context) -> Bool<'a> { + Bool::new_const(ctx, self.binding_sym) + } + + pub fn from_expr( + expr: &Expression, + params: &mut TransformParams<'ctx, '_>, + ) -> Result, ()> { + let resolve_e = transform_expr(expr, params)?; + let Some(bool_expr) = resolve_e.element.as_bool() else { + params.diagnostics.push(Report::ver_error( + resolve_e.loc.clone(), + String::from("Expression must be boolean."), + )); + return Err(()); + }; + let (binding_const, n) = create_constraint_const(params.ctx, params.executor); + + // create a binding boolean constant: `c => expr`, to track each constraint. + let binding_expr = binding_const.implies(&bool_expr); + + Ok(Constraint { + loc: resolve_e.loc.clone(), + binding_sym: n, + expr: binding_expr, + }) + } +} + +/// Represents unary style expression. +/// +/// # Example +/// `false` +#[derive(Clone, Debug, PartialEq)] +pub struct Z3Expression<'ctx> { + /// Location of the expression + pub loc: Span, + /// Element of the expression. + pub element: Dynamic<'ctx>, +} + +impl<'ctx> Z3Expression<'ctx> { + pub fn new(loc: &Span, e: &impl Ast<'ctx>) -> Self { + Self { + loc: loc.clone(), + element: Dynamic::from_ast(e), + } + } +} diff --git a/crates/verifier/src/executor.rs b/crates/verifier/src/executor.rs new file mode 100644 index 0000000..c608ef8 --- /dev/null +++ b/crates/verifier/src/executor.rs @@ -0,0 +1,543 @@ +use std::collections::HashSet; + +use folidity_diagnostics::{ + Paint, + Report, +}; +use folidity_semantics::{ + ast::StateBody, + ContractDefinition, + DelayedDeclaration, + GlobalSymbol, + Span, + SymbolInfo, +}; +use indexmap::IndexMap; +use z3::{ + ast::Dynamic, + Context, + Sort, +}; + +use crate::{ + ast::{ + Constraint, + DeclarationBounds, + Delays, + Z3Scope, + }, + links::build_constraint_blocks, + solver::{ + verify_constraint_blocks, + verify_constraints, + }, + transformer::{ + type_to_sort, + TransformParams, + }, + Diagnostics, +}; +#[derive(Debug)] +pub struct SymbolicExecutor<'ctx> { + /// Global context of the executor. + /// + /// Sealed for save use. + context: &'ctx Context, + /// List of resolved declaration to verify. + pub declarations: IndexMap>, + /// Symbol counter to track boolean constants across the program. + pub symbol_counter: u32, + /// List of diagnostics messages associated with the verifier. + pub diagnostics: Vec, +} + +impl<'ctx> SymbolicExecutor<'ctx> { + pub fn new(context: &'ctx Context) -> Self { + Self { + context, + declarations: IndexMap::new(), + diagnostics: vec![], + symbol_counter: 0, + } + } + + /// Resolve Model, State and Function declarations, + /// and construct local z3 scopes of Z3 constants. + /// + /// Any declarations with links (e.g parents) are added to delay for a later resolve. + /// + /// We don't delay models as it is implies that any model inheritance introduces + /// refinement to constraints. Therefore, its inherits the fields and provides its own + /// constraints + pub fn resolve_declarations<'a>(&mut self, contract: &'a ContractDefinition) -> Delays<'a> { + let mut delays = Delays::default(); + + for i in 0..contract.models.len() { + let constraints: IndexMap = IndexMap::new(); + let m = &contract.models[i]; + let mut loc = m.loc.clone(); + let mut scope = Z3Scope::default(); + + if let Some(bounds) = &m.bounds { + loc = bounds.loc.clone(); + } + let fields = m.fields(contract); + for var in &fields { + let _ = scope.create_or_get( + &var.name.name, + type_to_sort(&var.ty.ty, self.context), + self.context, + self, + ); + } + + let decl = DeclarationBounds { + constraints, + loc, + scope, + links: vec![], + }; + + let sym = GlobalSymbol::Model(SymbolInfo { + loc: m.loc.clone(), + i, + }); + + self.declarations.insert(sym, decl); + } + + for i in 0..contract.states.len() { + let constraints: IndexMap = IndexMap::new(); + let current_index = self.declarations.len(); + let s = &contract.states[i]; + let mut loc = s.loc.clone(); + if let Some(bounds) = &s.bounds { + loc = bounds.loc.clone(); + } + + let mut scope = Z3Scope::default(); + let mut add_delay = match &s.body { + Some(StateBody::Raw(fields)) => { + for f in fields { + let _ = scope.create_or_get( + &f.name.name, + type_to_sort(&f.ty.ty, self.context), + self.context, + self, + ); + } + false + } + Some(StateBody::Model(_)) => true, + _ => false, + }; + + add_delay |= s.from.is_some(); + + if add_delay { + delays.state_delay.push(DelayedDeclaration { + decl: s, + i: current_index, + }); + } + + let decl = DeclarationBounds { + constraints, + loc, + scope, + links: vec![], + }; + + let sym = GlobalSymbol::State(SymbolInfo { + loc: s.loc.clone(), + i, + }); + self.declarations.insert(sym, decl); + } + + for i in 0..contract.functions.len() { + let constraints: IndexMap = IndexMap::new(); + let current_index = self.declarations.len(); + let f = &contract.functions[i]; + let mut loc = f.loc.clone(); + if let Some(bounds) = &f.bounds { + loc = bounds.loc.clone(); + } + + let mut scope = Z3Scope::default(); + for (_, p) in &f.params { + let _ = scope.create_or_get( + &f.name.name, + type_to_sort(&p.ty.ty, self.context), + self.context, + self, + ); + } + + if f.state_bound.is_some() { + delays.func_delay.push(DelayedDeclaration { + decl: f, + i: current_index, + }); + } + + let decl = DeclarationBounds { + constraints, + loc, + scope, + links: vec![], + }; + + let sym = GlobalSymbol::Function(SymbolInfo { + loc: f.loc.clone(), + i, + }); + self.declarations.insert(sym, decl); + } + + delays + } + + /// Resolve State and Function delay to finalise its scopes. + pub fn resolve_links(&mut self, delays: Delays<'_>, contract: &ContractDefinition) { + for s in &delays.state_delay { + if let Some(StateBody::Model(model_sym)) = &s.decl.body { + let mut links: Vec = vec![]; + let (m_sym, model_bound) = self + .declarations + .get_key_value(&GlobalSymbol::Model(model_sym.clone())) + .expect("Model should exist."); + + let m_scope = model_bound.scope.consts.clone(); + let mut m_sym = Some(m_sym.clone()); + while m_sym.is_some() { + let Some(sym) = &m_sym else { + break; + }; + if let Some(id) = self.declarations.get_index_of(sym) { + links.push(id); + } + let model_decl = &contract.models[sym.symbol_info().i]; + m_sym = model_decl + .parent + .as_ref() + .map(|info| GlobalSymbol::Model(info.clone())) + .clone(); + } + if let Some(from) = &s.decl.from { + if let Some(id) = self + .declarations + .get_index_of(&GlobalSymbol::State(from.0.clone())) + { + links.push(id); + } + } + + let s_bound = &mut self.declarations[s.i]; + s_bound.scope.consts.extend(m_scope); + + s_bound.links = links; + } + } + + for m in &delays.func_delay { + let mut links: Vec = vec![]; + if let Some(sb) = &m.decl.state_bound { + if let Some(from) = &sb.from { + if let Some(id) = self + .declarations + .get_index_of(&GlobalSymbol::State(from.ty.clone())) + { + links.push(id); + } + } + + for t in &sb.to { + if let Some(id) = self + .declarations + .get_index_of(&GlobalSymbol::State(t.ty.clone())) + { + links.push(id); + } + } + } + self.declarations[m.i].links = links; + } + } + + /// Resolve expression in `st` blocks into concrete Z3 constraints. + /// + /// # Return + /// - true if execution did not have any errors. + pub fn resolve_bounds(&mut self, contract: &ContractDefinition) -> bool { + let mut error = false; + let mut diagnostics: Diagnostics = vec![]; + + for (i, m) in contract.models.iter().enumerate() { + let Some(bounds) = &m.bounds else { + continue; + }; + let mut constraints: IndexMap = IndexMap::new(); + let scope = &m.scope; + let sym = GlobalSymbol::Model(SymbolInfo::new(m.loc.clone(), i)); + let mut z3_scope = Z3Scope::default(); + std::mem::swap( + &mut z3_scope, + &mut self.declarations.get_mut(&sym).expect("should exist").scope, + ); + let mut params = TransformParams { + ctx: self.context, + z3_scope: &mut z3_scope, + scope, + contract, + diagnostics: &mut diagnostics, + executor: self, + }; + for e in &bounds.exprs { + match Constraint::from_expr(e, &mut params) { + Ok(c) => constraints.insert(c.binding_sym, c), + Err(_) => { + error = true; + continue; + } + }; + } + std::mem::swap( + &mut z3_scope, + &mut self.declarations.get_mut(&sym).expect("should exist").scope, + ); + self.declarations + .get_mut(&sym) + .expect("should exist") + .constraints = constraints; + } + + for (i, s) in contract.states.iter().enumerate() { + let Some(bounds) = &s.bounds else { + continue; + }; + let mut constraints: IndexMap = IndexMap::new(); + let scope = &s.scope; + let sym = GlobalSymbol::State(SymbolInfo::new(s.loc.clone(), i)); + let mut z3_scope = Z3Scope::default(); + std::mem::swap( + &mut z3_scope, + &mut self.declarations.get_mut(&sym).expect("should exist").scope, + ); + let mut params = TransformParams { + ctx: self.context, + z3_scope: &mut z3_scope, + scope, + contract, + diagnostics: &mut diagnostics, + executor: self, + }; + for e in &bounds.exprs { + match Constraint::from_expr(e, &mut params) { + Ok(c) => constraints.insert(c.binding_sym, c), + Err(_) => { + error = true; + continue; + } + }; + } + std::mem::swap( + &mut z3_scope, + &mut self.declarations.get_mut(&sym).expect("should exist").scope, + ); + self.declarations + .get_mut(&sym) + .expect("should exist") + .constraints = constraints; + } + + for (i, f) in contract.functions.iter().enumerate() { + let Some(bounds) = &f.bounds else { + continue; + }; + let mut constraints: IndexMap = IndexMap::new(); + let scope = &f.scope; + let sym = GlobalSymbol::Function(SymbolInfo::new(f.loc.clone(), i)); + let mut z3_scope = Z3Scope::default(); + std::mem::swap( + &mut z3_scope, + &mut self.declarations.get_mut(&sym).expect("should exist").scope, + ); + let mut params = TransformParams { + ctx: self.context, + z3_scope: &mut z3_scope, + scope, + contract, + diagnostics: &mut diagnostics, + executor: self, + }; + for e in &bounds.exprs { + match Constraint::from_expr(e, &mut params) { + Ok(c) => constraints.insert(c.binding_sym, c), + Err(_) => { + error = true; + continue; + } + }; + } + std::mem::swap( + &mut z3_scope, + &mut self.declarations.get_mut(&sym).expect("should exist").scope, + ); + self.declarations + .get_mut(&sym) + .expect("should exist") + .constraints = constraints; + } + + if error { + self.diagnostics.extend(diagnostics); + } + + !error + } + + /// Verify individual blocks of constraints for satisfiability. + /// + /// # Return + /// - true if execution did not have any errors. + pub fn verify_individual_blocks(&mut self, contract: &ContractDefinition) -> bool { + let mut diagnostics: Diagnostics = vec![]; + let mut error = false; + + for (sym, d) in &self.declarations { + if let Err(errs) = verify_constraints( + d.constraints + .values() + .collect::>() + .as_slice(), + self.context, + ) { + let mut notes: Diagnostics = vec![]; + for (i, e) in errs.iter().enumerate() { + let c = d.constraints.get(e).expect("constraints exists"); + notes.push(Report::ver_error( + c.loc.clone(), + format!( + "This is a constraint {}. It contradicts {:?}", + e.yellow(), + &remove_element(&errs, i).red() + ), + )) + } + + diagnostics.push(Report::ver_error_with_extra( + d.loc.clone(), + format!( + "{} has unsatisfiable constraints.", + symbol_name(sym, contract) + ), + notes, + "Consider rewriting logical bounds to satisfy all constraints.".to_string(), + )); + + error = true; + } + } + if error { + self.diagnostics.extend(diagnostics); + } + + !error + } + + /// Verify linked constraint blocks to ensure their constraints don't contradict each + /// other. + pub fn verify_linked_blocks(&mut self, contract: &ContractDefinition) -> bool { + let mut error = false; + let mut diagnostics: Diagnostics = vec![]; + + let blocks = build_constraint_blocks(self); + for b in &blocks { + if let Err(errs) = verify_constraint_blocks(b.as_slice(), self.context) { + error = true; + let mut notes: Diagnostics = vec![]; + + let syms: HashSet = errs.iter().map(|x| x.1.clone()).collect(); + let mut syms: Vec = syms.into_iter().collect(); + syms.sort_by(|x, y| x.loc().start.cmp(&y.loc().start)); + + let consts: Vec = errs.iter().map(|x| x.0).collect(); + for (i, (cid, g)) in errs.iter().enumerate() { + let decl = &self.declarations.get(g).expect("should exist"); + let c = decl.constraints.get(cid).expect("constraints exists"); + let other_consts = remove_element(&consts, i); + + notes.push(Report::ver_error( + c.loc.clone(), + format!( + "This is a constraint {} in {}. It contradicts {:?}", + cid.yellow().bold(), + &symbol_name(g, contract).bold(), + &other_consts.red(), + ), + )) + } + + let sym_strs: String = syms + .iter() + .fold(String::new(), |init, x| { + format!("{}, {}", init, symbol_name(x, contract).bold()) + }) + .trim_start_matches(", ") + .to_string(); + // just get the span from start till end. + let start = errs + .iter() + .map(|x| x.1.loc().start) + .min_by(|x, y| x.cmp(y)) + .unwrap_or(0); + let end = errs + .iter() + .map(|x| x.1.loc().end) + .max_by(|x, y| x.cmp(y)) + .unwrap_or(0); + let loc = Span { start, end }; + diagnostics.push(Report::ver_error_with_extra(loc, format!("Detected conflicting constraints in linked blocks. These are the linked blocks: {}", sym_strs), notes, String::from("Consider rewriting logical bounds to be consistent with other entities."))); + } + } + + if error { + self.diagnostics.extend(diagnostics); + } + + !error + } + + /// Create a Z3 constant with the current symbol counter as a name while increasing + /// the counter. + pub fn create_constant(&mut self, sort: &Sort<'ctx>) -> (Dynamic<'ctx>, u32) { + let id = self.symbol_counter; + let c = Dynamic::new_const(self.context, id, sort); + self.symbol_counter += 1; + (c, id) + } +} + +/// Helper function to return an new list without the element at given index. +fn remove_element(arr: &[T], i: usize) -> Vec { + let (first_part, second_part) = arr.split_at(i); + let mut result = first_part.to_vec(); + if i < second_part.len() { + result.extend_from_slice(&second_part[1..]); + } + result +} + +/// Display a declaration name with the given symbol name. +fn symbol_name(sym: &GlobalSymbol, contract: &ContractDefinition) -> String { + match sym { + GlobalSymbol::Struct(s) => format!("struct {}", contract.structs[s.i].name.name.cyan()), + GlobalSymbol::Model(s) => format!("model {}", contract.models[s.i].name.name.cyan()), + GlobalSymbol::Enum(s) => format!("enum {}", contract.enums[s.i].name.name.cyan()), + GlobalSymbol::State(s) => format!("state {}", contract.states[s.i].name.name.cyan()), + GlobalSymbol::Function(s) => { + format!("function {}", contract.functions[s.i].name.name.cyan()) + } + } +} diff --git a/crates/verifier/src/lib.rs b/crates/verifier/src/lib.rs new file mode 100644 index 0000000..b1d2773 --- /dev/null +++ b/crates/verifier/src/lib.rs @@ -0,0 +1,62 @@ +pub use executor::SymbolicExecutor; +use folidity_diagnostics::Report; +use folidity_semantics::{ + CompilationError, + ContractDefinition, + Runner, +}; +use z3::{ + Config, + Context, +}; + +mod ast; +mod executor; +mod links; +mod solver; +mod transformer; + +#[cfg(test)] +mod tests; + +type Diagnostics = Vec; + +/// Create config for the Z3 context. +pub fn z3_cfg() -> Config { + let mut cfg = Config::new(); + cfg.set_model_generation(true); + // 10s timeout for constraint solving. + cfg.set_timeout_msec(10_000); + cfg +} + +impl<'ctx> Runner for SymbolicExecutor<'ctx> { + fn run(source: &ContractDefinition) -> Result<(), CompilationError> + where + Self: std::marker::Sized, + { + let context = Context::new(&z3_cfg()); + + let mut executor = SymbolicExecutor::new(&context); + + let mut err = false; + let delays = executor.resolve_declarations(source); + executor.resolve_links(delays, source); + + err |= !executor.resolve_bounds(source); + + err |= !executor.verify_individual_blocks(source); + + // report errors in individual blocks earlier to avoid catching them in linked blocks. + if err { + return Err(CompilationError::Formal(executor.diagnostics)); + } + + err = !executor.verify_linked_blocks(source); + if err { + return Err(CompilationError::Formal(executor.diagnostics)); + } + + Ok(()) + } +} diff --git a/crates/verifier/src/links.rs b/crates/verifier/src/links.rs new file mode 100644 index 0000000..11c03a6 --- /dev/null +++ b/crates/verifier/src/links.rs @@ -0,0 +1,65 @@ +use folidity_semantics::GlobalSymbol; +use petgraph::{ + algo::tarjan_scc, + Graph, + Undirected, +}; +use std::collections::HashSet; + +use crate::{ + ast::Constraint, + SymbolicExecutor, +}; + +type LinkGraph = Graph; + +// pub struct LinkBlock<'ctx> { + +// } + +fn find_link_components(executor: &SymbolicExecutor) -> Vec> { + let mut edges: HashSet<(usize, usize)> = HashSet::new(); + + for (sym, d) in &executor.declarations { + if d.links.is_empty() { + continue; + } + let origin = executor + .declarations + .get_index_of(sym) + .expect("should exist"); + + for l in &d.links { + edges.insert((origin, *l)); + } + } + + // collect into a graph. + let graph: LinkGraph = LinkGraph::from_edges(&edges); + // since the graph is undirected, tarjan algo will just return sets of connected nodes. + let components = tarjan_scc(&graph) + .iter() + .map(|vec| vec.iter().map(|x| x.index()).collect()) + .collect(); + + components +} + +pub fn build_constraint_blocks<'ctx>( + executor: &mut SymbolicExecutor<'ctx>, +) -> Vec, GlobalSymbol)>> { + let components = find_link_components(executor); + let mut blocks = vec![]; + for decls in &components { + let mut constraints: Vec<(Constraint, GlobalSymbol)> = vec![]; + for i in decls { + let (sym, decl) = executor.declarations.get_index(*i).expect("should exist"); + + for (_, c) in decl.constraints.clone() { + constraints.push((c, sym.clone())); + } + } + blocks.push(constraints); + } + blocks +} diff --git a/crates/verifier/src/solver.rs b/crates/verifier/src/solver.rs new file mode 100644 index 0000000..193f98c --- /dev/null +++ b/crates/verifier/src/solver.rs @@ -0,0 +1,93 @@ +use folidity_semantics::GlobalSymbol; +use z3::{ + ast::Bool, + Context, + SatResult, + Solver, +}; + +use crate::ast::Constraint; + +/// Verify the slice of constraints for satisfiability. +/// +/// # Errors +/// - List of ids of constraints that contradict each other. +pub fn verify_constraints<'ctx>( + constraints: &[&Constraint], + context: &'ctx Context, +) -> Result<(), Vec> { + let binding_consts: Vec> = constraints + .iter() + .map(|c| c.sym_to_const(context)) + .collect(); + + let solver = Solver::new(context); + for c in constraints { + solver.assert(&c.expr); + } + + let res = match solver.check_assumptions(&binding_consts) { + SatResult::Sat => Ok(()), + SatResult::Unsat | SatResult::Unknown => { + let consts = solver + .get_unsat_core() + .iter() + .filter_map(|b| bool_const_to_id(b)) + .collect(); + Err(consts) + } + }; + solver.reset(); + res +} + +/// Verify the slice of constraints block for satisfiability. +/// +/// # Errors +/// - List of mapping from symbol of declaration to the vector of contradicting constant +/// ids. +pub fn verify_constraint_blocks<'ctx>( + constraints: &[(Constraint<'ctx>, GlobalSymbol)], + context: &'ctx Context, +) -> Result<(), Vec<(u32, GlobalSymbol)>> { + let binding_consts: Vec> = constraints + .iter() + .map(|c| c.0.sym_to_const(context)) + .collect(); + + let solver = Solver::new(context); + for c in constraints { + solver.assert(&c.0.expr); + } + + let res = match solver.check_assumptions(&binding_consts) { + SatResult::Sat => Ok(()), + SatResult::Unsat | SatResult::Unknown => { + let consts: Vec = solver + .get_unsat_core() + .iter() + .filter_map(|b| bool_const_to_id(b)) + .collect(); + + let mut consts_syms: Vec<(u32, GlobalSymbol)> = constraints + .iter() + .filter_map(|(c, g)| { + if consts.contains(&c.binding_sym) { + Some((c.binding_sym, g.clone())) + } else { + None + } + }) + .collect(); + consts_syms.sort_by_key(|x| x.0); + Err(consts_syms) + } + }; + solver.reset(); + res +} + +/// Z3 converts integer names to `k!_` format, we need to parse it back to integers. +fn bool_const_to_id(c: &Bool) -> Option { + c.to_string().replace("k!", "").parse().ok() +} diff --git a/crates/verifier/src/tests.rs b/crates/verifier/src/tests.rs new file mode 100644 index 0000000..3cbd892 --- /dev/null +++ b/crates/verifier/src/tests.rs @@ -0,0 +1,558 @@ +use folidity_parser::ast::Identifier; +use folidity_semantics::{ + ast::{ + BinaryExpression, + Expression, + TypeVariant, + UnaryExpression, + }, + symtable::{ + Scope, + VariableKind, + }, + CompilationError, + ContractDefinition, + Runner, + Span, +}; +use num_bigint::{ + BigInt, + BigUint, +}; +use num_traits::FromPrimitive; +use z3::{ + ast::{ + Ast, + Int, + Set, + String as Z3String, + }, + Context, + SatResult, + Solver, + Sort, +}; + +use crate::{ + ast::Z3Scope, + executor::SymbolicExecutor, + transformer::{ + transform_expr, + TransformParams, + }, + z3_cfg, +}; + +#[test] +fn mul_transform() { + let loc = Span { start: 0, end: 0 }; + let e1 = Expression::UInt(UnaryExpression { + loc: loc.clone(), + element: BigUint::from_i64(100).unwrap(), + ty: TypeVariant::Int, + }); + let e2 = Expression::UInt(UnaryExpression { + loc: loc.clone(), + element: BigUint::from_i64(2).unwrap(), + ty: TypeVariant::Int, + }); + let mul = Expression::Multiply(BinaryExpression { + loc: loc.clone(), + left: Box::new(e1), + right: Box::new(e2), + ty: TypeVariant::Int, + }); + + let context = Context::new(&z3_cfg()); + let mut executor = SymbolicExecutor::new(&context); + let mut diagnostics = vec![]; + let scope = Scope::default(); + let mut z3_scope = Z3Scope::default(); + let contract = ContractDefinition::default(); + let mut params = TransformParams { + ctx: &context, + z3_scope: &mut z3_scope, + scope: &scope, + contract: &contract, + diagnostics: &mut diagnostics, + executor: &mut executor, + }; + let z3_res = transform_expr(&mul, &mut params); + + assert!(z3_res.is_ok()); + let z3_e = z3_res.expect("Should be Ok"); + assert_eq!( + z3_e.element.as_int(), + Some(Int::from_i64(&context, 100) * Int::from_i64(&context, 2)) + ); +} + +#[test] +fn var_transform() { + let loc = Span { start: 0, end: 0 }; + let var = Expression::Variable(UnaryExpression { + loc: loc.clone(), + element: 0, + ty: TypeVariant::Int, + }); + + let context = Context::new(&z3_cfg()); + let mut executor = SymbolicExecutor::new(&context); + let mut diagnostics = vec![]; + let mut scope = Scope::default(); + let mut contract = ContractDefinition::default(); + scope.add( + &Identifier::new(0, 0, "a".to_string()), + TypeVariant::Int, + None, + VariableKind::Param, + false, + 0, + &mut contract, + ); + let mut z3_scope = Z3Scope::default(); + let mut params = TransformParams { + ctx: &context, + z3_scope: &mut z3_scope, + scope: &scope, + contract: &contract, + diagnostics: &mut diagnostics, + executor: &mut executor, + }; + let z3_res = transform_expr(&var, &mut params); + + assert!(z3_res.is_ok()); + let z3_e = z3_res.expect("Should be Ok"); + assert_eq!(z3_e.element.as_int(), Some(Int::new_const(&context, 0))); +} + +#[test] +fn string_hex_transform() { + let loc = Span { start: 0, end: 0 }; + let string = Expression::String(UnaryExpression { + loc: loc.clone(), + element: "Hello World".to_string(), + ty: TypeVariant::Int, + }); + + let context = Context::new(&z3_cfg()); + let mut executor = SymbolicExecutor::new(&context); + let mut diagnostics = vec![]; + let scope = Scope::default(); + let mut z3_scope = Z3Scope::default(); + let contract = ContractDefinition::default(); + let mut params = TransformParams { + ctx: &context, + z3_scope: &mut z3_scope, + scope: &scope, + contract: &contract, + diagnostics: &mut diagnostics, + executor: &mut executor, + }; + let z3_res = transform_expr(&string, &mut params); + + assert!(z3_res.is_ok()); + let z3_e = z3_res.expect("Should be Ok"); + assert_eq!( + z3_e.element.as_string(), + Some(Z3String::from_str(&context, "Hello World").unwrap()) + ); + + let hex = Expression::Hex(UnaryExpression { + loc: loc.clone(), + element: hex::decode("AB").unwrap(), + ty: TypeVariant::Int, + }); + let z3_res = transform_expr(&hex, &mut params); + + assert!(z3_res.is_ok()); + let z3_e = z3_res.expect("Should be Ok"); + assert_eq!( + z3_e.element.as_string(), + Some(Z3String::from_str(&context, "ab").unwrap()) + ); +} + +#[test] +fn list_transform() { + let loc = Span { start: 0, end: 0 }; + let list = Expression::List(UnaryExpression { + loc: loc.clone(), + element: vec![ + Expression::Int(UnaryExpression { + loc: loc.clone(), + element: BigInt::from_i32(10).unwrap(), + ty: TypeVariant::Int, + }), + Expression::Int(UnaryExpression { + loc: loc.clone(), + element: BigInt::from_i32(20).unwrap(), + ty: TypeVariant::Int, + }), + Expression::Int(UnaryExpression { + loc: loc.clone(), + element: BigInt::from_i32(30).unwrap(), + ty: TypeVariant::Int, + }), + ], + ty: TypeVariant::Int, + }); + + let context = Context::new(&z3_cfg()); + let mut executor = SymbolicExecutor::new(&context); + let mut diagnostics = vec![]; + let scope = Scope::default(); + let mut z3_scope = Z3Scope::default(); + let contract = ContractDefinition::default(); + let mut params = TransformParams { + ctx: &context, + z3_scope: &mut z3_scope, + scope: &scope, + contract: &contract, + diagnostics: &mut diagnostics, + executor: &mut executor, + }; + let z3_res = transform_expr(&list, &mut params); + + assert!(z3_res.is_ok()); + let z3_e = z3_res.expect("Should be Ok"); + let mut set = Set::empty(&context, &Sort::int(&context)); + let elems = [ + Int::from_i64(&context, 10), + Int::from_i64(&context, 20), + Int::from_i64(&context, 30), + ]; + for e in &elems { + set = set.add(e); + } + assert_eq!(z3_e.element.as_set(), Some(set.clone())); + + let parsed_set = z3_e.element.as_set().expect("must be set"); + + let solver = Solver::new(&context); + solver.push(); + solver.assert(&parsed_set._eq(&set)); + assert_eq!(solver.check(), SatResult::Sat); + + solver.pop(1); + solver.push(); + + let distinct_set = set.del(&Int::from_i64(&context, 10)); + solver.assert(&parsed_set._eq(&distinct_set).not()); + assert_eq!( + solver.check(), + SatResult::Sat, + "{:#?}", + solver.get_assertions() + ); +} + +#[test] +fn in_transform() { + let loc = Span { start: 0, end: 0 }; + let list = Expression::List(UnaryExpression { + loc: loc.clone(), + element: vec![ + Expression::Int(UnaryExpression { + loc: loc.clone(), + element: BigInt::from_i32(10).unwrap(), + ty: TypeVariant::Int, + }), + Expression::Int(UnaryExpression { + loc: loc.clone(), + element: BigInt::from_i32(20).unwrap(), + ty: TypeVariant::Int, + }), + Expression::Int(UnaryExpression { + loc: loc.clone(), + element: BigInt::from_i32(30).unwrap(), + ty: TypeVariant::Int, + }), + ], + ty: TypeVariant::Int, + }); + + let member_in = Expression::Int(UnaryExpression { + loc: loc.clone(), + element: BigInt::from_i32(30).unwrap(), + ty: TypeVariant::Int, + }); + + let member_out = Expression::Int(UnaryExpression { + loc: loc.clone(), + element: BigInt::from_i32(40).unwrap(), + ty: TypeVariant::Int, + }); + + let in_true = Expression::In(BinaryExpression { + loc: loc.clone(), + left: Box::new(member_in), + right: Box::new(list.clone()), + ty: TypeVariant::Bool, + }); + + let in_false = Expression::In(BinaryExpression { + loc: loc.clone(), + left: Box::new(member_out), + right: Box::new(list), + ty: TypeVariant::Bool, + }); + + let context = Context::new(&z3_cfg()); + let mut executor = SymbolicExecutor::new(&context); + let mut diagnostics = vec![]; + let scope = Scope::default(); + let mut z3_scope = Z3Scope::default(); + let contract = ContractDefinition::default(); + let mut params = TransformParams { + ctx: &context, + z3_scope: &mut z3_scope, + scope: &scope, + contract: &contract, + diagnostics: &mut diagnostics, + executor: &mut executor, + }; + + // verify that `30` is in the list. + let solver = Solver::new(&context); + let z3_res = transform_expr(&in_true, &mut params); + assert!(z3_res.is_ok()); + let z3_in_true = z3_res.expect("Ok"); + solver.push(); + solver.assert(&z3_in_true.element.as_bool().expect("Should be bool.")); + assert_eq!(solver.check(), SatResult::Sat); + + solver.pop(1); + solver.push(); + + // verify that `40` is not in the list. + let z3_res = transform_expr(&in_false, &mut params); + assert!(z3_res.is_ok()); + let z3_in_true = z3_res.expect("Ok"); + solver.assert(&z3_in_true.element.as_bool().expect("Should be bool.").not()); + assert_eq!(solver.check(), SatResult::Sat); +} + +const WORKING: &str = r#" + +model ParentModel { + a: address, + b: list +} st [ + a == a"2FMLYJHYQWRHMFKRHKTKX5UNB5DGO65U57O3YVLWUJWKRE4YYJYC2CWWBY", +] + +model MyModel: ParentModel { + c: int, + d: string +} st [ + a == a"2FMLYJHYQWRHMFKRHKTKX5UNB5DGO65U57O3YVLWUJWKRE4YYJYC2CWWBY", + c > -10, + d == s"Hello World" +] + +state StartState(MyModel) st [ + c < 1000 +] + +@init +@(any) +fn (r: bool) start(init: int) when () -> (StartState s) +st [ + r == true, + s.c < 10, +] +{ + let a = a"2FMLYJHYQWRHMFKRHKTKX5UNB5DGO65U57O3YVLWUJWKRE4YYJYC2CWWBY"; + let h = hex"1234"; + let b = [1, 2, 3]; + let c = -5; + let d = s"Hello World"; + + move StartState : { a, b, c, d }; + return true; +} + +@(any) +view(StartState s) fn int get_value() { + return s.c; +} +"#; + +#[test] +fn test_correct_bounds() { + folidity_diagnostics::disable_pretty_print(); + let result = folidity_parser::parse(WORKING); + let Ok(tree) = &result else { + panic!("{:#?}", &result.err().unwrap()); + }; + + let res = ContractDefinition::run(tree); + assert!(res.is_ok(), "{:#?}", res.err().unwrap()); + let contract = res.unwrap(); + + let runner = SymbolicExecutor::run(&contract); + + assert!(runner.is_ok(), "{:#?}", runner.err().unwrap()); +} + +const NOT_WORKING: &str = r#" + +model ParentModel { + a: address, + b: list, + c: int +} st [ + # this works because `MyModel` refines the constraint block. + c < 5 +] + +model MyModel: ParentModel { + d: int, + e: string +} st [ + a == a"2FMLYJHYQWRHMFKRHKTKX5UNB5DGO65U57O3YVLWUJWKRE4YYJYC2CWWBY", + c > 10, + d > c, + d < 5, + e == s"Hello World" +] + +state StartState(MyModel) st [ + c < 1000 +] + +@init +@(any) +fn (r: bool) start(init: int) when () -> (StartState s) +st [ + r == true, + s.c < 10, +] +{ + let a = a"2FMLYJHYQWRHMFKRHKTKX5UNB5DGO65U57O3YVLWUJWKRE4YYJYC2CWWBY"; + let h = hex"1234"; + let b = [1, 2, 3]; + let c = -5; + let d = 10; + let e = s"Hello World"; + + move StartState : { a, b, c, d, e }; + return true; +} +"#; + +#[test] +fn test_incorrect_bounds() { + folidity_diagnostics::disable_pretty_print(); + let result = folidity_parser::parse(NOT_WORKING); + let Ok(tree) = &result else { + panic!("{:#?}", &result.err().unwrap()); + }; + + let res = ContractDefinition::run(tree); + assert!(res.is_ok(), "{:#?}", res.err().unwrap()); + let contract = res.unwrap(); + + let runner = SymbolicExecutor::run(&contract); + + let Err(CompilationError::Formal(reports)) = runner else { + panic!("Expected error"); + }; + + let error = reports.first().expect("contain error"); + assert_eq!( + &error.message, + "model MyModel has unsatisfiable constraints." + ); + assert_eq!(error.additional_info.len(), 3); + let mut errs = error.additional_info.iter(); + let e = errs.next().unwrap(); + assert!( + e.message + .contains("This is a constraint 11. It contradicts [12, 13]"), + "{}", + e.message + ); + let e = errs.next().unwrap(); + assert!( + e.message + .contains("This is a constraint 12. It contradicts [11, 13]"), + "{}", + e.message + ); + let e = errs.next().unwrap(); + assert!( + e.message + .contains("This is a constraint 13. It contradicts [11, 12]"), + "{}", + e.message + ); +} + +const NOT_WORKING_LINKED: &str = r#" +model ParentModel { + x: int, +} st [ + x > -1000 +] + +state StartState(ParentModel) st [ + x < 1000 +] + +@init +@(any) +fn (r: bool) start(init: int) when () -> (StartState s) +st [ + r == true, + s.x > 1000, +] +{ + let m = ParentModel : { 10 }; + + move StartState : { m }; + return true; +} +"#; + +#[test] +fn test_incorrect_linked_bounds() { + folidity_diagnostics::disable_pretty_print(); + let result = folidity_parser::parse(NOT_WORKING_LINKED); + let Ok(tree) = &result else { + panic!("{:#?}", &result.err().unwrap()); + }; + + let res = ContractDefinition::run(tree); + assert!(res.is_ok(), "{:#?}", res.err().unwrap()); + let contract = res.unwrap(); + + let runner = SymbolicExecutor::run(&contract); + + let Err(CompilationError::Formal(reports)) = runner else { + panic!("Expected error"); + }; + + let error = reports.first().expect("contain error"); + assert_eq!( + &error.message, + "Detected conflicting constraints in linked blocks. These are the linked blocks: state StartState, function start" + ); + assert_eq!(error.additional_info.len(), 2); + let mut errs = error.additional_info.iter(); + let e = errs.next().unwrap(); + assert!( + e.message + .contains("This is a constraint 3 in state StartState. It contradicts [6]"), + "{}", + e.message + ); + let e = errs.next().unwrap(); + assert!( + e.message + .contains("This is a constraint 6 in function start. It contradicts [3]"), + "{}", + e.message + ); +} diff --git a/crates/verifier/src/transformer.rs b/crates/verifier/src/transformer.rs new file mode 100644 index 0000000..17f4a64 --- /dev/null +++ b/crates/verifier/src/transformer.rs @@ -0,0 +1,544 @@ +use folidity_diagnostics::{ + Paint, + Report, + Span, +}; +use folidity_semantics::{ + ast::{ + BinaryExpression, + Expression, + MemberAccess, + TypeVariant, + UnaryExpression, + }, + symtable::Scope, + ContractDefinition, + GlobalSymbol, +}; +use num_bigint::BigInt; +use num_rational::BigRational; +use z3::{ + ast::{ + Ast, + Bool, + Dynamic, + Int, + Real, + Set, + String as Z3String, + }, + Context, + Sort, +}; + +use crate::{ + ast::{ + Z3Expression, + Z3Scope, + }, + executor::SymbolicExecutor, + Diagnostics, +}; + +#[derive(Debug)] +pub struct TransformParams<'ctx, 'a> { + pub ctx: &'ctx Context, + pub z3_scope: &'a mut Z3Scope, + pub scope: &'a Scope, + pub contract: &'a ContractDefinition, + pub diagnostics: &'a mut Diagnostics, + pub executor: &'a mut SymbolicExecutor<'ctx>, +} + +/// Transforms [`folidity_semantics::ast::Expression`] into [`crate::ast::Z3Expression`] +/// in some given context [`z3::Context`]. +pub fn transform_expr<'ctx>( + expr: &Expression, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + match expr { + // literals + Expression::Int(u) => Ok(int(&u.element, &u.loc, params.ctx)), + Expression::UInt(u) => Ok(int(&u.element.clone().into(), &u.loc, params.ctx)), + Expression::Float(u) => Ok(real(&u.element, &u.loc, params.ctx)), + Expression::Boolean(u) => Ok(bool(u.element, &u.loc, params.ctx)), + Expression::String(u) => Ok(string(u.element.as_str(), &u.loc, params.ctx)), + Expression::Char(u) => Ok(char(u.element, &u.loc, params.ctx)), + Expression::Hex(u) => Ok(string(hex::encode(&u.element).as_str(), &u.loc, params.ctx)), + Expression::Address(u) => Ok(string(u.element.to_string().as_str(), &u.loc, params.ctx)), + Expression::Enum(u) => Ok(enum_(u, params)), + + // binary operations + Expression::Add(_) + | Expression::Subtract(_) + | Expression::Multiply(_) + | Expression::Divide(_) + | Expression::Less(_) + | Expression::LessEq(_) + | Expression::Greater(_) + | Expression::GreaterEq(_) => int_real_op(expr, params), + + Expression::Modulo(b) => modulo(b, params), + Expression::Equal(b) => equality(b, params), + Expression::NotEqual(b) => inequality(b, params), + Expression::Not(u) => not(u, params), + + Expression::Or(b) => or(b, params), + Expression::And(b) => and(b, params), + + Expression::Variable(u) => variable(u, params), + Expression::MemberAccess(m) => member_access(m, params), + Expression::List(u) => list(u, params), + Expression::In(b) => in_(b, params), + + Expression::FunctionCall(_) => { + todo!("Verification of function calls is currently unsupported.") + } + Expression::StructInit(_) => { + todo!("Verification of struct initialisation is currently unsupported.") + } + } +} + +fn in_<'ctx>( + b: &BinaryExpression, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let e1 = transform_expr(&b.left, params)?; + let e2 = transform_expr(&b.right, params)?; + let set = e2.element.as_set().ok_or_else(|| { + params.diagnostics.push(Report::ver_error( + b.right.loc().clone(), + String::from("Expression can not be coerces to a Z3 `Set`"), + )); + })?; + + let assertion = set.member(&e1.element); + + Ok(Z3Expression::new(&b.loc, &assertion)) +} + +fn list<'ctx>( + u: &UnaryExpression>, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let mut set = Set::empty(params.ctx, &type_to_sort(&u.ty, params.ctx)); + for e in &u.element { + let z3_e = transform_expr(e, params)?; + set = set.add(&z3_e.element); + } + Ok(Z3Expression::new(&u.loc, &set)) +} + +/// _A bit hacky approach._ +/// +/// - If the access is for the state's member, then we lookup the constraint id in the its +/// local table. +/// - Otherwise, we just construct a variable name `{name}.{member_id}` and store in the +/// scope in case we refer to it later. +/// +/// # Errors +/// - the member is access from non-variable expression. +fn member_access<'ctx>( + e: &MemberAccess, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let Expression::Variable(var) = &e.expr.as_ref() else { + params.diagnostics.push(Report::ver_error( + e.expr.loc().clone(), + String::from("Non-variable access is unsupported in verifier."), + )); + return Err(()); + }; + + if let TypeVariant::State(s) = &var.ty { + let local_scope = &mut params + .executor + .declarations + .get_mut(&GlobalSymbol::State(s.clone())) + .expect("Should exist") + .scope; + + let state_decl = ¶ms.contract.states[s.i]; + let members = state_decl.fields(params.contract); + let member = &members[e.member.0]; + let c = local_scope + .get( + &member.name.name, + type_to_sort(&member.ty.ty, params.ctx), + params.ctx, + ) + .expect("const should exist"); + + return Ok(Z3Expression::new(&e.loc, &c)); + } + + let name = ¶ms.scope.vars[var.element].ident.name; + let variant = e.member.0.to_string(); + let c = params.z3_scope.create_or_get( + &format!("{}.{}", name, variant), + type_to_sort(&e.ty, params.ctx), + params.ctx, + params.executor, + ); + + Ok(Z3Expression::new(&e.loc, &c)) +} + +fn variable<'ctx>( + e: &UnaryExpression, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let var = params.scope.vars.get(&e.element).expect("should exist"); + let z3_const = params.z3_scope.create_or_get( + &var.ident.name, + type_to_sort(&e.ty, params.ctx), + params.ctx, + params.executor, + ); + Ok(Z3Expression::new(&e.loc, &z3_const)) +} + +pub fn type_to_sort<'ctx>(ty: &TypeVariant, ctx: &'ctx Context) -> Sort<'ctx> { + match ty { + TypeVariant::Int | TypeVariant::Uint | TypeVariant::Char | TypeVariant::Enum(_) => { + Sort::int(ctx) + } + TypeVariant::Float => Sort::real(ctx), + TypeVariant::Address | TypeVariant::Hex | TypeVariant::String => Sort::string(ctx), + TypeVariant::Bool => Sort::bool(ctx), + TypeVariant::Unit => Sort::uninterpreted(ctx, "()".into()), + TypeVariant::Model(s) => Sort::uninterpreted(ctx, format!("M!{}", s.i).into()), + TypeVariant::State(s) => Sort::uninterpreted(ctx, format!("S!{}", s.i).into()), + TypeVariant::Struct(s) => Sort::uninterpreted(ctx, format!("SS!{}", s.i).into()), + TypeVariant::Set(s_ty) => Sort::set(ctx, &type_to_sort(s_ty, ctx)), + TypeVariant::List(l_ty) => Sort::set(ctx, &type_to_sort(l_ty, ctx)), + TypeVariant::Mapping(m) => { + Sort::array( + ctx, + &type_to_sort(&m.from_ty, ctx), + &type_to_sort(&m.to_ty, ctx), + ) + } + TypeVariant::Function(_) => unimplemented!(), + TypeVariant::Generic(_) => unimplemented!(), + } +} + +fn int_real_op<'ctx>( + e: &Expression, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let (Expression::Multiply(b) + | Expression::Divide(b) + | Expression::Add(b) + | Expression::Subtract(b) + | Expression::Less(b) + | Expression::LessEq(b) + | Expression::Greater(b) + | Expression::GreaterEq(b)) = e + else { + unreachable!("Only [*, /, +, -, >, <, ≥, ≤] ops are allowed to be passed."); + }; + let e1 = transform_expr(&b.left, params)?; + let e2 = transform_expr(&b.right, params)?; + let mut reports = Vec::new(); + let int1 = to_z3_int(&e1, &mut reports); + let int2 = to_z3_int(&e2, &mut reports); + let real1 = to_z3_real(&e1, &mut reports); + let real2 = to_z3_real(&e2, &mut reports); + let s1 = to_z3_string(&e1, &mut reports); + let s2 = to_z3_string(&e2, &mut reports); + let res = match (int1, int2, real1, real2, s1, s2) { + (Ok(n1), Ok(n2), _, _, _, _) => { + match e { + Expression::Add(_) => Dynamic::from_ast(&(n1 + n2)), + Expression::Subtract(_) => Dynamic::from_ast(&(n1 - n2)), + Expression::Multiply(_) => Dynamic::from_ast(&(n1 * n2)), + Expression::Divide(_) => Dynamic::from_ast(&(n1 / n2)), + Expression::Less(_) => Dynamic::from_ast(&n1.lt(&n2)), + Expression::LessEq(_) => Dynamic::from_ast(&n1.le(&n2)), + Expression::Greater(_) => Dynamic::from_ast(&n1.gt(&n2)), + Expression::GreaterEq(_) => Dynamic::from_ast(&n1.ge(&n2)), + _ => unreachable!(), + } + } + (_, _, Ok(n1), Ok(n2), _, _) => { + match e { + Expression::Add(_) => Dynamic::from_ast(&(n1 + n2)), + Expression::Subtract(_) => Dynamic::from_ast(&(n1 - n2)), + Expression::Multiply(_) => Dynamic::from_ast(&(n1 * n2)), + Expression::Divide(_) => Dynamic::from_ast(&(n1 / n2)), + Expression::Less(_) => Dynamic::from_ast(&n1.lt(&n2)), + Expression::LessEq(_) => Dynamic::from_ast(&n1.le(&n2)), + Expression::Greater(_) => Dynamic::from_ast(&n1.gt(&n2)), + Expression::GreaterEq(_) => Dynamic::from_ast(&n1.ge(&n2)), + _ => unreachable!(), + } + } + (_, _, _, _, Ok(s1), Ok(s2)) => { + let s1 = s1.as_string().expect("valid string"); + let s2 = s2.as_string().expect("valid string"); + match e { + Expression::Add(_) => { + Dynamic::from_ast( + &Z3String::from_str(params.ctx, &(s1 + &s2)).expect("valid string"), + ) + } + _ => unreachable!(), + } + } + _ => { + params.diagnostics.push(Report::ver_error_with_extra( + b.loc.clone(), + String::from("Can not apply arithmetic operation on these data."), + reports, + format!( + "Make sure expression uses supported types: {}. strings can only be added together.", + "int, float".yellow().bold() + ), + )); + return Err(()); + } + }; + Ok(Z3Expression { + loc: b.loc.clone(), + element: res, + }) +} + +fn modulo<'ctx>( + b: &BinaryExpression, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let e1 = transform_expr(&b.left, params)?; + let e2 = transform_expr(&b.right, params)?; + + let mut reports = Vec::new(); + let int1 = to_z3_int(&e1, &mut reports); + let int2 = to_z3_int(&e2, &mut reports); + match (int1, int2) { + (Ok(n1), Ok(n2)) => { + let res = n1 % n2; + Ok(Z3Expression::new(&b.loc, &res)) + } + _ => { + params.diagnostics.push(Report::ver_error_with_extra( + b.loc.clone(), + String::from("Can not perform modulo operation."), + reports, + format!( + "Make sure expression uses supported types: {}", + "int".yellow().bold() + ), + )); + Err(()) + } + } +} + +fn equality<'ctx>( + b: &BinaryExpression, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let e1 = transform_expr(&b.left, params)?; + let e2 = transform_expr(&b.right, params)?; + + let res = e1.element._safe_eq(&e2.element).map_err(|_| { + params.diagnostics.push(Report::ver_error( + b.loc.clone(), + String::from("Sort mismatch."), + )) + })?; + + Ok(Z3Expression::new(&b.loc, &res)) +} + +fn inequality<'ctx>( + b: &BinaryExpression, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let e1 = transform_expr(&b.left, params)?; + let e2 = transform_expr(&b.right, params)?; + + let res = Dynamic::distinct(params.ctx, &[&e1.element, &e2.element]); + + Ok(Z3Expression::new(&b.loc, &res)) +} + +fn not<'ctx>( + u: &UnaryExpression>, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let v = transform_expr(&u.element, params)?; + + let bool_v = to_z3_bool(&v, params.diagnostics)?; + + Ok(Z3Expression::new(&u.loc, &bool_v)) +} + +fn or<'ctx>( + b: &BinaryExpression, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let e1 = transform_expr(&b.left, params)?; + let e2 = transform_expr(&b.right, params)?; + + let mut reports = Vec::new(); + let int1 = to_z3_bool(&e1, &mut reports); + let int2 = to_z3_bool(&e2, &mut reports); + match (int1, int2) { + (Ok(n1), Ok(n2)) => { + let res = Bool::or(params.ctx, &[n1, n2]); + Ok(Z3Expression::new(&b.loc, &res)) + } + _ => { + params.diagnostics.push(Report::ver_error_with_extra( + b.loc.clone(), + String::from("Can not perform boolean OR."), + reports, + format!( + "Make sure expression uses supported types: {}", + "bool".yellow().bold() + ), + )); + Err(()) + } + } +} + +fn and<'ctx>( + b: &BinaryExpression, + params: &mut TransformParams<'ctx, '_>, +) -> Result, ()> { + let e1 = transform_expr(&b.left, params)?; + let e2 = transform_expr(&b.right, params)?; + + let mut reports = Vec::new(); + let int1 = to_z3_bool(&e1, &mut reports); + let int2 = to_z3_bool(&e2, &mut reports); + match (int1, int2) { + (Ok(n1), Ok(n2)) => { + let res = Bool::and(params.ctx, &[n1, n2]); + Ok(Z3Expression::new(&b.loc, &res)) + } + _ => { + params.diagnostics.push(Report::ver_error_with_extra( + b.loc.clone(), + String::from("Can not perform boolean AND."), + reports, + format!( + "Make sure expression uses supported types: {}", + "bool".yellow().bold() + ), + )); + Err(()) + } + } +} + +fn int<'ctx>(value: &BigInt, loc: &Span, ctx: &'ctx Context) -> Z3Expression<'ctx> { + let c = Int::from_big_int(ctx, value); + Z3Expression::new(loc, &c) +} + +fn real<'ctx>(value: &BigRational, loc: &Span, ctx: &'ctx Context) -> Z3Expression<'ctx> { + let c = Real::from_big_rational(ctx, value); + Z3Expression::new(loc, &c) +} + +fn bool<'ctx>(value: bool, loc: &Span, ctx: &'ctx Context) -> Z3Expression<'ctx> { + let c = Bool::from_bool(ctx, value); + Z3Expression::new(loc, &c) +} + +fn string<'ctx>(value: &str, loc: &Span, ctx: &'ctx Context) -> Z3Expression<'ctx> { + let c = Z3String::from_str(ctx, value).unwrap_or(Z3String::fresh_const(ctx, "")); + Z3Expression::new(loc, &c) +} + +fn char<'ctx>(value: char, loc: &Span, ctx: &'ctx Context) -> Z3Expression<'ctx> { + let c = Int::from_u64(ctx, value as u64); + Z3Expression::new(loc, &c) +} + +/// Similar approach to 'member_access()', instead we use concrete variant name. +fn enum_<'ctx>( + e: &UnaryExpression, + params: &mut TransformParams<'ctx, '_>, +) -> Z3Expression<'ctx> { + let TypeVariant::Enum(s) = &e.ty else { + unreachable!("type must be enum"); + }; + let enum_ = ¶ms.contract.enums[s.i]; + let name = &enum_.name.name; + let variant = enum_ + .variants + .get_index(e.element) + .expect("variant should exist") + .0; + let c = params.z3_scope.create_or_get( + &format!("{}.{}", name, variant), + Sort::int(params.ctx), + params.ctx, + params.executor, + ); + Z3Expression::new(&e.loc, &c) +} + +fn to_z3_int<'ctx>( + expr: &Z3Expression<'ctx>, + diagnostics: &mut Diagnostics, +) -> Result, ()> { + expr.element.as_int().ok_or_else(|| { + diagnostics.push(Report::ver_error( + expr.loc.clone(), + String::from("Value can not be converted to integer."), + )); + }) +} + +fn to_z3_real<'ctx>( + expr: &Z3Expression<'ctx>, + diagnostics: &mut Diagnostics, +) -> Result, ()> { + expr.element.as_real().ok_or_else(|| { + diagnostics.push(Report::ver_error( + expr.loc.clone(), + String::from("Value can not be converted to real."), + )); + }) +} + +fn to_z3_bool<'ctx>( + expr: &Z3Expression<'ctx>, + diagnostics: &mut Diagnostics, +) -> Result, ()> { + expr.element.as_bool().ok_or_else(|| { + diagnostics.push(Report::ver_error( + expr.loc.clone(), + String::from("Value can not be converted to boolean."), + )); + }) +} + +fn to_z3_string<'ctx>( + expr: &Z3Expression<'ctx>, + diagnostics: &mut Diagnostics, +) -> Result, ()> { + expr.element.as_string().ok_or_else(|| { + diagnostics.push(Report::ver_error( + expr.loc.clone(), + String::from("Value can not be converted to string."), + )); + }) +} + +/// Create a boolean constant and returns its id as `u32` +pub fn create_constraint_const<'ctx>( + ctx: &'ctx Context, + executor: &mut SymbolicExecutor<'ctx>, +) -> (Bool<'ctx>, u32) { + let val = executor.create_constant(&Sort::bool(ctx)); + (val.0.as_bool().unwrap(), val.1) +} diff --git a/examples/counter/counter.fol b/examples/counter/contract.fol similarity index 95% rename from examples/counter/counter.fol rename to examples/counter/contract.fol index adca4b9..d10af33 100644 --- a/examples/counter/counter.fol +++ b/examples/counter/contract.fol @@ -18,7 +18,6 @@ fn () initialise() when () -> CounterState { fn () incr_by(value: int) when (CounterState s) -> CounterState st [ value > 100, - value < 100 ] { let value = s.counter + value; move CounterState : { value }; @@ -28,7 +27,6 @@ st [ fn () decr_by(value: int) when (CounterState s) -> CounterState st [ value > 100, - value < 100 ] { let value = s.counter - value; move CounterState : { value };