From b45e0a3717632f7cfab0e2ef983f87dd77e74abf Mon Sep 17 00:00:00 2001 From: ryuga4 Date: Fri, 3 May 2019 17:23:30 +0200 Subject: [PATCH] init --- .gitignore | 3 + ChangeLog.md | 3 + LICENSE | 30 +++ README.md | 1 + Setup.hs | 2 + app/Main.hs | 6 + .../build/autogen/Paths_parser_sandbox.hs | 50 ++++ .../build/autogen/cabal_macros.h | 154 ++++++++++++ .../parser-sandbox-0.1.0.0/cache/config | Bin 0 -> 4071 bytes .../package.conf.inplace/package.cache | Bin 0 -> 40 bytes .../parser-sandbox-0.1.0.0/setup-config | Bin 0 -> 52553 bytes dist-newstyle/cache/compiler | Bin 0 -> 10904 bytes dist-newstyle/cache/config | Bin 0 -> 4548 bytes dist-newstyle/cache/elaborated-plan | Bin 0 -> 42672 bytes dist-newstyle/cache/improved-plan | Bin 0 -> 70501 bytes dist-newstyle/cache/plan.json | 1 + dist-newstyle/cache/solver-plan | Bin 0 -> 38268 bytes dist-newstyle/cache/source-hashes | Bin 0 -> 122 bytes .../packagedb/ghc-8.0.2/package.cache | Bin 0 -> 40 bytes package.yaml | 49 ++++ src/Lib.hs | 221 ++++++++++++++++++ stack.yaml | 64 +++++ test/Spec.hs | 2 + 23 files changed, 586 insertions(+) create mode 100644 .gitignore create mode 100644 ChangeLog.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 Setup.hs create mode 100644 app/Main.hs create mode 100644 dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/build/autogen/Paths_parser_sandbox.hs create mode 100644 dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/build/autogen/cabal_macros.h create mode 100644 dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/cache/config create mode 100644 dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/package.conf.inplace/package.cache create mode 100644 dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/setup-config create mode 100644 dist-newstyle/cache/compiler create mode 100644 dist-newstyle/cache/config create mode 100644 dist-newstyle/cache/elaborated-plan create mode 100644 dist-newstyle/cache/improved-plan create mode 100644 dist-newstyle/cache/plan.json create mode 100644 dist-newstyle/cache/solver-plan create mode 100644 dist-newstyle/cache/source-hashes create mode 100644 dist-newstyle/packagedb/ghc-8.0.2/package.cache create mode 100644 package.yaml create mode 100644 src/Lib.hs create mode 100644 stack.yaml create mode 100644 test/Spec.hs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..113031c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.stack-work/ +parser-sandbox.cabal +*~ \ No newline at end of file diff --git a/ChangeLog.md b/ChangeLog.md new file mode 100644 index 0000000..4f4f0c7 --- /dev/null +++ b/ChangeLog.md @@ -0,0 +1,3 @@ +# Changelog for parser-sandbox + +## Unreleased changes diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..102126f --- /dev/null +++ b/LICENSE @@ -0,0 +1,30 @@ +Copyright Author name here (c) 2019 + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Author name here nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f9d8890 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# parser-sandbox diff --git a/Setup.hs b/Setup.hs new file mode 100644 index 0000000..9a994af --- /dev/null +++ b/Setup.hs @@ -0,0 +1,2 @@ +import Distribution.Simple +main = defaultMain diff --git a/app/Main.hs b/app/Main.hs new file mode 100644 index 0000000..9a696da --- /dev/null +++ b/app/Main.hs @@ -0,0 +1,6 @@ +module Main where + +import Lib + +main :: IO () +main = go diff --git a/dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/build/autogen/Paths_parser_sandbox.hs b/dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/build/autogen/Paths_parser_sandbox.hs new file mode 100644 index 0000000..b47563d --- /dev/null +++ b/dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/build/autogen/Paths_parser_sandbox.hs @@ -0,0 +1,50 @@ +{-# LANGUAGE CPP #-} +{-# LANGUAGE NoRebindableSyntax #-} +{-# OPTIONS_GHC -fno-warn-missing-import-lists #-} +module Paths_parser_sandbox ( + version, + getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, + getDataFileName, getSysconfDir + ) where + +import qualified Control.Exception as Exception +import Data.Version (Version(..)) +import System.Environment (getEnv) +import Prelude + +#if defined(VERSION_base) + +#if MIN_VERSION_base(4,0,0) +catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a +#else +catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a +#endif + +#else +catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a +#endif +catchIO = Exception.catch + +version :: Version +version = Version [0,1,0,0] [] +bindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath + +bindir = "/home/me/.cabal/bin" +libdir = "/home/me/.cabal/lib/x86_64-linux-ghc-8.0.2/parser-sandbox-0.1.0.0-inplace" +dynlibdir = "/home/me/.cabal/lib/x86_64-linux-ghc-8.0.2" +datadir = "/home/me/.cabal/share/x86_64-linux-ghc-8.0.2/parser-sandbox-0.1.0.0" +libexecdir = "/home/me/.cabal/libexec/x86_64-linux-ghc-8.0.2/parser-sandbox-0.1.0.0" +sysconfdir = "/home/me/.cabal/etc" + +getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath +getBinDir = catchIO (getEnv "parser_sandbox_bindir") (\_ -> return bindir) +getLibDir = catchIO (getEnv "parser_sandbox_libdir") (\_ -> return libdir) +getDynLibDir = catchIO (getEnv "parser_sandbox_dynlibdir") (\_ -> return dynlibdir) +getDataDir = catchIO (getEnv "parser_sandbox_datadir") (\_ -> return datadir) +getLibexecDir = catchIO (getEnv "parser_sandbox_libexecdir") (\_ -> return libexecdir) +getSysconfDir = catchIO (getEnv "parser_sandbox_sysconfdir") (\_ -> return sysconfdir) + +getDataFileName :: FilePath -> IO FilePath +getDataFileName name = do + dir <- getDataDir + return (dir ++ "/" ++ name) diff --git a/dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/build/autogen/cabal_macros.h b/dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/build/autogen/cabal_macros.h new file mode 100644 index 0000000..7251af3 --- /dev/null +++ b/dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/build/autogen/cabal_macros.h @@ -0,0 +1,154 @@ +/* DO NOT EDIT: This file is automatically generated by Cabal */ + +/* package parser-sandbox-0.1.0.0 */ +#ifndef VERSION_parser_sandbox +#define VERSION_parser_sandbox "0.1.0.0" +#endif /* VERSION_parser_sandbox */ +#ifndef MIN_VERSION_parser_sandbox +#define MIN_VERSION_parser_sandbox(major1,major2,minor) (\ + (major1) < 0 || \ + (major1) == 0 && (major2) < 1 || \ + (major1) == 0 && (major2) == 1 && (minor) <= 0) +#endif /* MIN_VERSION_parser_sandbox */ + +/* package base-4.9.1.0 */ +#ifndef VERSION_base +#define VERSION_base "4.9.1.0" +#endif /* VERSION_base */ +#ifndef MIN_VERSION_base +#define MIN_VERSION_base(major1,major2,minor) (\ + (major1) < 4 || \ + (major1) == 4 && (major2) < 9 || \ + (major1) == 4 && (major2) == 9 && (minor) <= 1) +#endif /* MIN_VERSION_base */ + +/* tool cpphs-1.20.8 */ +#ifndef TOOL_VERSION_cpphs +#define TOOL_VERSION_cpphs "1.20.8" +#endif /* TOOL_VERSION_cpphs */ +#ifndef MIN_TOOL_VERSION_cpphs +#define MIN_TOOL_VERSION_cpphs(major1,major2,minor) (\ + (major1) < 1 || \ + (major1) == 1 && (major2) < 20 || \ + (major1) == 1 && (major2) == 20 && (minor) <= 8) +#endif /* MIN_TOOL_VERSION_cpphs */ + +/* tool gcc-7 */ +#ifndef TOOL_VERSION_gcc +#define TOOL_VERSION_gcc "7" +#endif /* TOOL_VERSION_gcc */ +#ifndef MIN_TOOL_VERSION_gcc +#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\ + (major1) < 7 || \ + (major1) == 7 && (major2) < 0 || \ + (major1) == 7 && (major2) == 0 && (minor) <= 0) +#endif /* MIN_TOOL_VERSION_gcc */ + +/* tool ghc-8.0.2 */ +#ifndef TOOL_VERSION_ghc +#define TOOL_VERSION_ghc "8.0.2" +#endif /* TOOL_VERSION_ghc */ +#ifndef MIN_TOOL_VERSION_ghc +#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\ + (major1) < 8 || \ + (major1) == 8 && (major2) < 0 || \ + (major1) == 8 && (major2) == 0 && (minor) <= 2) +#endif /* MIN_TOOL_VERSION_ghc */ + +/* tool ghc-pkg-8.0.2 */ +#ifndef TOOL_VERSION_ghc_pkg +#define TOOL_VERSION_ghc_pkg "8.0.2" +#endif /* TOOL_VERSION_ghc_pkg */ +#ifndef MIN_TOOL_VERSION_ghc_pkg +#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\ + (major1) < 8 || \ + (major1) == 8 && (major2) < 0 || \ + (major1) == 8 && (major2) == 0 && (minor) <= 2) +#endif /* MIN_TOOL_VERSION_ghc_pkg */ + +/* tool haddock-2.17.3 */ +#ifndef TOOL_VERSION_haddock +#define TOOL_VERSION_haddock "2.17.3" +#endif /* TOOL_VERSION_haddock */ +#ifndef MIN_TOOL_VERSION_haddock +#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\ + (major1) < 2 || \ + (major1) == 2 && (major2) < 17 || \ + (major1) == 2 && (major2) == 17 && (minor) <= 3) +#endif /* MIN_TOOL_VERSION_haddock */ + +/* tool hpc-0.67 */ +#ifndef TOOL_VERSION_hpc +#define TOOL_VERSION_hpc "0.67" +#endif /* TOOL_VERSION_hpc */ +#ifndef MIN_TOOL_VERSION_hpc +#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\ + (major1) < 0 || \ + (major1) == 0 && (major2) < 67 || \ + (major1) == 0 && (major2) == 67 && (minor) <= 0) +#endif /* MIN_TOOL_VERSION_hpc */ + +/* tool hsc2hs-0.68.1 */ +#ifndef TOOL_VERSION_hsc2hs +#define TOOL_VERSION_hsc2hs "0.68.1" +#endif /* TOOL_VERSION_hsc2hs */ +#ifndef MIN_TOOL_VERSION_hsc2hs +#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\ + (major1) < 0 || \ + (major1) == 0 && (major2) < 68 || \ + (major1) == 0 && (major2) == 68 && (minor) <= 1) +#endif /* MIN_TOOL_VERSION_hsc2hs */ + +/* tool hscolour-1.24 */ +#ifndef TOOL_VERSION_hscolour +#define TOOL_VERSION_hscolour "1.24" +#endif /* TOOL_VERSION_hscolour */ +#ifndef MIN_TOOL_VERSION_hscolour +#define MIN_TOOL_VERSION_hscolour(major1,major2,minor) (\ + (major1) < 1 || \ + (major1) == 1 && (major2) < 24 || \ + (major1) == 1 && (major2) == 24 && (minor) <= 0) +#endif /* MIN_TOOL_VERSION_hscolour */ + +/* tool pkg-config-0.29.1 */ +#ifndef TOOL_VERSION_pkg_config +#define TOOL_VERSION_pkg_config "0.29.1" +#endif /* TOOL_VERSION_pkg_config */ +#ifndef MIN_TOOL_VERSION_pkg_config +#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\ + (major1) < 0 || \ + (major1) == 0 && (major2) < 29 || \ + (major1) == 0 && (major2) == 29 && (minor) <= 1) +#endif /* MIN_TOOL_VERSION_pkg_config */ + +/* tool runghc-8.0.2 */ +#ifndef TOOL_VERSION_runghc +#define TOOL_VERSION_runghc "8.0.2" +#endif /* TOOL_VERSION_runghc */ +#ifndef MIN_TOOL_VERSION_runghc +#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\ + (major1) < 8 || \ + (major1) == 8 && (major2) < 0 || \ + (major1) == 8 && (major2) == 0 && (minor) <= 2) +#endif /* MIN_TOOL_VERSION_runghc */ + +/* tool strip-2.30 */ +#ifndef TOOL_VERSION_strip +#define TOOL_VERSION_strip "2.30" +#endif /* TOOL_VERSION_strip */ +#ifndef MIN_TOOL_VERSION_strip +#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\ + (major1) < 2 || \ + (major1) == 2 && (major2) < 30 || \ + (major1) == 2 && (major2) == 30 && (minor) <= 0) +#endif /* MIN_TOOL_VERSION_strip */ + +#ifndef CURRENT_PACKAGE_KEY +#define CURRENT_PACKAGE_KEY "parser-sandbox-0.1.0.0-inplace" +#endif /* CURRENT_PACKAGE_KEY */ +#ifndef CURRENT_COMPONENT_ID +#define CURRENT_COMPONENT_ID "parser-sandbox-0.1.0.0-inplace" +#endif /* CURRENT_COMPONENT_ID */ +#ifndef CURRENT_PACKAGE_VERSION +#define CURRENT_PACKAGE_VERSION "0.1.0.0" +#endif /* CURRENT_PACKAGE_VERSION */ diff --git a/dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/cache/config b/dist-newstyle/build/x86_64-linux/ghc-8.0.2/parser-sandbox-0.1.0.0/cache/config new file mode 100644 index 0000000000000000000000000000000000000000..98821468b6cb86b77a270bdca3f5510249da0e88 GIT binary patch literal 4071 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 Qq-Q_tncs7%*sYlRUuUdB+W-In literal 0 HcmV?d00001 diff --git a/dist-newstyle/cache/compiler b/dist-newstyle/cache/compiler new file mode 100644 index 0000000000000000000000000000000000000000..25206b805623e74cdf1b2e184090bd84c4f56af7 GIT binary patch literal 10904 zcmd^F>vkN)5$?ejzDTxY%f?^>X99tckd$qVEW@^wvD&Fn>-kiX#o+NtlW>RVNHbtFu%?|-Rt48OB{l=Y)!{JWIKr>#Mrb>k#r{*3T$)x0DNbTY|U z5Qb~4R$in&RC;Ctz1~14z$*lbk_>C1Ijq*;xF8IDM@jP8quLnDR_@-r>y-Y< zDwihsO&iRbbu4S)47)E_ezA3UkQ&{M)B%gGv<~<4(iA6IUK|b8KFeQk9qw6T$by@# z!__3oPFDM!xL0PS*&hxf;|YGNb-0sFVQ@cht|mp4r@Dw=McaCqmBntEL~I?}Q*qY5 zWo>_t{##Y+Qy6UFM^p9pbF5-q#968n?#ugU^rgvVtM8xDuO^r6esE?Vn{4$K^RZg1 zaJ3WTiRdz!Affsr^KO7w7TJ1~V`}ZH=nf`U;5SHTf}n1){?*puW1aTey0Ft{JOLK0 zW)o6>VjVz_<5cIv?HEcrF`huzNoxdDAF z$u9+Jw9BA+&U*9Q?napgMV5PlV6E&(t*<*wJ)F?mj8ZTHPmqR|!_>E|HOFmj$KApc zF~WiyvVdwcpH_lmE!VH2+|aNDbt^H3s}^hDMr*OrltpzB?M6YChZ}K}!0CkaHnn{Q zO+95>7}a{Vnuc55{i7&-l9I>F{GXcw^km9T=K8z!)|j-nhb#lrDqXSeAIyYDf6*r+i}O%e0EL| zR#`fPs|ikPHie@SO7o?hCj_Fo8U@wcO+DvV{HVg^#oKeSg!*N*cvM!|*>_BiO{rwG<)N)`aSC+i#0%$Y{nCe_M0(OEwd)j z8rwr$q)63*Qgt$ct6#7-JhQEXW8I6eCt<@jo!I-ka(Ycr z&9ELo8+ul68>6%d%oC92XdG5O)U9Q6)cfe*MS+$!5k3m4-?5&ZgDij2Und2kk7jhcx2}L}MNWRiE{6D`_)tP?Ndm<)(ssVM2 z`IyW72*(#(HMkpXPcWLxF;s~sV6Mh67m>oCOfZ$BmbiUza19%}yWq-sT?h$>>aH_b z>ep-uy`>A?ZkG2Y@e4}%a{^aSSQ~!5k2{xWFQTH)c!H1zk6>!RT39mcNpj|}C9;4N z`Qxzqj&-q87Tikh|2+}YO4WdRpZNf+n9f}GJT8DO{jw&ce#Sa>RM4rDtRU5>nwWZn zwcx~7%N;WK6lOdjP^B`BqVBT|w0w|uGUN}MI^zjKEstQzV=c6NU@NznQfb|?5UAy8 z6qU0LcvOS1S7L+V3S2nkQD?B!2W*MP5C>Ukr@~%i2;#=jz|@DV1)n%b6I@-QsNUGJ zvt&F0$tT8P^_X?B#xLUN#O>9_6M)vZ3AyW5bDz4_-d_v{k0ZX?Bvfk~l3-9d>=q53s@G&1!Cc^pW-)(s(@^@T1l#>9@LR)-nZ(K>Mb)K!jzvGjy||gr<-Erl#YlI}MU42UJA*E!Z5yk>i~E z=Ed2v1Jls&(mgbftv%)7omOmS%u_?@92R`>Q!?X{if?$?dYwKX3v33BbfinYJy zXM>_Sn3G%&UR8tYU`h*l<2j3qC*L(N*{?Z^wyQVQJdbsw*EW-^qZ8j%!~XhXXW
    gW)}%M*`;FEUAC7=|@mm-@CuP@>g{Qc7 z_i59@jR2f&a)`HyQoU?MN5aVO**5~VzMCXpd5RM6hq&Xy_V$Zsev$-ZW4r)S>yxF2 z+)tum&BkdEHE7qjBaATZ`F6m$!Rr9_k$O>H$A!vz%zdw%-mQdd?Dq4{xA14*;6kc^ zC-i*hpb;-l!!vJU^@+V1SDnM3n0X&P3LdW9zx&C<&%(RmN=JwH!n+T{Zg~IxgGcvP zy4{CbuLPg2M2}p{b8HO$%spSm`v@P7l*f2cj33(cvJ+pHn_`)c%l_UFSN5C(=GoNu zWRGjR`+EqA0S0S)%t3hK`cco;MN2usLCqoX=8!_MILdwe_fno-CiFb;!(m!+UfN&8 z;lEasq={hlFS7J<;2QdHH~OxO@nQ~ZiI)#i2rost!3hxQt_m1`Yn{8*SdbZ1TRomU zZ^fCL#hzhvjKBA+?L-ZoMMlwMn@L(lmQAv5F>BzCqJFE@*T>ve!`^LX<`JeB%|>CX zpN01I!=%}dnOq#jX=>dKIoZcGE_#9o9&9tH8%-_lQ@QJ>NN#?SQG`ymF~6_#Ui5<^ z^XfsGM?D<2@%GP%=hvQb?Z9AhxOc~qxJaXOSBQfJET*s3Wj($L%~EE>xocT-h+YJ# zIe70oH@-yxhPMt~`1W(5DMJtP%ov+Du<2n!9itw|e3&FQ{g0)V%k*7Qx3SM$#!frB zW!Ak-IOH#a)aIPsLi`{|3mSm9z?RJx9hoq6G%Jc;1)X9;L z*tCQQhg9**UEy9I9pVnrt{#)i7v0=_aT)ePIAYQ zj92SN&*M`X{{41?ZYL1;zP-Btlpp>sAC!%MjP`kr$X95!3`<`> z{12-3bHK{1{oL&Hswm=5`l`noAV&2lWcuK&sW8vjf y9X#>5p_5Ph*3dyyJ~VX5=vRhLcmeBezbqVk!~mzefaA$6^#9XpPkfHalkp$n&|JF! literal 0 HcmV?d00001 diff --git a/dist-newstyle/cache/config b/dist-newstyle/cache/config new file mode 100644 index 0000000000000000000000000000000000000000..c59721d95559c44153d4ad7689ece6ccdda4a5de GIT binary patch literal 4548 zcmeHLPjB2r6t|OXlc-IpNT@iWMI0(ctnIPaW4mfmst{37T1E6wE>$%%eqJxxU9Z+& zHRU64fp38dAA&nQz@c1_xN-mq2_ZN$UeBA|xXDHvq0j?Pl=tTS`Mo!9-i*gFjLBnG z#AqxnDek&u57{V(Q7dPIm}f_pV4U@q%pZ-99{&B^SGzxLd~@TEZ+}}xhg)`<^}&|E z2czs$I4qvpcUgW2y=p7vm__w%nme}--tF&~M!J|{$6DIhNv zbt>b{)OW7?iB(tQ&YAVc2)@aI3ITRu_ z-m2%{%R0Hu$K75mH)dzrwGv~qZp*ua8EB39X5DVc#3AcIj>cPcgEFXDE~;KwW6f-! zdBct~VVkev*ld|sXZQ`|FWcQg3`bU4^m|H%Ic=s@3RYU3NLDuLD3eB76vLZnh*)zR z(8RQnL#ngK)OQl_JmNbpb!h0g2{1u?@JTz4cmyo;5`d7?B!MI#p69oNh`B(+IBc_6 zQ0^$?9Re)k%yWhB(wGPl5ymADk3HH3;X?$W;4~o8za5Y;a1#nHO&kV6;Kgkhaa=)# zN8NzOR79a0MULx5?J!6rUhKHwgiQXWA|VuFP8^?w4sqjlyB&vtBRs@$m@fj5u|!Nb z@e_w6e&Q46c`S}u0Mz%na1w_*l=z&n5Zr(yZ6W7Kz$G!__(Zx=!Xt+|gm7QxM`a-b z$_ax=(!hxsjXc*S#A9xoGABwxClFN5Fmj2)S=P&^mq2N%eSqrKAEdY%pa{ov+k0xP zVJij|^R|X;?CL>ZIYPEh(NvqvSWZ~2sC!Pw8Usahe6;OL3_2^SQ@(oqG%U+kzF^Aa zmJGcW<>)j+6W>udwblI(clYi;*i(_-a2*mg?~IEy8#M>456u)tpp=_%#QMV?>?mr9 ztglqpPH|CcO}uiy=QnM;(=F05FA)?wmY1E{Rpp%#u(*%W5n~|;yPM}@efG&p=~BMC zNG2G2hJJF;1C~QG2WS>4G(X>G` zswb`^jIe;uSP01ijZy{up-SL zS9|KQx@gz)d}SttiDC9DT(;l(vSBogwNfW{_9e7AMi+KC<}C*Z@cQx7rv*p2H&55B z-ecW?mF60x4t~*NoJ@I1SFurq^wsJM%*v2UJ$cq!MOvPWfV+6DH7fFKSl|`!TI-2C zT~T eb4z7_GNk`E+!;sN1vQ**kZt{qbk=`UEaM*?A!_3Q literal 0 HcmV?d00001 diff --git a/dist-newstyle/cache/elaborated-plan b/dist-newstyle/cache/elaborated-plan new file mode 100644 index 0000000000000000000000000000000000000000..bc2abcb66e961275c92bb50e67c254a3297b72d0 GIT binary patch literal 42672 zcmeHQ-EZW`aVJ+AeeCz`-umo2pF#Wl?Hg%kB#or=*J<^!D_bk+R@&ROV@KhTJtKN4 za*pKeN}InSe?X7~fsyAt1<6BRlK?>i1OZ|oPkD)*JOl_3APA7BAl1#TVv}snj23&w z*_P}*a=Lz1U0q#W{Xw$ZFvOpkUX0f!@b2~bK^)D;$9BZ#`%imL7<9efr1`V|{7JR%l)7FfAnX+UpKL~WEr6vddChbJI5<+&dq*u8K(KO|MkALr{|Mhc&Ec|w+aNwQR`%&2Sd^RufnVH|naK5Os65=KyN~GIL9mOT8 zbTYlvYl4-Ss8~1EV%5Qgsc6!_@Pam+otyu9THBI>geyQOkdW6fsS5aQ?$3Y}#LbvB zysgci&$89^SE3MVlMr&bpab>v+^4vy?HCAl+Z`|quFv77Z=@?<%Y9>avJuMv&)Ok#y|mPE8r?>x z(QYnvYZmYdy02g=xFt)`1|mYTrYZgy51?MAcNSpxmqV2I^*r)jfQxGpzbyS=*5 zYBie+c5AV1H&(kVjb*0|C0uPar5uWziUUcK!D|+4clsac2PS32+tk=(1cO#3g=FAD z!UP0>LejN*mqk$+)#JV$#0BDzJhIjxd3XZe7OzUPNl6M)+?II}F|Nv#CFO-FW!Xr{ z%0NtbLy+`_igvwkM==9y*@4>$PkD7*f`44wO9nM<_*DfoC#7gC;PlS+`sVJzrcA!m zYBX1^wLx+mMpj^-Fzc8_OcHOiQ|Nnq_P)GA2XG=uH!D~qnJx=Fe#Gz1&-c9Kc+lYz z*40w z#)C~O46J)za(~dV?8N%kdGe5@{f?4{xW$?(rk~?CcEz))l5-~*Qm(Ea+d+@*guN`S zB$pJx8@x{Jc%34eT(wB}W&b86=fH(HD&sN?FDnkF$pOO|7HKi!c5rxzRVkw z@cPN}3)IShsuq8<_2igGMux3;rXD46*iSIb-K;-{=!%KouJ205Q5OsoBR#9syW}Om zDmhs4+XcT%U=pO{$a}!-Z~CCm9B?=_Eu;SO?@*6PMQcpM>xILO2xY${ha>O!I*o4k zqwpu}X>vAyKb?>lhA8uM$a6*Be1=%(3iDYBP)4;hk(H#Y#G8$#Zxp7k5_(-p&cL%Y zS(UIEoTbX&wRt|1l|Lr=EL+}R7Qh~i_$Z1fIjHH=lEV;Tf_Fcc#UK=u<@GA>p6ZKp zt8>jcoS7jcN24JrQt!Y*OJqkLi{DpPL6AD)dgHDgdyYjSB>XQ9kGyr5@wqwvIX?ZmzuC(*!31`&e{Lr@}$IUR<+V17FZqgdqZvd*9V8LRSmRu~m|2BAXE#qB*5^)yz>2bzfRo_iBWvqH7}z*G zsM5Tqf+n|Y58YxchKVf?=AY?bh3dHsX14=ax(pnOFMPl%{t5=oab4Qplc?IdZ^sy$ z#?tW8!J*_GFDrsi?$|HLg=MbKDQ%k)uoI3MfOK@xcm zHPCZ1=anAEK_-6a;eedt%j5>cPgw!8cfIZ)a3Ee{tzy$sQImHef)59T6#umO@BlM3 zi>dXHMGn=hP781rzEDC9M2Ate)+#c+aRw_eo-?d8Q=2f-XG7J!wE5962{mZPG?UQk zF|!r=uHEs6mUw21*Nqa+bVZ&PpsWJXEmTt!Fw>&hXF+2u7BGI8#mF&OYS1BNbBZw- zX0~1Eyu5_M#27r#i-#@@1h6*7V3{}=Q2(PdXl;A%A?u<*9b#fT>tl8FOWVVp^!xCX zV3_>L9dEedRKUz`7;K*OGpp$|sy(pJIzxSJ3OcUP8>-gCUNn?mgSt4S%G0Xx5QatJ zu%gdGH}CbLa4|OQX-w0$qz^P@#N#M?8vnZK2?zQP=m_LIwM?BnBEE_=JjZBiJ2GD z&Glk!Rsm|8{4veA=z`Os*(-(fdMfqW1$22TKxQu@W#RXeQ3_u!A#;Pa3cbr*g)v%% zwP7tZf;S$>u`0wDV6`nI0%qD++ZwWV`lqmK zhp#z0%)L=QnzDkP&Aw>DRe_v3fM8Sh>Z};J z*+F^CuYjgESUl*J2lWbMax*B8v=sW4&ET0Ag~5rkWT8=f0@@JTRzoh$g#mb#^AyEts!ETn?7x&eCO1!qTI|XetWdG2A9>m6QKNtcrj7t~rK@fEp7?ON~d!<-s@14(1bm#EluUm z++zWQ8TBw_hBvs3I(2sdufdS3Y0QyfFQ-`M(o%}9F=zOx4ff2-MifJ3&uj)x=z_0c zxp9?1F>ofih=xI*%l6^5x0m9c<||gPsQOaOwQUDH>!nzyc3@%<;L9|$v@}+UYq^2W zxr|kNbhy=Qzm&$Db)ofAtdqdHf}BHLp&Z+W!Y^%Yj3ss|?E?@y)MRS^)Hfpex15B*1WBGNRVGf&boEj5w z^w81NIHUf{hhcy8a96BV>}XcF6S zJQ4=S-UwmYn1=V|qqd?pMcP(l@<)NvFBHgafKD6sz{dukDNXO5vdlK5>`jtnoOyUo7-k ztTTc&Vh(a+U8&qt`+NpfUZ7XT2|QF&DAy^k0w#7e&y-YQY8=%HQvkF0$fgwi^Ill- zyh{l=wasVBy!f`X2o8Y8dvZFleS+)gH7Q^`Ms>wp5kl3WJVGpt1kgZ*DPVcJr-((K zyc24Ii=3Q`bs>1oR2B)@tBj{C{)~e1H!^7CHWIuJYls-~M}Z4=9|f;%?!y}~V-}FF zP8=$I`6%JV)r?X2sqcRaD z9`K^`DGm)YQ01dQKKYiQtyK*zT+};YGaW>f)lk z(pl)bORd%B;zEZt-FAzSjb2?0TO}3Jzh45FPs7N$~R;1(}4e9`V9LAq1 zwimHFG#SAo_+ELSuVix_#x*Bl|8WE_(ZllWFj2W@#=5+6OJW+pB+mANXv5AGCDihd-FVzVXCeCxiN}c1K}zxG%JH-4efWHwe|;?(KXso)9R@E2e`v!K zDKE4hLP%gZ>Otwn>t~_0@eV@19(-o;sO^f6#2(PJLo(fz^XPZ2HNVH;4QQEebru%8 z3yn5>BD&aVt#(_ERiM8tk-G1QpbbbPABm@KG4Ngq<9p zQ1eFl)pE;B<$2#|DHHd|IAwP9lF=o|J&Hm$OZ9XZ22}OmA2)tU>6R-3$7tp5+&>r% znt;IxR=d1n;l4V`7=>{Xib4KTPmX|dUQynLs!u5lX^N^=U_~%mRSZ2O7-@u~R=IeD ziJvQclLR9_KK_G^8v1_rKF)Y3vK9(2eeRNd=F71N!)xw4%=2Zb6+!yY&Be#X9nJU2 zzaAeKqYDgoE9nZKn6F_`>xtj^&wH_vqD3yg#YKy}`YYO)*3>`o-{PVTQ1gm!X)nH^ zMMJ%sE1LUP&ryoy$H~OY?HzHR4{4!qA+ym9sxv{ey-cLsc_xN;Dw&v*rt63DE6+K% zgSvl@zN;PeIj;*}Gt>k2JWkGF6Dldm6$@bL>ZH`?LLI$z|zOIvJ77&?a{4U=AaKOrf)`f`JOD7T51@-=t5lN&r?ltQ)(9DKEPzGAL7 z)@%ZmE46@X!IGt&_~NVuPDEHW#_h!LuScmSRx(*U{f=A-!=iC|L4aJ1?v`n zYGQnT9|01d+ay4W8A>c>Rs4<2Il-9N)cXp$VZA`kw!V33Mp6$|7%}T7yyoU&ett1O z7jAJeKi9O5SDJ*ab>t>V#axl`Vt!t<%&Ys2HvZL{cA@4M^Yd5d4MQZMxqtN>rC2DO zT3yV~#q3|2=VE?-F+UfsP@2VL^Yb4SCt}sp=)$gV@G3{{X)jCD>SA3&Z=YA3isrspm%szEMm@2g!F0+s7w=VS;_E=D1jy_%&OZz|Tu`0~Y$wM@N(` z0z=Nl+Jrn1skqpQkt6-=tm5Sl%{OU0i7Ehve7*;tH1@*hb$QZ5oxf)PGUq;^!1A>; zBq%}Z1Qz8TOs&(WlAHnc2Xlx5)`)uqLNZHSKezjGGiu~z(-O5(SJJ8}X4`BI_Liwi)#yTc|f9AChGy(F|`$pXjMhM958_MwS6 zei&yPE)KQhVKgY>F^nj!6*fvc8U*|;Yx(heA&bRQDYo}scyw|KZ|2TZzI9vI51$u! z7e??NGrM2G`c0K}Jv}i;$@YbJmj|363=Uaz!jJHQeF6%(zpsiA5jL-Rhi}IMTXMp& z&Rs9?66T-n1$-yGf}HQZjGTkR2L&c1Ip9l^*R5FPzp*fq}*e(`#z}>h~ zekYy|ECy#L(ch>)*$p)a)bq}oFSan{+n?;% zXRtTg!-3CGI&f?0$o&SFJ%s-=Y3>>XO8C5%AC4&qV%U-e4yN)^mv<_3QL!lXoeI5F zEXw^-rH(4v_zdEqwqP@@@Of-f(q$n+BpSbsxYq$UNWu-+0OA?rwZb>DGKu^t!BYYl zcaZ;j{mET89S)A2<>re`BHZMhD#`dAM{Qe6#f@ z>uY^)Yirx2H1O)(P^KEU5m^J|{=P}Srv++%-=K5eq0XU6!!dSnXdZLLi9B*+ZIdu> z2`)X#c#L_yrbtTo*)p+7wA(oeDb@G^a)R!BC%2S`QlU}phLmnRKs10U>4t|nLw%+Gu@;;OOPNFx^_3?Y zZR7)`QWDpje2d7!x5@zH1LUWC@w6tBNJ_p)H1?412IeczW-^Hab;V1{eO=Ow>=C$K>6O)pmSztz-VC*Aa)P!hj*#R{sQDsdO=tdp6--O(}*cMR~ z&Lw=v9GC}fdCUi=BhY6>-W4$8KFWepZG>xqyWKrJX2B+mhE1Xgzb#OW3FL&H{(v4e)29FV` z+~GEu1CfPD!ejD8<0|q&ONSj&VUPz0VA=i$12}!b>xxq(!@wle+q{&OIAaH;aV<`H z$-M*)V}WkXBvPtHj%YZ@2kiy<_{OC%%pzE95?QpDGQe0wegMEB2n+_`u58V`myAsU zd^#;a8DiW-8KB@6obu*DFF;X-h$6}q$;NBQ3todnIvLR$GlJ1TJhTj+9GjFPT82n7wh#sN1hWKL3fLnQMo)Z0Fp~hHo^%l7b0`B0Az~4q zAuxBBJ?DX6L^c>mn*{qDFJ(2*xPkJ(XF(I;v-@^rpTs7SgwN)Q##_h-QG`h8p|d8@ zL=-7djc*|*I1|t!=8ATf4nAU&$imyp0OJz!gFkJ zd9SnuCldN+IWHlI@De@9SVcMD4wyf5udzu4FzRlol8gX(ppQ~cs@(`pqKMumM>D>H zTu>FFQA7hcXBC<#9|{psw9XQlM#)0%_v~l(ffITC1XzvNQ7$OTMvSh%V|(gD}2;5}-d2JNd!H z<=CWD(H~H{v4&{KPn-zL&#sIZbaVXJmDnV@$WMbX=&W^=z)$9oXYTL@M)XWV9%1aF z4q#h;xZe(}M))x7g`S#7!nS#$(Lz2jA}7JfI^`mQ@G6yLOd}8UsGM*TMtwLO`s5+3 zTkr!-iL3{!OE4Y9ISdg+J1mlohsY~J3iL-##Nb@-pvM=?pnDOOL?F@6!Lo`LW^_;% z&uZYq8Qy1V6%kp)&@#ZVk)OAl!3m6%yc0eRqjZQ)yP-nKHs}J8;$R8bB~$1Q>y`Wf zj{8zIE6_>VZ9>R_!06#6jO*WWQ$FriT2W@O&<77-CJ}{=ie#gQywG-m$Vajw%JMafoeQKPUsh4d+M`vE={STU!Zj33Zl7% z0G-B3hZ{Expb^Ft>ohhgS;W$eU|cTXcT+qi6Fwyv-$y)@<{^VmiNv|c za>PqSQJNyzco%uOZelJfVlO49c@e?*2I8TfQ#{31lW3xz3shqgIl*o~8^HN#&lrrF zC|%f1q2L<8@n)v)!>E4=P1Sk%7VxsDcq$%1(Qgkh3ARJ zZy_JI0UQXp76f4${bQ48sSWZ};~H{8D>`ssJ7Wr1oW$O*P8&}54wgop%Mj4_8& z00Yagu3QUFomVy?!iaHK13pK@w+X4TtNy(z7GJ^3A;(@@E#hi=J$BDp) zexXV-zK%S+RKSx3S)!z+QfbDgkPDocbIC~t&cb4o0Ai$~gBVLF19E;8bV7(9!gR4o z6p?d|#$Vb^{~+f_eB|bdP@3gT0Fko}VniqdJW2r^44{L-5jbIlM^&JVFQFt+2623n z^hlz}GAK0T%g6;j@hI?N=@JIjTie`9u}MVX6GgId7kQzMKlIph*;mIV5kwuUBx$g3 z$?J7EUmK!{CC|r{sWtU0=<9a}FjlvCQ|C=YLSC2K8V!P{LHInV!%<`dJOuvMy5&Fz z@4+6|{04R{awV7Y-mT-vw3`aLs~jVC$EtUOupaZr^KfngsOi8SZIbDZ!US1AwNy@t zG2T)@d;@+yh_vb;v+v=d4HG}uJdp4iaUeEqt1W-m#QO^J$E}UC02VDAzJEVFZRhLy zl5%NxPu{(LZ++c@hXj#rJ@ag9-3t43d;>4cbJ*zqSz4$Lm=w-`l#Ewk;mML2$RtIt ztDKr1_r}nUS*EYu^TUqqTXHmPZQPX--cq+g#!cwvoG|Flp_JP)a$E4^W{iq@O@*uW z{#1R_st=(3b*(y-9)q$}vz3eZrhxEwAOOja9kY7;m{U8eZ^a(h z?!yr8JnndNXXnEQmhU@-GEPHMePM1H^%O9uvmy+V6xgjDIBE$dViqrO6vN{H^rfs) zreHy3!^48+pFXF#y}8%<3HY-W!vbIep3oB~M1X@*6)PpaBR*dM^gSXu3ui|xwO5+0Zg<(XTh3yO;Q^diQ5g6$YCaFoBP?(v*phw_ z!;N^G(xU1XZCOm0t=u_lH&E1&=Y68k9WawMTGJ32FC~ zk&7tGT@x6nz(ikHm+fLFbVWo)n0L+7Y2GscQVVZ>Bz3tBgc!RHJF(!*O-)_gaH24d zdE9_b4-8r=$PL%`dH64cmdo>8i!OgJPO@Bvo;KfQX4?8_pcw$E+DcyIDx`bRes>>P zgjFo{I*_R>ya#gY6h#!+n<|VK$%e=?2%f_{Rc54sb27Pce5lQG@uA^^yZeQrP0M77 zzX~I+BIFv?6(>sIl_d2vJ96-lrORt@|74|oL`TxRB|*n_Y|VLm!OwD`t-~n&85(<% zzhEe3epZ2V1Hw8v-@wum!w-p3@n2Bz@t_lP!7z#!J%4<5(h2GK*W5T_RG> zc9fyhO-YCMd!Vx5L6gkd#PEGB2?x$`!H_kPD4{oaP4S?X_oK3}(cl>8;>rh7{1yh6 z`nRNT)H!sY)XDv|!~2N*hwSs4z&qumIqoam``^nb{Ov(MpOy!lpLGyN^QqWah{}G` z&x|0F(w{`_@u$M?r9&y9o=A|EHn4cgu$Ioanv$TmvjP_M=U)g&&>I7&1=duC^MW@pXa+1=ZZDXFR?m899d-BIhKTRUn=)1{v7JKtGm zky%yTrpOwS)h)GugMWZwAB=;a{bbxd81R#Qz`+I%2lxO#`Nenkg8>5u3K^kUqb!Mne=JP6OoGW>tZvAedv94BE! zmiq&zzOmF;YR#H|^?&|NzxB6&Bq-iq9>vjeJg@<6_@eKGLC@<0+W-2m|LNYXWr22& zq4{1nhx8}Q|7_=fd|x1aD3H!K+NbT+y6**}^LjrR<*5Gm`9J+x|KH7A;9#xuc7U{u=^xl9;7!*13P{}e19p7`pb=G-3wfD zzLa=pBu?zJ;WbdyfBUz8-T#}NzxfycVevoz?Y|bBe|9y_j_nKx@k=k;L}_B@{~bNo!r?`C*D>$3vJU4c;m-Iw|(EABuwq=HB^ z>#p3aI+(C%8n-XJpbi(8mVc6t4h})U4FD)0q%};@1@t!eXFv(!EtoaDtu4EuvuxhM z-)7ysE#2S3`y0!tO%0MWpO+!K`x+zUD78V73_nIhQOsq$!>f=UMgOEnR#uv8 zjaIwS-e|OX#CDo%WUaaCZgw|`y|L0GWTV^e^+<2Mxw5jhy1r?*NPENGShZcJ-EDBr zpEQZR*|k?%&RVPOHXUcPX?KB9*Ij9^5@(HUk`1TZUT*^Z>Uwiyz13@zR=d}*$@=<= zyV^oNEvN0Qv|H<4x9x0hv^F;zt(DEyjrAVza~mzv*s$ThZKv046Sv!Jtl1llX3Je& zU3E9s8_o*yY1nJdI)SO z*z9dI)}1!AaI@9qe1zYW42Xja+OycZ^M5IRU{MCVF9sX;_%NzClMGoYm;nc%6y2)# zNEC%pJs#RYtN_Q=+#bC$El2F@SsZ|@#oyWUY7+4Rz zxZ0h(goebM9V77E_u#xiVwE@zG8O? zEP|vO=?s|t&3A^x0fUpvGU!)-hjPqHQezojD}$Th%Dy6l6V~w)5#1g~;jhVyakQc>bm7^`-DwY4P zEz^}O|1nEf+5G-GL+nGuC%lMMgIqq(DGcT&==5`)1)*5XuQ%!RR9{`%Txu@i$_!C* zFcFd>^c~n}iR{QD@h8$Q2tp@Z?>w+$&#?pxj{c`7124At#)SnN7YR&DF$>(jcN`Ia zjo9QvMPC*Dh( z$)PLLKLxe61R#u|V#ocp<45<+zVo6&Hh_hhf6MO4%7}yvdlu2Hbk!JU7 z56xmKf|)%J)}QHLiRifs7WV_#x(poQUueL}{uG7gsIKiFaje?5Z^!7Hrjqbl=Y-Qv zSCv4YJ+NO36RvR{W2MxR&UWmc=%}l+nR^<<5~HcKmdPW_a5>VsP7-;J7@(IV&I>(_ zfz15AhXJ|pFS9$~KY0f%KJa>@zyW`Wy^2Fi#+rQq9(+7PDEyzc9_nDmRx!67lE@J~ ztCIqZg>ICH0iwf^rPc~EzjFaQFrG86HFLWV>65YIUfca*9ETc=W3iIZ%CWE)`mWve z$F_K3kM@n^&U8(lXGmEGqFKnQP;lniu+N;vR3xDMF!Pa9kknv8%GMN95G?GwFnM{2 za1&F|z$_lR5C~vzOhGc!8HxEvr_kE|(G$``hB}Oy{cMia!LRL)H_}hxDZx1Yvj^UI z#mNW@hheaLHq5l9lc@ICzUYp%wK7no0#+{Z+M-7iKqM9E|OaDj>=w@SxVMOuInL!!VI(U4ZFPXq6Z5jIup zHs?PFl}atrv6=mRf*sF33yX$a+o4MZ-VZhCylgVU9fkQlc>eD7MR19gE9K_4+M8tv zwO#s{W?F2;=uqvY%xOOrW^Dz#xD*g-S220xkCRCPUoT+hg0>R5i&RRCR-$d#3yt7S z17TPt>=m@ymJj;`6Et6-i6UDJjVbGyriYb!W{)*vTbVRkMu!^2! zQ!|o@lyq9oAWCo+I|=nNlbJ1aAbgb_5;B~5_-LDV@eHiAv9~o~?eb3|*M_e-IIO*q zKdQ0>o~^#bf~y2`t^>}dXxSy$vz?1f22C4p({L>G$s^cy@r%)|#C4GcZgx0PQdPHi&xr$DKw$t@ z<-9<4ny%7gmd;;N9kaXVV>NbT4|b?XG>p6~dejJ@L6ai@UF&LlerOj$U`ezb!X4;d z8kvAHa>H38OP=ltvHd-m7#|aOlI<4UfK;F2t#mRM{k;xr7KX5gy`|~=g@+^{u%aF( z%=iJ9LFXQf;58UwY8rK9xYtu$;)<;l-C)k}=XS_TFN-L~@?O{toX`bZ!FJ;=fu!J! zvx*HtpG%J6wYMu#&(j?%*i^j|ac$oL%eoTj+yN{M0(_Z9Y%NXI;#w}yxsqkl0>FF`ze zLe7P6y98a{EXL|>ZvW^pj2hI(c-;IZoW>{3?;k<5kwuCc6#W*1WbL{g1_>;$|Fv#Y z-kI0bKYwV$qmwMO(4fp5j-9*bk9=3&rO znz|NY>j7SIm7JyqNf(&PGQj-iq77)sXX*ThaE*=3JUQubFwC2FUl_ZFm$Z$pfzr@7 z@f=O)D~X%i;m{gEXHa~&Br$;XX(~OJY^Oz7EdlQ&t zF^w>vJdX@Pzj0EAtt@r*O_|*fdWD_IJja>GLZu}VN*LGE(RBz9|HtcHqRE+%zL#pp zVJw~z7U$I|i1b4*-_m(%F5yUY7_yb;;^1MrOIknxF z(z^IQ*9Znc(>*zz*+0X5^crU{9ihBqE-?|^Aw5D=A^}v8vIHzH_awGRlQ%+*bK#3~ zwl4&)nerwfd71L0&7VoA^o?oOOYbNM9Z z>Tbp){JBp*8xgTFKM5Q5CIeW1;zD{7`pj|XvnksNJEK$UWbTB$&p9RMo7CY&mlGTY zwEVaN=j3mtuXyp#x->6ry?MkXR%QCVUH(fs{8n&zj2yQgbu>_}IB`L#zgyZo`1Z-6 z?|g9*Bv^P9)0bc!MPJKpL+jnScli#;D5L;FaxjT z3V|+ngVMBR@$2-ft^s^61jCqpgeU8PsSG|DWKg9|ElJ^&2W<-D1>b!wi`V3GN=E_G zFZTe45@8z_P#5&Q@HzO0*oa`1X$uhw@HhJg;BDB4vuJ0*D|9c#Q>Fd#7XSsWmC(mf z>}9-gNFw_D7v2%1Zv*-sajou!1+15NGb9gg*{kjDMiXAdYi_Qt+8f=Kp1aoCY_6_! zNz-k&h|tj@C&tN1Vlux?-?zzj(zGb_6)4dp5kgB`a*qae2s93(&lKCM*d3aR;1PVk z80bsY+=jU3EF3-KmVzFArHB zT_x@e$4iM!_a1dhFhpBRZm?Bvz}5Uh)?&fcsPYLlm$;nNaiuBnx=@1U^={fzO)h@(R(_@5htm(eHi`8fUhniGEG5sA74UJCx)h9^>9XgvX!Krre- z?&|g1Fxuz@!Cw!)u&CE|*+*iJ#j=AF-R0}(kE|`fPv8w`UT$?)R(mUrHhdzw+HGz2 zT8`ti;hWL+>T09CwnAFMyI{bLdXWa~JQoB7)I>T8%60fC3|_)c24`Y;BmZ)~MWW)m zZ!(veheA0;aZBZ%3A=;D$6!l{>J+8Es069^;HO%u%YGKf=QADBmPO;vhwhRNvyFM&A4tbu9MOzxLnaq7G2?KK zwf(r5xZ2qfm-&zu<`$tgaf9N_h}B-kQh(N%IFHKhqU^sC-_=g~oY#e~8R`Lf6(<*P z2o?Wc)MXoB=}Bf>o=P0Oc6fXscO}&rc7$}CPVQJRuGM+ACGY~*+=U~yI2sy<#0`tC ze4Y?zU4FSEY$$h#m-IDvdh#7SVdPBq6$-lBx?Hl>n`$+I!WBk9Ib%*zkP;|3Xjda8 z9PHs-PEr(&Uq90@y&OYaNGU7OZI$uZCkcA3DzZM*v!rXqOLZ1!D}DdZk3wW;3!aIO zmJi-geaq6xZC?h@g3XYGJp{m^X3)8920s7K#}0~i)t?$4pFc-Hu+JS5z}buis#U4K zkvPW~3!8ddK{Ko?;Oyv|D-#OwP=pDqeu1yKsn+M!`ka|XwLaI3jyGC_qjlmTNouV~ zSgp@h&AhqasN>(fWfw|bti*3$6tz*fw5rzU?4)t7o@#wwtng;@DAS~>L%UggL=?JHj$;As8&FWKEMQybMPzExsEzoDymeEUKZ%$j3hd^q5o zb%~XK+2UACA2J33tnAshG^exr;67iJd)y?i=T=ZVKKcln`1*`~DtQXuw7&M(N0_JkuLq|wJJ09T%Z?ZsOR{}=lD*55>}W~8&)Y&j zs!N*z#}J*;f0t~;GcEfc6xiUyr4(7_5ARaLc217c0lZ53F*&d((N>3j#TYy?*Vl< zK^UBn=!~ZDfpY?s+CPz5Fb|uTyi1Q`fg?E~t#i){yoC4{M*%$vPvP^+tMKWZJXYBJ zVgehR9x=_@aX`;apc;m+n_Y#=@5)@t^#a-1h`W`9kh%i+UMNh~WF|~A?C>C%g4iJ_ zr(82f!2{df+fj%c1!8)V*=aNi;J{iq4*vCP5e zYq3I#<03O#i4-c{KT-%jD#(~8fE)+~nvV-KpkC*-2Z$t~V-8MzOi!xWkDrW!0M3a} zYAyD#;NXRvcH17>U7lJhP5i0$aM1y$TPO_hSINoqWeO7>uneI}L1sv* z$?{rMDac@DSfwC?BS7FG4iB<2>rhj@RVm0Y4%KNZpSY}e<}Ge~X;qykma~tH&rO%7 z%g4VM-{>o>Qjn#cDQTxlL6!y|nRQnw$O=Z1ODk5TAgfZ4fra35E}u`RN7h@wR zubC846SR?JXdr69wFNzOW|6lBb==5$h}ARC?6>FKlV5TRT)tTc=h zpBPpt$lzquDg_z03jL)@L54>-i}+SrD_1GV*h$dzBO~f@{(tk8RVm1*LsGnSm4XaC zQKxrHKXH=7U5{E*5^#E)w1i&EW6OG zN)E@&pY%B284_n{5F^nWHSjAiLpiGTc~N<|exB$r3e$g)m#zf)SL^d?eO|54m&KBk zkCiF~S=stgaVAv?GL}`2Yo$sgu9!#u=eRUu<6xW%&RLgO`4?tKzBtCv!5H`c7( zT@Y=Yj+a0$xxu<}`wbj-LJioet0xk>I;Ch03Q?wdfmnW1?Mqbq63jZPeTnix@@617 zS|_eE)asD%o|5j6oZ~5zaI%UQz;aXU*s3hP>fb2xj6EFky0Hka)xJcvFCpx;+LtJf zP>fC{`isK!U*x4LLH^agM71wb?Mqx{U!qDumh&f73bHicJy%M#Gm*0n^@qqNpnH%q z7RWi_yjAT@R4K?*<4S+y5~E5%M&i>d1zBnoRSGg)_PQzsnUdtMNi!A zbM@yPis)j&JN4&VkP`6K)>+r3eG!h5 zCnKLAcc9k7k@{WAdkp=z(%Ll`$l<$M`jf~GVvlBPw0)H2!xC9!T;%#;iCi)+^8G=n zj54x=~}H2wkNy$yJyB-|kpsFwDM-37%8@HZGu0l|0&>2KGc zKd^)Tv7J!$#ijta>OeGdL8P9k^?MBHu28XZ3-$slxNQ{cSM zsPtIIGvxG^#3}jI3xI=w-Oq7Ip~mkaCCI*GCw59BN?}kPhN9efjM$(WTADx~f#eA} zhxFG12;Gg}%$|Qh=m-5ojDC-5snKa@jgb7?}bBeMMVJ zZJoo6^#avH5&(u{3W!9-VaBhK>L%88;Pnzy6vME8*?|H-rqZ3HqW_6dK8IO<`v}z~Z3f%qP$$$jAkdW6D zFlM(3)R;j^7)?7N)NP6q7@5#qT4scZ1zve)H1r{9t0JhtV18GNWBeg1Ett`be4v-s_;+(eJOCUE3Olzh9rBdX8hJ$o4UXbq4J|i(CGKOI)z-+t}5sX!& z2ZY^oXai*0<)fL-lCdcezL_?lh+^DD9w6YJPtHA<1%#IoK;~ssu<;hsg4G~!A6%;) zQ1Jzn*>(YLd=sg`ws|HSHZ(!=kRBaUF@q9Jfy8XP49!?TUeHivV*5K}NOcl89*84Q zpt{3Qk7P8F4~*`ITRSI^t~RmHO;OB7cLp#Thz}!!7RRP2VIzZ;8GDEY{R9V%@>cAh z4Iz3uhDEh05LiFyP>k;&4^Ra2MKnniC&wgIvC*K>H4DWjUg82l;``f+Wml zkL}1li%kJyHk$_;?;{;}5dn&bKXQpFV9bjsP~+!F3C0Alh`4N=rNKvR3NW+wB7$)Z z>A{}%11B7i2u5vYZvxI@N)3kb5;=gH>8!M8pLza8&PoIdvl2a$v59=Z9I$?vUSm@L zK&gkJ3^D?wfjMexn0iN;jCMj(K-g@PgBibrRL~V{P(-6)LWd{~g#?g|&H`9O$&Bx> z?3Z@OiM(L~q{iFG7X+nIh!h+M5bOOs(D)V7!T30U*~qn-dltoPd}ILQ$A}MocHnhs z%tv(!!zv6ez|;hs^_d34_#SeA`QWkL_Z(Qb3`|kV<^xe~Y#}z(_ZXsccRQq(2Gd*& zZY4GaoYkknFvNE#$bn|&*dg(#Z%1^133$dKk6|3544_-6Av}PD=stwKFjET<(`_DT zw2%&zNI?);r&I#KtV#wM^GE|TDg~T{(Qx3!XHOt?Iz%#T785uusx84X=8zM#>oJ6j z9&-k?vsmB<4pd;U*;|Wa>?0Sj4~Fr~zS!@XqL|r71~48XK5g1Dq)-1;tS1DB=_(I2 zzAe+ijG2Z)$0O)s0ZQp|Kx3fNJ@b5b+m4`b1Sq2uK;snYD3J8iK~~ zTINz!14&oFxI;Y)Oe1RFfSa3{zbZ$7Nu-n5aq@V#HJbo?9@*>RJmaQgD^G)Myeql zj`0iRLi;F;lb&~eG=w<~R+_OXfN38oVB?oa3zESyBlbQUg>V9pDazT%lOV<-Qh+ag zVh1l;v`=GG6f<9%0gUSk{$YwQiUocOFg`_mXw4G>M}4rBHjj7(khMky8y_Jpm5r@M zneP?FXHL0c;e-Y1AajncgG_?y=o^LVWw2x*57_ zh+F_WSB}_s4q*+e!DkkqgBUBw3p@jdP?G`?OaWpeJP$PfKGIPggg)5{f-v>|u_<7w z4)Rdr7E;0}>Nw$$xU_3Ohk%4`BE+VEvzSDKVSFDsKzDXvedgLe*u7Xa2r!#BiU`IF zq=z;GIPsk0kRDeFb}vAz&3T}4hIFtiNjo1&Q6QwA{J zMSRfZ34!GcY&Gy5ZBxLQE)}RDECF<-!1#z17|auBaf~IbA8=qB*5!M_sqyk5Byd>V zRf1)Ff}B8FwxQb#qch?71(f;E0^Ha|YOrgT(6~cb&=;Em!YnukGlob7T}CZQtT||i zEP!m}t6<{`q=lZM!2N*!*A&I9r!s)?A>spo7PB=MU5^U@4gEqHWc&naXsduGbFu=G zwn~N>-#{ubVoJpq8Mq3IO@Y876&;GPhCHC=r$ILa|G`ujn*zdW&cO^5si5YkG;;Hp zE6r*a2&`ruiV-0XuqX+kGlB^QBXEJkEUE;{_yKZaZSb7XrK+IY7y`oEAi<0uA{E%g z)4+$VO9-m>_NkU)QvjJws9@s((n249?vYn~u8vIsV0|ou_*1K&^Xu&gAF47;etM z?QzJ>M~du7ut5?S9P5-?8ewAgsp;1c7kGI*3VkmJuisLDerTnUdoe z?@LJWXvl&{s}4Me9)6WF^Lx7;j=r!%x}(08DPa!+bi}*2a}mI%g=2LuEH~Y^=VaFo zkNDl&54X21ct{Z0)=ST}wykiO$c=dw*~6D;XHJQ}uk9&irtGgZ?gv*Agugk0`(&uzhzn<+Z#Eg4eD9zG`=e$-+BZg z-et`3?!m$5k1gMKls3*oQGI1;9pz+b&}S+d6iI0J4hXa`=v%bGQ4Eg*&_=ROnS%|L z9S>zsjh^=euk5{}?ytd~tr#|>60n56#SK(+v19@7K<_i`hh8ciTs-W=A8k16t+mF= z`lj1(TV302x{YNicSYSwz2M>zj#*X{p zD@$}Y8_R6DY;`VR%N~8e9b`4ed%X4JqyvKjjv7f~3v}SV;&No#TA(PeV4=n#V9hQY zipe0d;NPkEb?URram-`0H8PvyEoyW(#NTRuqP>`5L_obzEph8-p-Ue>6xse1k&}TJ1k~KXCtI+M3zEPOY^*$} zrK;|quyEH3z`0pT$VO z;chV;=)gqZSJ!QI61pKKAsdJ20wBqaH^1QRyAOaErw%)@s1w#S-HF0DrhWq^Jy0me z$Qp9T^?mC871wf|O@%#ap1BS)ZGOtkr1f#gF94D(Ew9eF3FRJ)-@~Vtz?C%hHh@K2 z=nUl6g%^>~-jmU2lWg!)qu>>+Q;RLn@ubS}p*M@ohk*~~?ki23=fxcVCPZ8+$}Q1X z6vz>8B&ns@ku%^$*SFyQISWa6$@?5>V8_;yM>qT|7sfh7=`XPdXW>;Ey#Ka@P8A6I ze z0x!2jb$D(XV1p1id%Sh>2!H&=@*spmRp_}Yfp<=$Ich7^`ajMfKHaa+m*o*IPfDZB zlx@sdWxvJG48V%gp90#aPlZ2DLn$U6E8t2JJFrq%D>OLAkv_;8sK`$PGmi9bh9tBg zf$s`12qu-^mjt7NOQ3raC=W@8l!87Fvebt!&~xF>QWH=$@OP=V?+TxkR~qWX_@#02!<<0fA7Y_Sw9FFkH;qPSS$;x^FBo%Wf zCc=$=0L=59lP5Dzo;>-eEW;3=LiA)pX9!S%n#fB)y*e_foB zy1XB8d6wBr>rqyq?`xoh7BS?r6lAgv4xyrhM6P*4G=GYt7bLYkRHPaZIbR z>1;MO?49U5mWR%3mAb7O1AY&xxNdwavQtyX)DZ@j8(WR-t!Ag?G+UiD)7jcuw>O$Br)jmU^;UDM zZMUqQ?dHzTT62A8V|%LudG=bdzLSlcwW*BVWGV`IbK-deNPSB>k%d#8o#%5=&(b?>5Hq7;P)3(hmr?t7+w$?gp?X^~8vu&E&PIIf#*|1Q?hSO}= zEN8O;)>fmvv({Q`G}@ccuZ4=(YPB1tvxD!gHQQ|MtT&sD#=6XY*C8-2;9ulz?tHv-j`OGDES9KRlz1H0{w4WMT5A7N*VTUt(&fQ6C-vG~f9 z!`=O(lYNq?)Z)*-gCz2cs=J!`3>vuOVaWL7D-lL>tx`; z&sJBvZg@UwlLYy5gmR%D>BallcTBs_xwDKLiCA@mVB`dn7d54-@{5~j!g*`oFOPeU z8924TacbeYQ+vMuVDIUE%^TDnx#8ncyJm*9U)&@QS=wJ|d5E9fQt9*?{LMahE>d!( z&o;lfdu|T8&J(X2r)A_S1^5Sl7oWK8G+Nbfn(+JnTPYd%mdu-z`1_q>GdvH@BBMJ~ zeJZKxA54K*E!Mu&hWX7E4Wn#SiH4p%%b3LXjTsW$_=5%9O?J<^Gv>ZInNoRbx`UPT zKnY0;|9$_>g(;fDq0F0;`1=pbE?6rAO)Wli_3)fLqr<(pTKB`i8;0!Wmg^VruAKPG z`jKS3>WkgPm6nwmU6PW2S8}-I_fmEjA_CNMq!BRwR8EGD1%uPmV(Rbz7wb{dwB|Ja z{?6d8aAm(IgHzV=Q#FM+_PyUaufogK$I)yg6{4)JFb}uoWL4*2r`(5`3*X#ZjD`A3 znaR#JOS`4g5SVcU{uj(Lm%-~Y7_}f#Bw>QwuQ|P1fB9k%m>tJ>!AVfz)E@=mh3ALo zm&Pfl&(>d_5YXm?`}LO(dOh#rLBH*GN8Ttny&O70LDAo>zdZ7C5Ul6@2ffho2WIHL zcAl7*-Y9%N>NzYO+_`k-ewSoV;eRj6JqN)OKFZ}k_02)xhORd-d#uaH6LitBEcN3F zdg)k}`^iKdb+qvwPw0&+$>U)GB5h6|2bK6FeD! zai95@>MtK6PDHpw)fW^LVVO8}lJRHE1JXlxVEUI&TriovprA;11y_P-e9C-t^_RO3 zhVH?^VL_$As*gOGYTRRF8OY<~g8I86P{+rHnn0t?cfCOn`iMasd$(r>!BYoQ8#^c{ z%m;!iA7y;QdEL<@g}=d4L{Lz)dkF~<)%X+UgzkH0Xhu9L6`ktHQ|ZQ2Mx$ydHAEXh z^UxWGK|vAGj1iMgHk7Y`9(zv59QDEzw~KBx^3nSg6}=P8X}aNZ&SEIj<*fCoHIBbPLXi2*xqvMN5dj=9{k_KM=)I zRM`?Kx>0BD_mP_$n8J&iq4V6aJl{TWogR!%fj$&@Pk@NXRzN3 zoPweWyG>CIwR(ZxwC5r3f=WTpL~$w2@K`>)^4@6JbFH+Z3L*S%F2?xVECqdJzdsBw zcM%2@RI2DBD&4rtXjqI$C4<{@EO-`05*Cvr8jH+_p1wbJgU}g-uG#x)Wa7I+n!~pj z6zT_5%85AR2}>g_##C}QJn(!BYXwD$v`7#Qi}}!BnC}SdD*={0(M=Uu^p`Ba*kFDD z_Qxm#!hhMDX_O2K3h@1?09lB!%rc7QH(r7;B72&!FU>pi)H75NXB%qtH%|9`DLh9QKEZ zo{oLDUr+$iPI(aHhb#jXA$*b9bKf}jk#j+gUwAfm&@Cv~52=)sfyQl?2b+Z^!e)<6 z-|PnkMG`ifBpM$uAH0Yn`A%ZVQg=TE@H|Ygz=gspqgn^Ixzcg?=oQ}3L>l|A7t#X9GC;=kKr{aC;}?= z$kR#2fO#-RJs3vb5rfg5S5Oo&+9YVkA2Ao2LUam$Gz_VWQYfT|qIYJ;y+48dx=!*Zc0MIl;nph%+ilSJc>nGgNr2}UE^6z*9ii~bQ4jL#U4Hp9Xo#e7t! z=vLm~5~il;qRny;#*bJ6#)GG3*R?QlIWMSGF&?ON;{l_Q-%~{A_O3^khG8y%TL}t^ zF7nGk7;24xB^;P897!`16)L0_$ zg9B9vF?#1>j6;?J`w)n4%*(@0K_v_OhzZ6c##7Obd!yhtYCfSzqOOue<3pVfBW4r| z9gon&iWKoBh{k!E?;E#g@0vc^Mv-DZMKsQskBCk;nvU`uMiE6nOp}f0%qv_9#v=<0 zbpdSYkj5s&^%QC-kQnEVynL9^W?7WgsMo_(N^c@X7Ctl!FihsBelzMLQgZt=4O8jx zPDh?bi5Gey@)_dR9+pUj?mWz^g*GvEO;~Aeq zh`yVPF@C^OU<0xjJ{pOxp(tV`NzjZX=0Yt?iZ+-is;K1*-RLkkBr}!A21OICo1z*o znG@r}vDdqd=F%!vj0-B=SYR~O5YUmIw5W2u0Xkt&P>868@-W7)SPHd~7la*m{A`FZ z4KvN4pomc$rO3vwnHQR2ni05PjXbRW7F4?Ec^bu-V-EPz=jPy5liD;WsASj`C6j<8#KNog=*R ztp!CB?VO?-CFVrEfj07kC~8vaqTVzLud&^F?)1ztxfxnDWGO%=(iwgG2y@sRys-EL z#aL%q@C=edCIuA=iX?h?l4$%*=A%0Bdd`Evz>B78Dd+#3VTgod9ARZlEkWHlxXxA2YZT=Xd+)w$-~=fn{~UrVpa`Okb&{;GU&!yJhaN^lzeWqA2!~~Ad3$ATg^z|UJscrcuTfX0 zE+QfC$YX`0!K;CHF^G;hO4{As8jcbT-5vzvM;~raQWnM8L=1VWU5gKbENkda&+PKX z`TbhGGw|v`h#;^&^r0rLEK5Q6H71;{d{xsqCC2zb0|ld@2qJ5B$Q-(SR-*VP`zI1! z-E-QbF3t?ezsm;*&>44k?-B>FT&vc;tl81Jy@bsiJ(IuQd9=G*!zO`m)?T}2ZMUYK z0-(ZN_~!6+RH!zpG;}$q1uQ((WCl`}rq?1-vGdtMeR4gX&90; z*xe^M?SYw0jSB1s*bZPDi5q1W3o3gq>mC_>FKP*y+56AhzlA;50xU>{u!L?+8mMYw z%>wR=eQ%&~m`x~$FPBZ>(`{?3xw*E!wPUZ@&9-Sb?6obsV{dM@wj0e(XUjC3)<)CW zmN_r7Fgj2u(^jz`QG+4*E;fqs!wkCKMNKug=*wcdTsyhMl0Ex?+bn8|_qg-?^aPy( z$3ViMhB~k>WS((tRS9x|iJGLqnr+b)ak2)d`TR5W*I7^eJ*?T6g9vj*zXXQAiBqKZ z6fOQGB%Se5qn|u?z8$&Pm_u7)^TDxUrEoWx0m9uyQ_tGr9;>A_NEy*qmn*N(lzJ~< z%pf0AJ9&C6lQf=tOohheN$R2JWl`@kYAC0owR*j8zT&(zdG9mQcTl~^*0Jk-&!+8% ztk};P9G<&_0ht?oat+J4&;);QVf9X}Wp(dVguAr?oLepQL=Vm8ar@NtyUvYz=F*FS z?{qQQ#_nIBEI+o4J1+t>4r}+yQ6{1(cS~TZAC;0TnHmeGkxn^Ce1&<@0a3f3z_nP1f82fZN;Sp zznYD{jwt;#w_piJY54bt8k{N+>*P35Y1KsdAw}x=A8Ght)DB26qIfa#2bcY}*W+%O zh$H4Co5$43vy&(EbcoDiS<-R72aSb|CYfGf_kAn$M%H<%BFiFCLT^(`kyA_Bk!EWg zHLBB2MLb1;#QZZ+jJ{RxI5^6J^X@|&!jYM&FGgt*-Z@8j45}cTIv%c>m=y!nH%nbs zW*|iXM`H_+GzeV}?H;g#O49r&7qHW3-`# zaWWZrB(bh0au(yI;2eeUY$3|eXY49cMOm1d-Q2cYJMHF1gPv&F+Su5!*R5?lfwE~g z)^^$*wOsvgBnPhmRcP1S_f+RrlVa6Rm7S)bWpUn$D}RE#>MoWjx}JY|1#TW{V3muu zHW|t115?>%ktI60e{-&*MCB!8qTG?B~9AabRZW|Rc8=o zwdIwj%7=}nRc%Fp)Ix*u8+uiwFcrBj$YR-&rm~>&z1T-ygQbiCNyXCFQLB1LQLY;* zH*t+jFp6W&Xk~`HDMcxsjCcVcw`t0U&z?ISuA97eDdNb?H2TcpbR(rL$7%c}TE=HU zUM1*&D)#)vAw_1$)42T9ylhYHU9)t)Lrtf0E2j9&pQ?5lZ827jm#fBeT7{XW=p2T5 zx9fYOscx%$a;h~^UJWG>iLvKObjnBPl|w+(Gj7O>~Sr*)?lxGc5_7?G!3iI&nO zpoHaa=kIz_{cP5kokA(WT z^+Fle1o0_Y8Aq%=i!0~4Jaii8hCJ74;goKrPPta^fN7TqDSz#=xDWOEfU)8>}TA?Hs2G}?w;TX<`JjSvMHa1z?9ORq`-0(m{ zrlqy4EAnXT6gj2+K{nFTL@ewNUc0_G=xa+BIqDSAho+kbWC3InTN=8-rbk($apWfkO>g>Z2 zuB%a|mQx)uc0R&7wpvQb>&!8JcF%e3#u3F-+0}hKqd+^fTy9=s(2OLOoJJ$)vz_C3 zcaLsz5T9#tS7^lwkNUk;*5yMBmi1PwvrjNF81SVxH`BSC2y|{#-13XlgGTGEG$z*d z=3B9rz{=Yp)6FL9+ooF1%)uTjG!-`+jRB0ET4hPBmctFWuuO>^Qbhl%o8ExAbc$Wu zw@@`{7SrqF@Yz%J8qQ=oHo0<`=ll+ziF4a5E(emo#Gv)iycGtGtk3^*-KM@WpOb&( zh#u&TgXSDa5oh_Ql%VpgXX~pJITDuRv+>c1{VC!~$5#Ys$J(f!lh+)U9In5kU zUSO(MD#kZ^nvOL7F+ImdiZ})$$rv}|b6|N5q%EW8C`zF(os^BIS~;M^3P)ZZrIT}y z53A(SF`v95YNlf%Q-h@hpt!rs<L}c)37Ho@o($5{cm0y+T+V(iz6DE}3N@YAgqV@>0Kk!>~v2P%REUV%yBMqaxT_|aNC|N60=XLJZ?9`{hYil8Ryl+qY$f8^jLa)l0%ghr@mP0k0usx)g4%Ln}cLwhU(*h z4%e)td+V||35QE8>T4^TcwA#m^4)`TcVIsCZhu(EF*p3f>jFhQM5`3K*$>vHrK?}J zJqs5^+xU8wX)RG@xHei)Q)Oyu6;3j!C_+})@2#q1a*0Z31@aElGffSaMwKgv9;2Sc ze+-#aYsP|BZFCJBv9Po2xMegUm0da;6tDW_Lg>;lRV3BEnv}#gW*&fI zM%w>uZE$<#WQ5}axG-Z1UyoZZWN&s^$sq zF> ztbJ`_|IPJk&*4-Yj`5TRsUIJrztV6h4?|zpXsouy&EV=O9cEdUs|H`x9`w2n4r@z7 zt-Zd{Szl}6;`)ttbEng^EUSf^>{}ZfYpu<7r>XoCPcL%%X+_c_ z@Vu|OH_O*N)|E`zS?<+RijP#~WZBt-t}a1h&9(eDk2o)W|!YwxKFRDj8s&}VwgV@3ozh@-z;xW*C*r1a*C=q-~@NJqgC`2ca|fZ zwYr{1n;2P5sw5U4*HvCLr>HsO1SMsB*GJvx0m{03Qlw6AQ+S)_MpVw3A6d;)5C%jK z&hTt%a{SNu^5c^jRF*;u96rqWyreZ_v*RsxI=sVN8RAJyZ4-dm<#+Uo9o8j(wu4pf zuA1tk%9Q!@Gnw*v{hQtw_0bm?5Z~a|F}Ht)IP;Aw_BGEA-<+QXVn5)_jh85=vh3cR z<>2Nld$}w>mSv$~Dk=uHG0y0}8y4c5T=Ab|#2*gAv%~FN@K5r=jn+-j>&=^>TN~Fz zQw)CgO}^fLl+imvPf&ake1hha;1g7@XOxLnw$Gxk{FePxGEKB-oD|T_c`BaF`6hU> z<(uHikW=`NGKFR~ zBj@DwX-dqmt`LLg_;CRwtwB7YwG66Z%opsGlwaynCf5tDb#&|pp@#?eA@?#RWK$O+ zYDR26UxBg|iMgl0xS_sg_Uh@awB|4P|?&WTLD6 zdc-C-#slG~5)G4yQ#gTxth{iRF={HgM9<`Y_ja-Czo6{9w~LVt@yf$@Zx<6iio4t& z)=Pa9^+Q|Cu?PA}(UF@wa z>6%Rc{~DaCptpFt81rUoPX%vA?maY#D`t50e6l}P;;$CQEBaGj&UXW8vV5$eq1@4A zUDYE8Q#9aeGmO8GKku6Mh3ST79fv~)c#)#hcc5m;_(5Ee#v-;zd(H*c^}Nsnbq1IF z#F{Oc!EoS&7fxHun?av77J#|WWiUg!C$|WZ92ptL5)$ie-?h6=y}3d!4k;QRXhJJE zIy-dhP05Ha`MHe=(|H}2pj&?G&J_$Pj=?L2N_#~YJmx1>Wh@n^n+6(;oQj!Py{M2%DwQP310 z)nS}fmH6nYDWQa3TP3=CR$b@IT5xTOybJ69;~&Xf%7nhSHhivwOBCtw3U&GKp(M*n z+e+7dh1);LNtBFtjlZD?%S34Vc%uTYuFOR&5n||$+oO(hGoKiXO2R#jPPUv2x=kSD z(8FV=xw$M5VBBa-AUYlnmBnsOzMfdQdfdDYLODz`-9;g0 zlI`9CweHZpbxt71;`?wV{2?_1Z-h&aUgPF#rNMjA`?m$Eil@#y?a`YzqN=MJ^Dhfzgh0S3&UDv))zu}xvYFEudSxS-I;pOY@$s=A)&26Ke( zIrZ~sd@E>uQ;6z~^F@uwIFnh-yMy5<RH}DY6*tlq%Z0DE@g75pk#cQjg z;ht_drl#1Ck$hux2! zNdr-mc@A{TzZ{0@K@-Zx#<)OZOxgG|Re)Pj`kC3cyF+TeBzaMi>Bs>MHAyO|0ioCo z8NGJQEH?|sP1lZ$0rkA;R#UuUjRs780D~2PfX#A|u7?iuNblP25KH!;>CvrWREgGm zJ)oM54yAG#sWSR_;@Ty1D<>+SG#KJ#M_S=|^1FaG0S{ zO%jdbCNjz-CzW_81I>!@vC@P}g><3D49qE}kbR(658<;mAg*ZqT61V5E(rMGflNr_yh14eEB(t*RPR37060t{pFw34Q(W;)i_?TNF+d zEwpJMN2hs>J8Ato9Z86?Ev*0B16EUhm-@I<3I$6>fwPn<9AYwkUZjigH^XyV(C~aG zw!mCm_W=OC{yH8jBIW^HdKBnYG?%j|m~jg_9p{ytamZF7DvtGJ@)RNiT;!gk>vCkd zb;Kt07UMdN9!VR1CxxIY%5n-BfpX z6}mbUCyTFbL35Jf^Utr%GOt*!Z+TV8bA675fz!te5-#y#W^ybg5umYMmh%myg45mu zy(Q1WXr#p59Ul}fuKZ|((L4b$S;vq90iw)zJ zJUxXsUf@1y!5sH81j@L>*T(H9yb4m$6~d`2aj`YHl1^a(ZW||MVz%4p_WW7IyI--z z*by%=0BZ@Z_(LWdV5QkJvlcLOi3@rQB@w|FlWBSh5%RNy&;f6*$2hLj~0A4oMBhf??}i01t?=j2a0xWFihT&hqscIvf2yp&)Ci$E*5>p;G8as^=xHfzr~ zXfFI!TPgTnE=MkONrU!ZM@uv`W8t#iPSVN1s3Il;)&Za}JqA=F2{gk06_-?e7x4`H zwL4K6_kZwE0`9B&9Ig?^9p#sGJf0KzGg@JZ>%WBOkZ5F0DpVZ>ZMOS3q$6GDX*Bb= zttrZkO?Qc>02ZDC8ASc;4$9A;m<|^zhNc-qr!O!+FIngh+uUKI$Q!p{M}2aMh2#4+ zLjubj;H@IaIhlb{0DS=#o1qskELuiOcB~~>+bcJ0PKt~_)adw$$*45U+&FrP?riri z0)3g27N7W2#PBEd((S%NV4f4~M6Fa$vGb{p+iuu5<>KCq)|Ww{mjN`$cJ+BJ zESaV2^;xB5Ia+iQ3guDA#%BzjQX!tMn6@Md3q+7^F~c=SMB(-_q42QMk=JfctmPK0DwL{4L|)|H__`@S1kZ1>~?V{ZjUUQYxgwPxI&sE^p#sq68l zGL9A*MOHMn@TWYs`xeFD)N*kqr7;Xkr0QL6j#62xs_-`~XL;P&Zef+07TOq*^xcbu zu)8Kx^)L}D+=7bN8Owo)sPV8Mq{A0r6-TX;rdB;wRnm%K>?MlP5S*N#&WvfcL{snB zHC4xmV)43c8eS>uSi~)+ux?bYShuZ;2j0#!bI*O>rXWPS+zP$(~*x@BV%?P z8~&_@uf&VmwDu71BFv3p*B!ibJ+k_^S`b-}gJFFGStsX~v-GMe5zJC8@`!=q3HPu? sHbt$$pURk8{&h4e>y}x)bb7=3IG};KgpHTD#!GK76+$In literal 0 HcmV?d00001 diff --git a/dist-newstyle/packagedb/ghc-8.0.2/package.cache b/dist-newstyle/packagedb/ghc-8.0.2/package.cache new file mode 100644 index 0000000000000000000000000000000000000000..b3cae5cf028ad4728b344193a7c6fe4e76e36af3 GIT binary patch literal 40 ZcmZQb&qyxFPG + +dependencies: +- base >= 4.7 && < 5 +- transformers + +library: + source-dirs: src + +executables: + parser-sandbox-exe: + main: Main.hs + source-dirs: app + ghc-options: + - -threaded + - -rtsopts + - -with-rtsopts=-N + dependencies: + - parser-sandbox + +tests: + parser-sandbox-test: + main: Spec.hs + source-dirs: test + ghc-options: + - -threaded + - -rtsopts + - -with-rtsopts=-N + dependencies: + - parser-sandbox diff --git a/src/Lib.hs b/src/Lib.hs new file mode 100644 index 0000000..52b8d6c --- /dev/null +++ b/src/Lib.hs @@ -0,0 +1,221 @@ +{-# OPTIONS_GHC -fno-warn-unused-do-bind #-} +{-# LANGUAGE TypeOperators #-} + +module Lib where + +import Data.Char +import Control.Monad +import Control.Applicative +import Control.Monad.Trans.State +import Control.Monad.Trans.Class + + +newtype Parser a = Parser { parse :: String -> [(a,String)]} + + + + + +runParser :: Parser a -> String -> a +runParser m s = + case parse m s of + [(res,[])] -> res + [(_,rs)] -> error "Parser did not consume entire stream" + _ -> error "Parser error" + + + +item :: Parser Char +item = Parser $ \s -> + case s of + [] -> [] + (c:cs) -> [(c,cs)] + + +bind :: Parser a -> (a -> Parser b) -> Parser b +bind p f = Parser $ \s -> + do + (a1,s1) <- parse p s + parse (f a1) s1 + +unit :: a -> Parser a +unit a = Parser (\s -> [(a,s)]) + + +instance Functor Parser where + fmap f (Parser cs) = Parser $ \s -> [(f a, b) | (a,b) <- cs s] + +instance Applicative Parser where + pure = return + (Parser cs1) <*> (Parser cs2) = Parser (\s -> [(f a, s2) | (f, s1) <- cs1 s, (a, s2) <- cs2 s1]) + +instance Monad Parser where + return = unit + (>>=) = bind + +instance MonadPlus Parser where + mzero = failure + mplus = combine + +instance Alternative Parser where + empty = mzero + (<|>) = option + +failure :: Parser a +failure = Parser $ \cs -> [] + +combine :: Parser a -> Parser a -> Parser a +combine p q = Parser $ \s -> parse p s <> parse q s + + +option :: Parser a -> Parser a -> Parser a +option p q = Parser $ \s -> + case parse p s of + [] -> parse q s + res -> res + +satisfy :: (Char -> Bool) -> Parser Char +satisfy p = + item >>= \c -> + if p c + then unit c + else (Parser (\cs -> [])) + + +oneOf :: [Char] -> Parser Char +oneOf s = satisfy (flip elem s) + +chainl :: Parser a -> Parser (a -> a -> a) -> a -> Parser a +chainl p op a = (p `chainl1` op) <|> return a + +chainl1 :: Parser a -> Parser (a -> a -> a) -> Parser a +chainl1 p op = do { a <- p; rest a} + where rest a = (do + f <- op + b <- p + rest (f a b)) <|> return a + + + + +char :: Char -> Parser Char +char c = satisfy (c ==) + +natural :: Parser Integer +natural = read <$> some (satisfy isDigit) + + +string :: String -> Parser String +string [] = return [] +string (c:cs) = do + char c + string cs + return (c:cs) + +token :: Parser a -> Parser a +token p = do + a <- p + spaces + return a + +reserved :: String -> Parser String +reserved s = token (string s) + +spaces :: Parser String +spaces = many $ oneOf " \n\r" + + +digit :: Parser Char +digit = satisfy isDigit + +number :: Parser Int +number = do + s <- string "-" <|> return [] + cs <- some digit + return $ read $ s ++ cs + +parens :: Parser a -> Parser a +parens m = do + reserved "(" + n <- token m + reserved ")" + return n + + +data Sentence = T + | F + | V Char + | N Sentence + | Sentence `SOR` Sentence + | Sentence `SAND` Sentence + | Sentence `SEQ` Sentence + | Sentence `SIMP` Sentence + deriving (Eq) + + +instance Show Sentence where + show T = "T" + show F = "F" + show (V c) = [c] + show (N s) = "~"++show s + show (SOR a b) = "(" ++ show a ++ " v " ++ show b ++ ")" + show (SAND a b) = "(" ++ show a ++ " ^ " ++ show b ++ ")" + show (SEQ a b) = "(" ++ show a ++ " == " ++ show b ++ ")" + show (SIMP a b) = "(" ++ show a ++ " => " ++ show b ++ ")" + +sentence :: Parser Sentence +sentence = all <|> parens sentence + where + all = t <|> f <|> v <|> neg <|> or <|> and <|> eq <|> imp + t = do + char 'T' + return T + f = do + char 'F' + return F + v = do + i <- oneOf ['a'..'z'] + return $ V i + orOP = reserved "v" >> return SOR + andOP = reserved "^" >> return SOR + eqOP = reserved "==" >> return SEQ + binary op = chainl1 (token $ parens sentence) op + or = binary orOP + and = binary andOP + eq = binary eqOP + imp = do + s1 <- token $ parens sentence + reserved "=>" + s2 <- token $ parens sentence + return $ SIMP s1 s2 + neg = do + char '~' + s1 <- sentence + return $ N s1 + + +tautology :: Sentence -> StateT [(Char,Bool)] [] Bool +tautology T = return True +tautology F = return False +tautology (N s) = not <$> tautology s +tautology (V v) = do + store <- get + case lookup v store of + Nothing -> do + x <- lift [True,False] + modify $ ((v,x):) + return x + Just x -> + return x +tautology (SOR a b) = liftM2 (||) (tautology a) (tautology b) +tautology (SAND a b) = liftM2 (&&) (tautology a) (tautology b) +tautology (SEQ a b) = liftM2 (==) (tautology a) (tautology b) +tautology (SIMP a b) = liftM2 (||) (not <$> tautology a) (tautology b) +checkTautology s = all ((== True) . fst) $ runStateT (tautology s) [] + +go = do + s <- getLine + let s' = runParser sentence s + print s' + print $ checkTautology s' + diff --git a/stack.yaml b/stack.yaml new file mode 100644 index 0000000..d0a6794 --- /dev/null +++ b/stack.yaml @@ -0,0 +1,64 @@ +# This file was automatically generated by 'stack init' +# +# Some commonly used options have been documented as comments in this file. +# For advanced use and comprehensive documentation of the format, please see: +# https://docs.haskellstack.org/en/stable/yaml_configuration/ + +# Resolver to choose a 'specific' stackage snapshot or a compiler version. +# A snapshot resolver dictates the compiler version and the set of packages +# to be used for project dependencies. For example: +# +# resolver: lts-3.5 +# resolver: nightly-2015-09-21 +# resolver: ghc-7.10.2 +# +# The location of a snapshot can be provided as a file or url. Stack assumes +# a snapshot provided as a file might change, whereas a url resource does not. +# +# resolver: ./custom-snapshot.yaml +# resolver: https://example.com/snapshots/2018-01-01.yaml +resolver: lts-13.19 + +# User packages to be built. +# Various formats can be used as shown in the example below. +# +# packages: +# - some-directory +# - https://example.com/foo/bar/baz-0.0.2.tar.gz +# - location: +# git: https://github.com/commercialhaskell/stack.git +# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# subdirs: +# - auto-update +# - wai +packages: +- . +# Dependency packages to be pulled from upstream that are not in the resolver +# using the same syntax as the packages field. +# (e.g., acme-missiles-0.3) +# extra-deps: [] + +# Override default flag values for local packages and extra-deps +# flags: {} + +# Extra package databases containing global packages +# extra-package-dbs: [] + +# Control whether we use the GHC we find on the path +# system-ghc: true +# +# Require a specific version of stack, using version ranges +# require-stack-version: -any # Default +# require-stack-version: ">=1.9" +# +# Override the architecture used by stack, especially useful on Windows +# arch: i386 +# arch: x86_64 +# +# Extra directories used by stack for building +# extra-include-dirs: [/path/to/dir] +# extra-lib-dirs: [/path/to/dir] +# +# Allow a newer minor version of GHC than the snapshot specifies +# compiler-check: newer-minor diff --git a/test/Spec.hs b/test/Spec.hs new file mode 100644 index 0000000..cd4753f --- /dev/null +++ b/test/Spec.hs @@ -0,0 +1,2 @@ +main :: IO () +main = putStrLn "Test suite not yet implemented"