this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

✨ Add blogging system

+524 -20
+1 -1
.air.toml
··· 14 14 follow_symlink = false 15 15 full_bin = "" 16 16 include_dir = [] 17 - include_ext = ["go", "tpl", "tmpl", "html", "templ", "html", "js", "json", "yaml"] 17 + include_ext = ["go", "tpl", "tmpl", "html", "templ", "html", "js", "json", "yaml", "md"] 18 18 include_file = [] 19 19 kill_delay = "0s" 20 20 log = "build-errors.log"
+1
.env.example
··· 1 1 WAKATIME_API_KEY= 2 2 MAIL_PASSWORD= 3 3 SSH_SERVER=ewen@ewen.works 4 + PLAUSIBLE_TOKEN=
+6
Justfile
··· 1 + set dotenv-load := true 2 + 1 3 render: 2 4 just build 3 5 REMOVE_UNUSED_MESSAGES=1 ENV=static ./tmp/main ··· 51 53 just upload-media {{ ssh }} 52 54 just upload-assets {{ ssh }} 53 55 rsync -av database.json {{ ssh }}:~/portfolio/ 56 + just git-pull {{ ssh }} 54 57 ssh {{ ssh }} "tmux send-keys -t 0:0.0 C-c 'git pull --autostash --rebase' Enter 'just start' Enter" 55 58 56 59 upload-assets ssh: ··· 58 61 59 62 upload-media ssh: 60 63 rsync -av media/* {{ ssh }}:~/www/media.ewen.works/ 64 + 65 + git-pull ssh: 66 + ssh {{ ssh }} "bash -c 'cd ~/portfolio && git stash && git pull && git stash apply'"
+63
blog.go
··· 1 + package main 2 + 3 + import ( 4 + "bytes" 5 + "fmt" 6 + "os" 7 + "path/filepath" 8 + "strings" 9 + 10 + "github.com/ewen-lbh/portfolio/shared" 11 + "github.com/yuin/goldmark" 12 + highlighting "github.com/yuin/goldmark-highlighting/v2" 13 + "github.com/yuin/goldmark/extension" 14 + "github.com/yuin/goldmark/parser" 15 + "go.abhg.dev/goldmark/frontmatter" 16 + ) 17 + 18 + var md = goldmark.New(goldmark.WithExtensions( 19 + extension.Table, 20 + extension.Footnote, 21 + extension.CJK, 22 + extension.DefinitionList, 23 + extension.Strikethrough, 24 + extension.Typographer, 25 + extension.TaskList, 26 + &frontmatter.Extender{}, 27 + highlighting.Highlighting, 28 + )) 29 + 30 + func loadBlogEntries(searchIn string) (entries []shared.BlogEntry, err error) { 31 + files, err := os.ReadDir(searchIn) 32 + if err != nil { 33 + return entries, fmt.Errorf("while reading directory %q: %w", searchIn, err) 34 + } 35 + 36 + for _, file := range files { 37 + if file.IsDir() { 38 + continue 39 + } 40 + 41 + contents, err := os.ReadFile(filepath.Join(searchIn, file.Name())) 42 + if err != nil { 43 + return entries, fmt.Errorf("while reading %q: %w", file.Name(), err) 44 + } 45 + 46 + var out bytes.Buffer 47 + ctx := parser.NewContext() 48 + md.Convert(contents, &out, parser.WithContext(ctx)) 49 + 50 + var entry shared.BlogEntry 51 + err = frontmatter.Get(ctx).Decode(&entry) 52 + if err != nil { 53 + return entries, fmt.Errorf("while decoding frontmatter of %q: %w", file.Name(), err) 54 + } 55 + 56 + entry.Slug = strings.TrimSuffix(file.Name(), filepath.Ext(file.Name())) 57 + entry.Content = out.String() 58 + 59 + entries = append(entries, entry) 60 + } 61 + 62 + return entries, nil 63 + }
+214
blog/making-an-lsp-server-in-go.md
··· 1 + --- 2 + date: 2024-04-25 3 + title: Making an LSP server in Go 4 + works: [ortfo, hyprlang-lsp] 5 + --- 6 + 7 + Resources and documentation about implementing an LSP server in Go are surprisingly sparse, so I decided to write my (first!) blog entry about it, after having to go through the source code of some random dependent on [go.lsp.dev/protocol](https://pkg.go.dev/go.lsp.dev/protocol) to figure out how to implement a simple LSP server. 8 + 9 + ## The pieces 10 + 11 + We'll be using the [go.lsp.dev](https://go.lsp.dev) collection of modules to implement our LSP server. These modules include: 12 + 13 + - [go.lsp.dev/protocol](https://pkg.go.dev/go.lsp.dev/protocol): A bunch of structs that represent the LSP protocol. 14 + - [go.lsp.dev/jsonrpc2](https://pkg.go.dev/go.lsp.dev/jsonrpc2): A JSON-RPC 2.0 implementation. The LSP protocol uses JSON-RPC 2.0 for communication. 15 + 16 + ## The boilerplate 17 + 18 + You'll most likely want to split up your code into _at least_ two files: 19 + 20 + - `server.go`: Logic (and honestly, mostly boilerplate) for starting the LSP server 21 + - `cmd/main.go`: The entrypoint for launching your server with a binary. In the simplest of cases, you might not even need this. If you don't, put every file in the `main` package, and just call `StartServer` (see just below) from a `main` function in `server.go`. 22 + - `handlers.go`: The actual LSP handlers, you'll define all the functions that you want to implement there! things like `Definition` to implement the "Go to definition" feature, etc. 23 + 24 + ### `server.go` 25 + 26 + Mostly boilerplate: 27 + 28 + ```go 29 + package yourlsp 30 + 31 + import ( 32 + "context" 33 + "io" 34 + "os" 35 + "path/filepath" 36 + 37 + "go.lsp.dev/jsonrpc2" 38 + "go.lsp.dev/protocol" 39 + "go.uber.org/multierr" 40 + "go.uber.org/zap" 41 + ) 42 + 43 + 44 + 45 + // StartServer starts the language server. 46 + // It reads from stdin and writes to stdout. 47 + func StartServer(logger *zap.Logger) { 48 + conn := jsonrpc2.NewConn(jsonrpc2.NewStream(&readWriteCloser{ 49 + reader: os.Stdin, 50 + writer: os.Stdout, 51 + })) 52 + 53 + handler, ctx, err := NewHandler( 54 + context.Background(), 55 + protocol.ServerDispatcher(conn, logger), 56 + logger, 57 + ) 58 + 59 + if err != nil { 60 + logger.Sugar().Fatalf("while initializing handler: %w", err) 61 + } 62 + 63 + conn.Go(ctx, protocol.ServerHandler( 64 + handler, jsonrpc2.MethodNotFoundHandler, 65 + )) 66 + <-conn.Done() 67 + } 68 + 69 + type readWriteCloser struct { 70 + reader io.ReadCloser 71 + writer io.WriteCloser 72 + } 73 + 74 + func (r *readWriteCloser) Read(b []byte) (int, error) { 75 + n, err := r.reader.Read(b) 76 + return n, err 77 + } 78 + 79 + func (r *readWriteCloser) Write(b []byte) (int, error) { 80 + return r.writer.Write(b) 81 + } 82 + 83 + func (r *readWriteCloser) Close() error { 84 + return multierr.Append(r.reader.Close(), r.writer.Close()) 85 + } 86 + 87 + 88 + ``` 89 + 90 + ### `cmd/main.go` 91 + 92 + ```go 93 + package main 94 + 95 + import ( 96 + "go.uber.org/zap" 97 + "yourlsp" 98 + ) 99 + 100 + func main() { 101 + logger, _ := zap.NewDevelopmentConfig().Build() 102 + 103 + // Start the server 104 + yourlsp.StartServer(logger) 105 + } 106 + ``` 107 + 108 + ### `handlers.go` 109 + 110 + That's were we get to the interesting stuff. 111 + 112 + You first define your own `Handler` struct that just embeds the `protocol.Server` struct, so that you can implement all the methods. 113 + 114 + ```go 115 + package yourlsp 116 + 117 + import ( 118 + "context" 119 + "go.lsp.dev/protocol" 120 + "go.uber.org/zap" 121 + ) 122 + 123 + var log *zap.Logger 124 + 125 + type Handler struct { 126 + protocol.Server 127 + } 128 + 129 + func NewHandler(ctx context.Context, server protocol.Server, logger *zap.Logger) (Handler, context.Context, error) { 130 + log = logger 131 + // Do initialization logic here, including 132 + // stuff like setting state variables 133 + // by returning a new context with 134 + // context.WithValue(context, ...) 135 + // instead of just context 136 + return Handler{Server: server}, context, nil 137 + } 138 + ``` 139 + 140 + ## Implementing stuff 141 + 142 + Actually implementing functionnality for your LSP consists in defining a method on 143 + your handler struct that has a particular name, as defined in the 144 + [`protocol.Server` interface](https://pkg.go.dev/go.lsp.dev/protocol#Server) 145 + 146 + ### Telling the clients what feature we support: the `Initialize` method 147 + 148 + All LSP servers must implement the `Initialize` method, that 149 + returns information on the LSP server, and most importantly, the features it supports. 150 + 151 + The signature of the `Initialize` method is: 152 + 153 + ```go 154 + Initialize(ctx context.Context, params *InitializeParams) (result *InitializeResult, err error) 155 + ``` 156 + 157 + Autocomplete and hover (features of Go's LSP server, how meta!) 158 + will help you a lot when implementing this: 159 + 160 + ![](data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4QCuRXhpZgAASUkqAAgAAAAHABIBAwABAAAAAQAAABoBBQABAAAAYgAAABsBBQABAAAAagAAACgBAwABAAAAAgAAADEBAgANAAAAcgAAADIBAgAUAAAAgAAAAGmHBAABAAAAlAAAAAAAAAAsAQAAAQAAACwBAAABAAAAR0lNUCAyLjEwLjM2AAAyMDI0OjA0OjI1IDEzOjU4OjAzAAEAAaADAAEAAAABAAAAAAAAAP/hDM9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDQuNC4wLUV4aXYyIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDplOTE1YWY0ZC1lOGM5LTQ1MDAtOGMyMi0yYmQwNjBhZWI4ZWUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MGU4MjM5NDAtMjhhMS00ZGU5LThmMzktNjY4MDAwOWZmYzQ0IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YTBhMzAwMWYtYWI5My00OTgzLTlhZjMtZWFkZjE0ODk3NzI1IiBkYzpGb3JtYXQ9ImltYWdlL2pwZWciIEdJTVA6QVBJPSIyLjAiIEdJTVA6UGxhdGZvcm09IkxpbnV4IiBHSU1QOlRpbWVTdGFtcD0iMTcxNDA0NjI4NDc4NDkyNiIgR0lNUDpWZXJzaW9uPSIyLjEwLjM2IiB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNDowNDoyNVQxMzo1ODowMyswMjowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjQ6MDQ6MjVUMTM6NTg6MDMrMDI6MDAiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6Y2hhbmdlZD0iLyIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NjFhZTcxNC03YWE3LTRkZWQtYWE1Ny0xZWJiNzUyOWVhYWQiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoTGludXgpIiBzdEV2dDp3aGVuPSIyMDI0LTA0LTI1VDEzOjU4OjA0KzAyOjAwIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+ICsElDQ19QUk9GSUxFAAEBAAACoGxjbXMEQAAAbW50clJHQiBYWVogB+gABAAZAAsANwAXYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1sY21zAAAAAAAAAAAAAAAAAAAAAAAAAAAA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LGzrFo0yUx3apbVENOcTPiTtXPSNOw9Kw+Rr4YoDBpGryjirLUJYw04Sw/M8sWdyW8YS2RsSRjCpzFeoUiUlUjKAv4AL1S+3ST7Yxu6wAfm6y/xvXz93SK56y/8AfrXyJTzhmqZINlazjLm68B3MnGGPs2p17BrjjviywiXwXOS6LLVDNWvgttCTEjZvhqTLl6gkTKVRGBlhnvDylUph5eoWPkoFq1y89e1dIKybKgqqeUqjNG6GUR5aqV5Zut27ZJww8vV2Ey1QQ5ZquK1K27ZIFqZbgMhulj8qO9Ur5SHj3y1VhEKO0qv+t+VF6p9Zx3QevMkRRly9Jf43KETWa4ygMv8A361IXK4bFOyCvYr3LcgUrYiGrWvE3mOYNx7M7u04cnssmvVcZLixg7IyQd5RvlILL4vHlqlt1LMiRicGSjjrRRSDbs46uE550OYdDJQkZExlrdSqOCyPHlbLUsWUQjUiTw1vvbYK8LNK5PHW2A1G5CqfuGybDMLK0e47/HdzTp9lanQ7F4VQsUY6n+r+VF6p9X/ozXgyQrQzzHYlK+iettdNslpJMz79HWjra62utH6HK1eITxssYrV487SbR1ufljLe45ORtHRzxrRCVrENHWjppO5JT2z0daOtHWjrR1o60daOtHWjrR1o60daOtHWjrR1o6nUjOUYbI6SWjrR1o60daOtHWjrR1o60daOtHWjrR1o60daOtHWjrR1o60daOtHWjrR1o60daP+4F6pdTs7hoyaJKTbmD/+sieuP+PRv8/qyJhiLYm++QP77xFSyPCLmqGg9rGNWHCFkfje1GaVbUhLVDtVZ47BWhIt1rbQHMoREBTHbBTKFseOLDhI0IE/Ic03XIRck1yEXIRchFyEXIRcpFyzXJNchFyEXIRchFyEXIRchFyEXIRchFGRIxeZHXIRchFykXIRchFERI2uQilIko7ist5lvMtxtd5lvMt5lvMt5lvMuUu7eVSC8zbyreVbyrkMt5VvKt5VvKt5lvMt5VvKt5lvKt5U8ZuXcVbircVbircVbircVbircVbircVbircVbircVbircVbircVbircVbireVbyreVbyreVbyreVbyreVbyreVbyqeWeE6dru20daOtHX9Vo60daOtHWjrR+o/sO2ynfEwmvB4O+BtsZMQl3ooPK4GBYWwkICUzEpEkUP7whYCbljyv7R2O6gDmr2syH+zayBKBS5E8LlSVp8lUNKlUfKWa8J2LdZshmLNY75o++WTtziEtomVBGQbssuVgzyVisq3cafg7P+xhft8kPtMZywJWnMpRHMANWUCGC87V6qcpRMYBadOYiUZwC+ObdD95bjIgMfUlST+0uLIyDRgGdms1oVjHMcxsYM53oM9qvhhhaOHE0PGtIMsEIiliB73x43YmPjIvjW5QY15ObGisPWr9u34Oz/sYX7fIP7fiH9oshLJKtkpd1asm7omU7aJc8EJh5WEy1rc0+W1DXtktUA5JmoeXhJHyR5yhlmnOGUHM4r4zKvkdlWGZ1l5iGgC84vwL1xO4IRgX5B/b8Q/tPRKKAqxiGt1zdybH2pKxhTTjVq2iyJQNMmPxTgaqO6CrXx9wFWnjSVzVcFGD1q0g2RY48S1MdOrbjRuOKxirFuVfGyE/4Mfv+Qf8AiK/VPJPl6jFQLgbLAsjssj3AVVGTTZFLEApWhwrRk04oNgdhTnEUY2ByP9b9CTiKD2xNVjJpxR7Iq0YEiSLki0/rI/8AclkN8hZDUz2WayPJBmLuIM3eC5e/DoDLRK8bgpQhZGVWbzBa1eFSh3gd8bYpE1darV1q61Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1QPd8dkvBWoSkSkB61jCtZtEy9WEqtSBTRsCfkd7ZFXnZtzDM9x6+OJWuwtGJcaxa2ZOxIoTWrPe4iEy27Vo3HlP+5+mrkWlYLctTv8A6jPKs9m7ZnfYNiyIt6yakNz2HzZ2BYqSsXCwtHldYtl5XjyJVt2rLWgWZxzt8kK2V74hB1eSV/G2zFufUT2RlHHjBVjM9qp3OTHXIOpYqk76vVk1ypTZsSbHT8VkqzcMxkYNqD1MXf8A7ijUn3OOrRZv3vlg+W+Gv7fjdtzVxxCL9uanA9nT4NPgm2prBgVmAYVljGBWaZRDWxbGWxlDaSOxlxstI7obSRaYpG2Mg2a1iXGtjKwUdUOxlDYSGxlsZbGWxbVtW1bVtW1bVtW1bVtW1bVtW1bVtW1XrlfG1f1h+q44rP8A6c/X8sxm9i2LYti2LYti2ILaG+Tdsg2ROW2TLXLWOD/4ydzJnnSIexySy9gQbWatDllrxqUSZosYWM1bDKxmbQivmLHJayN+xi62/g6addP2svbRctcHFuyt4TSsyNEgMlZaBoynGWOMU1qtsqYXIHI5sgMtadTu5WgzPKrv2ZaqXa9GueWPnCdbFSJOtGxKZMDdbuLwSWJ1q4Z2b37WwCNgef8A/iwk7/6O/QF3B51vgH7/AJIIGGpVyww9QcCY6uVExdUqJi6xZlw1I0i46sZWqAbjGwdKwh4EM748IKV/xNXuo0ARADHV60/3T+4+KrWZjFAMD1g2WLQq2HsY+FmfCPSFCtCbVQtIdGsFjVx2YQAOClRrTRa4zPVx1eq7DhEbji8B1hBGWmA43x9WQ5Uq8lGEYv8AgB+75OCTLiIuIi4primuIi4iLimuKa4primuOa4yLjIuMi4prjmuMi4yLjIuOajGcovEjLiIuIi4iKO+aFyFXGRcZEw5s+1bVtW1aLatq2ratqm+luFjuhgY1a3aF3OTjm7MQxtWjnBrHL1MyU5xXrTY4+Ss2MbkonbDntWObytg0CHkS1Us27BQ5K2WFbISvSq2J1sTHJ2a84ZG1ZQ9+z8CP3fgReuf368MeOAYj+a0QVcpWAyAWiGdmdSwZw4+KnKlI5S052xAoinItCdGA6DMTtC1ZtTnH/xzQr2KVaQLdKu1VqFUgJUKoRwpDrsKjFDLSGTydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqKqcdgnycbLYy2MtjLYy2MuNlsZbGXGy42XGy2MtjLYy2MtjLYy42WxlsZCi3HKLfA/x/rB/+sSjGgj0W7auIPaTxEmKLHQjTkCPYWcdKsxaQ+4NVgC9Oi8rb4ycUGiKMSY54RnjpwEWlMSPS1sTxf8Ax8ZPcUfFP8F+j/8AV+LRaftheuX2+t/j/WH+sKyOUp2BjHXKF6r5pptKxrTiWv2B7wyvYsAViVYtg1ysQ1q9Awz5WTsY7TrkvClGxehYqyt1okDkRVmPfYkfwf6O/wBT8CL1y6v9ucjTGaUp9H+O0EdgkoU5SEOnI92NSi461IkePFSK1fG8tQlC28AYw0B9kUDQx0apxUAwsPiqtmVanG61bGuf/wAVxiegV4Axkhiq40ysioga22Mx8HDjYmYGNkXxtReNqLxtReNqLxtReMqLxlReMqLxlReMqLxlReMqLxlReNqLxtReNqLxtReNqLxtReNqLxlReMqLxlReMqLxlReMqLxlReMqLxlReMqLxtRVQDAT8CL1S+gcZxgAbsbo/wBviL7YzhjhVqsSWcrCRKuaG8j2P+Zq9OTXIDNboV6THFTgLHYyhvII2osbbnttWrDQyYAz55VCtjLOMl43J148cxGHXvC7PGZKPJDtJvdx1WMfwA/d8Wq1Wq3Lcy3MtzLcy3MtzLcy1ZarVa/CL1S6/ZRPCcmI0pdH+3xE91myGuwLQrTWLYKqiEEyxHGLwsiKTXrOcRst7NKViEDqc2HAFsFrqc467TnEcPwI/d+AZC9UvohumqcZDN0f4yM3NRkYAuHdlc3p2uTcj3+4lxNJoZiFm3485z030M0bY9Y5Kb6tGNixYltywSk5t04Y0orMalwPai7uVOFmBBYrMx7mDEsEu44MjF/fj934BkL1S+B/jn7j4utYIEUARsU69xdnXZQxVaB51xzI1CtF3qid41Aji9YUovj6shkpVyiJjqpitUBAvah2zGOYyigcbVhRFYpgtKePqlZ6oXNCER/gB+78AyF6pdXbVnrwkq8OEvR/jnLW3Cz3Iwc9e3mTjFdbL2wDI9i5lBZk5bYMhbek2btcRMjYDO3kLVKMsrZ4btjlsgs3i2BZCxIlTJEskr2J06U8jaonhk7RmDycf4Ifu/AMheuX0MOLQGGAur/HP3FxZGQKEAkNTHYK+IimrRazDGxEcdMYqkcTFgnxo7E5YppQfG6wq48VSQq8RGHixjsBx4wGhh4xj4iLoePjH8IP3fgReuX0TIQSrzk8+j/HN/74MjLJKtkp91aPZ72GchwTycImnkxQED9QAM/mhxHZzEh0yZThJLKTJTuZSNSUMwzWaxiyvDvbTWM3xitZiUKRrliUg5jUZsyIKfJDZQsv5LzseV8wOAq1nuP3o/d+BF65ddVwf2RDlGfyy/pYsUSjiOsYhbILPeth7IADq2a1g+MsyXgivCGGIwbOOnYTVrJjloWu0ywrLRfGlkDgNDIdlZKUVW3kCWcdM7GoEvl7PZcvY6wWT455ZV69qWQJiLRwxxE+3b96P3fgX/UfA9TO96fo7/0Y5OQJpTJ8pPdPIbpCyDOa1f7c0MhXmOdoIyPYE0RX6x3jerTifK1gVCZQLQBZieMslUg48lXJZa0GRoZGMhByoyO1wDjhYEVWb0AtcyAKA+6BytbA5f34vd+BF6pfbqKDxVeDwH8pPdCUMeOtWYli4btsn2xA12bgt2Ik2wx5trVXnWu1ZlRzhsgsvYanYxzwsCBOIgAlzl3tKzjJeNyVZowkMo618XZ4vJf3ItTn3uOqtH8AP3fgReqXXXRmtDd4HgX5ie6xZFXYFodpjWBVotJpNOcRxTEjKTyaLckeMJY2BOAUiluV68+oDwsKMoyl+EH7vwDoXql9E/7gaz6n6N8ZPdRkYAYj3ZWzt8taJDZfZ7Iq5LJLlS0SBIVxzpYsIfGVyysUqu62UPcZB61WRLgCzcmOMQ9rlkKjYaVQ4omm4B8IvwQ/d+AdC9Uvp1WvRvv8R32EPTpWSCkAMD9tZjOFQrlHTPPjqOXUCFGqB2BSaEa1CI49vBDeuNNMEZNGqxta+o6tAKiCjAce1G3ONc41zjXONc41zjXONc41zjXONc41zjXONc41zjXONc41zjXONc41zjXONc41zDXMNcw1zDXMNcw1zDXMNcw1zDXMNc40F9xPwDoXql1dtW4IyVf/AI2ekfv8jxaUYxaLdIjjB1OESRaLM0BxFH6BU64GnUAQfSVMBCKFKuKfR4tLrsju2Mz9NrMzNtZSHGb9IihCXHHenZpN+OdC9cvo4o7BhgJ+kfv/ACGSF65fbpJ9IjuSZq5HefSP3/kMkL1S+3SUd0e1eTCC8JdG+/8AIXQvVL7dHfRhWXm4C80Fom+/8hdC9Uus2eUK4eOdVptDo38idC9Uvt1jZHJDPAr9G/kToXql9uhPWKcIqtNjT/kovXL7fxP/xAA1EQABAwIEBAUEAQMEAwAAAAABAAIRAwQSFCFSECAxQRMwQFBgIjJRYUIFMzQjcYGRQ3CQ/9oACAEDAQE/AfkcfLJ9kHwaFCj2QfBR8sHy2fbHUntExwiURHONeQBZik5/htOqleKMJceyxtwYwsQiU6qxhglPqFhAjqj+13jgNeYc/dShr6Aa6BA8TpxHVDUoe1ftPdiqsTAWAf7lAkiR1VbHi/1OqPRdeVnU8nQIPpm5e38hU2No4T+U00qlOoxqa+i2gWKq+nVptATao8JjvwVcVGeKzEnGnUufp7KgxprS52qiEOTsV2Q5ux4jQ8e4R6c3cJ3QI8D1CPVDQghdFOnB3TgV0Kb1Q4HROEtK6n2YBO1Q1WI8OqKKjhHCOBX6X7WFBoQb2hFsdlA/CgcD6qOY+SNPaYR0QXVAod12UaImQnHQcJUqV+OB4OMNWOse6/1RTL8Sd4oa36uqx1NG4kNBB9vlT7KbcZYV8X/HPKIXZTzHXiLemFgbhwp1NrhhKFFjYjso+KlxIjmp0g8EkxCZbNeMWJeCwU9TqhR/JRt2TBcqlAM+0zwnjOkqCtOy/ClDVBDpK7TwJgrugZU8DxaPq1U+zypUqfZWvwtLfyqdZrG4XNlNqtiHNlZgRq1GticHR0RrTOihRwlRpCJK07L8KEF0Q6Qu3AiSu6GnE8ZUfDKdBmCFVADobyjrHOdF3R5IU6TyjrzfrmOi/S7oan2OFCj17KsMwyqhaRpyjrPMUV3R5Y5Rpzd55jqu8qdUNDPsx9QTCFxTPdU7ilUdhaUyo41izt6OPVx72/VpAVL7g2n/AMqgJmoeqp/5J88orsV+/fJU+qGnFtLDUNTnjyD8Fj0g9C77TCkP/vJuJjgAIB+A9PTx6LqIT7dzowuVOkKZk/AY5D6IejOglCqahIaYVKv9XhnX98J+Bn0Q9H2hVqbxENleE57w+p/0oHwQ8o5e6POPLPkm41ikJKbWxOh3VT7+OTseXunaAI8ndd45hyP6BFfhd+TuAj2R68h4u+1EiidDEpjQ9wcwdFChQoUKFHvIUcDyRzRzQo4DTkOvNHOeR7qbfuQe132/ARqY4Hr5PePVni77SmzS1GsoNPjN1lA/AB18qEdSjqu6j1B4nonW1KoZeEBhEN6L/b48VKlSpUqVPI4kDRYg7+8ml7Hgdj5k8kqeEqVPpJUqVKnllD2w+XVqMpt+tVH0tIqwFTq2zDOOVmaA/ks5QH8kb2gP5LO2+5C9oblnbfcs7Q3LOW+5Z223LO229G9t9yztvuQvaHZyztvuRvbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7kL2huTKjaurfaz5f8AWdaQaE63FCC/6lUtvoNQaR2VJjMAqP7p1mex6ptkW0vEevCb4WJqfalmpcnUW+I1s6FOoNbWDMUhG3xVCBoAhZu/kYQtmta1rhqU+0wDFiRtCBMp1u4akqpQ+sBidZxBxLJmTronswmAVChQoUKFChQoUKFChQoUKFChQoUKFChQoUKFChRw/oX+L5cewHy/63pSaVTrMcTrCNZtNhp0x17qi9uDw6nZC8+kAaQnVR4fh6pnhsohpKzFJ0z3T69MYS09E59I1A5OrUQXCeqfd0zonXstAYnuFRoaU6swyfyqtw2tSaz8J1akCCmXLWSAqlzjxT3UR09i1X9C/wAX2s+W+myoIeEaFv8A+NkplGhiwOZBWUobUbOhtWUoT9qydDasnb7FkqG1ZK32rJW2xZO32rJW+1ZO32LJW+1ZW32JtnQH8VlKG1ZO32rJ0NqyVDaslQ2rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZOhtTKTaQhvT2s+W/7SpFKBMSmNaXhzB0U/DJUqVPJPlnzHvYOqFRj/sPxUeUfLJgFDEwj8rA41Rqo+KDyj5cSn27HuxOTW4BDVp2+KDyj5Z+0kIuxf3Roml7HADp8VHlHy+ohPt3O0aYCZRFMydSh8UHpYhmNCqahgGEyqcWB3xUelmWYFVY8QIlCmXuDn/9cD8oCNeTFMSm1sToOnA/KHfaifBP0mJTGhzg5g0HA/KAnvpt6ptRr/t4H4zKnzj9hTZp/soMPjDVFH46fMdQY8y5RhEN808khdp490dOIM8Br8iLGkyQv0hSY0yGqSpK68e8rvP/AKsHyiFChRwjhCj/AODp+Gf/xAA3EQABAwEGBAUDAwEJAAAAAAABAAIRAxASEyExUhQgMEEEQFBRYCIyYQUzQiMkNHBxgJCRscH/2gAIAQIBAT8B/wBZsfLJ+YQeY5WRaeTBeGXzoirkmFBvXStE1j3C8AgMp6Ry5Nbe02Hq9rTy9l2ldkckcjFkIDkPohJQKlOQ1WhC90CpsPZXfqlGyATCunDYnuNSU7EbUY4q5UxRKax7HORYb72hMa/DcAv6jaX+arTcIAyRjtznNa/+LvYMkMnNhDUI5tiw5hZ2tycFoLBpCNgzvBDWzVdihoE/RFHUInNN7rsu0KMk7ROEld12TSnZWu0TlHow1sGfJqp5JWaK/Nmfkhbn0dDPkD6W7Ndwic0PuTRmU3uveyLOxQyQsfIGS+sIudICdeOSBLih8VvfVHJNo1QOaGU8+lhEiFdAR7JzGuiVEGfjjRKDVd91dV1EIKLJ72SoXvZ3R1KjNCwBH7ZREItzhEeyAmwJ2mSIRy+F62jJAxqpHdXkTbKmLNFkVK97O8o6lTmhlYCj9sImSFOco/hAxYDnaTPwr8rxn6n4riTnELwdR9Wg19TXlPvzBartK7co1XbkOnRi0ZrtKJylOyErvHoUqfP914j9PbU8QahZK8HT8RQMPMjlOYjmGqGS7Qoy5PcIL2RGUIr2R0sNnZAZEL8WZar35OyIlsJ2YhHWfXcgJKDwUHXtFdy60o29ugfIT6/VzYQmujMBN0lfx6xQQ6+vp8KPNj82Xsutrohl5DT4SfIgZrDI/a1TrpYc8/gM+lMrsbJc1PrF4jshlyz60fOnq94RptpxIlVKQi+3/i2FChR8YjqflU6jYJJhF7WtuNtlSpUqfik2T26wowJqZJ1K6283MWwoUKOU+qlOGS9uUL+LkBLlKGiNsWHULvZobHZQjrYO6ahoio7o5rsguxKGhUZc7Mys6naYTnENh5zU2SpUqVKn1godCeaVKnklTaO/kmMe7RGmWfcPgJyErseaEUFGiHZBQjyzbKlSpU2z1Bm4IxVy0hE/0jlAR+AHSOaYzUolDJTlCDoCGSlHqzySpU9CCm16jBDU43zL0Pgs+RPJFsKFdV1XVChRytA7q7H7SeWFhnVZWQoUKFdUfDzzSpQ6bQ8/am3hJNOVUFd2QZAQ8NX9lw9bauGq+y4WttXD1dq4ar7Lh621YFUfxWFV2rBrbFg1dqwKu1cPV2o+Hqj+KwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdq4ertT2OYYd6W3p/pf7hKFc+IksN1U/E/UGHOe6q1H4lxiHjPcJ3iZq4TP+kXObWuu0TPEtqmLsJlR1x7o0TatR1K9dhMrkU2lwklHxjezUfEucTc0ATPGAmLq4ppdAGqHiWvgNVKvDC5643Ulq4tsfbmmPvCYslSpUqVKlSpUqVKlSpUqVKlSpUqVKlSpUqVKlTZ+rf3jpyp8+3p/pX7hCd4d7IbdvQmUHPcKj+3ZVabxUvsR8HnORTaZbUvp4quq3gMkyi9t2OyZRq/WHZSgKzWXYTaNa63SWpnhXtMlU/B3TNTNU2Fji73TKL2kToDKp0TSqF/uhRqmRl7p3hn1Myqfhy26tVChR56Fov1Y/wBoj0sa9NtR1P7VfrDOo+Eale7fa+QuIq7lxFbcuIrbka9XcseruRr1ezlj1Ny4iqP5LiKu5cTV3LiKu5cTW3LiK25Y9XcuIq7lxNbcuIrH+S4ivuWPX3LHr7lxFbcuIr7lj19yx6+5Y9fcuIrblxFbcuIrblxFbcuIrblxFbcuIrblxFbcuIr7lj19yx6+5Y9fcsevuWPX3LHr7lj19yx6+5cRW3LiK25cRW3LiK25cRW3LiK25cRW3LiK25cTW3Jz3VDLvSx026oA1cyJhPebsPOaFk+uwo6UWwoUKFCjqDqMpvOiNIs+74qekOmMyE+H5KYpkIafFD0h1GV6lMENReXmXLX4oekOnElBlz9pOuuaZ16kKFCiw/BD0h0ymV2NmRKfWL23QIClSpUqVKlSpUqVKlSpU/BT0h04lGi2mASJVSiIvjKyFChQoUWwo+KDp3uypPbnJhOeA0tagp5p+LjplYP0/XknU4bebmPj46Y1X7uomETDYec/j46jGPdojTLPu8ifjIEuRIqIuGE4AKZ8gfjTar2CApJMnyJ91+VB5jaM0eYKfjIcRkDYXuIglRzfj/C2FH+w9Pxs+QNg+Gf/xABHEAACAQIDAwcICAUEAgEFAQABAgMAEQQSIRMxMiJBUWFxkeEQFCM0QoGSwQUgMFBScqGxM0Bgk9EkYvDxFUOCRFNzosLS/9oACAEBAAY/Av5dOz6j9lJoql04koi9+Uf3/qZOyvf9Q5R1b6OS9j0kn+pk7K9/lY9AriIZluM66fpTpn2gA1Nuf+pk7PqEHnrWXULlUhd1WupH+1bf1MnZ9QnoonKDpfkvc0UdcrAX0N/6mTs+ow6RSkR5CiW1PFTvs9kCN3X/AFMnZ9WynXfuplB1Xf8AU2YPK7NO/wCoLDMx0Ap4weWlsw7fJEyvdZWyppvP/B5ZS7G0Rs9lJt5VUjRva6/IYVzbQc2Q+RpWVo1W98w6KL2LWF7LvNBt1+Y0kbHlvu0NRplY5vaA0Hb5WsOSNL9NNI5sii5P1myG+Vsp7fI0khyou8+RdqxBbcFUsf0pXQhlOoI8kiKbtGbN1aX8jOxsqi5NBhuOo+0eMHlpbMO3ytI98q9AvSSIbowuDSmYsAd1kZv2pWF7HXUWqOPZuc9+UBovbUiBrsnFUkeRxktyiOSeymdtw6BehNHd0IuLDU0j5WTML5X0I8mSVmDWzGyM1h7hQINwfqEgZj0XoMNx/mU7K9/le2+1KIWztk1DHQGpAwtoNQb+U1i8pdmO0GrE85p8rB1yxg2/PTx2C4cSLmXm4f8AqvQ/w71Ce0fpX0pOV9NEiFG/DofJgJNrJIm2fLDYW3Pu0vWIVJIfSYN8yxX4uhrnU76aKOMR4cxxNKFFgRn1PdX02MHkMNtNmbjgrBvtYThcr8qZSyZtOsddYaOa2JQYY2LKR7WmhqFRzOoF/JjFEiklALA9tYNwAgeAlz07qxkMeV8pcqo16bVKF2YitbdpmrCjPHs8p5T6rfo7a+jpXbkq1mbo5JrCM7ori+pOtrV/61eP4maoyZUE92LoEOf3m9S2vf2su+19axwwaK6hb2TVc1ubrqP/AMbk2wk9Dshpn5/031Dst1tb7789+u9P5/bJsl2N+03t17qxGb17bR7C/Fl5O7q31twgExx5XPbW2Y3FfSMMKLHjvS5Ai8rLzViW20LQbG0iYeMj58VY3ztNpjl5UmcXI/D+nzq+GyDDobejGlJLO2ziaEqHO696nZ0MchgXzQEWN9eHrvWKxGRfOFxkY2ltRwf5rGAJGmJYjY8nXg5vfegzzQ6QnbokbA9ec3rGR4hC8xi9Esg/9fs0PNsgCAGTIOe1Ajca/wBYEt5tyc45781B52jjxMcUVtrcyHnOXWsdMVDsJVKv0chTpWfPFHI+1DoAc+42zG/ZVlvDcFC0Y1tsQf31qVIRCwyLeXD3CntHTREfF1VgB9IZMmST+LqL8msMuITOowxsHHNn0/SsUHv5yFTzW/F7vfUxkSNJ3yGM5dSdb2qDY+v+k2/TuPF77VL5pfzvzf0uS+brv11jBgcvmuzW2Tdn1v8AKobODso1D/7TakzyqmaSMi53gOL1O7KkyjBhkbfztrX0VJLLGuIycpmOtilYjOkaTuVMXJ1NxravpIQtGZGi4IzqzDNf31kjkhIkh4YQRrfnud9bOd0yxjLKH3DXnrDK5glawjXaahG6+ysBGk0HmSxsA8q5kLXHQd++tjFiFynCIrO8Rva7c1/3o8uKOSCWNRnvtMotrv0G/mrFTlM0q4g2Yb+amIeJWlhfOiXzA9Dm++sVGp83QrOCyDcAy1OsKw5RlO0w98h91DtP7/zKdn2meNg6/iU1mdgi9LG1WbyCPMM5Fwt9frh7cobur64U7zu8gX2j5CRz/wAiQdx8m2t6TLlv1fXSUjlpcA9v8tlO6rDd/Mp2fZfTM2GjSKWLhZV3cgGpcM+JaW8IcOVW6nUdFL6QpZrchVF+Xboo+mLsvKzOqnN7rWrLA0gKxmQiONT35uavo3EZQJJImuR2CsPyrq8TixUaWtz76xBTFPLBAhZ1ZVtm5l3ViGmEjQvhWYmRUABtzWN7dtTSYLDNgxdISllvmzb7XtuphaYWkHLIj2mW2vVvrCptmkDbQPmTKbi2+vorEScqbbsue2trPWbzh1XYg5Aq237t3kdugXp5Dny7ItmcLYG2lqzjEXZslrqNLmootuSZHttMouBaoYtvblurOFGtq5bZnW3K3eSS4tZQO3+jE7K9/wBafCFLqtirDm05/LLZXO1FnzSsb/rTEqblclwxBtUkCodk+9Gdm/c1sCr7O97bVte3WlDoxyjLfaNe3QddaijKHLFwWc3FCdg+0HOJWH6XppFV8zEk+lYg36r2qRRFyXXJqxOnQOin2kebOoVtd9t1bPZm2bPfOc1+m++kjCMoQ3BV2Ddeu+kw2z9EhuozG49++oy6XKCw5RGnQemtp/ty1amsnELak7vlWUjk6VlcXHbSZEtkvalF7KDcjp8m0Dc1rW/oxOz6jHoFHV8xS4BUfpRV2e++zgD9qZgLM3EenyN2fUjVEzs5tq1qVWjVXtmIeS1Js1BhaMNq1OcnDKI9/Tb/ADTHYcgFlvn6KQPGEzpnWzX/AOb6zg213ioEjjEs0jZDmYoBoT0dVQomGBmd2jKmSwUr12qy4TNIse1kUyWyj57jUaRRo2HeLPq9jvGu6rbD/T7XY7XPrm7K2hw2XCm5EmfXTpFLG8Rw22i2kbhs2ndv1FRvI2d9QW6danlhlMLxoXuADfTrrDwIvncroXLyvk3W6B119HTKrLHK4vaS1tNx01rYrGjQbPNq+u/fu/SihDBdjcWk5J1/DXmxRELZsuWUMwt0jmqfO+3kSR0BawvbsoMiZ5QzC0sv+4+1b5VFJJFFG0rlUzT2Sw581qibz0YGMxvc3QgsGtvNQ7RY9psRI+0lEZ9w562McSMOTxS5W15wvPUTbPjnMPFusTr+lY+Mvt2jeyZ7L7INtB10suKVV0vmDXv7rUDblNqf6BTs+oR01rLuXKpAtas7vmNraC3lbs+pE97ZCTb3VtI5MjZcput6R45MjBcpOW96OWQCMyCQrl6Lf4p478RY37TUJzfw48m7fu/xQF7WN916wow8oGSUvnK3tySN16hfa5nR3kY5eItTPFPsc8eye6Zrj/OpqFsPPsTHHsuUmbk1fb/6cy7bZZNc3bWy85zYYAgR5LHXpNRtJPthFHs4xky2Gn+KePbB01yDJbLrf30+HWZULrlZ2S+nfUEskod40ZNFte5HX1VhYY8UirAc3Kivc69dJNHiBE+TI/o7315uihifOECWy5Nlra/TesO3nKlIL5V2VjY9JvWI2eIGSQllVo75SffrU2GOLT0hJziK1rm59qoTt4xLCeQVh5NrWta9Azy7Q7MpfLl573raLigsjIEkYxXvbnGulC842N1OUx8oW6GpLYgbBZjME2fKub6Xv19FTTCb0UurRZee1t/urIZ88I4FyWtr01lZbW/oFOz6hPRRYqMoF+S96Oi6c6tfymnAdkCnQVG7aMRr5D2fUVvNrYZiQJc2unOR0VIwl0jXO3JO7p66d85UJq2dGU9WhFRSLeSNpNmTY3U2vutevOIXG+wZ0Yj32rDJswY5WyZs2oNid3urD4cEDOCTdW17DuqXC5XDJbXI1v2rFRZlCxW9kg++9MRLoq5yWUjk9Ou+n2bHkcQZSp7jQZdQaRJC2ZtQFQt+1LeW+Zc/JQtyenShG0vKNuYkC+65qXDZXDIbA5GsdOyjGsnKF/ZIGm/Xnp2E1lRcxLKRp01NLhvStHvR7p+4qOS1s6hrVHBDCJZGUvynyi1KJyYny5ili2XttWyaTl6X5JsL7taQhuN9mNPa/wCCiFl3AnhNjbfY8/uqSWImXKuYLlK5ui16c4yLzfLaxU5w1+jSkYOzZyQAsbE6b9LVG7S8l9VyqTTRObLkVxIASDf9qTD3XKULWKtc9h3ViIGjCbMAhg17g3/xWMLG6QnQLG2b36a+6tuFdbLmIyH9NNfdUWIxDry9PRq2pvzDfSy7QlWbKLISb9m+jLHZg7gBiOoVD+Qfeydn1GHSKA2eTKmXU76LsmzGW1vKa2hi2lx00wYl42OlvZ8h7PqearAAFzenLCxGttKnkkhmCjCMjNJMH1792lSTbAwnIiZdoMzWa5seajL5rJycQJgryhmIyZd96njGGZpsQ7NkDLyLnn1rCTLh22kUucwllvuI37uesJIuDkdYrliGXnHbUrpBtYpgnLDABLb/AN6xd8K6RzRbPaF10tm6+umEuDkZlhKemxNwx6BroKmLrKsVhkSeQO1+fXuoFhlPRWGMUBnOxfkggc69NRbQCww4Qm/Pcm1YuNIc8eJZG2uYcm1t/dUzCDaRTZfSZgMthUOFaLZrCJBtswOe4IH70cOcNsmVFsWccog/tWMleLYbZAioSCdL66dtIrwFJI1C5Sw5VhSA4HzpbX0YBkagZYpcSzwqjFMRkFxe+bXXf11ieTZWyZdehakc2821kT87WB/510sb4eTPHEyB3xF1Jtbkrf8AxSQKAZlRND0i3+K9XaJQ6nIsgDsOfUHTmrD5sLIWMkrKplDMQQOe9RjZSSAq90hmyZWLX111qSLza5lwywXzjkEXFz381YdlwrvFGrIZAy89uvqp3EWeKVVGcMOTa/8AmsU0mEeJJbEMWXmHUaEL4U3hSws45fZ41AjYaRWglLlRKFLA5txB66Q+aS5toXsuJ9IOu5PzoNiD6VZNbm+nXUP5B97J2V7/AC67qNienhNZVJzDXVSKljv6NR/z9/I3ZW+uKuKjyuauKuKuKuL9K3+TO7ZU6herxk6aG62rNI1h2VGVJcPuKrW+ilm0HFbSms18psaPEtjblDfW+gXa1zYWW/7VmR7ru3VvrfTLZhb2iNDSoW5Tbhat9b631vrfW+t9b631vrfW+t9b631vrfW+ibm56DQUHQVxfpXF+lcX6VxVvrfXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFW+t9cVcVcVcVcVcVcX8wnZQ7fLIBvymoxG7PyPSAm9qaY75NfdU3Unb/wBdnh5G7KHlPZ9fCiRwi583K6hWZlAhmkLXkNgdLC9YMBnMYXUBilrnmpMzPwcnOxYkk0Zt2fFWU9Fv+qxCZvSFzyOq1SsirtuUWCjUC+gqJRJpdVkYezffrUaqmSJ5bqBpoF1qFcMyJlLvYi4GtrUJWnYZuSzLpvNzUqNypRZYl/CPxVPh7WTaCVz1WGnfWNyn012bL0W0p2wl5HENs666ne36VIEYKGK3yXI06+c07SyMys1nzXO/mpVXRQLCkjJ5T8I+8TZVte3F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFcK/F4Vwr8XhXAvxeFcC/F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFAZV0/3eFcC/F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFPNZTmFrZt27/FcC/F4URkX4vCty/F4VuXv8K3L3+FXsvf4VuXv8K3L3+Fbl7/Cty9/hW5e/wrcvf4Vaw769nv8ACllKqXXcc1ez3+Fez317Pf4V7PxV7Pf4V7Pf4V7PxV7PxV7Pf4V7Pf4V7Pf4V7PxV7Pf4V7Pf4V7Pf4UJCFzAWHK8K9nv8K9nv8ACvZ7/CvZ7/CvZ7/CvZ7/AAr2e/wr2e/wr2e/wr2e/wAK9nv8K9nv8K3L3+Fbl7/Cty9/hW5e/wAK3L3+Fbl7/Cty9/hW5e/wrcvf4VuXv8K3L3+Fbl7/AArcvf4VuXv8K3L3+Fbl7/Cty9/hW5e/wrcvf4VuXv8ACty9/hW5e/woqU3G2+m9kit9b631vrfXFXFXFXFXF5T+Zv3rEF2ASI/hNxUjjM2QXIykUspJUHTVTvpTnPKNhZTeogjIzSfifLSrI2SQ2uu+3vrZl+Vu3ad9ZFa7bt1Yj0hVVORQANNN9HObsrst+w/zozHLc2rZ35dr2pfyn5UkmOWUrKLxxILof8++oMibHDSsU2LNm9km/VupJdrMjbSNPRyldC4B/emw0AzCJQ3pFklZib6XHzqKARrecBoi3MPav/znrGZ5VMQYcnKfw82tYDEbWWTaxEyB3LX5Gbn7KO2WNnaISR5LjnAsfiFR7bYnNKiAoDuJ6KmWMRZYi3GDqAqH/wDqtj6MSrmzMIncGxsNBup3QRxiPDLOySKb3N9N/VT2lTZbFGyFT0t176HnD4hZGkbI2a8TjWw6tKayptoklaQHmy7vlRWURPIyIyZQQLlsuup6aO32ZPMY76+77kl/Mal932p/M371jR5uy7ZeSSR0dtS23NDkB69agvAymJuESWJ0tzVCwjKDMzNmfMage2i3uejSpMqO97ZbSWA7RenGxurvmzZhpSK8b2Ric5l5PuFYiLMFEbE2PMtSy/8A3JGN+kX0/nWRFVi3J5W61NHfaJv2p4vfS9h+VRCDEbONGzBXXNl0tp31tGLTS/jkN/8AqgjXtmVtOo3+VGQTTQlhlbZNbNRmZn2l1Ktfgt0VtxJIhNsyKeS1umkDSyzrGmRFkIsBu5hTq0kst02YztwjqpkfETSEkNnY6gjdbmqTPLK7SZszMRfUAdH+2i6TTROSxLIw1ud26phmf0sQhNzzC/8AmkcSyxlVCnIeIDdetptpXykukbtyQf3rGvOFR8UMrbI7ha1XYtwBNOo3v2015ZJS2t5D9yS/mNS+77U/mb9/ulew/KiYJEgjHtGxe3ZzVHCW85ickLiFW2tr26Du5qjw+HyBypctILgDT/NATRPtFTPLs9RGKdDFMcpIzgC2m/n66y7KVU2hiEptlLD335qxvnBS2HbiRbaZQ3zqQjDzLII9oqOByh07623m8kchXRbLc6c2tYOQiSd5lGUKozNpfdzUmzhmlLKWsoGljY3uad8K0OxXDrP6RTrfN16bqyiCZiMudlGi3A/zWz2clixRZLclmG8fpWHyKxMwLDTdbfesRNNtORKVyFBmHQunbU+fDyLlZVSO3LYn30noZjIzmPZWGYNa/T0UHysl/ZcWI+4r7NO6nCqFFhu9/wBqfzH9/ulew/KsJE2EXFLCbK621W3Pf3VHLiGUbPVY49w0tvqOeDIXClCshIFtP8VLleNzPEIpWbS2/Ud9TBXj5QktfrVR8qKuFSBcU8ut855R5qxq3QYfFDf7Q5OX5VJmgwsJMezzQLyjWzZYCyKFTlHXt0rBi0BmwugGc5XFrdGlCRmU8h81vxM+aoziY4ptnh0iGl9Re/71iZGIyyFSPcAKjRmj83ilaUG/KN82lv8A5ViZbhgf4Sn2b6n9axCuIEzyiZSrk6gg23dVSSSLBcyK6xliymwI1066wx2cEOzkZykI04be/wC5H/KPn9qfzH96yR4mGRvwq4J8hj2vKzZNFNs3RfyApICCSBzXtvpjG2YKxQ9vkG2mjivuzsBesykMp5x5Gkc2RRcmjOW9EFz5rc1Bl1BF/I+zbNkYo2nPWZmCjpNNCG9Iq5iOr7JnY2VRcmvOM3ocufNbmoMuoOo8maWVIh0u1qDIwdTuKmsmYZ9+W+v2C9h+VZMOpxDjfY2Ue+lhlVoZ21C7wew0sOuYoX/531E5lEe04Q7WNOdoLIeVrurZbZdr+DNr3U+WZZCgzFUYE1Z0kw902gM1rFe+mdZ0KLvYNoKUpMrhuGzXvSZWRy0mTWQDt/6otLKF0zBc2p7KVDMqu2oQnld1bMToX/CH1rfW+t9b/uR+wfP7SWTfkUtUTObuRckVBBCM/wBIZhlyjlKc2+9Oj4jYsJrBGkPKj6ltb33pXjllu2PyHlnUZjSz+cS+vmDIW5OXsr6LnnmkC7WVS+c6am1WmxEseGOLlWSRW1FuEX6KwEMmInSN9tZlbKzqOE19EtaOeXZy/wAfcawuD85lRNk8hELZRfNSjbzed+c5Hw/siP8A656xUTTS3wMUl3zHlE8P6VImInmQeaK0SqTaQ21v00E8483sI9jmkKqRbXS3KrGyvPK2SdkWPNybdlT3xWRUxbjKzlMw6AwpHtKvA2rcq1+esXLBiZRssGrI6ScW/f00A2IEBtGYs0hVW6dLcqoX2+VLG8IkKM/YRRXbean0ZhEkhXt0sc1fScqYmfaxyusaq+mljRxqM6QzTqOIjIgHvtrz19Hw+esUkeXlwSE8m2gvasAkmJlw8DZw5RrHdpX0fFLiZ0VkkOZWylwDpekG3m8786yPh/ZEfZ2c9YjDGWX/AEaSu0mbivwUyYjETL/o1MSqdJDbW/TSxjEDD2jj2OeQqp6dLcqjG8rYjMzfw5D6MW51+dYiTFBOVGow7zJmj6xWGOJdsDhWV7NhgUub6V9GzYt5EkeCw5RF2voDWF9PNJOxfzmJ+FB2c3117D8qw0W2kwjaJIOY6bx4VDJFAY40bOZZeJ+SR28/PUZO0CbFtUcrrcdFOkmHkdpMKI05BNjytD0bxUMeXNFNkaVugp/nTurJJ5xmGIaTSNcm82Oa3zr+DaQLJbTXW9MzNJNJ5vkVGA0vzCw6qQpDmyuhZFFyVBqbFRQvmXEbWOMrYkZQp076w8BWSSTMjHIhbc4LbvfWLY4eSTbYcCP0RJvytOreKdJPOOVIjDZxAruHtEad9Ts8dm84dgSOvf8Az3/juX5xsPON3Jy58n7/AGT9g+f2ljqK2a6IpIUdAv8AzEEzE5or29/8ivYflQMr2vuG8n3VeN81t45xQ20qxX/G1qiu38Q2Xr+pmVgwPOp8uXMM2+16DKcyncRz0YhIplGpQHUeQrFPHIw3hHB8rSyHKi7z5AynMp1BB3/y74jEybKFBdmte1eefR8ySvN9GCOKRLOoPnGbX3A1HgxlkWbE4jLdcrRwqmaP/wDr7F/yj5/au3QWP61gMZMqbMxTSIsd72tWJ9GEBg2iyCNwB1XO+uTFDtUwTS5lDdPbWJTFRQsDhhOAt7W6DX0uHKSQRwgiMg/h7afYRwiPDQozq17m4vYViniSLYYdUY5r5rNUTRICjcchUtkHYKxbJs32WHWZSAbEmsU6pCYcPkzA3zHMKxTqkRw2HlVSDfOQbf5oyZI/NhiPNyPbvuvWMnUxRJHmQFb5tGpNqVMltcg0/m1/KflUEy7LEyYiwLubMrWvY1h3222xCk7TILKq5T87b6hkSSJZlVhll3FdL19FzR3gDOF2atybW3Vis2LeKdXQQxrJa62Xm5+eln20pY4xoyC5y5bnS1QBpH2eKiY6zZjzc1uT7qYxzPtrk2MhNrP+lYtFlZRfDgZW4bvrWGgilkZJHY8ucrzbs2+kyzQl9i3Kb0otn6dKiVZNmsWEjKkz7IDTfu1rDs5GZsM2vScy1h5BO5lfFSRspkJFrtzc24Vh58iRJDE5Vg3KbQ9WlLMMTNmkWMOzPfeRc9VYnJNI8eGkSTlPm0tyhfsrE4gyyKzZpUyuQQPZ/SlhMzxx7Ev6NrXN6QRyiPZYaPKWxGzC8neRbWsY7TyjZyrlVXOXgUnT+WKNuNO+AlighbXZShzbsyqdKgxs2IgkWMMMsQfnUj2lHT9i/wCUfP7VvzN+9bRIAG15zz1IixnZuMpXObW6uiiWj12ex3+z0Vyor+j2W88PRTO0fKdMjanUUheAEooUancOnpqfNH/GAD677bqCyqWA6GI/alzwA2TZixtpU88qLIGK7MZjpYc4rEYidRIWkDJqdNBvFecbIbW+a/X026aeEJ6J75l7d9K6Jy1TZhixPJ/m1/KflWdkOfpVst+21BI0CL0KKAliSW27Ot6Bkw0UmUWGZAdKW7uIxb0S2ym1AbNeLNu5+ms64eJXvfMEF6kYRIDJxHLxUQmHiQGx5KAbt1ZZUWVOhhcUMqKpAsLDcKS8ER2eiXTh7KUyRo5Q3XOu40WSMbQknaFeVqb76yBAE3ZRurIVBS1sttKMaRIkZ3oFsKVJII5EXhVlBApYzhojGvCmQWFR3gjOz4boOT2UxCgFtTbn+4X/ACj5/amzi1/w1xr8PjXGvw+Nca/D41xr8PjXGvw+Nca/D41xr8PjXGPh8a41+HxrjX4fGuNfh8a41+HxrjX4fGuNfh8a4l+HxrjX4fGuNfh8a41+HxrjX4fGuNfh8aBzLr/t8aHKXX/b41xr8PjXGvw+Nca/D40/KQKvPbxonkheY5d9cS/D41xr8PjWrC3UPs8vQl/+d1Rvj0lKyi6RIt0N+bTf76w+VNhhpGKbFmzeyT7t1RwmWVE2LN6OQrrdaCrZ2SO5Jidi516N26pBCsQjjKhhJe50B92+sSudihiR7FiQDdv8VlbZsrIzLlR9LdZ4vdXncuwytEHG8WOnfWPyuqSQjjEbJcW6DqDWJ2phlcIWIyEKR0b/AJ1HBhhGG2W0Jk1HZTywiJETDLiMrqSTe+l79VYko+J842ibNUz5LZV3+z01IfQ7BJmjtrmsOeoXyxf6iMvCADobaA02xChNiGu2vKNYRYkjR3fZDflGp6+qniZlMrTsM2zZwAFXcBrz1hVjVI2lWQttEOmUgbtKXaAB7ahTp9xP+UfP7iXspe36mS3JPNXJv72J+2V5GVAVIuxtUQw/0lFHGjZgjkNbS2mvXW0OLjll/G8oJ8KWQfSOxdVK+jkXd/wUNnj9gMoQiOYcoddGUY/Z5iC6pMLNahiPPVRrZSFkWzDr76jI+kSVjUoimVbKvRS4U4tMiqFB2gvpu/apw+O223XK+eVaeB/pRiH3ttUva1rbqS/0mc6grtBKlyDzVKoxUarJCIbbQaAX/wA1IVxUd5CCbyD8IHyp8uKj5Tl9ZBzmkZcaGCCyI0oyoOqpY4cYse0cuWEi3BoQ/wDkswVsyEyJdD1Vf/yPpc5fa7VM2u/q5qhfzxWaNCl2lBve3+K9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMP9wVIY3WRbDVTfp+4k7KH8nAP91DbRtNIeYaL389PKBsHQXMJN9P3FNLNnNnCgK1ubspgJEVS+VM5tm/5ejPNmPKy2R1uK2gyls9r3NxputUh2iPszZgvN+lYWPMiLIg5QJIP6VstqjJm33PTz1iEGSFIjqWY2GtPnljjCkLck63F6RZhIZGmMXIbda3+azGaMXzZQx1NqL50zBQxS/KANTZiBsiB29lQxR5eVGDmBNu3WoisyHMrMz35ItT+kjyKufPfS17UVzButTp9xz/n+4k7P5SDn5W73ViJBiWwxlBup5jfmtTxwqxzizSSb+ndTQzFxdwwKLfmPXXFNCAxIEXOOutnrm2he9GItLtM2bhFv3rF6NaYgjTdrWGMRcvELWZbX1J6azhpQrEltBWJsZNnPrfLqpvfppgqsBmUrfoC2pxC7x5pXc620Nqgj1zRg3771I6httJEIzfh5v8VBHYqw/iHp5h+lQMu0bLHsmBUDSx139dIkbSgBWUvaxFzfTWp7tLJnQKGk7b/ck/5/uJOz6pUxDRb8lr0UdcptfQ3+2VJEWSyk2YXophsHFiGG85BlHvpYJsFFDOdy5AQ3YaF/o3aKbcqNEtcm1tTRL4WOFgLsjqt1Hu7K2VsLnNrLybmtjs8MZR/67LmqL/QCLarmjaSJbN3U5jTDuF4soBtTytgFhRVzAzIqgiopp4sLBnF9ctu/nqFkgwz7Vgq5sov2dNLh5Y4EdhfUDSkw4wuHOYFjw5h7qMIjw+2G9LC9StGmHm2alyqBWNqIkwS4bk5xtUUXHuppVTDGNdC+lhSbOOB84JWwGtRlIMM+d8guVHPY++jtYYAwUsFyi5oRbPDCU+wVXNWyCYUyfhst69Vh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2K9Wh/tivVofgFerQ/wBsV6tD/bFerQ/2xXq0P9sV6tD/AGxXq0PwCvVofgFerQ/AK9Wh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2KkEaLGLDRRbp+4k7K9/1JGt6Rjz/pTvstkCO8/bL+U/KsLEZZMG2iSg7jpvHdzdNQvDh2jjjbOZZeJ+SR28/PShQWO1jNgP94qAREZsRfDv05Trf3WPfX0jho4XaR5Y8pVeSOSvPzWrJIMTmGIaTSJcm8m+a3R11g4EilSSGBgxkQrY5CvP21NnTEORhymSaFVW/Ru13VF6IoMq5ljQk37BX0QuxlXY3DZ4yLcitmYZWfzosAkZawE1/wBqwmK2UrpkcELGS2uW2nurDHYz8kMCRExGtueoI9g4lTEvI0pXk25XP7xWDUROGGHkBAXUXWnZ3kxEpiCBWA0FxzAVHIkOZVlV3VF1IFPi4IH2i4gyRxWsxUix0/WsPhwkkrBozeOMtuYFjp76x7HDyucRANl6InWx06vfUiyeccrECRdnEuXmsc1vnUzPFZvOHcFh17/uB/yj5/cSdle/6lhe/QVIplBuV3/bL+U/KhtWtfcN5PYKJifNbQ9IpdtMkObdna1685RULsP4o5x20xAsX1J6adEdWdOJQd31LswFzbXp8gW4zHcOmkhLekcEqLeQsxsoFyTzUdjMktt+Q38qmQ5QzBRpzmmdiAq6k9H3E/5R8/uJOyvf9SWVbZjyVvUoK9Fze/2yH/aflUMy7PESYiyl3NmVrXt4Vh5NttcQCRJsxZUXKd/vtvqO9v40W/8AOKkCzyouYKAkhAHo2b9xWJxHnMm3TZZV2htqi83XWI3AnDpYdOr0Z/OLFsO7t/qSSTbmW3J16KmEeIla+dPSS7uVH3bzrRjaYhDNELJiC7C515W+pY3llyQ4yNQTK2gOTnv10sWHlf0cTPfznIO/UmvoyeWV1z4ZixEpUexWGIkOV0e65+Sd3NUEu3dpJMTJG8Rbk5eVze4VA22lcz4aTPnctfk0+KIXDEQCNTE9zvGu6o0WebZzTKpZpNQOo00xleXD4edojdr3Qj/NYZpJnE4kjLcsje4uOvfX0lmlkUQwAqqtYHQ7+mnYSBMs4QXxFtNNMlueppmnmuuIcAZ+Ta9rW+4H/KPn9xJ2V7/5NOw/Ks7Jyt/JYressahF6BS7aCObLuzre1C0EYtuso6LU0uyUuSCCRw2AGndSSMitInCxGoqQiBLyaPpxUfRrrcbunf+woKkMaLfNlVQNempAY1O01bTipEbDxsqcAKjk0I2gjKDcuXQVtHw8TyfjK60ZREglO98utKuyTKosBl3CsjKCnQaKSKHQ7wa2QjXYj2LaUNtDHNbdnW9qUPhoXCiyhkGgrbbFNr+PLrRyqFubm33A/5R8/uJOyvf5bVOUCxi2QHdRQpGDlvdBb7YL0Jeo3x6S5ZRdIkW6Hq0+dYfKmww0jFNizZvZJ927dWHE8s0cOzc+iLb7r+GhHlvLHEGYPG7Fj0abqWM5o4REHGSYqdTvtb9KChLxbYxZRE999r5t1Pi5Vh2IV2yrcHSpWyKzZMwOydFBuBbXfv5qlhbZPMGjCsAQvK6RfqqGN9ltZGPLWN2FgPwjWoWyLDmzZpHiYjQ6ac19+tPeSfOcKjRjClyuY5uj3b6kT0IWLJmzDU3AJqNyI/N5JmiWwOYWvr+lQR5VzZW23UQcunvrFNkj23nGTk3ClmI139dYgSsryGREWysVGhPDv5qhRURZHlMed42AsFvcA60Nrl2nPk3fcb/AJR8/uJOyvf9TLbk1yRv6Tf7ZenKflUQw+I2ccbZgrrmy6W0762hLTTfjc1mflejaPLzEG3+KBGInU5AjFW4x10Z7nOUCe6tossqrmL7INybmvN9WjII166aJp55FIAGdtwqViWDPl1Hs5d1qT/UT7RGzCbMMw/S1RquJxCFb8oPcm/Terx3Ho1it1C/+alkF7ykE91qEmeTKGMixX5IJ3n9TWJlS4efiPR2VKrYieQSHNyraN07uqnzTzPIzB9ppcEdGlQkySSNGxbM5ve4t9yP+UfP7iTsr3+XoqU7QsEXnA30wZm3Xsy2+2A6FNEwSrBGBfMbF7dnNUcBbzmN7hZ1FtbX7Du5qjgw5iW8Ze8i35wOnrpXaKRjkzybMXCc3yNGNYpZctgzotwt6zkPbamLdzitY5Yha95ALcObp6KdnhmjsucKyi7C9tNeusU6YeQTQi5je2nQd+6sLtV81SQsDtiBaw7aSYGynEZNpEAwy58o3nn6RUg2MsuzXO+QDkj/AIKmR4nESyKolA0FwLX95rEwyZCqBWTILaG+/ur6QMrOscFmsyjQW5rb6e2HlSRQrZZANQWtzGppI8PJtYmAaNwLj9awyxRiBpc19uua1uw1CGhaSaTaaQ7jlax31cxzFQod2C8APTT6NmWUQ5ee5/7qaJi6qsYIUqLdt6iOyePDmNpM8i7wLbqlaSGaIxqGKOBcjvprwyQkc0g/nX/KPn9xJ2UO36joTfNe5ou75ja2gt9sp6VNYSJsIuKWEizi2q2571HJiGVRHqkUe4aW3++o54Fja0ZQiRrc4PR1U8cTRPtoRHIzX033I+KpNgYjFKVJz3utgB791GJdlstuZsxJB1vpa3XQRnS1rG3/AOHJUibHCQuVC5ohqdfCsdZgBiIgg6jr/moJJxENmW5KXOlqMEQiN5zLdmI/9mYc1SmMHaYmHZuiRFxfXn0tvrEpdQZZEca9AX//ADTzJszFIqhrnUWvu76xm2WIQ4hMhyOSw0PVUhcnREXM8Rj3Pf5VjgGUbdVC35iOmsO2MjgZULXQa83XWHdAqRRxumUdZX/FYoRGPZ4pAjlibr2dO+kxOYCELcp/vAIB7jTyFIdiybL+Ic1r791RwSbJUihaIMCSW3WJFuqp02OFw7PYDY9vT/PP+UfP7iMf/jPpF8umZILg9mtJF/4/HQZvbmhyqPf9TJs14b8fhTKyBcvQ1/tk7D8qKYaM4hhvI0Ue/wDxSwTJsJ23Le4bsNJEIZZnZS1o7bveaifaool4Q5sTSxvKiu25WbU1faJa+Xi56yx4iKRuhXBp2XERFU4jn4afEbVHjT8DA69FRtF/qtocqiAhr299LoUci+zfRq1xUI0vrIKeDaqsqtlyswBbQHTvoxCVDKN6BtaxTmORPNycyta+69WkRsNyM/pbAZe29NIJozGu9swsKXJKjh+Gzb6jymN875P4gHPY26eymaWVQQpbJmGZrdFCLbR7X8GblVshNGZfwBtfuB/yj5/cSdlDt+o7MOWxrlcZ1b7ZOw/KsNFtpMI+iSrzHTePDpqGSHDtHGjZjLLxyckjt5+eopTFK67Fl9HGW1uvRUyS4Z3ebDZY7JmytdtOreKxCzYZ52lZMrCPMNwG/to4fYTF/OmkuIzlykk76ULCUdky3y2/+nI/enIXElhEEyyQhBxDTQa19KqkfHCoXTedaUthcSFDaMqEMpt0b6w8uvnWdo0EmjFG0F//ANT7qskLNGrKAQOYRN86aI4eTbSvC6vk0FgnPzWsagjMDrLHiXkeXJoRyuf3ivpWLZSEzAshC6H0YG/3VI7vJiJWiCZWA0FxpoKidIc4WVWcItyQKfFQQvnXEGSOPLYlSMu79awuHCSyspQ3SMtuYE1j74eVziIBsiIienuqRHGIF8QJBs41y20sc1vnU7PHyvOHcXHXv+4H/KPn9xJ2UO3y3reRpflKRXJO7q+2TsPyobVh1DeT7qvG4a28c4q80ixDddzagQbjpq7sEHX5GUMCy7xfd21e9gOes9xlte4pJEN0YXBoSmNTKNA9tRQSWeKJzqFdwD9RsjZsjZD20VBBK7wDu+5X/KPn9xJ2UO36mIk33BUdlNaTajKOV9sn5T8qw8qiLEyYjQu5sym17GsO+322IUnabMWVVyn5231BtLZdg+XN2resRscQ8EUGFEkAjYgHi169wrGtJJIpiaNVjDWG5Tu76Eu0C/6hk5WI5gSMuS3RU+I2TqcTE8is1rMQbrb/AONPbFyytJBmK7b9eqo0EznNGpb0pzDT9K+iUed1Eo5bh7M3J6ajR55sgjlsVkIzWksDpv0qwSOVpsDFmeQ2tfPru1qdTiJhsdmFyvYcI5qgl28hklxMkTxZjbLyub3Clgd3vhAyyEniN7Lf3C9YtFmk0xATMXJZVJUbz21PFFK5zzRqzPLY8J9qsNDJOcpncejnLG2S9i3bQTO0lvac3P3G/wCUfP7iXsr3/wAmjHQWOvdQd7Zt91fLfurKhjQdAtQEoikG/l2NIXWF8nDcA2oPIkEjjczAVtckO1Pt2F6TWPkcO7k0xjEUebfksL0ybODI+rLYWajGIsOIzqVCrY0MuzWwy6dHRXI2a6BeT0dFMwKBm3npozARCU6FwBm76c+j5fFu5VNkhw6ZhY2VRcUyCOAI3EoAsaQIIlCcIFuT2V/EXvrjXvr+IvfXGvfXGvfXGvfXGvfXGvfXGvfXGvfXGvfXGvfXGvfX8Re+uNe+uNe+v4i99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99MRqLD5/cSdle/y2qZo1CC2QW07aIEeyGXcf5AqRcHmoAAADmHlbKoXMbmw3nyFWUMp3g1YDSgqKEUbgo+qwjgjjDcWVQL0sbQxtGvCpUWHl2jQxtJ+IqL+TMkEaN0qgv5dRfn18uawzbr0TYXO89PltbToqw08illDFd1xu8rMqgFt5A31nyjPa2a2vksRf7wTsr3/Uy25Nckd5v/Uydle/ymr5i/o81ittaKFs+l72t/Uy9le/ylemgHfMAuUWFqzM2drW3f1MvZXv8t6GZMoK5hY3rNa2v9TL2V7/ACkDfalIi2dlsdRyqOZCmpOv9TL2V7/qHlc19RRynUdIt/Uy9le/ytz6UpL7VRHyhbhovmUta2VTuH9TJ2V7/wClP//EACsQAQACAgECBAYDAQEBAAAAAAEAESExQVFhEHGh8DCBkbHB8SBA0VDhYP/aAAgBAQABPyHwPE+Kfx9J+00eZ95UqWQNI/tFHYlBSa3bncyqqdvOX/ev4Fy/4GZXx34RD9D9pqeT7+KCU0jGBRTZ4O3SDgGR/KP/AMDcv+jfhfx9w3PSftNTyePW1GHjSHHmPm5h0MRQFW1j/jnxj4L4X8O5fw7+IeHM9J+01PM+/iOpCmFHIKBlWd51LxrcH+p/458Y+C/1z4dSpXjzPSftNTzPv4gzoXARrQXlJxAc9or6f33+dfHPhv8ASFSpXxL/AI8z0n7TU8z7+Pe0IMlI0UsVrjExMGNhuznHn/KpUqVKleFSpUqVKlSpUqVKlSpUqVKiSpUqVK/tVKlSpUqVKlSpUqVKlSpX9fmek/aanmffxWlrR1l+NjZF+mYVFqp0v+DJabHLI2cJfjvrcmrlrnGLxw8/C9YDWwXjWNvp4kTg2fLzQ4rmDYMqWp6i30eCiPajPqlQzOjYRNcq6QavpQvyJgJqvkIyw0cT86ricqX0D1ceD7zGwFKW2N0S4d1a6CGw/gzlLsTgbPCoOrpuvp4GN4NADbQcd4JEzRJ4VhwGnJH2J4Wgk3MBcQ+zE6nwTPjZbBUayr7PgzFALb39DMrzVWqxjxVpZzpg1uYS2C5V5OZ57s1XVxfEvzEBWrLJoClj29XNcy+CtWxfQz9I8eWQfIaZpXlP5onErNWNliWqAYdwGwLEyJ/ClG9q5oPLLl/1+Z6T9pqeT7y5cCDY/tHDNm4cKvLmHNVrknOdS/AUs04w1DswU2FUbl33eVnWRxtkjEVvtcY3WVV18r48p2tu7wB15foTHTUSC7SazRgh5Rk+bH4ClTgDYmF6JmFLuCJXmvtEcUENK6qA1wLpGF1k4fOBAjlHWEso1AvOwLcPV7TiEz9AyhaD+Qoo7frKo41dM2BN06RQdLrpcMai68gGgkGP5T0qc/PETaFqgbr1goq9xoX/AIevlBlQgluzE9kerwnC4fyuXt9zSCpGvk+cN6jlQxX21lFnv7/u5cxvejvg/SzFnE5388z1fncFvhnKws6VxOkbpNL+TUE+jgO+FVdXeFCtEhpGR2y1zDZ8oYLzXXcL6CHQWvNI5A+uOAeRdSigVGwhB4G0S/cDKItw05GdaRySjKRY9jmBirlKkce977w60aEN198ecUOysY5s23uq36vWCcoAM0IqBm7w6bhth05oC3f1mTh113SbLOBR2mBIwCG2jnodYZjpbC3CX64hlUduK6TMBuU4Ty5lomLmNnzwqUfD2l057Xl6wugrZOjpze4B5Jl9J9hOZPPbGvzbzupaEwXyV3rKJIFD4DY95btCzFCjyJUECNDgf7ME+Swoq3pazNL0dcMOt2/WCDcgTHZWeFyo6qiHdkXViMzOHtQFpXxjqKm+ilsbhbVnzQf+kbApmtmUhWO6ISEUN5ocKcvNCOq9ZjAenbTDAX5+0iFeDwaZf69loRg4Lcd2B4wRPnldJzXUmyaVPK1TPs/r8z0n7TQ8z7/w58F8Nxlwkn3QEfnER/V1B03KKWb3WfPwVU8QrHLU3Ok9PHcUlipPDmE+7MP1KJQcRIxtco3Klo+QAfZ4Y73fPiVXjx8MdaKYFAMBxKUO43lddJbrLv8AjbDKy0Uv7HhXhUqVK/hXhXhUrwqVKlRXlewahGFDAS001/Yf0P2jweZ9/gGpZ8yoxxjirzD9QLGKUFKwbH5xGG3qwFWMDhwRzaktmXT5DIXgzMYxzkvCl0Os7m35z5S2r6ZZp/kCTWm15zxM9S8ELBC4Muekp84iSreUX6IDua/PTuWKXdkspGw3iA3SnyYwQFTvaA0JbqriUQuDHAeh9IoBmeAv3Kc987hENLXp1ohqKqA5DA3Xn2jtLAsqA64zqIMU9ZIU1XHSWNPKANdlEonDEyb3U0OsbmETstz4XL8C/wDDr+Vy5cvxr+x6T9pqeTxvwvJ1iegium19XgwG9Vmba0VfSs3tQZlNZ3X1sLEre4sHjLPlZXyhpe95K7sn5zBc0r17syHZudOpB7F3adpxhsCNYpSsGK4hNoGqtldn0jlrKK57scPKo8uQIUV6Ox53ChfIha25VjcpVEvIei7c5iqRWQr1y6nmPDKctdg4YMMsz5wHa7gIjDiEHGrFAuC3DyqAboUD2bPtArgbKQj2TJDz3NXe/OImxQnyZhqJSgN7ti7+Uf8A4v0n7TV5n38UD2iRC0JMrfJ+ZggZpDqQF+i+Qr8S56p9oa8SUvkomFvT0iu2qshaYazqGumyNKZ1vOrm/HmK2WvYlfjHOWSXVax6zrSWGYw4KcJezUjkavNXKfnRguN2+iW+aXcRyWfKUWKaMpKGmz2JU33jjoXyW4vPWPAEnyocdW1v5QnEBJacqcX2WLZENrThoCyskS26wA0ZxjiBZlYQTTRxASHQbux+k1MruANKwWrvkhsPWjwvf833nVOFKDa0w27txDdAC5aV8vnLyLM7ZRdPxHSsr3QMTRauSdSHyxnEG2eAE1Acm3FYixLq6C7wxli67kKIFsgoBwMAevDNBMX0Dw+nvFMCx0GwfqKfnCK3NGba0B6w+rgef71/yf7vpP2mrzPvHwFHQplQuVrEtWd7xE5MfhHrHw9Y+0IPh2SobtH5hQrYzcu+2czNl6CjH0cS2VUXbXK/sm1OkasfzNz7q9Tb25iBF1Fo6a+cfYWMB3KLLQlh64Tlc4r5y7voNhaTJXIzKrM4C+GslON58ou8JPKDz1ZevnCSokFDhbmr4CX3yNkXbLbh08plxKzF1k31do7Amc0I0Api98uPcDtVfVCxICrPbXGdQW4FgJy5d3XcChjzMoU6uN1LcSq3NnIe/oxKDo4FldHbExlQLVkfNacVGk/YAvI/36Qmk3gK0gVqqxKg9w71cxnudoaV5Sq05irroyhD16geitwOK4RnQ2z7OIdRIgl3tmzfTiZFrc2I54+I+J/Qv4FSpX9S/wCHpP2jw8z7+Is6Czp2TF5JxEWpwZ8pd+GPlsLTBi1B/wAlBD035/gaEL19mjhV1mS7UT8qzDuXK5bAEDjALb0igpzHc90wY7y26IIFumgs53zALdbH0UZ+aGpirmhioyw2MsbAGQc7cAxu6ZYJqoj3dqFJjZKQ7MA2xQprVx0eiwYcNA1FspWMo5VR9FW4OrJlhi+adBx9pWs4nSAFF92VT+TcZOWh9cy5PmWh0EVTsz6EAMdZk7kogBuw6vOQxrGZ37UXVlxo2jHBDo25gyZN6F6ggd3EdIAij4GVKLvmW5RBvaFsquLfSN4cimOxCvqRDGCyCtYBYtFkybKw8QIsvapaPbmnoRYrvMbXbBQaVAsDvHJmCEbuihgyvMEBJbAENNzOS71NocOUAuCuzMqzNKDKvB7nImF9NNx2PWmxUbbQKUyx06yxwhUVsqZFdInmwVayYZ7z0j/A/tXLly5cuXLly5cv4npP2mh5n38WN2hKKmtwzx08uYzFZcmd9PH07Ai6pgGb5zLMgmKAEJ9t+fC4S3CiKItUZu02cMIbL0xHBaugBvUGFciBYFaw1bMLG4f5F3kw71HUwN2wWQfSLHUEK9e7m5yg2TqUWdRr0I5IMhy44EKk4CJzEG004haNPVwLG1lbxxiVQP7wdC0dzLKKZvdRKHNW9bI9sTKWgJnPkuE1JKBUWi3146xeylQgobHLrgmUGsBhAM9bZxKtNGQI0VeVba8opt4cwyZH/iMtsWsAuxagGUAezC0+o3AMF5F0go8qhpbYPKwj7nMpYEb0D6CmSpXCsVZFX5UlNEBsNqr845zoDe8KmXUaYfcmtoNsVyzHgWiTFqUpr5ahsT0KQNkyYO0wPTBvPTei3EtDvkXTbLt01BcFM2sGS2XPzNmzzYKzpDtW9WseldpKyz1YvK0jZsw85V6yAIRixhaoubHtr+Vy5cuXLly5cuXLly5fx34B8P0n7TQ8n38UI4cpmTQ0yHbGflG1YYY35hEpwIUZx817MGOs1MPNQM1W86j+jPZIntHHnPeJ7xPaJ56DvflATbctFxGVX5GY/eFQiHuJZN9PRur2Agj11YV3ehPdINog4b3wPviCXpj5ofzFmrDTw5O09wjjxUO18gvE2xW1KTFJuXf+J7ZMNRGgeU9oFU39ZW/KYtam3H0mP/M9wPBv6c90J7BPbJ7hPdJlvbynuE9ontE908H7RFCGywvjrHpsKD+EZnvE9sntk94nvE94nvE94nvE94nvE94nvE94nvE94nvE9ontk98nvE94nvE94nvE94nvEP4PwD4foP2mvkeJM2gPpBlg7K0r6czl1/4kV9gL4a5+buyvg9enoIz5z0z8+J4EIwKpKoyV6pHDBMXgGmc1dc4hhU2QjggpKz8ow7XRkUXfT1iaAYJaOau61+c2XNhoAv5yuHu0Rs+QYmHPNIBkPs7XLVvM9QdLT1gMlZPTaWcXzNxuLNrVfsHeC0lNjdA4cbbe0xAiHTgfMPSF+Gai6gvTVwPEuwUyPY2+Uzsr3yBdTcSDpLg4fgY7waqIL0Ert3YHNb+K/FuXLly5cuXLly/C5cuXLly5cuV4CcEQVZpqP3OP3uP3OP3OP3OP3OP3OP2OP2+D/wB/H7HH7PH7PH7PH7PH7PH7PH7PH7PH7vF7+gXeCDq3vH7nH7nH7PH7vD/7eLiqhceh9T26T9nikDZW0Vq9dH7HH7HAD2QN4/Y4/Y4P/Rx+xx+xx+5xSHei2dNdu87MwF6qz9q7sp4Mq+Pr/wCTs/Xj2V/k7J+eHoze+v8AIdH63+TsfXjsfXjtzdv63+TtfXjs/XjszJouS2B3Hb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vD/7uP3uP3uP3uP3uP3uP3uP3uP3uP3vwLftcftcftcftcftcftcftcftcftcftcftcZtKL2IqgW6SeT+U9sntkr9c9sntE9ontE9ontHj89+TEjkLoBC82Z+Vy90vrs62XXeXBXgN7AS35EStgwoSbKq7JuAwqIdX5laiDnMAbwgqYbrizoujheSWq2oFgpunTE6weJDbrnyjgFQirsDHGv6z4ngeCKYArq3RBUCi08HEPsOYo7I1vlhjKry9oR0dLIw6a7Y1ntDQZEBaAHuzH45kwOSrRm24Q3aBiyTeziq+iHnJ6y7FsTecZ7XGjSPSisZU3w6xwpkgC7o85MeUYsHS6DkuTzjPyOxRtju1nsQd4qdKSWtuqxF/pTzb0rfhlAR5ZU6PK3XTGJgjeGgqvVewbNwvpijWc5cqvK5bIkChUyKENzEu9jgFcpfv4VKlSpUqVKlSpUqMqVKlSpUqVKleNSpUqVKlSpU9q6z1XxXnP8ARKs3qDxCKn0ex1f6JS5pRiuqVjfXMMZMI1lCrt+sDRc8rbCUa+nVtmw35wrPVcBCx5sqUuKGdVNvfobYmQEarAb8rWBuXpAKU+QfGf4VK/keB4ZaKjMranPlN7LFcnVdXZ6Y4mXvsxw6m9korGqWG4Y7gweXA8okAAXezHysQZIRCocXjG3JW5igo8uEx5tvrbGuvI00cL9ekbQS4EWqjjFsIOkgWeQoHIN5cEqGzF6aVTPbzuXXr5CrVNCooZ84i5y0HXMRyW211G3nPLKVzEl6xh3dVuUBZaKkc6tt2sOFS4enKb3moxtatqrA00QikXrXnBVAAH0/s18P2rrPVfl8X3DrgYrwf6r4ni+L4H8sPdZgo17V7lwPdvymqSkIFZ5jP0Qt3vwBAAJl+yChw1xyy1vWHVuIY1YUxCuWAS+Hwm4ImORcSzQVbA3ja6+yWhoFu26CyxpllCLlFDeUrzSUFHRI2OVYd4V9I+U1dDI4gsV5enVdNOllXgMFsheb+QgAi/TmaM3y44mFk7Sz3HDR5zObUCZAC6Ohdxx4r3QX2dXca81OgYG6dV3UEL/eAPj1KlSpUqV8VEmXanMtYCo1z8Afx996oa+CfFqJKlfxqVEleB/H27rASVoFBlH7FmJbzW+RVlbwugmX+8glWIOTs5g6tuO0zIM4eGtTCmC54jji8CDMVQGDCqXN3qWPwt3fXSvNubOnNl2rijt6yhhHDAYVaY4B85WJFVcitzXyf8bao5ewdjUzWo+F7izWH0lTjybDKfSULPdbi1KK5XxqE+93kom/GLffFRSwRNVnjjr9I6uTYlRIeVYmfvWiqjxlq3Goa/4fuPX4S/HD2ucE/wDiLA+GdoG67GtFRxuXHpPJKqDnE0SiKUdmfDN91fLVsH5YDYYEuPdtUBbKs11Zwu63qP5hD1PDuEYFHZ6x6LtW0X5yxsSryaM64fgLiEtbJUugyxU+5HG7qIJTs6ngOVcAA/WE0i7QYQooosh1r4FHusxeYQL5j/Et7RDYFTRN0b9HtLA1Q8UIRTwtjN8osp0HXPdPTZBK8K8WPqirv2kg7XAorAXAFsRyb6zRgS3zHiDWEWLuVW/lH0QVyt1S9p80W1DQCvYLywqSQDEMLcw4mu8XO4luqdx9Z3Ev1l+sv1Zfqy/Vl+rL9WX6sv1Zfqy/Vl+rL9WX6sv1Zfqy/Vl+rL9WX6sv1Zfqy/Vl+rLdWW6sv1Zfqy/Vl+rL9WX6sv1Zfqy/Vjv2efiGALCDzRcGC0NQq5a4gnsJ59twKuEdBCzpWVf1IQHX1im13vPWXS1bydKijYUpNBfF69NSvcRID5kQjkQpULO8twt2eJrNDnEReQEdLR0MwpWnYc9zVeaHlFH3XLreay+krGsWT0WWvlBU92a5NLLNmXEL1Pjrg/cxr6KDIVmCcR4ozgXbnr8rgbqzBQstFebiQION5NmXEG1D5J6MvaWh0BwiCKErsy4hmyzQ4BXdxH4gSrSLYZS2DpGMaLIgKMKnWpd0IdKOSd+ZgwYirfur5zeksnNc4VoMbaaBZGzeaF+hAZquxd/Tb6weSlotGhi4pSoTkrAgNK6oghC64K6Wl3MXKAJ176TId40JZ0NWh3KU5lVlBzsV8yqrfgfx9+6w/wC/bTE7vEyhnq6xuYLTiWfN0iJRh2m1RAP6ggXI70tjQIQGsjL7bSsmAeclzOEKyzUorgg4lepmku6KgsA5H0g69z0lVRuukoaEox4rJeX0gGeln0yhrl3hHhrYnIKy6lSsBqSUMroKydEPyuWd2AfLmX/cq5Xj5P60vfkmvP4PtfX4gEATCPMED2pBAeNcV8q/j5z3meeu8q/DU1/M8EwzSEuaaU3KSpUqVKlSvBUqV/Gg+64KBZzL7DLFISq0J0RyeTEEJUUF7ZnfHYKKl48mV7zuQu5gJpJYHrmXTuMejHSurq66QEE4qsECSYZS6pv5w603IURPpKdWHc+savSQFo+UQLzUoPDkgOE8aYUlZWVlZWVlZWVlZWVlZWVlZWVgLLIqjrRMrDF7SyxqdbT5WQG2wTThVA3biFi5WU7yneU7yneU7yneexO/iDcq0KYzspkbYVUWlvL5R/EfrRcS1NiRpWwQgoMI593cWMzxsa239IqmkE5aBw79e0+2SfpTjrcQqNjYF1urjiwaHAwuX5w0DzGEvnWI4ya0mDhuuXco4aYF0zVkHLVMm9vI3xEEYF4y94x5zCbGoLytfAL8FSvBU1/Bly5cGX8Ie55gfLFxSxC7CnGKgkiGPFQ16i4ZF5nU9bGjP3h1WUZatDCWcxLaEJaxr1b9pdIVXhttdOLmMGOqcGgHT7EotWCQ0qC9WYT/ADWbCp0xVxwOAfwawtMLU77iCXUZWQxfaFsUBSrMFuG+neNW9gGjhY1FYOXDdqgkRyWOskYpTnfBFoF5Vwu9qXWJsXYKd2nIJaeajLVf5CjyBrVsU4wr8YbNh01mHRXupbZoN9ekYljEApOCNv8A5/WB2yREvzxz5RM74Aff9S133AJN7pblQgZYvVcxURb/AJ+49fiDc9h3SgvtMwGwC1UFoXbQuBfoiNgns383ruGJUbcW96Mss2ILHVIPTmWjEKh0AvTvcpBpU0V8zHymj0Z91FwYLFaYdGH7xaxekEcA585rO4dQuAux6zObc416TzQHtqRUdvVFfFpaWusvXwNeNy5cuWTExH+ASofwT+PsHWCp1rVeiX84OD4KnpBIWgK9y4xqs6gca1HE9yhcs4vg0kowERK87+bvOCujW6684OGqr35uscMCFoq00cOoufG6/wBBmxYob6EIrlKDDg6PlLZKAHvFxWNODcRhrNTCJcLTpUTpljyHSpbWKiTrYTyIxOGBK1GAbaN5JWOYklwDRQ0YYIqJLRtVW9cB9P69fC956/EVeIUxbEFNW31n7JH7JH7RH7ZH7JH7JH7ZH7dH7RFv+iP3iP3CP3CP3CP2+P2mP2OP3OP3OP3uK59Bq0OD65H7HH7HH7HDZ3CrvNbjHGzSq/kvUP8A08fucEF/RS/eVlJSUlZSVlZXvK94oDS282HHBLqazkVeSCDZ4zTa9Mai4qfwIhac7dw7j1qUKvFYZesHkp9tbnoOhhylW4CUHWkpMxxBUxiA3uKO0KC7wHfLjyzMhHMqL4Q7jMwFL5IXDM1uHXUCWiwBSbznOuZe5eogdQK76lXqvqKVBwym+8qIKELETK6vtXzhsXPIC2Tm+1TBhOVsqG9AZO5kigj2i3rWWli4vIlzXi9TGYxxrXSJdU3ec5Ok4I7MB5p/hcuXLly5cuXLly5cuXLly5f8rly5fj7T1+INnhX8WVKj8T0f7T3Xl/Bd81dt3ud9Sv8AQZXg/Dw3pPNJRnzY5yN1VRUxljJMVbr6aF15CoM64c9Iux6JSWIs67SzbeXJTmV8oSXpS88BhIHizTQVD6kWCIWgpGL6d8SoJm18beeEJ31FSkHFViZKXuuqzgCuhuC2A2N0sVWOl94CmBjGgV3zj72gDWD8gw2Xd82x+UWpZxVsHy5uXOaRM6XjFUTHwGagt0K5d3uEURgAYAGsMOJTXKWWJVveE9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsj8wQ4GmL8nxKvE7M7frO36zt+s7frO36zs+s7frO36zs+s7PrOzO36zt+s7frO36zt+s7frOz6zt+s7frNK4/aCtWbP6bUnfPyjIwoXW9OS7FTFZm/iFnmG5g9glsm8rpLqoNk8JoeiGGCgFRzTl8pTEq7tgqVxdzETlrd+t0+koREObCLmw4qpSAVGoHRhvyjiKFhrBdW57TaoIg6FUOEmCmT6qyqm8xl4wRLaPFcRKIBVgqUrufWYISrfPX0FygpyJLDeIrWpzrYACC9X6TYEHOu8hi99ppR9Yv+H6Z9vh3g78D+dfArxrw9F+01eZ4H8ag+GMrYX6keV0dpAqvm3HsIKZFlDhk7sqkahoHI6xIX24MQAuHG+8K7e4T1D/ACZh3TmVVXn84uUrnAWblsfVWRkbZzqcpflF5ALzzmyZiKKg40bfWfhzLO8zET1ZMAw9mDAqPdawzCsyegKybu2/vjL4ampZvgSmjfIgCMs9HrAoFkViw8nWDCq9Fwcun8qlSpXw6lSpX8alSpUqV4+gfb4h8N/g/wA/RftNTzIeFrUC8XiDFH7GGjeYREweB9PHT4ZaDQRkz94gtkAG719C3tBhOuMGWgz6PaZtsboUGA7T6zbZpZEvJDbTKAac7AJRzdmohARon0bgFXqBDeLNYzmF81W9m9NQnTLS2sihxuBLi2L1quBMh+gELltsdNxJFcbglDebbx5MbsWtFFV1o5+kcoHhRfJBSOrKC2VxzG22rtJyb6k09FXG266QZCXHUNp9SJ9zIl4HUdDLHtArXluL3qKMjZ6QjcaUrq7xPcH4nuz8T3Z+J7s/E90fieyPxPZH4nsj8T2R+J7I/E9kfieyPxPZH4nur8T3R+J7s/E92fie7PxPdH4nur8T2V+J7K/E9kfiezPxPZn4nsz8T2Z+J7M/E9mfiezPxPdH4iJytMXyx8Q+Ex/nfiT0n7TU8kPGksY0sdB6THIAimxzjz+Me29Yuu1kVDu8TL/6IiwP1bem+kyEbk4HfQv5QKogDwl8iB06C+9T05MzAEPqaltqVVZZqoTfTOpAaXnh0mIhAlYaAVjhuIAwipYGi1/yFAg27dzk68wXNMjZDgx0Xvia2ugWy2xtuXmAzxSmAkzm/wAifHVuqv8AIgsHFml73OajWKEAevSGygIykMGWr12gFSoqF2l5r2lztjInijXL6whjtD6ZBWYt+aAWxMhgpFhVVy+sJIXPnYB8v5H9r3Hr8NSVlZTrO5O5O5O5O5O5O5O9KykpLly5cuXLg3PSftNTyQlRaW8dC5jNrekfMnFiTp8a916wrilrVdjK+UIoFRSJ0RyPZmfdYr96l95hgHaEXj7iEXVS5UBfyAiBcwC+c41MIkq/nDQkCurTQfV8FQIFVyCrxvk+sogWENhviuZ5QNjWoBzOkR0afTx2tQRyUGIINlTgG2cdpWfivwD4fuPX/gt56TNTyQ8RSVdwwMfeDOGmGZznUPDX4bmdFz3jJJxqlic2FPCtQtwPg6B2+YvEv61XwJmc4mbUDs584KkLdTuTOmy8S/m5TFtUoa3jZ26Fj5HeWbBkGgAi3gdd9JhfC/UL0AJXrNnH8LRvI1alcQjkMXBTVtUGcMYu2rTLho5vrXaBgmA6DByrncuBEQQMTiUPf+wWVzXqJsFart1jlLhNbWaVr1j2mHCob5S0OeeIttGOgaXqlQfOP4gjMuWcARTxEsqT7SKOqqz6TPj9Rq9EUd7titFqWFdFXr3qP87ly/F+AfD9x6/8FvPSZqeSHien8Nfh+z9ZJvL2bh3pL2/WDyzQ0E5xDEzVdX5EKHBeAr8KkL5YG4gYYMIvcL+iLDKSUDYdjF5dDY5Ker0IXREBA9HWEjFSmsAz1wE2ibEeS9RRX25U6hx8pqHGG4ayzEOURc89zdRjRSYQ6FThV1WIc0aHY/KDTQrH6Ym3OL+Vcurmi7RjEt5TgYSecEFgVatdvxL+CfD9x6/8FtPSftNTyQ8AZZHCMoFrqU7r74lyhHe2nx1+GxPKHzf/ACXyAPbZYiytcY9pRnz5Rhta7ZSW83K1kS9uXeMxLpqF10nF0GXl1D9roVZkMnFWl5TwCg7e+a9YqQ8MOdN23daxAYnV5gn5zLhlkAWUX2LVuczCWkESN8i2quu8wuMM3BwNG3qi5bK5TLi3WUE8UFq3KRoq3hhyQlY6RN02694zgvgOlMubfIYfFwmojcU7sxJk8YrEC+QfWXyo59G0dlXxuPHnuLd8/wDD9x6/8FtPTftNTyQZcuKTZWJ1vcZVrwtF6+F/EAHrqfnGKGadyZLONG+IE78ZPLgPKCDaJW7T9sS0fKCN1atl7KZbRoK4or9cx6u4k3lwXtWrqOcyI8pa/vAssQtSIFB022zZH2gpKsN55l2Ay8IlJwFcVKkRCKytwP4gLFCti9HzyiqIidFDD5H3gxZ4DPUFX8ysxEKpCtDs+fmy8+4LcENHNjt2ldmeaTaMAaekfP8Adk0Q4qqdFSv7J8L3Hr/wj+ljweTxbShV16Stvt9PHBHjWlEt7x4PxHn5ep/kyNMWHq4Hu35SpF+lZUfMZ+iZEQ160MCoq7uuW1LaYvReCASldTpQ5twjgdzhVDS7E66xB4+x18gu+Lyx4waw7hhrc40RwkbKrpw32mMVs6WDJTMRUrdjacArZuP1N/UybtOrUEPD/N9t30StS1c0VW42W65YlUzUeXm0ltS5pjVXThox5MtQVDMUINuleSx7xUXAL0f3jsUAEc0CjDucCVg6mbfDgGF5a4Baqkzqg+UTYCZeUSG/khqNh7L8hq83pL1LVikVaEpXk63HNiQoF2XilPz/AEz4XuPX/hPTftNPI+/jhK5qup5YbBweFLjmOvhnKaXqQOolcgijrx1MRngOQRWXLC0EJcsx3sFK/wDUMeUtK1VN7Ya1uIrkqVi0BwHJKM9bkl8xtfEruMu3VlWOrflKKESLQKrRR0Z85kbS7qDb9EF121CxDZnNyxHRphhYe9PTvHUbCeMK7wWneA6wLoFb75eka9PTHl7N06RLafAAWGLvr9Yh4Dj7B4VvG2oOhY8A/RFQRKSjQ0y3fSU0ns9go6Z+koZ4kpEUBw6jUrIJ1H1AH0Jnb2TaHDnnVxFWroIaFXUCx5zta8WVofSvnNC/6VfzuXLlz3Hr/wAJ8pDx8rYZsdOlWc2ly4gqLQiWiTKJPJhNgMv+Al+HHw/a+sA4tSbff/2YzMStSG0N+j2g8ZoSEHR1NSn0BN7CnmamfYfIZepbyKpx59oBXBR9XkM0vHynmzj5y2dKW02pnfaNipbQBbmhiuWJQsUKAabOmvqSmNZMiuu9Snx1gDcF2n+plCWZX5blFthLKNylMiRq/KVstVgR0+sw1SO67uoewhUTUq067IjqmBs/UBnDMLcpoBlg71M0BVTJTyi4v2XTeLvEqsf0z+b/AB9h6/8ABOofoY/oPvDwuF5gtXxx6Qfz/nePHxJldfoJja3iZTfqRbh7vzH5umtRMyJZMwNMadwCv26C3TqzOMdoLvhcIZ2hQXLzKlyNGgGpTvruUdUsVOT0455lUvWhaoAaVvJHkGuYFRoeXUoWn5vwHfWq3xLTV1Aga3XZF80GUp/wPNlVYIVFpeswsukpiG4Jq2Yv8ht6q7qlOb0lQHLeYgDpznE3cD8UGDLVjUs/pNElfDmj0hZFDJurQ1eXvCPPFHsMHGQ5zW5gQoKYUjsVWTLGoMUJ3NtQ+X9t/j7z1/4Jj+h+018j7y5cbC0ZwXGhZFwA8yXgl7Ch9ZcuD8P2vrFcC9wo7bPyiU6qDZ0TZ5MCNrQIvpmEkUsDhJToXK6IPylf/Q8r5KcYjFAFq4Ikixy1lVd4ldbq1WOoIabBq6D82HTIQDuDPJK6zic/5LbUXDVHZmdUS2eaVnvD+tXwjx956/8ABaxfQx48j7y4ZlxtC1C8DH+sNj1TQKy4wS5cWfhm/Y5ioIbBVJC7CnGK1EWBE8JLXqFluL4hV9RjVTNA1rchwwU4iTRhiKL0bUfKIw1wQuqMV0xm/rB8UXSLaXbmtTIbzpXmubyxjFRGbdnt4N2WoNI98guDvn8S2phV13sQdQ8Zs4AuT0l6ojTkehvvcsaQFUanGhr+u42Btk1jqzfNAQRa5CVZVCl/i8aFK3S0PrFk3oSK0i7d6qOlx1p83np/VPje49f+C1nof2mp5Pv4EWXDo8Fx4/DFBhbdYog3sr5ls7frBxjqkQEbtAAPUuf4wZj0g3wBOnTMV0gU5E84GAp9MrHTGI/Py9YdYHySledU5iEzohutaiZ2q2BX4u0RNPUGOsOC2Z2MGg+2IPm8kCDMG73oVnriUMJO/gNcTQv9fQs5+czKfVGR9HOp+szH+JP1ufrk/XZ+mz9Hn6/P0+fp8F/zwX/LP0+fpc/T5+nz9bn6fP0+fps/TZ+vz9Hn6vP1efq8/V5+rz9Xn6vP1efq8/V5+rz9HgNyksef2/4OsX0M1PJ9/EGRY7JgRGuxgiQhWrLe8MfDT8RLhAhUowwe7UBQHi2LWdHcerg8BpZQ7GAwA0BgmKpFIHylSpR0lWVNIqRnnrcW2orlNUcbleBUYbHrefh25bH1V4OYWVVQUvJplHSc3zAHnTTmulwFyzgZ83gllOoAkBKAYgAADAHHg9GLdiu3hUQD1kCu/WZeS7I6XOZWAOj/AM/WemzU8n3/AIAI5LE63v7xBZaUqL18dP8A9FpPTftNXk+/jcyrB3EbRbVMMGCzMx/9HeUkd+Gn/wCi0npf2mvyffxJ7QSFwfBhD8+0dYQLhQeOv/6LWel/aavJ9/EGWgubBztHHFd5t3MU9moF+A4f/Raz0v7TU8n38VFpoHoxM7/eLHftzBFhLYbtvia8Nv8A6LWel/aavJ9/FQM4OZgmidhj30gGmxEXr47f/L3LJZ1lnWWdZZ1lnWWdZZ1lnWWdY7J6X9pr8n38bYS1sTOTVo6MfuaI+WJHgb/+OuOfGpX8H+F+B4suE9F+01+T7wfElw8DZ/8AGf/aAAwDAQACAAMAAAAQbf7/AP8AtNtte/ttiX//AP8A/wD/AP8A/wD/AP8A/wD/APTbbz//AP8A/wD/AH//AP8Avp//APxzshkm++/+/a22n/32+KVf/wD/AP8A/wD/AP8A/wD/AP8A/wDttt5//wC3/wD+/wD/AN/v/wD+w2stpG333+/V209Sbe/FZ/8A/wD/AP8A/wD/AP8A/wD/AP8A9ttttf8A/wB//wD9/wDv/wC/2w2yhJlmyP8At/3/AP8A/n/6+F7/AP8A/wD/AP8A/wD/AP8A/wD/AP8A7bbbX/8A9/8A/wDf/wD/APvtsIBIAID8tB//AP8A/wAtv/8Av8P/AL3/AP8A/wD/AP8A/wD/AP8A/wD8229n/wD7f/8A/f8A/wD/AP8A20gAAEkgFtnbbbbS3/8A/wD55f3zbZZbbaTaYTZbe22f/wBvv9v/AP8A3v8A82/gTJNtpP8A/wD/AP8A/wD/AP8A3/8A/ot+y5/vN6IYGjKLpE2LEDL72ny2x3MfnzHoEwnyml//AP8A/wD/AP8A/wD/AL/22OzpJZxCg9EhsRyIW4k3+TDMEFansfeDQ2I0+gtMsP8A/wD/AP8A/wD/AP8A9/8AfrrntY6ijdf8XOVDYBnY+7tOno17WjgMGoRYgx//ANEv/wD/AP8A/wD/AP8A/wA//wDv0we/zrBn9Ml1rIdvv/3/AP8A+/8A/wD/AHba7+/dvy427Lb/AP8A/wD/AP8A/wD/APvbfPfad4M9YeQjNUQ/8n3/AOP/AP8A/wD/AP8A/wD/AP8A/wD7X/8A/sNJL/8A/wD/AP8A/wD/AP39vntaxRWj6xh0Rbjb1/ECHof/AP8A3/8A/wD/AP8A/wD/AP73/wD/AKbb/wD/AP8A/wD/AP8A/wD/APu9tta/+G2FAeoTQM1qaCJSf/8APf8A8uv/AP8A/wD/AP3v/wD/AH//AP8A/wD/AP8A/wD/APv/ALPb7G+ltoUwac11JjLm/arLbL6rSzbX/wD/AP8A/wD/AP8A/wD/AP8Ak0N2++f/AP8A/wD7rf7NpR6E2tPfkMplqkPIn37Eybe37z2222222MSSSSADzLbbX/8A/wD/APLY/mQHCyDpsFp9kV/ibJZrfbf6eyW/bbbbbbbaySSSwQ7TbbX/AP8A/wD6jYQ8EKi2IzyZ4ftrb8N//wD/AP8A/wCkkkks22222238gAG7IN13/nbbbbTW9SbYFlr/AHEYhPGlvHn1gkkkkkEkkkmkySSSV9vrbb/tRpz5Ottttt/9SabYSQJe4mfc7vW5L/bbbbbZttttt9bbbbeJ/wDf/wDePUmF0q2222+53oCe4JKu5e6pxIbbbQ222222+/8A/wD/AH222228P/8Av/8A56qfO/jbbbbfUG/XIYkm/wC/3EfXbSac+222222//wD/APbbbbbbd/8A/wDv/wALqfv/AM2kk229Mnbq+IB//V2YqzCUmZOySSSSSSSSSSZCSW22f/8A/wDb8O/v8bZ4tlpfAFpuP+Gk35uxpfbSZ7tSSSSSSSSSSSS/SSAAGf8A/wD/AP8AIJ+0uNT6BawXi6hCV/VP+fdMrSX22ff/APvbbbbbbbbZv7tJJJ//AP8A/wDwxG3eZztRUnSxaAWkLWhsu+Zd5bvbJtvf/wC22222222wxS//APn/AP8A/wD+Fsl9XcDYRsOWln7zk9+G3MSv/wD9/t9vvmgkkkkkkkkm30kklpf/AP8A/wDh+qc4UgtsAJHkHlvrMjQ/WnvJt/vvt/8ALbbbbbbbbbba/bbbLv8A/wD/AP8Aai+e3xpIEgvxZJFhgj3e2ZkOd5F0AqIQd/8A/wD/AP8A/wD/APwSd/8A7z//AP8A/wDmKKbJKAAAJJaWn1v/AP8A/wD/AOE6mgNRjJH+QAAAAAAAAAAAAAADO/8A/wD/AP8AVtJFFIJJIFMtabbd/wD/AP8A++frzO+HUQJZL777777777777774f/8A/wD/AOUJJIolJJEogqDbad//AP8A/wCmhDa5QWDdtlgAAAAAAAAAAAAABmf/AP8A/wD5FpJJIJJIAAMFPW7T/wD/AP8A+du2/PIzuCOtOW2SSSTW23/zTTSQ/wD/AP8A/wDwSSSQaQCC0gYDmv2//wD/AP8AlSuJ/wCyT37b+UkmSSSwkkkgSSSSU/8A/wD/APa7/wD/APt8WkCjiT2ntf8A/wD/AP74kHdfp/fL/s//APbbbf8A/wD/ALbbbbe//wD/AP8A/wD/AP8A/wD/AP8A/wD/ANiRn/mf/wD/AP8A8uir7p7bvftf/wD/AH/23/8A/wD7bbbbd/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD9iRm3mf8A/wD/APhBE2ld5Z9tvNf/AP8A+33/AP8A/wC22223f/8A/wD/AP8A/wD/AP8A/wD/AP8A/wDYkZp5n/8A/wD/AJu0/QNtYwBP2/8A/wD/AL//AP8A/wDbbbbbd/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AMllJOf/AP8A/wD8jcpDt7PWbFls/wD/AP8A/wD/AP8A/wD22223f/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD8CsrJ/wD/AP8A/wD1+YA7y/c8hIJR/wD/AP8A/wD/AP8A/wBtttt7/wD/AP8A/wD/AP8A/wD/AP8A/wD/APykEIb7/wD/AP8A/nE/HVekW301ix//AP8A/wD/AP8A77bb/wD6P/8A/wD/AP8A/wD/AP8A/wD/AP8A/wDF8CeyP/8A/wD/ANwrp1ENptpNtrn/AP8A/wD/AP8A/wDbbbf7d/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD8/wC3eWf/AP8A/wD+jf5aoNtJtS2U/wD/AP8A/wD/AP8A7bbbfb5//wD/AP8A/wD/AP8A/wD/AP8A/wD/AOfhvaL/AP8A/wD/AJsTceNppNN3/wD/AP8A/wD/AP8A/wC+222++2f/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/ufz/pv/AP8A/wD9fX5eJJJtJlu//wD7/wD7/wC/bbbbfbd//wD/AP8A/wD/AP8A/wD/AP8A/wD/AOt//uX/AP8A/wD/AIQ0TfpNN/xzG2CIMCYZOff/AP8A/wD/APf/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/rfb/e3/AP8A/wD5PbbdtJpJfnp6n/Kvb7/7/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AM9/pvt//wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/APy/+w23/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8Ay3+8D1//AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/C2ySf8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8Awltm8/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/APwttun3/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wDsv6Sb/wDiW2Tdv/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP2mGSwGgfPIFWS3TeX/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP/EACoRAAMAAQMEAQQCAwEBAAAAAAABESEQMWEgMEFRoUBQYHGBkbHB4fDR/9oACAEDAQE/EPon2tvsC6mvsCV0JT6p9psv16651X6lOaE79Iuil7SVjeSfZ30sX0yV6AlO1CfUYZJm/YF2H0sX02z6CE+7rqpeqfT7O5SlKUv3elKUpR/XJxaE79mfQlhzcrOAmnhbiZolkY0aHhUmYulMuC4utBObF3Ugkfmi2qW7JmuqMV2l/Iq5z25EF/sESVZUbSVms8m4lQWsPFErmi2Z6ekuxsmxKshh6aE7pwbD3NhvMKXTCJhsWVdcoIaGsUTqpgp5g0JURtBqLcbyNzcePs1aw8GVOKbcwfDifwRGPm5DeNh4NpjXkPSDwZU9CeBabjE2uxsPEpqnd3gXE93C6HhZwMwaX8lOrTrjPBS03b52E6mnkt4+CgyRvEf+Stxi6JaeBPIf4Ixz7JC4Z4S0WVHprDT4GsoyH7Fg3Fv/ALEscjdgx73Vbv7HkvYyyeFdBvfsYQozS9iyr2JRJG1PY1lMYTixf6jSjdSMCJNPwv8AIpD0hefsxt3dbDNst39lPJvWx4IaKmKXOiaEoOiCFcrYaihK/opSpCDbSS/jcQpARsR/wU3T+iHhCUrUTfBux0PR7QtZYN3p8NexujyQmlyn6E5rCaFicExD0Y8m+4lITSm+5YN0edB7iZLueTYX2JKiCBhZNMg77PgEv7CwGAKOHul70Kk36NibLlPYmYZGoUGtxMNuEN/xgJUy8i7xm3LL/sd0K0XSiz9RSlKXvJzUTv2J7mwlIrc9v/fwLKExvRIp4KHgQ04THkn66E8p+hOIwDyPZpeRw3HnfI2VWDxPIBcCEQhBKD0W3QoT7KnBO/Yt4J3ihqsS6IJAiWLcQ68ahFTkEElbS43EbeFokeCTckS52HC+zGjYyarczU9kVpCQ2ZJcsau3guDeRqNIRAlgoaEkrwiOpDxJ+xrDYnGxFL0Eyonfsqc+xgttEN+RO6MhYCs8idUc/wDomz6WrgcSZUov0WfxYfBCnkLwZHgzMmxcbDpU8HgGDUbGa3oaVtDRNCwS9MSP7DVRPwN1pmQLuFpsSUjyiupiVJei4aHmjZ5HQlO4iaP7xBEJgktnka9jo/ZknsWkNy4b9D2b9DUMGC7BI0e0TR4JmwHs2JVwQlmCVkLomKJbeTFlPg8XowJ+xPIS2CYhO3S6Lof1UEEDU1SIQhCD+hsEoqxOjGLxHj3pwUIWj2a9nhr2NTJE3DVply3oi7cDhTkezQnHRYLux6F0b5G8PJbCwnyeJ0YEvRAW5pEmjELoZCEIQhCEIQhCE724Wl6n250IRsezcMVDXBc2A3nRS1jxpCENjfolGoPCGzzBxpSl6XknfhB0QhCEFo6ZMmTJkyZMmTJkyZ0pSlKUpS9DVJH2H20PVWk5ZKoX2XoU60Zz+Blh9dDQl0MpS6WGw2Dyng3a4Dz1eGjwlpS99dp/WD3H1XuXVKnkKphJP2RSEUe/jqauidFE/BPbgraUG35QhiJ0wn0T7sIQhCEJpOmlKUvRZl6wmiDwUv0GzuPR6PcxcmUYkYe0H/f4X+TNjYh7l0mkJrCEH9kQ+5uNVOilG6QhO6ldCU6IQnVB46GkxvJMSSdhviYkksEHvrTfsP7Ih9xZMMIS13arV9zZ0TRazqfQycx+3IGS1056fobjghRa3sP7Je6t9Xpu1ur7mzopuIpS9T6G63sNNpdqwJ/4lsmPn/g6YGp1LWl1hPuC30oy4b9G7SEODIt6PQSC8np9D3NmrwLYeINZ0hNGivsk1ao1NfYx4C3Iqow4KUTpSlEyl0nTCEIQhCEIQhCEIQhCEIQhNIQhCEIQndyaE1RbM3SP8Y1UhrTyl7G4j9N/yJieWJmLVbMWxDVcJ7nhLXcywJp7aTAmFeWKszweQ3l+xay+AzJp6Y2Qndd2uLQSbeQbcSbLfljttigaC6Ak1n1z6qUpS93Bo4GzRuJhrRrRMp+ieCWUarJokJ5M7kJqQSqJJbaIWFweaTNGsiRNEGhoS13arOGLImPe4tr4fjYTKbiGylLqilL10ukIQhCEIQhCEIQhNFkhSl6lt3FuJAJ1r9jRkehuOa3VOtpeB7k8DivAlXCid6YQhBdVKXSl13atCSaqbz4/gbevJcRIotKXrvRfq0xvs+O4txoj9CwNU9DVdJoym5k3fIqs+BnvFhnoSnSuhdT030fRu1axBdzlyJlf+cjSCRCffFuUpSlLpCdyl1pSlKUZJXUsooooburo02G7NjeNxW1OaiXgaKUbL0JjZ+gno3NFFej9NFKUpSlKUpSlKUpSl0fofofpopSl0JR7zuLf6ddiI+3UYJ4o1CkOyGJTCWkj8AJrA0qyMPYkeNqeWBedRq8T1IIbqcMYWA9SnpTgnHOOcc45xzjnHOOcc45xzjnHOOcc45xzjnHOOcc45xzjnHOOcc45xzjnHOOcc44zshefV3Fv9Ouxs7dvm7HKLrwqTZ4K6r/ZnW1gsmM2zZuN2ZbbmIp1+aJk45lk3hO+/wDIuvIEsj3DtGrheOR1RulT2UFXeTX8ou2W7XpMWt5JfK/18i1hk0vJFsPPH/0foLz/AMEZQvdK9/Jfv5L9/Jfv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5MPI2092NZfvt0T6e9jZ23wNjMm6UkpU49zZv8f9HVolksDWyaN63X+h92e5sdgandv+jRSsJsOXT9J80Txub2fAmDRfRBZNpL0PQpH6H0PGfkUSeCX9EJtPc5aJHXFNhaw4+DYDczbYeBIzPpmeTPJnkzyZ5M8meTPJnkzyZ5M8meTPJnkzyZ5M8meTPJnkzyZ5M8meTPJnkzyZ5M8meTPhP+iN4f9CtK3vX9kXXs7efJIYbg3ngfRQE9KqMOwPKmC86mOQJOyl8TB02HqUruol+Aq1qNViFGqzjnBG/xOGcM4JwDgHAOAcA4BwDgHAOAcA4BwDgHAOAcA4BwDgHAOAcA4BwDgHAOAcA4Al4SE0xvraXqXXs7fgbmCOj5Q0HNzflmWR9S6IPSdcIQhCEIQhCEIQhCEIQhCEIQhNPHbpUVFRUVFRUVFRUVFRV0hSl0J3Vdezt+MCr1/Q1bov8AY1BInQnqy6XRF0ovwLdquvZ23ML0WCjZ+XsJvde8YgnRtpCE0ukITSG3QvwLdquvZ20C/wCHmDX7Hs4BrpulKUul63+AbtV17O3a8AJluraCmo72vyIetLpdLotbpB/ge7W9VNnbSTG8jxZIWECxD6JpNJrgxrZ+Cbui9LHt23lPc+EN0YUV1r3NsD6XrdIQhCG2tNyDX1t8fYd3SilLo9u28JvaPVWT3WDBUl/5n/hJsbim+r0hCdU0hNX9+ThehD6Ht22iYrIopa6Yr5N2lLpDbvv8AWt6Xt26qCUpnk84G/Ezf2ZrZu6FpOzSlKUv39aWFL1PbtpVnYwaVe5TJvj1pu6F23+C3SlLqJ0o33BcmkmPz4LV0/MWEhq6buhdtk/C04LPcLaCIiwTswUSSUQ1RqaTsbCl0eTKwKtE2Y2va/skN0TwImy8Euw5KssVh59DeYvG5uPwJN7Ik12Ho8I2+9JwbvcrKysr76cq2vMVFhRsSmT9pJMlsy3keEeSv2PO5EsGRJJkWSvYTa2fRvv91X5jlgbF+VAlHdCWo1PyJdilH+RLrudX+RLqhNX+GRkZGRkZGRkZGRkZGRkZGRkZGRkZHoutiIP8ZXS9YPpuq/Dn/8QAKxEAAwABAgYCAQQDAQEAAAAAAAERIRAxIDBBUWGRUHFAYIGh0bHB4fDx/9oACAECAQE/EPxHxoWfnHoh8dhS8FKUvMhOO8hCxpS/L0ut5EpCGxSm5B3mrkMhCE4Fq/mHyqUpdHqtGb6wnIvNeqLCroP5icqcF4Fo0R6rSE5d5D1RKPCj0vy85T46UpWQnDCEIQhCEITkTWiY8Yb/ADU5O/DCE/GZeKEIQmuw1PYeCN9NEq2ixV6CSauiDWV5GVmra2GkXGMFUKFXliwCMc3Gwwt8iW7PYeMzA9ngVlZ2Os4XijTX2dp10XQhO7H0NQFlUwSfBnpuJ06XSEEh+DrBuIzYSokHgTzBqOCVvg7jYruECiYmZTB10Zikx4L+G9FxUur03GmndjtdSmMLkJ0LuNbF3IIdFwYpvIwOumjRNuOu9k+5mrsamxtRqS6Da6N/4HJ2fSbHWs0sUeSf/RYTyt22Ev7GXISWcCbBNhrN16j3Xk3k9kNuGtw3h36/ZsZBKMHXfQiX3uloTubJowF2I3TVqfv/AAdbuyRTuPE7NC3KVO8X+REnnYWGr3GskujFH9BQU1FTjEjijmbou0VZKnRbR94QWPchOMyzr6n+USTcNzaOgbP8N6Liel0elExuQ3e5I0PkJ7+BqfgtmlG4hhB5qWibRTx0N2XRsDVbyM9zCZE3I2PweC3V8DV3FUbKa0bomWzbS92tGk9Ey6JYAnDc22FEXoXuNjY8m2xM3SidWRtmZcQhKbGxe43RfhvRcT1urcErPIkNLoSu7lEg+SGpPdCxq+gsLwHiCppdxImTsZP2ErYlR3X0CakKd4M2XJ1IBMR9dZpYX8alKUvBCcdLpNKXSaT8N6LifBWwNDRYOhPqSQSURob9w7+R5FiPtp0a7jWRZCQqwTVRubsWXSJmoWZKUuj4+v5UITkwhCEJ+JOGl1+jAoug3dxD0pCxrZg+gQSdXCBkzzFmtbIaJILLhCWeuw3VT3HEm7EfUTiruPEdh7HgybQnU32KpsaaEhDI5VZNCGy8EZk4Ni+4UkoJU/Mfwz4Prg2VFQ9GC2uQukqFDEPceUWMz3FRpbMSWF0E6bIjPTYdpt7lTXkV9SYdglZ3OoZGxKJruRTQiYWnRb+R7Qa14MQ22DfLGZCSkY3iFH5kJ8K+KlMJ+A9DMwhLUdZ/sWRDEYJ9hBbImnVCVtCya7CQXdo9JhvsJkiWkdKNS0lnkaIyDWkLioa3fRDUaXcisTKW5MtaZGu2hBW6sTMHgGp+LOZRQmUpRfhPib0mBDimH0TGvtPx4EklgT0pkC0W016pjRmJT8iBxB0QhnTuGD/YTn0KonR0emzbsJQ9VsDEx1E8Poe43Wn2FkwlUje43GdaLDb7nYQOwQmQN38aEJy1wL8J6t0ERW8CkpcU9Oo84EhsXAha4GCwLLgnRrcJ4THgpcjKdRrjRMo3xJjb4YhUN38qchaX8Z6+iCKwkhXHW8jyHqhi4KJl0yHrybmxKMbqa7iWIN16V7ESaSNmxZyPfhW6dBZz8PCEITiFyaUpSlKUpSl1bhc02TIo6jgulLwUWTZDuSUds20LbVE4UTgsE8p1FjBSlKUpSlKUpSlKUpSlKUpSlKUpSl5c1exOFcL524lNuFcK4EWS7GTShZv9Fy6RdovoaSwtVpCEJrCEGvhLy3o9tF4LwvmUoxODdINwui4VwUuz7Cmg2paOCqN0FaR6NwTLyj+FXKmmxiFw3gfMej1Ru0ReFcKygSNYxl8E/wDHwFqJyINfCLmPYQhcKesHzYQhsNXRCG3AuFYa7DcBKTcc8t664CD08uClLqyfBrmPY2QunkW1OxNzuJYpDrBqDpCIj6k6kJlLuQmKS7H0dLr1FltaE8GT7hprc8lUp1nVneDzonwz+TNMDqAb50yEXoJQhCCE0Wj0hPzIQhCc3BMpKHu/Yh2O53GiN/oRQXgyTfYdNHoS6jda7GQ0JtjUZeRLO4oxokba6jyyXUTJ99MvoYV9kLoJE+4YXYJEfvlsYfUbH0NQQuCE0SS20ZMPsNdDdFsYJItEFI70QQVFQ3daX5HYxs5FXX2EiEIQRhWtzEiE0lC3XHXtyOieBh1uWk6mH2EoJweeKYaKPOi4Poat7vuFpQZPn3sxqBKfWhbLgm16i7hVYJWkKq7uCJpu7a9CNqsXQxcwmiwXQ8lMCeAJ0bmilKUpdFwKhMx7SdOoiKo770RJ4/CpSlKUpSlKUpSlKUpSlKXSlKUpS857MycbqCKU3LZJ0EaOjUmKAdBD5zqZydBq7wPWDXBYINlE+AJ0mi4FSoZc37D0UqNn4T+AvNewlgSmiZRIN3SlHkSnDS8O7gVEhNCyhDIIJIIIQhBhpt4hStzUs3+RoZLnaIeWBJMggknQ4IQa0xxMhDJkyZMmTJkyZMmTJkyZMmTJCEIQyZMmdEh4fMexS6whsUvIfFu4EyrUatcvArZkW5M1GxLmHSDnX6Znywnbv6YmdU+mSxXpjR1+mZ4nf7P+htxseeJyqYfenkia9/pnUB5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5Am5Ten/AEQA0/OOY9uOarjZCcDXITN5aqhVQfJkSvn7XTYYt5OjrL9PZ5UXgZRyWG9u08ruXUq0q507/f7E9q27o+s6T7H5TSLaJp/z5FDdbYWR1Gm0mE+nmdRoVmnj+2dAIEkq8XwugmlRt3ptHMjHlIPK3t61T0xCdm8XG1/0JRgtE4svsv5FO4fSZQjf6bxFfGwkkGbKZZJW8jk/akbB9oq7L0R2XojsvRHZeiOy9Edl6I7L0R2XojsvRHZeiOy9Edl6I7L0R2XojsvRHZeiOy9Edl6I7L0R2XojsvRHZeiOy9Edl6I7L0R2XojsvRHZeiOy9Edl6I7L0R2Xoi7L0LPRCy/HLgaaLihORNZrBrjbM5edUwIZ0ffHaDcUux9Tf92LkG406+7Xh9hudVUd6Pvtn6x9mKVIl6HxXBrf/gjWL57jrQSPd726TwYJPpv/AD/z+Tb6eTfE/b0zFp2vfq2n/oStSwS36q5G2Snl4S/0L+Gx5O/4+yU01UV775jE7kla3dne3WSjaSqzLU8dcCOElHWl9QWdc9kEEEREREREREREREREREREREREREREREREREREREREQNij9iXMfLXKmrHpCc6UNtGxKWL9uilDuZF129neb2/7ErKb+f7GnW3t/wBj7j2xtKiPO9i2DezyvZF1MN/Udlhs3b+f7H33/v3G1ShKxQ9sx5Jbr9nm+xp6/Z5Ps832eb7PN9nl+zyzyzyzyzyzyzyzyfZ5vs832eb7PN9nm+zzfZ5vs832eX7PLPLPLPLPLPLPLEjF+3/Zc9fnmPlPmTRj0Wj038uWtHzQhgrZJbdvQziQ2LAb50IQfFkyZMmTJnl5MmTJkyZ068uDYojIyMjIyMjIyMojI+MCMk0Yx69BkFzy2uo7b6vMMkmfeCdhIht+C/z18Ds0Yx6UTGI38tIBXvJRdCU+38iqJrCEIQhCEIQhCEIQa/PXwOzRjHqhiN/LseDLFRd6Qm8m+KlKUpSlKUpUVFQ3+evgdmjGPVDEb+WokP3K+rfQZxkniISi4JpKQhCcIQT4NfA7NGQa1RBI3cto01uKGuanIkABFBiB8Tzd+DXwOzR6QaEtUbuXiTW5REZRTh0/7/wSq4gIpDWhiEIQhGQhGQg/zb8C9JrCEJpu5bZJdCdImylJv+5kxvUaLRS6pwXcNl4LpS6UpSjz+Yy1T4FkINce7l9goS5PfoLOlEy/gPR/mr4F6shCEIQ3cuWtEnUIY8D2Itui2RsktVouXYVFRUNl/OXwL1hCEIPBTdy3h1DhtsvzC8kj98C0XxxfAvkNCQlnlpS30FUykl0FIZT7ZGS1Wi5i/BL4F8iaLlrwPbtxqG1ode5NFouOzczRuCZUwOgT1tpUW7Dc2G40mN1E9mxYeTNBGt9VnXJ5G1/AXwL5S/EvE87leqdsJPyeSuLX2xItlpEJJbaPKjJV2EWjzvrsT5R8pfqJ8SEDU0X6ifEmUb0X6ifG9V+onyl+onyl+jqVcNKioqKioqKu5UVFRUVaPkNzQnf0dCcL1Wu7RC5u79HP/8QAKxABAQACAQIFAwQDAQEAAAAAAREAITFBURBhcZHwIDCBobHB8UDR4VBg/9oACAEBAAE/EPDh48PoSeCfXw+gz5nsz5Ps8RoZSJei7Yk18w43aB6xTW9YizL+WNzx4vP+Y8fUMwb90Zg3/BLPBt4jMEeCeeTz8RmDfAfoTxH1BPoFc+E9GCfM08XY6BEG++bEGyXsJXo6TE6BsRXa7DePPg8/5i7+sZg37ozLr7KT6Rb9QzBv2Bn0A3wXxcnlkyZMCeIzwCDPiezPnO+PghYI28ULv2zWbkDOtlMNIFaYhLY06uoGaevPPbnfg8/5jz9jh97l9nl9wM8Q39QeIzwLft8PA4Z8T2Z892eIyVvpJHJME7CMFdSAupj8ZAoze1W1mfv4PP8AmPP2OH3uX2eX+GMwb48PtBfoATwOGfE9mfP9njzClzsFwQaK8HSAU/kw3sQQqU2xHXHi7J0yGPpl/wAnl9QXwBPvcvsLMW+HL7/qz1Z6sJ6+IE+0M8A36DhnxPZnz/Z4sSg0Xgon+spCblxbbuNYjjFL1usOxNnqfpS+J6voE8/8MAADZ4PV9ACH0T7hz9hL9QPVkPXPV4PV9Ier/FDn6DhnxPZnz/Z4mkEKrQHL+2XUMGvHUUAr0uFnaM5inlnXr+cu8A9ccZoJ9AItOwrkS8GTb03N5pBGjjgeOhTlq8ACrgViI3CWVAoHj+c6LzNTvmiKx8zY27lh+WWck6bJnXi+mM1R6mNDtgvAu0wrhEtsOub+XlP19MOkqTQhRnShp76zW9ZR+0zS7SwxjdzWKoItnOBdTLajQKqBROSYLAg1gWDVXoX2wEJmSeUnc7Y6TUsOCyYsTFM9dNqS+o4O6ZQN8nJ2xAzV4kc/3jgr66bDQ4HV9c3C7NGVYbdHBvCPQdjH8Z2nXjPh55Jzxgm0Q9MBUkeHD3G49Sj3y6vPo25zQA2XoFcoxInc4fTDTqi2G2AUqgUqYvVaKwoj1ImSKdTo9PXIUMUIgbN7VKbnfKa8+N85pWXTDEw26F1z0zRy0UoUY78AXjKd/wDmG86c77Zyw5+ds7a8t/PlOcE+d5/zGQcr0Oc+cmdB6PXNiDlE9TI3oLxgbk35fOflzTo8Xj9PXy9cR/lep5Grk4Mem/rjCMQTT1yZKUnYBNxQF5eLgRnbKwJSAx4S4GuNpVGy21QRqOGyGlFhs4aPRfOdPJTPDWV2icIpgga1/AVhq0cBxMU4oA6DB0kQcDQWA1dLMTqXFlTXf58/WMzxpnA8J3I4VhgQGN0NiJyJvETplnb3w6XVwu5KSe245QSaCOFH+Gc/QcM+J7Mc+bp4hLKGTnlmkLM2zVt9hlVMEpebSrt/Hnpwty2oCrJo6Ho+kceIGKw4El6rK8td5OxIeyE/C088iyI1ukBBGnCGm0s7u/UWcP1wVdQQ5rQ/Mf8AmV6bVlBY9W3cI51iAwkfx3mX7UllKA9IXm44xpVZCgIGbEWmw1lkAoAJQWwfmuB3AbwFDoleDRxlPhpNTANNyvQCyJgG7xNARIncBOmXq7AyBV2Ojt3zveHLqR6dPLG/NsMLO6auHjS2gnnmU76Lg4n9NaovQ1DpMJJBhI1KVc/PZuHPuGTsnuym9AznGUtrEDRfjt1yDSmeRLmK15+uQq9BrPfmjT1OOJL4IVBFaKAyMJjr0YAGN3rkeJm5cmMSAy687OzDXKMkhzbXtXtyQbA2RfK/ELcC5iBvd1zOmtbkxOsgm2yfUPT6mDIebQYC1y4dcTUpUOK0KToqC6tMdnAHm09pYDVpckKA0humgHHc6rjvWuBsRBNgKLunI4qf/G8bSCCHWdZMruH85AOOC2kusg+ECSObAKcNetwE7XbrBQBBAbspj1/u6Quf0do8NawF/VRoYlSb1yXpkAW+3C4NyKFEKGjJzKmlHhnTKjWCLqZNcZE01xjCBc0MkmC5E7MRKUTcUdhVY6MaQyKjZ6LVijwrQgJkGToh9u9zAqtbcCPhEE2Aa3koxkMbACqpz00bdBS75wkDxV01okcgJp83AKWqiIg7BtcnSTKRECyCHeHksnCZTWLnVoKpGlDlmTokhL6BV1z3nUmK5UnUYPzXTATCKQrYR0avWl3cjCSqsLpY4mbwpFIEdNj2MWKpgxQVpSCDiMcNa78kFt1N3XzuKSiJDRYVvQaNqLcFKLzR9AAoFNYiK0pNCmSKkZKcZv8AuUJ0DAr0vXzwYAEuvXUFXyIbcAlFgFHLeCutTeMqm8MDNmnU1TuQQGj5jekCNWi3GrFchEiRq76jYmsF5J40GmtLTi1rGyrmFuuKelIQTnGGECoCgQGBo0o6wnNOfdMvaYdn8v5/wznwN+Bwz4nsz4vs8f36PbOK1gBO2bMu8CFeOvPGHo6fPb69nyyAqa5N6+f9xZJiWzGDTER89Y0owMpYF4V16+uHNnAijoQIj5kf0cWEuje2a9PbeMrcyHYF1LNhN5pVdv4uXfRXXYd2T/vOsAutnyPyzE5hLwbX5v8A1kKTh7df99f0xnUHM354pZBp2PA4FsXTnECScDibqFOePPNuwN3cbMhWReaT87/fLDQ1tCGAXW+vGsKTeFIuwyXI7B6dPlx1kNXHXeCDnbDABHk1tNvzeD4usqL3CwfMLoxKSPz586Hkfd/H8ZwHbOvfJoO3GQEATtCeWdbx6f8Afm3Hc8vbBjrUk68Yazj+8u71Wvvcgcdnt1y/8uduw303hrjR188GhUEM08zthCgAA0AcYTVZ5wC0XqeZfPN9/YYrk778ZDej2MSj54tfnGc88ZuFTo4DLGrVKTSVxj2/B/GNO9nb9f4yOq2YjyPQ4xoi6xL7Jxwcft+2PKdbiXq++Rtr/r5r2yal12d38Z1cb51zkbtvr19c9XT56/nJv9fn6/OeHbp1/wB41padnI92/PbHRDR27fNc41dz0P447++pmnDO2evAleSFFspueWDkLB0MOQDyU/Z/wznwNeFiZ8J6M+XdH09PTI3fgijdex5c4aVhZ6GTZuEir3yUQdquExQNzSjLi9qKQn0xNOpTA1fpmbNxPAUwG2Ae6oIDAXBaizajxwiPkGXrxzhlK02+U2VjTRlwKVpzfxSZlOy1VxYEGYMbkB1vfuZeM3wsxrUkhsUMaVrjJbWlNtbIWZXSn1LLOQmVDIzKCQNACGGjmJ0Y38mgG1rG4t5YOjKC765Dc+zkjOl98MfuVIhls6Ls2LMOIr3xpAKBEKTnNDLRxSgG1g8B64bFXCcBgiNFhGcbx6Br4LKQWcFDX6GFbdG7pXzxugUW1T9Sk3xcWPd64T0z056Mo/8AhBfAkya8Vn0glwNf4g5+h5z5nsz5zv4LMYywrr1wSBrseTNTL1AVp5qj1vGsOOJ5friM4U+jC0APGQkOaAEQIMzcU9gQCyq0jvnAScoSKrsN1aje+d5LgTkoBR6U5JrQZRD12SQd2u0bnGVVOkBRGNw0pRNTs5a5Ls2AStwh5YeL1c0YaXr2djFgu68sm/bpHYgPVf7yrDqh6dHpiQVWLr9246dcMxJjUqrSFbctuuc7S1wKOd1OhnGIv0EAjotvImrzy+gkONj+OmDASonlP9898hfFis25ycQwLbRmCXsIfxhg2MChBQJtiP5wJAo7B51VUvK7uSYtuDEQ1oEGRuDSEDgiH6/OMSKsaoII3avMdGfoOfLed/F5PH4ZHtj5b38/bJFOpydTOGf5YzBuJcSfQl/yTnxWZa58z2YL8bTFmLcIIRp4oLv2xcu1xEd+cvAbiZEXfjGA5e+94oERDaAL3gD8eDf522DbAuBHNO3RBtPBw465ptfLAFltIQ1OOMBKN19lg9KDQzkzfbWu0z0t5u9W9C1HhN2k4kGlRGpvKvndpEvkQc3fbNDAQAQIaLO/bpzknOOHab+noTesBjL2aVqFCjDs1zHluJ/CESEB4BYsE7SgyAsmgRq5Q6WIwGAJp5OrfS8MMyz72eAgDKOKG0jHBX8q6AZesxMn1BCFqEGhwGaMNJ5hHKNoDrTiNJ6QBiP0AmgW24/BoyDQgKUUoPcx2COYwqAS6JoIDTTGvjtpA6DVOcAhwV1prnSSyqVHAxwTgUCxWILrZ1WZeYydbsUhGdgHngiSIFtuMKaWhRzmxhEPDLYQbMOuluV4iVXKD4JC7wpvAHPU+UsbDph8xf1lM8rs68N6q8w4NR9CBRSTnSYRIIzgACaAEa5ZjBJXdNOl85P26fYC4k/xiYk+jl/kHPgsxbhnzPZnwXZnLwqrbLskcOOpuIC2qJjrGVsamWrKq98Va4tc+E7sVE69vE9bDDitpJtd8YGDEUFBNwFbab2OVMCtKqhQBUYm3WE1XP7CEwGPIr6YXXM3auXc153OlmFo1jR51dTp35tbJkXeiKGikRLg0Pl1coGEBoPOsUBIjTUQCmiHQA4HRcaLPArkRvjWDZGbC87QZ2Bvaw6WJKw9n1mb1erHZXPgpQiko0W9QWCKpAr4s6A09TlV3Paq2as8aBrHwDwO7KSjaycbuXoLPrE0gRK7WkmOyRIRChiJYXS3cyB6iUiwmrrZOjWFSu2riK7cHVxrDFLUBUI8V0A7qZRxZw5MFBGA5cuQuhLtmKpMig9cTVW6IprU1RDJpre3cg8ZeNgEZBVSrxVABOYxFjbQeGFHoR5aBKitYrEID+8sSkY1tk5cFxHmrCZjhIidXXEZ7aEl2GWICci7ykp4JNSMOjfHl9H5L5uOtujz1ihzxzreIl1xgne4tcNz1D3z8TOXgtzh/glv1Jf8YGvAt8DPmezJfD0xb4XEUocwLhpldEu0Qp/OHCYHJfVICJ6dce2nk8+Cq+Uytalhp0p1v+sPqsASooP5AcWfF98FnPHgc8w75GufWJ8Sxg27KA3HLsgyeYPZ0tnfE2iwMqECIQ10Vww80xxOxpaDq4v1f1KrrgDQkXtiqNNmAS8tliYRNWlVESKIsCDrLucFljaA1RbGnu3EQaYgu/leHesE0GIsBcRdpbPKgoE1FYIFGIRjvWRCvOlEvDhgb/44lMbSyXBdSXCpFojVVZHMwJ/L3pKTtoWmGs5T84Fi6L0EomQWlRByEd5aR7YBqVN47T5g2FZcfx+OGLbWqyNd8CW0vCeLCy8wwlLZQ6jdHiHqlw9NuIXJRIljR3lW8vvZmzhFA7x1ZFREfYbKoAJxIyORKhIgLtoL0yWk9ITOwdkC7wP5CUdBBaIlNkvSzHb9zTPRQHOUTLlKyZDSgB0xwpjOxmpwdAPYFTc1tWEEA5DbTHgcpJQG0vly51gDIYsdFBLQlAJu4Not12TEp1SE3RsptBLNmrLsptRSbygEIqaqsAqOk30xdhlAcIFERpBHnJ1fA5y+jh/nAs+wAG/aM+Z7M+P7PE3hE3ZsT/WbWy4ikhWjffCut4ejbxUKu6TZM4K673vm+pMUbs36YFiQmym2HhOBdY7xIAYg1vBIHS9cR6dcNdT/AH5oc5Pc98StHfSft+3tjB3LbaYnYhByPGcoMOQs7TAhoQGVTWpNWkcWDt4zuBgqaqNoSUA6hdABUJyIwrbFecFVhKXAB2o6EvDrHl4TzTZlTXUdy6tF9iZHScgWuhnOMqeYoDpJOJ7hhU3IdA4Sc1kHCmgCoMrRTR0RtdXHMmLFvtTTgNC70eUBLDn0OTe+8CSOYAWAzyxzYBPgxHBCXh2xha5sk2W0QQaVJm8zw6rsmmgbUXDXgAaq/QfIKd2C1Y0Y6sBToVOjeb4w+IBACjB3rcwe/TjqFSkecO2BuP8ABAbHfAx1zQyX6d48dIcFmHvWAXQnbo5QFfbSx8U8NTEJyAYDjIDTR9XUjC9KOQxpghB85IbTYWYYWKUVzh5B6C9XypC0zqjoCm7Wsq22bkl4pdiCIOQRWU4kk5kIXoOQ6LztxQCEIeWyYAzonRyhS8aeN9sv4I2uTWKRSe5MQD2XetSBNF4uO+cRpimqAVA3tceJJKugCAsHUXebUUdgeXEbw+2R7ZHs+2cYOv8AuRkZGRkZGRkZGRkZGRkZGDfG/Ll+XL8uX5cvy5fly/L9Q4+vh9oxT5umK+m/o/14v0AKngDa4ylf0vd9c77se5KnFWJucMl4wu6FMBLVU0w7Q3bJOCR6mKo5P2sR9AdTKOX5NyLyfxyu15Pvg8h6HPP+3LeTrrinIrmhw4XRqo/OHNFxTX7ZGoO3SYACunA5M2wXgUGSI7DnD9IZVHAgq8QHrrD1qWExazpSvVD0RL2O549u37ZPy0XIjYqkrqF7svGzjjqPPR2d+m8VZ5ocTqIrpvpxm0vPpPtxPxgbIzF1AQaTQ6YVZRaNFIAI0iG+mAtWp0D55Iop3PJ/Hli/IukGsBqxvWqeebeNjrC7BIEdz3xVTziHT9MbKm9+a4cAcagn9Y17e3/DCX6tYq8PQZXyX4ayfE+gyzeVoouPD+Oj3yvk42Lj3C5Y/vFen2Yk6/SwlJnZGRk2OsX9vT2xKBGuQMtrjboa/j+8j+3X9DYAcAcdMfAPJYBDmuP9BnlvZnlPZgP/ABzvX+GdqfxwX/jnznPnOfOc+c585z5znznPnOfOc+c585z5znznAzq/HPlOH9HnwHPgOfAc+A58Bz4DnwHOH0cMOPr4faM+d7M+Z7+KtBgFrUxppJ4KNNFYA1rjHHRdJwNelCs6rihaqfIYweB6RtcDEnSeTny3ZxT0WIvJ74x6PfF5vm+eDU/3l+XOGayJiImCaqK1m3qdZYuLEWUVDKA6hjX+boTRNHbZnnk5hAnE2fAqE68To4CrseBZPXXjGAhqVaX1Ai7d31zWf6ndUFOCt71lGOYIxPAm1vg4626CYoN3YML1K3c3s3yWEWolODebhBDftiUWCEDz7gGt8icFuGh5dMwCsaYgW/XZnZd8evbLCAUgZPes8myGBbCjRSXZqQzSOhIXsqIHoYhDTN3DEPSAoXQtoCcI4dNJUoABVrozjZ+Nru0hBOUx1zrDfU98/J75rue+a7nvmu575rue+a7nvmu575rue+a7nvmu575F5PfNdz3zXc9813PfNdz3zXc9813PfNdz3zXc989vfAU1mznKdcjvkd8jvkd8jvkd8jvkd8jvkd8jLkYaZGRkZGRkZGE9cSDjq4MRo4ClnGDcJgX4wEsBq+gECBAQFwCN6eR5rIPTb7IwYMGDBgwYE3CdOEUWEuByEHoHwNE8oC3C60j6Bvvld03MzWCBCUiSq0gqBEN+2B2NGN/x1aUmAQQCbwNvClToGA7Sv7sPBJkjwg+ED8CJGBFKEKDXj6Lm2bWHM6cYPzRokFhxqMFKVjgcdK7r+zz/AN1iJUyRsuOvt/XGz1td7Xx+OmHIHBfh3zJrPxp+P7818v1K+2v6Y73o6v5MiRD1z0OvH6/6wbRT5fqxQ1rIBr9DhiPAHTfjePgj6/n+c2Nbvq9+z9f2wc3E7/rdHycYf614dCpkGDBpWG+YYef/AOMLlw4cOHDhw4cOAESZMmTJkyZk/teAjGDfaRIkSJEiRIkSFargCUZgHkhM0eG+/tlDVO8Zr7/TgP8Azz5zgv8Azz5jnzHPmOfMc+Y+Dozl91ziKZyDIki9SMETG3Bw7CuDRE0QivDiiOStoEC63noPZc7PTNc/DqCDkEATI47EUqDuE1MLNOkiwiFeKl1xghB7pjViFoFHfGP94QLIUoR0K68sSHUmQYQrXB9Ry4tuCSap6icOO2QyZMmTJkyZMec989898efq/BjznLPfPfOGGs4YcY4cbYmlOCui8sOUMLaeYqqJ7VELtjLMaW+XQXyxN/n+hGTRlbl7pSNXQLg+ESsCAoyLZVBGMiT9vgHFQOrjejKyvqik9BgguhBgxKc1WhFN0QWOpwOUhBziJCKqr0ArMI94qon6CPnJizAKV0QShosGGAoGiY2JSjV1QkY+oKtUBBC04SaanUQ/l0ewtAThw07goGXBhC7HjNtvF9sFAdS1J7jqUQYQLWhpcsVwy5ydjAQhuCvn7w6Jg5dShCCapDnDp8delaUbd1RGHWep656s9WerPVnqz1Z6s9WerPVnqz1YPB6s9WerPVnqz1Z6s9WerJgZ6s9WerPVnqz1Z6s9WPLfTNZQ8k78b6/8mBD6BmDfqSiJR6YnrUE3fz/z+mDp5A5oYC5T8dcaxdcAbInMOaTN2T9nQZQ0UcrMtVVCLVlQDhicvOOmIsis6t77DlfjTMoWhQKUGzjIbz3DyapEACMNmLRKzWxZbRiIBydSX5uSw7t5HpwusCCkB5I/k53Xmtz9PspcSePLxC+IkxMS4k8OGSvOCauBMP8Aq6UkqWB4S8Utyvh5cvi17Q1MgUhScBvz/j+uMJDNJBRgQIDUhrN0OmsnkJEdQg9biRLiBE2+oCdTtzh/nRjzZah2qnLRgqJERdegHJVBXiBZqFOISlBkCIUM3DpXa2CljkMvdy2KxuhGJAEU2d2iBq6CwMNpdr0MAN8VBaQRI0hXkgW4nyYShBVI3trjuSTkBgKsujWa7j0tjU7CdOxJrvibCYI4E6gwAF0ZANYqXD1ez5AjLlYI0KIHSqQeNcYerI/QAAg7C9bkmu3lPupcSfZC+AJ9n93jP9xJ15852x0+kZg36UomCPd8xiWrQdgyR8zjnWCkd+ucN5Ro9c7Xfnl3Xa9y/vn6vn+mQ7XU388sS278351w6vdv20uJPDl4imJPDljx4cvDhgYc+MFvbjyxVqG+/vzLiG+fQXUkTaE0xRZBYVECqbWWEWttKvc1Mot2AtOssJZuimK1rEEzGRmJoPKIZaXbBmQxDGtdUUApqTWKTV2pqitCGIPQZSWTECDwRFRJ44pm/EkMKmnXSbnOPA+WUp4YK8DQKuVBIgMwGcELZq4Ug8sxCJmG1BXkmU0XG/WDjDRIqBvI+GrQaRWRFAqBcAKTUAzh0U03acC5ZLLViKqaJCruY142ZHlRMhSABrrCSQYbvVDQQUJuVzekg14UT1DSKJEUR+8n2AAT7jA2qpXdcZ1nFC8kOujOn18PrXzzjxjz9XD7iXwbM9WerAnilx8DZ4AmcMDf0KM+TmJjkgLbI1TSNQYIoNeGMCFzkJeFBxAY0xWtgi1onQ7zgFzxguQxNuauGZBfT3MHBOwdSXjBJnE0HDQBa9EblA4GFDg1J1IdydUbYyoHJihBCO/wwkRATtetwSUiVdIBrYhuXabAHU3ca1eYUbhOs074ptxpKGSoRu2l52YTaLN53URJypt0noOvJoMwcQaUJY0rgsmCAQ31E04I64eOjiIV68IVLywnr/sYSUZWCGmZHTjRnCjloKOGtmR2Xnw/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4cnrk9cnrn4c/Dn4c/Dn4c/Dn4c/D9oCM8Uuu+ShZt2zXLj0zYmTmIdY2Miy8+XfHg6+DAAs3WnW7MM3Q74FAcuKAxUPA9HhuUcyOlOoWPU0986zriwHllonRXnfbCsBtBdx7eZnQ3bJN4E2AqEEhVgOjfYc7V2gdoacuL5ZELwjkBGfnJuP7XHjwYRUdgWRvh74ZMCOaYFa2oBzs1m1gEtKTzHRbrfOS8bs48+MEZs358/P0z+30xI4Czv6OcXufPnphthz75BeriYvx3zaaukKkKsBYb8snXH4wNF43JfzrJ8dhlARnPCc7yevMxLY0GdhRkPRgH7icnniWYhAFiFuDC8b3NUadNeZ4nH0aPb0vh0x+XqrupNNdnIKNE+yIkg6Jo6N5zoppK85tUcDofTI1UXTUhW261lWPqQQU3YFR3sxLJplzFu3Qm5N+mTVTjYrpXRLxbZj4mKDkExE0Q6axu7pNnmTP0Ze/IenqJ067T9x373Z6se6VJNOsnF3NJUApGB110zkIOTgcrfxg8vsyNt92k36OBvVF68e+fstu/fP7lkp7NwE2n1zzXvn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pi/+7P7bAf8AZn9pn9pn9pn9pn9pn9pn9pn9piNVXrYH2wH8bJPD7YaJZDIyaC7hh4aycWhGrdXFLNfRAGiFRhBKBsNaATGinoVerBm0yKfaFDh6a4yqmdaFsPJxJScAYUnsNVeap1rRDgcflpAvVzY3ZU31uCceNQDdhgbmC2TdgACo6dFDpZhcU1bQTqAAKVbzznS/OY5lII3pOqYokKw66VB2FJT54fauESyjUIMFJvELAmGhw2kC6B4HNwrbjMYxWhw63lXSNxBst6rU3CBDFZEsSjvRThd3ecREsOcxWIImjnHptdYxFiDQemnO8MlqrNJp0bF0Jh+Ow+hA7hoqR0Yb2SJQZDaAQ9lNj5D0StNTvzwrYUbTsH/c73jeHKgKactrBHXbSM7G8adAADlbrrl2akbF5qgK6cq8l6UFBtUNcJ0q4xQA/Et0LURJy4XEbXcJ3SAetjxhOdFtSw5B0EUm8vFfB6U2KWJXBWyzOnCG9AnKUy7dwhjRASD7jWW9/wA84PpNLmn2+G81UoGKEdbYvXEGMwnAOhBbOokTRu44BSYqaI0FDfFmVQULUYWqsbz0mApY+2AbNyJ1OTNMlAUKQILFNwAAyOzy4UM1wT1/TBbf+ZyyFQVVdOsfNSK2GUlWLw4LWlAi+wGQgqLrgLR/hYoCoVuwd8OliwxSBNkp6N61whkXEsW8wM1FYxSUTSRk30g6cMxH4MphvN9nN9nN9nN9nw13/wATzMXe0IPQubj1pK3om0fNPxfouXLly+Hg+2MUUKgeRO2ErCTuQPYAvlhqGidofOuOzkDmzgO3lxm2y2ylfx5/OmFg9Z89fnfF3zrXPz8fnOC8dF495824FvR7Xc6Y89F6zWIpHnoD88fvhwvU5V3eq8vONI83h6H8f33zoOzianpzrGh7et49fT9u2SkkSczpljri8Q365pd7739PbK+fu522knHl+2efX5+fLLp2+lxyzV7aw9U/OBwaemBEHfNXInQNSb5uCamQI8J8+erjTadz+PbItvz5c8jrXV6cZxmvTpkjz63r6994RI8EvX3+c4+Y9sX1VPXLcI1kn0F7ddXQfpiCmEOQQivkCuRnQq8lGE3wE7d2L+dI6hRueffNEyaj4YhARKoa53m1a3fPXyfneYNNi9TX5+eeIFQiep6XL+CiyMgc7E11G5zKz9PPj+cU1RTi7fnfjn0zqcboPrDe0L3fPBviRU4RNI6iY7/YtYAWBpEdTvlAKnk9Pz+PPAZNehG0VI6zh2LxOHz9M7pfhg6hpiMGBep0/Zytxtt/P8H8YRZcU6VBpEiPZz1PfPUyrrkurk+bnr56+evnr56+evnr56+evnr56+evnr56+evnr56+SBstCgoFQpwL5YspJaHwnoSIrCXGvucAI4MJ93LOXLiHKnpnm+7PN92eb7s833Z5vuzzfdgnLKbwPt8Hrgixc5IuHnhSbBASORANxFSauXu9GAkQR9HSgmL6RHQLADO4bENZLLMft6tF0s/0jCgwEwamNm1JhPd6fOIoBzucHfh7ezIDZU7Y/t+2ZVDFo0SZ1jFxCFC6oMdpc0MLmGRII8DtpwztPsLtoRdN9DWX4ejqMX8lFnXBlBnJlCTo4eW/LNOyLDc0IOnL3bvwg5z1YHq5OOCfAtJiSbyHfFHv9A0cZHYwb0nhs8Hkx5zt47jj/sYFxEOQIWxCapvnALN3T6+S6x1KAXA4jsLTSF05ptEweb0FUUwYYh40FxXTUMQEBrKhhtxcZ7VAoZfCCHkOZrJ/K90mYJUj03rhp0WnHy9lAVd1xQugBEp3toOnVE1ixjEG7qmpKqSwAhxprHSn0olzWtZqzJzleIAjAGTZwDjG6nIej5dJi9taGVQAggITcctq3fjUQXg99jIHLCE6WwPw0GUHFiyxKC4NCjPIJGcouCAhpGtkZcZr/wAlqYIU280TNdlmnEOBEc4a3g1xJmoW1JEZVKXD9cW/4glDVAiQKIEUVpFERxf3Um6qXHFCUsWKvVDTkgyOkmIiSCcfZEE+3weuEYQRsPz65tWQx4jKFeAnli3VDVVZI32YGtqdY1Sfh6HOC0Dg9EKGb68vC4RiRnqgI7IIp0TOFEgIpECCTw3cEBXRgwQ4NdF3bhG0QriRHSPZuBdkDwGoQhyNI7G5Wa20goaAu+yZKmJTCNqFApGt9lUM6a9G7pDrbu8SiONxbsWlV066YsLnUFO9Nm84u/8AbhOozXfKHXI75HfI74g6552NPOTuwF05DvkO+avOEmnEHXATnId8Z3wB64F5xl5xTvlO5lO5jOm7Z3n+zAdEvJlm6sU6ooaphopggV2R3d+uI7VQ9p0LHz8+uCGSnbIFSCsNcuEb9QqJoyNCAQBwYF6gKkPOq9W+cNsKapubFWIvn54wmghJtHKGtHnBMnOoqBXYuR2bwooXcjhgl8+xiLnl+ihZQu5xcJRukhboOMJ3TH2EWPcBp0bN5VjCzHABhYOgB0wyTayW1q1EeMg2pJDq+CeXpkoIhreAo3rTJ1FUXAGsTTRi3/J6WrrNaZLXFZwaOoml2P0wOWQIkKOqCvQHAH+MMR7bzQl155G2zyMCfY0X7gxu4dOMpNZFEWbzzgXiQJ0HwksI9wyb/AmxHrZEUe15X7MD/ZyavChTzH18IQnx9CAAAALgOpwKpSzFnFS8XH8sPAgQejgHCnmFIucAWXyxMOQL8lRlOx64oPCAASO5SnornTpnquA989XFe+Bd8U6uA9/fF+/vnn+7PP8AdhoefT1f2frhBSYPTF9SJ0WEXEr7oSARQEFirQTNDrrTIC0OqNuaWa8n8NQ03qkLgj+ypshCGFom5rA8xLlURCmkA1rnKBiGJRCIFjx5iw+9NbU1hEyGwFXDPZIRRSgTSRoZgE4qmOhYgIgdzLljogGdpPLANVi0RZPZBjJEtvCUF7iRluQjSIYrs4jWqKnS0KAdDtghno2+1azLuIdF04WE1uBJkURoL0jCLvaTREmCK3dDxjP/AELxiwFuaVTdKVduOvKVcRCdmWdIjU3kApbKeKzPQ+2eh9s9D7Z6H2z0PtnofbPQ+2eh9s9D7Z6H2z0PtnofbPQ+2eh9s9D7Z6H2z0PtnofbwDfoWZ6H2z0PtnofbPQ+2XywLhnD+r9x/XYFvgCeAeeTzwb8Qbx+p5+lnP8A0sVc6D98d/BLyDj3SAtNl2N7d4uooFBhxBjCMmcPtonUiUuiDq63kkAkuqqAEFDUhrK6lIg7hAHqIetwS6UGdE3bFJJrrmwYtSQcgb7Y3hSAFcAlpYzcAtyW87rEGrHgTltzqCNOUyhDdURGUYUxn8bvEKWcmFtzW4gk0FCQ4Zd4EwhcLdlMVYOzarh39snhjuERAMNbJiHq1XXa3g1zaa8viLAJOqXa9NZSPtWjiER2YHbGIOthEKMgC0BLMQezEhHWgABGBG84a1EOnQFVoERHXDt/VwjpumnilJxh3JqdYampbAFAkl+kduP/AME2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bGYm7zSKklSWJrzPuAYuHTgP/AG586wP/ALZ86z51nzrFf+2J/wDbPnWK/wDb/eK/9v8AefGv+8+dZ86z51nzrGvP3YP1+7/eea93+8837sAb+9if1i9mR/Ru/J/rLfALiT6LnD6/bRkNxpFXrvqV1irFDQrVHQSOhHestKLi6UlgOorNi8ZMxEYnBgv4286xgOGJAgANDVCvrgOC4oCp1K8QYXQlGooeUpSPWkvMmPVa5a8GBF7lxHM2OhmgdQQ1stykWFiyVJQAVDzy4NAkxQTmkBRzxjEm5ABeOAizncxQ9wCmyXNOE0HGDfTGooBeNQbpXWMjF5Q4Im9BUBTeOXAJIr5DYoOKH4yODIfiIo0axoNXCBahbDQkNQlO8Ng6OChyTsSGiFxmdIkUSiOujwlz3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3y+c/Ob/AG9+cYYNNPhw+pL4kmPH1An0PmezPhu+GcPoS+AktKdPL7Z2ALtol4v9dMd8BWUENOBAgm3nEXeIBOAoYu3QbM2FAQ6A6F69ycdl/YQzUiQ6Y8tZt4zgiHjHbUuv3yGgcuJY6QrdO+nLMtAXkAwZ0P8AuIXYgQlJyJ0870x25eWVQxgdlSmjNmLmIoQUynDmzWN1MIU5SnaCh35w/wB8SnseQ4uI93N6wEAc2eROQwiURaPHiA0mupmMhATZYm0V6qKrxlY9OFmDvAjcdMVRVuhgIUSSOXeWm2QLLChggC7Xe5nThh+f7yYaOH2y+T7Zz0fbK7Ptn5e2V2fbPy9snr7ZPX2yevtk9fbJ6+2T19snr7ZPX2yevtk9fbK7Ptn5e2V2fbPy9snr7ZPX2yevtk9fbK7Ptn5e2V2fbPy9srs+2fl7ZHs+2R3p9vul8MOfs8fS5fUFz5nsz47vgpgTEUImihegsZiHDMrvVGTEemEpaI1KbYjTjfid2vp9uNvneBANnRZleMR37HfWkSpw3jbhuMAsqOYnoN47CUhgoKzsBCN8wsVSqRKEXYgg7usFIvGDSNsBCEb549CjHA5/FNvf84SIbK4KqQtAMHs4Y9wQCNhVRnfjertSsZBUgoEQg7JvBVtquVAAN7NJvWF3YFmiCgHhVoNYDobwAIQF1RU6RiKcmitE0HY0VcrDzSN6jk67wzNSCaIXaxlepuJjL0ESAJkBBoTg2Y6IKKMo4CXl3MV/BaGkpuPpUyNymcbNG29YE04bbAg9AxTRzzDBbULEJSPbrflruVBVCSdKO9OntHtj/vfoVKlS72aF+xrVq1atWrUnnv8Av/QqVKl3vDX6nh49/wBP60GDBgwYNDLQ6+J2l1ioKAFgF8vucMOftOHh3xZi3wWeAb4cMF+DpnznfOPgc638/vDSLfQNhvEH5cYNf4QR2Mp1NdcZ08Ob7Y287NzCEFlCizUorF5AjBiNqjIAL3UVE0buboeQapokEXSVosCoFvgKO+F8+nGnfDVUeyOQ5JW4EJIwUZlYCCpCIAESSNToTblDkZDv+gAxEpUB3qOOLS+DlZqFZSuzJsyuSJhMqRq67YXlhDPuMO3QXbNA6/xxRHZ0AMqc4h9B/fdbw1FiZVXq1dCu0xVdbgHBRH1JYEoiQTbou8KZtgX7XBtCwdsAC2RqhW2EGw0xelhQFLKVsHIYYKl4VUp2poZeGzAaAyoABoqAA9UmEVbgFyvqoBogcGAWcNqMg7ek6Osenp9wsxb9Zx9tfbxO9gPX9M8/9M+Iz4DPgM+Az4DPgM+Az4DFv+MVOf0zzsh1xL1ye+PbvGungJ6ZOFpnzPZh+J1wQ8BMzNuR7G38YcapZXhRA7dcPQsC6kp+mS7PBbfbhHVQL1x23cUj6BBXQXeSIeIUcYcLQPljpa+AY5HpT2dwwgIzACwOQaNkmEvqKCTS6p+EO2FXFbNWS2tuY6vUwHk7dP068/N4inPbX44c2XT6NfNayexwIjzChJtuMFLo1yfPfD7kREAhIg2Ts7mdOlIi1TsOU5zmx+D16z4azXP8YKq7AG8bBTNm01a15ej2xk3JrXSdvn85vlqheNec15ZVmL2NQBlXl0c6MJKlSEqLwAdchDtQIt2PHrz/ANwUUbd3pjr6TTg36uX2OH/mMeT0z5/tnwvfOB4Wfj9MS1Als3ZnCFe4GIGzAT7pRa1/GbGPOcn4+2pDUzYQXRwO3fu6wPLJVgVxZA9ItcojstPDVXWPVAAwaBIA7ix1DVg9NXZyXw7JQAdkbgLtrmjfYWAQQ7ero5bklXYS8rrW8RyRh4jy4S6i8siIj616M4Ii9YzVrrLEJrFKzYTK+gipO5AdBsR1roHYGiZHDac3AzgyZGCYbl6tmBfyMkLrXeAsTcDDPLrCgWcMG+iumBWHXAUMauwaXOsmTJ+UcRAIV23OSWGQYFDzkgnDFQ9RlO1tuVB25xIx95BAQNdZEOmQzoi9gQrprQzqzb5OWCQaygtBRNUMAF1FV4ObAIAAGdH1DPoA3w5fY4f+Yx5PTPn+2fC984Hg14dxQ1cADrZ4Nf8AMm+BeFPLz9e/84cdfV6485yfj7fmg5+mED8taSdsAb7ujnCXR6G6Dzr+MoytjrwIKXZO3rh+gACKAQJr0hQmJkyJhX7Aaq8vS5DnASnmbNuAaeQ6Edo9cabMgJTetyD3Bka1kSEAIBBHchgRPvCGhdaDfQMbI9/BhJ+HbGiOurWsi5aLzju1qPoiCogEjgn6QyCRJRA1f95sacvAhTYonCajkTAExkkI9px07GaGqzPWng9Oe3lg2UEQA3gTkuBTBHukuhlhZ2O2SeIB7uXRvphQWAegADKEJBwrUYiVUO67Xri37PTBngW/Y4f+Yx5vTPg+zPhe+cDwFMHyAjnLiQivOnFheld8gAssIQhW80R3h1793HnOT8fbnQHGjRHflPTr16OBDi3nhMrDRQbtyHVyAIoEdSWCOJibj6pGyBjyQ7S6PyZyYeQatNgXFAwgfRok7JILdphwhrUOaWco4HkjgbMuU9yE3Yi8rrJECuthY21IdYMtm5qA1DbYCIa5wmXa+kLoXIYR5TGpjL1GQI6iE2bYCJ0F1lEEAIJPOAslo9A56jU8Q25Vxb0GrgmkIDbiV83gJFqOBb77ABNExaiiIDIAS3Lg614xaBbNsYLikPCthAimxFR3Yjmgd1IDkUjGxZWVG/c6fbGYN/8ALYqerHfk6Y58XeaePAU7KdnBmjTrFNPmrgnAClRUBTrbo1gwx2x0ftlMUHdNH73AEHHYhFwBIgJECIYoJzPyEit0IPW5rmxBAVJzoE431jlTjB8o2uyX7i85ZQLQRjxaXW/jGlQw1FADGgVKzCXI0KCFA7zW+N4MI6gWkS0EIdcSDzHlJVKdhGGsCIEAVIKT0CdTdViPCA0IduxBAwhrISziUKPF2s3c4G1hcCFDdQhC87cLKxI7vTWAoLgONd+wbwIqbVcil7YfwJim9sCgG6YG1jQocGbBFDWjWj1m2DoABpECDOcdt4EzrOuXV9s+Pl/i8P8Ay2PU9cQ6n+kyj/C4Ny6wJSCBl8xaY0nm7Cmwg7je4YOQm3oiFyeSXHnOWcH7dJA2q9z/AE/dgVDixFA6gibxNM1LdNAeRVNrLCOVVhvOpR0zuu+JghAotPFDTAKrMMi08AtQ1bUAuNpeJuXZ3HvnfGNsTMBpFZUJ12OWYZeAh6gLZTURrJZfK6ZbJWNNE7sa5hbuJWRHCuuyZLFBl1oHUaCkOmBMyvPJXc9ALCvOGACglRO4gqAaTrKyoJApUjpDumsNhoCIggJ3USdBLMO6rNO8AxGaw1pnkIlZiAsuk0yXybUgQLe9j56ucAZikVEGle5bBKQl6K1EAgigBswCogjs+HdaOzNTD27KOsFfEgcgblFB4RtgVgdArrstA98EiybAmjqGrTw69ABSGnixNhg0v+Fw+1HPvg/8FeT1zb5emG/I0xMGYJCfrgiaMYVLZvjXti0GqEDVStVm8Z6Yqwbfbm2wJOz/AM5CRlsPaNlaiinTB5yk+O6gsKQldLvKC8UhOLTczXm1uAayRrAgeW4OpxIuF6DzKWcKvJMqBMHIhNmk8kaMpVTCleEU1BSi6dYazFruPcA0NpdMeKi4UkBxLxeesZLA699BWxoQQ3hQu7rXolR2K64gBMZgA0XZPOGoqVvG01YaTOU3ttxeX/UJEDDtVgON4FAKjIKSj+LEDwG0zddFHJAwFKIrLUmxIcLC8zDAC65xRlRYDRveExi5qlSJEntdN6gS2B0wCiAYNVx0IU1QG6JO1d6euHmlAYdEVE8B3ck5LtiAjq8i5yVj9YllJGE499WgkiM44S8581r/AAAvgCfSs+kHT/8ABF6eucg35Wmo0qPUTB5TvGTS2LIa2odctfAwlQBYL0r0xv1mQbAThd+2BfkrFXg7kj+ccLcefr9v8Xil/BiPjQOdJpR6AuoXCaUeGXRgHRND0ZEaoUMR29lKcUFLY3oQUbIdnIYUR6WEav4N4mr1m3RbZCI+rHtCSY5aF87q9euLBM5qpHptThxgRfE0ZtaLOKLTyqoN2TgUGOg2kMAQKFW6tQxSjoWjhkwJDqajqU36eeGIBTAHaABxyCauFKZQT5VLHftglJkMwqhGVNrZzhsaSQig4Uoo6dzEJwwxFlYlOe5c0xh74QsJBShTvlktd5sU7cchJzDJkvkIUOKdDz7ZoM6UiLzaUbx1y7EK8tHngRJ0zqDhnH+8q87eP8Lh9fLxC4k/8Jr0O+Q6HZ9DH+Twzh/PfBmP8tHzzxqlT0Rojew93GQAqDd2z0NH4x58Lw8/tin1SHjrhL7O4EhqXFvUC0sjvwyAjWdRQCbXBteXm4A4OMEOc5lvnJxkYtQ7nDNyocsswrq51FuFmhkjpLESU1JxgxfIA3Ysgh9EHLjhvIJURl9NCtbcVNuTDdwA113D1URMTTd+BqykoeR6IOl3gCmCJbsrEbT6gOiUlUOgcuV8TLBpSIJg8k3gl0FiX0VkCpNhGHclvxjBN46uNZF+Nfq1wou8C8Y5FDoIqW2AWAzK35IBCmwrEHR1cnDrvS9N0plEOpk2jC7YQ1nQ8EWaqGt64WhiANgbRixcmFBzuq09nP0O3+GE+vl4BcCYlwz/AMFVwM6F/Wx9f+thoa8AsE2KLXYCvXLrifNJ0eXuYykgwk8MBR7mvPWOdsoh9sfy0wbrPyEkhT0Lxm5VHDkVgu+A9MscnlvoUF/XDZuqEAiTTqcYxJAHJXW1m30/gZqiFlBL5/PbeND8GWEAbWwPTjUrDisEAqr0PX85zNE1agaWm9Xyxb9s8qoEE/M69cuJS1Y2GhdA9XDumERUELLQTqJyZDlEmnCa3875XyPGnfpziLpp6A8+k64PRDjqwtLLKa88HXRAbFIHVCl5DWOzsZZd+nrMiE0a2T+sOI8ZOvWcz52z9v8ACC/ZJcSZw/8AEIqD1yZT+sz8d+2w1NYoyAbOev5xqEIF26nr5nHbEMZhZENQ6r39c6unljihPnH2wFLQkdmESTV3UVsZOLucutOt/U0usUSgA5GHgqWtQ5P0l9cReKiJWxzFptI0yC2kg+aLWIyAkKGoiqNEPUK2aaaYwrpFoAk7NMkeAXrtDzhwVdDSJ2DvRSpgO6AAQNybyla58hR5Nra9fA79l6SlKEG2ja25qPhX32xmsvArvHGRbVGdrr7ACqA7xCtqZsF84SDzWHyBN3ymuUXqHcFAePavKlQi8W4K76OfvTAO2SSkEDVPrHHAW4FtQc2uKRAqhAYEp3DatX/E4faS4E/8Rjx+ufD9mfO9mdsUM2w5jo5w2J31IT/XXG0qlvSL8ucS3849uU+HR+2JIWpASgXpZzkw4VYwSy8Q3uI4Zhe+2RXbA158f98hoY2Ci+fPnlYYHZpstunlMBlJBxUCKAqhevm4tiDNOiM2TU4TWJaQBtAietdJSmjE/bQK7yju6887zu3u0HSiu9mafmbANppQ5Re2cuBPuBjtQMa0dsHNJdvb5TQEhWGIO40iwKm1gN9jJtfE9k8noy/prDOTWwj2qJu6yca2YiRDa7cbe+RDIoudEQey4dPeRpBQTc2Yo5Tenm/9M5mnntfrkGIPmH85wU7x1v1w0UzzD164nP8Aed+uOuJ+l584j8r9cGnNv4XLOmPL/Zi35vK98QI55f7PkcS73b/piXxv1y/HyPPN03c64PfI+hWf7sS/mL+c5uKz8nrnwT165J35s0frgHyP1wX5H6584/nPnH8584/nPnH8584/nPnH8584/nPnH8584/nPnH8584/nPjH8480HMkKTXkPf/wAHj9cvo/rM+d7M7ZN4Zo8QonpgkPSDrkv6XpHvpivdIoIp79ZwYt64xbj+Hk/bSkdnZwKoN23GwcHIOkR0jg8gGACABwTXgAcGRnGUpBY6AV3o7ZBJNdsVeICdIiOkTWBM8BADgDpMJ2cAfsDQbyOxryxCSE9MCIAPTEIgR5HrjtSqqb4g6nnvht5KsInIgQQ1XvkWwvfDWEVwVY4RlpCbzgDobDCRrUIrzpW6++Ta980R2dnDAY0ENQvUQj5YEQAdpnV1OXq4BCCibCp1IK683GpgCRAgrqgBvoYl5313gIArkTTkueAAOwdsOWcGA7BkxMlSyQipNMUp0XBjTm2+eAOhhCfHBACgqgFegYAEgKFFUXKVWcVcq1d8XNiTGNKbGOcAdDR92r/4PH658T2M+d7M7eFOOfLBSgq9x2fOuuOMmhCdBTA7Y+Hzej/9Fw+uD5PRgrfGPFNgEdHHX8zFphAzeOUOy8c4/ulhQkIhQeHdvLLhn8O2TPm9H/6L93PhezPgOzHwZlHqTQk64Uah5IC8iwdMBS2kKqEF21r17ZfA7PnD/wDRfv58L2Y9fxjxsYqQFYdvPECiPknggR/LCjDHe7KdE44yDtnqyOz5P/ov38+F7M+d7M7eHnTqIEHDgaUZDAStdUZNS+IHHJ3HA4eHH/8ARfv58L2YK3xjxYrAKl1O/wCmCVgwBlKlNlf0ZOLoFFlQDPPOOk8u3hw//GTJke2SeE+imU7mR3M84988p755T3zynvnlPfPKe+eU988p755T3zynvgaUd9HPhezFPgaeLCKDm+2cYu8P0UWRC1Elcc5fskYLqFOXv2xUxLhh/wDjBvi2YEfoE1MTEmOOLfB58C3OHjyx0mbieYYZ537LDv7j+jKlngF4Y4oMJpMatKebipf/AI5f/9k=) 161 + 162 + You'll notice that most of the _capabilities_ receive an `interface{}`, that's not very helpful. 163 + 164 + This usually means that you can either pass `true` to say that you support the feature fully, or a struct of options for more intricate support information. 165 + 166 + Check with [the spec](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#serverCapabilities) to be sure. 167 + 168 + ### Implementing a feature: the `Definition` example 169 + 170 + ## Using in IDEs & editors 171 + 172 + ### Neovim 173 + 174 + You can put the following in your `init.lua`: 175 + 176 + ```lua 177 + vim.api.nvim_create_autocmd({'BufEnter', 'BufWinEnter'}, { 178 + pattern = { "glob pattern of the files you want your LSP to be used on" }, 179 + callback = function(event) 180 + vim.lsp.start { 181 + name = "My language", 182 + cmd = {"mylsp"}, 183 + } 184 + end 185 + }) 186 + ``` 187 + 188 + ### Visual Studio Code 189 + 190 + VSCode requires writing an entire extension to use an LSP server... 191 + 192 + If you want something quick 'n' dirty, you can use some generic 193 + LSP client extension (for example, [llllvvuu's Generic LSP Client](https://marketplace.visualstudio.com/items?itemName=llllvvuu.llllvvuu-glspc)). 194 + 195 + But to do a proper extension that you can distribute to your user's, 196 + you'll want to follow [the vscode docs on LSP extension development](https://code.visualstudio.com/api/language-extensions/language-server-extension-guide). 197 + 198 + The guide assumes that you'll develop the LSP server in NodeJS too, but you can easily `rm -rf` the hell out of the `server/` directory from their template repository. 199 + 200 + I'm using the following architecture for [ortfo](https://ortfo.org)'s LSP server: 201 + 202 + ```tree 203 + handler.go 204 + server.go 205 + cmd/ 206 + main.go 207 + vscode/ 208 + package.json # contains values from both client's package.json and the root package.json 209 + src/ # from client/ 210 + tsconfig.json 211 + ... 212 + ``` 213 + 214 + (curious? see [the repository at ortfo/languageserver](https://github.com/ortfo/languageserver))
+9 -7
components/gallery.templ
··· 87 87 }) 88 88 } 89 89 90 - templ GalleryPage(works []ortfodb.AnalyzedWork, language string) { 91 - <form method="get" action="/" class={ galleryMaxWidth(), gallerySearch() }> 92 - @setupSearcher("works") 93 - @SearchBar(language, func (inputClass string) templ.ComponentScript { 94 - return onInput(inputClass, "works") 95 - }) 96 - </form> 90 + templ GalleryPage(works []ortfodb.AnalyzedWork, language string, searchBar ...bool) { 91 + if len(searchBar) < 1 || searchBar[0] { 92 + <form method="get" action="/" class={ galleryMaxWidth(), gallerySearch() }> 93 + @setupSearcher("works") 94 + @SearchBar(language, func(inputClass string) templ.ComponentScript { 95 + return onInput(inputClass, "works") 96 + }) 97 + </form> 98 + } 97 99 <section class={ galleryMaxWidth(), galleryPageMain() }> 98 100 { children... } 99 101 @WorksGrid(works, language, "works")
+34 -3
components/intro.templ
··· 28 28 margin-bottom: 2rem; 29 29 } 30 30 31 - templ Intro() { 31 + css introImageAsTitle() { 32 + height: 100%; 33 + max-height: 33vh; 34 + min-height: clamp(3rem, 10vw, 7rem); 35 + object-fit: contain; 36 + overflow: hidden; 37 + border-radius: 0.5rem; 38 + } 39 + 40 + templ Intro(overrides ...string) { 32 41 <section class={ introSection() }> 33 - <p class={ preH1() } i18n>Hi! I'm Ewen Le Bihan.</p> 34 - <h1 class={ h1() } i18n>These are my creations.</h1> 42 + <p class={ preH1() } i18n?={ len(overrides) == 0 }> 43 + if len(overrides) >= 1 { 44 + { overrides[0] } 45 + } else { 46 + Hi! I'm Ewen Le Bihan. 47 + } 48 + </p> 49 + <h1 class={ h1() } i18n?={ len(overrides) <= 1 }> 50 + if len(overrides) >= 2 { 51 + { overrides[1] } 52 + } else { 53 + These are my creations. 54 + } 55 + </h1> 35 56 <p class={ explain() }> 36 57 <i18n>I'm interested in almost anything that is both creative and digital.</i18n> 37 58 <br/> ··· 49 70 </p> 50 71 </section> 51 72 } 73 + 74 + templ IntroImageTitleWith(pre string, imageSrc string, imageAlt string) { 75 + <section class={ introSection() }> 76 + <p class={ preH1() }>{ pre }</p> 77 + <h1 class={ h1() }><img src={ imageSrc } alt={ imageAlt } class={ introImageAsTitle() }/></h1> 78 + <p class={ explain() }> 79 + { children... } 80 + </p> 81 + </section> 82 + }
+1 -1
components/work_card.templ
··· 13 13 } 14 14 15 15 func css(work ortfodb.AnalyzedWork, language string) templ.Component { 16 - accentColor := work.Colors(language).Tertiary 16 + accentColor := work.Colors(language).Primary 17 17 if accentColor == "" { 18 18 accentColor = work.Colors(language).Secondary 19 19 }
+10 -1
go.mod
··· 11 11 github.com/gobwas/glob v0.2.3 12 12 github.com/goodsign/monday v1.0.2 13 13 github.com/metal3d/go-slugify v0.0.0-20160607203414-7ac2014b2f23 14 - github.com/ortfo/db v1.4.0 14 + github.com/ortfo/db v1.4.1 15 15 github.com/ortfo/gettext v1.0.3 16 16 golang.org/x/net v0.24.0 17 17 golang.org/x/text v0.14.0 18 18 gopkg.in/mail.v2 v2.3.1 19 19 gopkg.in/yaml.v3 v3.0.1 20 + ) 21 + 22 + require ( 23 + github.com/BurntSushi/toml v1.2.1 // indirect 24 + github.com/alecthomas/chroma/v2 v2.2.0 // indirect 25 + github.com/dlclark/regexp2 v1.7.0 // indirect 26 + github.com/yuin/goldmark v1.6.0 // indirect 20 27 ) 21 28 22 29 require ( ··· 85 92 github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect 86 93 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect 87 94 github.com/xeipuuv/gojsonschema v1.2.0 // indirect 95 + github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc 96 + go.abhg.dev/goldmark/frontmatter v0.2.0 88 97 golang.org/x/crypto v0.22.0 // indirect 89 98 golang.org/x/image v0.15.0 // indirect 90 99 golang.org/x/sync v0.7.0 // indirect
+16 -2
go.sum
··· 1 + github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= 2 + github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= 1 3 github.com/EdlinOrg/prominentcolor v1.0.0 h1:sQNY8Dtsv3PK3J1LbmrDmtlZm9Y9U8Loi1iZIl4YN3Y= 2 4 github.com/EdlinOrg/prominentcolor v1.0.0/go.mod h1:mYmDsxfcmBz6izH/SqtSzfsUiZdPNPpPgUPKCZq70KQ= 3 5 github.com/JohannesKaufmann/html-to-markdown v1.5.0 h1:cEAcqpxk0hUJOXEVGrgILGW76d1GpyGY7PCnAaWQyAI= ··· 14 16 github.com/PuerkitoBio/goquery v1.9.1/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY= 15 17 github.com/a-h/templ v0.2.663 h1:aa0WMm27InkYHGjimcM7us6hJ6BLhg98ZbfaiDPyjHE= 16 18 github.com/a-h/templ v0.2.663/go.mod h1:SA7mtYwVEajbIXFRh3vKdYm/4FYyLQAtPH1+KxzGPA8= 19 + github.com/alecthomas/chroma/v2 v2.2.0 h1:Aten8jfQwUqEdadVFFjNyjx7HTexhKP0XuqBG67mRDY= 20 + github.com/alecthomas/chroma/v2 v2.2.0/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs= 21 + github.com/alecthomas/repr v0.0.0-20220113201626-b1b626ac65ae/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8= 17 22 github.com/alessio/shellescape v1.4.2 h1:MHPfaU+ddJ0/bYWpgIeUnQUqKrlJ1S7BfEYPM4uEoM0= 18 23 github.com/alessio/shellescape v1.4.2/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= 19 24 github.com/anaskhan96/soup v1.2.5 h1:V/FHiusdTrPrdF4iA1YkVxsOpdNcgvqT1hG+YtcZ5hM= ··· 48 53 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 49 54 github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= 50 55 github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= 56 + github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= 57 + github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= 58 + github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= 51 59 github.com/expr-lang/expr v1.16.5 h1:m2hvtguFeVaVNTHj8L7BoAyt7O0PAIBaSVbjdHgRXMs= 52 60 github.com/expr-lang/expr v1.16.5/go.mod h1:uCkhfG+x7fcZ5A5sXHKuQ07jGZRl6J0FCAaf2k4PtVQ= 53 61 github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= ··· 155 163 github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= 156 164 github.com/oliamb/cutter v0.2.2 h1:Lfwkya0HHNU1YLnGv2hTkzHfasrSMkgv4Dn+5rmlk3k= 157 165 github.com/oliamb/cutter v0.2.2/go.mod h1:4BenG2/4GuRBDbVm/OPahDVqbrOemzpPiG5mi1iryBU= 158 - github.com/ortfo/db v1.4.0 h1:9l0Vk+x+neN4lNCllB7JSJt7OFd+9gDtsIU3zAAnS8g= 159 - github.com/ortfo/db v1.4.0/go.mod h1:nH+UV0msgqpIAr5no0SXW5iG1FuVwGL/H1CChfs/qDM= 166 + github.com/ortfo/db v1.4.1 h1:iNhnfcX61CZw9lb1rdoCB3Oy/5Wmny6oeZZtBwi1NdA= 167 + github.com/ortfo/db v1.4.1/go.mod h1:nH+UV0msgqpIAr5no0SXW5iG1FuVwGL/H1CChfs/qDM= 160 168 github.com/ortfo/gettext v1.0.3 h1:VwBOp/7GWHmmlJWYO6dwONsxt/Cb3boMDCRsRJm8BK4= 161 169 github.com/ortfo/gettext v1.0.3/go.mod h1:CXAyleKuHH5nHspNA6WfRXcO/2SN+EWn151LBND93yo= 162 170 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= ··· 198 206 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 199 207 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= 200 208 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 209 + github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 201 210 github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 202 211 github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 203 212 github.com/tcolgate/mp3 v0.0.0-20170426193717-e79c5a46d300 h1:XQdibLKagjdevRB6vAjVY4qbSr8rQ610YzTkWcxzxSI= ··· 212 221 github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= 213 222 github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= 214 223 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 224 + github.com/yuin/goldmark v1.4.15/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 215 225 github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= 216 226 github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 227 + github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc h1:+IAOyRda+RLrxa1WC7umKOZRsGq4QrFFMYApOeHzQwQ= 228 + github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc/go.mod h1:ovIvrum6DQJA4QsJSovrkC4saKHQVs7TvcaeO8AIl5I= 229 + go.abhg.dev/goldmark/frontmatter v0.2.0 h1:P8kPG0YkL12+aYk2yU3xHv4tcXzeVnN+gU0tJ5JnxRw= 230 + go.abhg.dev/goldmark/frontmatter v0.2.0/go.mod h1:XqrEkZuM57djk7zrlRUB02x8I5J0px76YjkOzhB4YlU= 217 231 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 218 232 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 219 233 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
+29 -4
main.go
··· 22 22 23 23 func startFileServer(port int, root string) { 24 24 staticServer := http.NewServeMux() 25 - fs := http.FileServer(http.Dir(filepath.Join(".", root))) 25 + resolvedRoot, err := filepath.Abs(filepath.Join(".", root)) 26 + if err != nil { 27 + panic(err) 28 + } 29 + 30 + fs := http.FileServer(http.Dir(resolvedRoot)) 26 31 staticServer.Handle("/", fs) 27 - http.ListenAndServe(fmt.Sprintf(":%d", port), staticServer) 32 + fmt.Printf("[ ] Serving static files from %s on http://localhost:%d\n", resolvedRoot, port) 33 + err = http.ListenAndServe(fmt.Sprintf(":%d", port), staticServer) 34 + if err != nil { 35 + panic(err) 36 + } 28 37 } 29 38 30 39 func startSHSServer(wg *sync.WaitGroup, port int, regularSiteURL string, sites []shared.Site, db ortfodb.Database, collections shared.Collections, technologies []shared.Technology, tags []shared.Tag) { ··· 48 57 http.ListenAndServe(fmt.Sprintf(":%d", port), server) 49 58 } 50 59 51 - func startPagesServer(wg *sync.WaitGroup, db ortfodb.Database, collections shared.Collections, sites []shared.Site, technologies []shared.Technology, tags []shared.Tag, translations *Translations, port int) { 60 + func startPagesServer(wg *sync.WaitGroup, db ortfodb.Database, collections shared.Collections, sites []shared.Site, technologies []shared.Technology, tags []shared.Tag, blogEntries []shared.BlogEntry, translations *Translations, port int) { 52 61 server := http.NewServeMux() 53 62 54 63 registeredPaths := []string{} ··· 114 123 w.Header().Set("Content-Type", "application/json") 115 124 w.Write(encoded) 116 125 })) 126 + } 127 + 128 + handlePage("blog", pages.BlogIndex(blogEntries)) 129 + for _, entry := range blogEntries { 130 + err := entry.GetPageviews("/blog") 131 + if err != nil { 132 + fmt.Printf("[!!] Could not get pageviews for blog entry %s: %s\n", "blog/"+entry.Slug, err) 133 + } 134 + 135 + handlePage("blog/"+entry.Slug, pages.BlogEntry(entry, db)) 117 136 } 118 137 119 138 for id, collection := range collections { ··· 295 314 var tags []shared.Tag 296 315 loadDataFile("tags.yaml", &tags) 297 316 317 + blogEntries, err := loadBlogEntries("blog") 318 + if err != nil { 319 + fmt.Printf("while loading blog entries: %s\n", err.Error()) 320 + os.Exit(1) 321 + } 322 + 298 323 if os.Getenv("SKIP_WAKATIME") != "1" { 299 324 for i := range technologies { 300 325 fmt.Printf("[ ] Calculating time spent on %s\n", technologies[i].Name) ··· 311 336 wg.Add(len(locales)) 312 337 313 338 for i, locale := range locales { 314 - go startPagesServer(&wg, db, collections, sites, technologies, tags, translations[locale], 8081+i) 339 + go startPagesServer(&wg, db, collections, sites, technologies, tags, blogEntries, translations[locale], 8081+i) 315 340 } 316 341 go startFileServer(8079, "public") 317 342 go startFileServer(8080, "media")
-1
ortfodb.yaml
··· 20 20 media: 21 21 at: media/ 22 22 23 - build metadata file: .lastbuild.yaml 24 23 scattered mode folder: .ortfo 25 24 26 25 tags:
+18
pages/blog_index.templ
··· 1 + package pages 2 + 3 + import "github.com/ewen-lbh/portfolio/shared" 4 + import "github.com/ewen-lbh/portfolio/components" 5 + 6 + templ BlogIndex(entries []shared.BlogEntry) { 7 + @components.Intro() { 8 + <ul> 9 + for _, entry := range entries { 10 + <li> 11 + <a href={ templ.URL("/blog/" + entry.Slug) }>{ entry.Slug }</a> 12 + </li> 13 + } 14 + </ul> 15 + } 16 + } 17 + 18 +
+44
public/global.css
··· 41 41 font-size: 16px; 42 42 } 43 43 } 44 + 45 + pre { 46 + overflow: auto; 47 + } 48 + 49 + .blog-entry pre { 50 + font-size: 0.75rem; 51 + } 52 + 53 + .blog-entry h2, 54 + .blog-entry h3, 55 + .blog-entry h4, 56 + .blog-entry h5, 57 + .blog-entry h6 { 58 + font-weight: bold; 59 + margin: 2rem 0; 60 + } 61 + 62 + .blog-entry :where(h2, h3, h4, h5, h6)::before { 63 + color: lightgray; 64 + font-weight: bold; 65 + margin-right: 1ch; 66 + font-family: var(--mono); 67 + } 68 + 69 + .blog-entry h2::before { 70 + content: '##'; 71 + } 72 + 73 + .blog-entry h3::before { 74 + content: '###'; 75 + } 76 + 77 + .blog-entry h4::before { 78 + content: '####'; 79 + } 80 + 81 + .blog-entry h5::before { 82 + content: '#####'; 83 + } 84 + 85 + .blog-entry h6::before { 86 + content: '######'; 87 + }
+78
shared/blog.go
··· 1 + package shared 2 + 3 + import ( 4 + "bytes" 5 + "encoding/json" 6 + "fmt" 7 + "io" 8 + "net/http" 9 + "net/url" 10 + "os" 11 + "time" 12 + 13 + ortfodb "github.com/ortfo/db" 14 + ) 15 + 16 + type BlogEntry struct { 17 + Date time.Time `yaml:"date"` 18 + Title string `yaml:"title"` 19 + Slug string 20 + Content string 21 + OtherMetadata map[string]any `yaml:",inline"` 22 + Pageviews int 23 + RelatedWorksSlugs []string `yaml:"works"` 24 + } 25 + 26 + func (e *BlogEntry) RelatedWorks(db ortfodb.Database) []ortfodb.AnalyzedWork { 27 + var works []ortfodb.AnalyzedWork 28 + for _, slug := range e.RelatedWorksSlugs { 29 + for id, work := range db.Works() { 30 + if id == slug { 31 + works = append(works, work) 32 + continue 33 + } 34 + } 35 + } 36 + 37 + return works 38 + } 39 + 40 + func (e *BlogEntry) GetPageviews(blogRoot string) error { 41 + views, err := getPageviewsFor(blogRoot + "/" + e.Slug) 42 + if err != nil { 43 + return err 44 + } 45 + 46 + e.Pageviews = views 47 + return nil 48 + } 49 + 50 + func getPageviewsFor(path string) (int, error) { 51 + request, _ := http.NewRequest("GET", fmt.Sprintf("https://stats.ewen.works/api/v1/stats/aggregate?site_id=ewen.works&period=12mo&metrics=visitors,pageviews&filters=event:page==%s", url.QueryEscape(path)), bytes.NewBufferString("")) 52 + request.Header.Set("Authorization", "Bearer "+os.Getenv("PLAUSIBLE_TOKEN")) 53 + response, err := http.DefaultClient.Do(request) 54 + if err != nil { 55 + return 0, err 56 + } 57 + if response.StatusCode != 200 { 58 + return 0, fmt.Errorf("unexpected status code %d", response.StatusCode) 59 + } 60 + 61 + raw, _ := io.ReadAll(response.Body) 62 + 63 + var data plausibleAggregate 64 + json.Unmarshal(raw, &data) 65 + 66 + return data.Results.Pageviews.Value, nil 67 + } 68 + 69 + type plausibleAggregate struct { 70 + Results struct { 71 + Pageviews struct { 72 + Value int `json:"value"` 73 + } `json:"pageviews"` 74 + Visitors struct { 75 + Value int `json:"value"` 76 + } `json:"visitors"` 77 + } `json:"results"` 78 + }