From c113e38d82cb92b6192f00d3a36054c3d821cb58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=E8=8F=8C?= Date: Wed, 20 Apr 2022 03:50:21 +0800 Subject: [PATCH] init --- configs/config.yml | 22 ++++++ main.go | 58 +++++++++++++++ pkg/base62/base62.go | 40 +++++++++++ pkg/base62/tinyurl.go | 10 +++ pkg/config/config.go | 72 +++++++++++++++++++ pkg/db/db.go | 37 ++++++++++ pkg/log/log.go | 152 +++++++++++++++++++++++++++++++++++++++ pkg/trace/trace.go | 32 +++++++++ route/route.go | 20 ++++++ route/tinyurl/tinyurl.go | 22 ++++++ static/6p.jpeg | Bin 0 -> 57369 bytes 11 files changed, 465 insertions(+) create mode 100644 configs/config.yml create mode 100644 main.go create mode 100644 pkg/base62/base62.go create mode 100644 pkg/base62/tinyurl.go create mode 100644 pkg/config/config.go create mode 100644 pkg/db/db.go create mode 100644 pkg/log/log.go create mode 100644 pkg/trace/trace.go create mode 100644 route/route.go create mode 100644 route/tinyurl/tinyurl.go create mode 100644 static/6p.jpeg diff --git a/configs/config.yml b/configs/config.yml new file mode 100644 index 0000000..417aaf6 --- /dev/null +++ b/configs/config.yml @@ -0,0 +1,22 @@ +server: + addr: 0.0.0.0:2830 + timeout: 1s +data: + database: + driver: mysql + source: root:root@tcp(127.0.0.1:3306)/test + redis: + addr: 127.0.0.1:6379 + read_timeout: 0.2s + write_timeout: 0.2s +log: + level: info + output: file + development: true + rotate: + filename: app.log + maxsize: 10 + maxage: 7 + maxbackups: + localtime: + compress: diff --git a/main.go b/main.go new file mode 100644 index 0000000..1e199a2 --- /dev/null +++ b/main.go @@ -0,0 +1,58 @@ +package main + +import ( + "flag" + "fmt" + "net/http" + "os" + "tinyurl/pkg/config" + "tinyurl/pkg/db" + "tinyurl/pkg/log" + "tinyurl/route" + + "github.com/flamego/flamego" + "github.com/ory/graceful" + // "github.com/justinas/alice" +) + +// go build -ldflags "-X main.Version=x.y.z" +var ( + // Name is the name of the compiled software. + Name string + // Version is the version of the compiled software. + Version string + // flagconf is the config flag. + flagconf string + + id, _ = os.Hostname() +) + +func init() { + flag.StringVar(&flagconf, "conf", "./configs/config.yml", "config path, eg: -conf config.yaml") +} + +func main() { + cfg, err := config.Parse(flagconf) + if err != nil { + panic(err) + } + logger, err := log.New(cfg.Log) + if err != nil { + panic(err) + } + f := flamego.Classic() + f.Map(cfg, logger, db.DB) + // f.Use(auth.Basic("admin", "1111")) + route.Route(f) + server := graceful.WithDefaults( + &http.Server{ + Addr: "0.0.0.0:2830", + Handler: f, + }, + ) + + if err := graceful.Graceful(server.ListenAndServe, server.Shutdown); err != nil { + fmt.Println("main: Failed to gracefully shutdown") + } + fmt.Println("main: Server was shutdown gracefully") +} diff --git a/pkg/base62/base62.go b/pkg/base62/base62.go new file mode 100644 index 0000000..0a7b50f --- /dev/null +++ b/pkg/base62/base62.go @@ -0,0 +1,40 @@ +package base62 + +import ( + "math" + "strings" +) + +const ( + BASE62 = "0123456789abcdefghijklmnoporstuvwxyzABCDEFGHIJKLMNOPORSTUVWXYZ" + LENGTH = 62 +) + +var ( + ma = map[string]int{ + "0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9, "a": 10, "b": 11, "c": 12, "d": 13, "e": 14, "f": 15, "g": 16, "h": 17, "i": 18, "j": 19, "k": 20, "l": 21, "m": 22, "n": 23, "o": 24, "p": 25, "q": 26, "r": 27, "s": 28, "t": 29, "u": 30, "v": 31, "w": 32, "x": 33, "y": 34, "z": 35, "A": 36, "B": 37, "C": 38, "D": 39, "E": 40, "F": 41, "G": 42, "H": 43, "I": 44, "J": 45, "K": 46, "L": 47, "M": 48, "N": 49, "O": 50, "P": 51, "Q": 52, "R": 53, "S": 54, "T": 55, "U": 56, "V": 57, "W": 58, "X": 59, "Y": 60, "Z": 61, + } +) + +func EncodeBase62(v int) string { + if v == 0 { + return "0" + } + var result []byte + for v > 0 { + quotient := v / LENGTH + residue := v % LENGTH + result = append(result, BASE62[residue]) + v = quotient + } + return string(result) +} + +func DecodeBase62(v string) int { + strings.TrimSpace(v) + num := 0 + for k, vi := range v { + num += ma[string(vi)] * int(math.Pow(LENGTH, float64(k))) + } + return num +} diff --git a/pkg/base62/tinyurl.go b/pkg/base62/tinyurl.go new file mode 100644 index 0000000..66efd76 --- /dev/null +++ b/pkg/base62/tinyurl.go @@ -0,0 +1,10 @@ +package base62 + +import ( + mh "github.com/spaolacci/murmur3" +) + +func TinyUrl(in string) string { + return EncodeBase62(int(mh.Sum32([]byte(in)))) + +} diff --git a/pkg/config/config.go b/pkg/config/config.go new file mode 100644 index 0000000..7dac28a --- /dev/null +++ b/pkg/config/config.go @@ -0,0 +1,72 @@ +package config + +import ( + "io/ioutil" + "time" + + "gopkg.in/yaml.v3" +) + +type Config struct { + Server Server `yaml:"server"` + Data Data `yaml:"data"` + Log Log `yaml:"log"` +} + +type Server struct { + Addr string `yaml:"addr"` +} + +type Log struct { + Level string `yaml:"level"` + Output string `yaml:"output"` + Development bool `yaml:"development"` + Rotate Rotate `yaml:"rotate"` +} + +type Rotate struct { + Filename string `yaml:"filename"` + MaxSize int `yaml:"maxsize"` + MaxAge int `yaml:"maxage"` + MaxBackups int `yaml:"maxbackups"` + LocalTime bool `yaml:"localtime"` + Compress bool `yaml:"compress"` +} + +type Data struct { + DB DB `yaml:"database"` + Redis `yaml:"redis"` +} + +type DB struct { + Host string `yaml:"host"` + Port int `yaml:"port"` + User string `yaml:"user"` + Password string `yaml:"password"` + Database string `yaml:"database"` + ConnTimeout time.Duration `yaml:"conn_timeout"` + ReadTimeout time.Duration `yaml:"read_timeout"` + WriteTimeout time.Duration `yaml:"write_timeout"` + ConnMaxIdleTime time.Duration `yaml:"conn_max_dile_time"` + ConnMaxLifeTime time.Duration `yaml:"conn_max_life_time"` + MaxIdleConns int `yaml:"max_idle_conns"` + MaxOpenConns int `yaml:"max_open_conns"` +} + +type Redis struct { + Addr string `yaml:"addr"` + ReadTimeout string `yaml:"read_timeout"` + WriteTimeout string `yaml:"write_timeout"` +} + +func Parse(file string) (*Config, error) { + data, err := ioutil.ReadFile(file) + if err != nil { + return nil, err + } + cfg := &Config{} + if err = yaml.Unmarshal(data, cfg); err != nil { + return nil, err + } + return cfg, nil +} diff --git a/pkg/db/db.go b/pkg/db/db.go new file mode 100644 index 0000000..b2b37c4 --- /dev/null +++ b/pkg/db/db.go @@ -0,0 +1,37 @@ +package db + +import ( + "time" + + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +var ( + DB *gorm.DB +) + +type TinyUrl struct { + ID int64 + OriginUrl string + TinyUrl string + CreatTime time.Time + ExpireTime time.Time + Counter float64 +} + +type URLDetail struct { + URL string `json:"url"` + CreatedAt string `json:"created_at"` + ExpirationInMinutes time.Duration `json:"expiration_in_minutes"` +} + +func initDB() { + // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情 + dsn := "tinyurl:tinyurl@tcp(42.192.36.14:3306)/tinyurl?charset=utf8mb4&parseTime=True&loc=Local" + var err error + DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) + if err != nil { + panic(err) + } +} diff --git a/pkg/log/log.go b/pkg/log/log.go new file mode 100644 index 0000000..eb750be --- /dev/null +++ b/pkg/log/log.go @@ -0,0 +1,152 @@ +package log + +import ( + "context" + "errors" + "os" + "tinyurl/pkg/config" + "tinyurl/pkg/trace" + + "github.com/fatih/color" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "gopkg.in/natefinch/lumberjack.v2" +) + +type Logger struct { + logger *zap.Logger +} + +const ( + StdOutput = "std" + FileOutput = "file" +) + +var levelMap = map[string]zapcore.Level{ + "debug": zapcore.DebugLevel, + "info": zapcore.InfoLevel, + "warn": zapcore.WarnLevel, + "error": zapcore.ErrorLevel, + "dpanic": zapcore.DPanicLevel, + "panic": zapcore.PanicLevel, + "fatal": zapcore.FatalLevel, +} + +var colors = map[color.Attribute]*color.Color{ + color.FgGreen: color.New(color.FgGreen), + color.FgHiWhite: color.New(color.FgHiWhite), + color.FgYellow: color.New(color.FgYellow), + color.FgRed: color.New(color.FgRed, color.Underline), + color.FgHiRed: color.New(color.FgHiRed, color.Underline, color.Bold), + color.FgBlue: color.New(color.FgBlue), +} + +func New(c config.Log) (*Logger, error) { + level := getLevel(c.Level) + var writer zapcore.WriteSyncer + if c.Output == StdOutput { + writer = getStdWriter() + } else if c.Output == FileOutput { + writer = getFileWriter(c.Rotate) + } else { + return nil, errors.New("output must in [std, file]") + } + encoder := getJSONEncoder() + var opts []zap.Option + if c.Development { + encoder = getConsoleEncoder() + opts = append(opts, zap.AddCaller(), zap.AddCallerSkip(1), zap.Development()) + } + core := zapcore.NewCore(encoder, writer, level) + return &Logger{zap.New(core, opts...)}, nil +} + +func getLevel(level string) zapcore.Level { + if l, ok := levelMap[level]; ok { + return l + } + return zapcore.InfoLevel +} + +func getJSONEncoder() zapcore.Encoder { + conf := zap.NewProductionEncoderConfig() + conf.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05") + conf.EncodeCaller = zapcore.FullCallerEncoder + return zapcore.NewJSONEncoder(conf) +} + +func getConsoleEncoder() zapcore.Encoder { + conf := zap.NewProductionEncoderConfig() + conf.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05") + conf.EncodeCaller = zapcore.FullCallerEncoder + return zapcore.NewConsoleEncoder(conf) +} + +func getFileWriter(c config.Rotate) zapcore.WriteSyncer { + logger := &lumberjack.Logger{ + Filename: c.Filename, + MaxSize: c.MaxSize, + MaxAge: c.MaxAge, + MaxBackups: c.MaxBackups, + LocalTime: c.LocalTime, + Compress: c.Compress, + } + return zapcore.AddSync(logger) +} + +func getStdWriter() zapcore.WriteSyncer { + return os.Stdout +} + +func (l *Logger) Sync() error { + return l.logger.Sync() +} + +func (l *Logger) Debug(ctx context.Context, msg string, fields ...zap.Field) { + fields = append(fields, getTrace(ctx)) + msg = colors[color.FgBlue].Sprintf("%s", msg) + l.logger.Debug(msg, fields...) +} + +func (l *Logger) Info(ctx context.Context, msg string, fields ...zap.Field) { + fields = append(fields, getTrace(ctx)) + msg = colors[color.FgGreen].Sprintf("%s", msg) + l.logger.Info(msg, fields...) +} + +func (l *Logger) Warn(ctx context.Context, msg string, fields ...zap.Field) { + fields = append(fields, getTrace(ctx)) + msg = colors[color.FgYellow].Sprintf("%s", msg) + l.logger.Warn(msg, fields...) +} + +func (l *Logger) Error(ctx context.Context, msg string, fields ...zap.Field) { + fields = append(fields, getTrace(ctx)) + msg = colors[color.FgRed].Sprintf("%s", msg) + l.logger.Error(msg, fields...) +} + +func (l *Logger) DPanic(ctx context.Context, msg string, fields ...zap.Field) { + fields = append(fields, getTrace(ctx)) + msg = colors[color.FgHiRed].Sprintf("%s", msg) + l.logger.DPanic(msg, fields...) +} + +func (l *Logger) Panic(ctx context.Context, msg string, fields ...zap.Field) { + fields = append(fields, getTrace(ctx)) + msg = colors[color.FgHiRed].Sprintf("%s", msg) + l.logger.Panic(msg, fields...) +} + +func (l *Logger) Fatal(ctx context.Context, msg string, fields ...zap.Field) { + fields = append(fields, getTrace(ctx)) + msg = colors[color.FgHiRed].Sprintf("%s", msg) + l.logger.Fatal(msg, fields...) +} + +func getTrace(ctx context.Context) zapcore.Field { + if ctx == nil { + return zap.Skip() + } + return zap.String("trace", trace.Trace(ctx)) +} diff --git a/pkg/trace/trace.go b/pkg/trace/trace.go new file mode 100644 index 0000000..ff3a895 --- /dev/null +++ b/pkg/trace/trace.go @@ -0,0 +1,32 @@ +package trace + +import ( + "context" + + "github.com/flamego/flamego" + "github.com/google/uuid" +) + +type contextKey struct{} + +var activeSpanKey = contextKey{} + +func Context(ctx context.Context) context.Context { + x := uuid.New().String() + return context.WithValue(ctx, activeSpanKey, x) +} + +func Trace(ctx context.Context) string { + traceValue := ctx.Value(activeSpanKey) + if trace, ok := traceValue.(string); ok { + return trace + } + return "" +} + +func Tracer() flamego.ContextInvoker { + return func(ctx flamego.Context) { + r := ctx.Request().Clone(Context(context.Background())) + ctx.Map(r) + } +} diff --git a/route/route.go b/route/route.go new file mode 100644 index 0000000..0a893fb --- /dev/null +++ b/route/route.go @@ -0,0 +1,20 @@ +package route + +import ( + "tinyurl/route/tinyurl" + + "github.com/flamego/auth" + "github.com/flamego/flamego" +) + +func Route(f *flamego.Flame) { + f.Get("/version", auth.Basic("admin", "admin"), func() string { return "1.1.1" }) + f.Get("/{url: **, capture: 10}", tinyurl.TinyurlHandler) + +} + +func tinyauth(c flamego.Context) { + if c.Query("token") == "123" { + c.Redirect("/signup") + } +} diff --git a/route/tinyurl/tinyurl.go b/route/tinyurl/tinyurl.go new file mode 100644 index 0000000..110e457 --- /dev/null +++ b/route/tinyurl/tinyurl.go @@ -0,0 +1,22 @@ +package tinyurl + +import ( + "fmt" + "tinyurl/pkg/base62" + + "github.com/flamego/flamego" +) + +func TinyurlHandler(c flamego.Context) string { + var originurl string + if len(c.Request().URL.RawQuery) > 1 { + originurl = c.Param("url") + "?" + c.Request().URL.RawQuery + } else { + originurl = c.Param("url") + } + return fmt.Sprintf( + "TinyUrl , %s to %s", + originurl, + base62.TinyUrl(originurl), + ) +} diff --git a/static/6p.jpeg b/static/6p.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..18fcf3a2dc1a416dd30a4358ebd2603b6ee641b7 GIT binary patch literal 57369 zcmbTe1z23omM+}5yClJbOK{hqfo{C<210OX+$|770t5)|Zrwlw4GHc+g1d*t-642@ z$j>=_j&-gnii{`2k68h{k^0{8-ehK2@Edw2o1tk>~6(Px^ z$JCUM$tkHQ|8WyEjE8G5vGB04@F*BS4_(kb$O;YX;p^YaLmyb!IGDH(t*Q@$1w4oi4+|Ru2jicoJ+xwy zJ#>zxpo>kxEM)n%@N*ZXN8;pn7GXtj&3gC785OINRans!wVo#qn}}$Ve(fI=fbiir zqLX2e0iFX;Ie<`7bbvfA8h{D&KOXM!XU`>;8irf#R%@1MC4$n-W`>9Q6v4uwcpF9T zfCDx9S42+5($vNblK5V1K+b;_ z$^WqP|0v17E)xib&fL<|Ott1+mboIMm9z4dKoZBfcf8_x*~6S#Av0*VS1qoP*lkY( zr`dp1%~@_QEzOaR4kr&Nx9;~rjz}#Xb@CSGAAx4FTJ?Q%Q$y6@PpzMT-eS71cb;t! zTN3DUT1TpQmSUtw$$E<8>=kt+dOEKPE0|_xHkOYIE+i+>c;h6zj!xNQtVJg%{+nn1 zkCCbbskvY%Ei`JBxZy9gPOr&C0fBfvm{m|q1r<(w8FGPC&Wbp6Ei?&C{Oa0M_zP`4 zAMSLhxnZEoTm^+%a#9&^?9tTXu;HPD54V~GIQqr+EwzC@HT2(qiQ&JTaesfpygmHT zFjcc2NiUV+5BK3nHOvQT;n}toCIoevxNo)>0-Rb^okb5`!Y6n~7`k0waXSL?N^%QIV@E8ki4Q1bLhcDITR9nc_<@ z^4Rk@$vN`De1?)(>_qk41^!;6uuEm11+K-^g3Io_G&6|R7Bw?7fAu6F`c*OWWI!~_ z=X{k6%z&cH=$uh%1cz?2_h)g=J4V}?3(!;nEO9e|5bchA+Nmp6arz#*m&SGEM7bYu z`99|@N-UM^h=XAOgYCc8<-eEgKWmBT?i8=EjDF8HW=-wCN<#p3^KN${{eUkm|`QrGi!k=dzqg+qoZc0tsz|p zlM2Y}=t4&`%Asv;OK?56_pp~|b#WG*VpxJ|BB0+;v%9KZ5-UYpR-E?t1d(-#Q%8yp zKgbeljoeyC?F)alp z%Q+yzb|IiWwyTT$wad-sTkwail!_`L?Dtjb(S^QdR8q??9lh#7AA6GZ^oZ#Y{nSP9 zvU{N5WH81b?avvMFS$8Fb|9;grW1f;-v{~qmjp!MWYRclS7Sq7W-OzF!U z_dHuI33z@~DF0mVC7Q}av`v@RVJZ+2HOl~VyLS8`#*%U#W}R(LN5{Jr*E2W>H6SEI z-dxzMZ94cg()i$c)WhIvIs-Z^m}E0#J!Hrpinr!a7eU2h*GGkw?S+?7%ZxK7El!#h zJ0>Hedh{|etY#4Ne)~ zq7mH!w67^w(Za)iHX&;*MZ=%<<5T-qAJx5A+m>}Y+lB9gALW(o&_c`=4a2bt<}5FIf2``eUe2=a@~HohAyH)g3CGIWINOY#Sh4_2e2{a*u0%{{#>L5?LA-GRtR&6mYTRc zNRc&(6iyK!F-uGhPTXLzSTt491zVcim-brtVLNA&*aZbEegV@5O&@FPTT0DqsL&dn zny|7yZ783XMyPcHn&1E&g?CT5ahp*NEUWq1f~_E8XpOXEdXkvS-up^ECq>sGXlf#t zJMwGX+E(lHXu_b6jzRx_{LEwOj@eiOB_HwvswRX}V8MaGQX$_uBb_{Bp7Sr3<5020 zg3EQ#WDv74p;c1%cvcc+2zMNBy>+i1qhFGA!{EE@qPIam7jpaLo{f|sm}Tb884~A$ zXsqJ)mD{zfV7N~Gp_AK z)5c>Lbq_~Hav?b98rq7s8ajVlL&+2m7Sy%5tl?+H{vG&O3x1QlvuF!q*h6QmzSHq$ zh=#L6Y7LPoNy6IjCbVZya03N0Weo zk(NN|b}rD$&#j?8`M_82!m4D*g;MM>IJiZ&YE23q>L3XnDf{M5My_)X-gY-$;iFp5 z$d`&GyFBdIaOPxiz%r?+NoCs?wH7Bf4xDy#{i6dvzR$-TiCL7UVXAKOD1$P+6-#~H~>tKp{#UM!O@sQzrsa_{Z~aPaD}Ui;|-?@N1OLfv*$Sc zIl{+Fz~_$-O`onrKyGepV~;CAEw-&PiJ$nD%2T{=bQSKH5zkcfZ7P3FrU{gEzxvC@ z{XbwoGQK&ulAWyn^6ssq?8%Wq28KM(FPgRjqUwE5`Dtloj=gA^lINe5-S2v%i{wsO zIwpg^60GiwWXV)l2Cb^Vm<>H_5n2fgdy2F`=XH)s{aOR~HCWs^Sy@!zi$QZkpSI2Z z{8)KWF8b*gmiMCXHYKSOL0H z3M6v^GB9#kln@5E|;dYRf-?pDfWWfqt;RW{}aad21L{^}ty z$a)qkhY~F`Vy~SYrfdiS0&Nw9ee9=#sBv_joBQ7tk0eO+@wGY*E_`o%R24#u$_&o0 zDLv*y@@q-@URPm%_3lwGlTvpUS1A}i5l?82DiwH{<@K1y{cV3IF-8LY&!Urm(P4k26x^u(ZmpO0)`w5aT;?s5dV!KMp znl39HX3g&&lX4 z96AdtGYN*ZSz3>pQoP+&syduUqwqi}MdT@AaLycnR8kuO+5$C=&V$4L-8Kb zJ$+sc6vOSTio~p8Witd4k8l3`+3?$?0^;+ZGujEU=P`C*-EB7SrrpKfoSjDJ*?D`~ zz3;;C{uOeC-STBRLk^?z;oov2SNz>W?e&hReRn+qX*hEeIVE3hQycZT)Ho6P<= z%m8^Tau|Yjn>R3YSMZy@b>K`37+wcW*lKFKeNy!H zPR8D4{4yP#>QBsZn|;^w^V_=54;>n4UX+FoAo=x-i+y>H?X1+x?S zy3*Q)KLX{Z3y*V-f@H6JgBBMvCB~oKZdL}}NvAHv?w|UqioKObm{U0hnlr21rM|E< ztsEL=LiFa?tP!sXCwCHayf@7h!Xu#UPxRF<+i4@8dre?cd`~EK_;Kcn*g@=DcR0Dq z2;wD)lq5+_m^O+GW^^9Q5fN^FHXX6kzVoZLnQy8ea@6$Nuk^&WwOAL%duP@zmd@TQ zm(Q0F0f#4$z9(LjyBNviU>A|BEg5;^5EsR#->iN#W~0+e=6S-aty)5xWVw*8Pd<&u zhg41YCx(6+L+Pic;)9i0hT1mp8QRt=Ss&W9%gyBIbpn5Rd@{9tA)thVvD^Il;>_Aj z&-3?3T65o%!8#zk*uxF@ z+%n5ZwM*tXl-W=US7Xh?eL;*jot*C(x_ zpyPVIm)|vliJ$no)dUs^luqwJy<9+Q!_uN6>pji_VfB?a0BmbsIuKUev&8qQe4Hz| z!Zy2>&K2OYh@F$nFIgE9&!46}bxT}=2UFe>ZEn+;zv0?ayln|d-pu;$uqyV3&8{h6 zC@*?Fd9z*Fm_SJzx%eb>nL2Hx=qy}=tmFLWoPR!({P$Sws*a+@)6FlQm*$ZQ#S7;S z1~8@YpvBGJ4t6C5%q1Q;(Z}$UJAOgZY2~tHMQ#^UF=eh*R_1>aFNJ5dekAw-+Z)Uo z`k0N6)+J`SZQyn)w_LY|rEK(ChacraVVwT&ZZ7DVkIITu$#aQyd4FSN)~w|cq*A-L zqkL0K4I3On;?m3KqUmxHwe*h#l1j7a2AzL-|6nxs9@k2)2~Z^h?HuIhGsbPzEP2Ty z2Qv_>l4?~=uf-crZOFJpe!id9BOjOM6&ec5_JLDMgkyAu5i5-A4vG5_HdhcBy@rk|};Nc%~kgT5#@ z1p>Vrm0KJQxZ7rm;B4DlI}@AlTY`k-fgEUTsrY#I&y<`GvfB$0q8uD$lY#HLuzA)ZyyG zQd_lA5X$e)k8ruxJZp-3Isgf4f3HPE(UMaCziNKHL7(RNjytoL=T7)cFetraU^Dk-j8g=BjL!A49cTzQGS1&Hz?AGG~Yxyn%~-L5mIvkxaMeC!6Am$1XH@%slU z(1_>zA|-uq%Je9fw9K@ATTCrhA{)RhDzJl=X9IF1O>&s39=vQF+rSwfl$Y*l;P$j` zdTMH!A^TEZ1{7Emp%kMF9s&cIY?8yYDF_olJF-8%hk5Xt;EyYV?mTLdJ%QI=sg&jK z)FfmpyPwPK-4o@#gm#`_iv|}C;X@@pDK-x@*|j;lv`Qz>iY9DEUAUhO@yWvTK3{IE zPVY1K(g1m-V4+8g9jzz7r#_6yU;|F#98K#uj9N!REcklLCY|@CMJ-cFVy@hxl3xfd zKqzgNcq+d>@bUjG_@odjVbk^0R|QgBdrb2OU|Nqy#U5*Bs9!qqvF`Q{pichqI+EeL zwZlSopzHXMRX+}4I>Ye6sGj3_py8zPRvX#b==Y7ONvf*j$@`WOk2n0q9Y;0Vc+Dc| znL4LKswB*4ak0R9&T>Oe=JAL(ELjFe(I~SLrF7cr%m{=6YdHOsGQz*3VVy_G*33h!rqSab7YC;^!5V_tW~2NF zYjbN4D0WF43>^HlnfIw`cbhC{(D@A~IpOi7K)nz7d6e2U6=(kYS6183{l6c@pJxt8 z(&GGDCE1aTULbz2N)Qbr32?0ap^`e3S^blr>JNZo@()057&7wxxAi;W8cf9aU{(55 zAP%hSM|kg#02ARe;2(hBc^dPUcl~Vc@6{ctC}e^Y?!#G0I+d(P#Y>36Vbh+4o z9tdJ!-1N<{qb%_iQgu+Bg<z&`XV7%w`+I<#V7cLO7OFSGdhh0SYHKR+2PaHERMzmo6v!=&IMwaE$-szq5_)QU>-@>c z&pGG5_K{=_D#Oz>n1q8<$K4MWPU0U;N6p8XEZhC|!|X7N5EBBqbKyq?dD|TyUt)dO>JdkhM9uMNxrpYJFTg1N0J_9~ zvV3cZ)n1S9dL2)@P*;t_iMfs6TAA9u6;}HL5OVvWbpHYo@*L}&`}bJMo5;v==n;l>4>yR>wgt=D{`is^HFs@O!;R2QOUr^u1#oL#QN}O7 z{C;C4l=2f^l|COszHZY_DDzw6Xg}YN_)*{4^9|%oLXz0UOHpVCNWZ!{p5}&amyBq3Zx$c(e5>43dqA^zUszy4v8|Kk z!`TxC!DhX2y+qhpXCBoau{N{aA-d^SOKKk|kk#s?+k4t{s+!^I_8x+>Ek zcUP6q!eEGeMp;uLN+Kxopi~y8k>jIBdvQI73qwxu%O}3Rd^k=Et?XK(#Pd$C2?84*^=hx2Dwm0T{?oe ziYKz2UL2k1)|1S6KFY>y6+cNtRW!aW&9 z&g67ECOxfat;+n4ew=Ez?at;@xU82N9{OX~IH4}N89o}U{vU(8j@oALubX4MXES>?_-d?zLM1mLt0 zD#%ERd%ADT(r=SrH}UqKPV?wZ8Q&p0kgHH&*L8oi3q7yuiqcLH+;CR!*T_qPS@Qba zdKK5KI$?KUy;1ra!4Y71pZ*6!d3(>8Xkdr>VAf|fe+$CZY%!FU!C2DwnM(CI^)5wY zX%5{oqphS8&WrumF!ZCAUq)HKU<@yZ*eh3%py5K|iJf?d?9w@Qz z6QKuvw-$1u5Gtq67mF7(sOfEj%PxLZG-Q=$>HAJbJP;!z#zLz?KJo}d3;bw1d;KF%-iW}w6{KAqq&Y$J3wnnjwQ+#F#j;uP{2XBj{%M1?;?D2QY zDZFBggaz)>Z!*5UO6CLa?KyeOXy)8$9j%>k$V9v@y0eX_E*wrmj7^&nBryjn1wl|+0Ttl_#sh%;zrSe#5U9 zSg_3+-Bx7Gyq>-JP5rou5)CI~;4Bung5{Gej_X2OJIXN8YEpfmnd}=QH;MiaoQb3D zy>RI?mDNl$^G+;!>-WW@BW60 z$JqNtkj5%S%@|*yd_WL#B=PW5@gOnU%%x7J%qJ4ugGCM(rMlEKUEWoO-p(yrYped+ zml9r)cfK7Qwl#f|KC#)NT8dkVrqxpnVB3SsnF_q@H14YiygSD`pe$}b8>ugcAJwR% zV$u6mwlAiM&3pQHqkNVW-l+GjUY_H{drhb*%5V|^g|N}3QUmLnDAxZCj{W`N&z~;O z1HY7+DjZM+T&2tDnq;~pX}J$O@z%+HP{gTWr|Nfy-jR0fo zI>R9A0@*^^Q zTDyUk7*208CV2+D&ZzL7Nb;G8BIu-pB~4+u_p(^=lc?%ligENz6V?iRAEiu=B2~Sk zCxYnVFf?!IMBQ~5D9u8dXxly9c5=%w%#q6W<@7LOTh&e2+DtQW(;;x(Wk zk@hi0iMs5QH=}CF_zX2UN@NEV0DR0hV`q^GZqvFOxIx32n#l;1q8p0ql0wsSXgJBx zMPXV8>bG=9))QdkExHFB3|Q;7lS3@rKV3A0+tu4^Gw>E_MeXYZqDKm}1xS)E29hF) z!^uz-mPp-&<Budos|5x$=3 z7{C=UMHdAZ-Q3%WE3W+!e^2D+&(_5;bXBF78>fhQF}}r!24Yuxi@R%6Wp$vA&Oj`9 zfA`tq^69ip_m=Uk+}*>n4J3>-LH}XdhSi!iDS*%?I;mO7mwTtig+SOW;7+t!00FfE zD$QaK5^H!r#mUm$5HMJiygZKoq@O-!pcKv4s_xXau(X}+l)~q2Hp^4TAJRDOWn}n< zoIEipqijr&i-YfSX{o!%d3dpa;auoshA_&fTS`ix{i zVCt?!U*1$Mn&L~#FDd%e`P2${Za1@SQYGw<2xY_hPL)j$Std=3#HM+(zP3Y;Gu3Dh z5&D$VP+9i~j8`P++BwouU+4zOXwjVS7G*Q0X>_#%b6@8NcnQ)Z)CkHe*rGvvD^I-#z%%ITZD>X+7 zYcfpg;<V>eooIi`@z ztCh@NWF&HVy6I(cg;GkP*#@QUuXuti2Yq<1qA6d5Jc+y2meox6+C`kx%lK;!-wE+M z#`N1t$+S&}&vSZBixkw;<$gu*6$FugSNpCO6Qek7Y~su$|9?w#K)YR?I}EtjGp^1O z8N#FlXU!MwCGvJG8;bo8ofEyKe}QuRu5R#naWiO;p9YujYL zdgkd3#A*7;T*gnb`mBJ)BZ4uK`H?u4x}lxoMb;?a@Tjc@zfo1RB1uPjP=b*`_ox^aSLK<`=5&81V~`4V zfHx<<%=-gSPx1WT3VqbxC2Wk4Y`gErb!Iex1shID0c3Ys&)B7X*jOorW)MzA4-{wd z>$-tYa>Z`*WN+4udm~n7{XM=jm2e#aawWaUqI7?&75+>h%rvm3E{BWLNJI$tsXCp$ z0!XckWzJu-)s(uPVWePC*Fj_fBFhf^G}D%nta+nq6dN{KL%KY*nVC6Z8YKAd9iRN62$QRtUKpUX%v z&5Wr@^K{FyLfDfWTbYD4y3St)#4N2J_UTNaI#OI!>IdyIw9(L0;vh#eRjs3@5oFnO0xkm%MJsE0*K4jMAD7W(^agE(rRdzv_R_!^ za&o2}Fe<58uP-RY73lWe$qzxiKbE^Bg$x8AOB?32z&&B7c0IUP;KWfaUe&!q7B-L! zfc^(g0o~p*@n8_y!oARBMxLI=(xb&uE6=rn4&LO;>@?sn+F&7BTQA)$0QHOi745*) za|}*CLY5q-0*$tnV|~qQxaKh{UTK1OGB6)_?1Idq5k~)G2__;=C%fpSJFGHM0=c79 z!tvqtK6c2Uoky6O(kMAL*xjFjiwPF05T#BrET4z#CA6G#W#GGP-s)O(c3bY_p9UGn zX5a`N+)8D5yhTi+N8`G>kT;1_H+0Cq;2|EOd2C^qd2|sNfAg9j;Y?%rJl26 zXdimM;uE`Er&@uX6#X^&Ad2;g$OuzwUa_CdPsx77ls0&2FU`C^)d0BLoN{L-yzW&W z&#mn>aAh9CmJw~Ht5}up!95B6YA_Z2=!|)yclv>0K6dFhH+F$>1UTt-g5(ETZ(i9k zKempA5UF{{=c62)u1_mVHd+o1lnKQpB@Xw0r9Mmi{?)JC(X5yI-J#wt3eomUFZ&7} z+jht8vb)#HTjFs^S%idS=h);|hSJ)z^aP};A}fr)E9EYD6zDVkP2}(Y;7rh3#kb2 zCpW8wqom?lnGQ(6Rrh30ybL4mPI9xj5nFIl|M!=rx~1E^bf@k9a{Pnzhp5w60sf{uiJ)X?zDA-g`BY6MD_a9Z4G#pC z0szREj{fy5F*NcLf2Dt$XxD@8G;U+I=lUS~vut7OmMtL@yMQZ z3z@uDV^QR{HAz1z@EIKnR*nLOYM0~575$24iT4l;T}%PhME!PIrFz4=)Bnkdxv=u< z-ItiP%kGk`{Bd)udzzJ@953tEJPuGR7sQKG;m+Uvm|?=;_?WTNjZyTJ*w% zF|AIS&ofF0o3b7)b(rC@1zT`{lj%|tzG0$B^@Xgsm(7J22r(Qk(*-3JC?*xSE70Sz zj66nk7Y6KUF6k^&|L*T77q9xLtu;_tzLuUCXrl65ts{kw(?2mhAY;qNo7}-SUR2Oq z`VWA=<1RNT(m}gw;lQSG`sC+$4T`xysBKZf9 zzTW;NNXl+#8)S}u^kwvHsqg{gz~=U67i>oKIJV0PIc@k%Cf0s1FsOcXxUkhqoXD;w zY#Y7SUl5*?gm{b(=7UnTv|^uajViiCJ@F<)ETp58<75gdH|uKqrdMqlNZAP0#%r-T z&C?fTG}*B8E?V|-tE_@ui^K93WOcsD_-Px^*|=jo;V3?Gc}G{>Sblh7K~?TMv9suv zBDBkI4?A#sgHvoY6IHjU?F2!*)^(8%F&>>Quf zySb{?mw0fg0IeycMB}qNiznP7$(~UrkNGI$O?o!qZk#{LdbyS$3s0PZ539O=1>ydW z82GmW?bYOxP6a%we2cil!+K;rM$M~0saWX#U%B7_{a-jm;1(Cn!UW1)$%MY zDKtuLfKxRx8K&s7CEvk0@cfD8Vd0FkbOTiQ>r;n)Q(0#9uCqumqXL(nSKW;X(=C?( z4t~DvlBm6srwDh-W@M;xTX7u479f;0TiY7x+>TEqtjPxm|MiFiu90ouA8_3D0psZ` zGW<$d*}D&V)20W657gWXZ2&0>_fwI*uK=X@5&&(g%k>QO_P1{VE;o~^uvilmmS})n zr>53Pt{%cYj#)Ph;>glOg=2KT*(CqS?m-L~Z%wN7kVDSBFObi9G)h0^?%M4#sPl?R z&(xCwE(EX%pe~GXzjphbXzU_W187ldOC}JK4f3&X##qX}yFr(Ll#OkR4l>F-9+tKs7l6FiGLG0x}GHArDsDk$MNvKuwnsG&?&9nMtN< zem-AFAQ3H{dGhOIqA&OJp1G+0-WPUSzfzRzqP+ummI>+a*Dr~DiQ+C3+o342;Rd@b z67X+*`vY8=)MuT?hRJJ1zI=^S~kH?0L$YHJ!B)xi%mj>Q@k_OZ#kNfi9 zM~*V33B_sU3^8*9s{w4fqodKeZkM{kwDZ5D#WZ)eW-3hUq7nK%w8deMa++2n@CN9I z=qHoE85~sQXGdKY%(u6?3QGIgw*beSWz{ZEK=-HBS}L!}vmt>CW^%Pd9Ez|R92^&};WVvt- z^XS+ZFMt1|EM5Xx^WK%jsy)h4T5vMmsJyAy?pK)zZC1WB`Ao4r=BK_F9tq-U?gno= z(ZaA`|2Lfe?~=n;-?z^;H5Joa0A86l!NJv}Pcoi|hKiye+>7NHc>;gPGZxC`9H&+O z!klgq=EPNoqpRR!T-{SrT+8N>ZcpdJNW=;9})sb?1`BmFc4204&}-0Bnc5olpDiuCp!n z=7>3@N=*cm0-rn3N^_!WL_&KCOo^Iq^G`Xk=U{#7%Y=z`?gNvXLU}xOsiZ`3d|>)W z`if-C;8uYedE=!E=yt3JHnYa9Ee^~7UiDS%B@d>?Sgmt?fPOSG)h>Il@i)nr)9(4TfImQggU zF+{bdB!>pP`${UV0F%mBoii6}JOz=bIHpGF+>!2xqYOcYsLwqC-1xvVV5l(XgQ5~a z?`&L3-qBdN!ymt?%PW=WxJ+35z;Ic;3eY(w%oUPC$TO`;Z7dkYom0yFd_m%>6c+~F zbeoBN_o{#Nn9I%g4LogJrxNI*Qd_cjn$mFl^Qhv0vCtc%CFtzyyA{0eaYnTjRtpz1 zGv}*|$w&64C=r2Ud}Da~bz`q@6&7u|9(!3mSNZD;?)02g_qq$vPAW#2jH=lcopr-t zUP1&K*Y}Ocxt74nQYbrL%R%n!V!L;s2 z&@?=uCty2?99uhT6X5sh?|s1E)^e4?6%)$SMku_vp4@iSvI$iK)MM>e)7=!|RNu>m3{4NG{i+;lX1fJ% z66u))u<_^@Kefo~+90oQssq>D_f#lJCOY8fNkm!~uM{fNr$(n?P5@ls4ptRVz_c!T z(7o2@FW}XB4PvVGSU>_t1Duj_p<@YLPRsd}k}(n{*xhE=tE*66x(6GB-4-l(5nI$X zZK4r3i)tH2FyLC_Y}9qq>`l%MXBE1jjcC3*0wjMYi$aZK5soc}!0dd5TszEU+_r{? zdG9zkXy`Z9`xIK$9VM&uW_`h#D`mg}yqyGzwgEaijH?9M{d2Omb1$e8`*Z796l2dq zMNs2)t>U)Wpcj)*(v`XE;sWn)wW>MUedFojhGZ|(i;9Fw@T&4iWzXxWf&j8vRvS`( zQZ=S9W$$5Ar8G;Ooh!Q=UkemNY+YWO+A`(I7zFlFeby0SsF5=OK*-)l?z3J2PchLj z+y7IB{NGNfe@1T50E(^V-<)R5^Z8K(n!dH#Q_F$oj|cTeLjpd@fU+?b0S+2*3D{@t z3@s5WMb3pb&8X|z6gvauESxOE?nWJwZ1cold*}oIz%SO~*Ex_oxSO<6YZa(?k}OVEE>4k+AF2dSOCWZ|Jo z(R}Q$=U(C(!ITJK!ndp&FBTh{JIwMuY^WeMc|>`Li5H!?c>bOjE-Y09e&Ng>dH=epX z?*PWyD!voW`zvKLBImV2Pl}g^6k&$z-H|p3<*ekAvppc(|mb(^1j%IriHk@e?LlX2x@<;Kr&LN*Zyn~@uXf#dsoD^pp^IEF7 zgV{p;cJgp_8Fgjmv_sX{W$H!o)ATYfBWLr5p!T|=z)0hE;b*SR#v8?@@WB^vB-OYA zU~l_tFnnHxoRFOKOMNql#vc)Mq;4O~E`RaJ;4vb>7&P3=H6l~c#|fU2h$g=Rr! z(|R@4B;|)r_zLGks>H?beF)E%_r?s5koZd>Z$%i5xgf`I!(Yd$5DZZ+cZ+oVA$Y!a z`62fis5_Fu8Yl4yWzxULP^=;Ef^{#)2CK~dFeg$Tb|R#U3hnQ<+McsDj>my#&v3C8x?r@tX=GJRwoT2?xw`{Ho*}*AWynB0weY z#_UTH3M1K#i1j7V*W~6ov$?JCMTMN=nXF@*odlf%$$|@f;NAoEJtaFz)TJj}2_!)- zm&OH)P}P_}dtq$zyyQTB{ z5o8$KPJ&^~0I79M`0p(3zfGaPsGgi#BT7sUplbot8sj^7k=y7$30I#d`V`)@=~Bv* zktkOi1@Pizsl#Y}P0T7!lbs&CV1x>eH0(L%lvqS^!X0#&!dc^#Nr_cSU%Vn3aHeng z_1pqE=ma{lYBWBu`cTFP4>i!FV%P*Q7+q)dK+f=!_ zXzEuX=4P@~@OZjcE%+u!Jk+^lX6F+IWdM`M$ANS8)W;P|HuPI{aW8#K1E$W)(g{G3df~X#YjrgoYWswuYzzsdX4EG z(|MFTh(LabHtoO8SZEt*s$hp+o_u|Xc8h4$*5G;?IDi$WU?~Vz8%|HAxDA#UVbU*9 zD{hnWIg-0B_@?Cz6b(dUmo+-o*>-rox;?{QGCJCU!2UE60xU$ey?FOu8aNlzXG+q8?9UX|)yd~AJ%0K0x<)fCHv5n{nS!163? zOmto0;y^bu{o$HO7L#J_;aM)dQMOyhK_m1WNii_QY zYijoR+U|#OUFulL_2CQv03K@|DR#arQ?^sFMTO!}t(~FB@3aRFafI@e^UDM>NyeXX zK9^^N1zSmQkX}TRleS6=l^ZvBkDhs|gSTr^I8Wui)6qCHnyB^{&~K?mcOZ4tb}i<7 zuY@QmT|0_1Elk9F-TATV)vS`W(o@o$MfrLh9qUNS69jO2Rv%WLccnOlcukfOaBhEa zq{^XJ8yz;w*JNEzlY^I(*woBSZrOf3F$A@c#E1?@_b{4q z{BL`=yi8xRZnAu}M#Sb@x;#>q9F9j&x2I_>RwK%fkFzRZUN!St^wO?VK~s~IJ6bMx zuNQ^ERn5F2-951_sAxk}k|!=pBBnjd2WF}JHpk~ty(h`;+1=lQppwC`OL)5ds>`EP zD$bNjbwc#@J~E-iyDES-F^GUJl$C(~FH`%Mp8Ok5`48Ij&sq%ZS<{W#=@=`kWNmPvJN1mSYOFU3&md$m#3hkeC!ek6>R*0&UJ6c55`zu*F8Ffj&~oZ- zw0{i)nXU|ifCHEqAFc3D*?Xr(S@28s+4m{Vr_U+0f!d&^^o*=D_l8Y%;2MmVgNx~G zpo>&%n9`)iCGWA}iykq@%PK8hTU!U39_B0Ev`&}Syo?F{PzelyfxbTg4dmnJHaQur zMaGH5`|Dz4C0XmQ4t|E_)bgRsI~Qn&poXt}2YxlgQOC2f$|p-bz*6ym1N!Pxk@}gc zim+_A0T{*NOi99!cIXNVN2f<9XU8N%8a@#*1R4(mv#%lOiqFGfQ`t#2=PNG7;Vpq- z$eG_0>tyyp9GL{7K7~lyxtr<(-f>xvhgAHmWmg~5@v+hB0O$$86C}Szp2JEEKqIJ6 zQ5SOY3EHxUNEXMNduhy;k04qeCflO=V`0@&;t%65+ad`wW*Zvjz?Pn@K7RnkE6Bpe zBl8$4XS1JI*Fot!vog~ywdUJ3B|vs_SZG250Du;XBafp%S0b6QF>WD@1cgm_OUHF- zhUKV`O7~|5m!;HV%{ZZhu8U-!N+jjv?&PTrWg62_${l&KM5bBW&r9KbOP_0xpl~?) z!2?^5ITS@TQJx>y9vB*!4+R5rdq1WvtI1{$?!oekdopAQeGVXl1_>MKS?iZ^!X`>$ zanFQn-k3e%Kk8|4xvi!A0~p*VVQ+-W>^h3NYFA#f<~i9~$MBpoQ6^s|`IDW17(2%a zjp}b`ffL7HE+Zk|tjtAsj-~E8@r#!TG+J)XzKZS3X1|kZG-!LH@A-l0^GHkNBC*)R z=Di3oEJ5+@mI5ix9N>zTm0Sz3qk)F*^l}lUQdlWB3)!`*hB(vdIzTDBKt>Gsc+$vQ zB=Cdl*UBr=fO@&*o3SbQffUXbGO;~nVr!Y(YygL8q`9*xfW8x5cp`xiqyx`Wer6FV z)HcB>e8Z-jl2w6zR+7wGlK8MwNW5^^4cLr%w&_z1Ba2~RY%oZ*+Id&|L4c9c7QM#K*x1Ywf zRsk!;Xw~Q^t7)HH{=-pV#4!^oxh8Vocy#Okf{V1CTQ%RRYufv!g1s*GZQ+q`OOTjgE0kJOicewFq%P92uqh=#q370+R}#0XBk zeHPr0(=ARDcmNsj0LI8Yq*BvpY7!X`YCW0QK7ARROIL9+IKuq@5%!i*adpeqFd8HT zhX8?w&=A~R6A0RPW5E*w1a~KRaBpbby>WL7?k>UI-7S!}pL6dy&pG#d@B5AZv)9;T ztlqnORjpZ7v*t3?nxoypwGT?t5})+w^zFYPxh1(!sK3dXWir&mziL%(%1e|+m@JAE zjEh33%0jR|Xx6i^GJ|pn6eWl!EB}<^LFJ0s&{=*@g2Yy=UT`>7lvXr0qE1I>4-1)_ zz5Hda4Vu4Eclc!%+#9RwT>rhmF-nTq;nD-M;0+mS#z5K@e)Vv{%SwhhV*z`0Qng`rSq97fkW z;31V+#oRD*>{Vnuz3OfCEdnv~!2%M}hGPTo$2ZDfRG zy;;#rfurH+cUNGN<`HJHw7W|vK!BB8?;7}8n*qGwgvuz}8C|pHza+MO9FaML)iyjU zbgP7*Q0}3*_bO6B^+1Vt^%|+(3m3&_Wr^%&iXwVOa9xoD>P%}eOFxYGLtpS5rtLFf zvfXYiIEA_PDH$fH4Q#H)T<)tv_!<4907Klh@C+o4{~ck+uuvzyO6x_eXKsM8DfFjP zX}t-lI(2#p{?(w2cF-?rt{q$9O}*kpwdwNgbJ6QP%Qz40>{`zPNf%L(!m2v#?K@>aS;G|2XSo=4<;xri*Rw&_6XQHd^;(uM{#_ttiM znB1SDEwV~~+&|s_(7*-RZ%$che(FAHC6%qQjkfp~mvur7nOigCrQ3Yz`xFnB_dV8N zU6qX*-;r!ZwV3{GS<-&ZrsLwA-dU28h_=atDyKoqQmHiV;j150vTh+sP62fXgq%>? z4{LttRQ^cVmVc+G|BjUYrw2mySn#m2ATSBx8JGs}EH?IbZXe&jMl(fxV08PQEVkQC zgf~DJ;=?0Q^X^x2OpVcDa06qnxXFgKwn7y)g24+UlZV3Dz6=bW!vV+~j zBnoxaiMJT+ZInj&JvBawsa%R6oYPV4Fpp(0rjt9QWolq%<3=4|9=r-#e z!jcOtC`bFzl}gB9KO_`#X7@F;CDwQ2Yx*%jjem|$A>qE=q&YI8+KtV3vv}-xJH-K; z1KmE^_fk%UMgazsJX&qVLrZp_A9NiE{8ACTMh*b}>kXT#EbuIbyDj!$-p_7HOy00M z!K6W;O_nJbzlQ#ctTGDTlGxhUDU=To{{Sad)u1rY}n+>HuKQ8SAUV|J4NLN+NGFW z-robNQrIUaGxdwcnuH*6besM}qN?(B%8TvyGP?1Q+R&%5XDRiM^AFSc3{2cJily(h z?Izd85>S2v3HYpMhCNA+m)fMXrRnz8XJ6j7Cs9ux54aKI4`K1K4tj-IQPBeX(L1D- zH>Q7W_jkJBUoe>3M*(=pEZOJDb8~5ILoq6MkUHU?zU;-9Bpi(IBqOm#IIxksUa-O< zh_e$M@Ef^j!|eSpp{)8=y8fY3%cR zNA&kI-l1-RO)*>Fy%OaU%ga9queJd8e*3%N*BzuyYEP@R>>c5j-JqBYLmRA;8lKqQeVnYxg{gO8d8A`RWs7IBJ++VfPZL1KpDyLiKhSF{`o4E$ zqJ6#n4V+r0=eoNQ+aHEun(-qSX_As2ul4}aNsrB;uTYjTLm zNQY_>{){Yx+de~J{??9;-0(1aMctA(9LN=t<4U0eeS>Rc=VK<^a+2_6{uwI&Py7C7 zl#i%f_pr!sd1%dJxo}c*{G@4AT3d*UY1v5Qd?341C5Da$q$>17z(iJba_|4a4o);eN*&e*IJ+eb|D>Vv<)HR+&ic9|JuEE zhizA+dE9R{lgq5Mz7w%%d|_fGy`Uzr%Mpi^ptM zkMwY=W2A?QsHf5Qt-G?vR_qixX*p?ZQucY5hib@9!OYCn8>r1dmDeS})Yv$=|E4fu z!z}{{cH?8Q{8&uKSP?XCHEFH`0n{`C>>_vh`m4nL29 zKA<(a)NQ{3-gU1991L2+L@Xa5<20Y3_ie&3n00ubTRs z_vgVoA&tB6k;{DzsaTgMK>0qzora)PH=%r@JF(uIfh7$~9bbx+c9z zc*ztIT%+O?d6Dvcd>0+GteYJrJ>i?daks(TD6%a}@5pIpKQxlptC66iNt@}1QzM;D zlRYh-$^<+Nmzd9seJiY#`vW1k0gvjxL200hqzORzDqKkQsy78zLnJ%0q3;&0&LB(x zg;O`DbFTpt-RMI{%X!43$xAqNMVqm8yB4}#R(eqE@mQPgn(thiE9D-9MZ0y38cxtsAoj`$SrM=_c~m=B+6$r^4rX$r!Q1a7c)om+ztduPv*z8BalUqHg1MpIwCE7* zrPb^-Av8BU0Er)08dn1G_W#FDu!1{Q9f6suKSDhj6ZQd5!~pEMR_!BG`RpK-=c z3Juhcvv|B(9Y#=v-hWC_Ewlo`O_}_SjR^h^l!87A*(mOZBsEA%$UK`j!MuXBV4HhE zeA%6G=Tj=y!gQtC&5*3}hotnrQqHvv9Oam6>F#TeVGHNn!J*EF7SWjbI_tjJYDmW^ zCHdu?)51iOZh)wHF?W&~!?*k$qATq$sOF*_T*u+OK;dtWX{arXvM=owLfvtmSk7>+ zRUsmkQk)#0PCw13H{@$v(qGy%=2^C3dh-ghy_c7_@R%+)j5imBmoZYRP-;Tgus*dM{eu)Z;AOQn! z2}&X5NW*uGt?xM4o0GzJgOxAzh`Eud(4+t5hmp}{JQ)iPJP9gXoHdGBAx68Ekonz) z5<7aj0(RF(;Y%GRbIFeYnzH&b!PDxEFT8Do{-y&v+0J1Or<#L@zH$~fPvUdMBj5x3 zL1=n{#=)Xyhkt)AT%5>m-Uu#d#-IjrQF4{}9)&i8xp&E%AURGM~vu*z%gwUMP?GZfWo-8*D-)J=P)&=BQozeu*_=urVbsvD! zfrm&E|1a=JR6I%R#yT?3d8Nukp9l+NFr`|HK7?W8P>uw>pn9cc_EeN&9Ujo+LzfRG zzKG(E`~vtu>Gc(Q9D1$E^Tj#9Y~7on?ua7w#xj0Y@8D@<(L@O?Yi-1?*$YeP1qzvijBtc#o&>G#wdyq4I448N&8DMs z(=+{FvjvxuKKZ(`8q4I3@vH5ycMS@w-(VbgMCt2IY^R|5ru9K^sXzSfdRQS{E#lc` zi(t{2Cm>|{fSrB`S|&&H8)6xWR&LVbAS>dQdrl!Xb`${v3`g{E6hAgbFYn3u zJ$^Wl%IAeEI+Ac>?ZU5mI^9^%4x_^>`~;L_L~$HyzUdEiBJ+6qFQFe_hHLZyI_g4B{K4{5YSO6dg&-9Rjr^&e2@X(feTn%+t0$<-xi zsoWun&02b~n>8lUz48>7b_(%83gSYDsndezfP#6Je6qw+PSUa+DT#;}TFfbmkz`%4 zz_|=AibctT$?~eSeF6125saJY)kN=?$`P~{UkHw9YShc<9>W@qcd4otpz-X0+yL5- zzG#V}cWv>K5{p(dJ@yeSd|fqQ7hUA+AmrcQ!@p90`Xof3`*-E<13D7NY%BR!FoTJ` zEWP0dR18bd6>VayO6xIXdrRIj<&C9e_17-0!t0~C%6jLKZ&sG3&T-fbo=yeUX)x1J zJ3e~&D&N(^bEC6Z@{_7Vj?rFS>XinD^8#=)3K^e5w zV5DS~QtbeHja(ReLOyKdW=s~zOF2K#W%kGBEP7uF;tKNY2B(yiTK+nHiim9J@Bu^& zVVCNH@B5_)mgRjS4!%ID^9HF|pRTr!6$T@C_5%j_0L>Y4cefwP z^pmT-l@hqrC2qQ5P#;F;H#Z*m7__kS9gV=51akrtN<_pU0m)X&BY-G@Wp}Q|4%=W%N<5WG-GA4llGXmVQH z#zH1KzQF1=9jl;pXXABeb1A5hWW0lCrJ=7cQ5|dc3c0@!I0sybIf@VjIvMp4t2SDp zr^yQEu0aIFsMIJ_v#6Kbi#e_6?EG#mC#9*N5o>6HvVi`p0{i`CGl{`DCUC+Acp-Z4 zte@(sQ}}Yd>V*s7!@oAjzf6$mc#>FiFM6eQFWbgUa;~uC#}fYD?@d{fdvk>C$Itd6 z(#TV90=pJP`&-jpR9#HU?VFpqN17|1Djy}%+n$$+Z;g%5869i7dj#$3f7#7z<&$H6 z45o$Wy;J?rHwe*pJN$q}sliLU9Xgh^<=n(aLrqq%%wO?jsBA~aXcz;-LMS)EXl3a+ zv*dh!9~zba88!WXS8ArMD94-5@vIdHd-PkYZ%Nm2VQ+?--&uBfU++SfG;StWOEf+Lzg5``62Uk{W4@x&@?lJ|Cq1E?UeOwlh?U>PVYuTb(YZrR2)tj1j5YN7l@&;HwbOaUs#j@o|R5!Y#-K zbNEs%u7rhUG5aG(_$MFF@?I1R4-qYaolM|Z`*gC^16EqK zG&Em^Zyq#M;6#-Q1sKIn$Hu1L^#Zyo{_<4C%^wK0cz{IAb&)Gc zRCU2NDV1MuX#mo*@6SWu;m^MvlSwkR$qAEyXEAQ2Lpli>yF$6&b^Zr^n&{Eg3h#b^ z>$NeG0hbx769#Y4ejtBK%tMDKl|ZEM&(WuWr&|BVQYqzD%AQudvBr;;0^J9&Ywer8 z_>!`lnE}-r3kXpY^X2qHNmzd(G$lbrE`mQcS_~lC$q&GrILZnf-oZRxHnnaxjHqBp zQJD9Bm!ZnZx6G0on(HTncy)$koHc{8N#%)34nU>xHO~AOO#06vCgNe@kLu6)00@Y| zIml>cG7?K(ez4TLE{*~CM3$qlO~?mD(T5ko9RV_ZfkwYv*Pp4g%y<;IOC>Ygs+$7j zUl4vLCX8wc-aR*UoYiTlP=>1);b|y1RspfJ$=&8Lv~!E{c8wQO5;P~xu26Fy(LeSdn4r{dhyWa}fLA;I5k^470SvMFPU#nk{o#r)t#8*&T7%SS! z=?XpvRY*56b%RV)a~Iy*Pn0#1jmVjJ*bd?G+P~ud5*x7)S*{;u2-x4?` zw3K~9-JCR2S*;q%;JyY6?Bim3+kO928g(=-A3Nk)PqlH-+Exwk(e-xHjL;l)YF6v=3V)HosRVqua@ zz}&Q0wc;Rho%a&YXuZrey7HTnG{OG{Z4mhFa7XD9H9&{p3M-6kO0GsOC!LEw2p8_t zn(yC@!{fffbXF>yLM3+5kj?(HeGgvz zOg@nOnLC%pdRRv{r%*DrjLmuA8sG>f7GS_c@r&*7ldzF~&*xtiKOO%(HH*YJ{WS2> zPoB1^mAsrO-Z2tWNu9R@9}1`Bk|5dqFQ7n#&n{6ns5Ki0PW@Hi&xB4684nbxNGjy| zroV!azn_PhurF$)jpc?C&F@46eV#7TzPD@Tx-cnAaJp?VoQC^R%o;6PR2hI{=nLq-l(?)kpRHj&%Km?WUnB$x9(!gf zvSaUe3-y{ZPzNGG2&Urx#*}be&XUpuU}}=J3qzN_6kIi`FwDc+iMe7YhW=qkmLG{t zIJAa2qFGuJDU41@3jGTrqw>SxPR{8&;Y!XxXFOT7oZ-BiAq!HpHIFsyKtnz7NgPw+ zmOI`mu{P_w?;8+_f7^x-*G=Vu!Nk!u^n@@*gaEA1emLyXSRaU(^c^LgC5CDbfQ))= z7gdK01Dxh`2}cC|S6l7`Gj-StH~j)hPu?P~OiaL-H6TxAviAQ#3&bry8k+O1L~5y7FSLJuaNlC;7|YCWB+}LlXw_e0hIb~vh@ol+s?$f zpdasvY1JFgNen@!y2F(RPloVofm^Wmrdeyux_jde;Q7|?^tFulYSp37F#+x)#lqE1 z(yY?JTzj$wOm2T6Y{l)r3u`gO?XCVj7#T#`A? zuyZ&QTNnia2*5=HxGO90bX|pP#NJ6_C2CEq`SU`*<#vD zYdD^cw4c#z+P{Ymfbtnv3?U+ST4DZZtme3&W+Xnj2X&oEJprVun%z=i0I`j1FYyyw z{wi4{-#;^B{&F&P^X!QAd7fMX6CpPqXB-x6Uml|LOiHT{GO&&KYISt0 z!ZMmL8`OKFYiTW5+mUF{ecl!Vm!)R~t)hcywn2}We!k#c1;_F#*Udgc@Q~7$ut9_^2H-*#6D)O>}xUQuB>q{AwpHIW= zy3giuH_Vv`B1F@-HYTTD`Na9~W6>fK(9R<^QVa*;O5f)#CZEag5VhnN!wkOMSTr&HR)I{FYNsB49ss{f zlNO(D>}$c2GGnm6;xXMwqWpCE-fYHb5nMojsZc-N%xZVcAM$-^M8=OH+DYErei@pC zQX_;WG&Lj&ypsYH7|Nu)+Afw{c~Zy@ikpdxN=YH6?HsUM3)eRvPEShj#1EWQD%prC z-r*P%`4s`82+-mbX3(jpTld=Z_@1Bbr^xK$9X}RDF7k|K2Q*aOhG2CjaJMxNE-O`F zi{8zf-JlAWx4J$v4J7L+F&5>QpFH9CU;a2Eu$nlJimp7_JRLUD7|#67dAv$+&ECG4 zqR>*{T}K)7Gp*9Bn(F4wMe&|;NtE4htgpLAWCF|jVW(dC+6hpnisq3|30Mh{1cW6E zmo=X?YJ&3qAoTI|yG4FIIggO4H&)7;(6bw=u00n7j4akH%H=SuhXvY1-XtIwgtJ<| z`Cw^NvgAFrYxk1=!W|b{t$p%e>*K{+QC0lmQ8^(t_DRYFCt7Uo4KdK=Jt zT0qv8iR&eRky65yE-G9v5UCl@5Vu|z@vS0%tt|q+no@Uak2?{5KuqodZR5cOADCSQ zm`>NwxFkB(-o(PcK0&y#w}SL37OK`2Q89={PD_P_67}tEaHzXm>}Hj)IuYO}nh@Wi z^WizI)%&S|=9qIjYGlrl&%+8Owu)ZYu5eArG-~-|es+sEZ9xZ3MHQH{0E(s0iiWEZsU;~Yj(K#udphIUX22^RZ$5chpI!d0$ zc;GsJamtL?2;Vk9y+}@HkOBkVVvvELloU1y(oS-9cKEGw=e47h|D3QOakXhbw;aMH z^Tmi(9g}8t5E4biSpog*2~o1;kO!-d*K_)o<$9rZWwyde^4gY5&b1)LVp@*q&@}cR z4FOIcLx68T3WF;Mg#~&N4I`DL=1Gz!bveGI#6GOq(kEjD?kuTmXDtrV8l+gO5ke!c z35NPTHjY%6o6s*ENOzNn4^8F;-&U(D8v0+b4a#Nf%(y2=8RL}c>5U1mFN?R0f`XLa zB1O_pnt&8&R0YGR@e{6^7N%6cz@Dg*<$d{?th2i!5my`XAsA;X06RuSH?D;n^Lp*m z<;U2Qm_z-*V{xof7?@ip!LejwCz{rz1DPhTB~B0xJkL*lj-|S7Y}sJ+HGfi?MXMyL zcE8~Ijlhz89v3Goew+fYh@>k$Wwzb;nFvPMne@vMCNARjNUZW0tmT{WyoPt%u_2m7 z0aV^n-247qvm0F@l?QLWZnQb z_Zt2P!&SvNs~gI zq*TT?l`5(hOB&$O9vXu(FtHbyNxn7@7zD%xPA{dEmxR*WqEz)vce!EiiK;EQQ9epU zEy!#XB7f!9o)KNo8&ZR*PF^!QP9m2m3<|Z+rVB=0&#(88?guGP|WHU#{zKC>5Im<%OrNJdsTm4&(F;ZKDr zP#2XTbq#h|Q&v=u^{?Ic1R+Yj!GDWl%K_2=e(YxU@xl9t&x5Di@j#y?KS=1snz${~ z7$N)4((y`0Mpk+(-rT+C*D%_SOE+Z=V0(ZK+)1p3;#*nWvXh-mTw&nmg12^xBC!$8 zDZ;!iyQ4mbPS+Ecz~xo(phIQ#3LWHTNpWD>Na=6X=qdmv(fVdQJ29j|d~ltaiS(hJ zjbH&eIMq&?QG0+^x+S(dgFn$-=_S)%TQTQL?H-t(P-F#ucg*HRf*an=hX?(!??5}y zD9iUS5I^_3=GXE@rh}Mq7WK)RYgbf}Fh-qmz;h+d} zdhzOFT|jePn9rmb24c)4+^3k(mnj}Icjrk(o#h4O#x^3n=)cL2z~hD54{>$$lUMr^ z+jYHaEuS08OL8{6;Qhi;3J^|&pC^jzP#h9S2=KxD03oB9=@8&BV5!FH&Yl; zrI}PR8eEcHvD0Z_Tw;&~$9Y=rh+sQ(dd#SSXGt(fpMG4uFqGa3oqS+?)62Jbth{%A zjC5PQnOIlQtz7htg)*VPRQq%P>WMSgMYiF^y&)A zC6!&+xRTD8ZqZ%5DyBh>c9-{&MF|(9TI#Z>q59R}Txrr$7J-%jm6`zR*HCiO9c+-A z*cELk0WEnU<6AqHg*Tt(mNVaJR$aahOh_oIZSLWmKD5}{M_r9mU~9kmGmBXlC;AUxbkZC49rM0d%F{Tjo4d;PJJs^}>?v}^{V4pp7XuMtSI|?XrLL7G zCaHh2WmW8ImMSo}B1|;dekH#&ZTv1nO9lZWGj|&njfMjCafp-?5ANuQ67FXgN?d>e z#yH3K##%269ADS zRtm5OCb}z>ipr_oD6#cbisvjz9RPyz892-B9(>EOgGu8b11p!kETOeu>jZR)}mUKZ=l!X&b#&~1%u4?gLVsSYRcAS7XdJM;rbrwgXFK1QbB z-d|&9mDQDdMn(gd4=38*d1f}No3oD2;2sxf8;pc~QoYhzYNfe#W7)EXi``?YZ${!B zD@e|2a11_1#Fqgt@?SHrXKu3p-fX1>(q$eCp+LdGr zBP#OrN}qh^E z*{TF@jGkjeIv$pSN?d!x^ePBn^(f>lKh`<6LI(?8&(B)iw+TURiSV6eAHEMwPRR?f zu`h(`8gCK8P#jS3I(D=0^1CB_u{1dsl{CvNWa&-xJ+>icYqa0Q>=0a#)3zS5g{f!p z^Fzdg;864`kH=lUJNda9QiPo|hKBOpFoBIaj5I<>t7I_v+9E=(@JTCqTvaoDKOe4&`|>4u)S#gB`?TEmqcOj~eEGVuy(;$EcyL(&;9v!3&V2fG zxWgkl0ezzFQCgqCKFv7UAtn}VOtY`bgZIraB?Rxm&n~$;>0ToiOe)Q>(r{@eHs_+T zU;a!(dB}7Yi1;->Wx-ie0KWz!0Z06*Q(2^gq#RL$ASZ3Xq+;(qO^(da?Q4yC^jkdq zEE0L=tn$}!&u0pfFz$3n)t)S1D)v0IBHPliR<5a0XXW0>(A^SXW_NA<=-b!%uCosu z7wI2z61>-yt9kN{#BLW!@B!K-pG%W8a6_90LG7dOGS&0OpdUIfE;HAHkL0=8mZ49u!q4CBxQDL zy+$9MW3AKnH*Y2Sp$X4cN(p^7oKkjcLem~i4%;19Ny>}@AhlYX13QMx&GIC|`_bdW zt(tnI&c(V`-dQM?Y99U^0`dOF#+W;F_}(LDgixhtj`l;m1+Z*7O`*;)ay+f^{%<4HX&OI~6ay~JpdOb*>{ID@SSx0TLKnpx$9is~a!=k=eDb6Ov z#l&m76V~L1#%198p>G+wvmZ!+AZRv8PBkK>Ii_69vgQR_dSi+PMMY`E#shA%IEM^X z{ZfRZSb9^h}j9mR9QIpLzkL9Km``D{5bchxr)7`~apoO$)4JpZJp z*`TX{9p)*EpRTO1&!>kjKoW-tX>@iHeo|0Klsj$N>7XYNE{f-Gn!;OZ%oR7&l(xy5 z6t983<3_P|i`REqL}B=ixr$Y@YqICXliWVwD`{eICFUMYT&jO$WALhdV#2zl?1Tc5 zVyIP5p}0>+eD%qYanqtaC;Jc=k{N?GJ{kgFT&)j3O0#c=bQynRzoo~{$SzHZcJ@MC zo>eI$qAV4>j0|s7!{NX9W??PNX90dQL&0jD-c?(~r32aD%5Q|lKkGE%Wrx#)OM?DNZth(nYn!b^hV1h`dD z`t!Et!G%pBcFL(QQf$YD7~ZQ8fPf1S8PN#>!NBA!$L-bDBnF;qwfmtY>+K8LFedZC z5rN)cjWmnJpfk**cp0;+yJ!)0w=Z^`p6w6!q7PCY{F`mCpNpKSVcr z7Bthy?(;$(m=EYk)`-&;xy!aQ&t)&y-0^`K>XVAu&M=MRq4B*dCrI&nD_6UTXNy(G z$!4d=kH7FPMwbP(W%j;^B9VEJQp5h})B(hDY@qQf$&)JlHZl{gU9)HSJ83GnCsbdl z;ZiXM75tNn=ZtA3(=vb4c)nTOrbc@5zRt-N_!B$b3v`>fy62|y(v?a54+2~tD4~)3 z(bQh0HZqXOJ7K+zzV*o0!VxpAR=AO|1NUW!D~jl<~lom_BD{X|&Gp4??|hb*sAZr@dc{kJW&FXLU7CS(j6}=`;DoY5W958~=N9 zDV}#pqNm0R(83wLEj&8jQR& zI>l9(MslV1oxXgxxscES3pazc4gmpz9V67KKIDd0BE!*my(}+G=6LB@s+p3GH?_cZ zTjxpn_oznFo}~GCDFct0Y>^13x<@spXVqe{@E|TBR|Y=2uo8No=CPLA3a5FSAI*;co?wnHMEGmMSQ`0WYX7xhtB5e+ z*`<9A%@822v4HQB)Z=MGJeiUk4VFiLM9$}-&g`_4YbpQ1rf|ET3Y~utI){8M7KgQ` zW!)_h03!l+pW!ZlQsw3`5XI!HclhM`r?&#tmlxA8jHLOw2_`zm$yLu=Mf^oGRFH}Y z0z&F7dj78@{qTvpxn|{=y5#AB&>-_m-Uxx7O7Xn&PVG@4V;TpiVI(DdM36Mf`M^hP zLd%*9w;#=(FZ(L$a~@JYPwvk>=S?maE>EG$_lSn^`qY`p0_jylgbAP7UH#`T02MS^ zk%pDwuwn;J?bq%5X4-1la^0|u ze_%{wvr7nxH)FchNa~;cI@pyeT;LqlP5vslme9cRZApbNkHzg?B6-wXpWZx3l_T zT=t=+jWH|tpy&a)!T1|$P`Fai7g-?H6;c5x(hA`@{xjcT_l`){lro$+7{Fe6oTswyTh;*Vt6g zhC1??VJ|mE?Z>i<^t-h9RLj?|Ev7SAdCxXv65RBwh?WvCP@ar_(pqGzDF{{TbDPif z<-K<3$(2_*1miI3TZ7E10#Iqzt%T<{!_R)gqke2Gw<0rI&7XcY<#`Q&K~Uo~-sPmH z$l_^tW3pKxge<|TUNx2?yc6BpTsajM!~x-&p-U85q4Mpyi609y8SSWX|4wwr zB1Mr0OtZ|(^*GY!AdE5%>P0`BHt zGg!QyyeAvl>Us4Cq5OBmaGx&!`2VdMg7X0#k2JINvzsBYrEyCq&udU=8Yr4Gfu~iz zf%e>ISxN=R`guT^R`l}@qY`TfHsLiB%j(|Jq0Q0ykujU0~Gf`bQnM@Hs7wDD|=XQka&qW^MBtfO$&=k|+5%NF}Q0-qO(T!BXyizwTc$bEB(fpjc1HXk)v_M~P6>PVP5Rh&Lva>9E#Atcfy|0=_0vjpCoL z>XJoaoLo+rGrRen`Dj3rrN)!ZwDV>LXOOb?JhZh)6nTD9*h?8_mR+59mO2EI8SvHg zf!fR5X2yaZ?a=AQMQp4mt6XjNGL6*0fS{^iiqAH08zeliA@2%I+!0nL>Hnc0n|MkQX4y z!K;iTwGs|8ADys|ozZd}o;cRBN!K&}8OML8EZ-z^@>1yT4?~ODOZ{yc)W&#(VA1s|NG6uU@<)93aGn zR70C;=}Y@G+)FJORYVTfeSHbS@K~8m5HC7dpfei`J@vv4#*UdtpILQ8~ z_fB~7ud;tEaX2S`pHPr1vm~f>vYstb5Zo?H4$hlR(s0p-(h$>qcyi1#bpS^0YrCJ_ zuJ?xj-hQQ4Vw(ar>lU2UwKB7-^~o(od;1~W4}FKDk0Z+BWo3D1#lc6R4|23Tm><{N zPuMqzHtwpni#CX8^~^OKxATRNq_zQ+#W?cZ@41}WZ%Iav-0?bG~v zHc+*~7*VXv1&0j=u`Q@+eIely;KtFR!e*_D1}SkytM<)wWo}gCHcWO#nCz8h7Au`< z3Doj?S)@{HJ0YC06rSk|O)5Gp$IP-X8U|>p@_Q4*54(NtdSA)3{0f}-kn(8nytGhl zyhgGcEw&|%EB(VxDvqPs)P;PB@$G*h&Am1lxVr{d(n^8 zi9JT5A6pyY;W)4L*Hnx&%<)_|3JKE{1I!lk z;umhgBgOn*mc#PQ0_xG!U?;i|u+Oz_pM7lKFjJF&)Lfn;5wEt0DCTe1v>-!`M^9FI z0}zGBV%>Jfa6U`SIK%rYJCaXpLBzBTi+Qs%LwkiSulonWAS-9FwxaF&VngnqA} zwY{nqams9WzbBU*Kfrik&Aj)cUd;7Q>9{VfXFC_O{)6!Aj2?=wsB1&nigy%s=}IJ0 z%Zl^U>(QNjK*#yZx65*ZwV0@ou;{7UyA~Wm4@1YX=D_9s2a2tLmiRLl&w`NKo*80- zSG)q%t4iai+YI|g*m&mj)AFgDYg(z(xip_8v-fupqHBt7qbsf7nBD)*E6S54bY!DK zX?h0Fi=v7FZ*wv&6TKU{aOSj9V{N)dtpw6m^N4puhImJ;gq;~R^RQ==8l1s}3PZfQ z_sPX{Dz0=PuZ$Jw@3DVTVoB}`RKKlWP+eE5ABd*Rn%K9~n~{P>L6gkwV^VwF$_!+X>J>3I$1#&XeVKi z>v!7C{d0U-x5{)hTBBazA8mU;m zy2-LEE~u5Qm#cWTSY3XG}?RHY)qlsxYNCV`7`FWwpMIwtWV`ue~RAQlD+Sx_fr!aFbEd~UH13^bqpy8-8L z;U~*9a*K~QAuTLPydGpiQJ4`t2)6RoYo+u6bQK-%##fzlq1}HFvTyOrA~-Wg8(MG2 z`v%ffHb5z~C>i85l$LfZmB7T}P=nc!wAHUlH=+C{=j|y{W+V=r|BM&^GF+vU?*BF+ zB+=O?%etDEN(Co}*+%trZ1;7>$v@q#HZVT2grBSYJVU^jK}bYa5?rlyF12!TP9_g! zq)yKE{Mb3wo1zjtKmL_*1bX`6`qPs#T1!@Et^oESOsF9Jsph0@fFzHp&Ez=C=pDi3R{R{$4kTb=eJO!OQsc!bRJCp&+6 z%IYv-l80Gi8AV>j5+Z*ULUR95r0MA_t>7f+y$vPJCe2yG!6o+`g`8%TS$FK)WxI7_xaTG- zk;-=aP*_I#WN6V9sl}3hiYJN58%Y?ESYMNQ%~LDiV%3!QqM9+}KtWM!Ko<5*fPWGm z%B)AbMFKPU>#{qB%xaT)Qt~xuT_#3qRaG_V-7P?@++~oIRH}F#D+^3xRTNvR-r2Z- zZ@#kHu`wMUs|uvS**63H_#SjV`(h}zRFMMY-L6=iBANf4yWoqF z7NKvJl%01sbnHyvO<xL-gBB zpnXwLH0L>YgVkbw58xn-UlK-IaqDi#!~x@ui@w=E4M~sEn26keBOOH=Xv3w~mYBV| zwF2Fxs2?i0^|=8sbZ-?BAMr@~<9h^kepj(uuqq66Ix;g10OmpZm@TZi0U9mRsV zctx}&Qh!6f!+;Ge2v7SQL-*=PH^JZ7dc09$X5E-LuO>k2Hm~vcrQ&S<$y7qDZg?QP zZ}}&+gS&knWA-7x^%(m&Pl8R2{^n|IxMqOVvT%5m=tQsrjfbHF7kwv==4_z<4c4z% zqXCK}$MyD9l7ytTg8>{3Ms!5Utd4y3+CKPra3EH^qy#aUh`}?D5V(ldrVmUZdCZ+jRSAe|(*$6`gkJyefAlSsaG~t-=4k;I2$S z1E%Bz^$Kl$<$2Ly6R1HJK6D5M>8O9f3cZ-9;4TPev0Ddo3=q^cu9yU86;i!kP^%w{ z=<;id^0h{@+(BNULH6*Je0WiZETn0B1zbB_Zh*6*j-JI)!Jnl!Zg(5+on?5M~^*dGxAd4TR6#)3*`T*>d9NbEAB8P8ozp$+HmniG8=B;JE zO79yzINU%h&vNCu0s7OBr~AU;^}{FDB5~NpHrlW>IH6TKv;mW9$7fNEE;xz&J>M(} z&W1^~N(Igo?qS01h9d(CPVZUnf==WR1OXQt-!@ujr0Dv2j1JR&Y+O;#3b_-DXaO#uQAo%R(jZw37gPfFVPa%*OcF}T>L zztZcgDx!0w%GCx+n`OgvXEhxjzkGoFVI32vFklbYO1g|TGtER`#fdIc>g!CFx z<(z&-3!C|}*F2s6U;hBQOUS&B`)RJ8i+-#wMl`Xvy~4GXPS{oEn~i3=^2X zSEiY@P7+!^ePM56xSdwh!Fg7YIBII7%#v9FHj0c)+6oJo5P>_yW4mVGwiA-nUeCVt zr>R&UnzyfGQN}^}sQeqG|CXGYn9TNmC}mWU;nsMOv(eF5h`%{#ug8mrPH0NTVS5e6 zz<+(mo9X+VDH6rYxmd6q%B)-}w}u{!HD#kQr+C`$eB+tRlWx6_V2XNyMDF%Jg{7=D zrk2cahpJXc>&u654dx})_e~Cezp;)NqEVtQ|LR07{8QZXxzrj0LM^y!jmLjXF+*mu zU&i688f6D7*PmL}NrNkkvj~+d_U&Xggr)$PQDm4^ZOt30AJC@zkl?GkobDPDoJ*Db zC?xLU)z#)rIm3k|00aH045bQ^z)VyI>L~Qxk(5Bw4h5~dUy`COO?qJ~ce8d=CTqO% z_k%3hNr`7zh9&`)LHs$c>8%w7nY(MV7Z6b-EZg*u|HCuA`6R-+B1rAvU0EsrIr>oD zb{?<7^;{jd6*pisZG}!`f?ARU=~Os={qx|FUABqpQqVYuw#`23D__KXV)38!bdTZO zy_%XkskJ^|PiFXf73bR-N!Si&JEX_Fh?h<%|EnkD3=#?W-1zCsycZ~-01I+PcbB2p zHTS*4`12_6`NcIyt&&z&d->5pP+x9LM%5|uOIR-vGe}0@Vnb0?Xuw(1r(Apa{ARHW zMgUdgn`F>PclJu?mnf=+pR=|`3b4j}lBdbe2vwCJ#w#K&d&v4CP-!`3>o37`F$q*| z#^0Tn#RedQ6}fopgI8vIgK9bCc#EnEXB301ELy<+3az2_V+@fnifN$wLx)<$SZVMe z1LJTr7Nem#p@5Qp;JAbGO@e{UZnyP5mMi(wuYUX`Z%oJBy6lyE!ujV=~TDyV*iG$A~0a^mi9ewMGO#!!y(8;1r_MB zPw<{;6$afHE&Ipl=C?DWltCU_*vodCY%ROgylmna6y>!9gk94$1*v6z*;Lh}W*ZTc z1detX-e{hBaE&T)@%ET>KQ@aA@)sokW~onM zg>1I^SFZ~7sJTP^!1fICBqtYT27bzxwJf_Gr~l3hPJai#)bZXf~muygagx%ryvF*d* zL_e7~QqI6FnVG!yts<|sAf!Gh20XIV5$*dc+->ZQG}MFWmWa`oj|#bBnpQnLRgPfn z*24M|v=+xX+pAxShbLE8=-B=ke4JPE5@{GE!XW5><6nv zA-H8$@eEo?ML*shD~Ntb{$a7onuYh}bjSQ)knYE0DrDY8mp8rL*p7C)*Pclf0unTF z=3cruTakByABQ6yWHlC=BGmhy>0~CG)oaXo-sz-3_?BtswQl8@J*lni1L8P5KAD=f zWR%i(sC5r+=RPac$iAggFJ-z-$Cds``#ahD%mnEhMukB6-lru8W5_vZd=7F|F2KCR zs69a-U#ut>OsJV9QiFxo^L|QOuJxeKRF``cw9j~*c*nTzE*Zc|L08Sv7_S!kHBmQAZMOfW#lOs$W$<$f*RLS?ib}R| zZ~XWziI{>98?Va~AMnaX7*FXf%r%VC&2B(=h4?QLtb&0_0tJQmD}o0pC3kzN&)0Ik zSaS_#*X|VC3K(ocD;)k_HL>&0`+>A+M<6rhcwbY`^C+{bgIO$=Apo#HoR-pXRB4&tc7ylJk&m1r2i8tmAghwMyMQ07Vg*BVo;iqI++9Q7vqeELQY5Gc;0jeWqhcQ)Q(~oRw>b!TtF*y#z^ghbnrQ1?tOJ zct;R#-Z@?DTTTc6+3gl+Ed3u=s~bXmc9MG`uh$_yH1&z3is!bRJ6V_Q;zuw3b>zS^ z`=#~R%wBMhqF3;N5m}-$cLx)p_tfd&`iXvF0zL34!a{|o3iiGBp7%9E4Wp_}*?Ics z##`zo5_hp>jw-yqwWI{oM$IFqE*Ns6Ve8jQxx99zz0KV!*nY>_I9p2^;&-$ZsZ>zu)G(t-*#B}O1cjJ<`F%Q{=eGJZIum|F>k1=v<~iE9j;XS;HUumhvSlmerxtWwl> zsrP(bP%Ca|g`JH;zsWHQ1bHeLw|gYmH4V}G2$6o!DTd3*k9r%BsHVkZIz4@AbsB!v zsHk3(6w%oc_2RaVQN3!x=w@aG%P~jQ5Qav--|@w&0yle4)j3JI@~EX+J@P~-dp1bs zY?IWF!w((1-@CkK-PRn zbV0n^le-f4ZEzYV6{WC*#UI2$O%(!#=6)xB&eO2{5wK9cI@`Hz-K>=};j{N`P0iL^ zWc^xyhSIsNTjyAyD~K4C8a*v9n?cclRAIWGOpn@;&gzRy5U;AD=I(+O!NWbkt4mjB zC+j^i5)L|DLj0wqy!@WxqcL+nTnm_yCPUsj!$p(Y)^kW4ZB%Rj`iW8GSV4H51+DBpN5S$W}Xc%gs78c6m)RIy@d9nO6t}A`h zZ}r=Nbn>2Cd>(Bjf}-Tq{=jS$sU+oU!Nr;#JdgF_p(#~&&uV-YmGgOVC? zHF{|r%vbP9g3BAQr4I?j>H&BC{b5#%q2?IV>rY>axnTNA+nWo~X=mtqS+`0oyp7up z!}Y&AT=1aoqn)khQ%DmhU4>Z|RX0lu-A`D+%h7XtQdKK@F}S}yw<9jz{_CZ;$v|jG zfX^zxg%oClkRrO)tSWpGPUu8qud$c9YHfC}@FY=C^)|%KC<28NS4~`Hw z3F*7TI^-U;a;=&A-_gKKdLM@2ca81TgIIV}_N$nN@y*`avv!DB%kAeJTqg)04nEok z+6<#3wJHewheY@r-onoc|EA26oPgN+I62Y2$a$xA(?m zBzGaB_^w<7W`(TqO(lSSLk!qyJTEeTsWNTK8ISPuETw+=>MO(Z$i9((p_Y!oYT1nf zNl1o{YGsl_g1(56C6o}tgyGf#viXSpZwpNVY6Y*vcN^(#6QO_eu2(vhg+(LjE&r7H zwpojVa?>levLYz#&vFcN*ec6@;pl>n(x-tOpDkdPv7+DliKvc!{s0&dpBZ=JCX9b- ze`$?hFOoj)PxM=e$+c+uyodC5xLbNH;U|_#+?cKek=9v+?YV>t1s>T0DNOQHS!kB+ z$S@QmIx+X-oN$U{MgozB8r$P2+!_0K+)sJmHo~+8r#vq?YoaJFycNeaU>AA_S4Z`! zL8igftC+O#m6Ve@FH^*V0M>G@tHZBC)E8Fo_$u&CnGHOZ#x~J)_tgPtdRF;`{1@lA zLQ?12QdwzOGx7=irPtJPAxf;x+>^V&I*I+TM;WaRgeUl434zeVJ7i(u7i%srf0f&l z{f`S)b-+5Ww+MKe3{FvDTUAPtWLOb+4Dz*v1h9`;3W&G1DA_CRx+`>Elo+#OX44*+ z8bPxagx9=m+<<<-9W7>Q04q7QtdikheF&+gnRh|q*fh5 z)4EFint890k=!N}U_pzk4`I>LzMlAY!@^g30R6bwLV4-+$y(it{)}G^x8hQ8i`0_m zB7sW{EzlV~f|<119!;`G^z<4B30STO9%Ol|OJr5?nq)_?E*hqUBlk>$ zI%?SnsIAYz7x%xlbL!!=*m=(7w%xpsa zb;YvgL9dKy*7c+|e*}Gr7y;kx2+#4?W!# zdraXJUbz|U_+!>*A$eGuG;LI}n!0&=Nt})Kbe{`2h)D!4e5WfVAomGJ;rip(GA;jF;CgN3Tf77W|Gn|uPJYaUBYP{!0z4RZe7S*3@az=&7Oe7Vcs zpkk)MgiM8LJmtwSvmHNBD7iJ?)!aWe{9lMflGz)w&yCSk`h%ljDS1Bq>343Od#0K7 z_{Fn)@-qt;NlR&&g}{crSIE(Rq)U@dx#M?U=QK8-8s}C5^0O3BJ9$bT&gD6NP75z} zB~Ra#Hs9313xtmU^YmbrO+3-I&j{SWZ9F(XetWr|{)&hk8{2Ik6R7@e4K=^LuuQIK zBBVCxy8=tUC{?p=aM-=%g!B8XY*8(D6*a{!7B1GfTpLZzT{d!-ws?@9- zRzY8$$@~ebUAnlqELvm=Tr(NX!>{(@L{xV$Y>L+tK25k5RWnwK*XO<$IZB&8B;9mw z_HEh-k*3q98lx!~G(Kgk{dNEBOAwWRH2yt7^&`f(QN}%04S7n@;hGo0PbZ>SQE4ok z$)-7-4AQF+BiT&*`0&}$9XkS6D0S% z6ue@uQ=ET3uh9`;HUj$>Rfx`dMcy;!($3!#$-60E|L^tLC0wPfr>} zegmU^7n2%wXPl(!RRytE)-QY5YKP{DJy40vxe@<=GXuf<64>GDfqvZn!C{(pvO6g@C~ z>8Cq~Qd;|?Vzzl}OdT5O^lt|TeuRb_A81rdLrL!#j6nyFD`dazDjS+5Fn^IS~fu-!r7 zF2LZe%`{xK#~JUw_kEk~C^;S%{n)I%To^Sk*PeVRC!Gj}4~vMCie`(h1lKr!wt?X> zdXqXNRkH-rEl(cm{zjGyV8z8tx^75~$0gro$s<}YvSHlZ(8j$pBk0_lwMO@qi576U zVhYUd#2ue+u4_d&Pw=LoLCRH9MfU6%VOTK!y=yl`Top(LHw3r@ohBJipmcGa&l48X zY{U57fo?VIk`mt+;_~lOB459TDM&dj^V%7?YZ?@-Dsab)fDEphxn%Qgbd1phf)JmJ0 zYa~Ak@$hWS5^<`W9gf%*PQzRTb(u<;Wi8{Jxe+hZN+>;EO+a#t8q93WstUB4>q7Dh z7Bsh;V(AKPGLGHJy4C$D8djB8C0TAreDrT3I2^zm7bm`s)G`p&>Q1V~vG)&v)}gyh zZ`niWizeliV)Ht;1}Vy<{&P~*>{9~?zT7iHi{OPi*XmzEr`9}I;nJ@_(IiojoG>#MP}`AtA65R-(0fio@*9T zV4STdhHo^|g2$XwdXjrTg@>v3yPWUE^~)|1N=;5_&p3Q#X8b4)e&gDFjeTvuPTbvW zXZkDJ0unKM4llfUb{WTDBtAeXdY@+g09LPGoi?EB)W*WN+K!hSxw|O6!yjgp zBGDNyo4FVH-@1#-jcPD{?-mb{t>F3H{Kk@8o`dpnB50u1*JbdmJJpHsaGtG>kBzaL zl&iQPunK<68 zo?8Xw9!6oD)Dn@gWVulVMU7mus}(*cTddUX{6@ch{+AoBHj$ zO7g#Id*{nL0|%dl%?_A^gSX4)^yjN5!8g}z^yXp?_AQjjLIAEBy`h2-VYpgtOvd`dqlQXG|&_1wPPc!EcU8&B_pBUL)K%9t)4p+mj zWT;VlV`9>ZrB}h+dV=KaEHm@Aslno?j(AwTv@dxF315pMlgd%Z-+pQ#&LLj8CUTy@ z+ATY+uk`Ly)YknY7$(7Ur1CJNsL@>cTG0xl=rpzTQl0KKi&T1&7B!w4URN#SV%xC) zXX^VOhDfH%|5)ux1+u?R+b@#DTYpp!{qVutWnT&4iR=TBCxOOq>wXk2wxe~7^9g*a zywoHyy%~J>0g~!>$7*GJXA>BJ;9jIYE5Jj1cyJ?sYMfJ}RlQaWJ=w9`Cah_X{Rh(t z04?Gx+RiPuEU22v?mJvI_r~9?>9;!0{{f_&NGlx6dO#rD+=qVv7S${fkyG!OujHspkQVOM1CUHN4?)> zco3{}kgF^Ben-KK>$Bl9nS$Hz?b40X``Ct8Ic>QxZpCkC#Lx}qlqWEdn2OM{-!Crh*{pZr*HE)v{@(%;(q=|$57`E$*v zWDUdzKBFNN+1&+k9x(?AWf;{;I$}iDU-5H9jMU|4>nTmcD1+=yR%B^at-K;<-D2uT zpS&DjdKdmJF$H95wAoZuk5u*`%psc+xH?^GvP?N^=PFFDKi=O)@Ju` zI#(p<03O2ZfE@++dbm;(m-&PgJFs1~G3%$_>ynMUae_J=_0^DR-LvjaMCQjnQUgt( z8ukaYZ;ozFJxtatJm%7^bMw1elBD3d88{{n0@RWlyY5s(txQt7P@KL0oNVNU0E4wxSn9z6^*KuHkCnyEo`#}$N5#gKdC&9&8GjC6o zBbv5=JT0t`^pLibu7l=@-Ob~73*O@RjwKRbDSlIcFZ&7~zXPS6-TIfK_zzxr)BVgw zsCS*2ZEKHOC*YsWU8}t_!=GjH+9_izvs7wg2}I`>gu>GlwfZ1X>m<+Lvur=h2qZ5e zDY;!0^+O20aWF2e(yH;B8atV8b$71IY0wN2D|75}8&&Nk|L42*HIo@RH}?@YNgpv@ zwAo;n&vZ5h4`JhSE;eMw9sI;5jp5m&BX;~AYj*o-rR$I4X z9!FCO1T_Bu?(7m=;O`%rEgsbyW>r|CLe>b$P=m2ncx64+eIA-)&S~sB zimpgk7RqxIoQp7~rDjn`18T_JlHjvuN%o{*`R70Kr>Lx|AMS@Se&XGr4zmZn4?0wG zzBruGd+}U6ue!uyf48$?^Q?17L^b^$otDLm4(FWoZg|52L$}jfH}eKPOIT>iWgEsb zU4_9m&r>OpqfCc7Zr{NW@5?@H!@&^vE$qiRF5)-QPh}CWxiP^|;^<0dE%Ug1oF(+u z1hbDU>h)~lmbKRzi095qWAqr&lskHP_5n&}4gE$Q^T>ISz44pTxtq1w_@H@G8fW@U zoC5`p&yw{Yv!Z7`WkV-(RPo*@gQ0KfDy|KX<5`CD(dj14W$XK3oZR(Ki2*+^Wqd;}2j0_vX)x{^F-9ylVc9 z)V}kA1G*A<{w>V@2Y_Y1TTFtxycUEKxS@ri*iacPcXlz+!g{fHKCA9*pn!-l*8H%D z^t=bjcyfKMe4}$Tt9Q{cwZV0UShEmV?U%H-PwREQ$L)Koh<(zHz8%W@@Q>OA5v9?v z%IHclzgBH@)(YpQxWJEvS9q=r5K85rwLr+Bki)EEUs$O6%wL@RNmVZevMbmz5qM zdK%9~%XDFwp)WF{6m~yFIcv~Lf}jEvG43UZp@w>A>X?z7D2utsg(NGy=8aN%BkR(0 zJ^m8%TSTsPfx9H|ac1a8v8l4xX9-27x6Rdhs8z^@kOZ7_)I(%1xDPf^4GB8G|B7h- zzFlwx=Twyp3oNKTEa>9`Tu-v5AIJnyg)P?7v=xg{<<>K#?Q z?%2Y7>t>r`E{|EYYu4^Ij27t^j@$Yc>trFK<5outixrPdGCA5h1xR|8jXl>nIl7gs zNvJ3l7Un+p0&l`G;m=Bb;G_aLq+AJHV{kD-w@vhleN4)U2&%rJhFkqg==1D0{-}mE zMDSi^%%QB{DYr&TlTe>7eq}Ez`GpuG_9vEAW|@4vJnX0aLqo%X$&{lE7z<}=_4Vo_ zwJYNTkw23EMwP?m!)vqHBON_8Q#rQ$P0TUnXLzyK`1?!babSvB2tKjcfPVX7mCQdS zEU)6`>zb^MZoU7z7cClT3bUOUVYPJVJMb){Wdpy>%* z;UVx+lwU*ZHuGrumj24v44jH_v@S3_tpT6p+C(t8T325Xmgr*LDs;SFE4n z88sQqjd9jy6KpZu5sat{|3b|F{byj_#BQ5d)jdgAPJ^I+h1R?tJ7w5l;Ly6)D;@Ar zBx4uSM*`I_6mw@(9q5LJSSBGg2PQ8m3|wsK%dJaTiwk2Oz|m>{I8=BWQ9(fE9NBTo1((D$p#+(IbR12F&c@P z(KJ8;I$2lHIzjrjv$liR3%7|SGZ^8dT^8L(6w$+R7n$NGsje=0; zKyuGz!N0ob1fp`kc-vrovK_~sc)z~-=x1@Kw)wtxLL;MM`q@qJ{VWJ61U5I!S%Om z8uTMuK7qSpY+P9AQ9qVXHLY&hl#aQ==4wHdGt@RKQ}r>a0EA>;O>uQmYEO zF4xJGd2dF~`v8F~HL5`-HSKCI1kbxNfMI`+ zxd2yRnecLk|DGK*A%AU`es3otCPgPZZSbqCI7@_=&IJ&2#sRiSIPE&MN)rb-b^on* z&mdPa`V{Yy$P;)EwmnNcm8lT~X%BjlKQT^=p8GjCwBd#`Zd>{I4~Nb@f2>!;6`WJ;suLj3d@pg;28dA~Hf9?7S(6`e!n zG>{Hx<~K-E=fOsTfc!NzNUB4Djy##e`xQZbP?1Y#R?I0b%+4&xj9W#GQDU$Dv3~s0 z8S*G6-l$FbqeP7Yv+2Wm>rKv^D+uVN+4B%sy54<<_*lu9BA%3ghDF~YlIFSGl8C1u zxOJu7UrY9ia+>-N;Qv-UKqybgaoEhuLb0ViZnLm~5l~?fa8y#IKLrsM^A*RvwiK#6 zP*L#le_>uzA8q$mK z^-SL`2mY~s#VAL_Xbk|0{%X)Oct^(?K`Ewy4+cHTH_q4SOg}GMka*pe@ehrhh&9lC zEZux8frLExi(ZrQ!KfmKInnt?jkP;#?Nq7DYpbPJrs}e@Yv+m1G9u@Xz&fAYS1#1( zzr$jWa6RUdRmYOdRLfVp9p&=neMm)RtWT_ZIa9(6^~&(H4e!~wd}B8|`@ zlwY4_WuG^!yZibEf;cBtGfO`=^#C1IS45M>dfTDv{)%<#d5+Hz5FFiOpA2RrgeR%| zzJ5_g&}6hwQ74KXyj=A?iuotZjUA4zd+&g2WKcxO%lqhjxf#54dsvC&UL&DCC>h;k ztZ76n5A(0!O2_4d_$D6g*ULZ?#SF`==l*4`B)Z>Ir--0XU&y8ev8N>|c zUB!RycJKAW8-wV;6Cirwq3%qee3#{1>8leR3t_PW)Pqv!rv0~=x=z4Y&W{Cq5_A!M@H z4CRIbguB>&^$`)>_>a@tSb%vL1lBTxnzyvLe~5X)eJuH(!lHX#>M&BXp(4)>-qTt_ z(#5!m7a9m?lPfR|jkZ5^GL$cK;IAGFwu7E{-~>Ro0;KV%L__iwA`KASygS?RT~F{{ z&ll7i&9K5I-ruX#9=|cTkUKkA8{+RRObI%u4B<}nP-=_LHXO@1le7T3WS2C}+cZ#7YGQo-=OnLnya~qh3*qv!IDp6ecWM&jX&s zM;n=RI_*3~_(9PVT^Y9JUvr!$Fj7zn-ee-82NqbD(+{k5hVO4WvGJCUl!{{p4amK9 zUu)0X3W7%%-`Lq^dG=uKuBWX@~F$pP8lieUaouF_Yh+R{9d+o;K808_kMiU zroDHSDm-%8erG9o_ylkI%qznIug8z_r^iXop_fss7x0)^!@d@UH zp&snk!sAzXO$jgF!B!%;L8bi+;wx!cI5o;cN3%1K| zBB2c~(+2*WVVUjEDpDk_-7i?uVt%)M^WG^NO<_wl=o?u(YSTOn>VaLBvc7{NDs}Dh ze&6^>cJBud)IC^J^@M5*+*>>Dhy0F-Gf!-2Pe}MU$a?Ex#T0m{+>EZvF2` zRHZd%7?}f&KKyl_bezDqVR<}+kX_XX3Kzv5&TYhbcT4KX6k=?ggK~Td@tN61A@?mG(NWT@hH2p-XAX4AzlCR+wq zAE-6wVj84tLp$244mR>~UAx$?#*+CP>@@_apOnqyOUm>06_ihCzeDN_(<3+pX=o}W zHHN($G}kmlzB1@j-v9>NTNv4&>-Jys8QE*vJ)_nqX0QZ*vzke}mzHjNv+T{gG6P*) zCC!$r63!EuS4?+`t3~aPfUG-Fh?LVk%Ki{YX4os?$B}1F{682J21jo+rD7S>Q54>j z|9k`Z{o9GD(nh{z;BU*#n;-P8E7Wy(_8}~h7IV;9msp_g&zDB|D{=hC? zM`Z2#8xlR;J&IhDz`OOz1EzALLhuhco4sc_h-!X1Foz1#n-qHFPf6A%S;dAWir``YVsmZ%FMJM zK@7*n#g!3*3Z&#ehuuVmmYyK90)!jU?!s27sg_%N5(%;bK3wF~QlgZC z-c5J4phu}_`YdaYng+DsF+-(Q;+}Zdu3?aNgil3)U%q);B^?FRWt_a8_w?Q*$$T zEZ^}*|E#I^+NS-&FlkxWyId=<`|%ewISAr=J?&QMA>D0jjlDDTJ?GEc<(y0RVP76!8fiQhvMpFaJ%)jG3hMCqF-o`1m zkOrIQYGt?zvGLJwJ1qbO7#I=BA7lW_tYg8M1b)$b=RFp3&;tM(kLM^4P~ba3R>qCm zs`#+K91g%yar{thds?;b$Lw!Me-lHOIbE0LubU z!!93@wWhPc%$$x}aFDGiS;6W2rju4=FWeN+UH(?kBWHXdS9nFR{c2^n@*egaMc#D< zG|xn*y>M3a-M=pWCMZTx+T-ZvYQ|->IypBHWFK!sGQ*r42(jL|Lu%1+bL4QEo!PQl z&W$_FGwg6d9!8pqmKEjLO%}#MGwm^lU2jR={Hx9N%w*?VAN0q@62cjZ&k)g zH+E^?&vi45#iVd$doDajn!M$O-wx`Y=}|%}QBw*{d4VS$gRGEO?jd$UwLdpfENPn5 zGV+5Z?P_xMvSI$%;j3QFFcAiM@@L+5x;hM7WPyczV25~m9so{oMZqqZ5&o#y_bS0x z5$dh#6(8ATO=IS46_p5D$ijtrG31nx!B8wSUX{SP(x=)RQzOdYu5!3*{kAxci%7bRuLZikP;JHS< zPOfW1-e_b&=uYCNLFIM^=Wv5@mrLs((b^U~BXX^5cl?aE5SD&D8BpC1q z@Zn1!oa!A}j|s#JoJAPeR12)lw=)!Z9au>zVfubXit@H2WU{5~U5(A=Kw? zt+RfP<%%`Jg%6K9ys{OmF>z%1k|qQf3>u;zWYi?1YP7lA)N?k_wPupqP05-9P7tO0ssh ze4YY~4qQIGEYZ8B29+WV-oN>ik$OO+HQq{^Fx!V5y%m;yqCDU;z7vE8cq7f&GVxZ z8Gl8+IPs|Rth*M}Z~OwpxFwJg4oH}>_OQxr`Wc_3agvd1us6u=@qA@z=2W9x-3BC=EEfrtbXE4zvIAT1FyyJ}_N2 zw9Nip(u%)8M%U;0upK%zm?GSt<2rMPXQjJJW_{1f$k6eW22zwZWfZUF-m)z7yEQ?0 zYinRe0zjWElz;%z-$N3X$MP<6;loOfCzhX61=`CDH^b;kyOvtZF&4TlKUUJAMtGeX=uOcg=;$fC{47U&(@eHZW>4aA8WMCwwZOl|JrBl2G~ z3$oLJwmqCraaLIw6G|EYxO0xfWF7|d+|47CZ1|#wYN3Rm=7x#O?~*uUhw!d+C5`nT zFG!j6T426&uAQT8MtZpSy&JkWLboK8C7|d$lErJ6wz!Sq@Fj{SPPAYOY>9t5mWHQb zyXiTn%tkwFL)OWeB^h&LxOCLcw#5|QE{XF{?i5?&l;uSo$}X0ol|t^h8S%%jj0h>V zBXiEyS~R2H3uvw~GlCK`1H>9yi0nYd89zKl7LJ+i*2y(pG0 zC-Vnw7n#8{F>M(ob(er<^-9f>lDWO_S(d*(0_rgk>ZP!FS!4_CtV%29xTnuf-HV;I zqEYhFEXnI%n&xk^0<{%>#w&c*Z>-JG$scVK{Q5ekGOL2#UDG2psKjO!zm%mZ?tHJD zCt$@r3GJ}g$pe}Aswx(KgOb4TdofRL7T6@;8JW%%0gTpxiJ{|M`bp$~&P{TzvWq)2 z$pmy^^Exi+EV$7+gjlw2l&BVIb&+i@sX2q!NYz+jzxX(|Ewd9(aJNc;LMPq2l=g7O z>gF}-Uq+URSewMj(#PqPhZNopeoM3?nHq1ivAfy4EfIsxN;2`S!3pS`Yi@>sdQSUlESP<{9yXl_CXqv@Yo0X7nS4 z`PW-ngxy*5)$nLCm3C))4fAYGpj0LY;q>zu{D3}iEi892c{?fK5xzF{k5hMvx30Nn zvKqMEsz?pyI1#qWolQ|_ZCi@7i+hA5ZPIQa+8Ae|c#!QI(Hn>|GKMl+Wgo{?2uDwQ z+wJYu4!`~)TO`%@D|!uS_;wtQ(`WyS7fhw0f5^IIG2CyvZ2zjTc2*QP`a3 zTf+=xS%1;7v*OEEa`b`on$j?V7pka@iC%O9Hxz6fxfg#;A=9ztTni|rW-lw>aAzbLU6`D)(#%aqy%=KU)JCZ zTG(a?8VG?gIVKBE9f)vmbT@1jQArWJL$i^F(U}I|OkiCWk3d`Hp|wd~u9u9n=;P=@ z^IRrQdZ0qwVnt@GUQF3|-uO&F*>C-a+MJ_Ijc-+za8AJF=iMo&07q=yiYJiqy6i`A zTyCC7rk)uvhx^>5+i=T~G;yqH&hL#`4vq_Vzf%YMnBz(KyPuV#j=Ue- zSLP06A{&ei>?upg(M>3XZW-LxdM7DBnCm@Fyc@}?=;P}4flYF)Z>`;pe_?`6eETMV^NH{3FRNb5FZEvqM zli;SW=KKZ)`MA5lVvzrYN@~AoEWSaShtuQWGQ`87&8s(Ut`*IUi&*O;b!)IRzO0)5bw6V-ZGTa59yTmVAp5EuEW|z>*K21lb+=| zXIic!_lj_YZ|0dbJ6-M_t`2{!Uh`RMt9^s4@9P0)F8%bZd62c70f5&t%F_&`~T;hqR4VWe#^q)1D4|)w^WelsA zLWTEx=R!pmMb6>2BlxJc&4C#HX_J=PlEkEw)C-iTD%3`pW13M{s^=ELH+_qUzOIUc zny7=z;mG`vfwE?z{8L`_DdvuUJ5t)|PdlU-EMnwVlo)5Wx38BZ3|L%rB&ZF<`8&9i z^rg9Xl9N-p(|PBk&C`VC>l?hI#7P=UttutZC{W}(O_%(j1%m1IuvHI-f<#$BM$Def z51d)i9v+tQ@TbYzF*+{?V!%B6SSeFk$Oh{e2^&}9&n$9iQcT|Wu^TVG3TgIui1Pvk2&#MUJ>y~$ zr#Q++*uAyzJl2(#6sd`lIwBs|jJcm+O6ohp2)^AvxH(%p*aTTfPYZ|@^Yq)=>6BcZ z3p4mkR|h?M*P^)uj&By_c_pogEI?m0xt}#|gQxaV9;6iO6i)MO3vhy)5$Sgh*g7(2 zi#$toU+vj;EiM20fVtKh$v88z+t>M%aI?B#W|6VHp^-07^)0q!=f_3l)kJn`!%zMf zq(f&a$<@Q(tW=>`&r93$OvE02u^u#4P9KRd+~CZx6hENL4EJs>&)>KGkt$=1f%K6D z-w(UT$q>^NuO~tVpWv)eT7A%I^j^5HmYLC=oWIEA z7irT?Uc-2+vvDF_AOU&T+3r$mh+5P4i_! zcTN~ah*Q-(K}ABf(N`VmUF457jS&pV{<~qc}mEESZ&3;wEth%Xu*aR(vFs+SI1?3~Jw}DDqc-mk{ zqnwv%34dwH0@}ne1N)=g>>}R0uIn9{K0s3~mAEv56q{T*90yv4aQC`aewsR{_A`}t zsnf`9bmhy@Nj;G}HR&v|BI8ASm)#JC0A)KCwRqN&h+Cju)yLTk80w6uv^V|9jv1Q+qjMYwH`xmuIS-}Hr+)pEA+tu^MkzKXOr2~NrVD|aohg&8+JZF`nq zOS$5LQgSF;O`Zg%{^;bcTA1g?luWO;KD9LOE_qfI`uG>+qyEzp?(8(kU%+co!jgu7 zZjJ$u?W+sy=uXh87^&r4O_4s@d(xs*EH!11>qNd23o+EXu2qL&<{eXtgOPr_b?2-; z8a-7-!2-hbKF11jx2vTg$>*iz&|`=JF@F*3gVQ8>uT7Tj)p-9X_mxY2xkXI9G;T#w zDm@n8UmE_F=V~15zRzWm*&68lUZ;uG1D)OCVo^-Y7|V!yLbr(EdGLdQT41~-T6b7A z*7>Pl#dey0$=K8e(9G<56~P#YTWt!|PVmMzOI^LGTo{8%Gvcd1zq|UGiy3>-t*tzw z@ynw*EkCLR(OJ9X51+8#qNxRO6v63GFcE0e%Ep!_p)&9CvhI64i_CzoZVC|+Fhu(T zg4ZKd>E{U1dA80or>F4Xan&r_0E0dohQC;SDt!(8sV zUw4L^uD32T-E$57zDX*;Q5bW-t5bB_Q0r8t$xPTRnO{CJXKSld_31MXS3h2-%wPBC zxaT7gI^LB&7$Lp&*-gQH4%kR-LBs~K=wfv-4(>WyYf;Drq&U>72#w)bkwS$BJD5WMDL*WC(|narSsbI_$#>!!~)#Nu79*(K+Mn&2=G+2XKM6Kteex#2`MD7bt&^Atffp~ z{kUnuVn%=@>EQu90B=$3RcR5}%^?>zN1L}n$LjQov>;m3Yfzgs$=%KaRL>iN_>L3s zo@)}!D~0Gs5cC>b>W~WV-R3%8h0fh4a9wok%OL&tBSLi?M$kP=ZKItdlf)*?Hulmd z85&OE=Nxw%tQmG7?SbdWX3Cr2N@&qKz8N9~16rvXnwXe6i3XG>roZ}^=wLx<8j|); zd)87u={-Vx4M_@Aj4TOwzZ0i0<|?jUtN3N}V}F`Mt$&Q-oz`P6yRWnVNJ9U4?K)0A zYoh~}i!*MgnRW7hOzCM@UK}i5BJ(eObO7npmk)is@%%Q)HgA~4B-__|=LP6HXthqJ z38qUkhQ|}C4=R2XMJyLZ47y9a?3!I&dj_L68?G98x6g933#yN;2&zXU@DTeqC5gjb z0CXu-)<$%8ec%8@%s;A>;0;ZH!=FdAZ8dvf*R4QfdI@S-_XX!0f+^` z6We6<^&T9TFJ5ZOtQWcur4WM0ujywj0vdHbPR=@3O2poZf6nU?7~z&Aj%Dg+Sn%je zSBHsfw>{M((rbAgwz@yLCx(mGX=E3Pc;=%`v7GHe3F-ylpMw0r^)bKIBtYIV9i=jS zvtO%<1xFMc5e5?7UGMYuLE?89`zJh1M{MH1uuIJpW;+QUC);ACLw=q(=c`;lf&04P z!95nT$8XqmuH#2?Hz))eT!fu2O&#qIjp7jJd1gYUbs@50Gu0D%`S4&?SaAEd@`|gi zXpFj2tslepYW4ldaztx?o>29n8^;9g>Fk05=T&L|y-GndVGM1;`4>>dpBs}0%jxUD zH~uUfj||x*4B)nlLTac3xb{+;{;((Hp^jA@jz8;Ei;gxB4A;%+fR{ElUj_s@ z5-V9zNiWdSztM^@%`W6Bi*LZxuDYdjC5JpaDv$RRn5GvB`LKi8_liXqOj#m1r9k); z%`j4M!|IF7(&2bBr;l8pApKegMjdf5I%oU9{uwjTEf$xDJ**nG490b8b>5i#{I8OI z{Me(8RSE4rD*W0Ib|{@Y(ci>}%x}{<$ZJ<4cta}JF!=X_sLSNZX099_*g+#wL!1@e z_Rl5zKd9>-sk-6fPg7F8N73#itGD^vXMfYGH)Wacb!+*AUCvC zsAo#x+air}?eI8B>zAa$)uPlNOeJc(ADI`;attGNt?IMPJ-VeztPQYe6>n>1h1u4c z-C1qVtzz>#VaS^ngyTpj?xnDr-%u~^{V5Z_-vS~NGJZ@!*6ssHJ)i^k#1JrmITr#I z%$$?{p*(0x-zzMonCDXz$pnNfSgivIz8eK+{_qlJZuCKt{)9q~MG9G|e*@j2NPm;& zq>#cIlS74l;^8+xaVQz6;`s4AQ`~mHonxw_hFN3GHz(67c);GWjGt^>^1A>J9R2!d zqMJd2m&;PBW9gvF zOQ#7i+ojCm%ap=0E2&Zbzy}^g0Jti%ZXw+d50#I3-WrT%s9i-ku*u&&&P|-R2~QDi zJTR5WOZTUnN^?ST(s^A9ACzN$825`CJLYZXLXIc&$Vb8Uhwn%wm1CQPBGUA|LpJVQ z+U2^@`3CZ>m%~jhR{jFAY!0Jk$v-PaOw;55(T(w2%mzAj;{E0G@P-=_it+xW+J#);A|1rRNEvYUE?kF*l@ zw